/* - - - - - - - - - - - - - - - - - - - - - - -
 JavaScript
 Standard Javascript for the Cohesion CMS
- - - - - - - - - - - - - - - - - - - - - - - */

ar = new Array();
idx = 0;

function setdiv(idset, btndiv, btn, idof) {
  ar[idx] = new Array();
  ar[idx][0] = idset;   //large box to highlight
  ar[idx][1] = btndiv;  //button div to position
  ar[idx][2] = btn;     //button to position
  ar[idx][3] = idof;    //item to take the size/position from

  idx++;
}

function setitall() {
  for (var i=0; i<idx; i++) {
    idset  = ar[i][0];   //box
    btndiv = ar[i][1];   //div the btn goes in
    btn    = ar[i][2];   //btn
    idof   = ar[i][3];   //take site from this
    e_set    = document.getElementById( idset );  //box
    bdiv_of  = document.getElementById( btndiv );
    b_of     = document.getElementById( btn );
    e_of     = document.getElementById( idof );

    //set the green box to be the height and width of the element we want CMS around
    w = xWidth(idof);
    if (w == 0) {
      if (e_of.firstChild.nextSibling) {
        h = xWidth('', e_of.firstChild.nextSibling);
      };
    }
    xWidth(idset, '', w);
//    e_set.style.width = e_of.offsetWidth;      //box

    h = xHeight(idof);
    if (h == 0) {
      if (e_of.firstChild) {
        if (e_of.firstChild.nextSibling) {
          h = xHeight('', e_of.firstChild.nextSibling);
        };
      };
    }
    xHeight(idset, '', h);
//    e_set.style.height = e_of.offsetHeight;

    //set the button div to be the same size as the button, and position at the right side
    bdiv_of.style.width = b_of.offsetWidth;   //set to the width of the button
    bdiv_of.style.marginLeft = e_of.offsetWidth - b_of.offsetWidth;
    b_of.src = 'cohesion/images/button_manage.gif';

    hidediv(idset);
  };
};

function hidediv(idset) {
  e_set = document.getElementById( idset );
  e_set.style.display = 'none';
}
function showdiv(idset) {
  e_set = document.getElementById( idset );
  e_set.style.display = '';
}

if (window.attachEvent) {
  window.attachEvent("onload", function() {
    setitall();
  });
} else {
  window.addEventListener("load", function() {
    setitall();
  }, false);
}


//http://cross-browser.com/x/lib/view.php?sym=xHeight
function xHeight(e, ele, h)
{
  if (e!='') {
    if(!(e=xGetElementById(e))) return 0;
  } else {
    e = ele;
  };
  if (xNum(h)) {
    if (h<0) h = 0;
    else h=Math.round(h);
  }
  else h=-1;
  var css=xDef(e.style);
  if (e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
    h = xClientHeight();
  }
  else if(css && xDef(e.offsetHeight) && xStr(e.style.height)) {
    if(h>=0) {
      var pt=0,pb=0,bt=0,bb=0;
      if (document.compatMode=='CSS1Compat') {
        var gcs = xGetComputedStyle;
        pt=gcs(e,'padding-top',1);
        if (pt !== null) {
          pb=gcs(e,'padding-bottom',1);
          bt=gcs(e,'border-top-width',1);
          bb=gcs(e,'border-bottom-width',1);
        }
        // Should we try this as a last resort?
        // At this point getComputedStyle and currentStyle do not exist.
        else if(xDef(e.offsetHeight,e.style.height)){
          e.style.height=h+'px';
          pt=e.offsetHeight-h;
        }
      }
      h-=(pt+pb+bt+bb);
      if(isNaN(h)||h<0) return;
      else e.style.height=h+'px';
    }
    h=e.offsetHeight;
  }
  else if(css && xDef(e.style.pixelHeight)) {
    if(h>=0) e.style.pixelHeight=h;
    h=e.style.pixelHeight;
  }
  return h;
}
function xWidth(e,ele,w)
{
  if (e!='') {
    if(!(e=xGetElementById(e))) return 0;
  } else {
    e = ele;
  };
  if (xNum(w)) {
    if (w<0) w = 0;
    else w=Math.round(w);
  }
  else w=-1;
  var css=xDef(e.style);
  if (e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
    w = xClientWidth();
  }
  else if(css && xDef(e.offsetWidth) && xStr(e.style.width)) {
    if(w>=0) {
      var pl=0,pr=0,bl=0,br=0;
      if (document.compatMode=='CSS1Compat') {
        var gcs = xGetComputedStyle;
        pl=gcs(e,'padding-left',1);
        if (pl !== null) {
          pr=gcs(e,'padding-right',1);
          bl=gcs(e,'border-left-width',1);
          br=gcs(e,'border-right-width',1);
        }
        // Should we try this as a last resort?
        // At this point getComputedStyle and currentStyle do not exist.
        else if(xDef(e.offsetWidth,e.style.width)){
          e.style.width=w+'px';
          pl=e.offsetWidth-w;
        }
      }
      w-=(pl+pr+bl+br);
      if(isNaN(w)||w<0) return;
      else e.style.width=w+'px';
    }
    w=e.offsetWidth;
  }
  else if(css && xDef(e.style.pixelWidth)) {
    if(w>=0) e.style.pixelWidth=w;
    w=e.style.pixelWidth;
  }
  return w;
}
function xGetElementById(e)
{
  if(typeof(e)=='string') {
    if(document.getElementById) e=document.getElementById(e);
    else if(document.all) e=document.all[e];
    else e=null;
  }
  return e;
}
function xNum()
{
  for(var i=0; i<arguments.length; ++i){if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;}
  return true;
}
function xDef()
{
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
  return true;
}
function xStr(s)
{
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='string') return false;}
  return true;
}
function xGetComputedStyle(oEle, sProp, bInt)
{
  var s, p = 'undefined';
  var dv = document.defaultView;
  if(dv && dv.getComputedStyle){
    s = dv.getComputedStyle(oEle,'');
    if (s) p = s.getPropertyValue(sProp);
  }
  else if(oEle.currentStyle) {
    // convert css property name to object property name for IE
    var i, c, a = sProp.split('-');
    sProp = a[0];
    for (i=1; i<a.length; ++i) {
      c = a[i].charAt(0);
      sProp += a[i].replace(c, c.toUpperCase());
    }
    p = oEle.currentStyle[sProp];
  }
  else return null;
  return bInt ? (parseInt(p) || 0) : p;
}
