/*** JavaScript ***/

jQuery.noConflict();

(function($){
	$(function() {
		/**
		 * Footer unten ausrichten, falls die Seite zu kurz ist, also zu wenig Inhalt hat, so dass der Footer von selbst unten waere
		 * @author tgross
		 */
		if ( ($("#wrapper").height() + $("#footer_wrapper").height()) < $("body").height() ) {
			// padding loeschen, sonst Whitespace unter Footer in Hoehe des Paddings.
			$("#wrapper").css({ minHeight: "100%", paddingBottom: 0 });
			$("#footer_wrapper").css("bottom", "0px");
		}
		
		if ($.browser.msie) {
			/**
			 * fuer IE7 die Breite der Links in der subnavi setzen
			 * @author lkimmel
			 */
			if (parseInt($.browser.version) < 8) {
				$("#navi ul ul").css("display", "block");
				var maxWidth;
				var findMaxWidth = function () {
					if (maxWidth < $(this).width()) {
						maxWidth = $(this).width();
					}
				};
				var traverseSubNavi = function () {
					maxWidth = 0;
					$(this).children().each(findMaxWidth).width(maxWidth);
				};
				$("#navi>ul>li>ul").each(traverseSubNavi);
				$("#navi>ul>li>ul>li>ul").each(traverseSubNavi);
				$("#navi ul ul").css("display", "");
			}
			
			/**
			 * IE-Anpassung bei Hover in der Navi
			 * @author tgross
			 */
			$("#navmenu-h li,#navmenu-v li").hover(
				function() {
					$(this).addClass("iehover");
				}, function() {
					$(this).removeClass("iehover");
				}
			);
		}
		
		/**
		 * Untermenues in dritter Ebene auffuellen, sodass sie immer Buendig mit 
		 * Header sind, aber erster Eintrag buendig mit Menuepunkt in hoeherer 
		 * Ebene
		 * @author lkimmel
		 */
		$("#navi ul ul ul").each(function() {
			var $this = $(this);
			// Eltern-Menue
			var $parentMenu = $this.parent().parent();
			
			var parentTopOffset = $parentMenu.offset().top;
			var myTopOffset = $this.offset().top;
			var parentPadding = parseInt($parentMenu.css("padding-top"));
			var myPadding = parseInt($this.css("padding-top"));
			
			$this.css({
				paddingTop: myTopOffset-parentTopOffset,
				top: parentTopOffset-myTopOffset + parentPadding-myPadding
			});
		});
		
		/**
		 * Navigation neu ausrichten, falls die anzeigbare Seitenbreite ueberschritten wird
		 * @author tgross
		 */
		var body_width = $("body").width();
		$("#navmenu-h > li > ul").each(function() {
			// Flag fuer die Aenderung auf rechtsbuendige Ausrichtung
			var right_align = 0;
			// left-Position des (sichtbaren) Hauptnavi-Elements ermitteln
			var parent_offset_left = $(this).parent().offset().left;
			// Breite des aktuellen UL ermitteln (2. Ebene)
			var first_ul_width = $(this).width();
			// Differenz ermitteln, um festzustellen, welches Element ueber die BODY-Breite hinausragt
			var result_left = body_width - parent_offset_left - first_ul_width;

			// Treffer, UL der 2. Ebene ist schon zu breit
			if (result_left < 0) {
				right_align = 1;
			} else {
				// jetzt folgt die ueberpruefen, ob ein UL der 3. Ebene ueber den BODY hinausragt, dann wird das UL der 2. Ebene naemlich auch rechtsbuendig ausgerichtet
				var max_width_next_ul = 0;
				$(this).children("li").children("ul").each(function() {
					// Breite des aktuellen UL ermitteln (3. Ebene)
					var second_ul_width = $(this).width();
					// Maximalwert aller UL ermitteln
					max_width_next_ul = (max_width_next_ul < $(this).width()) ? second_ul_width : max_width_next_ul;
					// Differenz ermitteln, um festzustellen, welches Element ueber die BODY-Breite hinausragt
					var result_left = body_width - parent_offset_left - first_ul_width - max_width_next_ul;
					
					if (result_left < 0) {
						right_align = 1;
					}
				});
			}
			
			// sowohl 2. als auch 3. Ebene rechts ausrichten, falls das Flag gesetzt ist
			if (right_align) {
				$(this).addClass("right_align");
			}
		});
		
		/**
		 * Links der Hauptnavi auf den 1. Unterpunkt umleiten
		 * @author tgross
		 */
		$("#navmenu-h > li > a").each(function() {
      $(this).attr("href", $(this).next().children("li:eq(0)").children("a").attr("href"));
    });
    
		/**
		 * Startseite: Effekt der Teaser
		 * @author tgross
		 */
		if ($(".kwicks").length) {
			$(".kwicks").kwicks({
				max: 470,
				duration: 400,
				sticky: true
			});
			
			// Links unterstreichen bei hover
			$(".kwicks div").hover(function() {
				$(this).children("a").addClass("hover");
			}, function() {
				$(this).children("a").removeClass("hover");
			});

			// Klick auf DIV oeffnet Link
			$(".kwicks div").click(function() {
				location.href = $(this).children("a").attr("href");
			});
		}
		
		/**
		 * Formularfelder: Fehler-Klasse entfernen, Standardbegriffen entfernen (die im title-Attribut stehen)
		 * @author tgross
		 */
		$("select, input, textarea").focus(
			function() {
				$(this).removeClass("input_error").prev("label").removeClass("input_error");
				if($(this).val() == $(this).attr("title")) {
					$(this).val("");
				}
				return false;
			}
		);
		/**
		 * Formularfelder: Standardbegriffen setzen (die im title-Attribut stehen)
		 * @author tgross
		 */
		$("input, textarea").blur(
			function() {
				if($(this).val() === "") {
					$(this).val( $(this).attr("title") );
				}
				return false;
			}
		).blur();
    
		/**
		 * Colorbox: Untertitel mit Lupen-Link ergaenzen
		 * @author tgross
		 */
    $(".rzcolorbox").parent().next().addClass("magnifier").append('<a class="magnifier_link"></a>');
    $(".magnifier_link").click(function() {
      $(this).parent().prev().children("a").click();
    });
	});
})(jQuery);
