/**
 * Hier werden alle Funktionalitäten die mit der Navigation zusammenhängen bereitgestellt
 */
 
$(function() {
	
	navigation.init();
	
});
	
var navigation = function() {
	var linksWithSubnav = ["produkte", "leistungen", "unternehmen", "karriere", "kontakt"/*, "downloads"*/];
	var delay = 300;
	var IE6 = window.IE6 || false;
	var language = window.lang || 'de';
	
/**
 * addOverHandlerTopNav legt die MouseOver und MouseOut Events für die Topnavigation an
 */
	function addOverHandlerTopNav() {
		buildDomForAnim();
		
		$("#navlist > li").each(function() {
			var id = $(this).attr("id").match(/[a-z]+$/)[0];
			var animLink = $(this).find(">a:first");
			animLink.css("cursor", "pointer");
			$(this).css("cursor", "pointer");
			
			if(id.isInArray(linksWithSubnav)) { // wenn der link eine subnavi hat
				$(this).hover(
					function() {
						var $this = $(this);
						
						if($this.data("timeout")) {
							clearTimeout($this.data("timeout"));
							$this.data("timeout", null);
						}
						
						if(!IE6) {
							animLink
								.addClass("hovered").fadeIn("normal") // Link faden
								.next().next() // .subnavlist
								.slideDown("normal"); // Subnavi ausfahren
						}
						else {
							animLink.addClass("hovered")
							.next()
							.slideDown("normal");
						}
					},
					function() {
						$(this).data("timeout", setTimeout(function() {
							if(!IE6) {
								animLink
									.fadeOut("normal", function() {$(this).removeClass("hovered");})
									.next().next()
									.slideUp("normal");
							}
							else {
								animLink
									.removeClass("hovered")
									.next()
									.slideUp("normal");
							}
						}, delay));
					}
				);
			}
			else { // wenn der link keine subnavi hat
				$(this).hover(
					function() {
						if(!IE6)
							animLink.addClass("hovered").fadeIn("normal");
						else
							animLink.addClass("hovered");
					},
					function() {
						if(!IE6)
							animLink.fadeOut("normal", function() { $(this).removeClass("hovered"); });
						else
							animLink.removeClass("hovered");
					}
				);
			}
		});
	}
	
/**
 * addOverHandlerSubNav legt die MouseOver und MouseOut Events für die Unternavigationspunkte an
 */
	function addOverHandlerSubNav() {
		$(".subnavlist > li:has(.subnavlist-level2)").hover(
			function() {
				$(this)
					.find(">span a")
					.addClass("hovered")
					.parent().next() // .subnavlist-level2
					.slideDown("normal");
			},
			function() {
				$(this)
					.find(">span a")
					.removeClass("hovered")
					.parent().next() // .subnavlist-level2
					.slideUp("normal");
			}
		);
	}
	
/**
 * buildDomForAnim baut die DOM Struktur auf um die Topnavigation faden zu können
 */
	function buildDomForAnim() {
		if(IE6)
			return;
		
		$("#navlist > li").each(function() {
			var $this = $(this);
			var id = $this.attr("id");
			var link = $this.find(" > a").clone().prependTo("#"+id);
			
			if(!$this.hasClass("active")) {
				link.css({
					'display': 'none',
					'left': '0px',
					'position': 'absolute',
					'top': '0px',
					'z-index': '10'
				});
			}
			else { // erstelle einen leeren link
				link.css({
					'background': 'none',
					'display': 'none',
					'left': '0px',
					'position': 'absolute',
					'top': '0px',
					'z-index': '10'
				});
			}
			
			if(!$.support.opacity) { // IE macht die Alpha Transparenzen in den png bilder schwarz während der animation!
				id = id.match(/[a-z]+$/)[0];
				link.css({
					"filter": "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/navi/"+language+"/"+id+".png', sizingMethod='crop')",
					"background": "none"
				})
			}
		});
	}
	
	
	return {
		init: function() { addOverHandlerTopNav(); addOverHandlerSubNav(); }
	};
}();

/* HELPER Funktion */
String.prototype.isInArray = function(array) {
	for(var i=0, len=array.length; i<len; i++)
		if(this == array[i])
			return true;
			
	return false;
}