PageSourceSearch

https://www.uniserv.com/typo3temp/assets/compressed/main-90d2a7ef253b5b164bedb14b303a71b7.js?1788966134

js uniserv.com collected 2026-10-02 08:25:30 UTC 43,120 bytes, 1,305 lines download raw bytes

1function youtubeEmbedUrl(idOrUrl) {
2    var value = String(idOrUrl || '').trim();
3    if (!value) {
4        return '';
5    }
6    var match = value.match(/(?:v=|youtu\.be\/|embed\/)([\w-]{11})/);
7    if (match) {
8        return 'https://www.youtube-nocookie.com/embed/' + match[1];
9    }
10    if (/^[\w-]{11}$/.test(value)) {
11        return 'https://www.youtube-nocookie.com/embed/' + value;
12    }
13    return '';
14}
15
16function hasYoutubeOptIn() {
17    try {
18        if (localStorage.getItem('tx_c1x1_videooptin') === 'true') {
19            return true;
20        }
21    } catch (e) {}
22    return document.cookie.split(';').some(function (part) {
23        return part.trim().indexOf('tx_c1x1_videooptin=true') === 0;
24    });
25}
26
27function activateYoutubeOptIns() {
28    document.querySelectorAll('.js-video-optin').forEach(function (root) {
29        if (root.getAttribute('data-youtube-ready') === '1') {
30            return;
31        }
32        var embed = youtubeEmbedUrl(root.getAttribute('data-youtube'))
33            || youtubeEmbedUrl(root.getAttribute('data-youtube-url'));
34        if (!embed) {
35            return;
36        }
37        var iframe = document.createElement('iframe');
38        iframe.className = 'w-100';
39        iframe.setAttribute('allowfullscreen', '');
40        iframe.setAttribute('allow', 'fullscreen');
41        iframe.src = embed + '?autohide=1&controls=1&enablejsapi=1&origin=' + encodeURIComponent(window.location.origin);
42        var img = root.querySelector('img');
43        if (img && (img.getAttribute('title') || img.getAttribute('alt'))) {
44            iframe.title = img.getAttribute('title') || img.getAttribute('alt');
45        }
46        root.className = 'video-embed-item embed-responsive-item';
47        root.innerHTML = '';
48        root.appendChild(iframe);
49        root.setAttribute('data-youtube-ready', '1');
50    });
51}
52
53function createCookie(name, value, days) {
54    var expires = '';
55    if (days) {
56        var date = new Date();
57        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
58        expires = '; expires=' + date.toUTCString();
59    }
60    document.cookie = name + '=' + value + expires + '; path=/';
61    try {
62        localStorage.setItem(name, String(value));
63    } catch (e) {}
64    if (name === 'tx_c1x1_videooptin') {
65        activateYoutubeOptIns();
66    }
67}
68
69(function bootYoutubeOptIn() {
70    function run() {
71        if (hasYoutubeOptIn()) {
72            activateYoutubeOptIns();
73        }
74    }
75    if (document.readyState === 'loading') {
76        document.addEventListener('DOMContentLoaded', run);
77    } else {
78        run();
79    }
80})();
81
82$(function () {
83
84
85
86    (function () {
87        function waitForSmartFormReady(callback, timeout = 10000, interval = 100) {
88            const started = Date.now();
89
90            const timer = setInterval(function () {
91                const form = document.querySelector('div[role="main"] form.SmartForm');
92
93                const isReady =
94                    form &&
95                    form.smartform &&
96                    Array.isArray(form.smartform.fields) &&
97                    form.smartform.fields.length > 0;
98
99                if (isReady) {
100                    clearInterval(timer);
101                    callback(form);
102                    return;
103                }
104
105                if (Date.now() - started > timeout) {
106                    clearInterval(timer);
107                }
108            }, interval);
109        }
110
111        function parseUrlParams() {
112            const params = {};
113            const queryString = window.location.search.slice(1);
114
115            if (!queryString) {
116                return params;
117            }
118
119            const pairs = queryString.split('&');
120
121            for (let pair of pairs) {
122                if (!pair) continue;
123
124                const [rawKey, rawValue] = pair.split('=');
125                const key = decodeURIComponent(rawKey || '');
126                const value = decodeURIComponent(rawValue || '');
127
128                params[key] = value;
129            }
130
131            return params;
132        }
133
134        function applyUrlParamsToForm(params) {
135            if ($('#form_TRACKING_DISABLED').length > 0 && params.ev_trackingdisabled == 1) {
136                $('#form_TRACKING_DISABLED').prop('checked', true);
137            }
138
139            if ($('#form_COMPANY').length > 0 && typeof params.ev_company !== 'undefined') {
140                $('#form_COMPANY').val(params.ev_company);
141            }
142
143            if ($('#form_EMAIL').length > 0 && typeof params.ev_email !== 'undefined') {
144                $('#form_EMAIL').val(params.ev_email);
145            }
146
147            if (
148                $('#form_DATENSCHUTZEINWILLIGUNGSMARTFORM').length > 0 &&
149                params.ev_privacyaccepted == 1
150            ) {
151                $('#form_DATENSCHUTZEINWILLIGUNGSMARTFORM').prop('checked', true);
152            }
153        }
154
155        function getUrlParams() {
156            const params = parseUrlParams();
157            const autosubmit =
158                params.ev_autosubmit === '1' ||
159                params.ev_autosubmit === '' ||
160                typeof params.ev_autosubmit !== 'undefined';
161
162            waitForSmartFormReady(function (form) {
163                applyUrlParamsToForm(params);
164
165                if (autosubmit) {
166                    setTimeout(() => {
167                        form.requestSubmit();
168                    }, 1000);
169                }
170            });
171        }
172
173        if (document.readyState === 'loading') {
174            document.addEventListener('DOMContentLoaded', getUrlParams);
175        } else {
176            getUrlParams();
177        }
178    })();
179
180
181    function checkScroll() {
182        var fraction = 0.8;
183        var $win = $(window);
184
185        $("video[autoplay]").each(function () {
186            elementTop = $(this).offset().top;
187            elementBottom = elementTop + $(this).outerHeight();
188            viewportTop = $win.scrollTop() + $("#contentHeader").outerHeight();
189            viewportBottom = viewportTop + $win.height();
190            videoplay = $(this).outerHeight() / 2;
191
192
193            if ($(window).width() < 980 && $(window).width() >= 768) {
194                if (viewportTop >= (elementTop - 200)) {
195                    this.play();
196                }
197            } else if ($(window).width() > 980) {
198                if (viewportBottom >= (elementTop + videoplay + 100)) {
199                    this.play();
200                }
201            }
202
203
204        });
205    }
206
207    $("video[autoplay]").each(function () {
208        this.pause();
209    });
210    var ua = navigator.userAgent.toLowerCase();
211    if (ua.indexOf('safari') != -1) {
212        if (ua.indexOf('chrome') > -1) {
213
214        } else {
215            $('thead tr').css('background', 'linear-gradient(135deg,#CF0F33 0%,#216DB4 100%)').css('background-attachment', 'fixed');
216        }
217    }
218    $('iframe').each(function () {
219        $(this).attr('src', $(this).attr('src') + '&rel=0');
220    })
221
222    if ($('.article').length > 0) {
223        var time = Math.round($('.article').text().length / 75 / 60);
224        if (time == 1) {
225            if ($('html').attr('lang') == 'de-DE') {
226                time = time + " Minute";
227            }
228            if ($('html').attr('lang') == 'fr-FR') {
229                time = time + " minute";
230            }
231            if ($('html').attr('lang') == 'en-US') {
232                time = time + " minute";
233            }
234        } else {
235            if ($('html').attr('lang') == 'de-DE') {
236                time = time + " Minuten";
237            }
238            if ($('html').attr('lang') == 'fr-FR') {
239                time = time + " minutes";
240            }
241            if ($('html').attr('lang') == 'en-US') {
242                time = time + " minutes";
243            }
244
245        }
246        console.log(time);
247        $('.readingtime').text(time);
248    }
249
250
251    $('.modal-footer a').on('click', function (e) {
252        e.preventDefault();
253    });
254
255
256    $('.childrenwrap').on('mouseenter', function (e) {
257        if (!$(this).hasClass('opened')) {
258            $('.childrenwrap').removeClass('opened');
259        }
260        $(this).addClass('opened');
261    });
262    $('.languageswitcher').on('click', function (e) {
263
264        $(this).find('.langmenu').toggleClass('opened');
265    });
266
267
268
269    $('.singlemenu').on('mouseenter', function (e) {
270        timer = setTimeout(function () {
271            $('.childrenwrap').removeClass('opened');
272        }, 1000);
273    }).on("mouseleave", function () {
274        clearTimeout(timer);
275    });
276
277    $('#mainNavBar').on('mouseleave', function (e) {
278        $('.childrenwrap').removeClass('opened');
279    });
280    $('.topnav').on('mouseenter', function (e) {
281        $('.childrenwrap').removeClass('opened');
282    });
283    $('.navfadeout').on('mouseenter', function (e) {
284        $('.childrenwrap').removeClass('opened');
285    });
286
287    $('.search').on('click', function (e) {
288        $('.searchframe').removeClass('d-none');
289    });
290    $('.closer').on('click', function (e) {
291        $('.searchframe').addClass('d-none');
292    });
293
294    const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
295
296    $('video').each(function () {
297        const video = this;
298
299        if (!isSafari) return;
300
301        video.classList.add('safari-overlay-target');
302    });
303
304    $('video').not('.safari-overlay-target').on('click', function (e) {
305        e.preventDefault();
306        e.stopImmediatePropagation();
307
308        if (this.paused) {
309            this.play();
310        } else {
311            this.pause();
312        }
313    });
314
315    $('.number').each(function () {
316        var $this = $(this);
317        var refreshId = setInterval(function () {
318            var newtext = $this.text().split('.').join("");
319            var newnumber = Math.ceil(parseInt(newtext) + parseInt($this.attr('data-number')));
320            $this.text(newnumber.toLocaleString('de-DE'));
321
322        }, 1000);
323    });
324
325    $('.periodicgallery').masonry({
326        itemSelector: '.item',
327        gutter: 30
328    });
329
330    function getSliderAutoplaySpeed($slider) {
331        var configured = parseInt($slider.attr('data-autoplay-speed'), 10);
332        if (!isNaN(configured) && configured > 0) {
333            return configured;
334        }
335        return $slider.hasClass('slidetype-1') ? 3000 : 5000;
336    }
337
338    function enableSliderAutoplayOnEnter($slider) {
339        if (!$slider.hasClass('slider-autoplay')) {
340            return;
341        }
342        var initialAdvanceDone = false;
343        var isInView = false;
344        var observer = new IntersectionObserver(function (entries) {
345            entries.forEach(function (entry) {
346                if (entry.isIntersecting) {
347                    if (isInView) {
348                        return;
349                    }
350                    isInView = true;
351                    if (!initialAdvanceDone) {
352                        initialAdvanceDone = true;
353                        // Advance once immediately so autoplay is visible,
354                        // then start the timer so autoplaySpeed applies to the rest.
355                        $slider.one('afterChange', function () {
356                            $slider.slick('slickPlay');
357                        });
358                        $slider.slick('slickNext');
359                    } else {
360                        $slider.slick('slickPlay');
361                    }
362                } else if (isInView) {
363                    isInView = false;
364                    $slider.slick('slickPause');
365                }
366            });
367        }, {threshold: 0.25});
368        observer.observe($slider[0]);
369    }
370
371    $('.slidetype-0').each(function () {
372        var $this = $(this)
373        $this.slick({
374            slidesToShow: 3,
375            dots: true,
376            arrows: true,
377            infinite: true,
378            autoplay: false,
379            autoplaySpeed: getSliderAutoplaySpeed($this),
380            prevArrow: $this.siblings('.carousel-controls').find('.slide.controls__prev'),
381            appendDots: $this.siblings('.carousel-controls').find('.slide.slick-slider-dots'),
382            nextArrow: $this.siblings('.carousel-controls').find('.slide.controls__next'),
383            responsive: [{
384                breakpoint: 1024,
385                settings: {
386                    slidesToShow: 1,
387                    slidesToScroll: 1,
388                    centerPadding: '0',
389                    centerMode: true,
390
391                }
392
393            }]
394        });
395        enableSliderAutoplayOnEnter($this);
396    })
397
398
399    $('.bubbleslider').each(function () {
400        var $this = $(this)
401
402        $this.slick({
403            dots: true,
404            autoplaySpeed: 5000,
405            autoplay: $this.hasClass('slider-autoplay'),
406            prevArrow: $this.parents('.bubblewrap').find('.bubble.controls__prev'),
407            appendDots: $this.parents('.bubblewrap').find('.bubble.slick-slider-dots'),
408            nextArrow: $this.parents('.bubblewrap').find('.bubble.controls__next')
409        });
410    })
411
412    $('.bubble-element-slider').each(function () {
413        var $this = $(this);
414        var $controls = $this.siblings('.carousel-controls');
415
416        $this.slick({
417            dots: true,
418            autoplaySpeed: 5000,
419            autoplay: $this.hasClass('slider-autoplay'),
420            adaptiveHeight: true,
421            prevArrow: $controls.find('.bubble-element-prev'),
422            appendDots: $controls.find('.bubble-element-dots'),
423            nextArrow: $controls.find('.bubble-element-next')
424        });
425    });
426
427    $('.bubbleslidermobile').each(function () {
428        var $this = $(this)
429
430        var bubblemobile = $this.slick({
431            dots: true,
432            autoplaySpeed: 5000,
433            autoplay: $this.hasClass('slider-autoplay'),
434            prevArrow: $this.parents('.mobilebubble').siblings('.carousel-controls').find('.bubblemobile.controls__prev'),
435            appendDots: $this.parents('.mobilebubble').siblings('.carousel-control
435s').find('.bubblemobile.slick-slider-dots-mobile'),
436            nextArrow: $this.parents('.mobilebubble').siblings('.carousel-controls').find('.bubblemobile.controls__next')
437        });
438
439        bubblemobile.on('afterChange', function (e, slick, currentSlide) {
440            var CurrentSlideDom = $(slick.$slides.get(currentSlide)).find('.bgelement').css('background-image');
441            $this.parents('.bubblebackground').css('background-image', CurrentSlideDom);
442        });
443    })
444
445    $('.tabletslider').each(function () {
446        let that = $(this);
447        let slider = $(this).find('.sliderwrap');
448        slider.slick({
449            dots: true,
450
451            prevArrow: that.find('.controls__prev'),
452            appendDots: that.find('.slick-slider-dots'),
453            nextArrow: that.find('.controls__next')
454        });
455    });
456
457    $('.nav-link').on('mouseenter', function () {
458
459        var title = $(this).text();
460        var abstract = $(this).data('abstract');
461        var image = $(this).data('image');
462        var rounded = $(this).data('rounded');
463        var imagefilter = $(this).data('imagefilter');
464        if (abstract) {
465            $('.descriptionlevel').html("<div class='h4 mb-5 mt-3 normal'><strong>" + title + "</strong></div>" + abstract);
466            $('.hoverimage').attr('src', image);
467            if (rounded == 1) {
468                $('.hoverimage').addClass('rounded');
469                if (imagefilter) {
470                    $('.hoverimage').parent().find('.overlay').addClass('rounded');
471                }
472            }
473            if (imagefilter) {
474                $('.hoverimage').parent().find('.overlay').removeClass('d-none');
475            }
476        } else {
477            $('.descriptionlevel').html("");
478
479        }
480        $('.thirdlevel').html('');
481
482        $('.parent').addClass('active-arrow');
483        if ($(this).hasClass('parent')) {
484            $(this).addClass('active-arrow');
485        }
486        var submenu = $(this).data('subelement');
487        var abstract = $(this).data('abstract');
488        var content = $('.subsubmenu' + submenu).html();
489        $('.thirdlevel').html(content).show().addClass('showsubnav').promise().done(function () {
490            $('.nav-link').on('mouseenter', function () {
491                $('.descriptionlevel').removeClass('large');
492                $('.hoverimage').attr('src', '');
493                $('.hoverimage').parent().find('.overlay').addClass('d-none');
494                $('.hoverimage').parent().find('.overlay').removeClass('rounded');
495                var title = $(this).text();
496                var abstract = $(this).data('abstract');
497                var image = $(this).data('image');
498                var rounded = $(this).data('rounded');
499                var imagefilter = $(this).data('imagefilter');
500                var childs = $(this).parent().parent().find('.float-end').length;
501                if (abstract) {
502                    if (childs < 1) {
503                        $('.descriptionlevel').html("<div class='h4 mb-5 mt-3 normal'><strong>" + title + "</strong></div>" + abstract);
504                    } else {
505                        $('.descriptionlevel').html("<div class='h4 mb-5 mt-3 normal'><strong>" + title + "</strong></div>" + abstract).addClass('large');
506                    }
507                    $('.hoverimage').attr('src', image);
508                    if (rounded == 1) {
509                        $('.hoverimage').addClass('rounded');
510                        if (imagefilter) {
511                            $('.hoverimage').parent().find('.overlay').addClass('rounded');
512                        }
513                    }
514                    if (imagefilter) {
515                        $('.hoverimage').parent().find('.overlay').removeClass('d-none');
516                    }
517                } else {
518                    $('.descriptionlevel').html("");
519
520                }
521            });
522        });
523    });
524
525    $('.subitemwrap').on('mouseleave', function () {
526        $('.thirdlevel').html('');
527        $('.hoverimage').attr('src', '');
528    });
529
530    var lastScrollTop = 0;
531    $(window).scroll(function () {
532        var st = $(this).scrollTop();
533
534        if (st > 90 && lastScrollTop - st < 0) {
535            $('.topnav').addClass('animateheight');
536            $('#mainNavBar').removeClass('mt-5');
537            if ($(window).width() > 1200) {
538                $('.logo').addClass('small');
539            }
540            $('.mainlevel .gradienthover').addClass('pb-4');
541        } else if (lastScrollTop - st > 0) {
542            $('.topnav').removeClass('animateheight');
543            $('#mainNavBar').addClass('mt-5');
544            if ($(window).width() > 1200) {
545                $('.logo').removeClass('small');
546            }
547            $('.mainlevel .gradienthover').removeClass('pb-4');
548        }
549        lastScrollTop = st;
550
551        checkScroll();
552    });
553
554    $('.formopener').on('click', function () {
555        $(this).removeClass('d-block').hide();
556        $('.footerform').removeClass('d-none');
557
558    });
559    $('.parent').on('mouseenter', function () {
560        $('.parent').not(this).removeClass('active-arrow');
561
562    });
563    $('.search').on('click', function () {
564        $('.topsearch').toggleClass('d-none');
565
566    });
567    $('.opener').on('click', function () {
568        $(this).toggleClass('open');
569        $('.mobilemenu').toggleClass('d-block');
570        $('.mobilesubitems').removeClass('d-block');
571        $('html').toggleClass('overflow-hidden');
572        $('.fixed-top').toggleClass('overflow-scroll');
573        $('.fixed-top').toggleClass('h-100');
574        $('body').toggleClass('overflow-hidden');
575
576    })
577    $('.showsub').on('click', function () {
578        $(this).parent().find('.mobilesubitems').addClass('d-block');
579    })
580    $('.mobilback').on('click', function () {
581        $('.mobilesubitems').removeClass('d-block');
582    })
583
584    $('.scrolldown').on('click', function () {
585        var scroll = $(this);
586        $('html, body').animate({
587            scrollTop: scroll.parent().parent().offset().top + scroll.parent().parent().height() - 80
588        }, 500);
589    })
590
591    if ($('.totalitems').length > 0) {
592        var total = $('.totalitems').data('total');
593        var files = $('.filebox').length;
594        if (total > files) {
595            $('.loadmorefiles').removeClass('d-none');
596        }
597    }
598
599    if ($(window).width() < 1200) {
600        $('.itemlink').on('click', function (e) {
601            if (!$(this).hasClass('clicked')) {
602                $('.itemlink').removeClass('clicked');
603                e.preventDefault();
604                let itemwrap = $(this).find('.itemwrap');
605                $(this).addClass('clicked');
606
607                $('.dqcontent').removeClass('d-none');
608                $('.itemwrap').removeClass('activedq');
609                itemwrap.addClass('activedq');
610                $('.defaultdq').addClass('transparent');
611                $('.dqtitle').addClass('d-none');
612                let title = itemwrap.data('title');
613                let text = itemwrap.data('text');
614                let icon = itemwrap.data('icon');
615                let icona = "<img src='/" + icon + "'>";
616                $('.dqcontent').html(icona + ' <strong class="d-block mb-4 gradienttext ">' + title + '</strong>' + text)
617
618
619            }
620        });
621    } else {
622        $('.itemwrap').on('mouseenter',
623            function () {
624                $('.dqcontent').removeClass('d-none');
625                $('.itemwrap').removeClass('activedq');
626                $(this).addClass('activedq');
627                $('.defaultdq').addClass('transparent');
628                $('.dqtitle').addClass('d-none');
629                let title = $(this).data('title');
630                let text = $(this).data('text');
631                let icon = $(this).data('icon');
632                let icona = "<img src='/" + icon + "'>";
633                $('.dqcontent').html(icona + ' <strong class="d-block mb-4 gradienttext ">' + title + '</strong>' + text)
634
635            },
636        );
637        $('.itemwrap').on('mouseleave',
638            function () {
639                $('.dqcontent').addClass('d-none');
640                $('.dqtitle').removeClass('d-none');
641
642                $('.itemwrap').removeClass('activedq');
643                $('.defaultdq').removeClass('transparent');
644            },
645        );
646    }
647
648
649    $('.showsubsub').on('click', function () {
650        $(this).parent().find('.mobilesubsubitems').addClass('d-block');
651    })
652    $('.mobilsubback').on('click', function () {
653        $('.mobilesubsubitems').removeClass('d-block');
654    })
655
656
657    var slider = $('.sliderrange');
658
659    $('input[type="range"]').on('input', function () {
660        var position = Math.round(document.getElementById("myRange").value / 100) * 100 / 100;
661        if (document.getElementById("myRange").value < 100) {
662            position = 0;
663        }
664        $('#myRange').attr('value', position);
665
666        slider.slick('slickGoTo', position)
667    });
668
669
670    $('.ajaxfilter').on('click', function (e) {
671        e.preventDefault();
672        uid = $(this).data('category');
673        lang = $("html").attr('lang');
674
675        if (lang == "de-DE") {
676            lang = '/';
677        } else if (lang == "en-US") {
678            lang = 'en/';
679        } else if (lang == "fr-FR") {
680            lang = 'fr/';
681        }
682
683        urlloc = window.location.origin;
684        jQuery.ajax({
685            type: "POST",
686            url: '' + urlloc + '/' + '?category=' + uid + '&tx_c1x1evalanchedownload_filelist%5Baction%5D=filtered&tx_c1x1evalanchedownload_filelist%5Bcontroller%5D=File&type=432516',
687            headers: {
688                'Cache-Control': 'no-cache, no-store, must-revalidate',
689                'Pragma': 'no-cache',
690                'Expires': '0'
691            },
692            dataType: 'html',
693            success: function (content) {
694                $('.downloadlist').html(content);
695                $('.loadmorefiles ').hide();
696
697            }
698        });
699    });
700
701    $('.loadmorefiles').on('click', function (e) {
702        e.preventDefault();
703        jQuery.ajax({
704            type: "POST",
705            url: "/?tx_c1x1evalanchedownload_filelist%5Baction%5D=filtered&tx_c1x1evalanchedownload_filelist%5Bcontroller%5D=File&type=432516",
706            data: {loaded: $('.filebox').length, page: $('.totalitems').data('page')},
707            headers: {
708                'Cache-Control': 'no-cache, no-store, must-revalidate',
709                'Pragma': 'no-cache',
710                'Expires': '0'
711            },
712            dataType: 'html',
713            success: function (content) {
714                $('.downloadlist').html(content);
715                $('.totalitems').data('page', $('.totalitems').data('page') + 1);
716                var total = $('.totalitems').data('total');
717                var files = $('.filebox').length;
718                if (total = files) {
719                    $('.loadmorefiles').addClass('d-none');
720                }
721            }
722        });
723    })
724
725    if ($(window).width() < 980 && $('#myRange').length > 0) {
726        let max = $('#myRange').attr('max');
727        $('#myRange').attr('max', parseInt(max) + 300);
728    }
729
730    slider.slick({
731        // dots: true,
732        infinite: false,
733        speed: 300,
734        dots: false,
735        arrows: false,
736        draggable: true,
737        slidesToShow: 3,
738        slidesToScroll: 1,
739        responsive: [{
740            breakpoint: 1024,
741            settings: {
742                slidesToShow: 1,
743                slidesToScroll: 1,
744                centerPadding: '0px',
745                centerMode: true,
746
747            }
748
749        }],
750
751    });
752    slider.on('afterChange', function (e, slick, currentSlide, nextSlide) {
753        var position = currentSlide * 100;
754        $('#myRange').attr('value', position);
755    });
756
757    window.addEventListener("resize", lightboxFix);
758
759    function lightboxFix() {
760        var windowWidth = window.innerWidth;
761        var windowHeight = window.innerHeight;
762
763        if ($(window).width() > 991) {
764            lightbox.option({
765                'positionFromTop': 50,
766            })
767        } else {
768            lightbox.option({
769                'positionFromTop': 200,
770            })
771        }
772
773    }
774
775    if ($(window).width() > 991) {
776        lightbox.option({
777            'positionFromTop': 50,
778        })
779    } else {
780        lightbox.option({
781            'positionFromTop': 200,
782        })
783    }
784    $(window).on("load", function () {
785        $('#tablet-slider-video').height($('#tablet-slider-image').outerHeight() - 20);
786        checkScroll();
787    });
788    $(window).on("resize", function () {
789        $('#tablet-slider-video').height($('#tablet-slider-image').outerHeight() - 20);
790    });
791    $('.slidetype-1').each(function () {
792        var $this = $(this)
793
794        $this.slick({
795            slidesToShow: 1,
796            dots: true,
797            arrows: true,
798            infinite: true,
799            autoplaySpeed: getSliderAutoplaySpeed($this),
800            autoplay: false,
801            prevArrow: $this.siblings('.carousel-controls').find('.slide.controls__prev'),
802            appendDots: $this.siblings('.carousel-controls').find(' .slide.slick-slider-dots'),
803            nextArrow: $this.siblings('.carousel-controls').find(' .slide.controls__next'),
804            responsive: [{
805                breakpoint: 1024,
806                settings: {
807                    slidesToShow: 1,
808                    slidesToScroll: 1,
809                    centerPadding: '0px',
810                    centerMode: true,
811
812                }
813
814            }]
815
816        });
817        enableSliderAutoplayOnEnter($this);
818    })
819
820
821    $('.bubbleslidermobile').each(function () {
822        var $slider = $(this);
823        if ($slider.closest('.bubble-element').length) {
824            return;
825        }
826        if ($slider.find('.fullsizeimg').length < 1) {
827            $slider.css({top: $(window).width() < 600 ? '15%' : '10%'});
828        }
829    });
830
831});
832const urlParams = window.location.search;
833
834//add {urlparameter} to HREF
835
836
837if (urlParams) {
838    $(document).ready(function () {
839        $('a').each(function () {
840            this.href = this.href.replace('%7Burlparameter%7D', urlParams);
841            if (this.href.includes('override')) {
842                let split = this.href.split('?');
843                this.href = split[0] + urlParams;
844            }
845        });
846    });
847} else {
848    $(document).ready(function () {
849        $('a').each(function () {
850            this.href = this.href.replace('%7Burlparameter%7D', '');
851            this.href = this.href.replace('{urlparameter}', '');
852            this.href = this.href.replace('&override=1', '');
853        });
854    });
855}
856
857if ($(window).width() < 991) {
858    $('.contenttable').parent().css('display', 'grid');
859    $('#wave').remove();
860    $('#wave2').remove();
861}
862
863/*$( window ).on( "load", function() {
864})*/
865
866$(window).on("load", function () {
867    /*lang = $("html").attr('lang');
868
869    if(lang === "de-DE") {
870
871        var tag = document.createElement("script");
872        tag.src = "https://cloud.ccm19.de/app.js?apiKey=76c8d5bea81f529f73d32b0cf60f743c007e2abb3517b
872695&amp;domain=632c7192a8f9222db3646394&amp;lang=de_DE";
873        tag.referrerpolicy = "origin";
874        tag.async;
875        document.getElementsByTagName("head")[0].appendChild(tag);
876    }*/
877
878    // var tag = document.createElement("script");
879    // tag.src = "/_assets/bf7f0ccb2a079e7f92a75cd9e46c1ea7/js/googletagmanager.js";
880    // tag.defer;
881    // document.getElementsByTagName("head")[0].appendChild(tag);
882
883    var ga4tag = document.createElement("script");
884    ga4tag.src = "/_assets/bf7f0ccb2a079e7f92a75cd9e46c1ea7/js/googletagmanager_obf.js";
885    ga4tag.defer;
886    document.getElementsByTagName("head")[0].appendChild(ga4tag);
887})
888
889$(window).on('resize', function () {
890    $('.bubbleslidermobile, .bubble-element-slider').each(function () {
891        if (this.slick) {
892            this.slick.refresh();
893        }
894    })
895});
896
897$('.languageswitcher').hover(
898    function () {
899        $('.langmenu').addClass('opened');
900    },
901    function () {
902        $('.langmenu').removeClass('opened');
903    }
904);
905
906$(document).on('click', 'form .btn.btn-primary[type="submit"]', function (e) {
907    const form = $(this).closest('form');
908    let allFilled = true;
909
910    form.find('[required]').each(function () {
911        if (!$(this).val().trim()) {
912            allFilled = false;
913        }
914    });
915
916    if (!allFilled || form.find('div.error.help-block').length) {
917        if (form.attr('id') === 'support-10408' || form.attr('id') === 'supportEN-10409' || form.attr('id') === 'supportFR-10410' || form.attr('id') === 'referenzdaten-10407' || form.attr('id') === 'referenzdatenEN-10406' || form.attr('id') === 'referenzdatenFR-10405') {
918            var formLanguage = getLanguage($('html').attr('lang'));
919            var formStatus = 'Unsuccessful';
920
921
922            if (form.attr('id') === 'support-10408') {
923                var formType = 'Supportformular'
924            }
925            if (form.attr('id') === 'supportEN-10409') {
926                var formType = 'Supportformular'
927            }
928            if (form.attr('id') === 'supportFR-10410') {
929                var formType = 'Supportformular'
930            }
931            if (form.attr('id') === 'referenzdaten-10407') {
932                var formType = 'Referenzdatenformular'
933            }
934            if (form.attr('id') === 'referenzdatenEN-10406') {
935                var formType = 'Referenzdatenformular'
936            }
937            if (form.attr('id') === 'referenzdatenFR-10405') {
938                var formType = 'Referenzdatenformular'
939            }
940            window.dataLayer = window.dataLayer || [];
941            window.dataLayer.push({
942                event: "form_related_interaction",
943                action: "Form Submission",
944                name: formType,
945                status: formStatus,
946                form_language: formLanguage
947            });
948        }
949    }
950});
951
952
953$(document).on('submit', 'form', function (e) {
954    if ($(this).attr('id') === 'support-10408' || $(this).attr('id') === 'supportEN-10409' || $(this).attr('id') === 'supportFR-10410' || $(this).attr('id') === 'referenzdaten-10407' || $(this).attr('id') === 'referenzdatenEN-10406' || $(this).attr('id') === 'referenzdatenFR-10405') {
955        var formLanguage = getLanguage($('html').attr('lang'));
956        var formStatus = 'Successful';
957
958
959        if ($(this).attr('id') === 'support-10408') {
960            var formType = 'Supportformular'
961        }
962        if ($(this).attr('id') === 'supportEN-10409') {
963            var formType = 'Supportformular'
964        }
965        if ($(this).attr('id') === 'supportFR-10410') {
966            var formType = 'Supportformular'
967        }
968        if ($(this).attr('id') === 'referenzdaten-10407') {
969            var formType = 'Referenzdatenformular'
970        }
971        if ($(this).attr('id') === 'referenzdatenEN-10406') {
972            var formType = 'Referenzdatenformular'
973        }
974        if ($(this).attr('id') === 'referenzdatenFR-10405') {
975            var formType = 'Referenzdatenformular'
976        }
977        window.dataLayer = window.dataLayer || [];
978        window.dataLayer.push({
979            event: "form_related_interaction",
980            action: "Form Submission",
981            name: formType,
982            status: formStatus,
983            form_language: formLanguage
984        });
985    }
986});
987
988function getLanguage(lang) {
989    switch (lang) {
990        case 'de-DE':
991            return "DE";
992        case 'en-US':
993            return "EN";
994        case 'fr-FR':
995            return "FR";
996        default:
997            return "Unknown";
998    }
999}
1000
1001(function () {
1002    window.fcWidgets = window.fcWidgets || new WeakMap();
1003
1004    function getFcWidget(form) {
1005        if (!form) return null;
1006        const el = form.querySelector('.frc-captcha');
1007        return el ? window.fcWidgets.get(el) : null;
1008    }
1009
1010    function initFriendlyCaptcha() {
1011        if (!window.friendlyChallenge || !window.friendlyChallenge.WidgetInstance) {
1012            return false;
1013        }
1014
1015        const elements = document.querySelectorAll('.frc-captcha:not([data-fc-initialized])');
1016        if (elements.length === 0) {
1017            return false;
1018        }
1019
1020        elements.forEach(function (el) {
1021            const widget = new window.friendlyChallenge.WidgetInstance(el, {
1022                startMode: 'none'
1023            });
1024            el.setAttribute('data-fc-initialized', 'true');
1025            window.fcWidgets.set(el, widget);
1026        });
1027
1028        return true;
1029    }
1030
1031    function clearVendorErrors(smartform) {
1032        if (!smartform) return;
1033
1034        smartform.dom_form_error.innerHTML = '';
1035        smartform.dom_form_error.style.display = 'none';
1036
1037        smartform.fields.forEach(function (field) {
1038            if (Object.hasOwn(field, 'input')) {
1039                if (Array.isArray(field.input)) {
1040                    field.input.forEach(function (input) {
1041                        input.classList.remove('validation_error');
1042                    });
1043                } else {
1044                    field.input.classList.remove('validation_error');
1045                    if (field.dom_label) {
1046                        field.dom_label.classList.remove('validation_error');
1047                    }
1048                }
1049            }
1050
1051            if (Object.hasOwn(field, 'dom_error_message')) {
1052                field.dom_error_message.style.display = 'none';
1053            }
1054        });
1055    }
1056
1057    function getMissingRequiredFields(smartform) {
1058        const missing = [];
1059
1060        smartform.fields.forEach(function (field) {
1061            if (!field.field || !field.field.required) return;
1062
1063            const values = field.get_value ? field.get_value() : [];
1064
1065            // no selected radio / checkbox group / multiselect
1066            if (!values || values.length === 0) {
1067                missing.push(field.id);
1068                return;
1069            }
1070
1071            // single-value fields
1072            if (values.length > 0 && Object.hasOwn(values[0], 'value')) {
1073                const value = values[0].value;
1074
1075                if (typeof value === 'string' && value.trim() === '') {
1076                    missing.push(field.id);
1077                    return;
1078                }
1079
1080                // required single checkbox unchecked => "0"
1081                if (field.type === 'checkbox' && value === '0') {
1082                    missing.push(field.id);
1083                }
1084            }
1085        });
1086
1087        return missing;
1088    }
1089
1090    function waitForCaptchaWidget(form, timeout = 10000) {
1091        return new Promise(function (resolve) {
1092            const started = Date.now();
1093
1094            function check() {
1095                initFriendlyCaptcha();
1096                const widget = getFcWidget(form);
1097                if (widget) {
1098                    resolve(widget);
1099                    return;
1100                }
1101                if (Date.now() - started > timeout) {
1102                    resolve(null);
1103                    return;
1104                }
1105                setTimeout(check, 200);
1106            }
1107
1108            check();
1109        });
1110    }
1111
1112    async function ensureFreshCaptcha(form) {
1113        // No captcha on this form — nothing to do.
1114        if (!form.querySelector('.frc-captcha')) {
1115            return true;
1116        }
1117
1118        const captchaField = form.querySelector("input[name='frc-captcha-solution']");
1119        const currentValue = captchaField ? captchaField.value.trim() : '';
1120        const lastValue = form.dataset.fcLastSubmittedValue || '';
1121
1122        let fcWidget = getFcWidget(form);
1123        if (!fcWidget) {
1124            fcWidget = await waitForCaptchaWidget(form);
1125        }
1126
1127        // first valid submit and no token yet
1128        if (!currentValue) {
1129            if (fcWidget) {
1130                fcWidget.reset();
1131                fcWidget.start();
1132            }
1133
1134            const fresh = await waitForCaptchaValue(form, '');
1135            if (!fresh) return false;
1136
1137            form.dataset.fcLastSubmittedValue = fresh;
1138            form.requestSubmit();
1139            return false;
1140        }
1141
1142        // token was already used in previous failed submit
1143        if (currentValue === lastValue) {
1144            if (fcWidget) {
1145                fcWidget.reset();
1146                fcWidget.start();
1147            }
1148
1149            const fresh = await waitForCaptchaValue(form, lastValue);
1150            if (!fresh) return false;
1151
1152            form.dataset.fcLastSubmittedValue = fresh;
1153            form.requestSubmit();
1154            return false;
1155        }
1156
1157        form.dataset.fcLastSubmittedValue = currentValue;
1158        return true;
1159    }
1160
1161    function waitForCaptchaValue(form, oldValue) {
1162        return new Promise(function (resolve) {
1163            const started = Date.now();
1164
1165            function check() {
1166                const field = form.querySelector("input[name='frc-captcha-solution']");
1167                const value = field ? field.value.trim() : '';
1168
1169                if (value && value !== oldValue) {
1170                    resolve(value);
1171                    return;
1172                }
1173
1174                if (Date.now() - started > 15000) {
1175                    resolve('');
1176                    return;
1177                }
1178
1179                setTimeout(check, 250);
1180            }
1181
1182            check();
1183        });
1184    }
1185
1186    function captchaNeedsRefresh(form) {
1187        if (!form.querySelector('.frc-captcha')) {
1188            return false;
1189        }
1190        const captchaField = form.querySelector("input[name='frc-captcha-solution']");
1191        const currentValue = captchaField ? captchaField.value.trim() : '';
1192        const lastValue = form.dataset.fcLastSubmittedValue || '';
1193        return !currentValue || currentValue === lastValue;
1194    }
1195
1196    document.addEventListener(
1197        'submit',
1198        function (e) {
1199            const form = e.target;
1200            if (!(form instanceof HTMLFormElement)) return;
1201            if (!form.classList.contains('SmartForm')) return;
1202            if (!form.smartform) return;
1203
1204            initFriendlyCaptcha();
1205
1206            const smartform = form.smartform;
1207
1208            // 1) validate normal fields first
1209            clearVendorErrors(smartform);
1210            const missing = getMissingRequiredFields(smartform);
1211
1212            if (missing.length > 0) {
1213                e.preventDefault();
1214                e.stopImmediatePropagation();
1215
1216                smartform.dom_form_error.style.display = 'block';
1217                smartform.validation_error_mandatory_error(missing);
1218                smartform.dom_form_error?.scrollIntoView();
1219                return;
1220            }
1221
1222            // 2) captcha: must preventDefault synchronously BEFORE any await.
1223            // Async listeners yield on await and let SmartForm POST without a token → Evalanche 500.
1224            if (captchaNeedsRefresh(form)) {
1225                e.preventDefault();
1226                e.stopImmediatePropagation();
1227
1228                ensureFreshCaptcha(form);
1229                return;
1230            }
1231
1232            const captchaField = form.querySelector("input[name='frc-captcha-solution']");
1233            if (captchaField) {
1234                form.dataset.fcLastSubmittedValue = captchaField.value.trim();
1235            }
1236        },
1237        true
1238    );
1239
1240    const observer = new MutationObserver(function () {
1241        initFriendlyCaptcha();
1242    });
1243
1244    observer.observe(document.body, {
1245        childList: true,
1246        subtree: true
1247    });
1248
1249    const interval = setInterval(function () {
1250        initFriendlyCaptcha();
1251        const pending = document.querySelectorAll('.frc-captcha:not([data-fc-initialized])');
1252        const initialized = document.querySelectorAll('.frc-captcha[data-fc-initialized]');
1253        if (pending.length === 0 && initialized.length > 0) {
1254            clearInterval(interval);
1255        }
1256    }, 300);
1257})();
1258
1259(function () {
1260    const lastCaptchaValues = new WeakMap();
1261
1262    document.addEventListener(
1263        'submit',
1264        function (e) {
1265            const form = e.target;
1266            if (!(form instanceof HTMLFormElement)) return;
1267            if (!form.classList.contains('SmartForm')) return;
1268
1269            const captchaField = form.querySelector("input[name='frc-captcha-solution']");
1270            if (captchaField) {
1271                lastCaptchaValues.set(form, captchaField.value || '');
1272            }
1273        },
1274        true
1275    );
1276
1277    const observer = new MutationObserver(function () {
1278        document.querySelectorAll('form.SmartForm').forEach(function (form) {
1279            const formError = form.smartform?.dom_form_error;
1280            if (!formError) return;
1281
1282            const isVisible =
1283                formError.style.display !== 'none' &&
1284                formError.innerHTML.trim() !== '';
1285
1286            if (!isVisible) return;
1287
1288            const captchaField = form.querySelector("input[name='frc-captcha-solution']");
1289            const currentValue = captchaField ? captchaField.value || '' : '';
1290            const lastCaptchaValue = lastCaptchaValues.get(form) || '';
1291            const captchaEl = form.querySelector('.frc-captcha');
1292            const fcWidget = captchaEl ? window.fcWidgets?.get(captchaEl) : null;
1293
1294            if (fcWidget && currentValue && currentValue === lastCaptchaValue) {
1295                fcWidget.reset();
1296                fcWidget.start();
1297            }
1298        });
1299    });
1300
1301    observer.observe(document.body, {
1302        childList: true,
1303        subtree: true
1304    });
1305})();

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.