PageSourceSearch

https://kvm-ko.ru/templates/bigshop_new/js/new/theme.js

js kvm-ko.ru collected 2026-10-08 03:28:36 UTC 43,324 bytes, 1,264 lines download raw bytes

1(function ($) {
2    "use strict";
3    /*=================================
4      JS Index Here
5    ==================================*/
6    /*
7    01. On Load Function
8    02. Preloader
9    03. Mobile Menu Active
10    04. Sticky fix
11    05. Scroll To Top
12    06. Set Background Image
13    07. Global Slider
14    08. Custom Animaiton For Slider
15    09. Flip Slider
16    10. Ajax Contact Form
17    11. Search Box Popup
18    12. Popup Sidemenu
19    13. Magnific Popup
20    14. Section Position
21    15. Filter
22    16. Counter Up
23    17. AS Tab
24    18. Shape Mockup
25    19. Countdown
26    20. Progress Bar Animation
27    21. Price Slider
28    22. One Page Nav
29    23. Indicator
30    00. Woocommerce Toggle
31    00. Right Click Disable
32  */
33    /*=================================
34      JS Index End
35  ==================================*/
36    /*
37  
38  /*---------- 01. On Load Function ----------*/
39    $(window).on("load", function () {
40        $(".preloader").fadeOut();
41    });
42  
43    $(window).on('resize', function () {
44        $(".slick-slider").slick("refresh");
45    });
46  
47    /*---------- 02. Preloader ----------*/
48    if ($(".preloader").length > 0) {
49        $(".preloaderCls").each(function () {
50            $(this).on("click", function (e) {
51                e.preventDefault();
52                $(".preloader").css("display", "none");
53            });
54        });
55    }
56    
57  
58    $('[data-bs-toggle="tab"]').on('shown.bs.tab', function (e) {
59      $('.as-carousel').slick('setPosition');
60      })
61    /*---------- 03. Mobile Menu Active ----------*/
62    $.fn.asmobilemenu = function (options) {
63        var opt = $.extend(
64            {
65                menuToggleBtn: ".as-menu-toggle",
66                bodyToggleClass: "as-body-visible",
67                subMenuClass: "as-submenu",
68                subMenuParent: "as-item-has-children",
69                subMenuParentToggle: "as-active",
70                meanExpandClass: "as-mean-expand",
71                appendElement: '<span class="as-mean-expand"></span>',
72                subMenuToggleClass: "as-open",
73                toggleSpeed: 400,
74            },
75            options
76        );
77  
78        return this.each(function () {
79            var menu = $(this); // Select menu
80  
81            // Menu Show & Hide
82            function menuToggle() {
83                menu.toggleClass(opt.bodyToggleClass);
84  
85                // collapse submenu on menu hide or show
86                var subMenu = "." + opt.subMenuClass;
87                $(subMenu).each(function () {
88                    if ($(this).hasClass(opt.subMenuToggleClass)) {
89                        $(this).removeClass(opt.subMenuToggleClass);
90                        $(this).css("display", "none");
91                        $(this).parent().removeClass(opt.subMenuParentToggle);
92                    }
93                });
94            }
95  
96            // Class Set Up for every submenu
97            menu.find("li").each(function () {
98                var submenu = $(this).find("ul");
99                submenu.addClass(opt.subMenuClass);
100                submenu.css("display", "none");
101                submenu.parent().addClass(opt.subMenuParent);
102                submenu.prev("a").append(opt.appendElement);
103                submenu.next("a").append(opt.appendElement);
104            });
105  
106            // Toggle Submenu
107            function toggleDropDown($element) {
108                if ($($element).next("ul").length > 0) {
109                    $($element).parent().toggleClass(opt.subMenuParentToggle);
110                    $($element).next("ul").slideToggle(opt.toggleSpeed);
111                    $($element).next("ul").toggleClass(opt.subMenuToggleClass);
112                } else if ($($element).prev("ul").length > 0) {
113                    $($element).parent().toggleClass(opt.subMenuParentToggle);
114                    $($element).prev("ul").slideToggle(opt.toggleSpeed);
115                    $($element).prev("ul").toggleClass(opt.subMenuToggleClass);
116                }
117            }
118  
119            // Submenu toggle Button
120            var expandToggler = "." + opt.meanExpandClass;
121            $(expandToggler).each(function () {
122                $(this).on("click", function (e) {
123                    e.preventDefault();
124                    toggleDropDown($(this).parent());
125                });
126            });
127  
128            // Menu Show & Hide On Toggle Btn click
129            $(opt.menuToggleBtn).each(function () {
130                $(this).on("click", function () {
131                    menuToggle();
132                });
133            });
134  
135            // Hide Menu On out side click
136            menu.on("click", function (e) {
137                e.stopPropagation();
138                menuToggle();
139            });
140  
141            // Stop Hide full menu on menu click
142            menu.find("div").on("click", function (e) {
143                e.stopPropagation();
144            });
145        });
146    };
147  
148    $(".as-menu-wrapper").asmobilemenu();
149  
150  /*---------- 04. Sticky fix ----------*/
151  $(window).scroll(function () {
152      var topPos = $(this).scrollTop();
153      if (topPos > 500) {
154          $('.sticky-wrapper').addClass('sticky');
155      } else {
156          $('.sticky-wrapper').removeClass('sticky')
157      }
158  })
159  
160  /*---------- 05. Scroll To Top ----------*/
161  // progressAvtivation
162  if($('.scroll-top')) {    
163      var scrollTopbtn = document.querySelector('.scroll-top');
164      var progressPath = document.querySelector('.scroll-top path');
165      var pathLength = progressPath.getTotalLength();
166      progressPath.style.transition = progressPath.style.WebkitTransition = '
166none';
167      progressPath.style.strokeDasharray = pathLength + ' ' + pathLength;
168      progressPath.style.strokeDashoffset = pathLength;
169      progressPath.getBoundingClientRect();
170      progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear';		
171      var updateProgress = function () {
172          var scroll = $(window).scrollTop();
173          var height = $(document).height() - $(window).height();
174          var progress = pathLength - (scroll * pathLength / height);
175          progressPath.style.strokeDashoffset = progress;
176      }
177      updateProgress();
178      $(window).scroll(updateProgress);	
179      var offset = 50;
180      var duration = 750;
181      jQuery(window).on('scroll', function() {
182          if (jQuery(this).scrollTop() > offset) {
183              jQuery(scrollTopbtn).addClass('show');
184          } else {
185              jQuery(scrollTopbtn).removeClass('show');
186          }
187      });				
188      jQuery(scrollTopbtn).on('click', function(event) {
189          event.preventDefault();
190          jQuery('html, body').animate({scrollTop: 0}, 1);
191          return false;
192      })
193  }
194  
195  
196  
197  
198  
199    /*---------- 06. Set Background Image ----------*/
200    if ($("[data-bg-src]").length > 0) {
201        $("[data-bg-src]").each(function () {
202            var src = $(this).attr("data-bg-src");
203            $(this).css("background-image", "url(" + src + ")");
204            $(this).removeAttr("data-bg-src").addClass("background-image");
205        });
206    }
207  
208    /*---------- 06. Set Background Image ----------*/
209    if ($('[data-theme-color]').length > 0) {
210          $('[data-theme-color]').each(function () {
211          var $color = $(this).attr('data-theme-color');
212          $(this).get(0).style.setProperty('--theme-color', $color);
213          $(this).removeAttr('data-theme-color');
214          });
215      };
216  
217    /*---------- 06. Set Background Mask Image ----------*/
218    if ($('[data-mask-src]').length > 0) {
219      $('[data-mask-src]').each(function () {
220        var mask = $(this).attr('data-mask-src');
221        $(this).css({
222          'mask-image': 'url(' + mask + ')',
223          '-webkit-mask-image': 'url(' + mask + ')'
224        });
225        $(this).removeAttr('data-mask-src');
226      });
227  };
228  
229  /*******svg-image*******/
230  /*---------- 14. Image to SVG Code ----------*/
231  const cache = {};
232  
233  $.fn.inlineSvg = function fnInlineSvg() {
234      this.each(imgToSvg);
235  
236      return this;
237  };
238  
239  function imgToSvg() {
240      const $img = $(this);
241      const src = $img.attr("src");
242  
243      // fill cache by src with promise
244      if (!cache[src]) {
245          const d = $.Deferred();
246          $.get(src, (data) => {
247              d.resolve($(data).find("svg"));
248          });
249          cache[src] = d.promise();
250      }
251  
252      // replace img with svg when cached promise resolves
253      cache[src].then((svg) => {
254          const $svg = $(svg).clone();
255  
256          if ($img.attr("id")) $svg.attr("id", $img.attr("id"));
257          if ($img.attr("class")) $svg.attr("class", $img.attr("class"));
258          if ($img.attr("style")) $svg.attr("style", $img.attr("style"));
259  
260          if ($img.attr("width")) {
261              $svg.attr("width", $img.attr("width"));
262              if (!$img.attr("height")) $svg.removeAttr("height");
263          }
264          if ($img.attr("height")) {
265              $svg.attr("height", $img.attr("height"));
266              if (!$img.attr("width")) $svg.removeAttr("width");
267          }
268  
269          $svg.insertAfter($img);
270          $img.trigger("svgInlined", $svg[0]);
271          $img.remove();
272      });
273  }
274  
275  $(".svg-img").inlineSvg();
276  
277  /*----------- 07. Global Slider ----------*/
278    $(".as-carousel").each(function () {
279        var asSlide = $(this);
280  
281        // Collect Data
282        function d(data) {
283            return asSlide.data(data);
284        }
285  
286        // Custom Arrow Button
287        var prevButton =
288                '<button type="button" class="slick-prev"><i class="' +
289                d("prev-arrow") +
290                '"></i></button>',
291            nextButton =
292                '<button type="button" class="slick-next"><i class="' +
293                d("next-arrow") +
294                '"></i></button>';
295  
296        // Function For Custom Arrow Btn
297        $("[data-slick-next]").each(function () {
298            $(this).on("click", function (e) {
299                e.preventDefault();
300                $($(this).data("slick-next")).slick("slickNext");
301            });
302        });
303  
304        $("[data-slick-prev]").each(function () {
305            $(this).on("click", function (e) {
306                e.preventDefault();
307                $($(this).data("slick-prev")).slick("slickPrev");
308            });
309        });
310  
311        // Check for arrow wrapper
312        if (d("arrows") == true) {
313            if (!asSlide.closest(".arrow-wrap").length) {
314                asSlide.closest(".container").parent().addClass("arrow-wrap");
315            }
316        }
317  
318        asSlide.slick({
319            dots: d("dots") ? true : false,
320            fade: d("fade") ? true : false,
321            arrows: d("arrows") ? true : false,
322            speed: d("speed") ? d("speed") : 1000,
323            asNavFor: d("asnavfor") ? d("asnavfor") : false,
324            autoplay: d("autoplay") == false ? false : true,
325            infinite: d("infinite") == false ? false : true,
326            slidesToShow: d("slide-show") ? d("slide-show") : 1,
327            adaptiveHeight: d("adaptive-height") ? true : false,
328            centerMode: d("center-mode") ? true : false,
329            autoplaySpeed: d("autoplay-speed") ? d("autoplay-speed") : 8000,
330            centerPadding: d("center-padding") ? d("center-padding") : "0",
331            focusOnSelect: d("focuson-select") == false ? false : true,
332            pauseOnFocus: d("pauseon-focus") ? true : false,
333            pauseOnHover: d("pauseon-hover") ? true : false,
334            variableWidth: d("variable-width") ? true : false,
335            vertical: d("vertical") ? true : false,
336            verticalSwiping: d("vertical") ? true : false,
337            prevArrow: d("prev-arrow")
338                ? prevButton
339                : '<button type="button" class="slick-prev"><i class="far fa-arrow-left"></i></button>',
340            nextArrow: d("next-arrow")
341                ? nextButton
342                : '<button type="button" class="slick-next"><i class="far fa-arrow-right"></i></button>',
343            rtl: $("html").attr("dir") == "rtl" ? true : false,
344            responsive: [
345                {
346                    breakpoint: 1600,
347                    settings: {
348                        arrows: d("xl-arrows") ? true : false,
349                        dots: d("xl-dots") ? true : false,
350                        slidesToShow: d("xl-slide-show")
351                            ? d("xl-slide-show")
352                            : d("slide-show"),
353                        centerMode: d("xl-center-mode") ? true : false,
354                        centerPadding: "0",
355                    },
356                },
357                {
358                    breakpoint: 1400,
359                    settings: {
360                        arrows: d("ml-arrows") ? true : false,
361                        dots: d("ml-dots") ? true : false,
362                        slidesToShow: d("ml-slide-show")
363                            ? d("ml-slide-show")
364                            : d("slide-show"),
365                        centerMode: d("ml-center-mode") ? true : false,
366                        centerPadding: 0,
367                    },
368                },
369                {
370                    breakpoint: 1200,
371                    settings: {
372                        arrows: d("lg-arrows") ? true : false,
373                        dots: d("lg-dots") ? true : false,
374                        slidesToShow: d("lg-slide-show")
375                            ? d("lg-slide-show")
376                            : d("slide-show"),
377                        centerMode: d("lg-center-mode")
378                            ? d("lg-center-mode")
379                            : false,
380                        centerPadding: 0,
381                    },
382                },
383                {
384                    breakpoint: 992,
385                    settings: {
386                        arrows: d("md-arrows") ? true : false,
387                        dots: d("md-dots") ? true : false,
388                        slidesToShow: d("md-slide-show")
389                            ? d("md-slide-show")
390                            : 1,
391                        centerMode: d("md-center-mode")
392                            ? d("md-center-mode")
393                            : false,
394                        centerPadding: 0,
395                    },
396                },
397                {
398                    breakpoint: 768,
399                    settings: {
400                        arrows: d("sm-arrows") ? true : false,
401                        dots: d("sm-dots") ? true : false,
402                        slidesToShow: d("sm-slide-show")
403                            ? d("sm-slide-show")
404                            : 1,
405                        centerMode: d("sm-center-mode")
406                            ? d("sm-center-mode")
407                            : false,
408                        centerPadding: 0,
409                    },
410                },
411                {
412                    breakpoint: 576,
413                    settings: {
414                        arrows: d("xs-arrows") ? true : false,
415                        dots: d("xs-dots") ? true : false,
416                        slidesToShow: d("xs-slide-show")
417                            ? d("xs-slide-show")
418                            : 1,
419                        centerMode: d("xs-center-mode")
420                            ? d("xs-center-mode")
421                            : false,
422                        centerPadding: 0,
423                    },
424                },
425                // You can unslick at a given breakpoint now by adding:
426                // settings: "unslick"
427                // instead of a settings object
428            ],
429        });
430  
431        $('a[data-slide]').on("click", function (e) {
432          e.preventDefault();
433          var slideno = $(this).data('slide');
434          $('.as-carousel').slick('slickGoTo', slideno - 1);
435      });
436    });
437  
438    /*-----------portfolio slider------------------  */
439    $('.portfolio-slider2').slick({
440      centerMode: true,
441      centerPadding: '326px',
442      slidesToShow: 3,
443      arrows: false,
444      responsive: [
445        {
446          breakpoint: 1600,
447          settings: {
448            centerPadding: '250px',
449          }
450        },
451        {
452          breakpoint: 1200,
453          settings: {
454            centerPadding: '180px',
455            slidesToShow: 2,
456          }
457        },
458        {
459          breakpoint: 992,
460          settings: {
461            centerPadding: '100px',
462            slidesToShow: 2,
463          }
464        },
465        {
466          breakpoint: 768,
467          settings: {
468            centerPadding: '150px',
469            slidesToShow: 1,
470          }
471        },
472        {
473          breakpoint: 576,
474          settings: {
475            centerPadding: '15px',
476            slidesToShow: 1,
477          }
478        },
479      ]
480    });
481    
482    /*----------- 08. Custom Animaiton For Slider ----------*/
483    $('[data-ani-duration]').each(function () {
484        var durationTime = $(this).data('ani-duration');
485        $(this).css('animation-duration', durationTime);
486    });
487    
488    $('[data-ani-delay]').each(function () {
489        var delayTime = $(this).data('ani-delay');
490        $(this).css('animation-delay', delayTime);
491    });
492    
493    $('[data-ani]').each(function () {
494        var animaionName = $(this).data('ani');
495        $(this).addClass(animaionName);
496        $('.slick-current [data-ani]').addClass('as-animated');
497    });
498    
499    $('.as-carousel').on('afterChange', function (event, slick, currentSlide, nextSlide) {
500        $(slick.$slides).find('[data-ani]').removeClass('as-animated');
501        $(slick.$slides[currentSlide]).find('[data-ani]').addClass('as-animated');
502    })
503  
504    /*----------- 10. Ajax Contact Form ----------*/
505    var form = ".ajax-contact";
506    var invalidCls = "is-invalid";
507    var $email = '[name="email"]';
508    var $validation =
509        '[name="name"],[name="email"],[name="subject"],[name="number"],[name="message"]'; // Must be use (,) without any space
510    var formMessages = $(".form-messages");
511  
512    function sendContact() {
513        var formData = $(form).serialize();
514        var valid;
515        valid = validateContact();
516        if (valid) {
517            jQuery
518                .ajax({
519                    url: $(form).attr("action"),
520                    data: formData,
521                    type: "POST",
522                })
523                .done(function (response) {
524                    // Make sure that the formMessages div has the 'success' class.
525                    formMessages.removeClass("error");
526                    formMessages.addClass("success");
527                    // Set the message text.
528                    formMessages.text(response);
529                    // Clear the form.
530                    $(
531                        form +
532                            ' input:not([type="submit"]),' +
533                            form +
534                            " textarea"
535                    ).val("");
536                })
537                .fail(function (data) {
538                    // Make sure that the formMessages div has the 'error' class.
539                    formMessages.removeClass("success");
540                    formMessages.addClass("error");
541                    // Set the message text.
542                    if (data.responseText !== "") {
543                        formMessages.html(data.responseText);
544                    } else {
545                        formMessages.html(
546                            "Oops! An error occured and your message could not be sent."
547                        );
548                    }
549                });
550        }
551    }
552  
553    function validateContact() {
554        var valid = true;
555        var formInput;
556  
557        function unvalid($validation) {
558            $validation = $validation.split(",");
559            for (var i = 0; i < $validation.length; i++) {
560                formInput = form + " " + $validation[i];
561                if (!$(formInput).val()) {
562                    $(formInput).addClass(invalidCls);
563                    valid = false;
564                } else {
565                    $(formInput).removeClass(invalidCls);
566                    valid = true;
567                }
568            }
569        }
570        unvalid($validation);
571  
572        if (
573            !$($email).val() ||
574            !$($email)
575                .val()
576                .match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)
577        ) {
578            $($email).addClass(invalidCls);
579            valid = false;
580        } else {
581            $($email).removeClass(invalidCls);
582            valid = true;
583        }
584        return valid;
585    }
586  
587    $(form).on("submit", function (element) {
588        element.preventDefault();
589        sendContact();
590    });
591  
592    /*---------- 11. Search Box Popup ----------*/
593    function popupSarchBox($searchBox, $searchOpen, $searchCls, $toggleCls) {
594        $($searchOpen).on("click", function (e) {
595            e.preventDefault();
596            $($searchBox).addClass($toggleCls);
597        });
598        $($searchBox).on("click", function (e) {
599            e.stopPropagation();
600            $($searchBox).removeClass($toggleCls);
601        });
602        $($searchBox)
603            .find("form")
604            .on("click", function (e) {
605                e.stopPropagation();
606                $($searchBox).addClass($toggleCls);
607            });
608        $($searchCls).on("click", function (e) {
609            e.preventDefault();
610            e.stopPropagation();
611            $($searchBox).removeClass($toggleCls);
612        });
613    }
614    popupSarchBox(
615        ".popup-search-box",
616        ".searchBoxToggler",
617        ".searchClose",
618        "show"
619    );
620  
621    /*---------- 12. Popup Sidemenu ----------*/
622    function popupSideMenu($sideMenu, $sideMunuOpen, $sideMenuCls, $toggleCls) {
623        // Sidebar Popup
624        $($sideMunuOpen).on('click', function (e) {
625        e.preventDefault();
626        $($sideMenu).addClass($toggleCls);
627        });
628        $($sideMenu).on('click', function (e) {
629        e.stopPropagation();
630        $($sideMenu).removeClass($toggleCls)
631        });
632        var sideMenuChild = $sideMenu + ' > div';
633        $(sideMenuChild).on('click', function (e) {
634        e.stopPropagation();
635        $($sideMenu).addClass($toggleCls)
636        });
637        $($sideMenuCls).on('click', function (e) {
638        e.preventDefault();
639        e.stopPropagation();
640        $($sideMenu).removeClass($toggleCls);
641        });
642    };
643    popupSideMenu('.sidemenu-wrapper', '.sideMenuToggler', '.sideMenuCls', 'show');
644  
645    /*---------- 12. Popup Sidecart ----------*/
646    function popupSideCart($sideCart, $sideMunuOpen, $sideCartCls, $toggleCls) {
647      // Sidebar Popup
648      $($sideMunuOpen).on('click', function (e) {
649      e.preventDefault();
650      $($sideCart).addClass($toggleCls);
651      });
652      $($sideCart).on('click', function (e) {
653      e.stopPropagation();
654      $($sideCart).removeClass($toggleCls)
655      });
656      $($sideCartCls).on('click', function (e) {
657      e.preventDefault();
658      e.stopPropagation();
659      $($sideCart).removeClass($toggleCls);
660      });
661  };
662  popupSideCart('.side-cart-wrapper', '.sideCartToggler', '.sideCartCls', 'show');
663  
664    /*----------- 13. Magnific Popup ----------*/
665    /* magnificPopup img view */
666    $(".popup-image").magnificPopup({
667        type: "image",
668        mainClass: 'mfp-zoom-in', 
669        removalDelay: 260,
670        gallery: {
671            enabled: true,
672        },
673    });
674  
675    /* magnificPopup video view */
676    $(".popup-video").magnificPopup({
677        type: "iframe",
678        mainClass: 'mfp-zoom-in', 
679        removalDelay: 260,
680    });
681  
682    /* magnificPopup video view */
683    $(".popup-content").magnificPopup({
684        type: "inline",
685        midClick: true,
686    });
687  
688    $(".popup-content").on("click", function () {
689        $(".slick-slider").slick("refresh");
690    });
691  
692    /*---------- 14. Section Position ----------*/
693    // Interger Converter
694    function convertInteger(str) {
695        return parseInt(str, 10);
696    }
697  
698    $.fn.sectionPosition = function (mainAttr, posAttr) {
699        $(this).each(function () {
700            var section = $(this);
701  
702            function setPosition() {
703                var sectionHeight = Math.floor(section.height() / 2), // Main Height of section
704                    posData = section.attr(mainAttr), // where to position
705                    posFor = section.attr(posAttr), // On Which section is for positioning
706                    topMark = "top-half", // Pos top
707                    bottomMark = "bottom-half", // Pos Bottom
708                    parentPT = convertInteger($(posFor).css("padding-top")), // Default Padding of  parent
709                    parentPB = convertInteger($(posFor).css("padding-bottom")); // Default Padding of  parent
710  
711                if (posData === topMark) {
712                    $(posFor).css(
713                        "padding-bottom",
714                        parentPB + sectionHeight + "px"
715                    );
716                    section.css("margin-top", "-" + sectionHeight + "px");
717                } else if (posData === bottomMark) {
718                    $(posFor).css(
719                        "padding-top",
720                        parentPT + sectionHeight + "px"
721                    );
722                    section.css("margin-bottom", "-" + sectionHeight + "px");
723                }
724            }
725            setPosition(); // Set Padding On Load
726        });
727    };
728  
729    var postionHandler = "[data-sec-pos]";
730    if ($(postionHandler).length) {
731        $(postionHandler).imagesLoaded(function () {
732            $(postionHandler).sectionPosition("data-sec-pos", "data-pos-for");
733        });
734    }
735  
736    /*----------- 15. Filter ----------*/
737    $(".filter-active").imagesLoaded(function () {
738        var $filter = ".filter-active",
739            $filterItem = ".filter-item",
740            $filterMenu = ".filter-menu-active";
741  
742        if ($($filter).length > 0) {
743            var $grid = $($filter).isotope({
744                itemSelector: $filterItem,
745                filter: "*",
746                masonry: {
747                    // use outer width of grid-sizer for columnWidth
748                    columnWidth: 1,
749                },
750            });
751  
752            // filter items on button click
753            $($filterMenu).on("click", "button", function () {
754                var filterValue = $(this).attr("data-filter");
755                $grid.isotope({
756                    filter: filterValue,
757                });
758            });
759  
760            // Menu Active Class
761            $($filterMenu).on("click", "button", function (event) {
762                event.preventDefault();
763                $(this).addClass("active");
764                $(this).siblings(".active").removeClass("active");
765            });
766        }
767    });
768  
769    $(".masonary-active").imagesLoaded(function () {
770        var $filter = ".masonary-active",
771            $filterItem = ".filter-item";
772  
773        if ($($filter).length > 0) {
774            $($filter).isotope({
775                itemSelector: $filterItem,
776                filter: "*",
777                masonry: {
778                    // use outer width of grid-sizer for columnWidth
779                    columnWidth: 1,
780                },
781            });
782        }
783    });
784  
785  
786    /*----------- 14. Filter ----------*/
787  
788      // Active specifix
789      $('.filter-active-cat1').imagesLoaded(function () {
790          var $filter = '.filter-active-cat1',
791          $filterItem = '.filter-item',
792          $filterMenu = '.filter-menu-active';
793  
794          if ($($filter).length > 0) {
795              var $grid = $($filter).isotope({
796                  itemSelector: $filterItem,
797                  filter: '.cat1',
798                  masonry: {
799                  // use outer width of grid-sizer for columnWidth
800                  columnWidth: 1
801                  }
802              });
803  
804              // filter items on button click
805              $($filterMenu).on('click', 'button', function () {
806                  var filterValue = $(this).attr('data-filter');
807                  $grid.isotope({
808                  filter: filterValue
809                  });
810              });
811  
812              // Menu Active Class 
813              $($filterMenu).on('click', 'button', function (event) {
814                  event.preventDefault();
815                  $(this).addClass('active');
816                  $(this).siblings('.active').removeClass('active');
817              });
818          };
819      });
820  
821    /*----------- 16. Counter Up ----------*/
822    $(".counter-number").counterUp({
823        delay: 10,
824        time: 1000,
825    });
826  
827    /*---------- 17. AS Tab ----------*/
828    $.fn.asTab = function (options) {
829        var opt = $.extend(
830            {
831                sliderTab: false,
832                tabButton: "button",
833            },
834            options
835        );
836  
837        $(this).each(function () {
838            var $menu = $(this);
839            var $button = $menu.find(opt.tabButton);
840  
841            // Append indicator
842            $menu.append('<span class="indicator"></span>');
843            var $line = $menu.find(".indicator");
844  
845            // On Click Button Class Remove and indecator postion set
846            $button.on("click", function (e) {
847                e.preventDefault();
848                var cBtn = $(this);
849                cBtn.addClass("active").siblings().removeClass("active");
850                if (opt.sliderTab) {
851                    $(slider).slick("slickGoTo", cBtn.data("slide-go-to"));
852                } else {
853                    linePos();
854                }
855            });
856  
857            // Work With slider
858            if (opt.sliderTab) {
859                var slider = $menu.data("asnavfor"); // select slider
860  
861                // Select All button and set attribute
862                var i = 0;
863                $button.each(function () {
864                    var slideBtn = $(this);
865                    slideBtn.attr("data-slide-go-to", i);
866                    i++;
867  
868                    // Active Slide On load > Actived Button
869                    if (slideBtn.hasClass("active")) {
870                        $(slider).slick(
871                            "slickGoTo",
872                            slideBtn.data("slide-go-to")
873                        );
874                    }
875  
876                    // Change Indicator On slide Change
877                    $(slider).on(
878                        "beforeChange",
879                        function (event, slick, currentSlide, nextSlide) {
880                            $menu
881                                .find(
882                                    opt.tabButton +
883                                        '[data-slide-go-to="' +
884                                        nextSlide +
885                                        '"]'
886                                )
887                                .addClass("active")
888                                .siblings()
889                                .removeClass("active");
890                            linePos();
891                        }
892                    );
893                });
894            }
895  
896            // Indicator Position
897            function linePos() {
898                var $btnActive = $menu.find(opt.tabButton + ".active"),
899                    $height = $btnActive.css("height"),
900                    $width = $btnActive.css("width"),
901                    $top = $btnActive.position().top + "px",
902                    $left = $btnActive.position().left + "px";
903  
904                $line.get(0).style.setProperty("--height-set", $height);
905                $line.get(0).style.setProperty("--width-set", $width);
906                $line.get(0).style.setProperty("--pos-y", $top);
907                $line.get(0).style.setProperty("--pos-x", $left);
908  
909                if (
910                    $($button).first().position().left ==
911                    $btnActive.position().left
912                ) {
913                    $line
914                        .addClass("start")
915                        .removeClass("center")
916                        .removeClass("end");
917                } else if (
918                    $($button).last().position().left ==
919                    $btnActive.position().left
920                ) {
921                    $line
922                        .addClass("end")
923                        .removeClass("center")
924                        .removeClass("start");
925                } else {
926                    $line
927                        .addClass("center")
928                        .removeClass("start")
929                        .removeClass("end");
930                }
931            }
932            linePos();
933        });
934    };
935  
936    // Call On Load
937    if ($(".portfolio-tab").length) {
938        $(".portfolio-tab").asTab({
939            sliderTab: true,
940            tabButton: ".tab-btn",
941        });
942    }
943  
944    if ($(".tab-menu1").length) {
945        $(".tab-menu1").asTab({
946            sliderTab: true,
947            tabButton: ".tab-btn",
948        });
949    }
950  
951  if ($(".hero-indicator").length) {
952      $(".hero-indicator").asTab({
953          sliderTab: true,
954          tabButton: ".indicatior-btn",
955      });
956  }
957  if ($(".testi-indicator").length) {
958      $(".testi-indicator").asTab({
959          sliderTab: true,
960          tabButton: ".testi-indicator-btn",
961      });
962  }
963  
964  
965    /*----------- 18. Shape Mockup ----------*/
966    $.fn.shapeMockup = function () {
967        var $shape = $(this);
968        $shape.each(function () {
969            var $currentShape = $(this),
970                shapeTop = $currentShape.data("top"),
971                shapeRight = $currentShape.data("right"),
972                shapeBottom = $currentShape.data("bottom"),
973                shapeLeft = $currentShape.data("left");
974            $currentShape
975                .css({
976                    top: shapeTop,
977                    right: shapeRight,
978                    bottom: shapeBottom,
979                    left: shapeLeft,
980                })
981                .removeAttr("data-top")
982                .removeAttr("data-right")
983                .removeAttr("data-bottom")
984                .removeAttr("data-left")
985                .parent()
986                .addClass("shape-mockup-wrap");
987        });
988    };
989  
990    if ($(".shape-mockup")) {
991        $(".shape-mockup").shapeMockup();
992    }
993  
994    /*----------- 19. Countdown ----------*/
995  
996    $.fn.countdown = function () {
997        $(this).each(function () {
998            var $counter = $(this),
999                countDownDate = new Date($counter.data("offer-date")).getTime(), // Set the date we're counting down toz
1000                exprireCls = "expired";
1001  
1002            // Finding Function
1003            function s$(element) {
1004                return $counter.find(element);
1005            }
1006  
1007            // Update the count down every 1 second
1008            var counter = setInterval(function () {
1009                // Get today's date and time
1010                var now = new Date().getTime();
1011  
1012                // Find the distance between now and the count down date
1013                var distance = countDownDate - now;
1014  
1015                // Time calculations for days, hours, minutes and seconds
1016                var days = Math.floor(distance / (1000 * 60 * 60 * 24));
1017                var hours = Math.floor(
1018                    (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
1019                );
1020                var minutes = Math.floor(
1021                    (distance % (1000 * 60 * 60)) / (1000 * 60)
1022                );
1023                var seconds = Math.floor((distance % (1000 * 60)) / 1000);
1024  
1025                // Check If value is lower than ten, so add zero before number
1026                days < 10 ? (days = "0" + days) : null;
1027                hours < 10 ? (hours = "0" + hours) : null;
1028                minutes < 10 ? (minutes = "0" + minutes) : null;
1029                seconds < 10 ? (seconds = "0" + seconds) : null;
1030  
1031                // If the count down is over, write some text
1032                if (distance < 0) {
1033                    clearInterval(counter);
1034                    $counter.addClass(exprireCls);
1035                    $counter.find(".message").css("display", "block");
1036                } else {
1037                    // Output the result in elements
1038                    s$(".day").html(days);
1039                    s$(".hour").html(hours);
1040                    s$(".minute").html(minutes);
1041                    s$(".seconds").html(seconds);
1042                }
1043            }, 1000);
1044        });
1045    };
1046  
1047    if ($(".counter-list").length) {
1048        $(".counter-list").countdown();
1049    }
1050  
1051    /*----------- 20. Progress Bar Animation ----------*/
1052    $('.progress-bar').waypoint(function() {
1053        $('.progress-bar').css({
1054        animation: "animate-positive 1.8s",
1055        opacity: "1"
1056        });
1057    }, { offset: '75%' });
1058  
1059    /*----------- 21. Price Slider ----------*/
1060    $(".price_slider").slider({
1061        range: true,
1062        min: 10,
1063        max: 100,
1064        values: [10, 75],
1065        slide: function (event, ui) {
1066          $(".from").text("$" + ui.values[0]);
1067          $(".to").text("$" + ui.values[1]);
1068        }
1069      });
1070      $(".from").text("$" + $(".price_slider").slider("values", 0));
1071      $(".to").text("$" + $(".price_slider").slider("values", 1));
1072  
1073    /*----------- 22. One Page Nav ----------*/
1074    function onePageNav(element) {
1075    if ($(element).length > 0) {
1076        $(element).each(function () {
1077        var link = $(this).find('a');
1078        $(this).find(link).each(function () {
1079            $(this).on('click', function () {
1080            var target = $(this.getAttribute('href'));
1081            if (target.length) {
1082                event.preventDefault();
1083                $('html, body').stop().animate({
1084                scrollTop: target.offset().top - 10
1085                }, 1000);
1086            };
1087  
1088            });
1089        });
1090        })
1091    }
1092    };
1093    onePageNav('.onepage-nav');
1094  
1095    //one page sticky menu  
1096    $(window).on('scroll', function(){
1097        if ($('.onepage-nav').length > 0) {
1098        if( $(window).scrollTop()> 0){
1099            $('.as-header .sticky-active').addClass('sticky');
1100            } else {
1101            $('.as-header .sticky-active').removeClass('sticky');
1102        }
1103        };
1104    });
1105  
1106    /*----------- 23. Indicator ----------*/
1107    // Indicator
1108    $.fn.indicator = function () {
1109        var $menu = $(this),
1110            $linkBtn = $menu.find("a"),
1111            $btn = $menu.find("button");
1112        // Append indicator
1113        $menu.append('<span class="indicator"></span>');
1114        var $line = $menu.find(".indicator");
1115        // Check which type button is Available
1116        if ($linkBtn.length) {
1117            var $currentBtn = $linkBtn;
1118        } else if ($btn.length) {
1119            var $currentBtn = $btn;
1120        }
1121        // On Click Button Class Remove
1122        $currentBtn.on("click", function (e) {
1123            e.preventDefault();
1124            $(this).addClass("active");
1125            $(this).siblings(".active").removeClass("active");
1126            linePos();
1127        });
1128        
1129        function linePos() {
1130            var $btnActive = $menu.find(".active"),
1131                $height = $btnActive.css("height"),
1132                $width = $btnActive.css("width"),
1133                $top = $btnActive.position().top + "px",
1134                $left = $btnActive.position().left + "px";
1135  
1136            $(window).on('resize', function () {
1137                $top = $btnActive.position().top + "px",
1138                $left = $btnActive.position().left + "px";
1139            });
1140  
1141            $line.get(0).style.setProperty("--height-set", $height);
1142            $line.get(0).style.setProperty("--width-set", $width);
1143            $line.get(0).style.setProperty("--pos-y", $top);
1144            $line.get(0).style.setProperty("--pos-x", $left);
1145  
1146        }
1147        linePos();
1148    };
1149  
1150    // Call On Load
1151    if ($(".indicator-active").length) {
1152        $(".indicator-active").indicator();
1153    }
1154  
1155  
1156    /*----------- 00. Woocommerce Toggle ----------*/
1157    // Ship To Different Address
1158    $("#ship-to-different-address-checkbox").on("change", function () {
1159        if ($(this).is(":checked")) {
1160            $("#ship-to-different-address")
1161                .next(".shipping_address")
1162                .slideDown();
1163        } else {
1164            $("#ship-to-different-address").next(".shipping_address").slideUp();
1165        }
1166    });
1167  
1168    // Login Toggle
1169    $(".woocommerce-form-login-toggle a").on("click", function (e) {
1170        e.preventDefault();
1171        $(".woocommerce-form-login").slideToggle();
1172    });
1173  
1174    // Coupon Toggle
1175    $(".woocommerce-form-coupon-toggle a").on("click", function (e) {
1176        e.preventDefault();
1177        $(".woocommerce-form-coupon").slideToggle();
1178    });
1179  
1180    // Woocommerce Shipping Method
1181    $(".shipping-calculator-button").on("click", function (e) {
1182        e.preventDefault();
1183        $(this).next(".shipping-calculator-form").slideToggle();
1184    });
1185  
1186    // Woocommerce Payment Toggle
1187    $('.wc_payment_methods input[type="radio"]:checked')
1188        .siblings(".payment_box")
1189        .show();
1190    $('.wc_payment_methods input[type="radio"]').each(function () {
1191        $(this).on("change", function () {
1192            $(".payment_box").slideUp();
1193            $(this).siblings(".payment_box").slideDown();
1194        });
1195    });
1196  
1197    // Woocommerce Rating Toggle
1198    $(".rating-select .stars a").each(function () {
1199        $(this).on("click", function (e) {
1200            e.preventDefault();
1201            $(this).siblings().removeClass("active");
1202            $(this).parent().parent().addClass("selected");
1203            $(this).addClass("active");
1204        });
1205    });
1206  
1207    // Quantity Plus Minus ---------------------------
1208  
1209    $(".quantity-plus").each(function () {
1210        $(this).on("click", function (e) {
1211            e.preventDefault();
1212            var $qty = $(this).siblings(".qty-input");
1213            var currentVal = parseInt($qty.val());
1214            if (!isNaN(currentVal)) {
1215                $qty.val(currentVal + 1);
1216            }
1217        });
1218    });
1219  
1220    $(".quantity-minus").each(function () {
1221        $(this).on("click", function (e) {
1222            e.preventDefault();
1223            var $qty = $(this).siblings(".qty-input");
1224            var currentVal = parseInt($qty.val());
1225            if (!isNaN(currentVal) && currentVal > 1) {
1226                $qty.val(currentVal - 1);
1227            }
1228        });
1229    });
1230  
1231  
1232    /*--------------------------------------------------
1233        select onput
1234    ---------------------------------------------------*/
1235    if ($('.single-select').length){
1236        $('.single-select').niceSelect();
1237    }
1238    
1239  //     window.addEventListener('contextmenu', function (e) {
1240  //       // do something here...
1241  //       e.preventDefault();
1242  //     }, false);
1243  
1244  
1245  //   /*----------- 00. Inspect Element Disable ----------*/
1246  //     document.onkeydown = function (e) {
1247  //       if (event.keyCode == 123) {
1248  //         return false;
1249  //       }
1250  //       if (e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
1251  //         return false;
1252  //       }
1253  //       if (e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) {
1254  //         return false;
1255  //       }
1256  //       if (e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
1257  //         return false;
1258  //       }
1259  //       if (e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
1260  //         return false;
1261  //       }
1262  //     }
1263    
1264  })(jQuery);

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.