// HANDLE THE LEFT MENU -----------------------------------------------------

addOnLoad("setMenu('nav_level_2')");
addOnLoad("setMenu('nav_level_3')");
addOnLoad("setMenu('nav_level_5')");
addOnLoad("setMenu('nav_level_6')");
addOnLoad("setMenu('nav_more')");
addOnLoad("setMenu('nav_extra')");

var startHeight = 0;
var goalHeight = 0;
var menuQueue = "";
var animOut = 0;
var animIn = 0;
var IVSpeed = 20;
var acc = 0;
if( userBrowser.isFF ) { var speed = 25 } else { var speed = 15 }
var menuItems = "";
var eMenuItems = new Array();
var eMenuItemsSHeight = new Array();
var eMenuItemsGHeight = new Array();
var menuID = "nav_level_2";

function setMenu(menuElementId) {

	menuID = menuElementId;
	if( document.getElementById(menuID) ) {
		
	var menuItems = document.getElementById(menuID).getElementsByTagName("LI");
	for( i=0 ; i < menuItems.length ; ++i ) {
		if( menuItems[i].getElementsByTagName("UL")[0]+"" != "undefined" && menuItems[i].getElementsByTagName("UL")[0]+"" != "null" ) {
		
			if( menuItems[i].className == "extended" ) {
				if (userBrowser.isFF) {
					
					ulElems = menuItems[i].getElementsByTagName("UL");
					liElems = menuItems[i].getElementsByTagName("LI");
					
					//offsetElements = (ulElems[0].offsetHeight * ulElems.length) + (liElems[0].offsetHeight * liElems.length);
					offsetElements = menuItems[i].getElementsByTagName("UL")[0].scrollHeight;
				}
				else {
					offsetElements = menuItems[i].getElementsByTagName("UL")[0].scrollHeight;
				}
				menuItems[i].goalHeight = offsetElements + 15;
				menuItems[i].style.height = (offsetElements + 15) + "px";
				menuItems[i].startHeight  = 15;
			}	
			else {
				menuItems[i].goalHeight =  menuItems[i].scrollHeight*1;
				menuItems[i].startHeight = menuItems[i].offsetHeight*1;
			}

			menuItems[i].style.overflow = "hidden";
			menuItems[i].getElementsByTagName("UL")[0].style.display = "block";			
			menuItems[i].id = menuElementId + "eMenuItem_" + i;
			
			menuItems[i].getElementsByTagName("STRONG")[0].menuContainerId = menuElementId;
			//menuItems[i].getElementsByTagName("STRONG")[0].onclick = toggleMenu;
		}
	}
	
	}
}

function closeAllMenus() {
	var menuItems = document.getElementById(menuID).getElementsByTagName("LI");
	for( i=0; i<menuItems.length; ++i ) {
		if( menuItems[i].className == "extended" ) {
				menuItems[i].className = "";
				animIn = setInterval("animMenuIn('" + menuItems[i].id + "', 0)", IVSpeed);					
				break;
		}
	}
}

function showSubMenu() {
	if (!this.parentNode.className.match('expanded')) {
		this.parentNode.className += ' expanded';
	} else {
		if (!this.parentNode.className.match('currentmenu')) {
			this.parentNode.className = this.parentNode.className.replace(/[ ]?expanded/, '');
		}
	}
}

// Disabled
/*
function toggleMenu() {
	if (this.menuContainerId) {
		menuID = this.menuContainerId;
	}
	if( menuQueue == "" ) {
		menuItem = this.parentNode;
	}
	if( animIn == 0 && animOut == 0 ) {
		menuQueue = "";
		//var menuItem = document.getElementById(this.parentNode.id);
		if( menuItem.className == "extended" ) {
			menuItem.className = "";
			animIn = setInterval("animMenuIn('" + menuItem.id + "', 0)", IVSpeed);		
		} else {
			closeAllMenus();
			if( animIn == 0 && animOut == 0 ) {
				menuItem.className = "extended";
				menuItem.style.height = menuItem.startHeight + "px";
				animMenuOut(menuItem.id, 1);
			} else {
				menuQueue = menuItem;			
			}
		}
	}
	else {
		menuQueue = menuItem;
	}
}
*/

function animMenuOut(menuItem, isStart) {
	menuItem = document.getElementById(menuItem);
	if( isStart == 1 ) {
		currentHeight = menuItem.startHeight;
	} else {
		currentHeight = (menuItem.style.height).substring(0, (menuItem.style.height).length-2) * 1;
	}
	if( currentHeight >= ( menuItem.goalHeight - (speed-1) ) ) {
		menuItem.style.height = menuItem.goalHeight + "px";
		animOut = clearInterval(animOut);
		animOut = 0;
		acc = 0;
		if( menuQueue != "" ) { toggleMenu(menuQueue) }
	} else {
		//if( ( menuItem.goalHeight - currentHeight ) <= 20 && acc+1 < speed ) { acc += 1 }
		menuItem.style.height = (currentHeight + (speed-acc)) + "px";
		if( isStart == 1 ) {
			animOut = setInterval("animMenuOut('" + menuItem.id + "', 0)", IVSpeed);			
		}
	}
}

