/* Javascript - Index Homepage **********************************
 *	
 *	Homepage functions
 *
 *********************************************************************/

	var currentTabElementId = "";
	var currentMenuItemId = "";
	var xmlData = "";
	var dropDownMenuElement = "";
	
	addLoadEvent(init);
	addMouseMoveEvent(mouseMoveActions);
	addScrollEvent(updateShader);
	
	// ************************************************************
	
	function init()
	{
		// Drop Down Menu Element ***************************************
		dropDownMenuElement = getElement("dropDownMenu");
	}
	
/*  Update Main Container Position * ***************************************
 *
 *	TAKES:		NOTHING
 * 	RETURNS:	NOTHING
 *
 *************************************************************************/
 
	function updateMainContainerPosition()
	{
		// Center Page ************************
		var mainElement = getElement("mainContentContainer");
		
		if (IE)
		{
			var widthOffset = 0;
		}
		else
		{
			var widthOffset = -10;
		}
		
		setPosX(mainElement, ((getWindowWidth()/2) - (1009/2)) + widthOffset );
		showElement("mainContainer");
		
		// Set Print Opacity
		setOpacity("printContent", 0);	
	}

/*  Mouse Move Actions * *******************************************************
 *
 *	TAKES:		Parent Tab Element
 * 	RETURNS:	NOTHING
 *
 *************************************************************************/
 
	function mouseMoveActions(e)
	{
		getMousePosition(e);
		
		if ((isVisible("dropDownMenu")) & (currentTabElementId != ""))
		{
			mouseOutDropdownMenuCheck(getElement(currentTabElementId));
		}
	}
		
/*  Tab Mouse Over Actions * *******************************************************
 *
 *	TAKES:		Tab Element
 * 	RETURNS:	NOTHING
 *
 *************************************************************************/
 
	function tabMouseOverActions(tabElement)
	{
		if ((currentTabElementId != "") & (currentTabElementId != tabElement.id))
		{
			var lastTab = getElement(currentTabElementId);
			var posArray = lastTab.style.backgroundPosition.split(" ");
			var posX = posArray[0];
			var posY = "0px";
			
			lastTab.style.backgroundPosition = posX + " " + posY;
		}
		
		/*if (getElement("test"))
		{
				showElement("glassPane");
				glassElement.innerHTML += "<span style=\"color: #FFFFFF\">" + tabElement + ", " + tabElement.id + "</span><br>";
		}*/
		
		currentTabElementId = tabElement.id;
		tabElement.style.cursor = "pointer";
		
		var tabMenuElement = getElement(tabElement.id + "Menu");
		
		if (tabMenuElement != null)
		{
			// Set the Drop Down Menu **************************
			if (tabMenuElement.innerHTML != "")
			{
				dropDownMenuElement.innerHTML = tabMenuElement.innerHTML;
			}
			
			// Position the Menu ******************************
			setPosX(dropDownMenuElement, getElementX(tabElement) + 4);
			setPosY(dropDownMenuElement, getElementY(tabElement) + (getHeight(tabElement)-1));
			
			// Show Menu
			showElement(dropDownMenuElement.id);
			
		}
		else
		{
			// Hide Menu ****************************
			hideDropdownMenu();
		}
		
	}

/*  Tab Mouse Out Actions * *******************************************************
 *
 *	TAKES:		Tab Element
 * 	RETURNS:	NOTHING
 *
 *************************************************************************/
 
	function tabMouseOutActions(tabElement)
	{
		mouseOutTabCheck(tabElement);
	}
	
/*  Mouse Out Tab Check * *******************************************************
 *
 *	TAKES:		Tab Element
 * 	RETURNS:	NOTHING
 *	NOTES:		
 *
 *************************************************************************/
	
	function mouseOutTabCheck(tabElement)
	{
		
		if (tabElement != null)
		{
			var posArray = tabElement.style.backgroundPosition.split(" ");
			var posX = posArray[0];
			var posY = "0px";
				
			if ( (isVisible("dropDownMenu")) & (!isMouseBelowTab(tabElement.id)) & (!containsMousePoint(tabElement)) )
			{
				tabElement.style.cursor = "";
				hideDropdownMenu();
				
				tabElement.style.backgroundPosition = posX + " " + posY;
			}
			else if (!isVisible("dropDownMenu"))
			{
				tabElement.style.cursor = "";
				hideDropdownMenu();
			
				tabElement.style.backgroundPosition = posX + " " + posY;
			}
			
		}
	}
	
	
	
