PageSourceSearch

https://www.rotax.com/files/rotax2022/script/frontend.js?v=3de0fcb7

js rotax.com collected 2026-10-02 05:25:12 UTC 33,950 bytes, 811 lines download raw bytes

1"use strict";
2
3var sisu = sisu || {};
4
5sisu = $.extend(sisu, {
6    nav: {
7        $container: null,
8        $toggle: null,
9        init: function () {
10            sisu.nav.$container = $(".nav-desktop, .nav-mobile");
11            sisu.nav.$toggle = $(".js-toggle-mobile-nav");
12            sisu.nav.assignEventhandlers();
13            sisu.nav.update();
14        },
15        assignEventhandlers: function () {
16            sisu.nav.$toggle.on("click", function () {
17                sisu.nav.$toggle.toggleClass("active");
18            });
19
20            $(".nav-mobile strong.submenu").on("click", function (e) {
21                $(e.currentTarget).toggleClass("active").next("ul").slideToggle();
22            });
23
24            $(window).on("scroll", sisu.nav.update);
25        },
26        update: function (e) {
27            const $el = e ? $(e.currentTarget) : $(window);
28            const pixelsScrolled = $el.scrollTop();
29            const overContentClass = "is-over-content";
30
31            if (pixelsScrolled > 50) {
32                sisu.nav.$container.addClass(overContentClass);
33            } else {
34                sisu.nav.$container.removeClass(overContentClass);
35            }
36        },
37    },
38    slider: {
39        init: function () {
40            const rsceSlider = $(".rsce_slider");
41            if (rsceSlider && rsceSlider.length > 0) {
42                $(rsceSlider).each(function (i, el) {
43                    sisu.slider.initContentSlider($(el));
44                });
45            }
46
47            const quoteSlider = $(".rsce_quoteSlider");
48            if (quoteSlider && quoteSlider.length > 0) {
49                $(quoteSlider).each(function (i, el) {
50                    sisu.slider.initQuoteSlider($(el));
51                });
52            }
53
54            const newsTeaserSlider = $(".rsce_newsTeaserSlider");
55            if (newsTeaserSlider && newsTeaserSlider.length > 0) {
56                $(newsTeaserSlider).each(function (i, el) {
57                    sisu.slider.initNewsTeaserSlider($(el));
58                });
59            }
60
61            const pageTeaserSlider = $(".rsce_pageTeaserSlider_slider");
62            if (pageTeaserSlider && pageTeaserSlider.length > 0) {
63                $(pageTeaserSlider).each(function (i, el) {
64                    sisu.slider.initNewsTeaserSlider($(el));
65                });
66            }
67        },
68        initContentSlider: function ($el) {
69            const sliderOptions = JSON.parse($el.attr("data-sliderOptions"));
70
71            $el.slick({
72                arrows: sliderOptions.nav_arrows === "1",
73                autoplay: sliderOptions.autoplay === "1",
74                autoplaySpeed: 3000,
75                dots: sliderOptions.nav_dots === "1",
76                infinite: true,
77            });
78        },
79        initQuoteSlider: function ($el) {
80            const sliderOptions = JSON.parse($el.attr("data-sliderOptions"));
81
82            $el.slick({
83                arrows: sliderOptions.nav_arrows === "1",
84                autoplay: sliderOptions.autoplay === "1",
85                autoplaySpeed: 3000,
86                dots: sliderOptions.nav_dots === "1",
87                infinite: true,
88            });
89        },
90        initNewsTeaserSlider: function ($el) {
91            $el.slick({
92                arrows: true,
93                autoplay: false,
94                dots: false,
95                infinite: false,
96                slidesToShow: 3.8,
97                responsive: [
98                    {
99                        breakpoint: 1200,
100                        settings: {
101                            slidesToShow: 3.2,
102                        }
103                    },
104                    {
105                        breakpoint: 1000,
106                        settings: {
107                            slidesToShow: 2.2,
108                        }
109                    },
110                    {
111                        breakpoint: 800,
112                        settings: {
113                            slidesToShow: 1.5,
114                        }
115                    },
116                    {
117                        breakpoint: 600,
118                        settings: {
119                            slidesToShow: 1,
120                            dots: true,
121                        }
122                    }
123                ]
124            });
125        }
126    },
127    gallery: {
128        init: function () {
129            const gallery = $(".rsce_gallery");
130            if (gallery && gallery.length > 0) {
131                $(gallery).each(function (i, el) {
132                    const $el = $(el);
133                    const $imageContainer = $(".images", $el);
134
135                    $imageContainer.magnificPopup({
136                        delegate: "a",
137                        type: "image",
138                        gallery: {
139                            enabled: true,
140                            tCounter: ""
141                        },
142                        removalDelay: 300
143                    });
144
145                    $(".js-show-all", $el).on("click", function (e) {
146                        $imageContainer.removeClass("reduce");
147                    });
148
149                    $(".js-show-less", $el).on("click", function (e) {
150                        $imageContainer.addClass("reduce");
151                    });
152                });
153            }
154        },
155    },
156    image: {
157        init: function () {
158            const lightbox = $(".js-lightbox");
159            if (lightbox && lightbox.length > 0) {
160                $(lightbox).each(function (i, el) {
161                    const $el = $(el);
162
163                    $el.magnificPopup({
164                        delegate: "a",
165                        type: "image",
166                    });
167                });
168            }
169        }
170    },
171    cookiebox: {
172        $anchorlinks: null,
173        init: function () {
174            sisu.cookiebox.$anchorlinks = $("#_dr_toc_content a");
175
176            $(sisu.cookiebox.$anchorlinks).click(function (e) {
177                e.preventDefault();
178
179                $('html, body').animate({
180                    scrollTop: $('[id="' + $.attr(this, 'href').substr(1) + '"]').offset().top - 100
181                }, 500);
182
183                return false;
184            });
185        }
186    },
187    accordion: {
188        init: function (accordionSelector, headerSelector, contentSelector) {
189            if (!accordionSelector) {
190                accordionSelector = ".accordion";
191            }
192            if (!headerSelector) {
193                headerSelector = ".accordion-header";
194            }
195            if (!contentSelector) {
196                contentSelector = ".accordion-content";
197            }
198
199            if (accordionSelector && accordionSelector.length > 0) {
200                $(accordionSelector).each(function (i, accordion) {
201                    const $accordion = $(accordion);
202                    const $header = $(headerSelector, $accordion);
203                    const $content = $(contentSelector, $accordion);
204
205                    $header.on("click", function (e) {
206                        $content.slideToggle(200);
207                        $header.toggleClass("active");
208                    });
209                });
210            }
211        },
212    },
213    counter: {
214        counters: [],
215        init: function () {
216            const conterbox = $(".js-counter-box");
217
218            if (conterbox && conterbox.length > 0) {
219                $(conterbox).each(function (i, el) {
220                    const $el = $(el);
221                    const instance = JSON.parse($el.attr("data-config"));
222                    instance.done = false;
223                    instance.$el = $el;
224                    instance.current = instance.start;
225
226                    if (instance.stop > instance.start) {
227                        instance.step = (instance.stop - instance.start) / (instance.duration / 16.666);
228                    } else {
229                        instance.step = -(instance.start - instance.stop) / (instance.duration / 16.666);
230                    }
231
232                    sisu.counter.counters.push(instance);
233
234                    $(el).sisu_scrollAnimation(function (progress) {
235                        if (progress > 10) {
236                            this.$target.addClass("active");
237                        }
238                    });
239                });
240
241                sisu.counter.count();
242            }
243        },
244        count: function () {
245            for (var i in sisu.counter.counters) {
246                if (sisu.counter.counters[i].done !== true && sisu.counter.counters[i].$el.hasClass("active")) {
247                    sisu.counter.counters[i].current += sisu.counter.counters[i].step;
248
249                    if (
250                        (
251                            sisu.counter.counters[i].step > 0 &&
252                            sisu.counter.counters[i].current >= sisu.counter.counters[i].stop
253                        )
254                        ||
255                        (
256                            sisu.counter.counters[i].step < 0 &&
257                            sisu.counter.counters[i].current <= sisu.counter.counters[i].stop
258                        )
259                    ) {
260                        sisu.counter.counters[i].current = sisu.counter.counters[i].stop;
261                        sisu.counter.counters[i].done = true;
262                    }
263
264                    var value = parseInt(sisu.counter.counters[i].current) + "";
265                    if (sisu.counter.counters[i].separator) {
266                        value = value.replace(/\B(?=(\d{3})+(?!\d))/g, sisu.counter.counters[i].separator);
267                    }
268                    $(".value", sisu.counter.counters[i].$el).html(value);
269                }
270            }
271
272            for (var i in sisu.counter.counters) {
273                if (sisu.counter.counters[i].done !== true) {
274                    requestAnimationFrame(sisu.counter.count);
275                    return;
276                }
277            }
278        }
279    },
280    search: {
281        init: function () {
282            const navAsSearchForm = $(".nav-as-search-form");
283            if (navAsSearchForm && navAsSearchForm.length > 0) {
284                $(navAsSearchForm).each(function () {
285                    const navToggle = $('.search-toggle', this);
286
287                    $(navToggle).on('click', function (e,) {
288                        $(this).closest(".nav-as-search-form").toggleClass('search-active');
289                    });
290                });
291            }
292        },
293    },
294    utilities: {
295        debounce: function (func, waitTime, immediate) {
296            var timeoutHandle;
297            return function () {
298                const context = this, args = arguments;
299                const postponeFunction = function () {
300                    timeoutHandle = null;
301                    if (!immediate) func.apply(context, args);
302                };
303                const callNow = immediate && !timeoutHandle;
304                clearTimeout(timeoutHandle);
305                timeoutHandle = setTimeout(postponeFunction, waitTime);
306                if (callNow) func.apply(context, args);
307            };
308        },
309    },
310    training: {
311        lazyLoadTrainingDetail: function () {
312            const offset = 10;
313            var completedCount = 0;
314
315            $(".js-lazy-load").each(function (i, el) {
316                const $container = $(el);
317
318                setTimeout(function () {
319                    $.getJSON("/ric-academy-lazy-load.php", { "id": $container.attr("data-lazy-id") }, function (data) {
320                        $("[data-lazy]", $container).each(function (j, el) {
321                            const $el = $(el);
322                            const key = $el.attr("data-lazy");
323                            if (data[key] || key === "byAppointment") {
324                                switch (key) {
325                                    case "picture":
326                                        $el.css({ "background-image": "url('" + data[key] + "')" });
327                                        break;
328                                    case "link":
329                                        $el.attr("href", data[key]);
330                                        break;
331                                    case "canceled":
332                                        break;
333                                    case "extendedDates":
334                                        if (data[key].length > 0) {
335                                            const $list = $el.find(".field-extended-dates");
336                                            for (var i in data[key]) {
337                                                $list.append("<li><strong>" + data[key][i]["termin"] + "</strong> <span>" + data[key][i]["uhrzeit"] + " Uhr</span>" + data[key][i]["ort"] + "</li>");
338                                            }
339                                        } else {
340                                            $el.remove();
341                                        }
342                                        break;
343                                    case "byAppointment":
344                                        if (data[key] === "1") {
345                                            $el.siblings(".field-dates, .field-location, .fa-map-marker, [data-lazy=extendedDates]").remove();
346                                        } else {
347                                            $el.remove();
348                                        }
349                                        break;
350                                    case "time":
351                                        $el.children(".value").html(data[key].replace("-", "–") + " Uhr");
352                                        break;
353                                    case "nextEvent": case "start": case "end":
354                                        var now = new Date();
355                                        now.setHours(0);
356                                        const convertedDate = new Date(parseInt(data[key]) * 1000);
357                                        if (convertedDate < now) {
358                                            $container.addClass("disabled");
359                                        } else {
360                                            data[key] = sisu.training.dateToString(convertedDate);
361                                            if (key === "nextEvent" || key === "start") {
362                                                $container.attr("data-order", convertedDate.getTime());
363                                            }
364                                        }
365                                    case "freeSlots":
366                                        if (data[key] < 1) {
367                                            $el.addClass("no-free-slots");
368                                        }
369                                        $el.children(".value").html(data[key]);
370                                        break;
371                                    default:
372                                        $el.children(".value").html(data[key]);
373                                }
374                                if ($container.attr("data-lazy-ignore-canceled") === "true" || !data.canceled) {
375                                    $container.addClass("loaded");
376                                    $el.addClass("loaded");
377                                } else {
378                                    $container.addClass("disabled");
379                                }
380                            } else {
381                                switch (key) {
382                                    case "canceled":
383                                        break;
384                                    case "nextEvent": case "start": case "end":
385                                        $container.addClass("disabled");
386                                }
387                            }
388                        });
389                    });
390                }, offset * i);
391            });
392        },
393        form: {
394            $form: null,
395            init: function () {
396                $(".js-news-filter-input").on("change", function (e) {
397                    const $form = $(e.currentTarget).closest("form");
398                    $($form).trigger("submit");
399                });
400
401                sisu.training.form.$form = $(".training-form>form");
402
403                $("form .checkbox_container label a").attr("target", "_blank");
404
405                $("input[name=type]", sisu.training.form.$form).on("change", function (e) {
406                    const $input = $(e.currentTarget);
407
408                    switch ($input.val()) {
409                        case "company":
410                            sisu.training.form.show(".js-if-type-company");
411                            break;
412                        case "private":
413                            sisu.training.form.hide(".js-if-type-company");
414                            break;
415
416                    }
417                });
418
419                $("input[name=participant_addpeople]", sisu.training.form.$form).on("change", function (e) {
420                    const $list = $(".person-list", sisu.training.form.$form);
421
422                    if ($(e.currentTarget).is(":checked")) {
423                        $list.show();
424                        $("input, select", $list).each(function (i, el) {
425                            const $el = $(el);
426                            $el.attr("name", $el.attr("data-name")).attr("data-name", null);
427                            $el.attr("required", $el.attr("data-required")).attr("data-required", null);
428                        });
429                    } else {
430                        $list.hide();
431                        $("input, select", $list).each(function (i, el) {
432                            const $el = $(el);
433                            $el.attr("data-name", $el.attr("name")).attr("name", null);
434                            $el.attr("data-required", $el.attr("required")).attr("required", null);
435                        });
436                    }
437                }).trigger("change");
438
439                sisu.training.form.assignSubscriberEvents();
440            },
441            hide: function (selector) {
442                const $elements = $(selector);
443
444                $elements.each(function (i, el) {
445                    const $el = $(el);
446
447                    $el.attr("data-value", $el.attr("value")).attr("value", null);
448                    $el.attr("data-required", $el.attr("required")).attr("required", null);
449                    $el.closest(".widget").hide();
450                });
451            },
452            show: function (selector) {
453                const $elements = $(selector);
454
455                $elements.each(function (i, el) {
456                    const $el = $(el);
457
458                    $el.attr("value", $el.attr("data-value")).attr("data-value", null);
459                    $el.attr("required", $el.attr("data-required")).attr("data-required", null);
460                    $el.closest(".widget").show();
461                });
462            },
463            assignSubscriberEvents: function () {
464                const $list = $(".person-list", sisu.training.$form);
465                const $btnRemove = $(".js-remove", $list);
466                const $btnAdd = $(".js-add", $list);
467
468                $btnRemove.off("click").on("click", function (e) {
469                    e.preventDefault();
470                    const $btn = $(e.currentTarget);
471
472                    if ($(".row", $list).length > 1) {
473                        $btn.closest(".row").remove();
474                    } else {
475                        $btn.closest(".row").find("input").val("");
476                    }
477
478                    sisu.training.form.assignSubscriberEvents();
479                    sisu.training.form.updateSubscriberIndices();
480                });
481
482                $btnAdd.off("click").on("click", function (e) {
483                    e.preventDefault();
484                    const $btn = $(e.currentTarget);
485
486                    $(".row", $list).first().clone(true).insertBefore($btn.parent()).find("input").val("");
487
488                    sisu.training.form.assignSubscriberEvents();
489                    sisu.training.form.updateSubscriberIndices();
490                });
491            },
492            updateSubscriberIndices: function () {
493                const $list = $(".person-list", sisu.training.$form);
494
495                $(".row", $list).each(function (index, row) {
496                    const $row = $(row);
497
498                    $("input, select", $row).each(function (j, input) {
499                        const $input = $(input);
500                        const name = $input.attr("name");
501                        if (name) {
502                            $input.attr("name", name.replace(/\[.\]\[/, "[" + index + "]["));
503                        }
504                    });
505                });
506            }
507        },
508        filter: {
509            init: function () {
510                const $filterYear = $(".training-filter .filter-targetgroup");
511
512                $filterYear.on("change", function (e) {
513                    const value = $("option:selected", $filterYear).val();
514
515                    const paramsString = window.location.search;
516                    const searchParams = new URLSearchParams(paramsString);
517                    if (value !== "-") {
518                        searchParams.set("targetgroup", value);
519                    } else {
520                        searchParams.delete("targetgroup");
521                    }
522
523                    window.location = window.location.origin + window.location.pathname + "?" + searchParams.toString();
524                });
525
526                const $filterSearch = $(".training-filter input.js-filter-search");
527
528                $filterSearch.on("keyup", function (e) {
529                    const $el = $(e.currentTarget);
530                    const value = $el.val();
531
532                    const paramsString = window.location.search;
533                    const searchParams = new URLSearchParams(paramsString);
534                    if (value) {
535                        searchParams.set("search", value);
536                    } else {
537                        searchParams.delete("search");
538                    }
539
540                    setTimeout(function () {
541                        console.dir(value + " === " + $el.val());
542                        if ($el.val() === value) {
543                            window.location = window.location.origin + window.location.pathname + "?" + searchParams.toString();
544                        }
545                    }, 500);
546                });
547            }
548        },
549        dateToString: function (date) {
550            var d = date.getDate();
551            var m = date.getMonth() + 1;
552            var y = date.getFullYear();
553            return (d <= 9 ? "0" + d : d) + "." + (m <= 9 ? "0" + m : m) + "." + y;
554        }
555    },
556    print3d: {
557        $form: null,
558        init: function () {
559            sisu.print3d.initForm();
560        },
561        initForm: function () {
562            sisu.print3d.$form = $(".form-3d-print");
563            $(".js-input", sisu.print3d.$form).off("input").on("input", function (e) {
564                sisu.print3d.updateVolumePrice();
565            });
566            sisu.print3d.updateVolumePrice();
567        },
568        updateVolumePrice: function () {
569            $(".js-input", sisu.print3d.$form).each(function (i, el) {
570                const $el = $(el);
571                const volume = parseFloat($el.val());
572
573                if (!Number.isNaN(volume)) {
574                    const price = ((parseFloat($el.val()) * 70) / 100).toFixed(2);
575                    $el.val(volume);
576                    $(".output", sisu.print3d.$form).html(price + " €");
577                }
578            });
579        }
580    },
581    news: {
582        init: function () {
583            sisu.news.initFilter();
584        },
585        initFilter: function () {
586            const $filterYear = $(".mod_newslist .filter-year");
587
588            $filterYear.on("change", function (e) {
589                const value = $("option:selected", $filterYear).val();
590
591                const paramsString = window.location.search;
592                const searchParams = new URLSearchParams(paramsString);
593                searchParams.set("year", value);
594                console.dir(window.location.origin + window.location.pathname + "?" + searchParams.toString());
595                window.location = window.location.origin + window.location.pathname + "?" + searchParams.toString()
596            });
597        }
598    },
599    stickyAnchorNav: {
600        $nav: null,
601        $anchorTargets: null,
602        $anchorLinks: null,
603        init: function () {
604            sisu.stickyAnchorNav.$nav = $('.rsce_stickyAnchorNavigation');
605            sisu.stickyAnchorNav.$anchorTargets = $('.sisu-anchor-target');
606            sisu.stickyAnchorNav.$anchorLinks = $('.js-sticky-anchor-link');
607
608            if (sisu.stickyAnchorNav.$nav && sisu.stickyAnchorNav.$nav.length > 0) {
609                const footer = document.querySelector('#footer');
610                if (footer) {
611                    footer.style.paddingBottom = sisu.stickyAnchorNav.$nav[0].clientHeight + 'px';
612                }
613
614                $(sisu.stickyAnchorNav.$anchorLinks).on('click', function (e) {
615                    e.preventDefault();
616                    const aid = $(this).attr("data-id");
617                    if (aid) {
618                        sisu.stickyAnchorNav.scrollToAnchor(aid);
619                    }
620                });
621
622                $(window).on("scroll", sisu.utilities.debounce(sisu.stickyAnchorNav.scrollActiveState, 30));
623            }
624        },
625        scrollToAnchor: function (aid) {
626            const destination = $("#" + aid);
627
628            if (destination) {
629                $('html,body').animate({
630                    scrollTop: destination.offset().top - 100
631                }, 'slow');
632            }
633        },
634        scrollActiveState: function () {
635            var current = "";
636
637            $(sisu.stickyAnchorNav.$anchorTargets).each(function (i, section) {
638                const sectionTop = section.offsetTop;
639                if (window.pageYOffset >= sectionTop + 30) {
640                    current = section.getAttribute("id");
641                }
642            });
643
644            $(sisu.stickyAnchorNav.$anchorLinks).each(function (i, el) {
645                el.classList.remove("active");
646                if (el.getAttribute("data-id") == current) {
647                    el.classList.add("active");
648                }
649            });
650        },
651    },
652    aos: {
653        init: function () {
654            AOS.init({
655                // Global settings:
656                disable: false, // accepts following values: 'phone', 'tablet', 'mobile', boolean, expression or function
657                startEvent: 'DOMContentLoaded', // name of the event dispatched on the document, that AOS should initialize on
658                initClassName: 'aos-init', // class applied after initialization
659                animatedClassName: 'aos-animate', // class applied on animation
660                useClassNames: false, // if true, will add content of `data-aos` as classes on scroll
661                disableMutationObserver: false, // disables automatic mutations' detections (advanced)
662                debounceDelay: 50, // the delay on debounce used while resizing window (advanced)
663                throttleDelay: 99, // the delay on throttle used while scrolling the page (advanced)
664
665                // Settings that can be overridden on per-element basis, by `data-aos-*` attributes:
666                offset: 50, // offset (in px) from the original trigger point
667                delay: 0, // values from 0 to 3000, with step 50ms
668                duration: 800, // values from 0 to 3000, with step 50ms
669                easing: 'ease', // default easing for AOS animations
670                once: false, // whether animation should happen only once - while scrolling down
671                mirror: false, // whether elements should animate out while scrolling past them
672                anchorPlacement: 'top-bottom', // defines which position of the element regarding to window should trigger the animation
673
674            });
675        }
676    },
677    powertrains: {
678        init: function () {
679            if ($(".powertrains-list").length > 0) {
680                sisu.powertrains.initFilter();
681            }
682        },
683        initFilter: function () {
684            const $module = $(".powertrains-filter");
685            const $filter = $(".filters", $module);
686
687            $(".filter-widget input[type=range]", $module).on("input", function (e) {
688                const $el = $(e.currentTarget);
689                const val = $el.val();
690                $el.parents(".filter-widget").find(".js-live-value").html(val);
691            });
692            $(".filter-widget input", $module).on("change", function (e) {
693                e.preventDefault();
694                e.stopPropagation();
695
696                sisu.powertrains.applyFilter(true);
697            });
698            $(".js-filter-remove", $module).on("click", function (e) {
699                e.preventDefault();
700                e.stopPropagation();
701
702                const $el = $(e.currentTarget);
703                $(".filter-widget input[name=" + $el.attr("data-filter") + "][value=" + $el.attr("data-option") + "]").trigger("click");
704            });
705
706            // sisu.powertrains.applyFilter();
707        },
708        applyFilter: function (forceReset) {
709            // Rotax.layout.removePagination();
710            var filter = {};
711            $(".filter-widget input[type=checkbox]").each(function (i, el) {
712                const $el = $(el);
713                const filterName = $el.attr("name");
714                const filterValue = $el.val();
715                if (!filter[filterName]) {
716                    filter[filterName] = {
717                        _type: $el.attr("type"),
718                        _active: false
719                    };
720                }
721                const checked = $(el).is(":checked");
722                filter[filterName][filterValue] = checked;
723                if (checked) {
724                    filter[filterName]["_active"] = true;
725                }
726            });
727            $(".filter-widget input[type=range]").each(function (i, el) {
728                const $el = $(el);
729                const filterName = $el.attr("name");
730                const filterValue = $el.val();
731                filter[filterName] = {
732                    _type: $el.attr("type"),
733                    _active: true,
734                    min: parseInt(filterValue),
735                    max: parseInt($el.attr("max"))
736                };
737            });
738            $(".powertrains-list>li").each(function (i, el) {
739                const $el = $(el);
740                var show = true;
741                for (var key in filter) {
742                    if (filter[key]._active) {
743                        switch (filter[key]._type) {
744                            case "checkbox":
745                                var _show = false;
746                                for (var val in filter[key]) {
747                                    if (val !== "_type" && val !== "_active" && filter[key][val]) {
748                                        _show = _show || $el.attr("data-" + key).includes(";" + val + ";");
749                                    }
750                                }
751                                show = show && _show;
752                                break;
753                            case "range":
754                                const max = filter[key].max;
755                                const min = filter[key].min;
756                                const current = parseInt($el.attr("data-" + key).replace(";", ""));
757                                show = show && (current >= min && current <= max);
758                                break;
759                        }
760                    }
761                }
762                if (show) {
763                    $el.show();
764                } else {
765                    $el.hide();
766                }
767            });
768            // Rotax.layout.applyPagination(forceReset);
769        }
770    },
771    extendText: {
772        onClick: function (button) {
773            $(button).closest(".extend").toggleClass("extended");
774            $(button).toggleClass("less");
775
776        }
777    }
778});
779
780$(window).on("load", function () {
781    sisu.counter.init();
782    sisu.image.init();
783    sisu.gallery.init();
784    sisu.cookiebox.init();
785    sisu.accordion.init();
786    sisu.search.init();
787    sisu.training.lazyLoadTrainingDetail();
788    sisu.training.form.init();
789    sisu.training.filter.init();
790    sisu.print3d.init();
791    sisu.news.init();
792    sisu.powertrains.init();
793});
794
795$(document).ready(function () {
796    sisu.nav.init();
797    sisu.slider.init();
798    sisu.stickyAnchorNav.init();
799    sisu.aos.init();
800
801    setInterval(function () {
802        // fix defective dynamic datareporter links as soon as they pop anywhere
803        $("a[href^='#dr_']").each(function (i, el) {
804            // fix missing path
805            $(el).attr("href", window.location.pathname + $(el).attr("href"));
806
807            // remove faulty click handler
808            $(el).unbind("click");
809        });
810    }, 1000);
811});

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.