
//Scroll totop
//-----------------------------------------------

/*

$(window).scroll(function() {
    if($(this).scrollTop() != 0) {
        $(".scrollToTop").fadeIn(); 
    } else {
        $(".scrollToTop").fadeOut();
    }
});

$(".scrollToTop").click(function() {
    $("body,html").animate({scrollTop:0},800);
});*/


(function( $ ) {
    $.fn.initToTopButton = function(options) {
    var settings = $.extend( {
        
    }, options);
    
    var $this = $(this);
    
    var methods = {
        init: function () {
            var $self = $(this);
            
            $(window).scroll(function () {

                if ($(this).scrollTop() > 2000) {
                    $('.scrollToTop').fadeIn();
                } else {
                    $('.scrollToTop').fadeOut();
                }
            });
            
            
            $self.click(
                function (ev) {
                    
                    ev.preventDefault();
                    $("html, body").animate({
                        scrollTop: 0
                    }, 600);
                    
                    
                    
                }
            );
        }
    }
    
    $(this).each(function() {
        methods.init.apply( this );
    });
    }
})( jQuery );
//Mega Menu
//-----------------------------------------------

$(document).ready(function(){
	var allHeights = [];
	$('#navbar-2').find('li.dropdown').each(function(i,v) {
		allHeights[i] = $(v).offset().top;
	});
	
   $('.navbar.main ul > li > a').click(function(){
        if( $(this).hasClass('dropdown-toggle') ) {
            // $(this).closest('.navbar-wrapper').addClass('open');
        } else {
            // $(this).closest('.navbar-wrapper').removeClass('open');
        }
      
   });

    $('#navbar-2').on('show.bs.dropdown', function (e) {
        $('.navbar.main').addClass('open');
		$(this).addClass('f-open');
    });
	
    $('#navbar-2').on('shown.bs.dropdown', function (e) {
    	var indexKey = $('#navbar-2').find('li.dropdown').index(e.target);
    	$(this).animate({scrollTop: allHeights[indexKey]}, 150);
    });
   
    $('#navbar-2').on('hide.bs.dropdown', function () {
        $('.navbar.main').removeClass('open');
    });

});

//Search Bar
//-----------------------------------------------

$(document).ready(function(){
    $('.f-open-search').click(function(ev){ 
        ev.preventDefault();
        $('#search-bar').addClass('open'); 
        if ( navigator.userAgent.indexOf('MSIE') == -1  && navigator.userAgent.indexOf('Edge') == -1  && navigator.userAgent.indexOf('Trident') == -1   )  {
        	$('#search-bar').find('input').focus();
        }
        
         
    });
    $('.f-close-search').click(function(){ 
        $('#search-bar').removeClass('open'); 
    });
});
//Booking Forms
//-----------------------------------------------
/*
   Plugin: Booking Formt
*/

// Extend jQuery.fn with our new method
jQuery.extend( jQuery.fn, {
    // Name of our method & one argument (the parent selector)
    within: function( pSelector ) {
        // Returns a subset of items using jQuery.filter
        return this.filter(function(){
            // Return truthy/falsey based on presence in parent
            return $(this).closest( pSelector ).length;
        });
    }
});

//extend datepicker, this will disable dynamic positioning when datepicker is shown outer visible page
jQuery.extend(jQuery.datepicker,{_checkOffset:function(inst,offset,isFixed){return offset}});
var toggleButtonClass = '';
var detachedSelect = null;
var toggleSelect = 0;
/*
 * to be removed
 */
function getQueryVariable(variable)
{
       var query = window.location.search.substring(1);
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
               var pair = vars[i].split("=");
               if(pair[0] == variable){return pair[1];}
       }
       return(false);
}
$('.f-book-from-overview').click(function() {
	//$('#f-switch-hr').text($( this ).attr('data-room-name'));
	//$('.modal .hotel-booking-form input[name="room"]').val($( this ).attr('data-room-booking-id'));
//	isTestMode = getQueryVariable('dev');
//	if(isTestMode) {
		if($(this).data('room-booking-id').length > 0) {
			$('.modal').find('.f-addroomlist').removeClass('hidden');
			toggleSelect = 1;
		}
//	}
	$('.modal .hotel-booking-form [name="room"]').val($( this ).attr('data-room-booking-id'));
	$('.selectpicker').selectpicker('refresh');
});

$('.booking-form-modal').on('hidden.bs.modal', function (e) {
	//closing the booking form and bring everything back to the original state
	if(detachedSelect != null) {
		$('.booking-wrapper').within('.modal').toggleClass(toggleButtonClass);
		$('#f-rm-hotel').within('.modal').remove();
		$('.f-first-fg').within('.modal').find('[name="hotel"]').remove();
		$('.f-first-fg').within('.modal').append(detachedSelect);
		$('#rm-map-booking-select').remove();
		toggleClass= '';
		if(!$('.booking-wrapper').within('.modal').find('.f-divshowfirst').hasClass('hidden')) {
			$('.booking-wrapper').within('.modal').find('.f-divshowfirst').addClass('hidden');
			$('.booking-wrapper').within('.modal').find('.f-count-adults,.f-count-childs,.f-count-babies').find('.f-add-opts').addClass('hidden');
		}

		adultc = $('.booking-wrapper').within('.modal').find('select[name="room-adults"]').val();
		childrenc = $('.booking-wrapper').within('.modal').find('select[name="room-childs"]').val();
		cribsc = $('.booking-wrapper').within('.modal').find('select[name="room-babies"]').val();
		if(adultc > 1) {
			$('.booking-wrapper').within('.modal').find('select[name="room-adults"]').prop('selectedIndex', 0);
			$('.booking-wrapper').within('.modal').find('select[name="room-adults"]').trigger('change');
		}
		if(childrenc > 0) {
			$('.booking-wrapper').within('.modal').find('select[name="room-childs"]').prop('selectedIndex', 0);
			$('.booking-wrapper').within('.modal').find('select[name="room-childs"]').trigger('change');
		}
		if(cribsc > 0) {
			$('.booking-wrapper').within('.modal').find('select[name="room-babies"]').prop('selectedIndex', 0);
			$('.booking-wrapper').within('.modal').find('select[name="room-babies"]').trigger('change');
		}
		roomc = $('.booking-wrapper').within('.modal').find('input[name="rooms"]').val();
		if(roomc > 1) {
			for(var i = roomc; i > 1; i--) {
				$('.booking-wrapper').within('.modal').find('.f-count-room-down').trigger('click');
			}
		}
		detachedSelect = null;
	} else {
		//$('#f-switch-hr').text($('.meta-8>a').attr('data-hotel-name'));
	}

//	isTestMode = getQueryVariable('dev');
//	if(isTestMode) {
		if(toggleSelect) {
			$('.modal').find('.f-addroomlist').addClass('hidden');
			toggleSelect = 0;
		}
//	}
});

$('.selectpicker.hotels').change(function() {
	var panel_body = $(this).closest('.booking-wrapper')
	panel_body.removeClass (function (index, css) {
		return (css.match (/(^|\s)hotel-\S+/g) || []).join(' ');
	});

	if($(this).find('option:selected').data('ishotel') == 1) {
		if($(this).find('option:selected').data('ibe-switch') == 1) {
			panel_body.find('.f-divshowfirst').removeClass('hidden');
			panel_body.find('.f-count-adults,.f-count-childs,.f-count-babies').find('.f-add-opts').removeClass('hidden');
		} else {
			if(!panel_body.find('.f-divshowfirst').hasClass('hidden')) {
				panel_body.find('.f-divshowfirst').addClass('hidden');
				panel_body.find('.f-count-adults,.f-count-childs,.f-count-babies').find('.f-add-opts').addClass('hidden');
			}
		}

		adultc = panel_body.find('select[name="room-adults"]').val();
		childrenc = panel_body.find('select[name="room-childs"]').val();
		cribsc = panel_body.find('select[name="room-babies"]').val();
		if(adultc > 1) {
			panel_body.find('select[name="room-adults"]').prop('selectedIndex', 0);
			panel_body.find('select[name="room-adults"]').trigger('change');
		}
		if(childrenc > 0) {
			panel_body.find('select[name="room-childs"]').prop('selectedIndex', 0);
			panel_body.find('select[name="room-childs"]').trigger('change');
		}
		if(cribsc > 0) {
			panel_body.find('select[name="room-babies"]').prop('selectedIndex', 0);
			panel_body.find('select[name="room-babies"]').trigger('change');
		}
		roomc = panel_body.find('input[name="rooms"]').val();
		if(roomc > 1) {
			for(var i = roomc; i > 1; i--) {
				panel_body.find('.f-count-room-down').trigger('click');
			}
		}
	}

	panel_body.addClass($(this).find('option:selected').attr('class'));
	
	setDateFrom(panel_body.find('form'));
	setMaxAdultsAndChildren(panel_body.find('form'))
});

function bookingFormMap(event) {
	//Opening the Booking Form from within the Map and recolor it for the hotel
	var hotelID = $( event ).data('hotel');
	var hotelData = $('#hotel_'+hotelID);
	var panel_body = $('.booking-wrapper').within('.modal');
	toggleButtonClass = $( event ).attr('data-hotel-cssClass');
	detachedSelect = $('.modal').find('.f-switch-map').detach();

	if(hotelData.data('ibe-switch') == 1) {
		panel_body.find('.f-divshowfirst').removeClass('hidden');
		panel_body.find('.f-count-adults,.f-count-childs,.f-count-babies').find('.f-add-opts').removeClass('hidden');
	} else {
		if(!panel_body.find('.f-divshowfirst').hasClass('hidden')) {
			panel_body.find('.f-divshowfirst').addClass('hidden');
			panel_body.find('.f-count-adults,.f-count-childs,.f-count-babies').find('.f-add-opts').addClass('hidden');
		}
	}

	roomc = panel_body.find('input[name="rooms"]').val();
	if(roomc > 1) {
		for(var i = roomc; i > 1; i--) {
			panel_body.find('.f-count-room-down').trigger('click');
		}
	}

	var attachString = '<input type="hidden" name="hotel" value="'+hotelData.data('bookingid')+'" data-ibe-switch="'+hotelData.data('ibe-switch')+'" data-hotel-uid="'+hotelID+'" data-booking-start-date="'+hotelData.data('booking-start-date')+'" data-booking-max-adults="'+hotelData.data('booking-max-adults')+'" data-booking-max-children="'+hotelData.data('booking-max-children')+'" />';
	attachString += '<div id="f-rm-hotel" class="booking-selection '+ toggleButtonClass +' ">'+$( event ).attr('data-hotel-name')+'</div>';
	attachString += '<select id="rm-map-booking-select" name="hotel" style="display:none;"><option value="'+hotelData.data('bookingid')+'" data-ibe-switch="'+hotelData.data('ibe-switch')+'" data-hotel-uid="'+hotelID+'" data-booking-start-date="'+hotelData.data('booking-start-date')+'" data-booking-max-adults="'+hotelData.data('booking-max-adults')+'" data-booking-max-children="'+hotelData.data('booking-max-children')+'" selected></option></select>'
	$('.f-first-fg').within('.modal').append(attachString);
	$('.booking-wrapper').within('.modal').toggleClass(toggleButtonClass);
	
	setDateFrom(panel_body.find('form'));
	setMaxAdultsAndChildren(panel_body.find('form'))
}

