/*---------------------------------------------------------------------
	JavaScript DOM Dynamic Dropdown Menu JS

	REQUIREMENTS:
		Works in conjunction with /assets/css/dropdowns.css
		Utilizes functions found in /assets/js/functions.js
	
	USAGE:
		Make sure function InitMenuDropdowns() is called in the window.onload event 
		
-----------------------------------------------------------------------*/

/*-------------------------------
	general configuration and setup
---------------------------------*/
var sNavImgPath = "/assets/images/skin/cryovation/nav/";
var sTopNavImgPath = "/assets/images/skin/cryovation/topnav/";
var sSectionHeaderImgPath = "/assets/images/skin/cryovation/headers/sectionheaders/";

var sDebugText = "";
//var sSubIndicatorImage = "_arrowright";
var sSubIndicatorImage = "";

var iMenuWidth = 0;
var iMainNavX = 0; 
var iMainNavY = 0; 

//var iFirstLevelWidth = 186;
//var iExtraPaddingVal = 36;

var iFirstLevelWidth = 0;
var iExtraPadding = 0;
var iExtraPaddingVal = 0;

var bFirstLevelCustom = false;
var bUseDiffImgLevels = false;
var bHideCurrentSubs = false;
var bStartedDropdown = false;

var bTopNav = true;
var iTopNavNum = 0;

var aTopNavItems = new Array();
aTopNavItems.push("home");
aTopNavItems.push("about");
aTopNavItems.push("industrial");
aTopNavItems.push("medical");
aTopNavItems.push("specgas");
aTopNavItems.push("gallery");
aTopNavItems.push("contact");
aTopNavItems.push("admin");



/*-------------------------------
	InitMenuDropdowns() - called from window.onload event
---------------------------------*/
var InitMenuDropdowns = function() {
	if (!document.getElementById) return
	InitMenuDropdownLists();
}


/*-------------------------------
	InitMenuDropdownLists()
---------------------------------*/
var InitMenuDropdownLists = function() {
	/*---------------
		parse semantic lists; apply classes/rollover functions via DOM
	---------------*/
	var mainNavRoot = document.getElementById("Nav");
	mainNavRoot.style.marginLeft = '-9000px';
	oMenuShadeContainer = document.createElement("div")
	oMenuShadeContainer.id = 'MenuShadeContainer';
	mainNavRoot.parentNode.appendChild(oMenuShadeContainer);	// append to NavBlock			
	iMenuWidth = mainNavRoot.offsetWidth;
	iMainNavX = GetAbsXPosByNode(mainNavRoot);
	iMainNavY = GetAbsYPosByNode(mainNavRoot);
	var oBodyTag = document.getElementsByTagName('body')[0];
	if (bFirstLevelCustom) {
		if (oBodyTag.id == 'HomePage') {
			iFirstLevelWidth = 191;
			iExtraPaddingVal = 41;
		}
	}
	/*---------------
		now that "Nav" is found, dive down and apply styles and events to semantic list menu items.
	---------------*/
	for (i=0; i < aTopNavItems.length; i++) {
		if (document.getElementById(aTopNavItems[i])) {
			cssClassActions('add',document.getElementById(aTopNavItems[i]),'TopNav');
		}
	}
	InitMenuDropdownListsDive(mainNavRoot.firstChild.firstChild, 0);
}


/*---------------
	Finished Parsing Sitemap
---------------*/
function FinishedParsing() {
	//alert("Finished!");
	var mainNavRoot = document.getElementById("Nav");
	mainNavRoot.style.marginLeft = '0';
	//mainNavRoot.style.visibility = 'visible';
	//var oCurrentTopNavANode;
	//for (i=0; i < aTopNavItems.length; i++) {
	//	SetANodeAsTopNav(aTopNavItems[i], i);
	//}
}


