
window.dataLayer = window.dataLayer || [];

var d, w, bdy, openTimer2, openTimer3, dim_timeout, rem_timeout, smartPhone, scrlltp, placeHolderSupport, job_timer, cal_block, act_show_elem, slide_h, hd_h, gb_h, qr_targ, lang, hotel, labels, loc_hrf, scrstp_timeout, container_from, dfgr;
var directionsDisplay, directionsService, trafficLayer, service, request, infowindow, gmbounds, winvis;
var evnts_trckd =	[];

var Dte =	new Date(); 

var yt_frm =	null;
var bf_container = false, is_slide = false;

var stored_opts4 = [], stored_opts5 = [], pages = [], setMarkers = [], resultList = [], sld_ar = [], map = [], infoWindows = [], gmarkers = [];

var scrstp_dist = 0, actual_image = 0, slde_l = 0, reloader_cont = 0, reloader_lldd = 0, iterator = 0, hist_idx = 0;

var DiM =	[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

const weekdays = [], op_mo_text = [], labeling = [], notes = [], rubrik = [], hotels = [];

// Globaler Status, um eine mehrfache Ausführung zu verhindern.
var googleMapState = {
    initialized: false,
    scriptLoaded: false,
    originalTitle: ''
};
// Hier den gewünschten Zoom-Level für die Google Karte auf der Startseite nach dem Laden eintragen:
const POST_CONSENT_MAP_ZOOM_LEVEL = 7;

/*
Zur Orientierung, was die Zahlen bei Google Maps ungefähr bedeuten:
Level 1: Weltansicht
Level 2: Weltansicht (leicht herangezoomt)
Level 3: Kontinent (z.B. Europa)
Level 4: Subkontinent / große Ländergruppen (z.B. Westeuropa)
Level 5: Großes Land (z.B. Frankreich oder Spanien)
Level 6: Land (z.B. Deutschland)
Level 7: Große Region / Bundesland (z.B. Bayern)
Level 8: Region / Regierungsbezirk
Level 9: Metropolregion
Level 10: Große Stadt (z.B. Berlin)
Level 11: Stadt
Level 12: Stadtteile
Level 13: Stadtviertel / kleiner Ort
Level 14: Nachbarschaft / mehrere Straßenzüge
Level 15: Straßenzüge (einzelne Straßen sind klar benannt und erkennbar)
Level 16: Straßen (einzelne Häuserblocks sind gut sichtbar)
Level 17: Einzelne Straße (große Gebäudeumrisse sind klar)
Level 18: Gebäudekomplexe, große Grundstücke oder Parks
Level 19: Einzelne Gebäude und deren Details
Level 20: Hochdetaillierte Ansicht von Gebäuden (Eingänge, einzelne Autos etc.)
Hinweis: Dies sind ungefähre Richtwerte. Die genaue Darstellung kann je nach geografischer 
*/


weekdays["de"] =	["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
weekdays["en"] =	["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
op_mo_text["de"] =	["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
op_mo_text["en"] =	["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
notes["de"] =	["", "Unbefriedigend", "Ausreichend", "Befriedigend", "Gut", "Sehr gut"];
notes["en"] =	["", "Unsatisfying", "So-So", "Ok", "Good", "Excellent"];
rubrik["de"] =	["Restaurants", "Bars", "Shopping", "Museen"];
rubrik["en"] =	["Restaurants", "Bars", "Shopping", "Museums"];

labeling["de"] =	[
	"Familienzimmer", "Einzelzimmer", "Doppelzimmer", "Bitte wählen Sie Ihre Reisedaten:", "Anreise", "Abreise", "Zimmerart", "Zimmeranzahl", "Jetzt buchen", "Buchung als SORAT Bonusmitglied", 
	"Buchung als Expedient", "Buchung mit Sunstar Treuekarte", "Bitte Sunstar Kartennummer eingeben", "Routenplaner", "Startpunkt", "Reiseziel", "Route berechnen", "Bildauswahl", "Zurück", "Mehr", 
	"Drucken", "TT.MM.JJJJ", "Jahr", "Jahre", "Alter Kind", "beim Check-out", "Erwachsene", "Verfügbar", "Ausgebucht", "Ein oder mehrere Tage Ihrer Wunschdaten sind ausgebucht. Bitte wählen Sie neu.", 
	"Daten werden übertragen.", "Geschlossen", "Geöffnet", "Bitte Hotel auswählen", "Bitte wählen Sie Ihr Anreisedatum!", "Bitte wählen Sie Ihr Abreisedatum!", "Keine Routenbeschreibung vorhanden.", "Route von", "nach", "Sie haben diesen Link mit der Funktion E-Mail-Senden auf der SORAT Hotels Webseite https://www.sorat-hotels.com angefordert. Wenn Sie die Mail an dritte Empfänger weiterleiten, weisen wir darauf hin, dass das laut Bundesgerichtshof nur geschehen darf, wenn sich der Empfänger oder die Empfängerin über den Erhalt der E-Mail nicht belästigt fühlt.", 
	"Anreisebeschreibung", "Sorry, leider kein Rezept gefunden", "Suchergebnis für:", "Suchergebnisse für:", "Hotelname", "Bildmotiv", "Download", "Special nicht verfügbar", "Auf dieser Seite buchen Sie mit Best Price Guarantee und erhalten bei Direktbuchung über diese Seite einen Getränkegutschein bei Anreise.", "Bitte wählen Sie Ihr Hotel und Zimmer:",
	"Bitte wählen Sie Ihr Hotel:", "Stornieren", "Ändern", "Hotel auswählen", "Wo finden Sie die besten Preise?", "Genau hier bei uns. Plus Willkommensgetränk als Dankeschön.", "Treue lohnt sich.", "Melden Sie sich zu unserem Bonusprogramm an. Sichern Sie sich 10% auf unsere beste flexible Rate und andere Benefits.", "Anmelden", "Willkommen zurück.",
	"Sind Sie jetzt bereit zum Buchen? Gut so. Denn nur auf unserer offiziellen Webseite buchen Sie den günstigsten Preis. Plus Willkommensgetränk als Dankeschön.", "Youtube Inhalte aktivieren und Cookie Einstellungen ändern", "Ändern und aktivieren", "Ja, ich möchte Inhalte von Youtube angezeigt bekommen. Ich bin einverstanden, dass dadurch meine personenbezogenen Daten an den Betreiber des Portals, von dem der Inhalt stammt, weitergegeben werden, so dass dieser mein Verhalten analysieren kann. Weitere Informationen finden Sie in unserer <a href=\"de/datenschutz.html\" target=\"_blank\">Datenschutzerklärung</a>. Um das Video abzuspielen müssen Sie auch Ihre Cookie Einstellungen ändern.",

    //DE-Text für den selbst gebauten Cookie Accept Container auf der Startseite 
    "Zur Anzeige der interaktiven Karte",
    "Marketing Cookies aktivieren.",
	"Cookie Einstellungen öffnen",

];
labeling["en"] =	[
	"Family rooms", "Single rooms", "Double rooms", "Please choose your travel dates:", "Arrival", "Departure", "Room type", "Number", "Book now", "Booking for SORAT bonus members",
	"Booking for travel agents", "Booking with Sunstar loyalty card", "Enter Sunstar loyalty card number", "Route planner", "Starting point", "Destination", "Get directions", "Image selection", "Back", "More",
	"Print", "dd.mm.yyyy", "year", "years", "Age child", "at check-out", "Adults", "Available", "Sold out", "One or more of the dates you selected is sold out. Please modify your dates.",
	"Data being transferred.", "Closed", "Open", "Please select hotel", "Please choose your arrival date!", "Please choose your departure date!", "No route available.", "Route from", "to", "You requested this link with the email sending function on SORAT Hotels website https://www.sorat-hotels.com. We point out that distribution to third parties is not permitted unless explicit authorisation is granted by recipients in accordance with the German legislation.",
	"Route description", "Sorry, no recipe found", "search result for:", "search results for:", "Hotel name", "Image motive", "Download", "Special not available", "Book with confidence on this website, get the best price guarantee and receive as a small compensation a beverage voucher on arrival.", "Please choose your hotel and rooms:",
	"Please choose your hotel:", "Cancel", "Change", "Select Hotel", "Where will you find the lowest rates?", "Right here. Book now our very best rate plus thank-you free welcome drink.", "The loyalty win-win.", "Sign up below to enjoy our members direct booking discount of up to 10% on our best flexible rate and other benefits.", "Sign up", "Welcome back traveller.",
	"Did you know? Booking on our official website guarantees the best rates plus thank-you free welcome drink.", "Change cookie settings to activate YouTube content", "Change and activate", "Yes, I would like to see content from YouTube. I consent to my personal data being passed on to the operator of the portal from which the content originates so that they can analyze my behavior. Further information can be found in our <a href=\"en/data-protection.html\" target=\"_blank\">privacy policy</a>. Change your cookie settings to watch the Youtube video.",
    
    //EN-Text für den selbst gebauten Cookie Accept Container auf der Startseite 
    "Enable marketing cookies",
    "to view the interactive map",
	"Manage cookie settings", 
];

hotels["AMB"] =	"SORAT Hotel Berlin";
hotels["BRA"] =	"SORAT Hotel Brandenburg";
hotels["COT"] =	"SORAT Hotel Cottbus";
// hotels["DUE"] =	"Auszeit Hotel Düsseldorf"; // Seit 1. September 2025 nicht mehr bei Sorat Hotels alle einträge wurden Entfernt
hotels["DCO"] =	"Hotel Conti Duisburg";
hotels["FER"] =	"ferrotel Duisburg";
hotels["HOF"] =	"Hotel Central Hof";
hotels["NUE"] =	"Hotel Agneshof Nürnberg";
hotels["SAX"] =	"SORAT Hotel Saxx Nürnberg";
hotels["REG"] =	"SORAT Insel-Hotel Regensburg";


/**
 * Helper: führt callback erst nach aktivem Marketing‑Consent aus.
 */
function onMarketingConsent(callback) {
  if (window.Cookiebot && Cookiebot.consent.marketing) {
    callback();
  } else {
    window.addEventListener('CookiebotOnAccept', function handler() {
      if (Cookiebot.consent.marketing) {
        window.removeEventListener('CookiebotOnAccept', handler);
        callback();
      }
    });
  }
}

// NEU: Zentrale Konfiguration für Event-Regeln| 
// 13.05.2025 Computer-Manufaktur GmbH
const eventRules = {
    "dinnertime": {
        name: "Dinnertime",
        days: [0, 2, 3, 4, 5, 6], // Di-So
        timeMinIdx: 22, // 17:00
        timeMaxIdx: 29  // 20:30
    },
    "lunchtime": {
        name: "Lunchtime",
        days: [0, 2, 3, 4, 5, 6], // Di-So
        timeMinIdx: 11, // 11:30
        timeMaxIdx: 21  // 16:30
    },
    "dinner_for_two": {
        name: "Dinner for Two",
        days: [6], // Nur Samstag
        timeMinIdx: 24, // 18:00
        timeMaxIdx: 29  // 20:30
    },
    "italienischer_abend": {
        name: "Italienischer Abend",
        days: [4, 5], // Nur Do, Fr
        timeMinIdx: 24, // 18:00
        timeMaxIdx: 29, // 20:30
        // WICHTIG: Aktuelle, gültige Ausschlussdaten hier eintragen, falls benötigt!
        // Beispiel: excludeDates: ["2025-12-25", "2025-12-26"]
        excludeDates: [
			"2025-05-29", 
			"2025-06-19",
			"2025-06-20",
			"2025-06-27",
			"2025-07-10",
			"2025-07-17",
			"2025-07-24",
			"2025-07-31",
			"2025-08-08",
			"2025-08-21",
			"2025-08-22",
			"2025-09-11",
			"2025-09-12",

		] // Aktuell keine Ausschlüsse definiert
    },
    "fruehstueck": { // Stadtfrühstück
        name: "Stadtfrühstück",
        days: [0, 1, 2, 3, 4, 5, 6], // Mo-So
        timeMinIdx: 1,  // 06:30
        timeMaxIdx: 9,  // 10:30
        specialTimeLogic: 'handleBreakfastTimes' // Kennung für spezielle Zeitlogik
    },
    "weinabend_spring": { // Weinabend Land und Menü
        name: "Weinabend Land und Menü",
        date: "2025-05-10", // Festes Datum YYYY-MM-DD
        fixedTimeIdx: 24 // Feste Zeit: Index 24 = 18:00
    },
	/*"Weinabend mit einem anderen 'Motto'(value) ": { 
		name: "Weinabend mit einem anderen 'Motto'(erscheint im Dropdown)",
		date: "2025-05-10", 
		fixedTimeIdx: 24 
	},
	"Martinsgansessen (value)": { 
		name: "Martinsgansessen (erscheint im Dropdown)",
		date: "2025-11-11", 
		fixedTimeIdx: 22 
	},
	"Valentinstag (value)": 
		name: "Valentinstag (erscheint im Dropdown)",
		date: "2026-02-14", 
		fixedTimeIdx: 24 
	},	*/
};
// 	 NEU: Zeiten Index
/*
Index 0: Platzhalter (z.B. "Bitte Zeit wählen")
Index 1: 06:30 Uhr
Index 2: 07:00 Uhr
Index 3: 07:30 Uhr
Index 4: 08:00 Uhr
Index 5: 08:30 Uhr
Index 6: 09:00 Uhr
Index 7: 09:30 Uhr
Index 8: 10:00 Uhr
Index 9: 10:30 Uhr
Index 10: 11:00 Uhr
Index 11: 11:30 Uhr
Index 12: 12:00 Uhr
Index 13: 12:30 Uhr
Index 14: 13:00 Uhr
Index 15: 13:30 Uhr
Index 16: 14:00 Uhr
Index 17: 14:30 Uhr
Index 18: 15:00 Uhr
Index 19: 15:30 Uhr
Index 20: 16:00 Uhr
Index 21: 16:30 Uhr
Index 22: 17:00 Uhr
Index 23: 17:30 Uhr
Index 24: 18:00 Uhr
Index 25: 18:30 Uhr
Index 26: 19:00 Uhr
Index 27: 19:30 Uhr
Index 28: 20:00 Uhr
Index 29: 20:30 Uhr
*/

// NEU: Helferfunktionen
/**
 * Formatiert ein Date-Objekt zu 'YYYY-MM-DD' für Vergleiche.
 */
function formatDateForCompare(date) {
    if (!date || !(date instanceof Date)) return '';
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
}

/**
 * Passt die Frühstückszeiten an (deaktiviert 06:30 am WE, 10:30 an WT).
 */
function handleBreakfastTimeAdjustments(timeSelectElement, dayOfWeek, manageDisplay = false) {
    if (!timeSelectElement) return;
    const isWeekend = (dayOfWeek === 0 || dayOfWeek === 6); // So oder Sa

    // Option 06:30 Uhr (Index 1 im Dropdown)
    if (timeSelectElement.options[1]) {
        // Am Wochenende deaktivieren/ausblenden
        const isDisabledForBreakfast = isWeekend;
        if (!timeSelectElement.options[1].disabled) { // Nur ändern, wenn nicht schon durch Hauptlogik deaktiviert
            timeSelectElement.options[1].disabled = isDisabledForBreakfast;
        }
        if (manageDisplay && timeSelectElement.options[1].style.display !== 'none') { // Nur ändern, wenn nicht schon durch Hauptlogik ausgeblendet
            timeSelectElement.options[1].style.display = isDisabledForBreakfast ? 'none' : '';
        }
    }

    // Option 10:30 Uhr (Index 9 im Dropdown)
    if (timeSelectElement.options[9]) {
        // An Wochentagen deaktivieren/ausblenden
        const isDisabledForBreakfast = !isWeekend;
        if (!timeSelectElement.options[9].disabled) {
            timeSelectElement.options[9].disabled = isDisabledForBreakfast;
        }
        if (manageDisplay && timeSelectElement.options[9].style.display !== 'none') {
            timeSelectElement.options[9].style.display = isDisabledForBreakfast ? 'none' : '';
        }
    }
}

function reorderSpecificEventDropdown() {
    const eventSelect = document.getElementById('event');
    if (!eventSelect) {
        return;
    }

    const desiredValueOrder = [
        "", // Für Platzhalter wie "Bitte Event wählen"
        "dinnertime",
        "lunchtime",
        "dinner_for_two",
        "italienischer_abend",
        "fruehstueck",
        "weinabend_spring",
		//"platzhalter Weinabend mit einem anderen 'Motto'"
		//"platzhalter Martinsgansessen"
		//"platzhalter Valentinstag"
    ];

    const allCurrentOptions = Array.from(eventSelect.options);
    const originalSelectedValue = eventSelect.value;
    const fragment = document.createDocumentFragment();

    desiredValueOrder.forEach(value => {
        const option = allCurrentOptions.find(opt => opt.value === value);
        if (option) {
            fragment.appendChild(option); // Option wird aus allCurrentOptions effektiv verschoben
        }
    });

    allCurrentOptions.forEach(option => {
        // Nur Optionen hinzufügen, die noch nicht im Fragment sind
        // (d.h., deren parentNode immer noch das select-Element ist, weil sie nicht in desiredValueOrder waren)
        if (option.parentNode === eventSelect) {
            fragment.appendChild(option);
        }
    });

    eventSelect.innerHTML = ''; // Select leeren
    eventSelect.appendChild(fragment); // Neu geordnete Optionen einfügen

    eventSelect.value = originalSelectedValue; // Vorherige Auswahl wiederherstellen
    // Fallback, falls der Wert nicht mehr gültig ist oder der Platzhalter war
    if (eventSelect.value !== originalSelectedValue && eventSelect.options.length > 0) {
        eventSelect.selectedIndex = 0; // Wählt die erste Option (wahrscheinlich der Platzhalter)
    }

    const rplEvent = document.getElementById('rpl_event'); // ID des Ersatz-Divs
    if (rplEvent) {
        if (eventSelect.selectedIndex >= 0 && eventSelect.options[eventSelect.selectedIndex]) {
            rplEvent.innerHTML = eventSelect.options[eventSelect.selectedIndex].text;
        } else {
            rplEvent.innerHTML = ""; // Falls keine Auswahl oder keine Optionen
        }
    }

    if (typeof timeopts === 'function') {
        if (eventSelect.value === "" || eventSelect.value === null) {
            timeopts(true);
        } else {
            timeopts(false);
        }
    }
}

function absLeft(el) {
	return (el.offsetParent) ?	el.offsetLeft + absLeft(el.offsetParent) :	el.offsetLeft;
}
function absTop(el) {
	return (el.offsetParent) ?	el.offsetTop + absTop(el.offsetParent) :	el.offsetTop;
}
function scrt() {
	return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
}
function avl_dim_screen(dir) {
	if (w.innerHeight) {
		return (dir === "h") ?	w.innerHeight :	w.innerWidth;
	} else if ((d.documentElement) && (d.documentElement.clientHeight > 0)) {
		return (dir === "h") ?	d.documentElement.clientHeight :	d.documentElement.clientWidth;
	} else {
		return (dir === "h") ?	d.body.clientHeight :	d.body.clientWidth;
	}
}
function getDocHeight() {
	var db =	d.body;
	var dd =	d.documentElement;
	return Math.max(
		db.scrollHeight, dd.scrollHeight,
		db.offsetHeight, dd.offsetHeight,
		db.clientHeight, dd.clientHeight
	);
}
function evtrck(a, b, c) {
// console.log(a + " " + b + " " + c);
	var i;
	for (i = 0; i < evnts_trckd.length; i++) {
		if (evnts_trckd[i] === a + " " + b + " " + c) {
			return true;
		}
	}
	// if (typeof ga === "function") {
	// 	ga('send', 'event', a, b, c);
	// 	alert(a + " " + b + " " + c);
	// } else {
		window.dataLayer.push({'event': a, 'event_label': b});
		// console.log(window.dataLayer);
	// }
	evnts_trckd.push(a + " " + b + " " + c);
}
function add_cls(elem, cls) {
	if (typeof elem.className === "undefined") {
		elem.className =	" " + cls;
	} else if (chk_cls(elem, cls) === -1) {
		elem.className+=	" " + cls;
	}
}
function rmv_cls(elem, cls) {
	if (typeof elem.className !== "undefined") {
		if (elem.className === cls)	{
			elem.className =	"";
		} else {
			elem.className =	elem.className.replace(new RegExp(" " + cls, "g"), "");
		}
	}
}
function chk_cls(elem, cls) {
	return (typeof elem.className !== "undefined") ?	elem.className.indexOf(cls) :	-1;	
}
function chng_cls(elem, cls) {
	if (chk_cls(elem, cls) === -1) {
		add_cls(elem, cls);
	} else {
		rmv_cls(elem, cls);
	}
}
function setheight(id, h) {
	d.getElementById(id).style.height =	h;
}
function pos_adj(elem, fix, l_ofst, t_ofst)	{
	elem.style.left =	(absLeft(fix) + l_ofst) + "px";
	elem.style.top =	(absTop(fix) + t_ofst) + "px";
}
function get_selvl(elem) {
	return elem.options[elem.selectedIndex].value;
}
function get_radvl(elem) {
	var i, dv;
	for (i = 0; (dv = elem[i]); i++) {
		if (dv.checked) {
			return dv.value;
		}
	}
}
function tts_show() {
	var dm =	d.getElementsByTagName("main");
	if (dm[0]) {
		if ((!is_slide) || (scrt() > slide_h)) {
			add_cls(dm[0], "fx");
		} else {
			rmv_cls(dm[0], "fx");
		}
	}
	if (d.getElementById("prk")) {
		var i, l = 0, elem = d.getElementById("prk").childNodes;
		for (i = 0; i < elem.length; i++) {
			if (chk_cls(elem[i], "pr") !== -1) {
				var elms =	elem[i].style;
				if (absTop(elem[i]) - scrt() - avl_dim_screen("h") > 0) {
					elms.transitionDelay =	"0s";
					elms.opacity =	"0";
				} else {
					if (d.getElementById("searchlayer")) {
						elms.transitionDelay =	(l / 4) + "s";
						l++;
						if (l === 4) {
							l =	0;
						}
					}
					elms.opacity =	"1";
				}
			}
		}
	}
}
// var scrollstep_iteration =	0;
function scrollstep(dist) {
	var n =	Math.floor(dist / 30 * (1 - Math.abs(scrstp_dist / dist - 0.5)));
	// console.log(n);
	if (Math.abs(scrstp_dist + n) < Math.abs(dist)) {
		// scrollstep_iteration++;
		scrstp_dist+=	n;
		w.scrollBy(0, n);
		// console.log("Iteration: " + scrollstep_iteration + " ScrollBy value: " + n + " Amount scrolled in theory: " + scrstp_dist + " Actual position: " + window.pageYOffset);
		scrstp_timeout =	setTimeout("scrollstep(" + dist + ")", 100 / 6);
		// requestAnimationFrame( function(timestamp) { scrollstep(dist); } );
	} else {
		if (scrt() > 0) {
			w.scrollBy(0, dist - scrstp_dist);
		}
		scrstp_dist =	0;
	}
	tts_show();
}
function scr_to_lnk(elem, offset) {
	var anch, i;
	var switched =	null;
	var sl_hgt =	(d.getElementById("sail")) ?	100 :	0;
	if (typeof offset === "undefined") {
		offset =	0;
	}
	scrollstep(-scrt() - hd_h - gb_h - sl_hgt - offset + absTop(elem));
	for (i = 0; (anch = d.getElementsByTagName("a")[i]); i++) {
		if ((elem.id) && (anch.parentNode.parentNode.id === "navi_lv2") && ((elem.id.indexOf("c") !== -1) && (anch.href.indexOf(elem.id.replace(/c/, "")) !== -1) || ((loc_hrf === anch.href) && (elem === d.getElementsByTagName("main")[0])))) {
			add_cls(anch, "act");
			switched =	anch;
		}
	}
	if (switched !== null) {
		for (i = 0; (anch = d.getElementsByTagName("a")[i]); i++) {
			if ((anch.parentNode.parentNode.id === "navi_lv2") && (anch !== switched)) {
				rmv_cls(anch, "act");
			}
		}
	}
}
function scr_to_gmap() {
	gmloader(1);
	scr_to_lnk(d.getElementById("mapBox"));
}
function cr_elem(nme, par, id, cls) {
	var elm =	d.createElement(nme);
	if (id !== "") {
		elm.id =	id;
	}
	if (cls !== "") {
		add_cls(elm, cls);
	}
	if (par !== "") {
		par.appendChild(elm);
	}
	return elm;
}
function strip_tags(input, allowed) {
	allowed =	(((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
	var tags =	/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi, commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
	return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
		return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
	}).replace(/(?:\r\n|\r|\n)/g, ' ').replace(/(?:\t)/g, '').trim();
}
function darkbx_init(lnk) {
	var l =	parseInt(absLeft(lnk) + lnk.offsetWidth / 2);
	var t =	parseInt(absTop(lnk) - scrt() + lnk.offsetHeight / 2);
	var dv =	cr_elem("div", bdy, "drkbx", "");
	dv.style.webkitTransform =	"translate(" + l + "px, " + t + "px) scale(0.01)";
	dv.style.transform =	"translate(" + l + "px, " + t + "px) scale(0.01)";
	setTimeout(function () { add_cls(d.getElementById('drkbx'), 'act'); }, 17);
	return dv;
}
function darkbx(id, jsp, lnk)	{
	var i, anch, dv, elem2, slde_l = 0, idx = 0, sldes = [], elem = d.getElementById(id), trkmode = "Bild", trktxt = "";
	container_from =	elem.parentNode;
	if (d.getElementById("drkbx")) {
		hide_all_layers();
		if (id === d.getElementById("drkcont").lastChild.id) {
			return false;
		}
		if ((jsp > 0) && (avl_dim_screen("w") > 1024)) {
			if ($('#drkcont').data('jsp')) {
				$('#drkcont').data('jsp').destroy();
			}
			setTimeout("$('#drkcont').jScrollPane();", 17);
		}
		elem2 =	d.getElementById("drkcont");
		container_from.replaceChild(elem2.lastChild, d.getElementById("container_spick"));
		elem2.innerHTML =	"";
		dv =	d.createElement("div");
		dv.id =	"container_spick";
		container_from.insertBefore(dv, elem);
		elem2.appendChild(elem);
		elem2.scrollTop =	0;
	} else {
		dv =	d.createElement("div");
		dv.id =	"container_spick";
		container_from.insertBefore(dv, elem);
		dv =	darkbx_init(lnk);
		elem2 =	cr_elem("div", dv, "drknav", "");
		elem2 =	cr_elem("div", dv, "drkcont", "");
		d.getElementById("drkcont").appendChild(elem);
		setTimeout(function () { add_cls(d.getElementById('drkcont'), 'act'); add_cls(d.getElementById('drkbx'), 'hvr'); }, 617);
		if ((jsp > 0) && (avl_dim_screen("w") > 1024)) {
			setTimeout("$('#drkcont').jScrollPane();", 617);
		}
	}
	if (chk_cls(elem, "azubi") !== -1) {
		d.getElementById("drkcont").style.maxHeight =	"84%";
		d.getElementById("drkcont").style.top =	((avl_dim_screen("h") - d.getElementById("drkcont").offsetHeight) / 2) + "px";
	}
	if (yt_frm !== null) {
		yt_frm.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
	}
	if (elem2.innerHTML.indexOf("cookintc") !== -1)	{
		trkmode =	"Video";
		trktxt =	"Cookie Hinweis";
	} else if ((elem2.firstChild.src) && (elem2.firstChild.src.indexOf("youtube") !== -1))	{
		trkmode =	"Video";
		trktxt =	elem2.firstChild.src;
		yt_frm =	elem2.firstChild;
		setTimeout(function () { yt_frm.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*'); }, 2000);
	} else {
		if (id.indexOf("hdmg_") !== -1) {
			trkmode =	"Bild";
			trktxt =	d.getElementById(id).firstChild.firstChild.firstChild.firstChild.src;
		} else if (id.indexOf("ce_") !== -1) {
			trkmode =	"Content";
			trktxt =	d.getElementById("drkcont").innerText.substring(0, 100);
		}
		yt_frm =	null;
	}
	if (jsp === 2) {
		add_cls(elem2, "holds2");
	} else {
		rmv_cls(elem2, "holds2");
	}
	d.getElementById("drknav").innerHTML =	"<a id=\"lb_close\" onclick=\"hide_drkbx();\"></a>";
	for (i = 0; (anch = container_from.childNodes[i]); i++) {
		if ((anch.id) && (anch.id === "container_spick")) {
			sldes.push(elem);
			elem.idxno =	slde_l;
			slde_l++;
		} else if ((anch.className) && ((anch.className === elem.className) || (chk_cls(anch, "tbl") !== -1) || (chk_cls(anch, "ytframe") !== -1))) {
			sldes.push(anch);
			anch.idxno =	slde_l;
			slde_l++;
		}
	}
	if (slde_l > 1) {
		var e_idx =	elem.idxno;
		var prv =	(e_idx - 1 < 0) ?	slde_l - 1 :	e_idx - 1;
		var nxt =	(e_idx + 1 >= slde_l) ?	0 :	e_idx + 1;
		if (jsp === 2) {
			jsp =	1;
		}
		d.getElementById("drknav").innerHTML+=	"<a id=\"lb_links\" onclick=\"clearTimeout(openTimer3); darkbx('" + sldes[prv].id + "', " + jsp + ");\"></a><a id=\"lb_rechts\" onclick=\"clearTimeout(openTimer3); darkbx('" + sldes[nxt].id + "', " + jsp + ");\"></a>";
		if (id.indexOf("ce_wellness") !== -1) {
			openTimer3 =	setTimeout("darkbx('" + sldes[nxt].id + "', " + jsp + ");", 5000);
		}
	}
	evtrck("Layer-Popup " + trkmode, trktxt, loc_hrf);
	return false;
}
function hide_drkbx() {
	if ((typeof jQuery !== "undefined") && ($('#drkcont').data('jsp'))) { $('#drkcont').data('jsp').destroy(); }
	if (yt_frm !== null) {
		yt_frm.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
	}
	rmv_cls(d.getElementById("drkbx"), "hvr");
	if (d.getElementById("drkcont")) {
		rmv_cls(d.getElementById("drkcont"), "act");
	}
	if (d.getElementById("drkgmap")) {
		rmv_cls(d.getElementById("drkgmap"), "act");
	}
	setTimeout(function () { rmv_cls(d.getElementById("drkbx"), "act"); }, 200);
	setTimeout(function () { if ((typeof container_from !== "undefined") && (d.getElementById("drkcont")) && (d.getElementById("container_spick"))) { container_from.replaceChild(d.getElementById("drkcont").lastChild, d.getElementById("container_spick")); } pn_rmv_chld(d.getElementById("drkbx"));}, 800);
}
function pn_rmv_chld(elem) {
	elem.parentNode.removeChild(elem);
}
function hide_all_layers() {
	if ((typeof qr_targ === "object") && (qr_targ.parentNode)) {
		pn_rmv_chld(qr_targ);
	}
	if (typeof act_show_elem === "object") {
		if (chk_cls(act_show_elem.parentNode, "ur_menu") !== -1) {
			rmv_cls(act_show_elem.parentNode, "act");
		}
		if (act_show_elem.id === "scal") {
			rmv_cls(act_show_elem, "cal_opn");
		} else {
			act_show_elem.style.display =	"none";
			setTimeout("act_show_elem = '';", 17);
		}
		d.onmouseup =	null;
	}
}
function chk_hide_layer(e) {
	var ev =	(!e) ?	w.event :	e;
	var targ =	ev.target || ev.srcElement;
	if (targ.nodeName === "HTML") {
		return false;
	}
	while ((targ = targ.parentNode)) {
		if (targ === act_show_elem) {
			return false;
		}
	}
	hide_all_layers();
}
function yt_frame(lnk) {
	if (!d.getElementById("movie0")) {
		var anch, anch_spl, dv, i, ifr, elem =	cr_elem("div", bdy, "movie0", "");
		for (i = 0; (anch = d.getElementsByTagName("a")[i]); i++) {
			if ((anch.getAttribute("href")) && (anch.getAttribute("href").indexOf("watch?v=") !== -1) && (d.getElementById("movie0").innerHTML.indexOf(anch.getAttribute("href").split("watch?v=")[1]) === -1)) {
				anch_spl =	anch.getAttribute("href").split("watch?v=")[1];
				if ((Cookiebot.consent.preferences === true) && (Cookiebot.consent.statistics === true)) {
					ifr =	cr_elem("iframe", elem, "yt_" + anch_spl, "ytframe");
					ifr.src =	"//www.youtube-nocookie.com/embed/" + anch_spl + "?enablejsapi=1&rel=0";
				} else {
					dv =	cr_elem("div", elem, "yt_" + anch_spl, "tbl");
					yt_cookienotice(dv, anch);
				}
			}
		}
	}
	return darkbx("yt_" + lnk.getAttribute("href").split("watch?v=")[1], 0, lnk);
}
function layer_reminder() {
	clearTimeout(rem_timeout);
	if (winvis === false) {
		rem_timeout =	setTimeout("darkbx_reminder();", 5 * 60000);
	}
}
function darkbx_reminder() {
	if (d.getElementById("drkbx")) {
		pn_rmv_chld(d.getElementById("drkbx"));
	}
	var dv =	darkbx_init(bdy);
	dv.onclick =	hide_drkbx;
	dv.style.background =	"rgba(0, 0, 0, 0.75)";
	var elem2 =	cr_elem("div", dv, "drknav", "");
	dv =	cr_elem("div", dv, "drkcont", "");
	dv =	cr_elem("div", dv, "", "tbl");
	dv =	cr_elem("div", dv, "", "tdvam");
	dv =	cr_elem("div", dv, "", "reminder");
	if ((loc_hrf.indexOf("bonusprogramm") !== -1) || (loc_hrf.indexOf("loyalty-program") !== -1)) {
		dv.innerHTML =	"<h2>" + labels[56] + "</h2><p>" + labels[57] + "</p><nav class=\"sbm_stl\"><a href=\"" + d.getElementById("navi_lv2").lastChild.lastChild.getAttribute("href") + "\" target=\"_blank\" onclick=\"evtrck('Layer-Popup Reminder', 'Click " + labels[56] + "', loc_hrf);\">" + labels[58] + "</a></nav>";	
		evtrck("Layer-Popup Reminder", "Einblendung " + labels[56], loc_hrf);
	} else {
		var variant =	(Math.random() > 0.5)	?	0 :	1;
		var head =	(variant === 0)	?	labels[54] :	labels[59];
		var cont =	(variant === 0)	?	labels[55] :	labels[60];
		if ((loc_hrf.indexOf("deutschland-hotelreservierung") !== -1) || (loc_hrf.indexOf("directory") !== -1) || (d.getElementById("resv_l"))) {
			dv.innerHTML =	"<h2>" + head + "</h2><p>" + cont + "</p><nav class=\"sbm_stl\"><a onclick=\"pn_rmv_chld(d.getElementById('drkbx')); w.scrollTo(0, 0); init_tclw(''); evtrck('Layer-Popup Reminder', 'Click " + head + "', loc_hrf); return false;\">" + labels[8] + "</a></nav>";		
		} else {
			dv.innerHTML =	"<h2>" + head + "</h2><p>" + cont + "</p><nav class=\"sbm_stl\"><a href=\"" + d.getElementById("bkng1").getAttribute("href") + "\" target=\"_blank\" onclick=\"evtrck('Layer-Popup Reminder', 'Click " + head + "', loc_hrf);\">" + labels[8] + "</a></nav>";		
		}
		evtrck("Layer-Popup Reminder", "Einblendung " + head, loc_hrf);
	}
	d.getElementById("drknav").innerHTML =	"<a id=\"lb_close\" onclick=\"hide_drkbx();\"></a>";
	setTimeout(function () { add_cls(d.getElementById('drkcont'), 'act'); add_cls(d.getElementById('drkbx'), 'hvr'); }, 617);
}
function dimensions() {
	var dv, i, mhgt = [];
	hide_all_layers();
	if (is_slide) {
		slide_h =	d.getElementById("slide_0").offsetHeight;
	}
	hd_h =	(d.getElementsByTagName("header")[0]) ? d.getElementsByTagName("header")[0].offsetHeight :	0;
	gb_h =	(d.getElementById("grey_band")) ? d.getElementById("grey_band").offsetHeight :	0;
	if ((d.getElementById("req_layer")) && (d.getElementById("resv_l"))) {
		var grout =	d.getElementById("req_layer");
		var resv_l =	d.getElementById("resv_l");
		var grouts =	grout.style;
		grouts.top =	(resv_l.offsetTop + resv_l.offsetHeight - d.getElementById("req_layer").offsetHeight + d.getElementById("gr_out_rahm").offsetHeight) + "px";
		grouts.left =	(resv_l.offsetLeft) + "px";
		grouts.width =	(resv_l.offsetWidth) + "px";
		// alert(-scrt() + absTop(grout) - (avl_dim_screen("h") - grout.offsetHeight) / 2);
		scrollstep(-scrt() + absTop(grout) - (avl_dim_screen("h") - grout.offsetHeight) / 2);
	} else if ((d.getElementById("req_layer")) && (!d.getElementById("shw_bf")) && (d.getElementById("bkng1"))) {
		var grout =	d.getElementById("req_layer"), bkng1 = d.getElementById("bkng1");
		grout.style.top =	(chk_cls(d.getElementsByTagName("main")[0], "fx") !== -1) ?
			(absTop(bkng1) + scrt()) + "px"
		 :	absTop(bkng1) + "px";
		grout.style.right =	(d.getElementById("grey_band").offsetWidth - absLeft(bkng1) - bkng1.offsetWidth) + "px";
		if (d.getElementById("reql0")) {
			if ((bf_container === false) && (absTop(grout) + d.getElementById("gr_out_rahm").offsetHeight + 42 - scrt() > avl_dim_screen("h"))) {
				scrollstep(absTop(grout) + d.getElementById("gr_out_rahm").offsetHeight + 42 - avl_dim_screen("h") - scrt());
			}
		} else {
			if ((bf_container === false) && (absTop(grout) + d.getElementById("gr_out_rahm").offsetHeight + 324 - scrt() > avl_dim_screen("h"))) {
				scrollstep(absTop(grout) + d.getElementById("gr_out_rahm").offsetHeight + 324 - avl_dim_screen("h") - scrt());
			}
		}
	}
	if (d.getElementById("scal")) {
		dv =	d.getElementById("scal");
		var elem =	d.getElementById(dv.fldid);
		if (dv.fldid === "termin") {
			elem =	d.getElementById(dv.fldid).parentNode;
			dv.style.width =	elem.offsetWidth + "px";
		}
		var ofsw =	(elem.offsetWidth > 250) ?	0 :	elem.offsetWidth;
		pos_adj(dv, elem, ofsw, 0);
		
	}
	if (!d.getElementById("resv_l")) {
		var id;
		for (id in map) {
			dv =	map[id];
			var currCenter =	dv.getCenter();
			google.maps.event.trigger(dv, "resize");
			dv.setCenter(currCenter);
		}
	}
	if ((d.getElementById("prk")) && (d.getElementById("tit")) && (d.getElementById("mag")) && (chk_cls(d.getElementById("prk"), "tagung") === -1) && (avl_dim_screen("w") <= 740)) {
		rmv_cls(d.getElementById("prk"), "titles");
		rmv_cls(d.getElementById("tit"), "optd");
		add_cls(d.getElementById("mag"), "optd");
	}
	tts_show();
	if ((d.getElementById("drkcont")) && (typeof jQuery !== "undefined") && ($('#drkcont').data('jsp'))) {
		$('#drkcont').data('jsp').reinitialise();
	}
}
function job_navi(lnk) {
	var anch, i, elem =	d.getElementById("job_nv_cont").childNodes;
	for (i = 0; (anch = lnk.parentNode.childNodes[i]); i++) {
		rmv_cls(anch, "jcti");
	}
	add_cls(lnk, "jcti");
	scrollstep(-scrt() - hd_h - gb_h + absTop(d.getElementById("job_nv_cont")) - 160);
	for (i = 0; i < elem.length; i++) {
		if (elem[i].nodeType === 1) {
			add_cls(elem[i], "hidd");
		}
	}
	if (d.getElementById("jobs_no")) {
		add_cls(d.getElementById("jobs_no"), "hidd");
	}
	clearTimeout(job_timer);
	job_timer =	setTimeout("jb_nav_sorted('" + lnk.id + "');", 500);
	evtrck("Filter", lnk.innerHTML, loc_hrf);
}
function jb_nav_sorted(lnkid) {
	var i, j = 0, elem = d.getElementById("job_nv_cont").childNodes;
	for (i = 0; i < elem.length; i++) {
		if ((elem[i].nodeType === 1) && ((lnkid === "cat_") || (elem[i].innerHTML.indexOf(lnkid) !== -1))) {
			j++;
			rmv_cls(elem[i], "hidd");
		}
	}
	if (d.getElementById("jobs_no")) {
		d.getElementById("jobs_no").className =	(j === 0) ? "" : " hidd";
	}
}
function tagung_navi(lnk, id) {
	if ((loc_hrf.indexOf("sword") !== -1) && (lnk.id !== "cat_12")) {
		location.href =	loc_hrf.split("?")[0] + "?cat=" + lnk.id;
		return true;
	}
	var anch, anch_ih, i;
	for (i = 0; (anch = lnk.parentNode.childNodes[i]); i++) {
		rmv_cls(anch, "jcti");
	}
	add_cls(lnk, "jcti");
	add_cls(d.getElementById(id), "anim");
	if (d.getElementById("map_no")) {
		add_cls(d.getElementById("map_no"), "anim");
	}
	if (!d.getElementById("searchlayer")) {
		scrollstep(-scrt() - hd_h - gb_h + absTop(d.getElementById(id)) - 180);
	}
	for (i = 0; (anch = d.getElementById(id).childNodes[i]); i++) {
		if (chk_cls(anch, "pr") !== -1) {
			anch.style.transitionDelay =	"0s";
			add_cls(anch, "hidd");
		}
	}
	if (d.getElementById("map_no")) {
		s_disp("map_no", "");
		add_cls(d.getElementById("map_no"), "hidd");
	}
	if (d.getElementById("berlin_no")) {
		s_disp("berlin_no", "");
		add_cls(d.getElementById("berlin_no"), "hidd");
	}
	hide_all_layers();
	if (d.getElementById("ca_plmi")) {
		if (lnk.id === "cat_12") {
			s_disp("ca_plmi", "block");
		} else {
			s_disp("ca_plmi", "none");
		}
	}
	clearTimeout(job_timer);
	job_timer =	setTimeout("tg_nav_sorted('" + lnk.id + "', '" + id + "');", 700);
	evtrck("Filter", lnk.innerHTML, loc_hrf);
}
function tg_nav_sorted(lnkid, id) {
	var i, j = 0, anch, anch_ih;
	for (i = 0; (anch = d.getElementById(id).childNodes[i]); i++) {
		if (chk_cls(anch, "pr") !== -1) {
			anch.style.display =	"";
			anch_ih =	anch.innerHTML;
			if ((
				(((lnkid === "cat_") || (lnkid === "cat2_")) && (chk_cls(anch, "only") === -1) && (chk_cls(anch, "prx") === -1)) 
			 || (anch_ih.indexOf("show_" + lnkid + "\"") !== -1) || (anch_ih.indexOf("show_" + lnkid + " ") !== -1) || (anch_ih.indexOf("show_cat_notice") !== -1) || (anch_ih.indexOf("show_" + lnkid + "_notice") !== -1)
			)) {
				j++;
			} else {
				anch.style.display =	"none";
			}
			rmv_cls(anch, "hidd");
		}
	}
	if (d.getElementById("map_no")) {
		if (j === 0) {
			rmv_cls(d.getElementById("map_no"), "hidd");
		} else {
			s_disp("map_no", "none");
		}
	}
	if (d.getElementById("map_no")) {
		if (lnkid === "cat_berlin") {
			rmv_cls(d.getElementById("berlin_no"), "hidd");
		} else {
			s_disp("berlin_no", "none");
		}
	}
	setTimeout("rmv_cls(d.getElementById('" + id + "'), 'anim'); if (d.getElementById('map_no')) { rmv_cls(d.getElementById('map_no'), 'anim'); } dimensions();", 900);
}
function cook_navi(sword) {
	var i, j = 0, anch, str;
	evtrck("Filter", "Kochstudio Suchwort: " + sword, loc_hrf);
	for (i = 0; (anch = d.getElementById("prk").childNodes[i]); i++) {
		if (chk_cls(anch, "pr") !== -1) {
			if (((sword === "") || (anch.innerHTML.toLowerCase().indexOf(sword) !== -1))) {
				j++;
				rmv_cls(anch, "hidd");
			} else {
				anch.style.display =	"none";
			}
		}
	}
	if (j > 0) {
		d.getElementById("job_nav").parentNode.insertBefore(d.getElementById("prk"), d.getElementById("job_nav"));
	} else {
		tagung_navi(d.getElementById('cat_12'), 'prk');
	}
	if (j === 0) {
		str =	labels[41];
	} else if (j === 1) {
		str =	j + " " + labels[42] + " \"" + sword + "\"";
	} else {
		str =	j + " " + labels[43] + " \"" + sword + "\"";
	}
	d.getElementsByTagName("h2")[0].innerHTML =	str;
}
function presse_nav(rst) {
	var dv, i, elmnts =	["view", "year", "theme", "stadt"], anch, frm = d.forms["filterform"].elements;
	if (rst === 1) {
		if (frm["theme"]) {
			elmnts =	["year", "theme", "stadt"];
			for (i = 0; i < elmnts.length; i++) {
				dv =	frm[elmnts[i]];
				dv.selectedIndex =	0;
				if (d.getElementById("rpl_" + dv.name)) {
					d.getElementById("rpl_" + dv.name).innerHTML =	dv.options[dv.selectedIndex].text;
					rmv_cls(d.getElementById("rpl_" + dv.name).parentNode, "optd");
				}
			}
		}
		frm["searchword"].value =	"";
	}
	for (i = 0; i < elmnts.length; i++) {
		if (frm[elmnts[i]]) {
			dv =	frm[elmnts[i]];
			if (dv.selectedIndex > 0) {
				add_cls(dv.parentNode.parentNode, "optd");
			} else {
				rmv_cls(dv.parentNode.parentNode, "optd");
			}
		}
	}
	add_cls(d.getElementById("prk"), "anim");
	for (i = 0; (anch = d.getElementById("prk").childNodes[i]); i++) {
		if (chk_cls(anch, "pr") !== -1) {
			add_cls(anch, "hidd");
		}
	}
	if (d.getElementById("map_no")) {
		add_cls(d.getElementById("map_no"), "anim");
		s_disp("map_no", "block");
		add_cls(d.getElementById("map_no"), "hidd");
	}
	var year = "", theme = "", stadt = "";
	if (frm["theme"]) {
		year =	get_selvl(frm["year"]);
		theme =	get_selvl(frm["theme"]);
		stadt =	get_selvl(frm["stadt"]);
		d.getElementById("pr_xef").style.display =	(year + theme + stadt === "") ?	"none" : "block";
	}
	var sword =	frm["searchword"].value;
	d.getElementById("pr_xed").style.display =	(sword === "") ?	"none" : "block";
	evtrck("Filter", "Presse: " + year + " | " + theme + " | " + stadt + " | Suchwort: " + sword, loc_hrf);
	hide_all_layers();
	clearTimeout(job_timer);
	job_timer =	setTimeout("pr_nav_sorted('" + year + "', '" + theme + "', '" + stadt + "', '" + sword + "');", 800);
}
function pr_nav_sorted(year, theme, stadt, sword) {
	var i, j = 0, anch, anch_ih;
	for (i = 0; (anch = d.getElementById("prk").childNodes[i]); i++) {
		if (chk_cls(anch, "pr") !== -1) {
			anch.style.display =	"";
			anch_ih =	anch.innerHTML;
			if (((year === "") || (anch_ih.indexOf("cat_year_" + year) !== -1)) && ((stadt === "") || (anch_ih.indexOf("cat_stadt_" + stadt) !== -1)) && ((theme === "") || (anch_ih.indexOf("cat_theme_" + theme) !== -1)) && ((sword === "") || (anch_ih.toLowerCase().indexOf(sword.toLowerCase()) !== -1))) {
				j++;
			} else {
				anch.style.display =	"none";
			}
			rmv_cls(anch, "hidd");
		}
	}
	if (d.getElementById("map_no")) {
		if (j === 0) {
			rmv_cls(d.getElementById("map_no"), "hidd");
		} else {
			s_disp("map_no", "none");
		}
	}
	if ((d.forms["filterform"]) && (d.forms["filterform"].elements["view"]) && (d.forms["filterform"].elements["view"].selectedIndex === 2)) {
		evtrck("Filter", "Seitenansicht Titel", loc_hrf);
		add_cls(d.getElementById("prk"), "titles");
	} else {
		evtrck("Filter", "Seitenansicht Magazin", loc_hrf);
		rmv_cls(d.getElementById("prk"), "titles");
	}
	setTimeout("rmv_cls(d.getElementById('prk'), 'anim'); if (d.getElementById('map_no')) { rmv_cls(d.getElementById('map_no'), 'anim'); } dimensions();", 800);
}
function autoswipe() {
	openTimer2 =	setTimeout(autoswipe, 4000);
	imge_slde(actual_image + 1, "slide_0", 0);
}
function imge_slde(idx, id, gc) {
	var anch, i, visib_imgs = [];
	if (idx < 0) {
		idx =	slde_l - 1;
	}
	if (idx >= slde_l) {
		idx =	0;
	}
	for (i = 0; (anch = sld_ar[id][i]); i++) {
		anch.id =	"";
		anch.className =	"";
		if (anch.idxno >= idx) {
			visib_imgs.push(anch);
		}
	}
	for (i = 0; (anch = sld_ar[id][i]); i++) {
		if (anch.idxno < idx) {
			visib_imgs.push(anch);
		}
	}
	var disp_imgs_cnt =	Math.min(visib_imgs.length, 5);
	add_cls(visib_imgs[0], "trnsf_0");
	visib_imgs[0].id =	"trnsf_img_" + id;
	if (gc === 1) {
		clearTimeout(openTimer2);
		openTimer2 =	setTimeout(autoswipe, 60000);
		evtrck("Click Bildslider", visib_imgs[0].firstChild.src, loc_hrf);
	}
	for (i = 1; i < disp_imgs_cnt; i+= 2) {
		if (disp_imgs_cnt > 2) {
			add_cls(visib_imgs[visib_imgs.length - (i + 1) / 2], "trnsf_" + i);
		}
		add_cls(visib_imgs[(i + 1) / 2], "trnsf_" + (i + 1));
	}
	actual_image =	idx;
	
	if (d.getElementById("resv_l")) {
		if (visib_imgs[0].innerHTML.indexOf("htltxt4") !== -1) {
			d.getElementById("resv_l").style.display =	"none";
		} else {
			d.getElementById("resv_l").style.display =	"block";
		}
	}
	
}
function shw(id, hd) {
	var elem_s =	d.getElementById(id).style;
	elem_s.display =	(elem_s.display === "none") ?	"" :	"none";
	if (hd !== null) {
		if (elem_s.display === "none") {
			rmv_cls(hd.parentNode, "act");
		} else {
			add_cls(hd.parentNode, "act");
		}
	}
}
function profile_werb(id, ckb) {
	d.getElementById(id).style.display =	(ckb === true) ?	"" :	"none";
	dimensions();
}
function profile_resp() {
	if (chk_cls(bdy, "opn") !== -1) {
		hide_resp(1);
	} else {
		if (!d.getElementById("hd_drv")) {
			var dv =	cr_elem("div", bdy, "hd_drv", "");
			var dvi =	d.getElementById("mnnv1").cloneNode(true);
			dvi.id =	"mnnv1_1";
			dv.appendChild(dvi);
			dvi =	d.getElementById("mnnv2").cloneNode(true);
			dvi.id =	"mnnv2_1";
			dv.appendChild(dvi);
		}
		scrlltp =	scrt();
		scrollstep(-scrlltp);
		add_cls(bdy, "opn");
		if (d.getElementById("grey_band")) {
			add_cls(d.getElementById("grey_band"), "trns");
			setTimeout("rmv_cls(d.getElementById('grey_band'), 'trns');", 800);
		}
		evtrck("Click Hamburger-Icon", "", loc_hrf);
		setTimeout(function() { d.getElementsByTagName("main")[0].onclick = function() { hide_resp(1); }; }, 17);
	}
}
function hide_resp(x) {
	if (x === 1) {
		scrollstep(scrlltp);
	}
	rmv_cls(bdy, "opn");
	if (d.getElementById("mnnv2_1")) {
		add_cls(d.getElementById("mnnv2_1"), "klapp");
	}
	if (d.getElementById("grey_band")) {
		add_cls(d.getElementById("grey_band"), "trns");
		setTimeout("rmv_cls(d.getElementById('grey_band'), 'trns');", 800);
	}
	d.getElementsByTagName("main")[0].onclick =	null;
}
function show_layer(id, elem) {
	if (act_show_elem !== d.getElementById(id)) {
		act_show_elem =	d.getElementById(id);
		act_show_elem.style.display =	"block";
		d.onmouseup =	chk_hide_layer;
		if (elem !== null) {
			if (chk_cls(elem.parentNode, "ur_menu") !== -1) {
				add_cls(elem.parentNode, "act");
			}
		}
		if (id === "lft_hvr_nav") {
			var lhn_s =	act_show_elem.style;
			if (d.getElementById("bkng1")) {
				lhn_s.width =	(bdy.offsetWidth > 479) ?	absLeft(d.getElementById("bkng1")) + "px" :	(absLeft(d.getElementById("bkng1")) + d.getElementById("bkng1").offsetWidth - 43) + "px";
				lhn_s.height =	"auto";
				if (act_show_elem.offsetHeight > avl_dim_screen("h") - hd_h - gb_h) {
					lhn_s.height =	(avl_dim_screen("h") - hd_h - gb_h) + "px";
				}
			} else if (d.getElementById("searchlayer")) {
				lhn_s.width =	"100%";
			} else if (d.getElementById("job_nav")) {
				lhn_s.width =	(absLeft(d.getElementById("job_nav")) + d.getElementById("job_nav").firstChild.offsetWidth - 1) + "px";
			} else {
				lhn_s.width =	"218px";
			}
		}
	}
	return false;
}

function htl_opt(htls, htl)	{
	var i, str =	"";
	for (i = 0; i < htls.length; i++) {
		str+=	opt(htls[i], hotels[htls[i]], htl);
	}
	return str;
}

function opn_tclw(id_add)	{
	var htl =	get_selvl(d.forms["gr2" + id_add].elements["hotel" + id_add]);
	
	if (htl === "") {
		if (smartPhone === 0) {
			d.getElementById("rpl_hotel" + id_add).style.color =	"#c04";
			d.getElementById("rpl_hotel" + id_add).style.border =	"1px solid #c04";
			d.getElementById("rpl_hotel" + id_add).style.backgroundPosition =	"right -219px";
			d.getElementById("rpl_hotel" + id_add).innerHTML =	labels[33];
		} else {
			d.getElementById("hotel" + id_add).style.color =	"#c04";
			d.getElementById("hotel" + id_add).style.border =	"1px solid #c04";
			d.getElementById("hotel" + id_add).options[0].text =	labels[33];
		}
		return false;
	} else {
		if (htl === "AMB") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/12117?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		} else if (htl === "BRA") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/12113?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		} else if (htl === "COT") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/12112?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		}else if (htl === "DCO") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/12110?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		} else if (htl === "FER") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/12111?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		} else if (htl === "HOF") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/11092?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		} else if (htl === "NUE") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/12120?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		} else if (htl === "SAX") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/95934?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		} else if (htl === "REG") {
			var adr;
			var lng =	(lang === "de") ?	7 :	1;
			if ((d.getElementById("desir_rate_" + htl)) && (d.getElementById("desir_rate_" + htl).getAttribute("title") !== "")) {
				adr =	d.getElementById("desir_rate_" + htl).getAttribute("title");
			} else {
				adr =	"https://reservations.travelclick.com/12114?languageid=" + lng;
			}
			if (typeof ga === "function") {
				ga(function(tracker) {
					adr =	adr + "&" + tracker.get('linkerParam');
				});
			}
			window.open(adr, "_blank");
			evtrck("Quick-Reservierung Travelclick", adr, "");
		} else {
			if (id_add === "_cncl") {
				window.open(d.getElementById("sbm_stl_cncl").firstChild.getAttribute("href") + "&hotel=" + htl, "_blank");
			} else if (id_add === "_chng") {
				window.open(d.getElementById("sbm_stl_chng").firstChild.getAttribute("href") + "&hotel=" + htl, "_blank");
			} else {
				window.open(d.getElementById("bkng1").getAttribute("href") + "&hotel=" + htl, "_blank");
			}
			evtrck("Quick-Reservierung Linoweb", htl, "");
		}
	}
}
function open_nights_sel() {
	var rate =	((d.getElementById("sel_nights")) && (get_selvl(d.getElementById("sel_nights")) !== "")) ?	"&rate=" + get_selvl(d.getElementById("sel_nights")) :	"";
	window.open(d.getElementById("bkng1").getAttribute("href") + rate, "_blank");
}
function open_breakf_sel() {
	var rate =	((d.getElementById("sel_breakf")) && (get_selvl(d.getElementById("sel_breakf")) !== "")) ?	get_selvl(d.getElementById("sel_breakf")) :	d.getElementById("bkng1").getAttribute("href");
	window.open(rate, "_blank");
}
function init_tclw() {
	var dv, str;
	var htl_opts =	htl_opt(["AMB", "BRA", "COT", "DCO", "FER", "HOF", "NUE", "SAX", "REG"], hotel);
	if ((d.getElementById("bkng1").getAttribute("href").indexOf("rate=Sparpreis") !== -1) || (d.getElementById("bkng1").getAttribute("href").indexOf("modus=bestnights") !== -1)) {
		htl_opts =	htl_opt(["AMB", "BRA", "COT", "DCO", "FER", "REG"], hotel);
	}
	if (loc_hrf.indexOf("/welcome-2022") !== -1) {
		htl_opts =	htl_opt(["BRA", "COT", "HOF", "NUE", "SAX", "REG"], hotel);
	}
	if ((loc_hrf.indexOf("/fruehling-special") !== -1) || (loc_hrf.indexOf("/spring-special") !== -1)) {
		//htl_opts =	htl_opt(["BRA", "COT", "HOF", "NUE", "SAX", "REG"], hotel);
	}
	if ((loc_hrf.indexOf("/sommer-special") !== -1) || (loc_hrf.indexOf("/summer-special") !== -1)) {
		//htl_opts =	htl_opt(["AMB", "BRA", "COT", "HOF", "NUE", "SAX", "REG"], hotel);
	}
	if (smartPhone === 0) {
		if (!d.getElementById("hidbf")) {
			dv =	cr_elem("div", bdy, "hidbf", "");
			str =	"<form name=\"gr2\">"
			+ "<select name=\"hotel\" id=\"hotel\" onchange=\"d.getElementById('rpl_' + this.id).style.color = ''; d.getElementById('rpl_' + this.id).style.border = ''; d.getElementById('rpl_' + this.id).style.backgroundPosition = '';\">"
			+ opt("", labels[53], "")
			+ htl_opts
			+ "</select>"
			+ "</form>";
			dv.innerHTML =	str;
		}
		gr_hide();
		if (bf_container !== false)	{
			dv =	cr_elem("div", bf_container, "req_layer", "dskt");
			str =	"";
		} else {
			add_cls(bdy, "layrd");
			dv =	cr_elem("div", bdy, "req_layer", "dskt");
			dv =	cr_elem("div", bdy, "blende", "");
			dv.onmouseup =	gr_hide;
			str =	"<a id=\"lb_close\" onclick=\"gr_hide();\"></a>";
		}
		str+=	"<div id=\"gr_out_rahm\" class=\"gr_out_rahm\">"
		+	"<div style=\"margin: 0 auto;\">"
		+	"<div><div id=\"rpl_hotel\" class=\"sel_rplcm_gr\"></div></div>"
		+	"<div class=\"gp_subm\"><input name=\"aktion\" value=\"" + labels[8] + "\" type=\"button\" onclick=\"opn_tclw('');\"></div>"
		+	"</div></div>";
		dv =	d.getElementById("req_layer");
		dv.innerHTML =	str;
		var udl_ar =	["hotel"];
		var udl_nd =	d.getElementById("rpl_hotel");
		udl_nd.selfld =	d.getElementById("hotel");
		udl_nd.parentNode.onclick =	function () {
			selct_mu(this.lastChild.selfld);
		};
		udl_nd.innerHTML =	d.getElementById("hotel").options[d.getElementById("hotel").selectedIndex].text;
	} else {
		gr_hide();
		if (d.getElementById("shw_bf"))	{
			dv =	cr_elem("div", d.getElementById("shw_bf"), "req_layer", "mobl");
			str =	"";
		} else {
			add_cls(bdy, "layrd");
			dv =	cr_elem("div", bdy, "req_layer", "mobl");
			dv =	cr_elem("div", bdy, "blende", "");
			dv.onmouseup =	gr_hide;
			str =	"<a id=\"lb_close\" onclick=\"gr_hide();\"></a>";
		}
		str+=	"<form name=\"gr2\">"
		+	"<div id=\"gr_out_rahm\" class=\"gr_out_rahm\"><div>"
		+	"<div class=\"sm_fld\"><select name=\"hotel\" id=\"hotel\" onchange=\"this.style.color = ''; this.style.border = '';\">"
		+	opt("", labels[53], "")
		+	htl_opts
		+	"</select></div>"
		+	"<div class=\"gp_subm\"><input name=\"aktion\" value=\"" + labels[8] + "\" type=\"button\" onclick=\"opn_tclw('');\"></div>"
		+	"</div></form>";
		dv =	d.getElementById("req_layer");
		dv.innerHTML =	str;
	}
	dimensions();
}
function init_cncl() {
	var dv, str;
	if (smartPhone === 0) {
		if (!d.getElementById("hidbf_cncl")) {
			dv =	cr_elem("div", bdy, "hidbf_cncl", "");
			str =	"<form name=\"gr2_cncl\">"
			+ "<select name=\"hotel_cncl\" id=\"hotel_cncl\" onchange=\"d.getElementById('rpl_' + this.id).style.color = ''; d.getElementById('rpl_' + this.id).style.border = ''; d.getElementById('rpl_' + this.id).style.backgroundPosition = '';\">"
			+ opt("", labels[53], "")
			+ htl_opt(["AMB", "BRA", "COT", "DCO", "FER", "HOF", "NUE", "SAX", "REG"], hotel)
			+ "</select>"
			+ "</form>";
			dv.innerHTML =	str;
		}
		dv =	cr_elem("div", d.getElementById("shw_cnclf"), "", "dskt");
		str =	"<div id=\"gr_out_rahm_cncl\" class=\"gr_out_rahm\">"
		+	"<div style=\"margin: 0 auto;\">"
		+	"<div><div id=\"rpl_hotel_cncl\" class=\"sel_rplcm_gr\"></div></div>"
		+	"<div class=\"gp_subm\"><input name=\"aktion\" value=\"" + labels[51] + "\" type=\"button\" onclick=\"opn_tclw('_cncl');\"></div>"
		+	"</div></div>";
		dv.innerHTML =	str;
		var udl_ar =	["hotel_cncl"];
		var udl_nd =	d.getElementById("rpl_hotel_cncl");
		udl_nd.selfld =	d.getElementById("hotel_cncl");
		udl_nd.parentNode.onclick =	function () {
			selct_mu(this.lastChild.selfld);
		};
		udl_nd.innerHTML =	d.getElementById("hotel_cncl").options[d.getElementById("hotel_cncl").selectedIndex].text;
	} else {
		dv =	cr_elem("div", d.getElementById("shw_cnclf"), "", "mobl");
		str =	"<form name=\"gr2_cncl\">"
		+	"<div id=\"gr_out_rahm_cncl\" class=\"gr_out_rahm\"><div>"
		+	"<div class=\"sm_fld\"><select name=\"hotel_cncl\" id=\"hotel_cncl\" onchange=\"this.style.color = ''; this.style.border = '';\">"
		+	opt("", labels[53], "")
		+	htl_opt(["AMB", "BRA", "COT", "DCO", "FER", "HOF", "NUE", "SAX", "REG"], hotel)
		+	"</select></div>"
		+	"<div class=\"gp_subm\"><input name=\"aktion\" value=\"" + labels[51] + "\" type=\"button\" onclick=\"opn_tclw('_cncl');\"></div>"
		+	"</div></form>";
		dv.innerHTML =	str;
	}
}
function init_chng() {
	var dv, str;
	if (smartPhone === 0) {
		if (!d.getElementById("hidbf_chng")) {
			dv =	cr_elem("div", bdy, "hidbf_chng", "");
			str =	"<form name=\"gr2_chng\">"
			+ "<select name=\"hotel_chng\" id=\"hotel_chng\" onchange=\"d.getElementById('rpl_' + this.id).style.color = ''; d.getElementById('rpl_' + this.id).style.border = ''; d.getElementById('rpl_' + this.id).style.backgroundPosition = '';\">"
			+ opt("", labels[53], "")
			+ htl_opt(["AMB", "BRA", "COT", "DCO", "FER", "HOF", "NUE", "SAX", "REG"], hotel)
			+ "</select>"
			+ "</form>";
			dv.innerHTML =	str;
		}
		dv =	cr_elem("div", d.getElementById("shw_chngf"), "", "dskt");
		str =	"<div class=\"gr_out_rahm\" id=\"gr_out_rahm_chng\">"
		+	"<div style=\"margin: 0 auto;\">"
		+	"<div><div id=\"rpl_hotel_chng\" class=\"sel_rplcm_gr\"></div></div>"
		+	"<div class=\"gp_subm\"><input name=\"aktion\" value=\"" + labels[52] + "\" type=\"button\" onclick=\"opn_tclw('_chng');\"></div>"
		+	"</div></div>";
		dv.innerHTML =	str;
		var udl_ar =	["hotel_chng"];
		var udl_nd =	d.getElementById("rpl_hotel_chng");
		udl_nd.selfld =	d.getElementById("hotel_chng");
		udl_nd.parentNode.onclick =	function () {
			selct_mu(this.lastChild.selfld);
		};
		udl_nd.innerHTML =	d.getElementById("hotel_chng").options[d.getElementById("hotel_chng").selectedIndex].text;
	} else {
		dv =	cr_elem("div", d.getElementById("shw_chngf"), "", "mobl");
		str =	"<form name=\"gr2_chng\">"
		+	"<div class=\"gr_out_rahm\" id=\"gr_out_rahm_chng\"><div>"
		+	"<div class=\"sm_fld\"><select name=\"hotel_chng\" id=\"hotel_chng\" onchange=\"this.style.color = ''; this.style.border = '';\">"
		+	opt("", labels[53], "")
		+	htl_opt(["AMB", "BRA", "COT", "DCO", "FER", "HOF", "NUE", "SAX", "REG"], hotel)
		+	"</select></div>"
		+	"<div class=\"gp_subm\"><input name=\"aktion\" value=\"" + labels[52] + "\" type=\"button\" onclick=\"opn_tclw('_chng');\"></div>"
		+	"</div></form>";
		dv.innerHTML =	str;
	}
}
function p50mod(elem, probe) {
	var p50elem =	d.getElementById("wrap_" + elem.name);
	if ((elem.selectedIndex > 0) && (probe === 0)) {
		add_cls(p50elem, "inp50p");
		p50elem.firstChild.style.display =	"";
	} else {
		rmv_cls(p50elem, "inp50p");
		p50elem.firstChild.style.display =	"none";
	}
}
function s_disp(id, stl) {
	d.getElementById(id).style.display =	stl;
}
function init_scal(fld) {
	if (smartPhone !== 1) {
		var before =	(chk_cls(fld.parentNode.parentNode, "hbw") !== -1) ?	1 :	0;
		if (!d.getElementById("scal")) {
			var dv =	cr_elem("div", d.getElementsByTagName("main")[0], "scal", "");
			dv.innerHTML =	"&nbsp;";
			if (fld.id === "termin") {
				dv.innerHTML+=	"<div id=\"cal_leg\"><p><span></span>" + labels[32] + "<span></span>" + labels[31] + "</p></div>";
			}
		}
		d.getElementById("scal").fldid =	fld.id;
		var new_dte =	extract_date_pkg(fld.id);
		if ((d.getElementById("event")) && (get_selvl(d.getElementById("event")) === "valentinstag_menu_to_go")) {
			new_dte =	new Date(2021, 1, 12);
		}
		build_c_grsv(fld.id, new_dte.getFullYear(), new_dte.getMonth() + 1, "scal", before);
		dimensions();
		add_cls(d.getElementById("scal"), "cal_opn");
		act_show_elem =	d.getElementById("scal");
		d.onmouseup =	chk_hide_layer;
	}
}
function handleEnter(e) {
	var charCode;
	if(e && e.which){
		charCode =	e.which;
	} else if(w.event) {
		e =	w.event;
		charCode =	e.keyCode;
	}
	if (charCode === 13) {
		calcRoute();
	}
}
function gr_hide() {
	if (d.getElementById("req_layer")) {
		if (d.getElementById("blende")) {
			pn_rmv_chld(d.getElementById("blende"));
			rmv_cls(bdy, "layrd");
		}
		pn_rmv_chld(d.getElementById("req_layer"));
	}
}
function opt(vl, txt, sl) {
	var str =	"<option value=\"" + vl + "\"";
	str+=	(sl === vl) ?	" selected" :	"";
	str+=	">" + txt + "</option>";
	return str;
}
function hid_fld(nme, vl) {
	return "<input type=\"hidden\" name=\"" + nme + "\" value=\"" + vl + "\">";
}
function lz(num) {
	return (num <= 9) ?	"0" + num :	num;
}
function setDay_grsv(fld, day, month, year) {
	var new_dte =	new Date(year, month, day);
	dfgr[fld].value =	formatDate(new_dte);
	if (d.getElementById("scal")) {
		if (fld === "anreise") {
			dfgr["abreise"].value =	"";
			init_scal(dfgr["abreise"]);
		} else {
			hide_all_layers();
		}
	} else {
		if (fld === "anreise") {
			dfgr["abreise"].value =	"";
			init_bf("abreise", 0);
		} else {
			init_bf("anreise", 0);
		}
	}
	if ((d.getElementById("event")) && (d.getElementById("uhrzeit"))) {
		timeopts(false);
	} else if (d.getElementById("uhrzeit")) {
		timeopts(false);
	}
}
function formatDate(xte) {
	return lz(xte.getDate()) + "." + lz(xte.getMonth() + 1) + "." + xte.getFullYear();
}