function bookingFormHotelMenue(event) {
	//Opening the Booking Form from within the Map and recolor it for the hotel
	var hotelID = $( event ).data('hotel');
	var hotelData = $('#hotel_'+hotelID);
	var panel_body = $('.booking-wrapper').within('.modal');
	toggleButtonClass = $( event ).attr('data-hotel-cssClass');
	detachedSelect = $('.modal').find('.f-switch-map').detach();

	if(hotelData.data('ibe-switch') == 1) {
		panel_body.find('.f-divshowfirst').removeClass('hidden');
		panel_body.find('.f-count-adults,.f-count-childs,.f-count-babies').find('.f-add-opts').removeClass('hidden');
	} else {
		if(!panel_body.find('.f-divshowfirst').hasClass('hidden')) {
			panel_body.find('.f-divshowfirst').addClass('hidden');
			panel_body.find('.f-count-adults,.f-count-childs,.f-count-babies').find('.f-add-opts').addClass('hidden');
		}
	}

	roomc = panel_body.find('input[name="rooms"]').val();
	if(roomc > 1) {
		for(var i = roomc; i > 1; i--) {
			panel_body.find('.f-count-room-down').trigger('click');
		}
	}

	var attachString = '<input type="hidden" name="hotel" value="'+hotelData.data('bookingid')+'" data-ibe-switch="'+hotelData.data('ibe-switch')+'" data-hotel-uid="'+hotelID+'" data-booking-start-date="'+hotelData.data('booking-start-date')+'" data-booking-max-adults="'+hotelData.data('booking-max-adults')+'" data-booking-max-children="'+hotelData.data('booking-max-children')+'" />';
	attachString += '<div id="f-rm-hotel" class="booking-selection '+ toggleButtonClass +' ">'+$( event ).attr('data-hotel-name')+'</div>';
	attachString += '<select id="rm-map-booking-select" name="hotel" style="display:none;"><option data-ibe-switch="'+hotelData.data('ibe-switch')+'" data-hotel-uid="'+hotelID+'" data-booking-start-date="'+hotelData.data('booking-start-date')+'" data-booking-max-adults="'+hotelData.data('booking-max-adults')+'" data-booking-max-children="'+hotelData.data('booking-max-children')+'" selected></option></select>'
	$('.f-first-fg').within('.modal').append(attachString);
	$('.booking-wrapper').within('.modal').toggleClass(toggleButtonClass);
	
	setDateFrom(panel_body.find('form'));
	setMaxAdultsAndChildren(panel_body.find('form'))
}

function setMaxAdultsAndChildren(form)
{
	let maxAdults = maxChildren = 0
	
	if(form.find('select[name=hotel] option:selected').length)
	{
		maxAdults = parseInt(form.find('select[name=hotel] option:selected').attr('data-booking-max-adults'))
		maxChildren = parseInt(form.find('select[name=hotel] option:selected').attr('data-booking-max-children'))
	}
	else
	{
		maxAdults = parseInt(form.find('input[name=hotel]').attr('data-booking-max-adults'))
		maxChildren = parseInt(form.find('input[name=hotel]').attr('data-booking-max-children'))
	}
	
	if(maxAdults)
	{
		let o = form.find('select.f-count-adults option')
		
		for(let i = 0; i < o.length; i++)
		{
			if(parseInt(o[i].value) <= maxAdults)
			{
				form.find('.f-count-adults .f-option-'+o[i].value).removeClass('hidden')
			}
			else
			{
				form.find('.f-count-adults .f-option-'+o[i].value).addClass('hidden')
			}
		}
	}
	
	if(maxChildren)
	{
		let o = form.find('select.f-count-childs option')
		
		for(let i = 0; i < o.length; i++)
		{
			if(parseInt(o[i].value) <= maxChildren)
			{
				form.find('.f-count-childs .f-option-'+o[i].value).removeClass('hidden')
			}
			else
			{
				form.find('.f-count-childs .f-option-'+o[i].value).addClass('hidden')
			}
		}
	}
}

function setDateFrom(form)
{
	var today = new Date();
	var minDate = 0;
	
	let dbsd = form.find('select[name=hotel] option:selected').attr('data-booking-start-date')
	if(dbsd)
	{
		let d = dbsd.split('-')
		minDate = new Date(d[0], d[1] - 1, d[2]);
	}
	
	if(today < minDate || minDate == 0)
	{
		var arrival = form.find( "input.arrival-day" );
		var depature = form.find( "input.departure-day" );
		var actualArrivalDate = arrival.datepicker( "getDate" );
		var actualDepatureDate = depature.datepicker( "getDate" );
		var tomorrow = null;
		
		if(minDate)
		{
			tomorrow = new Date(minDate);
			tomorrow.setDate(tomorrow.getDate() + 1);
		    
		    if(actualArrivalDate < minDate)
	    	{
		    	arrival.datepicker('setDate', minDate);
	    	}
		    if(actualDepatureDate < tomorrow)
		    {
		    	depature.datepicker('setDate', tomorrow);
		    }
		}
		else
		{
			tomorrow = new Date(today);
			tomorrow.setDate(tomorrow.getDate() + 1);
		}
		
		arrival.datepicker('option', 'minDate', minDate);
		depature.datepicker('option', 'minDate', tomorrow);
		
		setDateInForm(0, form);
		setDateInForm(1, form);
	}
}

function setDateInForm(type, form) {
	var selector = type == 0 ? 'arrival' : 'departure';
	var monthNamesShort = form.find('input.'+selector+'-day').datepicker( "option", "monthNamesShort" );
	var d = form.find('input.'+selector+'-day').datepicker('getDate');
	
	if(d)
	{
	    var year = d.getFullYear();
	    var month = monthNamesShort[d.getMonth()];
	    var day = d.getDate();
	    day = day < 10 ? '0'+day : day;
	
	    form.find('span.month-year.'+selector+' > .month').text(month);
	    form.find('span.month-year.'+selector+' > .year').text(year);
	    form.find('span.'+selector+'-day').text(day);
	    form.find('.col-sm-4.'+selector).removeClass('active');
	}
}

