var isNav = (navigator.appName == "Netscape");
var isIE = (navigator.appName == "Microsoft Internet Explorer");
__lastMenu=0;
__timer=0;
__menuinstances = 0;
__menus = Array();
__preloadImages = Array();
__fistMenuInstance=0;
__objtoInit=Array();
function myMenu(p,t,a){
	this.type='menu';
	this.space=4;
	this.p = p;
	this.t=t;
	this.a=a;
	this.element = document.createElement("div");
	this.element.className = this.t == 'img' ? 'menuIMG' : 'menu';
	this.id = "myMenu_" + __menuinstances++;
	this.element.setAttribute("id",this.id);
	this.element.style.position='absolute';
	this.element.style.zIndex=__menuinstances;
	if(p != 0){
		this.element.onmouseover=function(){
			keepIfCurrent(this);
			//keepMenu();
		};
	}
	this.element.onmouseout=function(){requestHide(0); };
	this.itens = new Array();
	this.addItem=function(txt,lnk){
		if(this.t == 'img') __preloadImages.push(txt);
		var itn  = {};
		itn.type = 'menuitem';
		itn.txt  = txt;
		itn.lnk  = lnk;
		itn.id   = "myMenu_" + __menuinstances++;
		itn.p    = this;
		__menus[itn.id]=itn;
		this.itens.push(itn);	
	}
	this.addSub=function(txt){
		var lnk  = new myMenu(this,this.t,this.a);
		var itn  = {};
		itn.type = 'submenu';
		itn.txt  = txt;
		itn.lnk  = lnk;
		itn.p    = this;
		itn.id   = "myMenu_" + __menuinstances++;		
		itn.subID = itn.lnk.id;
		__menus[itn.id]=itn;
		this.itens.push(itn);
		return(lnk);
	}
	this.makeMenuItem = function(itn){
			var title = itn.txt;
			var link  = itn.lnk;
			var subElement = document.createElement(this.p==0 && this.a=='h'? "span" : "div");
			subElement.setAttribute("id",itn.id);
			var subLink    = document.createElement("a");
			if(this.t == 'img'){
				var subText    = document.createElement("img");
				subText.src = title
				subText.border=0;
			} else {
				var subText    = document.createTextNode(title);
			}
			var lnk = typeof link == 'object' || link == undefined ? 'javascript:;' : link;
			subLink.setAttribute("href",lnk);
			subElement.className = this.t == 'img' ? 'menuItemIMG' : 'menuItem';
			subLink.className = this.t == 'img' ? 'menuLinkIMG' : 'menuLink';
			subLink.appendChild(subText);
			subElement.appendChild(subLink);
			if(this.p != 0)	this.element.style.visibility='hidden';
			if(itn.type == 'submenu'){
				subElement.onmouseover=function(){ swapStyle(this); showMenu(this,true);	}
			} else {
				subElement.onmouseover=function(){ swapStyle(this);    }
				
			}
			subElement.onmouseout = function(){ swapStyle(this); requestHide(this); }
			subElement.onclick = function(){ hideMenu(); }
			this.element.appendChild(subElement);
			return(subElement);
	}
	this.init=function(__mainID){
		var __mainOBJ__ = document.getElementById(__mainID);
		for(var i=0;i<this.itens.length;i++){
			if(this.itens[i].type=='submenu'){
				var ele = this.makeMenuItem(this.itens[i]);
				this.itens[i].ele = ele;
				this.itens[i].lnk.init(__mainID);
				//__objtoInit.push(this.itens[i]);
			} else {
				this.itens[i].ele =	this.makeMenuItem(this.itens[i]);
			}
		}
		__mainOBJ__.appendChild(this.element);
	}
	this.getLevel = function(){
		var objx = this;
		var ll = 0;
		while(objx.p != 0) {
			objx = objx.p;
			ll++;
		}
		return(ll);
	}
	this.setPositions=function(par,element){
		if(element!=0){
			if(this.a == 'h' && this.p.p == 0){
				this.element.style.left = ((par.element.offsetLeft+element.offsetLeft)+5)+'px';
				this.element.style.top = ((par.element.offsetTop + element.offsetTop + element.offsetHeight))+'px';
			} else {
				this.element.style.left = ((par.element.offsetLeft+element.offsetWidth)-this.space)+'px';
				this.element.style.top = ((par.element.offsetTop + element.offsetTop)+5)+'px';
			}
		}
		for(var i=0;i<this.itens.length;i++){
			var item = this.itens[i];
			if(item.type=='submenu') item.lnk.setPositions(this,item.ele);
		}
	}
	__menus[this.id]=this;
}
function initAll(__mainID){
	//for(var i=0;i<__objtoInit.length;i++) __objtoInit[i].lnk.init(__mainID);
}
function keepIfCurrent(obj){
	//alert(obj.id + " " + __lastMenu.id);
	var o1 = __menus[obj.id];
	var o2 = __menus[__lastMenu.id];	
	//alert(o2);
	//alert(o2.getLevel());
	//if(obj.id == __lastMenu.id){
	keepMenu();
	//}
}
function showMenu(obj,opc){
	keepMenu();
	var ob = obj;
	obj = document.getElementById(__menus[obj.id].lnk.id);
	o = __menus[obj.id];
	o.setPositions(o.p,ob);
	__lastMenu=obj;
	hideMenu();	
	if(obj.style.visilbility != 'visible'){
		if(isIE){
			obj.filters['blendTrans'].apply();
			obj.filters['blendTrans'].play();		
		}
		obj.style.visibility='visible';
	}
}
function requestHide(obj){
	if(obj==0)  __lastMenu = 0;
	keepMenu();
	__timer = setTimeout("hideMenu()",200);
}
function hideMenu(){
	var path = getPath();
	for(var i in __menus)
		if(__menus[i].type == 'menu' && __menus[i].p != 0)
			if(!searchArray(path,__menus[i]))
				document.getElementById(__menus[i].id).style.visibility='hidden';
}
function searchArray(arr,itn){
	for(var i=0;i<arr.length;i++) if(arr[i] == itn) return(true);
	return(false);
}
function keepMenu(){ clearTimeout(__timer); }
function getPath(){
	var path = Array();
	if(__lastMenu==0) { return(path); }
	var obj = __menus[__lastMenu.id];
	if(obj.type != 'menu') obj = obj.p
	while(obj.p != 0) path.push(obj = obj.p);
	return(path);
}
function swapStyle(obj){
	if(obj.className.indexOf('IMG') != -1){
		obj.className = obj.className == 'menuItemIMG' ? 'menuItemIMGOn' : 'menuItemIMG';
	} else {
		obj.className = obj.className == 'menuItem' ? 'menuItemOn' : 'menuItem';
	}
}
function preloadImages(){
	__preloadedImages__= Array();
	for(var i=0;i<__preloadImages.length;i++){
		__preloadedImages__[i]=new Image();
		__preloadedImages__[i].src=__preloadImages[i];
	}
}
