function replaceString (str) {
  var uml = new Array("_u_", "s|s", "a|e", "o|e", "u|e", "A|E", "O|E", "U|E","||");
  var ums = new Array("&", "ß", "ä", "ö", "ü", "Ä", "Ö", "Ü", "/");
  for (var i=0; i<uml.length; i++) {
     str = replaceAll(str, uml[i], ums[i]);
  }
  str= replaceAll(str,"_"," ");
  return str;
}

//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){
		navNode = document.getElementById(menueNode);
		this.menueUL = document.createElement("ul");
		this.menueUL.className="biNaviUL";
		navNode.appendChild(this.menueUL);
		for( var i=0 ;i < this.mainObjNode.childNodes.length; i++ ){
			this.createMainNavpoint(this.mainObjNode.childNodes[i]);
		}
	}
	
}



biMenue.prototype.createMainNavpoint=function(menueLINode){
	menueLI=document.createElement("li");
	menuestr="";
	menueText=menueLINode.attributes[0].value;
	/*menueText=replaceAll(menueText,"_u_","&");
	menueText=replaceAll(menueText,"|","/");
	menueText=replaceAll(menueText,"ae","ä");
	menuestr+=replaceAll(menueText,"_"," ");
	menuestr+=replaceString(menueText);*/
	menuestr+=replaceString(menueText);
	
	this.menueUL.appendChild(menueLI);

	menueLI.submenue=new biSubMenue(menueLI,menueLINode.attributes[1].value,"y",this.filename);
	menueLI.parentObj=this;
	if(menueLINode.attributes[5].value >0){

	//Effekte
		menueLI.onmouseover=function(){
			this.parentObj.clearAllSubMenues();
			this.submenue.createSubmenue();
		};
		menueLI.onmouseout=function(){
			this.submenue.divObj.subMenueOut();
		};
	}else{
		menueLI.onmouseover=function(){
			this.parentObj.clearAllSubMenues();
		};
		/*menueLI.onmouseout=function(){};*/
		if(menueLINode.attributes[4].value > 0)
			menueLI.onmousedown =function(){ 
				getTarget(menueLINode.attributes[1].value,menueLINode.attributes[3].value,menueLINode.attributes[4].value);
			}
	}
	// Ende Effekte
	menueLI.innerHTML=menuestr;
	menueLI.className="biNaviLI";
}



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)-0;
		else if(this.dir=="x")
			this.pxleft += parseInt(this.menuepoint.offsetWidth)-2;
		this.divObj = document.createElement("div");
	    this.divObj.className="biSubMenue";
	    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.subMenueIn=this.subMenueIn;
		this.divObj.delSubMenue=this.delSubMenue;
		this.divObj.onmouseover=function(){this.subMenueIn();};
		this.divObj.subMenueList=new Array();
		this.bodyObj.appendChild(this.divObj);

	    //getsubmenuenode
	    this.menueUL = document.createElement("ul");
		this.menueUL.className="biNaviSubUL";
	    for( var i=0 ;i < this.menuepointNode.childNodes.length; i++ ){
			this.createNavpoint(this.menuepointNode.childNodes[i],i,this.menuepointNode.childNodes.length-1);
		}
	    this.divObj.created=true;
	    this.divObj.appendChild(this.menueUL);
	    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,a,b){
	menuepoint=document.createElement("li");
	menuestr="";
	clsname="biNaviSubLI";
	if(a==b)clsname=clsname+" biNaviSubLILast";
	menueText=menuepointNode.attributes[0].value;
	/*menueText=replaceAll(menueText,"_u_","&");
	
	menueText=replaceAll(menueText,"|","/");
	menueText=replaceAll(menueText,"ae","ä");
	
	menuestr+=replaceAll(menueText,"_"," ");*/
	
	
	menuestr+=replaceString(menueText);
	
	menuepoint.submenue=new biSubMenue(menuepoint,menuepointNode.attributes[1].value,"x",this.filename);
	menuepoint.parentObj=this;
	if(menuepointNode.attributes[5].value > 0){
		menuepoint.onmouseover=function(){
			this.parentObj.clearSubMenues();
			this.submenue.createSubmenue();
		};
		menuepoint.onmouseout=function(){
			if(this.submenue.divObj)
				this.submenue.divObj.subMenueOut();
		};
		
		/*extraLI = document.createElement("span");
		extraLI.style.float="right";
		extraLI.innerHTML=" >";
		this.menueUL.appendChild(extraLI);*/
		
		menuepoint.className=clsname+" biNaviSubLIArrow";
		this.divObj.subMenueList.push(menuepoint.submenue);
		
	}else{
		if(menuepointNode.attributes[4].value > 0)
			menuepoint.onmousedown = function(){
				getTarget(menuepointNode.attributes[1].value,menuepointNode.attributes[3].value,menuepointNode.attributes[4].value);
			}
			menuepoint.className=clsname;
		/*menuepoint.onmouseover=function(){};
		menuepoint.onmouseout=function(){};*/
	}
	menuepoint.innerHTML=menuestr;
	
	this.menueUL.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);
	}
}

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);
		}
	}
}