(function( $ ) {
	$.datepicker.setDefaults( $.datepicker.regional[ $('html').attr('lang') ] );

    $.fn.bookingFormSubmit = function(options) {
        var settings = $.extend( {

        }, options);

        var today = new Date();
        var tomorrow = new Date();
        tomorrow.setDate(today.getDate()+1);
        
        var nRooms = 1;

        var padults = 1;

        var methods = {
            init: function () {
                var $self = $(this);
                var form = $self.closest('form');

                form.find('.col-sm-4.arrival').click(function() {
                    $(this).addClass('active');
                    $(this).find('input.arrival-day').datepicker("show");
                });
                form.find('.col-sm-4.departure').click(function() {
                    $(this).addClass('active');
                    $(this).find('input.departure-day').datepicker("show");
                });

                /* TESTEN */
                $(document).on('click','.ui-datepicker-prev',function(a, b) {
                    if($('body').hasClass('modal-open')) {
                      var bookingFormWidth = $(document).find('.booking-wrapper').width();
                      $('#ui-datepicker-div').css('width', bookingFormWidth);
                    } else {
                      var bookingFormWidth = $(document).find('.ce-panel-booking').width();
                      $('#ui-datepicker-div').css('width', bookingFormWidth);
                    }
                });
                $(document).on('click','.ui-datepicker-next',function(a, b) {
                    if($('body').hasClass('modal-open')) {
                      var bookingFormWidth = $(document).find('.booking-wrapper').width();
                      $('#ui-datepicker-div').css('width', bookingFormWidth);
                    } else {
                      var bookingFormWidth = $(document).find('.ce-panel-booking').width();
                      $('#ui-datepicker-div').css('width', bookingFormWidth);
                    }
                });
                /* TESTEN */

                // Count + Room
                form.find('.f-count-room-up').click(function(ev) {
                	ev.preventDefault();
                	if(form.find('select[name=hotel]').length == 1)
                		ibeSwitch = form.find('select[name=hotel] option:selected').attr('data-ibe-switch');
                	else
                		ibeSwitch = form.find('input[name="hotel"]').attr('data-ibe-switch');

                	var maxRooms = ibeSwitch == "1" ? 9 : 3;

                	nRooms++;
                	if ( nRooms > maxRooms ) {
                		nRooms = maxRooms;
                	} else {
                		form.find('.count').text(nRooms);
                		form.find('input[name="rooms"]').val(nRooms);
                		
                		var langForRoom = $('html').attr('lang') == 'de' ? 4 : 1;
                		var roomLangLabel = "Zimmer";
                		if(langForRoom == 1){
                			roomLangLabel = "Room";
                		}
                		
                		if( ibeSwitch == "1" ) {
	                    	var expandRooms = form.find('.f-room-block').clone(false);
	                    	expandRooms.find('.f-divshow').removeClass('hidden');
	                    	expandRooms.removeAttr('style');
	                    	expandRooms.addClass('f-room-'+(nRooms).toString());
	                    	expandRooms.find('.room-item-title').text(roomLangLabel+' '+(nRooms).toString());
	                    	expandRooms.find('.form-control').addClass('selectpicker');
	                    	expandRooms.find('.selectpicker').selectpicker();
	                    	expandRooms.removeClass('f-room-block');
	                    	form.find('.f-room-'+(nRooms-1).toString()).after(expandRooms);
	                    	
	                    	setMaxAdultsAndChildren(form) 
                		}
                	}
                });

                // Count - Room
                form.find('.f-count-room-down').click(function(ev) {
                	ev.preventDefault();
                	nRooms--;
                	if( nRooms < 1 ) {
                		nRooms = 1;
                	} else {
                		form.find('.count').text(nRooms);
                		form.find('input[name="rooms"]').val(nRooms);
                		form.find('.f-room-'+(nRooms+1).toString()).remove();
                	}
                	form.find('input[name="rooms"]').val(nRooms);
                });

                // Count - Children ( -> child age )
                form.on('change','.f-count-childs', function(ev) {
                	toJQ = $(this);

                	classes = {};
                	classes[0] = 'first';
                	classes[1] = 'second';

                	roomBlock = toJQ.closest('.room-item');
                	nnChilds = toJQ.val();
                	noChilds = roomBlock.find('input[name="amount-children"]').val();
                	incdec = nnChilds - noChilds;
                	for(var i = 0; i < Math.abs(incdec); i++) {
                		if( incdec > 0 ) {
                			var expandChildren = form.find('.f-childage-block').clone(false);
                			expandChildren.removeAttr('id');
                			id = parseInt(noChilds)+parseInt(i)+1;
                			expandChildren.find('.form-control').addClass('selectpicker');
                			expandChildren.find('.selectpicker').selectpicker();
                			expandChildren.removeAttr('style');
                			expandChildren.removeClass('f-childage-block');
                			expandChildren.addClass('f-childage-'+(id).toString());

                			oszi = (id+1) % 2;

                			expandChildren.addClass(classes[oszi]);
                			roomBlock.append(expandChildren);
                		} else if( incdec < 0 ) {
                			id = parseInt(noChilds)-parseInt(i);
                			roomBlock.find('.f-childage-'+(id).toString()).remove();
                		}
                	}

                	roomBlock.find('input[name="amount-children"]').val(nnChilds);

                	if(form.find('select[name=hotel]').length == 1)
                		ibeSwitch = form.find('select[name=hotel] option:selected').attr('data-ibe-switch');
                	else
                		ibeSwitch = form.find('input[name="hotel"]').attr('data-ibe-switch');

                	if(ibeSwitch != "1") {
                		for(var i = 3; i > 0; i--) {
                			var obj = form.find('select[name="room-babies"] option[value="'+i+'"]');

                			if(i > 3 - nnChilds) {
                				obj.attr('disabled', true);
                			}
                			else {
                				obj.attr('disabled', false);
                			}
                		}

                		$('.selectpicker').selectpicker('refresh');
                	}
                });

             // Count - Children ( -> child age )
                form.on('change','.f-count-babies', function(ev) {
                	toJQ = $(this);
                	nnChilds = toJQ.val();

                	if(form.find('select[name=hotel]').length == 1)
                		ibeSwitch = form.find('select[name=hotel] option:selected').attr('data-ibe-switch');
                	else
                		ibeSwitch = form.find('input[name="hotel"]').attr('data-ibe-switch');

                	if(ibeSwitch != "1") {
                		for(var i = 3; i > 0; i--) {
                			var obj = form.find('select[name="room-childs"] option[value="'+i+'"]');

                			if(i > 3 - nnChilds) {
                				obj.attr('disabled', true);
                			}
                			else {
                				obj.attr('disabled', false);
                			}
                		}

                		$('.selectpicker').selectpicker('refresh');
                	}
                });

				var minDate = 0;
				let dbsd = form.find('input[name="hotel"]').attr('data-booking-start-date')
           	
                if(dbsd)
            	{
					let d = dbsd.split('-')
                	minDate = new Date(d[0], d[1] - 1, d[2]);
                	today = minDate;
                	tomorrow = new Date(minDate);
                	tomorrow.setDate(tomorrow.getDate() + 1);
            	}

                form.find( "input.arrival-day" ).datepicker({
                	onSelect: function (dateValue, inst) {
                		var depatureElem = form.find('input.departure-day');
                		var dateValueValues = dateValue.split('.');

	                    var date2 = new Date(dateValueValues[2], dateValueValues[1] - 1, dateValueValues[0]);//form.find('input.arrival-day').datepicker('getDate');
	                    date2.setDate(date2.getDate() + 1);

	                    var departureDate = depatureElem.datepicker('getDate');
	                    if ( date2 > departureDate ) {
	                    	depatureElem.datepicker('setDate', date2);
	                        setDateInForm(1, form);
	                    }

	                    depatureElem.datepicker('option', 'minDate', date2);
	                },
	                onClose: function(dateText, inst) {
	                	setDateInForm(0, form);
	                },
	                showOn: 'both',
	                buttonImage : "",
	                buttonImageOnly: true,
	                buttonText: "",
	                nextText: "",
	                prevText: "",
	                numberOfMonths: 1,
	                showButtonPanel: false,
	                minDate: minDate,
	                dateFormat: "dd.mm.yy",
	                beforeShow: function (a, b) {

	                       form.closest('div').after($(this).datepicker('widget'));

		              	  var offLeft = form.closest('div').offset();
		               	  var offTop = form.find('div.form-group:nth-child(2)').offset().top + form.find('div.form-group:nth-child(2)').outerHeight();
		               	  var bookingFormWidth = form.width();
		               	  $('#ui-datepicker-div').css('width', bookingFormWidth);

		               	  if(form.closest('div.modal-body').length == 1)
	               		   offTop -= $(document).scrollTop();
		                   $.datepicker._pos = [offLeft.left, offTop]; 

	                       b.dpDiv.css('width', bookingFormWidth);

	                      var cnt = 0;
	                      var interval = setInterval(function() {
	                          cnt++;
	                          if (b.dpDiv.is(":visible")) {
	                              b.dpDiv.css('width', bookingFormWidth);
	                              clearInterval(interval);
	                          } else if (cnt > 50) {
	                              clearInterval(interval);
	                          }
	                      }, 10);
	                }
                });

	            form.find('input.arrival-day').datepicker('setDate', today);

	            form.find('input.departure-day').datepicker({
	                  minDate: tomorrow,
	                  dateFormat: "dd.mm.yy",
	                  numberOfMonths: 1,
	                  showOn: 'both',
	                  buttonImage: "",
	                  buttonImageOnly: true,
	                  buttonText: "",
                      nextText: "",
                      prevText: "",
	                  onClose: function(dateText, inst) {
	                	  setDateInForm(1, form);
	                  },
                    beforeShow: function (a, b) {

                        form.closest('div').after($(this).datepicker('widget'));

                      var offLeft = form.closest('div').offset();
                      var offTop = form.find('div.form-group:nth-child(2)').offset().top + form.find('div.form-group:nth-child(2)').outerHeight();

                      var bookingFormWidth = form.width();
                      $('#ui-datepicker-div').css('width', bookingFormWidth);

                      if(form.closest('div.modal-body').length == 1)
                       offTop -= $(document).scrollTop();
                       $.datepicker._pos = [offLeft.left, offTop];

                       b.dpDiv.css('width', bookingFormWidth);


                      var cnt = 0;
                      var interval = setInterval(function() {
                          cnt++;
                          if (b.dpDiv.is(":visible")) {
                              b.dpDiv.css('width', bookingFormWidth);
                              clearInterval(interval);
                          } else if (cnt > 50) {
                              clearInterval(interval);
                          }
                      }, 10);


                    }
	            });

	            form.find('input.departure-day').datepicker('setDate',tomorrow);
	            setDateInForm(0, form);
	            setDateInForm(1, form);
            },
            /*form submit*/
            click: function (event) {
            	event.preventDefault();
            	var form = $(event.target).closest('form');
            	var url = '';
            	var ibeSwitch = 0;
            	var hotelUID = 0;
            	var bookingLink = '';
            	var useBookingLink = false;
            	//collect and check form data
            	var roomAmount = form.find('input[name="rooms"]').val();
            	var hotelID = form.find('[name="hotel"]').val();
            	var roomcodeonly = form.find('[name="room"]').val();
            	var arrivalDay = form.find('input[name="arrivalDay"]').val();
            	var departureDay = form.find('input[name="departureDay"]').val();
            	var error = false;

            	if(form.find('select[name=hotel]').length == 1)
            	{
            		ibeSwitch = form.find('select[name=hotel] option:selected').attr('data-ibe-switch');
            		hotelUID = form.find('select[name=hotel] option:selected').attr('data-hotel-uid');
            		bookingLink = form.find('select[name=hotel] option:selected').attr('data-booking-link');

            		if(hotelID == 'ALL')
        			{
            			form.find('div.hotels button').addClass('has-error');
            			error = true;
        			}
            		else
        			{
            			form.find('div.hotels button').removeClass('has-error');
        			}
            	}
            	else
            	{
            		ibeSwitch = form.find('input[name="hotel"]').attr('data-ibe-switch');
            		hotelUID = form.find('input[name="hotel"]').attr('data-hotel-uid');
            		bookingLink = form.find('input[name="hotel"]').attr('data-booking-link');
            	}

            	if(typeof(bookingLink) !== 'undefined')
    			{
            		useBookingLink = bookingLink.length > 0;
    			}
            	
            	var isTestMode = getQueryVariable('dev');
            	
            	if(useBookingLink && !isTestMode)
            	{
            		window.open(bookingLink);
            	}
            	else
            	{
	            	if(ibeSwitch == "1")
	        		{
	            		//language specific
            			var lang = $('html').attr('lang') == 'de' ? 4 : 1;

            			url = lang == 4 ? 'https://buchen.atlantic-hotels.de/' : 'https://book.atlantic-hotels.de/'
            			url += '?chain=19763&Themecode=ATHDE&currency=EUR';

            			//hotel specific
            			var isHotel = false;
            			var configCode = 'ATLANTIC';
            			var level = 'chain';
            			            			
            			if(hotelID != undefined)
            			{
		            		if(hotelID.length > 1)
		            		{
		            			url += '&hotel=' + hotelID;
		            			
		            			configCode = '';
		            			switch(hotelID)
		            			{
		            				case '70355' : 	configCode = 'AHA';
		            								break;
		            				case '70359' : 	configCode = 'AHB';
    												break;
		            				case '70365' : 	configCode = 'AHG';
    												break;
		            				case '70386' : 	configCode = 'AHU';
    												break;
		            				case '70373' : 	configCode = 'AHL';
    												break;
		            				case '70404' : 	configCode = 'AHT';
    												break;
		            				case '70367' : 	configCode = 'AHW';
    												break;
		            				case '70360' : 	configCode = 'AHK';
    												break;
		            				case '70366' : 	configCode = 'AHS';
    												break;
		            				case '70371' : 	configCode = 'AHV';
    												break;
		            				case '31257' : 	configCode = 'AHM';
    												break;
		            				case '3060' : 	configCode = 'KYC';
    												break;
                                    case '70351' :  configCode = 'ALH';
                                                    break;
                                    case '40589' :  configCode = 'AHH';
                                    				break;
		            			}
		            			
		            			level = 'hotel';
		            			
		            			isHotel = true;
		            		}
            			}
            					
            			if(!isHotel)
            			{
            				url += '&Dest=ATLANTIC1';
            			}
            			
            			url += '&configcode='+configCode+'&level='+level;

            			if(roomcodeonly != undefined)
            			{
		            		if(roomcodeonly.length > 1)
		            		{
		            			url += '&room='+roomcodeonly;
		            		}
            			}

            			//check language
            			if(lang == 1)
        				{
            				//format en-us
            				arrivalDay = $.datepicker.formatDate('mm/dd/yy', form.find('input.arrival-day').datepicker('getDate'));
            				departureDay = $.datepicker.formatDate('mm/dd/yy', form.find('input.departure-day').datepicker('getDate'));
        				}

            			if( arrivalDay.length > 1 ) url += '&arrive='+arrivalDay;

		            	if( departureDay.length > 1 ) url += '&depart='+departureDay;

		            	url += '&rooms='+roomAmount;

		            	var adultsArr = [];
		            	var childArr = [];
		            	var childAgesArr = [];

		            	for(var i = 1; i <= roomAmount; i++)
		            	{
		            		roomData = form.find('.f-room-'+(i).toString());

		            		adults = roomData.find('select[name="room-adults"]').val();
		            		childrenAmount = roomData.find('select[name="room-childs"]').val();
		            		cribs = roomData.find('select[name="room-babies"]').val();

		            		adultsArr.push(parseInt(adults));
		            		childArr.push(parseInt(childrenAmount));
		            		childAgesArr.push([]);

		            		if(parseInt(childrenAmount) > 0)
		            		{
		            			for(var j = 1; j <= parseInt(childrenAmount); j++)
		            			{
		        					childage = roomData.find('.f-childage-'+(j)+'>select').val();
		        					childAgesArr[childAgesArr.length-1].push(parseInt(childage));
		        					if(childage == '-1')
		    						{
		        						error = true;
		        						roomData.find('.f-childage-'+(j)+'>div>button').addClass('has-error');
		    						}
		        					else
		    						{
		        						roomData.find('.f-childage-'+(j)+'>div>button').removeClass('has-error');
		    						}
	            				}
		            		}
		            		else
	            			{
		            			childAgesArr[childAgesArr.length-1].push(0);
	            			}

	            			for(var j = 1; j <= parseInt(cribs); j++)
            				{
	            				childAgesArr[i-1].push(2);
            				}
		            	}

		            	if(adultsArr.length > 0)
		            		url += '&adult=' + adultsArr.join();

		            	if(childArr.length > 0)
		            		url += '&child=' + childArr.join();

		            	if(childAgesArr.length > 0)
	            		{
		            		if(childAgesArr[0].length > 0)
	            			{
			            		for(var j = 1; j <= childAgesArr.length; j++)
			            		{
			            			childAgesArr[j - 1] = childAgesArr[j - 1].join('|');
			            		}
			            		url += '&childages=' + childAgesArr.join();
	            			}
	            		}

		            	var locale = lang == 4 ? 'de-DE' : 'en-US';
		            	url += '&locale=' + locale;
	        		}
	            	else
	        		{
	        			url = "https://atlantichotels.webhotel.microsdc.com/bp/";

	            		if(hotelID != undefined) {
		            		if(hotelID.length > 1 && hotelID != 'ALL') url += 'search_rooms.cmd?&srchResort='+hotelID;
		            		if(hotelID == 'ALL') url += 'search_regional.cmd?&srchResort='+hotelID;
	            		} else {
	            			url += 'search_rooms.cmd?';
	            		}

		            	if(roomcodeonly != undefined)
		            		if(roomcodeonly.length > 1) url += '&srchRoomType='+roomcodeonly;

		            	if(arrivalDay.length > 1)
	            		{
	            			var arrival = arrivalDay.split('.');
	            			url += '&checkinYear='+arrival[2]+'&checkinMonth='+arrival[1]+'&checkinDay='+arrival[0];
	            		}
	            		if(departureDay.length > 1)
	            		{
	            			var departure = departureDay.split('.');
	            			url += '&checkoutYear='+departure[2]+'&checkoutMonth='+departure[1]+'&checkoutDay='+departure[0];
	            		}

	            		url += '&numberOfRooms='+roomAmount;
	            		var adults = 0;
	            		var children = 0;
	            		var childAges = '';

		            	for(var i = 1; i <= 1; i++) {
		            		roomData = form.find('.f-room-'+(i).toString());

		            		adults += parseInt(roomData.find('select[name="room-adults"]').val());
		            		var childrenAmount = parseInt(roomData.find('select[name="room-childs"]').val());
		            		var cribs = parseInt(roomData.find('select[name="room-babies"]').val());

		            		if( childrenAmount > 0 ) {
		            			children += childrenAmount;
	            				for(var j = 1; j <= childrenAmount; j++) {
	            					var age = roomData.find('.f-childage-'+(j)+'>select').val();
	            					childAges += childAges.length > 0 ? ',' : '';
	            					childAges += age;

	        						if(age == '-1')
	        						{
	            						error = true;
	            						roomData.find('.f-childage-'+(j)+'>div>button').addClass('has-error');
	        						}
	            					else
	        						{
	            						roomData.find('.f-childage-'+(j)+'>div>button').removeClass('has-error');
	        						}
	            				}
	            			}

	            			if( cribs > 0 )
	            			{
	            				children += cribs;
	            				for(var j = 1; j <= cribs; j++) {
	            					childAges += childAges.length > 0 ? ',' : '';
	            					childAges += '1';
	            				}
		            		}
		            	}

		            	url += '&numberOfAdults='+adults+'&numberOfChildren='+children+'&childAges='+childAges;
	        		}

	            	if(error == false)
	        		{
	            		var linkerParam = '';
	            		//read cookie and get id append it to the url
						/*if(document.cookie) {
							var cookieString = document.cookie;
							var cookies = cookieString.split(';');
							$.each(cookies, function(index, value) {
								var cPair = value.trim().split("=");
								var cName = cPair[0];
								var cValue = cPair[1];
								if(cName == '_ga') {
									linkerParam += "&_ga="+cValue;
								}
							});
						}*/
						//if (typeof ga == 'function') {
	            		if (typeof ga === 'function') {
		            		ga('create', 'UA-1946151-1', 'auto');
							ga(function(tracker) { linkerParam = '&'+tracker.get('linkerParam'); });
	            		}
						//}
						//language+ga
						url += "&language="+$('html').attr('lang')+linkerParam;

		        		/*var isIPad = navigator.userAgent.match(/iPad/i) != null;
		            	var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1;
		            	var isIphone = navigator.userAgent.toLowerCase().indexOf('iphone') > -1;
		            	var isIBlackBerry = navigator.userAgent.toLowerCase().indexOf('blackberry') > -1;
		            	var isIPod = navigator.userAgent.toLowerCase().indexOf('ipod') > -1;
		            	var isWindowsPhone = navigator.userAgent.toLowerCase().indexOf('windows phone') > -1;
		            	var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') != -1;
		            	var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
		            	if (isAndroid || isIphone || isIBlackBerry || isIPod || isWindowsPhone || isIPad || (isSafari && !isChrome)){
		            		window.open(url);
		            	} else{
		            		window.open(url);
	//	            		$('#iframeBookingIframe').attr({'src':url, 'height': 800, 'width': 1180});
		            	}*/

						window.open(url);
	        		}
	            	else
	        		{
	            		event.stopPropagation();
	        		}
            	}
            }
        }

        $(this).each(function() {
            methods.init.apply( this );
            $(this).click( methods.click );
        });
    }
    
    /*
    $('#iframeBooking').on('hidden.bs.modal', function () {
        //check if body has padding and remove if
    	$('body').css('padding-right', 0);
    });
    */

    $('.selectpicker.hotels').change();
})( jQuery );
$(document).ready(function () {
  var trigger = $('.hamburger'),
      overlay = $('.overlay'),
      isClosed = false,
      offsetY = window.pageYOffset,
      $body = $('body');

    trigger.click(function () {
      hamburger_cross();      
    });

    function hamburger_cross() {

      if (isClosed == true) {          
        overlay.hide();
        trigger.removeClass('is-open');
        trigger.addClass('is-closed');	
        isClosed = false;
      } else {   
        overlay.show();
        trigger.removeClass('is-closed');
        trigger.addClass('is-open');
        isClosed = true;
      }
  }
  
  /*$('[data-toggle="offcanvas"]').click(function () {
        $('#wrapper').toggleClass('toggled');
  });*/ 
  
    //Navigation Menu Slider
    $('button.hamburger').on('click',function(e){
        e.preventDefault();
        $('body').toggleClass('nav-expanded');
        //$('body.nav-expanded .hamburger').css('right', '40px');
        
        if($('body').hasClass('nav-expanded')) {
        	offsetY = window.pageYOffset;
            $body.css({
                'position': 'fixed',
                'top': -offsetY + 'px'
            });  
        } else {
            $body.css({
                'position': 'static'
            }); 	
            
            $(window).scrollTop(offsetY);
        }
        

        
    });
    
        
    $('#nav-close').on('click',function(e){
        e.preventDefault();
        $('body').removeClass('nav-expanded');
        //$('body.nav-expanded .hamburger').css('right', '0');
    });
    /*
    // Initialize navgoco with default options
    $(".main-menu").navgoco({
        caret: '<span class="caret"></span>',
        accordion: false,
        openClass: 'open',
        save: true,
        cookie: {
            name: 'navgoco',
            expires: false,
            path: '/'
        },
        slide: {
            duration: 300,
            easing: 'swing'
        }
    });
  
  */
   
});
$(document).ready(function() {  
   $("#myCarousel").swiperight(function() {  
      $("#myCarousel").carousel('prev');  
    });  
   $("#myCarousel").swipeleft(function() {  
      $("#myCarousel").carousel('next');  
   });  
});  


