
/**
 * Google Preview
 *
 * @author Ryan Chase
 * @version 1.0
 * @url http://www.blastam.com/blog/index.php/2013/03/how-to-track-downloads-in-google-analytics-v2
 */
document.addEventListener('DOMContentLoaded', function(event) {
  var filetypes = /\.(zip|exe|dmg|pdf|doc.*|xls.*|ppt.*|mp3|txt|rar|wma|mov|avi|wmv|flv|wav)$/i;

  document.querySelector('a').addEventListener('click', function(event) {
    var track = true,
      href = this.href,
      isThisDomain = href.match(document.domain.split('.').reverse()[1] + '.' + document.domain.split('.').reverse()[0]);

    if(!href.match(/^javascript:/i)) {
      var elEv = [];
      elEv.value = 0, elEv.non_i = false;
      if(href.match(/^mailto\:/i)) {
        elEv.category = "email";
        elEv.action = "click";
        elEv.label = href.replace(/^mailto\:/i, '');
        elEv.loc = href;
      } else if(href.match(filetypes)) {
        var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
        elEv.category = "download";
        elEv.action = "click-" + extension[0];
        elEv.label = href.replace(/ /g, "-");
        elEv.loc = href;
      } else if(href.match(/^https?\:/i) && !isThisDomain) {
        elEv.category = "external";
        elEv.action = "click";
        elEv.label = href.replace(/^https?\:\/\//i, '');
        elEv.non_i = true;
        elEv.loc = href;
      } else if(href.match(/^tel\:/i)) {
        elEv.category = "telephone";
        elEv.action = "click";
        elEv.label = href.replace(/^tel\:/i, '');
        elEv.loc = href;
      } else track = false;

      if(track) {
        ga('send', 'event', elEv.category.toLowerCase(), elEv.action.toLowerCase(), elEv.label.toLowerCase(), elEv.value, {'nonInteraction': elEv.non_i});
      }
    }
  });
});

$.fn.isInViewport = function() {
	var elementTop = $(this).offset().top;
	var elementBottom = elementTop + $(this).height();
	var viewportTop = $(window).scrollTop();
	var viewportBottom = viewportTop + $(window).height();
	return elementBottom > viewportTop && elementTop < viewportBottom;
};
responsiveImagesInit();

$(document).ready(function() {
	responsiveImages('ready');
});

$(window).scroll(function() {
	responsiveImages('scroll');
	if ($('body').attr('data-preloaded') == '0') responsiveImages('preload');
});

$(window).resize(function() {
	$('body').attr('data-scrollloaded', 0);
	$('body').attr('data-preloaded', 0);
	var resize = 1;
	window.addEventListener("orientationchange", function() {
		resize = 0;
	}, false);
	if (resize = 1) responsiveImages('resize');
});

function responsiveContainer(container) {
	responsiveImages('resize', container);
}

function responsiveImagesInit() {
	$('body').attr('data-scrollloaded', 0);
	$('body').attr('data-preloaded', 0);
	$('.responsiveImage.responsiveImageInitiated').each(function() {
		var typeSet = $(this).attr('data-type');
		var typeArray = typeSet.split('|');
		var typeKind = typeArray[0];
		var typeTag = typeArray[1];
		if (typeTag == 'img') {
			if (typeKind == 'parent' && $(this).css('object-fit') == '') {
				var thisWidth = $(this).parent()[0].getBoundingClientRect().width;
				var thisRealWidth = parseInt($(this).attr('data-width'));
				var thisRealHeight = parseInt($(this).attr('data-height'));
				var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
				$(this).parent().css({
					'width': thisWidth + 'px',
					'height': thisHeight + 'px'
				});
			}
			else {
				var thisCssWidth = $(this).css('width');
				if (thisCssWidth == '') {
					var thisWidth = $(this).width();
					var thisRealWidth = parseInt($(this).attr('data-width'));
					var thisRealHeight = parseInt($(this).attr('data-height'));
					var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
					$(this).css({
						'width': thisWidth + 'px',
						'height': thisHeight + 'px',
					});
				}
			}
			$(this).attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=');
		}
		else $(this).css('background-image', 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=)').find('.responsiveDummyImage').attr('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=');
	});
}

function responsiveImages(type, container) {
	if (!container) container = 'body';
	if ((type == 'ready') || (type == 'scroll' && $('body').attr('data-scrollloaded') == '0')) {
		$(container).find('.responsiveImage.responsiveImageInitiated').each(function() {
			var $item = $(this);
			var typeSet = $item.attr('data-type');
			var srcSet = $item.attr('data-srcset');
			if (typeof typeSet !== typeof undefined && typeSet !== false && typeof srcSet !== typeof undefined && srcSet !== false) {
				var $parent = $item.parent();
				var typeArray = typeSet.split('|');
				var typeKind = typeArray[0];
				var typeTag = typeArray[1];
				if (typeKind == 'this' || typeKind == 'min' || typeKind == 'max') $viewport = $item;
				else if (typeKind == 'parent') $viewport = $parent;
				var origWidth = parseInt($item.attr('data-width'));
				var origHeight = parseInt($item.attr('data-height'));
				var srcSizes = srcSet.split(',');
				var countSizes = srcSizes.length;
				if (typeKind == 'min') {
					var referenceWidth = 'not necessary';
					var referenceHeight = 'not necessary';
					var thisIndex = 0;
					var srcSizeArray = srcSizes[thisIndex];
					var srcSize = srcSizeArray.split('|');
					var srcSrc = srcSize[0];
					var srcWidth = srcSize[1];
					var srcHeight = (origHeight * srcWidth) / origWidth;
				}
				else {
					for (var i = 0; i < countSizes; i++) {
						var thisIndex = countSizes - 1;
						if (typeKind == 'parentwidth') {
							var referenceWidth = $parent[0].getBoundingClientRect().width;;
							var referenceHeight = 'not necessary';
							var srcSizeArray = srcSizes[i];
							var srcSize = srcSizeArray.split('|');
							var srcSrc = srcSize[0];
							var srcWidth = srcSize[1];
							var srcHeight = (origHeight * srcWidth) / origWidth;
							if (srcWidth >= referenceWidth) {
								thisIndex = i;
								var srcSizeArray = srcSizes[thisIndex];
								var srcSize = srcSizeArray.split('|');
								var srcSrc = srcSize[0];
								var srcWidth = srcSize[1];
								var srcHeight = (origHeight * srcWidth) / origWidth;
								break;
							}
						}
						else {
							if (typeKind == 'parent') {
								var referenceWidth = $parent[0].getBoundingClientRect().width;
								var referenceHeight = $parent[0].getBoundingClientRect().height;
							}
							if (typeKind == 'this') {
								var referenceWidth = $item[0].getBoundingClientRect().width;
								var referenceHeight = $item[0].getBoundingClientRect().height;
							}
							var srcSizeArray = srcSizes[i];
							var srcSize = srcSizeArray.split('|');
							var srcSrc = srcSize[0];
							var srcWidth = srcSize[1];
							var srcHeight = (origHeight * srcWidth) / origWidth;
							if (srcWidth >= referenceWidth) {
								if (srcHeight < referenceHeight) {
									var x = countSizes - 1;
									var srcMaxSizeArray = srcSizes[x];
									var srcMaxSize = srcMaxSizeArray.split('|');
									var srcMaxWidth = srcMaxSize[1];
									var srcMaxHeight = (origHeight * srcMaxWidth) / origWidth;
									if (srcMaxHeight <= referenceHeight) thisIndex = x;
									else {
										while (srcMaxHeight > referenceHeight) {
											x--;
											srcMaxSizeArray = srcSizes[x];
											srcMaxSize = srcMaxSizeArray.split('|');
											srcMaxWidth = srcMaxSize[1];
											srcMaxHeight = (origHeight * srcMaxWidth) / origWidth;
										}
										x++;
										thisIndex = x;
									}
								}
								else thisIndex = i;
								var srcSizeArray = srcSizes[thisIndex];
								var srcSize = srcSizeArray.split('|');
								var srcSrc = srcSize[0];
								var srcWidth = srcSize[1];
								var srcHeight = (origHeight * srcWidth) / origWidth;
								break;
							}
						}
					}
				}
				if ($viewport.isInViewport() && $viewport.is(':visible') && !$item.hasClass('responsiveImageCalculated')) {
					if (typeTag == 'img') $item.attr('src', srcSrc).addClass('responsiveImageCalculated').attr('data-src', srcSrc);
					else if (typeTag == 'div') $item.css('background-image', 'url(' + srcSrc + ')').addClass('responsiveImageCalculated').attr('data-src', srcSrc).find('.responsiveDummyImage').attr('src', srcSrc);
				}
				else if (!$viewport.isInViewport() && typeof srcSet !== typeof undefined && srcSet !== false) {
					$item.removeClass('responsiveImageCalculated');
					if (typeTag == 'img') {
						if (typeKind == 'parent' && $item.css('object-fit') == '') {
							var thisWidth = $parent()[0].getBoundingClientRect().width;
							var thisRealWidth = parseInt($item.attr('data-width'));
							var thisRealHeight = parseInt($item.attr('data-height'));
							var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
							$parent.css({
								'width': thisWidth + 'px',
								'height': thisHeight + 'px'
							});
						}
						else {
							var thisCssWidth = $item.css('width');
							if (thisCssWidth == '') {
								var thisWidth = $item.width();
								var thisRealWidth = parseInt($item.attr('data-width'));
								var thisRealHeight = parseInt($item.attr('data-height'));
								var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
								$item.css({
									'width': thisWidth + 'px',
									'height': thisHeight + 'px',
								});
							}
						}
					}
					$item.attr('data-src', srcSrc);
				}
			}
		});
		$('body').attr('data-scrollloaded', 1);
	}
	else if (type == 'resize') {
		$(container).find('.responsiveImage.responsiveImageInitiated').each(function() {
			var $item = $(this);
			var typeSet = $item.attr('data-type');
			var srcSet = $item.attr('data-srcset');
			if (typeof typeSet !== typeof undefined && typeSet !== false && typeof srcSet !== typeof undefined && srcSet !== false) {
				var $parent = $item.parent();
				var typeArray = typeSet.split('|');
				var typeKind = typeArray[0];
				var typeTag = typeArray[1];
				if (typeKind == 'this' || typeKind == 'min' || typeKind == 'max') $viewport = $item;
				else if (typeKind == 'parent') $viewport = $parent;
				var origWidth = parseInt($item.attr('data-width'));
				var origHeight = parseInt($item.attr('data-height'));
				var srcSizes = srcSet.split(',');
				var countSizes = srcSizes.length;
				if (typeKind == 'min') {
					var referenceWidth = 'not necessary';
					var referenceHeight = 'not necessary';
					var thisIndex = 0;
					var srcSizeArray = srcSizes[thisIndex];
					var srcSize = srcSizeArray.split('|');
					var srcSrc = srcSize[0];
					var srcWidth = srcSize[1];
					var srcHeight = (origHeight * srcWidth) / origWidth;
				}
				else {
					for (var i = 0; i < countSizes; i++) {
						var thisIndex = countSizes - 1;
						if (typeKind == 'parentwidth') {
							var referenceWidth = $parent[0].getBoundingClientRect().width;;
							var referenceHeight = 'not necessary';
							var srcSizeArray = srcSizes[i];
							var srcSize = srcSizeArray.split('|');
							var srcSrc = srcSize[0];
							var srcWidth = srcSize[1];
							var srcHeight = (origHeight * srcWidth) / origWidth;
							if (srcWidth >= referenceWidth) {
								thisIndex = i;
								var srcSizeArray = srcSizes[thisIndex];
								var srcSize = srcSizeArray.split('|');
								var srcSrc = srcSize[0];
								var srcWidth = srcSize[1];
								var srcHeight = (origHeight * srcWidth) / origWidth;
								break;
							}
						}
						else {
							if (typeKind == 'parent') {
								var referenceWidth = $parent[0].getBoundingClientRect().width;
								var referenceHeight = $parent[0].getBoundingClientRect().height;
							}
							if (typeKind == 'this') {
								var referenceWidth = $item[0].getBoundingClientRect().width;
								var referenceHeight = $item[0].getBoundingClientRect().height;
							}
							var srcSizeArray = srcSizes[i];
							var srcSize = srcSizeArray.split('|');
							var srcSrc = srcSize[0];
							var srcWidth = srcSize[1];
							var srcHeight = (origHeight * srcWidth) / origWidth;
							if (srcWidth >= referenceWidth) {
								if (srcHeight < referenceHeight) {
									var x = countSizes - 1;
									var srcMaxSizeArray = srcSizes[x];
									var srcMaxSize = srcMaxSizeArray.split('|');
									var srcMaxWidth = srcMaxSize[1];
									var srcMaxHeight = (origHeight * srcMaxWidth) / origWidth;
									if (srcMaxHeight <= referenceHeight) thisIndex = x;
									else {
										while (srcMaxHeight > referenceHeight) {
											x--;
											srcMaxSizeArray = srcSizes[x];
											srcMaxSize = srcMaxSizeArray.split('|');
											srcMaxWidth = srcMaxSize[1];
											srcMaxHeight = (origHeight * srcMaxWidth) / origWidth;
										}
										x++;
										thisIndex = x;
									}
								}
								else thisIndex = i;
								var srcSizeArray = srcSizes[thisIndex];
								var srcSize = srcSizeArray.split('|');
								var srcSrc = srcSize[0];
								var srcWidth = srcSize[1];
								var srcHeight = (origHeight * srcWidth) / origWidth;
								break;
							}
						}
					}
				}
				if ($viewport.isInViewport() && $viewport.is(':visible')) {
					if (typeTag == 'img') $item.attr('src', srcSrc).addClass('responsiveImageCalculated').attr('data-src', srcSrc);
					else if (typeTag == 'div') $item.css('background-image', 'url(' + srcSrc + ')').addClass('responsiveImageCalculated').attr('data-src', srcSrc).find('.responsiveDummyImage').attr('src', srcSrc);
					if (typeTag == 'img') {
						if (typeKind == 'parent' && $item.css('object-fit') == '') {
							$parent.css({
								'width': '',
								'height': ''
							});
							var thisWidth = $parent()[0].getBoundingClientRect().width;
							var thisRealWidth = parseInt($item.attr('data-width'));
							var thisRealHeight = parseInt($item.attr('data-height'));
							var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
							$parent.css({
								'width': thisWidth + 'px',
								'height': thisHeight + 'px'
							});
						}
						else {
							var thisCssWidth = $item.css('width');
							if (thisCssWidth == '') {
								$item.css({
									'width': '',
									'height': ''
								});
								var thisWidth = $item.width();
								var thisRealWidth = parseInt($item.attr('data-width'));
								var thisRealHeight = parseInt($item.attr('data-height'));
								var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
								$item.css({
									'width': thisWidth + 'px',
									'height': thisHeight + 'px',
								});
							}
						}
					}
				}
				else if (!$viewport.isInViewport() && typeof srcSet !== typeof undefined && srcSet !== false) {
					$item.removeClass('responsiveImageCalculated');
					if (typeTag == 'img') {
						if (typeKind == 'parent' && $item.css('object-fit') == '') {
							$parent.css({
								'width': '',
								'height': ''
							});
							var thisWidth = $parent()[0].getBoundingClientRect().width;
							var thisRealWidth = parseInt($item.attr('data-width'));
							var thisRealHeight = parseInt($item.attr('data-height'));
							var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
							$parent.css({
								'width': thisWidth + 'px',
								'height': thisHeight + 'px'
							});
						}
						else {
							var thisCssWidth = $item.css('width');
							if (thisCssWidth == '') {
								$item.css({
									'width': '',
									'height': ''
								});
								var thisWidth = $item.width();
								var thisRealWidth = parseInt($item.attr('data-width'));
								var thisRealHeight = parseInt($item.attr('data-height'));
								var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
								$item.css({
									'width': thisWidth + 'px',
									'height': thisHeight + 'px',
								});
							}
						}
					}
					$item.attr('data-src', srcSrc);
					preloadImages(['https://' + document.location.hostname + srcSrc], true);
				}
			}
		});
		$('body').attr('data-preloaded', 1);
	}
	else if (type == 'scroll' && $('body').attr('data-scrollloaded') == '1') {
		$(container).find('.responsiveImage.responsiveImageInitiated').each(function() {
			var $item = $(this);
			var typeSet = $item.attr('data-type');
			var dataSrc = $item.attr('data-src');
			if (typeof typeSet !== typeof undefined && typeSet !== false && typeof dataSrc !== typeof undefined && dataSrc !== false) {
				var $parent = $item.parent();
				var typeArray = typeSet.split('|');
				var typeKind = typeArray[0];
				var typeTag = typeArray[1];
				if (typeKind == 'this' || typeKind == 'min' || typeKind == 'max') $viewport = $item;
				else if (typeKind == 'parent') $viewport = $parent;
				if ($viewport.isInViewport() && $viewport.is(':visible') && !$item.hasClass('responsiveImageCalculated')) {
					if (typeTag == 'img') $item.attr('src', dataSrc).addClass('responsiveImageCalculated').attr('data-src', dataSrc);
					else if (typeTag == 'div') $item.css('background-image', 'url(' + dataSrc + ')').addClass('responsiveImageCalculated').attr('data-src', dataSrc).find('.responsiveDummyImage').attr('src', dataSrc);
				}
				else if (!$viewport.isInViewport()) {
					$item.removeClass('responsiveImageCalculated');
				}
			}
		});
	}
	else if (type == 'preload') {
		$(container).find('.responsiveImage.responsiveImageInitiated').each(function() {
			var $item = $(this);
			var typeSet = $item.attr('data-type');
			var dataSrc = $item.attr('data-src');
			if (typeof typeSet !== typeof undefined && typeSet !== false && typeof dataSrc !== typeof undefined && dataSrc !== false) {
				var $parent = $item.parent();
				var typeArray = typeSet.split('|');
				var typeKind = typeArray[0];
				var typeTag = typeArray[1];
				if (typeKind == 'this' || typeKind == 'min' || typeKind == 'max') $viewport = $item;
				else if (typeKind == 'parent') $viewport = $parent;
				if (!$viewport.isInViewport()) {
					preloadImages(['https://' + document.location.hostname + dataSrc], true);
				}
			}
		});
		$('body').attr('data-preloaded', 1);
	}
}

function preloadImages(array, waitForOtherResources, timeout) {
	var loaded = false, list = preloadImages.list, imgs = array.slice(0), t = timeout || 15*1000, timer;
	if (!preloadImages.list) {
		preloadImages.list = [];
	}
	if (!waitForOtherResources || document.readyState === 'complete') {
		loadNow();
	} else {
		window.addEventListener("load", function() {
			clearTimeout(timer);
			loadNow();
		});
		timer = setTimeout(loadNow, t);
	}
	function loadNow() {
		if (!loaded) {
			loaded = true;
			for (var i = 0; i < imgs.length; i++) {
				var img = new Image();
				img.onload = img.onerror = img.onabort = function() {
					var index = preloadImages.list.indexOf(this);
					if (index !== -1) {
						preloadImages.list.splice(index, 1);
					}
				}
				preloadImages.list.push(img);
				img.src = imgs[i];
			}
		}
	}
}
visibleImagesInit();

$(document).ready(function() {
	visibleImages();
});

$(window).resize(function() {
	visibleImages();
});

$(window).scroll(function() {
	visibleImages();
});

function visibleImagesInit() {
	var imageCounter = 0;
	$('img').each(function() {
		if (!$(this).hasClass('responsiveSkip') && !$(this).hasClass('responsiveImage') && !$(this).hasClass('responsiveDummyImage')) {
			var src = $(this).attr('src');
			if (src.indexOf('.svg') < 0) {
				$image = $(this);
				var thisClass = 'visibleImage_' + imageCounter;
				$image.addClass(thisClass);
				if ($image.isInViewport()) {
					$image.addClass('visibleImage').addClass('visibleImageInitiated').attr({
						'data-visibleimage': src
					});
				}
				else if (!$image.isInViewport()) {
					$(this).attr({
						'data-visibleimage': src,
						'src': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='
					}).addClass('visibleImageInitiated').addClass('visibleImage');
					var image = new Image();
					image.src = src;
					image.onload = function() {
						$('.' + thisClass).css({
							'width': this.width + 'px',
							'height': this.height + 'px'
						}).attr({
							'data-width': this.width,
							'data-height': this.height
						});
					};
				}
				imageCounter++;
			}
		}
	});
}

function visibleImages() {
	$('img.visibleImageInitiated').each(function() {
		$image = $(this);
		$image.css({
			'width': '',
			'height': ''
		});
		if ($image.isInViewport()) {
			var src = $image.attr('data-visibleimage');
			$(this).removeAttr('width').attr({
				'src': src
			}).addClass('visibleImageCalculated');
		}
		else if ($image.hasClass('visibleImageInitiated')) {
			$image.removeClass('visibleImageCalculated');
		}
		var thisWidth = $(this).width();
		var thisRealWidth = parseInt($(this).attr('data-width'));
		var thisRealHeight = parseInt($(this).attr('data-height'));
		var thisHeight = thisRealHeight * thisWidth / thisRealWidth;
		$(this).css({
			'width': thisWidth + 'px',
			'height': thisHeight + 'px'
		});
	});
}
visibleBackgroundsInit();

$(document).ready(function() {
	visibleBackgrounds();
});

$(window).resize(function() {
	visibleBackgrounds();
});

$(window).scroll(function() {
	visibleBackgrounds();
});

function visibleBackgroundsInit() {
	$('div').each(function() {
		var bgImage = $(this).css('background-image');
		if (!$(this).hasClass('responsiveSkip') && !$(this).hasClass('responsiveImage') && !$(this).hasClass('responsiveDummyImage') && bgImage != '' && bgImage != 'none') {
			$div = $(this);
			if ($div.isInViewport()) {
				$div.addClass('visibleBackground').addClass('visibleBackgroundInitiated').attr({
					'data-visiblebackground': bgImage
				});
			}
			else if (!$div.isInViewport()) {
				$(this).attr({
					'data-visiblebackground': bgImage
				}).css({
					'background-image': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='
				}).addClass('visibleBackgroundInitiated').addClass('visibleBackground');
			}
		}
	});
}

function visibleBackgrounds() {
	$('div.visibleBackgroundInitiated').each(function() {
		$div = $(this);
		if ($div.isInViewport()) {
			var bgImage = $div.attr('data-visiblebackground');
			$(this).css({
				'background-image': bgImage
			}).addClass('visibleBackgroundCalculated');
		}
		else if ($div.hasClass('visibleBackgroundInitiated')) {
			$div.removeClass('visibleBackgroundCalculated');
		}
	});
}
/*
This snippet will enable hover effects for touchscreens
https://stackoverflow.com/questions/22559756/changing-hover-to-touch-click-for-mobile-devices
*/
document.addEventListener("touchstart", function() {}, true);



/* ------------------------------------ START COOKIE-OVERLAY START ------------------------------------ */
/* Doku der entsprechenden Extension: https://docs.typo3.org/p/mindshape/mindshape-cookie-consent/1.1/en-us/Developer/Index.html */
window.analyticsLoaded = false;
window.addEventListener('cookieConsent', function (event) {
	if ((event.detail.hasOption('facebook'))) {
		if (false === window.analyticsLoaded) {

			// load facebookPixel
			setTimeout(function(){
				!function(f,b,e,v,n,t,s)
				{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
				n.callMethod.apply(n,arguments):n.queue.push(arguments)};
				if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
				n.queue=[];t=b.createElement(e);t.async=!0;
				t.src=v;s=b.getElementsByTagName(e)[0];
				s.parentNode.insertBefore(t,s)}(window, document,'script',
				'https://connect.facebook.net/en_US/fbevents.js');
				fbq('init', '1051533388986654');
				fbq('track', 'PageView');
			}, 3000);

			window.analyticsLoaded = true;
			console.log("Cookie für FacebookPixel laden = JA");
		}
	} else {
		// do not load analytics
		console.log("Cookie für FacebookPixel laden = NEIN");

		var separate = window.location.hostname.split('.');
		separate.shift();
		var currentdomain = separate.join('.');
		document.cookie = "_fbp=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain="+currentdomain;
	}
});
/* -------------------------------------- END COOKIE-OVERLAY END -------------------------------------- */

