//---------------------------------------------------------------------------
//     Name: CreateMenus
// Abstract: Creates the navigation menus.
//---------------------------------------------------------------------------
function CreateMenus()
{
	
	var intMenuIndex = 0;
	var aobjNavigation = document.getElementById("Header_Navigation").getElementsByTagName("li");

	for (intMenuIndex = 0; intMenuIndex < aobjNavigation.length; intMenuIndex++)
	{
	
		var objMenu = document.createElement("div");
		
		objMenu.className = "PopUpMenu";
		
		aobjNavigation[intMenuIndex].appendChild(objMenu);

	}
	
	document.getElementById("Header_Navigation").style.visibility = "visible";

}



//---------------------------------------------------------------------------
//     Name: MenuRollOver
// Abstract: Handles roll over states for a menu.
//---------------------------------------------------------------------------
function MenuRollOver(objMenu, blnHighlight, objEvent)
{

	var objPopUp = objMenu.lastChild;

	if (blnHighlight == 1)
	{
	
		HideMenus();
		
		// No menu for home.
		if (GetFirstChild(objMenu).title != "Home")
		{

			objPopUp.style.display = "block";

			// Load menu items only once.
			if (objPopUp.innerHTML == "")
			{

				LoadMenuItems(objMenu);
			
			}
		
		}


		GetFirstChild(objMenu).className = "MenuHighlight";
		
	
	}
	else
	{

		if (IsMouseInside(objPopUp, objEvent) == false)
		{
		
			GetFirstChild(objMenu).className = "";
		
			objPopUp.style.display = "none";
		
		}
	
	}

}



//---------------------------------------------------------------------------
//     Name: HideMenus
// Abstract: Hides all menus.
//---------------------------------------------------------------------------
function HideMenus()
{

	var intMenuIndex = 0;
	var intMenuCount = document.getElementById("Header_Navigation").getElementsByTagName("li").length;
	
	for (intMenuIndex; intMenuIndex < intMenuCount; intMenuIndex++)
	{
	
		var objMenu = document.getElementById("Header_Navigation").getElementsByTagName("li")[intMenuIndex].lastChild;
		
		objMenu.style.display = "none";
	
	}

}



//---------------------------------------------------------------------------
//     Name: LoadMenuItems
// Abstract: Load menu items.
//---------------------------------------------------------------------------
function LoadMenuItems(objMenu)
{

	var objPopUp = objMenu.lastChild;

	objPopUp.innerHTML = SendHTTPRequest("/new/MenuItems.asp?MenuName=" + GetFirstChild(objMenu).title);

}



//---------------------------------------------------------------------------
//     Name: MenuItemRollOver
// Abstract: Handles roll over states for a menu item.
//---------------------------------------------------------------------------
function MenuItemRollOver(objMenuItem, blnHighlight)
{

	if (blnHighlight == 1)
	{
	
		objMenuItem.style.backgroundColor = "#FFFFFF";
	
	}
	else
	{
	
		objMenuItem.style.backgroundColor = "#EFF4EB";
	
	}

}



//---------------------------------------------------------------------------
//     Name: IsMouseInside
// Abstract: Check if mouse is within object.
//---------------------------------------------------------------------------
function IsMouseInside(objObject, objEvent)
{

	var intObjectRight = objObject.offsetLeft + objObject.clientWidth;
	var intObjectBottom = objObject.offsetTop + objObject.clientHeight;
	var blnIsMouseInside = false;

	if ((objEvent.clientX > objObject.offsetLeft) && (objEvent.clientX < intObjectRight) &&
	   (objEvent.clientY > objObject.offsetTop) && (objEvent.clientY < intObjectBottom))
	{

		blnIsMouseInside = true;
	
	}
	
	return blnIsMouseInside;

}



//---------------------------------------------------------------------------
//     Name: GetFirstChild
// Abstract: Returns the first first element within a given element.
//---------------------------------------------------------------------------
function GetFirstChild(objElement)
{

	var intChildIndex = 0;
	var intChildLength = objElement.childNodes.length;
	var objFirstChild = new Object();

	for (intChildIndex = 0; intChildIndex < intChildLength; intChildIndex++)
	{
	
		if (objElement.childNodes[intChildIndex].tagName != undefined)
		{
	
			objFirstChild = objElement.childNodes[intChildIndex];
			
			break;
		
		}
	
	}
	
	return objFirstChild;

}