$(document).ready(function() {  
   $(".carousel.slide").swiperight(function() {  
      $(this).carousel('prev');  
    });  
   $(".carousel.slide").swipeleft(function() {  
      $(this).carousel('next');  
   });  
});  

(function( $ ) {
	$.fn.sanatizeHeight = function(options) {
		var settings = $.extend( {
	
		}, options);
	
		var $this = $(this);
	
		var methods = {
			init: function () {
				var $self = $(this);
				var maxHeight = 0;
				$self.find('.f-sanatize-sub').each(
				  function() {
						if ( $(this).outerHeight() > maxHeight ) {
							  maxHeight = $(this).outerHeight();
						}
					}
				);
				$self.find('.f-sanatize-sub').css({
				   'min-height':maxHeight+'px'
				});
	
			}
		}
	
		$(this).each(function() {
			methods.init.apply( this );
		});
	}
})( jQuery );
/*
    ATLANTIC HOTELS : Homesite Map
    
    http://blog.codebusters.pl/en/google-maps-in-hidden-div/
    http://getbootstrap.com/javascript/#tabs
*/

/**
 * initialize the common informations
 */
var isMobile = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/); 
var isDraggable = !isMobile ? true : false;
var mapInitCounter = 40;



function initHomeMap() {
	
	window.mapProp = {
	    draggable: isDraggable,
	    scrollwheel: false,
	    mapTypeControl: false,
	    navigationControl: false,
	    disableDoubleClickZoom: true,
	    streetViewControl: false,
        center: new google.maps.LatLng(53.924244, 9.308917),
    	zoom: 8,
    	mapTypeId:google.maps.MapTypeId.ROADMAP
	};
	
	window.styleArray = [
	    {
	        "featureType": "water",
	        "stylers": [
	            {
	                "visibility": "on"
	            },
	            {
	                "color": "#b5cbe4"
	            }
	        ]
	    },
	    {
	        "featureType": "landscape",
	        "stylers": [
	            {
	                "color": "#efefef"
	            }
	        ]
	    },
	    {
	        "featureType": "road.highway",
	        "elementType": "geometry",
	        "stylers": [
	            {
	                "color": "#83a5b0"
	            }
	        ]
	    },
	    {
	        "featureType": "road.arterial",
	        "elementType": "geometry",
	        "stylers": [
	            {
	                "color": "#bdcdd3"
	            }
	        ]
	    },
	    {
	        "featureType": "road.local",
	        "elementType": "geometry",
	        "stylers": [
	            {
	                "color": "#ffffff"
	            }
	        ]
	    },
	    {
	        "featureType": "poi.park",
	        "elementType": "geometry",
	        "stylers": [
	            {
	                "color": "#e3eed3"
	            }
	        ]
	    },
	    {
	        "featureType": "administrative",
	        "stylers": [
	            {
	                "visibility": "on"
	            },
	            {
	                "lightness": 33
	            }
	        ]
	    },
	    {
	        "featureType": "road"
	    },
	    {
	        "featureType": "poi.park",
	        "elementType": "labels",
	        "stylers": [
	            {
	                "visibility": "on"
	            },
	            {
	                "lightness": 20
	            }
	        ]
	    },
	    {},
	    {
	        "featureType": "road",
	        "stylers": [
	            {
	                "lightness": 20
	            }
	        ]
	    }
	];
	
	window.langKey = '';
	window.langKeyHtml = $('html').attr('lang');
	
	switch(langKeyHtml) {
		case 'de':
			langKey = '&L=0';
			break;
		case 'en':
			langKey = '&L=1';
			break;
	}
	
	infowindow = new google.maps.InfoWindow({
		content: 'loading',
		maxWidth: 378
	});
	
	/**
	 * initialize the common informations
	 */
	
	//google.setOnLoadCallback(drawHotelMap);
	//google.setOnLoadCallback(fetchWholeData);
	fetchWholeData();
	
	window.restaurantMap;
	window.oldRest = 0;
	window.markers = [];
	window.restaurantMarkers = [];
	window.infowindow;
	window.oldmarker = 0;
	window.oldmarkerRestaurant = 0;
	window.imagePrefix = '/typo3conf/ext/atl_provider/Resources/Public/Icons/Map/';
	window.markerCommon = new google.maps.MarkerImage(imagePrefix + 'map_pin_allgemein.png',null,null,null, new google.maps.Size(29, 34));
	window.hotelPicutres = [];
	window.hotelPins = [];
	window.initTrigger = true;
	window.map_data;
	
	window.deviceWidth = $(window).width();
}

function fetchWholeData() {
	if( $('#hotel_map').length ) {
		$('#hotel_map, #restaurant_map').css({
			'min-height':$('#hotel_map').closest('.ce-hotel-overview-map').find('.inner.nav-hotels').height()+'px'
		});

		$.ajax({
			url : "/?id=180&type=1441006273"+langKey,
			success : function(result) {
				map_data = JSON.parse(result.replace(/&quot;/g, '"'));
				drawHotelMap();
			}
		});
	}
}