$(document).ready(function() {
	mapBox();
});
$(window).on('load', function() {
	// activate for custom select
	// select();
	// set date separator for calendar
	calendar('/');

	// JS for powermail
	if($('.tx-powermail').length) {
		requestErrorMessage();
	}

});

/* -------- Mapbox -------- */
var sMapboxTitleClasses = 'map-title t4 tac';
var sMapboxAddressClasses = 'map-text font-small tac';
var sMapboxLinkClasses = 'map-button font-small tac';

/* ---------------------------------- START Calendar START ---------------------------------- */

let arrivalDatePicker
let departureDatePicker
let createRequestDate = {}
let dateChange = {}
let maxArrivalDate = false

//? minimum bookable Days
let minDays = 1

function changeDays(date, days) {
	var result = new Date(date);
	result.setDate(result.getDate() + days);
	return result;
}

let today = new Date();

/* https://github.com/qodesmith/datepicker */
function calendar(dateseparator) {

	var calendar = $('.calendar');
	var powermailArrival = $('#powermail_field_arrival');
	var powermailDeparture = $('#powermail_field_departure');
	var powermailDate = $('#powermail_field_date');

	calendar.attr('readonly','readonly');
	powermailArrival.attr('readonly','readonly');
	powermailDeparture.attr('readonly','readonly');
	powermailDate.attr('readonly','readonly');

	var lang = $('html').attr('lang');
	switch (lang) {
		case 'de':
			var months = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']
			var days = ['So','Mo','Di','Mi','Do','Fr','Sa']
		break;
		case 'it':
			var months = ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre']
			var days = ['Do','Lu','Ma','Me','Gi','Ve','Sa']
		break;
		case 'en':
			var months = ['January','February','March','April','May','June','July','August','September','October','November','December']
			var days = ['Su','Mo','Tu','We','Th','Fr','Sa']
		break;
	}

	if ($('#powermail_field_arrival').length > 0) {

		createRequestDate = (maxDateVal, minDateVal) => {

			arrivalDatePicker = datepicker('#powermail_field_arrival', {
				formatter: (input, date) => {
					var MyDate = date
					var MyDateString;
					MyDateString = ('0' + MyDate.getDate()).slice(-2) + '.'
					+ ('0' + (MyDate.getMonth()+1)).slice(-2) + '.'
					+ MyDate.getFullYear();
					input.value = MyDateString
				},
				onSelect: () => {
					departureDatePicker.setMin(changeDays(new Date(arrivalDatePicker.dateSelected), minDays))
					departureDatePicker.navigate(changeDays(new Date(arrivalDatePicker.dateSelected), minDays))

					dateChange()
				},
				minDate: minDateVal ? minDateVal : today,
				maxDate: maxDateVal ? changeDays(new Date(maxDateVal), -minDays) : maxArrivalDate,
				startDay: 1,
				disableYearOverlay: true,
				customMonths: months,
				customDays: days,
			})

			departureDatePicker = datepicker('#powermail_field_departure', {
				formatter: (input, date) => {
					var MyDate = date
					var MyDateString;
					MyDateString = ('0' + MyDate.getDate()).slice(-2) + '.'
					+ ('0' + (MyDate.getMonth()+1)).slice(-2) + '.'
					+ MyDate.getFullYear();
					input.value = MyDateString
				},
				onSelect: () => {
					arrivalDatePicker.setMax(changeDays(new Date(departureDatePicker.dateSelected), -minDays))
					dateChange()
					maxArrivalDate = changeDays(new Date(departureDatePicker.dateSelected), -minDays)
				},
				minDate: changeDays(arrivalDatePicker.minDate, minDays),
				maxDate: maxDateVal ? maxDateVal : false,
				startDay: 1,
				disableYearOverlay: true,
				customMonths: months,
				customDays: days
			})
		}

		createRequestDate()
	}

	if ($('#powermail_field_date').length > 0) {
		const date = datepicker('#powermail_field_date', {
			formatter: (input, date) => {
				var MyDate = date;
				var MyDateString;
				MyDateString = ('0' + MyDate.getDate()).slice(-2) + '.'
				+ ('0' + (MyDate.getMonth()+1)).slice(-2) + '.'
				+ MyDate.getFullYear();
				input.value = MyDateString
			},
			minDate: today,
			startDay: 1,
			id: 1,
			disableYearOverlay: true,
			customMonths: months,
			customDays: days,
		})
	}
}