function build_c_grsv(fld, year, month, cont, before) {
    var wd = weekdays[lang];
    var td, tr, chil, txt, t_date, t_date_tsmp, t_out;
    var next_month = month + 1;
    var next_month_year = year;
    if (next_month > 12) {
        next_month = 1;
        next_month_year++;
    }
    var last_month = month - 1;
    var last_month_year = year;
    if (last_month < 1) {
        last_month = 12;
        last_month_year--;
    }
    var offset = new Date(year, month - 1, 0);
    var t_day = -offset.getDay();
    var anreis_dte = extract_date_pkg("anreise");
    var start_month_navi_cmp = (fld === "anreise") ? Dte : anreis_dte;

    var tbl = cr_elem("table", "", "", "grtb");
    var tbd = cr_elem("tbody", tbl, "", "");
    tr = cr_elem("tr", tbd, "", "");
    td = cr_elem("th", tr, "", "");

    var formular = d.getElementById(fld)?.form?.elements["formular"]?.value || "";
    var isBewertungForm = formular.toString().toLowerCase().includes("bewertung");

    // --- Kalender Navigation (Vorheriger / Nächster Monat) ---
    if (new Date(last_month_year, last_month - 1, 1) >= new Date(start_month_navi_cmp.getFullYear(), start_month_navi_cmp.getMonth(), 1) || isBewertungForm) {
        chil = d.createElement("a");
        chil.setAttribute("href", "javascript: build_c_grsv('" + fld + "', " + last_month_year + ", " + last_month + ", '" + cont + "', " + before + ");");
    } else {
        chil = d.createElement("span");
    }
    chil.appendChild(d.createTextNode("\u00a0 \u00a0 \u00a0"));
    add_cls(chil, "prvmnth");
    td.appendChild(chil);

    td = cr_elem("th", tr, "", "");
    td.setAttribute("colSpan", 5);
    td.appendChild(d.createTextNode(op_mo_text[lang][month - 1] + " " + year));
    td = cr_elem("th", tr, "", "");

    chil = d.createElement("a");
    chil.setAttribute("href", "javascript: build_c_grsv('" + fld + "', " + next_month_year + ", " + next_month + ", '" + cont + "', " + before + ");");
    chil.appendChild(d.createTextNode("\u00a0 \u00a0 \u00a0"));
    add_cls(chil, "nxtmnth");
    td.appendChild(chil);

    // --- Wochentag Header ---
    tr = cr_elem("tr", tbd, "", "");
    for (var col = 0; col <= 6; col++) {
        td = cr_elem("th", tr, "", "");
        var col_str = (col < 6) ? col + 1 : 0;
        td.appendChild(d.createTextNode(wd[col_str].substr(0, 2)));
    }

    // --- Kalendertage generieren ---
    for (var row = 1; row <= 6; row++) {
        tr = cr_elem("tr", "", "", "cal");
        for (col = 0; col <= 6; col++) {
            td = cr_elem("td", tr, "", "");
            t_day++;
            t_date = new Date(year, month - 1, t_day);
            t_out = t_date.getDate();

            if (t_date.getMonth() === month - 1) {
                t_date_tsmp = t_date.getTime();
                txt = d.createTextNode(t_out);
                let isClickable = false; // Standard: Nicht klickbar

                // 1. Grundprüfung: Ist das Datum für den jeweiligen Zweck gültig (Zukunft etc.)?
                let isFutureDate = false;
                if (fld === "anreise" && t_date_tsmp >= Dte.getTime() - 86400000) {
                    isFutureDate = true;
                } else if (fld === "abreise" && t_date > anreis_dte) {
                    isFutureDate = true;
                } else if (fld === "termin" && t_date_tsmp >= Dte.getTime() - 86400000) {
                    isFutureDate = true;
                }

                // Bei Bewertungsformularen soll Standard klickbar sein (Anpassung CS 14.10.2025)
                if (isBewertungForm) {
                    isClickable = true;
                }

                // 2. Logik anwenden, WENN das Datum in der Zukunft liegt
                if (isFutureDate) {
                    const hotelValue = d.getElementById(fld)?.form?.elements["form_hotel"]?.value;

                    // Fall A: Normale Hotelbuchung (An-/Abreise)
                    if (fld === "anreise" || fld === "abreise") {
                        isClickable = true;
                    }
                    // Fall B: Tischreservierung (Termin)
                    else if (fld === "termin") {
                        
                        // B.1: SPEZIALFALL für Regensburg (neue eventRules Logik)
                        if (hotelValue === "SORAT Insel-Hotel Regensburg") {
                            let selectedEventId = d.getElementById("event") ? get_selvl(d.getElementById("event")) : "";
                            let rule = eventRules[selectedEventId];
                            if (selectedEventId === "" && t_date.getDay() !== 1) {
                                isClickable = true; // Kein Event gewählt -> alles klickbar außer Montag
                            } else if (rule) {
                                if (rule.date) {
                                    isClickable = (formatDateForCompare(t_date) === rule.date);
                                } else if (rule.days) {
                                    isClickable = rule.days.includes(t_date.getDay());
                                    if (isClickable && rule.excludeDates && rule.excludeDates.includes(formatDateForCompare(t_date))) {
                                        isClickable = false;
                                    }
                                }
                            }
                        }
                        // B.2: SPEZIALFALL für Brandenburg (alte Logik)
                        else if (hotelValue === "SORAT Hotel Brandenburg") {
                            isClickable = (t_date_tsmp > unixdate("2021-02-28"));
                        }
                        // B.3: SPEZIALFALL für Hof (alte Logik)
                        else if (hotelValue === "Hotel Central Hof") {
                            // Diese komplexe Regel ist 1:1 aus dem alten Skript übernommen
                            if ((t_date_tsmp > unixdate("2021-02-28") && t_date_tsmp < unixdate("2025-04-06")) || (t_date_tsmp >= unixdate("2025-04-06") && t_date.getDay() != 0) || (t_date_tsmp > unixdate("2025-08-10"))) {
                                isClickable = true;
                            }
                        }
                        // B.4: FALLBACK für alle anderen Hotels
                        else {
                            isClickable = true; // Jedes zukünftige Datum ist klickbar
                        }
                    }
                }

                // Element (Link oder Text) basierend auf `isClickable` erstellen
                if (isClickable) {
                    chil = d.createElement("a");
                    chil.setAttribute("href", "javascript: setDay_grsv('" + fld + "', " + t_out + ", " + t_date.getMonth() + ", " + t_date.getFullYear() + ", " + t_date_tsmp + ");");
                } else {
                    chil = d.createElement("span");
                }

                // Styling für ausgewählte An-/Abreisedaten
                if ((t_date_tsmp === anreis_dte.getTime()) && (fld === "abreise")) { add_cls(td, "anr act"); } 
                else if (t_date_tsmp === anreis_dte.getTime()) { add_cls(td, "anr thru act"); }
                else if (t_date_tsmp === extract_date_pkg("abreise").getTime()) { add_cls(td, "abr act"); }
                else if ((t_date <= extract_date_pkg("abreise")) && (t_date >= anreis_dte)) { add_cls(td, "act"); }

            } else { // Tage außerhalb des aktuellen Monats
                txt = d.createTextNode("\u00a0");
                chil = d.createElement("span");
            }
            chil.appendChild(txt);
            td.appendChild(chil);
        } // Ende Spalten-Loop
        tr.appendChild(td);
        tbd.appendChild(tr);
    } // Ende Zeilen-Loop

    // Ersetze alten Kalender im DOM
    var contElement = d.getElementById(cont);
    if (contElement && contElement.firstChild) {
        contElement.replaceChild(tbl, contElement.firstChild);
    } else if (contElement) {
        contElement.appendChild(tbl);
    }
}


