var sR_allOpen = 0;		// Gibt an, ob alle Toggle-Targets geoeffnet sind.
var sR_linksCount = 0;		// Enthaelt die Anzahl der Links in der Fusszeile.
var sR_showAllLinkLocation = 0;	// Gibt an, ob der "alle Tage einblenden"-Link in der Kopfzeile (1) oder in der Fusszeile (0) steht.
var sR_toggleTargetsCount = 0;	// Enthaelt die Anzahl der Toggle-Targets.
var sR_table_fullWidth = 586;	// Enthaelt die Breite, welche die Tabelle(n) mit den Sendungen haben soll, wenn es keinen Scrollbalken gibt.
$(document).ready(function() {
	// Pruefen, wieviele Toggle-Targets es gibt.
	$(".suchergebnis").find(".sendungen").each(function() {
		sR_toggleTargetsCount++;
	});
	// Drucken-Link zur Fusszeile hinzufuegen.
	$(".suchergebnis").parent().parent().find(".modulLinks").find("ul").prepend('<li id="listeDrucken"><a href="javascript:window.print();" title="Es &ouml;ffnet sich ein Druckdialog">Liste drucken</a><\/li>');
	// Pruefe, ob bereits eine Scrollbar angezeigt wird und fuehre entsprechende Anpassungen an der/den Tabelle(n) mit den Sendungen durch.
	sR_checkForScrollbar();
	// Pruefe, wieviele Links es in der Fusszeile gibt und fuehre entsprechende Anpassungen durch.
	sR_checkModuleLinks();
	// Alles weitere nur ausfuehren, wenn es mehr als ein Toggle-Target gibt.
	if (sR_toggleTargetsCount>1) {
		// Pruefe, ob die Klasse "bmSuchergebnis" im Dokument vorhanden ist, um zu ermitteln ob der "alle Tage einblenden"-Link in die Kopfzeile oder in die Fusszeile geschrieben werden muss.
		if( $(".bmSuchergebnis").length == 1 ) {
			// Fuege den "alle Tage einblenden"-Link zum Kopfbereich hinzu.
			$(".suchergebnis").parent().parent().find(".kopfbereich").find("#anzahlErgebnisse").after('<p><a href="javascript:sR_showAll();" id="alleTageEinblenden">[alle Tage einblenden]</a></p>');
			// Schreibe eine Variable, die bestimmt, das der "alle Tage einblenden"-Link im Kopfbereich steht.
			sR_showAllLinkLocation = 1;
		} else {
			// Fuege den "alle Tage einblenden"-Link zum Fussbereich hinzu.
			$(".suchergebnis").parent().parent().find(".modulLinks").find("#listeDrucken").after('<li id="alleTageEinblenden"><a href="javascript:sR_showAll();">alle Tage einblenden</a><\/li>');
			// Schreibe eine Variable, die bestimmt, das der "alle Tage einblenden"-Link im Fussbereich steht.
			sR_showAllLinkLocation = 0;
		}
		// Pruefe, wieviele Links es in der Fusszeile gibt und fuehre entsprechende Anpassungen durch.
		sR_checkModuleLinks();
		// Den Toggle-Triggern und den Toggle-Targets eine ID zuweisen um so eine Beziehung fuer z. B. Barrierefreiheit zueinander herzustellen.
		$(".suchergebnis").find(".sendungen").each(function(id) {
				$(this).attr('id', "sendungen"+id);
				$(this).prev()
					.attr('aria-controls', "sendungen"+id)
					.attr("role", "button")
					.attr("tabindex", "0");
			}
		);
		// Das DIV fuer den + und - Button anlegen.
		$(".suchergebnis").find(".ergebniszahl").after('<div class="button"><\/div>');
		// Alle Toggle-Targets bis auf das erste ausblenden.
		$(".suchergebnis").find(".sendungen:gt(0)").hide();
		// Fuehre die Funktion aus, welche automatisch die Klassen sowie Attribute aktualisiert und den Inhalt fuer Barrierefreiheit und Usability manipuliert.
		sR_stateSwitcher();
		// Toggle-Vorgang bei Click ausfuehren und die Variable entsprechend setzen. Inhalt fuer die Usability manipulieren.
		$(".suchergebnis").find(".titelzeile").click(function(){
			sR_toggleProcess(this);
		});
		// Toggle-Vorgang bei definierten Keyboard-Aktionen ausfuehren und die Variable entsprechend setzen. Inhalt fuer die Usability manipulieren.
		$(".suchergebnis").find(".titelzeile").bind("keydown", function(keyEvent) {
			if (((keyEvent.keyCode == 39 || keyEvent.keyCode == 40) && !$(this).next(".sendungen").is(':visible')) || ((keyEvent.keyCode == 37 || keyEvent.keyCode ==  38) && $(this).next(".sendungen").is(':visible')) || (keyEvent.keyCode == 32)) {
				sR_toggleProcess(this);
			}
		});
	}
});
// Pruefe, ob alle Toggle-Target geoeffnet sind.
function sR_checkAllOpen(e) {
	if (($(".suchergebnis").find(".sendungen:hidden").length == 0) && (sR_allOpen!=1)) {
		sR_allOpen=1;
	} else {
		sR_allOpen=0;
	}
	sR_stateSwitcher();
}
// Pruefe, ob bereits eine Scrollbar angezeigt wird und fuehre entsprechende Anpassungen an der/den Tabelle(n) mit den Sendungen durch.
function sR_checkForScrollbar() {
	// Initialisiere eine Variable mit der Hoehe des Container-Bereichs.
	containerHeight = $(".suchergebnis").parent().height();
	// Initialisiere eine Variable mit der Hoehe des Suchergebnis-Bereichs.
	searchResultHeight = $(".suchergebnis").height();
	// Pruefe, ob der Container-Bereich groesser ist, als der Suchergebnis-Bereich.
	if (containerHeight > searchResultHeight) {
		// Die Breite der Tabelle(n) entsprechend anpassen.
		$(".suchergebnis").find(".sendungen").width(sR_table_fullWidth+"px");
	} else {
		// Die Breite der Tabelle(n) entsprechend anpassen.
		$(".suchergebnis").find(".sendungen").width(sR_table_fullWidth-scrollbarWidth+"px");
	}
}
// Pruefe, wieviele Links es in der Fusszeile gibt und fuehre entsprechende Anpassungen durch.
function sR_checkModuleLinks() {
	// Initialisiere eine Variable, welche die Gesamtzahl der gefundenen Links enthaelt.
	sR_linksCount = 0;
	$(".suchergebnis").parent().parent().find(".modulLinks").find("li").each(function() {
		sR_linksCount++;
		// Dem Link eine Klasse mit der aktuellen Zaehlanzahl geben.
		$(this).find("a").attr("class", "button"+sR_linksCount);
		// Dem Elternelement per Klasse uebergeben, wieviele Links in der Fusszeile gefunden wurden.
		$(this).parent("ul").attr("class", "items"+sR_linksCount);
	});
}
// Alle Toggle-Targets bis auf das Erste schliessen.
function sR_showFirst() {
	// Aktualisiere die Variable.
	sR_allOpen=0;
	// Fuehre den Toggle-Vorgang durch.
	$(".suchergebnis").find(".sendungen:gt(0)").hide("fast", sR_stateSwitcher)
}
// Alle Toggle-Targets anzeigen.
function sR_showAll() {
	// Aktualisiere die Variable.
	sR_allOpen=1;
	// Fuehre den Toggle-Vorgang durch.
	$(".suchergebnis").find(".sendungen").show("fast", sR_stateSwitcher);
}
// Aktualisiere Klassen sowie Attribute und manipuliere den Inhalt fuer Barrierefreiheit und Usability.
function sR_stateSwitcher() {
	// Gehe ueber alle Toggle-Targets.
	$(".suchergebnis").find(".sendungen").each(function() {
		// Pruefe, ob das Toggle-Target geoeffnet ist.
		if ($(this).is(":visible")) {
			$(this).prev()
				.addClass("offen")
				.attr("aria-expanded", "true")
				.removeClass("geschlossen")
				.find(".button").html("<h3><span>Inhalt schlie&szlig;en<\/span><\/h3>");
		} else {
			$(this).prev()
				.addClass("geschlossen")
				.attr("aria-expanded", "false")
				.removeClass("offen")
				.find(".button").html("<h3><span>Inhalt &ouml;ffnen<\/span><\/h3>");
		}
	});
	// Pruefe, ob der "alle Tage einblenden"-Link in der Kopfzeile (1) oder in der Fusszeile (0) steht.
	if (sR_showAllLinkLocation==1) {
		// Schreibe den Pfad zum "alle Tage einblenden"-Link in eine Variable.
		showAllLink = $(".suchergebnis").parent().parent().find(".kopfbereich").find("#alleTageEinblenden");
	} else {
		// Schreibe den Pfad zum "alle Tage einblenden"-Link in eine Variable.
		showAllLink = $(".suchergebnis").parent().parent().find(".modulLinks").find("#alleTageEinblenden > a");
	}
	// Pruefe, ob alle Tage angezeigt werden.
	if (sR_allOpen==1) {
		// Aendere den Link und den Text ensprechend.
		showAllLink.attr("href", "javascript:sR_showFirst();")
		// Pruefe, ob der "alle Tage einblenden"-Link in der Kopfzeile (1) oder in der Fusszeile (0) steht.
		if (sR_showAllLinkLocation==1) {
			showAllLink.text("[nur ersten Tag einblenden]");
		} else {
			showAllLink.text("nur ersten Tag einblenden");
		}
	} else {
		// Aendere den Link und den Text ensprechend.
		showAllLink.attr("href", "javascript:sR_showAll();")
		if (sR_showAllLinkLocation==1) {
			showAllLink.text("[alle Tage einblenden]");
		} else {
			showAllLink.text("alle Tage einblenden");
		}
	}
	sR_checkForScrollbar();
}
// Fuehre den Toggle-Vorgang durch.
function sR_toggleProcess(e) {
	$(e).next(".sendungen").slideToggle("fast", function() {
		sR_checkAllOpen(e);
	});
}
