// Funktionalität des Hauptmenüs - OFL //

var menuids=["ofl_nav"]; //Enter id(s) of navigation UL menus, separated by commas
var hide_items = new Array();
var show_items = new Array();
var hide_delay = 200; //?? ms + 100ms

// Menüs erzeugen
function buildsubmenus(){
	for (var i=0; i<menuids.length; i++){
		
		// Alle UL Elemente holen (definieren jeweils ein Menü/Untermenü)
		var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul");
	    for (var t=0; t<ultags.length; t++){
	    	

			// Menüelemente positionieren
			if (ultags[t].parentNode.parentNode.id==menuids[i]){ //if this is a first level submenu
				ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px"; //dynamically position first level submenus to be width of main menu item
			} else { //else if this is a sub level submenu (ul)
				ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px"; //position menu to the right of menu item that activated it
			}
			
	    	ultags[t].parentNode.onmousemove=function(){

					show_item(this);

					var menus = this.parentNode.getElementsByTagName("ul");
					for(var i = 0; i < menus.length; i++){
						if(menus[i].style.display == 'block' && menus[i]!=this && menus[i]!=this.parentNode){
							// nicht anzeigen, aber für Anzeige vormerken
							show_items[show_items.length] = this;
							return;
						}
					}

		    		this.getElementsByTagName("ul")[0].style.display="block";
	    
	    	};
	    	
	    	ultags[t].parentNode.onmouseout=function(){
	    		
	    		remove_from_show_items(this);
	    		
	    		// in Ausblende-Queue einreihen
	    		var obj  = new Object();
	    		var date = new Date();
	    		obj.time = date.getTime() + hide_delay;
	    		obj.item = this;
	    		hide_items[hide_items.length] = obj;
	    		setTimeout(process_lists, hide_delay + 100); // Verstecken Funktion triggern
	    	};
	    	
		}
		
		// Zum Start alle Submenüs ausblenden
		for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
			ultags[t].style.visibility="visible";
			ultags[t].style.display="none";
		}
		
	}
}

function show_item(obj){
	// entfernt ein Item aus der Ausblend-Liste
	
	var tmp = new Array();
	for(var i = 0; i < hide_items.length; i++){
		var objekt = hide_items[i];
		if(objekt.item != obj){
			tmp[tmp.length] = objekt;
		}
	}
	hide_items = tmp;	
}

function remove_from_show_items(obj){
	var tmp = new Array();
	for(var i = 0; i < show_items.length; i++){
		if(show_items[i] != obj){
			tmp[tmp.length] = show_items[i];
		}
	}
	show_items = tmp;		
}

function process_lists(){
	// Array durchlaufen und zu versteckende Menüitems ausblenden
	
	var date = new Date();
	var tmp = new Array();
	for(var i = 0; i < hide_items.length; i++){
		var obj = hide_items[i];
		if(obj.time < date.getTime()){
			obj.item.getElementsByTagName("ul")[0].style.display="none";
		} else {
			tmp[tmp.length] = obj;
		}
	}
	hide_items = tmp;
	
	// Prüfen, welche Elemente jetzt sichtbar werden können
	for(var i = 0; i < show_items.length; i++){
		var menus = show_items[i].parentNode.getElementsByTagName("ul");
		var state = "block";
		for(var h = 0; h < menus.length; h++){
			if(menus[h].style.display == 'block' && menus[h]!=show_items[i] && menus[h]!=show_items[i].parentNode){
				state = "none";
			}
		}
	
		if(state=="block"){
			show_items[i].getElementsByTagName("ul")[0].style.display = state;	
			remove_from_show_items(show_items[i]);
		}
	}
}

// Eventlistener installieren, die nach dem Laden das Menü erzeugen
if (window.addEventListener) {
	window.addEventListener("load", buildsubmenus, false);
} else {
	if (window.attachEvent){
		window.attachEvent("onload", buildsubmenus);
	}
}