//----------------------------------------------------/ // // POLO - HTML5 Template // Author: INSPIRO - Ardian Berisha // Version: v5.4 // Update: December 15 2019 // //----------------------------------------------------/ //INSPIRO Global var var INSPIRO = {}, $ = jQuery.noConflict(); (function ($) { "use strict"; // Predefined Global Variables var $window = $(window), $theme_color = '#2250fc', //Main $body = $('body'), $bodyInner = $('.body-inner'), $section = $('section'), //Header $topbar = $('#topbar'), $header = $('#header'), $headerCurrentClasses = $header.attr('class'), //Logo headerLogo = $('#logo'), //Menu $mainMenu = $('#mainMenu'), $pageMenu = $('.page-menu'), //Slider $slider = $('#slider'), $inspiroSlider = $('.inspiro-slider'), $carousel = $('.carousel'), /*Grid Layout*/ $gridLayout = $(".grid-layout"), $gridFilter = $(".grid-filter"), windowWidth = $window.width(); if ($gridFilter.length > 0) { $gridFilter = $gridFilter; } else { $gridFilter = $(".page-grid-filter"); } //Check if header exist if ($header.length > 0) { var $headerOffsetTop = $header.offset().top; } var Events = { browser: { isMobile: function () { if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) { return true; } else { return false; } } } } //Settings var Settings = { isMobile: Events.browser.isMobile, submenuLight: $header.hasClass('submenu-light') == true ? true : false, menuIsOpen: false, menuOverlayOpened: false } //Window breakpoints $(window).breakpoints({ breakpoints: [{ "name": "xs", "width": 0 }, { "name": "sm", "width": 576 }, { "name": "md", "width": 768 }, { "name": "lg", "width": 992 }, { "name": "xl", "width": 1200 }] }); var currentBreakpoint = $(window).breakpoints("getBreakpoint"); $body.addClass('breakpoint-' + currentBreakpoint); $(window).bind("breakpoint-change", function (breakpoint) { $body.removeClass('breakpoint-' + breakpoint.from); $body.addClass('breakpoint-' + breakpoint.to); }); $(window).breakpoints("greaterEqualTo", "lg", function () { $body.addClass('b--desktop'); $body.removeClass('b--responsive'); }); $(window).breakpoints("lessThan", "lg", function () { $body.removeClass('b--desktop'); $body.addClass('b--responsive'); }); INSPIRO.core = { functions: function () { INSPIRO.core.scrollTop(); INSPIRO.core.rtlStatus(); INSPIRO.core.rtlStatusActivate(); INSPIRO.core.equalize(); INSPIRO.core.customHeight(); }, scrollTop: function () { var $scrollTop = $('#scrollTop'); if ($scrollTop.length > 0) { var scrollOffset = $body.attr('data-offset') || 400; if ($window.scrollTop() > scrollOffset) { if ($body.hasClass("frame")) { $scrollTop.css({ 'bottom': '46px', 'opacity': 1, 'z-index': 199 }); } else { $scrollTop.css({ 'bottom': '26px', 'opacity': 1, 'z-index': 199 }); } } else { $scrollTop.css({ 'bottom': '16px', 'opacity': 0 }); } $scrollTop.off('click').on('click', function () { $('body,html').stop(true).animate({ 'scrollTop': 0 }, 1000, 'easeInOutExpo'); return false; }); } }, rtlStatus: function () { var $rtlStatusCheck = $("html").attr("dir"); if ($rtlStatusCheck == "rtl") { return true; } return false; }, rtlStatusActivate: function () { if (INSPIRO.core.rtlStatus() == true) { $('head').append(''); } }, equalize: function () { var $equalize = $('.equalize'); if ($equalize.length > 0) { $equalize.each(function () { var elem = $(this), selectorItem = elem.find(elem.attr('data-equalize-item')) || "> div", maxHeight = 0; selectorItem.each(function () { if ($(this).outerHeight(true) > maxHeight) { maxHeight = $(this).outerHeight(true); } }); selectorItem.height(maxHeight); }); } }, customHeight: function (setHeight) { var $customHeight = $('.custom-height'); if ($customHeight.length > 0) { $customHeight.each(function () { var elem = $(this), elemHeight = elem.attr('data-height') || 400, elemHeightLg = elem.attr('data-height-lg') || elemHeight, elemHeightMd = elem.attr('data-height-md') || elemHeightLg, elemHeightSm = elem.attr('data-height-sm') || elemHeightMd, elemHeightXs = elem.attr('data-height-xs') || elemHeightSm; function customHeightBreakpoint(setHeight) { if (setHeight) { elem = setHeight; } switch ($(window).breakpoints("getBreakpoint")) { case "xs": elem.height(elemHeightXs); break; case "sm": elem.height(elemHeightSm); break; case "md": elem.height(elemHeightMd); break; case "lg": elem.height(elemHeightLg); break; case "xl": elem.height(elemHeight); break; } } customHeightBreakpoint(setHeight); $(window).resize(function () { setTimeout(function () { customHeightBreakpoint(setHeight); }, 100); }); }); } } }; INSPIRO.header = { functions: function () { INSPIRO.header.logoStatus(); INSPIRO.header.stickyHeader(); INSPIRO.header.topBar(); INSPIRO.header.search(); INSPIRO.header.mainMenu(); INSPIRO.header.mainMenuOverlay(); INSPIRO.header.pageMenu(); INSPIRO.header.sidebarOverlay(); INSPIRO.header.dotsMenu(); INSPIRO.header.onepageMenu(); }, logoStatus: function (status) { var headerLogoDefault = headerLogo.find($('.logo-default')), headerLogoDark = headerLogo.find($('.logo-dark')), headerLogoFixed = headerLogo.find('.logo-fixed'), headerLogoResponsive = headerLogo.find('.logo-responsive'); if ($header.hasClass("header-sticky") && headerLogoFixed.length > 0) { headerLogoDefault.css("display", "none"); headerLogoDark.css("display", "none"); headerLogoResponsive.css("display", "none"); headerLogoFixed.css("display", "block"); } else { headerLogoDefault.removeAttr("style") headerLogoDark.removeAttr("style"); headerLogoResponsive.removeAttr("style"); headerLogoFixed.removeAttr("style"); } $(window).breakpoints("lessThan", "lg", function () { if (headerLogoResponsive.length > 0) { headerLogoDefault.css("display", "none"); headerLogoDark.css("display", "none"); headerLogoFixed.css("display", "none"); headerLogoResponsive.css("display", "block"); } }); }, stickyHeader: function () { var elem = $(this), shrinkHeader = elem.attr('data-shrink') || 0, shrinkHeaderActive = elem.attr('data-sticky-active') || 200, scrollOnTop = $window.scrollTop(), darkClassRemoved; if ($header.hasClass("header-modern")) { shrinkHeader = 300; } $(window).breakpoints("greaterEqualTo", "lg", function () { if (!$header.is(".header-disable-fixed")) { if (scrollOnTop > $headerOffsetTop + shrinkHeader) { $header.addClass('header-sticky'); if (scrollOnTop > $headerOffsetTop + shrinkHeaderActive) { $header.addClass('sticky-active'); if (Settings.submenuLight) { $header.removeClass('dark'); darkClassRemoved = true; } INSPIRO.header.logoStatus(); } } else { $header.removeClass().addClass($headerCurrentClasses); INSPIRO.header.logoStatus(); } } }); $(window).breakpoints("lessThan", "lg", function () { if ($header.attr('data-responsive-fixed') == "true") { if (scrollOnTop > $headerOffsetTop + shrinkHeader) { $header.addClass('header-sticky'); if (scrollOnTop > $headerOffsetTop + shrinkHeaderActive) { $header.addClass('sticky-active'); if (Settings.submenuLight) { $header.removeClass('dark'); darkClassRemoved = true; } INSPIRO.header.logoStatus(); } } else { $header.removeClass().addClass($headerCurrentClasses); INSPIRO.header.logoStatus(); } } }); }, //chkd topBar: function () { if ($topbar.length > 0) { $("#topbar .topbar-dropdown .topbar-form").each(function (index, element) { if ($window.width() - ($(element).width() + $(element).offset().left) < 0) { $(element).addClass('dropdown-invert'); } }); } }, search: function () { var $search = $('#search'); if ($search.length > 0) { var searchBtn = $('#btn-search'), searchBtnClose = $('#btn-search-close'), searchInput = $search.find('.form-control'); function openSearch() { $body.addClass('search-open'); searchInput.focus(); } function closeSearch() { $body.removeClass('search-open'); searchInput.value = ''; } searchBtn.on('click', function () { openSearch(); return false; }); searchBtnClose.on('click', function () { closeSearch(); return false; }); document.addEventListener('keyup', function (ev) { if (ev.keyCode == 27) { closeSearch(); } }); } }, mainMenu: function () { if ($mainMenu.length > 0) { var $menuItemLinks = $("#mainMenu nav > ul > li.dropdown > a, .dropdown-submenu > a, .dropdown-submenu > span, .page-menu nav > ul > li.dropdown > a"), $triggerButton = $("#mainMenu-trigger a, #mainMenu-trigger button"), darkClassRemoved, processing = false, triggerEvent; $triggerButton.on('click', function (e) { var elem = $(this); e.preventDefault(); $(window).breakpoints("lessThan", "lg", function () { var openMenu = function () { if (!processing) { processing = true; Settings.menuIsOpen = true; if (Settings.submenuLight) { $header.removeClass('dark'); darkClassRemoved = true; } elem.addClass('toggle-active'); $body.addClass('mainMenu-open'); INSPIRO.header.logoStatus(); $mainMenu.animate({ 'min-height': $window.height() }, { duration: 500, easing: "easeInOutQuart", start: function () { setTimeout(function () { $mainMenu.addClass('menu-animate'); }, 300); }, complete: function () { processing = false; } }); } }; var closeMenu = function () { if (!processing) { processing = true; Settings.menuIsOpen = false; INSPIRO.header.logoStatus(); $mainMenu.animate({ 'min-height': 0 }, { start: function () { $mainMenu.removeClass('menu-animate'); }, done: function () { $body.removeClass('mainMenu-open'); elem.removeClass('toggle-active'); if (Settings.submenuLight && darkClassRemoved) { $header.addClass('dark'); } }, duration: 500, easing: "easeInOutQuart", complete: function () { processing = false; } }); } }; if (!Settings.menuIsOpen) { triggerEvent = openMenu(); } else { triggerEvent = closeMenu(); } }); }); $menuItemLinks.on('click', function (e) { $(this).parent('li').siblings().removeClass('hover-active'); $(this).parent('li').toggleClass('hover-active'); e.stopPropagation(); e.preventDefault(); }); $body.on('click', function (e) { $mainMenu.find('.hover-active').removeClass('hover-active'); }); /*invert menu fix*/ $(window).breakpoints("greaterEqualTo", "lg", function () { var $menuLastItem = $("nav > ul > li:last-child"), $menuLastItemUl = $("nav > ul > li:last-child > ul"), $menuLastInvert = $menuLastItemUl.width() - $menuLastItem.width(), $menuItems = $("nav > ul > li").find(".dropdown-menu"); $menuItems.css('display', 'block'); $('.dropdown:not(.mega-menu-item) ul ul').each(function (index, element) { if ($window.width() - ($(element).width() + $(element).offset().left) < 0) { $(element).addClass('menu-invert'); } }); if ($window.width() - ($menuLastItemUl.width() + $menuLastItem.offset().left) < 0) { $menuLastItemUl.addClass('menu-last'); } $menuItems.css('display', ''); }); } }, mainMenuOverlay: function () {}, /*Page Menu*/ pageMenu: function () { if ($pageMenu.length > 0) { $pageMenu.each(function () { $(this).find("#pageMenu-trigger").on("click", function () { $pageMenu.toggleClass("page-menu-active"); $pageMenu.toggleClass("items-visible"); }); }); } }, sidebarOverlay: function () { var sidebarOverlay = $('#side-panel'); if (sidebarOverlay.length > 0) { sidebarOverlay.css("opacity", 1); $("#close-panel").on("click", function () { $body.removeClass("side-panel-active"); $("#side-panel-trigger").removeClass("toggle-active"); }); var t = setTimeout(function () { INSPIRO.elements.gridLayoutRefresh(); }, 1000); } }, dotsMenu: function () { var $dotsMenu = $('#dotsMenu'), $dotsMenuItems = $dotsMenu.find("ul > li > a"); if ($dotsMenu.length > 0) { $dotsMenuItems.on('click', function () { $dotsMenuItems.parent("li").removeClass('current'); $(this).parent("li").addClass('current'); return false; }); $dotsMenuItems.parents("li").removeClass('current'); $dotsMenu.find('a[href="#' + INSPIRO.header.currentSection() + '"]').parent("li").addClass('current'); } }, onepageMenu: function () { if ($mainMenu.hasClass("menu-one-page")) { var $currentMenuItem = "current"; $(window).on("scroll", function () { var $currentSection = INSPIRO.header.currentSection(); $mainMenu.find("nav > ul > li > a").parents("li").removeClass($currentMenuItem); $mainMenu.find('nav > ul > li > a[href="#' + $currentSection + '"]').parent("li").addClass($currentMenuItem); }); } }, currentSection: function () { var elemCurrent = "body"; $section.each(function () { var elem = $(this), elemeId = elem.attr("id"); if ((elem.offset().top - $window.height() / 3 < $window.scrollTop()) && (elem.offset().top + elem.height() - $window.height() / 3 > $window.scrollTop())) { elemCurrent = elemeId; } }); return elemCurrent; } }; INSPIRO.slider = { functions: function () { INSPIRO.slider.inspiroSlider(); INSPIRO.slider.carousel(); }, inspiroSlider: function () { if ($inspiroSlider.length > 0) { //Check if flickity plugin is loaded if (typeof $.fn.flickity === 'undefined') { INSPIRO.elements.notification("Warning", "jQuery flickity slider plugin is missing in plugins.js file.", "danger") return true; } var defaultAnimation = "fadeInUp"; function animate_captions($elem) { var $captions = $elem; $captions.each(function () { var $captionElem = $(this), animationDuration = "600ms"; if ($(this).attr("data-animate-duration")) { animationDuration = $(this).attr("data-animate-duration") + "ms"; } $captionElem.css({ opacity: 0 }); $(this).css("animation-duration", animationDuration); }); $captions.each(function (index) { var $captionElem = $(this), captionDelay = $captionElem.attr("data-caption-delay") || (index * 350 + 1000), captionAnimation = $captionElem.attr('data-caption-animate') || defaultAnimation; var t = setTimeout(function () { $captionElem.css({ opacity: 1 }); $captionElem.addClass(captionAnimation); }, captionDelay); }); } function hide_captions($elem) { var $captions = $elem; $captions.each(function (caption) { var caption = $(this), captionAnimation = caption.attr('data-caption-animate') || defaultAnimation; caption.removeClass(captionAnimation); caption.removeAttr('style'); }); } function start_kenburn(elem) { var currentSlide = elem.find('.slide.is-selected'), currentSlideKenburns = currentSlide.hasClass("kenburns"); if (currentSlideKenburns) { setTimeout(function () { currentSlide.find(".kenburns-bg").addClass("kenburns-bg-animate"); }, 1500); } } function stop_kenburn(elem) { var notCurrentSlide = elem.find('.slide:not(.is-selected)'); notCurrentSlide.find(".kenburns-bg").removeClass("kenburns-bg-animate"); } function slide_dark(elem) { var $sliderClassSlide = elem.find(".slide.is-selected"); if ($sliderClassSlide.hasClass("slide-dark")) { $header.removeClass('dark').addClass("dark-removed"); } else { if(!$header.hasClass("sticky-active") && $header.hasClass("dark-removed")) { $header.addClass('dark').removeClass("dark-removed"); } } } function sliderHeight(elem, state) { var elem, headerHeight = $header.outerHeight(), topbarHeight = $topbar.outerHeight() || 0, windowHeight = $window.height(), sliderCurrentHeight = elem.height(), screenHeightExtra = headerHeight + topbarHeight, $sliderClassSlide = elem.find(".slide"), sliderFullscreen = elem.hasClass('slider-fullscreen'), screenRatio = elem.hasClass('slider-halfscreen') ? 1 : 1.2, transparentHeader = $header.attr('data-transparent'), customHeight = elem.attr("data-height"), responsiveHeightXs = elem.attr("data-height-xs"), containerFullscreen = elem.find(".container").first().outerHeight(), contentCrop; if (containerFullscreen >= windowHeight) { contentCrop = true; var sliderMinHeight = containerFullscreen; elem.css('min-height', sliderMinHeight + 100); $sliderClassSlide.css('min-height', sliderMinHeight + 100); elem.find('.flickity-viewport').css('min-height', sliderMinHeight + 100); } sliderElementsHeight('null'); function sliderElementsHeight(height) { if (height == 'null') { elem.css('height', ''); $sliderClassSlide.css('height', ''); elem.find('.flickity-viewport').css('height', ''); } else { elem.css('height', height); $sliderClassSlide.css('height', height); elem.find('.flickity-viewport').css('height', height); } } if (customHeight) { $(window).breakpoints("greaterEqualTo", "lg", function () { sliderElementsHeight(customHeight + "px"); }); } } $inspiroSlider.each(function () { var elem = $(this); //Plugin Options elem.options = { cellSelector: elem.attr('data-item') || false, prevNextButtons: elem.data('arrows') == false ? false : true, pageDots: elem.data('dots') == true ? true : true, fade: elem.data('fade') == true ? true : false, draggable: elem.data('drag') == true ? true : false, freeScroll: elem.data('free-scroll') == true ? true : false, wrapAround: elem.data('loop') == false ? false : true, groupCells: elem.data('group-cells') == true ? true : false, autoPlay: elem.attr('data-autoplay') || 8000, pauseAutoPlayOnHover: elem.data('hoverpause') == false ? false : true, adaptiveHeight: elem.data('adaptive-height') == false ? false : false, asNavFor: elem.attr('data-navigation') || false, selectedAttraction: elem.attr('data-attraction') || .07, friction: elem.attr('data-friction') || .9, initialIndex: elem.attr('data-initial-index') || 0, accessibility: elem.data('accessibility') == true ? true : false, setGallerySize: elem.data('gallery-size') == false ? false : false, resize: elem.data('resize') == false ? false : false, cellAlign: elem.attr('data-align') || 'left', }; //Kenburns effect elem.find('.slide').each(function () { if ($(this).hasClass("kenburns")) { var elemChild = $(this), elemChildImage = elemChild.css('background-image').replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, ''); if (elemChild.attr('data-bg-image')) { elemChildImage = elemChild.attr('data-bg-image'); } elemChild.prepend('
'); } }); elem.find(".slide video").each(function () { this.pause(); }); if (elem.find('.slide').length <= 1) { elem.options.prevNextButtons = false; elem.options.pageDots = false; } elem.flickity({ cellSelector: elem.options.cellSelector, prevNextButtons: elem.options.prevNextButtons, pageDots: elem.options.pageDots, fade: elem.options.fade, draggable: elem.options.draggable, freeScroll: elem.options.freeScroll, wrapAround: elem.options.wrapAround, groupCells: elem.options.groupCells, autoPlay: elem.options.autoPlay, pauseAutoPlayOnHover: elem.options.pauseAutoPlayOnHover, adaptiveHeight: elem.options.adaptiveHeight, asNavFor: elem.options.asNavFor, selectedAttraction: Number(elem.options.selectedAttraction), friction: elem.options.friction, initialIndex: elem.options.initialIndex, accessibility: elem.options.accessibility, setGallerySize: elem.options.setGallerySize, resize: elem.options.resize, cellAlign: elem.options.cellAlign, rightToLeft: INSPIRO.core.rtlStatus(), on: { ready: function () { var $captions = elem.find('.slide.is-selected .slide-captions > *'); sliderHeight(elem); start_kenburn(elem); animate_captions($captions); }, change: function (index) { var $captions = elem.find('.slide.is-selected .slide-captions > *'); hide_captions($captions); setTimeout(function () { stop_kenburn(elem); }, 500); elem.find(".slide:not(.is-selected) video").each(function () { this.pause(); this.currentTime = 0; }); slide_dark(elem); start_kenburn(elem); animate_captions($captions); }, select: function (index) { var flkty = this; if ($(flkty.selectedElement).find('video')) { $(flkty.selectedElement).find('video').each(function (i, video) { video.play(); elem.flickity('pausePlayer'); setTimeout(function () { elem.flickity('next'); }, Number(Math.round(video.duration) - 1) * 1000); }); } } } }); $(window).resize(function () { sliderHeight(elem); elem.flickity('reposition'); }); }); } }, carouselAjax: function () { //Check if flickity plugin is loaded if (typeof $.fn.flickity === 'undefined') { INSPIRO.elements.notification("Warning", "jQuery flickity plugin is missing in plugins.js file.", "danger") return true; } //Plugin Options var elem = $(".carousel"); //Initializing plugin and passing the options elem.flickity({ adaptiveHeight: false, wrapAround: true, cellAlign: 'left', resize: false, on: { ready: function () { elem.addClass("carousel-loaded"); }, } }); }, carousel: function (elem) { if (elem) { $carousel = elem; } if ($carousel.length > 0) { //Check if flickity plugin is loaded if (typeof $.fn.flickity === 'undefined') { INSPIRO.elements.notification("Warning", "jQuery flickity plugin is missing in plugins.js file.", "danger") return true; } $carousel.each(function () { var elem = $(this); //Plugin Options elem.options = { containerWidth: elem.width(), items: elem.attr('data-items') || 4, itemsLg: elem.attr('data-items-lg'), itemsMd: elem.attr('data-items-md'), itemsSm: elem.attr('data-items-sm'), itemsXs: elem.attr('data-items-xs'), margin: elem.attr('data-margin') || 10, cellSelector: elem.attr('data-item') || false, prevNextButtons: elem.data('arrows') == false ? false : true, pageDots: elem.data('dots') == false ? false : true, fade: elem.data('fade') == true ? true : false, draggable: elem.data('drag') == false ? false : true, freeScroll: elem.data('free-scroll') == true ? true : false, wrapAround: elem.data('loop') == false ? false : true, groupCells: elem.data('group-cells') == true ? true : false, autoPlay: elem.attr('data-autoplay') || 5000, pauseAutoPlayOnHover: elem.data('hoverpause') == false ? false : true, asNavFor: elem.attr('data-navigation') || false, lazyLoad: elem.data('lazy-load') == true ? true : false, initialIndex: elem.attr('data-initial-index') || 0, accessibility: elem.data('accessibility') == true ? true : false, adaptiveHeight: elem.data('adaptive-height') == true ? true : false, autoWidth: elem.data('auto-width') == true ? true : false, setGallerySize: elem.data('gallery-size') == false ? false : true, resize: elem.data('resize') == false ? false : true, cellAlign: elem.attr('data-align') || 'left', rightToLeft: INSPIRO.core.rtlStatus(), }; //Calculate min/max on responsive breakpoints elem.options.itemsLg = elem.options.itemsLg || Math.min(Number(elem.options.items), Number(4)); elem.options.itemsMd = elem.options.itemsMd || Math.min(Number(elem.options.itemsLg), Number(3)); elem.options.itemsSm = elem.options.itemsSm || Math.min(Number(elem.options.itemsMd), Number(2)); elem.options.itemsXs = elem.options.itemsXs || Math.min(Number(elem.options.itemsSm), Number(1)); var setResponsiveColumns; function getCarouselColumns() { switch ($(window).breakpoints("getBreakpoint")) { case "xs": setResponsiveColumns = Number(elem.options.itemsXs); break; case "sm": setResponsiveColumns = Number(elem.options.itemsSm); break; case "md": setResponsiveColumns = Number(elem.options.itemsMd); break; case "lg": setResponsiveColumns = Number(elem.options.itemsLg); break; case "xl": setResponsiveColumns = Number(elem.options.items); break; } } getCarouselColumns(); var itemWidth; elem.find("> *").wrap('