//	written	by Tan Ling Wee
//	last updated 20 June 2003
//	email :	fuushikaden@yahoo.com

//	edited by fern@ua.fm

var orientation=1	// 0-horizontal 1-vertical



/////////////////////////////////////////////////////////////////////////////

var	ie=(navigator.appName=='Microsoft Internet Explorer')
var	ns=(navigator.appName=='Netscape')
var	dom=document.getElementById
var lw_menuId, lw_trigger, to1
var s1

/////////////////////////////////////////////////////////////////////////////

function Tmenu (id, parentId, url, description, styleclass, divclass) {
	this.id = id;
	this.parentId = parentId;
	this.url = url;
	this.description = description;
	this.numChild = 0;
	this.levelId = 0;
	this.styleclass = styleclass;
	if (styleclass.indexOf("menunolink")==-1) this.a = true; else this.a = false;
	this.divclass = divclass;
}

/////////////////////////////////////////////////////////////////////////////

var menu = new Array()
var menuCounter = 0
var numLevel = 0
var prevMenuId = -1
var nNowAt = 0

function displayMenuItem(menuId) {
	var sHTML
	

	if ((orientation==1)||(menu[menuId].levelId>0))
	{
		sHTML += "<tr>"
	}	

		sHTML = "<td nowrap ";
		if (menu[menuId].levelId=="0") sHTML += " ";
		sHTML += "id='menu_"+menuId+"' onmouseover='clearInterval(s1);"

		if (menu[menuId].numChild!=0) {
			sHTML += "showSubmenu("+menu[menuId].id+",this);hideSubmenu(menu["+menuId+"].levelId+1);"
		}
		else
		{
			sHTML += " prevMenuId="+menuId+"; hideSubmenu(menu["+menuId+"].levelId);"
		}

		sHTML += ";nNowAt="+menuId+";clearAll("+menu[menuId].levelId+","+menu[menuId].parentId+")'"
		sHTML += "onmouseout='s1=setInterval(\"resetMenu();hideSubmenu(0)\",300);'>"

		
		sHTML += "<div class="+menu[menuId].divclass+">";
		if (menu[menuId].a != "") sHTML += "<a href=\""+menu[menuId].url+"\"";
		else sHTML += "<font";
			if (menu[menuId].styleclass != "") sHTML += " class="+menu[menuId].styleclass;
			sHTML += ">"+menu[menuId].description.replace(" ","&nbsp;");
		if (menu[menuId].a != "") sHTML += "</a>";
		else sHTML += "</font>";
		sHTML += "</div>";		
		sHTML += "</td>"

		
		
		
	if ((orientation==1)||(menu[menuId].levelId>0))
	{
		sHTML += "</tr>"
	}	
	return sHTML
}










function clearAll(levelId, parentId) {
	for (i=0;i<menuCounter;i++)
	{
		if (menu[i].levelId==levelId)
		{
			if ((i!=nNowAt) && (menu[i].parentId==parentId) && (menu[i].description!="-")) {
				//lw_getObj("menu_"+i).backgroundColor=Background;
				//lw_getObj("menu_"+i).borderColor=Border
			}
		}
	}

}

function mapID (id) {
	for (var i=0;i<menuCounter;i++)
	{
		if (menu[i].id==id)
		{
			return i
		}
	}
	return -1
}

function showSubmenu(menuId,trigger) {
	lw_menuId = menuId
	lw_trigger = trigger

	if (ns)
	{
		to1 = setTimeout("showActualSubmenu(lw_menuId,lw_trigger)",50)			
	}
	else
	{
		showActualSubmenu(lw_menuId,lw_trigger)
	}
}

