var timerIds = new Object();
var delayTimeOpen = 300;
var delayTimeHide = 600;
var mainLeftOffset=0;

function fzDropMenuSetup(nav_id, level) {
	var i,j,k,q;
	var node, elem, menuElem, dropElem;
	var navRoot = document.getElementById(nav_id)
	var navLeft = navRoot.offsetLeft;
	var navTop = navRoot.offsetTop;

	level += 1
	if (level== 1)  mainLeftOffset = navLeft;
//	alert("x:y=" + navRoot.offsetLeft + ":" + navRoot.offsetTop + "\nmainLeftOffset: " + mainLeftOffset);


  for (i=0; i<navRoot.childNodes.length; i++) {
    node = navRoot.childNodes[i];
    if (node.className == "closed") {
		node.onmouseover = function() {delayOpen(this); clearTimer(this.id); }
		node.onmouseout = function() {clearOpenTimer(this.id);delayHide(this); }
    }
    for (j=0; j<node.childNodes.length; j++) {
      if (node.childNodes[j].className == "dropContainer") {
        elem = node.childNodes[j];
        if (level>1) {
			elem.style.left = (-1*(node.offsetLeft+navLeft+level-1)) + "px";
			elem.style.top = "20px";
		}
		else 
			elem.style.left = (-1*node.offsetLeft) + "px";
        for (k=0; k<elem.childNodes.length; k++) {
          if (elem.childNodes[k].className == "dropBox" ) {
            menuElem = elem.childNodes[k];
            for (q=0; q<menuElem.childNodes.length; q++) {
              if (menuElem.childNodes[q].className == "dropItem") {
                dropElem = menuElem.childNodes[q];
                if (dropElem.id.length > 0)  {
					fzDropMenuSetup(dropElem.id, level);
                }
                dropElem.onmouseover = function() {this.className = 'dropItemHi';}
                dropElem.onmouseout = function() {this.className = 'dropItem';}
              }
            } // finished dropItem event setup
          }
        } // finished walking through drop menu boxes
      }
    } // finished with all menu containers
  } // finished all menu swap images
} // end fzDropMenuSetup

function setHighLight(elemid)
{
	var i, str='';
	for (i=0; i<elemid.childNodes.length; i++) {
		if (elemid.childNodes[i].tagName == 'A') {
			elemid.childNodes[i].style.backgroundPosition = 'left -30px';
		}
	}
}

function removeHighLight(elemid)
{
	var i;
	for (i=0; i<elemid.childNodes.length; i++) {
		if (elemid.childNodes[i].tagName == 'A') {
			elemid.childNodes[i].style.backgroundPosition = 'left 0px';
		}
	}
}

function delayOpen(elem) {
	
	var o = eval(elem);
	var str = "openContainer('" + elem.id + "')";
	
	var rtn = "delayOpen: current timer is: " + timerIds[elem.id] + "\n";
		timerIds[elem.id + ".o"] = setTimeout(str, delayTimeOpen);
		rtn += "creating timer for: " + timerIds[elem.id + ".o"] + " for element: " + elem.id + "\n";
//	alert(rtn); 
}

function delayHide(elemToHide) {
	
	var o = eval(elemToHide);
	var str = "closeContainer('" + elemToHide.id + "')";
	
	var rtn = "delayHide: current timer is: " + timerIds[elemToHide.id] + "\n";
	if (timerIds[elemToHide.id] == -1 ) {
		timerIds[elemToHide.id] = setTimeout(str, delayTimeHide);
		rtn += "creating timer for: " + timerIds[elemToHide.id] + " for element: " + elemToHide.id + "\n";
	}
//	alert(rtn);
}

function clearOpenTimer(elem)
{
	var timerId;
	
	var rtn = "clearing open timer: " + timerIds[elem] + " requested for element: " + elem + "\n";
	if (timerIds[elem  + ".o"] != -1) {
		rtn += "clearing timer: " + timerIds[elem + ".o"];
		timerId = timerIds[elem + ".o"];
		clearTimeout(timerId);
		timerIds[elem + ".o"] = -1;
	}
//	alert(rtn);
}

function clearTimer(elem)
{
	var timerId;
	
	var rtn = "clearing timer: " + timerIds[elem] + " requested for element: " + elem + "\n";
	if (timerIds[elem] != -1) {
		rtn += "clearing timer: " + timerIds[elem];
		timerId = timerIds[elem];
		clearTimeout(timerId);
		timerIds[elem] = -1;
	}
//	alert(rtn);
}

function closeContainer (elemToHide) {
	var o= document.getElementById(elemToHide);

	removeHighLight(o);
	o.className = "closed";
}

function openContainer (elemToHide) {
	var o= document.getElementById(elemToHide);

	setHighLight(o);
	o.className = "opened";
}

function fzVertDropMenuSetup(nav_id) {
	var i,j,k,q;
	var node, elem, menuElem, dropElem;
	var navRoot = document.getElementById(nav_id)
	var navLeft = navRoot.offsetLeft;
	var navTop = navRoot.offsetTop;

  for (i=0; i<navRoot.childNodes.length; i++) {
    node = navRoot.childNodes[i];
    if (node.className == "closed") {
		node.onmouseover = function() {delayOpen(this); clearTimer(this.id); }
		node.onmouseout = function() {clearOpenTimer(this.id);delayHide(this); }
    }
    for (j=0; j<node.childNodes.length; j++) {
      if (node.childNodes[j].className == "dropContainer") {
        elem = node.childNodes[j];
        for (k=0; k<elem.childNodes.length; k++) {
          if (elem.childNodes[k].className == "dropBox" ) {
            menuElem = elem.childNodes[k];
            for (q=0; q<menuElem.childNodes.length; q++) {
              if (menuElem.childNodes[q].className == "dropItem") {
                dropElem = menuElem.childNodes[q];
                dropElem.onmouseover = function() {this.className = 'dropItemHi';}
                dropElem.onmouseout = function() {this.className = 'dropItem';}
              }
            } // finished dropItem event setup
          }
        } // finished walking through drop menu boxes
      }
    } // finished with all menu containers
  } // finished all menu swap images
} // end fzDropMenuSetup