function drawHotelMap() {
	var map=new google.maps.Map(document.getElementById('hotel_map'), mapProp);
	
	var passList = ["phone","fax","email","res"];
	
	var latlngbounds = new google.maps.LatLngBounds();
	
	$.each(map_data['hotel'], function(key, val) {
//		if(key == 'Hotel Wilhelmshaven') {
//			console.log(val);
//		}
		
		var contentString = "";
		if(val.lat != -1 || val.lng != -1) {
		    contentString += "<div class='hotel-info-area "+val.cssClass+" '><div class='inner'>";
			contentString += "<p class='hotel-title text-uppercase'><span class='prefix'>"+val.prefix_title+"</span> "+ key + "</p>";
			contentString += "<p class='address'>";
			contentString += val.street +"<br />";
			contentString += val.zip + " " + val.city + "<br />";
			
			$.each(val, function(inner_key, inner_val){						
				if($.inArray(inner_key, passList) >= 0) {
					contentString += val[inner_key+"_label"] +" : ";								
					if(inner_key == "email") { 
						contentString += "<a href=mailto:"+inner_val+">"+inner_val+"</a><br />";	
					} else { 
						contentString += inner_val +"<br />";
					}
					
				}
			})
			
			/* remove trustyou
			if ( val.ty_seal ) {
	            if(val.ty_seal.response.score < 68) {
	                var ty_class = 'neg';
	            } else if (val.ty_seal.response.score > 67 && val.ty_seal.response.score < 75) {
	                var ty_class = 'neu'
	            } else {
	                var ty_class = 'pos';
	            }
	        }
			if ( val.ty_seal ) {
				contentString += "<div class='voting trustscore size-xs "+ty_class+"'>";
				contentString += "<div class='value'>"+val.ty_seal.response.score+"</div>";
				contentString += "<div class='badges'><i class='ty-icon ty-icon-badge-full neg'></i><i class='ty-icon ty-icon-badge-full neu'></i><i class='ty-icon ty-icon-badge-full pos'></i></div>";
				contentString += "<div class='score'>"+val.ty_seal.response.score_description+"</div>";
				contentString += "</div>";
			}
			 */
			
			
			contentString += "</p></div>";
			contentString += "<ul class='nav nav-pills'>";
			if(val.info_label != '') {
				contentString += "<li><a href='"+val.info_link+"'>"+val.info_label+"</a></li>";
			}
			contentString += "<li><a href='"+val.topage_link+"'>"+val.www_label+"</a></li>";
			if ( val.external_booking_link != "" ) {
				contentString += "<li><a href='"+val.external_booking_link+"' target='_blank'>"+val.booking_label+"</a></li>";
			} else {
				contentString += "<li><a href='#' data-toggle='modal' data-hotel='"+val.uid+"' onclick='bookingFormMap(this)' data-target='.bs-example-modal-sm' data-hotel-name='"+key+"'  data-hotel-cssClass='"+val.cssClass+"'>"+val.booking_label+"</a></li>";
			}
			contentString += "</ul></div>";
            
			// image = imagePrefix + 'map_pin_allgemein.png';
			// image = new google.maps.MarkerImage(imagePrefix + 'map_pin_allgemein.png',null,null,null, new google.maps.Size(29, 34));
			var marker = new google.maps.Marker({
				position: new google.maps.LatLng(parseFloat(val.lat), parseFloat(val.lng)),
				icon: markerCommon
			});	
			latlngbounds.extend(new google.maps.LatLng(parseFloat(val.lat), parseFloat(val.lng)));
			hotelPins[val.uid] = val.pin; 
			
			google.maps.event.addListener(marker, 'click', function() {
				if(oldmarker != 0) {
            		clickCloseHighlight(oldmarker);
            	}
				
            	map.setCenter(marker.getPosition());
            	
				$('#hotel_img').attr('src',val['hotel_img']);
				infowindow.setContent(contentString);
			    infowindow.open(map,marker);
			    openImage = hotelPins[val['uid']];
			    openImage = new google.maps.MarkerImage(hotelPins[val['uid']],null,null,null, new google.maps.Size(29, 34));
			    marker.setIcon(openImage);
			    $('#hotel_'+val['uid']).toggleClass('hover');
			    oldmarker = val['uid'];
			});
            
            google.maps.event.addListener(map, 'click', function() {
            	infowindow.close();
            	if(oldmarker != 0) {
            		clickCloseHighlight(oldmarker);
            	}
            	map.setOptions({ draggable: true });
            });
            
            google.maps.event.addListener(infowindow, 'closeclick', function(){
            	if(oldmarker != 0) {
            		clickCloseHighlight(oldmarker);
            	}
            });
            

            
            markers[val['uid']] = marker;
//          hotelPicutres[val['uid']] = val['hotel_img'];
			map.setOptions({styles: styleArray});
			marker.setMap(map);
		}
		map.fitBounds(latlngbounds,10);
	})
}

function drawRestaurantMap() {
	var restaurantMap=new google.maps.Map(document.getElementById('restaurant_map'), mapProp);
	var latlngbounds = new google.maps.LatLngBounds();
	$.each(map_data['restaurant'], function(key, val) {
		var contentString = "";
		// contentString += "<div class='hotel-info-area'><div class='inner'>";
		contentString += "<div class='hotel-info-area "+val.cssClass+" '><div class='inner'>";
		tmp = $('<div />').html(key).text();
		contentString += "<p class='hotel-title text-uppercase'>" + tmp + "</p>";
        //contentString += '<p />'+$htmlval.description+'</p>';
        tmp = $('<div />').html(val.description);
        tmp.find('p').attr('class','address');
        // console.log($('<div />').html(tmp.text()).find('p').length);
        tmp = $('<div />').html(tmp.text()).find('p').addClass('address');
        
        contentString += $('<div />').html(tmp).html();
		//contentString += $('<div />').html(val.description).find('p').addClass('address').text();
		//console.log($('<div />').html(val.description).find('p').addClass('address').html());
		contentString += "</div>";
		contentString += "<ul class='nav nav-pills'>";
	    contentString += "<li><a href='"+val.restaurant_link+"'>"+val.restaurant_label+"</a></li>";
		contentString += "</ul>";
		
		restaurantMap.setOptions({styles: styleArray});
		//image = imagePrefix + 'map_pin_allgemein.png';
		restaurantMarkers[val.uid] = new google.maps.Marker({
			position: new google.maps.LatLng(parseFloat(val.lat), parseFloat(val.lng)),
			icon: markerCommon
		});
		latlngbounds.extend(new google.maps.LatLng(parseFloat(val.lat), parseFloat(val.lng)));
		hotelPins[val.uid] = val.pin; 
		
		google.maps.event.addListener(restaurantMap, 'click', function() {
			infowindow.close();
			if(oldRest > 0) {
				clickCloseHighlightRestaurant(oldRest);
				$('#restaurants_'+oldRest).removeClass('hover'); 
				oldRest = 0;
			}
			
			restaurantMap.setOptions({ draggable: true });
		});

		google.maps.event.addListener(restaurantMarkers[val.uid], 'click', function() {
			if(oldRest != 0) {
				clickCloseHighlightRestaurant(oldRest);
        	}
			
			restaurantMap.setCenter(restaurantMarkers[val.uid].getPosition());
			
			infowindow.setContent(contentString);
			// openImage = hotelPins[val['uid']];
			openImage = new google.maps.MarkerImage(hotelPins[val['uid']],null,null,null, new google.maps.Size(29, 34));
			restaurantMarkers[val.uid].setIcon(openImage);
			
		    $('#restaurants_'+val['uid']).addClass('hover');
		    
		    infowindow.open(restaurantMap,restaurantMarkers[val.uid]);
		    if(oldRest > 0) $('#restaurants_'+oldRest).removeClass('hover');
//		    $('#restaurants_'+val.uid).toggleClass('hover');
		    oldRest = val.uid;
		});
		
		google.maps.event.addListener(infowindow, 'closeclick', function(){
			
			if(oldRest > 0) {
				clickCloseHighlightRestaurant(oldRest);
				$('#restaurants_'+oldRest).removeClass('hover');
			}
		});

		restaurantMarkers[val.uid].setMap(restaurantMap);
	});
	restaurantMap.fitBounds(latlngbounds);
	
}


if( device.desktop() || device.tablet() ) {
    $('.ce-hotel-overview-map .inner.nav-hotels ul.nav-hotels > li > a').click(function(ev) {
        ev.preventDefault();
    }); 
}

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
	if($( e.target ).attr('href') == '#profile' && initTrigger) {
		if ( $( '#restaurant_map' ).length ) {
			drawRestaurantMap();
			initTrigger = false;
		}
	}
});

$('.f-restaurant').on('mouseover touchstart', function(ev) {
	r_uid = $(ev.currentTarget).attr('data-rest-uid');
	var subSel = $('.restaurant-images');
	if(subSel.find('.restaurant-image-'+r_uid).length > 0) {
		subSel.find('.active').removeClass('active');
		subSel.find('.restaurant-image-'+r_uid).addClass('active');
	}
});

$('.f-hotel').on('mouseover touchstart', function(ev) {
	h_uid = $(ev.currentTarget).attr('data-hotel-uid');
	var subSel = $('.hotel-image');
	if(subSel.find('.hotel-image-'+h_uid).length > 0) {
		subSel.find('.active').removeClass('active');
		subSel.find('.hotel-image-'+h_uid).addClass('active');
	}
});

$('.f-restaurant').on('click', function(ev) {
	r_uid = $(ev.currentTarget).attr('data-rest-uid');
	google.maps.event.trigger(restaurantMarkers[r_uid], 'click');
});

function clickOpenHighlight(markerID) {
	if ( Cookiebot.consent.marketing ) {
		if(oldmarker != 0) {
			clickCloseHighlight(oldmarker);
		}
		google.maps.event.trigger(markers[markerID], 'click');
		oldmarker = markerID;
	} else {
		return true;
	}
}

function mouseOverHighlight(markerID) {
	if ( Cookiebot.consent.marketing ) {
		$('#hotel_img').attr('src',hotelPicutres[markerID]);
		// img = hotelPins[markerID];
		img = new google.maps.MarkerImage(hotelPins[markerID],null,null,null, new google.maps.Size(29, 34));
		markers[markerID].setIcon(img);
	}
}

function mouseOutDehighlight(markerID) {
	if ( Cookiebot.consent.marketing ) {
		if(oldmarker != markerID ) {
			$('#hotel_img').attr('src',hotelPicutres[oldmarker]);
			//markers[markerID].setIcon(imagePrefix+'map_pin_allgemein.png');
			markers[markerID].setIcon(markerCommon);
		}
	}
}

function clickOpenHighlightRestaurant(markerID) {
	if ( Cookiebot.consent.marketing ) {
		if(oldRest != 0) {
			clickCloseHighlightRestaurant(oldmarker);
		}
		google.maps.event.trigger(restaurantMarkers[markerID], 'click');
		oldmarker = markerID;
	}
}


function mouseOverHighlightRestaurant(markerID) {
	//$('#hotel_img').attr('src',hotelPicutres[markerID]);
	// img = hotelPins[markerID];
	if ( Cookiebot.consent.marketing ) {
		img = new google.maps.MarkerImage(hotelPins[markerID],null,null,null, new google.maps.Size(29, 34));
		restaurantMarkers[markerID].setIcon(img);
	}
}

function mouseOutDehighlightRestaurant(markerID) {
	if ( Cookiebot.consent.marketing ) {
		if(oldRest != markerID) {
			// $('#hotel_img').attr('src',hotelPicutres[oldmarker]);
			
			//restaurantMarkers[markerID].setIcon(imagePrefix+'map_pin_allgemein.png');
			if ( Cookiebot.consent.marketing ) {
				restaurantMarkers[markerID].setIcon(markerCommon);
			}
		}
	}
}

function clickCloseHighlight(markerID) {
	if ( Cookiebot.consent.marketing ) {
		infowindow.close();
		$('#hotel_'+markerID).toggleClass('hover');
		// var image = imagePrefix+'map_pin_allgemein.png';
		markers[markerID].setIcon(markerCommon);
		oldmarker = 0;
	}
}

function clickCloseHighlightRestaurant(markerID) {
	if ( Cookiebot.consent.marketing ) {
		infowindow.close();
		$('#restaurants_'+markerID).toggleClass('hover');
		// var image = imagePrefix+'map_pin_allgemein.png';
		restaurantMarkers[markerID].setIcon(markerCommon);
		oldmarker = 0;
	}
}


(function( $ ) {
    $.fn.initHotelMap = function(options) {
        var settings = $.extend( {
        }, options);
        
        var $this = $(this);
        
        var methods = {
            
            init: function () {

                var $self = $(this);
                var $close = $('.f-close-hotel-info-area');
                
                $self.click(
                    function (ev) {
                        var tmp_hotelClasses = $(this).attr('class').split(' ');
                        var tmp_hotelClass = tmp_hotelClasses[2];
                        var tmp_hotelClassCropped = tmp_hotelClass.substring(7, 50);
                        var tmp_hotelMarkerPositionLeft = parseInt($(this).css("left")) - 174;
                        var tmp_hotelMarkerPositionTop = parseInt($(this).css("top")) + 60;

                        $(this).parent().find('.hotel-info-area').each(function() {
                            var a = $(this).attr('class').split(' ');
                            if(a[1] == tmp_hotelClassCropped ) {
                                $(this).fadeIn();
                                $(this).css({
                                    left: tmp_hotelMarkerPositionLeft,
                                    top: tmp_hotelMarkerPositionTop
                                    
                                });

                            } else {
                                $(this).fadeOut();
                            }
                            
                        });
                    }
                );
                
                $close.click(
                    function (ev) {
                        $(this).parent().fadeOut();
                    }
                );
            
            }
            

        }
        
        $(this).each(function() {
            methods.init.apply( this );
        });
    }
})( jQuery );
// NEWSLETTER FORM
//-----------------------------------------------
(function( $ ) {
    $.fn.initNewsletterForm = function(options) {
        var settings = $.extend( {
        }, options);
        
        var $this = $(this);
        
        var methods = {
            
            init: function () {

                var $self = $(this);
                var $divToShow = $(this).find('.form-hidden');
                var $privacyToShow = $('section.newsletter').find('.f-hidden');
                var $open = $(this).find('.f-open-newsletterform');
                var $close = $(this).find('.f-close-newsletterform');
                
                $open.click(
                    function (ev) {
                        ev.preventDefault();
                        $divToShow.toggleClass('open');    
                        $privacyToShow.toggleClass('open');
                    }
                );
                
                $close.click(
                    function (ev) {
                        $divToShow.removeClass('open');
                        $privacyToShow.removeClass('open');
                    }
                );
            
            }
            

        }
        
        $(this).each(function() {
            methods.init.apply( this );
        });
    }
})( jQuery );

