function HoverMenu(menuBarName, menuObjectName, menuItemPad)
{
	
	var menuMilliseconds = 10;
	var menuTimeout = null;
	var openMenuName = "none";
	var positionWithMouse = false;

	function mouseOverMenu(menuName, menu)
	{		
		mouseOverMenuItem();
		getPositions(menu, menuName);

		if (openMenuName == "none")
		{						
			showMenu(menuName);
		}
		else if (openMenuName != menuName)
		{
			hideMenu(openMenuName);
			showMenu(menuName);
		}
	}

	function mouseOutMenu(menuName)
	{
		mouseOutMenuItem(menuName);
	}

	function showMenu(menuName)
	{
		if (document.onclick)
		{
			document.onclick();
		}
	
		hideAllElementsBehind(menuName);
		setVisibility(menuName, 1);
		openMenuName = menuName;
	}

	function hideMenu(menuName)
	{
		showAllElements();
		setVisibility(menuName, 0);
		openMenuName = "none";
	}

	function setVisibility(menuName, visible)
	{
		if (isInternetExplorer)
		{
			if (visible)
			{
				eval(menuName + ".style.visibility = 'visible';");
			}
			else
			{
				eval(menuName + ".style.visibility = 'hidden';");
			}
		}
		else if (isNavigator4)
		{
			if (visible)
			{
				eval("document['" + menuName + "'].top = " + defaultMenuTop);
				eval("document['" + menuName + "'].left = " + defaultMenuLeft);
				document.layers[menuName].visibility = 'visible';
			}
			else
			{
				document.layers[menuName].visibility = 'hidden';
			}
		}
		else if (isMozilla || isOpera)
		{
			if (visible)
			{
				eval("document.getElementById('" + menuName + "').style.visibility = 'visible';");
			}
			else
			{
				eval("document.getElementById('" + menuName + "').style.visibility = 'hidden';");
			}
		}
	}

	function getPositions(menu, menuName)
	{
		if (positionWithMouse)
		{
			hoverItem = getElement(menuName);
			hoverItem.style.top = getMouseY();
			hoverItem.style.left = getMouseX() + hoverItem.style.width;
		}
		else
		{
			if (isNavigator4 || isNetscape6)
			{
				documentWidth = window.innerWidth;
			}
			else
			{
				documentWidth = document.body.clientWidth;
			}

			if (isDocumentObjectModel)
			{
				var menuHeight = document.getElementById(menuBar).offsetHeight;
				var menuTop = document.getElementById(menuBar).offsetTop + menuHeight -1;
				var menuLeft = document.getElementById(menuBar).offsetLeft;
				var menuItemLeft = menu.offsetLeft + menuLeft + itemPad;

				
					hoverItem = document.getElementById(menuName);
					hoverItem.style.top = menuTop;
					hoverItem.style.left = menuItemLeft;
			
					if (hoverItem.offsetWidth < menu.offsetWidth){
						for (var x=0; x<hoverItem.childNodes.length; x++){
							if (hoverItem.childNodes.item(x).tagName == "TABLE"){
								hoverItem.childNodes.item(x).width = menu.offsetWidth;
							}
						}
					}				

					/*totalWidth = menuLeft + menuBarWidth + menuItemWidth;

					if (totalWidth >= documentWidth)
					{
						menuLeft += menuHeight;
					}
					else
					{
						menuLeft += menuBarWidth;
					}*/
			}
		}
	}

	function mouseOutMenuItem(menuName)
	{
		if (menuTimeout)
		{
			clearTimeout(menuTimeout);
		}

		menuTimeout = setTimeout(objectName + ".hideMenu('" + menuName + "');", menuMilliseconds);
	}

	function mouseOverMenuItem()
	{
		if (menuTimeout)
		{
			clearTimeout(menuTimeout);
		}
	}

	function mouseOverMenuItemTR(tr)
	{
        for (var x = 0; x < tr.childNodes.length; x++)
		{
            if (tr.childNodes.item(x).className)
			{
                tr.childNodes.item(x).currentClassName = tr.childNodes.item(x).className;
                tr.childNodes.item(x).className = tr.childNodes.item(x).className + " hover";
            }
        }
    }

    function mouseOutMenuItemTR(tr)
	{
        for (var x = 0; x < tr.childNodes.length; x++)
		{
            if (tr.childNodes.item(x).className)
			{
                tr.childNodes.item(x).className = tr.childNodes.item(x).currentClassName;
            }
        }
    }


	function setPositionWithMouse(yes)
	{
		positionWithMouse = yes;
	}

	var menuBar = "level2";
	var objectName = "hoverMenu";
	var itemPad = 0;

	if (menuBarName)
	{
		menuBar = menuBarName;
	}

	if (menuObjectName)
	{
		objectName = menuObjectName;
	}

	if (menuItemPad)
	{
		itemPad = menuItemPad;
	}

	this.mouseOverMenuItem = mouseOverMenuItem;
	this.mouseOutMenuItem = mouseOutMenuItem;
	this.getPositions = getPositions;
	this.setVisibility = setVisibility;
	this.hideMenu = hideMenu;
	this.showMenu = showMenu;
	this.mouseOutMenu = mouseOutMenu;
	this.mouseOverMenu = mouseOverMenu;
	this.setPositionWithMouse = setPositionWithMouse;
	this.mouseOutMenuItemTR = mouseOutMenuItemTR;
	this.mouseOverMenuItemTR = mouseOverMenuItemTR;
}
