function newPict(arg) {
        if (document.images) {
            rslt = new Image();
            rslt.src = arg;
            return rslt;
        }
    }
	var leftMenuCount = 9;
	var leftMenuLines = 7;
	var topMenuArray = new Array('images/interface/top-left-off.gif','images/interface/top-left-off-over.gif','images/interface/top-left-on.gif','images/interface/top-left-on-over.gif',
	'images/interface/top-middle-off.gif','images/interface/top-middle-off-over.gif','images/interface/top-middle-on.gif','images/interface/top-middle-on-over.gif',
	'images/interface/top-right-off.gif','images/interface/top-right-off-over.gif','images/interface/top-right-on.gif','images/interface/top-right-on-over.gif');
function preloadMenus(){
	if (document.images) {
		//PRELOAD TOP MENU
    	for(x=0;x<topMenuArray.length;x++){
        	eval('preloadTopMenu' + x + '= newPict(topMenuArray[x])');
        }
		//PRELOAD LEFT MENUS
    	for(x=0;x<leftMenuCount;x++){
        	eval('preloadMenu_' + x + '= newPict("images/interface/menu-' + x + '.gif")');
			eval('preloadMenu_' + x + '_over = newPict("images/interface/menu-' + x + '-over.gif")');
        }
		//PRELOAD LEFT MENU LINES
    	for(x=0;x<leftMenuLines;x++){
        	eval('preloadMenuLine_' + x + '= newPict("images/interface/menuLine-' + x + '.gif")');
        }
     }
	 preloadMenu_19 = newPict("images/interface/menu-19.gif");
	 preloadMenu_20 = newPict("images/interface/menu-20.gif");
}
//**********************
// FIND ALL LIs IN MENU AND MODIFY CLASS OF MENU ITEM
//**********************
function formatSideMenu(){
	var mySideMenu = document.getElementById('sideMenu');
	var sideMenuNodes = mySideMenu.childNodes;
	for(var i = 0;i<sideMenuNodes.length;i++){
		var nodeObj = sideMenuNodes.item(i);
		if(nodeObj.tagName == 'LI'){
			myChildCounter = 0;
			findLIsChildren(nodeObj);
			hasSubs(nodeObj); //Menus all levels
			nodeObj.className = 'div0';
		}
	}
	document.getElementById('menu').style.display = 'block';
	
}
//**********************
// FIND CHILDREN LIS
//**********************
function findLIsChildren(whichNode){
	var nodes = whichNode.childNodes;
	for(var i = 0;i<nodes.length;i++){
		var nodeObj = nodes.item(i);
		if(nodeObj.tagName == 'LI'){
			nodeObj.className = 'sideMenuLine' + countParents(nodeObj);
		}
		findLIsChildren(nodeObj);
	}
}
//**********************
// COUNT PARENT LIS
//**********************
function countParents(whichNode){
	var myParentCounter = 0;
	var myParentNode = whichNode.parentNode;
	while(myParentNode.id != 'sideMenu'){
		if(myParentNode.tagName == 'LI'){
			myParentCounter = myParentCounter + 1;
		}
		myParentNode = myParentNode.parentNode;
	}
	return myParentCounter;
}
//**********************
// HAS SUBS
//**********************
function hasSubs(whichNode){
	var nodes = whichNode.childNodes;
	for(var i = 0;i<nodes.length;i++){
		var nodeObj = nodes.item(i);
		if(nodeObj.tagName == 'LI'){
			var ulNodes = nodeObj.getElementsByTagName('ul');
			var divNodes = nodeObj.getElementsByTagName('div')
			var isTopMenuItem = isTopMenu(nodeObj);
			
			
			var myClassName = 'div';
			//HAS SUBS
			if(ulNodes.length > 0){
				myClassName = myClassName + isTopMenuItem  + 'Sub';
			} else {
				myClassName = myClassName + isTopMenuItem;
			}
			//HAS NEXT SIBLING, IF NOT THEN IS LAST
			if(hasNextSiblings(nodeObj) == 0 && isTopMenuItem != 1){
				myClassName = myClassName + 'Last';
			}
			//PARENT IS LAST --> CHANGE LINE BACKGROUND
			if(hasNextSiblings(nodeObj.parentNode.parentNode) == 0){
				nodeObj.className = nodeObj.className + 'Last';
			}
			divNodes.item(0).className = myClassName;
			if(isTopMenuItem != 1 || ulNodes.length > 0){
				divNodes.item(0).style.padding = '0 0 0 20px';
			}
			var offsetBkgColor = countParents(nodeObj) * 10 + countParents(nodeObj) * 20;
			var offsetDiv = (countParents(nodeObj) * 10) -10;
			divNodes.item(0).style.left = offsetDiv + 'px';
			if(isTopMenuItem == 1 && ulNodes.length == 0){
				divNodes.item(0).style.width = (170 - offsetDiv) + 'px';
			} else {
				divNodes.item(0).style.width = (160 - offsetDiv) + 'px';
			}
			
			
			divNodes.item(0).style.backgroundColor = 'rgb(' + offsetBkgColor + ',' + offsetBkgColor + ',' + offsetBkgColor + ')';
		}
		hasSubs(nodeObj);
	}
		
}

