(function ($) { 'use strict'; /* |-------------------------------------------------------------------------- | Template Name: Cripar | Author: ThemeServices | Version: 1.0.0 |-------------------------------------------------------------------------- |-------------------------------------------------------------------------- | TABLE OF CONTENTS: |-------------------------------------------------------------------------- | | 1. Preloader | 2. Mobile Menu | 3. Sticky Header | 4. Dynamic Background | 5. Slick Slider | 6. Modal Video | 7. Accordian | 8. Tabs | 9. Progress Bar | 10. Review | 11. Ripple | 12. Hover To Active | 13. Counter Animation | 14. Before After | 15. Scroll Top | */ /*-------------------------------------------------------------- Scripts initialization --------------------------------------------------------------*/ $.exists = function (selector) { return $(selector).length > 0; }; $(window).on('load', function () { preloader(); }); $(function () { mainNav(); stickyHeader(); dynamicBackground(); slickInit(); modalVideo(); accordian(); tabs(); progressBar(); review(); rippleInit(); hoverActive(); counterInit(); beforeAfterSlider(); scrollUp(); if ($.exists('.wow')) { new WOW().init(); } if ($.exists('.player')) { $('.player').YTPlayer(); } }); $(window).on('scroll', function () { showScrollUp(); }); /*-------------------------------------------------------------- 1. Preloader --------------------------------------------------------------*/ function preloader() { setTimeout(function () { $('#preloader').addClass('hide'); }, 1000); } /*-------------------------------------------------------------- 2. Mobile Menu --------------------------------------------------------------*/ function mainNav() { $('.cs_nav').append(''); $('.menu-item-has-children').append( '', ); $('.cs_menu_toggle').on('click', function () { $(this) .toggleClass('cs_toggle_active') .siblings('.cs_nav_list_wrap') .toggleClass('cs_active'); }); $('.cs_menu_toggle') .parents('body') .find('.cs_side_header') .addClass('cs_has_main_nav'); $('.cs_menu_toggle') .parents('body') .find('.cs_toolbox') .addClass('cs_has_main_nav'); $('.cs_menu_dropdown_toggle').on('click', function () { $(this).toggleClass('active').siblings('ul').slideToggle(); $(this).parent().toggleClass('active'); }); /* Search Toggle */ $('.cs_search_tobble_btn').on('click', function () { $('.cs_header_search_wrap').toggleClass('active'); }); } /*-------------------------------------------------------------- 3. Sticky Header --------------------------------------------------------------*/ function stickyHeader() { var $window = $(window); var lastScrollTop = 0; var $header = $('.cs_sticky_header'); var headerHeight = $header.outerHeight() + 20; $window.scroll(function () { var windowTop = $window.scrollTop(); if (windowTop >= headerHeight) { $header.addClass('cs_gescout_sticky'); } else { $header.removeClass('cs_gescout_sticky'); $header.removeClass('cs_gescout_show'); } if ($header.hasClass('cs_gescout_sticky')) { if (windowTop < lastScrollTop) { $header.addClass('cs_gescout_show'); } else { $header.removeClass('cs_gescout_show'); } } lastScrollTop = windowTop; }); } /*-------------------------------------------------------------- 4. Dynamic Background --------------------------------------------------------------*/ function dynamicBackground() { $('[data-src]').each(function () { var src = $(this).attr('data-src'); $(this).css({ 'background-image': 'url(' + src + ')', }); }); } /*-------------------------------------------------------------- 5. Slick Slider --------------------------------------------------------------*/ function slickInit() { if ($.exists('.cs_slider')) { $('.cs_slider').each(function () { // Slick Variable var $ts = $(this).find('.cs_slider_container'); var $slickActive = $(this).find('.cs_slider_wrapper'); // Auto Play var autoPlayVar = parseInt($ts.attr('data-autoplay'), 10); // Auto Play Time Out var autoplaySpdVar = 3000; if (autoPlayVar > 1) { autoplaySpdVar = autoPlayVar; autoPlayVar = 1; } // Slide Change Speed var speedVar = parseInt($ts.attr('data-speed'), 10); // Slider Loop var loopVar = Boolean(parseInt($ts.attr('data-loop'), 10)); // Slider Center var centerVar = Boolean(parseInt($ts.attr('data-center'), 10)); // Variable Width var variableWidthVar = Boolean( parseInt($ts.attr('data-variable-width'), 10), ); // Pagination var paginaiton = $(this) .find('.cs_pagination') .hasClass('cs_pagination'); // Slide Per View var slidesPerView = $ts.attr('data-slides-per-view'); if (slidesPerView == 1) { slidesPerView = 1; } if (slidesPerView == 'responsive') { var slidesPerView = parseInt($ts.attr('data-add-slides'), 10); var lgPoint = parseInt($ts.attr('data-lg-slides'), 10); var mdPoint = parseInt($ts.attr('data-md-slides'), 10); var smPoint = parseInt($ts.attr('data-sm-slides'), 10); var xsPoing = parseInt($ts.attr('data-xs-slides'), 10); } // Fade Slider var fadeVar = parseInt($($ts).attr('data-fade-slide')); fadeVar === 1 ? (fadeVar = true) : (fadeVar = false); // Slick Active Code $slickActive.slick({ autoplay: autoPlayVar, dots: paginaiton, centerPadding: '28%', speed: speedVar, infinite: loopVar, autoplaySpeed: autoplaySpdVar, centerMode: centerVar, fade: fadeVar, prevArrow: $(this).find('.cs_left_arrow'), nextArrow: $(this).find('.cs_right_arrow'), appendDots: $(this).find('.cs_pagination'), slidesToShow: slidesPerView, variableWidth: variableWidthVar, swipeToSlide: true, responsive: [ { breakpoint: 1200, settings: { slidesToShow: lgPoint, }, }, { breakpoint: 992, settings: { slidesToShow: mdPoint, }, }, { breakpoint: 768, settings: { slidesToShow: smPoint, }, }, { breakpoint: 576, settings: { slidesToShow: xsPoing, }, }, ], }); }); } } /*-------------------------------------------------------------- 6. Modal Video --------------------------------------------------------------*/ function modalVideo() { if ($.exists('.cs_video_open')) { $('body').append(`
`); $(document).on('click', '.cs_video_open', function (e) { e.preventDefault(); var video = $(this).attr('href'); $('.cs_video_popup-container iframe').attr('src', `${video}`); $('.cs_video_popup').addClass('active'); }); $('.cs_video_popup-close, .cs_video_popup-layer').on( 'click', function (e) { $('.cs_video_popup').removeClass('active'); $('html').removeClass('overflow-hidden'); $('.cs_video_popup-container iframe').attr('src', 'about:blank'); e.preventDefault(); }, ); } } /*-------------------------------------------------------------- 7. Accordian --------------------------------------------------------------*/ function accordian() { $('.cs_accordian').children('.cs_accordian_body').hide(); $('.cs_accordian.active').children('.cs_accordian_body').show(); $('.cs_accordian_head').on('click', function () { $(this) .parent('.cs_accordian') .siblings() .children('.cs_accordian_body') .slideUp(250); $(this).siblings().slideDown(250); $(this) .parent() .parent() .siblings() .find('.cs_accordian_body') .slideUp(250); /* Accordian Active Class */ $(this).parents('.cs_accordian').addClass('active'); $(this).parent('.cs_accordian').siblings().removeClass('active'); }); } /*-------------------------------------------------------------- 8. Tabs --------------------------------------------------------------*/ function tabs() { $('.cs_tabs .cs_tab_links a').on('click', function (e) { var currentAttrValue = $(this).attr('href'); $('.cs_tabs ' + currentAttrValue) .fadeIn(400) .siblings() .hide(); $(this).parents('li').addClass('active').siblings().removeClass('active'); e.preventDefault(); }); } /*-------------------------------------------------------------- 9. Progress Bar --------------------------------------------------------------*/ function progressBar() { $('.cs_progress').each(function () { var progressPercentage = $(this).data('progress') + '%'; $(this).find('.cs_progress_in').css('width', progressPercentage); }); } /*-------------------------------------------------------------- 10. Review --------------------------------------------------------------*/ function review() { $('.cs_rating').each(function () { var review = $(this).data('rating'); var reviewVal = review * 20 + '%'; $(this).find('.cs_rating_percentage').css('width', reviewVal); }); } /*-------------------------------------------------------------- 11. Ripple --------------------------------------------------------------*/ function rippleInit() { if ($.exists('.cs_ripple_activate')) { $('.cs_ripple_activate').each(function () { $('.cs_ripple_activate').ripples({ resolution: 512, dropRadius: 20, perturbance: 0.04, }); }); } } /*-------------------------------------------------------------- 12. Hover To Active --------------------------------------------------------------*/ function hoverActive() { $('.cs_hover_active').hover(function () { $(this).addClass('active').siblings().removeClass('active'); }); } /*-------------------------------------------------------------- 13. Counter Animation --------------------------------------------------------------*/ function counterInit() { if ($.exists('.odometer')) { $(window).on('scroll', function () { function winScrollPosition() { var scrollPos = $(window).scrollTop(), winHeight = $(window).height(); var scrollPosition = Math.round(scrollPos + winHeight / 1.2); return scrollPosition; } $('.odometer').each(function () { var elemOffset = $(this).offset().top; if (elemOffset < winScrollPosition()) { $(this).html($(this).data('count-to')); } }); }); } } /*-------------------------------------------------------------- 14. Before After Slider --------------------------------------------------------------*/ function beforeAfterSlider() { if ($.exists('.cs_before_after')) { var supportsTouch = 'ontouchstart' in window || navigator.msMaxTouchPoints; $('.cs_before_after').each(function () { var $container = $(this), $before = $container.find('.cs_before'), $after = $container.find('.cs_after'), $handle = $container.find('.cs_handle_before_after'); var maxX = $container.outerWidth(), offsetX = $container.offset().left, startX = 0; var touchstart, touchmove, touchend; var mousemove = function (e) { e.preventDefault(); var curX = e.clientX - offsetX, diff = startX - curX, curPos = (curX / maxX) * 100; if (curPos > 100) { curPos = 100; } if (curPos < 0) { curPos = 0; } $before.css({ right: 100 - curPos + '%' }); $handle.css({ left: curPos + '%' }); }; var mouseup = function (e) { e.preventDefault(); if (supportsTouch) { $(document).off('touchmove', touchmove); $(document).off('touchend', touchend); } else { $(document).off('mousemove', mousemove); $(document).off('mouseup', mouseup); } }; var mousedown = function (e) { e.preventDefault(); startX = e.clientX - offsetX; if (supportsTouch) { $(document).on('touchmove', touchmove); $(document).on('touchend', touchend); } else { $(document).on('mousemove', mousemove); $(document).on('mouseup', mouseup); } }; touchstart = function (e) { console.log(e); mousedown({ preventDefault: e.preventDefault, clientX: e.originalEvent.changedTouches[0].pageX, }); }; touchmove = function (e) { mousemove({ preventDefault: e.preventDefault, clientX: e.originalEvent.changedTouches[0].pageX, }); }; touchend = function (e) { mouseup({ preventDefault: e.preventDefault, clientX: e.originalEvent.changedTouches[0].pageX, }); }; if (supportsTouch) { $handle.on('touchstart', touchstart); } else { $handle.on('mousedown', mousedown); } }); } } /*-------------------------------------------------------------- 15. Scroll Top --------------------------------------------------------------*/ function scrollUp() { $('.cs_scroll_top_btn').on('click', function (e) { e.preventDefault(); $('html,body').animate( { scrollTop: 0, }, 0, ); }); } /* For Scroll Up */ function showScrollUp() { let scroll = $(window).scrollTop(); if (scroll >= 350) { $('.cs_scroll_top_btn').addClass('active'); } else { $('.cs_scroll_top_btn').removeClass('active'); } } })(jQuery); // End of use strict