/*-------------------------------
	InitMenuDropdownListsDive()
---------------------------------*/
var InitMenuDropdownListsDive = function(oCurrentNode, iLevel) {
	if (oCurrentNode.nodeName=="UL") {
		if (!cssClassActions('check',oCurrentNode,"SelectedSubs")) {
			cssClassActions('add',oCurrentNode,'MenuListOff');
		}
	}
	if (oCurrentNode.nodeName == "LI") {
		/*	Following onmouseover and onmouseout replace below 2 addEvent() function calls above
			until I can figure out why IE doesnt get correct LI target when attachEvent is used.
				addEvent(oCurrentNode, 'mouseover', MenuListItemOnMouseOver, false);
				addEvent(oCurrentNode, 'mouseout', MenuListItemOnMouseOut, false);
		*/
		oCurrentNode.onmouseover=function() {
			var j = 0;
			for (j=0; j<this.childNodes.length; j++) {
				if (this.childNodes[j].nodeName=="UL") {
					if (this.childNodes[j].className != 'SelectedSubs') {
						
						if (!cssClassActions('check',this.childNodes[j].parentNode.firstChild,"TopNav")) {
							this.childNodes[j].className = 'MenuListOver';
						}
						
						this.childNodes[j].style.top = this.offsetTop + 'px';
						if (iLevel == 0) {
							iExtraPadding = iExtraPaddingVal;
						} else {
							iExtraPadding = 0;
						}
						this.childNodes[j].style.left = this.offsetLeft + iExtraPadding + iMenuWidth + 'px';
						var menuShadeContainerRoot = document.getElementById("MenuShadeContainer");
						var oMenuShade = document.createElement("div");
						var iDist = this.offsetTop - 1000 +  this.childNodes[j].offsetHeight + 30;
						menuShadeContainerRoot.appendChild(oMenuShade);
						oMenuShade.className = 'MenuShade';
						oMenuShade.style.top = iDist + "px";
						oMenuShade.style.left = this.offsetLeft + iExtraPadding + iMenuWidth + 'px';
						this.oMenuShadeRef = oMenuShade;
						menuShadeContainerRoot.style.left = '0px';	
					}
				}
			}
		}
		oCurrentNode.onmouseout=function() {
			var j = 0;
			for (j=0; j<this.childNodes.length; j++) {
				if (this.childNodes[j].nodeName=="UL") {
					if (this.childNodes[j].className != 'SelectedSubs') {
						this.childNodes[j].className = 'MenuListOff';
						var menuShadeContainerRoot = document.getElementById("MenuShadeContainer");
						menuShadeContainerRoot.style.left = '-10000px';
						menuShadeContainerRoot.removeChild(this.oMenuShadeRef);
					}
				}
			}
		}
	}
	if (oCurrentNode.nodeName=="A") {
		if (cssClassActions('check',oCurrentNode,"MenuLink")) {
			addEvent(oCurrentNode, 'mouseover', MenuLinkOnMouseOver, false);
			addEvent(oCurrentNode, 'mouseout', MenuLinkOnMouseOut, false);
		}
		if (cssClassActions('check',oCurrentNode,"NavImg")) {
			addEvent(oCurrentNode, 'mouseover', NavImgOnMouseOver, false);
			addEvent(oCurrentNode, 'mouseout', NavImgOnMouseOut, false);
			if (cssClassActions('check',oCurrentNode,"SelectedNav")) {
				var bHasULSibling = false;
				for (k=0; k < oCurrentNode.parentNode.childNodes.length; k++) {
					if (oCurrentNode.parentNode.childNodes[k].nodeName=="UL") {
						bHasULSibling = true;
					}
				}
				if (bHasULSibling == true) {
					sOn = "_on" + sSubIndicatorImage;
				} else {
					sOn = "_on";
				}
			} else {
				if (cssClassActions('check',oCurrentNode,"SelectedParent")) {
					sOn = "_on" + sSubIndicatorImage;
				} else {
					sOn = "";
				}
			}
			oCurrentNode.iLevel = iLevel;
			if (bUseDiffImgLevels) {
				sLevel = "L" + iLevel + "/";
			} else {
				sLevel = "";
			}
			if (bFirstLevelCustom) {
				if (iLevel == 1) {
					oCurrentNode.style.width = iFirstLevelWidth + 'px';
					oCurrentNode.style.backgroundPosition = '20px 0';
				}
			}
			//	Use letter-spacing image replacement for Win IE 5.0; Use text-indent image replacement for all browsers except Win IE 5.0
			oCurrentNode.style.backgroundRepeat = "no-repeat";
			oCurrentNode.style.letterSpacing = "-1000em";
			oCurrentNode.style.textIndent = "-9000px";
			
			oCurrentNode.style.backgroundImage = "url(" + sNavImgPath + sLevel + oCurrentNode.id + sOn + ".gif)";
			if (cssClassActions('check',oCurrentNode,"TopNav")) {
				oCurrentNode.style.backgroundImage = "url(" + sTopNavImgPath + sLevel + oCurrentNode.id + sOn + ".gif)";
				SetANodeAsTopNav(oCurrentNode, iTopNavNum);
				iTopNavNum += 1;
			}
			
			if (
				(cssClassActions('check',oCurrentNode,"TopNav")) && (cssClassActions('check',oCurrentNode,"SelectedParent"))
				|| (cssClassActions('check',oCurrentNode,"TopNav")) && (cssClassActions('check',oCurrentNode,"SelectedNav"))
			
				) {
				
				//alert(oCurrentNode.id);
				var mainNavRoot = document.getElementById("Nav");
				var oSectionHeader = document.createElement("div");
				oSectionHeader.id = 'SectionHeader';
				oSectionHeader.style.backgroundImage = "url(" + sSectionHeaderImgPath + oCurrentNode.id  + ".gif)";
				oSectionHeader.style.position = 'absolute';
				oSectionHeader.style.width = '200px';
				oSectionHeader.style.height = '18px';
				//oSectionHeader.style.top = '165px';
				oSectionHeader.style.top = '-20px';
				oSectionHeader.style.left = '10px';
				mainNavRoot.parentNode.appendChild(oSectionHeader);
				//
				
								
				
			}
				
		}
	}
	/*---------------
		Gotta deal with XML whitespace in DOM: Recursion
	---------------*/
	if (getFirstChild(oCurrentNode)) {
		InitMenuDropdownListsDive(getFirstChild(oCurrentNode), iLevel + 1);
	}
	if (getNextSibling(oCurrentNode)) {
		InitMenuDropdownListsDive(getNextSibling(oCurrentNode), iLevel);
	}
	if ( !(getFirstChild(oCurrentNode)) && !(getNextSibling(oCurrentNode)) && (iLevel == 1) ) {
		if (bStartedDropdown) {
			FinishedParsing();
		} else {
			bStartedDropdown = true;
		}
	}
}


