/* ////////////////////////////////////////////////////////////////
                                Men?                               
                               By i4m                              
///////////////////////////////////////////////////////////////////

Struktur:

<ul id="//menuid//">
  <li><a>//Hauptmen?punkt//</a>
    <ul>
      <li><a>//Untermen?punkt//</a></li>
    </ul>
  </li>  //Der LI-Schluss-Tag muss nach der UL der Untermen?punkte stehen!
</ul>
<script language="javascript">newmenu('//menuid//');</script>

*/


menu_timeout = 300;  // Millisekunden bis das Men? wieder verschwindet. (sollte ?ber 100 sein)
activeitem = true;  // Wenn der Haupmen?punkt aktiv bleiben soll beim ?berfahren des Submen?s

function hasli(objekt, tag){  // gibt die Anzahl der Unterobjekte zur?ck
	if(tag=="a"){  // gibt die Anzahl der A-Unterobjekte zur?ck
		if(objekt.getElementsByTagName("div")[0].getElementsByTagName("a").length > 0){
			return objekt.getElementsByTagName("div")[0].getElementsByTagName("a").length;	
		}
		return false;
	}
	else{  // gibt die Anzahl der LI-Unterobjekte zur?ck
		if(objekt.getElementsByTagName("li").length > 0){
			return objekt.getElementsByTagName("li").length;	
		}
		return false;		
	}
}
function newmenu(menuid){  // intialisiert das Men?
	isie = Boolean(document.body.currentStyle)  // ?berpr?ft ob es Sich um einen IE handelt
	isns = Boolean(window.navigator.userAgent.indexOf("Netscape") != -1);  // ?berpr?ft ob es Sich um einen NS handelt
	isnoff15 = Boolean(window.navigator.userAgent.indexOf("Firefox") != -1 && window.navigator.userAgent.indexOf("1.5") == -1 );  // FF nicht Versoin 1.5
	if(isnoff15){  // erstellt ein Element mit dem sp?ter die Textbreite festgestellt wird.
		document.write('<a href="#" id="textbreite"></a>');
	}
	menupunkte = new Array();  // Hauptmen?punkte
	submenupunkte = new Array();  // Sumben?punkte
	menuover = new Array();  // Hier wird gespeichert welches Men? gerade Aktiv ist
	liobjekte = document.getElementById(menuid).getElementsByTagName("li");  // Alle LI-Objekte im Men?
	for(i=0; i<liobjekte.length; i++){
		if(hasli(liobjekte[i], "li")){  // Wenn der Men?punkt Untermen?punkte hat
			submenupunkte[menupunkte.length] = new Array();  // neues Array f?r die Submen?punkte
			menupunkte[menupunkte.length] = liobjekte[i];  // Objekt in Array speichern
			menupunkte[menupunkte.length-1].innerHTML = menupunkte[menupunkte.length-1].innerHTML.split("<UL").join("<DIV").split("</UL>").join("</DIV>").split("<LI>").join("").split("</LI>").join("").split("<ul").join("<div").split("</ul>").join("</div>").split("<li>").join("").split("</li>").join("");  // alle UL durch DIV ersetzen und alle LI l?schen
			menupunkte[menupunkte.length-1].getElementsByTagName("div")[0].style.visibility = "hidden";  // dieses Submen? ausblenden
			menupunkte[menupunkte.length-1].getElementsByTagName("div")[0].mid = menupunkte.length-1;  // Eigenschaft mid dem Submen? hinzuf?gen
			menupunkte[menupunkte.length-1].getElementsByTagName("div")[0].onmouseover = function(){  // Ereigniss wenn der Cursor ?ber das Submen? bewegt wird
				submenu_over(this.mid);
			}			
			menupunkte[menupunkte.length-1].getElementsByTagName("div")[0].onmouseout = function(){  // Ereigniss wenn der Cursor das Submen? verl?sst
				submenu_out(this.mid);
			}
			menupunkte[menupunkte.length-1].getElementsByTagName("a")[0].mid = menupunkte.length-1;  // Eigenschaft mid dem Hauptmen?punkt hinzuf?gen
			menupunkte[menupunkte.length-1].getElementsByTagName("a")[0].onmouseover = function(){  // Ereigniss wenn der Cursor ?ber den Hauptmen?punkt bewegt wird
				menu_over(this.mid);
			}
			menupunkte[menupunkte.length-1].getElementsByTagName("a")[0].onmouseout = function(){  // Ereigniss wenn der Cursor den Hauptmen?punkt verl?sst
				menu_out(this.mid);
			}
			var maxwidth = 0;  // Variable zur Feststellung des breitesten Elements des Submen?s wird auf 0 gesetzt
			if(isnoff15){  // Wenn es sich um einen FF nicht 1.5 handelt wird dem Element zur Feststellung der Breite der Style des ersten A ?bergeben
				document.getElementById("textbreite").style.fontSize = window.getComputedStyle(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0],"").fontSize;
				document.getElementById("textbreite").style.fontFamily = window.getComputedStyle(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0],"").fontFamily;
				document.getElementById("textbreite").style.fontWeight = window.getComputedStyle(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0],"").fontWeight;
				document.getElementById("textbreite").style.paddingLeft = window.getComputedStyle(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0],"").paddingLeft;
				document.getElementById("textbreite").style.paddingRight = window.getComputedStyle(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0],"").paddingRight;
			}
			for(j = 0; j < hasli(menupunkte[menupunkte.length-1], "a"); j++){  // Alle Untermen?punkte werden durchgelaufen
				menupunkte[menupunkte.length-1].getElementsByTagName("div")[0].getElementsByTagName("a")[j].id = "m"+i+"sm"+j;  // eindeutige ID wird gesetzt
				submenupunkte[menupunkte.length-1][j] = menupunkte[menupunkte.length-1].getElementsByTagName("div")[0].getElementsByTagName("a")[j];  // Element wird dem Array f?r Submen?punkte zugeteilt
				if(isie | isns){  // Wennn es sich un einen IE oder NS handelt muss die Breite des Untermen?punkts festgestellt werden
					if(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[j].offsetWidth*1 > maxwidth){
						//alert(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[j].offsetWidth);
						maxwidth = liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[j].offsetWidth*1;
						//alert(maxwidth);
						maxwidth=maxwidth+1;
					}
				}
				else if(isnoff15 && textwidth(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[j].innerHTML) > maxwidth){  // Wennn es sich un einen FF nicht 1.5 handelt muss die Breite des Untermen?punkts festgestellt werden mit Hilfe der Funktion Textwidth
					maxwidth = textwidth(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[j].innerHTML);
				}
			}  
			if(isie | isns | isnoff15){ // Wenn die Breite festgestellt werden musste wird sie gesetzt
				liobjekte[i].getElementsByTagName("div")[0].style.width = maxwidth + "px";  // der DIV-Container des Submen?s wird auf die richtige Breite gesetzt
				if(isie){  // Wenn es sich um einen IE handelt kann der aktuelle Stye mit der Eigenschaft currentStyle festgestellt werden
					maxwidth = maxwidth - (parseInt(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0].currentStyle.paddingLeft) + parseInt(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0].currentStyle.paddingRight));
				}
				else{  // Ansonsten wird der Style mit getComputedStyle festgestellt
					maxwidth = maxwidth - (parseInt(window.getComputedStyle(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0],"").getPropertyValue("padding-left"))  +  parseInt(window.getComputedStyle(liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0],"").getPropertyValue("padding-right")));
				}
				for(j = 0; j < hasli(liobjekte[i], "a"); j++){  // Alle Untermen?punkte werden durchgelaufen
					liobjekte[i].getElementsByTagName("div")[0].getElementsByTagName("a")[j].style.width = maxwidth + "px";  // die Breite des Untermen?punkts wird gesetzt
				}
			}
		}
	}
	for(i=0; i<menupunkte.length; i++){
		menupunkte[i].getElementsByTagName("a")[0].urclass = menupunkte[i].getElementsByTagName("a")[0].className;
	}
	// CSS-Classen f?r erstes und letztes Element werden gesetzt
	menupunkte[menupunkte.length-1].getElementsByTagName("div")[0].className += " last";
	menupunkte[0].getElementsByTagName("div")[0].className += " first";
	menupunkte[menupunkte.length-1].getElementsByTagName("a")[0].className += " last"
	menupunkte[0].getElementsByTagName("a")[0].className += " first";
	for(i=0; i< menupunkte.length; i++){
		submenupunkte[i][0].className += " first";
		submenupunkte[i][submenupunkte[i].length-1].className += " last";
	}
	if(isie){  // Wenn es sich um einen IE handelt wird der Selectbox-Bug umgangen
		fixIeSelectBoxBug();
	}
	if(isnoff15){ // Wenn es sich um einen FF nicht 1.5 handelt wird das Element zur Feststellung der Breite entfernt
		document.getElementById("textbreite").innerHTML = "";
		document.body.innerHTML.split('<a href="#" id="textbreite"></a>').join("");
	}
}
function menu_over(mid){
	menueinbl(mid);  // Submen? wird eingeblendet und andere ausgeblendet
	menuover[mid] = true;  // Wenn diese eigenschaft true ist dann wird das Submen? bei einem Timeout nicht ausgeblendet
	window.clearInterval(interval);  // Intervall wird gel?scht
}
function menu_out(mid){
	menuover[mid] = false;  // Wenn diese eigenschaft true ist dann wird das Submen? bei einem Timeout nicht ausgeblendet
	window.clearInterval(interval);  // Intervall wird gel?scht
	interval = window.setInterval("menuout_time("+mid+")", menu_timeout);  // Intervall wird gesetzt
}
function submenu_over(mid){
	menuover[mid] = true;  // Wenn diese eigenschaft true ist dann wird das Submen? bei einem Timeout nicht ausgeblendet
	window.clearInterval(interval);  // Intervall wird gel?scht
}
function submenu_out(mid){
	menuover[mid] = false;  // Wenn diese eigenschaft true ist dann wird das Submen? bei einem Timeout nicht ausgeblendet
	window.clearInterval(interval);  // Intervall wird gel?scht
	interval = window.setInterval("menuout_time("+mid+")", menu_timeout);  // Intervall wird gesetzt
}
function menuout_time(mid){  // Wird durch einen Intervall aufgerufen
	if(menuover[mid] == false){  // Wenn diese eigenschaft true ist dann wird das Submen? bei einem Timeout nicht ausgeblendet
		menupunkte[mid].getElementsByTagName("div")[0].style.visibility = "hidden";
		menupunkte[mid].getElementsByTagName("a")[0].className = menupunkte[mid].getElementsByTagName("a")[0].className.split("active").join("");
	}
	window.clearInterval(interval);  // Intervall wird gel?scht
}
function menueinbl(mid){
	// Alle Submen?s werden ausgeblendet
	menupunkte[aktivmenu].getElementsByTagName("div")[0].style.visibility = "hidden";
	menupunkte[aktivmenu].getElementsByTagName("a")[0].className = menupunkte[aktivmenu].getElementsByTagName("a")[0].className.split("active").join("");
	menupunkte[aktivmenu].style.zIndex = 1;
	aktivmenu = mid;
	menupunkte[mid].style.zIndex = 200;
	menupunkte[mid].getElementsByTagName("div")[0].style.visibility = "visible";  // ?bergebenes Submen? wird eingeblendet
	if(activeitem){  // Wenn die Eigenschaft f?r ein aktiviertes Men?item true ist werden die AKTIV-Classen gesetzt
		if(mid==0){
			menupunkte[mid].getElementsByTagName("a")[0].className = menupunkte[mid].getElementsByTagName("a")[0].urclass + "active";
		}
		else if(mid == menupunkte.length-1){
			menupunkte[mid].getElementsByTagName("a")[0].className = menupunkte[mid].getElementsByTagName("a")[0].urclass + " active";
		}
		else{
			menupunkte[mid].getElementsByTagName("a")[0].className += " active";
		}
	}	
}
function fixIeSelectBoxBug(){  // IE Selectbox Bug wir durch eine Hinterlegung eines IFrames umgangen
	for(i=0; i<menupunkte.length; i++){
		menupunkte[i].getElementsByTagName("div")[0].innerHTML = menupunkte[i].getElementsByTagName("div")[0].innerHTML + '<iframe id="m'+ i +'-iframe" src="javascript:false;" scrolling="no" frameborder="0" style="position: absolute; top: 0px; left: 0px; display: none; filter:alpha(opacity=0);"></iframe> </A>';
		zwsubmenupunkte = menupunkte[i].getElementsByTagName("div")[0].innerHTML.split("</A>")
		for(j=0; j<submenupunkte[i].length; j++){
			zwsubmenupunkte[j] = zwsubmenupunkte[j] + ' <span> </span> </A>';
		}
		menupunkte[i].getElementsByTagName("div")[0].innerHTML = zwsubmenupunkte.join("");
		
		subma = menupunkte[i].getElementsByTagName("div")[0];
		iframe = document.getElementById('m'+ i +'-iframe');
		iframe.style.width = subma.offsetWidth;
		iframe.style.height = subma.offsetHeight;
		if(subma.currentStyle.borderTopWidth>0){
			iframe.style.top = -parseInt(subma.currentStyle.borderTopWidth);
		}
		if(subma.currentStyle.borderLeftWidth>0){
			iframe.style.left = -parseInt(subma.currentStyle.borderLeftWidth);
		}
		iframe.style.zIndex = subma.style.zIndex - 1;
		iframe.style.display = "block";	
	}
}
function textwidth(text){  // Wenn es sich um einen FF nicht 1.5 handelt wird diese Funktion ben?tigt um die Breite der Links festzustellen
	document.getElementById("textbreite").innerHTML =  text;
	return document.getElementById("textbreite").offsetWidth;
}
var interval;  // die Intervall Variable f?r das Timeout wird erstellt
aktivmenu = 0;
//-->