timeout=null;
var menusShowing=null;
var divElementLit=null;
var pfx;
function navElementOn(prefix)
{
  if (timeout != null) {
    clearTimeout(timeout);
    timeout=null;
  }
  pfx=prefix;
  if (menusShowing != null) {
    hideAllMenus();
    addMenu();
  }
  else {
    if (window.location.pathname.indexOf("/datasets/ds") == 0 || window.location.pathname.indexOf("/cgi-bin/datasets") == 0 || window.location.pathname.indexOf("/md/datasets/ds") == 0)
	timeout=setTimeout("addMenu()",500);
    else
	addMenu();
  }
}
function addMenu()
{
  var menuId;

  eval("menuId=document.getElementById(\""+pfx+"MenuDiv\")");
  if (menuId != null)
    menuId.style.visibility="visible";
  else
    return;

  var lastIndex;
  if (menusShowing == null) {
    lastIndex=0;
    menusShowing=new Array(1);
    menusShowing[lastIndex]=pfx;
  }
  else {
    var newMenusShowing=new Array(menusShowing.length+1);
    for (n=0; n < menusShowing.length; n++)
	newMenusShowing[n]=menusShowing[n];
    newMenusShowing[n]=pfx;
    lastIndex=n;
    menusShowing=newMenusShowing;
  }
}
function navElementOff(prefix)
{
  var menu;

  if (timeout != null) {
    clearTimeout(timeout);
    timeout=null;
  }
  eval("menu=document.getElementById(\""+prefix+"MenuDiv\")");
  if (menu != null)
    timeout=setTimeout("hideAllMenus()",100);
}
function removeMenu(prefix)
{
  if (menusShowing == null)
    return;

  var n=0;
  var index=-1;
  while (n < menusShowing.length) {
    if (menusShowing[n] == prefix) {
	index=n;
	n=menusShowing.length;
    }
    n++;
  }
  if (index >= 0) {
    newMenusShowing=new Array(menusShowing.length-1);
    m=0;
    for (n=0; n < menusShowing.length; n++) {
	if (n != index) {
	  newMenusShowing[m]=menusShowing[n];
	  m++;
	}
    }
    menusShowing=newMenusShowing;
  }
}
function hideAllMenus()
{
  if (menusShowing == null)
    return;
  for (n=menusShowing.length-1; n >= 0; n--)
    eval("document.getElementById(\""+menusShowing[n]+"MenuDiv\").style.visibility=\"hidden\"");
  menusShowing=null;
}

function divElementOn(prefix,elementIndex,childPrefix)
{
  var divId;
  if (timeout != null) {
    clearTimeout(timeout);
    timeout=null;
  }
  while (menusShowing.length > 0 && prefix != menusShowing[menusShowing.length-1]) {
    eval("document.getElementById(\""+menusShowing[menusShowing.length-1]+"MenuDiv\").style.visibility=\"hidden\"");
    removeMenu(menusShowing[menusShowing.length-1]);
  }
  if (divElementLit != null && (prefix != divElementLit.prefix || elementIndex != divElementLit.elementIndex))
    divElementLit=null;
  eval("divId=document.getElementById(\""+prefix+"MenuDiv\")");
  divElementLit=new Object();
  divElementLit.prefix=prefix;
  divElementLit.elementIndex=elementIndex;
  if (childPrefix != "") {
    pfx=childPrefix;
    addMenu();
  }
}
function divElementOff(prefix,elementIndex)
{
  eval("var divId=document.getElementById(\""+prefix+"MenuDiv\")");
  if (divElementLit != null && prefix == divElementLit.prefix && elementIndex == divElementLit.elementIndex)
    divElementLit=null;
  timeout=setTimeout("hideAllMenus()",100);
}

function doFinalAdjustments()
{
  var x=document.getElementById("homeImage");
  var menuTop=23+x.offsetTop;
// Mac version of MSIE doesn't seem to handle the 5px body margin within the
//  browser window properly, so do it for MSIE
  if (navigator.appVersion.indexOf("Macintosh") > 0 && navigator.appVersion.indexOf("MSIE") > 0)
    menuTop+=5;
  while ( (x=x.offsetParent) != null)
    menuTop+=x.offsetTop;
  var elements=document.getElementsByTagName("div");
  for (n=0; n < elements.length; n++) {
    var length=elements[n].id.length;
    if (length > 7 && elements[n].id.substr(length-7,7,"") == "MenuDiv") {
	elements[n].style.top=parseInt(elements[n].style.top)+menuTop+"px";
	var y=document.getElementById(elements[n].id.substr(0,length-7)+"Image");
	if (y) {
	  var menuLeft=y.offsetLeft;
	  while ( (y=y.offsetParent) != null)
	    menuLeft+=y.offsetLeft;
	  elements[n].style.left=parseInt(elements[n].style.left)+menuLeft+"px";
	}
    }
  }
}