/*---------------
	Set Node as Top Nav
---------------*/
function SetANodeAsTopNav(oCurrentTopNavANode, i) {
	//alert("Finished!");
	//oCurrentTopNavANode = document.getElementById(sNodeName);
	
	
	
	
	var oBodyTag = document.getElementsByTagName('body')[0];
	if (oBodyTag.id != 'HomePage') {

		oCurrentTopNavANode.style.position = 'absolute';
		
		if (oCurrentTopNavANode.id != "admin") {
			oCurrentTopNavANode.style.width = '80px';
			oCurrentTopNavANode.style.height = '18px';
			oCurrentTopNavANode.style.top = '-180px';
			oCurrentTopNavANode.style.left = (i*90 + 220 - 90)  + 'px';
			oCurrentTopNavANode.style.zindex = 1000;
		} else {
			oCurrentTopNavANode.style.width = '80px';
			oCurrentTopNavANode.style.height = '18px';
			oCurrentTopNavANode.style.top = '-150px';
			oCurrentTopNavANode.style.left = '670px';
		}

	} else {
	
	

		oCurrentTopNavANode.style.position = 'absolute';
		oCurrentTopNavANode.style.width = '80px';
		oCurrentTopNavANode.style.height = '18px';
		oCurrentTopNavANode.style.top = '80px';
		oCurrentTopNavANode.style.left = (i*90 + 200 - 90)  + 'px';
		oCurrentTopNavANode.style.zindex = 1000;

		if (oCurrentTopNavANode.id == "admin") {
			oCurrentTopNavANode.style.top = '120px';
			oCurrentTopNavANode.style.left = '650px';
		}
	
	}
}


