//*************************************//
var gActiveMenus=new Array();
var gActiveMenuCount=0;
var gActiveMenuId=null;
var gActiveMenu=null;
var gOldBrowser=_oldBrowser();
var gTmr=null;
var gQueuedMenu=null;

var gRootItems = new Array();
var gMenus = new Array();

//end variables

//public functions
function initMenu(){
	document.write(_createRootMenu());
	
	//register events
	if(!gOldBrowser){
		if (window.captureEvents){
			window.captureEvents(Event.CLICK)
		}
		document.onclick = _Body_OnClick;
		document.onmouseover=_Body_OnMouseOver;
	}
	document.close();
}


function deactivateMenus(id){
	for(var i=gActiveMenus.length-1;i>=0;i--){
		var m=gActiveMenus[i];
		if(m!=null){
			if(m.id!=id){
				if(m.parentId!=null){
					_deactivateMenuItem(m.menuItem);
				}
				_deactivateMenuItems(m);
				m.elem.style.visibility='hidden';
				gActiveMenus[i]=null;
				gActiveMenuCount--;	
			}else{
				break;
			}
		}
	}
	
	
}
function deactivateAll(){
	deactivateMenus();
	_deactivateRootItems()

	gActiveMenu=null;
	gActiveMenus=new Array();
	gActiveMenuCount=0;
	gActiveMenuId=null;
	gQueuedMenu=null;
	_changeSelectVisibility('visible');
}

//end public functions

//objects
function objMenu(id,menuItem,parentId){
	this.id=id;
	this.menuItem=menuItem;
	this.top=0;
	this.left=0;
	this.width=0;
	this.elem=null;
	this.parentId=parentId;
	this.children=new Array();
}

function objRootItem(id, itm){
	this.id=id
	this.elem=itm;
}
//end objects

//private functions
function _changeSelectVisibility(visibility){
    
    if(navigator.appName=="Microsoft Internet Explorer" && (navigator.userAgent.indexOf('MSIE 7')==0)){
        for(var i=0;i<document.forms.length;i++){
            if(document.forms[i].elements.length<20){
                for(var j=0;j<document.forms[i].elements.length;j++){    
                    if(document.forms[i].elements[j].type.indexOf('select')==0){
                        document.forms[i].elements[j].style.visibility=visibility;
                    }
                }
            }
        }
    }
}
function _oldBrowser(){
	if(navigator.appName=="Netscape" && parseInt(navigator.appVersion)<5){
		return true;
	}else if(navigator.appName=="Microsoft Internet Explorer" && (navigator.userAgent.indexOf('MSIE 4')>0)){
		return true;
	}else{
		return false;}
}


function _createRootMenu(){

	var r="";var j=0;
	r="<table cellpadding='0' cellspacing='0' border='0' id='root_table' class='Menu'>"+(cOrientation=='vertical'?"":"<tr>");
	for(var i=0;i<gMI.length;i++){
		var mnuItm=gMI[i];
		
		if(mnuItm[1]==null){
			if(gOldBrowser){
				if(!mnuItm[5]){
					r=r+(cOrientation=='vertical'?"<tr>":"")+"<td nowrap class='ParentItem' id='root_"+mnuItm[0	]+"'><a href='"+mnuItm[3]+"' target='_top'>"+(cMenuRootLeftArrow!=null?cMenuRootLeftArrow:"")+mnuItm[2]+"</a></td>"+(cOrientation=='vertical'?"</tr>":"");
				}else{
					r=r+(cOrientation=='horizontal'?"":"<tr>")+"<td nowrap class='MenuDelimiter' id='root_"+mnuItm[0]+"' >&nbsp;</td>"+(cOrientation=='horizontal'?"":"</tr>");
				}
			}else{
				if(!mnuItm[5]){
					r=r+(cOrientation=='horizontal'?"":"<tr>")+"<td nowrap class='ParentItem' onMouseOver=mnuOnMouseOver(event,"+mnuItm[0]+",null,this,"+mnuItm[4]+") id='root_"+mnuItm[0]+"' onClick=mnuOnClick(event,'"+mnuItm[3]+"',this) onMouseOut='mnuOnMouseOut("+mnuItm[0]+",this)'><a href='"+mnuItm[3]+"' target='_top'>"+(cMenuRootLeftArrow!=null?cMenuRootLeftArrow:"")+mnuItm[2]+"</a></td>"+(cOrientation=='horizontal'?"":"</tr>");
				}else{
					r=r+(cOrientation=='horizontal'?"":"<tr>")+"<td nowrap class='MenuDelimiter' id='root_"+mnuItm[0]+"' >&nbsp;</td>"+(cOrientation=='horizontal'?"":"</tr>");
				}
				gRootItems[j]=new objRootItem(mnuItm[0],"root_"+mnuItm[0]);
				j++;
			}
		}
	}
	
	return r+(cOrientation=='vertical'?"":"</tr>")+"</table>";

}