/* ---------------------------------- END Calendar END ---------------------------------- */

/* ------------------------------------------------ START load START ------------------------------------------------ */

$(window).on('load', function() {

	/* -------- BEGINN Einbindung v. Title + Alt bei Bildern + Title-Tag bei Links BEGINN -------- */

	var domain = window.location.hostname;
	var title = $('title').text();
	var alt = $('title').text();
	$('img').each(function() {
		var thistitle = $(this).attr('title');
		var thisalt = $(this).attr('alt');
		var thissrc = $(this).attr('src');
		if(thissrc.indexOf("seed.gif") < 0) {
			if ((thistitle != "" || typeof thistitle != "undefined") && (thisalt == "" || typeof thisalt == "undefined")) {
				$(this).attr('alt', thistitle);
			}
			if ((thisalt != "" || typeof thisalt != "undefined") && (thistitle == "" || typeof thistitle == "undefined")) {
				$(this).attr('title', thisalt);
			}
			var thistitle = $(this).attr('title');
			var thisalt = $(this).attr('alt');
			if (thistitle == "" || typeof thistitle == "undefined") {
				$(this).attr('title', title);
			}
			if (thisalt == "" || typeof thisalt == "undefined") {
				$(this).attr('alt', alt);
			}
		}
	})
	$('a').each(function() {
		var thishref = $(this).attr('href');
		var thistitle = $(this).attr('title');
		var thisid = $(this).attr('id');
		var thisclass = $(this).attr('class');
		var thistarget = $(this).attr('target');
		var thistext = $(this).text();
		var thisliwrap = $("li").hasClass('dl-back');
		if (thishref == "" || typeof thishref == "undefined") {
			if (thistitle == "" || typeof thistitle == "undefined") {
				if (thisclass == "" || typeof thisclass == "undefined") {
					if (thistarget == "" || typeof thistarget == "undefined") {
						if (thistext == "") {
							$(this).remove();
						}
					}
				}
			}
		}
		else {
		}
		if (thishref != "#" && thishref != " " && thishref != "" && typeof thishref != "undefined" && thishref.indexOf("index.php") < 0 && thishref.indexOf("javascript") < 0 && (thishref.indexOf("/") >= 0 || thishref.indexOf("mailto") >= 0)) {
			if (thishref.indexOf("http") >= 0) {
				var thisdomain = extractDomain(thishref);
				if (thisdomain == domain) {
					thishref = thishref.replace("http://", "");
					thishref = thishref.replace("https://", "");
					thishref = thishref.replace(thisdomain, "");
					var thishrefparts = thishref.split('/');
					var letztes = thishrefparts.length;
					var vorletztes = thishrefparts.length - 2;
					if (thishrefparts[letztes] != "" && typeof thishrefparts[letztes] != "undefined") {
						var newtitle = beautyfulltitle(thishrefparts[letztes]);
						if (thistitle == "" || typeof thistitle == "undefined") {
							$(this).attr('title', newtitle);
						}
					}
					else {
						var newtitle = beautyfulltitle(thishrefparts[vorletztes]);
						if (thistitle == "" || typeof thistitle == "undefined") {
							$(this).attr('title', newtitle);
						}
					}
				}
				else if (thistitle == "" || typeof thistitle == "undefined") {
					var linkdomain = extractDomain(thishref);
					$(this).attr('title', linkdomain);
				}
			}
			else if (thishref.indexOf("mailto") >= 0) {
				if (thistitle == "" || typeof thistitle == "undefined") {
					var newtitle = thishref.replace("mailto:", "");
					$(this).attr('title', newtitle);
				}
			}
			else if (thishref.indexOf(".jpg") >= 0) {
				var thishrefparts = thishref.split('/');
				var letztes = thishrefparts.length-1;
				var vorletztes = thishrefparts.length - 2;
				if (thishrefparts[letztes] != "" && typeof thishrefparts[letztes] != "undefined") {
					var newtitle = hrefimagetitle(thishrefparts[letztes]);
					if (thistitle == "" || typeof thistitle == "undefined") {
						$(this).attr('title', newtitle);
					}
				}
				else {
					var newtitle = hrefimagetitle(thishrefparts[vorletztes]);
					if (thistitle == "" || typeof thistitle == "undefined") {
						$(this).attr('title', newtitle);
					}
				}
			}
			else {
				var thishrefparts = thishref.split('/');
				var letztes = thishrefparts.length;
				var vorletztes = thishrefparts.length - 2;
				if (thishrefparts[letztes] != "" && typeof thishrefparts[letztes] != "undefined") {
					var newtitle = beautyfulltitle(thishrefparts[letztes]);
					if (thistitle == "" || typeof thistitle == "undefined") {
						$(this).attr('title', newtitle);
					}
				}
				else {
					var newtitle = beautyfulltitle(thishrefparts[vorletztes]);
					if (thistitle == "" || typeof thistitle == "undefined") {
						$(this).attr('title', newtitle);
					}
				}
			}
		}
		else {
			if (thistitle == "" || typeof thistitle == "undefined") {
				if(thisliwrap == false) {
					$(this).attr('title', title);
				}
			}
		}
	})
	/* -------- END Einbindung v. Title + Alt bei Bildern + Title-Tag bei Links END -------- */

});

