PageSourceSearch

https://syscon.biz/wp-content/themes/consulting/assets/js/custom.js?ver=6.6.3

js syscon.biz collected 2026-10-01 23:44:50 UTC 28,941 bytes, 720 lines download raw bytes

1(function ($) {
2    "use strict";
3
4    jQuery(document).ready(function ($) {
5
6        var windowSize = $(window).width();
7        l18W();
8        stm_services_carousel();
9
10        $(window).on( "resize", function() {
11            l18W();
12            stm_stretch_column();
13            full_height_columns();
14        });
15
16        $.fn.is_on_screen = function () {
17            var win = $(window);
18            var viewport = {
19                top: win.scrollTop(),
20                left: win.scrollLeft()
21            };
22            viewport.right = viewport.left + win.width();
23            viewport.bottom = viewport.top + win.height();
24
25            var bounds = this.offset();
26            bounds.right = bounds.left + this.outerWidth();
27            bounds.bottom = bounds.top + this.outerHeight();
28
29            return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
30        };
31
32        $(".stm-register-form form").on( "submit", function(e) {
33            e.preventDefault();
34            $.ajax({
35                type: "POST",
36                url: ajaxurl,
37                dataType: 'json',
38                context: this,
39                data: $(this).serialize() + '&action=stm_custom_register&security=' + stm_custom_register,
40                beforeSend: function () {
41                    $(this).find('input').removeClass('form-error');
42                    $('.stm-validation-message').empty();
43                },
44                success: function (data) {
45
46                    for (var err in data.errors) {
47                        $(this).find('input[name=' + err + ']').addClass('form-error');
48                    }
49
50                    if (data.message) {
51                        var message = $('<div class="stm-message-ajax-validation heading-font">' + data.message + '</div>').hide();
52
53                        $(this).find('.stm-validation-message').append(message);
54                        message.slideDown('fast');
55                    }
56                }
57            });
58        });
59
60        $(document).on("click", ".load_more_btn", function (e) {
61            e.preventDefault();
62            var page = $(this).attr("data-page");
63            var load_by = $(this).attr("data-load");
64            var filter = $(this).attr("data-filter");
65            var category = $(this).attr('data-category');
66            $.ajax({
67                url: ajaxurl,
68                type: "POST",
69                dataType: "json",
70                data: "&page=" + page + "&load_by=" + load_by + "&category=" + category + "&filter=" + filter + "&action=stm_ajax_load_events&security=" + stm_ajax_load_events,
71                context: this,
72                beforeSend: function (data) {
73                    $(this).parent().addClass("event_posts_loading");
74                },
75                success: function (data) {
76                    $(this).parent().removeClass("event_posts_loading");
77                    $(".stm_events_modern_list ").append(data.html);
78                    $(this).attr("data-page", data.new_page);
79                    if (!data.load_more) {
80                        $(this).remove();
81                    }
82                }
83            });
84        });
85
86        $('.scroll_to_event_form').on('click', function (e) {
87            event.preventDefault();
88            $('html,body').animate({scrollTop: $(this.hash).offset().top}, 500);
89        });
90
91        $('.show_popup').on('click', function (e) {
92            $(this).parents().find('#video').addClass('video_popup_box')
93        });
94
95        stm_stretch_column();
96
97        function stm_stretch_column() {
98            $('.wpb_column[data-stretch]').each(function () {
99                var stretch = $(this).data('stretch');
100                var xPos = $(this).offset().left;
101                var wW = $(window).width();
102                var xW = $(this).width();
103
104                var value = wW - (xW + xPos);
105                if (stretch == 'left') {
106                    value = xPos;
107                }
108
109                $(this).find('.vc_column-inner').css('width', xW + value + 'px');
110                $(this).find('.vc_column-inner').css('margin-' + stretch, '-' + value + 'px');
111            });
112        };
113
114        //Full height
115        full_height_columns();
116
117        function full_height_columns() {
118
119            $(".full_height_columns").each(function () {
120                var full_height_columns = $(this).find(".wpb_column:first").height();
121                $(this).find("iframe").css("height", full_height_columns);
122            });
123        };
124
125        stm_ajax_add_event_member();
126
127        function stm_ajax_add_event_member() {
128            $("#event-members-form").on("submit", function (event) {
129                event.preventDefault();
130
131                var $this = $(this),
132                    eventID = parseInt($($this).find('input[name="event_member_id"]').val()),
133                    addedEvents = localStorage.getItem('addedEvents'),
134                    eventAdded = false;
135
136                if (addedEvents) {
137                    addedEvents = JSON.parse(addedEvents);
138                    eventAdded = $.inArray(eventID, addedEvents) > -1;
139                }
140                if (!eventAdded) {
141                    $.ajax({
142                        url: ajaxurl,
143                        type: "POST",
144                        dataType: "json",
145                        context: this,
146                        data: $(this).serialize() + "&action=stm_ajax_add_event_member&security=" + stm_ajax_add_event_member_sc,
147                        beforeSend: function () {
148                            $(".alert-modal").remove();
149                            $(this).closest("form").find("input").removeClass("form-error");
150                            $(this).closest("form").find(".stm-ajax-loader").addClass("loading");
151                        },
152                        success: function (data) {
153                            $(this).closest("form").find(".stm-ajax-loader").removeClass("loading");
154
155                            $(this).closest("form").find(".event-members-box").append('<div class="alert-modal alert alert-' + data.status + ' text-left">' + data.response + '</div>');
156                            for (var key in data.errors) {
157                                $('#event-members-form input[name="' + key + '"]').addClass("form-error");
158                            }
159                            if (!$('#event-members-form input[name="' + key + '"]').hasClass('form-error')) {
160                                $(".event-members-box-table .event-attended-count").text(parseInt($(".event-members-box-table .event-attended-count").text()) + 1);
161                                $(".event-attended-count.event-new-count").text(parseInt($(".event-attended-count.event-new-count").text()) + 1);
162                                if (addedEvents) {
163                                    addedEvents.push(eventID);
164                                } else {
165                                    addedEvents = [eventID];
166                                }
167                                localStorage.setItem('addedEvents', JSON.stringify(addedEvents));
168                                $($this).find(".form__notice_success").fadeIn(300);
169                            }
170                            $("#event-members-form button").addClass("disabled").prop('disabled', true);
171                        },
172                        complete: function (data) {
173                            $("#event-members-form")[0].reset();
174                        }
175                    });
176                    $(this).closest("form").find(".form-error").on("hover", function () {
177                        $(this).removeClass("form-error");
178                    });
179                } else {
180                    $($this).find(".form__notice_information").fadeIn(300);
181                }
182                return false;
183            });
184        }
185
186        $(".event_terms_conditions #event_terms_conditions").on("click", function (e) {
187            if ($(this).is(':checked')) {
188                $("#event-members-form button").removeClass("disabled").prop('disabled', false);
189            } else {
190                $("#event-members-form button").addClass("disabled").prop('disabled', true);
191            }
192        });
193
194        $(".event_joining .show_event_list_form").on("click", function (e) {
195            var eventItemValId = $(this).parents(".item").find(".event-item-id").val();
196            $(".stm_events_classic #event-members-form .event_member_id").val(eventItemValId);
197            $(".stm_events_list_form").show();
198            $(this).parents(".item").find(".event-attended-count").addClass("event-new-count");
199        });
200        $(".notice__hide").on("click", function (e) {
201            $(".stm_events_list_form").hide();
202            $("#event-members-form")[0].reset();
203            $("#event-members-form .alert-modal").hide();
204            $("#event-members-form .form__notice_information").hide();
205            $(".stm_events_classic .item").find(".event-attended-count").removeClass("event-new-count");
206        });
207
208        $(".events_lessons_box .event_lesson_tabs:first-child").addClass("active");
209        $('.events_lessons_box .event_lesson_tabs a').each(function (e) {
210            if ($(this).parent().hasClass("active")) {
211                $($(this).attr('href')).show();
212            }
213        });
214        $('.events_lessons_box .event_lesson_tabs a').on('click', function (e) {
215            $(this).parents(".events_lessons_box").find(".event_lesson_info").hide();
216            $(this).parents(".events_lessons_box").find(".event_lesson_tabs").removeClass("active");
217            $(this).parent().addClass("active");
218            $($(this).attr("href")).show();
219            return false;
220        });
221
222        $(document).on("click", ".js-open-search-box", function () {
223            $(this).closest(".header_search").toggleClass("active");
224            return false;
225        });
226
227        if ($(".wpb_revslider_element").length && $('body').hasClass("header_style_7")) {
228            $(".wpb_revslider_element").closest(".vc_row-no-padding").addClass("stm-revslider-wrapper");
229        }
230
231        $(document).on("click", "body", function (e) {
232            if (!$(e.target).closest(".header_search").length) {
233                $(".header_search").removeClass("active");
234
235            }
236        });
237
238        $("body .wpb_video_widget .wpb_wrapper .wpb_video_wrapper .play_video").on('click', function () {
239            $(this).parent().find('iframe').attr('allow', 'autoplay');
240            $(this).parent().addClass('active');
241            $(this).parent().find('iframe').attr('src', $(this).parent().find('iframe').attr('src') + '?autoplay=1').delay();
242            $(this).hide();
243            $(this).parent().find('img').hide();
244            $(this).parent().find('.video').show();
245            $(this).parent().addClass('show_video');
246            return false;
247        });
248
249        $(".staff_read_more").on('click', function () {
250            $(this).closest('.stm_staff_2').find('.full_description').slideToggle(150);
251            return false;
252        });
253
254        $("select:not(.stm_not_select2)").each(function () {
255            if (!$(this).closest(".gfield").hasClass("stm_not_select2")) {
256                $(this).select2({width: '100%', minimumResultsForSearch: '-1'});
257            }
258        });
259        if ($("#rating").length) {
260            $("#rating").select2('destroy');
261        }
262
263        if ($("#demos_switcher").length) {
264            $("#demos_switcher").select2("destroy");
265
266            $("#demos_switcher").select2({
267                templateResult: demosItemTemplate,
268                width: '100%',
269                minimumResultsForSearch: '-1'
270            });
271
272        }
273
274        if ($('body').hasClass('customizer_page')) {
275            $(".customizer_page .ui-tabs").remove();
276        }
277
278        $('.menu-toggle, .menu_toggle').on('click', function () {
279            $(this).toggleClass('open');
280            $(this).parents().find('.main_menu_nav').slideToggle(300);
281            $('.mobile_header .top_nav_mobile, .consulting_menu_nav .consulting_menu_nav').slideToggle(300);
282            return false;
283        });
284        $('#menu_toggle_button').on('click', function () {
285            $(this).toggleClass('open');
286            $('#header').each(function () {
287                if (!$(this).hasClass('show')) {
288                    $(this).addClass('show');
289                    if ($('body').hasClass('rtl')) {
290                        $(this).animate({right: "0"}, 300);
291                    } else {
292                        $(this).animate({left: "0"}, 300);
293                    }
294                } else {
295                    $(this).removeClass('show');
296                    if ($('body').hasClass('rtl')) {
297                        $(this).animate({right: "-100%"}, 600);
298                    } else {
299                        $(this).animate({left: "-100%"}, 600);
300                    }
301                }
302            });
303
304            return false;
305        });
306
307        $(".main_menu_nav > li.menu-item-has-children > a").after('<span class="arrow"><i></i></span>');
308        $(".main_menu_nav > li.menu-item-has-children > .sub-menu > .menu-item-has-children > a").after('<span class="arrow"><i class="fa fa-chevron-down"></i></span>');
309        $(".consulting_menu_nav > li.menu-item-has-children > a").after('<i class="fa fa-plus arrow" aria-hidden="true"></i>');
310        $(".consulting_menu_nav > li ul > li.menu-item-has-children > a").after('<i class="fa fa-plus arrow" aria-hidden="true"></i>');
311
312        $(".main_menu_nav > li.menu-item-has-children .arrow, .consulting_menu_nav .menu-item-has-children .arrow").on('click', function () {
313            let $this = $(this);
314            if ($this.hasClass('active')) {
315                $this.removeClass('active');
316                $this.parent().removeClass('active').find('> ul').slideUp(300);
317            } else {
318                $this.closest('ul').find('li').removeClass('active');
319                $this.closest('ul').find('li .arrow').removeClass('active');
320                $this.closest('ul').find('li ul').slideUp(300);
321                $this.parent().find('> ul').slideDown(300);
322                $this.addClass('active');
323                $this.parent().addClass('active');
324            }
325        });
326
327        $('.consulting_menu_nav > li').each(function () {
328            if ($(this).hasClass('stm_megamenu')) {
329                $(this).parents(".elementor-column").addClass("stm_megamenu_
329column")
330            }
331        });
332
333        $(".mobile_header .top_nav_mobile .main_menu_nav > li.menu-item-has-children > a").on('click', function () {
334            if ($(this).attr('href') == '#') {
335                $(this).closest('li').find('ul').slideToggle(300);
336                $(this).closest('li').find('.arrow').toggleClass('active');
337            }
338        });
339
340        // Quantity actions
341        $('body').on('click', '.quantity_actions span', function () {
342            var quantityContainer = $(this).closest('.quantity'),
343                quantityInput = quantityContainer.find('.qty'),
344                quantityVal = quantityInput.val();
345
346            $('.shop_table.cart .button').removeAttr("disabled");
347
348            if ($(this).hasClass('plus')) {
349                quantityInput.val(parseInt(quantityVal) + 1);
350            } else if ($(this).hasClass('minus')) {
351                if (quantityVal > 1) {
352                    quantityInput.val(parseInt(quantityVal) - 1);
353                }
354            }
355        });
356
357        // Stiky Header
358        var headerHeight = $("#header").height();
359        var headerTop = $(".header_top").height();
360        var topBar = $(".top_bar").height();
361
362        header_affix(".header_style_1.sticky_menu #header .nav-box, .header_style_3.sticky_menu #header .nav-box, .header_style_4.sticky_menu #header .nav-box, .header_style_5.sticky_menu #header .nav-box, .header_style_6.sticky_menu #header .nav-box, .header_style_11.sticky_menu #header .nav-box, .header_style_12.sticky_menu #header .nav-box");
363        header_affix(".sticky_menu #menu_toggle_button, .menu_toggle_button");
364        header_affix('.header_style_2.sticky_menu #header .header-box, .header_style_10.sticky_menu #header .header-box');
365
366        function header_affix( selector ) {
367            var element = document.querySelector(selector);
368            if ( element ) {
369                var sticky = element.offsetTop;
370
371                window.addEventListener('scroll', function () {
372
373                    if (window.pageYOffset > sticky) {
374                        element.classList.add('affix');
375                    } else {
376                        element.classList.remove('affix');
377                    }
378                });
379            }
380        }
381
382        $("#wrapper").on( "scroll", function() {
383            if ($(".sticky_menu .header_top, .sticky_menu .nav-box").hasClass('affix')) {
384                $("#header").css("paddingBottom", headerTop);
385            } else {
386                $("#header").css("paddingBottom", 0);
387            }
388        });
389
390        $(".top_bar_info_switcher .active").on('click', function () {
391
392            if ($(".top_bar_info_switcher ul").is(':visible')) {
393                $(this).parent().find("ul").slideUp(100);
394            } else {
395                $(this).parent().find("ul").slideDown(100);
396            }
397
398            return false;
399        });
400
401        $(".top_bar_info_switcher a").on('click', function () {
402            var id = $(this).attr('data-href');
403            var title = $(this).text();
404            $(this).parents(".top_bar_info_wr").find(".top_bar_info").hide();
405            $(this).parents(".top_bar_info_wr").find('#'+id).show();
406            $(this).parents(".top_bar_info_wr").find(".top_bar_info_switcher .active span").text(title);
407            $(this).parents(".top_bar_info_wr").find(".top_bar_info_switcher ul").slideUp(100);
408            return false;
409        });
410
411        if (!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
412            stm_animate_block();
413        } else {
414            $(".stm_animation").css('opacity', 1);
415        }
416
417        jQuery(window).on( "scroll", function() {
418            if (!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
419                stm_animate_block();
420            } else {
421                $(".stm_animation").css('opacity', 1);
422            }
423        });
424
425        $('.single-product .product-type-variable table.variations select').on("change", function () {
426            $(this).parent().find('.select2-selection__rendered').text($(this).find('option[value="' + $(this).val() + '"]').text());
427        });
428
429        /*Adds*/
430        if (typeof($.fancybox) !== 'undefined') {
431            $('.stm_fancy-iframe').fancybox({
432                type: 'iframe',
433                padding: 0,
434                maxWidth: '800px',
435                width: '100%',
436                fitToView: false,
437                afterLoad: function () {
438                    var url = $(this.element).data('url');
439                    this.href = url;
440                }
441            });
442
443            $('.stm_fancybox').fancybox({
444                fitToView: false,
445                padding: 30,
446                maxWidth: '500px',
447                autoSize: true,
448                closeClick: false,
449                openEffect: 'none',
450                closeEffect: 'none'
451            });
452        }
453
454        $('[data-scroll-to]').on('click', function (e) {
455            var url = $(this).attr('data-scroll-to');
456            if (typeof(url) !== 'undefined') {
457                var url_parsed = url.split('#');
458                if (typeof(url_parsed[1]) !== 'undefined' && $('#' + url_parsed[1]).length > 0) {
459                    $('html, body').stop().animate({
460                        scrollTop: $('#' + url_parsed[1]).offset().top
461                    }, 700);
462                } else {
463                    window.location.href = url;
464                }
465            }
466        });
467
468        if ($('body').hasClass('site_layout_19')) {
469            $('.top_nav li a').on('click', function (e) {
470                e.preventDefault();
471                var url = $(this).attr('href');
472                if (typeof(url) !== 'undefined') {
473                    var url_parsed = url.split('#');
474                    if (typeof(url_parsed[1]) !== 'undefined' && $('#' + url_parsed[1]).length > 0) {
475                        $('html, body').stop().animate({
476                            scrollTop: $('#' + url_parsed[1]).offset().top - 50
477                        }, 700);
478                    } else {
479                        window.location.href = url;
480                    }
481                }
482            });
483        }
484
485        $('.header_search_in_popup .search-icon').on('click', function () {
486            if ($(this).parents().hasClass('header-box')) {
487                $('.header-box').addClass('search_active');
488            }
489            $(this).parent().addClass('search_active');
490            $('.header_search_in_popup .search-form').append('<div class="header_search_close"></div>');
491            $('.header_search_close').on('click', function () {
492                $(this).parents('.header_search_in_popup').removeClass('search_active');
493                $('.header-box').removeClass('search_active');
494                $('.header_search_close').remove();
495            });
496        });
497
498        $('.consulting-search button, .stm_top_bar_l13-search button').on('click', function (e) {
499            var $wr = $(this).closest('.stm_top_bar_l13-search, .consulting-search');
500            if ($wr.hasClass('active')) {
501                if ($wr.find('input').val() == '') {
502                    e.preventDefault();
503                    $wr.removeClass('active active-focus');
504                }
505            } else {
506                e.preventDefault();
507                $wr.addClass('active active-focus');
508                setTimeout(function () {
509                    $wr.find('input').focus();
510                }, 300);
511            }
512        });
513
514        $('body').on('click', function (e) {
515            if ($(e.target).closest('.consulting-search, .stm_top_bar_l13-search').length === 0) {
516                var $wr = $('.consulting-search, .stm_top_bar_l13-search');
517                $wr.find('input').focusout();
518                $wr.removeClass('active active-focus');
519            }
520        });
521
522    });
523
524    jQuery(window).on( "load", function() {
525        l18W();
526        if ($('html').hasClass('stm-site-preloader')) {
527            $('html').addClass('stm-site-loaded');
528
529            setTimeout(function () {
530                $('html').removeClass('stm-site-preloader stm-site-loaded');
531            }, 250);
532
533            $(window).on('onbeforeunload', function (e) {
534                $('html').addClass('stm-site-preloader stm-after-hidden');
535            });
536
537            if ($('a[href^=mailto], a[href^=skype], a[href^=tel]').on('click', function (e) {
538                    setTimeout(function () {
539                        $('html').removeClass('stm-site-preloader stm-site-loaded');
540                    });
541                })) ;
542        }
543    });
544
545    function stm_animate_block() {
546        jQuery('.stm_animation').each(function () {
547            if (jQuery(this).attr('data-animate')) {
548                var animation_blocks = jQuery(this).children('*');
549                var animationName = jQuery(this).attr('data-animate'),
550                    animationDuration = jQuery(this).attr('data-animation-duration') + 's',
551                    animationDelay = jQuery(this).attr('data-animation-delay');
552                var style = 'opacity:1;-webkit-animation-delay:' + animationDelay + 's;-webkit-animation-duration:' + animationDuration + '; -moz-animation-delay:' + animationDelay + 's;-moz-animation-duration:' + animationDuration + '; animation-delay:' + animationDelay + 's;';
553                var container_style = 'opacity:1;-webkit-transition-delay: ' + (animationDelay) + 's; -moz-transition-delay: ' + (animationDelay) + 's; transition-delay: ' + (animationDelay) + 's;';
554                if (isAppear(jQuery(this))) {
555                    jQuery(this).attr('style', container_style);
556                    jQuery.each(animation_blocks, function (index, value) {
557                        jQuery(this).attr('style', style);
558                        jQuery(this).addClass('animated').addClass(animationName);
559                    });
560                }
561            }
562        });
563    }
564
565    function isAppear(id) {
566        var window_scroll = jQuery(window).scrollTop();
567        var window_height = jQuery(window).height();
568
569        if (jQuery(id).hasClass('stm_viewport')) {
570            var start_effect = jQuery(id).data('viewport_position');
571        }
572
573        if (typeof(start_effect) === 'undefined' || start_effect == '') {
574            var percentage = 2;
575        } else {
576            var percentage = 100 - start_effect;
577        }
578        var element_top = jQuery(id).offset().top;
579        var position = element_top - window_scroll;
580
581        var cut = window_height - (window_height * (percentage / 100));
582        if (position <= cut) {
583            return true;
584        } else {
585            return false;
586        }
587    }
588
589    function demosItemTemplate(state) {
590        if (!state.id) {
591            return state.text;
592        }
593        var $state = jQuery(
594            '<span class="' + state.element.value + '"> ' + state.text + '</span>'
595        );
596        return $state;
597    }
598
599    function l18W() {
600        var $ = jQuery;
601        if ($('body').hasClass('site_layout_18')) {
602            var contentW = $('#fullpage').outerWidth();
603            var contentArea = $('.content-area').outerWidth();
604            var fullWleft = contentW / 2;
605
606            var marginArea = (contentW - contentArea) / 2;
607            //$('.stm_bg_right').css('width', contentW + 'px');
608            $('.stm_fullwidth_left').css({
609                'width': fullWleft + 'px'
610            });
611
612            $('.stm_fullwidth_content').css({
613                'width': contentW + 'px',
614                'margin-right': '-' + marginArea + 'px'
615            })
616
617        }
618    }
619
620    function stm_services_carousel() {
621        $('.stm_services.style_3').each(function () {
622            var perRow = $(this).attr('data-per-row');
623            $(this).owlCarousel({
624                nav: false,
625                dots: true,
626                responsive: {
627                    0: {
628                        items: 1
629                    },
630                    480: {
631                        items: 2
632                    },
633                    768: {
634                        items: 3
635                    },
636                    1024: {
637                        items: perRow
638                    },
639                    1110: {
640                        items: perRow
641                    }
642                }
643            });
644        });
645
646        $('.stm_services.style_7').each(function () {
647            $(this).owlCarousel({
648                nav: false,
649                dots: true,
650                responsive: {
651                    0: {
652                        items: 1
653                    }
654                }
655            });
656        })
657    }
658})(jQuery);
659
660document.addEventListener("DOMContentLoaded", function() {
661    const inputField = document.getElementById("haet-cleverreach-cleverreach_email");
662    if (inputField) {
663        inputField.setAttribute("placeholder", "E-Mail Adresse");
664    }
665});
666
667
668(function () {
669  // 🔒 NUR Kontaktseite
670  if (!document.body.classList.contains('page-id-1483')) return;
671
672  const EMAILS = [
673    { label: '[email protected]', href: 'mailto:[email protected]' },
674    { label: '[email protected]', href: 'mailto:[email protected]?subject=Bewerbung' }
675  ];
676
677  function injectEmails() {
678    const ul = document.querySelector('.stm_contacts_widget.style_4 ul');
679    if (!ul) return;
680
681    // Duplikate verhindern
682    if (ul.dataset.extraEmailsInjected === '1') return;
683
684    const existing = new Set(
685      Array.from(ul.querySelectorAll('a[href^="mailto:"]'))
686        .map(a => a.getAttribute('href').toLowerCase())
687    );
688
689    EMAILS.forEach(e => {
690      if (existing.has(e.href.toLowerCase())) return;
691
692      const li = document.createElement('li');
693      li.className = 'stm_contact_row stm_contact_row--extra';
694
695      const icon = document.createElement('div');
696      icon.className = 'icon';
697      icon.innerHTML = '<i class="fa fa-envelope"></i>';
698
699      const text = document.createElement('div');
700      text.className = 'text';
701
702      const a = document.createElement('a');
703      a.href = e.href;
704      a.textContent = e.label;
705
706      text.appendChild(a);
707      li.appendChild(icon);
708      li.appendChild(text);
709
710      ul.appendChild(li);
711    });
712
713    ul.dataset.extraEmailsInjected = '1';
714  }
715
716  // Initial laden
717  document.addEventListener('DOMContentLoaded', injectEmails);
718
719})();
720

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.