/*----CMENU - Menubar class */
var CMENU = {
	g_lpMenusQueue : Array(), 
	g_nMenuTID : 0, 
	g_sPrevMenuWnd : "",
	g_lpfnHideMenuCallback:null,
	g_lpfnItemClickCallback:null,
	
	setHideMenuCallback : function(lpfn){
		CMENU.g_lpfnHideMenuCallback = lpfn;
	},	
	setItemClickCallback : function(lpfn){
		CMENU.g_lpfnItemClickCallback = lpfn;
	},	
	mnItemHover : function(oitem,flag,parentKey,itemKey, menuLevel){
		if(!flag){
			CMENU.hiliteItem(oitem,0); 
			CMENU.g_nMenuTID = setTimeout("CMENU.hideAllMenus()", 400);
			return;
		}

		if(CMENU.g_nMenuTID){
			clearTimeout(CMENU.g_nMenuTID); CMENU.g_nMenuTID = 0;			
		}
		
		if(CMENU.g_lpMenusQueue.length){
			s = CMENU.g_lpMenusQueue[CMENU.g_lpMenusQueue.length-1];
			if(s!=parentKey){
				CMENU.hideMenu(menuLevel);
			}
			for(i=0;i<CMENU.g_lpMenusQueue.length;++i) CMENU.hiliteItem(getObj(CMENU.g_lpMenusQueue[i]),1);
		}
		if(parentKey==null){
			CMENU.hideAllMenus();
		}
		
		if(itemKey!==null && itemKey.length){
			mn = getObj("mn_"+itemKey);
			if(mn!=null && typeof(mn)=="object"){
				x = parentKey==null ? offsetLeft(oitem) : offsetLeft(oitem)+oitem.offsetWidth;
				y = parentKey==null ? offsetTop(oitem)+oitem.offsetHeight : offsetTop(oitem);
				if(x+mn.offsetWidth>document.body.clientWidth) x -= (parentKey==null?1:2)*mn.offsetWidth;
				if(y+mn.offsetHeight>document.body.clientHeight) y -= mn.offsetHeight-oitem.offsetHeight;
				mn.style.left = x + (document.all?-3:-2); mn.style.top = y - (oitem.scope=="nav_sel"?1:0);
				mn.style.display = "block";				
			}
			CMENU.g_lpMenusQueue.push(itemKey);
		}
		CMENU.hiliteItem(oitem, 1);
	},/*mnItemHover*/
	
	stayShowMenu : function(f){
		if(f){
			if(CMENU.g_nMenuTID){
				clearTimeout(CMENU.g_nMenuTID); CMENU.g_nMenuTID = 0;
			}
		}else CMENU.g_nMenuTID = setTimeout("CMENU.hideAllMenus()", 400);
	}, /*stayShowMenu*/
	
	hideAllMenus:function (){
		if(CMENU.g_nMenuTID){
			clearTimeout(CMENU.g_nMenuTID); CMENU.g_nMenuTID = 0;
		}
		while(CMENU.g_lpMenusQueue.length){
			s = CMENU.g_lpMenusQueue[CMENU.g_lpMenusQueue.length-1];
			try{getObj("mn_"+s).style.display = "none";}catch(e){}
			CMENU.hiliteItem(getObj(s),0);
			CMENU.g_lpMenusQueue.pop();
		}
		if(CMENU.g_lpfnHideMenuCallback!=null && typeof(CMENU.g_lpfnHideMenuCallback)=="function") CMENU.g_lpfnHideMenuCallback();
	},
	
	hideMenu:function (level){
		while(CMENU.g_lpMenusQueue.length>level){
			s = CMENU.g_lpMenusQueue[CMENU.g_lpMenusQueue.length-1];
			CMENU.hiliteItem(getObj(s), 0);
			try{getObj("mn_"+s).style.display = "none";}catch(e){}
			CMENU.g_lpMenusQueue.pop();
		}		
	},
	
	hiliteItem:function (oitem, f){
		if(f){
			if(oitem.scope=="nav"){
				oitem.className="ma_item";
				$("#"+oitem.id).prev().addClass("ma_left");
				$("#"+oitem.id).next().addClass("ma_right");
			}
			if(oitem.childNodes[0].tagName=="TABLE")
				oitem.childNodes[0].childNodes[0].rows[0].cells[1].style.color = "#FFFFFF";			
		}else{
			if(oitem.scope=="nav"){
				oitem.className="mi_item";
				$("#"+oitem.id).prev().removeClass("ma_left");
				$("#"+oitem.id).next().removeClass("ma_right");
			}
			if(oitem.childNodes[0].tagName=="TABLE")
				oitem.childNodes[0].childNodes[0].rows[0].cells[1].style.color = "#1A4490";
		}
	},
	
	itemClick:function(m,s,fSubMenu, lpfn, sParams){
		if(typeof(lpfn)=="string"){
			try{
				lpfn = eval(lpfn); lpfn(m,s,fSubMenu,sParams);
			}catch(e){}
		}else{
			if(CMENU.g_lpfnItemClickCallback!=null && typeof(CMENU.g_lpfnItemClickCallback)=="function")
				CMENU.g_lpfnItemClickCallback(m,s,fSubMenu);
		}
		if(!fSubMenu){
			CMENU.hideAllMenus();
		}		
	},
	
	/*track popup menu*/
	/*aitems: object*/
	/*ex: aitems = {"cmd":"text", "cmd2":"text2|icon", "poup":["text":{"cmd":"text"...}]} */
	trackPopupMenu : function(x,y,aitems, sid, level, lpstrFn, aParams){
		CMENU.buildTrackPopupMenu(aitems, sid, level, lpstrFn, aParams);
		/*hide callback*/
		CMENU.setHideMenuCallback(function(){ getObj("mn_"+sid).style.display = "none"; });		
		/*get cursor pos*/
		wnd = getObj("mn_"+sid);
		if(x<=10) x = 2;
		else if(x+wnd.offsetWidth>document.body.clientWidth) x -= wnd.offsetWidth - 8;
		else x-= 4;
		if(y<=10) y = 2;
		else if(y+wnd.offsetHeight>document.body.clientHeight) y -= wnd.offsetHeight - 8;
		else y -= 4;
		wnd.style.left = x - 4; wnd.style.top = y -4;
		wnd.style.display = "block";
		_addEvent(document, "mouseup", function(e){
					oitem = isIE?event.srcElement:e.target;
					if(oitem.className!="menuitem"&&oitem.className!="menusep") CMENU.hideAllMenus();
				});
	},
	buildTrackPopupMenu : function(aitems, sid, level, lpstrFn, aParams){		
		var shtml = "<table border='0' cellspacing='0' cellpadding='0'>";
		for(key in aitems){
			sitem = aitems[key];
			if(typeof(sitem)=="object"){
				shtml += "<tr><td id='"+key+"' onclick=\"CMENU.itemClick('"+sid+"','"+key+"', 1)\" onmouseover=\"CMENU.mnItemHover(this,1,'"+sid+"','"+key+"',"+level+");\" onmouseout=\"CMENU.mnItemHover(this,0,'"+sid+"','"+key+"',"+level+");\">"
						+ "<table cellspacing='0' cellpadding='0' border='0' width='100%' height='18'><tr><td width='10'><img src='images/blank20.gif' width='20' height='20'/></td><td class='menuitem' nowrap='nowrap'>"+sitem[0]
						+ "</td><td width='9'><img src='images/menu_arrow.gif' width='7' height='10'/></td></tr></table></td></tr>";
				CMENU.buildTrackPopupMenu(sitem[1], key, level+1);
			}else{
				if(sitem.length<=1){/*separator*/
					shtml += "<tr><td class='menusep' onmouseover=\"CMENU.stayShowMenu(1)\" onmouseout=\"CMENU.stayShowMenu(0)\"></td></tr>";
				}else{
					tmp = sitem.split("|");
					stext = tmp[0]; sicon = "";
					if(tmp.length>1){
						sicon = "<img src='"+tmp[1]+"'/>";
					}else sicon = "<img src='images/blank20.gif' width='20' height='20'/>";
					shtml += "<tr><td onclick=\"CMENU.itemClick('"+sid+"','"+key+"',0,'"+lpstrFn+"','"+aParams+"');\" onmouseover=\"CMENU.mnItemHover(this,1,'"+sid+"',null,"+level+");\" onmouseout=\"CMENU.mnItemHover(this,0,'"+sid+"',null,"+level+");\"><table border='0' cellspacing='0' cellpadding='0' width='100%' height='18'><tr><td width='20'>"+sicon+"</td><td id='"+key+"' class='menuitem' nowrap='nowrap'>"+stext+"</td><td widht='9'></td></tr></table></td></tr>";
				}
			}
		}
		shtml += "</table>";
		var o = getObj(sid);
		if(o==null || typeof(o)!="object"){
			o = document.createElement("div"); 
			o.id = "mn_"+sid;
			o.innerHTML = shtml;
			document.body.appendChild(o);
			o.className = "menuwnd";
			o.style.left=o.style.top="0px";
			o.style.zIndex = level;
		}
	}
};/*CMENU*/
