PageSourceSearch

https://www.atom-mag.com/assets/js/functions.js

js atom-mag.com collected 2026-10-02 23:33:20 UTC 138,716 bytes, 2,618 lines download raw bytes

1//----------------------------------------------------/
2//
3//      POLO - HTML5 Template
4//      Author: INSPIRO - Ardian Berisha
5//      Version: v5.4
6//      Update: December 15 2019
7//
8//----------------------------------------------------/
9//INSPIRO Global var
10var INSPIRO = {},
11    $ = jQuery.noConflict();
12(function ($) {
13    "use strict";
14    // Predefined Global Variables
15    var $window = $(window),
16        $theme_color = '#2250fc',
17        //Main
18        $body = $('body'),
19        $bodyInner = $('.body-inner'),
20        $section = $('section'),
21        //Header
22        $topbar = $('#topbar'),
23        $header = $('#header'),
24        $headerCurrentClasses = $header.attr('class'),
25        //Logo
26        headerLogo = $('#logo'),
27        //Menu
28        $mainMenu = $('#mainMenu'),
29        $pageMenu = $('.page-menu'),
30        //Slider
31        $slider = $('#slider'),
32        $inspiroSlider = $('.inspiro-slider'),
33        $carousel = $('.carousel'),
34        /*Grid Layout*/
35        $gridLayout = $(".grid-layout"),
36        $gridFilter = $(".grid-filter"),
37        windowWidth = $window.width();
38    if ($gridFilter.length > 0) {
39        $gridFilter = $gridFilter;
40    } else {
41        $gridFilter = $(".page-grid-filter");
42    }
43    //Check if header exist
44    if ($header.length > 0) {
45        var $headerOffsetTop = $header.offset().top;
46    }
47    var Events = {
48        browser: {
49            isMobile: function () {
50                if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) {
51                    return true;
52                } else {
53                    return false;
54                }
55            }
56        }
57    }
58    //Settings
59    var Settings = {
60        isMobile: Events.browser.isMobile,
61        submenuLight: $header.hasClass('submenu-light') == true ? true : false,
62        menuIsOpen: false,
63        menuOverlayOpened: false
64    }
65    //Window breakpoints
66    $(window).breakpoints({
67        breakpoints: [{
68            "name": "xs",
69            "width": 0
70        }, {
71            "name": "sm",
72            "width": 576
73        }, {
74            "name": "md",
75            "width": 768
76        }, {
77            "name": "lg",
78            "width": 992
79        }, {
80            "name": "xl",
81            "width": 1200
82        }]
83    });
84    var currentBreakpoint = $(window).breakpoints("getBreakpoint");
85    $body.addClass('breakpoint-' + currentBreakpoint);
86    $(window).bind("breakpoint-change", function (breakpoint) {
87        $body.removeClass('breakpoint-' + breakpoint.from);
88        $body.addClass('breakpoint-' + breakpoint.to);
89    });
90    $(window).breakpoints("greaterEqualTo", "lg", function () {
91        $body.addClass('b--desktop');
92        $body.removeClass('b--responsive');
93    });
94    $(window).breakpoints("lessThan", "lg", function () {
95        $body.removeClass('b--desktop');
96        $body.addClass('b--responsive');
97    });
98    INSPIRO.core = {
99        functions: function () {
100            INSPIRO.core.scrollTop();
101            INSPIRO.core.rtlStatus();
102            INSPIRO.core.rtlStatusActivate();
103            INSPIRO.core.equalize();
104            INSPIRO.core.customHeight();
105        },
106        scrollTop: function () {
107            var $scrollTop = $('#scrollTop');
108            if ($scrollTop.length > 0) {
109                var scrollOffset = $body.attr('data-offset') || 400;
110                if ($window.scrollTop() > scrollOffset) {
111                    if ($body.hasClass("frame")) {
112                        $scrollTop.css({
113                            'bottom': '46px',
114                            'opacity': 1,
115                            'z-index': 199
116                        });
117                    } else {
118                        $scrollTop.css({
119                            'bottom': '26px',
120                            'opacity': 1,
121                            'z-index': 199
122                        });
123                    }
124                } else {
125                    $scrollTop.css({
126                        'bottom': '16px',
127                        'opacity': 0
128                    });
129                }
130                $scrollTop.off('click').on('click', function () {
131                    $('body,html').stop(true).animate({
132                        'scrollTop': 0
133                    }, 1000, 'easeInOutExpo');
134                    return false;
135                });
136            }
137        },
138        rtlStatus: function () {
139            var $rtlStatusCheck = $("html").attr("dir");
140            if ($rtlStatusCheck == "rtl") {
141                return true;
142            } 
143            return false;
144        },
145        rtlStatusActivate: function () {
146
147            if (INSPIRO.core.rtlStatus() == true) {
148                $('head').append('<link rel="stylesheet" type="text/css" href="css/rtl.css">');
149            }
150        },
151        equalize: function () {
152            var $equalize = $('.equalize');
153            if ($equalize.length > 0) {
154                $equalize.each(function () {
155                    var elem = $(this),
156                        selectorItem = elem.find(elem.attr('data-equalize-item')) || "> div",
157                        maxHeight = 0;
158                    selectorItem.each(function () {
159                        if ($(this).outerHeight(true) > maxHeight) {
160                            maxHeight = $(this).outerHeight(true);
161                        }
162                    });
163                    selectorItem.height(maxHeight);
164                });
165            }
166        },
167        customHeight: function (setHeight) {
168            var $customHeight = $('.custom-height');
169            if ($customHeight.length > 0) {
170                $customHeight.each(function () {
171                    var elem = $(this),
172                        elemHeight = elem.attr('data-height') || 400,
173                        elemHeightLg = elem.attr('data-height-lg') || elemHeight,
174                        elemHeightMd = elem.attr('data-height-md') || elemHeightLg,
175                        elemHeightSm = elem.attr('data-height-sm') || elemHeightMd,
176                        elemHeightXs = elem.attr('data-height-xs') || elemHeightSm;
177
178                    function customHeightBreakpoint(setHeight) {
179                        if (setHeight) {
180                            elem = setHeight;
181                        }
182                        switch ($(window).breakpoints("getBreakpoint")) {
183                            case "xs":
184                                elem.height(elemHeightXs);
185                                break;
186                            case "sm":
187                                elem.height(elemHeightSm);
188                                break;
189                            case "md":
190                                elem.height(elemHeightMd);
191                                break;
192                            case "lg":
193                                elem.height(elemHeightLg);
194                                break;
195                            case "xl":
196                                elem.height(elemHeight);
197                                break;
198                        }
199                    }
200                    customHeightBreakpoint(setHeight);
201                    $(window).resize(function () {
202                        setTimeout(function () {
203                            customHeightBreakpoint(setHeight);
204                        }, 100);
205                    });
206                });
207            }
208        }
209    };
210    INSPIRO.header = {
211        functions: function () {
212            INSPIRO.header.logoStatus();
213            INSPIRO.header.stickyHeader();
214            INSPIRO.header.topBar();
215            INSPIRO.header.search();
216            INSPIRO.header.mainMenu();
217            INSPIRO.header.mainMenuOverlay();
218            INSPIRO.header.pageMenu();
219            INSPIRO.header.sidebarOverlay();
220            INSPIRO.header.dotsMenu();
221            INSPIRO.header.onepageMenu();
222        },
223        logoStatus: function (status) {
224            var headerLogoDefault = headerLogo.find($('.logo-default')),
225                headerLogoDark = headerLogo.find($('.logo-dark')),
226                headerLogoFixed = headerLogo.find('.logo-fixed'),
227                headerLogoResponsive = headerLogo.find('.logo-responsive');
228
229            if ($header.hasClass("header-sticky") && headerLogoFixed.length > 0) {
230                headerLogoDefault.css("display", "none");
231                headerLogoDark.css("display", "none");
232                headerLogoResponsive.css("display", "none");
233                headerLogoFixed.css("display", "block");
234            } else {
235                headerLogoDefault.removeAttr("style")
236                headerLogoDark.removeAttr("style");
237                headerLogoResponsive.removeAttr("style");
238                headerLogoFixed.removeAttr("style");
239            }
240            $(window).breakpoints("lessThan", "lg", function () {
241                if (headerLogoResponsive.length > 0) {
242                    headerLogoDefault.css("display", "none");
243                    headerLogoDark.css("display", "none");
244                    headerLogoFixed.css("display", "none");
245                    headerLogoResponsive.css("display", "block");
246                }
247            });
248        },
249        stickyHeader: function () {
250
251            var elem = $(this),
252                shrinkHeader = elem.attr('data-shrink') || 0,
253                shrinkHeaderActive = elem.attr('data-sticky-active') || 200,
254                scrollOnTop = $window.scrollTop(),
255                darkClassRemoved;
256
257            if ($header.hasClass("header-modern")) {
258                shrinkHeader = 300;
259            }
260
261            $(window).breakpoints("greaterEqualTo", "lg", function () {
262
263                if (!$header.is(".header-disable-fixed")) {
264                    if (scrollOnTop > $headerOffsetTop + shrinkHeader) {
265                        $header.addClass('header-sticky');
266                        if (scrollOnTop > $headerOffsetTop + shrinkHeaderActive) {
267                            $header.addClass('sticky-active');
268                            if (Settings.submenuLight) {
269                                $header.removeClass('dark');
270                                darkClassRemoved = true;
271                            }
272                            INSPIRO.header.logoStatus();
273                        }
274                    } else {
275                        $header.removeClass().addClass($headerCurrentClasses);
276                        INSPIRO.header.logoStatus();
277                    }
278                }
279            });
280
281
282            $(window).breakpoints("lessThan", "lg", function () {
283
284                if ($header.attr('data-responsive-fixed') == "true") {
285                    if (scrollOnTop > $headerOffsetTop + shrinkHeader) {
286                        $header.addClass('header-sticky');
287                        if (scrollOnTop > $headerOffsetTop + shrinkHeaderActive) {
288                            $header.addClass('sticky-active');
289                            if (Settings.submenuLight) {
290                                $header.removeClass('dark');
291                                darkClassRemoved = true;
292                            }
293                            INSPIRO.header.logoStatus();
294                        }
295                    } else {
296                        $header.removeClass().addClass($headerCurrentClasses);
297                        INSPIRO.header.logoStatus();
298                    }
299                }
300
301            });
302
303        },
304        //chkd
305        topBar: function () {
306            if ($topbar.length > 0) {
307                $("#topbar .topbar-dropdown .topbar-form").each(function (index, element) {
308                    if ($window.width() - ($(element).width() + $(element).offset().left) < 0) {
309                        $(element).addClass('dropdown-invert');
310                    }
311                });
312            }
313        },
314        search: function () {
315            var $search = $('#search');
316            if ($search.length > 0) {
317                var searchBtn = $('#btn-search'),
318                    searchBtnClose = $('#btn-search-close'),
319                    searchInput = $search.find('.form-control');
320
321                function openSearch() {
322                    $body.addClass('search-open');
323                    searchInput.focus();
324                }
325
326                function closeSearch() {
327                    $body.removeClass('search-open');
328                    searchInput.value = '';
329                }
330                searchBtn.on('click', function () {
331                    openSearch();
332                    return false;
333                });
334                searchBtnClose.on('click', function () {
335                    closeSearch();
336                    return false;
337                });
338                document.addEventListener('keyup', function (ev) {
339                    if (ev.keyCode == 27) {
340                        closeSearch();
341                    }
342                });
343            }
344        },
345        mainMenu: function () {
346            if ($mainMenu.length > 0) {
347                var $menuItemLinks = $("#mainMenu nav > ul > li.dropdown > a, .dropdown-submenu > a, .dropdown-submenu > span, .page-menu nav > ul > li.dropdown > a"),
348                    $triggerButton = $("#mainMenu-trigger a, #mainMenu-trigger button"),
349                    darkClassRemoved,
350                    processing = false,
351                    triggerEvent;
352                $triggerButton.on('click', function (e) {
353                    var elem = $(this);
354                    e.preventDefault();
355                    $(window).breakpoints("lessThan", "lg", function () {
356                        var openMenu = function () {
357                            if (!processing) {
358                                processing = true;
359                                Settings.menuIsOpen = true;
360                                if (Settings.submenuLight) {
361                                    $header.removeClass('dark');
362                                    darkClassRemoved = true;
363                                }
364                                elem.addClass('toggle-active');
365                                $body.addClass('mainMenu-open');
366                                INSPIRO.header.logoStatus();
367                                $mainMenu.animate({
368                                    'min-height': $window.height()
369                                }, {
370                                    duration: 500,
371                                    easing: "easeInOutQuart",
372                                    start: function () {
373                                        setTimeout(function () {
374                                            $mainMenu.addClass('menu-animate');
375                                        }, 300);
376                                    },
377                                    complete: function () {
378                                        processing = false;
379                                    }
380                                });
381                            }
382                        };
383                        var closeMenu = function () {
384                            if (!processing) {
385                                processing = true;
386                                Settings.menuIsOpen = false;
387                                INSPIRO.header.logoStatus();
388                                $mainMenu.animate({
389                                    'min-height': 0
390                                }, {
391                                    start: function () {
392                                        $mainMenu.removeClass('menu-animate');
393                                    },
394                                    done: function () {
395                                        $body.removeClass('mainMenu-open');
396                                        elem.removeClass('toggle-active');
397                                        if (Settings.submenuLight && darkClassRemoved) {
398                                            $header.addClass('dark');
399                                        }
400                                    },
401                                    duration: 500,
402                                    easing: "easeInOutQuart",
403                                    complete: function () {
404                                        processing = false;
405                                    }
406                                });
407                            }
408                        };
409                        if (!Settings.menuIsOpen) {
410                            triggerEvent = openMenu();
411                        } else {
412                            triggerEvent = closeMenu();
413                        }
414                    });
415                });
416                $menuItemLinks.on('click', function (e) {
417                    $(this).parent('li').siblings().removeClass('hover-active');
418                    $(this).parent('li').toggleClass('hover-active');
419                    e.stopPropagation();
420                    e.preventDefault();
421                });
422                $body.on('click', function (e) {
423                    $mainMenu.find('.hover-active').removeClass('hover-active');
424                });
425                /*invert menu fix*/
426                $(window).breakpoints("greaterEqualTo", "lg", function () {
427                    var $menuLastItem = $("nav > ul > li:last-child"),
428                        $menuLastItemUl = $("nav > ul > li:last-child > ul"),
429                        $menuLastInvert = $menuLastItemUl.width() - $menuLastItem.width(),
430                        $menuItems = $("nav > ul > li").find(".dropdown-menu");
431                    $menuItems.css('display', 'block');
432                    $('.dropdown:not(.mega-menu-item) ul ul').each(function (index, element) {
433                        if ($window.width() - ($(element).width() + $(element).offset().left) < 0) {
434                            $(element).addClass('menu-invert');
435                        }
436                    });
437                    if ($window.width() - ($menuLastItemUl.width() + $menuLastItem.offset().left) < 0) {
438                        $menuLastItemUl.addClass('menu-last');
439                    }
440                    $menuItems.css('display', '');
441                });
442            }
443        },
444        mainMenuOverlay: function () {},
445        /*Page Menu*/
446        pageMenu: function () {
447            if ($pageMenu.length > 0) {
448                $pageMenu.each(function () {
449                    $(this).find("#pageMenu-trigger").on("click", function () {
450                        $pageMenu.toggleClass("page-menu-active");
451                        $pageMenu.toggleClass("items-visible");
452                    });
453                });
454            }
455        },
456        sidebarOverlay: function () {
457            var sidebarOverlay = $('#side-panel');
458            if (sidebarOverlay.length > 0) {
459                sidebarOverlay.css("opacity", 1);
460                $("#close-panel").on("click", function () {
461                    $body.removeClass("side-panel-active");
462                    $("#side-panel-trigger").removeClass("toggle-active");
463                });
464                var t = setTimeout(function () {
465                    INSPIRO.elements.gridLayoutRefresh();
466                }, 1000);
467            }
468        },
469        dotsMenu: function () {
470            var $dotsMenu = $('#dotsMenu'),
471                $dotsMenuItems = $dotsMenu.find("ul > li > a");
472            if ($dotsMenu.length > 0) {
473                $dotsMenuItems.on('click', function () {
474                    $dotsMenuItems.parent("li").removeClass('current');
475                    $(this).parent("li").addClass('current');
476                    return false;
477                });
478                $dotsMenuItems.parents("li").removeClass('current');
479                $dotsMenu.find('a[href="#' + INSPIRO.header.currentSection() + '"]').parent("li").addClass('current');
480            }
481        },
482        onepageMenu: function () {
483            if ($mainMenu.hasClass("menu-one-page")) {
484                var $currentMenuItem = "current";
485                $(window).on("scroll", function () {
486                    var $currentSection = INSPIRO.header.currentSection();
487                    $mainMenu.find("nav > ul > li > a").parents("li").removeClass($currentMenuItem);
488                    $mainMenu.find('nav > ul > li > a[href="#' + $currentSection + '"]').parent("li").addClass($currentMenuItem);
489                });
490            }
491        },
492        currentSection: function () {
493            var elemCurrent = "body";
494            $section.each(function () {
495                var elem = $(this),
496                    elemeId = elem.attr("id");
497                if ((elem.offset().top - $window.height() / 3 < $window.scrollTop()) && (elem.offset().top + elem.height() - $window.height() / 3 > $window.scrollTop())) {
498                    elemCurrent = elemeId;
499                }
500            });
501            return elemCurrent;
502        }
503    };
504    INSPIRO.slider = {
505        functions: function () {
506            INSPIRO.slider.inspiroSlider();
507            INSPIRO.slider.carousel();
508        },
509        inspiroSlider: function () {
510            if ($inspiroSlider.length > 0) {
511                //Check if flickity plugin is loaded
512                if (typeof $.fn.flickity === 'undefined') {
513                    INSPIRO.elements.notification("Warning", "jQuery flickity slider plugin is missing in plugins.js file.", "danger")
514                    return true;
515                }
516                var defaultAnimation = "fadeInUp";
517
518                function animate_captions($elem) {
519                    var $captions = $elem;
520                    $captions.each(function () {
521                        var $captionElem = $(this),
522                            animationDuration = "600ms";
523                        if ($(this).attr("data-animate-duration")) {
524                            animationDuration = $(this).attr("data-animate-duration") + "ms";
525                        }
526                        $captionElem.css({
527                            opacity: 0
528                        });
529                        $(this).css("animation-duration", animationDuration);
530                    });
531                    $captions.each(function (index) {
532                        var $captionElem = $(this),
533                            captionDelay = $captionElem.attr("data-caption-delay") || (index * 350 + 1000),
534                            captionAnimation = $captionElem.attr('data-caption-animate') || defaultAnimation;
535                        var t = setTimeout(function () {
536                            $captionElem.css({
537                                opacity: 1
538                            });
539                            $captionElem.addClass(captionAnimation);
540                        }, captionDelay);
541                    });
542                }
543
544                function hide_captions($elem) {
545                    var $captions = $elem;
546                    $captions.each(function (caption) {
547                        var caption = $(this),
548                            captionAnimation = caption.attr('data-caption-animate') || defaultAnimation;
549                        caption.removeClass(captionAnimation);
550                        caption.removeAttr('style');
551                    });
552                }
553
554                function start_kenburn(elem) {
555                    var currentSlide = elem.find('.slide.is-selected'),
556                        currentSlideKenburns = currentSlide.hasClass("kenburns");
557                    if (currentSlideKenburns) {
558                        setTimeout(function () {
559                            currentSlide.find(".kenburns-bg").addClass("kenburns-bg-animate");
560                        }, 1500);
561                    }
562                }
563
564                function stop_kenburn(elem) {
565                    var notCurrentSlide = elem.find('.slide:not(.is-selected)');
566                    notCurrentSlide.find(".kenburns-bg").removeClass("kenburns-bg-animate");
567                }
568
569                function slide_dark(elem) {
570                    var $sliderClassSlide = elem.find(".slide.is-selected");
571                    if ($sliderClassSlide.hasClass("slide-dark")) {
572                        $header.removeClass('dark').addClass("dark-removed");
573                    } else {
574                        if(!$header.hasClass("sticky-active") && $header.hasClass("dark-removed")) {
575                            $header.addClass('dark').removeClass("dark-removed");
576                        }
577                    }
578                }
579
580                function sliderHeight(elem, state) {
581                    var elem,
582                        headerHeight = $header.outerHeight(),
583                        topbarHeight = $topbar.outerHeight() || 0,
584                        windowHeight = $window.height(),
585                        sliderCurrentHeight = elem.height(),
586                        screenHeightExtra = headerHeight + topbarHeight,
587                        $sliderClassSlide = elem.find(".slide"),
588                        sliderFullscreen = elem.hasClass('slider-fullscreen'),
589                        screenRatio = elem.hasClass('slider-halfscreen') ? 1 : 1.2,
590                        transparentHeader = $header.attr('data-transparent'),
591                        customHeight = elem.attr("data-height"),
592                        responsiveHeightXs = elem.attr("data-height-xs"),
593                        containerFullscreen = elem.find(".container").first().outerHeight(),
594                        contentCrop;
595                    if (containerFullscreen >= windowHeight) {
596                        contentCrop = true;
597                        var sliderMinHeight = containerFullscreen;
598                        elem.css('min-height', sliderMinHeight + 100);
599                        $sliderClassSlide.css('min-height', sliderMinHeight + 100);
600                        elem.find('.flickity-viewport').css('min-height', sliderMinHeight + 100);
601                    }
602                    sliderElementsHeight('null');
603
604                    function sliderElementsHeight(height) {
605                        if (height == 'null') {
606                            elem.css('height', '');
607                            $sliderClassSlide.css('height', '');
608                            elem.find('.flickity-viewport').css('height', '');
609                        } else {
610                            elem.css('height', height);
611                            $sliderClassSlide.css('height', height);
612                            elem.find('.flickity-viewport').css('height', height);
613                        }
614                    }
615                    if (customHeight) {
616                        $(window).breakpoints("greaterEqualTo", "lg", function () {
617                            sliderElementsHeight(customHeight + "px");
618                        });
619                    }
620                }
621                $inspiroSlider.each(function () {
622                    var elem = $(this);
623                    //Plugin Options
624                    elem.options = {
625                        cellSelector: elem.attr('data-item') || false,
626                        prevNextButtons: elem.data('arrows') == false ? false : true,
627                        pageDots: elem.data('dots') == true ? true : true,
628                        fade: elem.data('fade') == true ? true : false,
629                        draggable: elem.data('drag') == true ? true : false,
630                        freeScroll: elem.data('free-scroll') == true ? true : false,
631                        wrapAround: elem.data('loop') == false ? false : true,
632                        groupCells: elem.data('group-cells') == true ? true : false,
633                        autoPlay: elem.attr('data-autoplay') || 8000,
634                        pauseAutoPlayOnHover: elem.data('hoverpause') 
634== false ? false : true,
635                        adaptiveHeight: elem.data('adaptive-height') == false ? false : false,
636                        asNavFor: elem.attr('data-navigation') || false,
637                        selectedAttraction: elem.attr('data-attraction') || .07,
638                        friction: elem.attr('data-friction') || .9,
639                        initialIndex: elem.attr('data-initial-index') || 0,
640                        accessibility: elem.data('accessibility') == true ? true : false,
641                        setGallerySize: elem.data('gallery-size') == false ? false : false,
642                        resize: elem.data('resize') == false ? false : false,
643                        cellAlign: elem.attr('data-align') || 'left',
644                    };
645                    //Kenburns effect
646                    elem.find('.slide').each(function () {
647                        if ($(this).hasClass("kenburns")) {
648                            var elemChild = $(this),
649                                elemChildImage = elemChild.css('background-image').replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, '');
650
651                            if (elemChild.attr('data-bg-image')) {
652                                elemChildImage = elemChild.attr('data-bg-image');
653                            }
654                            elemChild.prepend('<div class="kenburns-bg" style="background-image:url(' + elemChildImage + ')"></div>');
655                        }
656                    });
657                    elem.find(".slide video").each(function () {
658                        this.pause();
659                    });
660                    if (elem.find('.slide').length <= 1) {
661                        elem.options.prevNextButtons = false;
662                        elem.options.pageDots = false;
663                    }
664                    elem.flickity({
665                        cellSelector: elem.options.cellSelector,
666                        prevNextButtons: elem.options.prevNextButtons,
667                        pageDots: elem.options.pageDots,
668                        fade: elem.options.fade,
669                        draggable: elem.options.draggable,
670                        freeScroll: elem.options.freeScroll,
671                        wrapAround: elem.options.wrapAround,
672                        groupCells: elem.options.groupCells,
673                        autoPlay: elem.options.autoPlay,
674                        pauseAutoPlayOnHover: elem.options.pauseAutoPlayOnHover,
675                        adaptiveHeight: elem.options.adaptiveHeight,
676                        asNavFor: elem.options.asNavFor,
677                        selectedAttraction: Number(elem.options.selectedAttraction),
678                        friction: elem.options.friction,
679                        initialIndex: elem.options.initialIndex,
680                        accessibility: elem.options.accessibility,
681                        setGallerySize: elem.options.setGallerySize,
682                        resize: elem.options.resize,
683                        cellAlign: elem.options.cellAlign,
684                        rightToLeft: INSPIRO.core.rtlStatus(),
685                        on: {
686                            ready: function () {
687                                var $captions = elem.find('.slide.is-selected .slide-captions > *');
688                                sliderHeight(elem);
689                                start_kenburn(elem);
690                                animate_captions($captions);
691                            },
692                            change: function (index) {
693                                var $captions = elem.find('.slide.is-selected .slide-captions > *');
694                                hide_captions($captions);
695                                setTimeout(function () {
696                                    stop_kenburn(elem);
697                                }, 500);
698                                elem.find(".slide:not(.is-selected) video").each(function () {
699                                    this.pause();
700                                    this.currentTime = 0;
701                                });
702                                slide_dark(elem);
703                                start_kenburn(elem);
704                                animate_captions($captions);
705                            },
706                            select: function (index) {
707                                var flkty = this;
708                                if ($(flkty.selectedElement).find('video')) {
709                                    $(flkty.selectedElement).find('video').each(function (i, video) {
710                                        video.play();
711                                        elem.flickity('pausePlayer');
712                                        setTimeout(function () {
713                                            elem.flickity('next');
714                                        }, Number(Math.round(video.duration) - 1) * 1000);
715                                    });
716                                }
717                            }
718                        }
719                    });
720                    $(window).resize(function () {
721                        sliderHeight(elem);
722                        elem.flickity('reposition');
723                    });
724                });
725            }
726        },
727        carouselAjax: function () {
728            //Check if flickity plugin is loaded
729            if (typeof $.fn.flickity === 'undefined') {
730                INSPIRO.elements.notification("Warning", "jQuery flickity plugin is missing in plugins.js file.", "danger")
731                return true;
732            }
733            //Plugin Options
734            var elem = $(".carousel");
735            //Initializing plugin and passing the options
736            elem.flickity({
737                adaptiveHeight: false,
738                wrapAround: true,
739                cellAlign: 'left',
740                resize: false,
741                on: {
742                    ready: function () {
743                        elem.addClass("carousel-loaded");
744                    },
745                }
746            });
747        },
748        carousel: function (elem) {
749            if (elem) {
750                $carousel = elem;
751            }
752
753            if ($carousel.length > 0) {
754                //Check if flickity plugin is loaded
755                if (typeof $.fn.flickity === 'undefined') {
756                    INSPIRO.elements.notification("Warning", "jQuery flickity plugin is missing in plugins.js file.", "danger")
757                    return true;
758                }
759                $carousel.each(function () {
760                    var elem = $(this);
761                    //Plugin Options
762                    elem.options = {
763                        containerWidth: elem.width(),
764                        items: elem.attr('data-items') || 4,
765                        itemsLg: elem.attr('data-items-lg'),
766                        itemsMd: elem.attr('data-items-md'),
767                        itemsSm: elem.attr('data-items-sm'),
768                        itemsXs: elem.attr('data-items-xs'),
769                        margin: elem.attr('data-margin') || 10,
770                        cellSelector: elem.attr('data-item') || false,
771                        prevNextButtons: elem.data('arrows') == false ? false : true,
772                        pageDots: elem.data('dots') == false ? false : true,
773                        fade: elem.data('fade') == true ? true : false,
774                        draggable: elem.data('drag') == false ? false : true,
775                        freeScroll: elem.data('free-scroll') == true ? true : false,
776                        wrapAround: elem.data('loop') == false ? false : true,
777                        groupCells: elem.data('group-cells') == true ? true : false,
778                        autoPlay: elem.attr('data-autoplay') || 5000,
779                        pauseAutoPlayOnHover: elem.data('hoverpause') 
779== false ? false : true,
780                        asNavFor: elem.attr('data-navigation') || false,
781                        lazyLoad: elem.data('lazy-load') == true ? true : false,
782                        initialIndex: elem.attr('data-initial-index') || 0,
783                        accessibility: elem.data('accessibility') == true ? true : false,
784                        adaptiveHeight: elem.data('adaptive-height') == true ? true : false,
785                        autoWidth: elem.data('auto-width') == true ? true : false,
786                        setGallerySize: elem.data('gallery-size') == false ? false : true,
787                        resize: elem.data('resize') == false ? false : true,
788                        cellAlign: elem.attr('data-align') || 'left',
789                        rightToLeft: INSPIRO.core.rtlStatus(),
790                    };
791                    //Calculate min/max on responsive breakpoints
792                    elem.options.itemsLg = elem.options.itemsLg || Math.min(Number(elem.options.items), Number(4));
793                    elem.options.itemsMd = elem.options.itemsMd || Math.min(Number(elem.options.itemsLg), Number(3));
794                    elem.options.itemsSm = elem.options.itemsSm || Math.min(Number(elem.options.itemsMd), Number(2));
795                    elem.options.itemsXs = elem.options.itemsXs || Math.min(Number(elem.options.itemsSm), Number(1));
796                    var setResponsiveColumns;
797
798                    function getCarouselColumns() {
799                        switch ($(window).breakpoints("getBreakpoint")) {
800                            case "xs":
801                                setResponsiveColumns = Number(elem.options.itemsXs);
802                                break;
803                            case "sm":
804                                setResponsiveColumns = Number(elem.options.itemsSm);
805                                break;
806                            case "md":
807                                setResponsiveColumns = Number(elem.options.itemsMd);
808                                break;
809                            case "lg":
810                                setResponsiveColumns = Number(elem.options.itemsLg);
811                                break;
812                            case "xl":
813                                setResponsiveColumns = Number(elem.options.items);
814                                break;
815                        }
816                    }
817                    getCarouselColumns();
818                    var itemWidth;
819                    elem.find("> *").wrap('<div class="polo-carousel-item">');
820                    if (elem.hasClass("custom-height")) {
821                        elem.options.setGallerySize = false;
822                        INSPIRO.core.customHeight(elem);
823                        INSPIRO.core.customHeight(elem.find(".polo-carousel-item"));
824                        var carouselCustomHeightStatus = true;
825                    }
826                    if (Number(elem.options.items) !== 1) {
827                        if (elem.options.autoWidth || carouselCustomHeightStatus) {
828                            elem.find(".polo-carousel-item").css({
829                                'padding-right': elem.options.margin + 'px'
830                            });
831                        } else {
832                            itemWidth = ((elem.options.containerWidth + Number(elem.options.margin)) / setResponsiveColumns);
833                            elem.find(".polo-carousel-item").css({
834                                'width': itemWidth,
835                                'padding-right': elem.options.margin + 'px'
836                            });
837                        }
838                    } else {
839                        elem.find(".polo-carousel-item").css({
840                            'width': '100%',
841                            'padding-right': '0 !important;',
842                        });
843                    }
844                    if (elem.options.autoWidth || carouselCustomHeightStatus) {
845                        elem.options.cellAlign = 'center';
846                    }
847
848                    if (elem.options.autoPlay == "false") {
849                        elem.options.autoPlay = false
850                    }
851                    //Initializing plugin and passing the options
852                    elem.flickity({
853                        cellSelector: elem.options.cellSelector,
854                        prevNextButtons: elem.options.prevNextButtons,
855                        pageDots: elem.options.pageDots,
856                        fade: elem.options.fade,
857                        draggable: elem.options.draggable,
858                        freeScroll: elem.options.freeScroll,
859                        wrapAround: elem.options.wrapAround,
860                        groupCells: elem.options.groupCells,
861                        autoPlay: elem.options.autoPlay,
862                        pauseAutoPlayOnHover: elem.options.pauseAutoPlayOnHover,
863                        adaptiveHeight: elem.options.adaptiveHeight,
864                        asNavFor: elem.options.asNavFor,
865                        // selectedAttraction: elem.options.selectedAttraction,
866                        // friction: elem.options.friction,
867                        initialIndex: elem.options.initialIndex,
868                        accessibility: elem.options.accessibility,
869                        setGallerySize: elem.options.setGallerySize,
870                        resize: elem.options.resize,
871                        cellAlign: elem.options.cellAlign,
872                        rightToLeft: elem.options.rightToLeft,
873                        contain: true,
874                        // lazyLoad: elem.options.lazyLoad,
875                        on: {
876                            ready: function () {
877                                elem.addClass("carousel-loaded");
878                            },
879                        }
880                    });
881                    if (elem.hasClass("custom-height")) {
882                        INSPIRO.core.customHeight(elem);
883                    }
884                    if (Number(elem.options.items) !== 1) {
885                        $(window).on('resize', function () {
886                            setTimeout(function () {
887                                getCarouselColumns();
888                                itemWidth = ((elem.width() + Number(elem.options.margin)) / setRe
888sponsiveColumns);
889                                if (elem.options.autoWidth || carouselCustomHeightStatus) {
890                                    elem.find(".polo-carousel-item").css({
891                                        'padding-right': elem.options.margin + 'px'
892                                    });
893                                } else {
894                                    if (!elem.hasClass("custom-height")) {
895                                        elem.find(".polo-carousel-item").css({
896                                            'width': itemWidth,
897                                            'padding-right': elem.options.margin + 'px'
898                                        });
899                                    } else {
900                                        INSPIRO.core.customHeight(elem.find(".polo-carousel-item"));
901                                        elem.find(".polo-carousel-item").css({
902                                            'width': itemWidth,
903                                            'padding-right': elem.options.margin + 'px'
904                                        });
905                                    }
906                                }
907                                elem.find(".flickity-slider").css({
908                                    'margin-right': -elem.options.margin / (setResponsiveColumns) + 'px'
909                                });
910                                elem.flickity('reposition');
911                            }, 100);
912                        });
913                    }
914                });
915            }
916        },
917    };
918    INSPIRO.elements = {
919        functions: function () {
920            INSPIRO.elements.naTo();
921            INSPIRO.elements.morphext();
922            INSPIRO.elements.buttons();
923            INSPIRO.elements.accordion();
924            INSPIRO.elements.animations();
925            INSPIRO.elements.parallax();
926            INSPIRO.elements.backgroundImage();
927            INSPIRO.elements.shapeDivider();
928            INSPIRO.elements.responsiveVideos();
929            INSPIRO.elements.counters();
930            INSPIRO.elements.countdownTimer();
931            INSPIRO.elements.progressBar();
932            INSPIRO.elements.pieChart();
933            INSPIRO.elements.maps();
934            INSPIRO.elements.gridLayout();
935            INSPIRO.elements.tooltip();
936            INSPIRO.elements.popover();
937            INSPIRO.elements.magnificPopup();
938            INSPIRO.elements.yTPlayer();
939            INSPIRO.elements.vimeoPlayer();
940            INSPIRO.elements.modal();
941            INSPIRO.elements.sidebarFixed();
942            INSPIRO.elements.clipboard();
943            INSPIRO.elements.bootstrapSwitch();
944            INSPIRO.elements.countdown();
945            INSPIRO.elements.other();
946            INSPIRO.elements.videoBackground();
947            INSPIRO.elements.forms();
948            INSPIRO.elements.formValidation();
949            INSPIRO.elements.formAjaxProcessing();
950            INSPIRO.elements.wizard();
951        },
952        forms: function () {
953            //Show hide password
954            var $showHidePassword = $('.show-hide-password');
955            if ($showHidePassword.length > 0) {
956                $showHidePassword.each(function () {
957                    var elem = $(this),
958                        $iconEye = 'icon-eye11',
959                        $iconClosedEye = 'icon-eye-off',
960                        elemShowHideIcon = elem.find('.input-group-append i'),
961                        elemInput = elem.children('input');
962                    elem.find('.input-group-append i').css({
963                        'cursor': 'pointer'
964                    });
965                    elemShowHideIcon.on('click', function (event) {
966                        event.preventDefault();
967                        if (elem.children('input').attr("type") == "text") {
968                            elemInput.attr('type', 'password');
969                            elemShowHideIcon.removeClass($iconEye);
970                            elemShowHideIcon.addClass($iconClosedEye);
971                        } else if (elem.children('input').attr("type") == "password") {
972                            elemInput.attr('type', 'text');
973                            elemShowHideIcon.addClass($iconEye);
974                            elemShowHideIcon.removeClass($iconClosedEye);
975                        }
976                    });
977                })
978            }
979        },
980        formValidation: function () {
981            var forms = document.getElementsByClassName('needs-validation');
982            var validation = Array.prototype.filter.call(forms, function (form) {
983                form.addEventListener('submit', function (event) {
984                    if (form.checkValidity() === false) {
985                        event.preventDefault();
986                        event.stopPropagation();
987                    }
988                    form.classList.add('was-validated');
989                }, false);
990            });
991        },
992        formAjaxProcessing: function () {
993            var $ajaxForm = $(".widget-contact-form, .ajax-form");
994            if ($ajaxForm.length > 0) {
995                $ajaxForm.each(function () {
996                    var elem = $(this),
997                        elemSuccessMessage = elem.attr('data-success-message') || "We have <strong>successfully</strong> received your Message and will get Back to you as soon as possible.",
998                        elemCustomRedirectPage = elem.attr('data-success-page');
999                    var button = elem.find('button#form-submit'),
1000                        buttonText = button.html();
1001                    var validation = Array.prototype.filter.call(elem, function (form) {
1002                        form.addEventListener('submit', function (event) {
1003                            if (form[0].checkValidity() === false) {
1004                                event.preventDefault();
1005                                event.stopPropagation();
1006                            }
1007                            form.classList.add('was-validated');
1008                            return false;
1009                        }, false);
1010                    });
1011                    elem.submit(function (event) {
1012                        event.preventDefault();
1013                        var post_url = $(this).attr("action");
1014                        var request_method = $(this).attr("method");
1015                        var form_data = $(this).serialize();
1016                        if (elem[0].checkValidity() === false) {
1017                            event.stopPropagation();
1018                            elem.addClass('was-validated');
1019                        } else {
1020                            $(elem).removeClass("was-validated");
1021                            button.html('<i class="icon-loader fa-spin"> </i> Sending...');
1022                            $.ajax({
1023                                url: post_url,
1024                                type: request_method,
1025                                data: form_data,
1026                                success: function (text) {
1027                                    if (text.response == 'success') {
1028                                        if (elem.find('.g-recaptcha').children('div').length > 0) {
1029                                            grecaptcha.reset();
1030                                        }
1031                                        $(elem)[0].reset();
1032                                        button.html(buttonText);
1033                                        if (elemCustomRedirectPage) {
1034                                            window.location.href = elemCustomRedirectPage;
1035                                        } else {
1036                                            $.notify({
1037                                                message: elemSuccessMessage
1038                                            }, {
1039                                                type: 'success'
1040                                            });
1041                                        }
1042                                    } else {
1043                                        $.notify({
1044                                            message: elem.attr('data-error-message') || text.message
1045                                        }, {
1046                                            type: 'danger'
1047                                        });
1048                                        var t = setTimeout(function () {
1049                                            button.html(buttonText);
1050                                        }, 1000);
1051                                    }
1052                                }
1053                            });
1054                        }
1055                    });
1056                });
1057            }
1058        },
1059        wizard: function () {
1060            //Show hide password
1061        },
1062        other: function (context) {
1063            //Lazy Load
1064            $(function () {
1065                $('.lazy').Lazy({
1066                    afterLoad: function(element) {
1067                        element.addClass("img-loaded")
1068                    },
1069                });
1070            });
1071            if ($(".toggle-item").length > 0) {
1072                $(".toggle-item").each(function () {
1073                    var elem = $(this),
1074                        toggleItemClass = elem.attr('data-class'),
1075                        toggleItemClassTarget = elem.attr('data-target');
1076                    elem.on("click", function () {
1077                        if (toggleItemClass) {
1078                            if (toggleItemClassTarget) {
1079                                $(toggleItemClassTarget).toggleClass(toggleItemClass);
1080                            } else {
1081                                elem.toggleClass(toggleItemClass);
1082                            }
1083                        }
1084                        elem.toggleClass("toggle-active");
1085                        return false;
1086                    });
1087                });
1088            }
1089            /*Dropdown popup invert*/
1090            var $pDropdown = $(".p-dropdown");
1091            if ($pDropdown.length > 0) {
1092                $pDropdown.each(function () {
1093                    var elem = $(this);
1094                    if ($window.width() / 2 > elem.offset().left) {
1095                        elem.addClass("p-dropdown-invert")
1096                    }
1097                });
1098            }
1099        },
1100        naTo: function () {
1101            $('a.scroll-to, #dotsMenu > ul > li > a, .menu-one-page nav > ul > li > a').on('click', function () {
1102                var extraPaddingTop = 0,
1103                    extraHeaderHeight = 0;
1104                if (windowWidth <= 991) {
1105                    $header.find("#mainMenu").css("max-height", 0);
1106                    $body.toggleClass("mainMenu-open");
1107                    $("#mainMenu-trigger button").toggleClass("toggle-active");
1108                    if ($header.attr('data-responsive-fixed') === true) {
1109                        extraHeaderHeight = $header.height();
1110                    }
1111                } else {
1112                    if ($header.length > 0) {
1113                        extraHeaderHeight = $header.height();
1114                    }
1115                }
1116                if ($('.dashboard').length > 0) {
1117                    extraPaddingTop = 30;
1118                }
1119                var $anchor = $(this);
1120                $('html, body').stop(true, false).animate({
1121                    scrollTop: ($($anchor.attr('href')).offset().top - (extraHeaderHeight + extraPaddingTop))
1122                }, 1500, 'easeInOutExpo');
1123                return false;
1124            });
1125        },
1126        morphext: function () {
1127            var $textRotator = $('.text-rotator');
1128            if ($textRotator.length > 0) {
1129                //Check if Morphext plugin is loaded
1130                if (typeof $.fn.Morphext === 'undefined') {
1131                    INSPIRO.elements.notification("Warning", "jQuery Morphext plugin is missing in plugins.js file.", "danger")
1132                    return true;
1133                }
1134                $textRotator.each(function () {
1135                    var elem = $(this);
1136                    //Plugin Options
1137                    elem.options = {
1138                        animation: elem.attr('data-animation') || "fadeIn",
1139                        separator: elem.attr('data-separator') || ",",
1140                        speed: elem.attr('data-speed') || 2000,
1141                        height: elem.height()
1142                    }
1143                    elem.css({
1144                        'min-height': elem.options.height
1145                    });
1146                    //Initializing Morphext plugin and passing the options
1147                    elem.Morphext({
1148                        animation: elem.options.animation,
1149                        separator: elem.options.separator,
1150                        speed: Number(elem.options.speed)
1151                    });
1152                });
1153            }
1154        },
1155        buttons: function () {
1156            //Button slide width
1157            if ($(".btn-slide[data-width]")) {
1158                $(".btn.btn-slide[data-width]").each(function () {
1159                    var elem = $(this),
1160                        elemWidth = elem.attr('data-width'),
1161                        elemDefaultWidth;
1162                    switch (true) {
1163                        case elem.hasClass('btn-lg'):
1164                            elemDefaultWidth = "60";
1165                            break;
1166                        case elem.hasClass('btn-sm'):
1167                            elemDefaultWidth = "36";
1168                            break;
1169                        case elem.hasClass('btn-xs'):
1170                            elemDefaultWidth = "28";
1171                            break;
1172                        default:
1173                            elemDefaultWidth = "48";
1174                            break;
1175                    }
1176                    elem.hover(function () {
1177                        $(this).css("width", elemWidth + "px");
1178                    }, function () {
1179                        $(this).css("width", elemDefaultWidth + "px");
1180                    });
1181                });
1182            }
1183        },
1184        accordion: function () {
1185            var accordionType = "accordion",
1186                toogleType = "toggle",
1187                accordionItem = "ac-item",
1188                itemActive = "ac-active",
1189                itemTitle = "ac-title",
1190                itemContent = "ac-content",
1191                $accs = $("." + accordionItem);
1192            $accs.length && ($accs.each(function () {
1193                var $item = $(this);
1194                $item.hasClass(itemActive) ? $item.addClass(itemActive) : $item.find("." + itemContent).hide();
1195            }), $("." + itemTitle).on("click", function (e) {
1196                var $link = $(this),
1197                    $item = $link.parents("." + accordionItem),
1198                    $acc = $item.parents("." + accordionType);
1199                $item.hasClass(itemActive) ? $acc.hasClass(toogleType) ? ($item.removeClass(itemActive), $link.next("." + itemContent).slide
1199Up()) : ($acc.find("." + accordionItem).removeClass(itemActive), $acc.find("." + itemContent).slideUp()) : ($acc.hasClass(toogleType) || ($acc.find("." + accordionItem).removeClass(itemActive), $acc.find("." + itemContent).slideUp("fast")), $item.addClass(itemActive), $link.next("." + itemContent).slideToggle("fast")), e.preventDefault();
1200                return false;
1201            }));
1202        },
1203        animations: function () {
1204            var $animate = $("[data-animate]");
1205            if ($animate.length > 0) {
1206                //Check if jQuery Waypoint plugin is loaded
1207                if (typeof Waypoint === 'undefined') {
1208                    INSPIRO.elements.notification("Warning", "jQuery Waypoint plugin is missing in plugins.js file.", "danger")
1209                    return true;
1210                }
1211                $animate.each(function () {
1212                    var elem = $(this);
1213                    elem.addClass("animated");
1214                    //Plugin Options
1215                    elem.options = {
1216                        animation: elem.attr("data-animate") || "fadeIn",
1217                        delay: elem.attr("data-animate-delay") || 200,
1218                        direction: ~elem.attr("data-animate").indexOf("Out") ? "back" : "forward",
1219                        offsetX: elem.attr("data-animate-offsetX") || 0,
1220                        offsetY: elem.attr("data-animate-offsetY") || -100
1221                    }
1222                    //Initializing jQuery Waypoint plugin and passing the options from data animations attributes
1223                    if (elem.options.direction == "forward") {
1224                        new Waypoint({
1225                            element: elem,
1226                            handler: function () {
1227                                var t = setTimeout(function () {
1228                                    elem.addClass(elem.options.animation + " visible");
1229                                }, elem.options.delay);
1230                                this.destroy();
1231                            },
1232                            offset: '100%'
1233                        });
1234                    } else {
1235                        elem.addClass("visible");
1236                        elem.on("click", function () {
1237                            elem.addClass(elem.options.animation);
1238                            return false;
1239                        });
1240                    }
1241                    //Demo play
1242                    if (elem.parents('.demo-play-animations').length) {
1243                        elem.on("click", function () {
1244                            elem.removeClass(elem.options.animation);
1245                            var t = setTimeout(function () {
1246                                elem.addClass(elem.options.animation);
1247                            }, 50);
1248                            return false;
1249                        });
1250                    }
1251                });
1252            }
1253        },
1254        parallax: function () {
1255            var $parallax = $('[data-bg-parallax]');
1256            if ($parallax.length > 0) {
1257                //Check if scrolly plugin is loaded
1258                if (typeof $.fn.scrolly === 'undefined') {
1259                    INSPIRO.elements.notification("Warning", "jQuery scrolly plugin is missing in plugins.js file.", "danger")
1260                    return true;
1261                }
1262                $parallax.each(function () {
1263                    var $elem = $(this),
1264                        elemImageSrc = $elem.attr("data-bg-parallax"),
1265                        elemImageVelocity = $elem.attr("data-velocity") || "-.140";
1266                    $elem.prepend('<div class="parallax-container" data-lazy-background="' + elemImageSrc + '"  data-velocity="' + elemImageVelocity + '" style="background: url(' + elemImageSrc + ')"></div>');
1267                    $(".parallax-container").lazy({
1268                        attribute: "data-lazy-background",
1269                        afterLoad: function (element) {
1270                            $elem.find(".parallax-container").addClass("img-loaded");
1271                        }
1272                    });
1273                    if ($body.hasClass('breakpoint-lg') || $body.hasClass('breakpoint-xl')) {
1274                        $elem.find(".parallax-container").scrolly({
1275                            bgParallax: true
1276                        });
1277                    } else {
1278                        $elem.find(".parallax-container").addClass("parallax-responsive");
1279                    }
1280                });
1281            }
1282        },
1283        backgroundImage: function () {
1284            var $backgroundImage = $('[data-bg-image]');
1285            if ($backgroundImage.length > 0) {
1286                $backgroundImage.each(function () {
1287                    var $elem = $(this),
1288                        elemImageSrc = $elem.attr("data-bg-image");
1289                    $elem.attr('data-lazy-background', elemImageSrc);
1290                    $elem.lazy({
1291                        attribute: "data-lazy-background",
1292                        afterLoad: function (element) {
1293                            $elem.addClass("bg-loaded");
1294                          }
1295                    });
1296                });
1297            }
1298        },
1299        shapeDivider: function () {
1300            var $shape_divider = $(".shape-divider");
1301            $shape_divider.each(function () {
1302                var elem = $(this);
1303                elem.options = {
1304                    style: elem.attr('data-style') || 1,
1305                    color: elem.attr('data-color') || '#ffffff',
1306                    opacity: elem.attr('data-opacity') || '1',
1307                    zIndex: elem.attr('data-zIndex') || '0',
1308                    height: elem.attr('data-height') || 210,
1309                    prefix: "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MzAg"
1310                }
1311                switch (elem.options.style) {
1312                    case '1':
1313                        elem.options.style = elem.options.prefix + "MTI1LjcyIj48dGl0bGU+QXNzZXQgMTc0PC90aXRsZT48cGF0aCBkPSJNMzk1LDk5LjM3Yy01Ny40MywxMC4xNy0xMjQuMjctOC4wNi0xNzYuOC0xMS43MnEzLjkzLjY0LDgsMS40MWM1MC44MSw2LDExMy4zLDI0LjA4LDE2OC43NiwxNC4yNkM0NjgsOTAuNDIsNTE5LjYsMTEuODgsNjMwLDguOVYwQzUwNS40Miw0LDQ2OCw4Ni40NywzOTUsOTkuMzdaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMDAwMDAwMDAwMDAwMDAwNCIvPjxwYXRoIGQ9Ik0yMjYuMjUsODlDMjczLjg4LDk4LDMzOC4xNCwxMTkuMjksMzk1LDEwOS4yM2M3Mi45My0xMi45MSwxMjYuNjEtNzcuNDYsMjM1LTczLjQ4VjguODZjLTExMC40LDMtMTYyLDgxLjUxLTIzNSw5NC40MkMzMzkuNTUsMTEzLjEsMjc3LjA2LDk1LjA3LDIyNi4yNSw4OVoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjYzIi8+PHBhdGggZD0iTTYwLjgyLDEyMi44OCw2MiwxMjNhMzEuNDksMzEuNDksMCwwLDAsOS4zNC0uNjRBMTAxLjI2LDEwMS4yNiwwLDAsMSw2MC44MiwxMjIuODhaIiBzdHlsZT0iZmlsbDojZmZmIi8+PHBhdGggZD0iTTYwLjgyLDEyMi44OCw2MiwxMjNhMzEuNDksMzEuNDksMCwwLDAsOS4zNC0uNjRBMTAxLjI2LDEwMS4yNiwwLDAsMSw2MC44MiwxMjIuODhaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zNTAwMDAwMDAwMDAwMDAwMyIvPjxwYXRoIGQ9Ik0zOTgsMTA3Ljg0Yy01Ni4xNSwxMC4wNy0xMTkuNTktMTEuMjYtMTY2LjYyLTIwLjItMi43MS0uNTItNS4zNS0xLTcuOTQtMS40MUExNTkuNTQsMTU5LjU0LDAsMCwwLDIwMiw4NHEtMy4wOS0uMDktNiwwYy0uNzEsMC0xLjM5LjA4LTIuMDkuMTItNTIuOCwyLjkzLTgwLjM0LDI4Ljc4LTExMi45MSwzNi42MmE3Mi42Myw3Mi42MywwLDAsMS05LjY2LDEuNjJBMzEuNDksMzEuNDksMCwwLDEsNjIsMTIzbC0xLjE4LS4xM0MzMS4zNywxMjIuODUsMCwxMTEuODIsMCwxMTEuODJ2MTMuOUg2MzBWMzQuMzZDNTIzLDMwLjM5LDQ3MCw5NC45NCwzOTgsMTA3Ljg0WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjxwYXRoIGQ9Ik0wLDEwMi4xNHYxMGM4MywzNCwxMjYuODMtMTQsMTkwLTI0bDEtNGMtNDQuNCw2LjI2LTQ1LDIyLTkzLDMxQzU0Ljc4LDEyMy4yNSwzMCwxMTMuMTQsMCwxMDIuMTRaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMDAwMDAwMDAwMDAwMDAwNCIvPjxwYXRoIGQ9Ik0wLDEwNC4xNHYxMGMyMiw5LDQxLjIzLDEwLjI2LDU4LjgsMTAsNDguNzgtLjc2LDg0Ljc2LTI2LjY1LDEzMS4yLTM0bDEtNGMtNDQuNCw2LjI2LTQ1LDIyLTkzLDMxQzU0Ljc4LDEyNS4yNSwzMCwxMTUuMTQsMCwxMDQuMTRaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMDAwMDAwMDAwMDAwMDAwNCIvPjwvc3ZnPg==";
1314                        break;
1315                    case '2':
1316                        elem.options.style = elem.options.prefix + "MTIwIj48dGl0bGU+QXNzZXQgMTY0PC90aXRsZT48cGF0aCBkPSJNNTY3LjY3LDMxLjE0Yy0yNi4yMiwxNy4zNi01MCwzNi41NS04MS44
1316LDUwQzQzNy41MiwxMDEuNDgsMzc1LjUyLDEwNi4yMSwzMTcsMTAzLjIzcy0xMTUuNDItMTMtMTczLjE1LTE5LjU2Qzk2LjQ3LDc4LjI1LDQ3LjE4LDc1LjE4LDAsODAuMDd2MzIuNDFINjMwVjBDNjA2LjQ0LDcuNTIsNTg1Ljg5LDE5LjA5LDU2Ny42NywzMS4xNFoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjY0Ii8+PHBhdGggZD0iTTU2Ny42NywzOC42N2MtMjYuMjIsMTcuMzUtNTAsMzYuNTUtODEuOCw1MEM0MzcuNTIsMTA5LDM3NS41MiwxMTMuNzMsMzE3LDExMC43NXMtMTE1LjQyLTEzLTE3My4xNS0xOS41NkM5Ni40Nyw4NS43Nyw0Ny4xOCw4Mi43LDAsODcuNTlWMTIwSDYzMFY3LjUyQzYwNi40NCwxNSw1ODUuODksMjYuNjEsNTY3LjY3LDM4LjY3WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1317                        break;
1318                    case '3':
1319                        elem.options.style = elem.options.prefix + "NjAiPjx0aXRsZT5Bc3NldCAxNzI8L3RpdGxlPjxwYXRoIGQ9Ik0wLDAsNDAwLDUzLjIzLDYzMCwwVjYwSDBaIiBzdHlsZT0iZmlsbDojZmZmIi8+PC9zdmc+";
1320                        break;
1321                    case '4':
1322                        elem.options.style = elem.options.prefix + "ODAiPjx0aXRsZT40PC90aXRsZT48cGF0aCBkPSJNMjYxLjIsNjQuOUMzNjcuNiw1NC43LDQ5OS42LDM5LjcsNjMwLDE4LjVWMEM0OTcuOCwzMS40LDM2My43LDUyLDI2MS4yLDY0LjlaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMDAwMDAwMDAwMDAwMDAwNCIvPjxwYXRoIGQ9Ik0yNjEuMiw2NC45Yy00MSwzLjktNzguMiw3LjEtMTEwLDkuNiwxMy4yLS40LDI3LS45LDQxLjUtMS42QzMxNSw2Ny43LDQ3OC40LDU5LjQsNjMwLDM0LjhWMTguNUM0OT
1322kuMSwzOS44LDM2Ny4zLDU0LjgsMjYxLjIsNjQuOVoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjYwMDAwMDAwMDAwMDAwMDEiLz48cGF0aCBkPSJNMTkyLjcsNzIuOWMtMTQuNS43LTI4LjMsMS4yLTQxLjUsMS42QzU5LjksNzcuNywwLDc3LjQsMCw3Ny40VjgwSDYzMFYzMy44QzQ3OC40LDU4LjQsMzE1LDY3LjcsMTkyLjcsNzIuOVoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1323                        break;
1324                    case '5':
1325                        elem.options.style = elem.options.prefix + "MTAwIj48dGl0bGU+QXNzZXQgMTczPC90aXRsZT48cGF0aCBkPSJNMCw1Ni44NGwxMDgsMzlMNDY4LDAsNjMwLDY4LjQyVjEwMEgwWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1326                        break;
1327                    case '6':
1328                        elem.options.style = elem.options.prefix + "MTIwIj48dGl0bGU+NjwvdGl0bGU+PHBhdGggZD0iTTYxNS41LDIuNWMtNDEuMyw1LjgtNzcuNCwxMi43LTExNiwxMy43LTIyLjIuNi00NC44LTMuMy02Ny4yLjQtNDguOCw4LjEtMTA3LjgsNDMuNS0xNTcuNyw2Mi42LTQyLjQsMTYuMi02OS45LDE2LTk4LjcsMy44LTIxLjEtOS00Mi4xLTIyLjktNjUuMi0zMy4xLTI5LjQtMTMtNjIuNC0yNC4yLTk4LjktMTIuM2wtMS4xLjNMMCw0MS42VjUzLjhsMTAuNy0zLjYsMS4xLS40YzQyLjEtMTMuNyw2My4xLTUuNiw5OC45LDUuNiwyMi43LDcsNDQuMSwyMCw2NS4yLDI4LjksMzAuOSwxMy4xLDU1LjgsMTMsOTguNy0xLDQ5LjktMTYuNCwxMDguOS01MS44LDE1Ny43LTU5LjksMjIuNC0zLjcsNDUuMi00LjUsNjcuMi0uNCwzNy44LDcuMiw3NC43LDcuMSwxMTYsMS4zLDUtLjcsOS44LTEuNSwxNC41LTIuNVYwQzYyNS4zLDEsNjIwLjUsMS45LDYxNS41LDIuNVoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjM1MDAwMDAwMDAwMDAwMDAzIi8+PHBhdGggZD0iTTQ5OS41LDIzYy0yMi00LjEtNDQuOC0zLjMtNjcuMi40LTQ4LjgsOC4xLTEwNy44LDQzLjUtMTU3LjcsNTkuOS00Mi45LDE0LTY3LjgsMTQuMS05OC43LDEtMjEuMS04LjktNDIuNS0yMS45LTY1LjItMjguOUM3NC45LDQ0LjIsNTMuOSwzNi4xLDExLjgsNDkuOGwtMS4xLjRMMCw1My44VjYybDEwLjctMy42LDEuMS0uNGMzNi41LTExLjksNjguOC04LDk4LjksMS40LDIyLjcsNy4xLDQ0LjEsMTcuMyw2NS4yLDI2LjMsMjguOCwxMi4yLDU1LjcsMTIuOSw5OS4xLDIuOSw1Mi41LTEyLjEsMTA3LjEtNTEuNywxNTUuOS01OS44LDIyLjMtMy44
1328LDQ2LjYtMS44LDY4LjYsMi40LDM3LjgsNy4xLDc0LjcsMjIsMTE2LDE2LjMsNS0uNyw5LjgtMS42LDE0LjUtMi42VjIxLjhjLTQuNywxLTkuNSwxLjgtMTQuNSwyLjVDNTc0LjIsMzAuMSw1MzcuMywzMC4yLDQ5OS41LDIzWiIgc3R5bGU9ImZpbGw6I2ZmZjtvcGFjaXR5OjAuNSIvPjxwYXRoIGQ9Ik00OTkuNSwzMS4yYy0yMi00LjItNDYuMy02LjItNjguNi0yLjRDMzgyLjEsMzYuOSwzMjcuNSw3Ni41LDI3NSw4OC42Yy00My40LDEwLTcwLjMsOS4zLTk5LjEtMi45LTIxLjEtOS00Mi41LTE5LjItNjUuMi0yNi4zQzgwLjYsNTAsNDguMyw0Ni4xLDExLjgsNThsLTEuMS40TDAsNjJ2NThINjMwVjQ0LjljLTQuNywxLTkuNSwxLjktMTQuNSwyLjZDNTc0LjIsNTMuMiw1MzcuMywzOC4zLDQ5OS41LDMxLjJaIiBzdHlsZT0iZmlsbDojZmZmIi8+PC9zdmc+";
1329                        break;
1330                    case '7':
1331                        elem.options.style = elem.options.prefix + "MTIwIj48dGl0bGU+QXNzZXQgMTc0PC90aXRsZT48cGF0aCBkPSJNMCwwLDYzMCwxMjBIMFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1332                        break;
1333                    case '8':
1334                        elem.options.style = elem.options.prefix + "MTIwIj48dGl0bGU+ODwvdGl0bGU+PHBhdGggZD0iTTQ1Ni43LDUzLjZDNDM5LjgsNDIuOSwzOTYuOSwxLjgsMzQzLjIsMzAuMWMtMzUuNywxOC43LTg0LDcxLjUtMTI3LjgsNzEuOS0zNi4xLjMtNTcuOC0yMC4yLTgxLjQtMzUuMS0xNy4zLTExLTM1LTIzLjUtNTMuNi0zMi4yQzU1LjYsMjMuMiwzMCwxMS44LjEsMjYuNGMtLjMuMSwwLDkzLjYsMCw5My42SDYzMFYzMS44Yy0zLjksMS4zLTEzLDE3LjMtNjUuMiwzMi44QzUzMy4zLDc2LjQsNDkyLjQsNzYuNCw0NTYuNyw1My42WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjxnIHN0eWxlPSJvcGFjaXR5OjAuMzgiPjxwYXRoIGQ9Ik02MTEsNjMuNmwtMiw0Mi44LTUyNy45LDUtODEtMS4xVjYxLjhhMTk0LjcsMTk0LjcsMCwwLDAsMjQuNyw5LjQsMTQ2LjgsMTQ2LjgsMCwwLDAsNDMuOSw2LjJDOTQuNiw3Ny4zLDEyMC41LDY1LDE0Niw1MC41YzE4LjctMTAuNiwzNy4xLTIyLjMsNTUuMi0zMS4zQzIxMy43LDEyLjksMjI2LDgsMjM4LjEsNS43YzI0LjMtNC42LDUxLjQtMy4yLDcyLjUsNy45bDM2LjcsMTkuNmMzNy4zLDE5LjksNzMuMSwzOC45LDEwNC4yLDUxLjdDNDY1LjQsOTAuNiw0NzguMyw5NS4yLDQ5MCw5OGMxMy4zLDMuMywyNS4xLDQuNSwzNSwyLjlhNzUuNSw3NS41LDAsMCwwLDkuMy0zLjdsNy40LTMuM2MxNS40LTcuMSwzOC44LTE5LjEsNTkuNi0zMy4yLDUuNS0zLjcuNi40LDUuNy0zLjRDNjE5LDQ4LjIsNjA4LjcsNjQuMiw2MTEsNjMuNloiIHN0eWxlPSJmaWxsOiNmZmYiLz48L2c+PHBhdGggZD0iTTU4MS44LDExLjRDNTUyLC4yLDUzMS41LDMuOSw1MDcuMiw4LjQsNDcyLjEsMTUsNDM0LjcsNDQuMSwzOTYuNiw2My4yYy0xNi4zLDguMS0zMi44LDE0LjQtNDkuMiwxNi4zLTE1LjgtNS40LTMyLTEyLjItNDcuNi0xOS4yLTM3LjktMTcuMS03Mi42LTM1LjctOTEuOS0zOS44bC02LjctMS4zYy0yMi4yLTQuMi00NS45LTUuOC02Ny45LTEuNy0xMC40LDItMjEsNS45LTMxLjgsMTFDNzYuNiw0MC4yLDUwLjksNTcuOSwyNC44LDcxLjJBMjEzLjYsMjEzLjYsMCwwLDEsLjEsODIuMXYzMC44bDgxLTEuNSwzMTIuMy01LjcsMS40LjNMNjMwLDExMS44di04MEM2MTMsMjYuNCw2MTkuMywyNS41LDU4MS44LDExLjRaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC40OSIvPjxnIHN0eWxlPSJvcGFjaXR5OjAuMzgiPjxwYXRoIGQ9Ik01NDUuNCw5N2wtMTEuMS4yTDQ5MCw5OCwuMSwxMDcuMVYwQzIxLjMtLjQsNDEuMyw0LjEsNjAuNCwxMC44YTQwMy43LDQwMy43LDAsMCwxLDQxLjEsMTcuN2MxMCw0LjksMTkuOSw5LjksMjkuNywxNC42LDUsMi4zLDkuOSw0LjksMTQuOCw3LjQsMjYuMSwxMy41LDUyLjcsMjgsOTIuOSwyNy44LDIwLjMtLjEsNDAuNy03LjcsNjAuOS0xOCwxNi04LjIsMzEuOS0xOCw0Ny41LTI3LjEsMjAuOS0xMi4xLDQxLjMtMjIuOSw2MC45LTI2LjZDNDMyLjUsMiw0ODEuMSw4LjYsNTA0LDE4czQ5LjYsMjMuNiw5Ny4zLDQyLjdDNjIwLjIsNjguNCw1NDUuNCw5Nyw1NDUuNCw5N1oiIHN0eWxlPSJmaWxsOiNmZmYiLz48L2c+PC9zdmc+";
1335                        break;
1336                    case '9':
1337                        elem.options.style = elem.options.prefix + "MTAwIj48dGl0bGU+QXNzZXQgMTgyPC90aXRsZT48cGF0aCBkPSJNMCw0NS42NVMxNTksMCwzMjIsMCw2MzAsNDUuNjUsNjMwLDQ1LjY1VjEwMEgwWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1338                        break;
1339                    case '10':
1340                        elem.options.style = elem.options.prefix + "MTIwIj48dGl0bGU+MTA8L3RpdGxlPjxwYXRoIGQ9Ik0wLDEwOC4xSDYzMFYwUzQ3NSwxMDQuNiwzMTQsMTA0LjYsMCwwLDAsMFoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjIyIi8+PHBhdGggZD0iTTAsMTA2LjlINjMwVjE3LjhzLTE1NSw4Ny45LTMxNiw4Ny45UzAsMTksMCwxOVoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjM2Ii8+PHBhdGggZD0iTTAsMTIwSDYzMFY0NS4xcy0xNTUsNjEuOC0zMTYsNjEuOFMwLDQ1LjEsMCw0NS4xWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1341                        break;
1342                    case '11':
1343                        elem.options.style = elem.options.prefix + "MTIwIj48dGl0bGU+MTE8L3RpdGxlPjxwYXRoIGQ9Ik01MTAuNywyLjljLTk4LjksMjEuOS0yMjIuMyw4NS41LTMyMiw4NS41QzgwLjEsODguNCwyNC4xLDU2LjEsMCwzNi40VjEyMEg2MzBWMTUuMkM2MDIuNCw2LjksNTUwLjEtNS44LDUxMC43LDIuOVoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1344                        break;
1345                    case '12':
1346                        elem.options.style = elem.options.prefix + "MTIwIj48dGl0bGU+MTI8L3RpdGxlPjxwYXRoIGQ9Ik02MzAsMzQuNWE1NCw1NCwwLDAsMS05LDIuM0M1NzguMyw0Ni4xLDU1Ni4xLDI0LDUxNy4yLDEyLjVjLTIyLjktNi43LTQ3LjktOS44LTcxLTMuOUMzOTUuOCwyMS43LDM0MC4zLDEwMiwyODUuMSwxMDIuNGMtNDUuNC4zLTcyLjYtMjYuNS0xMDIuMy00Ni4xLTIxLjgtMTQuNC00NC0zMC44LTY3LjQtNDIuMUM4NC4yLS45LDUwLjktNy4yLDEzLjIsMTEuOGwtMS4yLjZjLTMuNSwxLjktOC4yLDMuOS0xMiw1LjlWMTIwSDYzMFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1347                        break;
1348                    case '13':
1349                        elem.options.style = elem.options.prefix + "OTAiPjx0aXRsZT4xMzwvdGl0bGU+PHBhdGggZD0iTTYzMCw5MEgxTDAsMFMxMzEsNzYuNiwzNjYsMzQuMmMxMjAtMjEuNywyNjQsNC41LDI2NCw0LjVaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4xNiIvPjxwYXRoIGQ9Ik0xLDkwSDYzMFYwUzQ4OSw3NC4zLDI1NCwzMS45QzEzNCwxMC4zLDAsMzMsMCwzM1oiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjIiLz48cGF0aCBkPSJNMCw5MEg2MzBWMTguMlM0NzUsNzcuNSwzMTQsNzcuNSwwLDE4LjIsMCwxOC4yWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1350                        break;
1351                    case '14':
1352                        elem.options.style = elem.options.prefix + "NjAiPjx0aXRsZT5Bc3NldCAxNzg8L3RpdGxlPjxwYXRoIGQ9Ik0wLDAsMTEzLDE5LDU4MiwyOS40Nyw2MzAsMFY2MEgwWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1353                        break;
1354                    case '15':
1355                        elem.options.style = elem.options.prefix + "ODAiPjx0aXRsZT5Bc3NldCAxNzc8L3RpdGxlPjxwYXRoIGQ9Ik0zMTUsMCw2MzAsODBIMFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1356                        break;
1357                    case '16':
1358                        elem.options.style = elem.options.prefix + "ODAiPjx0aXRsZT4xNjwvdGl0bGU+PHBhdGggZD0iTTAsODBTMjA4LDAsMzE1LDAsNjMwLDgwLDYzMCw4MFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1359                        break;
1360                    case '17':
1361                        elem.options.style = elem.options.prefix + "MTIwIj48dGl0bGU+MTc8L3RpdGxlPjxwYXRoIGQ9Ik0zMjAsMTZjODguNCwyLDMxMCwxMDQsMzEwLDEwNFM1NjkuNiw4Ny4zLDQ5OS41LDU2Yy0xOS43LTguOC00MC4xLTE3LjUtNjAuMi0yNS4zQzM5NS4yLDEzLjYsMzUyLjcuNywzMjQsMCwyMzUtMiwwLDEyMCwwLDEyMGwxNC4xLTUuNUM2Mi41LDkyLjgsMjQzLjMsMTQuMywzMjAsMTZaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMSIvPjxwYXRoIGQ9Ik0xNC4xLDExNC41QzY0LjksOTUsMjM5LjQsMzAuMywzMTUsMzJjODguNCwyLDMxNSw4OCwzMTUsODhTNDA4LjQsMTgsMzIwLDE2QzI0My4zLDE0LjMsNjIuNSw5Mi44LDE0LjEsMTE0LjVaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC40MyIvPjxwYXRoIGQ9Ik0xNC4xLDExNC41QzY0LjksOTUsMjM5LjQsMzAuMywzMTUsMzJjODguNCwyLDMxNSw4OCwzMTUsODhTNDA4LjQsMTgsMzIwLDE2QzI0My4zLDE0LjMsNjIuNSw5Mi44LDE0LjEsMTE0LjVaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMSIvPjxwYXRoIGQ9Ik0zMTUsMzJDMjM5LjQsMzAuMyw2NC45LDk1LDE0LjEsMTE0LjVMMiwxMjB
1361INjMwUzQwMy40LDM0LDMxNSwzMloiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1362                        break;
1363                    case '18':
1364                        elem.options.style = elem.options.prefix + "NDAiPjx0aXRsZT5Bc3NldCAxNzk8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE4LjEsNTMsMS45LDEwMywyMGw1OS05LjUyLDU2LDE1LjIzLDcyLTcuNjEsNDYsNC43NiwzNC00Ljc2LDM2LDguNTcsNzYtMTksODUsMTUuMjRMNjMwLDBWMzcuMTRIMFoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjQ3MDAwMDAwMDAwMDAwMDAzIi8+PHBhdGggZD0iTTAsMjAsNTMsMy44MSwxMDMsMjEuOWw1OS05LjUyLDU2LDE1LjI0TDI5MCwyMGw0Niw0Ljc2TDM3MCwyMGwzNiw5LjUyLDc2LTE3LjE0LDg1LDE2LjE5LDYzLTE2LjE5VjQwSDBaIiBzdHlsZT0iZmlsbDojZmZmIi8+PC9zdmc+";
1365                        break;
1366                    case '19':
1367                        elem.options.style = elem.options.prefix + "ODAiPjx0aXRsZT4xOTwvdGl0bGU+PHBhdGggZD0iTTYzMCwzNi45YTM0LjYsMzQuNiwwLDAsMC0xNi41LTQuMmMtMTcuMiwwLTMxLjgsMTIuNy0zNi43LDMwLjNhMjEuMiwyMS4yLDAsMCwwLTkuMy0yLjIsMjEuOCwyMS44LDAsMCwwLTEzLjksNS4xLDM4LjcsMzguNywwLDAsMC00MC40LTQuOGMtNS4yLTcuNy0xMy40LTEyLjYtMjIuNy0xMi42YTI1LjcsMjUuNywwLDAsMC04LjcsMS41QzQ3Mi45LDI3LjgsNDUzLDEyLjQsNDMwLDEyLjRzLTQyLjcsMTUuMy01MS43LDM3LjJjLTcuMi0xMC45LTE4LjgtMTguMS0zMS44LTE4LjFhMzcsMzcsMCwwLDAtMjQsOS4yYy02LTEwLjMtMTYuMy0xNy0yOC0xNy0xMy44LDAtMjUuNiw5LjMtMzAuNywyMi43QTI2LjUsMjYuNSwwLDAsMCwyNDQsMzcuMmEyMiwyMiwwLDAsMC01LjguN2MtNC0xMS42LTE0LTE5LjktMjUuNy0xOS45YTI0LjcsMjQuNywwLDAsMC05LjQsMS45QzE4OS4yLDcuNCwxNzEuNiwwLDE1Mi41LDAsMTI0LjYsMCwxMDAsMTUuOCw4NS4zLDM5LjlBMjcuNiwyNy42LDAsMCwwLDYzLDI4LjJhMjMuOSwyMy45LDAsMCwwLTcuMSwxQzQ3LjIsMTMsMzEuNSwyLjMsMTMuNSwyLjNBNDMuMyw0My4zLDAsMCwwLDAsNC40VjgwSDYzMFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1368                        break;
1369                    case '20':
1370                        elem.options.style = elem.options.prefix + "MTAwIj48dGl0bGU+QXNzZXQgMTgwPC90aXRsZT48cGF0aCBkPSJNNjMwLDYwLjgyVjEwMEgwVjk1Ljg4bDExLjkxLTYuNDlMODQsNDMuMzRsMzYuNDksMjQuNDVMMTYwLDQ2LDIzMi4wNSwwbDQ5LjA3LDMyLjg5LDM0LjA3LDI5LjU5LDY4LjI5LDI3Ljc1TDQyMyw2NWw0Mi4yLDI4LjI5LDE4LjM5LTE2LDQ5LjA3LTMyLjg5TDU5NCw4My42MSw2MjgsNjEuOVoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1371                        break;
1372                }
1373                var decodeSvg = atob(elem.options.style);
1374                var wrapper = document.createElement('div');
1375                wrapper.innerHTML = decodeSvg;
1376                var svg = wrapper.firstChild;
1377                var paths = svg.getElementsByTagName('path');
1378                [].forEach.call(paths, function (path) {
1379                    path.style.fill = elem.options.color;
1380                });
1381                if ($body.hasClass("b--desktop")) {
1382                    svg.setAttribute("preserveAspectRatio", "none");
1383                    if (elem.options.height) {
1384                        svg.setAttribute("style", "height:" + elem.options.height + "px");
1385                    } else {
1386                        svg.setAttribute("style", "height:" + svg.height.baseVal.value + "px");
1387                    }
1388                } else {
1389                    svg.setAttribute("preserveAspectRatio", "xMidYMid meet");
1390                }
1391                $(".shape-divider svg title").remove();
1392                elem.css({
1393                    'z-index': elem.options.zIndex,
1394                    'opacity': elem.options.opacity
1395                });
1396                elem.append(svg);
1397            });
1398        },
1399        responsiveVideos: function () {
1400            //selecting elements
1401            var selectors = [
1402                'iframe[src*="player.vimeo.com"]',
1403                'iframe[src*="youtube.com"]',
1404                'iframe[src*="youtube-nocookie.com"]',
1405                'iframe[src*="kickstarter.com"][src*="video.html"]',
1406                'object',
1407                'embed'
1408            ];
1409            var videoContainers = $("section, .content, .post-content, .video-js, .post-video, .video-wrap, .ajax-quick-view,#slider:not(.revslider-wrap)");
1410            var elem = videoContainers.find(selectors.join(','));
1411            if (elem) {
1412                elem.each(function () {
1413                    $(this).wrap('<div class="embed-responsive embed-responsive-16by9"></div>');
1414                });
1415            }
1416        },
1417        counters: function () {
1418            var $counter = $('.counter');
1419            if ($counter.length > 0) {
1420                //Check if countTo plugin is loaded
1421                if (typeof $.fn.countTo === 'undefined') {
1422                    INSPIRO.elements.notification("Warning", "jQuery countTo plugin is missing in plugins.js file.", "danger")
1423                    return true;
1424                }
1425                //Initializing countTo plugin 
1426                $counter.each(function () {
1427                    var elem = $(this),
1428                        prefix = elem.find("span").attr("data-prefix") || "",
1429                        suffix = elem.find("span").attr("data-suffix") || "";
1430
1431                    new Waypoint({
1432                        element: elem,
1433                        handler: function () {
1434                            elem.find('span').countTo({
1435                                refreshInterval: 2,
1436                                formatter: function (value, options) {
1437                                    return  String(prefix) + value.toFixed(options.decimals) + String(suffix);
1438                                },
1439                            });
1440                            this.destroy();
1441                        },
1442                        offset: '104%'
1443                    });
1444                });
1445            }
1446        },
1447        countdownTimer: function () {
1448            var $countdownTimer = $('.countdown');
1449            if ($countdownTimer.length > 0) {
1450                //Check if countdown plugin is loaded
1451                if (typeof $.fn.countdown === 'undefined') {
1452                    INSPIRO.elements.notification("Warning", "jQuery countdown plugin is missing in plugins.js file.", "danger")
1453                    return true;
1454                }
1455                $('[data-countdown]').each(function () {
1456                    var $this = $(this),
1457                        finalDate = $(this).attr('data-countdown');
1458                    $this.countdown(finalDate, function (event) {
1459                        $this.html(event.strftime('<div class="countdown-container"><div class="countdown-box"><div class="number">%-D</div><span>Day%!d</span></div>' + '<div class="countdown-box"><div class="number">%H</div><span>Hours</span></div>' + '<div class="countdown-box"><div class="number">%M</div><span>Minutes</span></div>' + '<div class="countdown-box"><div class="number">%S</div><span>Seconds</span></div></div>'));
1460                    });
1461                });
1462
1463            }
1464        },
1465        progressBar: function () {
1466            var $progressBar = $('.p-progress-bar') || $('.progress-bar');
1467            if ($progressBar.length > 0) {
1468                $progressBar.each(function (i, elem) {
1469                    var $elem = $(this),
1470                        percent = $elem.attr('data-percent') || "100",
1471                        delay = $elem.attr('data-delay') || "60",
1472                        type = $elem.attr('data-type') || "%";
1473                    if (!$elem.hasClass('progress-animated')) {
1474                        $elem.css({
1475                            'width': '0%'
1476                        });
1477                    }
1478                    var progressBarRun = function () {
1479                        $elem.animate({
1480                            'width': percent + '%'
1481                        }, 'easeInOutCirc').addClass('progress-animated');
1482                        $elem.delay(delay).append('<span class="progress-type">' + type + '</span><span class="progress-number animated fadeIn">' + percent + '</span>');
1483                    };
1484                    if ($body.hasClass('breakpoint-lg') || $body.hasClass('breakpoint-xl')) {
1485                        new Waypoint({
1486                            element: $(elem),
1487                            handler: function () {
1488                                var t = setTimeout(function () {
1489                                    progressBarRun();
1490                                }, delay);
1491                                this.destroy();
1492                            },
1493                            offset: '100%'
1494                        });
1495                    } else {
1496                        progressBarRun();
1497                    }
1498                });
1499            }
1500        },
1501        pieChart: function () {
1502            var $pieChart = $('.pie-chart');
1503            if ($pieChart.length > 0) {
1504                //Check if easyPieChart plugin is loaded
1505                if (typeof $.fn.easyPieChart === 'undefined') {
1506                    INSPIRO.elements.notification("Warning", "jQuery easyPieChart plugin is missing in plugins.js file.", "danger")
1507                    return true;
1508                }
1509                $pieChart.each(function () {
1510                    var elem = $(this);
1511                    //Plugin Options
1512                    elem.options = {
1513                        barColor: elem.attr('data-color') || $theme_color,
1514                        trackColor: elem.attr('data-trackcolor') || "rgba(0,0,0,0.10)",
1515                        scaleColor: elem.attr('data-scaleColor') || false,
1516                        scaleLength: elem.attr('data-scaleLength') || 5,
1517                        lineCap: elem.attr('data-lineCap') || 'square',
1518                        lineWidth: elem.attr('data-lineWidth') || 6,
1519                        size: elem.attr('data-size') || 160,
1520                        rotate: elem.attr('data-rotate') || 0,
1521                        animate: elem.attr('data-animate') || 2600,
1522                        elemEasing: elem.attr('data-easing') || 'easeInOutExpo'
1523                    }
1524                    elem.find('span, i').css({
1525                        'width': elem.options.size + 'px',
1526                        'height': elem.options.size + 'px',
1527                        'line-height': elem.options.size + 'px'
1528                    });
1529                    //Initializing jQuery easyPieChart plugin and passing the options
1530                    new Waypoint({
1531                        element: elem,
1532                        handler: function () {
1533                            elem.easyPieChart({
1534                                barColor: elem.options.barColor,
1535                                trackColor: elem.options.trackColor,
1536                                scaleColor: elem.options.scaleColor,
1537                                scaleLength: elem.options.scaleLength,
1538                                lineCap: elem.options.lineCap,
1539                                lineWidth: Number(elem.options.lineWidth),
1540                                size: Number(elem.options.size),
1541                                rotate: Number(elem.options.rotate),
1542                                animate: Number(elem.options.animate),
1543                                elemEasing: elem.options.elemEasing,
1544                                onStep: function (from, to, percent) {
1545                                    elem.find('span.percent').text(Math.round(percent));
1546                                },
1547                            });
1548                            this.destroy();
1549                        },
1550                        offset: '100%'
1551                    });
1552                });
1553            }
1554        },
1555        maps: function () {
1556            var $map = $('.map');
1557
1558            if ($map.length > 0) {
1559                //Check if gMap plugin is loaded
1560                if (typeof $.fn.gmap3 === 'undefined') {
1561                    INSPIRO.elements.notification("Warning", "jQuery gmap3 plugin is missing, please go to this <a href='//support.inspirothemes.com/help-center/articles/8/14/65/google-maps'>help article</a> and follow instructions on how to configure google maps.", "danger")
1562                    return true;
1563                }
1564                $map.each(function () {
1565                    var elem = $(this);
1566                    //Plugin Options
1567                    elem.options = {
1568                        latitude: elem.attr('data-latitude') || "-37.817240",
1569                        longitude: elem.attr('data-longitude') || "144.955820",
1570                        info: elem.attr('data-info'),
1571                        maptype: elem.attr('data-type') || "ROADMAP",
1572                        zoom: elem.attr('data-zoom') || 14,
1573                        icon: elem.attr('data-icon'),
1574                        mapColor: elem.attr('data-style') || null,
1575                    }
1576                    var mapsStyle;
1577                    if (window.MAPS) {
1578                        if (elem.options.mapColor) {
1579                            mapsStyle = MAPS[elem.options.mapColor];
1580                        } else {
1581                            mapsStyle = null
1582                        }
1583                    }
1584                    //Initialize google maps plugin and passing the options
1585                    elem.gmap3({
1586                        center: [Number(elem.options.latitude), Number(elem.options.longitude)],
1587                        zoom: Number(elem.options.zoom),
1588                        mapTypeId: google.maps.MapTypeId[elem.options.maptype],
1589                        scrollwheel: false,
1590                        zoomControl: true,
1591                        mapTypeControl: false,
1592                        streetViewControl: true,
1593                        fullscreenControl: true,
1594                        styles: mapsStyle
1595                    })
1596                    if (elem.options.icon) {
1597                        elem.gmap3().marker({
1598                            position: [Number(elem.options.latitude), Number(elem.options.longitude)],
1599                            icon: elem.options.icon
1600                        });
1601                    } else {
1602                        elem.gmap3().marker({
1603                            position: [Number(elem.options.latitude), Number(elem.options.longitude)],
1604                            icon: ' ',
1605                        }).overlay({
1606                            position: [Number(elem.options.latitude), Number(elem.options.longitude)],
1607                            content: '<div class="animated-dot"></div>',
1608                        });
1609                    }
1610                    if (elem.options.info) {
1611                        elem.gmap3().infowindow({
1612                            position: [Number(elem.options.latitude), Number(elem.options.longitude)],
1613                            content: elem.options.info,
1614                            pixelOffset: new google.maps.Size(0, -10)
1615                        }).then(function (infowindow) {
1616                            var map = this.get(0);
1617                            var marker = this.get(1);
1618                            marker.addListener('click', function () {
1619                                infowindow.open(map);
1620                            });
1621                        });
1622                    }
1623                });
1624            }
1625        },
1626        gridLayout: function () {
1627            if ($gridLayout.length > 0) {
1628                //Check if isotope plugin is loaded
1629                if (typeof $.fn.isotope === 'undefined') {
1630                    INSPIRO.elements.notification("Warning", "jQuery isotope plugin is missing in plugins.js file.", "danger")
1631                    return true;
1632                }
1633
1634                var isotopeRTL;
1635                if(INSPIRO.core.rtlStatus()) {
1636                    isotopeRTL = false;
1637                }else {
1638                    isotopeRTL = true;
1639                }
1640
1641                $gridLayout.each(function () {
1642                    var elem = $(this);
1643                    elem.options = {
1644                        itemSelector: elem.attr('data-item') || "portfolio-item",
1645                        layoutMode: elem.attr('data-layout') || "masonry",
1646                        filter: elem.attr("data-default-filter") || "*",
1647                        stagger: elem.attr('data-stagger') || 0,
1648                        autoHeight: elem.data('auto-height') == false ? false : true,
1649                        gridMargin: elem.attr('data-margin') || 20,
1650                        gridMarginXs: elem.attr('data-margin-xs'),                       
1651                        transitionDuration: elem.attr("data-transition") || "0.45s",
1652                        isOriginLeft: isotopeRTL
1653                    }
1654
1655                    console.log();
1656
1657                    $(window).breakpoints("lessThan", "lg", function () {
1658                        elem.options.gridMargin = elem.options.gridMarginXs || elem.options.gridMargin;
1659                    });
1660
1661                    elem.css("margin", "0 -" + elem.options.gridMargin + "px -" + elem.options.gridMargin + "px 0");
1662                    elem.find('.' + elem.options.itemSelector).css("padding", "0 " + elem.options.gridMargin + "px " + elem.options.gridMargin + "px 0");
1663                    if (elem.attr("data-default-filter")) {
1664                        var elemDefaultFilter = elem.options.filter;
1665                        elem.options.filter = "." + elem.options.filter;
1666                    }
1667                    elem.append('<div class="grid-loader"></div>');
1668                    elem.imagesLoaded().always(function () {
1669                        elem.isotope({
1670                            layoutMode: elem.options.layoutMode,
1671                            transitionDuration: elem.options.transitionDuration,
1672                            stagger: Number(elem.options.stagger),
1673                            itemSelector: "." + elem.options.itemSelector + ':not(.grid-loader)',
1674                            isOriginLeft: elem.options.isOriginLeft,
1675                            autoHeight: elem.options.autoHeight,
1676                            masonry: {
1677                                columnWidth: elem.find('.' + elem.options.itemSelector + ':not(.large-width)')[0],
1678                            },
1679                            filter: elem.options.filter
1680                        }).isotope('layout');
1681                        elem.on('layoutComplete', function (event, laidOutItems) {
1682                            elem.remove(".grid-loader").addClass('grid-loaded');
1683                        });
1684                    });
1685                    $(window).on('resize', function () {
1686                        var t = setTimeout(function () {
1687                            INSPIRO.elements.gridLayoutRefresh();
1688                        }, 200);
1689                    });
1690                    //Infinity Scroll
1691                    if (elem.next().hasClass("infinite-scroll")) {
1692                        INSPIRO.elements.gridLayoutInfinite(elem, elem.options.itemSelector, elem.options.gridMargin);
1693                    }
1694                    if ($gridFilter.length > 0) {
1695                        $gridFilter.each(function () {
1696                            var elemFilter = $(this),
1697                                $filterItem = elemFilter.find('a'),
1698                                elemFilterLayout = elemFilter.attr('data-layout'),
1699                                $filterItemActiveClass = "active";
1700                            $filterItem.on('click', function () {
1701                                elemFilter.find('li').removeClass($filterItemActiveClass);
1702                                $(this).parent('li').addClass($filterItemActiveClass);
1703                                var filterValue = $(this).attr('data-category');
1704                                $(elemFilterLayout).isotope({
1705                                    filter: filterValue                                   
1706                                }).on('layoutComplete', function () {
1707                                    $window.trigger("scroll");
1708                                });
1709                                if ($(".grid-active-title").length > 0) {
1710                                    $(".grid-active-title").empty().append($(this).text())
1711                                }
1712                                return false;
1713                            });
1714                            if (elemDefaultFilter) {
1715                                var filterDefaultValue = elemFilter.find($('[data-category="' + elem.options.filter + '"]'));
1716                                elemFilter.find('li').removeClass($filterItemActiveClass);
1717                                filterDefaultValue.parent('li').addClass($filterItemActiveClass);
1718                            } else {
1719                                var filterDefaultValue = elemFilter.find($('[data-category="*"]'));
1720                                filterDefaultValue.parent('li').addClass($filterItemActiveClass);
1721                            }
1722                        });
1723                    }
1724                });
1725            }
1726        },
1727        gridLayoutRefresh: function (elem) {
1728            if (!elem) {
1729                elem = $gridLayout;
1730            }
1731            if (elem.length > 0) {
1732                elem.each(function () {
1733                    var elem = $(this);
1734                    var t = setTimeout(function () {
1735                        elem.isotope('layout');
1736                    }, 300);
1737                });
1738            }
1739        },
1740        gridLayoutInfinite: function (element, elementSelector, elemGridMargin) {
1741
1742            //Check if infiniteScroll plugin is loaded
1743            if (typeof $.fn.infiniteScroll === 'undefined') {
1744                INSPIRO.elements.notification("Warning", "jQuery infiniteScroll plugin is missing, please add this code line <b> &lt;script src=&quot;plugins/metafizzy/infinite-scroll.min.js&quot;&gt;&lt;/script&gt;</b>, before <b>plugins.js</b>", "danger");
1745                return true;
1746            }
1747            var elem = element,
1748                gridItem = elementSelector,
1749                gridMargin = elemGridMargin,
1750                loadOnScroll = true,
1751                threshold = 500,
1752                prefilli = true,
1753                loadMoreElem = $("#showMore"),
1754                loadMoreBtn = $("#showMore a.btn"),
1755                loadMoreBtnText = $("#showMore a.btn").html(),
1756                loadMoreMessage = $('<div class="infinite-scroll-message"><p class="animated visible fadeIn">No more posts to show</p></div>');
1757
1758            var pathSelector = $('.infinite-scroll > a').attr('href');
1759            if (pathSelector.indexOf(".html") > -1) {
1760                var pathSelector = pathSelector.replace(/(\d+)/g, '{{#}}');
1761            }
1762
1763            if (loadMoreElem.length > 0) {
1764                loadOnScroll = false;
1765                threshold = false;
1766                prefilli = false;
1767            }
1768            elem.infiniteScroll({
1769                path: pathSelector,
1770                append: '.' + gridItem,
1771                history: false,
1772                button: '#showMore a',
1773                scrollThreshold: threshold,
1774                loadOnScroll: loadOnScroll,
1775                prefill: prefilli,
1776            });
1777
1778            elem.on('load.infiniteScroll', function (event, response, path, items) {
1779                var $items = $(response).find('.' + gridItem);
1780                $items.imagesLoaded(function () {
1781                    elem.append($items);
1782                    elem.isotope('insert', $items);
1783                });
1784            });
1785
1786            elem.on('error.infiniteScroll', function (event, error, path) {
1787                loadMoreElem.addClass("animated visible fadeOut");
1788                var t = setTimeout(function () {
1789                    loadMoreElem.hide();
1790                    elem.after(loadMoreMessage);
1791                }, 500);
1792                var t = setTimeout(function () {
1793                    $(".infinite-scroll-message").addClass("animated visible fadeOut");
1794                }, 3000);
1795            })
1796            elem.on('append.infiniteScroll', function (event, response, path, items) {
1797                INSPIRO.slider.carousel($(items).find('.carousel'));
1798                loadMoreBtn.html(loadMoreBtnText);
1799                element.css("margin", "0 -" + gridMargin + "px -" + gridMargin + "px 0");
1800                element.find('.' + gridItem).css("padding", "0 " + gridMargin + "px " + gridMargin + "px 0");
1801            });
1802        },
1803
1804        tooltip: function () {
1805
1806            var $tooltip = $('[data-toggle="tooltip"]');
1807            if ($tooltip.length > 0) {
1808
1809                //Check if tooltip plugin is loaded
1810                if (typeof $.fn.tooltip === 'undefined') {
1811                    INSPIRO.elements.notification("Warning: jQuery tooltip plugin is missing in plugins.js file.", "warning")
1812                    return true;
1813                }
1814                //Initialize Tooltip plugin function
1815                $tooltip.tooltip();
1816            }
1817        },
1818        popover: function () {
1819
1820            var $popover = $('[data-toggle="popover"]');
1821
1822            if ($popover.length > 0) {
1823
1824                //Check if popover plugin is loaded
1825                if (typeof $.fn.popover === 'undefined') {
1826                    INSPIRO.elements.notification("Warning: jQuery popover plugin is missing in plugins.js file.", "warning")
1827                    return true;
1828                }
1829                //Initialize Tooltip plugin function
1830                $popover.popover({
1831                    container: 'body',
1832                    html: true
1833                });
1834            }
1835        },
1836
1837        magnificPopup: function () {
1838            var $lightbox = $('[data-lightbox]');
1839            if ($lightbox.length > 0) {
1840                //Check if magnificPopup plugin is loaded
1841                if (typeof $.fn.magnificPopup === 'undefined') {
1842                    INSPIRO.elements.notification("Warning", "jQuery magnificPopup plugin is missing in plugins.js file.", "danger")
1843                    return true;
1844                }
1845                //Get lightbox data type
1846                var getType = {
1847                    image: {
1848                        type: 'image',
1849                        closeOnContentClick: true,
1850                        removalDelay: 500,
1851                        image: {
1852                            verticalFit: true
1853                        },
1854                        callbacks: {
1855                            beforeOpen: function () {
1856                                this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');
1857                                this.st.mainClass = "mfp-zoom-out";
1858                            }
1859                        }
1860                    },
1861                    gallery: {
1862                        delegate: 'a[data-lightbox="gallery-image"], a[data-lightbox="image"]',
1863                        type: 'image',
1864                        image: {
1865                            verticalFit: true
1866                        },
1867                        gallery: {
1868                            enabled: true,
1869                            navigateByImgClick: true,
1870                            preload: [0, 1]
1871                        },
1872                        removalDelay: 500,
1873                        callbacks: {
1874                            beforeOpen: function () {
1875                                this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');
1876                                this.st.mainClass = "mfp-zoom-out";
1877                            }
1878                        },
1879                    },
1880                    iframe: {
1881                        type: 'iframe',
1882                        removalDelay: 500,
1883                        callbacks: {
1884                            beforeOpen: function () {
1885                                this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');
1886                                this.st.mainClass = "mfp-zoom-out";
1887                            }
1888                        }
1889                    },
1890                    ajax: {
1891                        type: 'ajax',
1892                        removalDelay: 500,
1893                        callbacks: {
1894                            ajaxContentAdded: function (mfpResponse) {
1895                                INSPIRO.slider.carouselAjax();
1896                                INSPIRO.elements.responsiveVideos();
1897                                INSPIRO.elements.buttons();
1898                            }
1899                        }
1900                    },
1901                    inline: {
1902                        type: 'inline',
1903                        removalDelay: 500,
1904                        callbacks: {
1905                            beforeOpen: function () {
1906                                this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');
1907                                this.st.mainClass = "mfp-zoom-out";
1908                            }
1909                        },
1910                        closeBtnInside: false,
1911                        fixedContentPos: true,
1912                        overflowY: 'scroll',
1913                    }
1914                }
1915                //Initializing jQuery magnificPopup plugin and passing the options
1916                $lightbox.each(function () {
1917                    var elem = $(this),
1918                        elemType = elem.attr('data-lightbox');
1919                    switch (elemType) {
1920                        case 'image':
1921                            elem.magnificPopup(getType.image);
1922                            break;
1923                        case 'gallery':
1924                            elem.magnificPopup(getType.gallery);
1925                            break;
1926                        case 'iframe':
1927                            elem.magnificPopup(getType.iframe);
1928                            break;
1929                        case 'ajax':
1930                            elem.magnificPopup(getType.ajax);
1931                            break;
1932                        case 'inline':
1933                            elem.magnificPopup(getType.inline);
1934                            break;
1935                    }
1936                });
1937            }
1938        },
1939        yTPlayer: function () {
1940            var $ytPlayer = $('.youtube-background');
1941            if ($ytPlayer.length > 0) {
1942                //Check if YTPlayer plugin is loaded
1943                if (typeof $.fn.YTPlayer === 'undefined') {
1944                    INSPIRO.elements.notification("Warning", "jQuery YTPlayer plugin is missing, please add this code line <b> &lt;script src=&quot;plugins/youtube-player/jquery.mb.YTPlayer.min.js&quot;&gt;&lt;/script&gt;</b>, before <b><--Template functions--></b>", "danger", 10000)
1945                    return true;
1946                }
1947                $ytPlayer.each(function () {
1948                    var elem = $(this);
1949                    //Plugin Options
1950                    elem.options = {
1951                        videoURL: elem.attr('data-youtube-url'),
1952                        autoPlay: elem.data('youtube-autoplay') == false ? 0 : 1,
1953                        mute: elem.data('youtube-mute') == false ? false : true,
1954                        pauseOnScroll: elem.data('youtube-pauseOnScroll') == false ? false : true,
1955                        loop: elem.data('youtube-loop') == false ? false : true,
1956                        vol: elem.attr('data-youtube-volume') || 50,
1957                        startAt: elem.attr('data-youtube-start') || 0,
1958                        stopAt: elem.attr('data-youtube-stop') || 0,
1959                        controls: elem.data('youtube-controls') == true ? 1 : 0,
1960                    }
1961                    var regExp = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
1962                    var match = elem.options.videoURL.match(regExp);
1963                    if (match && match[2].length == 11) {
1964                        elem.options.videoURL = match[2];
1965                    } else {
1966                        elem.options.videoURL = elem.options.videoURL;
1967                    }
1968                    elem.YTPlayer({
1969                        fitToBackground: true,
1970                        videoId: elem.options.videoURL,
1971                        repeat: elem.options.loop,
1972                        playerVars: {
1973                            start: elem.options.start,
1974                            end: elem.options.end,
1975                            autoplay: elem.options.autoPlay,
1976                            modestbranding: elem.options.logo,
1977                            controls: elem.options.controls,
1978                            origin: window.location.origin,
1979                            branding: 0,
1980                            rel: 0,
1981                            showinfo: 0,
1982                        },
1983                        events: {
1984                            'onReady': onPlayerReady,
1985                        }
1986                    });
1987
1988                    function onPlayerReady(event) {
1989                        if (elem.options.vol) {
1990                            event.target.setVolume(elem.options.vol);
1991                        }
1992                        if (elem.options.mute) {
1993                            event.target.mute();
1994                        }
1995                        if (elem.options.pauseOnScroll) {
1996                            var waypoint = new Waypoint({
1997                                element: elem,
1998                                handler: function (direction) {
1999                                    event.target.pauseVideo();
2000                                    if (elem.options.autoPlay == true && direction == 'up') {
2001                                        event.target.playVideo();
2002                                    }
2003                                }
2004                            });
2005                        }
2006                    }
2007                });
2008            }
2009        },
2010        vimeoPlayer: function () {
2011            var $vmPlayer = $('.vimeo-background');
2012            if ($vmPlayer.length > 0) {
2013                //Check if vimeo_player plugin is loaded
2014                if (typeof $.fn.vimeo_player === 'undefined') {
2015                    INSPIRO.elements.notification("Warning", "jQuery vimeo_player plugin is missing, please add this code line <b> &lt;script src=&quot;plugins/vimeo-player/jquery.mb.vimeo_player.min.js&quot;&gt;&lt;/script&gt;</b>, before <b><--Template functions--></b>", "danger", 10000)
2016                    return true;
2017                }
2018                $vmPlayer.each(function () {
2019                    var elem = $(this),
2020                        elemVideo = elem.attr('data-vimeo-url') || null,
2021                        elemMute = elem.attr('data-vimeo-mute') || false,
2022                        elemRatio = elem.attr('data-vimeo-ratio') || '16/9',
2023                        elemQuality = elem.attr('data-vimeo-quality') || 'hd720',
2024                        elemOpacity = elem.attr('data-vimeo-opacity') || 1,
2025                        elemContainer = elem.attr('data-vimeo-container') || 'self',
2026                        elemOptimize = elem.attr('data-vimeo-optimize') || true,
2027                        elemLoop = elem.attr('data-vimeo-loop') || true,
2028                        elemVolume = elem.attr('data-vimeo-volume') || 70,
2029                        elemStart = elem.attr('data-vimeo-start') || 0,
2030                        elemStop = elem.attr('data-vimeo-stop') || 0,
2031                        elemAutoPlay = elem.attr('data-vimeo-autoplay') || true,
2032                        elemFullScreen = elem.attr('data-vimeo-fullscreen') || true,
2033                        elemControls = elem.attr('data-vimeo-controls') || false,
2034                        elemLogo = elem.attr('data-vimeo-logo') || false,
2035                        elemAutoPause = elem.attr('data-vimeo-autopause') || false;
2036                    elem.vimeo_player({
2037                        videoURL: elemVideo,
2038                        mute: elemMute,
2039                        ratio: elemRatio,
2040                        quality: elemQuality,
2041                        opacity: elemOpacity,
2042                        containment: elemContainer,
2043                        optimizeDisplay: elemOptimize,
2044                        loop: elemLoop,
2045                        vol: elemVolume,
2046                        startAt: elemStart,
2047                        stopAt: elemStop,
2048                        autoPlay: elemAutoPlay,
2049                        realfullscreen: elemFullScreen,
2050                        showvmLogo: elemLogo,
2051                        showControls: elemControls
2052                    });
2053                });
2054            }
2055        },
2056        modal: function () {
2057            //Check if magnificPopup plugin is loaded
2058            if (typeof $.fn.magnificPopup === 'undefined') {
2059                INSPIRO.elements.notification("Warning", "jQuery magnificPopup plugin is missing in plugins.js file.", "danger")
2060                return true;
2061            }
2062            var $modal = $(".modal"),
2063                $modalStrip = $(".modal-strip"),
2064                $btnModal = $(".btn-modal"),
2065                modalShow = "modal-auto-open",
2066                modalShowClass = "modal-active",
2067                modalDecline = $(".modal-close"),
2068                cookieNotify = $(".cookie-notify"),
2069                cookieConfirm = cookieNotify.find(".modal-confirm, .mfp-close");
2070            /*Modal*/
2071            if ($modal.length > 0) {
2072                $modal.each(function () {
2073                    var elem = $(this),
2074                        elemDelay = elem.attr("data-delay") || 3000,
2075                        elemCookieExpire = elem.attr("data-cookie-expire") || 365,
2076                        elemCookieName = elem.attr("data-cookie-name") || "cookieModalName2020_3",
2077                        elemCookieEnabled = elem.data("cookie-enabled") == true ? true : false,
2078                        elemModalDismissDelay = elem.attr("data-delay-dismiss");
2079                    /*Modal Auto Show*/
2080                    if (elem.hasClass(modalShow)) {
2081                        var modalElem = $(this);
2082                        var timeout = setTimeout(function () {
2083                            modalElem.addClass(modalShowClass);
2084                       }, elemDelay);
2085                    }
2086                    /*Modal Dissmis Button*/
2087                    elem.find(modalDecline).click(function () {
2088                        elem.removeClass(modalShowClass);
2089                        return false;
2090                    });
2091                    /*Modal Auto Show*/
2092                    if (elem.hasClass(modalShow)) {
2093                        if (elemCookieEnabled != true) {
2094                            /*Cookie Notify*/
2095                            var t = setTimeout(function () {
2096                                $.magnificPopup.open({
2097                                    items: {
2098                                        src: elem
2099                                    },
2100                                    type: 'inline',
2101                                    closeBtnInside: true,
2102                                    callbacks: {
2103                                        beforeOpen: function () {
2104                                            this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');
2105                                            this.st.mainClass = "mfp-zoom-out";
2106                                        },
2107                                        open: function () {
2108                                            if (elem.find("video").length > 0) {
2109                                                elem.find("video").get(0).play();
2110                                            }
2111                                        },
2112                                    }
2113                                }, 0);
2114                            }, elemDelay);
2115                        } else {
2116                            if (typeof Cookies.get(elemCookieName) == 'undefined') {
2117                                /*Cookie Notify*/
2118                                var t = setTimeout(function () {
2119                                    $.magnificPopup.open({
2120                                        items: {
2121                                            src: elem
2122                                        },
2123                                        type: 'inline',
2124                                        closeBtnInside: true,
2125                                        callbacks: {
2126                                            beforeOpen: function () {
2127                                                this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');
2128                                                this.st.mainClass = "mfp-zoom-out";
2129                                            },
2130                                            open: function () {
2131                                                if (elem.find("video").length > 0) {
2132                                                    elem.find("video").get(0).play();
2133                                                }
2134                                            },
2135                                            close: function () {
2136                                                Cookies.set(elemCookieName, true, {
2137                                                    expires: Number(elemCookieExpire)
2138                                                });
2139                                            }
2140                                        }
2141                                    }, 0);
2142                                }, elemDelay);
2143                            }
2144                        }
2145                    }
2146                    /*Modal Dissmis Button*/
2147                    elem.find(modalDecline).click(function () {
2148                        $.magnificPopup.close();
2149                        return false;
2150                    });
2151
2152                    if(elemModalDismissDelay) {
2153
2154                    }
2155                });
2156            }
2157            /*Modal Strip*/
2158            if ($modalStrip.length > 0) {
2159                $modalStrip.each(function () {
2160                    var elem = $(this),
2161                        elemDelay = elem.attr("data-delay") || 3000,
2162                        elemCookieExpire = elem.attr("data-cookie-expire") || 365,
2163                        elemCookieName = elem.attr("data-cookie-name") || "cookieName2013",
2164                        elemCookieEnabled = elem.data("cookie-enabled") == true ? true : false,
2165                        elemModalDismissDelay = elem.attr("data-delay-dismiss");
2166                    /*Modal Auto Show*/
2167                    if (elem.hasClass(modalShow)) {
2168                        var modalElem = $(this);
2169                        var timeout = setTimeout(function () {
2170                            modalElem.addClass(modalShowClass);
2171                            if(elemModalDismissDelay) {
2172                                var t = setTimeout(function () {
2173                                    elem.removeClass(modalShowClass);
2174                                }, elemModalDismissDelay); 
2175                            }
2176
2177                        }, elemDelay);
2178                    }
2179                    /*Modal Dissmis Button*/
2180                    elem.find(modalDecline).click(function () {
2181                        elem.removeClass(modalShowClass);
2182                        return false;
2183                    });
2184                    /*Cookie Notify*/
2185                    if (elem.hasClass("cookie-notify")) {
2186                        var timeout = setTimeout(function () {
2187                            if (elemCookieEnabled != true) {
2188                                cookieNotify.addClass(modalShowClass);
2189                            } else {
2190                                if (typeof Cookies.get(elemCookieName) == 'undefined') {
2191                                    cookieNotify.addClass(modalShowClass);
2192                                }
2193                            }
2194                        }, elemDelay);
2195                        cookieConfirm.click(function () {
2196                            Cookies.set(elemCookieName, true, {
2197                                expires: Number(elemCookieExpire)
2198                            });
2199                            $.magnificPopup.close();
2200                            cookieNotify.removeClass(modalShowClass);
2201                            return false;
2202                        });
2203                    }
2204                });
2205            }
2206            
2207            /*Modal toggles*/
2208            if ($btnModal.length > 0) {
2209                $btnModal.each(function () {
2210                    var elem = $(this),
2211                        modalTarget = elem.attr("data-modal");
2212                    elem.click(function () {
2213                        $(modalTarget).toggleClass(modalShowClass, 1000);
2214                        return false;
2215                    });
2216                });
2217            }
2218        },
2219        notification: function ($title, $message, $type, $element, $delay, $placement, $animateEnter, $animateExit) {
2220
2221            var $element,
2222                $elementContainer,
2223                $animateEnter = $animateEnter || "fadeInDown",
2224                $animateExit = $animateExit || "fadeOutDown",
2225                $placement;
2226                if($placement) {
2227                    $placement = $placement;
2228                }else {
2229                    $placement = "top";
2230                }
2231
2232            if ($element) {
2233                $elementContainer = "element-container";
2234                $animateEnter = "fadeIn",
2235                    $animateExit = "fadeOut";
2236            } else {
2237
2238                $elementContainer = "col-11 col-lg-3";
2239            }
2240
2241            if (!$message) {
2242                $message = "";
2243            }
2244
2245            $element = 'body';
2246
2247            $.notify({
2248                title: $title,
2249                message: $message
2250            }, {
2251                element: $element,
2252                type: $type || 'warning',
2253                delay: $delay || 10000,
2254                template: '<div data-notify="container" class="bootstrap-notify ' + $elementContainer + ' alert alert-{0}" role="alert">
2254' +
2255                    '<button type="button" aria-hidden="true" class="close" data-notify="dismiss">×</button>' +
2256                    '<span data-notify="icon"></span> ' +
2257                    '<span data-notify="title">{1}</span> ' +
2258                    '<span data-notify="message">{2}</span>' +
2259                    '</div>',
2260                mouse_over: true,
2261                allow_dismiss: true,
2262                placement: {
2263                    from: $placement
2264                },
2265                animate: {
2266                    enter: 'animated ' + $animateEnter,
2267                    exit: 'animated ' + $animateExit
2268                }
2269            });
2270        },
2271        sidebarFixed: function () {
2272            if(INSPIRO.core.rtlStatus()) {
2273                return true;
2274            }
2275            var $sidebarFixed = $('.sticky-sidebar');
2276            if ($sidebarFixed.length > 0) {
2277                //Check if theiaStickySidebar plugin is loaded
2278                if (typeof $.fn.theiaStickySidebar === 'undefined') {
2279                    INSPIRO.elements.notification("Warning", "jQuery theiaStickySidebar plugin is missing in plugins.js file.", "danger")
2280                    return true;
2281                }
2282                $sidebarFixed.each(function () {
2283                    var elem = $(this);
2284                    elem.options = {
2285                        additionalMarginTop: elem.attr('data-margin-top') || 120,
2286                        additionalMarginBottom: elem.attr('data-margin-bottom') || 50
2287                    }
2288                    //Initialize theiaStickySidebar plugin and passing the options
2289                    elem.theiaStickySidebar({
2290                        additionalMarginTop: Number(elem.options.additionalMarginTop),
2291                        additionalMarginBottom: Number(elem.options.additionalMarginBottom),
2292                        disableOnResponsiveLayouts: true
2293                    });
2294                });
2295            }
2296        },
2297        bootstrapSwitch: function () {
2298            var $bootstrapSwitch = $('[data-switch=true]');
2299            if ($bootstrapSwitch.length > 0) {
2300                //Check if bootstrapSwitch plugin is loaded
2301                if (typeof $.fn.bootstrapSwitch === 'undefined') {
2302                    INSPIRO.elements.notification("Warning", "jQuery bootstrapSwitch plugin is missing in plugins.js file.", "danger")
2303                    return true;
2304                }
2305                //Initialize jQuery BootstrapSwitch plugin
2306                $bootstrapSwitch.bootstrapSwitch();
2307            }
2308        },
2309        clipboard: function () {
2310            var $clipboardTarget = $('[data-clipboard-target]'),
2311                $clipboardText = $('[data-clipboard-text]');
2312            if ($clipboardTarget.length > 0) {
2313                //Check if ClipboardJS plugin is loaded
2314                if (typeof ClipboardJS === 'undefined') {
2315                    INSPIRO.elements.notification("Warning", "jQuery ClipboardJS plugin is missing in plugins.js file.", "danger")
2316                    return true;
2317                }
2318                if ($clipboardTarget) {
2319                    new ClipboardJS('[data-clipboard-target]');
2320                    clipboardInit($clipboardTarget);
2321                }
2322                if ($clipboardText) {
2323                    new ClipboardJS('[data-clipboard-text]');
2324                    clipboardInit($clipboardText);
2325                }
2326
2327                function clipboardInit(clipboardType) {
2328                    clipboardType.each(function () {
2329                        var elem = $(this),
2330                            title = elem.attr('data-original-title') || "Copy to clipboard",
2331                            titleSuccess = elem.attr('data-original-title-success') || "Copied!";
2332                        elem.tooltip({
2333                            placement: 'top',
2334                            title: title
2335                        });
2336                        elem.on('click', function () {
2337                            elem.attr('data-original-title', titleSuccess).tooltip('show');
2338                        }).on('mouseleave', function () {
2339                            elem.tooltip('hide').attr('data-original-title', title);
2340                            return false;
2341                        });
2342                    });
2343                }
2344            }
2345        },
2346        countdown: function () {
2347            var $countdown = $(".p-countdown");
2348            if ($countdown.length > 0) {
2349                $countdown.each(function () {
2350                    var $elem = $(this),
2351                        $elemCount = $elem.find(".p-countdown-count"),
2352                        $elemShow = $elem.find(".p-countdown-show"),
2353                        $elemSeconds = $elem.attr("data-delay") || 5;
2354                    $elemCount.find('.count-number').html($elemSeconds);
2355                    new Waypoint({
2356                        element: $elem,
2357                        handler: function () {
2358                            var interval = setInterval(function () {
2359                                $elemSeconds--;
2360                                if ($elemSeconds == 0) {
2361                                    clearInterval(interval);
2362                                    $elemCount.fadeOut("slow");
2363                                    setTimeout(function () {
2364                                        $elemShow.fadeIn('show');
2365                                    }, 1000);
2366                                } else {
2367                                    $elemCount.find('.count-number').html($elemSeconds);
2368                                }
2369                            }, 1000);
2370                            this.destroy();
2371                        },
2372                        offset: '100%'
2373                    });
2374                });
2375            }
2376        },
2377        videoBackground: function () {
2378            var $videoBackground = $('[data-bg-video], [data-vide-bg]');
2379            if ($videoBackground.length > 0) {
2380                $videoBackground.each(function () {
2381                    var elem = $(this);
2382                    elem.options = {
2383                        autoplay: elem.attr("data-video-autoplay") || true,
2384                        controls: elem.attr("data-video-controls"),
2385                        loop: elem.attr("data-video-loop") || true,
2386                        muted: elem.attr("data-video-muted") || true,
2387                        poster: elem.attr('data-video-poster') || "",
2388                        preload: elem.attr('data-video-preload') || "auto",
2389                        src: elem.attr('data-bg-video'),
2390                        randomId: Math.random().toString(36).substr(2, 5)
2391                    };
2392                    if (elem.options.controls) {
2393                        elem.options.controls = ' controls="' + elem.options.controls + '" ';
2394                    } else {
2395                        elem.options.controls = "";
2396                    }
2397                    elem.prepend('<div class="html5vid" id="video-' + elem.options.randomId + '">' +
2398                        '<video playsinline ' + elem.options.controls + ' loop="' + elem.options.loop + '" muted="' + elem.options.muted + '" poster="' + elem.options.poster + '" preload="' + elem.options.preload + '">' +
2399                        '<source src="' + elem.options.src + '" type="video/mp4">' +
2400                        '</video>' +
2401                        '</div>');
2402                    if (elem.options.autoplay) {
2403                        setTimeout(function () {
2404                            $("#video-" + elem.options.randomId).find("video").get(0).play();
2405                        }, 100);
2406                    }
2407                    setTimeout(function () {
2408                        $("#video-" + elem.options.randomId).addClass("video-loaded");
2409                    }, 300);
2410                });
2411            }
2412        }
2413    };
2414    INSPIRO.widgets = {
2415        functions: function () {
2416            INSPIRO.widgets.twitter();
2417            INSPIRO.widgets.flickr();
2418            INSPIRO.widgets.instagram();
2419            INSPIRO.widgets.instagramComplete();
2420            INSPIRO.widgets.subscribeForm();
2421        },
2422        twitter: function () {
2423            var $widget_twitter = $('.widget-tweeter') || $('.widget-twitter');
2424            if ($widget_twitter.length > 0) {
2425                //Check if twittie plugin is loaded
2426                if (typeof $.fn.twittie === 'undefined') {
2427                    INSPIRO.elements.notification("Warning", "jQuery twittie plugin is missing in plugins.js file.", "danger")
2428                    return true;
2429                }
2430                var t = setTimeout(function () {
2431                    $widget_twitter.each(function () {
2432                        var $elem = $(this),
2433                            twitterUsername = $elem.attr('data-username') || "ardianmusliu",
2434                            twitterLimit = $elem.attr('data-limit') || 2,
2435                            twitterDateFormat = $elem.attr('data-format') || '%b/%d/%Y',
2436                            twitterLoadingText = $elem.attr('data-loading-text') || 'Loading...',
2437                            twitterApiPAth = $elem.attr('data-loader') || "include/twitter/tweet.php",
2438                            twitterAvatar = $elem.attr('data-avatar') || false;
2439                        if (twitterAvatar == 'true') {
2440                            twitterAvatar = "{{avatar}}";
2441                        } else {
2442                            twitterAvatar = "";
2443                        }
2444                        $elem.append('<div id="twitter-cnt"></div>')
2445                        $elem.find('#twitter-cnt').twittie({
2446                            'username': twitterUsername,
2447                            'count': twitterLimit,
2448                            'dateFormat': twitterDateFormat,
2449                            'template': twitterAvatar + '{{tweet}}<small>{{date}}</small>',
2450                            'apiPath': twitterApiPAth,
2451                            'loadingText': twitterLoadingText
2452                        });
2453                        if ($elem.closest('.grid-item').length) {
2454                            INSPIRO.elements.gridLayoutRefresh();
2455                        }
2456                    });
2457                }, 2000);
2458            }
2459        },
2460        flickr: function () {
2461            var $flickr_widget = $('.flickr-widget');
2462            if ($flickr_widget.length > 0) {
2463                //Check if jflickrfeed plugin is loaded
2464                if (typeof $.fn.jflickrfeed === 'undefined') {
2465                    INSPIRO.elements.notification("Warning", "jQuery jflickrfeed plugin is missing in plugins.js file.", "danger")
2466                    return true;
2467                }
2468                $flickr_widget.each(function () {
2469                    var elem = $(this);
2470                    elem.options = {
2471                        id: elem.attr('data-flickr-id') || "52617155@N08",
2472                        limit: elem.attr('data-flickr-images') || "9",
2473                        itemTemplate: '<a href="{{image}}" title="{{title}}"><img src="{{image_s}}" alt="{{title}}" /></a>'
2474                    }
2475                    //Initializing jflickrfeed plugin and passing the options
2476                    $flickr_widget.jflickrfeed({
2477                        limit: elem.options.limit,
2478                        qstrings: {
2479                            id: elem.options.id
2480                        },
2481                        itemTemplate: elem.options.itemTemplate
2482                    }, function () {
2483                        var t = setTimeout(function () {
2484                            elem.addClass('flickr-widget-loaded');
2485                        }, 1000);
2486                        elem.magnificPopup({
2487                            delegate: 'a',
2488                            type: 'image',
2489                            gallery: {
2490                                enabled: true
2491                            }
2492                        });
2493                    });
2494                });
2495            }
2496        },
2497        instagram: function () {
2498            var $widget_instagram = $('.widget-instagram');
2499            if ($widget_instagram.length > 0) {
2500                //Check if spectragram plugin is loaded
2501                if (typeof $.fn.spectragram === 'undefined') {
2502                    INSPIRO.elements.notification("Warning", "jQuery spectragram plugin is missing in plugins.js file.", "danger")
2503                    return true;
2504                }
2505                $widget_instagram.each(function () {
2506                    var elem = $(this),
2507                        instagramLimit = elem.attr('data-limit') || 12,
2508                        instagramColumns = elem.attr('data-col') || 3,
2509                        instagramAccessToken = elem.attr('data-token') || '5783726529.226c7d2.68a168eec1264759b9f91c1fc2c6ce56',
2510                        instagramItems = "#instagram-cnt",
2511                        instagramSize = elem.attr('data-size') || 'small', //The size of the photos. 'small', 'medium' or 'big'. Default: 'medium'
2512                        instagramGridColumns = "grid-" + instagramColumns;
2513                    elem.append('<div id="instagram-cnt" class="' + instagramGridColumns + '"></div>');
2514                    jQuery.fn.spectragram.accessData = {
2515                        accessToken: instagramAccessToken
2516                    };
2517                    elem.find($(instagramItems)).spectragram('getUserFeed', {
2518                        size: instagramSize,
2519                        max: instagramLimit,
2520                        wrapEachWith: '',
2521                        complete: spectragramComplete
2522                    });
2523                    var t = setTimeout(function () {
2524                        elem.addClass('widget-instagram-loaded');
2525                    }, 300);
2526                    var spectragramComplete = function () {
2527                        if ($gridLayout) {
2528                            var t = setTimeout(function () {
2529                                INSPIRO.elements.gridLayoutRefresh();
2530                            }, 300);
2531                        }
2532                    };
2533                });
2534            }
2535        },
2536        instagramComplete: function () {
2537            if ($gridLayout) {
2538                var t = setTimeout(function () {
2539                    INSPIRO.elements.gridLayoutRefresh();
2540                }, 300);
2541            }
2542        },
2543        subscribeForm: function () {
2544            var $subscribeForm = $(".widget-subscribe-form");
2545            if ($subscribeForm.length > 0) {
2546                $subscribeForm.each(function () {
2547                    var elem = $(this),
2548                        elemSuccessMessage = elem.attr('success-message') || "You have successfully subscribed to our mailing list.";
2549                    var addonIcon = elem.find('#widget-subscribe-submit-button'),
2550                        addonIconText = addonIcon.html();
2551                    elem.submit(function (event) {
2552                        event.preventDefault();
2553                        var post_url = $(this).attr("action");
2554                        var request_method = $(this).attr("method");
2555                        var form_data = $(this).serialize();
2556                        if (elem[0].checkValidity() === false) {
2557                            event.stopPropagation();
2558                            elem.addClass('was-validated');
2559                        } else {
2560                            $(elem).removeClass("was-validated");
2561                            addonIcon.html('<i class="icon-loader fa-spin"></i>');
2562                            $.ajax({
2563                                url: post_url,
2564                                type: request_method,
2565                                data: form_data,
2566                                dataType: 'json',
2567                                success: function (text) {
2568                                    if (text.response == 'success') {
2569                                        $.notify({
2570                                            message: elemSuccessMessage
2571                                        }, {
2572                                            type: 'success'
2573                                        });
2574                                        $(elem)[0].reset();
2575                                        $(elem).removeClass("was-validated");
2576                                        addonIcon.html(addonIconText);
2577                                    } else {
2578                                        $.notify({
2579                                            message: text.message
2580                                        }, {
2581                                            type: 'warning'
2582                                        });
2583                                        $(elem)[0].reset();
2584                                        $(elem).removeClass("was-validated");
2585                                        addonIcon.html(addonIconText);
2586                                    }
2587                                },
2588                                done: function () {
2589                                    addonIcon.html(addonIconText);
2590                                }
2591                            });
2592                        }
2593                    });
2594                });
2595            }
2596        }
2597    };
2598    //Load Functions on document ready
2599    $(document).ready(function () {
2600        INSPIRO.core.functions();
2601        INSPIRO.header.functions();
2602        INSPIRO.slider.functions();
2603        INSPIRO.widgets.functions();
2604        INSPIRO.elements.functions();
2605    });
2606    //Recall Functions on window scroll
2607    $window.on('scroll', function () {
2608        INSPIRO.header.stickyHeader();
2609        INSPIRO.core.scrollTop();
2610        INSPIRO.header.dotsMenu();
2611    });
2612    //Recall Functions on window resize
2613    $window.on('resize', function () {
2614        INSPIRO.header.logoStatus();
2615        INSPIRO.header.stickyHeader();
2616
2617    });
2618})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.