/*---------------
	Highlight Parent
---------------*/
function HighlightParents(oCurrentNode) {
	oParentListItem = oCurrentNode.parentNode.parentNode.parentNode;
	for (k=0; k < oParentListItem.childNodes.length; k++) {
		if (oParentListItem.childNodes[k].nodeName=="A") {
			cssClassActions('swap',oParentListItem.childNodes[k],'MenuLink','MenuLinkOver');
			if (cssClassActions('check',oParentListItem.childNodes[k],"NavImg")) {
				if (bUseDiffImgLevels) {
					sLevel = "L"+oParentListItem.childNodes[k].iLevel+"/";
				} else {
					sLevel = "";
				}
				var bHasULSibling = false;
				for (l=0; l < oParentListItem.childNodes[k].parentNode.childNodes.length; l++) {
					if (oParentListItem.childNodes[k].parentNode.childNodes[l].nodeName=="UL") {
						bHasULSibling = true;
					}
				}
				if (cssClassActions('check',oParentListItem.childNodes[k],"TopNav")) {
					sCurNavImgPath = sTopNavImgPath;
				} else {
					sCurNavImgPath = sNavImgPath;
				}
				
				if (bHasULSibling == true) {
					swapCSSBkgdImg(oParentListItem.childNodes[k], sCurNavImgPath + sLevel + oParentListItem.childNodes[k].id + '_on'+sSubIndicatorImage+'.gif');
				} else {
					swapCSSBkgdImg(oParentListItem.childNodes[k], sCurNavImgPath + sLevel + oParentListItem.childNodes[k].id + '_over.gif');
				}

			}
			HighlightParents(oParentListItem.childNodes[k]);
		}
	}
}

function UnHighlightParents(oCurrentNode) {
	oParentListItem = oCurrentNode.parentNode.parentNode.parentNode;
	for (k=0; k < oParentListItem.childNodes.length; k++) {
		if (oParentListItem.childNodes[k].nodeName=="A") {
			cssClassActions('swap',oParentListItem.childNodes[k],'MenuLinkOver','MenuLink');
			if (cssClassActions('check',oParentListItem.childNodes[k],"NavImg")) {
				if (cssClassActions('check',oParentListItem.childNodes[k],"SelectedNav")) {
					sOn = "_on";
				} else {
					sOn = "";
				}
				if (cssClassActions('check',oParentListItem.childNodes[k],"SelectedParent")) {
					sOn = "_on" + sSubIndicatorImage;
				} else {
					sOn = "";
				}
				if (bUseDiffImgLevels) {
					sLevel = "L"+oParentListItem.childNodes[k].iLevel+"/";
				} else {
					sLevel = "";
				}
				if (cssClassActions('check',oParentListItem.childNodes[k],"TopNav")) {
					sCurNavImgPath = sTopNavImgPath;
				} else {
					sCurNavImgPath = sNavImgPath;
				}
				
				
				swapCSSBkgdImg(oParentListItem.childNodes[k], sCurNavImgPath + sLevel + oParentListItem.childNodes[k].id + sOn + '.gif');	
			}
			HighlightParents(oParentListItem.childNodes[k]);
		}
	}
}


