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.