
var tryClosePause = 1000;
var currentMenuItem;

function showNavLevel2(whichMenu) {

	var tableToShow = xGetElementById("navMenu" + whichMenu);
	//
	// set all child tabs to Off state
	var myParent = xGetElementById("navLevel2Container");
	var navLevel2Tabs = xGetElementsByClassName("navLevel2Tab", myParent);
	for (var i = 0; i < navLevel2Tabs.length; i++) {
		offState(navLevel2Tabs[i]);
	}
	//
	// display menu
	if (tableToShow) {
		tableToShow.style.display = "block";

		var activeLevel1Tab = xGetElementById("navTab" + whichMenu);
		var xPosition = xPageX(activeLevel1Tab);
		xWidth(tableToShow, Math.max(xWidth(tableToShow),xWidth(activeLevel1Tab)));

		if (xPosition < 0) {
			xLeft(tableToShow,0);
		} else if((xPosition + xWidth(tableToShow)) > xClientWidth()) {
			xLeft(tableToShow,(xClientWidth() - xWidth(tableToShow)));
		} else {
			xLeft(tableToShow,xPosition);
		}

		xTop(tableToShow, (xPageY(activeLevel1Tab) + xHeight(activeLevel1Tab) + 1));
		showShim(tableToShow,'DivShimLevel2');
	}
}

function hideLevel2All() {
	var myParent = xGetElementById("navLevel2Container");
	var navLevel2Menus = xGetElementsByClassName("navLevel2Menu", myParent);
	for (var i = 0; i < navLevel2Menus.length; i++) {
		navLevel2Menus[i].style.display = "none";
	}
	hideShim('DivShimLevel2');
	hideShim('DivShimLevel3');
}


function showNavLevel3(whichMenu) {
}

function setCurrentMenuItem(ele) {
	currentMenuItem = ele;
}

function hideNavLevel3(whichMenu) {
}

var tmpMenuItem;

function tryClose(menuItem) {
	tmpMenuItem = menuItem;
	setTimeout("closeIt(tmpMenuItem)", tryClosePause);
}

function closeIt(menuItem) {
	if (!currentMenuItem) {
		menuItem.style.display = "none";
		//
		// Find Level 1 parent & set to off-state
		var itemName = xName(menuItem);
		var splitResult = itemName.split('-');
		var level1Tab = xGetElementById('navTab-' + splitResult[1]);
		offState(level1Tab)
		//
		// if this is a Level 2, close Level 3 menus
		if (splitResult.length == 2) {
			hideLevel3All();
			hideShim('DivShimLevel2');
		//
		// if it is a level 3, close Level 2 parent menu
		} else if (splitResult.length == 3) {
			xGetElementById('navMenu-' + splitResult[1]).style.display = "none";
			hideShim('DivShimLevel3');
			hideShim('DivShimLevel2');
		}
	}
}

function onState(ele) {
	if (ele.className.indexOf("Tab") > -1) {
		ele.className += "-on";
	}
}

function offState(ele) {
	if (ele.className.indexOf("Tab") > -1) {
		ele.className = ele.className.replace("-on", "");
	}
}

function level1MouseOverHandler(thisTab) {

	 

	var whichItem = thisTab.id.substring(thisTab.id.indexOf("-"), thisTab.id.length);
	//
	// set other level 1's to off-state
	var siblingTabs = xGetElementsByClassName("navLevel1Tab", xGetElementById('navLevel1Container'));
	for (var i = 0; i < siblingTabs.length; i++) {
		offState(siblingTabs[i]);
		//
		// close Level 2 Menus
		if (xGetElementById('navMenu-' + ((xName(siblingTabs[i])).split('-'))[1])) {
			xGetElementById('navMenu-' + ((xName(siblingTabs[i])).split('-'))[1]).style.display = "none";
		}
	}
	onState(thisTab);
	setCurrentMenuItem(thisTab);
	hideLevel3All();
	hideLevel2All();
	showNavLevel2(whichItem);
}


function level1MouseOutHandler(thisTab) {
	var whichItem = thisTab.id.substring(thisTab.id.indexOf("-"), thisTab.id.length);
	currentMenuItem = null;
//	offState(thisTab);
	tryClose(xGetElementById('navMenu' + whichItem));
}


function level2MouseOverHandler(thisTab) {
	var whichItem = thisTab.id.substring(thisTab.id.indexOf("-"), thisTab.id.length);
	setCurrentMenuItem(thisTab);
	//
	// switch sibling level 2's to off-state
	var splitResult = whichItem.split('-');
	var parentMenu = xGetElementById('navMenu-' + splitResult[1]);
	var siblingTabs = xGetElementsByClassName("navLevel2Tab", parentMenu);
	for (var i = 0; i < siblingTabs.length; i++) {
		offState(siblingTabs[i]);
	}
	onState(thisTab);
	showNavLevel3(whichItem);
}


function level2MouseOutHandler(thisTab) {
	var whichItem = thisTab.id.substring(thisTab.id.indexOf("-"), thisTab.id.length);
	var thisTab = xGetElementById('navTab' + whichItem);
	currentMenuItem = null;
//	offState(thisTab);
	//
	// parse out level 2 menu index & try to close that menu
	var splitResult = whichItem.split('-');
	tryClose(xGetElementById('navMenu-' + splitResult[1]));
}


function level3MouseOverHandler(whichItem) {
	var thisTab = xGetElementById('navTab' + whichItem);
	onState(thisTab);
	setCurrentMenuItem(thisTab);
}


function level3MouseOutHandler(whichItem) {
	var thisTab = xGetElementById('navTab' + whichItem);
	currentMenuItem = null;
	offState(thisTab);
	//
	// parse out level 3 menu index & try to close that menu
	var splitResult = whichItem.split('-');
	tryClose(xGetElementById('navMenu-' + splitResult[1] + '-' + splitResult[2]));
}

function hideLevel3All() {
}

function showShim(DivRef,shimName) {
	var bName = navigator.appName;
	var bVer = navigator.appVersion;
	var bVerFloat = parseFloat(bVer.substring((bVer.indexOf('MSIE')+5),bVer.length));

	if (bName == "Microsoft Internet Explorer") {
		if (bVerFloat < 6) {
			if (xGetElementById("criteriaTable")) {
				var parentTable = xGetElementById("criteriaTable");
				var dropDowns = xGetElementsByTagName("select", parentTable);
				for (var i = 0; i < dropDowns.length; i++) {
					xHide(dropDowns[i]);
				}
			}
		} else {
			var IfrRef = xGetElementById(shimName);
			xWidth(IfrRef, xWidth(DivRef));
			xHeight(IfrRef, xHeight(DivRef));
			xLeft(IfrRef, xLeft(DivRef));
			xTop(IfrRef, xTop(DivRef));
			IfrRef.style.zIndex = DivRef.currentStyle.zIndex - 1;
			IfrRef.style.display = "block";
		}
	}
}

function hideShim(shimName) {
	var bName = navigator.appName;
	var bVer = navigator.appVersion;
	var bVerFloat = parseFloat(bVer.substring((bVer.indexOf('MSIE')+5),bVer.length));

	if (bName == "Microsoft Internet Explorer") {
		if (bVerFloat < 6) {
			if (xGetElementById("criteriaTable")) {
				var parentTable = xGetElementById("criteriaTable");
				var dropDowns = xGetElementsByTagName("select", parentTable);
				for (var i = 0; i < dropDowns.length; i++) {
					xShow(dropDowns[i]);
				}
			}
		} else {
			var IfrRef = xGetElementById(shimName);
			IfrRef.style.display = "none";
		}
	}
}