/*  Get Dropdown Menu * *******************************************************
 *
 *	TAKES:		Parent Tab Element Id
 * 	RETURNS:	NOTHING
 *
 *************************************************************************/
 	
	function getDropdownMenu(parentTabElementId)
	{
		var parentTabElement = getElement(parentTabElementId);
		var tabDropDownMenu = getElement(parentTabElement.id + "Menu");
		
		var tempDiv						= document.createElement("div");
		
		var menuElementContainer		= document.createElement("div");
		menuElementContainer.className	= "dropdownMenuContainer";
		
		// Events **********************************************
		menuElementContainer.setAttribute("onmouseover", "dropdownMenuMouseOverActions();");
		menuElementContainer.setAttribute("onmouseout", "dropdownMenuMouseOutActions(); ");
		
					
		// Loop the XML Data **********************************************
		var xmlData	= getXmlData("/includes/headerNav.xml");
		
		var noMenuItems = true;
		
		// Get Tab Data *************************************************
		var menuTabElements		= xmlData.getElementsByTagName("menuTab");
		var menuTabElement		= ""; 
		
		if (menuTabElements.length > 0)
		{
			// Loop Tab Elements ***************************************
			for(var ctr=0; ctr<menuTabElements.length; ctr++)
			{
				menuTabElement = menuTabElements[ctr];
				
				// Check for the correct Tab *********************************
				if ( getXmlNodeValue(menuTabElement, "title").replace(" ", "") == parentTabElementId.replace("tab", "") )
				{
					// Tab Link **********************************************
					var menuTabLink 		= getXmlNodeValue(menuTabElement, "link");
					
					if (menuTabLink != "undefined")
					{
						var parentTabElement = getElement(parentTabElementId);
						
						var tabLinkInput = document.createElement("input");
						tabLinkInput.setAttribute("type", "hidden");
						tabLinkInput.setAttribute("id", parentTabElementId + "Link");
						tabLinkInput.setAttribute("value", menuTabLink);
						
						parentTabElement.appendChild(tabLinkInput);
						
						parentTabElement.onclick = function()
						{
							location.href = getElement(parentTabElementId + "Link").value;
						}
						
					}
					
					var menuItemElements 	= getXmlNodes(menuTabElement, "menuItem");
					var menuItemElement 	= "";
					
					if (menuItemElements.length > 0)
					{
						noMenuItems = false;
						
						// Loop Menu Items **********************************
						for(var ctrAlt=0; ctrAlt<menuItemElements.length; ctrAlt++)
						{
							menuItemElement = menuItemElements[ctrAlt];
							
							var menuItemTitle = getXmlNodeValue(menuItemElement, "itemTitle");
							var menuItemDescr = getXmlNodeValue(menuItemElement, "itemDescr");
							var menuItemImage = getXmlNodeValue(menuItemElement, "itemImage");
							var menuItemLink = getXmlNodeValue(menuItemElement, "itemLink");
							
							// Add Menu Item *******************************
							var menuElement = getMenuItem(ctrAlt, menuItemTitle, menuItemDescr, menuItemImage, menuItemLink);
							
							menuElementContainer.appendChild(menuElement);
							
							if (ctrAlt < (menuItemElements.length-1))
							{
								// Divider Container **************************
								var menuItemDividerTop = document.createElement("div");
								menuItemDividerTop.className = "menuItemDividerTop";
								
								// Divider Container **************************
								var menuItemDividerBottom = document.createElement("div");
								menuItemDividerBottom.className = "menuItemDividerBottom";
								
								menuElementContainer.appendChild(menuItemDividerTop);
								menuElementContainer.appendChild(menuItemDividerBottom);
							}								
							
							
						}
					}
					
					break; // Exit For Loop
				}
			}
		}
		
		if (!noMenuItems)
		{
			tempDiv.appendChild(menuElementContainer);
			tabDropDownMenu.innerHTML = tempDiv.innerHTML;
			//showElement("dropDownMenu");
		}
	}

	
