// toggle divs and adds a given selction to a field
// divs has to "register" using AddDiv

// Testet i Netscape 4.73, 6.2, Exploder 5.0 og Opera 5.12

// Browser peculiarities: 
// Netscape 4.73: DIV'er må ikke indeholde STYLE attributter. 
//                "border" SKAL have en enhedsangivelse.
//                Positionering fejler ved resize. -> kræver reload.

// bruger BrowserCheck.js
// client-side JavaScript client sniff. Version 3.03
// (C) Netscape Communications 1999-2001.

var Adivs = new Array();

// determine offset
if ( is_nav3 || is_nav4 ) {
  divOffsetX = -4; divOffsetY = -4;
}
if ( is_nav6up || is_gecko ) {
  divOffsetX = 0; divOffsetY = 0;
}
if ( is_ie3 || is_ie4 ) {
  divOffsetX = 0; divOffsetY = 0;
}
if ( is_ie5 || is_ie6up ) {
  divOffsetX = 0; divOffsetY = 0;
}
if ( is_opera4 || is_opera5up ) {
  divOffsetX = 0; divOffsetY = 1;
}


function getFrameWidth() {
  if (self.innerWidth) {
    frameWidth = self.innerWidth;
  } else if (document.documentElement && document.documentElement.clientWidth) {
    frameWidth = document.documentElement.clientWidth;
  } else if (document.body) {
    frameWidth = document.body.clientWidth;
  } else return;
  return frameWidth;
}


function getFrameHeight() {
  if (self.innerWidth) {
    frameHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientWidth) {
    frameHeight = document.documentElement.clientHeight;
  } else if (document.body) {
    frameHeight = document.body.clientHeight;
  } else return;
  return frameHeight;
}


function AddDiv(DivName) {
  // append div id til array
  Adivs[ Adivs.length ] = DivName;
  // ret top og left value ( med udgangspunkt i Netscape 4. )

  if ( is_opera4 ) {
    var TopValue = FindDiv(DivName).pixelTop;
  } else if ( is_nav3 || is_nav4 ) {
    var TopValue = FindDiv(DivName).y;
  } else {
    var TopValue = FindDiv(DivName).top;
  }

  if ( is_ie || is_gecko ) {
    var PxEnd = TopValue.indexOf("px");
    TopValue = TopValue.substring(0,PxEnd);
    TopValue = parseInt(TopValue) + divOffsetY;
    TopValue = TopValue + 'px';
  } else { // ns3 og opera
    TopValue = parseInt(TopValue) + divOffsetY;
  }
  FindDiv(DivName).top = TopValue;

  if ( is_opera4 ) {
    var LeftValue = FindDiv(DivName).pixelLeft;
  } else if ( is_nav3 || is_nav4 ) {
    var LeftValue = FindDiv(DivName).x;
  } else {
    var LeftValue = FindDiv(DivName).left;
  }
  if ( is_ie || is_gecko ) {
    var PxEnd = LeftValue.indexOf("px");
    LeftValue = LeftValue.substring(0,PxEnd);
    LeftValue = parseInt(LeftValue) + divOffsetX;
    LeftValue = LeftValue + 'px';
  } else { // ns3 og opera
    LeftValue = parseInt(LeftValue) + divOffsetX;
  }
  FindDiv(DivName).left = LeftValue;

  // alert("AddDiv: " + DivName + '. Top: ' + TopValue + '. Left: ' + LeftValue);
}
 

function FindDiv(divname) {
  if (document.getElementById) {
    this.obj = document.getElementById(divname).style;
  } else if (document.all) {
    this.obj = document.all[divname];
  } else if (document.layers) {
    this.obj = document.layers[divname];
  }
  return this.obj;
}


function getObj(name) {
  if (document.getElementById) {
    this.obj = document.getElementById(name);
  } else if (document.all) {
    this.obj = document.all[name];
  } else if (document.layers) {
    this.obj = document.layers[name];
  }
  return this.obj;
}


function FlipDiv(on,off) {
  getObj( on ).style.visibility = "visible";
  getObj( on ).style.position = "relative";
  getObj( off ).style.visibility = "hidden";
  getObj( off ).style.position = "absolute";
}


function HideDivs() { // skjul alle
  for (i = 0; i < Adivs.length; i++) {
    FindDiv(Adivs[i]).visibility = "hidden";
  }
}


