function HoverMenu(menuBarName, menuObjectName, menuItemPad){
	
	var menuMilliseconds = 10;
	var menuTimeout = null;
	var openMenuName = "none";
	var positionWithMouse = false;

	if (isNavigator4)
	{
		menuMilliseconds = 10;
	}

	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();
		}
	
		setVisibility(menuName, 1);
		openMenuName = menuName;
	}

	function hideMenu(menuName)
	{
		setVisibility(menuName, 0);
		openMenuName = "none";
	}

	function setVisibility(menuName, visible)
	{
		try{
			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';");
				}
			}
		} catch (Exception) {}
	}

	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 menuLeft = document.getElementById(menuBar).offsetLeft;
				var menuItemLeft = menu.offsetLeft + itemPad + 3;							
				var menuItemTop = menu.offsetHeight + menu.offsetTop;

				hoverItem = document.getElementById(menuName);

				if(hoverItem){
					hoverItem.style.top = menuItemTop;
					hoverItem.style.left = menuItemLeft;
					
					if(hoverItem.offsetWidth < menu.offsetWidth){
						hoverItem.style.width = menu.offsetWidth - 3;
					}				
				}
			}
		}
	}

	function mouseOutMenuItem(menuName)
	{
		if (menuTimeout)
		{
			clearTimeout(menuTimeout);
		}
		menuTimeout = setTimeout(objectName + ".hideMenu('" + menuName + "');", menuMilliseconds);
	}

	function mouseOverMenuItem()
	{
		if (menuTimeout)
		{
			clearTimeout(menuTimeout);
		}
	}

	function setPositionWithMouse(yes){
		positionWithMouse = yes;
	}

	var menuBar = "buttons";
	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;
}