function submitCallback() {
    $('.selectpicker').selectpicker({
          dropupAuto: false
    });
    $('section.newsletter .inner form .form-hidden').addClass('open');
        
}

//call form functions to render select and checkboxes again
$(function(){
	// newsletter formular
	$(".Tx-Formhandler:has(FORM[id=\"formhandler_newsletter_form\"])").on('submitFinished', function(event, data, status) {
		submitCallback();
	});
	// contact formular + voucher
	$(".Tx-Formhandler:has(FORM[id=\"contact-form\"])").on('submitFinished', function(event, data, status) {
		callCustomSelectFields();
	});
});
$(document).ready(function() {
   
	$('.f-voucher-hotel-select').selectVoucherOffers({});


});

function voucherFormCheckboxDifferentBillingAddress() {
    
    $('.selectpicker').selectpicker({
          dropupAuto: false
    });
   
    $('#differentBilligAddress').click(function() {
        if($('#differentBilligAddress').is(':checked')) { 
            $('.invoiceAddress').removeClass('hidden');
         } else {
             $('.invoiceAddress').addClass('hidden');
         }
    });
    
    if($('#differentBilligAddress').is(':checked')) {
        $('.invoiceAddress').removeClass('hidden');
    } else {
        $('.invoiceAddress').addClass('hidden');
    }
    
	$('.f-voucher-hotel-select').selectVoucherOffers({});
    
}


// re ini custom select field (bugfix after updates 02.06.2016)
function callCustomSelectFields() {
    $('.selectpicker').selectpicker({
          dropupAuto: false
    });
}
    
(function( $ ) {
    $.fn.selectVoucherOffers = function(options) {
        var settings = $.extend( {
            
        }, options);
        
        var $this = $(this);
        
        var methods = {
            init: function () {
                var $self = $(this);
                $self.change(
                  function (ev) {
                	  $('.f-voucher-hotel-offer-div').removeClass('show');
                	  $('.rooms-hidden').removeClass('show');
                	  $('.fieldset-arrangements').removeClass('no-border');
                	  $('.f-voucher-hotel-offer-div').each( 
                		function () {
                			//console.log($self.val());
                			//console.log($(this).data('connect-hotel'));
                			if ( $self.val() == $(this).data('connect-hotel') ) {
                				$(this).addClass('show');
                				$('.rooms-hidden').addClass('show');
                				$('.fieldset-arrangements').addClass('no-border');
                			}
                			
                		}
                	  );
                    }
                );
            
            }
        }
        
        $(this).each(function() {
            methods.init.apply( this );
        });
    }
})( jQuery );



$(document).ready(
	function () {
		 $('img').imageCropper({});
		 
	}
);
	
	/*
    Plugin Rohgeruest
*/
(function( $, viewport ) {
    $.fn.imageCropper = function(options) {
        var settings = $.extend( {
            
        }, options);
        var $this = $(this);
        var $viewport = 'xs';
        var $retina = window.devicePixelRatio > 1.5;
        
        

        var $this = $(this);
        
        var methods = {
            init: function () {
                var $self = $(this);
                $self.data('cropper-org-src',$self.attr('src'));
                
            }, 
        	checkViewPort: function () {
                if ( viewport.is('xs') ) {
                	$viewport = 'xs';
                } else if ( viewport.is('md') ) {
                	$viewport = 'md';
                } else if ( viewport.is('sm') ) {  
                	$viewport = 'sm';
                } else if ( viewport.is('lg') ) {  
                	$viewport = 'md';
                }
                // console.log($viewport);
                
            },
            changeSource: function () {
    			$this.each(
					function() {
						if ( $retina ) {
							if ( $(this).data('cropper_'+$viewport+'-retina') != "" ) {
								$(this).attr('src', $(this).data('cropper_'+$viewport+'-retina'));
							} else if ( $(this).data('cropper_'+$viewport) != "" ) {
								$(this).attr('src', $(this).data('cropper_'+$viewport));
								
							}	
							
						} else {
							if ( $(this).data('cropper_'+$viewport) != "" ) {
								$(this).attr('src', $(this).data('cropper_'+$viewport));
							}						
						}
	
					}
				);
            }
        }
        /*
         * Todo check viewport muss noch ausgeführt werden
         * 
         */
        $(this).each(function() {
            methods.init.apply( this );
        });
        methods.checkViewPort();
        methods.changeSource();
    }
})( jQuery, ResponsiveBootstrapToolkit );
	
function initHotelMap() {
	window.styleArray = [
	    {
	        "featureType": "water",
	        "stylers": [
	            {
	                "visibility": "on"
	            },
	            {
	                "color": "#b5cbe4"
	            }
	        ]
	    },
	    {
	        "featureType": "landscape",
	        "stylers": [
	            {
	                "color": "#efefef"
	            }
	        ]
	    },
	    {
	        "featureType": "road.highway",
	        "elementType": "geometry",
	        "stylers": [
	            {
	                "color": "#83a5b0"
	            }
	        ]
	    },
	    {
	        "featureType": "road.arterial",
	        "elementType": "geometry",
	        "stylers": [
	            {
	                "color": "#bdcdd3"
	            }
	        ]
	    },
	    {
	        "featureType": "road.local",
	        "elementType": "geometry",
	        "stylers": [
	            {
	                "color": "#ffffff"
	            }
	        ]
	    },
	    {
	        "featureType": "poi.park",
	        "elementType": "geometry",
	        "stylers": [
	            {
	                "color": "#e3eed3"
	            }
	        ]
	    },
	    {
	        "featureType": "administrative",
	        "stylers": [
	            {
	                "visibility": "on"
	            },
	            {
	                "lightness": 33
	            }
	        ]
	    },
	    {
	        "featureType": "road"
	    },
	    {
	        "featureType": "poi.park",
	        "elementType": "labels",
	        "stylers": [
	            {
	                "visibility": "on"
	            },
	            {
	                "lightness": 20
	            }
	        ]
	    },
	    {},
	    {
	        "featureType": "road",
	        "stylers": [
	            {
	                "lightness": 20
	            }
	        ]
	    }
	];
    if ($("#map-canvas").length > 0) {
    	
        var isMobile = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/); 
        var isDraggable = !isMobile ? true : false;

        var hotelMap, myLatLng, myZoom, marker, geoPos, service;
        myZoom = 14;
        var geocoder    =   new google.maps.Geocoder();
        var address     =   $('#map-canvas').attr('data-location-address');
        // var pin         =   $('#map-canvas').attr('data-pin-path');
        var pin 		= 	new google.maps.MarkerImage( $('#map-canvas').attr('data-pin-path'),null,null,null, new google.maps.Size(29, 34));
        var placeId     =   $('#map-canvas').attr('data-location-placeid');
        if(typeof address !== 'undefined' && address != "") {
        	geocoder.geocode( {'address': address}, function(results, status){
                if(status == google.maps.GeocoderStatus.OK) {
                    myLatLng = results[0].geometry.location;
                    	var mapOptions = {
                            zoom: myZoom,
                            draggable: isDraggable,
                            mapTypeId: google.maps.MapTypeId.ROADMAP,
                            scrollwheel: false,
                            streetViewControl: false,
                            center: myLatLng
                        }; 
                        
                        hotelMap = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 
                        hotelMap.setOptions({styles: styleArray}); 
//                                    service = new google.maps.places.PlacesService(hotelMap);
                        
                        marker = new google.maps.Marker({
                        	map: hotelMap,
                        	position: myLatLng,
                        	icon: pin
                        });
                        
                                       
                        google.maps.event.addDomListener(window, "resize", function() {
                        	hotelMap.setCenter(myLatLng);
                        });
                        google.maps.event.addListener(hotelMap, 'click', function() {
                            hotelMap.setOptions({ draggable: true });
                        });
                } else {
                    console.log('Geocode was not successful for the following reason: ' + status);
                }
            });  
        } else {
            geocoder.geocode( {'placeId': placeId}, function(results, status){
                if(status == google.maps.GeocoderStatus.OK) {
                    myLatLng = results[0].geometry.location;
                    var mapOptions = {
                            zoom: myZoom,
                            draggable: isDraggable,            
                            mapTypeId: google.maps.MapTypeId.ROADMAP,
                            scrollwheel: false,
                            streetViewControl: false,
                            center: myLatLng
                        }; 
                        
                        hotelMap = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
                        hotelMap.setOptions({styles: styleArray});
                        service = new google.maps.places.PlacesService(hotelMap);
                        
                        marker = new google.maps.Marker({
                            map: hotelMap,
                            position: myLatLng,
                            icon: pin
                        });
                        
                        google.maps.event.addDomListener(window, "resize", function() {
                            hotelMap.setCenter(myLatLng);
                        });
                        google.maps.event.addListener(hotelMap, 'click', function() {
                            hotelMap.setOptions({ draggable: true });
                        });
                } else {
                    console.log('Geocode was not successful for the following reason: ' + status);
                }
            });  
        } 
        
    }
}

            
      
            
            
function initialize() {
    var mapOptions = {
        zoom: myZoom,
        draggable: isDraggable,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        scrollwheel: false,
        streetViewControl: false,
        center: myLatLng
    }; 
    
    hotelMap = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 
    hotelMap.setOptions({styles: styleArray}); 
//                service = new google.maps.places.PlacesService(hotelMap);
    
    marker = new google.maps.Marker({
    	map: hotelMap,
    	position: myLatLng,
    	icon: pin
    });
    
                   
    google.maps.event.addDomListener(window, "resize", function() {
    	hotelMap.setCenter(myLatLng);
    });
    google.maps.event.addListener(hotelMap, 'click', function() {
        hotelMap.setOptions({ draggable: true });
    });

}
            
function initialize2() {
    var mapOptions = {
        zoom: myZoom,
        draggable: isDraggable,            
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        scrollwheel: false,
        streetViewControl: false,
        center: myLatLng
    }; 
    
    hotelMap = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
    hotelMap.setOptions({styles: styleArray});
    service = new google.maps.places.PlacesService(hotelMap);
    
    marker = new google.maps.Marker({
        map: hotelMap,
        position: myLatLng,
        icon: pin
    });
    
    google.maps.event.addDomListener(window, "resize", function() {
        hotelMap.setCenter(myLatLng);
    });
    google.maps.event.addListener(hotelMap, 'click', function() {
        hotelMap.setOptions({ draggable: true });
    });

}

            



   
$(document).ready(
    function () {
         $('body').xsFunctions({});
         
    }
);