function FindDivName(FromField) {
  if (typeof FromField == "string") {
    for (i = 0; i < Adivs.length; i++) 
      if (Adivs[i].indexOf(FromField) != -1) {
        return FindDiv(Adivs[i]);
      }
  } else {
    idx = FromField.selectedIndex;
    div = FromField[idx].value;
    if (FindDiv(div)) 
      return FindDiv(FromField[idx].value);
  }
}


function HideDiv(FromField) {
  FindDivName(FromField).visibility = "hidden";
}


function ShowDiv(FromField) {
  FindDivName(FromField).visibility = "visible";
}


function findPosX(obj) {
  var curleft = 0;
  if (document.getElementById || document.all) {
    while (obj.offsetParent) {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  }
  else if (document.layers)
    curleft += obj.x;
  return curleft;
}


function findPosY(obj) {
  var curtop = 0;
  if (document.getElementById || document.all) {
    while (obj.offsetParent) {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }
  else if (document.layers)
    curtop += obj.y;
  return curtop;
}


function showPos(objName)
// test af position x og y
{
  var obj = new getObj(objName);
  var newX = findPosX(obj);
  var newY = findPosY(obj);
  alert('Top: ' + newY + '. Left: ' + newX);
}


function ShowHelpFloat(FromField, Anchor) {
  for (i = 0; i < Adivs.length; i++) 
    if (Adivs[i].indexOf("default") == -1)
      FindDiv(Adivs[i]).visibility = "hidden";
  //alert(Anchor.offsetLeft+" "+Anchor.offsetTop);
  D = FindDivName(FromField);
  //alert("Left:"+Anchor.offsetLeft+" Top:"+Anchor.offsetTop+" name:"+Anchor.name+" x:"+findPosX(Anchor)+" y:"+findPosY(Anchor));
  //D.left = Anchor.offsetLeft+80; D.top = Anchor.offsetTop+120; 
  D.left = findPosX(Anchor)+25; D.top = findPosY(Anchor)+10; 
  D.visibility = "visible"; 
}


function showHide(o) {
  // fjern/sæt element ind i DOM.
  // bruger getObj()
  if (is_ie5 || is_ie6up) {
    var ele = new Object();
    ele = getObj(o)
    if (ele!=null) {
      var oA = ele.children.item(0);
      if (oA.style.display == "inline") {
        oA.style.display = "none";
      } else {
        oA.style.display = "inline";
      }
    }
  } else if (is_gecko || is_nav6up) {
      MyElement = document.getElementById(o);
      myDocumentElements = MyElement.getElementsByTagName("*");
      assignDisplay(myDocumentElements)
  } else return;
}


blockTags = new Array(
  "P", "DIV", "UL", "OL", "DL", "DD", "FORM", "LI", "PRE", 
  "H1", "H2", "H3", "H4", "H5", "H6", "ADDRESS", "BLOCKQUOTE"
)


function getObjNodes(elementID) {
  // find objekt og "børn"; returner array.
  var myDocumentElements = new Array();
  var MyElement = getObj(elementID);
  if ( MyElement != null ) {
    if ( is_ie5up ) {
      myDocumentElements = MyElement.children;
    } else if ( is_gecko || is_nav6up ) {
      myDocumentElements = MyElement.getElementsByTagName("*");
    } 
    myDocumentElements[myDocumentElements.length] = MyElement;
  }
  return myDocumentElements;
}


function showElements(elementID) {
  var elementArray = new Array();
  elementArray = getObjNodes(elementID);
  var l = elementArray.length;
  for (var i=0; i<l; i++) {
    var displayVal = '';
    var thisElement = elementArray.item(i);
    for (var n=0; n<blockTags.length; n++) {
      if ( thisElement.tagName == "TABLE" ) {
        displayVal = "table";
      }
      if ( thisElement.tagName == "TD" || thisElement.tagName == "TH" ) {
        displayVal = "table-cell";
      }
      if ( thisElement.tagName == blockTags[n] ) {
        displayVal = "block";
      }
    }
    if ( displayVal == '' ) displayVal = "inline";
    thisElement.style.display = displayVal;
    // alert ('Show ' + thisElement.tagName + ' : ' + thisElement.style.display);
  }
}


function hideElements(elementID) {
  var elementArray = new Array();
  elementArray = getObjNodes(elementID);
  var l = elementArray.length;
  for (var i=0; i<l; i++) {
    var thisElement = elementArray.item(i);
    thisElement.style.display = "none";
    // alert ('Hide ' + thisElement.id + ' : ' + thisElement.style.display);
  }
}

