PageSourceSearch

https://www.esylux.com/_assets/581ae7819742031f221bb47d76589cd6/JavaScripts/app.js?1788426210

js esylux.com collected 2026-10-04 13:23:28 UTC 175,088 bytes, 4,372 lines download raw bytes

1// Wrap IIFE around your code
2(function($, viewport){
3
4    // Build a URL into site_esylux' public resources. The base path is rendered
5    // into #configuration by page.typoscript, so it follows wherever TYPO3
6    // publishes the assets (currently /_assets/<hash>/).
7    function assetUrl(path){
8        return ($('#configuration').data('assetpath') || '/') + path;
9    }
10
11    // cover images in home teasers
12    function coverImage(){
13        if($('.home-teaser').length){
14            $('.container').imagesLoaded( function() {
15                var imageHeight, copyHeight, imageWidth, outerImageWidth, outerImageHeight;
16
17                $('.home-teaser').each(function(){
18                    var t = $(this);
19
20                    t.find('.outer-image img.img-fluid').css({
21                        'height' : 'auto',
22                        'max-width' : '100%'
23                    });
24
25                    setTimeout( function(){
26                        imageHeight = t.find('.outer-image img.img-fluid').height();
27                        copyHeight = t.find('.outer-copy').height();
28
29
30                        if(imageHeight < copyHeight || imageHeight == copyHeight) {
31                            if(t.not('.image-top').length){
32                                t.find('.outer-image img.img-fluid').css({
33                                    'height' : copyHeight,
34                                    'margin-top': 0,
35                                    'margin-left': 0,
36                                    'max-width' : 'none',
37                                    'width' : 'auto'
38                                });
39                            }
40
41                            imageWidth = t.find('.outer-image img').width();
42                            outerImageWidth = t.find('.outer-image').width();
43
44                            t.find('.outer-image img.img-fluid').css({
45                                'margin-left' : (outerImageWidth - imageWidth)/2
46                            });
47                        } else {
48                            t.find('.outer-image img.img-fluid').css({
49                                'margin-top': 0,
50                                'margin-left': 0,
51                                'max-width' : '100%',
52                                'height' : 'auto'
53                            });
54                            imageHeight = t.find('.outer-image img.img-fluid').height();
55                            outerImageHeight = t.find('.outer-image').height();
56
57                            t.find('.outer-image img.img-fluid').css({
58                                'margin-top' : (outerImageHeight - imageHeight)/2
59                            });
60                        }
61                    }, 50 );
62
63                });
64
65            });
66        }
67
68    }
69
70    // Ein Slider-Video so skalieren, dass es die Slide-Flaeche fuellt - dasselbe
71    // Ergebnis, das RoyalSlider fuer .rsImg per imageScaleMode 'fill' erzeugt.
72    // Muss pro Video beim Einfahren laufen: RoyalSlider haengt Slides ausserhalb
73    // seines Preload-Fensters aus dem DOM aus, ein einmaliger Durchlauf ueber
74    // $('.rsVideo') erwischt also nur die gerade eingehaengten Videos.
75    function fitVideoToSlider(video){
76        var $video = $(video),
77            $box = $video.closest('.rsOverflow'),
78            boxWidth, boxHeight, nativeWidth, nativeHeight, scale, width, height;
79
80        // Beim ersten Slide-Wechsel nach dem Laden haengt der Slide-Inhalt zum
81        // Zeitpunkt von rsBeforeAnimStart noch nicht im DOM - dann die Masse vom
82        // Slider selbst nehmen, sie sind fuer jeden Slide dieselben.
83        if(!$box.length){
84            $box = $('#full-width-slider').find('.rsOverflow').first();
85        }
86
87        if(!$box.length){
88            return;
89        }
90
91        // Sobald die echten Videomasse bekannt sind, einmalig nachziehen
92        if(!$video.data('rsVideoFitBound')){
93            $video.data('rsVideoFitBound', true);
94            $video.on('loadedmetadata', function(){
95                fitVideoToSlider(this);
96            });
97        }
98
99        boxWidth = $box.width();
100        boxHeight = $box.height();
101        // videoWidth/-Height stehen erst ab loadedmetadata zur Verfuegung, bis
102        // dahin die width/height-Attribute aus dem Template
103        nativeWidth = video.videoWidth || parseInt($video.attr('width'), 10);
104        nativeHeight = video.videoHeight || parseInt($video.attr('height'), 10);
105
106        if(!boxWidth || !boxHeight || !nativeWidth || !nativeHeight){
107            return;
108        }
109
110        scale = Math.max(boxWidth / nativeWidth, boxHeight / nativeHeight);
111        width = Math.round(nativeWidth * scale);
112        height = Math.round(nativeHeight * scale);
113
114        $video.css({
115            'width': width + 'px',
116            'height': height + 'px',
117            'margin-left': Math.round((boxWidth - width) / 2) + 'px',
118            'margin-top': Math.round((boxHeight - height) / 2) + 'px'
119        });
120    }
121
122    // mobile menu
123    function mobileMenu(){
124        if(viewport.is('<md')) {
125            $('nav.navbar').addClass('is-mobile');
126        } else {
127            $('nav.navbar').removeClass('is-mobile');
128        }
129        $(window).resize(
130            viewport.changed(function() {
131                if(viewport.is('<md')) {
132                    $('nav.navbar').addClass('is-mobile');
133                } else {
134                    $('nav.navbar').removeClass('is-mobile');
135                }
136            })
137        );
138        $('.sol-prod .second-level-menu').children('li').addClass('opened').find('.third-level-menu').show();
139        $('nav.is-mobile .has-sub').children('.cta').on('click', function(){
140            if($(this).parent('.has-sub').hasClass('opened')){
141                $(this).parent('.has-sub').removeClass('opened').children('ul').slideUp();
142            } else{
143                $(this).parent('.has-sub').addClass('opened').children('ul').slideDown();
144            }
145        });
146    }
147    function backToDesktopMenu(){
148        var getIcoNav = $('.navbar-nav.ico-nav').detach();
149        var getLanguageMenu = $('#language_menu').detach();
150        var getSearchPanel = $('#search_panel').detach();
151        $('.navbar-collapse').append(getIcoNav).append(getLanguageMenu).append(getSearchPanel);
152    }
153
154    // logo box
155    function logoBox(){
156        if($('.logo-box').length){
157            $('.logo-box').imagesLoaded().progress( function(instance, image){
158                $('.logo-box').each(function(){
159                    var lbHeight = $(this).siblings('.outer-copy').height();
160                    $(this).height(lbHeight);
161                });
162            });
163        }
164    }
165
166    // submenü position
167    function submenuPosition(){
168        var viewportWidth = $(window).width();
169        var navWidth = $('nav').width();
170        var navOffset = (viewportWidth - navWidth)/2;
171        $('header .second-level-menu').css({
172            'width' : viewportWidth,
173            'left' : -navOffset
174        });
175
176        // Manipulation for submenu items of solutions, products and service
177        if(viewportWidth > 1920){
178            $('.second-level-menu.products, .second-level-menu.solutions, li.c-11 .second-level-menu')
179                .children('li:first-child')
180                .css({
181                    'margin-left' : navOffset
182                });
183        } else {
184            $('.second-level-menu.products, .second-level-menu.solutions, li.c-11 .second-level-menu')
185                .children('li:first-child')
186                .css({
187                    'margin-left' : '0'
188                });
189
190        }
191
192    }
193
194    // sprachmenü
195    function sprachMenu(){
196
197        $('li.language a').click(function(e){
198 //           e.preventDefault();
199            $('#language_menu').fadeToggle(300);
200            $('#search_panel').fadeOut(300);
201            $('#ke_search_searchfield_sword').removeClass('focused');
202        });
203        $('li.language a').hover(
204            function(){
205                $('#language_menu').fadeIn(300);
206                $('#search_panel').fadeOut(300);
207                $('#ke_search_searchfield_sword').removeClass('focused');
208                },
209            function(){
210    //            $('#language_menu').fadeOut(300);
211            });
212
213        $('#language_menu .ml-auto').mouseleave(function(){
214            $('#language_menu').fadeToggle(300);
215        });
216
217    }
218
219    function countrySelectAfterRedirect() {
220        let countrySelectLinks = $('.countrySelectAfterRedirect a');
221        if (window.location.hash.substring(0, 10) === '#!redirect'
222            && countrySelectLinks.length > 0
223        ) {
224            countrySelectLinks.each(function () {
225                let redirectSourceLanguage = window.location.hash.split(';')[1] || 0;
226                let redirectSourcePath = window.location.hash.split(';')[2] || '';
227                let redirectSourceBase = $('.language-container [data-language=' + redirectSourceLanguage + ']:first').data('baseuri') || '';
228                if (!redirectSourceBase.match(/\/$/)) {
229                    redirectSourceBase += '/';
230                }
231                let href = redirectSourceBase +
232                    redirectSourcePath +
233                    '?tx_esylux_redirect[locale]=' + $(this).data('locale');
234                $(this).attr('href', href);
235            });
236            if (window.location.hash.substring(0, 19) !== '#!redirectPreferred') {
237                $('.countrySelectAfterRedirect,.countrySelectAfterRedirect-spacer').addClass('active');
238            }
239        }
240    }
241    function anchorParamToHash(){
242        let anchor;
243        let header = 0;
244        urlParam = function(name){
245            var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
246            if (results==null){
247                return null;
248            }
249            else{
250                return results[1] || 0;
251            }
252        }
253        if(urlParam('anchor') !== null){
254            anchor = '#' + urlParam('anchor');
255            if($('.fixed-header-helper').length){
256                header = $('.fixed-header-helper').height();
257            }
258            setTimeout(function(){
259                $('html, body').animate({
260                    scrollTop : $(anchor).offset().top-header
261                },500);
262            }, 500);
263        }
264    }
265
266    // suche
267    function searchPanel(){
268
269        $('#search_panel #form_kesearch_searchfield').append('<a href="#" class="close-search-panel">×</a>');
270
271        $('li.search a').click(function(e){
272            e.preventDefault();
273            $('#search_panel').fadeToggle(300);
274            $('#ke_search_searchfield_sword').focus().toggleClass('focused');
275            $('#language_menu').fadeOut(300);
276        });
277        $('.close-search-panel').click(function(e){
278            e.preventDefault();
279            $('#search_panel').fadeToggle(300);
280        });
281
282    }
283    function helpStayingFocused(){
284        if($('#ke_search_searchfield_sword.focused').length){
285            $('#ke_search_searchfield_sword').focus();
286            setTimeout(function(){ $('#ke_search_searchfield_sword').focus(); }, 1);
287        }
288    }
289
290    // hide product links in main category
291    function findProdLinksToHide(){
292
293        var prodIdentify = $('.second-level-menu.products');
294        prodIdentify.children('li').children('a').click(function(e){
295            e.preventDefault();
296        });
297        prodIdentify.prev().click(function(e){
298            e.preventDefault();
299        });
300
301        if($('.produktbereich').length){
302            var breadcrumbPart = $('nav.breadcrumb .breadcrumb-item').eq(1);
303            breadcrumbPart.click(function (e) {
304                e.preventDefault();
305            });
306            breadcrumbPart.css({
307                'color' : '#000',
308                'cursor' : 'default'
309            });
310        }
311
312    }
313
314    // workaround service menu
315    function tameServiceMenu(){
316
317        var id = $('.main-nav .nav-item').last();
318        id.find('.second-level-menu').children().wrapAll("<div class='container' />");
319    }
320    function noSubMenu(){
321        var offLeftParent, el = $('.main-nav .nav-item');
322        el.mouseenter(function(){
323            if($(this).find('.second-level-menu').children().hasClass('no-sub')){
324                offLeftParent = $(this).offset().left;
325                $(this).find('.no-sub').css({
326                    'padding-left' : offLeftParent +1
327                });
328            }
329        });
330    }
331    function printPreventDefault(){
332        if($('.print').length){
333            $('.print').click(function(e){
334                e.preventDefault();
335            });
336        }
337    }
338
339    function preventShortcutsInMainMenu(){
340        var accessableMainMenu = $('.navbar-nav.main-nav > li').filter(':eq(1), :eq(3)');
341
342        $('.navbar-nav.main-nav > .has-sub').not(accessableMainMenu).children('a').css('cursor', 'default').click(function (e) {
343                e.preventDefault();
344        });
345
346        if(!($('.produktbereich').length)){
347            var breadcrumbPart = $('nav.breadcrumb a.breadcrumb-item').eq(1);
348            breadcrumbPart.click(function (e) {
349                e.preventDefault();
350            });
351            breadcrumbPart.css({
352                'color' : '#000',
353                'cursor' : 'default',
354                'text-decoration' : 'none'
355            });
356        }
357
358        var solutionsShortcuts = $('.navbar-nav.main-nav').find('.c-13,.c-18,.c-19,.c-294,.c-295,.c-4232').children('a');
359        solutionsShortcuts.click(function (e) {
360            e.preventDefault();
361        });
362        solutionsShortcuts.css({
363            'color' : '#000',
364            'cursor' : 'default',
365            'text-decoration' : 'none'
366        });
367    }
368
369    function lightCalcualteForm(){
370        if($('.form-calculate-fieldset-scope-of-application').length){
371            $('.form-calculate-fieldset-scope-of-application').on('change', function(){
372                if ($('#form-calculate-workplaneheight-office').is(':checked')){
373                    $('.info img').attr({
374                        src: assetUrl("Images/calculateOffice.png")
375                    });
376
377                }
378                if ($('#form-calculate-workplaneheight-corridor').is(':checked')){
379                    $('.info img').attr({
380                        src: assetUrl("Images/calculateFloor.png")
381                    });
382
383                }
384            });
385        }
386    }
387
388    function herbstAktion(){
389        if($('fieldset.powermail_fieldset_53').length){
390            $('fieldset.powermail_fieldset_53').children().addClass('col-12');
391            $('fieldset.powermail_fieldset_53').wrapInner( "<div class='row'></div>");
392
393        }
394        if($('fieldset.powermail_fieldset_58').length){
395            $('fieldset.powermail_fieldset_58').children().addClass('col-12');
396            $('fieldset.powermail_fieldset_58').children().eq(1).removeClass('col-12').addClass('col-5 col-md-2');
397            $('fieldset.powermail_fieldset_58').children().eq(3).removeClass('col-12').addClass('col-5 col-md-2');
398            $('fieldset.powermail_fieldset_58').children().eq(5).removeClass('col-12').addClass('col-5 col-md-2');
399            $('fieldset.powermail_fieldset_58').children().eq(7).removeClass('col-12').addClass('col-5 col-md-2');
400            $('fieldset.powermail_fieldset_58').children().eq(9).removeClass('col-12').addClass('col-5 col-md-2');
401            $('fieldset.powermail_fieldset_58').children().eq(11).removeClass('col-12').addClass('col-5 col-md-2');
402            $('fieldset.powermail_fieldset_58').children().eq(2).removeClass('col-12').addClass('col-7 col-md-4');
403            $('fieldset.powermail_fieldset_58').children().eq(4).removeClass('col-12').addClass('col-7 col-md-4');
404            $('fieldset.powermail_fieldset_58').children().eq(6).removeClass('col-12').addClass('col-7 col-md-4');
405            $('fieldset.powermail_fieldset_58').children().eq(8).removeClass('col-12').addClass('col-7 col-md-4');
406            $('fieldset.powermail_fieldset_58').children().eq(10).removeClass('col-12').addClass('col-7 col-md-4');
407            $('fieldset.powermail_fieldset_58').children().eq(12).removeClass('col-12').addClass('col-7 col-md-4');
408            $('fieldset.powermail_fieldset_58').wrapInner( "<div class='row'></div>");
409        }
410
411        if($('fieldset.powermail_fieldset_54').length){
412            $('fieldset.powermail_fieldset_54').children().addClass('col-12');
413            $('fieldset.powermail_fieldset_54').children().eq(1).removeClass('col-12').addClass('col-5 col-md-2');
414            $('fieldset.powermail_fieldset_54').children().eq(3).removeClass('col-12').addClass('col-5 col-md-2');
415            $('fieldset.powermail_fieldset_54').children().eq(5).removeClass('col-12').addClass('col-5 col-md-2');
416            $('fieldset.powermail_fieldset_54').children().eq(7).removeClass('col-12').addClass('col-5 col-md-2');
417            $('fieldset.powermail_fieldset_54').children().eq(2).removeClass('col-12').addClass('col-7 col-md-4');
418            $('fieldset.powermail_fieldset_54').children().eq(4).removeClass('col-12').addClass('col-7 col-md-4');
419            $('fieldset.powermail_fieldset_54').children().eq(6).removeClass('col-12').addClass('col-7 col-md-4');
420            $('fieldset.powermail_fieldset_54').children().eq(8).removeClass('col-12').addClass('col-7 col-md-4');
421            $('fieldset.powermail_fieldset_54').wrapInner( "<div class='row'></div>");
422        }
423
424        if($('fieldset.powermail_fieldset_55').length){
425            $('fieldset.powermail_fieldset_55').children().addClass('col-12');
426            $('fieldset.powermail_fieldset_55').children().eq(1).removeClass('col-12').addClass('col-5 col-md-2');
427            $('fieldset.powermail_fieldset_55').children().eq(3).removeClass('col-12').addClass('col-5 col-md-2');
428            $('fieldset.powermail_fieldset_55').children().eq(5).removeClass('col-12').addClass('col-5 col-md-2');
429            $('fieldset.powermail_fieldset_55').children().eq(7).removeClass('col-12').addClass('col-5 col-md-2');
430            $('fieldset.powermail_fieldset_55').children().eq(2).removeClass('col-12').addClass('col-7 col-md-4');
431            $('fieldset.powermail_fieldset_55').children().eq(4).removeClass('col-12').addClass('col-7 col-md-4');
432            $('fieldset.powermail_fieldset_55').children().eq(6).removeClass('col-12').addClass('col-7 col-md-4');
433            $('fieldset.powermail_fieldset_55').children().eq(8).removeClass('col-12').addClass('col-7 col-md-4');
434            $('fieldset.powermail_fieldset_55').wrapInner( "<div class='row'></div>");
435        }
436
437        if($('fieldset.powermail_fieldset_2').length && $('fieldset.powermail_fieldset_2 .powermail_fieldwrap_ort').length){
438            $('fieldset.powermail_fieldset_2').children().addClass('col-12');
439            $('fieldset.powermail_fieldset_2 .powermail_fieldwrap_plz').removeClass('col-12').addClass('col-4 col-md-3');
440            $('fieldset.powermail_fieldset_2 .powermail_fieldwrap_ort').removeClass('col-12').addClass('col-8 col-md-9');
441            $('fieldset.powermail_fieldset_2').wrapInner( "<div class='row'></div>");
442        }
443
444        if($('fieldset.powermail_fieldset_147').length && $('fieldset.powermail_fieldset_147 .powermail_fieldwrap_ort').length){
445            $('fieldset.powermail_fieldset_147').children().addClass('col-12');
446            $('fieldset.powermail_fieldset_147 .powermail_fieldwrap_plz').removeClass('col-12').addClass('col-4 col-md-3');
447            $('fieldset.powermail_fieldset_147 .powermail_fieldwrap_ort').removeClass('col-12').addClass('col-8 col-md-9');
448            $('fieldset.powermail_fieldset_147').wrapInner( "<div class='row'></div>");
449        }
450
451        if($('fieldset.powermail_fieldset_59').length){
452            $('fieldset.powermail_fieldset_59').children().addClass('col-12');
453            $('fieldset.powermail_fieldset_59').find('.powermail_fieldwrap_type_select,.powermail_fieldwrap_plz').removeClass('col-12').addClass('col-4 col-md-3');
454            $('fieldset.powermail_fieldset_59').find('.powermail_fieldwrap_type_content,.powermail_fieldwrap_ort').removeClass('col-12').addClass('col-8 col-md-9');
455            $('fieldset.powermail_fieldset_59').wrapInner( "<div class='row'></div>");
456        }
457        if($('fieldset.powermail_fieldset_76').length){
458            $('fieldset.powermail_fieldset_76').children().addClass('col-12');
459            $('fieldset.powermail_fieldset_76').children().eq(1).removeClass('col-12').addClass('col-4 col-md-3');
460            $('fieldset.powermail_fieldset_76').children().eq(7).removeClass('col-12').addClass('col-4 col-md-3');
461            $('fieldset.powermail_fieldset_76').children().eq(2).removeClass('col-12').addClass('col-8 col-md-9');
462            $('fieldset.powermail_fieldset_76').children().eq(8).removeClass('col-12').addClass('col-8 col-md-9');
463            $('fieldset.powermail_fieldset_76').wrapInner( "<div class='row'></div>");
464        }
465    }
466
467
468    // ie detection
469    // Get IE or Edge browser version
470
471    function detectIE() {
472        var ua = window.navigator.userAgent;
473
474        // Test values; Uncomment to check result …
475
476        // IE 10
477        // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
478
479        // IE 11
480        // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';
481
482        // Edge 12 (Spartan)
483        // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';
484
485        // Edge 13
486        // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';
487
488        var msie = ua.indexOf('MSIE ');
489        if (msie > 0) {
490            // IE 10 or older => return version number
491            return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
492        }
493
494        var trident = ua.indexOf('Trident/');
495        if (trident > 0) {
496            // IE 11 => return version number
497            var rv = ua.indexOf('rv:');
498            return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
499        }
500
501        var edge = ua.indexOf('Edge/');
502        if (edge > 0) {
503            // Edge (IE 12+) => return version number
504            return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
505        }
506
507        // other browser
508        return false;
509    }
510
511
512    // accordion produkt filter
513    function filterAccordion(){
514        if($('.filter .filter-item').length){
515
516            setTimeout(function(){
517                $('.filter .filter-item .ui a').each(function(){
518                    if($(this).hasClass('set')){
519                        $(this).parents('.filter-item').addClass('show');
520                    }
521                });
522            }, 750);
523
524            $('.filter .filter-item .label').click(function(){
525                $(this).next('.ui').slideToggle();
526                $(this).parents('.filter-item').toggleClass('show');
527            });
528
529        }
530    }
531
532    function toggleAllContentAccordions(){
533        if($('.contentAccordions .open-all').length){
534            $('.contentAccordions .open-all').click(function(){
535                $(this).toggleClass('opened');
536                if($('.contentAccordions .open-all.opened').length){
537                    $(".accordion").addClass('show');
538                    $(".accordion").find('.accordion-body').slideDown("slow");
539                } else{
540                    $(".accordion").removeClass('show');
541                    $(".accordion").find('.accordion-body').slide
541Up("slow");
542                }
543            });
544        }
545    }
546
547    function kachelWrapper(){
548        if($('.kachel-wrapper').length){
549            $('.kachel-wrapper').wrapAll('<div class="row"></div>').css({
550                'display' : 'block'
551            });
552
553        }
554    }
555
556    function detachFilterOnMobile(){
557        var mobilePlace = $('.filter-mobile-wrapper .accordion-body.outer');
558        var initialPlace = $('.filter-nomobile-wrapper');
559        var el = $('.esyluxProductfilterWrapper:not(.tags-wrapper)').detach();
560        mobilePlace.append(el);
561    }
562
563    function changeFilterToInitial(){
564        var mobilePlace = $('.filter-mobile-wrapper .accordion-body.outer');
565        var initialPlace = $('.filter-nomobile-wrapper');
566        var el = $('.esyluxProductfilterWrapper:not(.tags-wrapper)').detach();
567        initialPlace.append(el);
568    }
569
570    function detachFormOnMobile(){
571        if ($('.positionFormOnSmartphone').length){
572            if($('.marginalSpaltenWrapper').length === 0){
573                $('.col-md-3.ml-auto').not('.positionFormOnSmartphone').wrapInner('<div class="marginalSpaltenWrapper"></div>');
574            }
575            var initialPlace = $('.col-md-3.ml-auto').not('.positionFormOnSmartphone');
576            var mobilePlace = $('.positionFormOnSmartphone');
577            var el = $('.marginalSpaltenWrapper').detach();
578            mobilePlace.append(el);
579        }
580    }
581
582    function changeFormToInitial(){
583        if ($('.positionFormOnSmartphone').length){
584            var initialPlace = $('.col-md-3.ml-auto').not('.positionFormOnSmartphone');
585            var mobilePlace = $('.positionFormOnSmartphone');
586            var el = $('.marginalSpaltenWrapper').detach();
587            initialPlace.append(el);
588        }
589    }
590
591    function optWideTeaserForMobile(){
592        if($('.wide-teaser .mobile-opt').length){
593            $('.wide-teaser .mobile-opt').parents('.wide-teaser').addClass('mobile-opt-wrapper');
594        }
595        if($('.wide-teaser .img-box').length){
596            $('.wide-teaser .img-box').not('.logo-box').parents('.wide-teaser').addClass('has-img-box');
597        }
598    }
599
600    function adjustProdSliderHeight(){
601        if($('.product-detail .owl-carousel.product-slider').height){
602            var el = $('.product-detail .owl-carousel.product-slider .owl-stage .owl-item img');
603            var width = $('.col-12.col-lg-6').width();
604            var height = width * 502 / 975;
605//            el.height(height);
606        }
607    }
608
609    function mediaCenterCatalogueHelper(){
610        if($('.content-page.media-center').length){
611            $('div.accordion').eq(0).addClass('catalogue');
612        }
613    }
614
615    function dismissNewsletter(){
616        var isSet = Cookies.get('nldismiss');
617        if(isSet != '__set'){
618
619            $( '.sticky-bar' ).show();
620        }
621        if($('.sticky-bar .dismiss').length){
622            $('.sticky-bar .dismiss').click(function(){
623                Cookies.set('nldismiss', 'set');
624                $('.sticky-bar').hide();
625            });
626        }
627    }
628
629    function removeClassesForMobile(){
630        if($('.modal-right-pane').length){
631            $('.modal-right-pane').addClass('no-modal-right-pane').removeClass('modal-right-pane');
632        }
633    }
634
635    function addClassesForPC(){
636        if($('.no-modal-right-pane').length){
637            $('.no-modal-right-pane').addClass('modal-right-pane').removeClass('no-modal-right-pane');
638        }
639    }
640
641    function openNLModal(){
642        var hash = window.location.hash;
643 //      console.log(hash);
644        if(hash === '#newsletter'){
645            $('#exampleModalCenter').modal({
646                show: true,
647                focus: true
648            })
649
650        }
651    }
652
653    function slideToAccordionContent(){
654        var header = 0;
655        var hash = window.location.hash;
656        if (hash
657            && hash.substring(0,2) !== '#!'
658            && $(hash).length > 0
659        ) {
660            if (hash === '#quickCalculation'){
661
662                if($('.fixed-header-helper').length){
663                    header = $('.fixed-header-helper').height();
664                }
665                setTimeout(function(){
666                    $('html, body').animate({
667                        scrollTop : $(hash).offset().top - header
668                    },500, function() {
669                        $('#pills-facts-tab').removeClass('active');
670                        $(hash).children().addClass('active').find('.accordion-body').slideDown("slow");
671                        $('#pills-facts').removeClass('show active');
672                        $('#pills-reluxQuickCalculation').addClass('show active');
673                    });
674                }, 500);
675
676            } else {
677
678                if($('.fixed-header-helper').length){
679                    header = $('.fixed-header-helper').height();
680                }
681                if($(hash).parents('.accordion-body').length){
682                    setTimeout(function(){
683                        $(hash).parents('.accordion-body').slideDown(1);
684                    }, 750);
685                    setTimeout(function(){
686                        $('html, body').animate({
687                            scrollTop : $(hash).offset().top - header
688                        },500, function() {
689                            $(hash).addClass('show').find('.accordion-body').slideDown("slow", function() {
690                                coverImage();
691                            });
692                        });
693                    }, 850);
694                }else{
695                    setTimeout(function(){
696                        $('html, body').animate({
697                            scrollTop : $(hash).offset().top - header
698                        },500, function() {
699                            $(hash).addClass('show').find('.accordion-body').slideDown("slow", function() {
700                                coverImage();
701                            });
702                        });
703                    }, 750);
704                }
705            }
706        }
707    }
708
709    function equalHeightPillsTabs(){
710        if($('#pills-tab.hasCalculation').length){
711
712            var tabs = $('#pills-tab.hasCalculation .nav-link');
713            tabs.css({
714                'height' : 'auto'
715            });
716            var heighest = [];
717            var tabHeight, i, max, n;
718
719            setTimeout(function(){
720                tabs.each(function () {
721                    tabHeight = $(this).outerHeight();
722                    heighest.push(tabHeight);
723                });
724
725                max = heighest[0];
726                n = heighest.length;
727                for(i = 1; i < n; i++) {
728                    if(heighest[i] > max)
729                        max = heighest[i];
730                }
731                tabs.css({
732                    'height' : max,
733                    'opacity' : 1
734                });
735            }, 750);
736        }
737    }
738
739    function nurZahlen(el) {
740        var val = el.val();
741        //Nur Zahlen und Dez-Zeichen
742        val = val.replace(/[^\.^,\d]/g, '');
743        // "," ersetzen zu "."
744        val = val.replace(/[,]/g, '.');
745        el.val(val);
746    }
747
748    function validateLightCalculation(){
749        if($('.form-light-calculator input').length){
750            $('.form-light-calculator input[type="text"]').on('input', function() {
751                var t = $(this);
752                nurZahlen(t);
753            });
754        }
755    }
756
757    function addCounterToBookmarkAll(){
758        if($('.bookmarkAll-wrapper').length){
759            var items = $('.product-item .text-right.col-12 .bookmark').length;
760            var htmlString = '<span class="bookmark-counter">' + items + '</span>';
761            $('.bookmarkAll-wrapper').append(htmlString);
762        }
763    }
764
765    function amendProductDownloads(){
766        if($('#pills-download').length){
767            if($('#pills-download .main-table tr .second:contains(\'RTF\')')){
768                $('#pills-download .main-table tr .second:contains(\'RTF\')').parents('.main-table').addClass('extended');
769                var target = $('.table.downloads tr');
770                target.detach();
771                target.appendTo($('.main-table.extended'));
772            }
773            /*
774            var dlthead = $('#pills-download .main-table thead');
775            dlthead.clone().prependTo($('.table.downloads'));
776
777            */
778
779
780            if($('#pills-download .table.extended tr').last().hasClass('no-prod-download')){
781                $('#pills-download .table.extended').css({
782                    'border-bottom' : '2px solid #000'
783                });
784            }
785
786        }
787    }
788
789    function hideProdMenuOnPortfolio(){
790        if($('.is-portfolio').length === 0){
791            $('.second-level-menu.products').css({
792                'top' : 'auto'
793            });
794        }
795    }
796
797    function basket(){
798
799        $('.reduce').click(function(){
800            $('.next-step').hide();
801            $('.update').show();
802            var amount = $(this).siblings('input').attr('value');
803            if (amount <= 1) {
804                amount=0;
805            } else {
806                amount--;
807            }
808            // if(amount == 0){
809            //     $(this).parents('.product-item').hide();
810            //     $(this).hide();
811            //     $(this).siblings('input').attr('value', amount);
812            // }else{
813                $(this).siblings('input').attr('value', amount);
814            // }
815        });
816
817        $('.increase').click(function(){
818            $('.next-step').hide();
819            $('.update').show();
820            var amount = $(this).siblings('input').attr('value');
821            amount++;
822            $(this).siblings('input').attr('value', amount);
823            $(this).siblings('.reduce').show();
824        });
825        $('.quantity input').change(function(){
826            $('.next-step').hide();
827            $('.update').show();
828        });
829    }
830
831
832    function cloneProductListRma(){
833        if($('.rma-user-form .form-group.article-list').length){
834
835            if($('.rma-user-form .form-group.article-list').length === 2){
836                $('.rma-user-form .delete-this').hide();
837            }
838
839            $('.rma-user-form .delete-this').click(function (e) {
840                e.preventDefault();
841
842                $(this)
843                    .parent()
844                    .remove();
845
846                if($('.rma-user-form .form-group.article-list').length === 2){
847                    $('.rma-user-form .delete-this').hide();
848                }
849
850            });
851
852            $('.rma-user-form .add-new-entry').click(function (e) {
853                e.preventDefault();
854
855                $('.rma-user-form .delete-this').show();
856
857                $('.clone')
858                    .clone(true)
859                    .html(function(i, oldHTML) {
860                        return oldHTML.replace(/999999/g, '' + 10000 + $('.rma-user-form .form-group.article-list').length);
861                    })
862                    .addClass('cloned')
863                    .removeClass('clone')
864                    .insertBefore('.add-new-entry');
865
866                initializeRmaUserFormAutocomplete($('.cloned input.articleNumber'));
867                $('.cloned')
868                    .removeClass('cloned');
869
870            });
871        }
872
873    }
874
875    function initializeRmaUserFormAutocomplete(elements) {
876        elements.each(function() {
877            let xhr;
878            $(this).autocomplete({
879                source: function (request, response) {
880                    xhr && xhr.abort();
881                    xhr = $.ajax({
882                        url: ($('#configuration').data('baseuri') || '/')
883                             + '?type=1619162552'
884                             + '&resultSV=web_product_title'
885                             + '&resultSV=web_product_order_number'
886                             + '&resultSV=web_product_gross_weight',
887                        dataType: "json",
888                        data: {
889                            'searchId': 'QuerySearch',
890                            'maxSearchResults': 20,
891                            'term': request.term
892                        },
893                        success: function (data) {
894                            var suggestions = $(data.subnodes).map(function () {
895                                return {
896                                    'value': this['resultValues']['web_product_order_number']['0']['value'] +
897                                             " - " +
898                                             this['resultValues']['web_product_title']['0']['value'],
899                                    'data': {
900                                        'id': this['id'],
901                                        'web_product_order_number': this['resultValues']['web_product_order_number']['0']['value'],
902                                        'web_product_title': this['resultValues']['web_product_title']['0']['value'],
903                                        'web_product_gross_weight': this['resultValues']['web_product_gross_weight']['0']['value']
904                                    }
905                                };
906                            });
907                            response(suggestions);
908                        }
909                    });
910                },
911                minLength: 2,
912                select: function (event, ui) {
913                    $(this).val(ui.item.data.web_product_order_number);
914                    $('#' + $(this).data('idTarget')).val(ui.item.data.id);
915                    $('#' + $(this).data('grossWeightTarget')).val(ui.item.data.web_product_gross_weight);
916                    $('#' + $(this).data('nameTarget')).val(ui.item.label);
917                    event.preventDefault();
918                }
919            });
920        });
921    }
922
923    function initializeRmaUserFormFileCheck() {
924        $('.rma-user-form #file').change(function() {
925                $(this).parent('.form-group').removeClass('has-error');
926                if (this.files && this.files[0] && this.files[0].size > (20 * 1024 * 1024)) {
927                    $(this).parent('.form-group').addClass('has-error');
928                    this.value = "";
929                }
930                $('.rma-user-form .text-danger').hide();
931                $('.rma-user-form .has-error .text-danger').show();
932            }
933        );
934    }
935
936    function initializeRmaUserFormValidation() {
937        $('.rma-user-form #anzahlPakete, .rma-user-form #anzahlPaletten').on('keyup', function () {
938            var $this = $(this);
939            if ($this.val() > 0) {
940                $('.rma-user-form .has-error').removeClass('has-error');
941                $('.rma-user-form .text-danger').hide();
942                if ($this.is('#anzahlPakete')) {
943                    $('#anzahlPaletten').val(0);
944                } else {
945                    $('#anzahlPakete').val(0);
946                }
947            } else{
948                $('.rma-user-form #anzahlPakete, .rma-user-form #anzahlPaletten').parent('.form-group').addClass('has-error');
949                $('.rma-user-form .text-danger').show();
950            }
951        });
952
953        $('.rma-user-form').submit(function () {
954            $('.rma-user-form .has-error').removeClass('has-error');
955            hasError = false;
956            if ($('.rma-user-form #anzahlPakete').val() == 0 && $('.rma-user-form #anzahlPaletten').val() == 0) {
957                $('.rma-user-form #anzahlPakete, .rma-user-form #anzahlPaletten').parent('.form-group').addClass('has-error');
958                hasError = true;
959            }
960            $('.rma-user-form .text-danger').hide();
961            $('.rma-user-form .has-error .text-danger').show();
962            return !hasError;
963        });
964    }
965
966    function extendPropertiesRMAForm(){
967        $('.articleAmount').attr('min', '1');
968        $('#rechtsfolgenbelehrung').attr('required', true);
969        $('.rma-user-form #anzahlPakete, .rma-user-form #anzahlPaletten').attr('min', '0');
970        $('textarea').attr('maxlength', 250);
971    }
972
973    function initializeRmaUserForm() {
974
975        if ($('.rma-user-form').length) {
976            cloneProductListRma();
977            initializeRmaUserFormFileCheck();
978            initializeRmaUserFormValidation();
979            initializeRmaUserFormAutocomplete($('.rma-user-form input.articleNumber'));
980            extendPropertiesRMAForm();
981            $(".rma-user-form").validate();
982        }
983    }
984
985
986   function getNewsletterModal(){
987        // RegEx: http://stackoverflow.com/a/1404100/451634
988        function getURLParameter(name) {
989            var value = decodeURIComponent((RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, ""])[1]);
990            return (value !== 'null') ? value : false;
991        }
992
993        var param = getURLParameter('newsletter');
994        if (param == 1){
995            $('#exampleModalCenter').modal('show');
996        };
997    }
998
999    function getPdfModal(){
1000
1001        if($('#get-pdf-modal').length){
1002            $('#get-pdf-modal .download').click(function(){
1003                $('#get-pdf-modal').modal('hide');
1004            });
1005        }
1006    }
1007
1008    function newCatalogue(){
1009
1010        if($('#newsModal').length){
1011            $('#newsModal').modal('show');
1012        }
1013
1014        var cookieValue = Cookies.get("newCatalogue2020");
1015
1016        if((!cookieValue)){
1017    //  if((!cookieValue) && window.location.hostname !== 'www.esylux.de'){
1018            if($('#stoererModal').length){
1019                $('#stoererModal').modal('show');
1020            }
1021
1022
1023
1024            $('#stoererModal').on('hidden.bs.modal', function (e) {
1025                Cookies.set("newCatalogue2020", 1, { expires : 14 });
1026            });
1027            $('#stoererModal .helper a').click(function(){
1028                Cookies.set("newCatalogue2020", 1, { expires : 365 });
1029            });
1030        }
1031
1032        // RegEx: http://stackoverflow.com/a/1404100/451634
1033        function getURLParameter(name) {
1034            var value = decodeURIComponent((RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, ""])[1]);
1035            return (value !== 'null') ? value : false;
1036        }
1037
1038        var param = getURLParameter('stoerer');
1039        if (param == 1){
1040
1041            switch (document.documentElement.lang) {
1042                case 'de':
1043                    $('#powermail_field_betreff')
1044                        .val('Bestellung ESYLUX Katalog 2020/2021')
1045                        .attr('readonly', 'readonly');
1046                    $('#powermail_field_nachricht')
1047                        .val('Sehr geehrte Damen und Herren,\n' +
1048                            'bitte senden Sie mir die aktuelle Ausgabe Ihres Katalogs 2020/2021 an meine Kontaktdaten wie oben hinterlegt. \n' + 'Mit freundlichen Grüßen')
1049                        .attr('readonly', 'readonly');
1050                    break;
1051                case 'da':
1052                    $('#powermail_field_betreff')
1053                        .val('Bestilling ESYLUX-katalog 2020/2021')
1054                        .attr('readonly', 'readonly');
1055                    $('#powermail_field_nachricht')
1056                        .val('God dag \n' +
1057                            'Send mig venligst den aktuelle version af jeres katalog 2020/2021 til mine kontaktdata, smo er angivet ovenfor. \n' + 'Med venlig hilsen')
1058                        .attr('readonly', 'readonly');
1059                    break;
1060                case 'es':
1061                    $('#powermail_field_betreff')
1062                        .val('Solicitud del catálogo ESYLUX 2020/2021')
1063                        .attr('readonly', 'readonly');
1064                    $('#powermail_field_nachricht')
1065                        .val('Estimados/as señores/as: \n' +
1066                            'Quiero recibir la edición actual de su catálogo 2020/2021 en los datos de contacto indicados anteriormente. \n' + 'Cordialmente,')
1067                        .attr('readonly', 'readonly');
1068                    break;
1069                case 'fi':
1070                    $('#powermail_field_betreff')
1071                        .val('ESYLUX-luettelon 2020/2021 tilaus')
1072                        .attr('readonly', 'readonly');
1073                    $('#powermail_field_nachricht')
1074                        .val('Hei \n' +
1075                            'tilaan uusimman kauden 2020/2021 tuoteluettelon alla antamaani osoitteeseen. \n' + 'Ystävällisin terveisin')
1076                        .attr('readonly', 'readonly');
1077                    break;
1078                case 'fr':
1079                    $('#powermail_field_betreff')
1080                        .val('Commande du catalogue ESYLUX 2020/2021')
1081                        .attr('readonly', 'readonly');
1082                    $('#powermail_field_nachricht')
1083                        .val('Madame, Monsieur, \n' +
1084                            'merci de bien vouloir envoyer la dernière édition de votre catalogue 2020/2021 à mon adresse indiquée ci-dessus. \n' + 'Sincères salutations,')
1085                        .attr('readonly', 'readonly');
1086                    break;
1087                case 'nl':
1088                    $('#powermail_field_betreff')
1089                        .val('Bestelling ESYLUX-catalogus 2020/2021')
1090                        .attr('readonly', 'readonly');
1091                    $('#powermail_field_nachricht')
1092                        .val('Geachte dames en heren, \n' +
1093                            'Stuur mij de huidige uitgave van uw catalogus 2020/2021 naar mijn contactgegevens zoals hierboven vermeld. \n' + 'Met vriendelijke groet,')
1094                        .attr('readonly', 'readonly');
1095                    break;
1096                case 'nb':
1097                    $('#powermail_field_betreff')
1098                        .val('Bestilling ESYLUX-katalog 2020/2021')
1099                        .attr('readonly', 'readonly');
1100                    $('#powermail_field_nachricht')
1101                        .val('Kjære alle sammen, \n' +
1102                            'Vi ber dere om å sende meg den nyeste versjonen av katalogen deres for 2020/2021 ved bruk av kontaktopplysningene ovenfor. \n' + 'Vennlig hilsen,')
1103                        .attr('readonly', 'readonly');
1104                    break;
1105                case 'pt':
1106                    $('#powermail_field_betreff')
1107                        .val('Encomenda do catálogo ESYLUX 2020/2021')
1108                        .attr('readonly', 'readonly');
1109                    $('#powermail_field_nachricht')
1110                        .val('Caro/a Sr./a., \n' +
1111                            'desejo receber a edição actual do vosso catálogo de 2020/2021 através dos dados de contacto fornecidos. \n' + 'Melhores cumprimentos')
1112                        .attr('readonly', 'readonly');
1113                    break;
1114                case 'ru':
1115                    $('#powermail_field_betreff')
1116                        .val('Заказ каталога ESYLUX 2020/2021')
1117                        .attr('readonly', 'readonly');
1118                    $('#powermail_field_nachricht')
1119                        .val('Уважаемые дамы и господа, \n' +
1120                            'прошу отправить мне актуальное издание вашего каталога 2020/2021 по указанному выше адресу. \n' + 'С уважением,')
1121                        .attr('readonly', 'readonly');
1122                    break;
1123                case 'sv':
1124                    $('#powermail_field_betreff')
1125                        .val('Beställning ESYLUX-katalog 2020/2021')
1126                        .attr('readonly', 'readonly');
1127                    $('#powermail_field_nachricht')
1128                        .val('Hej! \n' +
1129                            'skicka den aktuella versionen av er katalog 2020/2021 till mina kontaktadress som anges ovan. \n' + 'Med vänliga hälsningar')
1130                        .attr('readonly', 'readonly');
1131                    break;
1132                default:
1133                    $('#powermail_field_betreff')
1134                        .val('Order the ESYLUX 2020/2021 catalogue')
1135                        .attr('readonly', 'readonly');
1136                    $('#powermail_field_nachricht')
1137                        .val('Dear Sir or Madam, \n' +
1138                            'Please send me the current edition of your 2020/2021 catalogue using the contact details specified above. \n' + 'Yours faithfully')
1139                        .attr('readonly', 'readonly');
1140                    break;
1141            }
1142        }
1143
1144        var param3 = getURLParameter('knx');
1145
1146        if (param3 == 'web'){
1147            var unix_timestamp = getURLParameter('date');
1148            var date = new Date(unix_timestamp * 1000);
1149            var day = ("0" + date.getDate()).slice(-2);
1150            var year = date.getFullYear();
1151            var month = ("0" + (date.getMonth() + 1)).slice(-2);
1152            var hours = date.getHours();
1153            var minutes = (date.getMinutes()<10?'0':'') + date.getMinutes();
1154            var subject = getURLParameter('subject');
1155            var seminar = getURLParameter('name');
1156
1157            switch (document.documentElement.lang) {
1158                case 'de-DE':
1159                    $('#powermail_field_betreff')
1160                        .val('ACADEMY - Anmeldung '+ seminar)
1161                        .attr('readonly', 'readonly');
1162                    $('#powermail_field_nachricht')
1163                        .val('Hiermit melde ich mich verbindlich für das ' + seminar + ' am ' + day + '.' + month + '.' + year + ' um ' + hours + ':' + minutes + ' Uhr an.\nBitte senden Sie mir den entsprechenden Anmeldelink zu.\nMit freundlichen Grüßen')
1164                        .attr('readonly', 'readonly');
1165                    break;
1166                case 'da':
1167                    $('#powermail_field_betreff')
1168                        .val('ACADEMY - tilmelding til '+ seminar)
1169                        .attr('readonly', 'readonly');
1170                    $('#powermail_field_nachricht')
1171                        .val('Jeg registrerer herved til ' + seminar + ' på ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nSend meg den aktuelle registreringskoblingen.\nMed beste ønsker')
1172                        .attr('readonly', 'readonly');
1173                    break;
1174                case 'es':
1175                    $('#powermail_field_betreff')
1176                        .val('ACADEMY - Inscripción '+ seminar)
1177                        .attr('readonly', 'readonly');
1178                    $('#powermail_field_nachricht')
1179                        .val('Por la presente me inscribo de forma vinculante en el ' + seminar + ' el día ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nPor favor, envíenme el enlace de registro correspondiente.\nCon saludos cordiales')
1180                        .attr('readonly', 'readonly');
1181                    break;
1182                case 'fi':
1183                    $('#powermail_field_betreff')
1184                        .val('ACADEMY - ilmoittautuminen '+ seminar)
1185                        .attr('readonly', 'readonly');
1186                    $('#powermail_field_nachricht')
1187                        .val('Ilmoitan täten ' + seminar + ' ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nLähetä minulle asiaankuuluva rekisteröintilinkki.\nParhain terveisin')
1188                        .attr('readonly', 'readonly');
1189                    break;
1190                case 'fr':
1191                    $('#powermail_field_betreff')
1192                        .val('ACADEMY - Inscription '+ seminar)
1193                        .attr('readonly', 'readonly');
1194                    $('#powermail_field_nachricht')
1195                        .val('Par la présente, je m\'inscris de manière obligatoire au ' + seminar + ' le ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nVeuillez m\'envoyer le lien d\'inscription correspondant.\nBien à vous')
1196                        .attr('readonly', 'readonly');
1197                    break;
1198                case 'nl':
1199                    $('#powermail_field_betreff')
1200                        .val('ACADEMY - Inschrijving '+ seminar)
1201                        .attr('readonly', 'readonly');
1202                    $('#powermail_field_nachricht')
1203                        .val('Hierbij schrijf ik mij bindend in voor de ' + seminar + ' op ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nGraag ontvang ik uw bevestiging van mijn deelname.\nMet vriendelijke groet')
1204                        .attr('readonly', 'readonly');
1205                    break;
1206                case 'nb':
1207                    $('#powermail_field_betreff')
1208                        .val('ACADEMY - påmelding til '+ seminar)
1209                        .attr('readonly', 'readonly');
1210                    $('#powermail_field_nachricht')
1211                        .val('Jeg registrerer herved til ' + seminar + ' på ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nSend meg den aktuelle registreringskoblingen.\nMed beste ønsker')
1212                        .attr('readonly', 'readonly');
1213                    break;
1214                case 'pt':
1215                    $('#powermail_field_betreff')
1216                        .val('ACADEMY - Inscrição '+ seminar)
1217                        .attr('readonly', 'readonly');
1218                    $('#powermail_field_nachricht')
1219                        .val('Registei-me pelo presente de forma vinculativa para o ' + seminar + ' em ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nPor favor, enviem-me o link de registo correspondente.\nAtenciosamente')
1220                        .attr('readonly', 'readonly');
1221                    break;
1222                case 'ru':
1223                    $('#powermail_field_betreff')
1224                        .val('АКАДЕМИЯ - Регистрационный '+ seminar)
1225                        .attr('readonly', 'readonly');
1226                    $('#powermail_field_nachricht')
1227                        .val('Настоящим я в обязательном порядке регистрируюсь для участия в ' + seminar + ' на ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nПожалуйста, пришлите мне соответствующую ссылку для регистрации.\nС наилучшими пожеланиями')
1228                        .attr('readonly', 'readonly');
1229                    break;
1230                case 'sv':
1231                    $('#powermail_field_betreff')
1232                        .val('ACADEMY - registrering för '+ seminar)
1233                        .attr('readonly', 'readonly');
1234                    $('#powermail_field_nachricht')
1235                        .val('Jag anmäler mig härmed till ' + seminar + ' om ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nVänligen skicka mig relevant registreringslänk.\nMed vänliga hälsningar')
1236                        .attr('readonly', 'readonly');
1237                    break;
1238                default:
1239                    $('#powermail_field_betreff')
1240                        .val('ACADEMY - Registration '+ seminar)
1241                        .attr('readonly', 'readonly');
1242                    $('#powermail_field_nachricht')
1243                        .val('I hereby register bindingly for the ' + seminar + ' on ' + day + '.' + month + '.' + year + ', ' + hours + ':' + minutes + '.\nPlease send me the corresponding registration link.\nYours sincerely')
1244                        .attr('readonly', 'readonly');
1245                    break;
1246            }
1247        }
1248
1249        var param2 = getURLParameter('selectionguide');
1250        if (param2 == 1){
1251
1252            switch (document.documentElement.lang) {
1253                case 'de':
1254                    $('#powermail_field_betreff')
1255                        .val('Bestellung Auswahlhilfe Präsenz- und Bewegungsmelder')
1256                        .attr('readonly', 'readonly');
1257                    $('#powermail_field_nachricht')
1258                        .val('Sehr geehrte Damen und Herren,\n' +
1259                            'bitte senden Sie mir die Auswahlhilfe an meine Kontaktdaten wie oben hinterlegt. \n' + 'Mit freundlichen Grüßen');
1260                    break;
1261                case 'da':
1262                    $('#powermail_field_betreff')
1263                        .val('Bestilling udvælgelsesguide tilstedeværelses- og bevægelsessensorer')
1264                        .attr('readonly', 'readonly');
1265                    $('#powermail_field_nachricht')
1266                        .val('God dag \n' +
1267                            'Send mig venligst den udvælgelsesguide til mine kontaktdata, smo er angivet ovenfor. \n' + 'Med venlig hilsen');
1268                    break;
1269                case 'fi':
1270                    $('#powermail_field_betreff')
1271                        .val('Valintaopas läsnäolo- ja liikeilmaisimet tilaus')
1272                        .attr('readonly', 'readonly');
1273                    $('#powermail_field_nachricht')
1274                        .val('Hei \n' +
1275                            'tilaan uusimman valintaopas alla antamaani osoitteeseen. \n' + 'Ystävällisin terveisin');
1276                    break;
1277                case 'fr':
1278                    $('#powermail_field_betreff')
1279                        .val('Commande du guide de sélection détecteurs de présence et de mouvement')
1280                        .attr('readonly', 'readonly');
1281                    $('#powermail_field_nachricht')
1282                        .val('Madame, Monsieur, \n' +
1283                            'merci de bien vouloir envoyer le guide de sélection à mon adresse indiquée ci-dessus. \n' + 'Sincères salutations,');
1284                    break;
1285                case 'nl':
1286                    $('#powermail_field_betreff')
1287                        .val('Bestelling selectiehulp aanwezigheidssensoren en bewegingsmelders')
1288                        .attr('readonly', 'readonly');
1289                    $('#powermail_field_nachricht')
1290                        .val('Geachte dames en heren, \n' +
1291                            'Stuur mij de selectiehulp naar mijn contactgegevens zoals hierboven vermeld. \n' + 'Met vriendelijke groet,');
1292                    break;
1293                case 'nb':
1294                    $('#powermail_field_betreff')
1295                        .val('Bestilling produktvelger tilstedeværelses- og bevegelsesdetektorer')
1296                        .attr('readonly', 'readonly');
1297                    $('#powermail_field_nachricht')
1298                        .val('Kjære alle sammen, \n' +
1299                            'Vi ber dere om å sende meg den produktvelger ved bruk av kontaktopplysningene ovenfor. \n' + 'Vennlig hilsen,');
1300                    break;
1301                case 'sv':
1302                    $('#powermail_field_betreff')
1303                        .val('Beställning urvalshjälp närvaro- och rörelsedetektorer')
1304                        .attr('readonly', 'readonly');
1305                    $('#powermail_field_nachricht')
1306                        .val('Hej! \n' +
1307                            'skicka den urvalshjälp till mina kontaktadress som anges ovan. \n' + 'Med vänliga hälsningar');
1308                    break;
1309                default:
1310                    break;
1311            }
1312        }
1313
1314    }
1315
1316    function initPageBrowserInSearchList(){
1317        if ($('.searchlist').length > 0) {
1318            $('.searchlist .page-link').click(function (e) {
1319                var pageLink = $(this);
1320                e.preventDefault();
1321                $('body,html').animate({
1322                    scrollTop: 0
1323                }, 800);
1324                $('.searchlist').hide();
1325                $('.searchlistProcessing').show();
1326                $('form.search_result').find('input:hidden[name*="page"]').val(pageLink.data('page') || 1);
1327                $('form.search_result').submit();
1328            });
1329        }
1330    }
1331
1332    function toggleArchivedInSearchList() {
1333        if ($('.searchlist').length > 0) {
1334            $('.product-item').last().css({
1335                'border-bottom-width': '2px'
1336            });
1337            $('#toggle-archived').change(function () {
1338                $('.searchlist').hide();
1339                $('.searchlistProcessing').show();
1340                $('form.search_result').find('input:hidden[name*="showArchived"]').val($(this).prop('checked') ? '1' : '0');
1341                $('form.search_result').submit();
1342            });
1343        }
1344    }
1345
1346    function adjustTeaserText(){
1347        if($('.outer-image .stoerer').length){
1348
1349            if($('.outer-image .stoerer2').length){
1350
1351                if($('.outer-image .stoerer1').length){
1352                    var offsetLeft = $('.outer-image .stoerer1').outerWidth();
1353                    $('.outer-image .stoerer2').css({
1354                        'position' : 'absolute',
1355                        'top' : 20,
1356                        'left' : offsetLeft + 85
1357                    });
1358                    var teaserLength = $('.outer-image .stoerer2').outerWidth();
1359                    $('.outer-image .stoerer').css({
1360                        'width' : teaserLength + offsetLeft + 105
1361
1362                    });
1363                    var st2Height = $('.stoerer2').outerHeight();
1364                    var stHeight = $('.stoerer').outerHeight();
1365                    st2Height += 38;
1366//                    console.log(stHeight + ' / ' + st2Height);
1367                    if(st2Height > stHeight){
1368                        $('.outer-image .stoerer').css({
1369                            'height' : st2Height
1370
1371                        });
1372                    }
1373
1374                }
1375
1376            }
1377            $('.outer-image .stoerer').css({
1378                'opacity' : 1
1379
1380            });
1381        }
1382
1383    }
1384
1385
1386    function nameConceptAccordion(){
1387        $('.name-concept .accordion-inner-head .cta').click(function(e){
1388            e.preventDefault();
1389        });
1390        if($(".name-concept").length){
1391            if($(".name-concept.show").length){
1392                setTimeout(function(){
1393                    $(".name-concept.show").each(function(){
1394                        $(this).find('.accordion-inner-body').slideToggle( "slow", function() {
1395                            coverImage();
1396                        });
1397                    })
1398                }, 750);
1399            }
1400
1401            $('.name-concept').click(function(e){
1402                $(this).toggleClass('show');
1403                $(this).find('.accordion-inner-body').slideToggle( "slow", function() {
1404                    coverImage();
1405                });
1406            });
1407        }
1408    }
1409
1410    function portfolioSeriesAccordion(){
1411        $('.portfolio-series .accordion-inner-head .cta.toggle').click(function(e){
1412            e.preventDefault();
1413        });
1414        if($(".portfolio-series").length){
1415            if($(".portfolio-series.show").length){
1416                setTimeout(function(){
1417                    $(".portfolio-series.show").each(function(){
1418                        $(this).find('.accordion-inner-body').slideToggle( "slow", function() {
1419                            coverImage();
1420                        });
1421                    })
1422                }, 750);
1423            }
1424
1425            $('.portfolio-series .cta.toggle').click(function(e){
1426                $(this).parents('.portfolio-series').toggleClass('show');
1427                $(this).parents('.portfolio-series').find('.accordion-inner-body').slideToggle( "slow", function() {
1428                    coverImage();
1429                });
1430            });
1431        }
1432    }
1433
1434    function seriesAccordion(){
1435
1436        function loadProducts(el){
1437            let parent = el.parents('.series-teaser-as-list');
1438            parent.addClass('show');
1439            let accordionBody = parent.find('.accordion-inner-body');
1440            accordionBody.slideDown( "slow");
1441            if (!accordionBody.hasClass('loaded')) {
1442                accordionBody.addClass('loaded');
1443                $.ajax({
1444                    url: accordionBody.data('loadproductsUrl'),
1445                    data: {
1446                        'tx_esylux_productfilter': {
1447                            'group': parent.data('groupId'),
1448                            'filter': {},
1449                            'page': 1,
1450                            'limit': -1
1451                        }
1452                    },
1453                    success: function (data) {
1454                        accordionBody.html(data.result);
1455                        if (window.esyluxRefreshBasket) {
1456                            window.esyluxRefreshBasket();
1457                        }
1458                        if (window.esyluxRefreshBookmarks) {
1459                            window.esyluxRefreshBookmarks();
1460                        }
1461                        new Shariff(accordionBody.find('.share-modal .shariff'));
1462                    },
1463                    complete: function (){
1464                        copyToClipboard();
1465                    }
1466                });
1467            }
1468        }
1469        if($('.series-teaser-as-list').length){
1470            if($('.series-teaser-as-list').length === 1){
1471                const singleEl = $('.series-teaser-as-list').eq(0).find('.toggle');
1472                loadProducts(singleEl);
1473            }else{
1474                $('.load-all-wrapper ').show();
1475            }
1476            $('.series-teaser-as-list .inner').click(function(e){
1477                e.preventDefault();
1478                if($(this).parent().hasClass('show')){
1479                    $(this).parent().find('.accordion-inner-body').slideUp('slow');
1480                    $(this).parent().removeClass('show');
1481                    return false;
1482                }
1483                loadProducts($(this).find('.toggle'));
1484            });
1485
1486            $('.load-all-wrapper .load-all').click(function(e){
1487                e.preventDefault();
1488                if (!$(this).hasClass('open')) {
1489                    $('.series-teaser-as-list .toggle').each(function(){
1490                        loadProducts($(this));
1491                        $(this).parents('.series-teaser-as-list').addClass('show');
1492                        $(this).parent('.series-teaser-as-list').find('.accordion-inner-body').slideDown( "slow");
1493                    });
1494                    $(this).parent().addClass('parent-open');
1495                }else {
1496                    $('.series-teaser-as-list .toggle').each(function(){
1497                        $(this).parents('.series-teaser-as-list').removeClass('show');
1498                        $(this).parents('.series-teaser-as-list').find('.accordion-inner-body').slide
1498Up( "slow");
1499                    });
1500                    $(this).parent().removeClass('parent-open');
1501
1502                }
1503                $(this).toggleClass('open');
1504
1505            });
1506
1507        }
1508
1509    }
1510
1511    function moreFilters(){
1512        if($('.filter-item').length){
1513            var filterLength = $('.filter:not(.filter-tags) .filter-item').length;
1514            var i;
1515            for ( i = 0; i < filterLength; i++ ) {
1516
1517                if(i < 6){
1518                    $('.filter:not(.filter-tags) .filter-item').eq(i).show();
1519                } else {
1520                    $('.filter:not(.filter-tags) .load-more-filters').show();
1521                    break;
1522                }
1523
1524            }
1525            $('.load-more-filters').click(function(e){
1526                e.preventDefault();
1527                $(this).hide();
1528                $('.filter:not(.filter-tags) .filter-item').show();
1529            });
1530        }
1531    }
1532
1533    function survey(){
1534        if($('.powermail_fieldwrap_survey_01').length){
1535            var i = 0, j = 0;
1536
1537
1538            $('[class*=powermail_fieldwrap_survey]').find('label.powermail_label').each(function(){
1539
1540                i++;
1541                $(this).replaceWith($('<h3 class="powermail_label"><span class="red">' + i + '</span><br>' + this.innerHTML + '</h3>'));
1542            });
1543
1544            $('textarea').each(function(){
1545               var hasMaxLength = $(this).data('parsley-length');
1546               if(hasMaxLength){
1547                   var maxLength = hasMaxLength[1];
1548                   var maxLengthCounterText = $('.maxlength-counter-text').text();
1549                   $(this).attr('maxlength',maxLength);
1550                   var characterCount = $(this).val().length;
1551                   var counterText = '<span class="counter"><span class="current">' + characterCount + '</span>/' + maxLength + ' ' + maxLengthCounterText + '</span>';
1552                   var current;
1553                   $(this).keyup(function(){
1554                       current = $(this).siblings('.counter').find('.current');
1555                       characterCount = $(this).val().length;
1556                       current.text(characterCount);
1557                   });
1558
1559                   $(this).parent().append(counterText);
1560               }
1561            });
1562
1563            $('.powermail_fieldwrap_survey_12 input').change(function() {
1564
1565                if($(this).prop( "checked" )){
1566                    j++;
1567                    $(this).addClass('is-checked');
1568                } else{
1569                    j--;
1570                    $(this).removeClass('is-checked');
1571                }
1572
1573                if (j>2) {
1574                    $('.powermail_fieldwrap_survey_12 input:not(.is-checked)').attr("disabled", true);
1575                } else {
1576                    $('.powermail_fieldwrap_survey_12 input').removeAttr("disabled");
1577                }
1578            });
1579
1580            $('.powermail_fieldwrap_bild')
1581                .find('.ce-inner').addClass('row')
1582                .find('.ce-row').addClass('col-12 col-md-6');
1583
1584
1585            var nothingToAddText = $('.nothing-to-add').text();
1586
1587            $('.powermail_fieldwrap_survey_10 input').click(function() {
1588                if($('#powermail_field_survey_10_5').is(':checked')) {
1589                    $('#powermail_field_welcheinformationenfehlen').val(nothingToAddText);
1590                    $('#powermail_field_welcheinformationenfehlen')
1591                        .removeClass('parsley-error')
1592                        .siblings('.parsley-errors-list')
1593                        .removeClass('filled')
1594                        .empty();
1595                } else{
1596                    $('#powermail_field_welcheinformationenfehlen').val('');
1597                }
1598            });
1599
1600            var errorMessage = $('#powermail_field_welcheinformationenfehlen').data('parsley-required-message');
1601            $('#powermail_field_welcheinformationenfehlen,#powermail_field_survey_14').attr('data-parsley-error-message',errorMessage);
1602
1603
1604            /*
1605            $('.tx-powermail .container-fluid').removeClass('container-fluid').addClass('container');
1606            $('.powermail_fieldwrap').addClass('row');
1607            $('.powermail_fieldwrap').children('.powermail_label').wrap('<div class="col-12 col-md-6"></div>');
1608            $('.powermail_fieldwrap').children('.powermail_field').wrap('<div class="col-12 col-md-6"></div>');
1609            $('.powermail_fieldwrap_type_submit, .powermail_fieldwrap_pflichtfelder ').find('.col-12.col-md-6').addClass('ml-auto');
1610
1611
1612            $('.powermail_fieldwrap_bild').removeClass('row').addClass('col-12 col-md-6');
1613            $('.powermail_fieldwrap_bild').before('<div class="row">');
1614            $('.powermail_fieldwrap_welcheinformationenfehlen').removeClass('row').addClass('col-12 col-md-6');
1615            $('.powermail_fieldwrap_welcheinformationenfehlen').after('</div>');
1616
1617            $('[class*=powermail_fieldwrap_survey]').find('.powermail_label').parents().removeClass();
1618            $('[class*=powermail_fieldwrap_survey]').children('.powermail_field').wrap('<div class="col-12 col-md-6"></div>');
1619            */
1620            $('.powermail_form_110').css({
1621                'opacity' : 1
1622            });
1623        }
1624
1625    }
1626
1627    function esyworld(){
1628        if($('.esyworld').length){
1629
1630            $('.news h1').each(function(){
1631                $(this).replaceWith($('<h2>'+ this.innerHTML + '</h2>'));
1632            });
1633        }
1634    }
1635
1636    function quickOrderRequest(){
1637        if($('body:not(.merkliste).quickOrderTeaserForm').length){
1638            $('.col-xs-12.col-md-4 .outer-image').eq(0).imagesLoaded( function() {
1639                var formHeight = $('.col-xs-12.col-md-4 img').eq(0).outerHeight();
1640                $('.quickOrderTeaserForm .outer-image').height(formHeight);
1641            });
1642        }
1643    }
1644
1645    function orderRequestForm(){
1646
1647        if($('.share-bookmarks.order-request').length){
1648            $('.share-bookmarks.order-request .bookmarked').click(function(){
1649                $(this).parents('.form-group').hide();
1650                $(this).parents('.form-group').find('input').attr('disabled', true);
1651            });
1652        }
1653
1654        if($('select#targetgroup').length){
1655
1656            var type;
1657
1658            $('select#targetgroup option').each(function() {
1659                if($(this).is(':selected')) {
1660                    type = $(this).data('type');
1661                    if(type === 'installer'){
1662                        $('.form-group.installer').css({
1663                            'display' : 'block'
1664                        });
1665                        $('.form-group.installer.isrequired').find('input').attr('required','required');
1666                    } else{
1667                        $('.form-group.installer').css({
1668                            'display' : 'none'
1669                        });
1670
1671                        $('.form-group.installer').find('input').removeAttr('required');
1672                    }
1673
1674                    if(type === 'enduser'){
1675                        $('.form-group.enduser').css('display', 'block');
1676                        $('.form-group:not(.hide-others),.submit,.pflichtfelder,.quickOrderTeaserForm').css({
1677                            'visibility' : 'hidden',
1678                            'position' : 'absolute'
1679                        });
1680                        $('.form-group.enduser.isrequired').find('input').attr('required','required');
1681
1682                    } else{
1683                        $('.form-group.enduser').css('display', 'none');
1684                        $('.form-group:not(.hide-others),.submit,.pflichtfelder,.quickOrderTeaserForm').css({
1685                            'visibility' : 'visible',
1686                            'position' : 'relative'
1687                        });
1688                        $('.form-group.enduser').find('input').removeAttr('required');
1689                    }
1690                }
1691            });
1692            $('select#requesttype option').each(function() {
1693                if($(this).is(':selected')) {
1694                    type = $(this).data('type');
1695                    if(type === 'object'){
1696                        $('.form-group.object').css({
1697                            'display' : 'block'
1698                        });
1699                        $('.form-group.object.isrequired').find('input').attr('required','required');
1700                    } else{
1701                        $('.form-group.object').css({
1702                            'display' : 'none'
1703                        });
1704
1705                        $('.form-group.object').find('input').removeAttr('required');
1706                    }
1707                }
1708            });
1709
1710
1711            $('select#targetgroup').change(function(){
1712                $('select#targetgroup option').each(function() {
1713                    if($(this).is(':selected')) {
1714                        type = $(this).data('type');
1715
1716
1717                        if(type === 'installer'){
1718                            $('.form-group.installer').css('display', 'block');
1719                            $('.form-group.installer.isrequired').find('input').attr('required','required');
1720                        } else{
1721                            $('.form-group.installer').css('display', 'none');
1722                            $('.form-group.installer.isrequired').find('input').removeAttr('required');
1723                        }
1724
1725                        if(type === 'enduser'){
1726                            $('.form-group.enduser').css('display', 'block');
1727                            $('.form-group:not(.hide-others),.submit,.pflichtfelder,.quickOrderTeaserForm').css({
1728                                'visibility' : 'hidden',
1729                                'position' : 'absolute'
1730                            });
1731                            $('.form-group.enduser.isrequired').find('input').attr('required','required');
1732                            $('body,html').animate({
1733                                scrollTop: 0
1734                            }, 1);
1735                        } else{
1736                            $('.form-group.enduser').css('display', 'none');
1737                            $('.form-group:not(.hide-others),.submit,.pflichtfelder,.quickOrderTeaserForm').css({
1738                                'visibility' : 'visible',
1739                                'position' : 'relative'
1740                            });
1741                            $('.form-group.enduser').find('input').removeAttr('required');
1742                        }
1743
1744
1745                    }
1746                });
1747            });
1748            $('select#requesttype').change(function(){
1749                $('select#requesttype option').each(function() {
1750                    if($(this).is(':selected')) {
1751                        type = $(this).data('type');
1752                        if(type === 'object'){
1753                            $('.form-group.object').css({
1754                                'display' : 'block'
1755                            });
1756                            $('.form-group.object.isrequired').find('input').attr('required','required');
1757                        } else{
1758                            $('.form-group.object').css({
1759                                'display' : 'none'
1760                            });
1761
1762                            $('.form-group.object').find('input').removeAttr('required');
1763                        }
1764                    }
1765                });
1766            });
1767
1768        }
1769
1770    }
1771
1772    function initializeKeSearchAutoComplete(){
1773        var xhr;
1774        $('input[name="tx_kesearch_pi1[sword]"]').each(function(){
1775            var $el = $(this);
1776            var pid = $el.data('pid') || 1;
1777            var language = $el.data('language') || 0;
1778            $el.autocomplete({
1779                source: function(request, response){
1780                    xhr && xhr.abort();
1781                    xhr = $.ajax({
1782                        url: '/index.php',
1783                        dataType: 'json',
1784                        data: {
1785                            eID: 'keSearchPremiumAutoComplete',
1786                            wordStartsWith: request.term,
1787                            amount: 10,
1788                            pid: pid,
1789                            language: language
1790                        },
1791                        success: function(data){
1792                            response(data);
1793                        }
1794                    });
1795                },
1796                minLength: 2,
1797                select: function(event, ui){
1798                    $el.val(ui.item.value);
1799                    $el.closest('form').submit();
1800                }
1801            });
1802        });
1803    }
1804
1805    function initializeSearchAutoComplete(){
1806        let xhr;
1807        let formId = $("input.search_searchfield_sword_autocomplete").closest('form').attr('id');
1808        $("input.search_searchfield_sword_autocomplete").autocomplete({
1809            source: function (request, response) {
1810                xhr && xhr.abort();
1811                xhr = $.ajax({
1812                    url: ($('#configuration').data('baseuri') || '/')
1813                        + '?type=1619162552',
1814                    dataType: "json",
1815                    data: {
1816                        'term': request.term,
1817                        'allowArchived': 0
1818                    },
1819                    success: function (data) {
1820                        response(data.suggestions);
1821                        if(data.count > 20){
1822                           $('.ui-autocomplete').append('<li class="additional-info">' + labelShow + ' 20/' + data.count + ' ' + labelHits + ' | <a href="#" onclick="$(\'#' + formId + '\').submit()">' + labelResults + '</a></li>');
1823                        }
1824                    }
1825                });
1826            },
1827            minLength: 2,
1828            select: function (event, ui) {
1829                $("#ke_search_searchfield_sword").val(ui.item.value);
1830                $("#form_kesearch_searchfield").submit();
1831            }
1832
1833        });
1834    }
1835
1836    function initializeQuickOrder(selector) {
1837        var form = $(selector);
1838        form.submit(function(event) {
1839            event.preventDefault();
1840            return false;
1841        });
1842        let xhr;
1843        form.find('input.sword').autocomplete({
1844            search: function (event, ui) {
1845                $(event.target).data('productId', '');
1846            },
1847            source: function (request, response) {
1848                xhr && xhr.abort();
1849                xhr = $.ajax({
1850                    url: ($('#configuration').data('baseuri') || '/')
1851                        + '?type=1619162552',
1852                    dataType: 'json',
1853                    data: {
1854                        'term': request.term,
1855                        'allowArchived': 0
1856                    },
1857                    success: function (data) {
1858                        response(data.suggestions);
1859                    }
1860                });
1861            },
1862            minLength: 2,
1863            select: function (event, ui) {
1864                if (ui.item.value && ui.item.id) {
1865                    $(event.target).data('productId', ui.item.id);
1866                    $('html, body').animate({
1867                        scrollTop:$('.quickOrderTeaserForm').offset().top -108
1868                    },'slow');
1869                }
1870            }
1871        });
1872        form.find('button').click(function(event) {
1873            var action = $(this).data('action');
1874            var productId = $(event.target).parents('form').find('input.sword').data('productId');
1875            if (productId) {
1876                esyluxAddBookmark(
1877                    productId,
1878                    function () {
1879                        if (action) {
1880                            window.location.href = action;
1881                        }
1882                        form.find('input.sword').val('');
1883                        form.find('input.sword').data('productId', '');
1884                    });
1885            }
1886            return false;
1887        });
1888    }
1889
1890    function initializeProductComparsion() {
1891        $('.esyluxProductComparison-loading').hide();
1892        $('#esyluxProductComparison-category').change(function() {
1893            var selection = $('#esyluxProductComparison-selection-wrap');
1894            selection.hide();
1895            selection.html("");
1896            if ($(this).val() !== "") {
1897                var category = $(this).val();
1898                $('.esyluxProductComparison-loading').show();
1899                $('.esyluxProductComparison-product').val('');
1900                $.post({
1901                    url: $(this).data('selectcategoryurl'),
1902                    data: {
1903                        'tx_esylux_productcomparison[category]': category
1904                    },
1905                    success: function (data) {
1906                        $('.esyluxProductComparison-category').val(category);
1907                        selection.html(data);
1908                        selection.show();
1909                    },
1910                    complete: function () {
1911                        $('.esyluxProductComparison-loading').hide();
1912                    }
1913                });
1914            }
1915        });
1916        $('#esyluxProductComparison-selection-wrap').on(
1917            'change',
1918            '.esyluxProductComparison-selection-series',
1919            function() {
1920                var select = $(this);
1921                var productSelect = select.siblings('.esyluxProductComparison-selection-
1921product');
1922                productSelect.hide();
1923                productSelect.find('option[value!=""]').remove();
1924                var productResult = select.siblings('.esyluxProductComparison-result-product');
1925                productResult.hide();
1926                productResult.html("");
1927                var loading = select.siblings('.esyluxProductComparison-loading-series');
1928                var index = select.data('index');
1929                if (select.val() !== "") {
1930                    select.prop('disabled', true);
1931                    loading.show();
1932                    $('.esyluxProductComparison-product-' + index).val('');
1933                    $.post({
1934                        url: select.data('productoptionsurl'),
1935                        dataType: "json",
1936                        data: {
1937                            'tx_esylux_productcomparison[series]': $(this).val(),
1938                            'tx_esylux_productcomparison[index]': index,
1939                        },
1940                        success: function (data) {
1941                            productSelect.find('option[value!=""]').remove();
1942                            $(data).each(function () {
1943                                var newOption = $('<option>');
1944                                newOption.attr('value', this.value);
1945                                newOption.text(this.label);
1946                                productSelect.append(newOption);
1947                            });
1948                            productSelect.show();
1949                        },
1950                        complete: function () {
1951                            select.prop('disabled', false);
1952                            loading.hide();
1953                        }
1954                    });
1955                } else {
1956                    if ($('.esyluxProductComparison-result-product:visible').length === 0) {
1957                        $('.esyluxProductComparison-tools').hide();
1958                    }
1959                }
1960            }
1961        );
1962        $('#esyluxProductComparison-selection-wrap').on(
1963            'change',
1964            '.esyluxProductComparison-selection-product',
1965            function() {
1966                var select = $(this);
1967                var productResult = select.siblings('.esyluxProductComparison-result-product');
1968                productResult.hide();
1969                productResult.html("");
1970                var loading = select.siblings('.esyluxProductComparison-loading-series');
1971                var index = select.data('index');
1972                $('.esyluxProductComparison-product-' + index).val($(this).val());
1973                if (select.val() !== "") {
1974                    var category = $('#esyluxProductComparison-category').val();
1975                    select.prop('disabled', true);
1976                    loading.show();
1977                    $.post({
1978                        url: select.data('productresulturl'),
1979                        data: {
1980                            'tx_esylux_productcomparison[product]': $(this).val(),
1981                            'tx_esylux_productcomparison[index]': index,
1982                            'tx_esylux_productcomparison[category]': category
1983                        },
1984                        success: function (data) {
1985                            productResult.html(data);
1986                            productResult.slideDown();
1987                            amendHeightOfCompareItems();
1988                            $('.esyluxProductComparison-tools').show();
1989                        },
1990                        complete: function () {
1991                            select.prop('disabled', false);
1992                            loading.hide();
1993                        }
1994                    });
1995                } else {
1996                    if ($('.esyluxProductComparison-result-product:visible').length === 0) {
1997                        $('.esyluxProductComparison-tools').hide();
1998                    }
1999                }
2000            }
2001        );
2002        function calculateHeightOfCompareItems(){
2003            if(!($('.compare-facts').length)){
2004                return;
2005            }
2006            var countItems = $('.compare-facts').eq(0).children('.compare-fact').length;
2007            var equals,i,heighest,h;
2008            $('.compare-fact, .fact-0').css({
2009                'height' : 'auto'
2010            });
2011
2012            for (i = 0; i <= countItems; i++){
2013                equals = $('.fact-' + i);
2014                heighest = 0;
2015                if(equals.length > 1){
2016                    equals.each(function(){
2017                        h = $(this).outerHeight();
2018                        if (heighest < h){
2019                            heighest = h;
2020                        }
2021                    });
2022                    equals.outerHeight(heighest);
2023                }
2024            }
2025        }
2026        $('#esyluxProductComparison-selection-wrap').on(
2027            'click',
2028            '.esyluxProductComparison-removeproduct',
2029            function() {
2030                event.preventDefault();
2031                $(event.target).closest('.esyluxProductComparison-result-product')
2032                    .siblings('.esyluxProductComparison-selection-
2032product')
2033                    .val('')
2034                    .trigger('change');
2035                calculateHeightOfCompareItems();
2036                return false;
2037            }
2038        );
2039        function amendHeightOfCompareItems(){
2040            $('.compare-facts').each(function(){
2041                if(!($(this).hasClass('amending-height'))){
2042                    $(this).addClass('amending-height');
2043                    var i=1;
2044                    $(this).children('.compare-fact').each(function(){
2045                        $(this).addClass('fact-' + i);
2046                        i++;
2047                    });
2048                }
2049            });
2050            calculateHeightOfCompareItems();
2051        }
2052    }
2053
2054
2055
2056    function installationsvideo(){
2057        if($('.carousel-video').length){
2058            var containerWidth, viewportWidth, viewportHeight, videoHeight, left;
2059            containerWidth = $('.container').width();
2060            viewportWidth = $(window).width();
2061            viewportHeight = $(window).height();
2062            if(viewportWidth > containerWidth){
2063                left = (viewportWidth - containerWidth) /2;
2064            } else{
2065                left = 0;
2066            }
2067            $('.carousel-video:not(.triggered) .trigger').click(function(){
2068                $('.carousel-video')
2069                    .css({
2070                        'left' : left,
2071                        'right' : 'auto',
2072                        'top': 0,
2073                        'width' : containerWidth,
2074                        'position' : 'fixed',
2075                        'z-index' : 9000
2076                    })
2077                    .addClass('triggered');
2078                $('body').append('<div class="modal-backdrop fade show"></div>');
2079                videoHeight = $('.carousel-video').height();
2080                if(viewportHeight > videoHeight){
2081                    $('.carousel-video').css({
2082                        'top': (viewportHeight - videoHeight) /2
2083                    });
2084                }
2085
2086            });
2087            $('.close-video').click(function(){
2088                $('.carousel-video')
2089                    .css({
2090                        'left' : 'auto',
2091                        'right' : 0,
2092                        'top': 0,
2093                        'width' : 'auto',
2094                        'position' : 'relative',
2095                        'z-index' : 2
2096                    })
2097                    .removeClass('triggered');
2098                $( '.modal-backdrop' ).remove();
2099
2100            });
2101        }
2102        if($('.lightbox-video').length){
2103            var containerWidth, viewportWidth, viewportHeight, videoHeight, left;
2104            containerWidth = $('.container').width();
2105            viewportWidth = $(window).width();
2106            viewportHeight = $(window).height();
2107            if(viewportWidth > containerWidth){
2108                left = (viewportWidth - containerWidth) /2;
2109            } else{
2110                left = 0;
2111            }
2112            $('.lightbox-video:not(.triggered) .trigger').click(function(){
2113                $(this).parents('.lightbox-video')
2114                    .css({
2115                        'left' : left,
2116                        'right' : 'auto',
2117                        'top': 0,
2118                        'width' : containerWidth,
2119                        'position' : 'fixed',
2120                        'z-index' : 9000
2121                    })
2122                    .addClass('triggered');
2123                $('body').append('<div class="modal-backdrop fade show"></div>');
2124                videoHeight = $(this).parents('.lightbox-video').height();
2125
2126                if(viewportHeight > videoHeight){
2127                    $('.lightbox-video.triggered').css({
2128                        'top': (viewportHeight - videoHeight) /2
2129                    });
2130                }
2131
2132            });
2133            $('.close-video').click(function(){
2134                $(this).parents('.lightbox-video')
2135                    .css({
2136                        'left' : 0,
2137                        'right' : 0,
2138                        'top': 0,
2139                        'width' : 'auto',
2140                        'position' : 'relative',
2141                        'z-index' : 'inherit'
2142                    })
2143                    .removeClass('triggered');
2144                $( '.modal-backdrop' ).remove();
2145
2146            });
2147        }
2148    }
2149
2150    function lightboxElement(){
2151        if($('.lightbox-element').length){
2152            var containerWidth, viewportWidth, viewportHeight, videoHeight, left;
2153//            containerWidth = $('.container').width();
2154            containerWidth = 599;
2155            viewportWidth = $(window).width();
2156            viewportHeight = $(window).height();
2157            if(viewportWidth > containerWidth){
2158                left = (viewportWidth - containerWidth) /2;
2159            } else{
2160                left = 0;
2161            }
2162            $('.lightbox-element:not(.triggered) .trigger').click(function(){
2163                if($(this).parents('.lightbox-element').hasClass('full-width')) {
2164                    containerWidth = viewportWidth;
2165                    left = 0;
2166                }
2167                $(this).parents('.lightbox-element')
2168                    .css({
2169                        'left' : left,
2170                        'right' : 'auto',
2171                        'top': 0,
2172                        'width' : containerWidth,
2173                        'position' : 'fixed',
2174                        'z-index' : 9000,
2175                        'background-color' : '#fff'
2176                    })
2177                    .addClass('triggered');
2178                $('body').append('<div class="modal-backdrop fade show"></div>');
2179                videoHeight = $(this).parents('.lightbox-element').height();
2180
2181                if(viewportHeight > videoHeight){
2182                    $('.lightbox-element:not(.full-width).triggered').css({
2183                        'top': (viewportHeight - videoHeight) /2
2184                    });
2185                }
2186
2187            });
2188            $('.close-video').click(function(){
2189                $(this).parents('.lightbox-element')
2190                    .css({
2191                        'left' : 0,
2192                        'right' : 0,
2193                        'top': 0,
2194                        'width' : 'auto',
2195                        'position' : 'relative',
2196                        'z-index' : 'inherit'
2197                    })
2198                    .removeClass('triggered');
2199                $( '.modal-backdrop' ).remove();
2200
2201            });
2202        }
2203    }
2204
2205    function clickmodule(){
2206        if($(".owl-carousel.clickmodule").length){
2207            var owl = $('.owl-carousel');
2208
2209            $('.prev-slide').click(function(e) {
2210                e.preventDefault();
2211                owl.trigger('prev.owl.carousel');
2212            });
2213            $('.next-slide').click(function(e) {
2214                e.preventDefault();
2215                owl.trigger('next.owl.carousel');
2216            });
2217
2218            $('.app-init').click(function(e){
2219                e.preventDefault();
2220                $('.app-intro').hide();
2221                $('.app-content').show();
2222                setTimeout(function(){
2223                    $('.app-content').animate({
2224                        opacity: 1,
2225                    }, 1750, function() {
2226                        // Animation complete.
2227                    });
2228                }, 500);
2229            });
2230            owl.owlCarousel({
2231                nav: false,
2232                dots: false,
2233                items: 1,
2234                onChanged: infobox
2235            });
2236
2237            $('.next-btn:not(.inactive)').click(function(e) {
2238                owl.trigger('next.owl.carousel');
2239            });
2240            $('.el-1').click(function(e) {
2241                e.preventDefault();
2242                owl.trigger('to.owl.carousel', [0,1]);
2243            });
2244            $('.el-2').click(function(e) {
2245                e.preventDefault();
2246                owl.trigger('to.owl.carousel', [1,1]);
2247            });
2248            $('.el-3').click(function(e) {
2249                e.preventDefault();
2250                owl.trigger('to.owl.carousel', [5,1]);
2251            });
2252            $('.el-4').click(function(e) {
2253                e.preventDefault();
2254                owl.trigger('to.owl.carousel', [9,1]);
2255            });
2256            $('.el-5').click(function(e) {
2257                e.preventDefault();
2258                owl.trigger('to.owl.carousel', [13,1]);
2259            });
2260            $('.el-6').click(function(e) {
2261                e.preventDefault();
2262                owl.trigger('to.owl.carousel', [15,1]);
2263            });
2264
2265
2266
2267
2268            function infobox(event) {
2269                // Provided by the core
2270                var element   = event.target;         // DOM element, in this example .owl-carousel
2271                var name      = event.type;           // Name of the event, in this example dragged
2272                var namespace = event.namespace;      // Namespace of the event, in this example owl.carousel
2273                var items     = event.item.count;     // Number of items
2274                var item      = event.item.index;     // Position of the current item
2275                // Provided by the navigation plugin
2276                var pages     = event.page.count;     // Number of pages
2277                var page      = event.page.index;     // Position of the current page
2278                var size      = event.page.size;      // Number of items per page
2279
2280
2281                $('.app-infobox > div').hide();
2282                $('.app-infobox > div').eq(item).show();
2283
2284               if(item){
2285                   $('.app-infobox .prev-slide').show();
2286               } else{
2287                   $('.app-infobox .prev-slide').hide();
2288               }
2289
2290                if(item === (items-1)){
2291                    $('.app-infobox .next-slide').hide();
2292                } else{
2293                    $('.app-infobox .next-slide').show();
2294                }
2295
2296                if (item > 14){
2297                    $('.el-all').removeClass('active');
2298                    $('.el-6').addClass('active');
2299
2300                } else if(item > 12){
2301                    $('.el-all').removeClass('active');
2302                    $('.el-5').addClass('active');
2303
2304                } else if(item > 8){
2305                    $('.el-all').removeClass('active');
2306                    $('.el-4').addClass('active');
2307
2308                } else if(item > 4){
2309                    $('.el-all').removeClass('active');
2310                    $('.el-3').addClass('active');
2311
2312                } else if(item > 0){
2313                    $('.el-all').removeClass('active');
2314                    $('.el-2').addClass('active');
2315
2316                } else{
2317                    $('.el-all').removeClass('active');
2318                    $('.el-1').addClass('active');
2319
2320                }
2321            }
2322
2323
2324
2325
2326
2327            $('[data-toggle="tooltip"]').tooltip();
2328
2329
2330        }
2331    }
2332
2333    function herbstaktion2020(){
2334        if($('.herbstaktion2020').length){
2335            $('.inner-copy').each(function(index){
2336                $(this).append( '<a href="#" class="cta paket' + index + '">Test</a>');
2337            });
2338            $('.paket0, .paket1').click(function(e){
2339                e.preventDefault();
2340                $('html, body').animate({
2341                    scrollTop:$('#c38572').offset().top -108
2342                },'slow');
2343
2344            });
2345
2346            if($('fieldset.powermail_fieldset_124').length){
2347                $('fieldset.powermail_fieldset_124').children().addClass('col-12');
2348                $('fieldset.powermail_fieldset_124').children().eq(1).removeClass('col-12').addClass('col-4 col-md-2');
2349                $('fieldset.powermail_fieldset_124').children().eq(2).removeClass('col-12').addClass('col-8 col-md-4');
2350                $('fieldset.powermail_fieldset_124').children().eq(3).removeClass('col-12').addClass('col-4 col-md-2');
2351                $('fieldset.powermail_fieldset_124').children().eq(4).removeClass('col-12').addClass('col-8 col-md-4');
2352                $('fieldset.powermail_fieldset_124').wrapInner( "<div class='row'></div>");
2353            }
2354
2355            /*
2356            $('.powermail_form_124').parents('.tx-powermail').find('.container-fluid').removeClass('container-fluid').addClass('container');
2357            $('.powermail_fieldwrap').addClass('row');
2358
2359
2360            $('.powermail_fieldwrap').children('.powermail_label').wrap('<div class="col-12 col-md-6"></div>');
2361            $('.powermail_fieldwrap').children('.powermail_field').wrap('<div class="col-12 col-md-6"></div>');
2362            $('.powermail_fieldwrap_type_submit, .powermail_fieldwrap_pflichtfelder ').find('.col-12.col-md-6').addClass('ml-auto');
2363
2364
2365            $('.powermail_fieldwrap_bild').removeClass('row').addClass('col-12 col-md-6');
2366            $('.powermail_fieldwrap_bild').before('<div class="row">');
2367            $('.powermail_fieldwrap_welcheinformationenfehlen').removeClass('row').addClass('col-12 col-md-6');
2368            $('.powermail_fieldwrap_welcheinformationenfehlen').after('</div>');
2369
2370            $('[class*=powermail_fieldwrap_survey]').find('.powermail_label').parents().removeClass();
2371            $('[class*=powermail_fieldwrap_survey]').children('.powermail_field').wrap('<div class="col-12 col-md-6"></div>');
2372            */
2373
2374            $('.powermail_form_110').css({
2375                'opacity' : 1
2376            });
2377        }
2378    }
2379
2380    function privacyBanner(){
2381        $('.legal a').click(function(e){
2382            var hash, split;
2383            hash = $(this).attr('href');
2384            split = hash.split("#");
2385            hash = '#' + split[1];
2386            if(hash==='#privacy'){
2387                e.preventDefault();
2388                SgCookieOptin.openCookieOptin();
2389            }
2390        });
2391        $('.cookie-consent-user-info').show();
2392        $('.cookie-consent-user-info .open-privacy').click(function(e){
2393            e.preventDefault();
2394            SgCookieOptin.openCookieOptin();
2395            $('.cookie-consent-user-info').removeClass('active');
2396
2397        });
2398        $('.cookie-consent-user-info .close').click(function(e){
2399            $('.cookie-consent-user-info').removeClass('active');
2400        });
2401    }
2402
2403    function equalHeightTeaser(){
2404        if($('.same-height').length){
2405            $('.same-height').imagesLoaded()
2406                .always( function( instance ) {
2407                    var i=0, j, h, heighest, equals;
2408                    $('.same-height .sidebar-box.crosslinking .copy-wrapper').css({
2409                        'height' : 'auto'
2410                    });
2411
2412                    $('.same-height').each(function(){
2413                        equals = $(this).find('.sidebar-box.crosslinking .copy-wrapper');
2414                        if($(this).parent().hasClass('same-height-parent')){
2415                            h = equals.outerHeight();
2416                            if (heighest < h){
2417                                heighest = h;
2418                            }
2419                            j=i-1;
2420
2421
2422                            $('.parent-' + j).find('.same-height .sidebar-box.crosslinking .copy-wrapper').css({
2423                                'height' : heighest
2424                            });
2425                        }else{
2426                            $(this).parent().addClass('same-height-parent parent-' + i);
2427                            i++;
2428                            heighest = equals.outerHeight();
2429                        }
2430                    });
2431                });
2432
2433        }
2434        if($('.same-height-bodytext').length){
2435 //           $('.same-height-bodytext').imagesLoaded()
2436 //               .always( function( instance ) {
2437                    var i=0, j, k, h, heighest, equals, length;
2438                    $('.same-height-bodytext .ce-bodytext').css({
2439                        'height' : 'auto'
2440                    });
2441            if(viewport.is('>=sm')) {
2442                $('.same-height-parent').removeClass('same-height-parent');
2443                $('.same-height-bodytext').each(function(){
2444                    equals = $(this).find('.ce-bodytext');
2445//                        console.log(equals);
2446                    if($(this).parent().hasClass('same-height-parent')){
2447                        k++;
2448                        h = equals.outerHeight();
2449                        if (heighest < h){
2450                            heighest = h;
2451                        }
2452                        //                      console.log('element-' + k + ': ' + heighest);
2453
2454                        if(k === length - 1){
2455                            $('.parent-' + j).find('.same-height-bodytext .ce-bodytext').css({
2456                                'height' : heighest,
2457                                'margin-bottom' : '15px'
2458                            });
2459                            //                         console.log('Final-' + j + ': ' + heighest);
2460
2461                        }
2462                    }else{
2463                        k=0;
2464                        $(this).parent().addClass('same-height-parent parent-' + i);
2465                        length = $('.parent-' + i).find('.same-height-bodytext').length;
2466                        i++;
2467                        j = i-1;
2468                        heighest = equals.outerHeight();
2469                        if(heighest == undefined){
2470                            heighest = 0;
2471                        }
2472                        //                         console.log('element-' + k + ': ' + heighest);
2473
2474                    }
2475                });
2476            }
2477
2478
2479
2480
2481  //              });
2482        }
2483
2484        if($('.same-height-ce').length){
2485            $('.same-height-ce').imagesLoaded()
2486                .always( function( instance ) {
2487                    var ice=0, jce, hce, heighestce, equalsce, lengthce, kce;
2488                    $('.same-height-ce').children().css({
2489                        'height' : 'auto'
2490                    });
2491
2492
2493                    if(viewport.is('>=sm')) {
2494                        $('.same-height-ce-parent').removeClass('same-height-ce-parent');
2495                        $('.same-height-ce').each(function(){
2496                            equalsce = $(this).children();
2497                            if($(this).parent().hasClass('same-height-ce-parent')){
2498                                kce++;
2499                                hce = equalsce.outerHeight();
2500                                if (heighestce < hce){
2501                                    heighestce = hce;
2502                                }
2503                                if(kce === lengthce - 1){
2504                                    $('.same-height-ce-parent.parent-' + jce).find('.same-height-ce').children().css({
2505                                        'height' : heighestce,
2506                                        'margin-bottom' : '15px'
2507                                    });
2508                                }
2509                                if($(this).find('.redContentBox').length){
2510                                    if($(this).find('.redContentBox').hasClass('grey')){
2511                                        $(this).children().addClass('grey-bg');
2512                                    } else {
2513                                        $(this).children().addClass('red-bg');
2514                                    }
2515                                }
2516                            }else{
2517                                kce=0;
2518                                $(this).parent().addClass('same-height-ce-parent parent-' + ice);
2519                                lengthce = $('.same-height-ce-parent.parent-' + ice).children().length;
2520                                ice++;
2521                                jce=ice-1;
2522                                heighestce = equalsce.outerHeight();
2523                                if($(this).find('.redContentBox').length){
2524                                    if($(this).find('.redContentBox').hasClass('grey')){
2525                                        $(this).children().addClass('grey-bg');
2526                                    } else {
2527                                        $(this).children().addClass('red-bg');
2528                                    }
2529                                }
2530                            }
2531                        });
2532                    }
2533
2534                });
2535        }
2536
2537        if($('.lapa-teaser .redContentBox').length){
2538            $('.lapa-teaser').imagesLoaded()
2539                .always( function( instance ) {
2540                    var height;
2541                    height = $('.lapa-teaser .image-wrapper .img-fluid').eq(0).innerHeight();
2542                    $('.lapa-teaser .redContentBox').css({
2543                        'height' : height
2544                    });
2545                });
2546
2547        }
2548    }
2549
2550    function equalHeightProductTeaser(){
2551        if($('.product-detail').length){
2552            let height = $('.sidebar-box').eq(0).outerWidth() * 1020 / 768;
2553            $('.sidebar-box.contains-box-shadow, .sidebar-box.ce-uploads').outerHeight(height);
2554        }
2555    }
2556
2557    function pbLightboxWrapper(){
2558        if($('.pb-lightbox-wrapper').length){
2559            var bgImg = $('.pb-lightbox-wrapper').children('img');
2560            var bgImgHeight;
2561
2562            $('.pb-lightbox-wrapper').imagesLoaded()
2563                .always( function( instance ) {
2564                    bgImgHeight = bgImg.outerHeight();
2565                    $('.pb-lightbox-wrapper .modal-thumb img').css({
2566                        'height' : bgImgHeight - 60
2567                    });
2568
2569                });
2570        }
2571    }
2572
2573    function twoImageFader(){
2574        if(!($('.image-fader').length)){
2575            return;
2576        }
2577
2578        $('.image-fader').each(function(){
2579            var i,
2580                j = 0,
2581                count = $(this).find('img').length,
2582                images = $(this).find('img');
2583            for (i=count; i>0; i--){
2584                images.eq(j).css({
2585                    'z-index' : i
2586                });
2587                j++;
2588            }
2589            images.show();
2590            const fadeImg = $(this).find('.img-1');
2591
2592            function fadeOut(){
2593                fadeImg.animate({
2594                    opacity: 0
2595                }, 1500);
2596            }
2597
2598            function fadeIn() {
2599                fadeImg.animate({
2600                    opacity: 1
2601                }, 1500);
2602                setTimeout(function () {
2603                    fadeOut();
2604                }, 5000);
2605            }
2606
2607            setTimeout(function () {
2608                fadeOut();
2609            },5000);
2610
2611            const myInterval = setInterval(fadeIn, 10000);
2612            myInterval;
2613            $('.pause').on('click', function(e) {
2614                clearInterval(myInterval);
2615                $('.controls div').toggleClass('triggered');
2616            });
2617            $('.play').on('click', function(e) {
2618                myInterval;
2619                $('.controls div').toggleClass('triggered');
2620            });
2621        });
2622
2623    }
2624
2625    function copyToClipboard(){
2626        if(!($('.copy-to-clipboard').length)){
2627            return;
2628        }
2629        function fallbackCopyTextToClipboard(text) {
2630            var textArea = document.createElement("textarea");
2631            textArea.value = text;
2632
2633            // Avoid scrolling to bottom
2634            textArea.style.top = "0";
2635            textArea.style.left = "0";
2636            textArea.style.position = "fixed";
2637
2638            document.body.appendChild(textArea);
2639            textArea.focus();
2640            textArea.select();
2641
2642            try {
2643                var successful = document.execCommand('copy');
2644                var msg = successful ? 'successful' : 'unsuccessful';
2645 //               console.log('Fallback: Copying text command was ' + msg);
2646            } catch (err) {
2647 //               console.error('Fallback: Oops, unable to copy', err);
2648            }
2649
2650            document.body.removeChild(textArea);
2651        }
2652        function copyTextToClipboard(text) {
2653            if (!navigator.clipboard) {
2654                fallbackCopyTextToClipboard(text);
2655                return;
2656            }
2657            navigator.clipboard.writeText(text).then(function() {
2658                $('.copy-to-clipboard').css({
2659                    'opacity' : 0.15
2660                });
2661                $('.copy-to-clipboard').animate({
2662                    opacity: 1
2663                }, 800);
2664            }, function(err) {
2665     //           console.error('Async: Could not copy text: ', err);
2666            });
2667        }
2668        var clipboard = $('.copy-to-clipboard');
2669        clipboard.click(function(e){
2670            e.preventDefault();
2671            copyTextToClipboard($(this).text());
2672        });
2673/*
2674        --- not workin within ajax accordions ---
2675        clipboard.addEventListener('click', function(e) {
2676            e.preventDefault();
2677            copyTextToClipboard($(this).text());
2678        });
2679 */
2680
2681    }
2682    let labelHits, labelShow, labelResults;
2683
2684    switch (document.documentElement.lang) {
2685        case 'de-DE':
2686            labelShow = 'Zeigt';
2687            labelHits = 'Treffer';
2688            labelResults = 'Zur Ergebnisliste';
2689            break;
2690        case 'de-CH':
2691            labelShow = 'Zeigt';
2692            labelHits = 'Treffer';
2693            labelResults = 'Zur Ergebnisliste';
2694            break;
2695        case 'de-AT':
2696            labelShow = 'Zeigt';
2697            labelHits = 'Treffer';
2698            labelResults = 'Zur Ergebnisliste';
2699            break;
2700        case 'da-DK':
2701            labelShow = 'Viser';
2702            labelHits = 'hits';
2703            labelResults = 'Til resultatlisten';
2704            break;
2705        case 'fi-FI':
2706            labelShow = 'Näyttää';
2707            labelHits = 'osumaa';
2708            labelResults = 'Tuloslistaan';
2709            break;
2710        case 'fr-BE':
2711            labelShow = 'Affiche';
2712            labelHits = 'résultats';
2713            labelResults = 'Vers la liste des résultats';
2714            break;
2715        case 'fr-CH':
2716            labelShow = 'Affiche';
2717            labelHits = 'résultats';
2718            labelResults = 'Vers la liste des résultats';
2719            break;
2720        case 'fr-FR':
2721            labelShow = 'Affiche';
2722            labelHits = 'résultats';
2723            labelResults = 'Vers la liste des résultats';
2724            break;
2725        case 'nl-NL':
2726            labelShow = 'Toont';
2727            labelHits = 'hits';
2728            labelResults = 'Naar de resultatenlijst';
2729            break;
2730        case 'nl-BE':
2731            labelShow = 'Toont';
2732            labelHits = 'hits';
2733            labelResults = 'Naar de resultatenlijst';
2734            break;
2735        case 'nb-NO':
2736            labelShow = 'Viser';
2737            labelHits = 'treff';
2738            labelResults = 'Til resultatlisten';
2739            break;
2740        case 'sv-SE':
2741            labelShow = 'Visar';
2742            labelHits = 'träffar';
2743            labelResults = 'Till resultatlistan';
2744            break;
2745        case 'ru-RU':
2746            labelShow = 'Показывает';
2747            labelHits = 'хитов';
2748            labelResults = 'К списку результатов';
2749            break;
2750        case 'pt-PT':
2751            labelShow = 'Mostra';
2752            labelHits = 'acessos';
2753            labelResults = 'Para a lista de resultados';
2754            break;
2755        case 'es-ES':
2756            labelShow = 'Muestra';
2757            labelHits = 'hits';
2758            labelResults = 'A la lista de resultados';
2759            break;
2760        default:
2761            labelShow = 'Shows';
2762            labelHits = 'hits';
2763            labelResults = 'To the result list';
2764            break;
2765    }
2766    function openAccordionByPosition(selector){
2767        if($(selector).length){
2768            var hashID = window.location.hash.substring(1);
2769            if(hashID){
2770                $('.portfolio.accordion').removeClass('show');
2771                $('.portfolio.accordion').eq(Number(hashID)-1).addClass('show');
2772            } else {
2773                if(viewport.is('>sm')) {
2774                    $('.portfolio.accordion').eq(0).addClass('show');
2775                }
2776            }
2777        }
2778    }
2779
2780    function openAllPortfolioCategories(){
2781        if($('.portfolio').length){
2782            const el = $('.portfolio.accordion');
2783
2784            //check, if all category accordions are opened
2785            function getStatus(norm){
2786                const amount = el.length;
2787                var open = $('.portfolio.accordion.show').length;
2788                open = open - norm;
2789
2790                if(amount === open){
2791                    $('.portfolio-all').addClass('open');
2792                    $('.portfolio-all').parent().addClass('parent-open');
2793                } else{
2794                    $('.portfolio-all').removeClass('open');
2795                    $('.portfolio-all').parent().removeClass('parent-open');
2796                }
2797            }
2798
2799            //normalize result of opened accordions due to missing callback
2800            el.find('.cta').click(function(){
2801                if($(this).parents('.portfolio.accordion').hasClass('show')){
2802                    getStatus(1);
2803                } else {
2804                    getStatus(-1);
2805                }
2806            });
2807
2808            $('.portfolio-all').click(function(e){
2809                e.preventDefault();
2810                if($(this).hasClass('open')){
2811                    el.removeClass('show');
2812                    el.find('.accordion-body').slideUp();
2813                    $(this).removeClass('open');
2814                    $(this).parent().removeClass('parent-open');
2815                }else{
2816                    el.removeClass('show');
2817                    el.addClass('show');
2818                    el.find('.accordion-body').slideDown();
2819                    $(this).addClass('open');
2820                    $(this).parent().addClass('parent-open');
2821                }
2822            });
2823        }
2824    }
2825
2826    function languageMenu(){
2827        var selected = $('.lang .nav-item.language.active a').html();
2828        $('.choosen-language').html(selected);
2829
2830        $('.language-container .choosen-language').click(function(){
2831            $('.language-container .lang').toggle();
2832        });
2833        $('.language-container').mouseenter(function(){
2834            if(viewport.is('>sm')) {
2835                $('.language-container .lang').show();
2836            }
2837        });
2838        $('.language-container').mouseleave(function(){
2839            if(viewport.is('>sm')) {
2840                $('.language-container .lang').hide();
2841            }
2842        });
2843    }
2844
2845    function buildAnchorNavOnContentPages(){
2846        if($('.content-anchor-container').length){
2847            let el = '<span class="simple-top">Zum Seitenanfang</span>';
2848            $('.anchor-navigation').append(el);
2849            $('.content-anchor-container').each(function(){
2850                el = '<a class=" '+ $(this).attr("id") + '" href="#' + $(this).attr("id") + '">' + $(this).data("anchor-link") + '</a>';
2851                $('.anchor-navigation').append(el);
2852            });
2853            $('.outer-content-sticky-nav').addClass('initialized');
2854            observeContentStickyNav();
2855        }
2856    }
2857    function observeContentStickyNav(){
2858        if($('.content-sticky-nav').length){
2859            // show sticky nav, if stage is disappeared
2860            const stage = document.querySelector('header .headerImage');
2861            const nav = document.querySelector('.content-sticky-nav');
2862            const observer = new IntersectionObserver(entries => {
2863                entries.forEach(entry => {
2864                    nav.classList.toggle('sticky', !(entry.isIntersecting))
2865                })
2866            },{
2867                threshold: 0.15,
2868                rootMargin: "1px 0px 0px 0px"
2869            })
2870            observer.observe(stage);
2871
2872            // activate anchor nav
2873            const container = document.querySelectorAll('.content-anchor-container');
2874            let identifier;
2875            const anchorObserver = new IntersectionObserver(entries => {
2876                entries.forEach(entry => {
2877                    identifier = entry.target.getAttribute("id");
2878                    if (entry.isIntersecting) {
2879                        $('.content-sticky-nav').find('.' + identifier).addClass('active');
2880                    } else {
2881                        $('.content-sticky-nav').find('.' + identifier).removeClass('active');
2882                    }
2883                })
2884            },{
2885                threshold: 0,
2886                rootMargin: "-300px 0px 0px 0px"
2887            })
2888            container.forEach(item => {
2889                anchorObserver.observe(item)
2890            })
2891
2892            let header = $('.fixed-header-helper').innerHeight(),
2893                stickyNav,
2894                finalPosition,
2895                hash;
2896            $('.anchor-navigation a').click(function (e){
2897                e.preventDefault();
2898                hash = $(this).attr('href');
2899                $('html, body').animate({
2900                    scrollTop : $(hash).offset().top-header+145
2901                }, 500).promise().done(function(){
2902                    stickyNav = $('.content-sticky-nav').outerHeight();
2903                    finalPosition = $(hash).offset().top - stickyNav - header;
2904                    $(window).scrollTop(finalPosition);
2905                });
2906            });
2907        }
2908    }
2909
2910    function observeProductStickyNav(){
2911        if($('.product-sticky-nav').length){
2912            // show sticky nav, if stage is disappeared
2913            const stage = document.querySelector('.product-head .carousel-wrapper');
2914            const nav = document.querySelector('.product-sticky-nav');
2915            const observer = new IntersectionObserver(entries => {
2916                entries.forEach(entry => {
2917                    nav.classList.toggle('show', !(entry.isIntersecting))
2918                })
2919            },{
2920                threshold: 0.55
2921            })
2922            observer.observe(stage);
2923
2924            // activate anchor nav
2925            const container = document.querySelectorAll('.anchor-container');
2926            let identifier;
2927            const anchorObserver = new IntersectionObserver(entries => {
2928                entries.forEach(entry => {
2929                    identifier = entry.target.getAttribute("id");
2930                    if (entry.isIntersecting) {
2931                        $('.product-sticky-nav').find('.' + identifier).addClass('active');
2932                    } else {
2933                        $('.product-sticky-nav').find('.' + identifier).removeClass('active');
2934                    }
2935                })
2936            },{
2937                threshold: 0,
2938                rootMargin: "-300px 0px 0px 0px"
2939            })
2940            container.forEach(item => {
2941                anchorObserver.observe(item)
2942            })
2943
2944            let header = $('.fixed-header-helper').innerHeight(),
2945                stickyNav,
2946                finalPosition,
2947                hash;
2948            $('.anchor-navigation a').click(function (e){
2949                e.preventDefault();
2950                hash = $(this).attr('href');
2951                $('html, body').animate({
2952                        scrollTop : $(hash).offset().top-header+145
2953                    }, 500).promise().done(function(){
2954                    stickyNav = $('.product-sticky-nav').outerHeight();
2955                    finalPosition = $(hash).offset().top - stickyNav - header;
2956                    $(window).scrollTop(finalPosition);
2957                });
2958            });
2959        }
2960    }
2961    function addCtaToStaticHeaderImage(){
2962        if($('.add-cta').length){
2963            $('.headerImage').each(function(){
2964                var href = $(this).parent().attr('href');
2965                var target = $(this).parent().attr('target');
2966                if(href !== undefined){
2967                    $(this).addClass('added-cta');
2968                    if($(this).find('.subline').length){
2969                        $(this).find('.subline').append('<a class="cta" href="' + href +'" target="' + target + '"></a>');
2970                    } else{
2971                        $(this).find('h1').append('<a class="cta" href="' + href +'" target="' + target + '"></a>');
2972                    }
2973                }
2974            });
2975        }
2976    }
2977
2978    function headerAnimation(){
2979        const zoomIn = function(){
2980            $('.animation-zoom-in').addClass('init');
2981        }
2982        if($('.animation-zoom-in').length){
2983            zoomIn();
2984        }
2985        const moveToLeft = function(){
2986            $('.animation-move-to-left').addClass('init');
2987        }
2988        if($('.animation-move-to-left').length){
2989            moveToLeft();
2990        }
2991        const moveToRight = function(){
2992            $('.animation-move-to-right').addClass('init');
2993        }
2994        if($('.animation-move-to-right').length){
2995            moveToRight();
2996        }
2997    }
2998
2999    function headerSlideShow(){
3000        function slideShow(){
3001            var
3002                images = ".animation-fade-show > .fade-element" // image selector
3003                , interval = 1500           // milliseconds between transitions
3004                , index = 0                 // starting index
3005                , count = $(images).length  // image count
3006                // the transition loop
3007                , handle = setInterval(function() {
3008                        if($('.animation-fade-show').hasClass('init')){
3009
3010                        } else {
3011                            index = count-1;
3012                        }
3013                        // fade out the current image
3014                        $(images + ":eq(" + index + ")").fadeOut(1000);
3015                        // get the next index, or cycle back to 0
3016                        if (++index === count) index = 0;
3017                        // fade in the next image
3018                        $(images + ":eq(" + index + ")").fadeIn(1000);
3019
3020                    }
3021                    , interval
3022                )
3023        }
3024
3025        if($('.animation-fade-show ').length){
3026            slideShow();
3027        }
3028    }
3029
3030    function observeMobileStickyBar(){
3031
3032        // show sticky nav, if stage is disappeared
3033        const header = document.querySelector('body > header');
3034        const stickyBar = document.querySelector('.sticky-bar');
3035        const observer = new IntersectionObserver(entries => {
3036            entries.forEach(entry => {
3037                if(entry.isIntersecting){
3038                    stickyBar.classList.remove('shrink');
3039                } else {
3040                    stickyBar.classList.add('shrink');
3041                }
3042            });
3043        },{ threshold: 0.9 });
3044        observer.observe(header);
3045
3046        $('.sticky-social .trigger').click(function(){
3047            $('.sticky-bar').removeClass('shrink');
3048        });
3049    }
3050
3051    function responsiveBackgroundImages(){
3052        if($('.responsive-background-image').length){
3053            if(viewport.is('<md')) {
3054                $('.responsive-background-image').each(function(){
3055                    $(this).attr('style', 'background-image: url(' + $(this).data("bg-mobile") + ');')
3056                });
3057            } else {
3058                $('.responsive-background-image').each(function(){
3059                    $(this).attr('style', 'background-image: url(' + $(this).data("bg-desktop") + ');')
3060                });
3061            }
3062            $(window).resize(
3063                viewport.changed(function() {
3064                    if(viewport.is('<md')) {
3065                        $('.responsive-background-image').each(function(){
3066                            $(this).attr('style', 'background-image: url(' + $(this).data("bg-mobile") + ');')
3067                        });
3068                    } else {
3069                        $('.responsive-background-image').each(function(){
3070                            $(this).attr('style', 'background-image: url(' + $(this).data("bg-desktop") + ');')
3071                        });
3072                    }
3073                })
3074            );
3075        }
3076    }
3077
3078    function responsiveVideos(){
3079        if($('video.responsive-video').length){
3080            var setVideoSource = function(){
3081                $('video.responsive-video').each(function(){
3082                    // '<sm' ist in diesem Projekt < 768px — die Bootstrap-Breakpoints
3083                    // sind in bower_components auf sm: 768px / md: 992px umgestellt.
3084                    var source = viewport.is('<sm') ? $(this).data('video-mobile') : $(this).data('video-desktop');
3085                    // Ohne den Vergleich wuerde jeder Resize das laufende Video neu starten.
3086                    if(source && $(this).attr('src') !== source){
3087                        $(this).attr('src', source);
3088                    }
3089                });
3090            };
3091            setVideoSource();
3092            $(window).resize(
3093                viewport.changed(setVideoSource)
3094            );
3095        }
3096    }
3097
3098    function filterOnMobile(){
3099
3100
3101        if($('.filter-icon').length){
3102            let position = $(window).scrollTop();
3103            let menuTrigger = $('.filter-icon');
3104            let menu = $('.filter-nomobile-wrapper');
3105            let overlay = $('.filter-overlay');
3106
3107            menuTrigger.click(function(){
3108                menuTrigger.toggleClass('checked');
3109                menu.toggleClass('collapsed');
3110                overlay.toggleClass('collapsed');
3111            });
3112            overlay.click(function(){
3113                menuTrigger.toggleClass('checked');
3114                menu.toggleClass('collapsed');
3115                overlay.toggleClass('collapsed');
3116            });
3117
3118            $(window).scroll(function() {
3119                let scroll = $(window).scrollTop();
3120                if(scroll > position) {
3121//                    console.log('scrollDown');
3122                    $('.filter-icon').hide();
3123                } else {
3124//                    console.log('scrollUp');
3125                    $('.filter-icon').show();
3126                }
3127                position = scroll;
3128                if(position < 15){
3129                    $('.filter-icon').show();
3130                }
3131            });
3132        }
3133    }
3134
3135    function toTopButton(){
3136        if($('.simple-top').length){
3137            $('.simple-top').click(function() {
3138                $('body,html').animate({
3139                    scrollTop: 0
3140                }, 400);
3141            });
3142        }
3143
3144        let position = $(window).scrollTop();
3145        $(window).scroll(function() {
3146            let scroll = $(window).scrollTop();
3147            if(scroll > position) {
3148                $('a.top').hide();
3149            } else {
3150                $('a.top').show();
3151            }
3152            position = scroll;
3153            if(position == 0){
3154                $('a.top').hide();
3155            }
3156        });
3157
3158        $('a.top').click(function(e) {
3159            e.preventDefault();
3160            $('body,html').animate({
3161                scrollTop: 0
3162            }, 400, function() {
3163                setTimeout(() => {
3164                    $('a.top').hide();
3165                }, 200);
3166            });
3167            return false;
3168        });
3169
3170    }
3171    
3172    function showMoreProductsInAccordions(){
3173        $('.accordion-show-more a').click(function(e){
3174            e.preventDefault();
3175            $(this).parents('.accordion-body').find('.product-item').removeClass('faded').show();
3176            $(this).parents('.accordion-body').find('.vat-info').show();
3177            $(this).parent().hide();
3178        });
3179        let displayMax = 2,
3180            list = $('.accordion.show.show-more').find('.product-series.list');
3181        if(list.length){
3182            list.each(function(){
3183                let items = $(this).find('.product-item');
3184
3185                for(let i = 0; i < items.length; i++){
3186                    if(i > displayMax - 1){
3187                        items.eq(i).hide();
3188                    }
3189                    if(i > displayMax - 2){
3190                        if(i == items.length - 1){
3191                            items.eq(i).parents('.accordion-body').find('.accordion-show-more').addClass('show');
3192                            items.eq(i).siblings('.vat-info').hide();
3193                            items.eq(displayMax - 1).addClass('faded');
3194                        }
3195                    }
3196                }
3197            });
3198        }
3199    }
3200
3201    function collapseProductInformation(){
3202        var maxLines = 5;
3203
3204        // liefert die unteren Kanten aller Textzeilen (relativ zur Oberkante des Elements)
3205        function getTextLines(element){
3206            var walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT, null, false),
3207                range = document.createRange(),
3208                elementTop = element.getBoundingClientRect().top,
3209                lines = [],
3210                node, rects, i, j, top, bottom, matched;
3211            while((node = walker.nextNode())){
3212                if(!node.nodeValue.trim()){
3213                    continue;
3214                }
3215                range.selectNodeContents(node);
3216                rects = range.getClientRects();
3217                for(i = 0; i < rects.length; i++){
3218                    if(!rects[i].height || !rects[i].width){
3219                        continue;
3220                    }
3221                    top = rects[i].top;
3222                    bottom = rects[i].bottom - elementTop;
3223                    matched = false;
3224                    for(j = 0; j < lines.length; j++){
3225                        if(Math.abs(lines[j].top - top) < 4){
3226                            matched = true;
3227                            if(bottom > lines[j].bottom){
3228                                lines[j].bottom = bottom;
3229                            }
3230                            break;
3231                        }
3232                    }
3233                    if(!matched){
3234                        lines.push({top: top, bottom: bottom});
3235                    }
3236                }
3237            }
3238            return lines.sort(function(a, b){ return a.top - b.top; });
3239        }
3240
3241        function applyState($wrapper){
3242            var lines = getTextLines($wrapper[0]),
3243                $toggle = $wrapper.next('.product-information-wrapper-toggle');
3244            if(lines.length <= maxLines){
3245                $wrapper.removeClass('is-collapsible is-expanded').css('max-height', '');
3246                $toggle.removeClass('show');
3247                return;
3248            }
3249            // einmal ausgeklappt bleibt ausgeklappt
3250            if($wrapper.hasClass('is-expanded')){
3251                return;
3252            }
3253            $wrapper.addClass('is-collapsible').css('max-height', Math.ceil(lines[maxLines - 1].bottom) + 'px');
3254            $toggle.addClass('show');
3255        }
3256
3257        var $wrappers = $('.product-information-wrapper');
3258        if(!$wrappers.length){
3259            return;
3260        }
3261        $('.product-information-wrapper-toggle').click(function(e){
3262            e.preventDefault();
3263            var $toggle = $(this);
3264            $toggle.attr('aria-expanded', 'true').removeClass('show');
3265            $toggle.prev('.product-information-wrapper').removeClass('is-collapsible').addClass('is-expanded').css('max-height', '');
3266        });
3267        $wrappers.each(function(){
3268            applyState($(this));
3269        });
3270        $(window).resize(
3271            viewport.changed(function(){
3272                $wrappers.each(function(){
3273                    applyState($(this));
3274                });
3275            }, 200)
3276        );
3277    }
3278
3279    function moveModalTrigger(){
3280        if($('.prepend-lightbox').length){
3281            let trigger;
3282            $('.prepend-lightbox').each(function(){
3283                trigger =$(this).parents('.modal-trigger-helper').find('.modal-thumb').detach();
3284                $(this).append(trigger);
3285            });
3286        }
3287    }
3288
3289    function extendedLightbox(){
3290        if($('.extended-lightbox').length){
3291            $('.extended-lightbox').on('shown.bs.modal', function (event) {
3292                equalHeightTeaser();
3293            })
3294        }
3295    }
3296
3297    function technologyHeadlineMenuHelper(){
3298        if($('#headline-menu').length){
3299            let menuEntry,
3300                isActive = $('#headline-menu').data('technology-title');
3301            $('#headline-menu .technology li').each(function(){
3302                menuEntry = $(this).find('a').text();
3303                menuEntry = $.trim(menuEntry);
3304                if(menuEntry === isActive){
3305                    $(this).addClass('active');
3306                }
3307            });
3308        }
3309    }
3310    function webSearchFilters(){
3311        if($('#websearch').length){
3312            let facet;
3313            let sword;
3314            let facetClass;
3315
3316            // set all filters to disabled
3317            $('.filters')
3318                .find('input')
3319                .attr('disabled','disabled')
3320                .siblings('label')
3321                .addClass('disabled');
3322
3323            // remove disabled from filters if entries are found
3324            $('.filters input[type=checkbox]').each(function(){
3325                let facet = $(this).data('facet');
3326                if ($('.facet.' + facet).length > 0) {
3327                    $(this)
3328                        .removeAttr('disabled')
3329                        .siblings('label')
3330                        .removeClass('disabled');
3331                }
3332            });
3333
3334            $('.filters input[type=checkbox]').on('click.addedActiveStatus', function(){
3335                $('.facet').hide();
3336                let p = 0;
3337                if ( $(this).prop( "checked" ) ){
3338                    facet = $(this).attr('id');
3339                    $('.facet.' + facet).show();
3340                } else {
3341                    facet = $(this).attr('id');
3342                    $('.facet.' + facet).hide();
3343                }
3344                $('input').each(function(){
3345                    if ( $(this).prop( "checked" ) ){
3346                        facet = $(this).attr('id');
3347                        $('.facet.' + facet).show();
3348                        p += 1;
3349                    }
3350                });
3351                // if no filter is set, show all entries
3352                if(!p){
3353                    $('.facet').show();
3354                }
3355            });
3356        }
3357        // implement search and replace
3358        const searchArray = ["celine 2","olivia 2","elsa 2","dali 2","md c","mdc","pd c","pdc","md flat","pd flat","pd atmo","apc 10","apc 20","apc 30","apc-10","apc-20","apc-30","ip 54","slp2","elsa2","bim portal","knx-produktdatenbank","light and building"];
3359        const replaceArray = ["CELINE-2","OLIVIA-2","ELSA-2","DALI-2","MD-C","MD-C","PD-C","PD-C","MD-FLAT","PD-Flat","PD-ATMO","APC10","APC20","APC30","APC10","APC20","APC30","IP54","SLP-2","ELSA-2","BIM-Portal","KNX Produktdatenbank","Light + Building"];
3360        let searchInput = Array.from(document.getElementsByClassName("ke_search_sword"));
3361        let status = true;
3362        searchInput.forEach((input) => {
3363            input.addEventListener("keyup", function () {
3364                const inputValue = input.value.toLowerCase();
3365
3366                // indexOf returns -1 if the value was not found
3367                const index = searchArray.indexOf(inputValue);
3368
3369                if(status){
3370                    if (index !== -1) {
3371                        input.value = replaceArray[index];
3372                        // disable search and replace
3373                        status = false;
3374                    }
3375                }
3376            });
3377        });
3378    }
3379    function preventLineBreak(id, element) {
3380        if($('#' + id).length){
3381            const container = document.getElementById(id);
3382            const elements = container.querySelectorAll(element);
3383            const expressions = ['CELINE-2','OLIVIA-2','ELSA-2','SLP-2'];
3384            // Erstellen eines globalen und case-insensitive regulären Ausdrucks
3385
3386            expressions.forEach(expression => {
3387                const regex = new RegExp(expression, 'gi');
3388                elements.forEach(element => {
3389                    // Ersetzen des gefundenen Texts mit <span>-Tags
3390                    element.innerHTML = element.innerHTML.replace(regex, '<span class="nowrap">$&</span>');
3391                });
3392            });
3393        }
3394    }
3395    function searchCollapse(){
3396        $('.search-trigger').click(function(){
3397            $(this).parent('.search').toggleClass('collapsed');
3398        });
3399        $(window).resize(
3400            viewport.changed(function() {
3401                if(viewport.is('>sm')) {
3402                    $('.search-trigger').parent('.search').removeClass('collapsed');
3403                }
3404            })
3405        )
3406    }
3407
3408    function jobsIsotopeFilter(){
3409        if($('.jobs-wrapper .jobs').length){
3410            var $grid = $('.jobs-grid');
3411            var $items = $grid.find('.element-item');
3412
3413            // ----------------------------------------------------------------
3414            // Isotope initialisieren
3415            // ----------------------------------------------------------------
3416            $grid.isotope({
3417                itemSelector: '.element-item',
3418                layoutMode: 'fitRows',
3419                percentPosition: true,
3420                fitRows: {
3421                    gutter: 0
3422                }
3423            });
3424
3425            // ----------------------------------------------------------------
3426            // Helper: Prüfen, ob ein Filter mind. ein Item liefern würde.
3427            // Splittet kommagetrennte Selektoren und prüft jeden Teil einzeln.
3428            // ----------------------------------------------------------------
3429            function filterHasMatches(filterSelector) {
3430                if (!filterSelector || filterSelector === '*') {
3431                    return $items.length > 0;
3432                }
3433
3434                var parts = filterSelector.split(',');
3435                for (var i = 0; i < parts.length; i++) {
3436                    var part = $.trim(parts[i]);
3437                    if (!part) continue;
3438
3439                    try {
3440                        if ($items.filter(part).length > 0) {
3441                            return true;
3442                        }
3443                    } catch (err) {
3444                        // Ungültiger Selektor — überspringen
3445                        if (window.console && console.warn) {
3446                            console.warn('Ungültiger Filter-Selektor:', part, err);
3447                        }
3448                    }
3449                }
3450                return false;
3451            }
3452
3453            // ----------------------------------------------------------------
3454            // Filter ohne Treffer deaktivieren (einmalig beim Laden)
3455            // ----------------------------------------------------------------
3456            function disableEmptyFilters() {
3457                $('.filter-button-group .dropdown-menu a').each(function() {
3458                    var $link = $(this);
3459                    var $li = $link.parent('li');
3460                    var filterValue = $link.attr('data-filter');
3461
3462                    // "Alle"-Filter nie deaktivieren
3463                    if (filterValue === '*') {
3464                        return;
3465                    }
3466
3467                    if (!filterHasMatches(filterValue)) {
3468                        $li.addClass('disabled');
3469                        $link.attr('aria-disabled', 'true');
3470                    }
3471                });
3472            }
3473
3474            // ----------------------------------------------------------------
3475            // Alle anderen Dropdowns auf "Alle" zurücksetzen
3476            // ----------------------------------------------------------------
3477            function resetOtherDropdowns($activeMenu) {
3478                $('.filter-button-group .dropdown-menu').not($activeMenu).each(function() {
3479                    var $menu = $(this);
3480                    var $dropdownToggle = $menu.closest('.dropdown').find('.dropdown-toggle');
3481                    var $chosen = $dropdownToggle.find('.chosen');
3482                    var defaultLabel = $chosen.data('default-label');
3483
3484                    if (defaultLabel) {
3485                        $chosen.text(defaultLabel);
3486                    }
3487
3488                    $menu.find('li').removeClass('active');
3489                });
3490            }
3491
3492            // ----------------------------------------------------------------
3493            // Original-Labels der Dropdown-Buttons sichern
3494            // ----------------------------------------------------------------
3495            function storeDefaultLabels() {
3496                $('.filter-button-group .dropdown-toggle .chosen').each(function() {
3497                    var $chosen = $(this);
3498                    $chosen.data('default-label', $.trim($chosen.text()));
3499                });
3500            }
3501
3502            // ----------------------------------------------------------------
3503            // Init
3504            // ----------------------------------------------------------------
3505            storeDefaultLabels();
3506            disableEmptyFilters();
3507
3508            // ----------------------------------------------------------------
3509            // Klickhandler für Filter-Links
3510            // ----------------------------------------------------------------
3511            $('.filter-button-group').on('click', '.dropdown-menu a', function(e) {
3512                e.preventDefault();
3513
3514                var $link = $(this);
3515                var $li = $link.parent('li');
3516
3517                if ($li.hasClass('disabled')) {
3518                    return;
3519                }
3520
3521                var $menu = $link.closest('.dropdown-menu');
3522                var filterValue = $link.attr('data-filter');
3523
3524                resetOtherDropdowns($menu);
3525
3526                $menu.closest('.dropdown')
3527                    .find('.dropdown-toggle .chosen')
3528                    .text($link.text());
3529
3530                $menu.find('li').removeClass('active');
3531                $li.addClass('active');
3532
3533                $grid.isotope({ filter: filterValue });
3534            });
3535        }
3536    }
3537
3538    function jobsFilter(){
3539        if($('.jobs-wrapper .jobs').length){
3540
3541            // init Isotope
3542            var $grid = $('.jobs-grid').isotope({
3543                itemSelector: '.element-item',
3544                // options for masonry layout mode
3545                masonry: {
3546                    columnWidth: '.grid-sizer'
3547                }
3548
3549            });
3550
3551
3552            // store filter for each group
3553            var filters = {};
3554
3555            $('.filter-button-group').on( 'click', 'a', function(e) {
3556                e.preventDefault();
3557                var $this = $(this);
3558                // get group key
3559                var $buttonGroup = $this.parents('.button-group');
3560                var filterGroup = $buttonGroup.attr('data-filter-group');
3561                // set filter for group
3562                filters[ filterGroup ] = $this.attr('data-filter');
3563                // combine filters
3564                var filterValue = concatValues( filters );
3565                // set filter for Isotope
3566                $grid.isotope({ filter: filterValue });
3567            });
3568
3569            // change is-checked class on buttons
3570            $('.button-group').each( function( i, buttonGroup ) {
3571                var $buttonGroup = $( buttonGroup );
3572                $buttonGroup.on( 'click', 'li', function() {
3573                    $buttonGroup.find('.is-checked').removeClass('is-checked');
3574                    $( this ).addClass('is-checked');
3575                    var chosen = $( this ).find('a').html();
3576                    $( this ).parents('.dropdown').find('.chosen').html(chosen);
3577                });
3578            });
3579
3580            // flatten object by concatting values
3581            function concatValues( obj ) {
3582                var value = '';
3583                for ( var prop in obj ) {
3584                    value += obj[ prop ];
3585                }
3586                return value;
3587            }
3588        }
3589    }
3590
3591    $(document).ready(function() {
3592        document.body.addEventListener('cookieOptinHidden', function() {
3593            window.location.reload();
3594        });
3595        webSearchFilters();
3596        searchCollapse();
3597        preventLineBreak('c745','.ce-uploads-fileName');
3598        // clickDummyWebSearch();
3599        technologyHeadlineMenuHelper();
3600        extendedLightbox();
3601        buildAnchorNavOnContentPages();
3602        moveModalTrigger();
3603        showMoreProductsInAccordions();
3604        collapseProductInformation();
3605        openAccordionByPosition('.portfolio');
3606        openAllPortfolioCategories();
3607        pbLightboxWrapper();
3608        twoImageFader();
3609        copyToClipboard();
3610        equalHeightTeaser();
3611        newCatalogue();
3612        orderRequestForm();
3613        adjustTeaserText();
3614        nameConceptAccordion();
3615        portfolioSeriesAccordion();
3616        seriesAccordion();
3617        moreFilters();
3618        esyworld();
3619        installationsvideo();
3620        //quickOrderRequest();
3621        clickmodule();
3622        herbstaktion2020();
3623        getPdfModal();
3624        privacyBanner();
3625        openNLModal();
3626        languageMenu();
3627        observeProductStickyNav();
3628        addCtaToStaticHeaderImage();
3629        getNewsletterModal();
3630        headerAnimation();
3631        headerSlideShow();
3632        observeMobileStickyBar();
3633        responsiveBackgroundImages();
3634        responsiveVideos();
3635        anchorParamToHash();
3636        filterOnMobile();
3637        toTopButton();
3638
3639        $('#datetimepicker').datetimepicker({
3640            timepicker: false,
3641            format:'Y-m-d',
3642            minDate:'0',
3643            maxDate:'+1970/01/08',
3644            scrollMonth : false,
3645            scrollInput : false
3646        });
3647
3648        $('.c-elc .cta,.c-elc .red-content a, .anchor').click(function(){
3649            var header = 0, hash, split;
3650            hash = $(this).attr('href');
3651            split = hash.split("#");
3652            hash = '#' + split[1];
3653
3654            if(hash){
3655                if(hash === '#quickCalculation'){
3656
3657                    if($('.fixed-header-helper').length){
3658                        header = $('.fixed-header-helper').height();
3659                    }
3660                    setTimeout(function(){
3661                        $('html, body').animate({
3662                            scrollTop : $(hash).offset().top-header
3663                        },500, function() {
3664                            $('#pills-facts-tab').removeClass('active');
3665                            $(hash).children().addClass('active').find('.accordion-body').slideDown("slow");
3666                            $('#pills-facts').removeClass('show active');
3667                            $('#pills-reluxQuickCalculation').addClass('show active');
3668                        });
3669                    }, 500);
3670
3671                } else {
3672
3673                    if($('.fixed-header-helper').length){
3674                        header = $('.fixed-header-helper').height();
3675                    }
3676                    setTimeout(function(){
3677                        $('html, body').animate({
3678                            scrollTop : $(hash).offset().top-header
3679                        },500, function() {
3680                            $(hash).addClass('show').find('.accordion-body').slideDown("slow");
3681                        });
3682                    }, 500);
3683                }
3684            }
3685        });
3686
3687        var version = detectIE();
3688
3689        if (version !== false) {
3690            $('head').append( '<link rel="stylesheet" type="text/css" href="' + assetUrl('Stylesheets/ie.css') + '" media="all">' );
3691        }
3692        $('.tooltip-wrapper .tooltip-content').each(function(){
3693            var tcwidth = $(this).outerWidth();
3694            var twwidth = $(this).parent().outerWidth();
3695            $(this).css({
3696                'margin-left' : -(tcwidth-twwidth)/2
3697            });
3698        });
3699        $('.tooltip-wrapper').mouseenter(function(){
3700            $(this).find('.tooltip-content').fadeIn();
3701        });
3702        $('.tooltip-wrapper').mouseleave(function(){
3703            $(this).find('.tooltip-content').fadeOut();
3704        });
3705
3706        dismissNewsletter();
3707        optWideTeaserForMobile();
3708        coverImage();
3709        logoBox();
3710        sprachMenu();
3711        countrySelectAfterRedirect();
3712        searchPanel();
3713 //       findProdLinksToHide();
3714 //       tameServiceMenu();
3715        noSubMenu();
3716        printPreventDefault();
3717        filterAccordion();
3718        toggleAllContentAccordions();
3719        kachelWrapper();
3720        preventShortcutsInMainMenu();
3721        mediaCenterCatalogueHelper();
3722        herbstAktion();
3723        lightCalcualteForm();
3724        slideToAccordionContent();
3725        equalHeightPillsTabs();
3726        validateLightCalculation();
3727        addCounterToBookmarkAll();
3728        amendProductDownloads();
3729        hideProdMenuOnPortfolio();
3730        basket();
3731        initializeRmaUserForm();
3732        toggleArchivedInSearchList();
3733        initPageBrowserInSearchList();
3734        survey();
3735        lightboxElement();
3736        equalHeightProductTeaser();
3737        mobileMenu();
3738
3739        $('.nav-item a').click(function(){
3740            setTimeout(function(){
3741                slideToAccordionContent();
3742            }, 500);
3743
3744        });
3745
3746        if($("#full-width-slider").length){
3747            window.sessionStorage.removeItem('esyluxProductfilter');
3748
3749            $('#full-width-slider').royalSlider({
3750                arrowsNav: false,
3751                loop: true,
3752                keyboardNavEnabled: true,
3753                controlsInside: false,
3754                imageScaleMode: 'fill',
3755                arrowsNavAutoHide: false,
3756                autoScaleSlider: true,
3757                autoScaleSliderWidth: 1920,
3758                autoScaleSliderHeight: 560,
3759                controlNavigation: 'bullets',
3760                thumbsFitInViewport: false,
3761                navigateByClick: true,
3762                startSlideId: 0,
3763                autoPlay: {
3764                    enabled: true,
3765                    stopAtAction: false,
3766                    pauseOnHover: false,
3767                    delay: 6000},
3768                transitionType:'move',
3769                globalCaption: false,
3770                deeplinking: {
3771                    enabled: true,
3772                    change: false
3773                },
3774                /* size of all images http://help.dimsemenov.com/kb/royalslider-jquery-plugin-faq/adding-width-and-height-properties-to-images */
3775               imgWidth: 1920,
3776               imgHeight: 560
3777
3778            });
3779
3780            // Manipulation of slider element with video content
3781            $('.rsVideo').each(function(){
3782                fitVideoToSlider(this);
3783            });
3784            // Start Animations within Royal Slider
3785            var slider = $(".royalSlider").data('royalSlider');
3786/*
3787            slider.ev.on('rsBeforeAnimStart', function(event) {
3788                $('.rsContent').removeClass('init');
3789                if(!slider.currSlide.content[0].children[0].attributes.class.nodeValue){
3790
3791                } else {
3792                    if(slider.currSlide.content[0].children[0].attributes.class.nodeValue == 'rsContent animation-fade-show' || slider.currSlide.content[0].children[0].attributes.class.nodeValue == 'rsContent animation-fade-show added-cta'){
3793                        $('.rsContent.animation-fade-show').addClass('init');
3794                    } else {
3795                        setTimeout(function(){
3796                            headerAnimation();
3797                        },10);
3798                    }
3799                }
3800
3801
3802
3803            });
3804
3805 */
3806
3807            // rsBeforeAnimStart statt rsAfterSlideChange: hier zeigt currSlide bereits
3808            // auf den einfahrenden Slide, das Video startet also schon waehrend der
3809            // Einschiebe-Animation bei 0 statt erst beim Einrasten. Sichtbar ist es
3810            // dadurch 0,6 s (rein) + 6,0 s (Stand) + 0,6 s (raus) = 7,2 s.
3811            slider.ev.on('rsBeforeAnimStart', function(event) {
3812
3813                // Nur das Video des Slides zuruecksetzen, der gerade eingefahren ist.
3814                // $('.rsVideo')[0] hat immer das erste Video im DOM getroffen - also
3815                // nie das sichtbare, weil RoyalSlider die Slide-Inhalte dynamisch
3816                // austauscht.
3817                var video = slider.currSlide ? $(slider.currSlide.content).find('video.rsVideo')[0] : null;
3818                var playPromise;
3819
3820                if(video){
3821                    // Das Video kann frisch eingehaengt worden sein und dann noch
3822                    // ungeskaliert in seiner Rohgroesse stehen
3823                    fitVideoToSlider(video);
3824
3825                    // Kein load() - das setzt das Element auf readyState HAVE_NOTHING
3826                    // zurueck und blendet fuer einen Moment einen leeren Frame ein
3827                    // (Blitzer beim Einfahren des Slides). Ein Seek auf 0 bei bereits
3828                    // geladenem Video ist sofort und blankt nicht.
3829                    video.currentTime = 0;
3830                    playPromise = video.play();
3831                    if(playPromise){
3832                        playPromise.catch(function(){});
3833                    }
3834                }
3835
3836            });
3837
3838
3839
3840            var sliderWidth, containerWidth, offsetArrows;
3841
3842            sliderWidth = $('#full-width-slider').width();
3843            containerWidth = $('footer').children('.container').width();
3844            offsetArrows = (sliderWidth - containerWidth)/2;
3845            if(viewport.is('<sm')) {
3846                $('.rsArrowRight').css({
3847                    'right' : 'auto',
3848                    'left' : offsetArrows +75
3849
3850                });
3851                $('.rsArrowLeft').css({
3852                    'right' : 'auto',
3853                    'left' : offsetArrows +29
3854
3855                });
3856                $('.rsBullets').css({
3857                    'right' : 'auto',
3858                    'left' : offsetArrows +40
3859
3860                });
3861            } else {
3862                if(containerWidth < 1500){
3863                    $('.rsArrowRight').css({
3864                        'right' : 'auto',
3865                        'left' : offsetArrows +80
3866
3867                    });
3868                    $('.rsArrowLeft').css({
3869                        'right' : 'auto',
3870                        'left' : offsetArrows +40
3871
3872                    });
3873                } else {
3874                    $('.rsArrowRight').css({
3875                        'right' : 'auto',
3876                        'left' : offsetArrows +115
3877
3878                    });
3879                    $('.rsArrowLeft').css({
3880                        'right' : 'auto',
3881                        'left' : offsetArrows +75
3882
3883                    });
3884                }
3885                $('.rsBullets').css({
3886                    'right' : 'auto',
3887                    'left' : offsetArrows +75
3888
3889                });
3890
3891
3892            }
3893
3894
3895
3896            // Add .cta to headline
3897            $('.rsContent').each(function(){
3898
3899                var href = $(this).parent().attr('href');
3900                var trackingEvent = $(this).parent().attr('onclick');
3901                var target = $(this).parent().attr('target');
3902                if(href !== undefined){
3903                    $(this).addClass('added-cta');
3904                    if($(this).find('p').length){
3905                        $(this).find('p').append('<a class="cta" href="' + href +'" target="' + target + '" onclick="' + trackingEvent + '"></a>');
3906                    }
3907                    else if($(this).find('.subline').length){
3908                        $(this).find('.subline').append('<a class="cta" href="' + href +'" target="' + target + '" onclick="' + trackingEvent + '"></a>');
3909                    } else{
3910                        $(this).find('h2').append('<a class="cta" href="' + href +'" target="' + target + '" onclick="' + trackingEvent + '"></a>');
3911                    }
3912                }
3913
3914
3915            });
3916
3917            // Add cta to the heading for those items that were not originally considered
3918            var slider = $("#full-width-slider").data('royalSlider');
3919
3920            slider.ev.on('rsAfterSlideChange', function(event) {
3921                if($('.rsContent:not(.added-cta)').length){
3922                    $('.rsContent:not(.added-cta)').each(function(){
3923
3924                        var href = $(this).parent().attr('href');
3925                        var target = $(this).parent().attr('target');
3926                        var trackingEvent = $(this).parent().attr('onclick');
3927
3928                        if(href !== undefined){
3929                            $(this).addClass('added-cta');
3930                            if($(this).find('.subline').length){
3931                                $(this).find('.subline').append('<a class="cta" href="' + href +'" target="' + target + '" onclick="' + trackingEvent + '"></a>');
3932                            } else{
3933                                $(this).find('h2').append('<a class="cta" href="' + href +'" target="' + target + '" onclick="' + trackingEvent + '"></a>');
3934                            }
3935                        }
3936
3937
3938                    });
3939                }
3940
3941            });
3942
3943        }
3944        $('.royalSlider').css('display', 'block');
3945
3946        if($(".owl-carousel.lp-teasers").length){
3947            $(".owl-carousel.lp-teasers").owlCarousel({
3948                loop:true,
3949                margin: 15,
3950                nav: true,
3951                dots: false,
3952                autoplay:true,
3953                autoplayTimeout:4000,
3954                autoplayHoverPause:true,
3955                smartSpeed: 500,
3956                navClass: ["prev","next"],
3957                responsive : {
3958                        // breakpoint from 0 up
3959                        0 : {
3960                            items: 1
3961                        },
3962                        768 : {
3963                            items: 2
3964                        },
3965                        1200 : {
3966                            items: 3
3967                        },
3968                        1600 : {
3969                            items: 4
3970                        }
3971                }
3972            });
3973        }
3974
3975
3976
3977        if($(".owl-carousel.product-slider").length){
3978            $(".owl-carousel.product-slider").owlCarousel({
3979                loop:true,
3980                center: true,
3981                margin: 10,
3982                nav: false,
3983                dots: true,
3984                dotsData: true,
3985                autoplay:false,
3986                smartSpeed: 1,
3987                paginationSpeed: 1,
3988                slideSpeed: 1,
3989                autoplayTimeout: 2000,
3990                items: 1,
3991                animateIn: 'fadeIn',
3992                animateOut: 'fadeOut',
3993                navClass: ["prev-small","next-small"],
3994                onInitialized: callback
3995            });
3996            $( '.owl-dot' ).on( 'click', function() {
3997                $('.owl-carousel').trigger('to.owl.carousel', [$(this).index(), 300]);
3998                $( '.owl-dot' ).removeClass( 'active' );
3999                $(this).addClass( 'active' );
4000            });
4001            $('.owl-dot').hover(function(e) {
4002                $(this).click();
4003            });
4004            function callback(event) {
4005                setTimeout(() => {
4006                    $('.owl-carousel.product-slider .owl-dots').animate({
4007                        scrollLeft: 200
4008                    }, 2000, function() {
4009
4010                        $('.owl-carousel.product-slider .owl-dots').animate({
4011                            scrollLeft: 0
4012                        }, 2000);
4013                    });
4014                }, '2000');
4015
4016                // Provided by the core
4017                var items     = event.item.count;     // Number of items
4018                if(items < 2){
4019                    $('.controls').hide();
4020                }
4021                adjustProdSliderHeight();
4022            }
4023        }
4024
4025        if($(".owl-carousel.image-fader").length){
4026            $(".owl-carousel.image-fader").owlCarousel({
4027                loop:true,
4028                nav: false,
4029                dots: false,
4030                autoplay:true,
4031                smartSpeed: 500,
4032                items: 1,
4033                animateOut: 'fadeOut'
4034            });
4035        }
4036
4037        if($(".owl-carousel.fader").length){
4038            $(".owl-carousel.fader").owlCarousel({
4039                loop:true,
4040                center: true,
4041                margin: 0,
4042                nav: false,
4043                dots: false,
4044                autoplay:true,
4045                autoplayTimeout:4000,
4046                smartSpeed: 1500,
4047                items: 1,
4048                animateIn: 'fadeIn',
4049                animateOut: 'fadeOut',
4050
4051            });
4052            $('.pause').on('click', function(e) {
4053                $('.owl-carousel.fader').trigger('stop.owl.autoplay');
4054                $('.outer-fader .controls div').toggleClass('triggered');
4055            })
4056            $('.play').on('click', function(e) {
4057                $('.owl-carousel.fader').trigger('play.owl.autoplay');
4058                $('.outer-fader .controls div').toggleClass('triggered');
4059            })
4060        }
4061
4062
4063
4064        if($(".accordion").length){
4065            if($(".accordion.show").length){
4066                $(".accordion.show").each(function(){
4067                    $(this).find('.accordion-body').slideToggle( "slow", function() {
4068                        coverImage();
4069                        // init isotope for job filters
4070                        setTimeout(() => {
4071 //                           jobsFilter();
4072                            jobsIsotopeFilter();
4073                        }, 1000);
4074                    });
4075                })
4076            }
4077
4078            $('.accordion .label .cta').click(function(e){
4079                e.preventDefault();
4080                $(this).parent('.label').parent(".accordion").toggleClass('show');
4081                $(this).parent('.label').siblings(".accordion-body").slideToggle( "slow", function() {
4082                    coverImage();
4083                    if($(this).find('.same-height-parent').length){
4084                        equalHeightTeaser();
4085                    }
4086                });
4087            });
4088        }
4089
4090        if($('.element-item').length){
4091
4092            /*
4093            // init Isotope
4094            var $grid = $('.grid').isotope({
4095                itemSelector: '.element-item',
4096                fitRows: {
4097                    gutter: 0
4098                }
4099            });
4100            */
4101
4102            var $grid = $('.grid').imagesLoaded( function() {
4103                // init Isotope after all images have loaded
4104                $grid.isotope({
4105                    itemSelector: '.element-item',
4106                    fitRows: {
4107                        gutter: 0
4108                    }
4109                });
4110            });
4111
4112            // store filter for each group
4113            var filters = {};
4114
4115            $('.filter-button-group').on( 'click', 'a', function(e) {
4116                e.preventDefault();
4117                var $this = $(this);
4118                // get group key
4119                var $buttonGroup = $this.parents('.button-group');
4120                var filterGroup = $buttonGroup.attr('data-filter-group');
4121                // set filter for group
4122                filters[ filterGroup ] = $this.attr('data-filter');
4123                // combine filters
4124                var filterValue = concatValues( filters );
4125                // set filter for Isotope
4126                $grid.isotope({ filter: filterValue });
4127            });
4128
4129            // change is-checked class on buttons
4130            $('.button-group').each( function( i, buttonGroup ) {
4131                var $buttonGroup = $( buttonGroup );
4132                $buttonGroup.on( 'click', 'li', function() {
4133                    $buttonGroup.find('.is-checked').removeClass('is-checked');
4134                    $( this ).addClass('is-checked');
4135                    var chosen = $( this ).find('a').html();
4136                    $( this ).parents('.dropdown').find('.chosen').html(chosen);
4137                });
4138            });
4139
4140            // flatten object by concatting values
4141            function concatValues( obj ) {
4142                var value = '';
4143                for ( var prop in obj ) {
4144                    value += obj[ prop ];
4145                }
4146                return value;
4147            }
4148
4149
4150
4151        }
4152
4153
4154        // Executes only in XS breakpoint
4155        if(viewport.is('>xs')) {
4156            if($(".owl-carousel.lp").length){
4157                $(".owl-carousel.lp").owlCarousel({
4158                    loop:true,
4159                    margin: 1,
4160                    autoHeight:true,
4161                    nav: true,
4162                    dots: true,
4163                    autoplay:false,
4164                    autoplayTimeout:4000,
4165                    autoplayHoverPause:true,
4166                    smartSpeed: 500,
4167                    items: 1,
4168                    navClass: ["prev-small","next-small"]
4169                });
4170                var owlSliderWidth, containerWidth;
4171
4172                windowWidth = $(window).width();
4173                containerWidth = $('footer').children('.container').width();
4174                offsetArrows = (windowWidth - containerWidth)/2;
4175                $('.owl-nav').css({
4176                    'right' : offsetArrows
4177
4178                });
4179                $('.owl-dots').css({
4180                    'left' : offsetArrows
4181
4182                });
4183                if($('.col-md-8 .owl-carousel.lp').length){
4184                    $('.col-md-8 .owl-carousel.lp').each(function(){
4185                        var imageHeight = $(this).find('.owl-item.active img').height();
4186                        $(this).find('.owl-nav').css({
4187                            'right' : 30,
4188                            'bottom' : 'auto',
4189                            'top' : imageHeight -60
4190                        });
4191                        $(this).find('.owl-dots').css({
4192                            'left' : 60,
4193                            'bottom' : 'auto',
4194                            'top' : imageHeight -35
4195                        });
4196                    });
4197                }
4198            }
4199            if($(".owl-carousel.related-slider").length){
4200                $(".owl-carousel.related-slider").owlCarousel({
4201                    loop:true,
4202                    center: false,
4203                    margin: 15,
4204                    nav: true,
4205                    dots: false,
4206                    autoplay:false,
4207                    smartSpeed: 500,
4208                //    items: 6,
4209                    navClass: ["prev-small","next-small"],
4210                    responsive : {
4211                        // breakpoint from 0 up
4212                        0 : {
4213                            items: 3
4214                        },
4215                        1200 : {
4216                            items: 6
4217                        }
4218                    }
4219                });
4220            }
4221        }
4222
4223        // Executes in SM, MD and LG breakpoints
4224        if(viewport.is('>sm')) {
4225
4226
4227            $('.main-nav .nav-item').mouseenter(function(){
4228                $(this).addClass('showSub');
4229                $(this).find('.second-level-menu').show();
4230
4231            });
4232            $('.main-nav .nav-item').mouseleave(function(){
4233                $(this).removeClass('showSub');
4234                $(this).find('.second-level-menu').hide();
4235            });
4236
4237            submenuPosition();
4238
4239        }
4240
4241        // Executes in XS breakpoints
4242        if(viewport.is('<sm')) {
4243        //    detachFilterOnMobile();
4244            detachFormOnMobile();
4245//            adjustProdSliderHeight();
4246            removeClassesForMobile();
4247
4248        }
4249        if(viewport.is('<md')) {
4250
4251        }
4252
4253        // Execute code each time window size changes
4254        $(window).resize(
4255
4256            viewport.changed(function() {
4257
4258                pbLightboxWrapper();
4259                equalHeightTeaser();
4260                coverImage();
4261    //            changeFilterToInitial();
4262                adjustProdSliderHeight();
4263                equalHeightPillsTabs();
4264                noSubMenu();
4265                quickOrderRequest();
4266                installationsvideo();
4267                lightboxElement();
4268  //              helpStayingFocused();
4269                equalHeightProductTeaser();
4270
4271                sliderWidth = $('#full-width-slider').width();
4272
4273                // Manipulation of slider element with video content
4274                $('.rsVideo').each(function(){
4275                    fitVideoToSlider(this);
4276                });
4277
4278                containerWidth = $('footer').children('.container').width();
4279                offsetArrows = (sliderWidth - containerWidth)/2;
4280                if(containerWidth < 1500){
4281                    $('.rsArrowRight').css({
4282                        'right' : 'auto',
4283                        'left' : offsetArrows +80
4284
4285                    });
4286                    $('.rsArrowLeft').css({
4287                        'right' : 'auto',
4288                        'left' : offsetArrows +40
4289
4290                    });
4291                    $('.rsBullets').css({
4292                        'right' : 'auto',
4293                        'left' : offsetArrows + 40
4294
4295                    });
4296
4297                } else {
4298                    $('.rsArrowRight').css({
4299                        'right' : 'auto',
4300                        'left' : offsetArrows +115
4301
4302                    });
4303                    $('.rsArrowLeft').css({
4304                        'right' : 'auto',
4305                        'left' : offsetArrows +75
4306
4307                    });
4308                    $('.rsBullets').css({
4309                        'right' : 'auto',
4310                        'left' : offsetArrows + 75
4311
4312                    });
4313
4314                }
4315
4316
4317
4318
4319
4320                // Executes in XS breakpoints
4321                if(viewport.is('<sm')) {
4322                 //   detachFilterOnMobile();
4323                    detachFormOnMobile();
4324                    removeClassesForMobile();
4325                }
4326                if(viewport.is('<md')) {
4327                    /*
4328                    var ua = navigator.userAgent.toLowerCase();
4329                    var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile");
4330                    if(!(isAndroid)) {
4331                        mobileMenu();
4332                    }
4333
4334                     */
4335                }
4336                if(viewport.is('>xs')) {
4337                    changeFormToInitial();
4338                    addClassesForPC();
4339                }
4340
4341
4342                // Executes in MD and LG breakpoints
4343                if(viewport.is('>sm')) {
4344                    submenuPosition();
4345//                    backToDesktopMenu();
4346
4347                    $('.main-nav .nav-item').mouseenter(function(){
4348                        $(this).addClass('showSub');
4349                        $(this).find('.second-level-menu').show();
4350
4351                    });
4352                    $('.main-nav .nav-item').mouseleave(function(){
4353                        $(this).removeClass('showSub');
4354                        $(this).find('.second-level-menu').hide();
4355                    });
4356                } else{
4357                    $('.main-nav .nav-item').off('mouseenter');
4358                    $('.main-nav .nav-item').off('mouseleave');
4359                }
4360
4361
4362
4363            })
4364
4365        );
4366
4367        initializeProductComparsion();
4368        initializeKeSearchAutoComplete();
4369        initializeSearchAutoComplete();
4370        initializeQuickOrder('.quickOrderTeaserForm');
4371    });
4372})(jQuery, ResponsiveBootstrapToolkit);

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.