/*  Hide Dropdown Menu * *******************************************************
 *
 *	TAKES:		Parent Tab Element Id
 * 	RETURNS:	NOTHING
 *
 *************************************************************************/
 
	function hideDropdownMenu()
	{
		//getElement(currentTabElementId + "Body").className = "pageHeaderTabBody"; 
		hideElement("dropDownMenu");
		dropDownMenuElement.innerHTML = "";
		
	}

/*  Dropdown Menu Mouse Over Actions * *******************************************************
 *
 *	TAKES:		Parent Tab Element Id
 * 	RETURNS:	NOTHING
 *
 *************************************************************************/
 
	function dropdownMenuMouseOverActions(thisElement)
	{
		//getDropdownMenu(parentTabElementId);
		/*var posXArray = thisElement.style.backgroundPosition.split(" ");
		var posX = posXArray[0];
		
		thisElement.style.backgroundPosition = posX + " -102px";*/
		
		mouseOverDropdownMenu = true;
	}

/*  Dropdown Menu Mouse Out Actions * *******************************************************
 *
 *	TAKES:		Parent Tab Element Id
 * 	RETURNS:	NOTHING
 *	NOTES:		Timeout must be set to ensure that the mouse is calculated a the actual
 *				position and no miscalculations are performed because of process thread lag.
 *
 *************************************************************************/
 
	function dropdownMenuMouseOutActions(thisElement)
	{
		mouseOutDropdownMenuCheck(thisElement);
	}

/* Mouse Out Dropdown Menu Check * *******************************************************
 *
 *	TAKES:		Parent Tab Element Id
 * 	RETURNS:	NOTHING
 *	NOTES:		
 *
 *************************************************************************/
 
	function mouseOutDropdownMenuCheck(thisElement)
	{
		var tabElement = getElement(currentTabElementId);
		
		if ( (!containsMousePoint(dropDownMenuElement)) & (!containsMousePoint(tabElement)) & (isVisible(dropDownMenuElement.id)) )
		{
			mouseOverDropdownMenu = false;
			hideDropdownMenu();
			
			var posArray = tabElement.style.backgroundPosition.split(" ");
			var posX = posArray[0];
			var posY = "0px";
			tabElement.style.backgroundPosition = posX + " " + posY;
		}
	}
	
/* Mouse Out Menu Item Check * *******************************************************
 *
 *	TAKES:		Menu Item Id
 * 	RETURNS:	NOTHING
 *	NOTES:		
 *
 *************************************************************************/
 
	function mouseOutMenuItemCheck(thisElement)
	{
		if (IE)
		{
			if (!containsMousePoint(getElement(currentMenuItemId)))
			{
				thisElement.className = "menuItem";
			}
		}
		else
		{
			thisElement.className = "menuItem";
		}
	}

/* Is Mouse Below Tab * *******************************************************
 *
 *	TAKES:		Parent Tab Element
 * 	RETURNS:	NOTHING
 *
 *************************************************************************/
 
	function isMouseBelowTab(parentTabElementId)
	{
		var parentTabElement = getElement(parentTabElementId);
		
		var tabBottomY = getElementY(parentTabElement) + getHeight(parentTabElement);
		
		if (parseInt(mousePositionY+2) >= parseInt(tabBottomY))
		{
			return true;
		} 
		else
		{
			return false;
		}
	}

/* Get XML Data* *******************************************************
 *
 *	TAKES:		XML File
 * 	RETURNS:	XML Data
 *
 *************************************************************************/
 
	function getXmlData(xmlFile)
	{
		var xmlDoc = "";
		
		try //Internet Explorer
		{
		  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		}
		catch(e)
		{
		  	try //Firefox, Mozilla, Opera, etc.
			{
				xmlDoc=document.implementation.createDocument("","",null);
			}
			catch(e)
			{
				alert(e.message);
				return;
			}
		}
		
		xmlDoc.async = false;
		xmlDoc.load(xmlFile);
		
		return xmlDoc;
	}

