//<![CDATA[
//functions for a dynamic tree-menu.
//Main menu (child of the BOX) is in level 0.
//Every menu passes to showMenu the number of the *next* level.
// (this is done by Perl, baby...)

var openMenus = new Array();	//A stack of open menus.
var collapseMenusTimer;		//Next two vars used for closing all menus.
var isCollapsing = false;
var FirstTime = true;
var SecondTime = false;
var FirstMenu;

function getCrossBrowser(name) {
	return document.getElementById(name); //Now it works on all of them...
}

function showMenu (isMain, level, name, caller, coordSpaceId) {
	var smenu = getCrossBrowser(name);
        var coordSpace = getCrossBrowser(coordSpaceId);
	if (FirstTime) { 
		FirstMenu = smenu; 
		FirstTime = false; 
		SecondTime = true;
	}
	if (SecondTime) {
		FirstMenu.style.visibility = "hidden";
		SecondTime = false;
	}
	if (isCollapsing) {
		clearTimeout(collapseMenusTimer);
		isCollapsing = false;
	}
	
	//Now that that is out of the way...
//	hideMenus(level);
	hideMenus(0);
	smenu.style.visibility = "visible";

	smenu.style.top = findPosY(caller, coordSpace) + "px";
	smenu.style.left = findPosX(caller, coordSpace) + caller.offsetWidth + 4 + "px";

	openMenus[openMenus.length] = smenu;
}

function hideMenus(level) {
	level++;
	for (i = openMenus.length - 1; i >= level; i--) {
		openMenus[i].style.visibility = "hidden";
		openMenus = openMenus.slice(0, i);
	}
}

function outOfMenu() {
	if (isCollapsing) {
		clearTimeout(collapseMenusTimer);
		isCollapsing = false;
	}

	collapseMenusTimer = setTimeout("hideMenus(0)",500);
	isCollapsing = true;
}

function stopTimer() {
	if (isCollapsing) {
		clearTimeout(collapseMenusTimer);
		isCollapsing = false;
	}
}

//Two functions for finding absolute position of an element on the page:
//coordSpace is the item whose parent determines the coordinate space.

function findPosX(obj, coordSpace) {
	var curleft = 0;
	if (obj.offsetParent)
	{
		while(obj.offsetParent)
		{
		        curleft += obj.offsetLeft
		        if (obj.offsetParent == coordSpace.offsetParent)
			    break;
			  			obj = obj.offsetParent;
			  		}
			  	}
			  	else if (obj.x)
			  		curleft += obj.x;
			  	return curleft;
			  }
			  
			  function findPosY(obj, coordSpace) {
			  	var curtop = 0;
			  	if (obj.offsetParent)
			  	{
			  		while (obj.offsetParent)
			  		{
			  			curtop += obj.offsetTop
		        if (obj.offsetParent == coordSpace.offsetParent)
			    break;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


//]]> End script hiding -->
