PageSourceSearch

https://www.carefitness.be/themes/panda/assets/js/custom2.js

js carefitness.be collected 2026-10-09 00:03:29 UTC 26,331 bytes, 688 lines download raw bytes

1/*
2 * Custom code goes here.
3 * A template should always ship with an empty custom.js
4 */
5var images = document.querySelectorAll('img');
6images.forEach(function (img) {
7    if (img.hasAttribute('datasrc')) {
8        img.src = img.getAttribute('datasrc');
9    }
10});
11var obfuque = {
12    current: "",
13
14    obscurermenu: function () {
15        currenturl = window.location.href;
16        host = window.location.host;
17        protocol = "https://";
18        $(".st_mega_menu").find("a").each(function (index) {
19
20            if ($(this).hasClass('is_parent')) {
21                $(this).addClass('non_obs')
22
23            }
24            if ($(this).parents('li').eq(0).hasClass('ml_level_2')) {
25                elem = "<span class='l-obf ma_level_2 ma_item ' onClick='obfuque.obscurer(this)' data-o='" + btoa($(this).attr('href')) + "' > <i class='fto-angle-right list_arrow'></i>" + $(this).text() + "</span>"
26                $(this).parents('li').eq(0).html(elem);
27            }
28
29
30        });
31
32    },
33
34
35
36    obscurer: function (elem) {
37        var link = atob(elem.dataset.o);
38        window.location.href = link;
39    }
40}
41
42$(document).ready(function () {
43    $(' .careManufacturer-container').slick({
44        dots: false,
45        arrows: true,
46        infinite: false,
47        speed: 300,
48        slidesToShow: 4,
49        slidesToScroll: 1,
50        prevArrow: '<button type="button" class="slick-prev"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg></button>',
51        nextArrow: '<button type="button" class="slick-next"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg> </button>',
52        responsive: [
53            {
54                breakpoint: 1024,
55                settings: {
56                    slidesToShow: 3,
57                    slidesToScroll: 3,
58                    infinite: true,
59                    dots: true,
60                    arrows: false
61                }
62            },
63            {
64                breakpoint: 767,
65                settings: {
66                    slidesToShow: 2,
67                    slidesToScroll: 1,
68                    dots: true,
69                    //centerMode: true,
70                    //centerPadding: '60px',
71                    arrows: false
72                }
73            }
74        ]
75    });
76    if (/Mobi/.test(navigator.userAgent)) {
77        /*$('.product_features').slick({
78            dots: false,
79            arrows: true,
80            infinite: false,
81            speed: 300,
82            slidesToShow: 4,
83            slidesToScroll: 1,
84            prevArrow : '<button type="button" class="slick-prev"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg></button>',
85            nextArrow : '<button type="button" class="slick-next"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg> </button>',
86            responsive: [
87                {
88                    breakpoint: 1024,
89                    settings: {
90                        slidesToShow: 4,
91                        slidesToScroll: 1,
92                        infinite: true,
93                        dots: true
94                    }
95                },
96                {
97                    breakpoint: 767,
98                    settings: {
99                        slidesToShow: 2,
100                        slidesToScroll: 1,
101                        dots: true,
102                        //centerMode: true,
103                        centerPadding: '60px',
104                        arrows: false
105                    }
106                }
107            ]
108        });*/
109        $(' .bloc_container_categ').slick({
110            dots: false,
111            arrows: true,
112            infinite: false,
113            speed: 300,
114            slidesToShow: 4,
115            slidesToScroll: 1,
116            prevArrow: '<button type="button" class="slick-prev"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg></button>',
117            nextArrow: '<button type="button" class="slick-next"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg> </button>',
118            responsive: [
119                {
120                    breakpoint: 1024,
121                    settings: {
122                        slidesToShow: 3,
123                        slidesToScroll: 1,
124                        infinite: true,
125                        dots: false,
126                        arrows: false
127                    }
128                },
129                {
130                    breakpoint: 767,
131                    settings: {
132                        slidesToShow: 2,
133                        slidesToScroll: 1,
134                        dots: false,
135                        //centerMode: true,
136                        //centerPadding: '10px',
137                        arrows: false
138                    }
139                }
140            ]
141        });
142    }
143
144
145    //obscution listing
146    var obf = document.querySelectorAll(".l-obf");
147    for (var i = 0; i < obf.length; i++) {
148        obf[i].addEventListener('click', function () {
149
150            var link = atob(this.dataset.o);
151            window.location.href = link;
152        });
153    }
154    if (prestashop.page.page_name != 'index' && $('#footer-js').length) {
155        setTimeout(function () {
156            $.ajax({
157                url: prestashop.urls.base_url + "ajax.php?action=getFooter"
158            }).done(function (data) {
159                $('#footer-js').html(data);
160            });
161        }, 1000);
162    }
163
164    //Blog stop propagation of the event
165    $(".module-stblog-category ul.pagination .page-item>a").click(function (event) {
166        if ($(this).hasClass('disabled'))
167            return false;
168
169        event.stopImmediatePropagation();
170    });
171
172    /*
173    * F&C hack for Atos buttons when CGV not chekced
174    */
175    if ($('.js-payment-atos3x').length) {
176        if ($('.js-payment-atos3x').hasClass('disabled')) {
177            $('.js-payment-atos3x input[type="IMAGE"]').attr('disabled', 'disabled');
178        }
179    }
180
181    /*
182    * F&C => Preorder : hide add to cart buttons
183    */
184    setTimeout(function () {
185        if ($("#fmmPreOrder:visible").length > 0) {
186            $(".product-add-to-cart.mb-3").remove();
187            // $(".pro_cart_block .qty.qty_wrap").addClass('force-hide');
188        }
189    }, 1500);
190
191    $(document).on('change', '#conditions-to-approve input[type="checkbox"]', function (e) {
192        if ($(this).prop('checked')) {
193            if ($('.js-payment-atos3x').length) {
194                $('.js-payment-atos3x input[type="IMAGE"]').removeAttr('disabled');
195            }
196            $('.cgv-confirmation-msg').hide();
197        } else {
198            if ($('.js-payment-atos3x').hasClass('disabled')) {
199                $('.js-payment-atos3x input[type="IMAGE"]').attr('disabled', 'disabled');
200            }
201            $('.cgv-confirmation-msg').show();
202        }
203    });
204
205    if ($('#care__video').length) {
206
207        var elem = document.getElementById("care__video");
208
209        $(document).on('click', '#banner_box_13 .st_banner_image', function () {
210            $(this).hide();
211            elem.play();
212        });
213
214        elem.onpause = function () {
215            $('#banner_box_13 .st_banner_image').show();
216        };
217    }
218
219    if ($('.support__results').length) {
220        $(document).on('click', '.js-product__line', function (e) {
221            $elem = $(this).data('id');
222
223            //if( !$('.product__attachment').hasClass('hidden') )
224            $('.product__attachment').addClass('hidden');
225
226            $('#' + $elem).removeClass('hidden')
227        });
228    }
229
230    if ($('.atout').length) {
231        redimensionner('.atout');
232        verticalAlign('.atout');
233    }
234
235    if ($('#subcategories li.active').length) {
236        $('#subcategories .subcate_grid_view li').removeClass('parentCateg');
237    }
238
239    $('body.univer .new__products .block .title_block .title_block_inner').html($('body.univer .new__products .block .title_block .title_block_inner').text());
240    $('body.univer .best__sales .block .title_block .title_block_inner').html($('body.univer .best__sales .block .title_block .title_block_inner').text());
241
242    $(window).resize(function () {
243        if ($('.atout').length) {
244            $('.atout').height('');
245            redimensionner('.atout');
246            verticalAlign('.atout');
247        }
248
249        initSwiper();
250
251        resizeHomeSliderToSquare();
252    });
253
254    initSwiper();
255
256    resizeHomeSliderToSquare();
257
258    if ($(window).width() <= 991) {
259        $('.page-product .product_left_column .easyzoom--overlay > a').on('click', function (event) {
260            event.preventDefault();
261            $('.page-product .product_left_column .pro_popup_trigger_box .st_popup_image.st_active').trigger('click');
262        });
263
264        $('body').on('click', '#footer .title_block .opener', function () {
265            if (!$('body').hasClass('index')) {
266                var open_status = $(this).parent('.title_block').parent('.footer_block').hasClass('st_open');
267                $('#footer .footer_block').removeClass('st_open');
268                if (open_status == false) {
269                    $(this).parent('.title_block').parent('.footer_block').addClass('st_open');
270                }
271            }
272        });
273    }
274
275    setTimeout(() => {
276        $("iframe").each(function () {
277            var src = $(this).attr('src');
278            if (typeof src === 'string' && (src.includes("youtube.com") || src.includes("youtu.be"))) {
279                var youtube_id = youtube_parser(src);
280                var new_src = "https://www.youtube.com/embed/" + youtube_id + "?playlist=" + youtube_id + "&loop=1&rel=0";
281                $(this).attr('src', new_src);
282            }
283        });
284    }, 1000);
285
286    $(document).on('click', '.js-address-form #update-postcode', function (e) {
287        updatePostcodeAction();
288    });
289
290    $(document).on('keyup', '.js-address-form .form-postcode', function (e) {
291        var codepostal = $(this).val().replace(/\s/g, '');
292        if (codepostal.length == 0) {
293            $('.js-address-form .form-postcode-message').html('');
294            $('.js-address-form .form-select-city').html("<option value selected>-- veuillez choisir --</option>");
295        }
296    });
297
298    $(document).on('keypress', '.js-address-form .form-postcode', function (e) {
299        var keyCode = e.keyCode || e.which;
300        if (keyCode === 13) {
301            e.preventDefault();
302            $('.js-address-form #update-postcode').trigger('click');
303            return false;
304        }
305    });
306
307    $(document).on('click', '.js-address-form button[type="submit"]', function (e) {
308        var codepostal = $('.js-address-form .form-postcode').val().replace(/\s/g, '');
309        if (codepostal.length != 0 && $('.js-address-form .form-select-city').val() === '') {
310            e.preventDefault();
311            $('.js-address-form #update-postcode').trigger('click');
312            $('.js-address-form .form-city-message').html('Veuillez sélectionner une ville dans la liste.');
313            return false;
314        }
315    });
316
317    $(document).on('change', '.js-address-form .form-select-city', function (e) {
318        if ($(this).val() !== '') {
319            $('.js-address-form .form-city-message').html('');
320        }
321    });
322    obfuque.obscurermenu();
323});
324
325// Return youtube video ID from url
326function youtube_parser(url) {
327    var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
328    var match = url.match(regExp);
329    return (match && match[7].length == 11) ? match[7] : false;
330}
331
332// resize home slider on mobile to be square
333function resizeHomeSliderToSquare() {
334    if ($(window).width() <= 425) {
335        var slider_height = $(window).width();
336        $('body.index #body_wrapper .swiper_wraper_out .swiper-container').attr('style', 'height: ' + slider_height + 'px !important; min-height: ' + slider_height + 'px !important;');
337    } else {
338        $('body.index #body_wrapper .swiper_wraper_out .swiper-container').attr('style', '');
339    }
340}
341
342function initSwiper() {
343    if ($(window).width() <= 991) {
344        var mySwiper = new Swiper('#category_blogs_container_2 .swiper-container', {
345            loop: true,
346            slidesPerView: 1,
347            createPagination: true,
348            pagination: '.swiper-pagination',
349        });
350        //mySwiper.init();
351    }
352}
353
354function redimensionner(selecteur) {
355    var hauteur = 0;
356    $(selecteur).each(function () {
357
358        if ($(this).outerHeight() > hauteur) {
359
360            hauteur = $(this).outerHeight();
361        }
362    });
363    $(selecteur).each(function () {
364        $(this).innerHeight(hauteur);
365    });
366}
367
368function verticalAlign(selecteur) {
369    var hauteur = 0;
370    $(selecteur).each(function () {
371        var hauteurAtout = $(this).height();
372        $(selecteur).children('p').each(function () {
373            var marginTop = hauteurAtout - $(this).height();
374            $(this).attr("style", 'margin-top:' + marginTop / 2 + 'px');
375        });
376    });
377
378}
379
380function updatePostcodeAction() {
381    var codepostal = $('.js-address-form .form-postcode').val();
382    codepostal = codepostal.replace(/\s/g, '');
383    var api_username = 'carefitness';
384    $('.js-address-form .form-postcode-message').html('');
385    $('.js-address-form .form-city-message').html('');
386    if (codepostal.length > 0) {
387        $('.js-address-form .btn-form-postcode').addClass('loading');
388        $('.js-address-form .form-select-city').attr('disabled', true);
389        $.getJSON('https://secure.geonames.org/postalCodeLookupJSON?postalcode=' + codepostal + '&country=FR&username=' + api_username, function (data) {
390            if (data.postalcodes.length > 0) {
391                var selected = false;
392                if (data.postalcodes.length == 1) {
393                    var selected = true;
394                }
395                $('.js-address-form .form-select-city').html("<option value selected>-- veuillez choisir --</option>");
396                for (var i = 0; i < data.postalcodes.length; i++) {
397                    $('.js-address-form .form-select-city').append($('<option>', {
398                        value: data.postalcodes[i].placeName,
399                        text: data.postalcodes[i].placeName,
400                        selected: selected
401                    }));
402                }
403            } else {
404                $('.js-address-form .form-select-city').html("<option value selected>-- veuillez choisir --</option>");
405                $('.js-address-form .form-postcode-message').html('Ce code postal n\'existe pas en France Métropolitaine ou Corse.');
406            }
407        });
408        setTimeout(() => {
409            $('.js-address-form .btn-form-postcode').removeClass('loading');
410            $('.js-address-form .form-select-city').attr('disabled', false);
411        }, 500);
412    } else {
413        $('.js-address-form .form-select-city').html("<option value selected>-- veuillez choisir --</option>");
414        $('.js-address-form .form-postcode-message').html('Veuillez entrer un code postal (France Métropolitaine ou Corse) valide.');
415    }
416}
417
418
419$(document).on("click", "#search_filter_toggler", function () {
420    $("#search_filters_wrapper").removeClass("hidden-sm-down");
421    $("#content-wrapper").addClass("hidden-sm-down");
422    $("#footer").addClass("hidden-sm-down");
423    $(".categ_list_footer").addClass("hidden-sm-down");
424    $(".top-category-header").addClass("hidden-sm-down");
425    $(".categ_list_before_footer").addClass("hidden-sm-down");
426    $("#page_banner_container_1").addClass("hidden-sm-down");
427    $("#footer-js").addClass("hidden-sm-down")
428});
429
430$("#search_filter_controls .clear").on("click", function () {
431    $("#search_filters_wrapper").addClass("hidden-sm-down");
432    $("#content-wrapper").removeClass("hidden-sm-down");
433    $("#footer").removeClass("hidden-sm-down");
434    $(".categ_list_footer").removeClass("hidden-sm-down");
435    $(".top-category-header").removeClass("hidden-sm-down");
436    $(".categ_list_before_footer").removeClass("hidden-sm-down");
437    $("#page_banner_container_1").removeClass("hidden-sm-down");
438    $("#footer-js").removeClass("hidden-sm-down")
439});
440
441$("#search_filter_controls .ok").on("click", function () {
442    $("#search_filters_wrapper").addClass("hidden-sm-down");
443    $("#content-wrapper").removeClass("hidden-sm-down");
444    $("#footer").removeClass("hidden-sm-down");
445    $(".categ_list_footer").removeClass("hidden-sm-down");
446    $(".top-category-header").removeClass("hidden-sm-down");
447    $(".categ_list_before_footer").removeClass("hidden-sm-down");
448    $("#page_banner_container_1").removeClass("hidden-sm-down");
449    $("#footer-js").removeClass("hidden-sm-down")
450});
451
452$('#btn_read_less').click(function () {
453    $('#easycontent_13 #more').css('display', 'none');
454    $('#easycontent_13 #btn_read_less').css('display', 'none');
455    $('#btn_read_more').css('display', 'block');
456});
457$('#btn_read_more').click(function () {
458    $('#easycontent_13 #more').css('display', 'block');
459    $('#easycontent_13 #btn_read_less').css('display', 'block');
460    $('#btn_read_more').css('display', 'none');
461});
462$('#toggle-button').click(function (e) {
463    e.preventDefault();
464    $('#c-panel').toggleClass('collapsed');
465});
466$('#toggle-button1').click(function (e) {
467    e.preventDefault();
468    $('#c-panel1').toggleClass('collapsed');
469});
470
471$('#toggle-button2').click(function (e) {
472    e.preventDefault();
473    $('#c-panel2').toggleClass('collapsed');
474});
475$('#toggle-button3').click(function (e) {
476    e.preventDefault();
477    $('#c-panel3').toggleClass('collapsed');
478});
479$('#toggle-button4').click(function (e) {
480    e.preventDefault();
481    $('#c-panel4').toggleClass('collapsed');
482});
483$('#toggle-button5').click(function (e) {
484    e.preventDefault();
485    $('#c-panel5').toggleClass('collapsed');
486});
487$('#toggle-button6').click(function (e) {
488    e.preventDefault();
489    $('#c-panel6').toggleClass('collapsed');
490});
491$('#toggle-button7').click(function (e) {
492    e.preventDefault();
493    $('#c-panel7').toggleClass('collapsed');
494});
495$('#toggle-button8').click(function (e) {
496    e.preventDefault();
497    $('#c-panel8').toggleClass('collapsed');
498});
499$('#toggle-button9').click(function (e) {
500    e.preventDefault();
501    $('#c-panel9').toggleClass('collapsed');
502});
503$('#toggle-button10').click(function (e) {
504    e.preventDefault();
505    $('#c-panel10').toggleClass('collapsed');
506});
507$('#toggle-button11').click(function (e) {
508    e.preventDefault();
509    $('#c-panel11').toggleClass('collapsed');
510});
511$('#toggle-button12').click(function (e) {
512    e.preventDefault();
513    $('#c-panel12').toggleClass('collapsed');
514});
515$('#toggle-button13').click(function (e) {
516    e.preventDefault();
517    $('#c-panel13').toggleClass('collapsed');
518});
519$('#toggle-button14').click(function (e) {
520    e.preventDefault();
521    $('#c-panel14').toggleClass('collapsed');
522});
523$('#toggle-button15').click(function (e) {
524    e.preventDefault();
525    $('#c-panel15').toggleClass('collapsed');
526});
527$('#toggle-button16').click(function (e) {
528    e.preventDefault();
529    $('#c-panel16').toggleClass('collapsed');
530});
531/**menu page CMS insert in Category menu */
532$("#st_menu_block_64 .ml_level_2.granditem_0.p_granditem_1").insertAfter("#st_menu_block_54 .col-md-6:nth-child(1) .mu_level_2.p_granditem_1");
533$("#st_menu_block_65 .ml_level_2.granditem_0.p_granditem_1").insertAfter("#st_menu_block_54 .col-md-6:nth-child(3) .mu_level_2.p_granditem_1");
534$("#st_menu_block_66 .ml_level_2.granditem_0.p_granditem_1").insertAfter("#st_menu_block_54 .col-md-6:nth-child(2) .mu_level_2.p_granditem_1");
535$("#st_menu_block_67 .ml_level_2.granditem_0.p_granditem_1").insertAfter("#st_menu_block_37 .col-md-6:nth-child(1) .mu_level_2.p_granditem_1");
536$("#st_menu_block_68 .ml_level_2.granditem_0.p_granditem_1").insertAfter("#st_menu_block_31 .col-md-6:nth-child(1) .mu_level_2.p_granditem_1");
537$("#st_menu_block_69 .ml_level_2.granditem_0.p_granditem_1").insertAfter("#st_menu_block_31 .col-md-6:nth-child(3) .mu_level_2.p_granditem_1");
538
539
540/**table feature division*/
541
542
543k = 3;
544numitem = $('.product-features').children('.main_bloc').length;
545for (var $i = 0; $i < numitem; $i++) {
546    $id = $i;
547
548    bloc = '#main_bloc_' + $i + ' .data-sheet.flex_container';
549    blocc = $(bloc).length;
550    if (blocc % 2 == 0) {
551        $position = Math.trunc(blocc / 2);
552    } else {
553        $position = Math.trunc((blocc / 2));
554
555    }
556
557    blocavantfinal = '#main_bloc_' + $i;
558    blocfinal = '#main_bloc_' + $i + ' .data-sheet.flex_container' + ':nth-child(' + $position + ')';
559
560    $("</div><div class='main_bloc new'>").insertAfter(blocavantfinal);
561
562    for (var $j = $position; $j < blocc; $j++) {
563
564        /* $(".main_bloc").append($('#main_bloc_'+$i +' .data-sheet.flex_container'+':nth-child('+$j +')'));  */
565        $p = $position + 2;
566        $('.product-features .main_bloc.new' + ':nth-child(' + k + ')').append($('#main_bloc_' + $i + ' .data-sheet.flex_container' + ':nth-child(' + $p + ')'));
567    }
568    k = k + 2;
569}
570
571
572if (typeof ($("#main_bloc_1 .data-sheet.flex_container.feature_box"))) {
573    $("#main_bloc_1 .data-sheet.flex_container.feature_box").insertBefore("#main_bloc_1");
574
575}
576if (typeof ($("#main_bloc_0 .data-sheet.flex_container.feature_box"))) {
577    $("#main_bloc_0 .data-sheet.flex_container.feature_box").insertBefore("#main_bloc_0");
578
579}
580if (typeof ($("#main_bloc_2 .data-sheet.flex_container.feature_box"))) {
581    $("#main_bloc_2 .data-sheet.flex_container.feature_box").insertBefore("#main_bloc_2");
582
583}
584
585//obfuscation v2024
586function obsucrerlink(elem) {
587    $(elem).click(function (e) {
588        e.preventDefault();  // Empêche le comportement par défaut du lien <a>
589
590        var href = $(elem).attr('href');  // Récupère l'attribut href de l'élément <a> passé en paramètre
591
592        var parentid = $(elem).closest('li.ml_level_0').attr("id");  // Récupère l'ID du parent <li>
593        localStorage.setItem('parentLi', parentid);  // Stocke l'ID dans le localStorage
594        // Redirection vers l'URL spécifiée dans l'attribut href
595        window.location.href = href;
596    });
597}
598
599$(document).ready(function () {
600    $('a.ma_level_0.is_parent').on('click', function (e) {
601        e.preventDefault();
602        var parentid = $(this).closest('li.ml_level_0').attr("id");
603        localStorage.setItem('parentLi', parentid);
604        var href = $(this).attr('href');
605        window.location.href = href;
606    });
607    $('span.l-obf').on('click', function (e) {
608        var parentid = $(this).closest('li.ml_level_0').attr("id");
609        localStorage.setItem('parentLi', parentid);
610    });
611
612
613    var parentId = localStorage.getItem('parentLi');
614
615
616    var parentElement = $('#' + parentId);
617
618
619    if (parentElement.length > 0) {
620
621        var spanElements = parentElement.find('span.l-obf');
622
623
624        spanElements.each(function () {
625
626            var dataOValue = $(this).attr('data-o');
627            var decodedUrl = atob(dataOValue);
628
629
630            var spanText = $(this).text();
631            var spanClass = $(this).attr('class');
632
633            var newLink = $('<a>', {
634                href: decodedUrl,
635                text: spanText,
636                class: 'alink_obs ' + spanClass,
637                onClick: "obsucrerlink((this));"
638            });
639
640            $(this).replaceWith(newLink);
641        });
642    }
643    /* show country selection popup */
644    const storagePopup = 'ets_geo_popup_shown';
645    const popupTrigger = document.querySelector('.ets_click_show');
646    if (!popupTrigger) return;
647    try {
648        if (!localStorage.getItem(storagePopup)) {
649            popupTrigger.click();
650            localStorage.setItem(storagePopup, 'true');
651        }
652    } catch (e) {
653        if (!document.cookie.includes(storagePopup + '=true')) {
654            popupTrigger.click();
655            document.cookie = storagePopup + '=true; path=/; max-age=' + (60 * 60 * 24 * 365);
656        }
657    }
658});
659
660/* CAR-1086 : facade YouTube (lazy). Remplace les iframes YouTube par une vignette cliquable ;
661   l'iframe (et le JS lourd de YouTube) n'est chargee qu'au clic. Gain TBT/perf, pas de CLS (ratio 16/9). */
662$(document).ready(function () {
663    var iframes = document.querySelectorAll('iframe[src*="youtube.com/embed/"], iframe[src*="youtube-nocookie.com/embed/"]');
664    Array.prototype.forEach.call(iframes, function (ifr) {
665        var m = (ifr.getAttribute('src') || '').match(/embed\/([A-Za-z0-9_-]{6,})/);
666        if (!m) return;
667        var vid = m[1];
668        var f = document.createElement('div');
669        f.className = 'cf-yt-facade';
670        f.style.cssText = 'position:relative;cursor:pointer;max-width:100%;aspect-ratio:16/9;'
671            + 'background:#000 center/cover no-repeat url(https://i.ytimg.com/vi/' + vid + '/hqdefault.jpg);';
672        f.innerHTML = '<span style="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);'
673            + 'width:68px;height:48px;background:rgba(0,0,0,.65);border-radius:12px;"></span>'
674            + '<span style="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);'
675            + 'border-style:solid;border-width:11px 0 11px 19px;border-color:transparent transparent transparent #fff;"></span>';
676        f.addEventListener('click', function () {
677            var n = document.createElement('iframe');
678            n.src = 'https://www.youtube.com/embed/' + vid + '?autoplay=1';
679            n.setAttribute('frameborder', '0');
680            n.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture');
681            n.setAttribute('allowfullscreen', '');
682            n.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;';
683            f.innerHTML = '';
684            f.appendChild(n);
685        });
686        ifr.parentNode.replaceChild(f, ifr);
687    });
688});

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.