/* Get XML Nodes * *******************************************************
 *
 *	TAKES:		XML Node, Node Tag Name
 * 	RETURNS:	XML Node
 *
 *************************************************************************/
 
	function getXmlNodes(xmlNode, nodeTagName)
	{
		return xmlNode.getElementsByTagName(nodeTagName);
	}
	
/* Get XML Node Value * *******************************************************
 *
 *	TAKES:		XML Node, Node Tag Name
 * 	RETURNS:	Top XML Node Value
 *  NOTES:		Returns the top node value from the tree. Used primarily when
 *				there is only a one node result. 
 *
 *************************************************************************/
 
	function getXmlNodeValue(xmlNode, nodeTagName)
	{
		var nodeElements = xmlNode.getElementsByTagName(nodeTagName);
		
		// Xml Tag Exist ***************
		if (nodeElements.length > 0)
		{
			// Node Value Exist **************
			if (nodeElements[0].childNodes.length > 0)
			{
				return nodeElements[0].childNodes[0].nodeValue;
			}
		}
		
		return "undefined";
		
	}

/* Get Page Header Tab * *******************************************************
 *
 *	TAKES:		NOTHING
 * 	RETURNS:	Tab Element
 *
 *************************************************************************/
 
	function getPageHeaderTab(tabId, tabTitle, tabLink)
	{
		var tabElement 	= document.createElement("div");
		tabElement.id 	= tabId;
		
			var tabTableElement 	= document.createElement("table");
			var tabTableBodyElement = document.createElement("tbody");
			
			tabTableElement.cellPadding = "0";
			tabTableElement.cellSpacing = "0";
			
			var tableRowTop = document.createElement("tr");
			
				var tableColLeftTop 		= document.createElement("td");
				tableColLeftTop.className 	= "pageHeaderTabLeftTop";
				
				var tableColTop 			= document.createElement("td");
				tableColTop.className	 	= "pageHeaderTabTop";
				
				var tableColRightTop 		= document.createElement("td");
				tableColRightTop.className 	= "pageHeaderTabRightTop";
			
			tableRowTop.appendChild(tableColLeftTop);
			tableRowTop.appendChild(tableColTop);
			tableRowTop.appendChild(tableColRightTop);
			
			var tableRowBody = document.createElement("tr");
			
				var tableColLeftBody 		= document.createElement("td");
				tableColLeftBody.className 	= "pageHeaderTabLeft";
				
				var tableColBody			= document.createElement("td");
				tableColBody.className	 	= "pageHeaderTabBody";
				tableColBody.id				= tabId + "Body";
				tableColBody.innerHTML		= tabTitle;
				
				tableColBody.setAttribute("onmouseover", "tabMouseOverActions('" + tabId + "');");
				tableColBody.setAttribute("onmouseout", "tabMouseOutActions();");
				
				if (tabLink != "undefined")
				{
					tableColBody.setAttribute("onclick", "location.href='" + tabLink + "'");
				}
				
				var tableColRightBody		= document.createElement("td");
				tableColRightBody.className = "pageHeaderTabRight";
			
			tableRowBody.appendChild(tableColLeftBody);
			tableRowBody.appendChild(tableColBody);
			tableRowBody.appendChild(tableColRightBody);
			
			tabTableBodyElement.appendChild(tableRowTop);
			tabTableBodyElement.appendChild(tableRowBody);
			
			tabTableElement.appendChild(tabTableBodyElement);
		
		tabElement.appendChild(tabTableElement);
		
		return tabElement;
	}
	
	function mouseOverMenuItem(menuItemElement)
	{
		if (currentMenuItemId != "")
		{
			getElement(currentMenuItemId).className = "menuItem";
		}
		
		currentMenuItemId = menuItemElement.id;
		menuItemElement.className = "menuItemHover";
	}

