if(!_isIE)
    var _isIE = navigator.appName == "Microsoft Internet Explorer";
		
var DOC_WIDTH = 922;

var sideAreaWidth = 0;
function repositionMegaMenu()
{
	var newW = document.documentElement.offsetWidth;
	var megaNav = document.getElementById("mainNav");
	sideAreaWidth = (newW - DOC_WIDTH) / 2;
	megaNav.style.left = sideAreaWidth + "px";
	sideAreaWidth += 200;
}

var currentSubMenuDiv = null;
var currentTopMenuSpan = null;
var currentMenuLimits = [];
var hideProcessTimerID = 0;
var isUnrestrictDimensions = false;

function showMegaMenu(ele, eleID, unrestrictDimensions)
{
	if(currentSubMenuDiv != null && currentSubMenuDiv.id != eleID)
	{
		clearTimeout(hideProcessTimerID);
		hideMegaMenu(); //sets currentSubMenuDiv=null && hideProcessTimerID=0
	}
	
	//do work only if it is not a mouseOver of the same menu item
	if(currentSubMenuDiv == null)// || currentSubMenuDiv.id != eleID)
	{
		isUnrestrictDimensions = unrestrictDimensions;
		//these vars may need change
		var bodyWidth = DOC_WIDTH;//document.getElementById("wrapper").offsetWidth;
		sideAreaWidth = (document.documentElement.offsetWidth - bodyWidth) / 2;
		var subDivBorderW = 0;
		var MegaMenuSubContainerDivPadding = 5;
		var extraSideAreaForLogo = 480;
			
		var subDiv = document.getElementById(eleID);
		//var columnDivs = subDiv.getElementsByTagName("DIV");
		var columnDivs = subDiv.childNodes;
		currentSubMenuDiv = subDiv;
		currentTopMenuSpan = ele;
	
		var linkPageCoors = gloGetPos(ele);
		var left = linkPageCoors[0];
		var top = linkPageCoors[1] + ele.offsetHeight;
		
		//set tab look
		//[ele].setStyle(["backgroundColor"],["white"]);
		//show div so we can get its display width
		subDiv.style.display = "block";

		if (unrestrictDimensions)
		{
			//columnDivs[i].className = "MegaMenuSubContUnrestirctedDiv";
			for(var i = 0; i < columnDivs.length; i++)
			{
				if(IsDiv(columnDivs[i]))
				{
					[columnDivs[i]].setStyle(["width", "float"], ["auto", "none"]);
				}
			}
			//if(HowDoI_MM_Accordion.getCurrentPanelIndex() == -1 && typeof(MM_HowDoI_Default_Open) != "undefined")
				//	HowDoI_MM_Accordion.openPanel(MM_HowDoI_Default_Open);
		}
		
		var subPos = gloGetPos(subDiv);
		
		//set the left position further left if it will go outside of the page
		//alert(left);
		if(linkPageCoors[0] + subDiv.offsetWidth > bodyWidth)
			left = (left + ele.offsetWidth + subDivBorderW) - subDiv.offsetWidth;
		//alert(left);	
		if(left < sideAreaWidth + extraSideAreaForLogo)
			left = sideAreaWidth + extraSideAreaForLogo ;
		
		//set the mega menu position
		[subDiv].setStyle(["left", "top"],[left+"px", top+"px"]);
		
		/*if(left == ele.offsetLeft)
			subDiv.className = "MegaMenuSubContainer curve_tr";
		else if (subDiv.offsetLeft + subDiv.offsetWidth == ele.offsetLeft + ele.offsetWidth)
			subDiv.className = "MegaMenuSubContainer curve_tl";
		else
			subDiv.className = "MegaMenuSubContainer curve_tr curve_tl";*/
		
		/* **********************fix div height************** */
		if(!unrestrictDimensions)
		{
			var newDivHeight = 0;
			for(var i = 0; i < columnDivs.length; i++)
			{
				if(IsDiv(columnDivs[i]) && columnDivs[i].offsetHeight > newDivHeight)
				{
					newDivHeight = columnDivs[i].offsetHeight;
				}
			}
			newDivHeight -= (MegaMenuSubContainerDivPadding*2);
			for(var i = 0; i < columnDivs.length; i++)
			{
				if(IsDiv(columnDivs[i]))
					columnDivs[i].style.height = newDivHeight + "px";				
			}
		}
		/* **********************END fix div height************** */
		
		//get the mega menu page position to put in currentMenuLimits
		setMenuLimits();
		var nosubclass = subDiv.innerHTML == "" ? "nosub" : "";
		currentTopMenuSpan.className = "MegaMenuTop MegaMenuHover " + nosubclass;
		
		setEvent(document.body, "mousemove", isMouseInMenu);
	}
}

