/*
	Mozilla Menu Javascript for Zones, Mac Zone, and ZCS sites.
	Created:			xxx
	Created By:			xxx
	Modified:			5/9/2006
	Modified By:		Andrew Glass x3113
	Description:		IE compatible browser, uses document.all to ensure IE only use.
						Checks for windows version only as Mac side errors out too often
*/


	//vars for current header and menu
	var activeHeader1 = null;
	var activeMenu1 = null;

    var activeHeader2 = null;
    var activeMenu2 = null;

    //Sets the current header and menu
	function setMenu(menuHeaderID1,menuID1)
	{
		var top = 0;
		var left = 0;
		var currentEle1;

		if(navigator.appVersion.indexOf("Win")>0)
		{
			if(document.all)
			{
				if(activeHeader1 != null && activeMenu1 != null)
				{
					if(activeMenu1.style.visibility != 'hidden')
					{
						menuHide1();
						showSelect1();
					}
				}

				//alert(menuID1);
				//alert(menuHeaderID1);
				activeHeader1 = eval("document.all('" + menuHeaderID1 + "');");
				activeMenu1 = eval("document.all('" + 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);

				//alert(left);
				activeMenu1.style.left = left;
				activeMenu1.style.top = top;

				hideSelect1();
				menuShow1();

				event.cancelBubble = true;
			}
		}
		else { return; }
	}

