"use strict"; (function () { // Global variables var userAgent = navigator.userAgent.toLowerCase(), initialDate = new Date(), $document = $(document), $window = $(window), $html = $("html"), $body = $("body"), isDesktop = $html.hasClass("desktop"), isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1, isRtl = $html.attr("dir") === "rtl", isIE = userAgent.indexOf("msie") !== -1 ? parseInt(userAgent.split("msie")[1], 10) : userAgent.indexOf("trident") !== -1 ? 11 : userAgent.indexOf("edge") !== -1 ? 12 : false, isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), isNoviBuilder = false, windowReady = false, plugins = { rdNavbar: $('.rd-navbar'), swiper: $('.swiper-slider'), viewAnimate: $('.view-animate'), lightGallery: $('[data-lightgallery="group"]'), lightGalleryItem: $('[data-lightgallery="item"]'), lightDynamicGalleryItem: $('[data-lightgallery="dynamic"]'), customToggle: $('[data-custom-toggle]'), preloader: $('#page-loader'), slick: $('.slick-slider'), customWaypoints: $('[data-custom-scroll-to]'), particles: $('#particles-js') }; // console.log(); /** * @desc Check the element was been scrolled into the view * @param {object} elem - jQuery object * @return {boolean} */ function isScrolledIntoView(elem) { if (isNoviBuilder) return true; return elem.offset().top + elem.outerHeight() >= $window.scrollTop() && elem.offset().top <= $window.scrollTop() + $window.height(); } /** * @desc Calls a function when element has been scrolled into the view * @param {object} element - jQuery object * @param {function} func - init function */ function lazyInit(element, func) { var scrollHandler = function () { if ((!element.hasClass('lazy-loaded') && (isScrolledIntoView(element)))) { func.call(element); element.addClass('lazy-loaded'); } }; scrollHandler(); $window.on('scroll', scrollHandler); } // Initialize scripts that require a loaded window $window.on('load', function () { // Page loader & Page transition if (plugins.preloader.length && !isNoviBuilder) { pageTransition({ target: document.querySelector('.page'), delay: 0, duration: 500, classIn: 'fadeIn', classOut: 'fadeOut', classActive: 'animated', conditions: function (event, link) { return link && !/(\#|javascript:void\(0\)|callto:|tel:|mailto:|:\/\/)/.test(link) && !event.currentTarget.hasAttribute('data-lightgallery') && !event.currentTarget.hasAttribute('target'); }, onTransitionStart: function (options) { setTimeout(function () { plugins.preloader.removeClass('loaded'); }, options.duration * .75); }, onReady: function () { plugins.preloader.addClass('loaded'); windowReady = true; } }); } }); // Initialize scripts that require a finished document $(function () { isNoviBuilder = window.xMode; if ($(".subnavlist ul li").length > 0) { $(".subnavlist").attr("style", "display:block !important;"); $(".subnavlist li.subnavli").each(function (e) { if ($(this).find(".dropdown-menu").length > 0) { $(this).find("a.dropdown-toggle").attr("href", "#"); } if ($(this).find(".dropdown-menu a.dropdown-item.active").length > 0) { $(this).find("a.dropdown-toggle").addClass("active"); } }); } function addSubNavSwiper() { if ($(".swiper-subnav").length > 0) { $(".swiper-subnav").addClass("swiper-container"); $(".swiper-subnav").find("ul").addClass("swiper-wrapper"); $(".swiper-subnav li.subnavli").each(function (e) { $(this).addClass("swiper-slide"); }); $(".swiper-subnav").find("ul").after("
"); var subNavSwiper = new Swiper('.subnavlist .swiper-container', { init: false, autoplay: false, slidesPerView: "auto", scrollbar: { el: '.swiper-scrollbar', dragSize: 130, } }); subNavSwiper.init(); } } function addSubTabSwiper() { if ($(".tabs-custom").length > 0) { $(".tabs-custom").addClass("swiper-container"); $(".tabs-custom").find("ul").addClass("swiper-wrapper"); $(".tabs-custom li.nav-item").each(function (e) { $(this).addClass("swiper-slide"); }); var subTabSwiper = new Swiper('.tabs-custom.swiper-container', { init: false, autoplay: false, slidesPerView: "auto" }); subTabSwiper.init(); } } function removeSubNavSwiper() { if (typeof subNavSwiper !== "undefined") { if ($(".swiper-subnav").length > 0) { $(".swiper-subnav").removeClass("swiper-container"); $(".swiper-subnav").find("ul").removeClass("swiper-wrapper"); $(".swiper-subnav li.subnavli").each(function (e) { $(this).removeClass("swiper-slide"); }); $(".swiper-subnav .swiper-scrollbar").remove(); subNavSwiper.destroy(); } } } if (window.innerWidth < 768) { addSubNavSwiper(); } else if (window.innerWidth >= 768) { removeSubNavSwiper(); } $(window).resize(function () { if (window.innerWidth < 768) { addSubNavSwiper(); } else if (window.innerWidth >= 768) { if ($(".swiper-subnav.swiper-container").length > 0) { $(".swiper-subnav").removeClass("swiper-container"); $(".swiper-subnav").find("ul").removeClass("swiper-wrapper"); $(".swiper-subnav li.subnavli").each(function (e) { $(this).removeClass("swiper-slide"); }); $(".swiper-subnav .swiper-scrollbar").remove(); if (typeof subNavSwiper !== "undefined") { subNavSwiper.destroy(); } } } }); if ($(".tabs-custom").length > 0) { addSubTabSwiper(); } $('.scroll-top').click(function () { $('html,body').animate({ scrollTop: '0px' }, 800); }); $('.online dl').on("mouseover", function () { $(this).find("dt").show(); $(this).siblings().find("dt").hide(); }); $('.online dl').find('.remove').on("click", function () { $(this).parents("dt").hide(); }); $(window).scroll(function () { if ($(document).scrollTop() <= 100) { $('.online .scroll-top').hide(); } else { $('.online .scroll-top').show(); } }); /** * makeWaypointScroll * @description init smooth anchor animations */ function makeWaypointScroll(obj) { var $this = $(obj); if (!isNoviBuilder) { $this.on('click', function (e) { e.preventDefault(); $("body, html").stop().animate({ scrollTop: $("#" + $(this).attr('data-custom-scroll-to')).offset().top }, 1000, function () { $window.trigger("resize"); }); }); } } /** * @desc Initialize the gallery with set of images * @param {object} itemsToInit - jQuery object * @param {string} addClass - additional gallery class */ function initLightGallery(itemsToInit, addClass) { if (!isNoviBuilder) { $(itemsToInit).lightGallery({ thumbnail: $(itemsToInit).attr("data-lg-thumbnail") !== "false", selector: "[data-lightgallery='item']", autoplay: $(itemsToInit).attr("data-lg-autoplay") === "true", pause: parseInt($(itemsToInit).attr("data-lg-autoplay-delay")) || 5000, addClass: addClass, mode: $(itemsToInit).attr("data-lg-animation") || "lg-slide", loop: $(itemsToInit).attr("data-lg-loop") !== "false", showThumbByDefault: false }); } } /** * @desc Initialize the gallery with dynamic addition of images * @param {object} itemsToInit - jQuery object * @param {string} addClass - additional gallery class */ function initDynamicLightGallery(itemsToInit, addClass) { if (!isNoviBuilder) { $(itemsToInit).on("click", function () { $(itemsToInit).lightGallery({ thumbnail: $(itemsToInit).attr("data-lg-thumbnail") !== "false", selector: "[data-lightgallery='item']", autoplay: $(itemsToInit).attr("data-lg-autoplay") === "true", pause: parseInt($(itemsToInit).attr("data-lg-autoplay-delay")) || 5000, addClass: addClass, mode: $(itemsToInit).attr("data-lg-animation") || "lg-slide", loop: $(itemsToInit).attr("data-lg-loop") !== "false", dynamic: true, dynamicEl: JSON.parse($(itemsToInit).attr("data-lg-dynamic-elements")) || [] }); }); } } /** * @desc Initialize the gallery with one image * @param {object} itemToInit - jQuery object * @param {string} addClass - additional gallery class */ function initLightGalleryItem(itemToInit, addClass) { if (!isNoviBuilder) { $(itemToInit).lightGallery({ selector: "this", addClass: addClass, counter: false, youtubePlayerParams: { modestbranding: 1, showinfo: 0, rel: 0, controls: 0 }, vimeoPlayerParams: { byline: 0, portrait: 0 } }); } } // lightGallery if (plugins.lightGallery.length) { for (var i = 0; i < plugins.lightGallery.length; i++) { initLightGallery(plugins.lightGallery[i]); } } // lightGallery item if (plugins.lightGalleryItem.length) { // Filter carousel items var notCarouselItems = []; for (var z = 0; z < plugins.lightGalleryItem.length; z++) { if (!$(plugins.lightGalleryItem[z]).parents('.owl-carousel').length && !$(plugins.lightGalleryItem[z]).parents('.swiper-slider').length && !$(plugins.lightGalleryItem[z]).parents('.slick-slider').length) { notCarouselItems.push(plugins.lightGalleryItem[z]); } } plugins.lightGalleryItem = notCarouselItems; for (var i = 0; i < plugins.lightGalleryItem.length; i++) { initLightGalleryItem(plugins.lightGalleryItem[i]); } } // Dynamic lightGallery if (plugins.lightDynamicGalleryItem.length) { for (var i = 0; i < plugins.lightDynamicGalleryItem.length; i++) { initDynamicLightGallery(plugins.lightDynamicGalleryItem[i]); } } /** * Slick carousel * @description Enable Slick carousel plugin */ if (plugins.slick.length) { var i; for (i = 0; i < plugins.slick.length; i++) { var $slickItem = $(plugins.slick[i]); $slickItem.slick({ slidesToScroll: parseInt($slickItem.attr('data-slide-to-scroll')) || 1, asNavFor: $slickItem.attr('data-for') || false, dots: $slickItem.attr("data-dots") == "true", infinite: isNoviBuilder ? false : $slickItem.attr("data-loop") == "true", focusOnSelect: true, arrows: true, swipe: true, autoplay: $slickItem.attr("data-autoplay") == "true", vertical: $slickItem.attr("data-vertical") == "true", centerMode: $slickItem.attr("data-center-mode") == "true", centerPadding: $slickItem.attr("data-center-padding") ? $slickItem.attr("data-center-padding") : '0.50', mobileFirst: true, responsive: [ { breakpoint: 0, settings: { slidesToShow: parseInt($slickItem.attr('data-items')) || 1, } }, { breakpoint: 575, settings: { slidesToShow: parseInt($slickItem.attr('data-xs-items')) || 1, } }, { breakpoint: 767, settings: { slidesToShow: parseInt($slickItem.attr('data-sm-items')) || 1, } }, { breakpoint: 991, settings: { slidesToShow: parseInt($slickItem.attr('data-md-items')) || 1, } }, { breakpoint: 1199, settings: { slidesToShow: parseInt($slickItem.attr('data-lg-items')) || 1, swipe: false } } ] }) .on('afterChange', function (event, slick, currentSlide, nextSlide) { var $this = $(this), childCarousel = $this.attr('data-child'); if (childCarousel) { $(childCarousel + ' .slick-slide').removeClass('slick-current'); $(childCarousel + ' .slick-slide').eq(currentSlide).addClass('slick-current'); } }); } } /** * canvas animation */ if (plugins.particles.length) { particlesJS("particles-js", { "particles": { "number": { "value": 230, "density": { "enable": true, "value_area": 5000 } }, "color": { "value": "#ffffff" }, "shape": { "type": "circle", "stroke": { "width": 0, "color": "#000000" }, "polygon": { "nb_sides": 5 }, "image": { "src": "img/github.svg", "width": 100, "height": 100 } }, "opacity": { "value": 0.5, "random": false, "anim": { "enable": false, "speed": 1, "opacity_min": 0.1, "sync": false } }, "size": { "value": 5, "random": true, "anim": { "enable": false, "speed": 10, "size_min": 0.1, "sync": false } }, "line_linked": { "enable": true, "distance": 150, "color": "#ffffff", "opacity": 0.4, "width": 1 }, "move": { "enable": true, "speed": 3, "direction": "none", "random": false, "straight": false, "out_mode": "out", "bounce": false, "attract": { "enable": false, "rotateX": 600, "rotateY": 1200 } } }, "interactivity": { "detect_on": "canvas", "events": { "onhover": { "enable": true, "mode": "grab" }, "onclick": { "enable": true, "mode": "push" }, "resize": true }, "modes": { "grab": { "distance": 140, "line_linked": { "opacity": 1 } }, "bubble": { "distance": 400, "size": 40, "duration": 2, "opacity": 8, "speed": 3 }, "repulse": { "distance": 200, "duration": 0.4 }, "push": { "particles_nb": 4 }, "remove": { "particles_nb": 2 } } }, "retina_detect": true }); } // Adds some loosing functionality to IE browsers (IE Polyfills) if (isIE) { if (isIE === 12) $html.addClass("ie-edge"); if (isIE === 11) $html.addClass("ie-11"); if (isIE < 10) $html.addClass("lt-ie-10"); if (isIE < 11) $html.addClass("ie-10"); } // UI To Top // if (isDesktop && !isNoviBuilder) { // $().UItoTop({ // easingType: 'easeOutQuad', // containerClass: 'ui-to-top fa fa-angle-up' // }); // } // RD Navbar if (plugins.rdNavbar.length) { var aliaces, i, j, len, value, values, responsiveNavbar; aliaces = ["-", "-sm-", "-md-", "-lg-", "-xl-", "-xxl-"]; values = [0, 576, 768, 992, 1200, 1600]; responsiveNavbar = {}; for (i = j = 0, len = values.length; j < len; i = ++j) { value = values[i]; if (!responsiveNavbar[values[i]]) { responsiveNavbar[values[i]] = {}; } if (plugins.rdNavbar.attr('data' + aliaces[i] + 'layout')) { responsiveNavbar[values[i]].layout = plugins.rdNavbar.attr('data' + aliaces[i] + 'layout'); } if (plugins.rdNavbar.attr('data' + aliaces[i] + 'device-layout')) { responsiveNavbar[values[i]]['deviceLayout'] = plugins.rdNavbar.attr('data' + aliaces[i] + 'device-layout'); } if (plugins.rdNavbar.attr('data' + aliaces[i] + 'hover-on')) { responsiveNavbar[values[i]]['focusOnHover'] = plugins.rdNavbar.attr('data' + aliaces[i] + 'hover-on') === 'true'; } if (plugins.rdNavbar.attr('data' + aliaces[i] + 'auto-height')) { responsiveNavbar[values[i]]['autoHeight'] = plugins.rdNavbar.attr('data' + aliaces[i] + 'auto-height') === 'true'; } if (isNoviBuilder) { responsiveNavbar[values[i]]['stickUp'] = false; } else if (plugins.rdNavbar.attr('data' + aliaces[i] + 'stick-up')) { responsiveNavbar[values[i]]['stickUp'] = plugins.rdNavbar.attr('data' + aliaces[i] + 'stick-up') === 'true'; } if (plugins.rdNavbar.attr('data' + aliaces[i] + 'stick-up-offset')) { responsiveNavbar[values[i]]['stickUpOffset'] = plugins.rdNavbar.attr('data' + aliaces[i] + 'stick-up-offset'); } } plugins.rdNavbar.RDNavbar({ anchorNav: !isNoviBuilder, stickUpClone: (plugins.rdNavbar.attr("data-stick-up-clone") && !isNoviBuilder) ? plugins.rdNavbar.attr("data-stick-up-clone") === 'true' : false, responsive: responsiveNavbar, callbacks: { onStuck: function () { var navbarSearch = this.$element.find('.rd-search input'); if (navbarSearch) { navbarSearch.val('').trigger('propertychange'); } }, onDropdownOver: function () { return !isNoviBuilder; }, onUnstuck: function () { if (this.$clone === null) return; var navbarSearch = this.$clone.find('.rd-search input'); if (navbarSearch) { navbarSearch.val('').trigger('propertychange'); navbarSearch.trigger('blur'); } } } }); if (plugins.rdNavbar.attr("data-body-class")) { document.body.className += ' ' + plugins.rdNavbar.attr("data-body-class"); } } /** * @desc Sets slides background images from attribute 'data-slide-bg' * @param {object} swiper - swiper instance */ function setBackgrounds(swiper) { let swipersBg = swiper.el.querySelectorAll('[data-slide-bg]'); for (let i = 0; i < swipersBg.length; i++) { let swiperBg = swipersBg[i]; swiperBg.style.backgroundImage = 'url(' + swiperBg.getAttribute('data-slide-bg') + ')'; } } /** * @desc Animate captions on active slides * @param {object} swiper - swiper instance */ function initCaptionAnimate(swiper) { var animate = function (caption) { return function () { var duration; if (duration = caption.getAttribute('data-caption-duration')) caption.style.animationDuration = duration + 'ms'; caption.classList.remove('not-animated'); caption.classList.add(caption.getAttribute('data-caption-animate')); caption.classList.add('animated'); }; }, initializeAnimation = function (captions) { for (var i = 0; i < captions.length; i++) { var caption = captions[i]; caption.classList.remove('animated'); caption.classList.remove(caption.getAttribute('data-caption-animate')); caption.classList.add('not-animated'); } }, finalizeAnimation = function (captions) { for (var i = 0; i < captions.length; i++) { var caption = captions[i]; if (caption.getAttribute('data-caption-delay')) { setTimeout(animate(caption), Number(1500)); } else { animate(caption)(); } } }; // Caption parameters swiper.params.caption = { animationEvent: 'slideChangeTransitionEnd' }; initializeAnimation(swiper.$wrapperEl[0].querySelectorAll('[data-caption-animate]')); finalizeAnimation(swiper.$wrapperEl[0].children[swiper.activeIndex].querySelectorAll('[data-caption-animate]')); if (swiper.params.caption.animationEvent === 'slideChangeTransitionEnd') { swiper.on(swiper.params.caption.animationEvent, function () { initializeAnimation(swiper.$wrapperEl[0].children[swiper.previousIndex].querySelectorAll('[data-caption-animate]')); finalizeAnimation(swiper.$wrapperEl[0].children[swiper.activeIndex].querySelectorAll('[data-caption-animate]')); }); } else { swiper.on('slideChangeTransitionEnd', function () { initializeAnimation(swiper.$wrapperEl[0].children[swiper.previousIndex].querySelectorAll('[data-caption-animate]')); }); swiper.on(swiper.params.caption.animationEvent, function () { finalizeAnimation(swiper.$wrapperEl[0].children[swiper.activeIndex].querySelectorAll('[data-caption-animate]')); }); } } // Swiper if (plugins.swiper.length) { for (let i = 0; i < plugins.swiper.length; i++) { let sliderMarkup = plugins.swiper[i], swiper, options = { loop: sliderMarkup.getAttribute('data-loop') === 'true' || false, effect: isIE ? 'slide' : sliderMarkup.getAttribute('data-slide-effect') || 'slide', direction: sliderMarkup.getAttribute('data-direction') || 'horizontal', speed: 1000, separateCaptions: sliderMarkup.getAttribute('data-separate-captions') === 'true' || false, simulateTouch: sliderMarkup.getAttribute('data-simulate-touch') && !isNoviBuilder ? sliderMarkup.getAttribute('data-simulate-touch') === "true" : false, watchOverflow: true, }; if (sliderMarkup.getAttribute('data-autoplay')) { options.autoplay = { delay: 3000, stopOnLastSlide: false, disableOnInteraction: true, reverseDirection: false, }; } if (sliderMarkup.getAttribute('data-keyboard') === 'true') { options.keyboard = { enabled: sliderMarkup.getAttribute('data-keyboard') === 'true', onlyInViewport: true }; } if (sliderMarkup.getAttribute('data-mousewheel') === 'true') { options.mousewheel = { releaseOnEdges: true, sensitivity: .1 }; } if (sliderMarkup.querySelector('.swiper-button-next, .swiper-button-prev')) { options.navigation = { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' }; } if (sliderMarkup.querySelector('.swiper-pagination')) { options.pagination = { el: '.swiper-pagination', type: 'bullets', clickable: true }; } if (sliderMarkup.querySelector('.swiper-scrollbar')) { options.scrollbar = { el: '.swiper-scrollbar', hide: true, draggable: true }; } options.on = { init: function () { setBackgrounds(this); initCaptionAnimate(this); } }; swiper = new Swiper(plugins.swiper[i], options); } } }); }());