var NavMenu =
{
	_somethingVisible: null,
	
	Initialize: function(sUl)
	{
		var menu = $(sUl).select('ul')[0];
		var menuItems = menu.select('li');
		for (var i = 0; i < menuItems.length; i++)
		{
			var subMenus = menuItems[i].select('ul');
//			var anchorLinks = menuItems[i].select('a');
			if (subMenus.length > 0)
			{
				var subMenu = subMenus[0];
				subMenu._menuWidthAdjusted = false;
				
				Event.observe(menuItems[i], 'mouseover', NavMenu._mouseOver.bindAsEventListener(this,menuItems[i],subMenu));
				Event.observe(menuItems[i], 'mouseout', NavMenu._mouseOut.bindAsEventListener(this,menuItems[i],subMenu));
			}
			else
			{
				Event.observe(menuItems[i], 'mouseover', NavMenu._mouseOver_no.bindAsEventListener(this,menuItems[i]));
			}
		}
	},

	_mouseOver_no: function(e, oLi)
	{
		if (NavMenu._somethingVisible)
		{
			NavMenu._somethingVisible.hide();
		}
	},
	
	_mouseOver: function(e, oLi, oSubUl)
	{
		if (NavMenu._somethingVisible)
		{
			NavMenu._somethingVisible.hide();
		}
		NavMenu._somethingVisible = oSubUl;
		oSubUl.setStyle({'display':'block'});
		oSubUl.clonePosition(oLi, {'setWidth':false, 'setHeight':false, 'offsetTop':oLi.getHeight()});
		if (!oSubUl._menuWidthAdjusted)
		{
			var wLi = oLi.getWidth() + 10; // Make sure the submenu is wider than the top menu item.
			var wUl = oSubUl.getWidth();
			var wNew = (wLi < wUl) ? wUl : wLi;
			oSubUl.setStyle({'width':wNew + 'px'});
			oSubUl._menuWidthAdjusted = true;
		}
		
	},
	
	_mouseOut: function(e, oLi, oSubUl)
	{	
		if (oLi.offsetParent == e.relatedTarget.offsetParent) {return;}
		oSubUl.hide();
	}
}

Event.observe(window, 'load', function() { NavMenu.Initialize('menuWrapper'); });