function arrange_ckb(sub_elem) {
	var i, dv, elem =	sub_elem.form.elements[sub_elem.name];
	if (elem.length === undefined) {
		sub_elem.checked =	true;
		return true;
	}
	for (i = 0; i < elem.length; i++) {
		elem[i].checked =	false;
	}
	sub_elem.checked =	true;
	for (i = 0; (dv = d.getElementsByTagName("div")[i]); i++) {
		rmv_cls(dv, "temphide");
	}
	if (sub_elem.getAttribute("data-hideparentnodeid")) {
		var elems =	sub_elem.getAttribute("data-hideparentnodeid").split(", ");
		for (i = 0; (dv = elems[i]); i++) {
			if (d.getElementById(dv)) {
				add_cls(d.getElementById(dv).parentNode, "temphide");
			}
		}
	}
	return false;
}
function extract_date_pkg(fld) {
	var new_dte;
	if ((fld === "abreise") && (dfgr[fld]) && (dfgr[fld].value === "")) {
		fld =	"anreise";
	}
	if ((dfgr[fld]) && (dfgr[fld].value.match(/(\d{1,2}).(\d{1,2}).(\d{2,4})/))) {
		var dte_parts =	dfgr[fld].value.split(".");
		var yea =	(dte_parts[2].length === 2) ?	"20" + dte_parts[2]:	dte_parts[2];
		new_dte =	new Date(yea, dte_parts[1] - 1, dte_parts[0]);
	} else {
		new_dte =	Dte;
	}
	return new_dte;
}
function extract_date_inputdate(fld) {
	var new_dte;
	if ((dfgr[fld]) && (dfgr[fld].value.match(/(\d{4})-(\d{2})-(\d{2})/))) {
		var dte_parts =	dfgr[fld].value.split("-");
		new_dte =	new Date(dte_parts[0], dte_parts[1] - 1, dte_parts[2]);
	} else {
		new_dte =	Dte;
	}
	return new_dte;
}
function selct_mu(fld) {
	var p, i;
	var cls =	(chk_cls(fld.parentNode.parentNode.parentNode, "jnelm") === -1) ?	"litb" :	"litb drk";
	var dv =	cr_elem("div", "", "", cls);
	for (i = 0; i < fld.length; i++) {
		var clsi =	((fld.selectedIndex === i) && (fld.options[i].value !== "")) ?	"slct" :	"";
		if (fld.options[i].disabled === false) {
			p =	cr_elem("p", dv, "", clsi);
			p.appendChild(d.createTextNode(fld.options[i].text));
			p.selIndex =	i;
			p.selectName =	fld.id;
			p.onclick =	function() {
				make_selection(this);
			};
		}
	}
	if (cls.indexOf("drk") === -1) {
		var elm =	d.getElementById("rpl_" + fld.id);
		qr_targ =	cr_elem("div", bdy, "qr_targ", "");
		qr_targ.appendChild(dv);
		dv.style.width =	elm.offsetWidth + "px";
		var offs =	(chk_cls(elm.parentNode, "inp50p") !== -1) ?	-1 :	0;
		pos_adj(qr_targ, elm, offs, 0);
		d.onmousedown =	removtarg_move;
	} else {
		qr_targ =	dv;
		fld.parentNode.parentNode.parentNode.appendChild(dv);
		d.onmousedown =	removtarg_move;
		dv.onmouseover =	function() {
			d.onmousemove =	removtarg_move;
		};
	}
	add_cls(qr_targ, "litd");
}
function unixdate(str) {
	if (str.indexOf(" ") === -1) {
		datestr =	str + " 00:00:00"
	}
	var dte =	new Date(datestr);

	if (isNaN(dte)) {
		var timevals = null;
		if (str.indexOf(" ") !== -1) {
			var datetimevals = str.split(" ");
			str = datetimevals[0];
			timevals = datetimevals[1].split(":");
		}
		
		var datevals = str.split('-');
		dte = new Date(datevals[0], datevals[1], datevals[2], 0, 0, 0, 0);
		if (timevals !== null) {
			dte.setHours(parseInt(timevals[0]));
			dte.setMinutes(parseInt(timevals[1]));
			dte.setSeconds(parseInt(timevals[2]));
		}
	}

	return dte.getTime();
}
function timeopts(flushfield) {
    var i, opt, el_term = document.getElementById("termin"), el_uhrz = document.getElementById("uhrzeit");
    if (!el_term || !el_uhrz) {
        // console.warn("Element 'termin' oder 'uhrzeit' nicht gefunden.");
        return;
    }

    var daydte = extract_date_pkg("termin");
    var daydte_dy = daydte.getDay();
    var selectedEventId = (document.getElementById("event")) ? get_selvl(document.getElementById("event")) : ""; // Wichtig: Leerer String bei keiner Auswahl
    var rule = selectedEventId ? eventRules[selectedEventId] : null;

    // Zuerst alle Optionen (außer dem Platzhalter) potenziell sichtbar und aktivierbar machen
    // Der Platzhalter (Option 0) bleibt immer sichtbar und aktiv.
    for (i = 1; (opt = el_uhrz.options[i]); i++) {
        opt.disabled = false;
        opt.style.display = ''; // Standardmäßig sichtbar
    }
    el_uhrz.selectedIndex = 0; // Auswahl auf Platzhalter zurücksetzen

    if (rule && rule.fixedTimeIdx !== undefined) {
        // Für Events mit fester Zeit: setfieldsforevent kümmert sich um das Anzeigen/Ausblenden
        // (wird weiter unten aufgerufen)
    } else if (rule && rule.timeMinIdx !== undefined && rule.timeMaxIdx !== undefined) {
        // Event mit einem Zeitbereich
        for (i = 1; (opt = el_uhrz.options[i]); i++) {
            if (i < rule.timeMinIdx || i > rule.timeMaxIdx) {
                opt.disabled = true;
                opt.style.display = 'none'; // Option ausblenden
            } else {
                opt.disabled = false;
                opt.style.display = ''; // Option anzeigen
            }
        }
    } else {
        // Kein Event ausgewählt, oder das Event hat keine spezifischen Zeitregeln (timeMinIdx/timeMaxIdx)
        // In diesem Fall alle Uhrzeiten (außer Platzhalter) ausblenden.
        for (i = 1; (opt = el_uhrz.options[i]); i++) {
            opt.disabled = true;
            opt.style.display = 'none';
        }
    }

    // Spezielle Logik (z.B. Frühstück) nach der allgemeinen Filterung anwenden
    if (rule && rule.specialTimeLogic === 'handleBreakfastTimes') {
        handleBreakfastTimeAdjustments(el_uhrz, daydte_dy, true); // true -> manageDisplay
    }

    // Feste Felder für Events mit festem Datum/Zeit setzen
    if (rule && rule.fixedTimeIdx !== undefined) {
        let dateDE = rule.date ? rule.date.split('-').reverse().join('.') : formatDate(Dte);
        setfieldsforevent(rule.fixedTimeIdx, rule.date, dateDE, true); // true -> manageDisplay
    } else {
        // Allgemeine Logik für das Datumsfeld, wenn kein Event mit fester Zeit gewählt ist
        if (el_term.type === "date") {
            el_term.setAttribute("min", Dte.getFullYear() + "-" + lz(Dte.getMonth() + 1) + "-" + lz(Dte.getDate()));
            el_term.setAttribute("max", "");
        }
        if (flushfield === true) {
            el_term.value = "";
        }
    }

    // Benutzerdefinierte Anzeige des Dropdowns aktualisieren
    // Sicherstellen, dass die ausgewählte Option sichtbar ist, sonst Platzhalter wählen
    if (document.getElementById("rpl_uhrzeit")) {
        let currentSelectedIndex = el_uhrz.selectedIndex;
        if (currentSelectedIndex > 0 && el_uhrz.options[currentSelectedIndex] && el_uhrz.options[currentSelectedIndex].style.display === 'none') {
            el_uhrz.selectedIndex = 0; // Auf Platzhalter zurückfallen, wenn aktuelle Auswahl ausgeblendet wurde
        }
        document.getElementById("rpl_uhrzeit").innerHTML = el_uhrz.options[el_uhrz.selectedIndex] ? el_uhrz.options[el_uhrz.selectedIndex].text : "";
    }
}