/* ------------------------------------------------ END load END ------------------------------------------------ */

/* ---------------------------------- START Function zur Einbindung v. Title und Alt bei Bildern sowie Title-Tag bei Links START ---------------------------------- */

function extractDomain(url) {
	var domain;
	if (url.indexOf("://") > -1) {
		domain = url.split('/')[2];
	} else {
		domain = url.split('/')[0];
	}
	domain = domain.split(':')[0];
	return domain;
}

function beautyfulltitle(titletobeautify) {
	if (typeof titletobeautify !== 'undefined') {
		var beautytitle = titletobeautify.replace(".html", "");
		beautytitle = beautytitle.replace(".htm", "");
		beautytitle = beautytitle.replace(".php", "");
		beautytitle = beautytitle.replace("index", "");
		beautytitle = beautytitle.split('-');
		beautytitle = beautytitle.join(' ');
		beautytitle = beautytitle.split('_');
		beautytitle = beautytitle.join(' ');
		beautytitle = beautytitle.toLowerCase().replace(/\b[a-z]/g, function(letter) {
			return letter.toUpperCase();
		});
		return beautytitle;
	}
}

// Copy Image name to title of a-tag
function hrefimagetitle(titletohref) {
	if (typeof titletohref !== 'undefined') {
		var hreftitle = titletohref.replace(".jpg", "");
		var start = hreftitle.indexOf('_')+1;
		var end = hreftitle.indexOf('_',parseInt(start+1));
		var erg = hreftitle.substring(start,end);
		if(erg !== '') {
			hreftitle = erg;
		}
		hreftitle = hreftitle.split('-');
		hreftitle = hreftitle.join(' ');
		hreftitle = hreftitle.split('_');
		hreftitle = hreftitle.join(' ');
		hreftitle = hreftitle.toLowerCase().replace(/\b[a-z]/g, function(letter) {
			return letter.toUpperCase();
		});
		return hreftitle;
	}
}
/* ---------------------------------- END Function zur Einbindung v. Title und Alt bei Bildern sowie Title-Tag bei Links END ---------------------------------- */

/* -------- updateChildrenFields -------- */

function updateChildrenFields(kcount) {
	lSelectElements = 7;
	const childrenField = '.powermail_fieldwrap_childrenage';
	if (kcount > 0) {
		for (var i = (kcount+1); i < lSelectElements; i++) {
			$(childrenField + i).hide().find('.powermail-errors-list.filled, .rf-error').remove();
			$(childrenField + i).find('select').css("border-color", "");
		}
		for (var i = 0; i < lSelectElements; i++) {
			$(childrenField + i).find('select').removeAttr('required');
			$(childrenField + i).find('select').removeClass('powermail_field_error');
			$(childrenField + i).find('select').val('');
			$(childrenField + i).find('select option:first-child').val("");
			if(kcount > 1) {
				$(childrenField + i).css("width", 'calc(100% / ' + kcount + ' - 8px)');
			} else {
				$(childrenField + i).css("width", 'calc(100% / ' + kcount + ')');
			}
		}
		while (kcount > 0) {
			$(childrenField + kcount).show();
			$(childrenField + kcount).find('select').attr('required', "required");
			$(childrenField + i).find('select option:first-child').val("");
			kcount--;
		}
	} else {
		for (var i = 0; i < lSelectElements; i++) {
			$(childrenField + i).hide();
			$(childrenField + i).find('select').removeAttr('required');
			$(childrenField + i).find('select').removeClass('powermail_field_error');
			$(childrenField + i).find('select').val('');
			$(childrenField + i).find('select option:first-child').val("");
		}
	}
}

/* -------- updateChildrenFields -------- */

//! Request error messages

