function textNode(text){
	return document.createTextNode(text);	
}
function makeactive(e){
	var xe = new myevent(e);
	var target = xe.target;
	//if(hasClass(target,"mainnavbtn")){
		addClass(target,"mainnavactive");
	//}
}
function makeinactive(e){
	var xe = new myevent(e);
	var target = xe.target;
	//if(hasClass(target,"mainnavbtn")){
		removeClass(target,"mainnavactive");
	//}
}
var menutimer = 300;
function openmenu(e){
	var xe = new myevent(e);
	var target = xe.target;
	
	if(hasClass(target,"navbtn")){
		
		if(!target.isactive){
			target.isactive = true;
			var inname = target.getAttribute("menuname");
			
			var menu = mns.getMenu(inname);
			var thismenu = target.getAttribute("thismenu");
			
			if(!und(menu) && menu.mnustatus == 0){
				if(hasClass(target,"mainnavbtn")){
					addClass(target,"mainnavactive");
				}
				menu.parentmenu = mns.getMenu(thismenu);
				menu.activator = target;
				if(menu.parentmenu != null){menu.parentmenu.setActiveChildren();}
				if(!menu.isactive){
					if(menu.mnutype == 2){
						menu.div.style.left = getLeft(target);
						menu.div.style.top = getTop(target)+target.offsetHeight;
					}else if(menu.mnutype == 3){
						
						menu.div.style.left = getLeft(target)+target.offsetWidth;
						menu.div.style.top = getTop(target);
					}
					menu.fadein(document.getElementsByTagName("body")[0],menutimer);
								
				}
			}
			
		}
	}
	
}
function closemenu(e){
	var xe = new myevent(e);
	var target = xe.target;
	if(hasClass(target,"navbtn")){		
		target.isactive = false;
		var inname = target.getAttribute("menuname");
		var menu = mns.getMenu(inname);
		if(!und(menu) && (menu.mnustatus == 1 || menu.mnustatus == 2)){
			menu.isactive = false;
			setTimeout("mns.getMenu('"+inname+"').fadeout()",menutimer);
		}
	}
}
function coolmenus(){
	var self = this;
	this.menus = new Array();	
	this.menu = function(inname,inarray,type){
		var thismenu = this;		
		this.drop = function(){
			var d = thismenu.div;
			thismenu.isactive = false;			
			try{d.parentNode.removeChild(d);}catch(e){}
			thismenu.mnustatus = 0;
		}
		this.fadeout = function(time){	
			if(!thismenu.isactive && thismenu.mnustatus == 1 && !thismenu.activechildren){
				if(!thismenu.activator.isactive){
					if(hasClass(thismenu.activator,"mainnavbtn")){
						removeClass(thismenu.activator,"mainnavactive");
					}		
					thismenu.mnustatus = 3;
					opacity("menu_"+thismenu.menuname,95,0,menutimer);
					setTimeout("mns.getMenu('"+thismenu.menuname+"').drop()",menutimer);
					if(thismenu.parentmenu){
						thismenu.parentmenu.setActiveChildren()
						try{thismenu.parentmenu.fadeout();}catch(e){}
					}
				}
			}
		}
		this.fadein = function(node,time){
			//if(thismenu.mnustatus == 3){debug("now "+thismenu.isactive);}
			if(!thismenu.isactive && thismenu.mnustatus == 0){
				thismenu.mnustatus = 2;	
							
				try{				
					thismenu.parentmenu.setActiveChildren();
				}catch(e){}
				node.appendChild(thismenu.div);
				//=================================================================================================	
				if(thismenu.mnutype ==3){
					var t = $(thismenu.div);
					var right = t.offset().left +t.width();
					if(right > $(window).width()){
						t.css({
							left:$(window).width()-t.width()
						})
					}
				}					
				//==================================================================================================
				opacity("menu_"+thismenu.menuname,0,95,menutimer);
				setTimeout("mns.getMenu('"+thismenu.menuname+"').afterfadein()",menutimer);
			}
		}	
		this.afterfadein = function(){
			thismenu.mnustatus = 1;
		}
		this.setActiveChildren = function(){
			var rt = false;
			for(var x=0;x<thismenu.childmenus.length;x++){
				if(thismenu.childmenus[x].mnustatus == 1 ||thismenu.childmenus[x].mnustatus == 2){
					rt = true;
					break;
				}
			}
			thismenu.activechildren = rt;
		}
		this.isactive = false;
		this.mnustatus = 0; //0 = closed, 1 = open, 2 = fading in, 3 = fading out
		this.menuname = inname;
		this.parentmenu = false;
		this.childmenus = new Array();
		this.activechildren = false;
		this.array = inarray;
		this.mnutype = type;
		this.div = myce("div");
		//this.div.style.border = "1px solid white";
		addEvent(this.div,"mouseover",function(){thismenu.isactive = true;});
		addEvent(this.div,"mouseout",function(e){				
				var xe = new myevent(e);
				if(xe.target == thismenu.div){																					
					thismenu.isactive = false;
					setTimeout("mns.getMenu('"+thismenu.menuname+"').fadeout()",menutimer);												
				}
			});
		this.div.className = "menu"+this.mnutype;
		this.div.id = "menu_"+this.menuname;
		this.div.style.position = "absolute";
		this.mnuitems = new Array();
		this.addhoverclass = function(e){
			var xe = new myevent(e);
			addClass(xe.target,"itemhover");
		}
		this.removehoverclass = function(e){
			var xe = new myevent(e);
			removeClass(xe.target,"itemhover");
		}
		for(var x = 0;x<this.array.length;x++){
			var mnuitmdiv = myce("a");
			mnuitmdiv.appendChild(textNode(this.array[x][0]));
			if(this.array[x][1].length > 1){
				mnuitmdiv.href = this.array[x][1];
				if(!und(this.array[x][2])){
					mnuitmdiv.target = this.array[x][2];
				}
			}else{
				addClass(mnuitmdiv,"nolink");
			}
			mnuitmdiv.setAttribute("thismenu",this.menuname);
			addEvent(mnuitmdiv,"mouseover",thismenu.addhoverclass);		
			addEvent(mnuitmdiv,"mouseout",function(e){				
				evt = new myevent(e);
				evt.e.cancelBubble = true;
				if (evt.e.stopPropagation) {
					evt.e.stopPropagation();
					evt.e.preventDefault();
				}
				if(thismenu.isactive ){						
					thismenu.isactive = false;
					setTimeout("mns.getMenu('"+thismenu.menuname+"').fadeout()",menutimer);		
				}
				//if(!thismenu.activechildren){
					thismenu.removehoverclass(evt);
				//}				
			});
						
			this.div.appendChild(mnuitmdiv);
			addClass(mnuitmdiv,"menuitem"+this.mnutype);
			this.mnuitems.push(mnuitmdiv);			
		}
		
	}
	this.addMenu = function(inname,inarray,type){
		this.menus.push(new self.menu(inname,inarray,type));
	}
	this.getMenu = function(inname){
		var rv = null;
		for(var x=0;x< self.menus.length;x++){
			if(self.menus[x].menuname == inname){
				rv = self.menus[x];
				break;
			}
		}
		return rv;
	}
	this.linkMenu = function(mnu1,index,mnu2){
		var link = self.getMenu(mnu1).mnuitems[index];
		link.setAttribute("menuname",mnu2);
		self.getMenu(mnu1).childmenus.push(self.getMenu(mnu2));
		addClass(link,"navbtn");
		addEvent(link,"mouseover",openmenu);
		addEvent(link,"mouseout",closemenu);
	}
}
var mns = new coolmenus();