/*
    XS Functions
*/
(function( $, viewport ) {
    $.fn.xsFunctions = function(options) {
        var settings = $.extend( {
            
        }, options);
        var $this = $(this);              
        var methods = {
            init: function () {
                var $self = $(this);  
                
                if ( viewport.is('xs') ) {
                    $('.ce-room-icons').owlCarousel({
                        loop:true,
                        margin:10,
                        nav:false,
                        responsive:{
                            0:{
                                items:1
                            },
                            600:{
                                items:3
                            },
                            1000:{
                                items:5
                            }
                        }
                    });
                }               
            }
        }
        /*
         * Todo check viewport muss noch ausgeführt werden
         * 
         */
        $(this).each(function() {
            methods.init.apply( this );
        });
    }
})( jQuery, ResponsiveBootstrapToolkit );
(function( $ ) {
    $.fn.initSubmenu = function(options) {
    	
	    var settings = $.extend({
	        
	    }, options);
	    
	    var $this = $(this);
	    var $submenu = $('.sidebar.sidebar-menu');
        var $submenuPosTop = $submenu.offset().top;
	    	

	    var methods = {
	    		
	        init: function () {
	            var $self = $(this);
	        },
	        
	        stickyCheck: function (e) {
	        	var $scrollTop = $(window).scrollTop();
	        	var $windowWidth = window.innerWidth;    	
	        	
	        	if ( $scrollTop >= $submenuPosTop && $windowWidth <= 991 ) {
	        		$submenu.addClass("sticky");

	        		if( $submenu.find('ul').first().hasClass('open') ) {
	        			
	        			$submenu.find('ul').first().height($(this).height());
	        			
	                    $('body').css({
	                    	'overflow-y' : 'hidden'
	                	});
	                    // document.body.addEventListener('touchmove', e.preventDefault, { passive: false });

	        		}
	
	        		
	        	} else {
	        		$submenu.removeClass("sticky");
	        		$submenu.find('ul').first().css('height','auto');

	        	}
	        }
	        
	        
	    }
	    
        $(this).each(function() {
            methods.init.apply( this );
        });
	    
        $(window).resize(methods.stickyCheck);
        $(window).scroll(methods.stickyCheck);
        $(window).load(methods.stickyCheck);
    
    }
    
})( jQuery );
$(document).ready(function(){
		$('html.no-placeholder input[placeholder], html.no-placeholder textarea[placeholder]').placeholder();
		
		$('html.no-object-fit .news-detail-mainteaser .img-item img, html.no-object-fit .carousel-inner > .item > a > img, html.no-object-fit .carousel-inner > .item > img, section.teaser-full-width > .teaser-bg-image > img, .tx-atldb .carousel .item img, html.no-object-fit .teaser.thumbnail .thumbnails img').objectFit({type: 'cover', hideOverflow: false});
		
	}
)

/*
$(document).ready(function(){
        $('html.no-placeholder input[placeholder], html.no-placeholder textarea[placeholder]').placeholder();
        $('html.no-object-fit .news-detail-mainteaser .img-item img, html.no-object-fit .carousel-inner > .item > a > img, html.no-object-fit .carousel.fade-carousel .carousel-inner > .item > img, section.teaser-full-width > .teaser-bg-image > img, .tx-atldb .carousel .item img').objectFit({type: 'cover', hideOverflow: false});
        
    }
)
*/
// startpage randomizer
$(document).ready(function() {
	'use strict'
	
	if($('.fn-reviewcontainer').length > 0) {
		var reviews = $('.fn-reviewcontainer').find('.fn-randomizer');
		var rng = Math.floor((Math.random() * reviews.length) + 1);
		$(reviews[rng]).removeClass('hidden');
	}
});

// filter for group
$(document).ready(function() {
	'user strict'
	
	var selectPicker = $('.f-review-select'); 
	
	if(selectPicker.length > 0) {
		selectPicker.on('change', function(ev) {
			var targetURL = $(this).find('option:selected').data('targeturl');
			window.location.href = targetURL;
		});
	}
});
$(document).ready(function() {
	
	$(".ce-table table").each(function(i) {

		var cloneHeadRows = $(this).find('tr.head');

		$(this).find("td.caption").each(function(j) {
			
			if( $(this).parent().prev().hasClass("body") ) {
				$(this).parent().prev().addClass("row-last");
			}
			
			
			var colspan = 0;
			if(j > 0) {
				colspan = $(this).attr('colspan');
				tmp = $(this);
				counter = 0;
				cloneHeadRows.each(function(k) {
					if (k == 0) {
						$('<tr class="empty"><td colspan="' + colspan + '"></td></tr>').insertBefore(tmp.parent());	
					}
					$(this).clone(true).addClass("cloned").insertBefore(tmp.parent());
					
				});

			}
		});
		
		var clone = $(this).clone(true).addClass('clone');

		if($(this).find("caption").length > 0) {
			clone.addClass("more-space-top");
		}
		
		clone.find("caption").remove();
		clone.appendTo($(this).parent());
	});
	
});
//Main
//-----------------------------------------------
$('.hotel-booking-form .btn-blue').bookingFormSubmit({});
$('.selectpicker').selectpicker({
      dropupAuto: false
});
/* $('.f-open-hotel-info-area').initHotelMap({}); */
$('section.newsletter .inner form').initNewsletterForm({});
$('.scrollToTop').initToTopButton();

voucherFormCheckboxDifferentBillingAddress();

if($('.sidebar.sidebar-menu').length > 0) {
	$('.sidebar.sidebar-menu').initSubmenu({});

}
	
$(document).delegate('*[data-toggle="lightbox"]', 'click', function(event) {
    event.preventDefault();
    $(this).ekkoLightbox();
});

$('.gallery-add-type-1440591122').each(
    function () {
        $(this).attr('href',$(this).attr('href')+'?type=1440591122');
    }
);

$('.f-offer-select').each(
	function () {
		$(this).change (
			function () {
				var target = $(this).find(":selected").data('target');
				if ( target == '_blank') {
					window.open($(this).val(),'_blank');
				} else {
					location.href = $(this).val();
				}
				
			}
		);
	}	
);


 $(document).ready(function() {
     var showPopup = true;
     if($('#popupModal').length > 0) {
         var sesKey = $('#popupModal').data('cookie-key');
        document.cookie.split(';').map(function(v,i) {
            if(v.split("=")[0].trim() == sesKey){
                showPopup = false;
            }
        });
    
        if(showPopup) {
            $('#popupModal').removeClass('hidden');
            $('#popupModal').modal({
            modal: 'show'
            });
            $('body').addClass('modal-open-popup');
            $('#popupModal').on('hide.bs.modal', function (e) {
                $('body').removeClass('modal-open-popup');    
            });
            // document.cookie = sesKey+"=1";
            document.cookie=sesKey+"=1;path=/";
        }
	}
     
     $('.keep-open').on({
	    "shown.bs.dropdown": function() { this.closable = false; },
	    "click":             function() { this.closable = true; },
	    "hide.bs.dropdown":  function() { return this.closable; }
	});
     
	$("#submenu").click(function(e){
		e.stopPropagation();
	});
     
    $('#submenu').on('shown.bs.dropdown', function(e) {
        if( !$(this).find('li.active').hasClass('open') ) {
            $(this).find('li.active').addClass('open');
        };
        
        if( $('.sidebar-menu').hasClass('sticky') ) {
        	$(this).closest('.ce-sidebar-submenu').find('ul').first().height($(this).height());
            $('body').css({
            	'overflow-y' : 'hidden'
        	});
            // document.ontouchmove = function(e) { e.preventDefault(); }
            // document.body.addEventListener('touchmove', e.preventDefault, { passive: false });
        } 
    });
 
     $('#submenu').on('hidden.bs.dropdown', function(e) {
    	 $(this).closest('.ce-sidebar-submenu').find('ul').first().height($(this).height());  	 
    	 if( $('.sidebar-menu').hasClass('sticky') ) {
	         $('body').css({
	       	   'overflow-y' : 'auto'
	         }); 
    	 }
     });

     $('.dropdown-menu a.dropdown-toggle').on('click', function(e) {
		var $el = $(this);
		var $parent = $(this).offsetParent(".dropdown-menu");
		if (!$(this).next().hasClass('show')) {
			$(this).parents('.dropdown-menu').first().find('.show').removeClass("show");
		}
		var $subMenu = $(this).next(".dropdown-menu");
		$subMenu.toggleClass('show');

		$(this).parent("li").toggleClass('show');

		$(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function(e) {
			$('.dropdown-menu .show').removeClass("show");
		});

		if (!$parent.parent().hasClass('navbar-nav')) {
			$el.next().css({
				"top" : $el[0].offsetTop,
				"left" : $parent.outerWidth() - 4
			});
		}
		return false;
	});
});


$('.gallery-add-type-1441615745').each(
    function () {
        $(this).attr('href',$(this).attr('href')+'&type=1441615745');
    }
);

$('.f-open-gallery-detail').magnificPopup({
    type: 'ajax',
    closeMarkup: '<button title="%title%" type="button" class="mfp-close">b</button>',
    callbacks: {
      close: function() {
        this.content.find('.royalSlider').data('royalSlider').destroy();
      }
    }
});
  
$('.f-open-room').magnificPopup({
    type: 'image',
    closeMarkup: '<button title="%title%" type="button" class="mfp-close">b</button>',
    mainClass: 'roomImage'
}); 



$('.f-open-gallery').click(function(ev) {
	
	ev.preventDefault();
	var srcSelector = $(this).attr('data-mfpcmarker');
	var slideindex = $(this).attr('data-slideindex');
	
	$.magnificPopup.open({
		items: {
			//src: '[id^="gallery"]',
			src: srcSelector,
			type: 'inline'
		},
		closeMarkup: '<button title="%title%" type="button" class="mfp-close">b</button>',
		midClick: false,
		closeOnContentClick: false,
		closeOnBgClick: false,
		callbacks: {
		    open: function() {
		    	$('html, body').css("overflow", "hidden", "position");
		    	// $('body').addClass('modal-open');
		    	document.addEventListener('touchmove', this.preventDefault, {passive: false});
		    	// document.addEventListener('touchforcechange', this.preventDefault, {passive: false});
		    },
		    close: function() {
		    	 $('body').css("overflow", "");
		    	 $('body').removeClass('modal-open');
		    	// document.addEventListener('touchmove', this.preventDefault, {passive: true});
		    	// document.addEventListener('touchforcechange', this.preventDefault, {passive: true});	

		    }
		 }	
	});
	
	renderGallerySlider(srcSelector, slideindex);
});


$('.f-open-more-infobands').click(function(){
    $(this).closest('.teaser').find('.infobands').toggleClass('open');
});


$('.f-room-swap').on("mouseover touchstart", function (ev) {
	var room = $(ev.currentTarget).attr('id');
	var subSel = $('.room-images');
	subSel.find('.active').removeClass('active');
	subSel.find('.'+room).addClass('active');
});


$(document).ready(function() {
   
   /*
	if( $('section.intro').length > 0 ) {
        if( !$('section.intro').hasClass('intro-sticky-disabled') ) {    
            $('section.intro').isSticky({});
        }
    }
	*/
   
   $('.f-google-opt-out').click(
		function (ev) {
			ev.preventDefault();
			var gaProperty = 'UA-1946151-1';
			var disableStr = 'ga-disable-' + gaProperty;
			document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
			window[disableStr] = true;
		}
	);
   


});

$(window).load(function() {
	if($('.hotel-image').length > 0) {
		resizeImgs($('.hotel-image').children("picture").first().find("img").height(), $('.hotel-image'));
	}
	
	if($('.restaurant-images').length > 0) {
		resizeImgs($('.hotel-image').children("picture").first().find("img").height(), $('.restaurant-images'));
	}
	
	if($('.room-images').length > 0) {
		resizeImgs($('.room-images').children("picture").first().find("img").height(), $('.room-images'));
		
	}
	
	// $('.f-sanatize-top').sanatizeHeight({});
	
});


$(window).resize(function() {
	if($('.hotel-image').length > 0) {
		resizeImgs($('.hotel-image').children("picture").first().find("img").height(), $('.hotel-image'));
	}
	
	if($('.restaurant-images').length > 0) {
		resizeImgs($('.hotel-image').children("picture").first().find("img").height(), $('.restaurant-images'));
	}
	
	if($('.room-images').length > 0) {
		resizeImgs($('.room-images').children("picture").first().find("img").height(), $('.room-images'));
	}
});


function resizeImgs(height, obj) {
	$(obj).height(height);
}