function requestErrorMessage() {
	let errorClass = '.rf-error';
	let color = 'rgba(32, 15, 14, .4)';
	let requestContainer = window;
	if($('.tx-powermail').parents('header').length) {
		requestContainer = $('.request-wrapper');
		color = 'rgba(32, 15, 14, .4)';
	}
	// set select placeholder color
	$('select').each(function() {
		if($(this).children('option').eq(0).is(':selected')) $(this).css('color', color);
	});
	$('select').change(function() {
		if($(this).children('option').eq(0).is(':selected')) $(this).css('color', color);
		else $(this).removeAttr('style');
	});
	// Check request form required inputs
	$('.tx-powermail').submit(function(e) {
		$('.tx-powermail input:required, .tx-powermail select:required').each(function() {
			// functions
			const setErrorMsg = (errorType) => {
				if(!errorType) errorType = 'required';
				if(!$(this).data('powermail-'+errorType+'-message')) $(this).data('powermail-required-message',
					$('#powermail_field_arrival').data('powermail-required-message'));
				$(this).css('border-color','#D70000');
				$(this).parents('.powermail_field').append(
					'<div class="rf-error font-small" style="position:absolute; top:100%; min-width:250px; color:#D70000;">'
					+$(this).data('powermail-'+errorType+'-message')+'</div>'
				);
			}
			const removeErrorMsg = () => {
				$(this).parents('.powermail_field').children(errorClass).remove();
				$(this).removeAttr('style');
			}
			const checkMail = (data) => {
				if(data) {
					removeErrorMsg() // cleanup
					let filter = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
					if(filter.test(data)) removeErrorMsg();
					else setErrorMsg('error');
				}
			}
			// check fields
			if($(this).val() === '' || $(this).attr('type') === 'email'
				|| $(this).attr('type') === 'checkbox' && $(this).is(':checked') === false
				|| $(this).children('option').eq(0).is(':selected')) {
				// error msg is already set?
				if($(this).siblings(errorClass).is(':visible') === false) {
					setErrorMsg();
					if($(this).attr('type') === 'email') checkMail($(this).val());
					// add error msg event handler
					// event handler for select fields
					if($(this).is('select')) {
						$(this).change(function() {
							if(!$(this).children('option').eq(0).is(':selected')) removeErrorMsg();
							else setErrorMsg();
						});
					}
					// event handler for checkbox
					else if($(this).attr('type') === 'checkbox') {
						$(this).change(function() {
							if($(this).is(':checked')) removeErrorMsg();
							else setErrorMsg();
						});
					}
					// event handler for input and datepicker fields
					else {
						$(this).focusout(function(el) {
							setTimeout(function() {
								removeErrorMsg(); // cleanup
								if(el.target.value !== '') {
									removeErrorMsg();
									if(el.target.type === 'email') checkMail(el.target.value);
								}
								else setErrorMsg();
							},150);
						});
					}
				}
			}
		});
		// error check
		if($(errorClass).length) {
			e.preventDefault();
			gsap.to(requestContainer, {scrollTo: {y: $(errorClass), offsetY: 150}});
		}
	});
}

//! Recaptcha request submit

function onSubmit(token) {
	$('.powermail_form').submit();
}

/* -------- GetURLParameter -------- */
function GetURLParameter(sParam) {
	var sPageURL = window.location.search.substring(1);
	var sURLVariables = sPageURL.split('&');
	for (var i = 0; i < sURLVariables.length; i++) {
		var sParameterName = sURLVariables[i].split('=');
		if (sParameterName[0] == sParam) {
			return sParameterName[1];
		}
	}
}

/* 	----------- Rooms ----------- */
if(GetURLParameter('room') || GetURLParameter('room') != '') {
	var room = GetURLParameter('room');
	$('#' + room).attr('selected', 'selected');
}

/* 	----------- Offers ----------- */
if(GetURLParameter('offer') || GetURLParameter('offer') != '') {
	var offer = GetURLParameter('offer');
	$('#' + offer).attr('selected', 'selected');
}


