
// Breakpoint für Sichtbarkeit Nav-Main-Overlay: lg
// teilweise anders als BS-Breakpoints
var breakpoint_lg = 880;
var breakpoint_xl = 1200;

// var body_width = $("body").width();
var body_width = window.innerWidth;


jQuery(document).ready(function() {

	// Wenn es einen Notfall-Störer gibt, dann diesen Dialog sofort anzeigen
	$("#th-emergency").modal("show");



	// Fancybox (optional)
	//
	// Controls sollen nicht automatisch ausgeblendet werden
	$('.th-lightbox-opener').fancybox({
		titleShow : true,
		idleTime : false,
		afterLoad : function(instance, current) {
    	current.$image.attr('alt', current.opts.$orig.find('img').attr('alt') );
  	}
	});



	// Slick-Slider (optional)
	//
	// https://kenwheeler.github.io/slick/
	// Plugin im Seitenfuß einbinden
	$(".th-slider").slick({
		// Bezeichnung der Pfeile ggf. anpassen
		prevArrow: '<button type="button" class="slick-prev">Vorheriges Element einblenden</button>',
		nextArrow: '<button type="button" class="slick-next">Nächstes Element einblenden</button>',
		rows: 0 // Fix vor v1.8.0-1 https://github.com/kenwheeler/slick/issues/3207
	});

	// fehlende Attribute ergänzen
	$(".th-slider .slick-dots").each(function () {
		$(this).attr("aria-label","Element wählen");
	});

	// Live Region innerhalb Slider
	// https://www.w3.org/TR/wai-aria-1.1/#role_definitions
	$(".th-slider").each(function () {
		$(this).append('<div class="th-slider-liveregion sr-only" role="status" aria-live="polite" aria-atomic="true"></div>');
		let that = $(this);
		$(this).on('afterChange', function(event, slick, currentSlide){
			$(that).find('.th-slider-liveregion').html('Element '+(currentSlide+1)+' eingeblendet');
		});
	});

	// Problem mit Validierung aria-describedby
	// Fix von https://github.com/kenwheeler/slick/issues/2020
	$(".th-slider .th-txt").each(function () {
		var $slide = $(this).parent();
		if ($slide.attr("aria-describedby") != undefined) { // ignore extra/cloned slides
			$(this).attr("id", $slide.attr("aria-describedby"));
		}
	});


	// Blur im IE11 nur über SVG-Filter möglich
	if ($(".th-slider-blur").length > 0) {
		var currImage = $("div.slick-current > img");
		var bgImageUrl = currImage[0].getAttribute("src");
		var target = $(".th-slider-bg");
		target.attr("xlink:href",bgImageUrl);

		$(".th-slider-blur").on("afterChange", function(event, slick, currentSlide){
			var currImage = $("div.slick-current > img");
			var bgImageUrl = currImage[0].getAttribute("src");
			target.attr("xlink:href",bgImageUrl);
		});
	};



	// Hauptnavigation


	// Menü über Nav-Tiny-Button einblenden/ausblenden
	$(".th-nav-tiny button").click(function() {
		if ($(this).attr("aria-expanded") == "false") {
			$(".th-nav-main").show();
			$(this)
				.attr("aria-expanded","true")
				.addClass("th-shownav");
			// Menu aufklappen, wenn auf Unterseiten
			$("[aria-current=page]")
				.closest("li.th-hasnav.th-current")
				.find("button.th-lvl1-trg[aria-expanded=false]")
				.click();
			$(".th-lvl3-lnk[aria-current=page]")
				.closest("li.card")
				.find(".th-lvl2-trg[aria-expanded=false]")
				.click();	
		} else {
			$(".th-nav-main").hide();
			$(this)
				.attr("aria-expanded","false")
				.removeClass("th-shownav");
		}
	});


	// Menüflap über Level1-Menüpunkt einblenden/ausblenden
	// betrifft: alle Menüpunkte Level 1 mit Unterseiten im Desktop-Zustand
	$(".th-nav-main .th-lvl1-lst>li.th-hasnav>button").click(function() {
		var isOn = $(this).closest(".th-hasnav").hasClass("th-shownav");
		// Bedeutung 1: Wenn aktuelles Menü geöffnet wird, dann alle anderen Schließen
		// Bedeutung 2: Aktuelles offenes Menü über Quermenübutton schließen
		$(".th-nav-main .th-lvl1-lst>li.th-hasnav").removeClass("th-shownav");
		$(".th-nav-main .th-lvl1-lst>li.th-hasnav>button").attr("aria-expanded","false");
		if (!isOn) { 
			$(this).closest(".th-hasnav").addClass("th-shownav");
			$(this).attr("aria-expanded","true");
			$(this).next(".th-nav-flap").find(".th-nav-inner").addClass("show");
		}
	});



	$(window).bind("resize", function() {
		var body_width = window.innerWidth;
		if (body_width < (breakpoint_lg)) { // Mobil
		} else { // Desktop
			$("#th-nav-main").show();
		};
	});


	// Menü ausblenden
	// a) beim Verlassen durch Fokus außerhalb
	// Desktop
	$(".th-hasnav .th-nav-close-flap button").focusout(function(){
		$(this).closest("li.th-hasnav").removeClass("th-shownav");
		$(".th-nav-main .th-lvl1-lst>li.th-hasnav>button").attr("aria-expanded","false");
	});
	// Mobil
	$(".th-nav-main .th-nav-close-menu button").focusout(function(){
		$(".th-nav-main").hide();
		$(".th-nav-tiny button")
			.focus()
			.removeClass("th-shownav")
			.attr("aria-expanded","false");
	});


	// b) über ESC
	$(document).keyup(function(e) {
		if (e.keyCode == 27) { // escape key maps to keycode `27`
			if (body_width < (breakpoint_lg)) { // Mobil
				$(".th-nav-main").hide();
				$(".th-nav-tiny button")
					.focus()
					.removeClass("th-shownav")
					.attr("aria-expanded","false");
			} else { // Desktop
				$(".th-nav-main .th-lvl1-lst>li.th-shownav>button").focus();
				$(".th-nav-main .th-lvl1-lst>li.th-hasnav").removeClass("th-shownav");
				$(".th-nav-main .th-lvl1-lst>li.th-hasnav>button").attr("aria-expanded","false");
			}
		}
	});
	// c) über Schließen-Button im Menü
	// Desktop
	$(".th-nav-close-flap>button").click(function() {
		$(".th-nav-main .th-lvl1-lst>li.th-shownav>button").focus();
		$(this).closest("li.th-hasnav").removeClass("th-shownav");
		$(".th-nav-main .th-lvl1-lst>li.th-hasnav>button").attr("aria-expanded","false");
	}); 
	// Mobil
	$(".th-nav-close-menu>button").click(function() {
		$(".th-nav-main").hide();
		$(".th-nav-tiny button")
			.focus()
			.removeClass("th-shownav")
			.attr("aria-expanded","false");
	});
	

	// Menu aufklappen, wenn auf Unterseiten
	$(".th-lvl1-btn").click(function() {
		if ($(this).attr("aria-expanded") == "true") {
			$(".th-lvl3-lnk[aria-current=page]")
				.closest("li.card")
				.find(".th-lvl2-trg[aria-expanded=false]")
				.click();
		}
	});



	// Bootstrap Dropdowns
	//
	// Multi-Level-Support

	$(".th-dropdown-inner .dropdown-toggle").click(function(e) {
		$(".th-dropdown-menu-inner").not($(this).parent().next(".th-dropdown-menu-inner")).hide("fast");
		$(this).parent().next(".th-dropdown-menu-inner").toggle("fast");
		if ($(this).attr("aria-expanded") == "false") {
			$(this).attr("aria-expanded","true");
		} else {
			$(this).attr("aria-expanded","false");
		}
		e.stopPropagation();
		e.preventDefault();
	});

	//Dropdowns mit ESC ausblenden, wenn Focus innerhalb
	$(document).keyup(function(e) {
		if (e.keyCode == 27) {
			$(':focus').closest(".dropdown.show").find("button.dropdown-toggle").click().focus();
		}
	});

});