/* * =========================================================== * MAIN SCRIPT- THEMEKIT * =========================================================== * This script manage all the js functions and the 3r party plugins. * * ANIMATIONS * ------------------------------------------------------------- * Manage all the animations on page scroll, on click, on hover * Manage the timeline animations * * Copyright (c) Federico Schiocchet - schiocco.com - Themekit */ "use strict"; function cssInit(delay, speed) { delay += 'ms'; speed += 'ms'; return { 'animation-duration': speed, 'transition-timing-function': 'ease', 'transition-delay': delay }; } function initAnima(obj) { (function ($) { var animaTimeout = $.fn.getGlobalVar("animaTimeout"); var animaTimeout_2 = $.fn.getGlobalVar("animaTimeout_2"); var da = $(obj).attr("data-anima"); var an = $(obj).find(".anima,[data-anima]"); var t = $(obj).attr("data-time"); var ta = $(obj).attr("data-target"); var tm = $(obj).attr("data-timeline"); var tmt = $(obj).attr("data-timeline-time"); var tr = $(obj).attr("data-trigger"); var len = $(an).length; var default_anima = $.fn.getGlobalVar("default_anima"); if (da == "default" && !isEmpty(default_anima)) da = default_anima; if (isEmpty(tmt)) tmt = 500; if (isEmpty(an)) an = obj; $(an).each(function (i) { if (!isEmpty($(this).attr("data-anima")) && i === 0) { an = obj; return false; } }); if (!isEmpty(ta)) an = $(ta); if (isEmpty(t)) t = 500; var time = 0, p = 1; if (!isEmpty(tm) && tm === "desc") { time = (len - 1) * tmt; p = -1 }; var cont = null; $(an).each(function (index) { var time_now = time; if (index === len - 1 && tm === "desc") time_now = 0; if (!$(this).hasClass("anima") && an != obj && isEmpty(ta)) { cont = this; } else { if (cont != null && !$.contains(cont, this) || cont === null) { var tobj = this; var pos = $(this).css("position"); if (pos != 'absolute' && pos != 'fixed') $(this).css("position", "relative"); var aid = Math.random(5) + ""; $(tobj).attr("aid", aid); if (animaTimeout.length > 30) { animaTimeout.shift(); animaTimeout_2.shift(); } animaTimeout.push([aid, setTimeout(function () { $(tobj).css(cssInit(0, 0)); var da_ = da; if (!isEmpty($(tobj).attr('class')) && $(tobj).attr('class').indexOf("anima-") != -1) { var arr_a = $(tobj).attr('class').split(" "); for (var i = 0; i < arr_a.length; i++) { if (arr_a[i].indexOf("anima-") != -1) da_ = arr_a[i].replace("anima-", ""); } } if ($(window).width() < 768 && (isEmpty(tr) || tr === "scroll" || tr === "load")) da_ = "fade-in"; animaTimeout_2.push([aid, setTimeout(function () { $(tobj).css(cssInit(0, t)).addClass(da_); $(tobj).css('opacity', '') }, 100)]); }, time_now)]); if (!isEmpty(tm)) time += tmt * p; } } }); $.fn.setGlobalVar(animaTimeout, "animaTimeout"); $.fn.setGlobalVar(animaTimeout_2, "animaTimeout_2"); }(jQuery)); } function outAnima(obj) { (function ($) { var animaTimeout = $.fn.getGlobalVar("animaTimeout"); var animaTimeout_2 = $.fn.getGlobalVar("animaTimeout_2"); var da = $(obj).attr("data-anima"); var an = $(obj).find(".anima,[data-anima]"); var t = $(obj).attr("data-time"); var hidden = $(obj).attr("data-hidden"); var ta = $(obj).attr("data-target"); var default_anima = $.fn.getGlobalVar("default_anima"); if (da == "default" && !isEmpty(default_anima)) da = default_anima; if (isEmpty(an)) an = obj; if (!isEmpty(ta)) an = $(ta); if (isEmpty(t)) t = 500; var cont = null; $(an).each(function () { var aid = $(this).attr("aid"); if (!isEmpty(aid)) { for (var i = 0; i < animaTimeout.length; i++) { if (animaTimeout[i][0] == aid) { clearTimeout(animaTimeout[i][1]); } } for (var i = 0; i < animaTimeout_2.length; i++) { if (animaTimeout_2[i][0] == aid) { clearTimeout(animaTimeout_2[i][1]); } } } if (!$(this).hasClass("anima") && an != obj) { cont = this; } else { if (cont != null && !$.contains(cont, this) || cont == null) { var pos = $(this).css("position"); if (pos != 'absolute' && pos != 'fixed') $(this).css("position", "relative"); var da_ = da; try { if ($(this).attr('class').indexOf("anima-") != -1) { var arr_a = $(this).attr('class').split(" "); for (var i = 0; i < arr_a.length; i++) { if (arr_a[i].indexOf("anima-") != -1) da_ = arr_a[i].replace("anima-", ""); } } } catch (e) { } $(this).css(cssInit(0, t)).removeClass(da_); var op = parseFloat($(this).css("opacity")); if (op > 0 && op < 1) $(this).css("opacity", 1); } } }); if (hidden) { $(an).css(cssInit(0, t)).css("opacity", 0); setTimeout(function () { $(an).css("opacity", 0); }, 400); } $.fn.setGlobalVar(animaTimeout, "animaTimeout"); $.fn.setGlobalVar(animaTimeout_2, "animaTimeout_2"); }(jQuery)); } function resetAnima(cnt) { (function ($) { if (isEmpty(cnt)) cnt = "body"; $(cnt).find("[data-anima],[data-fullpage-anima]").each(function () { var animation = $(this).attr("data-anima"); if (isEmpty(animation)) animation = $(this).attr("data-fullpage-anima"); if (!isEmpty(animation)) { $(cnt).find("[data-timeline] .anima").removeAttr("data-anima").removeAttr("data-fullpage-anima"); $(cnt).find("." + animation).each(function () { $(this).removeClass(animation).removeAttr("aid").css("opacity", 0); }); } }); }(jQuery)); } //OTHERS window.onload = function () { function a(a, b) { var c = /^(?:file):/, d = new XMLHttpRequest, e = 0; d.onreadystatechange = function () { 4 == d.readyState && (e = d.status), c.test(location.href) && d.responseText && (e = 200), 4 == d.readyState && 200 == e && (a.outerHTML = d.responseText) }; try { d.open("GET", b, !0), d.send() } catch (f) { } } var b, c = document.getElementsByTagName("*"); for (b in c) c[b].hasAttribute && c[b].hasAttribute("data-include") && a(c[b], c[b].getAttribute("data-include")) }; /* * # FUNCTIONS * ------------------------------------------------------------- * getURLParameter - Read the parameters of the url like www.site.com?paramter-name=value * openWindow - Open a url in a new center window similar to a popup window * onePageScroll - Scroll the page on target position with animations * getOptionsString - Get a array of options from HTML, details: www.framework-y.com/components/components-base.html#base-javascript * isEmpty - Perform multiple checks to determinate if a variable is null or empty * correctValue - Convert strings to number or boolean * isScrollView - Check if the target element is visible on the user's screen * */ function getURLParameter(name) { return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ""])[1].replace(/\+/g, '%20') || ""); } function openWindow(link, width, height) { if (typeof width === 'undefined') width = 550; if (typeof height === 'undefined') height = 350; var left = (screen.width / 2) - (width / 2); var top = (screen.height / 2) - (height / 2); window.open(link, 'targetWindow', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' + width + ',height=' + height + ', top=' + top + ', left=' + left); return false; } function onePageScroll(t) { if (!isEmpty(t)) { jQuery(t).find('a[href ^= "#"]').on('click', function (e) { e.preventDefault(); var target = this.hash, jtarget = jQuery(target); if (jtarget.length > 0) { try { jQuery('html, body').stop().animate({ 'scrollTop': (jtarget.offset().top - 60) }, 900, 'swing', function () { if (history.pushState) { history.pushState(null, null, target); } else { location.hash = target; } }); } catch (e) { } } else { if (target != "#" && target.length > 2 && jQuery(this).closest("nav").length) document.location = window.location.protocol + "//" + window.location.host; } }); } } function getOptionsString(txt, mainArray) { var optionsArr = txt.split(","); for (var i = 0; i < optionsArr.length; i++) { mainArray[optionsArr[i].split(":")[0]] = correctValue(optionsArr[i].split(":")[1]); } return mainArray; } function isEmpty(obj) { if (typeof (obj) !== "undefined" && obj !== null && obj != false && (obj.length > 0 || typeof (obj) == 'number' || typeof (obj.length) == "undefined") && obj !== "undefined") return false; else return true; } function correctValue(n) { return typeof n == "number" ? parseFloat(n) : n == "true" ? !0 : n == "false" ? !1 : n } function isScrollView(t) { if (!isEmpty(t)) { var elementTop = jQuery(t).offset().top + 400; var elementBottom = elementTop + jQuery(t).outerHeight() + 20; var viewportTop = jQuery(window).scrollTop(); var viewportBottom = viewportTop + window.innerHeight; return elementBottom > viewportTop && elementTop < viewportBottom; } } //MAIN BLOCK (function ($) { var arrFA = []; var firstLoad = true; var animaTimeout = []; var animaTimeout_2 = []; var default_anima; var window_width = window.innerWidth; var window_height = window.innerHeight; var body; var nav; var header; var parallax_items; var parallax_title_video = false; var footer_parallax; var sections_slider_parallax; //# DOCUMENT READY $(document).ready(function () { body = $("body"); nav = $("body > nav"); header = $(body).find(" > header"); parallax_items = $(body).find("[data-parallax]"); sections_slider_parallax = $(body).find(" > main > .section-slider[data-slider-parallax]"); //SOCIAL $(body).on("click", "[data-social]", function () { var a = $(this).attr("data-social"); var link = $(this).attr("data-social-url"); var purl = link; if (isEmpty(link)) purl = window.location.href; var url = 'https://www.facebook.com/sharer/sharer.php?u=' + purl; if (a == 'share-twitter') { let string = $('meta[name=description]').attr("content"); if (isEmpty(string)) { string = $('meta[name="twitter:description"]').attr("content"); } if (isEmpty(string)) { string = $('title').html(); } url = 'https://twitter.com/intent/tweet?text=' + string.replace('&','and'); if (!isEmpty(link)) url = 'https://twitter.com/intent/tweet?url=' + link; } if (a == 'share-pinterest') url = 'http://pinterest.com/pin/create/button/?url=' + purl; if (a == 'share-linkedin') url = 'https://www.linkedin.com/shareArticle?url=' + purl; openWindow(url); }); //ANIMATIONS $(body).find("[data-anima]").each(function () { var tr = $(this).attr("data-trigger"); if (isEmpty(tr) || tr == "scroll" || tr == "load") { var an = $(this).find(".anima,*[data-anima]"); if (isEmpty(an)) an = this; var cont = null; var x = 0; $(an).each(function () { if (!$(this).hasClass("anima") && an != this) { cont = this; } else { if (cont != null && !$.contains(cont, this) || cont == null) { $(this).css("opacity", 0); x++; } } }); if (x == 0) $(this).css("opacity", 0); } if (!isEmpty(tr) && tr == "load") initAnima(this); }); $(body).on("click", "[data-anima][data-trigger=click]", function () { outAnima(this); initAnima(this); }); $(body).on("mouseenter", "[data-anima][data-trigger=hover]", function () { initAnima(this); }); $(body).on("mouseleave", "[data-anima][data-trigger=hover]", function () { $(this).stop(true, false); outAnima(this); }); //# NAVIGATION MENU if (window_width > 992) { $(nav).on("click", ".search-box-menu > i", function () { $(this).parent().toggleClass("active"); }); $(body).on("mouseenter", "nav[data-menu-anima] .menu-cnt > ul > li > a,nav[data-menu-anima] .lan-menu > li > a", function () { $(this).parent().find(" > ul, > .mega-menu").css("opacity", 0).css("transition-duration", "0ms").showAnima($("nav").data("menu-anima"), null, 250); }); $(body).on("mouseenter", ".menu-subline .menu-cnt > ul li", function () { $(nav).find(".subline-bar ul").removeClass("active").eq($(this).index()).addClass("active"); }); $(nav).on("mouseleave", ".subline-bar", function () { $(this).find("ul").removeClass("active"); }); if ($(nav).hasClass("menu-side-collapse")) { $(nav).on("click", ".menu-cnt > ul > li > a", function () { var item = $(this).parent(); var active = $(item).hasClass("active"); $(nav).find(".menu-cnt > ul > li").removeClass("active"); if (!active) { var sub_menu = $(item).find(" > ul,.mega-menu"); $(item).addClass("active"); if (sub_menu.length) { var item_height = $(sub_menu).height() + 15; $(sub_menu).css("height", "0"); $(sub_menu).animate({ height: item_height }, 500, function () { $(sub_menu).css("height", "") }); } } }); } } else { $(body).on("click", ".menu-cnt > ul > li > a,.lan-menu a", function () { var li = $(this).parent(); var active = $(li).hasClass("active"); $(body).find(" > nav .menu-cnt > ul > li,.shop-menu-cnt,.lan-menu li").removeClass("active"); if (!active) $(li).addClass("active"); if ($(nav).hasClass("menu-subline")) { var bar = $(".subline-bar"); $(nav).find(".subline-bar ul").removeClass("active"); $(bar).css("margin-top", $(li).offset().top + $(li).height() + "px"); if (!active) { $(nav).find(".subline-bar ul").removeClass("active").eq($(li).index()).addClass("active"); } } }); $(nav).on("click", ".dropdown > a", function (e) { e.preventDefault(); }); $(body).on("click", ".shop-menu-cnt", function () { $(this).toggleClass("active"); }); $(body).on("click", ".menu-inner:not(.menu-inner-vertical) > ul > li > a", function () { $(this).parent().toggleClass("active"); }); if ($(nav).hasClass("menu-fixed")) { $(nav).find(".menu-cnt").css("max-height", (window_height - 5 - $(nav).find(" > .container").outerHeight()) + "px"); } } $(nav).on("click", ".menu-btn", function () { let active = $(nav).hasClass("active"); let menu_cnt = $(nav).find(".menu-cnt"); let h; if (active) { h = 0 } else { $(menu_cnt).css({ "opacity": "0", "height": "auto" }); h = $(menu_cnt).outerHeight(); $(menu_cnt).css({ "opacity": "", "height": "" }); } if (!active) $(nav).addClass("active"); $(menu_cnt).animate({ height: h }, 300, function () { setTimeout(function () { if (active) { $(nav).removeClass("active"); $(menu_cnt).css("height", "0"); } else { $(menu_cnt).css("height", "auto"); } }, 300); }); }); $(body).on("click", ".menu-inner-vertical .dropdown", function () { var active = $(this).hasClass("active"); $(this).closest(".menu-inner").find(".dropdown").removeClass("active"); if (!active) $(this).addClass("active"); }); $(body).on("click", ".menu-inner:not(.menu-inner-vertical) > div", function () { $(this).parent().toggleClass("active"); }); onePageScroll($(".menu-inner,.menu-one-page")); //# OTHERS if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) { $(body).addClass("iex"); } $(body).on("click", 'a[href="#"]', function (e) { e.preventDefault(); }); $(body).find("[data-href].lightbox").each(function () { $(this).attr("href", $(this).attr("data-href")); $(this).initMagnificPopup(); }); $(body).on("click", "[data-href]", function (e) { var css = $(this).attr("class"); if (isEmpty(css) || (css.indexOf("scroll-to") == -1 && css.indexOf("lightbox") == -1)) { var link = $(this).attr("data-href"); if (link.indexOf("#") == 0) { if (link != "#") { $(link).scrollTo(); } e.preventDefault(); } else { var target = $(this).attr("data-target"); if (!isEmpty(target) && target == "_blank") window.open(link); else document.location = link; } } }); $(body).find(".full-screen").each(function () { $(this).sizeFullScreen($(this).attr("data-offset"), $(this).attr("data-min-height")); }); $(body).on("click", ".icon-links-popup > i", function () { $(this).parent().toggleClass("active"); }); if (window_width > 992) { $(".section-two-blocks .content").each(function () { var t = this; setTimeout(function () { var h = $(t).outerHeight(); var cnt = $(t).closest(".section-two-blocks"); if (isEmpty($(cnt).attr("data-parallax"))) $(cnt).css("height", h); $(cnt.find(".row > div:first-child")).renderLoadedImgs(); }, 300); }); footer_parallax = $(body).find(" > footer.footer-parallax"); if ($(footer_parallax).length) { $(body).find("main").addClass("footer-parallax-cnt").css("margin-bottom", $(footer_parallax).outerHeight() + "px"); } } //# WP $(nav).find("a").each(function () { if ($(this).attr("href") == window.location.href) { if ($(this).closest(".dropdown-menu").length) { $(this).closest(".dropdown.multi-level:not(.dropdown-submenu),.dropdown.mega-dropdown").addClass("active"); } else { $(this).closest("li").addClass("active"); } } }); //ALBUM $(body).on("click", ".album-box", function () { var album = $(this).closest(".album"); var animation = $(album).attr("data-album-anima"); if (isEmpty(animation)) { animation = "fade-bottom"; } $(".album-title > span").html($(this).find(".caption h3").html()); $(album).addClass("active"); $(album).find(".album-item").removeClass("active " + animation).eq($(this).index()).addClass("active").showAnima(animation); }); $(body).on("click", ".album-title > a", function () { var album = $(this).closest(".album"); $(album).removeClass("active"); $(album).find(".album-list").css("opacity", 0).showAnima("fade-in") }); //BACKGROUND VIDEO if ($(header).hasClass("header-video")) { $(header).find(" > video").set_video_size($(header).width(), $(header).height()); if ($(header).hasClass("video-parallax")) parallax_title_video = true; } $(body).find("[data-video-youtube]").each(function () { $(this).initYoutubeVideo(); }); $(".section-video,.section-block .block-media").each(function () { $(this).find(" > video").set_video_size($(this).width(), $(this).height()); }); //BACKGROUND SLIDER $(".section-slider").each(function () { $(this).init_background_slider(); }); if ($(header).hasClass("header-slider")) { $(header).init_background_slider(); } //SCROLL METHODS setTimeout(function () { $(window).scroll(); }, 50); $(body).on("click", ".scroll-top", function () { $("html, body").stop().animate({ scrollTop: 0 }, '500', 'swing'); }); $(body).on("click", ".scroll-to", function (e) { var t = $(this).attr("data-scroll-to"); if (isEmpty(t)) t = $(this).attr("href"); if (isEmpty(t)) t = $(this).attr("data-href"); try { $(t).scrollTo(); } catch (e) { } if (t.indexOf("#") == 0 && ($(this).hasClass("btn") || $(this).hasClass("btn-text"))) e.preventDefault(); }); //LOADER $(body).addClass("no-transactions"); $(body).find(' > #preloader').fadeOut(300); setTimeout(function () { $(body).removeClass("no-transactions"); }, 400); //# PAGE SCROLL var header_cnt = $(header).find(".container"); var data_anima = $("[data-anima]"); var scroll_1 = $(".scroll-hide"); var scroll_2 = $(".scroll-change"); var scroll_3 = $(".scroll-show"); var scroll_4 = $(".scroll-top-btn"); var scroll_5 = $(".scroll-show-mobile"); var scroll_6 = $("nav.scroll-change .navbar-brand"); var scroll_len = $(".fp-enabled").length; var old_scroll = 0; //Scroll detect var scroll_detect = $("[data-scroll-detect] li,[data-scroll-docs] h4"); var scroll_detect_items = []; if (scroll_detect.length) { $(scroll_detect).each(function () { var target = $(this).find("a"); if (target.length > 0) { target = $(target).attr("href"); if (target.length > 1 && target.indexOf("#") == 0) { scroll_detect_items.push($(body).find($(this).find("a").attr("href"))); } } }); } $(window).scroll(function () { var scroll = $(window).scrollTop(); if (old_scroll != scroll || old_scroll == 0) { var po = window.pageYOffset; var go = true; var dh = $(document).height(); old_scroll = scroll; //TOP TITLE if (scroll < 2200) { $(header_cnt).css("margin-top", po).css("opacity", (100 / po < 1) ? (100 / po) : 1); if (parallax_title_video) { $(header).find(" > video").css("margin-top", po); } } //SCROLL FUNCTIONS if (scroll > 100 && go) { go = false; $(scroll_1).addClass('hidden'); $(scroll_2).addClass("scroll-css"); $(scroll_3).addClass('showed'); $(scroll_4).css("opacity", 1); $(nav).addClass("scroll-menu"); if (window_width < 994) $(scroll_5).removeClass('hidden'); $(scroll_6).hide().show(0); if ($(footer_parallax).length) { if (scroll + window_height > (dh - window_height)) { $(footer_parallax).css("opacity", 1); } else $(footer_parallax).css("opacity", 0); } } if (scroll < 100) { go = true; $(scroll_1).removeClass("hidden"); if (!scroll_len) $(scroll_2).removeClass("scroll-css"); $(scroll_3).removeClass('showed'); $(scroll_5).css("opacity", 0); $(scroll_6).hide().show(0); $(nav).removeClass("scroll-menu"); } //Scroll animation $(data_anima).each(function () { var tr = $(this).attr("data-trigger"); if (isEmpty(tr) || tr == "scroll") { if (isScrollView(this)) { if (!isEmpty($(this).attr("data-anima"))) initAnima(this); $(this).attr("data-anima", ""); } } }); //Scroll detect $(scroll_detect_items).each(function (index) { if (isScrollView(this)) { $(scroll_detect).removeClass("active").eq(index).addClass("active") } }); //Section slider parallax $(sections_slider_parallax).each(function (index) { if (isScrollView(this)) { $(sections_slider_parallax).eq(index).addClass("active") } else { $(this).removeClass("active"); } }); } }); $(window).resize(function () { window_width = $(window).width(); window_height = $(window).height(); }); //WOOCOMMERCE AND WORDPRESS var shop_menu = $(body).find(".shop-menu-cnt"); populateShoppingCart(); function populateShoppingCart() { if (typeof ajax_url != 'undefined' && $(shop_menu).length) { jQuery.ajax({ method: "POST", url: ajax_url, data: { action: 'hc_get_wc_cart_items' } }).done(function (response) { if (!isEmpty(response) && response.length > 10) { var arr = JSON.parse(response); if (arr.length > 0) { var currency = $(shop_menu).find(".cart-total").attr("data-currency"); var total = 0; var html = ""; for (var i = 0; i < arr.length; i++) { total += arr[i]["price"] * arr[i]["quantity"]; html += '
  • ' + arr[i]["title"] + '
    ' + arr[i]["quantity"] + ' x ' + currency + "" + arr[i]["price"] + '
  • '; } $(shop_menu).find(".shop-cart").html(html); $(shop_menu).find(".cart-total span").html(currency + "" + total); $(shop_menu).removeClass("shop-menu-empty"); $(shop_menu).find("i").html('' + arr.length + ''); } } }); } } $(body).on("click", ".ajax_add_to_cart,.product-remove a", function () { setTimeout(function () { populateShoppingCart(); }, 2000); }); if ($(body).find(".comment-list .item").length == 0) { $(body).find(".comments-cnt").addClass("no-comments"); } /* * # THIRD PARTS PLUGINS * ------------------------------------------------------------- * Functions and methods that menage the execution of external plugins */ //jquery.miniTip.min.js $(body).find("[data-minitip]").executeFunction("miniTip", function () { $("[data-minitip]").each(function () { $(this).initMinitip(); }); }); //imagesloaded.min.js $(body).find(".img-box,.media-box").executeFunction("imagesLoaded", function () { $(".img-box,.media-box").each(function () { $(this).renderLoadedImgs(); }); }); //isotope.min.js $(body).find(".maso-list").executeFunction("isotope", function () { setTimeout(function () { $.fn.setGlobalVar(false, "firstLoad"); }, 1000); $('.maso-list').each(function () { if ($(this).attr("data-trigger") != "manual") $(this).initIsotope(); }); }); $(body).on("click", ".maso-list .menu-inner a", function () { var f = $(this).attr('data-filter'); var t = $(this).closest(".maso-list"); if (!isEmpty(f)) $(t).find('.maso-box').isotope({ filter: "." + $(this).attr('data-filter') }); var lm = $(t).find('.load-more'); if (lm.length) { setTimeout(function () { var i = 0; var num = parseInt($(lm).attr("data-page-items"), 10); $(t).find('.maso-box .maso-item').each(function () { if ($(this).attr("style").indexOf("display: none") == -1) i++; }); if (i < num) { $(t).find('.load-more').click(); var intervalMaso = setInterval(function () { if ($(t).find('.maso-box').height() < 10) { $(t).find('.load-more').click(); } else { clearInterval(intervalMaso); } }, 100); } }, 450); } if ($(t).find('.maso-box .maso-item').length < 3) $(t).find('.load-more-maso').click(); $(t).find("li").removeClass("active"); $(this).closest("li").addClass("active"); }); $(body).on("click", ".maso-order", function () { var t = $(this).closest(".maso-list").find('.maso-box'); var sort = $(this).attr("data-sort"); if (sort == "asc") { t.isotope({ sortAscending: false }); $(this).attr("data-sort", "desc"); $(this).html(""); } else { t.isotope({ sortAscending: true }); $(this).attr("data-sort", "asc"); $(this).html("data-sort"); $(this).html(""); } }); //magnific-popup.min.js $(body).find(".grid-list.list-gallery .grid-box,.maso-list.list-gallery .maso-box, .lightbox,.box-lightbox,.lightbox-trigger,.woocommerce-product-gallery__image a").executeFunction("magnificPopup", function () { $(body).find('.grid-list.list-gallery .grid-box,.maso-list.list-gallery .maso-box,.lightbox,.woocommerce-product-gallery__image a').each(function () { $(this).initMagnificPopup(); }); $(window).scroll(function (event) { $(body).find("[data-trigger=scroll].lightbox-trigger").each(function () { if (isScrollView(this)) { $($(this).attr("href")).initMagnificPopup(); $(this).attr("data-trigger", "null"); } }); }); //Deep linking var url = getURLParameter("lightbox"); var id = getURLParameter("id"); if (!isEmpty(id)) id = "#" + id + " "; if (!isEmpty(url)) { if (url.indexOf("list") > -1) { $(id + ".grid-box .grid-item:nth-child(" + url.replace("list-", "") + ") .img-box").click(); $(id + ".maso-box .maso-item:nth-child(" + url.replace("list-", "") + ") .img-box").click(); } else { if (url.indexOf("slide") > -1) { $(id + ".slides > li:nth-child(" + url.replace("slide-", "") + ") .img-box").click(); } else { var t = $("#" + url); if ($(t).length) { if ($(t).hasClass("img-box") || $(t).hasClass("lightbox")) { $(t).click(); } else { var c = $(t).find(".img-box,.lightbox"); if (c.length) { $(c).click(); } else { if ($(t).hasClass("box-lightbox")) { $.magnificPopup.open({ type: 'inline', items: { 'src': '#' + url }, mainClass: 'lightbox-on-load' }); } } } } } } } }); $(body).find("[data-trigger=load].box-lightbox").each(function () { var e = $(this).attr("data-expire"); if (!isEmpty(e) && e > 0) { var id = $(this).attr("id"); if (isEmpty(Cookies.get(id))) { $(this).initMagnificPopup(); Cookies.set(id, 'expiration-cookie', { expire: e }); } } else $(this).initMagnificPopup(); }); //slimscroll.min.js $(body).find(".scroll-box,.menu-side").executeFunction("slimScroll", function () { $(body).find(".scroll-box").each(function () { $(this).initSlimScroll(); }); if (window_width > 992) { var menu = $(body).find(".menu-side-collapse .menu-cnt"); $(menu).slimScroll({ height: $(menu).height() - 20, color: $(menu).attr("data-bar-color"), size: '4px', distance: '0px', start: 'bottom' }); } }); //parallax.min.js $(parallax_items).executeFunction("parallax", function () { $(parallax_items).each(function (index) { var ken = ""; $(this).initParallax(); if ($(this).hasClass("ken-burn-in")) ken = "ken-burn-in"; if ($(this).hasClass("ken-burn-out")) ken = "ken-burn-out"; if ($(this).hasClass("ken-burn-center")) ken = "ken-burn-center"; if ($(this).hasClass("parallax-side")) ken += " parallax-side-cnt"; if (ken != "") { setTimeout(function () { $(".parallax-mirror:eq(" + (index - 1) + ")").addClass(ken); }, 100) } }); var timerVar; var times = 0; var isFP = $("html").hasClass("fp-enabled"); timerVar = self.setInterval(function () { if (times > 30) { clearInterval(timerVar); } else { if (!isFP) $(window).trigger('resize').trigger('scroll'); } times = times + 1; }, 100); }); //Progress, counter, countdown $(body).find(".countdown [data-time],[data-to],[data-progress]").executeFunction("downCount", function () { $(body).init_progress_all(); }); }); /* * FUNCTIONS * ------------------------------------------------------------- * toggleClick - Manage on click and on second click events * showAnima - Start an animation * sizeFullScreen - Set fullscreen sizes to the target element * scrollTo - Scroll the page on target position with animations * expandItem - Open a container with animation * collapseItem - Close a container with animation * set_video_size - Set the background video sizes on mobile and desktop * getHeight - Get the correct height of an item * executeFunction - Check if a script is loaded and execute the gived function the script load has been completed * getGlobalVar - Read a global variable * setGlobalVar - Set a global variable */ (function (n) { if (typeof define == "function" && define.amd) define(n); else if (typeof exports == "object") module.exports = n(); else { var i = window.Cookies, t = window.Cookies = n(); t.noConflict = function () { return window.Cookies = i, t } } })(function () { function n() { for (var n = 0, r = {}, t, i; n < arguments.length; n++) { t = arguments[n]; for (i in t) r[i] = t[i] } return r } function t(i) { function r(t, u, f) { var o, s; if (arguments.length > 1) { f = n({ path: "/" }, r.defaults, f); typeof f.expires == "number" && (s = new Date, s.setMilliseconds(s.getMilliseconds() + f.expires * 864e5), f.expires = s); try { o = JSON.stringify(u); /^[\{\[]/.test(o) && (u = o) } catch (y) { } return u = encodeURIComponent(String(u)), u = u.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent), t = encodeURIComponent(String(t)), t = t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent), t = t.replace(/[\(\)]/g, escape), document.cookie = [t, "=", u, f.expires && "; expires=" + f.expires.toUTCString(), f.path && "; path=" + f.path, f.domain && "; domain=" + f.domain, f.secure ? "; secure" : ""].join("") } t || (o = {}); for (var l = document.cookie ? document.cookie.split("; ") : [], a = /(%[0-9A-Z]{2})+/g, h = 0; h < l.length; h++) { var v = l[h].split("="), c = v[0].replace(a, decodeURIComponent), e = v.slice(1).join("="); e.charAt(0) === '"' && (e = e.slice(1, -1)); try { if (e = i && i(e, c) || e.replace(a, decodeURIComponent), this.json) try { e = JSON.parse(e) } catch (y) { } if (t === c) { o = e; break } t || (o[c] = e) } catch (y) { } } return o } return r.get = r.set = r, r.getJSON = function () { return r.apply({ json: !0 }, [].slice.call(arguments)) }, r.defaults = {}, r.remove = function (t, i) { r(t, "", n(i, { expires: -1 })) }, r.withConverter = t, r } return t() }); $.fn.toggleClick = function (n) { var t = arguments, r = n.guid || $.guid++, i = 0, u = function (r) { var u = ($._data(this, "lastToggle" + n.guid) || 0) % i; return $._data(this, "lastToggle" + n.guid, u + 1), r.preventDefault(), t[u].apply(this, arguments) || !1 }; for (u.guid = r; i < t.length;) t[i++].guid = r; return this.click(u) }; $.fn.showAnima = function (a, b, time) { var t = this; if (a === "default") a = $.fn.getGlobalVar("default_anima"); $(t).removeClass(a); if (!isEmpty(b) && b === "complete") { $(t).attr("data-anima", a).attr("data-trigger", "manual"); initAnima(t); } else { setTimeout(function () { if (isEmpty(time)) { time = $(t).data("time"); } $(t).css(cssInit(0, (isEmpty(time) ? 500 : time))).addClass(a); $(t).css('opacity', '') }, 100); } }; $.fn.sizeFullScreen = function (offset, min) { if (isEmpty(offset)) offset = 0; if (isEmpty(min)) min = 0; if ((window_height - offset) > min && !isEmpty(this)) { $(this).css("height", window_height - offset); } } $.fn.scrollTo = function () { if (!isEmpty(this)) { $('html, body').animate({ scrollTop: $(this).offset().top - 50 }, 1000); } } $.fn.expandItem = function () { var t = this; $(t).css("display", "block").css("height", ""); var h = $(t).height(); $(t).css("height", 0).css("opacity", 1); $(t).animate({ height: h }, 300, function () { $(t).css("height", "") }); } $.fn.collapseItem = function () { var t = this; $(t).animate({ height: 0 }, 300, function () { $(t).css("display", "none") }); } $.fn.set_video_size = function (w, h) { var video_height = $(this).height(); var video_width = $(this).width(); var new_width; var new_height; //Check if video height/width smaller if (video_height < h || video_width < w) { var proportion = h / video_height; new_width = w * proportion; $(this).css("width", new_width + "px"); } new_height = $(this).height(); //Check if video X centered if (new_width > w) { $(this).css("margin-left", "-" + ((new_width - w) / 2) + "px"); } //Check if video Y centered if (new_height > h) { $(this).css("margin-top", "-" + ((new_height - h) / 2) + "px"); } } $.fn.initYoutubeVideo = function () { var id = $(this).attr("data-video-youtube"); if (!isEmpty(id)) { if (id.indexOf("http:") != -1 || id.indexOf("www.you") != -1 || id.indexOf("youtu.be") != -1) { if (id.indexOf("?v=") != -1) id = id.substring(id.indexOf("v=") + 2); if (id.indexOf("youtu.be") != -1) id = id.substring(id.lastIndexOf("/") + 1); } var vq = $(this).attr("data-video-quality"); var pars = ""; if (!isEmpty(vq)) { if (vq == "hc-hd") pars += "&vq=hd1080"; } $(this).html(''); } } $.fn.getHeight = function () { if (!isEmpty(this)) return $(this)[0].clientHeight; else return 0; } $.fn.executeFunction = function (functionName, myfunction) { var timer; if ($(this).length > 0) { if (typeof window["jQuery"]["fn"][functionName] === "function" || typeof window[functionName] === "function") { myfunction(); } else { timer = setInterval(function () { if (typeof window["jQuery"]["fn"][functionName] === "function" || typeof window[functionName] === "function") { myfunction(); clearInterval(timer); } }, 300); } } } $.fn.getGlobalVar = function (name) { return eval(name); }; $.fn.setGlobalVar = function (value, name) { window[name] = value; }; $.fn.init_background_slider = function () { var interval = $(this).attr("data-interval"); var slides = $(this).find(" > .background-slider > div"); var count = $(slides).length; var index = 1; if (interval != "0") { if (isEmpty(interval)) interval = 3000; setInterval(function () { index += 1; $(slides).removeClass("active"); $(slides).eq((index % count)).addClass("active"); }, interval); } }; /* * # THIRD PARTS PLUGINS FUNCTIONS * ------------------------------------------------------------- * Functions and methods that menage the execution of external plugins */ //jquery.miniTip.min.js $.fn.initMinitip = function () { $(this).miniTip({ title: $(this).attr("data-title"), content: $(this).attr("data-minitip"), anchor: $(this).attr("data-pos"), delay: 500, }); } //imagesloaded.min.js $.fn.renderLoadedImgs = function () { if ($.isFunction($.fn.imagesLoaded)) { var isIsotope = false; var $isotope; var imgLoad = imagesLoaded($(this)); if ($(this).hasClass("maso-box")) { isIsotope = true; $isotope = this; } imgLoad.on('progress', function (instance, image) { if (!$(image.img).parent().hasClass("hc-image")) { var result = image.isLoaded ? 'loaded' : 'broken'; var target = "a" if ($(image.img).closest(".img-box").length) target = ".img-box"; else if ($(image.img).closest(".media-box").length) target = ".media-box"; else if ($(image.img).closest("ul.glide__slides").length) target = ".glide__slides"; else if ($(image.img).closest("figure").length) target = "figure"; var cont = $(image.img).closest(target); var imgHeight = image.img.clientHeight; var imgWidth = image.img.clientWidth; var colWidth = 0; var colHeight = 0; if (!isEmpty(cont.get(0))) { colWidth = cont.get(0).clientWidth; colHeight = cont.get(0).clientHeight; } if (result == "loaded") { if (isIsotope) { $isotope.isotope('layout'); var mi = $(image.img).closest('.maso-item'); $(mi).css("visibility", "visible"); $(mi).find("> *").animate({ "opacity": 1 }, 300); } $(image.img).css("transition", "none"); if (imgHeight > colHeight) { $(image.img).css("margin-top", "-" + Math.floor(((imgHeight - colHeight) / 2)) + "px"); } else { var proportion = colHeight / imgHeight; var newWidth = imgWidth * proportion; if (newWidth / imgWidth > 1) { $(image.img).css("max-width", Math.ceil(newWidth) + "px").css("width", Math.ceil(newWidth) + "px"); $(image.img).css("margin-left", "-" + Math.floor(((newWidth - colWidth) / 2)) + "px"); } } setTimeout(function () { $(image.img).css("transition", ""); }, 100); } } }); } } //isotope.min.js $.fn.initPagination = function () { var opt = $(this).attr("data-options"); var a = $(this).attr("data-pagination-anima"); var p = parseInt($(this).attr("data-page-items"), 10); var c = $(this).closest(".maso-list"); var t = $(c).find(".maso-box"); var items = t.isotope('getItemElements'); var n = $(items).length; var type = ""; if ($(this).hasClass('load-more')) type = 'load-more'; if ($(this).hasClass('pagination')) type = 'pagination'; for (var i = p; i < n; i++) { $(items[i]).addClass("isotope-hidden"); } setTimeout(function () { for (var i = p; i < n; i++) { t.isotope('remove', items[i]); } t.isotope('layout'); }, 1000); if (type == 'pagination') { var optionsArr; var options = { totalPages: Math.ceil(n / p), visiblePages: 7, first: "First", last: "Last", next: "Next", prev: "Previous", onPageClick: function (event, page) { t.isotope('remove', t.isotope('getItemElements')); for (var i = (p * (page - 1)); i < (p * (page)); i++) { $(items[i]).removeClass("isotope-hidden"); t.isotope('insert', items[i]); } t.isotope('layout'); if (!isEmpty(opt) && opt.indexOf("scrollTop:true") != -1) $(c).scrollTo(); } } if (!isEmpty(opt)) { optionsArr = opt.split(","); options = getOptionsString(opt, options); } $(this).twbsPagination(options); } if (type == 'load-more') { var tl = this; $(tl).on("click", function (index) { loadMoreMaso(this); }); if (!isEmpty(opt) && opt.indexOf("lazyLoad:true") != -1) { $(window).scroll(function () { if ($(window).scrollTop() + window_height == $(document).height()) { if ($.fn.getGlobalVar("firstLoad")) setTimeout(function () { loadMoreMaso(tl) }, 800); else loadMoreMaso(tl); } }); } } function loadMoreMaso(obj) { var page = $(obj).attr("data-current-page"); if (isEmpty(page)) page = 1; page++; $(obj).attr("data-current-page", page); var s = p * (page - 1); var e = p * (page); for (var i = s; i < (p * (page)); i++) { $(items[i]).removeClass("isotope-hidden"); t.isotope('insert', items[i]); } t.isotope('layout'); if ($.isFunction($.fn.renderLoadedImgs)) { $(t).renderLoadedImgs(); } if (e >= n) $(obj).hide(300); } } $.fn.initIsotope = function () { if ($.isFunction($.fn.isotope)) { var m = $(this).find('.maso-box'); var menu = $(this).find(".menu-inner"); var optionsString = $(this).attr("data-options"); var optionsArr; var options = { itemSelector: '.maso-item', percentPosition: true, masonry: { columnWidth: '.maso-item', horizontalOrder: true }, getSortData: { number: function (e) { return parseInt(jQuery(e).attr('data-sort'), 10); } }, sortBy: 'number' } if (!isEmpty(optionsString)) { optionsArr = optionsString.split(","); options = getOptionsString(optionsString, options); } if ($(menu).length) { var len = $(m).find(".maso-item").length; $(menu).find("li a:not(.maso-filter-auto)").each(function () { var cat = $(this).attr("data-filter"); var current_len = $(m).find("." + cat).length; if ((current_len == len || current_len == 0) && (cat != "maso-item" && !isEmpty(cat))) { $(this).closest("li").remove(); } }); } $(m).isotope(options); if ($.isFunction($.fn.renderLoadedImgs)) { var items = m.isotope('getItemElements'); $(m).renderLoadedImgs(); } if ($(this).find("img").length == 0) { $(this).find(".maso-item").css("visibility", "visible"); $(this).find(".maso-item > *").animate({ "opacity": 1 }, 300); } $(this).find(".pagination,.load-more").initPagination(); } }; //parallax.min.js $.fn.initParallax = function (img) { var bleed = $(this).attr("data-bleed"); var pos = $(this).attr("data-position"); var id = $(this).attr("id"); if (isEmpty(bleed) && !(bleed == "0")) bleed = 70; if (isEmpty(pos)) pos = "center"; var arr = { bleed: bleed, positionY: pos }; if (!isEmpty(img)) { arr["imageSrc"] = img; } $(this).parallax(arr); } //magnific-popup.min.js $.fn.initMagnificPopup = function () { var obj = this; var optionsString = $(obj).attr("data-options"); var trigger = $(obj).attr("data-trigger"); if (isEmpty(trigger)) trigger = ""; var a = $(obj).attr("data-lightbox-anima"); var href = $(obj).attr("href"); if (isEmpty(href)) href = ""; if (isEmpty(a)) a = $(obj).parent().attr("data-lightbox-anima"); var optionsArr; var options = { type: 'iframe', image: { cursor: 'mfp-zoom-out-cur mfp-active' + (!isEmpty($(this).attr("title")) ? " mfp-title-active" : ""), } } if (!isEmpty(optionsString)) { optionsArr = optionsString.split(","); options = getOptionsString(optionsString, options); } if (isEmpty(options['mainClass'])) options['mainClass'] = ""; if (trigger == "load" || trigger == "scroll") { var l = $(obj).attr("data-link"); var c = $(obj).attr("data-click"); if (isEmpty(l)) { href = "#" + $(this).attr("id"); options['mainClass'] += ' custom-lightbox'; } else href = l; if (!isEmpty(c)) { $("body").on("click", ".lightbox-on-load", function () { if ($(obj).attr("data-click-target") == "_blank") window.open(c); else document.location = c; }); } } if ($(obj).hasClass("grid-box") || $(obj).hasClass("maso-box")) { options["type"] = "image"; options["delegate"] = "a.img-box,.cnt-box a:not(.img-box),.media-box"; options["gallery"] = { enabled: 1 }; } if ((href.indexOf(".jpg") != -1) || (href.indexOf(".png") != -1) || (href.indexOf("placehold.it") != -1)) { options['type'] = 'image'; } if (href.indexOf("#") == 0) { options['type'] = 'inline'; options['mainClass'] += ' box-inline'; options['closeBtnInside'] = 0; } options["callbacks"] = { open: function () { var mfp_cnt = $('.mfp-content'); if (!isEmpty(a)) { $(mfp_cnt).showAnima(a); $(mfp_cnt).css("opacity", 0); } else { if ((!isEmpty(optionsString)) && optionsString.indexOf("anima:") != -1) { $(mfp_cnt).showAnima(options['anima']); $(mfp_cnt).css("opacity", 0); } } if (href.indexOf("#") == 0) { $(href).css("display", "block"); } var gm = $(mfp_cnt).find(".google-map"); if ($.isFunction($.fn.googleMap) && $(gm).length) $(gm).googleMap(); }, change: function (item) { var h = this.content; $('.mfp-container').removeClass("active"); setTimeout(function () { $('.mfp-container').addClass("active"); }, 500); var gm = $(h).find(".google-map"); if ($.isFunction($.fn.googleMap) && $(gm).length) $(gm).googleMap(); }, close: function () { if ($.isFunction($.fn.fullpage) && $.isFunction($.fn.fullpage.setMouseWheelScrolling)) $.fn.fullpage.setMouseWheelScrolling(true); } }; if (trigger != "load" && trigger != "scroll") $(obj).magnificPopup(options); else { if (href.indexOf("#") == 0) $(href).css("display", "block"); options['items'] = { 'src': href } options['mainClass'] += ' lightbox-on-load'; $.magnificPopup.open(options); } }; //slimscroll.min.js $.fn.restartSlimScroll = function () { var parent = $(this).parent(); if ($(parent).hasClass("slimScrollDiv")) { $(this).removeData('slimScroll'); $(parent).find(".slimScrollBar").remove(); $(parent).find(".slimScrollRail").remove(); $(parent).replaceWith(this); } $(this).initSlimScroll(); } $.fn.initSlimScroll = function () { function getHeightFullscreen(t, wh) { if (vh == "fullscreen") { var h = wh; if (!isEmpty(lh) && ((wh - lh) > 150)) h = wh - lh; else h = wh - 100; vh = h; } return vh; } let disable_md = $(this).hasClass("disable-md"); let disable_sm = $(this).hasClass("disable-sm"); if ((disable_md && window_width > 992) || (disable_sm && window_width > 768) || (!disable_md && !disable_sm) || window_width > 992) { var vh = $(this).attr("data-height"); var lh = $(this).attr("data-offset"); var railColor = $(this).attr("data-rail-color"); var barColor = $(this).attr("data-bar-color"); var optionsString = $(this).attr("data-options"); var optionsArr; var options = { height: 0, size: '4px', railVisible: true, alwaysVisible: true, color: (isEmpty(barColor) ? '#888888' : barColor), railColor: (isEmpty(railColor) ? '#e6e6e6' : railColor), railOpacity: 1 } if (!isEmpty(optionsString)) { optionsArr = optionsString.split(","); options = getOptionsString(optionsString, options); } if (window_width < 993) options['alwaysVisible'] = true; if (vh == "fullscreen") { let h; if (!isEmpty(lh) && ((window_height - lh) > 150)) h = window_height - lh; else h = window_height - 100; vh = h; } var lh = $(this).attr("data-height-remove"); if (isEmpty(lh)) lh = 0; vh += ""; if ((vh.indexOf("#") != -1) || (vh.indexOf(".") != -1)) { $(this).css("height", "0px").css("overflow", "hidden"); vh = "" + ($(this).closest(vh).height() - lh); $(this).css("height", "").css("overflow", ""); } options['height'] = vh + "px"; $(this).slimScroll(options); var gm = $(this).find(".google-map"); if ($.isFunction($.fn.googleMap) && $(gm).length) $(gm).googleMap(); if (!options['alwaysVisible']) $(".slimScrollBar").hide(); if (window_width < 993) $(this).find(".slimScrollBar").css("height", "50px"); $(this).on("mousewheel DOMMouseScroll", function (n) { n.preventDefault() }); $(this).slimScroll().bind('slimscroll', function (e, pos) { if (pos != "scrolling") { $(this).removeClass("scroll-pos-top").removeClass("scroll-pos-bottom"); } $(this).addClass("scroll-pos-" + pos); }); } } }(jQuery)); jQuery.fn.extend({ cssInt: function (prop) { return parseInt(this.css(prop), 10) || 0; }, hasAnyClass: function () { for (var i = 0; i < arguments.length; i++) { if (this.hasClass(arguments[i])) { return true; } } return false; } });