1/** 2 * before document ready 3 */ 4// the breakpoint we are at. 5var currentDeviceRange = new deviceRange(); 6 7function initTabs() { 8 $('.xx_tabs').find('.xx_tab-header').on('click', function(event) { 9 var $this = $(this); 10 var index = $this.data('index'); 11 var $parent = $this.parents('.xx_tabs'); 12 $parent.find('.xx_tab-header').removeClass('active'); 13 $this.addClass('active'); 14 $parent.find('.xx_tab-content').removeClass('active'); 15 $parent.find('.xx_tab-content[data-index=' + index + ']').addClass('active'); 16 }); 17} 18 19function initAccordions() { 20 $('.accordion').accordion({ 21 "transitionSpeed": 400 22 }); 23} 24 25function initScrollToContent() { 26 $('.js-scroll-to-element').click(function (e) { 27 e.preventDefault(); 28 var $scrollTarget = $(this).data('scroll-target'), 29 $scrollTargetElement = $($scrollTarget); 30 $('html, body').animate({ 31 scrollTop: $($scrollTargetElement).offset().top - 100 32 }, 600); 33 }); 34} 35 36function initBookingWidget() { 37 const initialArrivalDate = new Date(); 38 let initialDepartureDate = new Date(initialArrivalDate); 39 initialDepartureDate.setDate(initialArrivalDate.getDate() + 2); 40 41 // Set initial date 42 $('#booking-arrival').val(formatDate(initialArrivalDate)); 43 $('#booking-departure').val(formatDate(initialDepartureDate)); 44 45 $('#booking-arrival').change(function () { 46 let departureDate = new Date($(this).val()); 47 departureDate.setDate(departureDate.getDate() + 2); 48 departureDate = formatDate(departureDate); 49 50 if (departureDate.length !== 10) return; 51 52 $('#booking-departure').val(departureDate); 53 }); 54 55 function formatDate(date) { 56 const yyyy = String(date.getFullYear()).padStart(4, '0'); 57 const mm = String(date.getMonth() + 1).padStart(2, '0'); 58 const dd = String(date.getDate()).padStart(2, '0'); 59 60 return `${yyyy}-${mm}-${dd}`; 61 } 62} 63 64function markNeighborHoodMapContext() { 65 if (pageIdentifier === 18) { 66 var elementBody = document.getElementsByTagName('body')[0]; 67 elementBody.classList.add('o-neighborhood-map--active'); 68 console.log('Map loaded'); 69 } 70} 71 72/** 73 * Listens on scrolling events of the window and toggles logo display 74 * @param bodyClass 75 */ 76function bindScrollBodyClass(bodyClass) { 77 window.addEventListener('scroll', function () { 78 var bodyElement = document.body; 79 if (window.window.pageYOffset >= 66) 80 bodyElement.classList.add(bodyClass); 81 else 82 bodyElement.classList.remove(bodyClass); 83 }); 84} 85 86/** 87 * Open the ibe inside featherlight 88 * 89 * @param arrivalVar 90 * @param departureVar 91 * @param adultsVar 92 */ 93function openIBEinIframe(arrivalVar, departureVar, adultsVar, bookingIbe, bookingIbeUrl){ 94 95 var langCode = document.getElementsByTagName('html')[0].getAttribute('lang'), 96 adultsParam = (adultsVar > 0) ? '&adults=' + adultsVar : '', 97 roomNumber = (adultsVar > 2) ? Math.ceil(adultsVar / 2) : 1, 98 iFrameSrc = ''; 99 100 if(bookingIbe === 'travelclick'){ 101 var languageID = (langKey.substr(0,2) === 'de') ? 7 : 1, // DE_DE vs EN_US 102 // adding persons in a proper amount of rooms 103 roomParam = (roomNumber > 0) ? '&rooms=' + roomNumber : ''; 104 105 iFrameSrc = 'https://reservations.travelclick.com/107165?themeid=16204&languageid=' + languageID + '&datein=' + arrivalVar + '&dateout=' + departureVar + adultsParam + roomParam; 106 107 } else if (bookingIbe === 'booksecure') { 108 // IBE Url https://www.book-secure.com/index.php?s=results&property=demun31657&arrival=2020-10-08&departure=2020-10-09&adults1=1&children1=0&locale=de_DE¤cy=EUR&stid=uk5jfnhmd 109 var languageId = langCode.replace("-", "_"), 110 // Adjust request parameters for IBE 111 adultsParam = "&adults1=" + adultsVar; 112 113 if (roomNumber === 2) { 114 adultsParam = "&adults1=2&adults2=" + (adultsVar - 2); 115 } else if (roomNumber > 2) { 116 adultsParam = "&adults1=2&adults2=2&adults3=" + (adultsVar - 4); 117 } 118 // Define request parameter uri string 119 let requestParameters = "&stid=uk5jfnhmd¤cy=EUR" + adultsParam + "&children1=0&arrival=" + arrivalVar + "&departure=" + departureVar + "&locale=" + languageId; 120 console.log(requestParameters); 121 122 iFrameSrc = bookingIbeUrl + requestParameters; 123 } else if (bookingIbe === 'avp') { 124 var languageId = langCode.split('-')[0], 125 adultsParam = "&selectedAdultCount=" + adultsVar; 126 //let requestParameters = languageId + "/?arrivalDate=" + arrivalDate + "&departureDate=" + departureDate + adultsParam; 127 //iFrameSrc = bookingIbeUrl + requestParameters; 128 document.getElementById("AVP_language").value = langCode;
129 document.getElementById("AVP_arrivalDate").value = arrivalVar; 130 document.getElementById("AVP_departureDate").value = departureVar; 131 document.getElementById("AVP_selectedAdultCount").value = adultsVar; 132 document.getElementById("form-booking-request").submit(); 133 return true; 134 } else { 135 if (langCode.substr(0,2) === 'de') { 136 var language_id = 'de-DE'; 137 } else { 138 var language_id = 'en-US'; 139 } 140 iFrameSrc = 'https://be.synxis.com/?hotel=64039&chain=17536&arrive=' + arrivalVar + '&depart=' + departureVar + '&adult=' + adultsVar + '&locale=' + language_id + '&start=availresults'; 141 } 142 143 if(iOS === true){ 144 window.open(iFrameSrc,'_blank'); 145 } else if (bookingIbe !== 'travelclick') { 146 window.open(iFrameSrc,'_blank'); 147 } else { 148 $.featherlight({ 149 iframe: iFrameSrc, 150 beforeOpen: function(event){ 151 console.log(this); // this contains all related elements 152 console.log(iFrameSrc); 153 //return false; // prevent lightbox from opening 154 } 155 }); 156 } 157} 158 159/** 160 * on document ready 161 */ 162(function ($) { 163 $(function () { 164 viewPortHack(currentDeviceRange); 165 166 // initialize the iOS VH test 167 var isNeeded = vhCheck('ios-vh-offset'); 168 if(isNeeded) { 169 console.log('Adjusted iOS offset for correct viewport height'); 170 } 171 172 173 svg4everybody(); 174 175 var togglingNav = new navToggle('.page-header'); 176 177 // open language nav if on mobile when clicking active Language 178 $('.language-menu__link.active').click(function () { 179 if(currentDeviceRange.desktopDown){ 180 $(this).parents('.language-menu__list').toggleClass('open'); 181 return false; 182 } 183 }); 184 185 // toggle menu sublevels 186 $('.menu__item--children > .menu__unfold').click(function(e){ 187 var li = $(this).parent('li'); 188 e.preventDefault(); 189 li.toggleClass('open'); 190 $(this).attr('aria-expanded', li.hasClass('open')); 191 192 // Close all other open submenus 193 li.siblings().removeClass('open'); 194 li.siblings().find('.menu__unfold').attr('aria-expanded', false); 195 return false; 196 }); 197 198 initAccordions(); 199 initTabs(); 200 initScrollToContent(); 201 initBookingWidget(); 202 bindScrollBodyClass('page--scrolled'); 203 markNeighborHoodMapContext(); 204 }); 205 206 207 /** 208 * IBE 209 */ 210 $('a[href*="xbe.synxis.com"]').click(function(e){ 211 e.preventDefault(); 212 213 var arrivalVar = $('#booking-arrival').val(); 214 var departureVar = $('#booking-departure').val(); 215 var adultsVar = $('#booking-adults').val(); 216 217 openIBEinIframe(arrivalVar,departureVar,adultsVar); 218 return false; 219 }); 220 221 $('.o-booking-form').submit(function (e) { 222 e.preventDefault(); 223 224 var arrivalVar = $('#booking-arrival').val(), 225 departureVar = $('#booking-departure').val(), 226 adultsVar = $('#booking-adults').val(), 227 bookingIbe = $('#booking-ibe').val(), 228 bookingIbeUrl = $('#booking-ibe-url').val(); 229 230 openIBEinIframe(arrivalVar,departureVar,adultsVar, bookingIbe, bookingIbeUrl); 231 232 return false; 233 }); // end of booking submit 234 235 // Add smooth scrolling for talente links 236 if($('body').hasClass('talente') && $('body').hasClass('blog')) { 237 $('.talente__link').each(function () { 238 $(this).removeClass('active-link'); 239 }); 240 $('.talente__blog').addClass('active-link'); 241 } else if($('body').hasClass('talente')) { 242 $(document).on("scroll", onScroll); 243 //smoothscroll 244 $('.talente__link[href^="#"]').on('click', function (e) { 245 e.preventDefault(); 246 $(document).off("scroll"); 247 248 $('.talente__link').each(function () { 249 $(this).removeClass('active-link'); 250 }); 251 $(this).addClass('active-link'); 252 253 var target = this.hash; 254 255 $('html, body').stop().animate({ 256 'scrollTop': $(target).offset().top - 180 257 }, 500, 'swing', function () { 258 $(document).on("scroll", onScroll); 259 }); 260 }); 261 function onScroll(event) { 262 var scrollPos = $(document).scrollTop() + 185; 263 $('#main-navigation .talente__link[href^="#"]').each(function () { 264 var currLink = $(this); 265 var refElement = $(currLink.attr("href")); 266 if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) { 267 $('#main-navigation .talente__link').removeClass("active-link"); 268 currLink.addClass("active-link"); 269 } else { 270 currLink.removeClass("active-link"); 271 } 272 }); 273 } 274 } 275 276})(jQuery); 277 278window.addEventListener('resize', function() { 279 viewPortHack(currentDeviceRange); 280});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.