//Class biMenue

biMenue=function(filename,instanceName){
	this.instance=instanceName;
	mainObj=this;
	this.filename = filename;
	this.dxml = new biXml(filename);
	//alert(this.dxml.xmlDoc.responseText);
	this.mainObjNode = this.dxml.xmlDoc.responseXML.getElementsByTagName("navtree")[0];
	//alert(this.dxml.xmlDoc.responseXML.xml);
	this.bodyObj = document.getElementsByTagName("body")[0];
}

biMenue.prototype.createHMenue=function(menueNode){
	if(this.mainObjNode){
		tableNode = document.getElementById(menueNode);
		this.menueTable = document.createElement("table");
		this.addAttribute(this.menueTable,"cellspacing","0");
		this.addAttribute(this.menueTable,"cellpadding","0");
		this.menueTable.style.borderCollapse="collapse";
		this.menueTbody = document.createElement("tbody");
		this.menueTr = document.createElement("tr");
		this.menueTbody.appendChild(this.menueTr);
		this.menueTable.appendChild(this.menueTbody);
		tableNode.appendChild(this.menueTable);
		for( var i=0 ;i < this.mainObjNode.childNodes.length; i++ ){
			this.createMainNavpoint(this.mainObjNode.childNodes[i]);
		}
	}
}

biMenue.prototype.createVMenue=function(menueNode){
	this.dir="x";
	if(this.mainObjNode){
		tableNode = document.getElementById(menueNode);
		this.menueTable = document.createElement("table");
		this.addAttribute(this.menueTable,"cellspacing","0");
		this.addAttribute(this.menueTable,"cellpadding","0");
		this.menueTable.style.borderCollapse="collapse";
		tableNode.appendChild(this.menueTable);
		for( var i=0 ;i < this.mainObjNode.childNodes.length; i++ ){
			this.menueTbody = document.createElement("tbody");
			this.menueTr = document.createElement("tr");
			this.menueTbody.appendChild(this.menueTr);
			this.menueTable.appendChild(this.menueTbody);
			this.createMainNavpoint(this.mainObjNode.childNodes[i]);
		}
	}
}

biMenue.prototype.createMainNavpoint=function(menuepointNode){
	menuepoint=document.createElement("td");
	menuestr="<table cellspacing=0 cellpadding=0><tr><td class='biTopNavpoint'>";
	menueText=menuepointNode.attributes[0].value;
	menueText=menueText.replace(/\|\*\|/,"&");
	menuestr+=menueText;
	this.menueTr.appendChild(menuepoint);
	
	menuepoint.submenue=new biSubMenue(menuepoint,menuepointNode.attributes[1].value,"y",this.filename);
	menuepoint.parentObj=this;
	if(menuepointNode.attributes[5].value >0){
		menuestr+="</td><td style='padding-left:10px;'><img src='img/greyboxed.gif' border=0>";
		
		menuepoint.onmouseover=function(){
			this.className="biplanNaviTopOver";
			// to make submenue vanish for another one 
			this.parentObj.clearAllSubMenues();
			//biEinrichtung.clearAllSubMenues();
			kickSel("hidden");
			this.submenue.createSubmenue();
		};
		menuepoint.onmouseout=function(){
			this.className="biplanNaviTop";
			this.submenue.divObj.subMenueOut();
		};
	}else{
		menuepoint.onmouseover=function(){
			this.parentObj.clearAllSubMenues();
			this.className="biplanNaviTopOver";
		};
		menuepoint.onmouseout=function(){
			this.className="biplanNaviTop";
		};
	}
	menuestr+="</td></tr></table>";
	if(menuepointNode.attributes[4].value > 0)
		menuepoint.onmousedown =function(){ getTarget(menuepointNode.attributes[1].value,menuepointNode.attributes[3].value,menuepointNode.attributes[4].value);}
	menuepoint.innerHTML=menuestr;
	menuepoint.className="biplanNaviTop";
}

