var nCancelId = 0;
var blnKeepMenu = false;
var objCurrentMenu = null;
	
var TIME_TO_HIDE_MENU = 500;

function getBorderWidth(node)
{
	var borderWidth
	
	if (document.body.dir == "ltr")
		borderWidth = parseInt(node.currentStyle.borderLeftWidth,10);
	else
		borderWidth = parseInt(node.currentStyle.borderRightWidth,10);
		
	return (isNaN(borderWidth) ? 0 : borderWidth);
}
function getMenuPosition(node,direction)
{
	var offset = eval("node.offset"+direction);
	
	switch (node.tagName.toLowerCase())
	{
		case "body":
			return offset + getBorderWidth(node,direction);
			break;
		case "tr":
		case "thead":
		case "tbody":
		case "tfoot":
			return getMenuPosition(node.parentNode,direction);
			break;
		default:
			if (offset < 0)
				return 0 + getBorderWidth(node,direction) + getMenuPosition(node.parentNode,direction);
			else
				return offset + getBorderWidth(node,direction) + getMenuPosition(node.parentNode,direction);
	}
}
function setActiveMenu(menu)
{
	blnKeepMenu = true;
	window.clearTimeout(nCancelId);
}
function showMenu(parentMenu,subMenu)
{
	window.clearTimeout(nCancelId);
				
	if (objCurrentMenu != null && subMenu != objCurrentMenu)
		realHideMenu();
	
	subMenu.style.display = "inline";
	subMenu.style.top = getMenuPosition(parentMenu,"Top") + parentMenu.clientHeight;
	if (document.body.dir == "ltr")
		subMenu.style.left = getMenuPosition(parentMenu,"Left") - 1;
	else
		subMenu.style.left = getMenuPosition(parentMenu,"Left") - (subMenu.clientWidth - parentMenu.clientWidth);

	blnKeepMenu = true;
	objCurrentMenu = subMenu;
}
function hideMenu()
{
	blnKeepMenu = false;
	nCancelId = window.setInterval("realHideMenu()",TIME_TO_HIDE_MENU);
}
function realHideMenu()
{
	if (!blnKeepMenu)
	{
		window.clearTimeout(nCancelId);
		objCurrentMenu.style.display = "none";
		objCurrentMenu = null;
	}
}