$(document).ready(function() {
    /*Suchbox*/
    var firmen_suche = $("li.firmen_suche");
    var web_suche = $("li.web_suche");
    var form_suche = $("form.suche");
    
    /*Actions*/
    var firmen_suche_action = form_suche.attr("action");
    var web_suche_action = "/suche/";
    
    /*Aktiv bei initialem Aufruf*/
    var aktiv = firmen_suche;
    
    /*Firmensuche angeklickt*/
    firmen_suche.click(function() {
       if (aktiv != firmen_suche) {
            web_suche.removeClass("aktiv");
            firmen_suche.addClass("aktiv");
            form_suche.attr("action", firmen_suche_action);
            aktiv = firmen_suche;
       }
    });
    /*Web-Suche angeklickt*/
    web_suche.click(function() {
       if (aktiv != web_suche) {
            firmen_suche.removeClass("aktiv");
            web_suche.addClass("aktiv");
            form_suche.attr("action", web_suche_action);
            aktiv = web_suche;
       }
    });
    
    /*Input Feld leeren*/
    var input_suche = $("input.input_suche");
    input_suche.click(function() {
       input_suche.attr("value", ""); 
    });
    
    
    /*Child-Wrapper*/
    
    // Fuer den Fall, dass JavaScript nicht aktiv ist, sind die Links initial mit der entsprechenden URL belegt.
    // Andernfalls wird die URL entfernt und durch '#' ersetzt, damit die Wrapper-Navi arbeiten kann.
    $("ul.main-nav li#btn-gastbesucher a").attr("href", "#");
    $("ul.main-nav li#btn-fachbesucher a").attr("href", "#");
    $("ul.main-nav li#btn-login a").attr("href", "#");
    
    // Initiale Variablen
    var wrapper_aktiv = false;
    var child_wrapper = null;
    var aktive_kategorie = null;
    var angeklickte_kategorie = null;
    var fadeComplete = false;
    var dropdown_close = $("a.dropdown_close_link");
    
    // dropdown_close_link initial ausblenden
    dropdown_close.css("display", "none");
    
    $("ul.main-nav li").click(
        function() {
            angeklickte_kategorie = $(this).attr("id");
            // Child-Wrapper bereits offen?
            // 1.) Noch nicht offen
            if(!wrapper_aktiv) {
				// Gegebenfalls ausgewählte li-Elemente deselektieren
				$("ul.main-nav li.open").removeClass("open");
                // li-Element auf 'selected' setzen
                $(this).addClass("open");
				//Test ob Child-Wrapper vorhanden, falls Ja einblenden
				if($("#children_" + angeklickte_kategorie).length) {
					//Child-Wrapper mit der entsprechenden Klasse oeffnen
					child_wrapper = $("#children_" + angeklickte_kategorie);
					child_wrapper.slideDown("slow");
					// dropdown_close_link einblenden
					dropdown_close.fadeIn("slow");
					// Child-Wrapper ist nun offen
					wrapper_aktiv = true;
				}
                // Aktive Kategorie ist die angeklickte
                aktive_kategorie = angeklickte_kategorie;
            }
            // 2.) Bereits offen
            else {
                // Ist offene Kategorie nochmal angeklickt wurden?
                // 2.1) Ja -> Child-Wrapper schliessen
                if(aktive_kategorie == angeklickte_kategorie) {
                    // Child-Wrapper schliessen
                    child_wrapper.slideUp("slow");
                    child_wrapper = null;
                    // Klasse 'selected' vom li-Element entfernen
                    $(this).removeClass("open");
                    // Aktive Kategorie zuruecksetzen
                    aktive_kategorie = null;
                    // Child-Wrapper ist wieder geschlossen
                    wrapper_aktiv = false;
                }
                // 2.2) Andere Kategorie wurde angeklickt -> Wrapper ueberblenden
                else {
                    // Alten Wrapper ausblenden und im Callback neuen Wrapper initialisieren und einblenden
                    child_wrapper.fadeOut("slow", function() {
                            fadeComplete = true;
							//Test ob Child-Wrapper vorhanden, falls Ja einblenden
							if($("#children_" + angeklickte_kategorie).length) {
								child_wrapper = $("#children_" + angeklickte_kategorie);
								if (fadeComplete) {
									child_wrapper.fadeIn("slow");
								}
							}
							else {
								wrapper_aktiv = false;
								child_wrapper = null;
							}
                        }
                    );
                    // li-Elemente tauschen
                    $("ul.main-nav li.open").removeClass("open");
                    $(this).addClass("open");
                    // aktive_kategorie neu belegen
                    aktive_kategorie = angeklickte_kategorie;
                }
            }
        }
    );
    
    $("a.dropdown_close_link").click(
        function () {
            if(wrapper_aktiv) {
            // Es gibt offene Kategorie, dann:
            // 1.) Wrapper schließen und dekativieren
            child_wrapper.slideUp("slow", function() {
                child_wrapper = null;
                // 1.2.) Klasse 'selected' vom li-Element entfernen
                $("ul.main-nav li.open").removeClass("open");
                // 1.3.) Aktive Kategorie zuruecksetzen
                aktive_kategorie = null;
                // 1.4.) Child-Wrapper ist wieder geschlossen
                wrapper_aktiv = false;
                }
            );
            }
        }
    );
    
    /* Dynamischer Absatz */
    var paragraph = $(".dyn_paragraph");
    // Zunaechst alle ausblenden
    paragraph.children(".dyn_description").css("display", "none");
    // Absatz einblenden
    paragraph.children(".dyn_toggle").toggle(
        function() {
            $(this).children("a").removeClass("more");
            $(this).children("a").addClass("less");
            $(this).parents().children(".dyn_description").slideDown();
        },
        function() {
            $(this).children("a").removeClass("less");
            $(this).children("a").addClass("more");
            $(this).parents().children(".dyn_description").slideUp();
        }
    );
    
    // Slideshow
    if($('.firmenSlideShow').length > 0) {
		$('.firmenSlideShow').slideShow({
			start: "random",
			interval: 5,
			slideSize: "total"
		});
    }
});