biMenue.prototype.addAttribute=function(attrElement,attribute,value){
	elAttribute = document.createAttribute(attribute);
	elAttribute.nodeValue = value;
	attrElement.setAttributeNode(elAttribute);
}
biMenue.prototype.clearAllSubMenues=function(){
	for(i=1;i<=z;i++){
		if(document.getElementById("submenue"+i)){
			clearTimeout(document.getElementById("submenue"+i).timer);
			document.getElementById("submenue"+i).created=false;
			this.bodyObj.removeChild(document.getElementById("submenue"+i));
		}
	}
}


//Class biSubMenue

biSubMenue=function(menuepoint,menuepointPK,dir,filename){
	this.dir=dir;
	this.created=false;
	this.menuepointPK=menuepointPK;
	this.filename=filename;
	this.menuepoint=menuepoint;
	this.bodyObj = document.getElementsByTagName("body")[0];
	this.divObj;
	this.i=0;
}

biSubMenue.prototype.createSubmenue=function(){
	this.dxml = new biXml(this.filename,"&pk="+this.menuepointPK);
	//alert(this.dxml.xmlDoc.responseText);
	this.mainObjNode = this.dxml.xmlDoc.responseXML.childNodes[0];
	this.menuepointNode=this.mainObjNode;
	if(!this.divObj || !this.divObj.created){
		this.pxleft=0;
		this.pxtop=0;
		var obj=this.menuepoint;
		while (obj){
	    	this.pxleft = this.pxleft + parseInt(obj.offsetLeft);
		    this.pxtop  = this.pxtop  + parseInt(obj.offsetTop);
		    obj = obj.offsetParent;
	    }
		if(this.dir == "y")
			this.pxtop += parseInt(this.menuepoint.offsetHeight)-1;
		else if(this.dir=="x")
			this.pxleft += parseInt(this.menuepoint.offsetWidth)-5;
		this.divObj = document.createElement("div");
	    this.divObj.className="biplanSubMenue";
	    this.divObj.style.position="absolute";
	    this.divObj.style.zIndex=z++;
		this.divObj.style.left = this.pxleft+"px"; 
		this.divObj.style.top = this.pxtop+"px"; 
		this.divObj.id="submenue"+z;
		this.divObj.bodyObj=this.bodyObj;
		this.divObj.onmouseout=function(){this.subMenueOut();};
		this.divObj.subMenueOut=this.subMenueOut;
		this.divObj.delSubMenue=this.delSubMenue;
		this.divObj.onmouseover=this.subMenueIn;
		this.divObj.subMenueList=new Array();
		this.bodyObj.appendChild(this.divObj);
	    //getsubmenuenode
	    this.menueTable = document.createElement("table");
	    this.menueTable.style.borderCollapse="collapse";
		this.addAttribute(this.menueTable,"cellspacing","0");
		this.addAttribute(this.menueTable,"cellpadding","0");
		this.menueTbody = document.createElement("tbody");
		this.menueTable.appendChild(this.menueTbody);
	    for( var i=0 ;i < this.menuepointNode.childNodes.length; i++ ){
			this.createNavpoint(this.menuepointNode.childNodes[i]);
		}
	    this.divObj.created=true;
	    this.divObj.appendChild(this.menueTable);	
	    
	    if (self.innerHeight){
			winWidth = self.innerWidth;
			winHeight = self.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientHeight){
			winWidth = document.documentElement.clientWidth;
			winHeight = document.documentElement.clientHeight;
		}
		else if (document.body){
			winWidth = document.body.clientWidth;
			winHeight = document.body.clientHeight;
		}
	   	//alert(this.menuepoint.offsetWidth);
	    if(parseInt(this.pxtop) + parseInt(this.divObj.offsetHeight) > parseInt(winHeight) && parseInt(winHeight)>parseInt(this.divObj.offsetHeight)){
	    	this.divObj.style.top = parseInt(winHeight)-this.divObj.offsetHeight; 
	    	
	    }
	    if(parseInt(this.pxleft) + parseInt(this.divObj.offsetWidth) > parseInt(winWidth)){
	    	this.divObj.style.left = parseInt(this.pxleft) - parseInt(this.divObj.offsetWidth) - parseInt(this.menuepoint.offsetWidth)+10; 
	    	
	    }
	}
}

