function GetXPos(e)
{
	var x;
	x=e.offsetLeft;
	if(e.offsetParent!=null) x+=GetXPos(e.offsetParent);
	return x;
}

function GetYPos(e)
{
	var y;
	y=e.offsetTop;
	if(e.offsetParent!=null) y+=GetYPos(e.offsetParent);
	return y;
}
//# end Generic Utils


function DisplayMenu(thisobj)
{
	// if we are already showing a child menu - hide it
	if(thisobj.parentNode.displayedChild != null)
	{
		HideMenu(thisobj.parentNode.displayedChild);
	}
//	alert("Setting " + thisobj.parentNode.id + " to have displayedChild menu " + thisobj.id);
	thisobj.parentNode.displayedChild = thisobj.id;

}

function DisplayBelowMenu(root, obj)
{
	var thisobj = document.getElementById(obj);
	var subMenu = document.getElementById(obj + "C");

	ClearTimer(root);

	if(subMenu != null)
	{
		// stuff for managing menus
		DisplayMenu(thisobj);

		// display the submenu
		x = GetXPos(thisobj);
		y = GetYPos(thisobj);
		subMenu.style.position = 'absolute';
		subMenu.style.left = x + "px";
		subMenu.style.top = (y + thisobj.offsetHeight - 25) + "px";
		subMenu.style.display='block';
	}
	else
	{
		thisobj.displayedChild = null;
	}
}

function DisplayRightMenu(root, obj)
{
	var thisobj = document.getElementById(obj);
	var subMenu = document.getElementById(obj + "C");

	ClearTimer(root);

	if(subMenu != null)
	{
		// stuff for managing menus
		DisplayMenu(thisobj);


		// display the submenu
		x = GetXPos(thisobj);
		y = GetYPos(thisobj);
		subMenu.style.position = 'absolute';
		subMenu.style.left = (x + thisobj.offsetWidth) + "px";
		subMenu.style.top = (y) + "px";
		subMenu.style.display='block';
	}
	else
	{
		thisobj.displayedChild = null;
	}
	
}


function HideMenu(obj)
{
	var thisobj = document.getElementById(obj);
	var submenu = document.getElementById(obj + "C");
	if(thisobj != null)
	{
		if(thisobj.displayedChild != null)
		{
			HideMenu(thisobj.displayedChild);
			thisobj.displayedChild = null;
		}
	}
	if(submenu != null)
	{
		if(submenu.displayedChild != null)
		{
			HideMenu(submenu.displayedChild);
			submenu.displayedChild = null;
		}

		if(submenu != null)
			submenu.style.display = 'none';
	}
}


function MenuOut(obj)
{
	// only close the menu after a time delay
	var thisobj = document.getElementById(obj);
	thisobj.menu_timer = setInterval('HideMenu("' + obj + '")', 200);
}

function ClearTimer(obj)
{
	var thisobj = document.getElementById(obj);
	if(thisobj.menu_timer != null)
	{
		clearInterval(thisobj.menu_timer);
		thisobj.menu_timer = null;
		if(thisobj.displayedChild != null)
			ClearTimer(thisobj.displayedChild);
	}
	var submenu = document.getElementById(obj + "C");
	if(submenu != null)
	{
		if(submenu.menu_timer != null)
			clearInterval(submenu.menu_timer);
		if(submenu.displayedChild != null)
			ClearTimer(submenu.displayedChild);
	}

}

