PageSourceSearch

https://www.platzl.de/typo3conf/ext/t23_theme/Resources/Public/Js/main.js?1780901626

js platzl.de collected 2026-09-26 02:59:45 UTC 10,002 bytes, 280 lines download raw bytes

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&currency=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&currency=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.