/*----------------------------------------------------------------------------------- Theme Name: Gramen - Roofing Services HTML5 Template Author: Gramentheme Support: https://gramentheme.com/contact-us/ Description: Gramen - Roofing Services HTML5 Template Version: 1.0 ----------------------------------------------------------------------------------- /************ TABLE OF CONTENTS *************** 1. Preloader activation 2. Button hover 3. Mobile Menu Js 4. Sidebar Toggle 5. Body overlay Js 6. Search Header Js 7. Sticky Header Js 8. Data Css js 9. Cart Quantity Js 10. MagnificPopup image view 11. MagnificPopup video view 12. Counter Js 13. Wow Js 14. Back To Top Js 15. For language Js 16. For header Js 17. For header setting Js 18. For before-after Js 19. Testimonial slider Js 20. Review slider Js 21. Product slider Js 22. Brand slider Js 23. Service slider Js 24. Project slider Js 25. Service slider One Js 26. Slider Js 27. Postbox slider Js 28. whyChoose slider Js 29. Section Active 30. Countdown slider Js **********************************************/ (function ($) { "use strict"; var windowOn = $(window); /*====================================== Preloader activation ========================================*/ $(window).on('load', function (event) { $('#preloader').delay(500).fadeOut(500); }); /*====================================== button hover ========================================*/ $('.btn-hover').on('mouseenter', function(e) { var parentOffset = $(this).offset(), relX = e.pageX - parentOffset.left, relY = e.pageY - parentOffset.top; $(this).find('span').css({ top: 0, left: 0 }) $(this).find('span').css({ top: relY, left: relX }) }).on('mouseout', function(e) { var parentOffset = $(this).offset(), relX = e.pageX - parentOffset.left, relY = e.pageY - parentOffset.top; $(this).find('span').css({ top: 0, left: 0 }) $(this).find('span').css({ top: relY, left: relX }) }); /*====================================== Mobile Menu Js ========================================*/ $('#mobile-menu').meanmenu({ meanMenuContainer: '.mobile-menu', meanScreenWidth: "991", meanExpand: [''], }); $("#mobile-menu-2").meanmenu({ meanMenuContainer: ".mobile-menu-2", meanScreenWidth: "4000", meanExpand: [''], }); /*====================================== Sidebar Toggle ========================================*/ $(".offcanvas__close,.offcanvas__overlay").on("click", function () { $(".offcanvas__info").removeClass("info-open"); $(".offcanvas__overlay").removeClass("overlay-open"); }); $(".sidebar__toggle").on("click", function () { $(".offcanvas__info").addClass("info-open"); $(".offcanvas__overlay").addClass("overlay-open"); }); /*====================================== Body overlay Js ========================================*/ $(".body-overlay").on("click", function () { $(".offcanvas__area").removeClass("offcanvas-opened"); $(".df-search-area").removeClass("opened");; $(".body-overlay").removeClass("opened"); }); /*====================================== Search Header Js ========================================*/ $(".search-toggle-open").on("click", function () { $(".df-search-area").addClass("opened"); $(".body-overlay").addClass("opened"); }); $(".tp-search-close-btn").on("click", function () { $(".df-search-area").removeClass("opened"); $(".body-overlay").removeClass("opened"); }); /*====================================== Sticky Header Js ========================================*/ $(window).scroll(function () { if ($(this).scrollTop() > 250) { $("#header-sticky").addClass("sticky"); } else { $("#header-sticky").removeClass("sticky"); } }); /*====================================== Data Css js ========================================*/ $("[data-background").each(function () { $(this).css("background-image", "url( " + $(this).attr("data-background") + " )"); }); $("[data-width]").each(function () { $(this).css("width", $(this).attr("data-width")); }); $("[data-bg-color]").each(function () { $(this).css("background-color", $(this).attr("data-bg-color")); }); /*====================================== Cart Quantity Js ========================================*/ $(".cart-minus").click(function () { var $input = $(this).parent().find("input"); var count = parseInt($input.val()) - 1; count = count < 1 ? 1 : count; $input.val(count); $input.change(); return false; }); $(".cart-plus").click(function () { var $input = $(this).parent().find("input"); $input.val(parseInt($input.val()) + 1); $input.change(); return false; }); /*====================================== MagnificPopup image view ========================================*/ $('.popup-image').magnificPopup({ type: 'image', gallery: { enabled: true } }); $(window).on("load", function () { if ($(".post-filter").length) { var postFilterList = $(".post-filter li"); // for first init $(".filter-layout").isotope({ filter: ".filter-item", animationOptions: { duration: 500, easing: "linear", queue: false } }); // on click filter links postFilterList.on("click", function () { var Self = $(this); var selector = Self.attr("data-filter"); postFilterList.removeClass("active"); Self.addClass("active"); $(".filter-layout").isotope({ filter: selector, animationOptions: { duration: 500, easing: "linear", queue: false } }); return false; }); } }); //LightBox / Fancybox // if($('.lightbox-image').length) { // $('.lightbox-image').fancybox({ // openEffect : 'fade', // closeEffect : 'fade', // helpers : { // media : {} // } // }); // } /*====================================== MagnificPopup video view ========================================*/ $(".popup-video").magnificPopup({ type: "iframe", }); /*====================================== Counter Js ========================================*/ $(".counter").counterUp({ delay: 10, time: 1000, }); /*====================================== Wow Js ========================================*/ new WOW().init(); /*====================================== Back To Top Js ========================================*/ var progressPath = document.querySelector('.backtotop-wrap path'); var pathLength = progressPath.getTotalLength(); progressPath.style.transition = progressPath.style.WebkitTransition = 'none'; progressPath.style.strokeDasharray = pathLength + ' ' + pathLength; progressPath.style.strokeDashoffset = pathLength; progressPath.getBoundingClientRect(); progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear'; var updateProgress = function () { var scroll = $(window).scrollTop(); var height = $(document).height() - $(window).height(); var progress = pathLength - (scroll * pathLength / height); progressPath.style.strokeDashoffset = progress; } updateProgress(); $(window).scroll(updateProgress); var offset = 150; var duration = 550; jQuery(window).on('scroll', function () { if (jQuery(this).scrollTop() > offset) { jQuery('.backtotop-wrap').addClass('active-progress'); } else { jQuery('.backtotop-wrap').removeClass('active-progress'); } }); jQuery('.backtotop-wrap').on('click', function (event) { event.preventDefault(); jQuery('html, body').animate({ scrollTop: 0 }, duration); return false; }) /*====================================== For language Js ========================================*/ if ($("#header-lang-toggle").length > 0) { window.addEventListener('click', function(e){ if (document.getElementById('header-lang-toggle').contains(e.target)){ $(".header-lang ul").toggleClass("lang-list-open"); } else{ $(".header-lang ul").removeClass("lang-list-open"); } }); } /*====================================== For header header Js ========================================*/ if ($("#header-currency-toggle").length > 0) { window.addEventListener('click', function(e){ if (document.getElementById('header-currency-toggle').contains(e.target)){ $(".tp-header-currency ul").toggleClass("tp-currency-list-open"); } else{ $(".tp-header-currency ul").removeClass("tp-currency-list-open"); } }); } /*====================================== For header setting Js ========================================*/ if ($("#header-setting-toggle").length > 0) { window.addEventListener('click', function(e){ if (document.getElementById('header-setting-toggle').contains(e.target)){ $(".tp-header-setting ul").toggleClass("tp-setting-list-open"); } else{ $(".tp-header-setting ul").removeClass("tp-setting-list-open"); } }); } /*====================================== For before-after Js ========================================*/ if ($(".beforeAfter").length > 0) { $('.beforeAfter').beforeAfter({ movable: true, clickMove: true, position: 50, separatorColor: '#fafafa', bulletColor: '#fafafa', onMoveStart: function(e) { console.log(event.target); }, onMoving: function() { console.log(event.target); }, onMoveEnd: function() { console.log(event.target); }, }); } /*====================================== Testimonial slider Js Gramen Home One ========================================*/ var team = new Swiper('.testimonial-active-1', { slidesPerView: 1, spaceBetween: 30, loop: true, roundLengths: true, autoplay: { delay: 3000, }, navigation: { nextEl: ".testimonial-1-button-next", prevEl: ".testimonial-1-button-prev", }, breakpoints: { '1400': { slidesPerView: 1, }, '1200': { slidesPerView: 1, }, '992': { slidesPerView: 1, }, '768': { slidesPerView: 1, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, }); // Gramen Home two var team = new Swiper('.testimonial-active-2', { slidesPerView: 2, spaceBetween: 20, loop: true, roundLengths: true, autoplay: { delay: 3000, }, pagination: { el: ".testimonial-swiper-dot", clickable: true, }, navigation: { nextEl: ".testimonial-button-next", prevEl: ".testimonial-button-prev", }, breakpoints: { '1400': { slidesPerView: 2, }, '1200': { slidesPerView: 2, }, '992': { slidesPerView: 2, }, '768': { slidesPerView: 1, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, }); var team = new Swiper('.testimonial-active-3', { slidesPerView: 4, spaceBetween: 24, loop: true, roundLengths: true, autoplay: { delay: 3000, }, pagination: { el: ".bd-swiper-dot", clickable: true, }, navigation: { nextEl: ".testimonial-button-next", prevEl: ".testimonial-button-prev", }, breakpoints: { '1400': { slidesPerView: 4, }, '1200': { slidesPerView: 3, }, '992': { slidesPerView: 2, }, '768': { slidesPerView: 2, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, }); var team = new Swiper('.team-active-3', { slidesPerView: 3, spaceBetween: 24, loop: true, roundLengths: true, autoplay: { delay: 3000, }, pagination: { el: ".bd-swiper-dot", clickable: true, }, navigation: { nextEl: ".team-3-button-next", prevEl: ".team-3-button-prev", }, breakpoints: { '1400': { slidesPerView: 3, }, '1200': { slidesPerView: 3, }, '992': { slidesPerView: 2, }, '768': { slidesPerView: 2, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, }); /*====================================== Review slider Js ========================================*/ var review = new Swiper('.review-active', { slidesPerView: 2, spaceBetween: 30, loop: true, roundLengths: true, autoplay: { delay: 3000, }, navigation: { nextEl: ".testimonial-button-next", prevEl: ".testimonial-button-prev", }, breakpoints: { '1400': { slidesPerView: 2, }, '1200': { slidesPerView: 1, }, '992': { slidesPerView: 1, }, '768': { slidesPerView: 1, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, }); var review = new Swiper('.review-active', { slidesPerView: 1, spaceBetween: 30, loop: true, roundLengths: true, observer: true, observeParents: true, autoplay: { delay: 3000, }, navigation: { nextEl: ".review-button-prev", prevEl: ".review-button-next", }, }); $(".review-active-two").slick({ infinite: true, vertical: true, speed: 1000, autoplaySpeed: 2000, slidesToShow: 1, autoplay: true, arrows: true, prevArrow: '', nextArrow: '', appendArrows: $(".review-slider-navigation"), slidesToShow: 1, slidesToScroll: 1, responsive: [ { breakpoint: 1400, slidesToShow: 1, }, { breakpoint: 1200, slidesToShow: 1, }, { breakpoint: 992, slidesToShow: 1, }, { breakpoint: 768, settings: { slidesToShow: 1, }, }, { breakpoint: 480, settings: { centerMode: false, slidesToShow: 1, }, }, ], }); /*====================================== product slider Js ========================================*/ var product = new Swiper('.product-active', { slidesPerView: 4, spaceBetween: 15, loop: true, roundLengths: true, autoplay: { delay: 3000, }, pagination: { el: ".bd-swiper-dot", clickable: true, }, breakpoints: { '1200': { slidesPerView: 4, }, '992': { slidesPerView: 3, }, '768': { slidesPerView: 3, }, '576': { slidesPerView: 2, }, '0': { slidesPerView: 1, }, }, }); var productTwo = new Swiper('.discount-active', { slidesPerView: 5, spaceBetween: 15, loop: true, roundLengths: true, observer: true, observeParents: true, autoplay: { delay: 3000, }, pagination: { el: ".bd-swiper-dot", clickable: true, }, navigation: { nextEl: ".discount-slider-button-prev", prevEl: ".discount-slider-button-next", }, breakpoints: { '1400': { slidesPerView: 5, }, '1200': { slidesPerView: 4, }, '992': { slidesPerView: 4, }, '768': { slidesPerView: 3, }, '576': { slidesPerView: 2, }, '0': { slidesPerView: 1, }, }, }); /*====================================== brand slider Js Gramen Home One ========================================*/ var brand = new Swiper('.brand-active', { slidesPerView: 5, spaceBetween: 99, loop: true, roundLengths: true, autoplay: { delay: 3000, }, breakpoints: { '1400': { slidesPerView: 5, }, '1200': { slidesPerView: 4, }, '992': { slidesPerView: 4, }, '768': { slidesPerView: 3, }, '576': { slidesPerView: 2, }, '0': { slidesPerView: 1, }, }, speed: 1000, }); /*====================================== service slider Js Gramen Home One ========================================*/ var service = new Swiper('.service-active-2', { slidesPerView: 4, spaceBetween: 30, loop: true, autoplay: { delay: 3000, }, pagination: { el: ".bd-swiper-dot", clickable: true, }, navigation: { nextEl: ".service-active-2-button-next", prevEl: ".service-active-2-button-prev", }, breakpoints: { '1200': { slidesPerView: 4, }, '992': { slidesPerView: 3, }, '768': { slidesPerView: 2, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, }); /*====================================== Project slider Js Gramen Home One ========================================*/ var project = new Swiper('.project-active-1', { slidesPerView: 4, spaceBetween: 30, loop: true, autoplay: { delay: 3000, }, navigation: { nextEl: ".project-1-button-next", prevEl: ".project-1-button-prev", }, breakpoints: { '1400': { slidesPerView: 4, }, '1200': { slidesPerView: 3, }, '992': { slidesPerView: 2, }, '768': { slidesPerView: 2, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, speed: 1000, }); /*====================================== Service slider One Js Gramen Home One ========================================*/ var team = new Swiper('.service-active-1', { slidesPerView: 3, spaceBetween: 30, loop: true, roundLengths: true, autoplay: { delay: 3000, }, navigation: { nextEl: ".service-1-button-next", prevEl: ".service-1-button-prev", }, breakpoints: { '1400': { slidesPerView: 3, }, '1200': { slidesPerView: 3, }, '992': { slidesPerView: 2, }, '768': { slidesPerView: 1, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, speed: 1500, }); /*====================================== slider Js ========================================*/ if (jQuery(".slider-active").length > 0) { let sliderActive1 = ".slider-active"; let sliderInit1 = new Swiper(sliderActive1, { // Optional parameters slidesPerView: 1, slidesPerColumn: 1, paginationClickable: true, fadeEffect: { crossFade: true }, loop: true, effect: 'fade', autoplay: { delay: 5000, }, navigation: { nextEl: ".slider-button-prev", prevEl: ".slider-button-next", }, pagination: { el: ".banner-dot-2", clickable: true, }, a11y: false, }); function animated_swiper(selector, init) { let animated = function animated() { $(selector + " [data-animation]").each(function() { let anim = $(this).data("animation"); let delay = $(this).data("delay"); let duration = $(this).data("duration"); $(this) .removeClass("anim" + anim) .addClass(anim + " animated") .css({ webkitAnimationDelay: delay, animationDelay: delay, webkitAnimationDuration: duration, animationDuration: duration, }) .one( "webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() { $(this).removeClass(anim + " animated"); } ); }); }; animated(); // Make animated when slide change init.on("slideChange", function() { $(sliderActive1 + " [data-animation]").removeClass("animated"); }); init.on("slideChange", animated); } animated_swiper(sliderActive1, sliderInit1); } if (jQuery(".banner-active").length > 0) { let sliderActive1 = ".banner-active"; let sliderInit1 = new Swiper(sliderActive1, { // Optional parameters slidesPerView: 1, slidesPerColumn: 1, paginationClickable: true, fadeEffect: { crossFade: true, }, loop: true, effect: "fade", autoplay: { delay: 5000, }, navigation: { nextEl: ".slider__button-prev", prevEl: ".slider__button-next", }, pagination: { el: ".banner-dot", clickable: true, }, a11y: false, }); function animated_swiper(selector, init) { let animated = function animated() { $(selector + " [data-animation]").each(function() { let anim = $(this).data("animation"); let delay = $(this).data("delay"); let duration = $(this).data("duration"); $(this) .removeClass("anim" + anim) .addClass(anim + " animated") .css({ webkitAnimationDelay: delay, animationDelay: delay, webkitAnimationDuration: duration, animationDuration: duration, }) .one( "webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() { $(this).removeClass(anim + " animated"); } ); }); }; animated(); // Make animated when slide change init.on("slideChange", function() { $(sliderActive1 + " [data-animation]").removeClass("animated"); }); init.on("slideChange", animated); } animated_swiper(sliderActive1, sliderInit1); } /*====================================== Postbox slider Js ========================================*/ var postboxSlider = new Swiper('.postbox__slider', { slidesPerView: 1, spaceBetween: 0, loop: true, autoplay: { delay: 3000, }, // Navigation arrows navigation: { nextEl: ".postbox-slider-button-next", prevEl: ".postbox-slider-button-prev", }, breakpoints: { '1200': { slidesPerView: 1, }, '992': { slidesPerView: 1, }, '768': { slidesPerView: 1, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, }); /*====================================== whyChoose slider Js ========================================*/ var whyChoose = new Swiper('.why-choose-active', { slidesPerView: 1, spaceBetween: 0, loop: true, autoplay: { delay: 3000, }, pagination: { el: ".bd-swiper-dot", clickable: true, }, breakpoints: { '1200': { slidesPerView: 3, }, '992': { slidesPerView: 3, }, '768': { slidesPerView: 1, }, '576': { slidesPerView: 1, }, '0': { slidesPerView: 1, }, }, }); /*====================================== SECTION ACTIVE ========================================*/ $(document).on('mouseover', '.icon-box-area', function () { $('.icon-box-area').removeClass('active'); $(this).addClass('active'); }); /*====================================== Countdown slider Js ========================================*/ if ($(".countdown-wrapper").length > 0) { // Function to update the countdown timer function updateCountdown() { const second = 1000, minute = second * 60, hour = minute * 60, day = hour * 24; let today = new Date(); let dd = String(today.getDate()).padStart(2, "0"); let mm = String(today.getMonth() + 1).padStart(2, "0"); let yyyy = today.getFullYear(); let nextYear = yyyy + 1; let dayMonth = "12/30/"; let birthday = dayMonth + yyyy; today = mm + "/" + dd + "/" + yyyy; if (today > birthday) { birthday = dayMonth + nextYear; } const countDownDate = new Date(birthday).getTime(); const x = setInterval(function () { const now = new Date().getTime(); const distance = countDownDate - now; const days = Math.floor(distance / day); const hours = Math.floor((distance % day) / hour); const minutes = Math.floor((distance % hour) / minute); const seconds = Math.floor((distance % minute) / second); // Update the HTML elements document.getElementById("days").innerText = days; document.getElementById("hours").innerText = hours; document.getElementById("minutes").innerText = minutes; document.getElementById("seconds").innerText = seconds; // Check if the countdown is over if (distance < 0) { clearInterval(x); document.getElementById("headline").innerText = "It's my birthday!"; document.getElementById("countdown").style.display = "none"; } }, 1000); // Update every 1 second } // Call the updateCountdown function when the page loads window.onload = updateCountdown; } })(jQuery);