function showActualSubmenu(menuId,trigger) {
	var nLevel = 0
	var leftpos = 0 
	var nIndex=0

	if (menuId>0)
	{
		lw_calcpos(trigger)

		for (var i=0;i<menuCounter;i++)
		{
			if (menu[i].id==menuId)
			{	
				nLevel = menu[i].levelId
				nIndex = i
			}
		}

		if ((orientation==1)||(menu[nIndex].parentId>0)){
			lw_getObj("menu_level_"+nLevel).top = lw_toppos+lw_height+5;
			leftpos = lw_leftpos;
			/*
			if (nLevel==0) {
				leftpos -= 3
			}
			*/
		}
		else {
			lw_getObj("menu_level_"+nLevel).top = lw_toppos + lw_height + 2
			leftpos = lw_leftpos
		}

		lw_getObj("menu_level_"+nLevel).left = leftpos;

		sHTML = "<table cellpadding=2 cellspacing=2 border=0>"
		for (var i=0;i<menuCounter;i++){
			if (menu[i].parentId==menuId)
			{
				sHTML += displayMenuItem (i)
			}
		}
		sHTML += "</table>"

		document.getElementById("menu_level_"+nLevel+"_content").innerHTML=sHTML;
		lw_showLayer('menu_level_'+nLevel);
	} 
}

function hideSubmenu(levelId) {
	for (var cnt=levelId; cnt<numLevel; cnt++)
	{
		lw_hideLayerName("menu_level_"+cnt)
	}
}








function DrawSubMenu (id)  {

	for (var i=0; i<numLevel ; i++)
	{
		lw_createLayer("menu_level_"+i,0,0,0,0,100)
	}

	for (var i=0; i<menuCounter; i++)
	{
		if (menu[i].id==id)
		{		
			sHTML="<table cellpadding=0 cellspacing=0 border=0>"
			sHTML += displayMenuItem (i)
			sHTML += "</table>"
			document.writeln(sHTML)
			break;
		}
	}

}







function DrawMenu ()  {

	for (var i=0; i<numLevel ; i++)
	{
		lw_createLayer("menu_level_"+i,0,0,0,0,100)
	}

	sHTML="<table cellpadding=0 cellspacing=0>"
	for (var i=0; i<menuCounter; i++)
	{
		if (menu[i].parentId==0)
		{		
			sHTML += displayMenuItem (i)
		}
	}
	sHTML += "</table>"

	document.writeln(sHTML)

}

function getLevel (menuId) {
	var pId=menuId
	var nLevel=0

	while (pId!=0)
	{
		nLevel++
		for (var i=0;i<menuCounter;i++)
		{
			if (menu[i].id==pId)
			{	
				pId = menu[i].parentId
			}
		}
	}

	return nLevel
}

function AddMenuItem (id, parentId, url, description, styleclass, divclass){

	menu[menuCounter++] = new Tmenu (id, parentId, url, description, styleclass, divclass);

	if (parentId>0)
	{
		for (i=0;i<menuCounter;i++)
		{
			if (menu[i].id==parentId)
			{
				menu[i].numChild++
			}
		}
		menu[menuCounter-1].levelId = getLevel(parentId)

		if ( numLevel < menu[menuCounter-1].levelId)
		{	
			numLevel = menu[menuCounter-1].levelId
		}
	}	 
	else if (parentId==0)
	{
		menu[menuCounter-1].levelId = 0
	}
	else
	{
		menu[menuCounter-1].levelId = -1
	}
}

function handleonclick() {
	if (ns)
	{
		lw_closeAllLayers()
	}
	else
	{
		lw_closeAllLayers(event)
	}

	resetMenu()
}

function handlekeypress(e) {
	if (ns)
	{
		var keyCode = e.keyCode?e.keyCode:e.which?e.which:e.charCode;
		if ((keyCode==27)||(keyCode==1))
		{
			handleonclick()
		}
	}
	else
	if ((event.keyCode==0)||(event.keyCode==27))
	{
		handleonclick()
	}
	resetMenu()
}

function resetMenu () {
	for (i=0;i<menuCounter;i++)
	{
		if (menu[i].levelId==0)
		{
			//lw_getObj("menu_"+i).backgroundColor=mainItemBackground
			//lw_getObj("menu_"+i).borderColor=mainItemBorder
		}
	}
}

document.onkeypress = handlekeypress
document.onclick = handleonclick