function _createLayer(eTag, id,className){
	var lr=document.createElement(eTag);
	lr.id=id;
	lr.className=className;
	return lr;
}


function _findMenu(id, searchActive){
	if(searchActive){
		var menus=gActiveMenus;
	}else{
		var menus=gMenus;
	}
	
	for(var i=0;i<menus.length;i++){
		var mnu=menus[i];
		
		if(mnu!=null){
			if(mnu.id==id){
				return mnu;
				break;
			}
		}
	}
		
	
}



function _createMenuItems(mnuParent){

	var r="";var j=0;
	r="<table cellpadding='0' cellspacing='0' border='0' class='ChildTable'>"+(cOrientation=='vertical'&&mnuParent.id==null?"<tr>":"");
	for(var i=0;i<gMI.length;i++){
		var mnuItm=gMI[i];
			
		
		if(mnuItm[1]==mnuParent.id){

			//delimiter
			//if(!mnuItm[5]){
				r=r+(cOrientation=='horizontal'&&mnuParent.id==null?"":"<tr>")+"<td class='ChildItem' onMouseOver=mnuOnMouseOver(event,"+mnuItm[0]+","+mnuParent.id+",this,"+mnuItm[4]+","+mnuItm[5]+") id='itm"+mnuItm[0]+"' onClick=mnuOnClick(event,'"+mnuItm[3]+"',this) onMouseOut='mnuOnMouseOut("+mnuItm[0]+",this)'><table cellspacing=0 cellpadding=0 border=0 width=100%><tr><td><a href='"+mnuItm[3]+"' target='_top'>"+mnuItm[2]+"</a></td><td align=right>"+(mnuItm[4]?cMenuRightArrow:"&nbsp;")+"</td></tr></table></td>"+(cOrientation=='horizontal'&&mnuParent.id==null?"":"</tr>");
			//}else{
			//	r=r+(cOrientation=='horizontal'&&mnuParent.id==null?"":"<tr>")+"<td class='MenuDelimiter' id='itm"+mnuItm[0]+"'>&nbsp;</td>"+(cOrientation=='horizontal'&&mnuParent.id==null?"":"</tr>");
			//}
			mnuParent.children[j]="itm"+mnuItm[0];			
			j++;
		}
	}
	
	return r+(cOrientation=='vertical'&&mnuParent.id==null?"</tr>":"")+"</table>";
	
}

function _createMenu(id, parentId, itm){
	
	
	var mnu=_findMenu(id,false);
	
	if(mnu==null){
	
		var mnu=new objMenu(id,itm,parentId);

		var lr=_createLayer("div","mnu_"+id, "MenuLayer");
		lr.style.position='absolute';lr.style.visibility='hidden';lr.style.display='none';
		lr.innerHTML=_createMenuItems(mnu);

		mnu.elem=lr;
		
		
		document.body.appendChild(lr);


		if(parentId!=null){
			var parent=_findMenu(parentId, true);
			mnu.left=_getOffsetLeft(itm)+parent.width+cMenuOffsetLeft;
			mnu.top=_getOffsetTop(itm)+cMenuOffsetTop;
			
			
			if(cOrientation=='horizontal'){
				if(mnu.top<parent.top){
					mnu.top=parent.top;
				}
			}
		}else{
			var rt=document.getElementById("root_table");
			mnu.top=_getOffsetTop(itm)+rt.offsetHeight+cMenuRootOffsetTop;
			mnu.left=_getOffsetLeft(itm)+(cOrientation=='vertical'?cMenuMinWidth+cMenuRootOffsetLeft:cMenuRootOffsetLeft);
		}
		
		gMenus[gMenus.length] = mnu;
	
	}
	
	return mnu;
	
}


function _activateMenu(mnu){
	if(!mnu){
		mnu=gActiveMenu;
	}
	mnu.elem.style.display='inline';
	
	if(mnu.width==0){
		if(cMenuMinWidth==null){
		    mnu.width=mnu.elem.offsetWidth;
		}else{
		    mnu.width=(mnu.elem.offsetWidth>cMenuMinWidth?mnu.elem.offsetWidth:cMenuMinWidth)
		}
	}
	
	if(mnu.left+mnu.width>document.body.clientWidth&&mnu.parentId!=null){
		var parent=_findMenu(mnu.parentId,true);
		mnu.elem.style.left=(parent.left-mnu.width)-cMenuOffsetLeft+'px';
	}else{
		mnu.elem.style.left=mnu.left+'px';
	}
    mnu.elem.style.width=mnu.width;	
	mnu.elem.style.visibility='visible';
	mnu.elem.style.top=mnu.top+'px';

}

function _getOffsetLeft(obj){
	//var curLeft=ds.body.leftMargin&&(clAgent.indexOf("msie 5")==-1||clOS=='mac')?parseInt(ds.body.leftMargin):0;
	//var curLeft=parseInt(document.body.leftMargin);
	var curLeft=0;
	while(obj.offsetParent){
		curLeft+=obj.offsetLeft;
		obj=obj.offsetParent;
	}
	return curLeft;
}

