var contclass = new Array('mlevel1','mlevel2','mlevel3','mlevel4','mlevel5');
var contclasssel = new Array('mlevel1sel','mlevel2sel','mlevel3sel','mlevel4sel','mlevel5sel');


var initHash = new Object();
var menu = new Array();
var baseString = "menuItem";
var urlOnNode = false;
var currentLink = null;
var lastOpenTr = new Array();
var lastSelect = new Array();
var ie = (navigator.appName.indexOf("Internet Explorer")!=-1) && (navigator.userAgent.indexOf("Opera") == -1);


function  showHideLevel(obj, level, id){
	var nextLevel = document.getElementById(id + "_tr");
	obj = document.getElementById(id);
	if(nextLevel && (nextLevel != lastOpenTr[level])){
		if(lastOpenTr[level]){
			closeAllChilds(level);
			lastOpenTr[level].style.display = "none";
			lastSelect[level].className = contclass[level];
		}
		nextLevel.style.display = "block";
		obj.className = contclasssel[level];
		
		lastOpenTr[level] = nextLevel;
		lastSelect[level] = obj;
	}else if(nextLevel && (nextLevel == lastOpenTr[level])){
		nextLevel.style.display = "none";
		lastOpenTr[level] = null;
		lastSelect[level] = null;
	}
}

function chClass(level,obj,key){
	if((obj != lastSelect[level]) && (obj != currentLink)){
		if(key == 1){
			obj.className = contclasssel[level];
		}else{
			obj.className = contclass[level];
		}
	}
}

function compareInitId(a,b){
	return a[4] - b[4];
}

function menuSource(menuLevel, base, level){
menuLevel.sort(compareInitId);
	var str = "";
	for(var i = 0; i < menuLevel.length; i++){
		str +="<div id=\"" + base + "_" + i + "\" class=\""+ contclass[level] + "\" ><a"
		str += "";
		if((menuLevel[i][2] != "") && (urlOnNode == false)){
			str += " href=\"\" onClick=\"showHideLevel(this," + level + ",'" + base + "_" + i +"');return false;\"";
		}else if(menuLevel[i][1] != ""){
			str += " href=\"/" + menuLevel[i][5] + "?init=" + base + "_" + i + "\" ";
		}
		str += ">" + menuLevel[i][0] + "</a></div>";
		//if ((level == 0) || ((level == 1) && (i == (menuLevel.length-1) )) )
		if (1 )
		{
			str += "<div class=\"menusep\"></div>";
		}
		if(menuLevel[i][2]!=""){
			str += "<div style=\"display:none\" id=\"" + base + "_" + i + "_tr\">";
			str += menuSource(menuLevel[i][2], base + "_" + i, level+1);
			str += "</div>";
		}	
	}
	return str;	
}

function closeChildLevel(level){
	lastOpenTr[level].style.display = "none";
	lastSelect[level].className = contclass[level];
	
	lastOpenTr[level] = null;
	lastSelect[level] = null;
}

function closeAllChilds(level){
	for(var i = level+1; i < lastSelect.length; i++){
		if(lastSelect[i]){
			closeChildLevel(i);
		}else{
			break;
		}
	}
}

function restoreMenu(){
	var search = document.location.search;
	var re = /init=menuItem_[0-9_]+/;
	search = search.match(re);
	if(search){
		var initString = search[0].split("=");
		var initArray = initString[1].split("_");
		var obj = null;
		var objTr = null;
		var initSt = initArray[0];
		for(var i = 1; i < initArray.length; i++){
			initSt += "_" + initArray[i];
			obj = document.getElementById(initSt);
			objTr = document.getElementById(initSt + "_tr");
			if(objTr){
				if(i < initArray.length-1){
					showHideLevel(obj,i-1,initSt);
				}else{
					chClass(i-1,obj,1);
					currentLink = obj;
				}
			}else{
				chClass(i-1,document.getElementById(initString[1]),1);
				currentLink = document.getElementById(initString[1]);
			}
		}
	}
}

initHash[1] = menu;
var count = 1;

function mdiv(name,id,level,mylen,parent,mode,cont, other, url){
	initHash[id] = new Array(name,id,new Array(),parent,count,url);
	count++;
}

function mappingMenuItem(){
	var objArray = null;
	var chidArray = null;
	for(var i in initHash){
		objArray = initHash[i];
		if(objArray[3] == 1){
			menu[menu.length] = objArray;
		}else if(initHash[objArray[3]]){
			chidArray = initHash[objArray[3]][2];
			chidArray[chidArray.length] = objArray;
		}
	}
}

function writeMenu(menuLevel, baseString, level){
	mappingMenuItem();
	document.write(menuSource(menuLevel, baseString, level));
	restoreMenu();
}