biSubMenue.prototype.createNavpoint=function(menuepointNode){
	menueTr = document.createElement("tr");
	this.menueTbody.appendChild(menueTr);
	menuepoint=document.createElement("td");
	menuestr="<table width='100%' cellspacing=0 cellpadding=0><tr><td class='biNavpoint'>";
	menueText=menuepointNode.attributes[0].value;
	menueText=menueText.replace(/\|\*\|/,"&");
	menuestr+=menueText;
	menuepoint.submenue=new biSubMenue(menuepoint,menuepointNode.attributes[1].value,"x",this.filename);
	menuepoint.parentObj=this;
	if(menuepointNode.attributes[5].value >0){
		menuestr+="</td><td align='right' style='padding-left:10px;'><img src='img/greyboxed.gif' border=0>";
		menuepoint.onmouseover=function(){
			this.className="naviOver";
			kickSel("hidden");
			this.parentObj.clearSubMenues();
			this.submenue.createSubmenue();
		};
		menuepoint.onmouseout=function(){
			this.className="biplanSubMenueRow";
			if(this.submenue.divObj)
				this.submenue.divObj.subMenueOut();
		};
		this.divObj.subMenueList.push(menuepoint.submenue);
	}else{
		menuepoint.onmouseover=function(){
			this.className="naviOver";
		};
		menuepoint.onmouseout=function(){
			this.className="biplanSubMenueRow";
		};
	}
	menuestr+="</td></tr></table>";
	if(menuepointNode.attributes[4].value > 0)
		menuepoint.onmousedown =function(){getTarget(menuepointNode.attributes[1].value,menuepointNode.attributes[3].value,menuepointNode.attributes[4].value);}
	menuepoint.innerHTML=menuestr;
	menuepoint.className="biplanSubMenueRow";
	menueTr.appendChild(menuepoint);
	
}

biSubMenue.prototype.subMenueOut = function(){
	if(!this.timer && document.getElementById(this.id)){
		functionStr="document.getElementById('"+this.id+"').delSubMenue()";
		this.timer = setTimeout(functionStr, 1000);
	}
}

biSubMenue.prototype.subMenueIn = function(){
	if(this.timer)
		clearTimeout(this.timer);
	this.timer=null;
}

biSubMenue.prototype.delSubMenue = function(){
	clearTimeout(this.timer);
	var ok=false;
	if(this.subMenueList && this.subMenueList.length>0){
		for(var i=0; i< this.subMenueList.length;i++){
			if(this.subMenueList[i].divObj)
				if( this.subMenueList[i].divObj.created)
					ok=true;	
		}
	}
	if(ok){
		functionStr="document.getElementById('"+this.id+"').delSubMenue()";
		this.timer = setTimeout(functionStr, 1000);
	}else{
		this.timer=null;
		this.created=false;
		this.bodyObj.removeChild(this);
		kickSel("visible");
	}
}
biSubMenue.prototype.addAttribute=function(attrElement,attribute,value){
	elAttribute = document.createAttribute(attribute);
	elAttribute.nodeValue = value;
	attrElement.setAttributeNode(elAttribute);
}
biSubMenue.prototype.clearAllSubMenues=function(){
	for(var i=1;i<=z;i++){
		if(document.getElementById("submenue"+i)){
			clearTimeout(document.getElementById("submenue"+i).timer);
			document.getElementById("submenue"+i).created=false;
			this.bodyObj.removeChild(document.getElementById("submenue"+i));
		}
	}
}

biSubMenue.prototype.clearSubMenues=function(){
	for(var i=0;i<this.divObj.subMenueList.length;i++){
		if(this.divObj.subMenueList[i].divObj && this.divObj.subMenueList[i].divObj.created){
			//alert(this.divObj.subMenueList[i].divObj.id);
			clearTimeout(this.divObj.subMenueList[i].divObj.timer);
			this.divObj.subMenueList[i].divObj.created=false;
			this.bodyObj.removeChild(document.getElementById(this.divObj.subMenueList[i].divObj.id));
			//this.bodyObj.removeChild(this.divObj.subMenueList[i].divObj);
		}
	}
}