/*---------------
	Event Functions
---------------*/
function NavImgOnMouseOver(e) {
	if (bUseDiffImgLevels) {
		sLevel = "L"+TargetObj(e).iLevel+"/";
	} else {
		sLevel = "";
	}
	var bHasULSibling = false;
	for (k=0; k < TargetObj(e).parentNode.childNodes.length; k++) {
		if (TargetObj(e).parentNode.childNodes[k].nodeName=="UL") {
				bHasULSibling = true;
		}
	}
	if (cssClassActions('check',TargetObj(e),"TopNav")) {
		sCurNavImgPath = sTopNavImgPath;
	} else {
		sCurNavImgPath = sNavImgPath;
	}
	if (bHasULSibling == true) {
		swapCSSBkgdImg(TargetObj(e),sCurNavImgPath + sLevel + TargetObj(e).id + '_on' + sSubIndicatorImage + '.gif');
	} else {
		swapCSSBkgdImg(TargetObj(e),sCurNavImgPath + sLevel + TargetObj(e).id + '_over.gif');
	}
}

function NavImgOnMouseOut(e) {
	if (cssClassActions('check',TargetObj(e),"SelectedNav")) {
		var bHasULSibling = false;
		for (k=0; k < TargetObj(e).parentNode.childNodes.length; k++) {
			if (TargetObj(e).parentNode.childNodes[k].nodeName=="UL") {
					bHasULSibling = true;
			}
		}
		if (bHasULSibling == true) {
			sOn = "_on" + sSubIndicatorImage;
		} else {
			sOn = "_on";
		}
	} else {		
		if (cssClassActions('check',TargetObj(e),"SelectedParent")) {
			sOn = "_on" + sSubIndicatorImage;
		} else {
			sOn = "";
		}
	}
	if (bUseDiffImgLevels) {
		sLevel = "L"+TargetObj(e).iLevel+"/";
	} else {
		sLevel = "";
	}
	if (cssClassActions('check',TargetObj(e),"TopNav")) {
		sCurNavImgPath = sTopNavImgPath;
	} else {
		sCurNavImgPath = sNavImgPath;
	}
	
	swapCSSBkgdImg(TargetObj(e), sCurNavImgPath + sLevel + TargetObj(e).id + sOn + '.gif');
}

function MenuLinkOnMouseOver(e) {
	cssClassActions('swap',TargetObj(e),'MenuLink','MenuLinkOver');
	HighlightParents(TargetObj(e));
}

function MenuLinkOnMouseOut(e) {
	cssClassActions('swap',TargetObj(e),'MenuLinkOver','MenuLink');
	UnHighlightParents(TargetObj(e));
}

function MenuListItemOnMouseOver(e) {
	for (k=0; k < TargetObj(e).childNodes.length; k++) {
		if (TargetObj(e).childNodes[k].nodeName=="UL") {
			if (!cssClassActions('check',TargetObj(e).childNodes[k],"SelectedSubs")) {
				cssClassActions('swap',TargetObj(e).childNodes[k],'MenuListOff','MenuListOver');
				TargetObj(e).childNodes[k].style.top = TargetObj(e).offsetTop + 'px';
				TargetObj(e).childNodes[k].style.left = TargetObj(e).offsetLeft + iMenuWidth + 'px';
			}
		}
	}	
}

function MenuListItemOnMouseOut(e) {
	for (k=0; k < TargetObj(e).childNodes.length; k++) {
		if (TargetObj(e).childNodes[k].nodeName=="UL") {
			if (!cssClassActions('check',TargetObj(e).childNodes[k],"SelectedSubs")) {
				cssClassActions('swap',TargetObj(e).childNodes[k],'MenuListOver','MenuListOff');
			}
		}
	}
}


/*---------------
	Add to window.onload event
---------------*/
addEvent(window, 'load', InitMenuDropdowns, false);


/*---------------------------------------------------------------------
	end NSS Dynamic Dropdown Menu JS
-----------------------------------------------------------------------*/

