// -------------------------------------------------------------
// Client-side global variables
// -------------------------------------------------------------
var sOpenMenuID = "";
var sOpenSubMenuID = "";
var sOpenTier1 = "";
var sOpenTier2 = "";
var sOpenTier3 = "";

var iChunk = 0;
var iChunkStep = 15;
var iChunkDelay = 10;

var sMenuPos = "below";   // values: "right", "below"
var sMenuStyle = "down";	// values: "down", "across", "diagonal"

leftX = 0;
rightX = 0;
var topY = 0;
var bottomY = 0;
	
// ----------------------------------------------------------------
//  hide all displayed menus on a mouseclick
// ----------------------------------------------------------------
function hideMenu()
{
    if(window.event.srcElement != null)
	{
		var eSrc = window.event.srcElement;

		if(eSrc.className.indexOf("clsLocMnuItem") != -1)
			if(eSrc.className.indexOf("002") != -1 && sOpenTier1 != "")
			{
				document.all[sOpenTier1].style.visibility = "hidden";
				sOpenTier1 = "";
				if(sOpenTier2 != "")
				{
					document.all[sOpenTier2].style.visibility = "hidden";
					sOpenTier2 = "";
				}
				if(sOpenTier3 != "")
				{
					document.all[sOpenTier3].style.visibility = "hidden";
					sOpenTier3 = "";
				}					
			}
			else if(eSrc.className.indexOf("003") != -1 && sOpenTier2 != "")
			{
				document.all[sOpenTier2].style.visibility = "hidden";
				sOpenTier2 = "";
				if(sOpenTier3 != "")
				{
					document.all[sOpenTier3].style.visibility = "hidden";
					sOpenTier3 = "";
				}					
			}
			else if(eSrc.className.indexOf("004") != -1 && sOpenTier3 != "")
			{
				document.all[sOpenTier3].style.visibility = "hidden";
				sOpenTier3 = "";
			}

		if(eSrc.className == "clsGlbMnu")
		{
			if(sOpenMenuID != "" && typeof(document.all[sOpenMenuID]) == "object")
			{
				document.all[sOpenMenuID].style.visibility = "hidden";
				sOpenMenuID = "";
			}

			if(sOpenTier1 != "" && typeof(document.all[sOpenTier1]) == "object")
			{
				document.all[sOpenTier1].style.visibility = "hidden";
				sOpenTier1 = "";
			}

			if(sOpenTier2 != "" && typeof(document.all[sOpenTier2]) == "object")
			{
				document.all[sOpenTier2].style.visibility = "hidden";
				sOpenTier2 = "";
			}

			if(sOpenTier3 != "" && typeof(document.all[sOpenTier3]) == "object")
			{
				document.all[sOpenTier3].style.visibility = "hidden";
				sOpenTier3 = "";
			}
		}
	}

}