function animMenuIn(menuItem, isStart) {
	menuItem = document.getElementById(menuItem);
	if( isStart == 1 ) {
		currentHeight = menuItem.startHeight;
	} else {
		currentHeight = (menuItem.style.height).substring(0, (menuItem.style.height).length-2) * 1;
	}
	if( currentHeight <= ( menuItem.startHeight + (speed-1) ) ) {
		menuItem.style.height = menuItem.startHeight + "px";				
		animIn = clearInterval(animIn);
		animIn = 0;
		acc = 0;
		if( menuQueue != "" ) {
			toggleMenu(menuQueue);
		}
	} else {
		//if( ( menuItem.startHeight - currentHeight ) >= 20 && acc+1 < speed ) { acc += 1 }
		menuItem.style.height = (currentHeight - (speed-acc)) + "px";
	}
}


// Toggle treemenu container
addOnLoad("initTreeMenuTabs('treeMenu_2', 'nav_level_2')");
addOnLoad("initTreeMenuTabs('treeMenu_3', 'nav_level_3')");
addOnLoad("initTreeMenuTabs('treeMenu_5', 'nav_level_5')");
addOnLoad("initTreeMenuTabs('treeMenu_6', 'nav_level_6')");
addOnLoad("initTreeMenuTabs('treeMenu_more', 'nav_more')");
addOnLoad("initTreeMenuTabs('treeMenu_extra', 'nav_extra')");
var selectedTabId	= '';
var selectedMenuId	= '';

function initTreeMenuTabs (triggerId, containerId) {

	if (!document.getElementById( triggerId ) || !document.getElementById( containerId )) {
		return;
	}
	treeMenuTab				= document.getElementById( triggerId );
	menuContainer			= document.getElementById( containerId );
	treeMenuTab.containerId	= containerId;
	menuContainer.triggerId = triggerId;
	
	if (treeMenuTab.className == "dim" || treeMenuTab.className == "on") {
		selectedTabId  = triggerId;
		selectedMenuId = containerId;
	}
	
	if ( selectedMenuId != containerId ) {
		document.getElementById(containerId).style.display = 'none';
	}

	// Apply onclick event function to menu trigger
	treeMenuTab.onclick = function () {
	
		if ( selectedMenuId != this.containerId ) {
			document.getElementById( selectedMenuId ).style.display = 'none';
		}
		
		menuToOpen = document.getElementById( this.containerId );
		menuToOpen.className     = '';
		menuToOpen.style.display = 'block';
		selectedMenuId           = this.containerId;
		hoverMenuTab(this, 'select');
		
		return false;
	}
	
	// Apply hover events to menu trigger
	treeMenuTab.onmouseover = function () {
		hoverMenuTab(this, 'in');
	}
	treeMenuTab.onmouseout = function () {
		hoverMenuTab(this, 'out');
	}


	// Apply onclick event function to menu trigger
	menuContainer.onclick = function () {
		hoverMenuTab(document.getElementById(this.triggerId), 'activate');
		//return false;
	}
	// Apply hover events to menu container
	menuContainer.onmouseover = function () {
		hoverMenuTab( document.getElementById(this.triggerId), 'in' );
	}
	menuContainer.onmouseout = function () {
		hoverMenuTab( document.getElementById(this.triggerId), 'out' );
	}
}

// Handler for hover in/out for menu tabs
// css class dim = gray
// css clsas on  = black
// no classname  = white
function hoverMenuTab (tabObj, mAction) {

	if ( mAction == 'in' ) {
		tabObj.falbackClassName = tabObj.className;
		tabObj.className = "on";
	}
	else if ( mAction == 'out' ) {
		tabObj.className = tabObj.falbackClassName;
	}
	else if ( mAction == 'select' ) {
		tabObj.falbackClassName = "dim";
		tabObj.className = "dim";
		
		if (selectedTabId != tabObj.id) {
			document.getElementById( selectedTabId ).className = "";
			resetMenus (selectedTabId);
		}
		selectedTabId = tabObj.id;
	}
	else if ( mAction == 'activate' ) {
		tabObj.falbackClassName = "on";
		tabObj.className = "on";
		
		if (selectedTabId != tabObj.id) {
			document.getElementById( selectedTabId ).className = "";
		}
		selectedTabId = tabObj.id;	
	}
	
}

function resetMenus ( tabId ) {
	tabObj = document.getElementById(tabId);
	menuID = tabObj.containerId;
	closeAllMenus();
}