(function( $ ) {
    $.fn.isSticky = function(options) {
        var settings = $.extend( {
            
        }, options);
        
        var $this = $(this);
        
        var $minHeight = 0;
        var $topOffset = 0;
        var $container;
        var $el;
        
        
        var methods = {
            init: function () {
                $minHeight = $(this).height();
                $topOffset = $(this).offset().top;
                $container = $(this);
                $el = $(this).find('.ce-text').first();
                $elHeight = $el.height()+80;
                
//                console.log($minHeight);
            },
            scrollFunction: function () {
                scrollTop = $(window).scrollTop();
                sectionHeight = $container.height();
                maxOffset = $topOffset+sectionHeight;
//                console.log("xx");
//                console.log(maxOffset);
//                console.log(scrollTop);
                if ( scrollTop > $topOffset ) {
                    if ( maxOffset > scrollTop+$elHeight) {
                        $el.css('top', (scrollTop-$topOffset));
                   }
                    
                } else {
                    $el.css('top',0);
                }
            }
        }
        if ( navigator.userAgent.indexOf('MSIE') == -1  && navigator.userAgent.indexOf('Edge') == -1  && navigator.userAgent.indexOf('Trident') == -1 && navigator.userAgent.match(/iPad/i) == null && $(window).width() > 1190 )  {
            
            $(this).each(function() {
                methods.init.apply( this );
            });
            $(window).scroll(methods.scrollFunction);
        }
    }
})( jQuery );

function disableTouchmoveIOSMobile(ev) {
	var target = $(ev.target);
	if(!target.parents('#submenu').length > 0) {
		ev.preventDefault();
	}
}

$(document).ready(function () {
	if(window.location.href.search('id=1538') > 1) {
		if(navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
			
			$('#submenu').on('shown.bs.dropdown', function(ev) {
				if($(this).parents('.sticky').length > 0) {
					$(document).on('touchmove', disableTouchmoveIOSMobile);
				}
			});
			
			$('#submenu').on('hidden.bs.dropdown', function(ev) {
				if($(this).parents('.sticky').length > 0) {
					$(document).off('touchmove', disableTouchmoveIOSMobile);
				}
			});
			/*var lastHeight = 0;
			
			$('#submenu').on('shown.bs.dropdown', function(e) {
				//$(window).off("scroll");
				if($(this).parents('.sidebar').hasClass('sticky')) {
					//var heightSlider = $('#myCarousel').height();
					//var menuTop = $(window).scrollTop() - heightSlider - 58;
					lastHeight = $(window).scrollTop();
					//$('.sidebar-menu').css('top', menuTop+'px');
					//$('.sidebar-menu').css('width', 'calc(100% - 58px)');
					$('body').css('top', '-'+lastHeight+'px');
					$('body').css('position', 'fixed');
					$('body').css('left', '0px');
					$('body').css('right', '0px');
				}
			});
			
			$('#submenu').on('hidden.bs.dropdown', function(e) {
				//$('.sidebar-menu').css('top', '');
				//$('.sidebar-menu').css('width', '');
				$('body').removeAttr('style');
				if(lastHeight > 0) {
					$(window).scrollTop(lastHeight);
				}
				lastHeight = 0;
				//$(window).initSubmenu("scroll");
			});*/
		}
	}
	
  if ( $("#tischreservierung").length > 0 ) {
   
  var connectionId = $("#tischreservierung").data('connectionid');

  $(function () { $("#tischreservierung").lbuiDirect(
    {
         connectionid  :  connectionId,
         style  :  {
               baseColor  :  "404040"
             },
         gaAccountNumber  :  "UA-39564987-1",
         language  :  "de-DE",
         popupWindow  :  {
           enabled  :  true}
        });
    });

  }
  


});


/*
    Plugin Rohgeruest
*/
(function( $ ) {
    $.fn.xxXX = function(options) {
        var settings = $.extend( {
            
        }, options);
        
        var $this = $(this);
        
        var methods = {
            init: function () {
                var $self = $(this);
                $self.click(
                  function (ev) {
                    null;
                    }
                );
            
            }
        }
        
        $(this).each(function() {
            methods.init.apply( this );
        });
    }
})( jQuery );

$(function(){
	$(".Tx-Formhandler").on('submitFinished', function(event, data, status) {
		if(data.form)
		{
			strcode = data.form;
			var scripts = new Array();         // Array which will store the script's code
			  
			  // Strip out tags
			  while(strcode.indexOf("<script") > -1 || strcode.indexOf("</script") > -1) {
			    var s = strcode.indexOf("<script");
			    var s_e = strcode.indexOf(">", s);
			    var e = strcode.indexOf("</script", s);
			    var e_e = strcode.indexOf(">", e);
			    
			    // Add to scripts array
			    scripts.push(strcode.substring(s_e+1, e));
			    // Strip from strcode
			    strcode = strcode.substring(0, s) + strcode.substring(e_e+1);
			  }
			  
			  // Loop through every script collected and eval it
			  for(var i=0; i<scripts.length; i++) {
			    try {
			      eval(scripts[i]);
			    }
			    catch(ex) {
			      // do what you want here when a script fails
			    }
			  }
		}
	});
});
var bookingCalendar = {	
	/**
	* Ist ein Datum g�ltig
	* @param y: Jahr
	* @param m: Monat
	* @param d: Tag
	* @return true = g�ltig, false = ung�ltig
	*/
	isValidDate: function(y,m,d)
	{
		//--Gibt Datum des letzten Tag des Monats aus--
		var thisDate = new Date(y,m,1);
		//einen Tag weiter schalten
		thisDate.setMonth(thisDate.getMonth()+1);
		//vom ersten Tag des n�chsten monats
		//ein Tag abziehen
		thisDate.setTime(thisDate.getTime() - 12*3600*1000);
		
		if (d>thisDate.getDate())
			{return false;}
		else
			{return true;}
	},
	/**
	* ermittelt den letzten Tag des aktuellen Monats
	* @return: gibt letzten Tag zur�ck
	*/
	getLastDayOfMonth: function()
	{
		var d = bookingCalendar.getDateFromMemory();
		//einen Tag weiter schalten
		d.setMonth(d.getMonth()+1);
		//den ersten des Monats setzen
		d.setDate(1);
		//vom ersten Tag des n�chsten monats
		//ein Tag abziehen
		d.setTime(d.getTime() - 12*3600*1000);
		return d.getDate();
	},
	/**
	* setzt das �bergebene Datum in die Speicherzelle
	* @param d: datum zum schreiben in die Speicherzelle
	*/
	setDateToMemory: function(d)
	{
		document.all.date_memory.innerHTML = d.getFullYear()+','+(d.getMonth()+1)+','+d.getDate();
	},
	/**
	* Gibt das Datum aus der Speicherzelle zur�ck
	* @return: datum in Date format
	*/
	getDateFromMemory: function()
	{
		var s = document.all.date_memory.innerHTML;
		var z = s.split(',');
		return new Date(z[0],z[1]-1,z[2]);
	},
	/**
	* schaltet einen Monat Weiter
	*/
	nextMonth: function()
	{
		var d = bookingCalendar.getDateFromMemory();
		var m = d.getMonth()+1;
		var y = d.getFullYear();
		//Falls Jahres wechsel
		if ((m+1)>12)
		{
			m = 0;
			y = y + 1;
		}
		d = new Date(y,m,01);
		bookingCalendar.setDateToMemory(d);
		bookingCalendar.loadcalendar();
	},
	/**
	* schaltet einen Monat zur�ck
	*/
	prevMonth: function()
	{
		var d = bookingCalendar.getDateFromMemory();
		var m = d.getMonth()+1;
		var y = d.getFullYear();
		
		//Falls Jahres1wechsel
		if ((m-1)<1)
		{
			m = 11;
			y = y - 1;
		}
		else
		{
			m = m - 2;
		}
		d = new Date(y,m,01);
		bookingCalendar.setDateToMemory(d);
		
		bookingCalendar.loadcalendar();
	},
	month: [],
	reservations: [],
	/**
	* zum erstmaligen aufrufen des Kalenders
	*/
	initCalendar: function(month, reservations)
	{
		bookingCalendar.month = month;
		bookingCalendar.reservations = reservations;
		//heutiges Datum setzen
		var d = new Date();
		//aktuelles Datum speichern
		bookingCalendar.setDateToMemory(d);
		//Calender laden
		bookingCalendar.loadcalendar();
	},
	/**
	*	L�d die Tabelle mit dem �bergebenen Datum (Monat)
	*/
	loadcalendar: function() 
	{
		//aktuelles Datum holen (1. des Monats)
		var d = bookingCalendar.getDateFromMemory();
		//Monat ermitteln aus this_date (z�hlen beginnt bei 0, daher +1)
		var m = d.getMonth(); 
		//Jahr ermitteln aus this_date (YYYY)
		var y = d.getFullYear();
		//Monat und Jahr eintragen
		document.all.calendar_month.innerHTML = bookingCalendar.getMonthname(m+1) + ' ' + y;
		//ersten Tag des Monats festlegen
		var firstD = d;
		firstD.setDate(1);
		//Wochentag ermitteln vom 1. des �bergebenen Monats (Wochentag aus firstD)
		var dateDay = firstD.getDay(); //So = 0, Mo = 1 ... Sa = 6
		//Sonntag soll den Wert 7 darstellen -> Mo = 1 ... So = 7
		dateDay = (dateDay == 0) ? 7: dateDay;
		//Speicher f�r aktuelle Zelle
		var entry = '';
		//Speicher f�r aktuellen Tag
		var zahl = '';
		//heutiges Datum ermitteln
		var hD = new Date();
		
		//Alle Kalender Spalten durchz�hlen
		for (var i = 1; i <= 42; i++)
		{
			//holen der aktuellen Zelle
			entry = document.getElementById('calendar_entry_'+i);
			entry.classList.remove('reservated', 'today'); 
			//errechnen der Tages Zahl
			zahl = (i+1)-dateDay;
			//datum zusammenschreiben
			var dx = new Date(y,m,zahl);
	
			//Eintragen der Daten ab ersten Tag im Monat und wenn es ein g�ltiges Datum ist
			if (i >= dateDay && bookingCalendar.isValidDate(y,m,zahl))
			{
				entry.innerHTML = zahl;
				entry.hidden = false;
				entry.style.visibility='visible';
				entry.style.border = 'solid 1px';
				
				//finde reservierungen
				if (bookingCalendar.reservations.includes(zahl+'.'+(m+1)+'.'+y))
				{
					 entry.classList.add('reservated'); 
				}
							
				//heutiges Datum hervorheben
				if (hD.getDate() == dx.getDate() && 
					hD.getMonth() == dx.getMonth() && 
					hD.getYear() == dx.getYear())
				{
					entry.classList.add('today'); 
				}
			}
			else
			{
				entry.innerHTML = '';
			
				if (i>= dateDay)
				{//Wenn Kalenderende
					//Zelle = hidden
					entry.hidden = true;
					entry.style.border = '0px';
				}
				else
				{//Wenn Kalenderanfang
					//Border-width = 0px
					entry.style.border = '0px';
				}
			} 				  				
		}		
	},
	/**
	* Gibt den Monatsnamen anhand der Monatsnummer zur�ck
	*@param monthnumber: Monatsnummer (1-12)
	*/
	getMonthname: function(monthnumber)
	{
		return bookingCalendar.month[monthnumber-1];
	}
}

$(document).ready(function() {
	$('#bookingCalendarAtl').each(function() {
		$el = $(this);
		bookingCalendar.initCalendar($el.data('months').split(','), $el.data('reservations').split(','))
		
		$el.find('.fn_prev_month').click(bookingCalendar.prevMonth)
		$el.find('.fn_next_month').click(bookingCalendar.nextMonth)
	})
})

$(document).ready(function () {
   
    const metaElem = document.getElementById("navbar-meta");
    const headerElem = document.getElementById("navbar-wrapper");
    let metaElemHeight;

    if (headerElem) {

        if (metaElem) {
          metaElemHeight = metaElem.clientHeight;
        }
    
      const scrollOffset = metaElemHeight;

      window.addEventListener("scroll", () => {
        if (window.pageYOffset > scrollOffset) {
          metaElem.classList.add("is-sticky");
          headerElem.classList.add("is-sticky");
        } else {
            metaElem.classList.remove("is-sticky");
            headerElem.classList.remove("is-sticky");
        }
      });
    }

});