var current = new Array();
var active = new Array();

function menuClick(objectLI) {
	if( inArray(current,objectLI) != -1 ) return;
	
	var x = getLevel(objectLI)-1;
	if( x<0 ) return;
	
	var objectUL = null;
	var collapseObj = null;
	
	while( current.length>x ) {
		collapseObj = current.pop();
		objectUL = getULObject(collapseObj);
		if( objectUL ) objectUL.style.display = 'none';
	}
	
	objectUL = getULObject(objectLI);
	if( objectUL ) {
		objectUL.style.display = 'block';
		current[current.length] = objectLI;	
	}
}

function addMenuClicks() {
	var navObject = document.getElementById("nav");
	if( !navObject ) return;
	
	var objectUL = null;	
	var liObjects = navObject.getElementsByTagName("li");
	
	for( var i=0; i<liObjects.length; i++ ) {		
		objectUL = getULObject(liObjects[i]);
		if( objectUL ) {
			liObjects[i].onclick = function(){ menuClick(this) };
			if( liObjects[i].className=='active' ) {
				var level = getLevel(liObjects[i])-1;
				active[level] = liObjects[i];
			}			
		}
	}	

	if( active.length>0 ) {
		var activeObject = null;
		while( (activeObject=active.shift()) )
			menuClick(activeObject);
	}
}

function inArray( searchArray, searchValue ) {
	if( searchArray.length > 0 ) {
		for( var i=0; i<searchArray.length; i++ ) {
			if( searchArray[i]==searchValue ) return i;
		}
	}
	return -1;
}

function getLevel(objectLi) {
	if( !objectLi.parentNode || !objectLi.parentNode.parentNode ) return -1;
	
	var level = 1;
	var parent = objectLi;
	while( (parent = parent.parentNode.parentNode) ) {
		if( parent.nodeName == 'DIV' ) break;
		if( !parent.parentNode || !parent.parentNode.parentNode ) return -1;
		level++;
	}
	
	return level;
}

function getULObject(objectLi) {
	if( !objectLi.childNodes ) return null;
	for( var j=0; j<objectLi.childNodes.length; j++) {
		if( objectLi.childNodes[j].nodeName == "UL" )
			return objectLi.childNodes[j];
	}
	return null;
}

window.onload = function () { addMenuClicks(); } 