/**********************************************************************
   Page load
 *********************************************************************/

function loadNav() {
	setTimeout('initTopnav()', 500);
	setTimeout('initSidenav()', 500);
}

/**********************************************************************
   Navigation functionality
 *********************************************************************/

//	Set up nav items: initNavItem(<section li id>, <sub section li id>, <inset from left>, <inset from top of relative container div>);
function initSidenav() {
	initNavItem( 'nav2Item1', 'nav2Item1Tier2', 50, 193);
	initNavItem( 'nav2Item2', 'nav2Item2Tier2', 50, 242);
}

//	Set up nav items: initNavItem(<section li id>, <sub section li id>, <inset from left>, <inset from top of relative container div>);
function initTopnav() {
	initNavItem('mainNavItem1', 'mainNavItem1Tier2', null, 26);
	initNavItem('mainNavItem2', 'mainNavItem2Tier2', null, 26);
	initNavItem('mainNavItem3', 'mainNavItem3Tier2', null, 26);
	initNavItem('mainNavItem4', 'mainNavItem4Tier2', null, 26);
	initNavItem('mainNavItem5', 'mainNavItem5Tier2', null, 26);
}

//	initNavItem(<section li id>, <sub section li id>, <inset from left>, <inset from top of relative container div>);
function initNavItem(navItemId, menuId, insetLeft, insetTop) {
	var navItem = document.getElementById(navItemId);
	var menu = document.getElementById(menuId);
	
	if (navItem == null || menu == null) return;
	
	// add event handlers to topnav item
	navItem.menu = menu;
	navItem.onmouseover = showNavTier2;
	navItem.onmouseout = hideNavTier2;
	
	// position menu
	if (insetLeft) {
		menu.style.left = insetLeft + 'px';
	}
	else {
		menu.style.left = navItem.offsetLeft + 'px';
	}
	
	if (insetTop) {
		menu.style.top = insetTop + 'px';
	}

}

var currentMenu = null;
var hideMenuTimeout = null;

function showNavTier2(menu) {
	if (hideMenuTimeout) {
		clearTimeout(hideMenuTimeout);
		if (currentMenu && currentMenu != this.menu) {
			delayedHideNavTier2();
		}
	}
	this.menu.style.visibility = 'visible';
	currentMenu = this.menu;
}

function hideNavTier2() {
   	hideMenuTimeout = setTimeout('delayedHideNavTier2()', 400);
}

function delayedHideNavTier2() {
	if (currentMenu) {
		currentMenu.style.visibility = 'hidden';
		currentMenu = null;
	}
}

/******************************************************************************
	Adding event listeners
 *****************************************************************************/

function addEventListenerToElement(element, eventType, functionValue, capture) {
	if (element.addEventListener) element.addEventListener(eventType, functionValue, capture);
	else if (element.attachEvent) element.attachEvent("on" + eventType, functionValue);
	else {
		if (!element['on' + eventType]) {
			element['on' + eventType] = function(e) {
				if (!e) e = event;
				var functionArray = eval('this.' + e.type + 'Handler');
				for (var index = 0; index < functionArray.length; index++) {
				   	if (functionArray[index] != null) {
						functionArray[index](e);
				   	}
				}
			};
		 	element[eventType + 'Handler'] = new Array();
		 // element[eventType + 'Handler'].element = this;
		}
		var index = 0;
		while (element[eventType + 'Handler'][index] != null) {
		 index++;
		}
		element[eventType + 'Handler'][index] = functionValue;
	}
}

function addEventListenerToDescendants(element, eventType, functionValue, capture) {
	addEventListenerToElement(element, eventType, functionValue, capture);
	var childNodes = element.childNodes;
	for (var childIndex = 0; childIndex < childNodes.length; childIndex++) {
		var childNode = childNodes[childIndex]
		if (childNode.nodeType == 1) {
			addEventListenerToDescendants(childNode, eventType, functionValue, capture);
		}
	}
}