function isTopMenu(whichNode){
	var nodeObj = whichNode;
	if(nodeObj.parentNode.parentNode.parentNode.id == 'sideMenu'){
		return 1;
	} else {
		return 2;
	}
}

function hasNextSiblings(whichNode){
	var nodeObj = whichNode;
	var siblingsCounter = 0;
	while (nodeObj.nextSibling){
		if(nodeObj.nextSibling.tagName == 'LI'){
			siblingsCounter = siblingsCounter + 1
		}
		nodeObj = nodeObj.nextSibling;
	}
	return siblingsCounter; 
}
//**********************
//**********************
function goMenu(myUrl, myNode){
	formatSideMenu();
	var nodeObj = document.getElementById(myNode);
	toggleSubsMenu(nodeObj);
	turnOffLIorUL('ul');
	turnOffTopLevelNodes(nodeObj);
	turnOnParentULs(nodeObj);
	turnOnChildULs(nodeObj);
	//BUILD TREE; MODIFY ONLY IF NO CHILDREN EXCEPT TOP MENU SECTION
	var nodes = nodeObj.getElementsByTagName('ul');
	if(nodes.length == 0){
		document.getElementById('menuTree').innerHTML = "";
		format_tree(nodeObj);
	}
	var ieOffset = 0;
	if(document.all){ ieOffset = 3; }
	document.getElementById('menuArrow').style.top = findMenuYPos(nodeObj) - (130 + ieOffset) + "px";
	document.getElementById('menuArrow').style.display = "block";
}

function toggleSubsMenu(whichNode){
	var divNodes = whichNode.getElementsByTagName('div');
	var ulNodes = whichNode.getElementsByTagName('ul');
	if(ulNodes.length > 0){
		divNodes.item(0).className = divNodes.item(0).className + 'Selected';
	}
}
function turnOnParentULs(whichNode){
	var myParentNode = whichNode.parentNode;
	while(myParentNode.id != 'sideMenu'){
		if(myParentNode.tagName == 'UL'){
			myParentNode.style.display = 'block';
		} else if(myParentNode.tagName == 'LI'){
			toggleSubsMenu(myParentNode);
			myParentNode.style.display = 'block';
		}
		myParentNode = myParentNode.parentNode;
	}
}

function turnOffTopLevelNodes(whichNode){
	var nodes = document.getElementById('sideMenu').childNodes;
	for(var i=0;i<nodes.length;i++){
		if(nodes.item(i).tagName == 'LI'){
			
			nodes.item(i).style.display = 'none';
		}
	}
	whichNode.style.display = 'block';
}

function turnOnChildULs(whichNode){
	var nodeObj = whichNode;
	var nodes = nodeObj.getElementsByTagName('ul');
	if(nodes.length > 0){
		nodes.item(0).style.display = 'block';
	}

}
//**********************
function turnOffLIorUL(LIorUL){
	var Nodes = document.getElementById("sideMenu").getElementsByTagName(LIorUL);
	var max = Nodes.length;
	for(var i = 0;i < max;i++) {
		var nodeObj = Nodes.item(i);
		nodeObj.style.display = 'none';
	}
}
//**********************
function format_tree(whichNode){
var myTree = document.getElementById('menuTree').innerHTML;
var myParentNode = whichNode.parentNode;
	if(myParentNode.id != "sideMenu"){
		if(myParentNode.tagName == 'LI'){
			var nodesA = myParentNode.getElementsByTagName('a');
			var nodesDiv = myParentNode.getElementsByTagName('div');
			//----"REPLACE": JUST FOR DEMO ----
			var nodeHTML = nodesDiv.item(0).innerHTML//.replace("","");
			//--------
			var myUrl = nodesA.item(0).getAttribute('href');
			document.getElementById('menuTree').innerHTML = "<a href='" + myUrl + "'>" + nodeHTML + "</a> &gt; " + myTree;
		}
		format_tree(myParentNode);
	}
}



//**************************************************************
function findMenuYPos(obj){
	var curtop = 0; 
	if (obj.offsetParent){ 
		while (obj.offsetParent){ 
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	return curtop;
}

function rolloverTopMenu(whichId){
	var myMenu = document.getElementById(whichId);
	var myLeftMenu = document.getElementById(whichId + "-left");
	var myRightMenu = document.getElementById(whichId + "-right");
	var myClass = myMenu.className;
	myLeftMenu.className = myClass + "LeftOver";
	myRightMenu.className = myClass + "RightOver"; 
}
function rollOutTopMenu(whichId){
	var myMenu = document.getElementById(whichId);
	var myLeftMenu = document.getElementById(whichId + "-left");
	var myRightMenu = document.getElementById(whichId + "-right");
	var myClass = myMenu.className;
	myLeftMenu.className = myClass + "Left";
	myRightMenu.className = myClass + "Right"; 
}
function selectTopMenu(whichId){
var myTDs = document.getElementsByTagName('td');
var max = myTDs.length;
	for(var i = 0;i < max;i++) {
		var nodeObj = myTDs.item(i);
		
		if(nodeObj.id.search("topMenu_") != -1 && nodeObj.id.search(whichId) == -1){
			nodeObj.className = nodeObj.className.replace("On","Off");
		} else if (nodeObj.id.search(whichId) != -1){
			nodeObj.className = nodeObj.className.replace("Off","On");
		}
	}

}