/*
	Mozilla Menu Javascript for Zones, Mac Zone, and ZCS sites.
	Created:			5/9/2006
	Created By:			Andrew Glass x3113
	Modified:			xxx
	Modified By:		xxx
	Description:		FireFox, Mozilla, Netscape, Mozilla based version.  Reduces function
						count and changes document.all to document.getElementById.  Also adds
						the HTMLElement .contains to check for mouseout on menu dropdowns.
*/


	// Global Vars
	var activeHeader1 = null;
	var activeMenu1 = null;

    var activeHeader2 = null;
    var activeMenu2 = null;

    // Create .contains
	HTMLElement.prototype.contains = function(element) {
	    if (element == document) return false;
	    if (element == this) return true;
	    else { return this.contains(element.parentNode); }
	}

	// Create inital menu and hide existing if moved off the current element within the menu table
	function setMenu(menuHeaderID1,menuID1)
	{
		var top = 0;
		var left = 0;
		var currentEle1;

		if(navigator.appVersion.indexOf("Win")>0)
		{
			if(document.getElementById)
			{
				// If exists: hide already active menu if off element
				if(activeHeader1 != null && activeMenu1 != null)
				{
					if(activeMenu1.style.visibility != 'hidden')
					{
						activeMenu1.style.visibility = 'hidden';
					}
				}

				// Get new menu vars from the function
				activeHeader1 = eval("document.getElementById('" + menuHeaderID1 + "')")
				activeMenu1 = eval("document.getElementById('" + menuID1 + "')")
                //menuChange1(activeHeader1);
                currentEle1 = activeHeader1;

				//Find the top and left of header and its parent elements
				while(currentEle1.tagName.toLowerCase() != 'body')
				{
					top += currentEle1.offsetTop;
					left += currentEle1.offsetLeft;
					currentEle1 = currentEle1.offsetParent;
				}

				//Add the width of the header, and width of extra image
				top += (activeHeader1.offsetHeight);

				activeMenu1.style.left = left;
				activeMenu1.style.top = top;

				activeMenu1.style.visibility = 'visible';

				if (activeMenu1.addEventListener) activeMenu1.addEventListener("mouseout", hideMenu, false);
				else if (activeMenu1.attachEvent) activeMenu1.attachEvent("onmouseout", hideMenu);
			}
		}
		else { return; }
	}


    // Create inital menu and hide existing if moved off the current element within the menu table
	function setLevel2Menu(menuHeaderID2,menuID2)
	{
        //alert("setLevel2Menu");
        var top = 0;
		var left = 0;
		var currentEle1;

		if(navigator.appVersion.indexOf("Win")>0)
		{
			if(document.getElementById)
			{
				// If exists: hide already active menu if off element
				if(activeHeader2 != null && activeMenu2 != null)
				{
					//if(activeMenu1.style.visibility != 'hidden')
					//{
					//	activeMenu1.style.visibility = 'hidden';
					//}
				}

				// Get new menu vars from the function
				activeHeader2 = eval("document.getElementById('" + menuHeaderID2 + "')")
				activeMenu2 = eval("document.getElementById('" + menuID2 + "')")
                menuChange2(activeHeader2); // todo have different effect
                currentEle1 = activeHeader2;

				//Find the top and left of header and its parent elements
				while(currentEle1.tagName.toLowerCase() != 'body')
				{
					top += currentEle1.offsetTop;
					left += currentEle1.offsetLeft;
					currentEle1 = currentEle1.offsetParent;
				}

				//Add the width of the header, and width of extra image
				//top += (activeHeader1.offsetHeight);
	            left += (activeHeader2.offsetWidth - 10);

                activeMenu2.style.left = left;
				activeMenu2.style.top = top - 3;

				activeMenu2.style.visibility = 'visible';

				if (activeMenu2.addEventListener) activeMenu2.addEventListener("mouseout", hideMenu, false);
				else if (activeMenu2.attachEvent) activeMenu2.attachEvent("onmouseout", hideMenu);
			}
		}
		else { return; }
	}



    // Hide the menu on mouseout of the element and its parent
	function hideMenu(event)
	{
        if(activeHeader2 != null && activeMenu2 != null && event != null) {
			if(!activeMenu2.contains(event.relatedTarget || event.toElement)) {
				activeMenu2.style.visibility = 'hidden';
                menuChange2(activeHeader2); // todo use different effect

                activeHeader2 = null;
				activeMenu2 = null;
			}
		}

        if(activeHeader1 != null && activeMenu1 != null && event != null) {
			if((!activeMenu1.contains(event.relatedTarget || event.toElement)) && null==activeHeader2 && null==activeMenu2) {
				activeMenu1.style.visibility = 'hidden';

				activeHeader1 = null;
				activeMenu1 = null;
			}
		}
    }


	//Highlight the menu option
	function menuChange1(srcEle1)
	{
		if(srcEle1.className.toLowerCase() == 'dl1')
		{
			srcEle1.className = 'dlhighlight';
		}
		else
		{
			srcEle1.className = 'dl1';
		}
	}

    //Highlight the menu option
	function menuChange2(srcEle2)
	{
		if(srcEle2.className.toLowerCase() == 'dl1')
		{
			srcEle2.className = 'dlhighlight';
		}
		else
		{
			srcEle2.className = 'dl1';
		}
	}