//Sets the current header and menu
	function setLevel2Menu(menuHeaderID2,menuID2)
	{
		var top = 0;
		var left = 0;
		var currentEle2;

		if(navigator.appVersion.indexOf("Win")>0)
		{
			if(document.all)
			{
				if(activeHeader2 != null && activeMenu2 != null)
				{
					if(activeMenu2.style.visibility != 'hidden')
					{
						menuHide2();
						showSelect2();
					}
				}

				//alert(menuID1);
				//alert(menuHeaderID1);
				activeHeader2 = eval("document.all('" + menuHeaderID2+ "');");
				activeMenu2 = eval("document.all('" + menuID2 + "');");
				menuChange2(activeHeader2); // todo have different effect
				currentEle2 = activeHeader2;

                //activeHeader2.id.
                //activeHeader2.style.backgroundColor = '#ff0000'; // todo get this from style sheet


                //Find the top and left of header and its parent elements
				while(currentEle2.tagName.toLowerCase() != 'body')
				{
					top += currentEle2.offsetTop;
					left += currentEle2.offsetLeft;
					currentEle2 = currentEle2.offsetParent;
				}

				//Add the width of the header, and width of extra image.
				//top += (activeHeader2.offsetHeight);
                left += (activeHeader2.offsetWidth - 10)

                //alert(left);
				activeMenu2.style.left = left;
				activeMenu2.style.top = top - 3;

				hideSelect2();
				menuShow2();

				event.cancelBubble = true;
			}
		}
		else { return; }
	}


    //Show the current menu
	function menuShow1()
	{
		if(document.all)
		{
			//activeHeader1.className = 'over';
			activeMenu1.style.visibility = 'visible';
		}
	}

	//Hide the current menu
	function menuHide1()
	{
		if(document.all)
		{
			//activeHeader1.className = 'norm';
			activeMenu1.style.visibility = 'hidden';
		}
	}


    //Show the current menu
	function menuShow2()
	{
		if(document.all)
		{
			//activeHeader1.className = 'over';
			activeMenu2.style.visibility = 'visible';
		}
	}

	//Hide the current menu
	function menuHide2()
	{
		if(document.all)
		{
			//activeHeader1.className = 'norm';
			activeMenu2.style.visibility = 'hidden';
		}
	}




    //Hide the current menu and reset vars
	//if the moved to element is not contained
	//within the menu.
	function hideMenu()
	{
		if(document.all)
		{
            if(activeHeader2 != null && activeMenu2 != null)
			{
				//Check if the "moved to" element is not
				//contained within activeMenu1.
				if(!activeMenu2.contains(event.toElement))
				{
					activeMenu2.style.visibility = 'hidden';
					//activeHeader2.className = 'norm';
					menuChange2(activeHeader2); // todo use different effect
					//alert("error")
					activeHeader2 = null;
					activeMenu2 = null;
					//showSelect2();
				}
			}


            if(activeHeader1 != null && activeMenu1 != null && null==activeHeader2 && null==activeMenu2)
			{
				//Check if the "moved to" element is not
				//contained within activeMenu1.
				if(!activeMenu1.contains(event.toElement))
				{
					activeMenu1.style.visibility = 'hidden';
					//activeHeader1.className = 'norm';
					menuChange1(activeHeader1);
					//alert("error")
					activeHeader1 = null;
					activeMenu1 = null;
					showSelect1();
				}
			}
		}
	}

	//show dropdown when menu is hidden
	function showSelect1()
	{
		var obj;

		for(var i = 0; i < document.all.tags("select").length; i++)
		{
			obj = document.all.tags("select")[i];
			//alert(obj.id);
			if(!obj || !obj.offsetParent)
				continue;
			obj.style.visibility = 'visible';
		}
	}


	//show dropdown when menu is hidden
	function showSelect2()
	{
		var obj;

		for(var i = 0; i < document.all.tags("select").length; i++)
		{
			obj = document.all.tags("select")[i];
			//alert(obj.id);
			if(!obj || !obj.offsetParent)
				continue;
			obj.style.visibility = 'visible';
		}
	}


    //hide dropdown so menu can cover it when menu is visible
	function hideSelect1()
	{
		var obj;
		var currentEle1;
		var top = 0;
		var left = 0;
		var menuHeight;
		var timeout;

		for(var i = 0; i < document.all.tags("select").length; i++)
		{
			obj = document.all.tags("select")[i];
			currentEle1 = obj;

			while(currentEle1.tagName.toLowerCase() != 'body')
			{
				top += currentEle1.offsetTop;
				left += currentEle1.offsetLeft;
				currentEle1 = currentEle1.offsetParent;
			}
			if(activeMenu1 != null)
			{
				menuHeight = (activeMenu1.offsetTop + activeMenu1.offsetHeight);

				if(top < menuHeight)
				{
					if((left < (activeMenu1.offsetLeft + activeMenu1.offsetWidth)) && (left + obj.offsetWidth > activeMenu1.offsetLeft))
						obj.style.visibility = 'hidden';
				}
			}
			top = 0;
			left = 0;
		}
	}

	//hide dropdown so menu can cover it when menu is visible
	function hideSelect2()
	{
		var obj;
		var currentEle2;
		var top = 0;
		var left = 0;
		var menuHeight;
		var timeout;

		for(var i = 0; i < document.all.tags("select").length; i++)
		{
			obj = document.all.tags("select")[i];
			currentEle2 = obj;

			while(currentEle2.tagName.toLowerCase() != 'body')
			{
				top += currentEle2.offsetTop;
				left += currentEle2.offsetLeft;
				currentEle2 = currentEle2.offsetParent;
			}
			if(activeMenu2 != null)
			{
				menuHeight = (activeMenu2.offsetTop + activeMenu2.offsetHeight);

				if(top < menuHeight)
				{
					if((left < (activeMenu2.offsetLeft + activeMenu2.offsetWidth)) && (left + obj.offsetWidth > activeMenu2.offsetLeft))
						obj.style.visibility = 'hidden';
				}
			}
			top = 0;
			left = 0;
		}
	}



/***************************************************************************************************************/
	//Highlight the menu option
	function menuChange1(srcEle1)
	{
		if(srcEle1.className.toLowerCase() == 'menuregular')
		{
			srcEle1.className = 'menuHighlight';
		}
		else
		{
			srcEle1.className = 'menuRegular';
		}
	}

	//Highlight the menu option
	function menuChange2(srcEle2)
	{
		if(srcEle2.className.toLowerCase() == 'dl1')
		{
			srcEle2.className = 'dlhighlight';
		}
		else
		{
			srcEle2.className = 'dl1';
		}
	}

/***************************************************************************************************************/