// ----------------------------------------------------------------
//   main function, doMenu, that hides any open pop-up menus, determines 
//   which menu DIV to access, and starts its display 
//	---------------------------------------------------------------
function DoMenu()
{
	window.event.cancelBubble = true;
	var eSrc = window.event.srcElement;
	var inMenu = false;
	var cX = event.clientX
	var cY = event.clientY

	if(eSrc.className == "clsLocMnu2" || eSrc.className == "clsLocMnu3" || eSrc.className == "clsLocMnu4")
		return;

	if(eSrc == document.body)
		hideAll();

	// ----------------------------------------------------------
	// If moving from global to local menu, don't close
	// ----------------------------------------------------------
	if((cX > leftX && cX < rightX) && (cY > topY && cY < bottomY))
		inMenu = true;

	if(!inMenu && eSrc.className != "clsGlbMnu" && sOpenMenuID != "")
			hideMenu();
	
	// ----------------------------------------------------------
	// If a global menu (other than that of an open menu) was rolled over
	// ----------------------------------------------------------
	if("clsGlbMnu" == eSrc.className) 
	{
		// ----------------------------------------------------------
		// Cancel default link behavior
		// ----------------------------------------------------------
		window.event.returnValue = false;

		// ----------------------------------------------------------
		// Get Menu associated with the Menu Title and make sure it exists
		// If it does, show the Menu
		// ----------------------------------------------------------
		// Close menu if open
		
		if(sOpenMenuID != "" && typeof(document.all[sOpenMenuID]) == "object")
			hideMenu();

		sOpenMenuID = eSrc.id.replace("glbMenu","divMenu")
		if ("object" == typeof(document.all[sOpenMenuID])) 
		{
			var eMenu = document.all[sOpenMenuID];
			iChunk = iChunkStep;

			// ----------------------------------------------------------
			// Get the offset of the parent TD and TR for menu positioning
			// Also, determine window width
			// ----------------------------------------------------------
			var eSPAN = eSrc;
			var eGlbDIV = eSrc.parentElement.parentElement
			var eBODY = document.body

			
			// ----------------------------------------------------------
			// Set the right and top offsets
			// ----------------------------------------------------------
			if((eSPAN.offsetLeft + eMenu.offsetWidth) > eBODY.clientWidth)
				eMenu.style.left = eBODY.clientWidth - eMenu.offsetWidth;
			else
				eMenu.style.left = eSPAN.offsetLeft+10;

			eMenu.style.top = eGlbDIV.offsetHeight+50;
			
			leftX = eMenu.style.posLeft;
			rightX = leftX + eMenu.offsetWidth;
			
			topY = 0;
			bottomY = eMenu.offsetHeight + eMenu.offsetTop;

			// ----------------------------------------------------------
			// Zero out the Menu size and start the ShowMenu process
			// ----------------------------------------------------------

			eMenu.style.clip = "rect(0 0 0 0)";
			eMenu.style.visibility = "visible";
			return window.setTimeout("ShowMenu(" + eMenu.id + ")", iChunkDelay);
		}
	}
	else if(eSrc.className.indexOf("clsLocMnuItem") != -1)
	{
		// ----------------------------------------------------------
		// Cancel default link behavior
		// ----------------------------------------------------------
		window.event.returnValue = false;

		// ----------------------------------------------------------
		// Get Menu associated with the Menu Title and make sure it exists
		// If it does, show the Menu
		// ----------------------------------------------------------

		hideMenu();

		sOpenSubMenuID = eSrc.id.replace("mnuLocal","divMenu");
		if("object" == typeof(document.all[sOpenSubMenuID])) 
		{
			var eMenu = document.all[sOpenSubMenuID];
			iChunk = iChunkStep;

			// ----------------------------------------------------------
			// Get the offset of the parent TD and TR for menu positioning
			// Also, determine window width
			// ----------------------------------------------------------
			var eANCHOR = eSrc;
			var eDIV = eSrc.parentElement;
			var eBODY = document.body

			
			// ----------------------------------------------------------
			// Set the right and top offsets
			// ----------------------------------------------------------
			if((eDIV.offsetLeft + eMenu.offsetWidth) > eBODY.clientWidth)
				eMenu.style.left = eDIV.offsetLeft - eMenu.offsetWidth;
			else
				eMenu.style.left = eDIV.offsetLeft + eDIV.offsetWidth;

			eMenu.style.top = eDIV.offsetTop + eANCHOR.offsetTop;

			// ----------------------------------------------------------
			// Zero out the Menu size and start the ShowMenu process
			// ----------------------------------------------------------

			if("object" == typeof(document.all[eMenu.id]))
			{
				eMenu.style.clip = "rect(0 0 0 0)";
				eMenu.style.visibility = "visible";
				if(eSrc.className.indexOf("002") != -1)
					sOpenTier1 = eMenu.id;
				else if(eSrc.className.indexOf("003") != -1)
					sOpenTier2 = eMenu.id;
				else if(eSrc.className.indexOf("004") != -1)
					sOpenTier3 = eMenu.id;
				return window.setTimeout("ShowMenu(" + eMenu.id + ")", iChunkDelay);
			}
		}
	}

}

// ----------------------------------------------------------
// Function which returns the appropriate menu diplay animation
// ----------------------------------------------------------
function GetShowStyle()
{
	if ("down" == sMenuStyle)
		return "rect(0 100% " + iChunk + "% 0)";
	if ("across" == sMenuStyle)
		return "rect(0 " + iChunk + "% 100% 0)";
	if ("diagonal" == sMenuStyle)
		return "rect(0 " + iChunk + "% " + iChunk + "% 0)";
	else
		return "rect(0 100% " + iChunk + "% 0)";
}

// ----------------------------------------------------------
// Function which incrementally displays Menu in appropriate style
// ----------------------------------------------------------
function ShowMenu(eMenu)
{
	var sID = eMenu.id;

	eMenu.style.clip = GetShowStyle();
	if (100 >= iChunk)
		window.setTimeout("ShowMenu(" + eMenu.id + ")", iChunkDelay);

	iChunk += iChunkStep;
}

function hideAll()
{
	if(sOpenMenuID != "" && typeof(document.all[sOpenMenuID]) == "object")
	{
		document.all[sOpenMenuID].style.visibility = "hidden";
		sOpenMenuID = "";
	}

	if(sOpenTier1 != "" && typeof(document.all[sOpenTier1]) == "object")
	{
		document.all[sOpenTier1].style.visibility = "hidden";
		sOpenTier1 = "";
	}

	if(sOpenTier2 != "" && typeof(document.all[sOpenTier2]) == "object")
	{
		document.all[sOpenTier2].style.visibility = "hidden";
		sOpenTier2 = "";
	}

	if(sOpenTier3 != "" && typeof(document.all[sOpenTier3]) == "object")
	{
		document.all[sOpenTier3].style.visibility = "hidden";
		sOpenTier3 = "";
	}
}
// ----------------------------------------------------------
// Global document event handlers
// ----------------------------------------------------------
document.onmouseover = DoMenu;
document.onclick = hideAll;
window.onresize = hideMenu;
window.onload = hideMenu;