function setfieldsforevent(uhrzIdx, dte_en, dte_de, manageDisplay = false) {
    var el_term = document.getElementById("termin"), el_uhrz = document.getElementById("uhrzeit");
    if (!el_uhrz) return;

    for (var i = 0; i < el_uhrz.options.length; i++) {
        // Platzhalter (Index 0) und die spezifische Event-Zeit (uhrzIdx)
        if (i === 0 || i === uhrzIdx) {
            el_uhrz.options[i].disabled = false;
            if (manageDisplay) {
                el_uhrz.options[i].style.display = ''; // Anzeigen
            }
        } else {
            el_uhrz.options[i].disabled = true;
            if (manageDisplay) {
                el_uhrz.options[i].style.display = 'none'; // Ausblenden
            }
        }
    }

    // Sicherstellen, dass die Ziel-Option ausgewählt und sichtbar ist
    if (el_uhrz.options[uhrzIdx]) {
        el_uhrz.options[uhrzIdx].disabled = false;
        if (manageDisplay) {
            el_uhrz.options[uhrzIdx].style.display = '';
        }
        el_uhrz.selectedIndex = uhrzIdx;
    } else {
         // Fallback, falls der uhrzIdx ungültig ist
        el_uhrz.selectedIndex = 0;
    }

    if (el_term) {
        if (el_term.type === "date") {
            el_term.setAttribute("min", dte_en);
            el_term.setAttribute("max", dte_en);
            el_term.value = dte_en;
        } else {
            el_term.value = dte_de;
        }
    }

    if (document.getElementById("rpl_uhrzeit")) {
        document.getElementById("rpl_uhrzeit").innerHTML = el_uhrz.options[el_uhrz.selectedIndex] ? el_uhrz.options[el_uhrz.selectedIndex].text : "";
    }
}

function selct_mu_rmv() {
	pn_rmv_chld(qr_targ);
	d.onmousedown =	null;
	d.onmousemove =	null;
}
function removtarg_move(event) {
	var ev =	(event) ?	event.target :	w.event.srcElement;
	while (ev !== null) {
		if (ev === qr_targ) {
			return true;
		}
		ev =	ev.parentNode;
	}
	selct_mu_rmv();
}
function make_selection(selected_li) {
	var sln =	d.getElementById(selected_li.selectName);
	var rpl =	d.getElementById("rpl_" + selected_li.selectName);
	if (chk_cls(rpl.parentNode, "jnelm") !== -1) {
		sln.selectedIndex =	(sln.selectedIndex === selected_li.selIndex) ?	0 :	selected_li.selIndex;
		if (sln.selectedIndex > 0) {
			add_cls(rpl.parentNode, "optd");
		} else {
			rmv_cls(rpl.parentNode, "optd");
		}
	} else {
		sln.selectedIndex =	selected_li.selIndex;
	}
	rpl.innerHTML =	sln.options[sln.selectedIndex].text;
	selct_mu_rmv();
	if (sln.onchange !== null) {
		sln.onchange();
	}
}
function citymap(ids, lnk) {
	var i, id, p;
	qr_targ =	(d.getElementById("ctmp")) ?	d.getElementById("ctmp") :	cr_elem("div", bdy, "ctmp", "");
	qr_targ.innerHTML =	"";
	for (i = 0; (id = ids[i]); i++) {
		p =	cr_elem("p", qr_targ, "", "");
		p.innerHTML+=	d.getElementById("htlimg_" + id).firstChild.outerHTML + d.getElementById("htlimg_" + id).firstChild.getAttribute("alt");
		p.ref_id =	id;
		p.onclick =	function() {
			darkbx(this.ref_id, 0, this.parentNode);
		};
	}
	pos_adj(qr_targ, lnk, -qr_targ.offsetWidth, -qr_targ.offsetHeight / 2);
	qr_targ.onmouseover =	function() {
		d.onmousemove =	removtarg_move;
	};
	lnk.onmouseout =	function() {
		d.onmousemove =	removtarg_move;
	};
}
function format_date_us(dte)	{
	var day =	dte.getDate();
	var month =	(dte.getMonth() + 1);
	if (month < 10) {
		month =	"0" + month;
	}
	if (day < 10) {
		day =	"0" + day;
	}
	return dte.getFullYear() + "-" + month + "-" + day;
}
function dim_tmeout() {
	clearTimeout(dim_timeout);
	dim_timeout =	setTimeout(dimensions, 200);
}

/**
 * Lädt Google Maps nur dann, wenn
 * Marketing‑Cookies erlaubt sind und
 * das Element slide_11 existiert.
 */
function loadSlide11Map() {
  if (!document.getElementById("slide_11") || document.getElementById("gmscript")) return;

  onMarketingConsent(function() {
    var anch = cr_elem("script", document.getElementsByTagName("head")[0], "gmscript", "");
    anch.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyCvMFv9F4zM1urk3qMgizEo2hFV5hmtrzE&libraries=places&callback=GMinit"; // BITTE API-KEY ERSETZEN
  });
}
// direkt einmal aufrufen, der Helfer kümmert sich um Consent
//loadSlide11Map();

