// IE-Patch fuer Hover bei List-Elementen:


/*
basiert auf einer Idee von 
http://www.meyerweb.com/eric/css/edge/menus/demo.html
Erweiterung fŸr den IE hinzugefŸgt.

@author: luzius@rufwerbung.ch

*/





function enableMenus() {
  if (navigator.userAgent.indexOf("MSIE 7")) {
   
    //return; // IE 7 Kann das!!!
  }
	if (!document.all) return;
	if (navigator.userAgent.indexOf("Opera")>-1) {
     return;
  }
	
	// Die Klassennamen der CSS Klassen, in der Reihenfolge ihrer Levels:
	//(Hauptklasse, Subklasse, SubSubKlasse, SubSubSubKlasse etc.):
	// Werden weitere Unterklassen nicht mehr angegeben, wird die zuletzt angegebene Klasse
	//verwendet.
	
	var cssClasses = new Array("mainItem", "firstLevel", "secondLevel");
	var cssHoverClasses = new Array("mainItem_hover", "firstLevel_hover","secondLevel_hover");
	
  // Experimentell:

	
	// Skipclassen sind Klassen, welche kein Hover beinhalten (bei li), oder
	// welche ausgeklappt bleiben sollen (bei ul).
	// Dies kann auch ueber entspr. CSS geloest werden, eine Einstellung hier
	// ist aber meistens einfacher:

	var skipClasses = new Array("foldout", "clicked", "active");
	
	





	// DONT EDIT BEHIND THIS LINE (except you know what you're doing :) //

	function isSkipClass (name) {
		for (var i=0;i<skipClasses.length;i++)
			if (skipClasses[i]==name) return true;
		return false;
	}

	// @param isWhat: 
	//                "hover": hover Klasse zurück
//	                 
//                   undefined, "",false, sonstwas: normale Klasse zurück.
	// 
	function getClassFromLevel(level, isWhat) {
		if ( isWhat=="hover" ) css = cssHoverClasses;
		//else if (isWhat=="active") css = cssActiveClasses;
		else css = cssClasses;
		
    if ( level<css.length )
			return css[level];
		else return css[css.length-1];	
	}
	
	function addLevel (node,l) {
		var i;
		if (node.id=="nav" || node.nodeName=="BODY") return l;
		(node.nodeName=="UL") ? i=1 : i=0;
		l=addLevel (node.parentNode, l+i);
		if (typeof node.listLevel=="undefined")
			node.listLevel=l;
		return l;
	}

	// Testet einen li-Tag, ob er in der Navigation enthalten ist:
	function isInNavigation (node) {
		var i;
		if (node.id=="nav") return true;
		if ( node.nodeName=="BODY") return false;
		l=isInNavigation (node.parentNode);
		return l;
	}
	
   
	var lis = document.getElementsByTagName("LI");
	for (var x=0;x<lis.length;x++) {
		var node = lis[x];
                if ( ! isInNavigation(node) ) continue;
		addLevel (node,0);
		node.onmouseover=function(e) {
		     
			// Alle Kinder der naechsten Ebene erhalten:
			for (var x=0;x<this.childNodes.length;x++){
				var n = this.childNodes[x];
				if (n.nodeName=="UL" && !isSkipClass(n.className)) {
					n.style.display="block";
				}
				
				if (this.nodeName!="LI") return;
				if ( ! isSkipClass(this.className))
						  this.className=getClassFromLevel(this.listLevel,"hover");
					
			}  //for
		}  // end mouseover function
		var def = node.style.bgColor;
		node.defaultStyle=def;
		node.onmouseout = function(e) {
			// Alle Kinder der naechsten Ebene erhalten:
			for (var x=0;x<this.childNodes.length;x++){
				var n = this.childNodes[x];
				if (n.nodeName=="UL" && !isSkipClass(n.className) )
					n.style.display="none";
			}
			// Klassenname resetten.
			if ( ! isSkipClass(this.className) )
						  this.className=getClassFromLevel(this.listLevel,false);
				//alert (this.className+this.listLevel);
			    
						
		} // end mouseout function			
	} // end for li

} // function

// Hier noch Menus enablen:
window.onload = function () {enableMenus();}