/* Get Menu Item * *******************************************************
 *
 *	TAKES:		NOTHING
 * 	RETURNS:	Menu Item Element
 *
 *************************************************************************/
 
	function getMenuItem(menuId, itemTitle, itemDescr, itemImage, itemLink)
	{
		var menuElement				= document.createElement("div");
		menuElement.id				= "menuItem" + menuId
		menuElement.className		= "menuItem";
		
		menuElement.setAttribute("onmouseover", "mouseOverMenuItem(this);");
		menuElement.setAttribute("onmouseout", "mouseOutMenuItemCheck();");
		menuElement.setAttribute("onclick", "location.href='" + itemLink + "'");
		
			var menuElementTable 	= document.createElement("table");
			var menuElementBody		= document.createElement("tbody");
			
			menuElementBody.cellPadding = "0";
			menuElementBody.cellSpacing = "0";
			
			var lightboxRow = document.createElement("tr");
			lightboxRow.vAlign = "top";
			
				var leftCell = document.createElement("td");
				leftCell.align = "center";
				leftCell.width = "70";
				leftCell.innerHTML = "<img src=\"" + itemImage + "\" class=\"menuItemImage\">";
				
				var rightCell = document.createElement("td");
				
					var titleElement = document.createElement("div")
					titleElement.className = "menuItemTitle";
					titleElement.innerHTML = itemTitle;
					
					var descrElement = document.createElement("div")
					descrElement.className = "menuItemDescr";
					descrElement.innerHTML = itemDescr;
				
				rightCell.appendChild(titleElement);
				rightCell.appendChild(descrElement);
				
			lightboxRow.appendChild(leftCell);
			lightboxRow.appendChild(rightCell);
			
			menuElementBody.appendChild(lightboxRow);
			menuElementTable.appendChild(menuElementBody);
			
			
		menuElement.appendChild(menuElementTable);
		
		return menuElement;
		
	}
	
/* Set Quick Links * *******************************************************
 *
 *	TAKES:		NOTHING
 * 	RETURNS:	NOTHING
 *	NOTES:		If this page has a Quick Link Tab trigger element, then
 *				the quick links are built.
 *
 *				Trigger Element: id="quickLinksTrigger" value="(Products | About Us | Customer Tools)"
 *
 *************************************************************************/
 
	function setQuickLinks()
	{
		var quickLinksTrigger = getElement("quickLinksTrigger");
		
		if (quickLinksTrigger != null)
		{
			var triggerValue = quickLinksTrigger.value;	
			
			// Get Tab Data *************************************************
			var menuTabElements		= getXmlNodes(xmlData, "menuTab");
			var menuTabElement		= ""; 
			
			if (menuTabElements.length > 0)
			{
				
				// Reverse order so the tabs appear like on the XML doc. *******************
				for(var ctr=(menuTabElements.length-1); ctr>=0; ctr--)
				{
					menuTabElement = menuTabElements[ctr];
					var quickLinkTitle = getXmlNodeValue(menuTabElement, "title");
					
					if (quickLinkTitle == triggerValue)
					{
						var quickLinksContainer = document.createElement("div");
						
						quickLinksContainer.innerHTML = quickLinkTitle.toUpperCase() + " > ";
						
						var menuItems = getXmlNodes(menuTabElement, "menuItem");
						var menuItem = "";
						
						if (menuItems.length > 0)
						{
							for(var ctr1=0; ctr1<menuItems.length; ctr1++)
							{
								var menuItem = menuItems[ctr1];
								
								var menuItemTitle = getXmlNodeValue(menuItem, "itemTitle");
								var menuItemLink = getXmlNodeValue(menuItem, "itemLink");
								
								quickLinksContainer.innerHTML += "<a href=\"" + menuItemLink + "\" class=\"quickLinks\">" + menuItemTitle.toUpperCase() + "</a>";
								
								if (ctr1 <menuItems.length-1)
								{
									quickLinksContainer.innerHTML += " &bull; "; 	
								}
							}
							
						}
						
						getElement("quickLinks").innerHTML = quickLinksContainer.innerHTML;
						break; // exit for
					}
					
				}
				
			}
		}
	}


	
	
	
	
	
	
	
	
	
	
	
	
	