function pg_start() {
	var anch, i, j, anch_h, anch_p, anch_p_p, anch_img, dv;
	var pausch =	[];
	bdy =	d.getElementsByTagName("body")[0];
	loc_hrf =	location.href;
	lang =	(d.getElementsByTagName("html")[0].getAttribute("lang").indexOf("de") !== -1) ?	"de" :	"en";
	if (d.getElementById("pageinfo")) {
		hotel =	d.getElementById("pageinfo").getAttribute("title");
		d.getElementById("pageinfo").setAttribute("title", "", 0);
	} else {
		hotel =	"all";
	}
	
	labels =	labeling[lang];
	w.addEventListener("orientationchange", dimensions, false);
	w.addEventListener("resize", dim_tmeout, false);
	w.addEventListener("scroll", tts_show, false);
	w.addEventListener("scroll", gmload, false);

	smartPhone =	( /Android|webOS|iPhone|iPad|iPod|IEMobile|BlackBerry/i.test(navigator.userAgent) ) ?	1 :	0;
	placeHolderSupport =	("placeholder" in d.createElement("input"));
	if (!placeHolderSupport) {
		for (i = 0; (anch = d.getElementsByTagName("input")[i]); i++) {
			if ((anch.type === "text") || (anch.type === "password")) {
				if ((anch.value === "") && (anch.getAttribute("placeholder") !== null)) {
					anch.value =	anch.getAttribute("placeholder");
				}
				anch.onfocus =	function() {
					if (this.value === this.getAttribute("placeholder")) {
						this.value =	"";
					}
				};
				anch.onblur =	function() {
					if ((this.value === "") && (this.getAttribute("placeholder") !== null)) {
						this.value =	this.getAttribute("placeholder");
					}
				};
			}
		}
		for (i = 0; (anch = d.getElementsByTagName("textarea")[i]); i++) {
			if ((anch.value === "") && (anch.getAttribute("placeholder") !== null)) {
				anch.value =	anch.getAttribute("placeholder");
			}
			anch.onfocus =	function() {
				if (this.value === this.getAttribute("placeholder")) {
					this.value =	"";
				}
			};
			anch.onblur =	function() {
				if ((this.value === "") && (this.getAttribute('placeholder') !== null)) {
					this.value =	this.getAttribute("placeholder");
				}
			};
		}
		if (d.forms[0]) {
			d.forms[0].onsubmit =	function() {
				for (i = 0; (anch = d.getElementsByTagName("input")[i]); i++) {
					if ((anch.type === "text") || (anch.type === "password") || (anch.type === "textarea")) {
						if (anch.value === anch.getAttribute("placeholder")) {
							anch.value =	"";
						}
					}
				}
				for (i = 0; (anch = d.getElementsByTagName("textarea")[i]); i++) {
					if (anch.value === anch.getAttribute("placeholder")) {
						anch.value =	"";
					}
				}
			};
		}
	}
	if (loc_hrf.indexOf("#c") !== -1) {
		w.scrollTo(0, 0);
	}
	if (d.getElementById("countdown")) {
		ajax_curtime();
	}
	if ((d.getElementById("slide_0")) && ((d.getElementById("slide_0").parentNode.nodeName === "MAIN") || (d.getElementById("slide_0").parentNode.id === "sail"))) {
		is_slide =	true;
		/* for (i = 0; (anch = d.getElementById("slide_0").childNodes[i]); i++) {
			 if ((anch.firstChild) && (anch.firstChild.nodeName === "IMG")) {
				 var anch_i =	anch.firstChild;
				 if (anch_i.getAttribute("srcset")) {
					 anch_i.orig_src =	anch_i.getAttribute("src");
					 anch_i.small_src =	anch_i.getAttribute("srcset").split(" ")[0];
					 anch_i.removeAttribute("srcset");
					 if ((slide_height("slide_0") === 1) && (anch_i.src.indexOf(anch_i.small_src) === -1)) {
						// anch_i.src =	anch_i.small_src;
					 } else if (anch_i.src.indexOf(anch_i.orig_src) === -1) {
						 anch_i.src =	anch_i.orig_src;
					 }
					 if ((anch.childNodes[1]) && (anch.childNodes[1].className.indexOf("htltxt") !== -1) && (anch.childNodes[1].firstChild) && (anch.childNodes[1].firstChild.nodeName === "IMG") && (anch.childNodes[1].firstChild.getAttribute("srcset"))) {
						 anch_i =	anch.childNodes[1].firstChild;
						 anch_i.orig_src =	anch_i.getAttribute("src");
						 anch_i.small_src =	anch_i.getAttribute("srcset").split(" ")[0];
						 anch_i.removeAttribute("srcset");
						 if ((slide_height("slide_0") === 1) && (anch_i.indexOf(anch_i.small_src) === -1)) {
							// anch_i.src =	anch_i.small_src;
						 } else if (anch_i.src.indexOf(anch_i.orig_src) === -1) {
							// anch_i.src =	anch_i.orig_src;
						 }
					 }
				 }
			 }
		 }*/
	}
	if ((d.getElementById("tx_indexedsearch")) && (document.getElementById("tx_indexedsearch").parentNode.parentNode.childNodes.length > 4)) {
		document.getElementById("tx_indexedsearch").parentNode.parentNode.appendChild(d.getElementById("tx_indexedsearch").parentNode.cloneNode(true));
	}
	if ((d.getElementById("mnnv1")) && (d.getElementById("mnnv2"))) {
		anch =	cr_elem("button", d.getElementsByTagName("header")[0], "menu_icon", "");
		anch.setAttribute("aria-label", "Menü");
		anch.onclick =	profile_resp;
	}
	if ((d.getElementById("navi_lv2")) && (d.getElementById("grey_band"))) {
		anch =	d.getElementById("navi_lv2").cloneNode(true);
		anch.id =	"lft_hvr_nav";
		
		// anch.id =	"htl_nav";
		// d.getElementById("hd_drv").insertBefore(anch, d.getElementById("grey_band").firstChild);
		
		d.getElementById("grey_band").appendChild(anch);
		anch =	d.createElement("a");
		anch.id =	"submenu_icon";
		anch.onclick =	function() {
			show_layer("lft_hvr_nav", null);
		};
		d.getElementById("grey_band").insertBefore(anch, d.getElementById("grey_band").firstChild);
	}
	if (d.getElementById("prk")) {
		if (loc_hrf.indexOf("cat=") !== -1) {
			var elem_id =	loc_hrf.split("cat=")[1];
			if (elem_id.indexOf("&") !== -1) {
				elem_id =	elem_id.split("&")[0];
			}
			if (d.getElementById(elem_id)) {
				tagung_navi(d.getElementById(elem_id), "prk");
			}
		}
		if ((d.getElementById("tit")) && (d.getElementById("mag")) && (chk_cls(d.getElementById("prk"), "tagung") === -1) && ((avl_dim_screen("w") > 1024) || (avl_dim_screen("w") === 768))) {
			rmv_cls(d.getElementById("prk"), "titles");
			rmv_cls(d.getElementById("tit"), "optd");
			add_cls(d.getElementById("mag"), "optd");
		}
	}
	
	if ((d.getElementById("job_nav")) && (chk_cls(d.getElementById("job_nav"), "inv") === -1)) {
		s_disp("job_nav", "block");
		if (loc_hrf.indexOf("sword=") !== -1) {
			cook_navi(decodeURIComponent(loc_hrf.split("sword=")[1].split("&submit_button")[0].replace(/\+/, "%20")).toLowerCase());
		}
	}
	if ((d.getElementById("hid_captcha")) && (d.getElementById("plchld_captcha"))) {
		if (!d.getElementById("captcha_error")) {
			s_disp("plchld_captcha", "none");
		}
		d.getElementById("plchld_captcha").appendChild(d.getElementById("hid_captcha"));
	}
	if ((d.getElementById("years_wrap")) && (d.referrer.indexOf("newsroom/archiv") !== -1)) {
		add_cls(d.getElementById("years_wrap").parentNode, "opn");
	}
	for (i = 0; (anch = d.getElementsByTagName("nav")[i]); i++) {
		if (chk_cls(anch.parentNode, "reminder") !== -1) {
			anch.onclick =	hide_drkbx;
		}
	}
	for (i = 0; (anch = d.getElementsByTagName("a")[i]); i++) {
		anch_h =	(anch.getAttribute("href")) ?	anch.getAttribute("href") :	"";
		anch_p =	anch.parentNode;
		anch_p_p =	anch_p.parentNode;
		if (chk_cls(anch, "bkng") !== -1) {
			anch.id =	"bkng1";
		}
		if (anch.getAttribute("title")) {
			anch.setAttribute("titleinfo", anch.getAttribute("title"));
			anch.removeAttribute("title");
			if ((anch.getAttribute("titleinfo").indexOf("ce_") === 0) && (anch_h.indexOf("watch?v=") === -1)) {
				anch.onclick =	function() {
					return darkbx(this.getAttribute("titleinfo"), 0, this);
				}
			}
		}
		if ((typeof anch.onclick !== "function") && (anch.getAttribute("href"))) {
			if (anch_p.id === "slide_1") {
				anch.lnkimg =	"hdmg_" + i;
				anch.onclick =	function() {
					buildgal1(this.parentNode);
					var targ =	(chk_cls(this, "mre") === -1) ?	this.lnkimg :	this.parentNode.firstChild.lnkimg;
					return darkbx(targ, 0, this);
				};
			} else if ((anch_h.indexOf("watch?v=") !== -1)) {
				anch.onclick =	function() {
					return yt_frame(this);
				};
			} else if ((chk_cls(anch_p_p, "slide_6") !== -1) && ((anch_h.indexOf(".gif") !== -1) || (anch_h.indexOf(".png") !== -1) || (anch_h.indexOf(".jpg") !== -1))) {
				anch.lnkimg =	"hdmg_" + i;
				anch.onclick =	function() {
					buildgal6(this.parentNode);
					return darkbx(this.lnkimg, 0, this);
				};
			} else if ((anch.id === "bkng1") && (anch_h.indexOf("#c6203") !== -1) && (hotel === "all")) {
				anch.onclick =	function() {
					//	init_bf("", 0);
					if (d.getElementById("shw_bf")) {
						scr_to_lnk(d.getElementById("shw_bf").parentNode);
					} else {
						init_tclw();
					}
					return false;
				};
			} else if ((chk_cls(anch_p_p, "searchresult") !== -1) || (chk_cls(anch_p_p, "result-list-item") !== -1)) {
				anch_p_p.loc_hrf =	anch_h;
				
				anch_p_p.onclick =	function() {
					location.href =	this.loc_hrf;
					return false;
				};
			} else if (chk_cls(anch_p, "prn13") !== -1) {
				anch_p.style.cursor =	"pointer";
				anch_p.loc_hrf =	anch_h;
				anch_p.onclick =	function() {
					location.href =	this.loc_hrf;
					return false;
				};
			} else if (chk_cls(anch_p, "mini_gal") !== -1) {
				anch.lnkimg =	"hdmg_" + (i + 1);
				anch.onclick =	function() {
					buildgal3(this.parentNode, this.parentNode.id.replace(/categ_/, ""));
					return darkbx(this.lnkimg, 0, this);
				};
			} else if (chk_cls(anch_p_p, "mini_gal") !== -1) {
				anch.lnkimg =	"hdmg_" + i;
				anch.onclick =	function() {
					buildgal3(this.parentNode.parentNode, this.parentNode.parentNode.id.replace(/categ_/, ""));
					return darkbx(this.lnkimg, 0, this);
				};
			} else if (chk_cls(anch_p, "pr_media") !== -1) {
				anch.lnkimg =	"hdmg_" + i;
				anch.onclick =	function() {
					buildgal7(this);
					return darkbx(this.lnkimg, 0, this);
				};
			} else if (anch_p_p.id === "job_nv_cont") {
			} else if ((anch_h.indexOf("#c") !== -1) && (loc_hrf.replace("de.html", "").indexOf(anch_h.replace("de.html", "").split("#c")[0]) !== -1)) {
				anch.onclick =	function() {
					hide_resp(0);
					hide_all_layers();
					var elem_id =	this.getAttribute("href").split("#c")[1];
					evtrck("Seiteninterner Aufruf", this.innerHTML, loc_hrf);
					if (d.getElementById("c" + elem_id)) {
						scr_to_lnk(d.getElementById("c" + elem_id));
					} else if (d.getElementById(elem_id)) {
						scr_to_lnk(d.getElementById(elem_id));
					}
					return false;
				};
			} else if ((loc_hrf.indexOf(anch_h) !== -1) && (loc_hrf.indexOf("tx_kesearch_pi1") === -1) && (anch_h !== "https://www.sorat-hotels.com/")) {
				add_cls(anch, "act");
				anch.onclick =	function() {
					hide_resp(0);
					hide_all_layers();
					scr_to_lnk(d.getElementsByTagName("main")[0]);
					return false;
				};
			} else if ((d.getElementById("resv_l")) && (anch_h.indexOf("#c6203") !== -1)) {
				anch.onclick =	function() {
					w.scrollTo(0, 0);
					init_tclw("");
					return false;
				};
			} else if (anch_h.indexOf("linotel.com") !== -1) {
				anch.target =	"_blank";
				anch.rel =	"noopener";
			} else if (anch_h.indexOf("travelclick.com") !== -1) {
				anch.target =	"_blank";
				anch.rel =	"noopener";
			} else if ((anch_h.indexOf("http") !== -1) && (anch_h.indexOf("sorat-hotels.com") === -1) && (anch_h.indexOf("linotel.com") === -1) && (anch_h.indexOf("travelclick.com") === -1)) {
				anch.target =	"_blank";
				anch.rel =	"noopener";
			} else if (
				(anch_h.indexOf(lang + "/") !== -1)
			&& ((anch_h.indexOf("bewertung.html") !== -1) || (anch_h.indexOf("write-review.html") !== -1) || (anch_h.indexOf("tischreservierung.html") !== -1) || (anch_h.indexOf("table-reservation.html") !== -1) || (anch_h.indexOf("anfrage.html") !== -1) || (anch_h.indexOf("request.html") !== -1))
			) {
				anch.target =	"_blank";
			} else if ((anch_h.indexOf(".jpg") !== -1) && (anch.parentNode.getAttribute("id") !== "slide_0")) {
				anch.target =	"_blank";
				anch.rel =	"noopener";
			} else if (anch_h.indexOf(".pdf") !== -1) {
				anch.target =	"_blank";
				anch.rel =	"noopener";
				anch.type =	"application/pdf";
			}
			if ((chk_cls(anch_p, "hvr_mg_kst") !== -1) || (chk_cls(anch_p, "hvrimg4") !== -1)) {
				if (navigator.userAgent.toLowerCase().indexOf("android") !== -1) {
					add_cls(anch_p_p, "android");
				}
			} 
			if ((anch.className === "hvr_mg") && (chk_cls(anch_p, "link") !== -1)) {
				anch_p.lnkhref =	anch;
				anch_p.onclick =	function() {
					if (this.lnkhref.target !== "_blank") {
						location.href =	this.lnkhref.getAttribute("href");
					} else {
						w.open(this.lnkhref.getAttribute("href"), "_blank");
					}
					return false;
				};
				anch_p.style.cursor =	"pointer";
			}
			if ((chk_cls(anch_p_p.parentNode, "menu") !== -1) && (chk_cls(anch_p_p.parentNode, "ur_menu") === -1)) {
				anch_p_p.lnkanchor =	anch;
				anch_p_p.onclick =	function() {
					this.lnkanchor.click();
				};
				anch_p_p.style.cursor =	"pointer";
			}

		}
	}
	if (smartPhone === 0) {
		for (i = 0; (anch = d.getElementsByTagName("select")[i]); i++) {
			anch_p =	anch.parentNode;
			if ((chk_cls(anch_p, "mobsel") === -1) && (chk_cls(anch_p, "efabody") === -1)) {
				var udl_nd =	cr_elem("div", anch_p.parentNode.parentNode, "rpl_" + anch.id, "sel_rplcm_gr");
				udl_nd.selfld =	anch;
				udl_nd.onclick =	function () {
					var txt =	(this.selfld.options[0].value === "") ?	this.selfld.options[0].text :	"";
					selct_mu(this.selfld);
				};
				add_cls(anch_p.parentNode, "selhid");
				udl_nd.innerHTML =	anch.options[anch.selectedIndex].text;
			}
		}
	} else {
		for (i = 0; (anch = d.getElementsByTagName("form")[i]); i++) {
			if (anch.elements["mobile"]) {
				anch.elements["mobile"].value =	"1";
			}
		}
	}
	for (i = 0; (anch = d.getElementsByTagName("input")[i]); i++) {
		anch_h =	anch.name;
		if (anch.type === "checkbox") {
			anch.onchange =	function() {
				if (this.checked === true) {
					add_cls(this.parentNode, "ckd");
				} else {
					rmv_cls(this.parentNode, "ckd");
				}
			};
		} else if ((anch.type === "radio") && (anch.style.display !== "none")) {
			anch.style.visibility =	"hidden";
			anch.style.position =	"absolute";
			if (!d.getElementById("rpl_" + anch_h)) {
				var dv2 =	cr_elem("div", anch.parentNode, "rpl_" + anch_h, "rating");
				var x =	0;
				var rad =	d.forms[0].elements[anch_h];
				for (j = 1; j <= rad.length; j++) {
					if (rad[j - 1].checked === true) {
						x =	j;
					}
					dv =	cr_elem("span", dv2, "", "");
					dv.innerHTML =	"&nbsp;";
					dv.idxno =	j;
					dv.onmouseover =	function() {
						this.parentNode.style.backgroundPosition =	"1px " + ((this.idxno * -30) + 1) + "px";
						d.getElementById(this.parentNode.id.replace(/rpl_/, "rpl_txt_")).innerHTML =	notes[lang][this.idxno] + "&nbsp;";
					};
					dv.onclick =	function() {
						var cntlem;
						d.forms[0].elements[this.parentNode.id.replace(/rpl_/, "")][this.idxno - 1].checked =	true;
						if (d.forms[0].elements["restaurant"]) {
							cntlem =	["lage", "service", "zimmer", "sauberkeit", "preisempfinden", "fruehstueck", "restaurant", "bar"];
						} else {
							cntlem =	["lage", "service", "zimmer", "sauberkeit", "preisempfinden", "fruehstueck", "bar"];
						}
						var sum =	0;
						var active =	0;
						for (var l = 0; l < cntlem.length; l++) {
							if (d.forms[0].elements[cntlem[l]]) {
								for (var k = 1; k <= d.forms[0].elements[cntlem[l]].length; k++) {
									if (d.forms[0].elements[cntlem[l]][k - 1].checked === true) {
										active++;
										sum+=	k;
									}
								}
							}
						}
						d.getElementById("rpl_txt_gesamtbewertung").innerHTML =	notes[lang][Math.round(sum / active)] + "&nbsp;";
						d.getElementById("rpl_gesamtbewertung").style.backgroundPosition =	"1px " + ((Math.round(sum / active) * -30) + 1) + "px";
					};
					dv.onmouseout =	function() {
						var x = 0, tpn = this.parentNode;
						var rad =	d.forms[0].elements[tpn.id.replace(/rpl_/, "")];
						for (var j = 1; j <= rad.length; j++) {
							if (rad[j - 1].checked === true) {
								x =	j;
							}
						}
						tpn.style.backgroundPosition =	"1px " + ((x * -30) + 1) + "px";
						d.getElementById(tpn.id.replace(/rpl_/, "rpl_txt_")).innerHTML =	notes[lang][x] + "&nbsp;";
					};
				}
				dv =	cr_elem("span", dv2, "rpl_txt_" + anch_h, "rpl_txt");
				d.getElementById("rpl_txt_" + anch_h).innerHTML =	notes[lang][x] + "&nbsp;";
				dv2.style.backgroundPosition =	"1px " + ((x * -30) + 1) + "px";
			}
		} else if (anch.type === "submit") {
			anch.onclick =	function() {
				add_cls(this.form, "reqform");
			}
		}
	}
	if ((d.getElementById("anreise")) && (chk_cls(d.getElementById("anreise").parentNode, "inp50p") !== -1)) {
		if (smartPhone === 1) {
			d.getElementById("anreise").type =	"date";
			d.getElementById("abreise").type =	"date";
		} else {
			d.getElementById("anreise").parentNode.onclick =	function () {
				init_scal(d.getElementById("anreise"));
			};
			d.getElementById("abreise").parentNode.onclick =	function () {
				init_scal(d.getElementById("abreise"));
			};
		}
	}
	if ((d.getElementById("termin")) && (chk_cls(d.getElementById("termin").parentNode, "inp50p") !== -1)) {
		if (smartPhone === 1) {
			// var dtl =	cr_elem("datalist", d.getElementById("termin").parentNode, "thesedates", "");
			// var opt;
			// opt =	cr_elem("option", dtl, "", "");
			// opt.text =	"2017-02-01";
			// opt =	cr_elem("option", dtl, "", "");
			// opt.text =	"2017-02-02";
			// opt =	cr_elem("option", dtl, "", "");
			// opt.text =	"2017-02-04";
			d.getElementById("termin").type =	"date";
			// d.getElementById("termin").setAttribute("list", "thesedates");
		} else {
			d.getElementById("termin").parentNode.onclick =	function () {
				init_scal(d.getElementById("termin"));
			};
		}
	}
	if (d.getElementById("mapBox")) {
		d.getElementsByTagName("footer")[0].parentNode.insertBefore(d.getElementById("mapBox"), d.getElementsByTagName("footer")[0]);
	}
	if (d.getElementById("ratinglayer")) {
		d.getElementById("ratinglayer").onclick =	function() {
			darkbx("ratinglayerinner", 0, this.parentNode);
		};
	}
	// if ((document.cookie.indexOf("pkwn=seen") === -1) && (d.getElementById("ce_parkingwarning"))) {
	// 	darkbx("ce_parkingwarning", 0, bdy);
	//	d.getElementById("drkbx").onclick =	hide_drkbx;
	//	d.getElementById("drkbx").style.background =	"rgba(0, 0, 0, 0.75)";
	//	var ablauf =	new Date();
	//	ablauf.setDate(ablauf.getDate() + 1);
	//	document.cookie =	"pkwn=seen; expires=" + ablauf.toGMTString() + "; path=/";
	// }
	if ((document.cookie.indexOf("announcement=" + loc_hrf) === -1) && (d.getElementById("announcement"))) {
		darkbx("announcement", 0, bdy);
		// d.getElementById("announcement").lastChild.lastChild.appendChild(d.getElementById("lb_close"));
		// d.getElementById("lb_close").onclick =	hide_drkbx;
		var ablauf =	new Date();
		ablauf.setDate(ablauf.getDate() + 1);
		document.cookie =	"announcement=" + loc_hrf + "; expires=" + ablauf.toGMTString() + "; path=/";
	}
	//if (d.getElementById("slide_11")) {
	//	anch =	cr_elem("script", d.getElementsByTagName("head")[0], "gmscript", "");
	//	anch.src =	"https://maps.googleapis.com/maps/api/js?key=AIzaSyCvMFv9F4zM1urk3qMgizEo2hFV5hmtrzE&callback=GM360init";
	//}
	// if (d.getElementById("c_hbwall")) {
	// 	var elem =	d.getElementById("c_hbwall");
	// 	do {
	// 		elem =	elem.previousSibling;
	// 	} while (elem && elem.nodeType !== 1);
	// 	d.getElementById("c_hbwall").parentNode.insertBefore(d.getElementById("c_hbwall"), elem);
	// 	elem =	d.getElementById("c_hbwall");
	// 	do {
	// 		elem =	elem.previousSibling;
	// 	} while (elem && elem.nodeType !== 1);
	// 	d.getElementById("c_hbwall").parentNode.insertBefore(d.getElementById("c_hbwall"), elem);
	// }
	if (d.getElementById("bkng3")) {
		d.getElementById("bkng3").href =	d.getElementById("bkng1").getAttribute("href");
	}
	if (
		(
			(hotel !== "all")
		 || (loc_hrf.indexOf("bonusprogramm") !== -1)
		 || (loc_hrf.indexOf("loyalty-program") !== -1)
		 || (loc_hrf.indexOf("deutschland-hotelreservierung") !== -1)
		 || (loc_hrf.indexOf("directory") !== -1)
		 || (d.getElementById("resv_l"))
		) && (d.getElementById("bkng1")) && (
			(d.getElementById("bkng1").getAttribute("href").indexOf("linotel.com/linoweb") !== -1)
		 || (d.getElementById("bkng1").getAttribute("href").indexOf("travelclick.com") !== -1)
		)
	) {
		w.onfocus = function() { winvis = true; }
		w.onblur = function() {
			winvis = false;
			layer_reminder();
		}
	}
	// if (d.getElementById("cky")) {
	//	if (((navigator.cookieEnabled === true) || (document.referrer.indexOf("sorat-hotels.com/") === -1)) && (document.cookie.indexOf("cktxt=hide") === -1)) {
	//		add_cls(d.getElementById("cky").parentNode, "cky_hid");	
	//		anch =	cr_elem("a", d.getElementById("cky"), "cky_close", "");
	//		anch.innerHTML =	"OK";
	//		if (smartPhone === 1) {
	//			w.addEventListener("scroll", rmv_cky, false);
	//		}
	//		d.getElementById("cky_close").addEventListener("click", rmv_cky, false);
	//	}
	// }
	for (i = 0; (dv = d.getElementsByTagName("section")[i]); i++) {
		pages.push(dv);
	}
	for (i = 0; (dv = d.getElementsByTagName("div")[i]); i++) {
		if (dv.id === "cgmap") {
			pages.push(dv);
		} else if ((chk_cls(dv, "pr13") !== -1) || (chk_cls(dv, "pr12") !== -1) || (chk_cls(dv, "pr14") !== -1) || (chk_cls(dv, "pr23") !== -1) || (chk_cls(dv, "pr34") !== -1) || (chk_cls(dv, "pr32") !== -1) || (chk_cls(dv, "pr103") !== -1) || ((chk_cls(dv, "pri") !== -1) && (chk_cls(dv, "price") === -1)) || (chk_cls(dv.parentNode, "suit_req") !== -1) || (chk_cls(dv.parentNode, "kst") !== -1)) {
			if (chk_cls(dv, "hidd") !== -1) {
				dv.style.display =	"none";
			}
		} else if (chk_cls(dv, "rotate") !== -1) {
			dv.ontouchstart =	function() {
				named_evnt("Hover", this);
				add_cls(this, "hover");
			};
			dv.onmouseover =	function() {
				named_evnt("Hover", this);
				add_cls(this, "hover");
			};
			dv.onmouseout =	function() {
				rmv_cls(this, "hover");
			};
		} else if (chk_cls(dv, "hvrimg4") !== -1) {
			dv.onmouseover =	function() {
				named_evnt("Hover", this);
			};
		} else if (dv.className === "tblcll mid") {
			pausch.push(dv);
		} else if (dv.className === "ur_menu") {
			dv.style.visibility =	"visible";
		} else if (dv.parentNode.id === "slide_3") {
			dv.onclick =	function() {
				named_evnt("Hover", this);
				add_cls(this, "opn");
			};
			dv.onmouseover =	function() {
				named_evnt("Hover", this);
				add_cls(this, "opn");
			};
			dv.onmouseout =	function() {
				rmv_cls(this, "opn");
			};
		} else if (dv.className === "hvr_mg_kst") {
			dv.onclick =	function() {
				named_evnt("Hover", this);
				add_cls(this, "opn");
			};
			dv.onmouseover =	function() {
				named_evnt("Hover", this);
				add_cls(this, "opn");
			};
			dv.onmouseout =	function() {
				rmv_cls(this, "opn");
			};
		} else if (chk_cls(dv, "gts_opn") !== -1) {
			rmv_cls(dv, "gts_opn");
		} else if ((dv.className === "gts_i") || (dv.id === "suit_req1")) {
			dv.style.display =	"none";
		} else if (chk_cls(dv, "hbw_wrap") !== -1) {
			dv.onclick =	function() {
				if (chk_cls(this, "ca_opn") === -1) {
					named_evnt("Hotelbewertungen aufgeklappt", this);
				}
				chng_cls(this, "ca_opn");
			};
		}
	}
	for (i = 0; (dv = d.getElementsByTagName("tr")[i]); i++) {
		if (dv.className === "hidd") {
			dv.style.display =	"none";
		}
	}
	if (d.getElementById("sel_ALL")) {
		s_disp("sel_ALL", "none");
	}
	var pgl =	pausch.length;
	if (pgl > 0) {
		for (i = 0; (dv = pausch[i]); i++) {
			anch =	dv.cloneNode(true);
			anch.className =	"tblcll extra";
			dv.parentNode.insertBefore(anch, dv.parentNode.firstChild);
			add_cls(dv.parentNode, "extraed");
		}
	}
	pgl =	pages.length;
	if (pgl > 1) {
		for (i = 0; (dv = pages[i]); i++) {
			// alert(dv.innerHTML);
			if ((dv.innerHTML.indexOf("hbw_all") === -1) && (dv.id !== "mapBox")) {
				anch =	cr_elem("a", dv, "", "btprv");
				anch.pageIndex =	i;
				anch.onclick =	(i < pgl - 1) ?	function() {
					var tpi =	this.pageIndex;
					var targ =	(tpi > 0) ?	pages[tpi - 1] :	pages[tpi];
					named_evnt("Seiteninterne Navigation Aufwärts/Abwärts", targ);
					scr_to_lnk(targ);
				} :	function() {
					named_evnt("Seiteninterne Navigation Aufwärts/Abwärts", d.getElementsByTagName("main")[0]);
					scr_to_lnk(d.getElementsByTagName("main")[0]);
				};
			}
			if (i < pgl - 1) {
				anch =	cr_elem("a", dv, "", "btnxt");
				anch.pageIndex =	i;
				anch.onclick =	function() {
					var targ =	pages[this.pageIndex + 1];
					named_evnt("Seiteninterne Navigation Aufwärts/Abwärts", targ);
					scr_to_lnk(targ);
				};
			}
			if ((i === pgl - 1) && (dv.id !== "mapBox")) {
				anch =	cr_elem("a", dv, "", "btnxt");
				anch.pageIndex =	i;
				anch.onclick =	function() {
					var elem =	((d.getElementById("slide_3")) && (chk_cls(d.getElementById("slide_3", "icons") !== -1))) ?	d.getElementById("slide_3") :	d.getElementsByTagName("footer")[0];
					elem =	(d.getElementById("mapBox")) ?	d.getElementById("mapBox") :	elem;
					named_evnt("Seiteninterne Navigation Aufwärts/Abwärts", elem);
					scr_to_lnk(elem);
				};
			}
		}
	}
	if (d.getElementById("sail")) {
		add_cls(d.getElementById("sail").parentNode, "slship");
		for (i = 0; (anch = d.getElementsByTagName("a")[i]); i++) {
			if ((anch.href.indexOf("53153") !== -1) || (anch.href.indexOf("53226") !== -1)) {
				add_cls(anch, "act");
			}
		}
		if (!d.getElementById("lb_close")) {
			anch =	cr_elem("a", d.getElementById("sail"), "lb_close", "");
			anch.onclick =	function() {
				rmv_cls(d.getElementById("sail"), "said");
				if ((loc_hrf.indexOf("career/application") !== -1) || (loc_hrf.indexOf("karriere/bewerbung") !== -1)) {
					setTimeout("history.go(-2);", 600);
				} else if (history.length > 1) {
					setTimeout("history.back();", 600);
				} else {
					setTimeout("w.close();", 600);
				}
			};
		}
		setTimeout("add_cls(d.getElementById('sail'), 'said anim');", 17);
		if (d.getElementById("captcha_error")) {
			setTimeout("scr_to_lnk(d.getElementById('captcha_error')); ", 617);
		}
		w.onunload =	function() {
			rmv_cls(d.getElementById("sail"), "said");
		};
		if ((d.getElementById("mini_sbm")) && (d.getElementById("mini_sbm").innerHTML === "")) {
			anch =	cr_elem("a", d.getElementById("mini_sbm"), "", "");
			anch.onclick =	function() {
				w.print();
			};
			anch.innerHTML =	"Print";
			anch =	cr_elem("a", d.getElementById("mini_sbm"), "", "");
			anch.href =	"mailto:?subject=" + d.title + "&body=" + loc_hrf;
			anch.innerHTML =	"Email";
		}
	}
	if ((d.getElementById("mini_sbm")) && (d.getElementById("mini_sbm").innerHTML === "")) {
	/* PH, 26.07.2023: Button fuer Twitter und Facebook auf Wunsch auskommentiert	
		if (!d.getElementById("sail")) {
			anch =	cr_elem("a", d.getElementById("mini_sbm"), "", "btn_twitter");
			anch.href =	"https://twitter.com/intent/tweet?text=" + encodeURIComponent(d.title) + "&url=" + encodeURIComponent(loc_hrf) + "&lang=de&via=sorathotels&related=sorathotels";
			anch.target =	"_blank";
			cr_elem("span", anch, "", "");
			anch =	cr_elem("a", d.getElementById("mini_sbm"), "", "btn_facebook");
			anch.href =	"https://www.facebook.com/sharer.php?u=" + loc_hrf;
			anch.target =	"_blank";
			cr_elem("span", anch, "", "");
		} */
		anch =	cr_elem("a", d.getElementById("mini_sbm"), "", "");
		anch.onclick =	function() {
			w.print();
		};
		anch.innerHTML =	"Print";
		anch =	cr_elem("a", d.getElementById("mini_sbm"), "", "");
		anch.href =	"mailto:?subject=" + d.title + "&body=" + loc_hrf;
		anch.innerHTML =	"Email";
	}
	if (d.getElementById("hbwc_outer")) {
		add_cls(d.getElementsByTagName("main")[0], "rset");
		setTimeout("add_cls(d.getElementsByTagName('main')[0], 'anim');", 17);
		setTimeout("rmv_cls(d.getElementsByTagName('main')[0], 'rset');", 100);
	}
	if (d.getElementById("shw_bf")) {
		bf_container =	d.getElementById("shw_bf");
		init_tclw();
	}
	if (d.getElementById("shw_cnclf")) {
		init_cncl();
	}
	if (d.getElementById("shw_chngf")) {
		init_chng();
	}
	if (loc_hrf.indexOf("chk1=") !== -1) {
		for (i = 0; (anch = d.getElementsByTagName("input")[i]); i++) {
			if (anch.value === loc_hrf.split("chk1=")[1].split("&")[0]) {
				arrange_ckb(anch);
			}
		}
	}
	if (loc_hrf.indexOf("chk2=") !== -1) {
		for (i = 0; (anch = d.getElementsByTagName("input")[i]); i++) {
			if (anch.value === loc_hrf.split("chk2=")[1].split("&")[0]) {
				arrange_ckb(anch);
			}
		}
	}
	if (loc_hrf.indexOf("sl1=") !== -1) {
		for (i = 0; (anch = d.getElementsByTagName("option")[i]); i++) {
			if (anch.value === loc_hrf.split("sl1=")[1].split("&")[0]) {
				anch.parentNode.selectedIndex =	i;
				if (anch.parentNode.onchange !== null) {
					anch.parentNode.onchange();
				}
				if (d.getElementById("rpl_" + anch.parentNode.name)) {
					d.getElementById("rpl_" + anch.parentNode.name).innerHTML =	anch.text;
				}
			}
		}
	}
	if (loc_hrf.indexOf("?image=3&cat=2") !== -1) { // temp
		setTimeout("d.getElementById('categ_sup').childNodes[1].childNodes[2].onclick()", 600);
	}
	setTimeout("var trktxt =	'Screen: ' + screen.availWidth + 'x' + screen.availHeight + ' | Browser: ' + avl_dim_screen('w') + 'x' + avl_dim_screen('h'); if (typeof window.devicePixelRatio !== 'undefined') { trktxt+=	' | Device Pixel ratio: ' + window.devicePixelRatio; } if (typeof window.orientation !== 'undefined') { trktxt+=	' | Orientation: ' + window.orientation; } evtrck('15 Sekunden auf Seite', trktxt, '');", 15000);
	gmload();
	return true;
}
function pageshow() {
	if (d.getElementById("waiter")) {
		bdy.removeChild(d.getElementById("waiter"));
	}
}
function named_evnt(str, elem) {
	evtrck(str, elem.innerText.substring(0, 100), loc_hrf);
}
// function rmv_cky() {
//	var ablauf =	new Date();
//	ablauf.setDate(ablauf.getDate() + 2);
	// evtrck("Cookie OK", loc_hrf, loc_hrf);
