1(function ($) { 2 'use strict'; 3 4 /* 5 |-------------------------------------------------------------------------- 6 | Template Name: Bizmax 7 | Author: PixcelsThemes 8 | Version: 1.0.0 9 |-------------------------------------------------------------------------- 10 |-------------------------------------------------------------------------- 11 | TABLE OF CONTENTS: 12 |-------------------------------------------------------------------------- 13 | 14 | 1. Preloader 15 | 2. Mobile Menu 16 | 3. Sticky Header 17 | 4. Dynamic Background 18 | 5. Slick Slider 19 | 6. Parallax Slider Swiper 20 | 7. Isotop Initialize 21 | 8. Review 22 | 9. Modal Video 23 | 10. Tabs 24 | 11. Accordian 25 | 12. Counter Animation 26 | 13. Ripple 27 | 14. Progress Bar 28 | 15. Dynamic contact form 29 | 30 */ 31 32 /*-------------------------------------------------------------- 33 Scripts initialization 34 --------------------------------------------------------------*/ 35 $.exists = function (selector) { 36 return $(selector).length > 0; 37 }; 38 39 $(window).on('load', function () { 40 $(window).trigger('scroll'); 41 $(window).trigger('resize'); 42 preloader(); 43 isotopInit(); 44 }); 45 46 $(function () { 47 $(window).trigger('resize'); 48 mainNav(); 49 stickyHeader(); 50 dynamicBackground(); 51 slickInit();
52 parallaxSwiperSlider(); 53 isotopInit(); 54 review(); 55 modalVideo(); 56 tabs(); 57 accordian(); 58 counterInit(); 59 rippleInit(); 60 progressBar(); 61 countDown(); 62 ecommerce(); 63 if ($.exists('.wow')) { 64 new WOW().init(); 65 } 66 if ($.exists('.player')) { 67 $('.player').YTPlayer(); 68 } 69 }); 70 71 $(window).on('scroll', function () { 72 counterInit(); 73 }); 74 75 /*-------------------------------------------------------------- 76 1. Preloader 77 --------------------------------------------------------------*/ 78 function preloader() { 79 $('.cs_preloader_in').fadeOut(); 80 $('.cs_preloader').delay(150).fadeOut('slow'); 81 } 82 83 /*-------------------------------------------------------------- 84 2. Mobile Menu 85 --------------------------------------------------------------*/ 86 function mainNav() { 87 $('.cs_nav').append('<span class="cs-munu_toggle"><span></span></span>'); 88 $('.menu-item-has-children').append( 89 '<span class="cs-munu_dropdown_toggle"></span>', 90 ); 91 $('.cs-munu_toggle').on('click', function () { 92 $(this) 93 .toggleClass('cs-toggle_active') 94 .siblings('.cs_nav_list') 95 .slideToggle(); 96 }); 97 $('.cs-munu_dropdown_toggle').on('click', function () { 98 $(this).toggleClass('active').siblings('ul').slideToggle(); 99 $(this).parent().toggleClass('active'); 100 }); 101 // Search Toggle 102 $('.cs_header_search_btn').on('click', function () { 103 $(this).parents('.cs_header_search_wrap').toggleClass('active'); 104 }); 105 } 106 107 /*-------------------------------------------------------------- 108 3. Sticky Header 109 --------------------------------------------------------------*/ 110 function stickyHeader() { 111 var $window = $(window); 112 var lastScrollTop = 0; 113 var $header = $('.cs_sticky_header'); 114 var headerHeight = $header.outerHeight() + 30; 115 116 $window.scroll(function () { 117 var windowTop = $window.scrollTop(); 118 119 if (windowTop >= headerHeight) { 120 $header.addClass('cs-gescout_sticky'); 121 } else { 122 $header.removeClass('cs-gescout_sticky'); 123 $header.removeClass('cs-gescout_show'); 124 } 125 126 if ($header.hasClass('cs-gescout_sticky')) { 127 if (windowTop < lastScrollTop) { 128 $header.addClass('cs-gescout_show'); 129 } else { 130 $header.removeClass('cs-gescout_show'); 131 } 132 } 133 134 lastScrollTop = windowTop; 135 }); 136 } 137 138 /*-------------------------------------------------------------- 139 4. Dynamic Background 140 --------------------------------------------------------------*/ 141 function dynamicBackground() { 142 $('[data-src]').each(function () { 143 var src = $(this).attr('data-src'); 144 $(this).css({ 145 'background-image': 'url(' + src + ')', 146 }); 147 }); 148 } 149 150 /*-------------------------------------------------------------- 151 5. Slick Slider 152 --------------------------------------------------------------*/ 153 function slickInit() { 154 if ($.exists('.cs_hero_slider')) { 155 $('.cs_hero_slider').each(function () { 156 var $slickActive = $(this).find('.cs_slider_activate'); 157 $slickActive.slick({ 158 slidesToShow: 1, 159 infinite: true, 160 slidesToScroll: 1, 161 autoplay: false, 162 fade: true, 163 autoplaySpeed: 7000, 164 speed: 500, 165 cssEase: 'ease-in-out', 166 prevArrow: $(this).find('.cs_slider_prev'), 167 nextArrow: $(this).find('.cs_slider_next'), 168 }); 169 }); 170 } 171 if ($.exists('.cs_sidebar_slider')) { 172 $('.cs_sidebar_slider').each(function () { 173 var $slickActive = $(this).find('.cs_slider_activate'); 174 $slickActive.slick({ 175 slidesToShow: 1, 176 infinite: true, 177 slidesToScroll: 1, 178 autoplay: false, 179 autoplaySpeed: 7000, 180 speed: 500, 181 cssEase: 'ease-in-out', 182 prevArrow: $(this).find('.cs_slider_prev'), 183 nextArrow: $(this).find('.cs_slider_next'), 184 }); 185 }); 186 } 187 if ($.exists('.cs_project_slider')) { 188 $('.cs_project_slider').each(function () { 189 var $slickActive = $(this).find('.cs_slider_activate'); 190 $slickActive.slick({ 191 slidesToShow: 4, 192 infinite: true, 193 slidesToScroll: 1, 194 autoplay: false, 195 autoplaySpeed: 2000,
196 prevArrow: $(this).find('.cs_slider_prev'), 197 nextArrow: $(this).find('.cs_slider_next'), 198 responsive: [ 199 { 200 breakpoint: 1350, 201 settings: { 202 slidesToShow: 3, 203 }, 204 }, 205 { 206 breakpoint: 991, 207 settings: { 208 slidesToShow: 2, 209 }, 210 }, 211 { 212 breakpoint: 575, 213 settings: { 214 slidesToShow: 1, 215 }, 216 }, 217 ], 218 }); 219 }); 220 } 221 if ($.exists('.cs_project_slider_2')) { 222 $('.cs_project_slider_2').each(function () { 223 var $slickActive = $(this).find('.cs_slider_activate'); 224 $slickActive.slick({ 225 slidesToShow: 3, 226 infinite: true, 227 slidesToScroll: 1, 228 autoplay: false, 229 autoplaySpeed: 2000, 230 prevArrow: $(this).find('.cs_slider_prev'), 231 nextArrow: $(this).find('.cs_slider_next'), 232 responsive: [ 233 { 234 breakpoint: 1350, 235 settings: { 236 slidesToShow: 3, 237 }, 238 }, 239 { 240 breakpoint: 991, 241 settings: { 242 slidesToShow: 2, 243 }, 244 }, 245 { 246 breakpoint: 767, 247 settings: { 248 slidesToShow: 1, 249 }, 250 }, 251 ], 252 }); 253 }); 254 } 255 // Testimonial Slider One 256 if ($.exists('.cs_testimonial_slider')) { 257 $('.cs_testimonial_slider').each(function () { 258 var $slickActive = $(this).find('.cs_slider_activate'); 259 $slickActive.slick({ 260 slidesToShow: 4, 261 infinite: true, 262 slidesToScroll: 1, 263 variableWidth: true, 264 autoplay: true, 265 autoplaySpeed: 3000, 266 prevArrow: $(this).find('.cs_slider_prev'), 267 nextArrow: $(this).find('.cs_slider_next'), 268 }); 269 }); 270 } 271 if ($.exists('.cs_testimonial_slider_2')) { 272 $('.cs_testimonial_slider_2').each(function () { 273 var $slickActive = $(this).find('.cs_slider_activate'); 274 $slickActive.slick({ 275 slidesToShow: 4, 276 infinite: true, 277 slidesToScroll: 1, 278 autoplay: false, 279 autoplaySpeed: 2000, 280 prevArrow: $(this).find('.cs_slider_prev'), 281 nextArrow: $(this).find('.cs_slider_next'), 282 responsive: [ 283 { 284 breakpoint: 1350, 285 settings: { 286 slidesToShow: 3, 287 }, 288 }, 289 { 290 breakpoint: 991, 291 settings: { 292 slidesToShow: 2, 293 }, 294 }, 295 { 296 breakpoint: 575, 297 settings: { 298 slidesToShow: 1, 299 }, 300 }, 301 ], 302 }); 303 }); 304 } 305 306 // Service Slider One 307 if ($.exists('.cs_service_slider')) { 308 $('.cs_service_slider').each(function () { 309 var $slickActive = $(this).find('.cs_slider_activate'); 310 $slickActive.slick({ 311 slidesToShow: 4, 312 infinite: true, 313 slidesToScroll: 1, 314 variableWidth: true, 315 autoplay: false, 316 autoplaySpeed: 3000, 317 prevArrow: $(this).find('.cs_slider_prev'), 318 nextArrow: $(this).find('.cs_slider_next'), 319 }); 320 }); 321 } 322 if ($.exists('.cs_service_slider_2')) { 323 $('.cs_service_slider_2').each(function () { 324 var $slickActive = $(this).find('.cs_slider_activate'); 325 $slickActive.slick({ 326 slidesToShow: 4, 327 infinite: true, 328 slidesToScroll: 1, 329 autoplay: false, 330 autoplaySpeed: 2000, 331 prevArrow: $(this).find('.cs_slider_prev'), 332 nextArrow: $(this).find('.cs_slider_next'), 333 responsive: [ 334 { 335 breakpoint: 1350, 336 settings: { 337 slidesToShow: 3, 338 }, 339 }, 340 { 341 breakpoint: 991, 342 settings: { 343 slidesToShow: 2, 344 }, 345 }, 346 { 347 breakpoint: 575, 348 settings: { 349 slidesToShow: 1, 350 }, 351 }, 352 ], 353 }); 354 }); 355 } 356 if ($.exists('.cs_product_slider')) { 357 $('.cs_product_slider').each(function () { 358 var $slickActive = $(this).find('.cs_slider_activate'); 359 $slickActive.slick({ 360 slidesToShow: 4, 361 infinite: true, 362 slidesToScroll: 1, 363 autoplay: false, 364 autoplaySpeed: 2000,
365 dots: true, 366 prevArrow: $(this).find('.cs_slider_prev'), 367 nextArrow: $(this).find('.cs_slider_next'), 368 responsive: [ 369 { 370 breakpoint: 1350, 371 settings: { 372 slidesToShow: 3, 373 }, 374 }, 375 { 376 breakpoint: 991, 377 settings: { 378 slidesToShow: 2, 379 }, 380 }, 381 { 382 breakpoint: 480, 383 settings: { 384 slidesToShow: 1, 385 }, 386 }, 387 ], 388 }); 389 }); 390 } 391 392 // Testimonial Slider Two 393 $('.cs_testimonial_thumb').slick({ 394 slidesToShow: 1, 395 slidesToScroll: 1, 396 arrows: false, 397 asNavFor: '.cs_testimonial_nav', 398 }); 399 if ($.exists('.cs_testimonial_nav-active')) { 400 $('.cs_testimonial_nav-active').each(function () { 401 var $slickActive = $(this).find('.cs_testimonial_nav'); 402 $slickActive.slick({ 403 slidesToShow: 2, 404 slidesToScroll: 1, 405 asNavFor: '.cs_testimonial_thumb', 406 focusOnSelect: true, 407 prevArrow: $(this).find('.cs_slider_prev'), 408 nextArrow: $(this).find('.cs_slider_next'), 409 }); 410 }); 411 } 412 } 413 414 /*-------------------------------------------------------------- 415 6. Parallax Slider Swiper 416 --------------------------------------------------------------*/ 417 function parallaxSwiperSlider() { 418 if ($.exists('.cs_parallax_slider')) { 419 // Params 420 let mainSliderSelector = '.cs_parallax_slider', 421 interleaveOffset = 0.5; 422 // Main Slider 423 let mainSliderOptions = { 424 loop: true, 425 speed: 1000, 426 autoplay: false, 427 loopAdditionalSlides: 10, 428 grabCursor: true, 429 watchSlidesProgress: true, 430 // mousewheel: true, 431 navigation: { 432 nextEl: '.cs_swiper_button_next', 433 prevEl: '.cs_swiper_button_prev', 434 }, 435 pagination: false, 436 on: { 437 init: function () { 438 this.autoplay.stop(); 439 }, 440 imagesReady: function () { 441 this.el.classList.remove('loading'); 442 this.autoplay.start(); 443 }, 444 progress: function (swiper) { 445 for (let i = 0; i < swiper.slides.length; i++) { 446 let slideProgress = swiper.slides[i].progress, 447 innerOffset = swiper.width * interleaveOffset, 448 innerTranslate = slideProgress * innerOffset; 449 450 swiper.slides[i].querySelector( 451 '.cs_swiper_parallax_bg', 452 ).style.transform = 'translateX(' + innerTranslate + 'px)'; 453 } 454 }, 455 touchStart: function (swiper) { 456 for (let i = 0; i < swiper.slides.length; i++) { 457 swiper.slides[i].style.transition = ''; 458 } 459 }, 460 setTransition: function (swiper, transition) { 461 for (let i = 0; i < swiper.slides.length; i++) { 462 swiper.slides[i].style.transition = transition + 'ms'; 463 swiper.slides[i].querySelector( 464 '.cs_swiper_parallax_bg', 465 ).style.transition = transition + 'ms'; 466 } 467 }, 468 }, 469 }; 470 let mainSlider = new Swiper(mainSliderSelector, mainSliderOptions); 471 } 472 } 473 474 /*-------------------------------------------------------------- 475 7. Isotop Initialize 476 --------------------------------------------------------------*/ 477 function isotopInit() { 478 if ($.exists('.cs_isotop')) { 479 $('.cs_isotop').isotope({ 480 itemSelector: '.cs_isotop_item', 481 transitionDuration: '0.60s', 482 percentPosition: true, 483 masonry: { 484 columnWidth: '.cs_grid_sizer', 485 }, 486 }); 487 /* Active Class of Portfolio*/ 488 $('.cs_isotop_filter li').on('click', function (event) { 489 $(this).siblings('.active').removeClass('active'); 490 $(this).addClass('active'); 491 event.preventDefault(); 492 }); 493 /*=== Portfolio filtering ===*/ 494 $('.cs_isotop_filter').on('click', 'a', function () { 495 var filterElement = $(this).attr('data-filter'); 496 $('.cs_isotop').isotope({ 497 filter: filterElement, 498 }); 499 }); 500 } 501 } 502 503 /*-------------------------------------------------------------- 504 8. Review 505 --------------------------------------------------------------*/ 506 function review() { 507 $('.cs_rating').each(function () { 508 var review = $(this).data('rating'); 509 var reviewVal = review * 20 + '%'; 510 $(this).find('.cs_rating_percentage').css('width', reviewVal); 511 }); 512 } 513 514 /*--------------------------------------------------------------
515 9. Modal Video 516 --------------------------------------------------------------*/ 517 function modalVideo() { 518 if ($.exists('.cs_video_open')) { 519 $('body').append(` 520 <div class="cs_video_popup"> 521 <div class="cs_video_popup-overlay"></div> 522 <div class="cs_video_popup-content"> 523 <div class="cs_video_popup-layer"></div> 524 <div class="cs_video_popup-container"> 525 <div class="cs_video_popup-align"> 526 <div class="embed-responsive embed-responsive-16by9"> 527 <iframe class="embed-responsive-item" src="about:blank"></iframe> 528 </div> 529 </div> 530 <div class="cs_video_popup-close"></div> 531 </div> 532 </div> 533 </div> 534 `); 535 $(document).on('click', '.cs_video_open', function (e) { 536 e.preventDefault(); 537 var video = $(this).attr('href'); 538 539 $('.cs_video_popup-container iframe').attr('src', `${video}`); 540 541 $('.cs_video_popup').addClass('active'); 542 }); 543 $('.cs_video_popup-close, .cs_video_popup-layer').on( 544 'click', 545 function (e) { 546 $('.cs_video_popup').removeClass('active'); 547 $('html').removeClass('overflow-hidden'); 548 $('.cs_video_popup-container iframe').attr('src', 'about:blank'); 549 e.preventDefault(); 550 }, 551 ); 552 } 553 } 554 555 /*-------------------------------------------------------------- 556 10. Tabs 557 --------------------------------------------------------------*/ 558 function tabs() { 559 $('.cs_tabs .cs_tab_links a').on('click', function (e) { 560 var currentAttrValue = $(this).attr('href'); 561 $('.cs_tabs ' + currentAttrValue) 562 .fadeIn(400) 563 .siblings() 564 .hide(); 565 $(this).parents('li').addClass('active').siblings().removeClass('active'); 566 e.preventDefault(); 567 }); 568 } 569 570 /*-------------------------------------------------------------- 571 11. Accordian 572 --------------------------------------------------------------*/ 573 function accordian() { 574 $('.cs_accordian').children('.cs_accordian_body').hide(); 575 $('.cs_accordian.active').children('.cs_accordian_body').show(); 576 $('.cs_accordian_head').on('click', function () { 577 $(this) 578 .parent('.cs_accordian') 579 .siblings() 580 .children('.cs_accordian_body') 581 .slideUp(250); 582 $(this).siblings().slideDown(250); 583 $(this) 584 .parent() 585 .parent() 586 .siblings() 587 .find('.cs_accordian_body') 588 .slideUp(250); 589 /* Accordian Active Class */ 590 $(this).parents('.cs_accordian').addClass('active'); 591 $(this).parent('.cs_accordian').siblings().removeClass('active'); 592 }); 593 } 594 595 /*-------------------------------------------------------------- 596 12. Counter Animation 597 --------------------------------------------------------------*/ 598 function counterInit() { 599 if ($.exists('.odometer')) { 600 $(window).on('scroll', function () { 601 function winScrollPosition() { 602 var scrollPos = $(window).scrollTop(), 603 winHeight = $(window).height(); 604 var scrollPosition = Math.round(scrollPos + winHeight / 1.2); 605 return scrollPosition; 606 } 607 608 $('.odometer').each(function () { 609 var elemOffset = $(this).offset().top; 610 if (elemOffset < winScrollPosition()) { 611 $(this).html($(this).data('count-to')); 612 } 613 }); 614 }); 615 } 616 } 617 618 /*-------------------------------------------------------------- 619 13. Ripple 620 --------------------------------------------------------------*/ 621 function rippleInit() { 622 if ($.exists('.cs_ripple_version')) { 623 $('.cs_ripple_version').each(function () { 624 $('.cs_ripple_version').ripples({ 625 resolution: 512, 626 dropRadius: 20, 627 perturbance: 0.04, 628 }); 629 }); 630 } 631 } 632 633 /*-------------------------------------------------------------- 634 14. Progress Bar 635 --------------------------------------------------------------*/ 636 function progressBar() { 637 $('.cs_progress').each(function () { 638 var progressPercentage = $(this).data('progress') + '%'; 639 $(this).find('.cs_progress_in').css('width', progressPercentage); 640 }); 641 } 642 643 /*-------------------------------------------------------------- 644 19. CountDown 645 --------------------------------------------------------------*/ 646 function countDown() { 647 if ($.exists('.cs_countdown')) { 648 $('.cs_countdown').each(function () { 649 var _this = this; 650 var el = $(_this).data('countdate'); 651 var countDownDate = new Date(el).getTime(); 652 var x = setInterval(function () { 653 var now = new Date().getTime(); 654 var distance = countDownDate - now; 655 var days = Math.floor(distance / (1000 * 60 * 60 * 24)); 656 var hours = Math.floor( 657 (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60), 658 ); 659 var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); 660 var seconds = Math.floor((distance % (1000 * 60)) / 1000); 661 $(_this).find('#cs_count_days').html(days); 662 $(_this).find('#cs_count_hours').html(hours); 663 $(_this).find('#cs_count_minutes').html(minutes); 664 $(_this).find('#cs_count_seconds').html(seconds); 665 666 if (distance < 0) { 667 clearInterval(x); 668 $(_this).html("<div class='cs_token_expired'>TOKEN EXPIRED<div>"); 669 } 670 }, 1000); 671 }); 672 } 673 } 674 675 /*-------------------------------------------------------------- 676 15. Dynamic contact form 677 --------------------------------------------------------------*/ 678 if ($.exists('#cs-form')) { 679 const form = document.getElementById('cs-form'); 680 const result = document.getElementById('cs-result'); 681 682 form.addEventListener('submit', function (e) { 683 const formData = new FormData(form); 684 e.preventDefault(); 685 var object = {}; 686 formData.forEach((value, key) => { 687 object[key] = value; 688 }); 689 var json = JSON.stringify(object); 690 result.innerHTML = 'Please wait...'; 691 692 fetch('https://api.web3forms.com/submit', { 693 method: 'POST', 694 headers: { 695 'Content-Type': 'application/json', 696 Accept: 'application/json', 697 }, 698 body: json, 699 }) 700 .then(async response => { 701 let json = await response.json(); 702 if (response.status == 200) { 703 result.innerHTML = json.message; 704 } else { 705 console.log(response); 706 result.innerHTML = json.message; 707 } 708 }) 709 .catch(error => { 710 console.log(error); 711 result.innerHTML = 'Something went wrong!'; 712 }) 713 .then(function () { 714 form.reset(); 715 setTimeout(() => { 716 result.style.display = 'none'; 717 }, 5000); 718 }); 719 }); 720 } 721 /*-------------------------------------------------------------- 722 21. Dynamic contact form 723 --------------------------------------------------------------*/ 724 function ecommerce() { 725 // Star Rating Input 726 $('.cs_input_rating i').on('click', function () { 727 $(this).siblings().removeClass('fa-solid'); 728 $(this).addClass('fa-solid').prevAll().addClass('fa-solid'); 729 }); 730 // Product Single Slider 731 $('.cs_single_product_thumb').slick({ 732 slidesToShow: 1, 733 slidesToScroll: 1,
734 arrows: false, 735 asNavFor: '.cs_single_product_nav', 736 }); 737 738 $('.cs_single_product_nav').slick({ 739 slidesToShow: 4, 740 slidesToScroll: 1, 741 asNavFor: '.cs_single_product_thumb', 742 focusOnSelect: true, 743 arrows: false, 744 }); 745 // Check All 746 $('#checkAll').change(function () { 747 var isChecked = $(this).prop('checked'); 748 $('table input[type="checkbox"]').prop('checked', isChecked); 749 }); 750 // Range Slider 751 if ($.exists('#slider-range')) { 752 $('#slider-range').slider({ 753 range: true, 754 min: 0, 755 max: 1000, 756 values: [100, 600], 757 slide: function (event, ui) { 758 $('#amount').val('Price: $' + ui.values[0] + ' - $' + ui.values[1]); 759 }, 760 }); 761 } 762 if ($.exists('#amount')) { 763 $('#amount').val( 764 'Price: $' + 765 $('#slider-range').slider('values', 0) + 766 ' - $' + 767 $('#slider-range').slider('values', 1), 768 ); 769 } 770 // Counter 771 $('.cs_increment').click(function () { 772 var countElement = $(this).siblings('.cs_quantity_input'); 773 var count = parseInt(countElement.text()); 774 count++; 775 countElement.text(count); 776 }); 777 778 $('.cs_decrement').click(function () { 779 var countElement = $(this).siblings('.cs_quantity_input'); 780 var count = parseInt(countElement.text()); 781 if (count > 0) { 782 count--; 783 countElement.text(count); 784 } 785 }); 786 } 787})(jQuery); // End of use strict
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.