function _getOffsetTop(obj){
	//var curTop=ds.body.topMargin&&(clAgent.indexOf("msie 5")==-1||clOS=='mac')?parseInt(ds.body.topMargin):0;
	//var curTop=parseInt(document.body.topMargin);
	var curTop=0;
	
	//if(clAgent.indexOf("msie 5.0")>=0){
	//	curTop+=3
	//}
	while(obj.offsetParent){
		curTop+=obj.offsetTop;
		obj=obj.offsetParent;
	}
	return curTop;
}

function _setTimeout(expression, delay){
	window.clearTimeout(gTmr);
	gTmr=window.setTimeout(expression,delay);
}

function _openQueuedMenu(id, parentId){
	var itm=gQueuedMenu;
	
	deactivateMenus(parentId);
	_changeSelectVisibility('hidden');
	
	var mnu=_createMenu(id, parentId, itm);
	
	if(mnu!=null){
		gActiveMenus[gActiveMenuCount]=mnu;
		gActiveMenu=mnu;
		gActiveMenuCount++;
		
		_activateMenu(mnu);
		
	}
	gActiveMenuId=id;

}
function _activateMenuItem(itm){
	if(cMenuItemActiveBackground!=null){
		itm.style.backgroundColor=cMenuItemActiveBackground;
	}
	if(cMenuItemActiveBorder!=null){
		itm.style.border=cMenuItemActiveBorder;
	}
}

function _activateMenuRootItem(itm){
	if(cMenuRootItemBackground!=null){
		itm.style.backgroundColor=cMenuRootItemActiveBackground;
	}
	if(cMenuRootItemActiveBorder!=null){
		itm.style.border=cMenuRootItemActiveBorder;
	}
}
function _deactivateMenuItem(itm){
	if(cMenuItemBackground!=null){
		itm.style.backgroundColor=cMenuItemBackground;
	}
	if(cMenuItemBorder!=null){
		itm.style.border=cMenuItemBorder;
	}
}

function _deactivateRootItem(itm){
	if(cMenuRootItemBackground!=null){
		itm.style.backgroundColor=cMenuRootItemBackground;
	}
	
	if(cMenuRootItemBorder!=null){
		itm.style.border=cMenuRootItemBorder;
	}
}

function _deactivateMenuItems(menu, id){
	if(menu==null){
		var mnu=_findMenu(id,true);
	}else{
		var mnu=menu;
	}
	
	for(var i=0;i<mnu.children.length;i++){
		_deactivateMenuItem(document.getElementById(mnu.children[i]));
	}
}

function _deactivateRootItems(id){
	var itm;
	for(var i=0;i<gRootItems.length;i++){
		itm=gRootItems[i];
		if(itm.id!=id){
			_deactivateRootItem(document.getElementById(itm.elem));
		}
	}
}
//end private functions


//*** events ***
function mnuOnMouseOver(e, id, parentId, itm, openMenu, delimiter){
	if(parentId!=null){
		_deactivateMenuItems(null,parentId);
	}else{
		_deactivateRootItems(id);
		//_changeSelectVisibility('hidden');
	}

		
	if(gActiveMenuId!=id){
		if(openMenu){
			gActiveMenuId=id;
			gQueuedMenu=itm;
			_setTimeout("_openQueuedMenu("+id+","+parentId+")",(parentId!=null?cMenuClickDelay:cMenuRootClickDelay));
		}else{
			gActiveMenuId=parentId;
			_setTimeout("deactivateMenus("+parentId+")",(parentId!=null?cMenuClickDelay:cMenuRootClickDelay));
		}
	}else{
		gQueuedMenu=itm;
		_setTimeout("_openQueuedMenu("+id+","+parentId+")",(parentId!=null?cMenuClickDelay:cMenuRootClickDelay));
	}
		
	
	if(parentId!=null){
		if(!delimiter){
			_activateMenuItem(itm);
			var parent=_findMenu(parentId,true);
			if(parent.parentId!=null){
				_deactivateMenuItems(null,parent.parentId);
				_activateMenuItem(parent.menuItem);
			}
		}
	}else{
		_activateMenuRootItem(itm);
	}
	
	e.cancelBubble=true;
}

function mnuOnClick(e,href, itm){
	if(href!="#"&&href!=null&&href!=""){
		document.location.href=href;
	}
	e.cancelBubble=true;
}
function mnuOnMouseOut(id, itm){
	var mnu=_findMenu(id,true);
	if(mnu){
		if(mnu.parentId!=null){
			_deactivateMenuItem(itm);
		}
	}
}

function _Body_OnClick(){
	window.clearTimeout(gTmr);
	deactivateAll();
}

function _Body_OnMouseOver(){
	_setTimeout("deactivateAll()",cMenuHideDelay);
}
//end events