//	document.cookie =	"cktxt=hide; expires=" + ablauf.toGMTString() + "; path=/";
//	rmv_cls(d.getElementById("cky").parentNode, "cky_hid");
// } 
function cookieconsent() {
	if ((Cookiebot.consent.preferences === true) && (Cookiebot.consent.statistics === true)) {
		var dv, i, ytdivs =	[];
		for (i = 0; (dv = d.getElementsByTagName("div")[i]); i++) {
			if (chk_cls(dv, "ytdiv") !== -1) {
				ytdivs.push(dv);
			}
		}
		for (i = 0; (dv = ytdivs[i]); i++) {
			var href =	dv.ythref;
			var ifr =	cr_elem("iframe", dv.parentNode, dv.id, "ytframe");
			dv.parentNode.replaceChild(ifr, dv);
			ifr.src =	"//www.youtube-nocookie.com/embed/" + href.split("watch?v=")[1] + "?enablejsapi=1&rel=0";
			yt_frm =	ifr;
			setTimeout(function () { yt_frm.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*'); }, 2000);
		}
		w.removeEventListener("CookiebotOnAccept", cookieconsent);
	}
}

function buildgal1(elem) {
	var anch, i, anch_img, dv, elem2, str, hdr, txt, list_elem, ati, kat_param, lnk, lnktxt, lnktrk;
	if (!d.getElementById("hdmg_cont")) {
		cr_elem("div", bdy, "hdmg_cont", "");
		var selstring =	"<div class=\"ur_menu\"><div id=\"ur_menu_replace\" class=\"ur_menu_lv\">";
		if (d.getElementById("job_nav")) {
			for (i = 0; (anch = d.getElementById("job_nav").childNodes[i]); i++) {
				anch.id =	"job_nav_" + i;
				selstring+=	"<a onclick=\"d.getElementById('job_nav_" + i + "').onclick();\">" + anch.innerHTML + "</a>";
			}
		}
		selstring+=	"</div><a onclick=\"show_layer('ur_menu_replace', this);\" class=\"ur_menu_hd\">" + labels[17] + "</a></div>";
		for (i = 0; (anch = elem.childNodes[i]); i++) {
			if ((anch.href) && (chk_cls(anch, "mre") === -1) && (chk_cls(anch, "ytimg") === -1)) {
				list_elem =	null;
				kat_param =	"";
				lnk =	d.getElementById("bkng1").getAttribute("href");
				lnktxt =	d.getElementById("bkng1").innerHTML;
				ati =	anch.getAttribute("titleinfo");
				dv =	cr_elem("div", d.getElementById("hdmg_cont"), anch.lnkimg, "tbl");
				hdr =	(ati.indexOf("§") === -1) ?	d.getElementsByTagName("h1")[0].innerText :	ati.slice(ati.indexOf("§") + 1, ati.lastIndexOf("§"));
				txt =	ati.replace(/ \(/, "<span class=\"hd_sml\">").replace(/\)/, "</span>");
				txt =	(txt.indexOf("§") === -1) ?	txt :	txt.slice(txt.lastIndexOf("§") + 2, txt.length);
				txt =	txt.replace(/ \/\/ /, "<br><br>");
				txt =	(txt.indexOf("{") === -1) ?	txt :	txt.slice(0, txt.indexOf("{") - 1);
				txt =	(txt.indexOf("#") === -1) ?	txt :	txt.slice(0, txt.indexOf("#") - 1);
				// lnktrk =	" onclick=\"evtrck('Linoweb Aufruf', 'Bildgalerie " + strip_tags(txt) + "', loc_hrf);\"";
				if ((ati.indexOf("{") !== -1) && (d.getElementById(ati.slice(ati.indexOf("{") + 1, ati.indexOf("}"))))) {
					list_elem =	d.getElementById(ati.slice(ati.indexOf("{") + 1, ati.indexOf("}")));
					kat_param =	ati.slice(ati.indexOf("{") + 1, ati.indexOf("}")).replace("list_", "");
					if (d.getElementById("btn_" + kat_param)) {
						lnk =	d.getElementById("btn_" + kat_param).firstChild.getAttribute("href");
						lnktxt =	d.getElementById("btn_" + kat_param).innerText;
						lnktrk =	"";
					}
 				}
				str =	"<div class=\"tdvam\"><div class=\"htl2";
				str+=	(chk_cls(anch, "mg50p") === -1) ?	"" :	" mg50p";
				str+=	"\"><div class=\"htlimg\">"
				+	"<img src=\"" + anch.href + "\" alt=\"\">";
				str+=	((anch.lastChild) && (anch.lastChild.nodeName === "SPAN")) ?	"<span>" + anch.lastChild.innerHTML + "</span>" :	"";
				str+=	"</div><div class=\"htl_inner\"";
				if ((ati.indexOf("#") !== -1) && (d.getElementById(ati.slice(ati.indexOf("#") + 1, ati.lastIndexOf("#"))))) {
					str+=	" style=\"padding-bottom: 203px;\"";
				}
				str+=	"><h4>" + hdr + "</h4>"
				+	"<p>" + txt + "</p>";
				if (list_elem !== null) {
					str+=	list_elem.outerHTML;
				} else {
					str+=	(ati.indexOf(" // ") === -1) ?	"<ul>" + d.getElementById("ajp_address").innerHTML + "</ul>" :	"";
				}
				if ((ati.indexOf("#") !== -1) && (d.getElementById(ati.slice(ati.indexOf("#") + 1, ati.lastIndexOf("#"))))) {
					// UPDATE
					str+=	d.getElementById(ati.slice(ati.indexOf("#") + 1, ati.lastIndexOf("#"))).outerHTML;
				} else {
					// UPDATE
					str+=	"<div class=\"prices\">" + d.getElementById("ajp_" + hotel).innerHTML + "</div>";
				}
				str+=	"</div><div class=\"htl_btn\"><nav><a href=\"" + lnk + "\" target=\"_blank\"" + lnktrk + ">" + lnktxt + "</a></nav>" + selstring.replace(/ur_menu_replace/g, "ur_menu_lv_" + i) + "</div></div></div>";
				dv.innerHTML =	str;
			} else if ((anch.href) && (anch.href.indexOf("youtube") !== -1) && (chk_cls(anch, "mre") === -1)) {
				list_elem =	null;
				if ((Cookiebot.consent.preferences === true) && (Cookiebot.consent.statistics === true)) {
					var ifr =	cr_elem("iframe", d.getElementById("hdmg_cont"), anch.lnkimg, "ytframe");
					ifr.src =	"//www.youtube-nocookie.com/embed/" + anch.getAttribute("href").split("watch?v=")[1] + "?enablejsapi=1&rel=0";
				} else {
					dv =	cr_elem("div", d.getElementById("hdmg_cont"), anch.lnkimg, "tbl");
					yt_cookienotice(dv, anch);
				}
			}
		}
	}
}
function yt_cookienotice(dv, anch) {
	var elm;
	dv.ythref =	anch.getAttribute("href");
	add_cls(dv, "ytdiv");
	dv =	cr_elem("div", dv, "", "tdvam");
	elm =	cr_elem("h3", dv, "", "");
	elm.innerText =	labels[61];
	elm =	cr_elem("p", dv, "cookintc", "");
	elm.innerHTML =	labels[63];
	elm =	cr_elem("a", dv, "", "");
	elm.innerText =	labels[62];
	elm.onclick =	function() {
		Cookiebot.renew();
	};
	w.addEventListener("CookiebotOnAccept", cookieconsent);
}
function buildgal3(elem, cat) {
	var txt, list_elem, ati;
	if (d.getElementById("hdmg_cont")) {
		bdy.removeChild(d.getElementById("hdmg_cont"));
	}
	if (!d.getElementById("hdmg_cont")) {
		var anch, i, anch_img, dv, elem2, str, anch2;
		cr_elem("div", bdy, "hdmg_cont", "");
		var innerstring =	"";
		if (d.getElementById("ajp_" + cat)) { // UPDATE
			innerstring+=	"<div class=\"prices\">" + d.getElementById("ajp_" + cat).innerHTML + "</div>"
			+	"<div class=\"htl_btn\"><nav><a href=\"" + d.getElementById("ajp_" + cat).parentNode.lastChild.firstChild.getAttribute("href") + "\" target=\"_blank\""
			// +	" onclick=\"evtrck('Linoweb Aufruf', 'Kategoriebilder " + cat + "', loc_hrf);\""
			+	">" + d.getElementById("ajp_" + cat).parentNode.lastChild.firstChild.innerHTML + "</a></nav></div>";
			console.log(innerstring);
		}
		if (elem.lastChild.nodeName === "A") {
			innerstring+=	"<a class=\"walk_" + lang + "\" href=\"" + elem.lastChild.getAttribute("href") + "\"></a>";
		}
		for (i = 1; (anch = elem.childNodes[i]); i++) {
			if (anch.nodeName === "SPAN") {
				for (i = 0; (anch2 = anch.childNodes[i]); i++) {
					if (anch2.href) {
						
						list_elem =	d.getElementById("list_" + cat);
						ati =	anch2.getAttribute("titleinfo");
						txt =	ati;
						txt =	(txt.indexOf("{") === -1) ?	txt :	txt.slice(0, txt.indexOf("{") - 1);
						if ((ati.indexOf("{") !== -1) && (d.getElementById(ati.slice(ati.indexOf("{") + 1, ati.indexOf("}"))))) {
							list_elem =	d.getElementById(ati.slice(ati.indexOf("{") + 1, ati.indexOf("}")));
						}
						dv =	cr_elem("div", d.getElementById("hdmg_cont"), anch2.lnkimg, "tbl");
						str =	"<div class=\"tdvam\"><div class=\"htl2";
						str+=	(chk_cls(anch2, "mg50p") === -1) ?	"" :	" mg50p";
						str+=	"\"><div class=\"htlimg\"><img src=\"" + anch2.href + "\" alt=\"" + anch2.getAttribute("titleinfo") + "\">";
						str+=	((anch2.lastChild) && (anch2.lastChild.nodeName === "SPAN")) ?	"<span>" + anch2.lastChild.innerHTML + "</span>" :	"";
						str+=	"</div><div class=\"htl_inner\" style=\"padding-bottom: " + (116 + d.getElementById("ajp_" + cat).offsetHeight) + "px;\"><h4>" + txt + "</h4><p>" + d.getElementsByTagName("h1")[0].innerText + "</p><ul>" + list_elem.innerHTML + "</ul>" + innerstring + "</div></div></div>";
						dv.innerHTML =	str;
					}
				}
			}
		}
	}
}
function buildgal6(elem) {
	var anch, i, dv, str, hdr, txt, bkng, anch_t;
	var walk_str =	"";
	var selstring =	"";
	var shw_cls =	1;
	if ((d.getElementById("hdmg_cont")) && (!d.getElementById("drkbx"))) {
		bdy.removeChild(d.getElementById("hdmg_cont"));
	}
	if (!d.getElementById("hdmg_cont")) {
		if ((d.getElementById("sl_categs_" + elem.id.replace("sl_cont_", ""))) && (elem.nodeName === "DIV")) {
			selstring =	"<div class=\"ur_menu\"><div id=\"ur_menu_replace\" class=\"ur_menu_lv\">";
			for (i = 0; (anch = d.getElementById("sl_categs_" + elem.id.replace("sl_cont_", "")).childNodes[i]); i++) {
				anch.id =	"job_nav_" + i;
				// selstring+=	"<a onclick=\"container_from.replaceChild(d.getElementById('drkcont').lastChild, d.getElementById('container_spick')); bdy.removeChild(d.getElementById('drkbx')); bdy.removeChild(d.getElementById('hdmg_cont')); d.getElementById('job_nav_" + i + "').onclick();\">" + anch.innerHTML + "</a>";
				selstring+=	"<a onclick=\"d.getElementById('job_nav_" + i + "').onclick();\">" + anch.innerHTML + "</a>";
				if (anch.getAttribute("href")) {
					walk_str =	"<a class=\"walk_" + lang + "\" href=\"" + anch.getAttribute("href") + "\"></a>";
				}
			}
			selstring+=	"</div><a onclick=\"show_layer('ur_menu_replace', this);\" class=\"ur_menu_hd\">" + labels[17] + "</a></div>";
			shw_cls =	0;
		}
		cr_elem("div", bdy, "hdmg_cont", "");
		for (i = 0; (anch = elem.childNodes[i]); i++) {
			if ((anch.href) && ((anch.href.indexOf(".jpg") !== -1) || (anch.href.indexOf(".gif") !== -1) || (anch.href.indexOf(".png") !== -1))) {
				anch_t =	anch.getAttribute("titleinfo");
				dv =	cr_elem("div", d.getElementById("hdmg_cont"), anch.lnkimg, "tbl");
				hdr =	(anch_t.indexOf("§") === -1) ?	d.getElementsByTagName("h1")[0].innerText :	anch_t.slice(anch_t.indexOf("§") + 1, anch_t.lastIndexOf("§"));
				txt =	(anch_t.indexOf("{") === -1) ?	anch_t :	anch_t.slice(0, anch_t.indexOf("{") - 1);
				txt =	(txt.indexOf("§") === -1) ?	txt :	txt.slice(txt.lastIndexOf("§") + 2, txt.length);
				str =	"<div class=\"tdvam\"><div class=\"";
				if (chk_cls(anch, "mg2b") !== -1) {
					str+=	"htl mg2b";
				} else {
					str+=	"htl2";
					str+=	(chk_cls(anch, "mg50p") === -1) ?	"" :	" mg50p";
					str+=	((anch.href.indexOf("rundriss") !== -1) || (anch.href.indexOf("estuhlung") !== -1)) ?	" mw64" :	"";
				}
				str+=	"\"><div class=\"htlimg\"><img src=\"" + anch.href + "\" alt=\"\">";
				str+=	((anch.lastChild) && (anch.lastChild.nodeName === "SPAN") && (anch.lastChild.innerHTML.indexOf("[c]") !== -1)) ?	"<span>" + anch.lastChild.innerHTML + "</span>" :	"";
				str+=	"</div><div class=\"htl_inner\"";
				if (anch_t.slice(anch_t.indexOf("{") + 1, anch_t.indexOf("}")) === "ce_breakfast") {
					str+=	" style=\"padding-bottom: 203px;\"";
				}
				str+=	"><h4>" + hdr + "</h4><p>" + txt + "</p>";
				if (anch_t.indexOf("{") !== -1) {
					str+=	d.getElementById(anch_t.slice(anch_t.indexOf("{") + 1, anch_t.indexOf("}"))).outerHTML;
				}
				var bkng_lnk =	((d.getElementById("bkng_ovrd")) && (anch_t.indexOf("§") !== -1)) ?	d.getElementById("bkng_ovrd").getAttribute("href") :	d.getElementById("bkng1").getAttribute("href");
				var bkng_txt =	((d.getElementById("bkng_ovrd")) && (anch_t.indexOf("§") !== -1)) ?	d.getElementById("bkng_ovrd").innerHTML :	d.getElementById("bkng1").innerHTML;
				if (anch_t.slice(anch_t.indexOf("{") + 1, anch_t.indexOf("}")) === "ce_bestbreakfast") {
					str+=	"<div class=\"prices\">" + d.getElementById("ajp_Breakfspec").innerHTML + "</div>";
					if (lang === "de") {
						bkng_lnk =	""; 
					} else {
						bkng_lnk =	""; 
					}
				} else if (anch_t.slice(anch_t.indexOf("{") + 1, anch_t.indexOf("}")) === "ce_wellness_suite") {
					bkng_lnk =	"mailto:hof@sorat-hotels.com";
				} else if (anch.parentNode.getAttribute("id") === "sl_cont_23055") {
					bkng_lnk =	(lang === "de") ?	"de/hotel/regensburg/weihnachtsfeier-anfrage.html" :	"en/hotel/regensburg/christmas-party-request.html";
				} else if ((d.getElementById("ajp_" + hotel)) && (str.indexOf("ajp_") === -1) && (anch_t.indexOf("ce_bartipp") === -1)) {
					str+=	"<div class=\"prices\">" + d.getElementById("ajp_" + hotel).innerHTML + "</div>";
				}
				str+=	"</div><div class=\"htl_btn\"><nav>";
				var epl =	elem.parentNode.lastChild;
				if ((epl.firstChild) && (epl.firstChild.getAttribute) && (epl.firstChild.getAttribute("href").indexOf("ochzeitsmappe") !== -1)) {
					str+=	"<a href=\"" + epl.firstChild.getAttribute("href") + "\" target=\"_blank\">" + epl.firstChild.firstChild.innerHTML + "</a>";
					shw_cls =	0;
				}
				str+=	"<a href=\"" + bkng_lnk + "\" target=\"_blank\"";
				// str+=	" onclick=\"evtrck('Linoweb Aufruf', '" + anch.getAttribute("titleinfo") + "', loc_hrf);\"";
				str+=	">" + bkng_txt + "</a>";
				if (selstring !== "") {
					str+=	"</nav>" + selstring.replace(/ur_menu_replace/g, "ur_menu_lv_" + i);
				}
				if (shw_cls === 1) {
					str+=	"<a onclick=\"hide_drkbx();\" class=\"cls\">" + labels[18] + "</a></nav>";
				}
				str+=	"</div>";
				str+=	(elem.lastChild.nodeName === "A") ?	walk_str :	"";
				str+=	"</div></div>";
				dv.innerHTML =	str;
			}
		}
	}
}
function buildgal7(elem) {
	if (d.getElementById("hdmg_cont")) {
		bdy.removeChild(d.getElementById("hdmg_cont"));
	}
	cr_elem("div", bdy, "hdmg_cont", "");
	if (elem.href) {
		var flnm;
		var ehspl =	elem.href.split("/");
		dv =	cr_elem("div", d.getElementById("hdmg_cont"), elem.lnkimg, "tbl");
		str =	"<div class=\"tdvam mediath\"><div class=\"htl2";
		str+=	(chk_cls(elem, "mg50p") === -1) ?	"" :	" mg50p";
		str+=	"\"><div class=\"htl_inner\"><h4>" + labels[44] + ": " + d.getElementsByTagName("section")[0].children[0].innerText + "</h4><p>" + labels[45] + ": " + elem.getAttribute("titleinfo") + "</p><div class=\"htl_btn\"><nav><a class=\"downloadlink\" href=\"" + elem.href + "\" download=\"" + ehspl[ehspl.length - 1] + "\">" + labels[46] + "</a></nav></div></div><div class=\"htlimg\"><img src=\"" + elem.firstChild.firstChild.firstChild.firstChild.getAttribute("src") + "\" alt=\"" + elem.getAttribute("titleinfo") + "\">";
		str+=	"</div></div><p><em>" + d.getElementById("mediat_terms").innerHTML + "</em></p></div>";
		dv.innerHTML =	str;
	}
}
function GM360init() {
	var i =	(loc_hrf.indexOf("?view=") === -1) ?	0 :	parseInt(loc_hrf.split("?view=")[1], 10);
	d.getElementById("g360lnk_" + i).click();
}




function processSVData(data, status) {
	if (status === 'OK') {
		// console.log(data);
	} else {
		console.error('Street View data not found for this location.');
	}
}

function g360_layer(lnk) {
	var anch, i;
	hist_idx--;

	// d.getElementsByTagName("iframe")[0].contentWindow.location.replace(lnk.getAttribute("href"));
	
	var info360 =	lnk.getAttribute("href").split("@")[1].split("/")[0].split(",");
	const url =	decodeURIComponent(lnk.getAttribute("href"));
	const match =	url.match("^https:\/\/.*\!1s(.*)\!2e.*$");
	var id =	match && match[1];
	if (id[0] == '-') {
		id =	"F:" + id;
	}
	var fenway = {lat: parseFloat(info360[0]), lng: parseFloat(info360[1])};
	var map = new google.maps.Map(document.getElementById("g360map"), {
		center: fenway,
		zoom: 14
	});
	// alert(pano360);
	var panorama = new google.maps.StreetViewPanorama(
		document.getElementById("g360map"), {
			position: fenway,
			pov: {
				heading: parseFloat(info360[4].replace("h", "")),
				pitch: parseFloat(info360[5].replace("t", "")) - 90
			},
			zoom: (parseFloat(info360[3].replace("y", "")) < 82) ?	0 :	1,
			fullscreenControl: false,
			motionTracking: false,
			motionTrackingControl: false
		}
	);
	panorama.setPano(id);
	map.setStreetView(panorama);
	
	 var sv = new google.maps.StreetViewService();

	 sv.getPanorama({location: fenway, radius: 50}, processSVData);

	
	for (i = 0; (anch = d.getElementsByClassName("categ_prices")[i]); i++) {
		anch.style.display =	"none";
	}
	if (lnk.getAttribute("titleinfo")) {
		s_disp(lnk.getAttribute("titleinfo"), "block");
		if (loc_hrf.indexOf("auszeit") !== -1) {
			d.getElementById(lnk.getAttribute("titleinfo")).style.width =	"216px";
		}
		if (loc_hrf.indexOf("brandenburg") !== -1) {
			d.getElementById(lnk.getAttribute("titleinfo")).style.width =	"189px";
		}
	}
	var lnk_p =	lnk.parentNode;
	var lnk_p_p_p =	lnk_p.parentNode.parentNode;
	var lnk_p_ofw =	lnk_p.offsetWidth;
	var lnk_p_ofl =	lnk_p.offsetLeft;
	var lnk_p_p_p_ofw =	lnk_p_p_p.offsetWidth;
	if (lnk_p_p_p.offsetWidth > 5 * lnk_p_ofw) {
		if (lnk_p_p_p.scrollLeft > lnk_p_ofl - 2 * lnk_p_ofw) {
			lnk_p_p_p.scrollLeft =	Math.max(lnk_p_ofl - 2 * lnk_p_ofw - 5, 0);
		} else if (lnk_p_p_p.scrollLeft < lnk_p_ofl - lnk_p_p_p_ofw + 3 * lnk_p_ofw) {
			lnk_p_p_p.scrollLeft =	Math.max(lnk_p_ofl - lnk_p_p_p_ofw + 3 * lnk_p_ofw + 5, 0);
		}
	} else {
		if (lnk_p_p_p.scrollLeft > lnk_p_ofl - lnk_p_ofw) {
			lnk_p_p_p.scrollLeft =	Math.max(lnk_p_ofl - lnk_p_ofw, 0);
		} else if (lnk_p_p_p.scrollLeft < lnk_p_ofl - lnk_p_p_p_ofw + 2 * lnk_p_ofw) {
			lnk_p_p_p.scrollLeft =	Math.max(lnk_p_ofl - lnk_p_p_p_ofw + 2 * lnk_p_ofw + 5, 0);
		}
	}
	evtrck("Google 360", lnk.innerText, loc_hrf);
	return false;
}
(function (root, factory) {
	if (typeof define === "function" && define.amd) {
		define(["exports"], factory);
	} else if (typeof exports !== "undefined") {
		factory(exports);
	} else {
		factory((root.dragscroll = {}));
	}
}(this, function (exports) {
	var _window =	window;
	var _document =	document;
	var mousemove =	"mousemove";
	var mouseup =	"mouseup";
	var mousedown =	"mousedown";
	var EventListener =	"EventListener";
	var addEventListener =	"add" + EventListener;
	var removeEventListener =	"remove" + EventListener;
	var dragged =	[];
	var reset =	function(i, el) {
		for (i = 0; i < dragged.length;) {
			el =	dragged[i++];
			el[removeEventListener](mousedown, el.md, 0);
			_window[removeEventListener](mouseup, el.mu, 0);
			_window[removeEventListener](mousemove, el.mm, 0);
		}
		
		dragged = _document.getElementsByClassName("dragscroll");
		for (i = 0; i < dragged.length;) {
			(function(el, lastClientX, lastClientY, pushed){
				el[addEventListener](
					mousedown,
					el.md =	function(e) {
						pushed =	1;
						lastClientX =	e.clientX;
						lastClientY =	e.clientY;
						e.preventDefault();
						e.stopPropagation();
					}, 0
				);
				_window[addEventListener](
					mouseup, el.mu = function() {pushed = 0;}, 0
				);
				_window[addEventListener](
					mousemove,
					el.mm =	function(e, scroller) {
						scroller =	el.scroller||el;
						if (pushed) {
							scroller.scrollLeft -=
								(- lastClientX + (lastClientX=e.clientX));
							scroller.scrollTop -=
								(- lastClientY + (lastClientY=e.clientY));
						}
					}, 0
				);
			})(dragged[i++]);
		}
	}
	if (_document.readyState === "complete") {
		reset();
	} else {
		_window[addEventListener]('load', reset, 0);
	}
	exports.reset =	reset;
}));
function init_slide() {
	if ((is_slide) || ((d.getElementById("slide_0").childNodes.length > 1) && (d.getElementById("slide_0").parentNode.nodeName === "ARTICLE"))) {
		var i, anch, slde = d.getElementById("slide_0");
		sld_ar["slide_0"] =	[];
		for (i = 0; (anch = slde.childNodes[i]); i++) {
			if ((anch.firstChild) && (anch.firstChild.nodeName === "PICTURE")) {
				sld_ar["slide_0"].push(anch);
				anch.idxno =	slde_l;
				slde_l++;
			}
		}
		if (slde_l > 1) {
			addSwipeListener(slde, function(e) {
				if (e.direction === "right") {
					imge_slde(actual_image - 1, "slide_0", 1);
				} else if (e.direction === "left") {
					imge_slde(actual_image + 1, "slide_0", 1);
				}
			});
			var p =	cr_elem("span", slde, "pointer_left", "");
			anch =	cr_elem("a", p, "", "");
			anch.onclick =	function() {
				imge_slde(actual_image - 1, "slide_0", 1);
			};
			p =	cr_elem("span", slde, "pointer_right", "");
			anch =	cr_elem("a", p, "", "");
			anch.onclick =	function() {
				imge_slde(actual_image + 1, "slide_0", 1);
			};
		}
		imge_slde(actual_image, "slide_0", 0);
		openTimer2 =	setTimeout(autoswipe, 6000);
	}
}
function empty_slide(id)	{
	if (d.getElementById(id)) {
		var anch, i, anch_i, pic;
		var did =	d.getElementById(id);
		for (i = 0; (anch = did.childNodes[i]); i++) {
			if ((anch.nodeName === "A") && (anch.getAttribute("href")) && (anch.getAttribute("href").indexOf("fileadmin") !== -1)) {
				pic =	d.createElement("PICTURE");
				anch.insertBefore(pic, anch.childNodes[0]);
				reloader_cont++;
				if (anch.getAttribute("titleinfo").split("|")[1] !== "") {
					anch_i	=	d.createElement("source");
					anch_i.setAttribute("srcset", anch.getAttribute("titleinfo").split("|")[1].split(" ")[0]);
					anch_i.setAttribute("media", "(max-width: 480px)");
					pic.appendChild(anch_i);
				}
				anch_i	=	d.createElement("IMG");
				anch_i.setAttribute("src", anch.getAttribute("href"));
				anch_i.setAttribute("alt", anch.getAttribute("titleinfo").split("|")[0]);
				pic.appendChild(anch_i);
				anch.removeAttribute("href");
				anch.removeAttribute("titleinfo");
				anch_i.onload =	function() {
					this.setAttribute("height", this.naturalHeight);
					this.setAttribute("width", this.naturalWidth);
					reloader_lldd++;
					if (reloader_cont === reloader_lldd) {
						init_slide();
					}
				};
			}
		}
		// for (i = 0; (anch = did.childNodes[i]); i++) {
		//	if (anch.nodeName === "A") {
		//		pic =	d.createElement("SPAN");
		//		for (var j = 0; (anch_i = anch.childNodes[j]); j++) {
		//			pic.appendChild(anch_i);
		//		}
		//		did.replaceChild(pic, anch);
		//	}
		// }
		if (reloader_cont === 1) {
			did.appendChild(did.childNodes[0].cloneNode(true));
			did.appendChild(did.childNodes[1].cloneNode(true));
		}
	}
}

 //Funktion zum Laden der Google Karte und des Platzhalters.
 //Sie ist gegen mehrfache Ausführung geschützt, um Schleifen zu verhindern.
function gmload() {
    if (googleMapState.initialized) return;
    googleMapState.initialized = true;

    const cgmap = document.getElementById('cgmap');
    if (!cgmap) return;
    
    googleMapState.originalTitle = cgmap.getAttribute('title');

    const showPlaceholder = () => {
        // Stellt den Container für die absolute Positionierung bereit.
        Object.assign(cgmap.style, {
            position: 'relative',
            height: '450px',
            overflow: 'hidden',
            display: 'block'
        });
        cgmap.setAttribute('title', '');

        // Erzeugt eine, mehrschichtige HTML-Struktur mit den übersetzten Texten.
        // Die Zentrierung erfolgt über "position: absolute" und "transform".
        cgmap.innerHTML = `
            <div class="map-placeholder-background" style="
                position: absolute; 
                top: 0; left: 0; 
                width: 100%; 
                height: 100%; 
                background-image: url('https://www.sorat-hotels.com/fileadmin/ge/platzhalter_world_maps.webp'); 
                background-size: cover; 
                background-position: center; 
                opacity: 0.2;
            "></div>

            <div class="map-cookie-accept" style="
                position: absolute; 
                z-index: 2; 
                top: 50%; 
                left: 50%; 
                transform: translate(-50%, -50%); 
                background-color: white; 
                padding: 20px 30px; 
                border-radius: 0px; 
                box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); 
                text-align: center; 
                max-width: 90%;
            ">
                <p style="margin: 0 0 20px 0; font-size: 16px; color: #333; line-height: 1.5;">
                    ${labels[64]}<br>${labels[65]} 
                </p>
                <button onclick="Cookiebot.renew()" style="
                    cursor: pointer; 
                    padding: 12px 25px; 
                    background-color: #447c25; 
                    color: white; 
                    border: none; 
                    border-radius: 0px; 
                    font-size: 16px; 
                ">
                    ${labels[66]}
                </button>
            </div>
        `;
    };
    
    const loadMap = () => {
        cgmap.innerHTML = '';
        cgmap.style.height = '0';
        cgmap.setAttribute('title', googleMapState.originalTitle);

        if (googleMapState.scriptLoaded) return;
        googleMapState.scriptLoaded = true;
        
        cgmap.setAttribute("titleinfo", cgmap.getAttribute("title"));
        cgmap.removeAttribute("title");
        cr_elem("div", cgmap, "gmap_i", "").setAttribute("titleinfo", cgmap.getAttribute("titleinfo"));

        const script = cr_elem("script", document.getElementsByTagName("head")[0], "gmscript", "");
        script.async = true;
        script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyCvMFv9F4zM1urk3qMgizEo2hFV5hmtrzE&libraries=places&callback=GMinit";
        
        const zi = cr_elem("a", cgmap, "gp_zmin", ""); 
        zi.onclick = () => map["gmap_i"].setZoom(map["gmap_i"].getZoom()+1);
        const zo = cr_elem("a", cgmap, "gp_zmout", "");
        zo.onclick = () => map["gmap_i"].setZoom(map["gmap_i"].getZoom()-1);
    };

    if (window.Cookiebot && window.Cookiebot.consent && window.Cookiebot.consent.marketing) {
        loadMap();
    } else {
        showPlaceholder();
        window.addEventListener('CookiebotOnAccept', function onConsent() {
            if (window.Cookiebot && window.Cookiebot.consent && window.Cookiebot.consent.marketing) {
                loadMap();
                window.removeEventListener('CookiebotOnAccept', onConsent);
            }
        });
    }
    window.removeEventListener('scroll', gmload);
}


function map_gros(lnk) {
	var elem =	darkbx_init(lnk);
	var elem2 =	cr_elem("div", elem, "drkgmap", "");
	elem2.setAttribute("titleinfo", d.getElementById("cgmap").getAttribute("titleinfo"));
	var mapdata =	JSON.parse(elem2.getAttribute("titleinfo").replace(/\\'/g, '_X_').replace(/'/g, '"').replace(/_X_/g, "'"));
	setTimeout("add_cls(d.getElementById('drkgmap'), 'act');", 617);
	elem2 =	cr_elem("div", elem, "drkdir", "");
	var innerstr =	"<a id=\"lb_close\" onclick=\"hide_drkbx();\"></a><p>" + labels[13] + "</p>"
	+	"<form id=\"travelmode\" name=\"travelmode\">"
	+	"<input type=\"radio\" name=\"travelmode\" value=\"DRIVING\" id=\"travelmode_1\" checked onclick=\"calcRoute();\"><label for=\"travelmode_1\"></label>"
	+	"<input type=\"radio\" name=\"travelmode\" value=\"TRANSIT\" id=\"travelmode_2\" onclick=\"calcRoute();\"><label for=\"travelmode_2\"></label>"
	+	"<input type=\"radio\" name=\"travelmode\" value=\"WALKING\" id=\"travelmode_3\" onclick=\"calcRoute();\"><label for=\"travelmode_3\"></label>"
	+	"<input type=\"radio\" name=\"travelmode\" value=\"BICYCLING\" id=\"travelmode_4\" onclick=\"calcRoute();\"><label for=\"travelmode_4\"></label>"
	+	"<input type=\"radio\" name=\"travelmode\" value=\"\" id=\"travelmode_5\" onclick=\"window.open('https://www.google.de/flights/";
	if ((hotel === "AMB") || (hotel === "BRA")) {
		innerstr+=	"#search;t=TXL,SXF,BER";
	} else if (hotel === "COT") {
		innerstr+=	"#search;t=TXL,SXF,BER,DRS";
	} else if ((hotel === "DCO") || (hotel === "FER")) {
		innerstr+=	"#search;t=DUS";
	} else if ((hotel === "HOF") || (hotel === "NUE") || (hotel === "SAX")) {
		innerstr+=	"#search;t=NUE";
	} else if (hotel === "REG") {
		innerstr+=	"#search;t=NUE,MUC";
	}
	innerstr+=	"', '_blank');\"><label for=\"travelmode_5\"></label>"
	+	" &nbsp; "
	+	"<label id=\"travelmode_6\" onclick=\"var x = d.getElementById('gm_from').value; d.getElementById('gm_from').value = d.getElementById('gm_to').value; d.getElementById('gm_to').value = x; calcRoute();\"></label>"
	+	"<label id=\"travelmode_7\" onclick=\"map_print(d.getElementById('gm_from').value, d.getElementById('gm_to').value, get_radvl(d.forms['travelmode'].elements['travelmode']));\" style=\"display: none;\"></label>"
	+	"<label id=\"travelmode_8\" onclick=\"window.open('mailto:');\" style=\"display: none;\"></label>"
	+	"</form>"
	+	"<div><input type=\"text\" placeholder=\"" + labels[14] + "\" id=\"gm_from\" onkeypress=\"();\"></div><div><input type=\"text\" value=\"" + mapdata.Markers[0].Name + ", " + mapdata.Markers[0].Address + "\" placeholder=\"" + labels[15] + "\" id=\"gm_to\" onkeypress=\"handleEnter();\"></div><div class=\"gp_subm\"><input type=\"button\" value=\"" + labels[16] + "\" onclick=\"calcRoute();\"></div><div id=\"directionsPanel\"></div>";
	elem2.innerHTML =	innerstr;
	elem2 =	cr_elem("a", elem, "gp_zmin", "");
	elem2.onclick =	function() {
		map["drkgmap"].setZoom(map["drkgmap"].getZoom() + 1);
	};
	elem2 =	cr_elem("a", elem, "gp_zmout", "");
	elem2.onclick =	function() {
		map["drkgmap"].setZoom(map["drkgmap"].getZoom() - 1);
	};
	elem2 =	cr_elem("a", elem, "gp_close", "");
	elem2.onclick =	hide_drkbx;
	d.getElementById("gm_from").onkeypress =	handleEnter;
	d.getElementById("gm_to").onkeypress =	handleEnter;
	setTimeout("GMinitialize('drkgmap');", 900);
}


// Druckt die Route nur, wenn Marketing‑Cookies erlaubt sind.
function map_print(from, to, travelmode) {
  function _openPrintWindow() {
    var win = window.open('about:blank', '_blank');
    win.document.open();
    win.document.write(
      "<html><head><title>" + document.title + "</title>" +
      "<script>function printGMinit(){" +
        "map=new google.maps.Map(document.getElementById('drkgmap'),{});" +
        "directionsService=new google.maps.DirectionsService();" +
        "directionsDisplay=new google.maps.DirectionsRenderer({suppressMarkers:true});" +
        "directionsDisplay.setMap(map);" +
        "directionsDisplay.setPanel(document.getElementById('directionsPanel'));" +
        "var request={origin:'" + from + "',destination:'" + to + "',travelMode:google.maps.TravelMode['" + travelmode + "']};" +
        "directionsService.route(request,function(response,status){" +
          "if(status===google.maps.DirectionsStatus.OK){" +
            "directionsDisplay.setDirections(response);" +
            "var myRoute=response.routes[0].legs[0];" +
            "new google.maps.Marker({position:myRoute.steps[0].end_point,map:map,icon:'//www.sorat-hotels.com/fileadmin/ge/gm_a.png'});" +
            "new google.maps.Marker({position:myRoute.steps[myRoute.steps.length-1].end_point,map:map,icon:'//www.sorat-hotels.com/fileadmin/ge/gm_b.png'});" +
            "setTimeout('window.print();',300);" +
          "}" +
        "});" +
       "}</script>" +
      "<script src='https://maps.googleapis.com/maps/api/js?key=AIzaSyCvMFv9F4zM1urk3qMgizEo2hFV5hmtrzE&libraries=places&callback=GMinit'></script>" +
      "<link rel='stylesheet' href='//www.sorat-hotels.com/fileadmin/srt1.css'>" +
      "</head><body class='gmprint'><div id='drkgmap' class='act'></div><div id='directionsPanel'></div></body></html>"
    );
    win.document.close();
    win.focus();
    evtrck(
      "Google Maps Route drucken",
      "Von: " + from + " | Nach: " + to + " | Reiseart: " + travelmode,
      loc_hrf
    );
  }

  // Consent‑geschützt aufrufen
  if (window.Cookiebot && Cookiebot.consent.marketing) {
    _openPrintWindow();
  } else {
    // Hinweis, dass Marketing‑Cookies nötig sind
    alert("Bitte akzeptieren Sie Marketing-Cookies, um die Route auszudrucken.");
    // Sobald der User Marketing‑Cookies akzeptiert, drucken
    function _onAccept() {
      if (Cookiebot.consent.marketing) {
        window.removeEventListener("CookiebotOnAccept", _onAccept);
        _openPrintWindow();
      }
    }
    window.addEventListener("CookiebotOnAccept", _onAccept);
  }
}

function GMinit() {
    GMinitialize("gmap_i");
}

function GMinitialize(id) {
    if (d.getElementById(id).getAttribute("titleinfo").indexOf("{") !== -1) {
        var mapMarker, i;
        gmbounds = new google.maps.LatLngBounds();
        var str = d.getElementById(id).getAttribute("titleinfo").replace(/\\'/g, "_X_").replace(/'/g, '"').replace(/_X_/g, "'");
        var mapdata = JSON.parse(str);

        // Hier wird der Zoom-Faktor bestimmt.
        var finalZoom;
        if (typeof POST_CONSENT_MAP_ZOOM_LEVEL !== 'undefined' && !isNaN(POST_CONSENT_MAP_ZOOM_LEVEL)) {
            // Wenn unsere neue Variable existiert, hat sie die höchste Priorität.
            finalZoom = POST_CONSENT_MAP_ZOOM_LEVEL;
        } else {
            // Andernfalls wird die alte Logik als Fallback verwendet.
            finalZoom = (mapdata.Zoom) ? parseInt(mapdata.Zoom) : 15;
        }
        

        var myOptions = {
            zoom: finalZoom, // Verwendet unseren neuen, finalen Zoom-Faktor
            disableDefaultUI: true,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            scrollwheel: false,
        };
        map[id] = new google.maps.Map(d.getElementById(id), myOptions);
        evtrck("Google Maps Einbindung", id, loc_hrf);

        for (i = 0; (mapMarker = mapdata.Markers[i]); i++) {
            var latlng = new google.maps.LatLng(mapMarker.Lat, mapMarker.Lng);
            var image = {
                url: "//www.sorat-hotels.com/fileadmin/ge/Icon-Google-Map.png",
                size: new google.maps.Size(68, 42),
                origin: new google.maps.Point(0,0),
                anchor: new google.maps.Point(61, 0)
            };
            if ((mapMarker.Align) && (mapMarker.Align === "lo")) {
                image = { url: "//www.sorat-hotels.com/fileadmin/ge/Icon-Google-Map-lo.png", size: new google.maps.Size(68, 42), origin: new google.maps.Point(0,0), anchor: new google.maps.Point(67, 40) };
            }
            if ((mapMarker.Align) && (mapMarker.Align === "ro")) {
                image = { url: "//www.sorat-hotels.com/fileadmin/ge/Icon-Google-Map-ro.png", size: new google.maps.Size(68, 42), origin: new google.maps.Point(0,0), anchor: new google.maps.Point(2, 40) };
            }
            if ((mapMarker.Align) && (mapMarker.Align === "ru")) {
                image = { url: "//www.sorat-hotels.com/fileadmin/ge/Icon-Google-Map-ru.png", size: new google.maps.Size(68, 42), origin: new google.maps.Point(0,0), anchor: new google.maps.Point(9, 12) };
            }
            infoWindows[i] = new google.maps.InfoWindow();
            infoWindows[i].setContent(mapMarker.Name + "<br>" + mapMarker.Address);
            var mark = new google.maps.Marker({
                position: latlng,
                map: map[id],
                icon: image,
                infowindow: infoWindows[i]
            });
            gmbounds.extend(latlng);
            google.maps.event.addListener(mark, "click", function() {
                this.infowindow.open(map[id], this);
            });
            if (mapdata.Offset) {
                latlng = new google.maps.LatLng(parseFloat(mapdata.Markers[0].Lat) + parseFloat(mapdata.Offset), mapdata.Markers[0].Lng);
            }
        }

        if (i > 1) {
            map[id].fitBounds(gmbounds); // fitBounds zentriert die Karte korrekt
            
            // Der "idle"-Listener erzwingt gewünschten Zoom-Faktor,
            // nachdem fitBounds die Zentrierung vorgenommen hat.
            var listener = google.maps.event.addListener(map[id], "idle", function() { 
                this.setZoom(finalZoom);
                google.maps.event.removeListener(listener);
            });
            

        } else {
            map[id].setCenter(latlng);
        }

        if ((d.getElementById("resv_l")) && (d.getElementById(id).parentNode.id === "cgmap")) {
            var elem = d.getElementById("resv_l").cloneNode(true);
            elem.id = "resv_l2";
            d.getElementById(id).parentNode.appendChild(elem);
            elem.lastChild.lastChild.lastChild.firstChild.firstChild.id = "bkng2";
            d.getElementById("bkng2").onclick = function() {
                d.getElementById("bkng1").click();
                return false;
            }
            setTimeout("add_cls(d.getElementById('" + id + "').parentNode, 'tall'); google.maps.event.trigger(d.getElementById('" + id + "'), 'resize');", 200);
        }
        if ((i < 3) && (id !== "drkgmap")) {
            var cont = cr_elem("div", d.getElementById(id), "gp_rtpl", "");
            var txt, i, code = ["restaurant", "bar", "store", "museum"];
            if (d.getElementById("firmen")) {
                elem = cr_elem("a", cont, "", "");
                elem.innerHTML = labels[13];
                elem.onclick = function() {
                    map_gros(this);
                };
            }
            for (i = 0; (txt = rubrik[lang][i]); i++) {
                elem = cr_elem("a", cont, "", "");
                elem.innerHTML = txt;
                elem.setAttribute("titleinfo", code[i]);
                elem.onclick = function() {
                    var request = {
                        location: map["gmap_i"].getCenter(),
                        rankBy: google.maps.places.RankBy.DISTANCE,
                        types: [this.getAttribute("titleinfo")]
                    };
                    evtrck("Google Maps Umgebungsinformation", this.getAttribute("titleinfo"), loc_hrf);
                    service = new google.maps.places.PlacesService(map["gmap_i"]);
                    service.nearbySearch(request, callback);
                };
            }
            if (d.getElementById("firmen")) {
                cont.appendChild(d.getElementById("firmen"));
            }
            if (!d.getElementById("firmen")) {
                elem = cr_elem("a", cont, "", "");
                elem.innerHTML = labels[13];
                elem.onclick = function() {
                    map_gros(this);
                };
            }
        }
    }
}
function offsetCenter(mapitem, offsetx, offsety) {
	var scale =	Math.pow(2, mapitem.getZoom());
	var worldCoordinateCenter =	mapitem.getProjection().fromLatLngToPoint(mapitem.getCenter());
	var pixelOffset =	new google.maps.Point((offsetx/scale) || 0,(offsety/scale) ||0);
	var worldCoordinateNewCenter =	new google.maps.Point(
		worldCoordinateCenter.x - pixelOffset.x,
		worldCoordinateCenter.y + pixelOffset.y
	);
	var newCenter =	mapitem.getProjection().fromPointToLatLng(worldCoordinateNewCenter);
	mapitem.setCenter(newCenter);
}
function calcRoute() {
	var start =	d.getElementById("gm_from").value;
	var end =	d.getElementById("gm_to").value;
	if (directionsDisplay) {
		directionsDisplay.setMap(null);
		directionsDisplay.setPanel(null);
	}
	if (trafficLayer) {
		trafficLayer.setMap(null);
	}
	for (i = 0; (dv = gmarkers[i]); i++) {
		dv.setMap(null);
	}
	d.getElementById("directionsPanel").innerHTML =	"";
	s_disp("travelmode_7", "none");
	s_disp("travelmode_8", "none");
	if (start === "") {
		d.getElementById("gm_from").focus();
	} else if (end === "") {
		d.getElementById("gm_from").focus();
	} else {
		var travelMode =	get_radvl(d.forms["travelmode"].elements["travelmode"]);
		evtrck("Google Maps Route berechnen", "Von: " + start + " | Nach: " + end + " | Reiseart: " + travelmode, loc_hrf);
		request =	{
			origin: start,
			destination: end,
			provideRouteAlternatives: true,
			travelMode: google.maps.TravelMode[travelMode]
		};
		directionsService = new google.maps.DirectionsService();
		directionsDisplay = new google.maps.DirectionsRenderer( { suppressMarkers: true } );
		directionsDisplay.setMap(map["drkgmap"]);
		directionsDisplay.setPanel(d.getElementById("directionsPanel"));
		directionsService.route(request, function(response, status) { // OVER_QUERY_LIMIT, REQUEST_DENIED, INVALID_REQUEST, UNKNOWN_ERROR) werden jetzt abgefangen und dem Nutzer eine verständliche Fehlermeldung angezeigt.
		  if (status === google.maps.DirectionsStatus.OK) {
		    directionsDisplay.setDirections(response);
		    var myRoute = response.routes[0].legs[0];
		    gmarkers.push(new google.maps.Marker({
		      position: myRoute.steps[0].end_point,
		      map: map["drkgmap"],
		      icon: "//www.sorat-hotels.com/fileadmin/ge/gm_a.png"
		    }));
		    gmarkers.push(new google.maps.Marker({
		      position: myRoute.steps[myRoute.steps.length - 1].end_point,
		      map: map["drkgmap"],
		      icon: "//www.sorat-hotels.com/fileadmin/ge/gm_b.png"
		    }));
		  }
		  else if (status === google.maps.DirectionsStatus.ZERO_RESULTS) {
		    document.getElementById("directionsPanel").innerHTML = labels[36]; 
		    // „Keine Routenbeschreibung vorhanden.“
		  }
		  else {
		    // generischer Fehler-Fall
		    document.getElementById("directionsPanel").innerHTML =
		      (lang === "de")
		        ? "Fehler beim Berechnen der Route (" + status + "). Bitte versuchen Sie es später erneut."
		        : "An error occurred while calculating the route (" + status + "). Please try again later.";
		    // optional: ins Analytics schicken
		    evtrck("Google Maps Route Error", status, loc_hrf);
		  }
		});
		google.maps.event.addListener(directionsDisplay, "routeindex_changed", function() {
			if (smartPhone === 0) {
				clearTimeout(openTimer2);
				openTimer2 =	setTimeout("offsetCenter(map['drkgmap'], 200, 0); map['drkgmap'].setZoom(map['drkgmap'].getZoom() - 1);", 100);
			}
			if (d.getElementById("directionsPanel").firstChild) {
				d.getElementById("directionsPanel").scrollTop =	d.getElementById("directionsPanel").firstChild.offsetHeight;
			}
		});
		// if (travelMode === "DRIVING") {
			// trafficLayer =	new google.maps.TrafficLayer();
			// trafficLayer.setMap(map["drkgmap"]);
		// }
		// if (travelMode === "BICYCLING") {
			// trafficLayer =	new google.maps.BicyclingLayer();
			// trafficLayer.setMap(map["drkgmap"]);
		// }
		// if (travelMode === "TRANSIT") {
			// trafficLayer =	new google.maps.TransitLayer();
			// trafficLayer.setMap(map["drkgmap"]);
		// }
	}
	d.getElementById("travelmode_8").onclick =	function() {
		window.open("mailto:?subject=" + labels[40] + ": " + d.getElementsByTagName("h1")[0].innerText + "&body=" + labels[37] + " " + encodeURI(start) + " " + labels[38] + " " + encodeURI(end) + "%0D%0A%0D%0A" + encodeURIComponent("https://www.google.com/maps/dir/?api=1&origin=" + encodeURI(start) + "&destination=" + encodeURI(end) + "&travelmode=" + request.travelMode.toLowerCase()) + "%0D%0A%0D%0A" + labels[39]);
	}
}
function callback(results, status) {
	var i;
	for (i = 0; i < setMarkers.length; i++) {
		setMarkers[i].setMap(null);
	}
	if (status === google.maps.places.PlacesServiceStatus.OK) {
		resultList = resultList.concat(results);
		for (i = 0; i < results.length; i++) {
			setTimeout(function(){ createMarker(resultList[iterator]); iterator++; }, i * 300);
		}
	};
}
function zoomOut(bounds, latlng, currentZoom) {
	if (!bounds.contains(latlng)) {
		var newZoom =	currentZoom - 1;
		map["gmap_i"].setZoom(newZoom);
		zoomOut(map["gmap_i"].getBounds(), latlng, newZoom);
	}
}
function createMarker(place) {
	if ((place.name.indexOf("Hotel") === -1) && (place.name.indexOf("hotel") === -1) && (place.name.indexOf("Gustav Sportsbar") === -1) && (place.name.indexOf("INTERSPORT Spree Galerie") === -1)) {
		var marker =	new google.maps.Marker({
			map: map["gmap_i"],
			position: place.geometry.location
		});
		zoomOut(map["gmap_i"].getBounds(), place.geometry.location, map["gmap_i"].getZoom());
		setMarkers.push(marker);
		var request =	{
			placeId: place.place_id,
			fields: ["name", "formatted_address", "website"]
		};
		service.getDetails(request, function(details, status) {
			if (status === google.maps.places.PlacesServiceStatus.OK) {
				google.maps.event.addListener(marker, "click", function() {
					var content =	details.name;
					content+= 	(typeof details.formatted_address !== "undefined") ?	"<br>" + details.formatted_address :	"";
					content+= 	(typeof details.website !== "undefined") ?	"<br><a href='" + details.website + "' target='_blank'>" + details.website + "</a>" :	"";
					var infowindow =	new google.maps.InfoWindow();
					infowindow.setContent(content);
					infowindow.open(map["gmap_i"], this);
				});
			}
		});
	}
}
function strt() {
	w.removeEventListener("load", strt);
	dimensions();
	if (loc_hrf.indexOf("#cgmap") !== -1) {
		scr_to_gmap();
	} else if (loc_hrf.indexOf("#cookiesettings") !== -1) {
		if (d.getElementById("cookiesettings")) {
			add_cls(d.getElementById("cookiesettings").parentNode.parentNode, 'gts_opn');
			setTimeout("scr_to_lnk(d.getElementById('cookiesettings'));", 300);
		}
	} else if (loc_hrf.indexOf("#c") !== -1) {
		// if (loc_hrf.indexOf("?") !== -1) {
		// 	loc_hrf =	loc_hrf.split("?")[0];
		// }
		var screlem =	"c" + loc_hrf.split("#c")[1].replace(/_1/, "");
		if (d.getElementById(screlem)) {
			setTimeout("scr_to_lnk(d.getElementById('" + screlem + "'));", 300);
		}
	}
	if (loc_hrf.indexOf("kalender=") !== -1) {
		if (d.getElementById("shw_bf")) {
			setTimeout("scr_to_lnk(d.getElementById('shw_bf').parentNode);", 300);
		}
	}
	if (loc_hrf.indexOf("hc_sort") !== -1) {
		setTimeout("scr_to_lnk(d.getElementById('hc_all'));", 300);
	}
	if ((d.getElementById("ajp")) || (d.getElementById("ajp2"))) {
		// UPDATE
		ajax_prices();
		// var anch, i;
		//for (i = 0; (anch = d.getElementsByTagName("div")[i]); i++) {
		//	if ((anch.className === "prices") && (d.getElementById("bkng1")) && (d.getElementById("bkng1").getAttribute("href").indexOf("linotel.com") !== -1)) {
		//		anch.innerHTML = "";
		//	}
		// }
	}
	if (d.getElementById("ajx_weather")) {
		ajax_weather();
	}
	if (d.getElementById("slide_0")) {
		var ldtim =	parseInt((new Date().getTime() - Dte.getTime()) / 1000);
		if (ldtim < 4) {
			setTimeout("empty_slide('slide_0');", 1500);
		} else if (ldtim <= 12) {
			setTimeout("empty_slide('slide_0');", 6000);
		} else {
			evtrck("Ladedauer Galerie", ldtim, loc_hrf);
		}
	}
	if (d.getElementById("map_no")) {
		add_cls(d.getElementById("map_no"), "hidd");
	}
	if (d.getElementById("cpy")) {
		var anch =	cr_elem("a", d.getElementById("cpy"), "totopfx", "");
		anch.onclick =	function() {
			scrollstep(-scrt());
		};
	}
	if ((d.forms[0]) && (d.forms[0].action.indexOf("sorat_formular_nr.php") !== -1)) {
		
		// UPDATE
		// location.href =	(lang === "de") ?	"https://www.sorat-hotels.com/de/server-wartungsarbeiten.html" :	"https://www.sorat-hotels.com/en/server-maintenance-work.html";
		// evtrck("Wartungarbeiten", this.oldhref, loc_hrf);
		
		dfgr =	d.forms[0];
		d.forms[0].onsubmit =	function() {
			anch =	cr_elem("div", bdy, "", "waiter");
			cr_elem("div", anch, "", "");
			anch =	cr_elem("p", anch, "", "");
			anch.innerHTML =	labels[30];
			window.onunload =	function() {
				if (d.getElementById("waiter")) {
					bdy.removeChild(d.getElementById("waiter"));
				}
			}
			setTimeout("bdy.removeChild(d.getElementById('waiter'));", 7000);
		}
	}
	if (d.forms["tx_indexedsearch"]) {
		d.forms["tx_indexedsearch"].onsubmit =	function() {
			var t_e =	this.elements;
			if (this.action.indexOf("?") === -1) {
				if (t_e["tx_kesearch_pi1[sword]"].value !== "") {
					this.action+=	"?q=" + t_e["tx_kesearch_pi1[sword]"].value;
				} else {
					this.action+=	"?q=" + t_e["tx_indexedsearch[sword]"].value;
				}
			}
		};
	}
	/*if ((d.getElementById("event")) && (d.getElementById("event").nodeName === "SELECT") && (d.getElementById("uhrzeit")) && (d.getElementById("uhrzeit").nodeName === "SELECT")) {
		timeopts(false);
		d.getElementById("event").onchange =	function() {
			timeopts(true);
			if (this.options[this.selectedIndex].value === "valentinstag_menu_to_go") {
				if (lang === "en") {
					location.href = 'https://www.sorat-hotels.com/en/hotel/regensburg/request-valentines-menu-to-go-brandner.html';
				} else {
					location.href = 'https://www.sorat-hotels.com/de/hotel/regensburg/valentinstag-menu-to-go-anfrage.html';
				}
			}
		}
	}*/
	if (document.getElementById("event")) {
        reorderSpecificEventDropdown();
    }

	if (d.getElementById("event") && d.getElementById("uhrzeit")) {
         timeopts(false); 
        d.getElementById("event").onchange = function() {
             timeopts(true);
        };
    }return true;
}
function ajax_call(adr, ajx_clbck) {
	var xmlHttp;
	try {
		xmlHttp =	new XMLHttpRequest();
	}
	catch(e) {
		try {
			xmlHttp =	new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				xmlHttp =	new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				return false;
			}
		}
	}
	xmlHttp.onreadystatechange =	function() {
		if ((xmlHttp.readyState === 4) && (xmlHttp.status === 200)) {
			if (xmlHttp.responseText !== "") {
				ajx_clbck();
			}
		}
	}
	xmlHttp.open("GET", adr, true);
	xmlHttp.send(null);
	return xmlHttp;
}
function ajax_prices() {
	var adr =	"fileadmin/ajax/ajax_availb." + "php?promo=0d&lang=" + lang;
	adr+=	(hotel !== "all") ?	"&hotel=" + hotel :	"";
	adr+=	(d.getElementById("ajp_Breakfspec")) ?	"&rate=Breakfspec" :	"";
	
	var xmlHttp =	ajax_call(adr, function() {
		var i, prts;
		// console.log(xmlHttp.responseText);
		var lines =	xmlHttp.responseText.split("\n");
		for (i = 0; i < lines.length; i++) {
			prts =	lines[i].split("|");
			if (d.getElementById("ajp_ez1_" + prts[0])) {
				d.getElementById("ajp_ez1_" + prts[0]).innerHTML =	prts[3];
			}
			if (d.getElementById("ajp_dz1_" + prts[0])) {
				d.getElementById("ajp_dz1_" + prts[0]).innerHTML =	prts[4];
			}
			if (d.getElementById("ajp_mz1_" + prts[0])) {
				d.getElementById("ajp_mz1_" + prts[0]).innerHTML =	prts[3];
			}
			if (d.getElementById("ajp_dte1_" + prts[0])) {
				d.getElementById("ajp_dte1_" + prts[0]).innerHTML =	prts[1];
			}
			if (d.getElementById("ajp_rate1_" + prts[0])) {
				d.getElementById("ajp_rate1_" + prts[0]).innerHTML =	prts[2];
			}
			if (d.getElementById("ajp_" + prts[0])) {
				s_disp("ajp_" + prts[0], "block");
			}
			if (d.getElementById("ajp_dte1_ez" + prts[0])) {
				d.getElementById("ajp_dte1_ez" + prts[0]).innerHTML =	prts[1];
			}
			if (d.getElementById("ajp_ez" + prts[0])) {
				s_disp("ajp_ez" + prts[0], "block");
			}
			if (d.getElementById("ajp2_" + prts[0])) {
				d.getElementById("ajp2_" + prts[0]).innerHTML =	d.getElementById("ajp_" + prts[0]).innerHTML;
				s_disp("ajp2_" + prts[0], "block");
			}
			if (d.getElementById("ajp3_" + prts[0])) {
				d.getElementById("ajp3_" + prts[0]).innerHTML =	d.getElementById("ajp_" + prts[0]).innerHTML;
				s_disp("ajp3_" + prts[0], "block");
			}
		}
		if (loc_hrf.indexOf("layer=fam") !== -1) {
			document.getElementById("fam").firstChild.onclick();
		}
	});
	setTimeout(ajax_prices, 30 * 60 * 1000);
}
function ajax_weather() {
	var adr =	"index.php?id=1622&type=123456&hotel=" + hotel + "&L=";
	adr+=	(lang == "de") ?	"0" :	"1";
	var xmlHttp =	ajax_call(adr, function() {
		d.getElementById("ajx_weather").innerHTML =	xmlHttp.responseText;
		setTimeout(ajax_weather, 60 * 1000);
	});
}



function show_more2(bereich, num) {
	var i, j = 0, n = 0, k = 0;
	if (num === 0) {
		s_disp(bereich + "_xed", "none");
		if (d.getElementById("age" + bereich)) {
			d.getElementById("age" + bereich).selectedIndex =	0;
			if (d.getElementById("rpl_age" + bereich)) {
				d.getElementById("rpl_age" + bereich).innerHTML =	d.getElementById("age" + bereich).options[d.getElementById("age" + bereich).selectedIndex].text;
			}
		}
		d.getElementById(bereich + "_searchword").value =	"";
		for (i = 999; i >= 5; i--) {
			if ((d.getElementById(bereich + "_hide_" + i)) && (chk_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv") === -1)) {
				add_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv");
				rmv_cls(d.getElementById(bereich + "_hide_" + i), "ca_opn");
			}
		}
		for (i = 1; i <= 5; i++) {
			if ((d.getElementById(bereich + "_hide_" + i)) && (d.getElementById(bereich + "_hide_" + i).innerHTML.toLowerCase().indexOf(d.getElementById(bereich + "_searchword").value.toLowerCase()) !== -1)) {
				j++;
				rmv_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv");
			}
		}
	} else if (num < 0) {
		for (i = 999; i > 5; i--) {
			if ((d.getElementById(bereich + "_hide_" + i)) && (chk_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv") === -1) && (j < num * -1) && (num < 0)) {
				j++;
				add_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv");
				rmv_cls(d.getElementById(bereich + "_hide_" + i), "ca_opn");
			}
		}
	} else {
		for (i = 1; i <= 999; i++) {
			if ((d.getElementById(bereich + "_hide_" + i)) && (chk_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv") !== -1) && (j < num) && (num > 0)) {
				j++;
				rmv_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv");
			}
		}
	}
	for (i = 1; i <= 999; i++) {
		if ((d.getElementById(bereich + "_hide_" + i)) && (chk_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv") !== -1)) {
			n++;
		} else if (d.getElementById(bereich + "_hide_" + i)) {
			k++;
		}
	}
	if (num < 0) {
		scr_to_lnk(d.getElementById(bereich + "_hide_" + (k - 4)));
	}
	s_disp(bereich + "_nrs", "none");
	d.getElementById(bereich + "_plmi").firstChild.style.display =	(k <= 5) ?	"none" :	"inline-block";
	d.getElementById(bereich + "_plmi").lastChild.style.display =	(n === 0) ?	"none" :	"inline-block";
	evtrck("Hotelbewertungen mehr", bereich + " " + num, loc_hrf);
}
function bewert_nav(bereich) {
	var i, j = 0;
	s_disp(bereich + "_nrs", "none");
	if (d.getElementById(bereich + "_searchword").value !== "") {
		for (i = 999; i >= 0; i--) {
			if ((d.getElementById(bereich + "_hide_" + i)) && (chk_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv") === -1)) {
				add_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv");
				rmv_cls(d.getElementById(bereich + "_hide_" + i), "ca_opn");
			}
		}
		for (i = 1; i <= 999; i++) {
			if ((d.getElementById(bereich + "_hide_" + i)) && (d.getElementById(bereich + "_hide_" + i).innerHTML.replace(/<p class="blkn">(.*?)<\/p>/g, "").toLowerCase().indexOf(d.getElementById(bereich + "_searchword").value.toLowerCase()) !== -1)) {
				j++;
				rmv_cls(d.getElementById(bereich + "_hide_" + i), "bw_row_inv");
			}
		}
		if (j === 0) {
			s_disp(bereich + "_nrs", "block");
		}
		s_disp(bereich + "_xed", "block");
	}
}


var curtime;
function ajax_curtime() {
	var adr =	"fileadmin/ajax/sorat_weather_refresh." + "php?loc=timestamp&hotel=" + hotel + "&lang=" + lang;
	var xmlHttp =	ajax_call(adr, function() {
		curtime =	parseInt(xmlHttp.responseText, 10);
		setTimeout(addsecond, 1000);
	});
}
function addsecond() {
	setTimeout(addsecond, 1000);
	var rest, str;
	curtime-= 1;
	var langs =	(lang === "en") ?	["Days", "Hours", "Minutes", "Seconds"] :	["Tage", "Stunden", "Minuten", "Sekunden"];
	
	str =	"<span><span class=\"cntdwn_left\"><span";
	str+=	(Math.floor(curtime / 86400) < 183) ?	" style=\"transform: rotate(" + (0.986 * (365 - Math.floor(curtime / 86400))) + "deg); -webkit-transform: rotate(" + (0.986 * (365 - Math.floor(curtime / 86400))) + "deg);\"" :	"";
	str+=	"></span></span><span class=\"cntdwn_right\"><span";
	str+=	(Math.floor(curtime / 86400) >= 183) ?	" style=\"transform: rotate(" + (0.986 * (365 - Math.floor(curtime / 86400))) + "deg); -webkit-transform: rotate(" + (0.986 * (365 - Math.floor(curtime / 86400))) + "deg);\"" :	"";
	str+=	"></span></span><span class=\"cntdwn_top\"><span>" + Math.floor(curtime / 86400) + "</span><br>" + langs[0] + "</span></span>";
	rest =	curtime % 86400;
	str+=	"<span><span class=\"cntdwn_left\"><span";
	str+=	(Math.floor(rest / 3600) < 12) ?	" style=\"transform: rotate(" + (15 * (24 - Math.floor(rest / 3600))) + "deg); -webkit-transform: rotate(" + (15 * (24 - Math.floor(rest / 3600))) + "deg);\"" :	"";
	str+=	"></span></span><span class=\"cntdwn_right\"><span";
	str+=	(Math.floor(rest / 3600) >= 12) ?	" style=\"transform: rotate(" + (15 * (24 - Math.floor(rest / 3600))) + "deg); -webkit-transform: rotate(" + (15 * (24 - Math.floor(rest / 3600))) + "deg);\"" :	"";
	str+=	"></span></span><span class=\"cntdwn_top\"><span>" + Math.floor(rest / 3600) + "</span><br>" + langs[1] + "</span></span>";
	rest =	rest % 3600;
	str+=	"<span><span class=\"cntdwn_left\"><span";
	str+=	(Math.floor(rest / 60) < 30) ?	" style=\"transform: rotate(" + (6 * (60 - Math.floor(rest / 60))) + "deg); -webkit-transform: rotate(" + (6 * (60 - Math.floor(rest / 60))) + "deg);\"" :	"";
	str+=	"></span></span><span class=\"cntdwn_right\"><span";
	str+=	(Math.floor(rest / 60) >= 30) ?	" style=\"transform: rotate(" + (6 * (60 - Math.floor(rest / 60))) + "deg); -webkit-transform: rotate(" + (6 * (60 - Math.floor(rest / 60))) + "deg);\"" :	"";
	str+=	"></span></span><span class=\"cntdwn_top\"><span>" + Math.floor(rest / 60) + "</span><br>" + langs[2] + "</span></span>";
	rest =	rest % 60;
	str+=	"<span><span class=\"cntdwn_left\"><span";
	str+=	(rest < 30) ?	" style=\"transform: rotate(" + (6 * (60 - rest)) + "deg); -webkit-transform: rotate(" + (6 * (60 - rest)) + "deg);\"" :	"";
	str+=	"></span></span><span class=\"cntdwn_right\"><span";
	str+=	(rest >= 30) ?	" style=\"transform: rotate(" + (6 * (60 - rest)) + "deg); -webkit-transform: rotate(" + (6 * (60 - rest)) + "deg);\"" :	"";
	str+=	"></span></span><span class=\"cntdwn_top\"><span>" + rest + "</span><br>" + langs[3] + "</span></span>";
	
	d.getElementById("countdown").innerHTML =	str;
}



function addSwipeListener(el, listener) {
	var startX, startY, dx, direction;
	function cancelTouch() {
		el.removeEventListener('touchmove', onTouchMove);
		el.removeEventListener('touchend', onTouchEnd);
		startX =	null;
		startY =	null;
		direction =	null;
	}
	function onTouchMove(e) {
		if (e.touches.length > 1) {
			cancelTouch();
		} else {
			dx =	e.touches[0].pageX - startX;
			var dy =	e.touches[0].pageY - startY;
			if (direction === null) {
				direction =	dx;
				if (Math.abs(dy) < 25) {
					e.preventDefault();
				}
			} else if ((direction < 0 && dx > 0) || (direction > 0 && dx < 0) || Math.abs(dy) > 25) {
				cancelTouch();
			}
		}
	}
	function onTouchEnd(e) {
		cancelTouch();
		if (Math.abs(dx) > 25) {
			listener({ target: el, direction: dx > 0 ? 'right' : 'left' });
		}
	}
	function onTouchStart(e) {
		if (e.touches.length === 1) {
			dx =	null; // swipe error fix by coma
			startX =	e.touches[0].pageX;
			startY =	e.touches[0].pageY;
			el.addEventListener('touchmove', onTouchMove);
			el.addEventListener('touchend', onTouchEnd);
		}
	}
	if (el.addEventListener) {
		el.addEventListener('touchstart', onTouchStart, {passive: true});
	}
}
d = document;
w = window;

d.createElement("address");
d.createElement("footer");
d.createElement("article");

// Stellen Sie sicher, dass diese Funktion die Listener korrekt handhabt:
var DOMContentLoaded = function() {
	d.removeEventListener("DOMContentLoaded", DOMContentLoaded); // Entfernt sich selbst
	w.removeEventListener("load", pg_start);                 // WICHTIG: Entfernt den pg_start Listener für das 'load' Event
	pg_start();                                              // Ruft pg_start direkt auf
};
d.addEventListener("DOMContentLoaded", DOMContentLoaded);    // Listener für DOMContentLoaded
w.addEventListener("load", pg_start);                        // Listener für window load (Fallback)
w.addEventListener("load", strt);
w.addEventListener("pageshow", pageshow);
d.addEventListener("touchstart", function(){}, true);

// Warten, bis das DOM vollständig geladen ist
document.addEventListener('DOMContentLoaded', function() {
  setTimeout(function() {
    document.querySelectorAll('.mapboxgl-ctrl-attrib-button')
      .forEach(b => b.setAttribute('aria-label', 'Toggle attribution'));
  }, 1000);
});
