// JavaScript Document
// Neue FlyOut Navigation
// benutzt jQuery

$(document).ready(function() {
	newFlyout.init();					   
});

var newFlyout = {
	
	
	init: function() {
		var flyOutMenues = $('#foNav_Container .li_lvl_1');
		flyOutMenues.each(function() {
			// Nav umbauen
			var cacheHTML = document.createElement("div");
			var thisFlyOuts = $(this).find(" ul.lvl_1 a");
			var thisFlyOut = this;
						
			thisFlyOuts.each(function(index) {
				var firstParent = $(this).parents("ul")[0];
				
				if (!firstParent || $(firstParent).hasClass("lvl_1")) {
					if (index > 0) {
						$(this).attr("class","fo_lvl1 next");
					} else {
						$(this).attr("class","fo_lvl1");
					}
					$(cacheHTML).append(this);
					
				} else if ($(firstParent).hasClass("lvl_2")) {
					$(this).attr("class","fo_lvl2");
					$(cacheHTML).append(this);
				} else if ($(firstParent).hasClass("lvl_3")) {
					$(this).attr("class","fo_lvl3");
					$(cacheHTML).append(this);
				}
			});
			
			$(this).find("ul.lvl_1").html(cacheHTML);
			
			
			// 3 oder 4 Spalten
			var colNums = 4;
			if ($(cacheHTML).height() < 1000) {
				colNums = 3;
				$(thisFlyOut).find("ul.lvl_1").css("width","615px");
			} else {
				$(thisFlyOut).find("ul.lvl_1").removeClass("left");
			}
			
			
			var colHeights = Number($(cacheHTML).height()) / colNums;
			
			for (var i=0;i<colNums;++i) {
				var newCol = document.createElement("div");
				$(newCol).addClass("fo_col");
				newCol.id = "col_"+i;
				$(this).find("ul.lvl_1").append(newCol);
			}
			
			var aktCol = 0;
			
			$(cacheHTML).find("a").each(function(index) {
				
				var thisCol = $(thisFlyOut).find('#col_'+aktCol);
				
				var thisLink = this;
				$(thisCol).append($(thisLink));
				if ($(thisCol).height() >= colHeights) {
					++aktCol;
				}
			});
			
			for (var j=0;j<3;++j) {
				// Check for Schusterjungen
				for (var i=0;i<(colNums-1);++i) {
					var thisCol = $(thisFlyOut).find('#col_'+i);
					var lastEntry = $(thisCol).find("a").filter(":last");			
					var nextCol = $(thisFlyOut).find('#col_'+(i+1));
					var nextColFirstEntry = $(nextCol).find("a").filter(":first");
					
					
					// Schusterjunge Lvl 1
					if (lastEntry.hasClass("fo_lvl1")) {
						if (nextColFirstEntry.hasClass("fo_lvl2")) {
							nextCol.prepend(lastEntry);
						}
					}
					
					// Schusterjunge Lvl 2
					if (lastEntry.hasClass("fo_lvl2")) {
						if (nextColFirstEntry.hasClass("fo_lvl3")) {
							nextCol.prepend(lastEntry);
						}
					}
				}
			
				// Check for Waisenkinder
				for (var i=1;i<colNums;++i) {
					var thisCol = $(thisFlyOut).find('#col_'+i);			
					var firstEntry = $(thisCol).find("a").filter(":first");
					var secondEntry = firstEntry.next();
					var prevCol = $(thisFlyOut).find('#col_'+(i-1));
				
					
					// Waisenkind Lvl2
					if (firstEntry.hasClass("fo_lvl2")) {
						if (!secondEntry.hasClass("fo_lvl2") && !secondEntry.hasClass("fo_lvl3")) {
							prevCol.append(firstEntry);
						}
					}
					
					// Waisenkind Lvl3
					if (firstEntry.hasClass("fo_lvl3")) {
						if (!secondEntry.hasClass("fo_lvl3")) {
							prevCol.append(firstEntry);
						} 
					}
				}
			}
			
			for (var i=0;i<colNums;++i) {
				// Lvl_1 Einträge in den Spalten ohne Linie oben
				var thisCol = $(thisFlyOut).find('#col_'+i);
				var firstEntry = $(thisCol).find("a").filter(":first");
				if (firstEntry.hasClass("fo_lvl1")) {
					firstEntry.removeClass("next");	
				}
			}		
			
			// Rahmen/Container bauen
			var header = document.createElement("div");
			var container = document.createElement("div");
			var footer = document.createElement("div");
			
			$(header).addClass("fo_header");
			$(container).addClass("fo_container");
			$(footer).addClass("fo_footer");
			
			if (colNums == 3) {
				$(header).addClass("threecol");
				$(container).addClass("threecol");
				$(footer).addClass("threecol");
			}
			
			$(thisFlyOut).find("ul.lvl_1").append(header).append(container).append(footer);
			
			var myCols = $(thisFlyOut).find(".fo_col");
			$(thisFlyOut).find(".fo_container").append(myCols);
			
			// CloseButton
			var closeButton = document.createElement("div");
			$(closeButton).addClass("closeButton");
			$(thisFlyOut).find(".fo_container").append(closeButton);
			$(thisFlyOut).find(".closeButton").click(function() {
				$(thisFlyOut).removeClass("fo_over");											  
			});
			
			// HoverStates
			$(thisFlyOut).bind('mouseenter',function() {
				$(thisFlyOut).addClass("fo_over");
			}).bind('mouseleave',function() {
				$(thisFlyOut).removeClass("fo_over");				
			});
		}); 
	}
}