//***********************************************Build menues from xml file
var mnuurl = "/dynamiccontent/menu.xml";

new ajaxreq(mnuurl,buildMenues,null,false,true);
function buildMenues(req){
	var mnudoc = req.responseXML.documentElement;
	var menus = getChildElements(mnudoc);	
	var submenus = new Array();	
	for(var x=0;x<menus.length;x++){
		var links = new Array();		
		var m = menus[x];
		var menuname = m.getAttribute("name");
		var menulinks = getChildElements(m);
		var counter = 0;
		for(var y=0;y<menulinks.length;y++){			
			var l = menulinks[y];
			var link = ([l.getAttribute("text"),l.getAttribute("href"),l.getAttribute("target")]);
			if(l.getAttribute("disabled")!="true" || _inAdmin){
				links.push(link);
				if(l.getAttribute("submenu")){
					submenus.push([menuname,counter,l.getAttribute("submenu")]);
				}
				counter++
			}
			
		}
		mns.addMenu(menuname,links,m.getAttribute("type"));
	}
	for(var y=0;y<submenus.length;y++){
		var l = submenus[y];
		mns.linkMenu(l[0],l[1],l[2]);
	}	
}
//****************************************************************************************

function opacity(id, opacStart, opacEnd, millisec) {
    var speed = Math.round(millisec / 100);
    var timer = 0;
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
    	var i;
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
       
    }
} 
function changeOpac(value,id) {
	if(typeof(id)!="object"){
		var testObj = gid(id);
	}else{
		testObj = id
	}
	if(!und(testObj)){
		testObj.style.opacity = value/100;
		testObj.style.filter = 'alpha(opacity=' + value + ')';
	}
}
function debug(text){
	getBody().appendChild(textNode(text+" "));	
}
function getMousePos(e){
	this.x = e.pageX || e.clientX + document.body.scrollLeft;
	this.y = e.pageY || e.clientY + document.body.scrollTop;
}


