PageSourceSearch

https://sanissimo.com.mx/themes/custom/sanissimo/assets/js/app.js?v=10.6.5

js sanissimo.com.mx collected 2026-09-29 21:29:12 UTC 36,929 bytes, 884 lines download raw bytes

1var slider;
2
3function cambiar_idioma(e) {
4    if (!e) e = $("#cambio_de_idiomaselect").find("option:selected").val();
5    var loc = location.pathname.split("/");
6    console.log("idioma:", e, loc);
7    // if(loc.length > 3) {
8    //     var urlToOpen = "/" + sitio.pais + "/"+e+"/"+ loc[loc.length - 1]
9    //     console.log(urlToOpen)
10    //     $.post(urlToOpen, { idioma: e }, function (e) {
11    //         window.open(urlToOpen, "_self");
12    //     });
13    // } else  {
14    $.post("/" + sitio.pais + "/idioma", { idioma: e }, function (e) {
15        window.open(e.url, "_self");
16    });
17    // }
18}
19function cambiar_categoria(e) {
20    if (!e) e = $("#filtro_categoria").find("option:selected").val();
21    $(".list__recetas__item").each(function (r, o) {
22        var a = $(o);
23        $.inArray(e, a.data("categoria")) >= 0 ? a.show() : a.hide();
24    });
25}
26function fbShare(e, r, o) {
27    var a = screen.height / 2 - o / 2,
28        t = screen.width / 2 - r / 2;
29    window.open(
30        "http://www.facebook.com/sharer.php?s=100&p[url]=" + e,
31        "sharer",
32        "top=" +
33            a +
34            ",left=" +
35            t +
36            ",toolbar=0,status=0,width=" +
37            r +
38            ",height=" +
39            o
40    );
41}
42function validateEmail(e) {
43    return /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/.test(e);
44}
45$(function () {
46    $(".linkRecetaTrigger").click(function (e) {
47        e.preventDefault();
48        var r = $(this)
49            .closest(".list__recetas__item")
50            .find("a.originalLink")
51            .attr("href");
52        window.location.href = r;
53    }),
54        $(".name__product").click(function (e) {
55            e.preventDefault();
56            var r = $(this)
57                .closest(".item__product")
58                .find("a.foto__productLink")
59                .attr("href");
60            window.location.href = r;
61        }),
62        $("#select__idiomMobile").change(function () {
63            var lang = $("#select__idiomMobile").find("option:selected").val();
64            $.post(
65                "/" + sitio.pais + "/idioma",
66                { idioma: lang },
67                function (e) {
68                    window.open(e.url, "_self");
69                }
70            );
71        }),
72        $("#filtro_categoria").change(function () {
73            cambiar_categoria($(this).val());
74        }),
75        $("body").css("display", "inherit"),
76        $(".slider__beneficios").length > 0 &&
77            $(".slider__beneficios").bxSlider({
78                pager: true,
79                controls: false,
80                touchEnabled: !0,
81                responsive: !0,
82                adaptiveHeight: true,
83                slideSelector: "div.itemSlider__beneficios",
84            }),
85        $(".slider__productos").length > 0 &&
86            ((maxSlidesCounter = 4),
87            (slideCount = $(
88                ".slider__productos .itemSlider__productos"
89            ).length),
90            (maxSlidesCounter = slideCount >= 4 ? 3 : slideCount >= 3 ? 2 : 1),
91            console.log(slideCount, maxSlidesCounter),
92            (slider =
93                $(window).width() > 767
94                    ? $(".slider__productos").bxSlider({
95                          pager: !1,
96                          minSlides: 1,
97                          maxSlides: maxSlidesCounter,
98                          moveSlides: 1,
99                          slideWidth: 180,
100                          controls: !0,
101                          responsive: !0,
102                          infiniteLoop: false,
103                          hideControlOnEnd: true,
104                          touchEnabled: !1,
105                          slideSelector: "div.itemSlider__productos",
106                          nextSelector: ".next__control",
107                          prevSelector: ".prev__control",
108                          nextText: '<span class="inner__control"></i>',
109                          prevText: '<span class="inner__control"></i>',
110                      })
111                    : $(".slider__productos").bxSlider({
112                          pager: false,
113                          minSlides: 1,
114                          maxSlides: 1,
115                          moveSlides: 1,
116                          slideWidth: 200,
117                          controls: true,
118                          responsive: !0,
119                          infiniteLoop: false,
120                          hideControlOnEnd: true,
121                          slideSelector: "div.itemSlider__productos",
122                          nextSelector: ".next__control",
123                          prevSelector: ".prev__control",
124                          nextText: '<span class="innes__control"></i>',
125                          prevText: '<span class="innes__control"></i>',
126                      }))),
127        $(".popup-youtube, .popup-vimeo, .popup-gmaps").length > 0 &&
128            $(".popup-youtube, .popup-vimeo, .popup-gmaps").magnificPopup({
129                type: "iframe",
130                mainClass: "mfp-fade",
131                removalDelay: 160,
132                preloader: !1,
133                fixedContentPos: !1,
134            }),
135        $(".open-popup-link").magnificPopup({
136            type: "inline",
137            closeBtnInside: true,
138            autoFocusLast: true,
139            focus: ".mfp-close",
140        }),
141        $(".openVideo__receta").length > 0 &&
142            "?type=video" == window.location.search &&
143            setTimeout(function () {
144                $(".openVideo__receta").trigger("click");
145            }, 200),
146        $(".triggersearch__header").click(function () {
147            $(".c-header-search").toggleClass("open"),
148                $(".c-header-search").hasClass("open")
149                    ? setTimeout(function () {
150                          $(".box-search input").focus();
151                      }, 800)
152                    : setTimeout(function () {
153                          $(".box-search input").blur();
154                      }, 800);
155        }),
156        // $(".triggermenu__header").click(function () {
157        //   $(".header .nav__menu").toggleClass("open")
158        //   $(this).toggleClass('open')
159        //   $(this).hasClass('open') ? (
160        //     $(this).attr('aria-expanded','true') ,
161        //     $('.header > a').focus()
162        //     )
163        //     :
164        //     $(this).attr('aria-expanded','false').focus()
165        // }),
166        // $(".close__menu, .nav__menu a").click(function () {
167        //   $(".header .nav__menu").removeClass("open")
168        //   $(".triggermenu__header").attr('aria-expanded','false').removeClass('open')
169        // }),
170        $(".rating__receta").length > 0 &&
171            $(".rating__receta").starRating({
172                initialRating: 0,
173                strokeColor: "#F9B605",
174                strokeWidth: 10,
175                starSize: 25,
176                useFullStars: !0,
177                emptyColor: "transparent",
178                strokeColor: "#562E07",
179            }),
180        $(".cart__header").click(function () {
181            $(".ctn__cart").toggleClass("open");
182        }),
183        $(".accordion > li:eq(0) a").addClass("active").next().slideDown(),
184        $(".accordion a").click(function (e) {
185            var r = $(this).closest("li").find(".ctn");
186            $(this).closest(".accordion").find(".ctn").not(r).slide
186Up(),
187                $(this).hasClass("active")
188                    ? $(this).removeClass("active")
189                    : ($(this)
190                          .closest(".accordion")
191                          .find("a.active")
192                          .removeClass("active"),
193                      $(this).addClass("active")),
194                r.stop(!1, !0).slideToggle(),
195                e.preventDefault();
196        }),
197        $(".sendFormSearch").click(function (e) {
198            e.preventDefault(),
199                "" == $(".box-search input").val()
200                    ? $(".box-search input").focus()
201                    : $("#FormSearch").submit();
202        }),
203        document.addEventListener("DOMContentLoaded", function () {
204            window.location.hash &&
205                smoothScroll.animateScroll(null, window.location.hash);
206        }),
207        $("form").on("change", ".file-upload-field", function () {
208            $(this)
209                .parent(".file-upload-wrapper")
210                .attr(
211                    "data-text",
212                    $(this)
213                        .val()
214                        .replace(/.*(\/|\\)/, "")
215                );
216        }),
217        $("#formnewrecipe").submit(function (e) {
218            e.preventDefault(),
219                $("#formnewrecipe .form__send").addClass("disabled");
220            var r = !0;
221            if (
222                ("" === $("#nameUser").val() &&
223                    ($("#nameUser").addClass("error"), (r = !1)),
224                "" === $("#apaternoUser").val() &&
225                    ($("#apaternoUser").addClass("error"), (r = !1)),
226                "" === $("#emailUser").val() &&
227                    ($("#amaternoUser").addClass("error"), (r = !1)),
228                "" === $("#emailUser").val() &&
229                    ($("#emailUser").addClass("error"), (r = !1)),
230                validateEmail($("#emailUser").val()) ||
231                    ($("#emailUser").addClass("error"), (r = !1)),
232                "" === $("#tituloRecipe").val() &&
233                    ($("#tituloRecipe").addClass("error"), (r = !1)),
234                "" === $("#selectCategory").val() &&
235                    ($("#selectCategory").addClass("error"), (r = !1)),
236                0 === $("#photoRecipe").get(0).files.length &&
237                    ($(".file-upload-wrapper").addClass("error"), (r = !1)),
238                "" === $("#ingredientsRecipe").val() &&
239                    ($("#ingredientsRecipe").addClass("error"), (r = !1)),
240                "" === $("#preparationRecipe").val() &&
241                    ($("#preparationRecipe").addClass("error"), (r = !1)),
242                0 == $("#aceptAviso").prop("checked") &&
243                    ($("#aceptAviso").addClass("error"), (r = !1)),
244                console.log(r),
245                !0 === r)
246            ) {
247                console.log("serialize form");
248                var o = $("#formnewrecipe")[0];
249                new FormData(o);
250                $.ajax({
251                    url: "./nueva_receta_usuario",
252                    type: "POST",
253                    enctype: "multipart/form-data",
254                    processData: !1,
255                    contentType: !1,
256                    cache: !1,
257                    data: new FormData(this),
258                    cache: !1,
259                    success: function (e, r) {
260                        console.log("is success");
261                    },
262                })
263                    .done(function (e) {
264                        console.log("done", e),
265                            1 == e.valido
266                                ? ($(
267                                      ".ctn__overlayResponse .card__overlayResponse.error"
268                                  ).fadeOut(0),
269                                  $(
270                                      ".ctn__overlayResponse .card__overlayResponse.success"
271                                  )
272                                      .fadeIn()
273                                      .focus(),
274                                  $(".ctn__overlayResponse").fadeIn(),
275                                  $("#formnewrecipe input").val(""),
276                                  $("#formnewrecipe select").val(""),
277                                  $("#formnewrecipe .file-upload-wrapper").attr(
278                                      "data-text",
279                                      ""
280                                  ),
281                                  $("#formnewrecipe textarea").val(""),
282                                  $("#formnewrecipe #aceptAviso").prop(
283                                      "checked",
284                                      !1
285                                  ),
286                                  $("#formnewrecipe .form__send").removeClass(
287                                      "disabled"
288                                  ))
289                                : ($(
290                                      ".ctn__overlayResponse .card__overlayResponse.success"
291                                  ).fadeOut(0),
292                                  $(
293                                      ".ctn__overlayResponse .card__overlayResponse.error .desc__overlayResponse"
294                                  )
295                                      .text(e.mensaje)
296                                      .focus(),
297                                  $(
298                                      ".ctn__overlayResponse .card__overlayResponse.error"
299                                  ).fadeIn(),
300                                  $(".ctn__overlayResponse").fadeIn(),
301                                  $("#formnewrecipe input").val(""),
302                                  $("#formnewrecipe select").val(""),
303                                  $("#formnewrecipe .file-upload-wrapper").attr(
304                                      "data-text",
305                                      ""
306                                  ),
307                                  $("#formnewrecipe textarea").val(""),
308                                  $("#formnewrecipe #aceptAviso").prop(
309                                      "checked",
310                                      !1
311                                  ),
312                                  $("#formnewrecipe .form__send").removeClass(
313                                      "disabled"
314                                  ));
315                    })
316                    .fail(function (e) {
317                        console.log("fail", e);
318                    });
319            } else $("#formnewrecipe .form__send").removeClass("disabled");
320            console.log($("#formnewrecipe").serialize());
321        }),
322        $(".close__overlayResponse").click(function () {
323            $(".ctn__overlayResponse").fadeOut();
324            contactModalOpen = false;
325        }),
326        $(".close__overlayContact").click(function () {
327            $(".ctn__overlayResponse").fadeOut();
328            contactModalOpen = false;
329        }),
330        $('#formnewrecipe input[type="text"]').keyup(function () {
331            "" !== $(this).val() && $(this).removeClass("error");
332        }),
333        $('#formnewrecipe input[type="email"]').keyup(function () {
334            "" !== $(this).val() && $(this).removeClass("error");
335        }),
336        $("#formnewrecipe select").change(function () {
337            "" !== $(this).val() && $(this).removeClass("error");
338        }),
339        $("#formnewrecipe select").change(function () {
340            "" !== $(this).val() && $(this).removeClass("error");
341        }),
342        $("#formnewrecipe textarea").keyup(function () {
343            "" !== $(this).val() && $(this).removeClass("error");
344        }),
345        $("#photoRecipe").on("change", function () {
346            console.log("change file"),
347                0 == !$("#photoRecipe").get(0).files.length &&
348                    $(".file-upload-wrapper").removeClass("error");
349        }),
350        $("#aceptAviso").change(function () {
351            1 == $("#aceptAviso").prop("checked") &&
352                $(this).removeClass("error");
353        }),
354        $(".btn__like").click(function (e) {
355            e.preventDefault(), $(this).addClass("disabled");
356            var r = $(this).data("id");
357            console.log(r),
358                $.post("/tu_receta_like", { id: r }, function (e) {
359                    console.log(e),
360                        1 == e.valido
361                            ? ($(".result__message").text(
362                                  "Gracias por tu voto"
363                              ),
364                              $(".btn__like span").text(
365                                  parseInt($(".btn__like span").text()) + 1
366                              ),
367                              setTimeout(function () {
368                                  $(".result__message").text("");
369                              }, 4e3),
370                              $(".btn__like").removeClass("disabled"))
371                            : ($(".result__message").text(e.mensaje),
372                              setTimeout(function () {
373                                  $(".result__message").text("");
374                              }, 4e3),
375                              $(".btn__like").removeClass("disabled"));
376                });
377        }),
378        $("#formContact").submit(function (e) {
379            e.preventDefault();
380            var idioma = $("#cambio_de_idiomaselect")
381                .find("option:selected")
382                .val();
383            var r = !0;
384            "" == $("#nameUser").val() &&
385                ($("#nameUser")
386                    .addClass("error")
387                    .closest(".form__group")
388                    .find(".message__describe__error"),
389                (r = !1)),
390                "" == $("#apaternoUser").val() &&
391                    ($("#apaternoUser")
392                        .addClass("error")
393                        .closest(".form__group")
394                        .find(".message__describe__error"),
395                    (r = !1)),
396                $("#amaternoUser").length > 0 &&
397                    "" == $("#amaternoUser").val() &&
398                    ($("#amaternoUser")
399                        .addClass("error")
400                        .closest(".form__group")
401                        .find(".message__describe__error"),
402                    (r = !1)),
403                "" == $("#emailUser").val() &&
404                    ($("#emailUser")
405                        .addClass("error")
406                        .closest(".form__group")
407                        .find(".message__describe__error"),
408                    (r = !1)),
409                0 == validateEmail($("#emailUser").val()) &&
410                    ($("#emailUser")
411                        .addClass("error")
412                        .closest(".form__group")
413                        .find(".message__describe__error"),
414                    (r = !1)),
415                "" == $("#mensajeUser").val() &&
416                    ($("#mensajeUser")
417                        .addClass("error")
418                        .closest(".form__group")
419                        .find(".message__describe__error"),
420                    (r = !1)),
421                0 == $("#aceptAviso").prop("checked") &&
422                    ($("#aceptAviso")
423                        .addClass("error")
424                        .closest(".form__group")
425                        .find(".message__describe__error"),
426                    (r = !1)),
427                !0 === r
428                    ? (console.log("sending form"),
429                      $.post(
430                          "/enviar_formulario_contactanos",
431                          $("#formContact").serialize(),
432                          function (e) {
433                              1 == e.valido
434                                  ? ($(
435                                        ".ctn__overlay__contact .card__overlayResponse"
436                                    ).fadeIn(),
437                                    $(".img__overlayResponse").text(
438                                        "/themes/custom/sanissimo/assets/img/icons/icon__send.svg"
439                                    ),
440                                    $(".tit__overlayResponse").text(
441                                        idioma == "en"
442                                            ? "Thank you for your message"
443                                            : "¡Gracias por tu mensaje!"
444                                    ),
445                                    $(".desc__overlayResponse").text(
446                                        idioma == "en"
447                                            ? "We will contact you soon."
448                                            : "En breve te contactaremos."
449                                    ),
450                                    (contactModalOpen = true),
451                                    $(".ctn__overlay__contact").fadeIn(),
452                                    setTimeout(function () {
453                                        $(
454                                            ".ctn__overlay__contact .close__overlayResponse"
455                                        ).focus();
456                                    }, 200))
457                                  : ($(
458                                        ".ctn__overlay__contact .card__overlayResponse"
459                                    ).fadeIn(),
460                                    $(".img__overlayResponse").text(
461                                        "/themes/custom/sanissimo/assets/img/icons/icon__send__error.svg"
462                                    ),
463                                    $(".tit__overlayResponse").text(
464                                        idioma == "en"
465                                            ? "We´re sorry..."
466                                            : "Lo sentimos…"
467                                    ),
468                                    $(".desc__overlayResponse").text(
469                                        idioma == "en"
470                                            ? "an error has occurred, try again later."
471                                            : "Ha ocurrido un error al enviar tus datos, inténtalo nuevamente más tarde."
472                                    ),
473                                    (contactModalOpen = true),
474                                    $(".ctn__overlay__contact").fadeIn(),
475                                    setTimeout(function () {
476                                        $(
477                                            ".ctn__overlay__contact .close__overlayResponse"
478                                        ).focus();
479                                    }, 200));
480                          }
481                      ))
482                    : (console.log("Invalid form"),
483                      $('#formContact input[type="text"].error').length > 0
484                          ? $("#formContact")
485                                .find('input[type="text"].error')
486                                .eq(0)
487                                .focus()
488                          : $('#formContact input[type="email"].error').length >
489                            0
490                          ? $("#formContact")
491                                .find('input[type="email"].error')
492                                .eq(0)
493                                .focus()
494                          : $("#formContact textarea").hasClass("error")
495                          ? $("#formContact textarea").focus()
496                          : $("#formContact #aceptAviso").hasClass("error")
497                          ? $("#formContact #aceptAviso").focus()
498                          : null);
499        });
500
501    $(".send__formCol").click(function (e) {
502        e.preventDefault();
503        var validform = true;
504        if ($("#name").val() == "") {
505            validform = false;
506            $("#name").addClass("error");
507        }
508        if ($("#lastname").val() == "") {
509            validform = false;
510            $("#lastname").addClass("error");
511        }
512        if ($("#email").val() == "" || !validateEmail($("#email").val())) {
513            validform = false;
514            $("#email").addClass("error");
515        }
516        if ($("#phone").val() == "") {
517            validform = false;
518            $("#phone").addClass("error");
519        }
520        if ($("#description").val() == "") {
521            validform = false;
522            $("#description").addClass("error");
523        }
524        if ($("#subject").val() == "") {
525            validform = false;
526            $("#subject").addClass("error");
527        }
528
529        if (validform) {
530            // $("#formCol").submit()
531            var idioma = $("#cambio_de_idiomaselect")
532                .find("option:selected")
533                .val();
534            $.post(
535                "/enviar_formulario_contactanos",
536                $("#formCol").serialize(),
537                function (data) {
538                    if (data.valido) {
539                        $(
540                            ".ctn__overlay__contact .card__overlayResponse"
541                        ).fadeIn();
542                        $(".img__overlayResponse").text(
543                            "/themes/custom/sanissimo/assets/img/icons/icon__send.svg"
544                        );
545                        $(".tit__overlayResponse").text(
546                            idioma == "en"
547                                ? "Thank you for your message"
548                                : "¡Gracias por tu mensaje!"
549                        );
550                        $(".desc__overlayResponse").text(
551                            idioma == "en"
552                                ? "We will contact you soon."
553                                : "En breve te contactaremos."
554                        );
555                        contactModalOpen = true;
556                        $(".ctn__overlay__contact").fadeIn();
557                        setTimeout(function () {
558                            $(
559                                ".ctn__overlay__contact .close__overlayResponse"
560                            ).focus();
561                        }, 200);
562                        // clear form
563                        $(
564                            "#name, #lastname,#email, #phone, #subject, #description"
565                        ).val("");
566                    } else {
567                        $(
568                            ".ctn__overlay__contact .card__overlayResponse"
569                        ).fadeIn();
570                        $(".img__overlayResponse").text(
571                            "/themes/custom/sanissimo/assets/img/icons/icon__send__error.svg"
572                        );
573                        $(".tit__overlayResponse").text(
574                            idioma == "en" ? "We're sorry..." : "Lo sentimos…"
575                        );
576                        $(".desc__overlayResponse").text(
577                            idioma == "en"
578                                ? "an error has occurred, try again later."
579                                : "Ha ocurrido un error al enviar tus datos, inténtalo nuevamente más tarde."
580                        );
581                        contactModalOpen = true;
582                        $(".ctn__overlay__contact").fadeIn();
583                        setTimeout(function () {
584                            $(
585                                ".ctn__overlay__contact .close__overlayResponse"
586                            ).focus();
587                        }, 200);
588                    }
589                }
590            );
591            grecaptcha
592                .execute("6Lejg-geAAAAAA-u4Q-pX8H5JWJ8cI97Yi868p35", {
593                    action: "formulario",
594                })
595                .then(function (token) {
596                    var recaptchaResponse =
597                        document.getElementById("recaptchaResponse");
598                    recaptchaResponse.value = token;
599                });
600        } else {
601            if ($("#formCol .form__block input.error").length > 0) {
602                $("#formCol .form__block input.error").eq(0).focus();
603            } else {
604                $("#formCol .form__block textarea.error").eq(0).focus();
605            }
606        }
607    });
608    $(".valid__email").keyup(function () {
609        if (!validateEmail($(this).val())) {
610            $(this).addClass("error");
611            $(this)
612                .closest(".form__group")
613                .find(".message__describe__error")
614                .css("display", "block");
615        } else {
616            $(this).removeClass("error");
617            $(this)
618                .closest(".form__group")
619                .find(".message__describe__error")
620                .css("display", "none");
621        }
622    });
623
624    $("#formCol .form__group input,#formCol .form__group textarea").change(
625        function () {
626            if ($(this).hasClass("error")) {
627                $(this).removeClass("error");
628            }
629        }
630    );
631    $(
632        "#formContact .form__group input,#formContact .form__group textarea"
633    ).change(function () {
634        if ($(this).hasClass("error")) {
635            $(this).removeClass("error");
636            $(this)
637                .closest(".form__group")
638                .find(".message__describe__error")
639                .css("display", "none");
640        }
641    });
642});
643
644// accordion faqs
645var headersAccordion;
646//   video home
647var triggerVideo;
648var backdrop;
649var dialog;
650var videoID;
651var closeButton;
652var otherButtons;
653var firstFocusableElement, lastFocusableElement;
654var isOpen = false;
655
656window.addEventListener("DOMContentLoaded", function () {
657    // Accordion faqs
658    headersAccordion = document.querySelectorAll(".header__accordion button");
659    headersAccordion.forEach(function (header) {
660        header.addEventListener("click", function () {
661            var isExpanded =
662                header.getAttribute("aria-expanded") == "true" ? true : false;
663            header.setAttribute("aria-expanded", !isExpanded);
664            $("#" + header.getAttribute("aria-controls")).slideToggle();
665        });
666    });
667
668    // Video Component
669    triggerVideo = document.querySelector(".trigger__video");
670    if (triggerVideo) {
671        backdrop = document.querySelector(".modal__wrapper__video");
672        dialog = backdrop.querySelector(".inner__wrapper__video");
673        videoID = dialog.querySelector(".isVideo");
674        closeButton = dialog.querySelector(".close-button");
675        otherButtons = dialog.querySelectorAll(
676            ".wrapper__video__buttons button"
677        );
678        firstFocusableElement = dialog.querySelector(
679            ".first-focusable-element"
680        );
681        lastFocusableElement = dialog.querySelector(".last-focusable-element");
682
683        // Open the dialog when the trigger button is activated.
684        triggerVideo.addEventListener("click", function (e) {
685            openDialog();
686            // playVideo(videoID)
687        });
688
689        // Close the dialog when the inner close button is activated.
690        closeButton.addEventListener("click", function (e) {
691            stopVideo(videoID);
692            closeDialog();
693        });
694
695        // Close the dialog when the user clicks on the backdrop.
696        backdrop.addEventListener("click", function (e) {
697            if (!dialog.contains(e.target)) {
698                stopVideo(videoID);
699                closeDialog();
700            }
701        });
702
703        // Close the dialog when 'Escape' key is pressed.
704        backdrop.addEventListener("keydown", function (e) {
705            if (e.key == "Escape") {
706                stopVideo(videoID);
707                closeDialog();
708            }
709        });
710
711        // Trap keyboard focus by moving focus to the first or last focusable element when the user tries to tab (or "backwards" tab) past them.
712        dialog.addEventListener("keydown", function (e) {
713            if (
714                e.target == firstFocusableElement &&
715                e.key == "Tab" &&
716                e.shiftKey
717            ) {
718                e.preventDefault();
719                lastFocusableElement.focus();
720            } else if (
721                e.target == lastFocusableElement &&
722                e.key == "Tab" &&
723                !e.shiftKey
724            ) {
725                e.preventDefault();
726                firstFocusableElement.focus();
727            }
728        });
729
730        // For code demo purposes only. Close the dialog when the Cancel or OK buttons are activated. In a real use case these might actually do something like set cookies or refresh the page or something.
731        otherButtons.forEach(function (button) {
732            button.addEventListener("click", function (e) {
733                stopVideo(videoID);
734                closeDialog();
735            });
736        });
737    }
738
739    var allInteractiveEleProductos = document.querySelectorAll(
740        ".itemSlider__productos a, .itemSlider__productos"
741    );
742    allInteractiveEleProductos &&
743        allInteractiveEleProductos.forEach(function (element) {
744            element.setAttribute("tabindex", -1);
745        });
746
747    var allInteractiveEleBeneficios = document.querySelectorAll(
748        ".itemSlider__beneficios"
749    );
750    allInteractiveEleBeneficios &&
751        allInteractiveEleBeneficios.forEach(function (element) {
752            element.setAttribute("tabindex", -1);
753        });
754
755    var dialogModal = $(".dialog__modal");
756    if (dialogModal.length > 0) {
757        var firstFocusableElement = $(".first-focusable-element");
758        var lastFocusableElement = $(".last-focusable-element");
759
760        dialogModal.on("keydown", function (e) {
761            console.log(e, e.target, firstFocusableElement, e.key, e.shiftKey);
762            if (e.target == firstFocusableElement && e.key == "Tab") {
763                e.preventDefault();
764                lastFocusableElement.focus();
765            } else if (e.target == lastFocusableElement && e.key == "Tab") {
766                e.preventDefault();
767                firstFocusableElement.focus();
768            }
769
770            if (e.key == "Escape") {
771                $(".ctn__overlayResponse").fadeOut();
772                setTimeout(function () {
773                    $(".sendContactForm").focus();
774                }, 400);
775            }
776        });
777    }
778
779    if ($(".dialog__modal__contact").length > 0) {
780        var firstFocusElement = document.querySelector(
781            ".dialog__modal__contact .first-focusable-element"
782        );
783        var lastFocusElement = document.querySelector(
784            ".dialog__modal__contact .last-focusable-element"
785        );
786
787        $(".dialog__modal__contact").on("keydown", function (e) {
788            console.log(e.target, firstFocusElement, e.key);
789            if (e.target == firstFocusElement && e.key == "Tab") {
790                e.preventDefault();
791                lastFocusElement.focus();
792            } else if (e.target == lastFocusElement && e.key == "Tab") {
793                e.preventDefault();
794                firstFocusElement.focus();
795            }
796            if (e.key == "Escape") {
797                $(".ctn__overlay__contact").fadeOut();
798                setTimeout(function () {
799                    $(".sendContactForm").focus();
800                }, 400);
801            }
802        });
803    }
804
805    // Menu interaction
806    var openButtonMenu = document.querySelector(".triggermenu__header");
807    var closeButtonMenu = document.querySelector(".close__menu");
808    var modalMenu = document.querySelector(".nav__menu");
809    var menuIsOpen = false;
810    menu = modalMenu.querySelector(".menu");
811    var firstFocusableElement = modalMenu.querySelector(
812        ".first-focusable-element"
813    );
814    var lastFocusableElement = modalMenu.querySelector(
815        ".last-focusable-element"
816    );
817
818    // Show and move focus into the mobile menu when the hamburger icon button is activated
819    openButtonMenu.addEventListener("click", function (e) {
820        console.log("open menu");
821        e.stopPropagation();
822        modalMenu.classList.add("open");
823        openButtonMenu.classList.add("is__hidden");
824        setTimeout(() => {
825            closeButtonMenu.focus();
826        }, 300);
827        menuIsOpen = true;
828    });
829
830    // Hide the mobile menu and move focus back to the hamburger icon butter when the close button is activated
831    closeButtonMenu.addEventListener("click", function (e) {
832        closeMenu();
833    });
834
835    // Trap keyboard focus inside the mobile menu
836    modalMenu.addEventListener("keydown", function (e) {
837        if (menuIsOpen) {
838            if (e.key == "Tab") {
839                if (!e.shiftKey) {
840                    if (document.activeElement == lastFocusableElement) {
841                        firstFocusableElement.focus();
842                        e.preventDefault();
843                    }
844                } else {
845                    if (document.activeElement == firstFocusableElement) {
846                        lastFocusableElement.focus();
847                        e.preventDefault();
848                    }
849                }
850            }
851
852            if (e.key == "Escape") {
853                closeMenu();
854            }
855        }
856    });
857});
858
859function closeMenu() {
860    document.querySelector(".nav__menu").classList.remove("open");
861    menuIsOpen = false;
862    document
863        .querySelector(".triggermenu__header")
864        .classList.remove("is__hidden");
865    document.querySelector(".triggermenu__header").focus();
866}
867
868function openDialog() {
869    backdrop.classList.add("is-visible");
870    closeButton.focus();
871}
872
873function closeDialog() {
874    backdrop.classList.remove("is-visible");
875    triggerVideo.focus();
876}
877
878function playVideo(idElementVideo) {
879    idElementVideo.play();
880}
881function stopVideo(idElementVideo) {
882    idElementVideo.pause();
883    idElementVideo.currentTime = 0;
884}

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.