function setMenuLimits()
{
		//set the limits for the mouseMovement to check for mouse exiting the menu area
		var tmphtml = trim(currentSubMenuDiv.innerHTML);
		var linkPageCoors = gloGetPos(currentTopMenuSpan);
		//alert(currentTopMenuSpan);
		//alert(document.documentElement.scrollTop);
		if(tmphtml != "")
		{
			var subDivCoors = gloGetPos(currentSubMenuDiv);
			currentMenuLimits = [subDivCoors[0], linkPageCoors[1], subDivCoors[0] + currentSubMenuDiv.offsetWidth, subDivCoors[1] + currentSubMenuDiv.offsetHeight];
		}
		else
		{
			currentSubMenuDiv.style.display = "none";
			currentMenuLimits = [linkPageCoors[0], linkPageCoors[1], linkPageCoors[0] + currentTopMenuSpan.offsetWidth, linkPageCoors[1] + currentTopMenuSpan.offsetHeight];
		}
}

function IsDiv(ele)
{
	var ret = false;
	if(ele.tagName)
		ret = ele.tagName.toLowerCase() == "div";
	return ret;
}

function trim (str) {
	str = str.replace(/^\s+/, '');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;
}


function isMouseInMenu(e)
{
	if(currentSubMenuDiv != null)
	{
		if(isUnrestrictDimensions)
			setMenuLimits();
		if(!e) var e = window.event;
		var corrArr = getMouseCoors(e);
		var x = corrArr[0];
		var y = corrArr[1];
		var outOfMenu = (currentMenuLimits[0] > x || currentMenuLimits[2] < x || currentMenuLimits[1] > y || currentMenuLimits[3] < y);
		if(hideProcessTimerID == 0 && outOfMenu)
		{
			hideProcessTimerID = setTimeout("hideMegaMenu();", 500);
			//alert(corrArr + " " + currentMenuLimits);
		}
		else if(hideProcessTimerID != 0 && !outOfMenu)
		{
			clearTimeout(hideProcessTimerID);
			hideProcessTimerID = 0;
		}
	}
	/*else
		alert('move');*/
}

function hideMegaMenu()
{
	hideProcessTimerID = 0;
	if(currentSubMenuDiv != null)
	{
		//intervalID = setInterval(decreaseSize, 50);
		currentSubMenuDiv.style.display = 'none';
		//[currentTopMenuSpan].setStyle(["backgroundColor"], ["transparent"]);
		currentTopMenuSpan.className = "MegaMenuTop";
		currentSubMenuDiv = null;
		removeEvent(document.body, "mousemove", isMouseInMenu);
	}
}

function getMouseCoors(e)
{
	var ret;
	if(_isIE)
		ret = [e.clientX + document.body.scrollLeft, e.clientY + document.body.scrollTop]
	else
		ret = [e.pageX, e.pageY];
	return ret;
}

function gloGetPos(obj)
{
	var curLeft = 0;
	var curTop = 0;
	if(obj.offsetParent)
	{
		do
		{
			curLeft += obj.offsetLeft;
			curTop += obj.offsetTop;
		}while(obj = obj.offsetParent);
	}
	if(_isIE)
	{
		curTop -= document.documentElement.scrollTop;
	}
	return [curLeft, curTop];
}

	
function removeEvent(ele, eventName, fnc)
{
	if(_isIE)
		ele.detachEvent("on" + eventName, fnc);
	else
		ele.removeEventListener(eventName, fnc, false);
}
function setEvent(ele, eventName, fnc) {
    if (_isIE) {
        ele.attachEvent("on" + eventName, fnc);
        //eval("ele.on" + eventName + "=fnc");
    }
    else
        ele.addEventListener(eventName, fnc, false);
}

if(!Array.setStyle)
	Array.prototype.setStyle = function(nameArr, valueArr)
	{
		if(nameArr.length == valueArr.length)
		{
		  var valString;
			for(var e = 0; e < this.length; e++)
				for(var i = 0; i < nameArr.length; i++)
				{
					//alert(valueArr[i]);
					valString = valueArr[i];
				  if(typeof(valString) == "string")
				    valString = '"' + valString + '"';
					eval('this[' + e + '].style.' + nameArr[i] + '=' + valString + ';');
			  }
		}
	}

	
	
/*var tmpi = 10;
var intervalID;
var tmpHeight;
var tmpHTML;
function decreaseSize()
{
	if(tmpi == 10)
	{
		tmpHeight = currentSubMenuDiv.clientHeight;
		//tmpHTML = currentSubMenuDiv.innerHTML;
		//currentSubMenuDiv.innerHTML = "";
	}
	if(tmpi >= 0)
		currentSubMenuDiv.style.height = (currentSubMenuDiv.clientHeight * (tmpi--/10)) + "px";
	else
	{
		tmpi = 10;
		clearInterval(intervalID);
		currentSubMenuDiv.style.display = 'none';
		currentSubMenuDiv.style.height = tmpHeight + "px";
		//currentSubMenuDiv.innerHTML = tmpHTML;
		currentSubMenuDiv = null;
	}
}*/