/* ----------------------------- BEGINN MAPBOX BEGINN ----------------------------- */
function mapBox() {
	existMap = $('#map').length;
	if(existMap != 0) {
		var lang = $('html').attr('lang');
		switch (lang) {
			case 'de':
				googlelinkLang = '?hl=' + lang;
				maplanguage = lang;
				break;
			case 'it':
				googlelinkLang = '?hl=' + lang;
				maplanguage = 'en';
				break;
			default:
				googlelinkLang = '?hl=' + lang;
				maplanguage = lang;
				break;
		}

		// SET TOKEN
		mapboxgl.accessToken = locations[0];

		// SET COORDINATES
		var map = new mapboxgl.Map({
			container: 'map',
			style: locations[1],
			center: [locations[6][0][2], locations[6][0][3]],
			zoom: locations[2],
			scrollZoom: locations[3],
			attributionControl: true
		});

		var geojson = {};
		geojson['type'] = 'FeatureCollection';
		geojson['features'] = [];
		for(var i in locations[6]) {
			var googleMap = '';
			if(locations[6][i][0] != '') {
				$('#map').attr('data-googlemap', locations[6][i][0] + googlelinkLang);
				var googleMap = document.getElementById("map").getAttribute('data-googlemap');
			}
			var markerImage = '';
			if(locations[6][i][4] != '') {
				var markerImage = '<img src="'+locations[6][i][4]+'">';
			}
			var markerIcon = '';
			if(locations[6][i][5] != '') {
				var markerIcon = locations[6][i][5];
			} else {
				var markerIcon = '/fileadmin/template/images/marker.svg';
			}
			var markerLinkText = '';
			if(locations[6][i][8] != '') {
				var markerLinkText = locations[6][i][8];
			}

			var sAddress = locations[6][i][6] + '<br />' + locations[6][i][7];
			var newFeature = {
				type: 'Feature',
				geometry: {
					type: 'Point',
					coordinates: [locations[6][i][2], locations[6][i][3]]
				},
				properties: {
					title: locations[6][i][1],
					address: sAddress,
					image: markerImage,
					googlemap: googleMap,
					iconSize: markerIcon,
					linktext: markerLinkText
				}
			}
			geojson['features'].push(newFeature);
		}

		geojson.features.forEach(function(marker) {
			var el = document.createElement('div');
			el.className = 'marker';
			el.style.backgroundImage = 'url(' + marker.properties.iconSize + ')';

			if(marker.properties.googlemap != '') {
				new mapboxgl.Marker(el)
					.setLngLat(marker.geometry.coordinates)
					.setPopup(new mapboxgl.Popup({ offset: 30, closeOnClick: false })
					.setHTML('<div class="' + sMapboxTitleClasses + '">' + marker.properties.title + '</div><p class="' + sMapboxAddressClasses + '">' + marker.properties.address + '</p>' + marker.properties.image + '<a class="' + sMapboxLinkClasses + '" href="' + marker.properties.googlemap + '" title="' + marker.properties.linktext + '" target="_blank">' + marker.properties.linktext + '</a>'))
					.addTo(map)
					.togglePopup();
			} else {
				new mapboxgl.Marker(el)
					.setLngLat(marker.geometry.coordinates)
					.setPopup(new mapboxgl.Popup({ offset: 30, closeOnClick: false })
					.setHTML('<div class="' + sMapboxTitleClasses + '">' + marker.properties.title + '</div><p class="' + sMapboxAddressClasses + '">' + marker.properties.address + '</p>' + marker.properties.image))
					.addTo(map)
					.togglePopup();
			}
		});

		// map.addControl(new mapboxgl.NavigationControl());

		// map.addControl(new MapboxLanguage({
		// 	defaultLanguage: 'de'
		// }));

		if(locations[7] == 'true') {
			var nav = new mapboxgl.NavigationControl();
			var fullscreen = new mapboxgl.FullscreenControl()
			map.addControl(nav, locations[5]);
		}
		setTimeout( function() {
			map.setLayoutProperty('country-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('state-label', 'text-field', ['get', 'name_'+ maplanguage]);
			// map.setLayoutProperty('settlement-major-label', 'text-field', ['get', 'name_'+ maplanguage]);
			// map.setLayoutProperty('settlement-minor-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('settlement-subdivision-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('airport-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('poi-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('water-point-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('water-line-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('natural-point-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('natural-line-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('waterway-label', 'text-field', ['get', 'name_'+ maplanguage]);
			map.setLayoutProperty('road-label', 'text-field', ['get', 'name_'+ maplanguage]);
		}, 500);

		var layerList = document.getElementById('map-menu');
		var inputs = layerList.getElementsByTagName('input');
		var ttStylePath = locations[1];
		var mapboxStylePath = 'mapbox://styles/mapbox/';
		function switchLayer(layer) {
			var layerId = layer.target.id;
			var styleOutput = mapboxStylePath + layerId;
			if(layerId == 'tt-style') {
				styleOutput = ttStylePath;
			}
			map.setStyle(styleOutput);
		}
		for (var i = 0; i < inputs.length; i++) {
			inputs[i].onclick = switchLayer;
		}
		$("#map-menu #label-01").click(function() {
			$("#map-menu #label-01").addClass('hidden');
			$("#map-menu #label-01").removeClass('active');
			$("#map-menu #label-02").removeClass('hidden');
			$("#map-menu #label-02").addClass('active');
		});
		$("#map-menu #label-02").click(function() {
			$("#map-menu #label-01").removeClass('hidden');
			$("#map-menu #label-01").addClass('active');
			$("#map-menu #label-02").addClass('hidden');
			$("#map-menu #label-02").removeClass('active');
		});

		$("#map-menu").prependTo(".mapboxgl-ctrl.mapboxgl-ctrl-group");
	}
}
/* ----------------------------- END MAPBOX END ----------------------------- */

$(function() {
	/* -------- a-tag noreferrer -------- */
	$('a[target="_blank"]').each(function() {
		$(this).attr("rel","noreferrer");
	});

	/* -------- powermail -------- */
	if ($('.tx-powermail').length > 0) {
		/* -------- deaktivate autocomplete value in browser -------- */
		$(document).on('focus', ':input', function() {
			$(this).attr('autocomplete', 'nope');
		});

		/* -------- updateChildrenFields -------- */
		var oChildInput = $('#powermail_field_children');
		oChildInput.change(function() {
			updateChildrenFields(parseInt($(this).val()));
		});
		if (oChildInput.val() != NaN) {
			updateChildrenFields(parseInt(oChildInput.val()));
		}
		// Fix for page reload
		if($('[id*="powermail_field_childrenage"]:visible').length) {
			$('[id*="powermail_field_childrenage"]:visible').children().each(function() {
				if ($(this).attr('selected')) $(this).parents('select').val($(this).text());
			});
		}

	}
});

// Header slider
const headSlider = $('.headerimageModule');

if (headSlider.length > 0) {
	var headerChange = gsap.timeline({
		reversed:true,
		scrollTrigger: {
			trigger: 'body',
			start: '80 top',
			end: '80 top',
			toggleActions: 'play play reverse reverse',
			markers: false,
			id: 'header'
		}
	})
}

//! Slider 
var slideAnimation = gsap.timeline ({
	repeat: -1,
	delay: 5
});

function slideStart() {
	const slider = $('.slider')

	slider.each(function() {

		const slideWrap =  $('.slideWrap', this)

		let slideAnimation = gsap.timeline ({
			repeat: -1,
			delay: 5
		});

		//? clone first item -> for slider repeat
		slideWrap.append( $('.slide', this).first().clone());

		let slideEl = $('.slide', this);
		let totalSlides = slideEl.length;

		if (totalSlides > 2) {
			gsap.fromTo(slideEl[0], 7.5, {scale: 1.05}, {scale: 1, ease:Linear.easeNone})

			//? get next slide and animate
			for (let i = 0; i < totalSlides; i++) {
				if( i < totalSlides-1 ) {
					nextSlide = i < totalSlides ? $(slideEl[i + 1]) : $(slideEl[0]);

					const img = nextSlide.find('img')

					slideAnimation
						.fromTo(nextSlide, 7.1, {xPercent: 100}, {xPercent: 0, ease: "power4.inOut"}, "-=0")
						.fromTo(img, 7, {xPercent: -50}, {xPercent: 0, ease: "power4.inOut"}, "<")
					;
				}
			}
		}

	})
}

if (headSlider.length > 0) {
	slideStart();
}

//! Check Accepted Newsletter-DSGVO

var nlFormName = '.newsletterform';
var errorClass = '.nl-dsgvo-error';
$(nlFormName).submit(function() {
	if ($('.checkbox-wrapper input:checkbox').filter(':checked').length < 1) {
		$(errorClass).css("display", "block");
		return false;
	} else {
		$(errorClass).css("display", "none");
	}
});

//! Calendar adapts to offer 

function offerChange() {
	if ($('.powermail_fieldwrap_offers').length > 0) {

		let dataFrom
		let dataTo
		let isOffer = false
		const offerSelect = $('.powermail_fieldwrap_offers select')

		$('.powermail_fieldwrap_offers option').each(function() {
			if ( $(this).val() == $(offerSelect).val() && $(this).index() != 0) {
				dataFrom = $(this).attr('data-from')
				dataTo = $(this).attr('data-to')
				isOffer = true
			} else if ($(this).val() == '') {
				isOffer = false
			}
		})

		if (isOffer) {
			let minDateVal = new Date(dataFrom)
			let maxDateVal = new Date(dataTo)

			console.log(minDateVal)

			arrivalDatePicker.remove()
			departureDatePicker.remove()
			createRequestDate(maxDateVal, minDateVal)
		} else {
			arrivalDatePicker.remove()
			departureDatePicker.remove()
			createRequestDate(false, today)
		}
	}
}

let arrivalSelected = false
let departureSelected = false

function newDateWithoutTime(date) {
	let newDate = new Date(date)
	newDate = newDate.toDateString()
	newDate = Date.parse(newDate)

 	return newDate
}

function getDaysBetweenDates(start, end) {
	const MS_PER_DAY = 24 * 60 * 60 * 1000
	const timeDiff = Math.abs(start  - end)
	const daysDiff = Math.floor(timeDiff / MS_PER_DAY)
	return daysDiff
}

dateChange = (() => {
	//? Datepicker selected arrival and departure values
	arrivalSelected = newDateWithoutTime(arrivalDatePicker.dateSelected)
	departureSelected = newDateWithoutTime(departureDatePicker.dateSelected)

	//? Date difference
	const dateDiff = getDaysBetweenDates(new Date(arrivalSelected), new Date(departureSelected))

	$('.powermail_fieldwrap_offers option').each(function(e) {
		if ( e != 0 ) {
			//? Start and end periods dates from offer
			let dataFrom = newDateWithoutTime($(this).attr('data-from'))
			let dataTo = newDateWithoutTime($(this).attr('data-to'))
			let minBookableDays = $(this).attr('min-days')

			//? Check if Datepicker values fit the offer periods
			if ( isNaN(arrivalSelected) ) {
				if ( departureSelected <= dataTo && departureSelected >= newDateWithoutTime(changeDays(dataFrom, minDays)) ) {
					$(this).removeAttr('disabled')
				} else {
					$(this).attr('disabled', true)
				}
			} else if ( isNaN(departureSelected) ) {
				if ( arrivalSelected >= dataFrom && arrivalSelected <= newDateWithoutTime(changeDays(dataTo, -minDays)) ) {
					$(this).removeAttr('disabled')
				} else {
					$(this).attr('disabled', true)
				}
			} else {
				if ( ( departureSelected <= dataTo && departureSelected >= newDateWithoutTime(changeDays(dataFrom, minDays)) ) && ( arrivalSelected >= dataFrom && arrivalSelected <= newDateWithoutTime(changeDays(dataTo, -minDays)) ) && (dateDiff >= minBookableDays) ) {
					$(this).removeAttr('disabled')
				} else {
					$(this).attr('disabled', true)
				}
			}
		}
	})
})

$('.powermail_fieldwrap_offers').on('change', function () {
	offerChange()
})

$(window).on('load', function() {
	offerChange()
})
//! generic
let ww = window.innerWidth
let hh = window.innerHeight

//! ready
$(document).ready(function() {
	/* -------- matchHeight -------- */
	matchHeight(oSlider);
	matchHeight(oImagesModule);
});

//! resize
$(window).resize(function() {
	/* -------- matchHeight -------- */
	matchHeight(oSlider);
	matchHeight(oImagesModule);
});

//! Header Layout
if ($('main').find('div:first').is('.headerimageModule')) {
	$('body').addClass('layout-0');
	$('body').removeClass('layout-1');
	$('main').find('div:first').removeClass('fadeUp');
} else {
	$('body').addClass('layout-1');
	$('body').removeClass('layout-0');
}

//! Spacing Footer
if ($('main').find('div:last-of-type').is('.imageTextModule.defaultText') || $('main').find('div:last-of-type').is('.list2Module')) {
	$('main').removeClass('m-b-160');
} else {
	$('main').addClass('m-b-160');
}

//! Side Labels
if ($('.labels').length > 0 && ww > 600) {
	$('.labels .item').each(function() {
		const item = this
		const itemHover = gsap.timeline({paused: true})

		itemHover
			.to(item, {transform: 'translateX(0)', ease: 'power3.out'}, 0)
		;
		$(this).on('mouseenter', function() {
			itemHover.play()
		})
		$(this).on('mouseleave', function() {
			itemHover.reverse()
		})
	})
}

//! Header Scroll
$(window).scroll(function() {
	var scroll = $(window).scrollTop();
	if (scroll >= 30) {
		$('body').addClass('scrolled');
	} else {
		$('body').removeClass('scrolled');
	}
});

//! Accordion
const accordion = $('.accordionModule')

if(accordion.length > 0) {

	const accordionHolder = $('.holder', accordion)

	accordionHolder.each(function() {
		const text = $('.text', this)
		const plus = $('svg', this)
		const plusLine = $('.second', this)
		const textReveal = gsap.timeline({reversed: true});

		textReveal
			.to(text, 0.333, {height: 'auto', opacity: '1', padding: '0 0 16px', ease: 'power3.inOut'}, 0)
			.to(plus, 0.333, {rotate: 90, transformOrigin: 'center', ease: 'power3.inOut'}, 0)
			.to(plusLine, 0.2, {opacity: 0, ease: 'none'}, 0)
		;

		$(this).on('click', function() {
			textReveal.reversed() ? textReveal.play() : textReveal.reverse();
		})
	})
}

//! Gallery
if($('.galleryModule').length) {
	const images = $('.grid-container').children()
	$('.galleryModule .category').click(function(e) {
		e.preventDefault()
		$('.grid-container').html(images)
		let de = $(this).data('de').toLowerCase()
		let en = $(this).data('en').toLowerCase()
		images.each(function() {
			responsiveContainer($(this))
			let cat = $(this).data('cat').toLowerCase()
			if(de === 'all') return true
			else {
				if(cat === de || cat === en) return true
				else $(this).remove()
			}
		});
		gsap.from($('.galleryModule .image'), 1, {top: 160, stagger: 0.07, ease:'power3.out'}, 0)
		gsap.from($('.galleryModule .image'), 0.667, {opacity: 0, stagger: 0.07, ease:'none'}, 0)
	})
}

//! Lightbox
if ($(".magnific-item").length > 0){
	$('.magnific').magnificPopup({
		delegate: '.magnific-item a',
		type: 'image',
		closeOnBgClick: true,
		fixedContentPos: false,
		gallery: {
			enabled: true
		},
		image: {
			titleSrc: '',
		}
	})
}

//! mainmenu
const hamburger = $('.bars')
const hamburgerLines = $('.bars *')
const hamburgerLine1 = $('.bars .bar0')
const hamburgerLine2 = $('.bars .bar1')
const hamburgerLine3 = $('.bars .bar2')

//* open & closing animation
const hamburgerOpen = gsap.timeline({paused: true, reversed: true})

hamburgerOpen
	.to(hamburgerLine1, 0.4, {y: '-50%',rotate: 45, ease: 'power4.in'}, 0)
	.to(hamburgerLine3, 0.4, {y: '-50%',rotate: -45, ease: 'power4.in'}, 0)
	.to(hamburgerLine2, 0.1, {opacity: 0}, 0)
;

//* mainmenu open & close
const menu = $('.menu-text')
const mainMenu = $('.mainMenu')

const naviOpen = gsap.timeline({paused: true, reversed: true, defaults: {overwrite: 'auto'}});

naviOpen
	.set(mainMenu, {zIndex: 1, height: '100vh', width: '100%'})
	.set('body', {overflow: 'hidden'})
	.set('header', {position: 'fixed'})
	.to(mainMenu, 0.3, {opacity: 1, ease: 'power3.out'})
;

let navChangeUiColorTl = gsap.timeline();

menu.on('click', function() {
	hamburgerOpen.reversed() ? hamburgerOpen.play() : hamburgerOpen.reverse();
	if (naviOpen.reversed()) {
		naviOpen.play()
		$('body').addClass('naviOpen')
	} else {
		naviOpen.reverse()
		setTimeout(function() {
			$('body').removeClass('naviOpen')
		}, 200)
	}
	setTimeout(function() {
		responsiveContainer('.mainMenu')
	}, 100)
})

//* expand points on mobile
const naviHolder = $('.navi .mainNav')

if (ww <= 500) {
	naviHolder.each(function() {
		const subnav = $('.subNav', this)
		if (subnav.length > 0) {
			const subnavReveal = gsap.timeline({paused: true, reversed: true});

			subnavReveal
				.to(subnav, 0.333, {height: 'auto', ease: 'power3.inOut'}, 0)
			;

			$(this).on('click', function() {
				subnavReveal.reversed() ? subnavReveal.play() : subnavReveal.reverse();
			})
		}
	})
}

//! Treatment Link

const treatments = $('.treatmentList')

if (treatments.length > 0) {
	const treatment = document.querySelectorAll('.treatment')

	treatment.forEach((e) => {
		e.addEventListener('click', () => {
			e.querySelector('a').click()
		})
	})
}

//! Treatment Request
// Set attribute readonly - treatment input
const treatment = $("#powermail_field_treatment")

if (treatment.length > 0) {
	treatment.attr('readonly','readonly');
	var textarea = GetURLParameter('treatment');
		textarea = decodeURIComponent(textarea);
	treatment.val(textarea);
}

//! WEATHER template to call open weather data
// Temperatre Forecast API Request
//API dokumentation: https://openweathermap.org/api/one-call-api
if($('.ttw').length > 0){
	var lat = "47.01252694742578";
	var lon = "10.293100096944086";
	//generate apiKey for each domain: https://home.openweathermap.org/api_keys
	var apiKey = "fa513394e122bc185258615e96dc5772"; // API key Fliana
	var lang = window.location.pathname.split('/')[1];
	var api ='https://api.openweathermap.org/data/2.5/onecall?lat=' + lat + '&lon=' + lon + '&exclude=minutely,hourly,alerts&appid=' + apiKey + '&units=metric&lang=' + lang;

	//API-call
	fetch(api)
	.then(function(resp) { return resp.json() }) // Convert data to json
	.then(function(data) {
		drawWeather( data );
	})
	.catch(function() {
		// catch any errors
		console.log("Openweathermap-API-call failed");
	});
};

function drawWeather(d) {
	//get the language of the current page by taking the first part of the URL
	var lang = window.location.pathname.split('/')[1];

	//current data
	var currenttemp = Math.round(parseFloat(d.current.temp));
	a = $(".ttw-temp");
	if(a.length > 0)
		a.html(currenttemp + '°C');

	//fetching the .svg file that it renders inline
	a = $(".ttw-icon");
	if(a.length > 0){
		fetch('/fileadmin/template/images/weather-icons/' + d.current.weather[0].icon + '.svg')
			.then(r => r.text())
			.then(svg => {
				a = $(".ttw-icon");
				a.html(svg);
			})
			.catch(console.error.bind(console)
		);
	}

	//data for every day
	for (let i = 1; i < d.daily.length; i++) {
		var date = d.daily[i].dt;
		date = new Date(date*1000);

		var day = date.toLocaleString(lang, {weekday: 'long'});

		var options = {year: 'numeric', month: '2-digit', day: '2-digit' };
		date = date.toLocaleString(lang, options);

		var sky = d.daily[i].weather[0].description;
		var tempmax = Math.round(parseFloat(d.daily[i].temp.max));
		var tempmin = Math.round(parseFloat(d.daily[i].temp.min));

		//writing into the elements with the suitable class
		// i - 1 because it starts with tomorrow
		a = $(".ttw-day" + [i - 1]);
		if(a.length > 0) a.html(day);

		a = $(".ttw-date" + [i - 1]);
		if(a.length > 0) a.html(date);

		a = $(".ttw-weather" + [i - 1]);
		if(a.length > 0) a.html(sky);

		a = $(".ttw-tempmax" + [i - 1]);
		if(a.length > 0) a.html(tempmax + '°C');

		a = $(".ttw-tempmin" + [i - 1]);
		if(a.length > 0) a.html(tempmin + '°C');

		//fetching the .svg file that it renders inline
		a = $(".ttw-icon" + [i - 1]);
		if(a.length > 0){
			fetch('/fileadmin/template/images/weather-icons/' + d.daily[i].weather[0].icon + '.svg')
				.then(r => r.text())
				.then(svg => {
					a = $(".ttw-icon" + [i - 1]);
					a.html(svg);
				})
				.catch(console.error.bind(console)
			);
		}
	}
}

//! Date formater
const dateFormater = (date) => {

	let dateToFormat = new Date(date)

	const yyyy = dateToFormat.getFullYear()
	let mm = dateToFormat.getMonth() + 1
	let dd = dateToFormat.getDate()

	if (dd < 10) dd = '0' + dd;
	if (mm < 10) mm = '0' + mm;

	return dd + '.' + mm + '.' + yyyy
}

//! CardsModule
if ($('.cardsModule').length > 0) {
	$('.cards .card').each(function() {
		const cardBackground = $('.content', this)
		const cardText = $('.content .text', this)
		const cardHover = gsap.timeline({paused: true})

		cardHover
			.to(cardBackground, {background: 'rgba(255, 255, 255, 0.68)', ease: 'power3.out'}, 0)
			.to(cardText, {display: 'flex', ease: 'power3.out'}, 0)
		;
		$(this).on('mouseenter', function() {
			cardHover.play()
		})
		$(this).on('mouseleave', function() {
			cardHover.reverse()
		})
	})
}


//! Slider
const oSlider = $('.sliderModule');

// var headerSliderAnimation = gsap.timeline ({
// 	repeat: -1
// });

// function headerSlider() {
// 	let slides = oSlider.find('.slider .slide');
// 	let content = oSlider.find('.slider .slide .content');
// 	let totalSlides = slides.length;

// 	if (totalSlides > 1) {

// 		let currentSlide = 1

// 		//* slide animation
// 		function slideAnimate(i) {
// 			currentSlide = i

// 			gsap.to(slides, 1, {opacity: 0, ease: 'none'})
// 			gsap.to(slides[i], 1, {opacity: 1, zIndex: 1, overwrite: 'auto', ease: 'none'})
// 		}

// 		//* autoplay
// 		for (let i = 0; i < totalSlides; i++) {
// 			headerSliderAnimation
// 			;
// 		}

// 		//* click navigation
// 		$('.sliderModule .prev').click(function() {
// 			currentSlide == 0 ? currentSlide = totalSlides - 1 : currentSlide--
// 			slideAnimate(currentSlide)
// 			headerSliderAnimation.progress(currentSlide / totalSlides)
// 		})

// 		$('.sliderModule .next').click(function() {
// 			currentSlide < totalSlides - 1 ? currentSlide++ : currentSlide = 0
// 			slideAnimate(currentSlide)
// 			headerSliderAnimation.progress(currentSlide / totalSlides)
// 		})
// 	}
// }

// if (oSlider.find('.slide').length > 1) {
// 	headerSlider();
// };

//! matchHeight
function matchHeight(oElement) {
	var lHeight = 0; // the height of the highest element (after the function runs)
	var lHighestElement = 0; // the highest element (after the function runs)
	oElement.find('.given-height').each(function () {
		if ($(this).outerHeight() > lHeight) {
			lHighestElement = this;
			lHeight = $(this).outerHeight();
		}
		if (oElement.find('.desired-height')) {
			oElement.find('.desired-height').css('height',lHeight)
		}
	});

}

const oImagesModule = $('.imagesModule');

//! Carousel Slider
if ($('.carousel').length > 0) {

	var slideDelay = 4.5;
	var slideDuration = 0.6;

	$('.carousel').each(function() {
		var slides = $('.slide', this);
		var prevButton = $('.prevButton', this);
		var nextButton = $('.nextButton', this);

		var isAutoplay = $(this)[0].hasAttribute('data-autoplay');

		var numSlides = slides.length;

		if (numSlides < 2) {
			$(this).addClass('disabled')
			return
		}

		//clone slides
		if(slides.parents('.imagesModule .carousel').length && slides.length < 5) {
			var slidesContainer = $(this);
			slides.clone().addClass('cloned').appendTo(slidesContainer);
			slides = $('.slide', this);
			numSlides = slides.length;
		}

		if(slides.parents('.sliderModule .carousel').length && slides.length < 3) {
			var slidesContainer = $(this);
			slides.clone().addClass('cloned').appendTo(slidesContainer);
			slides = $('.slide', this);
			numSlides = slides.length;
		}

		for (var i = 0; i < numSlides; i++) {
			gsap.set(slides[i], {
				xPercent: i * 100
			});
		}

		var timer = gsap.delayedCall(slideDelay, autoPlay);

		function animationInit() {
			var widthPercent = ($(this).width() / slides.width()) * 100

			if (widthPercent < 50) {
				var modVal = Math.floor(((100 / widthPercent) / 2) + 1)
			}
			else {
				var modVal = Math.ceil(((100 / widthPercent) / 2) + 1)
			}

			animation = gsap.to(slides, {
				duration: 1,
				ease: Linear.easeNone,
				xPercent: '+=' + (numSlides * 100),
				paused: true,
				repeat: -1,
				modifiers: {
					xPercent: gsap.utils.wrap(-modVal * 100, (numSlides - modVal) * 100)
				}
			});
		}

		var animation = gsap.to({}, {duration: 0.1});

		var proxy = document.createElement("div");
		gsap.set(proxy, { x: 0 });
		var slideAnimation = gsap.to({}, {duration: 0.1});
		var slideWidth = 0;
		var wrapWidth = 0;
		resize();

		var draggable = new Draggable(proxy, {
			trigger: this,
			type:'x',
			throwProps: true,
			onPress: updateDraggable,
			onDrag: updateProgress,
			onThrowUpdate: updateProgress,
			snap: {
				x: snapX
			}
		});

		function snapX() {
			gsap.utils.snap(slideWidth)
		}

		window.addEventListener('resize', resize);

		prevButton.click(function() {
			animateSlides(1);
		});

		nextButton.click(function() {
			animateSlides(-1);
		});

		function updateDraggable() {
			timer.restart(true);
			slideAnimation.kill();
			this.update();
		}

		function animateSlides(direction) {
			timer.restart(true);
			slideAnimation.kill();

			var x = snapX(gsap.getProperty(proxy, "x") + direction * slideWidth);

			slideAnimation = gsap.to(proxy, {
				duration: slideDuration,
				x: x,
				onUpdate: updateProgress
			});
		}

		function autoPlay() {
			if (isAutoplay) {
				if (draggable.isPressed || draggable.isDragging || draggable.isThrowing) {
					timer.restart(true);
				} else {
					animateSlides(-1);
				}
			}
		}

		function updateProgress() {
			animation.progress(gsap.utils.wrap(0, 1, gsap.getProperty(proxy, "x") / wrapWidth));
			slides.each(function() {
				const slidePos = gsap.getProperty(this, "xPercent");
				if (slidePos > -50 && slidePos < 50) {
					$(this).addClass('active');
				}
				else {
					$(this).removeClass('active');
				}
			});
		}

		function resize() {
			var norm = (gsap.getProperty(proxy, "x") / wrapWidth) || 0;

			slideWidth = slides[0].offsetWidth;
			wrapWidth = slideWidth * numSlides;

			gsap.set(proxy, {
				x: norm * wrapWidth
			});

			animation.progress(0);
			animationInit();

			animateSlides(0);
		}

		function snapX(x) {
			return Math.round(x / slideWidth) * slideWidth;
		}
	})
}

//! fade up
if ($('.fadeUp').length > 0) {
	$('.fadeUp').each(function() {

		const fadeUpTl = gsap.timeline({
			repeat: 0,
			delay: 0.333,
			scrollTrigger: {
				trigger: this,
				start: 'top 85%',
				markers: false,
				id: 'fadeUp',
			}
		});

		fadeUpTl
			.from(this, 1, {top: 160, stagger: 0.333, ease:'power3.out'}, 0)
			.from(this, 0.6, {opacity: 0, stagger: 0.333, ease:'none'}, 0)
		;
	})
}

//! Room Overview
window.onload = function(){
	if ($('.room-overview').length > 0) {
		var element = document.querySelector('.room-overview .roomTitle')
		var event = new MouseEvent('mouseover', {
			view: window,
			bubbles: true,
			cancelable: true
		});
		element.dispatchEvent(event);
	}
};

function showRoom(id) {
	$(".room-overview .image").hide();
	$(".room-overview .image.item-" + id).show();
	$(".room-overview .roomTitle").removeClass("active");
	$(".room-overview .roomTitle.item-" + id).addClass("active");
}

//! Check if the list is odd
const listItem = $('.listModule .item')
const listItemImage = $('.listModule .item .image')
if (listItem.length % 2 !== 0) {
	listItem[listItem.length - 1].style.width = "100%";
	listItemImage[listItem.length - 1].style.paddingBottom = "40.541%";
	listItem[listItem.length - 1].style.paddingRight = "48px";
}

//! Request Offers & Rooms 

$(document).ready(function() {
	if ($('.tx-powermail').length > 0) {
		let locale = window.location.href.includes('/de/') ? 'de' : 'en'
		let hotelData = {}

		fetch(`https://switch.seekda.com/switch/latest/json/ratesAverage.json?skd-property-code=AT_ISCHGL_FLIANA&token=42&skd-packages=true&skd-months=12${locale === 'de' ? '&skd-language-code=de' : ''}`)
		.then((res) => res.json())
		.then((res) => {
			hotelData = res
			requestData()
		})

		function requestData() {

			const selectOffers = document.getElementById('powermail_field_offers');
			const selectRooms = document.getElementById('powermail_field_rooms');
			const rooms = hotelData.result.rooms
			const offers = hotelData.result.packages

			for (let i = 0; i < rooms.length; i++) {
				const option = document.createElement('option')
				option.text = rooms[i].title
				option.setAttribute('value', rooms[i].title)
				selectRooms.add(option)
			}

			for (let i = 0; i < offers.length; i++) {
				const option = document.createElement('option')
				option.text = offers[i].title
				option.setAttribute('value', offers[i].code)
				option.setAttribute('data-from', offers[i].available_only[0].start + 'T00:00:00Z')
				option.setAttribute('data-to', offers[i].available_only[0].end + 'T00:00:00Z')
				for (let day in offers[i].min_los_per_week_day) {
					if (typeof offers[i].min_los_per_week_day[day] === 'number') {
						option.setAttribute('min-days', offers[i].min_los_per_week_day[day])
					}
				}
				selectOffers.add(option)
			}

			// Offer parameter
			let urlParams = new URLSearchParams(window.location.search);
			let offerVal = urlParams.get('offer');

			if (offerVal) {
				console.log(offerVal)

				let selectField = document.getElementById('powermail_field_offers');
				let option = selectField.querySelector('option[value="'+offerVal+'"]');
				
				if (option !== null) {
					option.selected = true;
				}
			}
		}
	}
})

//! Add/remove room powermail request 

if ($('.tx-powermail').length > 0) {
	var roomCount = 1;
	var container = $('.powermail_fieldset_5 .powermail-flex-container');
	var removeButton = $('.removeRoom');
	var addRoomButton = $('.addRoom');

	function addRoom() {
		let clone = $('.powermail_fieldwrap_rooms').last().clone();

		clone.addClass('powermail_fieldwrap_rooms' + roomCount).removeClass('powermail_fieldwrap_rooms' + (roomCount - 1));
		clone.find('.powermail_select').attr("id", 'powermail_field_rooms' + roomCount);
		clone.find('.powermail_select').attr("name", 'tx_powermail_pi1[field][rooms' + roomCount + ']');
		clone.find('label').attr("for", 'powermail_field_rooms' + roomCount);

		container.append(clone);
		roomCount++;

		updateRemoveButtonVisibility();
	}

	function removeRoom() {
		let elements = container.find('.powermail_fieldwrap_rooms');
		if (elements.length > 0) {
			elements.last().remove();
			roomCount--;
		}

		updateRemoveButtonVisibility();
	}

	function updateRemoveButtonVisibility() {
		var elements = container.find('.powermail_fieldwrap_rooms');

		if (elements.length > 1) {
		removeButton.show();
		} else {
		removeButton.hide();
		}
	}

	removeButton.hide();
	addRoomButton.click(addRoom);
	removeButton.click(removeRoom);

	// find all selected additional roomselect and fill hidden addroomname field for mail to guest
	const powermailFieldRooms = '[id^="powermail_field_rooms"]';
	$(document).on('change', powermailFieldRooms, function() {
		let roomName = '';
		let counter = 0;
		// find html select with selected rooms
		$(powermailFieldRooms).find(':selected').each(function() {
			let text = $(this).parent().attr('id');
			let pattern = /[0-9]/i;
			let result = text.match(pattern);
			// check if id from select has a digit then it is the additional roomselect
			if(result) {
				if(counter === 0) {
					roomName += $(this).val();
				} else {
					roomName += ', ' + $(this).val();
				}
				counter++;
			}
		});
		// fill hidden addroomname field
		$(this).closest('fieldset').find('[id|="powermail_field_addroomname"]').val(roomName);
	});
}

//! Activity 

const buttonIframe = $('.buttonIframe')

if (buttonIframe) {
	const activityDetail = $('.activity-detail')
	const activityDetailClose = $('.activity-detail .close')

	buttonIframe.on('click', () => {
		gsap.set(activityDetail, {display: 'block'})
	})

	activityDetailClose.on('click', () => {
		gsap.set(activityDetail, {display: 'none'})
	})
}