"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); } } }); }());