PageSourceSearch

https://greenbusinesscentre.com/js/functions.js

js greenbusinesscentre.com collected 2026-10-02 19:09:38 UTC 171,275 bytes, 3,434 lines download raw bytes

1/*
2
3Polo - Multipurpose HTML5 Template
4Version: 5.9.9
5Website: https://inspirothemes.com/themes/polo
6License: https://inspirothemes.com/themes/polo/license.html
7Inspiro Themes (https://inspirothemes.com)
8Author: INSPIRO - Ardian Berisha
9Copyright 2021
10
11*/
12
13//INSPIRO Global var
14var INSPIRO = {},
15    $ = jQuery.noConflict();
16(function($) {
17    "use strict";
18    // Predefined Global Variables
19    var $window = $(window),
20        $theme_color = "#2250fc",
21        //Main
22        $body = $("body"),
23        $bodyInner = $(".body-inner"),
24        $section = $("section"),
25        //Header
26        $topbar = $("#topbar"),
27        $header = $("#header"),
28        $headerCurrentClasses = $header.attr("class"),
29        //Logo
30        headerLogo = $("#logo"),
31        //Menu
32        $mainMenu = $("#mainMenu"),
33        $mainMenuTriggerBtn = $("#mainMenu-trigger a, #mainMenu-trigger button"),
34        //Slider
35        $slider = $("#slider"),
36        $inspiroSlider = $(".inspiro-slider"),
37        $carousel = $(".carousel"),
38        /*Grid Layout*/
39        $gridLayout = $(".grid-layout"),
40        $gridFilter = $(".grid-filter, .page-grid-filter"),
41        windowWidth = $window.width();
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 (
51                    navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)
52                ) {
53                    return true;
54                } else {
55                    return false;
56                }
57            },
58        },
59    };
60    //Settings
61    var Settings = {
62        isMobile: Events.browser.isMobile,
63        submenuLight: $header.hasClass("submenu-light") == true ? true : false,
64        headerHasDarkClass: $header.hasClass("dark") == true ? true : false,
65        headerDarkClassRemoved: false,
66        sliderDarkClass: false,
67        menuIsOpen: false,
68        menuOverlayOpened: false,
69    };
70    //Window breakpoints
71    $(window).breakpoints({
72        triggerOnInit: true,
73        breakpoints: [{
74                name: "xs",
75                width: 0,
76            },
77            {
78                name: "sm",
79                width: 576,
80            },
81            {
82                name: "md",
83                width: 768,
84            },
85            {
86                name: "lg",
87                width: 1025,
88            },
89            {
90                name: "xl",
91                width: 1200,
92            },
93        ],
94    });
95    var currentBreakpoint = $(window).breakpoints("getBreakpoint");
96    $body.addClass("breakpoint-" + currentBreakpoint);
97    $(window).bind("breakpoint-change", function(breakpoint) {
98        $body.removeClass("breakpoint-" + breakpoint.from);
99        $body.addClass("breakpoint-" + breakpoint.to);
100    });
101
102    $(window).bind("breakpoint-change", function(event) {
103        $(window).breakpoints("greaterEqualTo", "lg", function() {
104            $body.addClass("b--desktop");
105            $body.removeClass("b--responsive");
106        });
107        $(window).breakpoints("lessThan", "lg", function() {
108            $body.removeClass("b--desktop");
109            $body.addClass("b--responsive");
110        });
111    });
112
113    INSPIRO.core = {
114        functions: function() {
115            INSPIRO.core.scrollTop();
116            INSPIRO.core.rtlStatus();
117            INSPIRO.core.equalize();
118            INSPIRO.core.customHeight();
119            INSPIRO.core.darkTheme();
120        },
121        scrollTop: function() {
122            var $scrollTop = $("#scrollTop");
123            if ($scrollTop.length > 0) {
124                var scrollOffset = $body.attr("data-offset") || 400;
125                if ($window.scrollTop() > scrollOffset) {
126                    if ($body.hasClass("frame")) {
127                        $scrollTop.css({
128                            bottom: "46px",
129                            opacity: 1,
130                            "z-index": 199,
131                        });
132                    } else {
133                        $scrollTop.css({
134                            bottom: "26px",
135                            opacity: 1,
136                            "z-index": 199,
137                        });
138                    }
139                } else {
140                    $scrollTop.css({
141                        bottom: "16px",
142                        opacity: 0,
143                    });
144                }
145                $scrollTop.off("click").on("click", function() {
146                    $("body,html").stop(true).animate({
147                            scrollTop: 0,
148                        },
149                        1000,
150                        "easeInOutExpo"
151                    );
152                    return false;
153                });
154            }
155        },
156        rtlStatus: function() {
157            var $rtlStatusCheck = $("html").attr("dir");
158            if ($rtlStatusCheck == "rtl") {
159                return true;
160            }
161            return false;
162        },
163        equalize: function() {
164            var $equalize = $(".equalize");
165            if ($equalize.length > 0) {
166                $equalize.each(function() {
167                    var elem = $(this),
168                        selectorItem =
169                        elem.find(elem.attr("data-equalize-item")) || "> div",
170                        maxHeight = 0;
171                    selectorItem.each(function() {
172                        if ($(this).outerHeight(true) > maxHeight) {
173                            maxHeight = $(this).outerHeight(true);
174                        }
175                    });
176                    selectorItem.height(maxHeight);
177                });
178            }
179        },
180        customHeight: function(setHeight) {
181            var $customHeight = $(".custom-height");
182            if ($customHeight.length > 0) {
183                $customHeight.each(function() {
184                    var elem = $(this),
185                        elemHeight = elem.attr("data-height") || 400,
186                        elemHeightLg = elem.attr("data-height-lg") || elemHeight,
187                        elemHeightMd = elem.attr("data-height-md") || elemHeightLg,
188                        elemHeightSm = elem.attr("data-height-sm") || elemHeightMd,
189                        elemHeightXs = elem.attr("data-height-xs") || elemHeightSm;
190
191                    function customHeightBreakpoint(setHeight) {
192                        if (setHeight) {
193                            elem = setHeight;
194                        }
195                        switch ($(window).breakpoints("getBreakp
195oint")) {
196                            case "xs":
197                                elem.height(elemHeightXs);
198                                break;
199                            case "sm":
200                                elem.height(elemHeightSm);
201                                break;
202                            case "md":
203                                elem.height(elemHeightMd);
204                                break;
205                            case "lg":
206                                elem.height(elemHeightLg);
207                                break;
208                            case "xl":
209                                elem.height(elemHeight);
210                                break;
211                        }
212                    }
213                    customHeightBreakpoint(setHeight);
214                    $(window).resize(function() {
215                        setTimeout(function() {
216                            customHeightBreakpoint(setHeight);
217                        }, 100);
218                    });
219                });
220            }
221        },
222        darkTheme: function() {
223            var $darkElement = $("[data-dark-src]"),
224                $lightBtnTrigger = $("#light-mode"),
225                $darkBtnTrigger = $("#dark-mode"),
226                darkColorScheme = "darkColorScheme",
227                defaultDark = $body.hasClass("dark");
228
229            if (typeof Cookies.get(darkColorScheme) !== "undefined") {
230                // $body.addClass("dark");
231            }
232
233            $darkBtnTrigger.on("click", function(e) {
234                darkElemSrc();
235                $body.addClass("dark");
236                INSPIRO.elements.shapeDivider();
237                Cookies.set(darkColorScheme, true, {
238                    expires: Number(365),
239                });
240            });
241
242            $lightBtnTrigger.on("click", function(e) {
243                lightElemSrc();
244                $body.removeClass("dark");
245                INSPIRO.elements.shapeDivider();
246                Cookies.remove(darkColorScheme);
247            });
248
249            if ($body.hasClass("dark")) {
250                darkElemSrc();
251            }
252
253            function darkElemSrc() {
254                $darkElement.each(function() {
255                    var elem = $(this),
256                        elemOriginalSrc = elem.attr("src"),
257                        elemDarkSrc = elem.attr("data-dark-src");
258
259                    if (elemDarkSrc) {
260                        elem.attr("data-original-src", elemOriginalSrc);
261                        elem.attr("src", elemDarkSrc);
262                    }
263                });
264            }
265
266            function lightElemSrc() {
267                $darkElement.each(function() {
268                    var elem = $(this),
269                        elemLightSrc = elem.attr("data-original-src");
270
271                    if (elemLightSrc) {
272                        elem.attr("src", elemLightSrc);
273                    }
274                });
275            }
276        },
277    };
278    INSPIRO.header = {
279        functions: function() {
280            INSPIRO.header.logoStatus();
281            INSPIRO.header.stickyHeader();
282            INSPIRO.header.topBar();
283            INSPIRO.header.search();
284            INSPIRO.header.mainMenu();
285            INSPIRO.header.mainMenuResponsiveShow();
286            INSPIRO.header.mainMenuOverlay();
287            INSPIRO.header.pageMenu();
288            INSPIRO.header.sidebarOverlay();
289            INSPIRO.header.dotsMenu();
290            INSPIRO.header.onepageMenu();
291        },
292        logoStatus: function(status) {
293            var headerLogoDefault = headerLogo.find($(".logo-default")),
294                headerLogoDark = headerLogo.find($(".logo-dark")),
295                headerLogoFixed = headerLogo.find(".logo-fixed"),
296                headerLogoResponsive = headerLogo.find(".logo-responsive");
297
298            if ($header.hasClass("header-sticky") && headerLogoFixed.length > 0) {
299                headerLogoDefault.css("display", "none");
300                headerLogoDark.css("display", "none");
301                headerLogoResponsive.css("display", "none");
302                headerLogoFixed.css("display", "block");
303            } else {
304                headerLogoDefault.removeAttr("style");
305                headerLogoDark.removeAttr("style");
306                headerLogoResponsive.removeAttr("style");
307                headerLogoFixed.removeAttr("style");
308            }
309            $(window).breakpoints("lessThan", "lg", function() {
310                if (headerLogoResponsive.length > 0) {
311                    headerLogoDefault.css("display", "none");
312                    headerLogoDark.css("display", "none");
313                    headerLogoFixed.css("display", "none");
314                    headerLogoResponsive.css("display", "block");
315                }
316            });
317        },
318        stickyHeader: function() {
319            var shrinkHeader = $header.attr("data-shrink") || 0,
320                shrinkHeaderActive = $header.attr("data-sticky-active") || 200,
321                scrollOnTop = $window.scrollTop();
322            if ($header.hasClass("header-modern")) {
323                shrinkHeader = 300;
324            }
325
326            $(window).breakpoints("greaterEqualTo", "lg", function() {
327                if (!$header.is(".header-disable-fixed")) {
328                    if (scrollOnTop > $headerOffsetTop + shrinkHeader) {
329                        $header.addClass("header-sticky");
330                        if (scrollOnTop > $headerOffsetTop + shrinkHeaderActive) {
331                            $header.addClass("sticky-active");
332                            if (Settings.submenuLight && Settings.headerHasDarkClass) {
333                                $header.removeClass("dark");
334                                Settings.headerDarkClassRemoved = true;
335                            }
336                            INSPIRO.header.logoStatus();
337                        }
338                    } else {
339                        $header.removeClass().addClass($headerCurrentClasses);
340                        if (Settings.sliderDarkClass && Settings.headerHasDarkClass) {
341                            $header.removeClass("dark");
342                            Settings.headerDarkClassRemoved = true;
343                        }
344                        INSPIRO.header.logoStatus();
345                    }
346                }
347            });
348            $(window).breakpoints("lessThan", "lg", function() {
349                if ($header.attr("data-responsive-fixed") == "true") {
350                    if (scrollOnTop > $headerOffsetTop + shrinkHeader) {
351                        $header.addClass("header-sticky");
352                        if (scrollOnTop > $headerOffsetTop + shrinkHeaderActive) {
353                            $header.addClass("sticky-active");
354                            if (Settings.submenuLight) {
355                                $header.removeClass("dark");
356                                Settings.headerDarkClassRemoved = true;
357                            }
358                            INSPIRO.header.logoStatus();
359                        }
360                    } else {
361                        $header.removeClass().addClass($headerCurrentClasses);
362                        if (
363                            Settings.headerDarkClassRemoved == true &&
364                            $body.hasClass("mainMenu-open")
365                        ) {
366                            $header.removeClass("dark");
367                        }
368                        INSPIRO.header.logoStatus();
369                    }
370                }
371            });
372        },
373        //chkd
374        topBar: function() {
375            if ($topbar.length > 0) {
376                $("#topbar .topbar-dropdown .topbar-form").each(function(
377                    index,
378                    element
379                ) {
380                    if (
381                        $window.width() - ($(element).width() + $(element).offset().left) <
382                        0
383                    ) {
384                        $(element).addClass("dropdown-invert");
385                    }
386                });
387            }
388        },
389        search: function() {
390            var $search = $("#search");
391            if ($search.length > 0) {
392                var searchBtn = $("#btn-search"),
393                    searchBtnClose = $("#btn-search-close"),
394                    searchInput = $search.find(".form-control");
395
396                function openSearch() {
397                    $body.addClass("search-open");
398                    searchInput.focus();
399                }
400
401                function closeSearch() {
402                    $body.removeClass("search-open");
403                    searchInput.value = "";
404                }
405                searchBtn.on("click", function() {
406                    openSearch();
407                    return false;
408                });
409                searchBtnClose.on("click", function() {
410                    closeSearch();
411                    return false;
412                });
413                document.addEventListener("keyup", function(ev) {
414                    if (ev.keyCode == 27) {
415                        closeSearch();
416                    }
417                });
418            }
419        },
420        mainMenu: function() {
421            if ($mainMenu.length > 0) {
422                $mainMenu
423                    .find(".dropdown, .dropdown-submenu")
424                    .prepend('<span class="dropdown-arrow"></span>');
425
426                var $menuItemLinks = $(
427                        '#mainMenu nav > ul > li.dropdown > a[href="#"], #mainMenu nav > ul > li.dropdown > .dropdown-arrow, .dropdown-submenu > a[href="#"], .dropdown-submenu > .dropdown-arrow, .dropdown-submenu > span, .page-menu nav > ul > li.dropdown > a'
428                    ),
429                    $triggerButton = $("#mainMenu-trigger a, #mainMenu-trigger button"),
430                    processing = false,
431                    triggerEvent;
432
433                $triggerButton.on("click", function(e) {
434                    var elem = $(this);
435                    e.preventDefault();
436                    $(window).breakpoints("lessThan", "lg", function() {
437                        var openMenu = function() {
438                            if (!processing) {
439                                processing = true;
440                                Settings.menuIsOpen = true;
441                                if (Settings.submenuLight && Settings.headerHasDarkClass) {
442                                    $header.removeClass("dark");
443                                    Settings.headerDarkClassRemoved = true;
444                                } else {
445                                    if (
446                                        Settings.headerHasDarkClass &&
447                                        Settings.headerDarkClassRemoved
448                                    ) {
449                                        $header.addClass("dark");
450                                    }
451                                }
452                                elem.addClass("toggle-active");
453                                $body.addClass("mainMenu-open");
454                                INSPIRO.header.logoStatus();
455                                $mainMenu.animate({
456                                    "min-height": $window.height(),
457                                }, {
458                                    duration: 500,
459                                    easing: "easeInOutQuart",
460                                    start: function() {
461                                        setTimeout(function() {
462                                            $mainMenu.addClass("menu-animate");
463                                        }, 300);
464                                    },
465                                    complete: function() {
466                                        processing = false;
467                                    },
468                                });
469                            }
470                        };
471                        var closeMenu = function() {
472                            if (!processing) {
473                                processing = true;
474                                Settings.menuIsOpen = false;
475                                INSPIRO.header.logoStatus();
476                                $mainMenu.animate({
477                                    "min-height": 0,
478                                }, {
479                                    start: function() {
480                                        $mainMenu.removeClass("menu-animate");
481                                    },
482                                    done: function() {
483                                        $body.removeClass("mainMenu-open");
484                                        elem.removeClass("toggle-active");
485                                        if (
486                                            Settings.submenuLight &&
487                                            Settings.headerHasDarkClass &&
488                                            Settings.headerDarkClassRemoved &&
489                                            !$header.hasClass("header-sticky")
490                                        ) {
491                                            $header.addClass("dark");
492                                        }
493                                        if (
494                                            Settings.sliderDarkClass &&
495                                            Settings.headerHasDarkClass &&
496                                            Settings.headerDarkClassRemoved
497                                        ) {
498                                            $header.removeClass("dark");
499                                            Settings.headerDarkClassRemoved = true;
500                                        }
501                                    },
502                                    duration: 500,
503                                    easing: "easeInOutQuart",
504                                    complete: function() {
505                                        processing = false;
506                                    },
507                                });
508                            }
509                        };
510                        if (!Settings.menuIsOpen) {
511                            triggerEvent = openMenu();
512                        } else {
513                            triggerEvent = closeMenu();
514                        }
515                    });
516                });
517
518                $menuItemLinks.on("click", function(e) {
519                    $(this).parent("li").siblings().removeClass("hover-active");
520                    if (
521                        $body.hasClass("b--responsive") ||
522                        $mainMenu.hasClass("menu-onclick")
523                    ) {
524                        $(this).parent("li").toggleClass("hover-active");
525                    }
526                    e.stopPropagation();
527                    e.preventDefault();
528                });
529
530                $body.on("click", function(e) {
531                    $mainMenu.find(".hover-active").removeClass("hover-active");
532                });
533
534                $(window).on("resize", function() {
535                    if ($body.hasClass("mainMenu-open")) {
536                        if (Settings.menuIsOpen) {
537                            $mainMenuTriggerBtn.trigger("click");
538                            $mainMenu.find(".hover-active").removeClass("hover-active");
539                        }
540                    }
541                });
542
543                /*invert menu fix*/
544                $(window).breakpoints("greaterEqualTo", "lg", function() {
545                    var $menuLastItem = $("nav > ul > li:last-child"),
546                        $menuLastItemUl = $("nav > ul > li:last-child > ul"),
547                        $menuLastInvert = $menuLastItemUl.width() - $menuLastItem.width(),
548                        $menuItems = $("nav > ul > li").find(".dropdown-menu");
549
550                    $menuItems.css("display", "block");
551
552                    $(".dropdown:not(.mega-menu-item) ul ul").each(function(
553                        index,
554                        element
555                    ) {
556                        if (
557                            $window.width() -
558                            ($(element).width() + $(element).offset().left) <
559                            0
560                        ) {
561                            $(element).addClass("menu-invert");
562                        }
563                    });
564
565                    if ($menuLastItemUl.length > 0) {
566                        if (
567                            $window.width() -
568                            ($menuLastItemUl.width() + $menuLastItem.offset().left) <
569                            0
570                        ) {
571                            $menuLastItemUl.addClass("menu-last");
572                        }
573                    }
574                    $menuItems.css("display", "");
575                });
576            }
577
578
579
580            
581        },
582        mainMenuResponsiveShow: function() {
583           
584        },
585        mainMenuOverlay: function() {},
586        pageMenu: function() {
587            var $pageMenu = $(".page-menu");
588
589            if ($pageMenu.length > 0) {
590                $(window).breakpoints("greaterEqualTo", "lg", function() {
591                    var shrinkPageMenu =
592                        $pageMenu.attr("data-shrink") || $pageMenu.offset().top + 200;
593
594                    if ($pageMenu.attr("data-sticky") == "true") {
595                        $window.scroll(function() {
596                            if ($window.scrollTop() > shrinkPageMenu) {
597                                $pageMenu.addClass("sticky-active");
598                                $header.addClass("pageMenu-sticky");
599                            } else {
600                                $pageMenu.removeClass("sticky-active");
601                                $header.removeClass("pageMenu-sticky");
602                            }
603                        });
604                    }
605                });
606
607                $pageMenu.each(function() {
608                    $(this)
609                        .find("#pageMenu-trigger")
610                        .on("click", function() {
611                            $pageMenu.toggleClass("page-menu-active");
612                            $pageMenu.toggleClass("items-visible");
613                        });
614                });
615            }
616        },
617        sidebarOverlay: function() {
618            var sidebarOverlay = $("#side-panel");
619            if (sidebarOverlay.length > 0) {
620                sidebarOverlay.css("opacity", 1);
621                $("#close-panel").on("click", function() {
622                    $body.removeClass("side-panel-active");
623                    $("#side-panel-trigger").removeClass("toggle-active");
624                });
625            }
626
627            var $sidepanel = $("#sidepanel"),
628                $sidepanelTrigger = $(".panel-trigger"),
629                sidepanelProcessing = false,
630                sidepanelEvent;
631
632            $sidepanelTrigger.on("click", function(e) {
633                e.preventDefault();
634                var panelOpen = function() {
635                    if (!sidepanelProcessing) {
636                        sidepanelProcessing = true;
637                        Settings.panelIsOpen = true;
638                        $sidepanel.addClass("panel-open");
639                        sidepanelProcessing = false;
640                    }
641                };
642                var panelClose = function() {
643                    if (!sidepanelProcessing) {
644                        sidepanelProcessing = true;
645                        Settings.panelIsOpen = false;
646                        $sidepanel.removeClass("panel-open");
647                        sidepanelProcessing = false;
648                    }
649                };
650                if (!Settings.panelIsOpen) {
651                    sidepanelEvent = panelOpen();
652                } else {
653                    sidepanelEvent = panelClose();
654                }
655            });
656        },
657        dotsMenu: function() {
658            var $dotsMenu = $("#dotsMenu"),
659                $dotsMenuItems = $dotsMenu.find("ul > li > a");
660            if ($dotsMenu.length > 0) {
661                $dotsMenuItems.on("click", function() {
662                    $dotsMenuItems.parent("li").removeClass("current");
663                    $(this).parent("li").addClass("current");
664                     $("html, body").stop(true, false).animate({ scrollTop: $($(this).attr("href")).offset().top}, elem.options.speed, "easeInOutExpo");
665                return false;
666                });
667                $dotsMenuItems.parents("li").removeClass("current");
668                $dotsMenu
669                    .find('a[href="#' + INSPIRO.header.currentSection() + '"]')
670                    .parent("li")
671                    .addClass("current");
672            }
673        },
674        onepageMenu: function() {
675            if ($mainMenu.hasClass("menu-one-page")) {
676                var $currentMenuItem = "current";
677
678                $(window).on("scroll", function() {
679                    var $currentSection = INSPIRO.header.currentSection();
680                    $mainMenu
681                        .find("nav > ul > li > a")
682                        .parents("li")
683                        .removeClass($currentMenuItem);
684                    $mainMenu
685                        .find('nav > ul > li > a[href="#' + $currentSection + '"]')
686                        .parent("li")
687                        .addClass($currentMenuItem);
688                });
689            }
690        },
691        currentSection: function() {
692            var elemCurrent = "body";
693            $section.each(function() {
694                var elem = $(this),
695                    elemeId = elem.attr("id");
696                if (
697                    elem.offset().top - $window.height() / 3 < $window.scrollTop() &&
698                    elem.offset().top + elem.height() - $window.height() / 3 >
699                    $window.scrollTop()
700                ) {
701                    elemCurrent = elemeId;
702                }
703            });
704            return elemCurrent;
705        },
706    };
707    INSPIRO.slider = {
708        functions: function() {
709            INSPIRO.slider.inspiroSlider();
710            INSPIRO.slider.carousel();
711        },
712        inspiroSlider: function() {
713            if ($inspiroSlider.length > 0) {
714                //Check if flickity plugin is loaded
715                if (typeof $.fn.flickity === "undefined") {
716                    INSPIRO.elements.notification(
717                        "Warning",
718                        "jQuery flickity slider plugin is missing in plugins.js file.",
719                        "danger"
720                    );
721                    return true;
722                }
723                var defaultAnimation = "animate__fadeInUp";
724
725                function animate_captions($elem) {
726                    var $captions = $elem;
727                    $captions.each(function() {
728                        var $captionElem = $(this),
729                            animationDuration = "600ms";
730                        if ($(this).attr("data-animate-duration")) {
731                            animationDuration = $(this).attr("data-animate-duration") + "ms";
732                        }
733                        $captionElem.css({
734                            opacity: 0,
735                        });
736                        $(this).css("animation-duration", animationDuration);
737                    });
738                    $captions.each(function(index) {
739                        var $captionElem = $(this),
740                            captionDelay =
741                            $captionElem.attr("data-caption-delay") || index * 350 + 1000,
742                            captionAnimation =
743                            $captionElem.attr("data-caption-animate") || defaultAnimation;
744                        var t = setTimeout(function() {
745                            $captionElem.css({
746                                opacity: 1,
747                            });
748                            $captionElem.addClass(captionAnimation);
749                        }, captionDelay);
750                    });
751                }
752
753                function hide_captions($elem) {
754                    var $captions = $elem;
755                    $captions.each(function(caption) {
756                        var caption = $(this),
757                            captionAnimation =
758                            caption.attr("data-caption-animate") || defaultAnimation;
759                        caption.removeClass(captionAnimation);
760                        caption.removeAttr("style");
761                    });
762                }
763
764                function start_kenburn(elem) {
765                    var currentSlide = elem.find(".slide.is-selected"),
766                        currentSlideKenburns = currentSlide.hasClass("kenburns");
767                    if (currentSlideKenburns) {
768                        setTimeout(function() {
769                            currentSlide.find(".kenburns-bg").addClass("kenburns-bg-animate");
770                        }, 500);
771                    }
772                }
773
774                function stop_kenburn(elem) {
775                    var notCurrentSlide = elem.find(".slide:not(.is-selected)");
776                    notCurrentSlide
777                        .find(".kenburns-bg")
778                        .removeClass("kenburns-bg-animate");
779                }
780
781                function slide_dark(elem) {
782                    var $sliderClassSlide = elem.find(".slide.is-selected");
783                    if (
784                        $sliderClassSlide.hasClass("slide-dark") &&
785                        Settings.headerHasDarkClass
786                    ) {
787                        $header.removeClass("dark");
788                        Settings.sliderDarkClass = true;
789                        Settings.headerDarkClassRemoved = true;
790                    } else {
791                        Settings.sliderDarkClass = false;
792                        if (
793                            Settings.headerDarkClassRemoved &&
794                            Settings.headerHasDarkClass &&
795                            !$body.hasClass("mainMenu-open") &&
796                            !$header.hasClass("sticky-active")
797                        ) {
798                            $header.addClass("dark");
799                        }
800                    }
801                }
802
803                function sliderHeight(elem, state) {
804                    var elem,
805                        headerHeight = $header.outerHeight(),
806                        topbarHeight = $topbar.outerHeight() || 0,
807                        windowHeight = $window.height(),
808                        sliderCurrentHeight = elem.height(),
809                        screenHeightExtra = headerHeight + topbarHeight,
810                        $sliderClassSlide = elem.find(".slide"),
811                        sliderFullscreen = elem.hasClass("slider-fullscreen"),
812                        screenRatio = elem.hasClass("slider-halfscreen") ? 1 : 1.2,
813                        transparentHeader = $header.attr("data-transparent"),
814                        customHeight = elem.attr("data-height"),
815                        responsiveHeightXs = elem.attr("data-height-xs"),
816                        containerFullscreen = elem.find(".container").first().outerHeight(),
817                        contentCrop;
818
819                    if (containerFullscreen >= windowHeight) {
820                        contentCrop = true;
821                        var sliderMinHeight = containerFullscreen;
822                        elem.css("min-height", sliderMinHeight + 100);
823                        $sliderClassSlide.css("min-height", sliderMinHeight + 100);
824                        elem
825                            .find(".flickity-viewport")
826                            .css("min-height", sliderMinHeight + 100);
827                    }
828
829                    sliderElementsHeight("null");
830
831                    function sliderElementsHeight(height) {
832                        if (height == "null") {
833                            elem.css("height", "");
834                            $sliderClassSlide.css("height", "");
835                            elem.find(".flickity-viewport").css("height", "");
836                        } else {
837                            elem.css("height", height);
838                            $sliderClassSlide.css("height", height);
839                            elem.find(".flickity-viewport").css("height", height);
840                        }
841                    }
842                    if (customHeight) {
843                        $(window).breakpoints("greaterEqualTo", "lg", function() {
844                            sliderElementsHeight(customHeight + "px");
845                        });
846                    }
847                    if (responsiveHeightXs) {
848                        $(window).breakpoints("lessThan", "md", function() {
849                            sliderElementsHeight(responsiveHeightXs + "px");
850                        });
851                    }
852                }
853                $inspiroSlider.each(function() {
854                    var elem = $(this);
855                    //Plugin Options
856                    elem.options = {
857                        cellSelector: elem.attr("data-item") || ".slide",
858                        prevNextButtons: elem.data("arrows") == false ? false : true,
859                        pageDots: elem.data("dots") == false ? false : true,
860                        fade: elem.data("fade") == true ? true : false,
861                        draggable: elem.data("drag") == true ? true : false,
862                        freeScroll: elem.data("free-scroll") == true ? true : false,
863                        wrapAround: elem.data("loop") == false ? false : true,
864                        groupCells: elem.data("group-cells") == true ? true : false,
865                        autoPlay: elem.attr("data-autoplay") || 7000,
866                        pauseAutoPlayOnHover: elem.data("hoverpause") == true ? true : false,
867                        adaptiveHeight: elem.data("adaptive-height") == false ? false : false,
868                        asNavFor: elem.attr("data-navigation") || false,
869                        selectedAttraction: elem.attr("data-attraction") || 0.07,
870                        friction: elem.attr("data-friction") || 0.9,
871                        initialIndex: elem.attr("data-initial-index") || 0,
872                        accessibility: elem.data("accessibility") == true ? true : false,
873                        setGallerySize: elem.data("gallery-size") == false ? false : false,
874                        resize: elem.data("resize") == false ? false : false,
875                        cellAlign: elem.attr("data-align") || "left",
876                        playWholeVideo: elem.attr("data-play-whole-video") == false ? false : true,
877                    };
878
879
880
881                    //Kenburns effect
882                    elem.find(".slide").each(function() {
883                        if ($(this).hasClass("kenburns")) {
884                            var elemChild = $(this),
885                                elemChildImage = elemChild
886                                .css("background-image")
887                                .replace(/.*\s?url\([\'\"]?/, "")
888                                .replace(/[\'\"]?\).*/, "");
889
890                            if (elemChild.attr("data-bg-image")) {
891                                elemChildImage = elemChild.attr("data-bg-image");
892                            }
893                            elemChild.prepend(
894                                '<div class="kenburns-bg" style="background-image:url(' +
895                                elemChildImage +
896                                ')"></div>'
897                            );
898                        }
899                    });
900                    elem.find(".slide video").each(function() {
901                        this.pause();
902                    });
903                    $(window).breakpoints("lessThan", "lg", function() {
904                        elem.options.draggable = true;
905                    });
906
907                    if (elem.find(".slide").length <= 1) {
908                        elem.options.prevNextButtons = false;
909                        elem.options.pageDots = false;
910                        elem.options.autoPlay = false;
911                        elem.options.draggable = false;
912                    }
913
914                    if (!$.isNumeric(elem.options.autoPlay) &&
915                        elem.options.autoPlay != false
916                    ) {
917                        elem.options.autoPlay = Number(7000);
918                    }
919
920                    if (INSPIRO.core.rtlStatus() == true) {
921                        elem.options.resize = true;
922                    }
923
924                    sliderHeight(elem);
925
926                    var inspiroSliderData = elem.flickity({
927                        cellSelector: elem.options.cellSelector,
928                        prevNextButtons: elem.options.prevNextButtons,
929                        pageDots: elem.options.pageDots,
930                        fade: elem.options.fade,
931                        draggable: elem.options.draggable,
932                        freeScroll: elem.options.freeScroll,
933                        wrapAround: elem.options.wrapAround,
934                        groupCells: elem.options.groupCells,
935                        autoPlay: Number(elem.options.autoPlay),
936                        pauseAutoPlayOnHover: elem.options.pauseAutoPlayOnHover,
937                        adaptiveHeight: elem.options.adaptiveHeight,
938                        asNavFor: elem.options.asNavFor,
939                        selectedAttraction: Number(elem.options.selectedAttraction),
940                        friction: elem.options.friction,
941                        initialIndex: elem.options.initialIndex,
942                        accessibility: elem.options.accessibility,
943                        setGallerySize: elem.options.setGallerySize,
944                        resize: elem.options.resize,
945                        cellAlign: elem.options.cellAlign,
946                        rightToLeft: INSPIRO.core.rtlStatus(),
947                        on: {
948                            ready: function(index) {
949                                var $captions = elem.find(
950                                    ".slide.is-selected .slide-captions > *"
951                                );
952                                slide_dark(elem);
953                                sliderHeight(elem);
954                                start_kenburn(elem);
955                                animate_captions($captions);
956                                setTimeout(function() {
957                                    elem
958                                        .find(".slide:not(.is-selected) video")
959                                        .each(function(i, video) {
960                                            video.pause();
961                                            video.currentTime = 0;
962                                        });
963                                }, 700);
964                            },
965                        },
966                    });
967
968                    var flkty = inspiroSliderData.data("flickity");
969
970                    function wrapAroundStop() {
971                        if (flkty.player.state != 'playing') {
972                            disableAutoplay()
973                            return;
974                        }
975
976                        var isAtLast = flkty.selectedIndex == flkty.slides.length - 1;
977                        if (isAtLast) {
978                            disableAutoplay();
979                        }
980                    }
981
982                    function disableAutoplay() {
983                        elem.flickity('stopPlayer');
984                        elem.off('select.flickity', wrapAroundStop);
985                    }
986
987                    inspiroSliderData.on("change.flickity", function() {
988                        var $captions = elem.find(".slide.is-selected .slide-captions > *");
989                        hide_captions($captions);
990                        setTimeout(function() {
991                            stop_kenburn(elem);
992                        }, 1000);
993                        start_kenburn(elem);
994                        animate_captions($captions);
995                        elem.find(".slide video").each(function(i, video) {
996                            video.currentTime = 0;
997                        });
998                    });
999
1000                    inspiroSliderData.on("select.flickity", function() {
1001                        //  INSPIRO.elements.backgroundImage();
1002                        var $captions = elem.find(".slide.is-selected .slide-captions > *");
1003                        slide_dark(elem);
1004                        sliderHeight(elem);
1005                        start_kenburn(elem);
1006                        animate_captions($captions);
1007                        var video = flkty.selectedElement.querySelector("video");
1008                        if (video) {
1009                            video.play();
1010                            flkty.options.autoPlay = Number(video.duration * 1000);
1011                        } else {
1012                            flkty.options.autoPlay = Number(elem.options.autoPlay);
1013                        }
1014
1015                        if (elem.options.wrapAround == false) {
1016                            wrapAroundStop();
1017                        }
1018
1019                    });
1020                    inspiroSliderData.on("dragStart.flickity", function() {
1021                        var $captions = elem.find(
1022                            ".slide:not(.is-selected) .slide-captions > *"
1023                        );
1024                        hide_captions($captions);
1025                    });
1026                    $(window).resize(function() {
1027                        sliderHeight(elem);
1028                        elem.flickity("reposition");
1029                    });
1030                });
1031            }
1032        },
1033        carousel: function(elem) {
1034            if (elem) {
1035                $carousel = elem;
1036            }
1037
1038            if ($carousel.length > 0) {
1039                //Check if flickity plugin is loaded
1040                if (typeof $.fn.flickity === "undefined") {
1041                    INSPIRO.elements.notification(
1042                        "Warning",
1043                        "jQuery flickity plugin is missing in plugins.js file.",
1044                        "danger"
1045                    );
1046                    return true;
1047                }
1048                $carousel.each(function() {
1049                    var elem = $(this);
1050                    //Plugin Options
1051                    elem.options = {
1052                        containerWidth: elem.width(),
1053                        items: elem.attr("data-items") || 4,
1054                        itemsLg: elem.attr("data-items-lg"),
1055                        itemsMd: elem.attr("data-items-md"),
1056                        itemsSm: elem.attr("data-items-sm"),
1057                        itemsXs: elem.attr("data-items-xs"),
1058                        margin: elem.attr("data-margin") || 10,
1059                        cellSelector: elem.attr("data-item") || false,
1060                        prevNextButtons: elem.data("arrows") == false ? false : true,
1061                        pageDots: elem.data("dots") == false ? false : true,
1062                        fade: elem.data("fade") == true ? true : false,
1063                        draggable: elem.data("drag") == false ? false : true,
1064                        freeScroll: elem.data("free-scroll") == true ? true : false,
1065                        wrapAround: elem.data("loop") == false ? false : true,
1066                        groupCells: elem.data("group-cells") == true ? true : false,
1067                        autoPlay: elem.attr("data-autoplay") || 7000,
1068                        pauseAutoPlayOnHover: elem.data("hover-pause") == false ? false : true,
1069                        asNavFor: elem.attr("data-navigation") || false,
1070                        lazyLoad: elem.data("lazy-load") == true ? true : false,
1071                        initialIndex: elem.attr("data-initial-index") || 0,
1072                        accessibility: elem.data("accessibility") == true ? true : false,
1073                        adaptiveHeight: elem.data("adaptive-height") == true ? true : false,
1074                        autoWidth: elem.data("auto-width") == true ? true : false,
1075                        setGallerySize: elem.data("gallery-size") == false ? false : true,
1076                        resize: elem.data("resize") == false ? false : true,
1077                        cellAlign: elem.attr("data-align") || "left",
1078                        contain: elem.data("contain") == false ? false : true,
1079                        rightToLeft: INSPIRO.core.rtlStatus(),
1080                    };
1081
1082                    //Calculate min/max on responsive breakpoints
1083                    elem.options.itemsLg =
1084                        elem.options.itemsLg ||
1085                        Math.min(Number(elem.options.items), Number(4));
1086                    elem.options.itemsMd =
1087                        elem.options.itemsMd ||
1088                        Math.min(Number(elem.options.itemsLg), Number(3));
1089                    elem.options.itemsSm =
1090                        elem.options.itemsSm ||
1091                        Math.min(Number(elem.options.itemsMd), Number(2));
1092                    elem.options.itemsXs =
1093                        elem.options.itemsXs ||
1094                        Math.min(Number(elem.options.itemsSm), Number(1));
1095                    var setResponsiveColumns;
1096
1097                    function getCarouselColumns() {
1098                        switch ($(window).breakpoints("getBreakp
1098oint")) {
1099                            case "xs":
1100                                setResponsiveColumns = Number(elem.options.itemsXs);
1101                                break;
1102                            case "sm":
1103                                setResponsiveColumns = Number(elem.options.itemsSm);
1104                                break;
1105                            case "md":
1106                                setResponsiveColumns = Number(elem.options.itemsMd);
1107                                break;
1108                            case "lg":
1109                                setResponsiveColumns = Number(elem.options.itemsLg);
1110                                break;
1111                            case "xl":
1112                                setResponsiveColumns = Number(elem.options.items);
1113                                break;
1114                        }
1115                    }
1116                    getCarouselColumns();
1117                    var itemWidth;
1118                    elem.find("> *").wrap('<div class="polo-carousel-item">');
1119                    if (elem.hasClass("custom-height")) {
1120                        elem.options.setGallerySize = false;
1121                        INSPIRO.core.customHeight(elem);
1122                        INSPIRO.core.customHeight(elem.find(".polo-carousel-item"));
1123                        var carouselCustomHeightStatus = true;
1124                    }
1125                    if (Number(elem.options.items) !== 1) {
1126                        if (elem.options.autoWidth || carouselCustomHeightStatus) {
1127                            elem.find(".polo-carousel-item").css({
1128                                "padding-right": elem.options.margin + "px",
1129                            });
1130                        } else {
1131                            itemWidth =
1132                                (elem.options.containerWidth + Number(elem.options.margin)) /
1133                                setResponsiveColumns;
1134                            elem.find(".polo-carousel-item").css({
1135                                width: itemWidth,
1136                                "padding-right": elem.options.margin + "px",
1137                            });
1138                        }
1139                    } else {
1140                        elem.find(".polo-carousel-item").css({
1141                            width: "100%",
1142                            "padding-right": "0 !important;",
1143                        });
1144                    }
1145                    if (elem.options.autoWidth || carouselCustomHeightStatus) {
1146                        elem.options.cellAlign = "center";
1147                    }
1148
1149                    if (elem.options.autoPlay == "false") {
1150                        elem.options.autoPlay = false;
1151                    }
1152
1153                    if (!$.isNumeric(elem.options.autoPlay) &&
1154                        elem.options.autoPlay != false
1155                    ) {
1156                        elem.options.autoPlay = Number(7000);
1157                    }
1158
1159                    //Initializing plugin and passing the options
1160                    var $carouselElem = $(elem);
1161                    $carouselElem.imagesLoaded(function() {
1162                        // init Isotope after all images have loaded
1163                        $carouselElem.flickity({
1164                            cellSelector: elem.options.cellSelector,
1165                            prevNextButtons: elem.options.prevNextButtons,
1166                            pageDots: elem.options.pageDots,
1167                            fade: elem.options.fade,
1168                            draggable: elem.options.draggable,
1169                            freeScroll: elem.options.freeScroll,
1170                            wrapAround: elem.options.wrapAround,
1171                            groupCells: elem.options.groupCells,
1172                            autoPlay: Number(elem.options.autoPlay),
1173                            pauseAutoPlayOnHover: elem.options.pauseAutoPlayOnHover,
1174                            adaptiveHeight: elem.options.adaptiveHeight,
1175                            asNavFor: elem.options.asNavFor,
1176                            initialIndex: elem.options.initialIndex,
1177                            accessibility: elem.options.accessibility,
1178                            setGallerySize: elem.options.setGallerySize,
1179                            resize: elem.options.resize,
1180                            cellAlign: elem.options.cellAlign,
1181                            rightToLeft: elem.options.rightToLeft,
1182                            contain: elem.options.contain,
1183                        });
1184                        elem.addClass("carousel-loaded");
1185                    });
1186                    if (elem.hasClass("custom-height")) {
1187                        INSPIRO.core.customHeight(elem);
1188                    }
1189                    if (Number(elem.options.items) !== 1) {
1190                        $(window).on("resize", function() {
1191                            setTimeout(function() {
1192                                getCarouselColumns();
1193                                itemWidth =
1194                                    (elem.width() + Number(elem.options.margin)) /
1195                                    setResponsiveColumns;
1196                                if (elem.options.autoWidth || carouselCustomHeightStatus) {
1197                                    elem.find(".polo-carousel-item").css({
1198                                        "padding-right": elem.options.margin + "px",
1199                                    });
1200                                } else {
1201                                    if (!elem.hasClass("custom-height")) {
1202                                        elem.find(".polo-carousel-item").css({
1203                                            width: itemWidth,
1204                                            "padding-right": elem.options.margin + "px",
1205                                        });
1206                                    } else {
1207                                        INSPIRO.core.customHeight(elem.find(".polo-carousel-item"));
1208                                        elem.find(".polo-carousel-item").css({
1209                                            width: itemWidth,
1210                                            "padding-right": elem.options.margin + "px",
1211                                        });
1212                                    }
1213                                }
1214                                elem.find(".flickity-slider").css({
1215                                    "margin-right":
1216                                        -elem.options.margin / setRe
1216sponsiveColumns + "px",
1217                                });
1218                                elem.flickity('resize');
1219                                elem.flickity("reposition");
1220                            }, 300);
1221                        });
1222                    }
1223                });
1224            }
1225        },
1226    };
1227    INSPIRO.elements = {
1228        functions: function() {
1229            INSPIRO.elements.shapeDivider();
1230            INSPIRO.elements.naTo();
1231            INSPIRO.elements.morphext();
1232            INSPIRO.elements.buttons();
1233            INSPIRO.elements.accordion();
1234            INSPIRO.elements.animations();
1235            INSPIRO.elements.parallax();
1236            INSPIRO.elements.backgroundImage();
1237            INSPIRO.elements.responsiveVideos();
1238            INSPIRO.elements.countdownTimer();
1239            INSPIRO.elements.progressBar();
1240            INSPIRO.elements.pieChart();
1241            INSPIRO.elements.maps();
1242            INSPIRO.elements.gridLayout();
1243            INSPIRO.elements.tooltip();
1244            INSPIRO.elements.popover();
1245            INSPIRO.elements.magnificPopup();
1246            INSPIRO.elements.yTPlayer();
1247            INSPIRO.elements.vimeoPlayer();
1248            INSPIRO.elements.modal();
1249            INSPIRO.elements.sidebarFixed();
1250            INSPIRO.elements.clipboard();
1251            INSPIRO.elements.bootstrapSwitch();
1252            INSPIRO.elements.countdown();
1253            INSPIRO.elements.other();
1254            INSPIRO.elements.videoBackground();
1255            INSPIRO.elements.forms();
1256            INSPIRO.elements.formValidation();
1257            INSPIRO.elements.formAjaxProcessing();
1258            INSPIRO.elements.floatingDiv();
1259            INSPIRO.elements.wizard();
1260            INSPIRO.elements.counters();
1261        },
1262        forms: function() {
1263            //Show hide password
1264            var $showHidePassword = $(".show-hide-password");
1265            if ($showHidePassword.length > 0) {
1266                $showHidePassword.each(function() {
1267                    var elem = $(this),
1268                        $iconEye = "icon-eye",
1269                        $iconClosedEye = "icon-eye-off",
1270                        elemShowHideIcon = elem.find(".input-group-text i"),
1271                        elemInput = elem.children("input");
1272                    elem.find(".input-group-text i").css({
1273                        cursor: "pointer",
1274                    });
1275                    elemShowHideIcon.on("click", function(event) {
1276                        event.preventDefault();
1277                        if (elem.children("input").attr("type") == "text") {
1278                            elemInput.attr("type", "password");
1279                            elemShowHideIcon.removeClass($iconEye);
1280                            elemShowHideIcon.addClass($iconClosedEye);
1281                        } else if (elem.children("input").attr("type") == "password") {
1282                            elemInput.attr("type", "text");
1283                            elemShowHideIcon.addClass($iconEye);
1284                            elemShowHideIcon.removeClass($iconClosedEye);
1285                        }
1286                    });
1287                });
1288            }
1289
1290            /*   if($('#pwd-container').length > 0) {
1291              var pwdOptions = {};
1292                pwdOptions.ui = {
1293                    container: "#pwd-container",
1294                    viewports: {
1295                        progress: ".pwstrength_viewport_progress",
1296                        verdict: ".pwstrength_viewport_verdict"
1297                    }
1298                };
1299                pwdOptions.common = {
1300                    onLoad: function () {
1301                        $('#messages').text('Start typing password');
1302                    },
1303                    zxcvbn: true,
1304                    zxcvbnTerms: ['samurai', 'shogun', 'bushido', 'daisho', 'seppuku'],
1305                    userInputs: ['#year', '#familyname']
1306                };
1307                $(':password').pwstrength(pwdOptions);
1308              } */
1309        },
1310        formValidation: function() {
1311            var forms = document.getElementsByClassName("needs-validation");
1312            var validation = Array.prototype.filter.call(forms, function(form) {
1313                form.addEventListener(
1314                    "submit",
1315                    function(event) {
1316                        if (form.checkValidity() === false) {
1317                            event.preventDefault();
1318                            event.stopPropagation();
1319                        }
1320                        form.classList.add("was-validated");
1321                    },
1322                    false
1323                );
1324            });
1325        },
1326
1327        formAjaxProcessing: function() {
1328            var $ajaxForm = $(
1329                ".widget-contact-form:not(.custom-js), .ajax-form:not(.custom-js)"
1330            );
1331            if ($ajaxForm.length > 0) {
1332                $ajaxForm.each(function() {
1333                    var elem = $(this),
1334                        elemCustomRedirectPage = elem.attr("data-success-page");
1335                    var button = elem.find("button#form-submit"),
1336                        buttonText = button.html();
1337
1338                    var validation = Array.prototype.filter.call(elem, function(form) {
1339                        form.addEventListener(
1340                            "submit",
1341                            function(event) {
1342                                if (form[0].checkValidity() === false) {
1343                                    event.preventDefault();
1344                                    event.stopPropagation();
1345                                }
1346                                form.classList.add("was-validated");
1347                                return false;
1348                            },
1349                            false
1350                        );
1351                    });
1352
1353                    elem.submit(function(event) {
1354                        event.preventDefault();
1355                        var post_url = $(this).attr("action");
1356                        var request_method = $(this).attr("method");
1357
1358                        if (elem[0].checkValidity() === false) {
1359                            event.stopPropagation();
1360                            elem.addClass("was-validated");
1361                        } else {
1362                            $(elem).removeClass("was-validated");
1363                            button.html('<i class="icon-loader fa-spin"> </i> Sending...');
1364                            $.ajax({
1365                                url: post_url,
1366                                type: request_method,
1367                                data: new FormData(this),
1368                                cache: false,
1369                                contentType: false,
1370                                processData: false,
1371                                success: function(text) {
1372                                    if (text.response == "success") {
1373                                        if (elem.find(".g-recaptcha").children("div").length > 0) {
1374                                            grecaptcha.reset();
1375                                        }
1376                                        $(elem)[0].reset();
1377                                        button.html(buttonText);
1378                                        if (elemCustomRedirectPage) {
1379                                            window.location.href = elemCustomRedirectPage;
1380                                        } else {
1381                                            $.notify({
1382                                                message: text.message,
1383                                            }, {
1384                                                type: "success",
1385                                                delay: elem.attr("data-success-message-delay") || 20000,
1386                                            });
1387                                        }
1388                                    } else {
1389                                        if (elem.find(".g-recaptcha").children("div").length > 0) {
1390                                            grecaptcha.reset();
1391                                        }
1392                                        $.notify({
1393                                            message: elem.attr("data-error-message") || text.message,
1394                                        }, {
1395                                            type: "danger",
1396                                            delay: elem.attr("data-error-message-delay") || 20000,
1397                                        });
1398                                        var t = setTimeout(function() {
1399                                            button.html(buttonText);
1400                                        }, 1000);
1401                                    }
1402                                },
1403                            });
1404                        }
1405                    });
1406                });
1407            }
1408        },
1409        wizard: function() {
1410            //Show hide password
1411        },
1412        floatingDiv: function() {
1413            var $floatingDiv = $(".floating-div");
1414            if ($floatingDiv.length > 0) {
1415                $floatingDiv.each(function() {
1416                    var elem = $(this),
1417                        elemAlign = elem.attr("data-placement") || "bottom",
1418                        elemScrollOffset = elem.attr("data-offset") || 50,
1419                        elemVisible = elem.attr("data-visibile") || "all",
1420                        elemHeight = elem.outerHeight(),
1421                        elemWidth = elem.outerWidth();
1422
1423                    /* if(elemVisible !== "all") {
1424                      
1425                    }else {
1426                      if ($body.hasClass("b--desktop")) {
1427
1428                      }
1429                    } */
1430                    $window.scroll(function() {
1431                        var scrollOffset = $body.attr("data-offset") || 80;
1432                        if ($window.scrollTop() > scrollOffset) {
1433                            elem.css(elemAlign, "20px");
1434                        } else {
1435                            elem.css(elemAlign, -elemHeight + "px");
1436                        }
1437                    });
1438                });
1439            }
1440        },
1441        other: function(context) {
1442            //Lazy Load
1443            var myLazyLoad = new LazyLoad({
1444                elements_selector: ".lazy",
1445                class_loaded: "img-loaded",
1446            });
1447
1448            if ($(".toggle-item").length > 0) {
1449                $(".toggle-item").each(function() {
1450                    var elem = $(this),
1451                        toggleItemClass = elem.attr("data-class"),
1452                        toggleItemClassTarget = elem.attr("data-target");
1453                    elem.on("click", function() {
1454                        if (toggleItemClass) {
1455                            if (toggleItemClassTarget) {
1456                                $(toggleItemClassTarget).toggleClass(toggleItemClass);
1457                            } else {
1458                                elem.toggleClass(toggleItemClass);
1459                            }
1460                        }
1461                        elem.toggleClass("toggle-active");
1462                        return false;
1463                    });
1464                });
1465            }
1466            /*Dropdown popup invert*/
1467            var $pDropdown = $(".p-dropdown");
1468            if ($pDropdown.length > 0) {
1469                $pDropdown.each(function() {
1470                    var elem = $(this);
1471
1472                    elem.find("> a").on("click", function() {
1473                        elem.toggleClass("dropdown-active");
1474                        return false;
1475                    });
1476
1477                    if ($window.width() / 2 > elem.offset().left) {
1478                        elem.addClass("p-dropdown-invert");
1479                    }
1480                });
1481            }
1482
1483            // Show/hide div
1484            var $showHide = $(".show-hide");
1485            if ($showHide.length > 0) {
1486                $showHide.each(function() {
1487                    var elem = $(this),
1488                        elemHide = elem.attr("data-hide"),
1489                        elemShow = elem.attr("data-show");
1490
1491                    elem.on("click", function() {
1492                        $(elemHide).hide();
1493                        $(elemShow).show();
1494                        return false;
1495                    });
1496                });
1497            }
1498        },
1499        naTo: function() {
1500
1501            var elem = $("a.scroll-to, #dotsMenu > ul > li > a, .menu-one-page nav > ul > li > a:not([data-lightbox])");;
1502
1503            elem.on("click", function() {
1504
1505                //Plugin Options
1506                elem.options = {
1507                    offsetTop: elem.attr("data-offset") || 30,
1508                    headerHeight: elem.attr("data-header-height") || 0,
1509                    speed: elem.attr("data-speed") || 1500,
1510                    height: elem.height(),
1511                };
1512
1513
1514                $(window).breakpoints("lessThan", "lg", function() {
1515                    if (Settings.menuIsOpen) {
1516                        $mainMenuTriggerBtn.trigger("click");
1517                    }
1518                    if ($header.attr("data-responsive-fixed") === true) {
1519                        elem.options.headerHeight = $header.height();
1520                    }
1521                });
1522                $(window).breakpoints("greaterEqualTo", "lg", function() {
1523                    if ($header.length > 0) {
1524                        elem.options.headerHeight = $header.height();
1525                    }
1526                });
1527                if ($(".dashboard").length > 0) {
1528                    elem.options.offsetTop = 30;
1529                }
1530
1531                $("html, body").stop(true, false).animate({ scrollTop: $($(this).attr("href")).offset().top - (elem.options.headerHeight + elem.options.offsetTop), }, elem.options.speed, "easeInOutExpo");
1532                return false;
1533            });
1534        },
1535        morphext: function() {
1536            var $textRotator = $(".text-rotator");
1537            if ($textRotator.length > 0) {
1538                //Check if Morphext plugin is loaded
1539                if (typeof $.fn.Morphext === "undefined") {
1540                    INSPIRO.elements.notification(
1541                        "Warning",
1542                        "jQuery Morphext plugin is missing in plugins.js file.",
1543                        "danger"
1544                    );
1545                    return true;
1546                }
1547                $textRotator.each(function() {
1548                    var elem = $(this);
1549                    //Plugin Options
1550                    elem.options = {
1551                        animate_prefix: "animate__",
1552                        animation: elem.attr("data-animate") || "fadeIn",
1553                        separator: elem.attr("data-separator") || ",",
1554                        speed: elem.attr("data-speed") || 2000,
1555                        height: elem.height(),
1556                    };
1557                    elem.css({
1558                        "min-height": elem.options.height,
1559                    });
1560                    //Initializing Morphext plugin and passing the options
1561                    elem.Morphext({
1562                        animation: elem.options.animate_prefix + elem.options.animation,
1563                        separator: elem.options.separator,
1564                        speed: Number(elem.options.speed),
1565                    });
1566                });
1567            }
1568        },
1569        buttons: function() {
1570            //Button slide width
1571            if ($(".btn-slide[data-width]")) {
1572                $(".btn.btn-slide[data-width]").each(function() {
1573                    var elem = $(this),
1574                        elemWidth = elem.attr("data-width"),
1575                        elemDefaultWidth;
1576                    switch (true) {
1577                        case elem.hasClass("btn-lg"):
1578                            elemDefaultWidth = "60";
1579                            break;
1580                        case elem.hasClass("btn-sm"):
1581                            elemDefaultWidth = "36";
1582                            break;
1583                        case elem.hasClass("btn-xs"):
1584                            elemDefaultWidth = "28";
1585                            break;
1586                        default:
1587                            elemDefaultWidth = "48";
1588                            break;
1589                    }
1590                    elem.hover(
1591                        function() {
1592                            $(this).css("width", elemWidth + "px");
1593                        },
1594                        function() {
1595                            $(this).css("width", elemDefaultWidth + "px");
1596                        }
1597                    );
1598                });
1599            }
1600        },
1601        accordion: function() {
1602            var accordionType = "accordion",
1603                toogleType = "toggle",
1604                accordionItem = "ac-item",
1605                itemActive = "ac-active",
1606                itemTitle = "ac-title",
1607                itemContent = "ac-content",
1608                $accs = $("." + accordionItem);
1609            $accs.length &&
1610                ($accs.each(function() {
1611                        var $item = $(this);
1612                        $item.hasClass(itemActive) ?
1613                            $item.addClass(itemActive) :
1614                            $item.find("." + itemContent).hide();
1615                    }),
1616                    $("." + itemTitle).on("click", function(e) {
1617                        var $link = $(this),
1618                            $item = $link.parents("." + accordionItem),
1619                            $acc = $item.parents("." + accordionType);
1620                        $item.hasClass(itemActive) ?
1621                            $acc.hasClass(toogleType) ?
1622                            ($item.removeClass(itemActive),
1623                                $link.next("." + itemContent).slide
1623Up()) :
1624                            ($acc.find("." + accordionItem).removeClass(itemActive),
1625                                $acc.find("." + itemContent).slideUp()) :
1626                            ($acc.hasClass(toogleType) ||
1627                                ($acc.find("." + accordionItem).removeClass(itemActive),
1628                                    $acc.find("." + itemContent).slideUp("fast")),
1629                                $item.addClass(itemActive),
1630                                $link.next("." + itemContent).slideToggle("fast")),
1631                            e.preventDefault();
1632
1633                        if ($link.find(".custom-radio").length > 0) {
1634                            $link
1635                                .find(".custom-radio .custom-control-input")
1636                                .prop("checked", true);
1637                            return false;
1638                        }
1639                        return false;
1640                    }));
1641        },
1642        animations: function() {
1643            var $animate = $("[data-animate]");
1644            if ($animate.length > 0) {
1645                //Check if jQuery Waypoint plugin is loaded
1646                if (typeof Waypoint === "undefined") {
1647                    INSPIRO.elements.notification(
1648                        "Warning",
1649                        "jQuery Waypoint plugin is missing in plugins.js file.",
1650                        "danger"
1651                    );
1652                    return true;
1653                }
1654                $animate.each(function() {
1655                    var elem = $(this);
1656                    elem.addClass("animate__animated");
1657                    //Plugin Options
1658                    elem.options = {
1659                        animate_prefix: "animate__",
1660                        animation: elem.attr("data-animate") || "fadeIn",
1661                        delay: elem.attr("data-animate-delay") || 200,
1662                        direction: ~elem.attr("data-animate").indexOf("Out") ? "back" : "forward",
1663                        offsetX: elem.attr("data-animate-offsetX") || 0,
1664                        offsetY: elem.attr("data-animate-offsetY") || -100,
1665                    };
1666                    //Initializing jQuery Waypoint plugin and passing the options from data animations attributes
1667                    if (elem.options.direction == "forward") {
1668                        new Waypoint({
1669                            element: elem,
1670                            handler: function() {
1671                                var t = setTimeout(function() {
1672                                    elem.addClass(elem.options.animate_prefix + elem.options.animation + " visible");
1673                                }, elem.options.delay);
1674                                this.destroy();
1675                            },
1676                            offset: "100%",
1677                        });
1678                    } else {
1679                        elem.addClass("visible");
1680                        elem.on("click", function() {
1681                            elem.addClass(elem.options.animate_prefix + elem.options.animation);
1682                            return false;
1683                        });
1684                    }
1685                    //Demo play
1686                    if (elem.parents(".demo-play-animations").length) {
1687                        elem.on("click", function() {
1688                            elem.removeClass(elem.options.animate_prefix + elem.options.animation);
1689                            var t = setTimeout(function() {
1690                                elem.addClass(elem.options.animate_prefix + elem.options.animation);
1691                            }, 50);
1692                            return false;
1693                        });
1694                    }
1695                });
1696            }
1697        },
1698        parallax: function() {
1699            var $parallax = $("[data-bg-parallax]");
1700            if ($parallax.length > 0) {
1701                //Check if scrolly plugin is loaded
1702                if (typeof $.fn.scrolly === "undefined") {
1703                    INSPIRO.elements.notification(
1704                        "Warning",
1705                        "jQuery scrolly plugin is missing in plugins.js file.",
1706                        "danger"
1707                    );
1708                    return true;
1709                }
1710                $parallax.each(function() {
1711                    var $elem = $(this),
1712                        elemImageSrc = $elem.attr("data-bg-parallax"),
1713                        elemImageVelocity = $elem.attr("data-velocity") || "-.140";
1714                    $elem.prepend(
1715                        '<div class="parallax-container" data-bg="' +
1716                        elemImageSrc +
1717                        '"  data-velocity="' +
1718                        elemImageVelocity +
1719                        '" style="background: url(' +
1720                        elemImageSrc +
1721                        ')"></div>'
1722                    );
1723
1724                    var parallaxLazy = new LazyLoad({
1725                        elements_selector: ".parallax-container",
1726                        class_loaded: "img-loaded",
1727                    });
1728
1729                    $elem.find(".parallax-container").scrolly({
1730                        bgParallax: true,
1731                    });
1732                });
1733            }
1734        },
1735        backgroundImage: function() {
1736            var $backgroundImage = $("[data-bg-image]");
1737
1738            if ($backgroundImage.length > 0) {
1739                $backgroundImage.each(function() {
1740                    var $elem = $(this),
1741                        elemImageSrc = $elem.attr("data-bg-image");
1742                    $elem.addClass("lazy-bg");
1743                    $elem.attr("data-bg", elemImageSrc);
1744                });
1745
1746                var laazybg = new LazyLoad({
1747                    elements_selector: ".lazy-bg",
1748                    class_loaded: "bg-loaded",
1749                });
1750            }
1751        },
1752        shapeDivider: function() {
1753            var $shape_divider = $(".shape-divider");
1754            $shape_divider.each(function() {
1755                var elem = $(this);
1756                elem.options = {
1757                    style: elem.attr("data-style") || 1,
1758                    color: elem.attr("data-color") || "#ffffff",
1759                    opacity: elem.attr("data-opacity") || "1",
1760                    zIndex: elem.attr("data-zIndex") || "0",
1761                    height: elem.attr("data-height") || 210,
1762                    prefix: "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MzAg",
1763                };
1764
1765                if ($body.hasClass("dark") && elem.options.color === "#ffffff") {
1766                    elem.options.color = "#181818";
1767                }
1768                switch (elem.options.style) {
1769                    case "1":
1770                        elem.options.style =
1771                            elem.options.prefix +
1772                            "MTI1LjcyIj48dGl0bGU+QXNzZXQgMTc0PC90aXRsZT48cGF0aCBkPSJNMzk1LDk5LjM3Yy01Ny40MywxMC4xNy0xMjQuMjctOC4wNi0xNzYuOC0xMS43MnEzLjkzLjY0LDgsMS40MWM1MC44MSw2LDExMy4zLDI0LjA4LDE2OC43NiwxNC4yNkM0NjgsOTAuNDIsNTE5LjYsMTEuODgsNjMwLDguOVYwQzUwNS40Miw0LDQ2OCw4Ni40NywzOTUsOTkuMzdaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMDAwMDAwMDAwMDAwMDAwNCIvPjxwYXRoIGQ9Ik0yMjYuMjUsODlDMjczLjg4LDk4LDMzOC4xNCwxMTkuMjksMzk1LDEwOS4yM2M3Mi45My0xMi45MSwxMjYuNjEtNzcuNDYsMjM1LTczLjQ4VjguODZjLTExMC40LDMtMTYyLDgxLjUxLTIzNSw5NC40MkMzMzkuNTUsMTEzLjEsMjc3LjA2LDk1LjA3LDIyNi4yNSw4OVoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjYzIi8+PHBhdGggZD0iTTYwLjgyLDEyMi44OCw2MiwxMjNhMzEuNDksMzEuNDksMCwwLDAsOS4zNC0uNjRBMTAxLjI2LDEwMS4yNiwwLDAsMSw2MC44MiwxMjIuODhaIiBzdHlsZT0iZmlsbDojZmZmIi8+PHBhdGggZD0iTTYwLjgyLDEyMi44OCw2MiwxMjNhMzEuNDksMzEuNDksMCwwLDAsOS4zNC0uNjRBMTAxLjI2LDEwMS4yNiwwLDAsMSw2MC44MiwxMjIuODhaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zNTAwMDAwMDAwMDAwMDAwMyIvPjxwYXRoIGQ9Ik0zOTgsMTA3Ljg0Yy01Ni4xNSwxMC4wNy0xMTkuNTktMTEuMjYtMTY2LjYyLTIwLjItMi43MS0uNTItNS4zNS0xLTcuOTQtMS40MUExNTkuNTQsMTU5LjU0LDAsMCwwLDIwMiw4NHEtMy4wOS0uMDktNiwwYy0uNzEsMC0xLjM5LjA4LTIuMDkuMTItNTIuOCwyLjkzLTgwLjM0LDI4Ljc4LTExMi45MSwzNi42MmE3Mi42Myw3Mi42MywwLDAsMS05LjY2LDEuNjJBMzEuNDksMzEuNDksMCwwLDEsNjIsMTIzbC0xLjE4LS4xM0MzMS4zNywxMjIuODUsMCwxMTEuODIsMCwxMTEuODJ2MTMuOUg2MzBWMzQuMzZDNTIzLDMwLjM5LDQ3MCw5NC45NCwzOTgsMTA3Ljg0WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjxwYXRoIGQ9Ik0wLDEwMi4xNHYxMGM4MywzNCwxMjYuODMtMTQsMTkwLTI0bDEtNGMtNDQuNCw2LjI2LTQ1LDIyLTkzLDMxQzU0Ljc4LDEyMy4yNSwzMCwxMTMuMTQsMCwxMDIuMTRaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMDAwMDAwMDAwMDAwMDAwNCIvPjxwYXRoIGQ9Ik0wLDEwNC4xNHYxMGMyMiw5LDQxLjIzLDEwLjI2LDU4LjgsMTAsNDguNzgtLjc2LDg0Ljc2LTI2LjY1LDEzMS4yLTM0bDEtNGMtNDQuNCw2LjI2LTQ1LDIyLTkzLDMxQzU0Ljc4LDEyNS4yNSwzMCwxMTUuMTQsMCwxMDQuMTRaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMDAwMDAwMDAwMDAwMDAwNCIvPjwvc3ZnPg==";
1773                        break;
1774                    case "2":
1775                        elem.options.style =
1776                            elem.options.prefix +
1777                            "MTIwIj48dGl0bGU+QXNzZXQgMTY0PC90aXRsZT48cGF0aCBkPSJNNTY3LjY3LDMxLjE0Yy0yNi4yMiwxNy4zNi01MCwzNi41NS04MS44
1777LDUwQzQzNy41MiwxMDEuNDgsMzc1LjUyLDEwNi4yMSwzMTcsMTAzLjIzcy0xMTUuNDItMTMtMTczLjE1LTE5LjU2Qzk2LjQ3LDc4LjI1LDQ3LjE4LDc1LjE4LDAsODAuMDd2MzIuNDFINjMwVjBDNjA2LjQ0LDcuNTIsNTg1Ljg5LDE5LjA5LDU2Ny42NywzMS4xNFoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjY0Ii8+PHBhdGggZD0iTTU2Ny42NywzOC42N2MtMjYuMjIsMTcuMzUtNTAsMzYuNTUtODEuOCw1MEM0MzcuNTIsMTA5LDM3NS41MiwxMTMuNzMsMzE3LDExMC43NXMtMTE1LjQyLTEzLTE3My4xNS0xOS41NkM5Ni40Nyw4NS43Nyw0Ny4xOCw4Mi43LDAsODcuNTlWMTIwSDYzMFY3LjUyQzYwNi40NCwxNSw1ODUuODksMjYuNjEsNTY3LjY3LDM4LjY3WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1778                        break;
1779                    case "3":
1780                        elem.options.style =
1781                            elem.options.prefix +
1782                            "NjAiPjx0aXRsZT5Bc3NldCAxNzI8L3RpdGxlPjxwYXRoIGQ9Ik0wLDAsNDAwLDUzLjIzLDYzMCwwVjYwSDBaIiBzdHlsZT0iZmlsbDojZmZmIi8+PC9zdmc+";
1783                        break;
1784                    case "4":
1785                        elem.options.style =
1786                            elem.options.prefix +
1787                            "ODAiPjx0aXRsZT40PC90aXRsZT48cGF0aCBkPSJNMjYxLjIsNjQuOUMzNjcuNiw1NC43LDQ5OS42LDM5LjcsNjMwLDE4LjVWMEM0OTcuOCwzMS40LDM2My43LDUyLDI2MS4yLDY0LjlaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMDAwMDAwMDAwMDAwMDAwNCIvPjxwYXRoIGQ9Ik0yNjEuMiw2NC45Yy00MSwzLjktNzguMiw3LjEtMTEwLDkuNiwxMy4yLS40LDI3LS45LDQxLjUtMS42QzMxNSw2Ny43LDQ3OC40LDU5LjQsNjMwLDM0LjhWMTguNUM0OT
1787kuMSwzOS44LDM2Ny4zLDU0LjgsMjYxLjIsNjQuOVoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjYwMDAwMDAwMDAwMDAwMDEiLz48cGF0aCBkPSJNMTkyLjcsNzIuOWMtMTQuNS43LTI4LjMsMS4yLTQxLjUsMS42QzU5LjksNzcuNywwLDc3LjQsMCw3Ny40VjgwSDYzMFYzMy44QzQ3OC40LDU4LjQsMzE1LDY3LjcsMTkyLjcsNzIuOVoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1788                        break;
1789                    case "5":
1790                        elem.options.style =
1791                            elem.options.prefix +
1792                            "MTAwIj48dGl0bGU+QXNzZXQgMTczPC90aXRsZT48cGF0aCBkPSJNMCw1Ni44NGwxMDgsMzlMNDY4LDAsNjMwLDY4LjQyVjEwMEgwWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1793                        break;
1794                    case "6":
1795                        elem.options.style =
1796                            elem.options.prefix +
1797                            "MTIwIj48dGl0bGU+NjwvdGl0bGU+PHBhdGggZD0iTTYxNS41LDIuNWMtNDEuMyw1LjgtNzcuNCwxMi43LTExNiwxMy43LTIyLjIuNi00NC44LTMuMy02Ny4yLjQtNDguOCw4LjEtMTA3LjgsNDMuNS0xNTcuNyw2Mi42LTQyLjQsMTYuMi02OS45LDE2LTk4LjcsMy44LTIxLjEtOS00Mi4xLTIyLjktNjUuMi0zMy4xLTI5LjQtMTMtNjIuNC0yNC4yLTk4LjktMTIuM2wtMS4xLjNMMCw0MS42VjUzLjhsMTAuNy0zLjYsMS4xLS40YzQyLjEtMTMuNyw2My4xLTUuNiw5OC45LDUuNiwyMi43LDcsNDQuMSwyMCw2NS4yLDI4LjksMzAuOSwxMy4xLDU1LjgsMTMsOTguNy0xLDQ5LjktMTYuNCwxMDguOS01MS44LDE1Ny43LTU5LjksMjIuNC0zLjcsNDUuMi00LjUsNjcuMi0uNCwzNy44LDcuMiw3NC43LDcuMSwxMTYsMS4zLDUtLjcsOS44LTEuNSwxNC41LTIuNVYwQzYyNS4zLDEsNjIwLjUsMS45LDYxNS41LDIuNVoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjM1MDAwMDAwMDAwMDAwMDAzIi8+PHBhdGggZD0iTTQ5OS41LDIzYy0yMi00LjEtNDQuOC0zLjMtNjcuMi40LTQ4LjgsOC4xLTEwNy44LDQzLjUtMTU3LjcsNTkuOS00Mi45LDE0LTY3LjgsMTQuMS05OC43LDEtMjEuMS04LjktNDIuNS0yMS45LTY1LjItMjguOUM3NC45LDQ0LjIsNTMuOSwzNi4xLDExLjgsNDkuOGwtMS4xLjRMMCw1My44VjYybDEwLjctMy42LDEuMS0uNGMzNi41LTExLjksNjguOC04LDk4LjksMS40LDIyLjcsNy4xLDQ0LjEsMTcuMyw2NS4yLDI2LjMsMjguOCwxMi4yLDU1LjcsMTIuOSw5OS4xLDIuOSw1Mi41LTEyLjEsMTA3LjEtNTEuNywxNTUuOS01OS44LDIyLjMtMy44
1797LDQ2LjYtMS44LDY4LjYsMi40LDM3LjgsNy4xLDc0LjcsMjIsMTE2LDE2LjMsNS0uNyw5LjgtMS42LDE0LjUtMi42VjIxLjhjLTQuNywxLTkuNSwxLjgtMTQuNSwyLjVDNTc0LjIsMzAuMSw1MzcuMywzMC4yLDQ5OS41LDIzWiIgc3R5bGU9ImZpbGw6I2ZmZjtvcGFjaXR5OjAuNSIvPjxwYXRoIGQ9Ik00OTkuNSwzMS4yYy0yMi00LjItNDYuMy02LjItNjguNi0yLjRDMzgyLjEsMzYuOSwzMjcuNSw3Ni41LDI3NSw4OC42Yy00My40LDEwLTcwLjMsOS4zLTk5LjEtMi45LTIxLjEtOS00Mi41LTE5LjItNjUuMi0yNi4zQzgwLjYsNTAsNDguMyw0Ni4xLDExLjgsNThsLTEuMS40TDAsNjJ2NThINjMwVjQ0LjljLTQuNywxLTkuNSwxLjktMTQuNSwyLjZDNTc0LjIsNTMuMiw1MzcuMywzOC4zLDQ5OS41LDMxLjJaIiBzdHlsZT0iZmlsbDojZmZmIi8+PC9zdmc+";
1798                        break;
1799                    case "7":
1800                        elem.options.style =
1801                            elem.options.prefix +
1802                            "MTIwIj48dGl0bGU+QXNzZXQgMTc0PC90aXRsZT48cGF0aCBkPSJNMCwwLDYzMCwxMjBIMFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1803                        break;
1804                    case "8":
1805                        elem.options.style =
1806                            elem.options.prefix +
1807                            "MTIwIj48dGl0bGU+ODwvdGl0bGU+PHBhdGggZD0iTTQ1Ni43LDUzLjZDNDM5LjgsNDIuOSwzOTYuOSwxLjgsMzQzLjIsMzAuMWMtMzUuNywxOC43LTg0LDcxLjUtMTI3LjgsNzEuOS0zNi4xLjMtNTcuOC0yMC4yLTgxLjQtMzUuMS0xNy4zLTExLTM1LTIzLjUtNTMuNi0zMi4yQzU1LjYsMjMuMiwzMCwxMS44LjEsMjYuNGMtLjMuMSwwLDkzLjYsMCw5My42SDYzMFYzMS44Yy0zLjksMS4zLTEzLDE3LjMtNjUuMiwzMi44QzUzMy4zLDc2LjQsNDkyLjQsNzYuNCw0NTYuNyw1My42WiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjxnIHN0eWxlPSJvcGFjaXR5OjAuMzgiPjxwYXRoIGQ9Ik02MTEsNjMuNmwtMiw0Mi44LTUyNy45LDUtODEtMS4xVjYxLjhhMTk0LjcsMTk0LjcsMCwwLDAsMjQuNyw5LjQsMTQ2LjgsMTQ2LjgsMCwwLDAsNDMuOSw2LjJDOTQuNiw3Ny4zLDEyMC41LDY1LDE0Niw1MC41YzE4LjctMTAuNiwzNy4xLTIyLjMsNTUuMi0zMS4zQzIxMy43LDEyLjksMjI2LDgsMjM4LjEsNS43YzI0LjMtNC42LDUxLjQtMy4yLDcyLjUsNy45bDM2LjcsMTkuNmMzNy4zLDE5LjksNzMuMSwzOC45LDEwNC4yLDUxLjdDNDY1LjQsOTAuNiw0NzguMyw5NS4yLDQ5MCw5OGMxMy4zLDMuMywyNS4xLDQuNSwzNSwyLjlhNzUuNSw3NS41LDAsMCwwLDkuMy0zLjdsNy40LTMuM2MxNS40LTcuMSwzOC44LTE5LjEsNTkuNi0zMy4yLDUuNS0zLjcuNi40LDUuNy0zLjRDNjE5LDQ4LjIsNjA4LjcsNjQuMiw2MTEsNjMuNloiIHN0eWxlPSJmaWxsOiNmZmYiLz48L2c+PHBhdGggZD0iTTU4MS44LDExLjRDNTUyLC4yLDUzMS41LDMuOSw1MDcuMiw4LjQsNDcyLjEsMTUsNDM0LjcsNDQuMSwzOTYuNiw2My4yYy0xNi4zLDguMS0zMi44LDE0LjQtNDkuMiwxNi4zLTE1LjgtNS40LTMyLTEyLjItNDcuNi0xOS4yLTM3LjktMTcuMS03Mi42LTM1LjctOTEuOS0zOS44bC02LjctMS4zYy0yMi4yLTQuMi00NS45LTUuOC02Ny45LTEuNy0xMC40LDItMjEsNS45LTMxLjgsMTFDNzYuNiw0MC4yLDUwLjksNTcuOSwyNC44LDcxLjJBMjEzLjYsMjEzLjYsMCwwLDEsLjEsODIuMXYzMC44bDgxLTEuNSwzMTIuMy01LjcsMS40LjNMNjMwLDExMS44di04MEM2MTMsMjYuNCw2MTkuMywyNS41LDU4MS44LDExLjRaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC40OSIvPjxnIHN0eWxlPSJvcGFjaXR5OjAuMzgiPjxwYXRoIGQ9Ik01NDUuNCw5N2wtMTEuMS4yTDQ5MCw5OCwuMSwxMDcuMVYwQzIxLjMtLjQsNDEuMyw0LjEsNjAuNCwxMC44YTQwMy43LDQwMy43LDAsMCwxLDQxLjEsMTcuN2MxMCw0LjksMTkuOSw5LjksMjkuNywxNC42LDUsMi4zLDkuOSw0LjksMTQuOCw3LjQsMjYuMSwxMy41LDUyLjcsMjgsOTIuOSwyNy44LDIwLjMtLjEsNDAuNy03LjcsNjAuOS0xOCwxNi04LjIsMzEuOS0xOCw0Ny41LTI3LjEsMjAuOS0xMi4xLDQxLjMtMjIuOSw2MC45LTI2LjZDNDMyLjUsMiw0ODEuMSw4LjYsNTA0LDE4czQ5LjYsMjMuNiw5Ny4zLDQyLjdDNjIwLjIsNjguNCw1NDUuNCw5Nyw1NDUuNCw5N1oiIHN0eWxlPSJmaWxsOiNmZmYiLz48L2c+PC9zdmc+";
1808                        break;
1809                    case "9":
1810                        elem.options.style =
1811                            elem.options.prefix +
1812                            "MTAwIj48dGl0bGU+QXNzZXQgMTgyPC90aXRsZT48cGF0aCBkPSJNMCw0NS42NVMxNTksMCwzMjIsMCw2MzAsNDUuNjUsNjMwLDQ1LjY1VjEwMEgwWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1813                        break;
1814                    case "10":
1815                        elem.options.style =
1816                            elem.options.prefix +
1817                            "MTIwIj48dGl0bGU+MTA8L3RpdGxlPjxwYXRoIGQ9Ik0wLDEwOC4xSDYzMFYwUzQ3NSwxMDQuNiwzMTQsMTA0LjYsMCwwLDAsMFoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjIyIi8+PHBhdGggZD0iTTAsMTA2LjlINjMwVjE3LjhzLTE1NSw4Ny45LTMxNiw4Ny45UzAsMTksMCwxOVoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjM2Ii8+PHBhdGggZD0iTTAsMTIwSDYzMFY0NS4xcy0xNTUsNjEuOC0zMTYsNjEuOFMwLDQ1LjEsMCw0NS4xWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1818                        break;
1819                    case "11":
1820                        elem.options.style =
1821                            elem.options.prefix +
1822                            "MTIwIj48dGl0bGU+MTE8L3RpdGxlPjxwYXRoIGQ9Ik01MTAuNywyLjljLTk4LjksMjEuOS0yMjIuMyw4NS41LTMyMiw4NS41QzgwLjEsODguNCwyNC4xLDU2LjEsMCwzNi40VjEyMEg2MzBWMTUuMkM2MDIuNCw2LjksNTUwLjEtNS44LDUxMC43LDIuOVoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1823                        break;
1824                    case "12":
1825                        elem.options.style =
1826                            elem.options.prefix +
1827                            "MTIwIj48dGl0bGU+MTI8L3RpdGxlPjxwYXRoIGQ9Ik02MzAsMzQuNWE1NCw1NCwwLDAsMS05LDIuM0M1NzguMyw0Ni4xLDU1Ni4xLDI0LDUxNy4yLDEyLjVjLTIyLjktNi43LTQ3LjktOS44LTcxLTMuOUMzOTUuOCwyMS43LDM0MC4zLDEwMiwyODUuMSwxMDIuNGMtNDUuNC4zLTcyLjYtMjYuNS0xMDIuMy00Ni4xLTIxLjgtMTQuNC00NC0zMC44LTY3LjQtNDIuMUM4NC4yLS45LDUwLjktNy4yLDEzLjIsMTEuOGwtMS4yLjZjLTMuNSwxLjktOC4yLDMuOS0xMiw1LjlWMTIwSDYzMFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1828                        break;
1829                    case "13":
1830                        elem.options.style =
1831                            elem.options.prefix +
1832                            "OTAiPjx0aXRsZT4xMzwvdGl0bGU+PHBhdGggZD0iTTYzMCw5MEgxTDAsMFMxMzEsNzYuNiwzNjYsMzQuMmMxMjAtMjEuNywyNjQsNC41LDI2NCw0LjVaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4xNiIvPjxwYXRoIGQ9Ik0xLDkwSDYzMFYwUzQ4OSw3NC4zLDI1NCwzMS45QzEzNCwxMC4zLDAsMzMsMCwzM1oiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjIiLz48cGF0aCBkPSJNMCw5MEg2MzBWMTguMlM0NzUsNzcuNSwzMTQsNzcuNSwwLDE4LjIsMCwxOC4yWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1833                        break;
1834                    case "14":
1835                        elem.options.style =
1836                            elem.options.prefix +
1837                            "NjAiPjx0aXRsZT5Bc3NldCAxNzg8L3RpdGxlPjxwYXRoIGQ9Ik0wLDAsMTEzLDE5LDU4MiwyOS40Nyw2MzAsMFY2MEgwWiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjwvc3ZnPg==";
1838                        break;
1839                    case "15":
1840                        elem.options.style =
1841                            elem.options.prefix +
1842                            "ODAiPjx0aXRsZT5Bc3NldCAxNzc8L3RpdGxlPjxwYXRoIGQ9Ik0zMTUsMCw2MzAsODBIMFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1843                        break;
1844                    case "16":
1845                        elem.options.style =
1846                            elem.options.prefix +
1847                            "ODAiPjx0aXRsZT4xNjwvdGl0bGU+PHBhdGggZD0iTTAsODBTMjA4LDAsMzE1LDAsNjMwLDgwLDYzMCw4MFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1848                        break;
1849                    case "17":
1850                        elem.options.style =
1851                            elem.options.prefix +
1852                            "MTIwIj48dGl0bGU+MTc8L3RpdGxlPjxwYXRoIGQ9Ik0zMjAsMTZjODguNCwyLDMxMCwxMDQsMzEwLDEwNFM1NjkuNiw4Ny4zLDQ5OS41LDU2Yy0xOS43LTguOC00MC4xLTE3LjUtNjAuMi0yNS4zQzM5NS4yLDEzLjYsMzUyLjcuNywzMjQsMCwyMzUtMiwwLDEyMCwwLDEyMGwxNC4xLTUuNUM2Mi41LDkyLjgsMjQzLjMsMTQuMywzMjAsMTZaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMSIvPjxwYXRoIGQ9Ik0xNC4xLDExNC41QzY0LjksOTUsMjM5LjQsMzAuMywzMTUsMzJjODguNCwyLDMxNSw4OCwzMTUsODhTNDA4LjQsMTgsMzIwLDE2QzI0My4zLDE0LjMsNjIuNSw5Mi44LDE0LjEsMTE0LjVaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC40MyIvPjxwYXRoIGQ9Ik0xNC4xLDExNC41QzY0LjksOTUsMjM5LjQsMzAuMywzMTUsMzJjODguNCwyLDMxNSw4OCwzMTUsODhTNDA4LjQsMTgsMzIwLDE2QzI0My4zLDE0LjMsNjIuNSw5Mi44LDE0LjEsMTE0LjVaIiBzdHlsZT0iZmlsbDojZmZmO29wYWNpdHk6MC4zMSIvPjxwYXRoIGQ9Ik0zMTUsMzJDMjM5LjQsMzAuMyw2NC45LDk1LDE0LjEsMTE0LjVMMiwxMjB
1852INjMwUzQwMy40LDM0LDMxNSwzMloiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1853                        break;
1854                    case "18":
1855                        elem.options.style =
1856                            elem.options.prefix +
1857                            "NDAiPjx0aXRsZT5Bc3NldCAxNzk8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE4LjEsNTMsMS45LDEwMywyMGw1OS05LjUyLDU2LDE1LjIzLDcyLTcuNjEsNDYsNC43NiwzNC00Ljc2LDM2LDguNTcsNzYtMTksODUsMTUuMjRMNjMwLDBWMzcuMTRIMFoiIHN0eWxlPSJmaWxsOiNmZmY7b3BhY2l0eTowLjQ3MDAwMDAwMDAwMDAwMDAzIi8+PHBhdGggZD0iTTAsMjAsNTMsMy44MSwxMDMsMjEuOWw1OS05LjUyLDU2LDE1LjI0TDI5MCwyMGw0Niw0Ljc2TDM3MCwyMGwzNiw5LjUyLDc2LTE3LjE0LDg1LDE2LjE5LDYzLTE2LjE5VjQwSDBaIiBzdHlsZT0iZmlsbDojZmZmIi8+PC9zdmc+";
1858                        break;
1859                    case "19":
1860                        elem.options.style =
1861                            elem.options.prefix +
1862                            "ODAiPjx0aXRsZT4xOTwvdGl0bGU+PHBhdGggZD0iTTYzMCwzNi45YTM0LjYsMzQuNiwwLDAsMC0xNi41LTQuMmMtMTcuMiwwLTMxLjgsMTIuNy0zNi43LDMwLjNhMjEuMiwyMS4yLDAsMCwwLTkuMy0yLjIsMjEuOCwyMS44LDAsMCwwLTEzLjksNS4xLDM4LjcsMzguNywwLDAsMC00MC40LTQuOGMtNS4yLTcuNy0xMy40LTEyLjYtMjIuNy0xMi42YTI1LjcsMjUuNywwLDAsMC04LjcsMS41QzQ3Mi45LDI3LjgsNDUzLDEyLjQsNDMwLDEyLjRzLTQyLjcsMTUuMy01MS43LDM3LjJjLTcuMi0xMC45LTE4LjgtMTguMS0zMS44LTE4LjFhMzcsMzcsMCwwLDAtMjQsOS4yYy02LTEwLjMtMTYuMy0xNy0yOC0xNy0xMy44LDAtMjUuNiw5LjMtMzAuNywyMi43QTI2LjUsMjYuNSwwLDAsMCwyNDQsMzcuMmEyMiwyMiwwLDAsMC01LjguN2MtNC0xMS42LTE0LTE5LjktMjUuNy0xOS45YTI0LjcsMjQuNywwLDAsMC05LjQsMS45QzE4OS4yLDcuNCwxNzEuNiwwLDE1Mi41LDAsMTI0LjYsMCwxMDAsMTUuOCw4NS4zLDM5LjlBMjcuNiwyNy42LDAsMCwwLDYzLDI4LjJhMjMuOSwyMy45LDAsMCwwLTcuMSwxQzQ3LjIsMTMsMzEuNSwyLjMsMTMuNSwyLjNBNDMuMyw0My4zLDAsMCwwLDAsNC40VjgwSDYzMFoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1863                        break;
1864                    case "20":
1865                        elem.options.style =
1866                            elem.options.prefix +
1867                            "MTAwIj48dGl0bGU+QXNzZXQgMTgwPC90aXRsZT48cGF0aCBkPSJNNjMwLDYwLjgyVjEwMEgwVjk1Ljg4bDExLjkxLTYuNDlMODQsNDMuMzRsMzYuNDksMjQuNDVMMTYwLDQ2LDIzMi4wNSwwbDQ5LjA3LDMyLjg5LDM0LjA3LDI5LjU5LDY4LjI5LDI3Ljc1TDQyMyw2NWw0Mi4yLDI4LjI5LDE4LjM5LTE2LDQ5LjA3LTMyLjg5TDU5NCw4My42MSw2MjgsNjEuOVoiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=";
1868                        break;
1869                }
1870                var decodeSvg = atob(elem.options.style);
1871                var wrapper = document.createElement("div");
1872                wrapper.innerHTML = decodeSvg;
1873                var svg = wrapper.firstChild;
1874                var paths = svg.getElementsByTagName("path");
1875                [].forEach.call(paths, function(path) {
1876                    path.style.fill = elem.options.color;
1877                });
1878
1879                svg.setAttribute("preserveAspectRatio", "none");
1880                if ($body.hasClass("b--desktop")) {
1881                    if (elem.options.height) {
1882                        svg.setAttribute(
1883                            "style",
1884                            "height:" + Number(elem.options.height).toFixed() + "px"
1885                        );
1886                    } else {
1887                        svg.setAttribute(
1888                            "style",
1889                            "height:" + Number(svg.height.baseVal.value).toFixed() + "px"
1890                        );
1891                    }
1892                } else {
1893                    if (elem.options.height) {
1894                        svg.setAttribute(
1895                            "style",
1896                            "height:" + Number(elem.options.height).toFixed() / 2 + "px"
1897                        );
1898                    } else {
1899                        svg.setAttribute(
1900                            "style",
1901                            "height:" + Number(svg.height.baseVal.value).toFixed() / 2 + "px"
1902                        );
1903                    }
1904                }
1905                $(".shape-divider svg title").remove();
1906                elem.css({
1907                    "z-index": elem.options.zIndex,
1908                    opacity: elem.options.opacity,
1909                });
1910                elem.append(svg);
1911            });
1912        },
1913        responsiveVideos: function() {
1914            //selecting elements
1915            /* var selectors = [
1916              'iframe[src*="player.vimeo.com"]',
1917              'iframe[src*="youtube.com"]',
1918              'iframe[src*="youtube-nocookie.com"]',
1919              'iframe[src*="kickstarter.com"][src*="video.html"]',
1920              "object",
1921              "embed",
1922            ];
1923            var videoContainers = $(
1924              "section, .content, .post-content, .video-js, .post-video, .video-wrap, .ajax-quick-view,#slider:not(.revslider-wrap)"
1925            );
1926            var elem = videoContainers.find(selectors.join(","));
1927            if (elem) {
1928              elem.each(function () {
1929                $(this).wrap(
1930                  '<div class="embed-responsive embed-responsive-16by9"></div>'
1931                );
1932                setTimeout(function(){
1933                  $(".embed-responsive-16by9").find($("iframe")).addClass("embed-responsive-item");
1934                },500);
1935              });
1936            } */
1937        },
1938        counters: function() {
1939            var $counter = $(".counter");
1940            if ($counter.length > 0) {
1941                //Check if countTo plugin is loaded
1942                if (typeof $.fn.countTo === "undefined") {
1943                    INSPIRO.elements.notification(
1944                        "Warning",
1945                        "jQuery countTo plugin is missing in plugins.js file.",
1946                        "danger"
1947                    );
1948                    return true;
1949                }
1950                //Initializing countTo plugin
1951                $counter.each(function() {
1952                    var elem = $(this),
1953                        prefix = elem.find("span").attr("data-prefix") || "",
1954                        suffix = elem.find("span").attr("data-suffix") || "";
1955                    setTimeout(function() {
1956                        new Waypoint({
1957                            element: elem,
1958                            handler: function() {
1959                                elem.find("span").countTo({
1960                                    refreshInterval: 2,
1961                                    formatter: function(value, options) {
1962                                        return (
1963                                            String(prefix) +
1964                                            value.toFixed(options.decimals) +
1965                                            String(suffix)
1966                                        );
1967                                    },
1968                                });
1969                                this.destroy();
1970                            },
1971                            offset: "104%",
1972                        });
1973                    }, 100);
1974                });
1975            }
1976        },
1977        countdownTimer: function() {
1978            var $countdownTimer = $(".countdown");
1979            if ($countdownTimer.length > 0) {
1980                //Check if countdown plugin is loaded
1981                if (typeof $.fn.countdown === "undefined") {
1982                    INSPIRO.elements.notification(
1983                        "Warning",
1984                        "jQuery countdown plugin is missing in plugins.js file.",
1985                        "danger"
1986                    );
1987                    return true;
1988                }
1989                $(".countdown").each(function(index, element) {
1990                    var elem = $(element),
1991                        finalDate = elem.attr("data-countdown");
1992
1993                    elem.countdown(finalDate, function(event) {
1994                        elem.html(
1995                            event.strftime(
1996                                '<div class="countdown-container"><div class="countdown-box"><div class="number">%-D</div><span>Days</span></div>' +
1997                                '<div class="countdown-box"><div class="number">%H</div><span>Hours</span></div>' +
1998                                '<div class="countdown-box"><div class="number">%M</div><span>Minutes</span></div>' +
1999                                '<div class="countdown-box"><div class="number">%S</div><span>Seconds</span></div></div>'
2000                            )
2001                        );
2002                    });
2003                });
2004            }
2005        },
2006        progressBar: function() {
2007            var $progressBar = $(".p-progress-bar") || $(".progress-bar");
2008            if ($progressBar.length > 0) {
2009                $progressBar.each(function(i, elem) {
2010                    var $elem = $(this),
2011                        percent = $elem.attr("data-percent") || "100",
2012                        delay = $elem.attr("data-delay") || "60",
2013                        type = $elem.attr("data-type") || "%";
2014                    if (!$elem.hasClass("progress-animated")) {
2015                        $elem.css({
2016                            width: "0%",
2017                        });
2018                    }
2019                    var progressBarRun = function() {
2020                        $elem
2021                            .animate({
2022                                    width: percent + "%",
2023                                },
2024                                "easeInOutCirc"
2025                            )
2026                            .addClass("progress-animated");
2027                        $elem
2028                            .delay(delay)
2029                            .append(
2030                                '<span class="progress-type">' +
2031                                type +
2032                                '</span><span class="progress-number animate__animated animate__fadeIn">' +
2033                                percent +
2034                                "</span>"
2035                            );
2036                    };
2037                    if (
2038                        $body.hasClass("breakpoint-lg") ||
2039                        $body.hasClass("breakpoint-xl")
2040                    ) {
2041                        new Waypoint({
2042                            element: $(elem),
2043                            handler: function() {
2044                                var t = setTimeout(function() {
2045                                    progressBarRun();
2046                                }, delay);
2047                                this.destroy();
2048                            },
2049                            offset: "100%",
2050                        });
2051                    } else {
2052                        progressBarRun();
2053                    }
2054                });
2055            }
2056        },
2057        pieChart: function() {
2058            var $pieChart = $(".pie-chart");
2059            if ($pieChart.length > 0) {
2060                //Check if easyPieChart plugin is loaded
2061                if (typeof $.fn.easyPieChart === "undefined") {
2062                    INSPIRO.elements.notification(
2063                        "Warning",
2064                        "jQuery easyPieChart plugin is missing in plugins.js file.",
2065                        "danger"
2066                    );
2067                    return true;
2068                }
2069                $pieChart.each(function() {
2070                    var elem = $(this);
2071                    //Plugin Options
2072                    elem.options = {
2073                        barColor: elem.attr("data-color") || $theme_color,
2074                        trackColor: elem.attr("data-trackcolor") || "rgba(0,0,0,0.10)",
2075                        scaleColor: elem.attr("data-scaleColor") || false,
2076                        scaleLength: elem.attr("data-scaleLength") || 5,
2077                        lineCap: elem.attr("data-lineCap") || "square",
2078                        lineWidth: elem.attr("data-lineWidth") || 6,
2079                        size: elem.attr("data-size") || 160,
2080                        rotate: elem.attr("data-rotate") || 0,
2081                        animate: elem.attr("data-animate") || 2600,
2082                        elemEasing: elem.attr("data-easing") || "easeInOutExpo",
2083                    };
2084                    elem.find("span, i").css({
2085                        width: elem.options.size + "px",
2086                        height: elem.options.size + "px",
2087                        "line-height": elem.options.size + "px",
2088                    });
2089                    //Initializing jQuery easyPieChart plugin and passing the options
2090
2091                    setTimeout(function() {
2092                        new Waypoint({
2093                            element: elem,
2094                            handler: function() {
2095                                elem.easyPieChart({
2096                                    barColor: elem.options.barColor,
2097                                    trackColor: elem.options.trackColor,
2098                                    scaleColor: elem.options.scaleColor,
2099                                    scaleLength: elem.options.scaleLength,
2100                                    lineCap: elem.options.lineCap,
2101                                    lineWidth: Number(elem.options.lineWidth),
2102                                    size: Number(elem.options.size),
2103                                    rotate: Number(elem.options.rotate),
2104                                    animate: Number(elem.options.animate),
2105                                    elemEasing: elem.options.elemEasing,
2106                                    onStep: function(from, to, percent) {
2107                                        elem.find("span.percent").text(Math.round(percent));
2108                                    },
2109                                });
2110                                this.destroy();
2111                            },
2112                            offset: "100%",
2113                        });
2114                    }, 200);
2115                });
2116            }
2117        },
2118        maps: function() {
2119            var $map = $(".map");
2120
2121            if ($map.length > 0) {
2122                //Check if gMap plugin is loaded
2123                if (typeof $.fn.gmap3 === "undefined") {
2124                    INSPIRO.elements.notification(
2125                        "Warning",
2126                        "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.",
2127                        "danger"
2128                    );
2129                    return true;
2130                }
2131                $map.each(function() {
2132                    var elem = $(this);
2133                    //Plugin Options
2134                    elem.options = {
2135                        latitude: elem.attr("data-latitude") || "-37.817240",
2136                        longitude: elem.attr("data-longitude") || "144.955820",
2137                        info: elem.attr("data-info"),
2138                        maptype: elem.attr("data-type") || "ROADMAP",
2139                        zoom: elem.attr("data-zoom") || 14,
2140                        fullscreen: elem.data("fullscreen") == false ? false : true,
2141                        icon: elem.attr("data-icon"),
2142                        mapColor: elem.attr("data-style") || null,
2143                    };
2144                    var mapsStyle;
2145                    if (window.MAPS) {
2146                        if (elem.options.mapColor) {
2147                            mapsStyle = MAPS[elem.options.mapColor];
2148                        } else {
2149                            mapsStyle = null;
2150                        }
2151                    }
2152                    //Initialize google maps plugin and passing the options
2153                    elem.gmap3({
2154                        center: [
2155                            Number(elem.options.latitude),
2156                            Number(elem.options.longitude),
2157                        ],
2158                        zoom: Number(elem.options.zoom),
2159                        mapTypeId: google.maps.MapTypeId[elem.options.maptype],
2160                        scrollwheel: false,
2161                        zoomControl: true,
2162                        mapTypeControl: false,
2163                        streetViewControl: true,
2164                        fullscreenControl: elem.options.fullscreen,
2165                        styles: mapsStyle,
2166                    });
2167                    if (elem.options.icon) {
2168                        elem.gmap3().marker({
2169                            position: [
2170                                Number(elem.options.latitude),
2171                                Number(elem.options.longitude),
2172                            ],
2173                            icon: elem.options.icon,
2174                        });
2175                    } else {
2176                        elem
2177                            .gmap3()
2178                            .marker({
2179                                position: [
2180                                    Number(elem.options.latitude),
2181                                    Number(elem.options.longitude),
2182                                ],
2183                                icon: " ",
2184                            })
2185                            .overlay({
2186                                position: [
2187                                    Number(elem.options.latitude),
2188                                    Number(elem.options.longitude),
2189                                ],
2190                                content: '<div class="animated-dot"></div>',
2191                            });
2192                    }
2193                    if (elem.options.info) {
2194                        elem
2195                            .gmap3()
2196                            .infowindow({
2197                                position: [
2198                                    Number(elem.options.latitude),
2199                                    Number(elem.options.longitude),
2200                                ],
2201                                content: elem.options.info,
2202                                pixelOffset: new google.maps.Size(0, -10),
2203                            })
2204                            .then(function(infowindow) {
2205                                var map = this.get(0);
2206                                var marker = this.get(1);
2207                                marker.addListener("click", function() {
2208                                    infowindow.open(map);
2209                                });
2210                            });
2211                    }
2212                });
2213            }
2214        },
2215        gridLayout: function() {
2216            if ($gridLayout.length > 0) {
2217                //Check if isotope plugin is loaded
2218                if (typeof $.fn.isotope === "undefined") {
2219                    INSPIRO.elements.notification(
2220                        "Warning",
2221                        "jQuery isotope plugin is missing in plugins.js file.",
2222                        "danger"
2223                    );
2224                    return true;
2225                }
2226
2227                var isotopeRTL;
2228
2229                if (INSPIRO.core.rtlStatus() == true) {
2230                    isotopeRTL = false;
2231                } else {
2232                    isotopeRTL = true;
2233                }
2234
2235                $gridLayout.each(function() {
2236                    var elem = $(this);
2237                    elem.options = {
2238                        itemSelector: elem.attr("data-item") || "portfolio-item",
2239                        layoutMode: elem.attr("data-layout") || "masonry",
2240                        filter: elem.attr("data-default-filter") || "*",
2241                        stagger: elem.attr("data-stagger") || 0,
2242                        autoHeight: elem.data("auto-height") == false ? false : true,
2243                        gridMargin: elem.attr("data-margin") || 20,
2244                        gridMarginXs: elem.attr("data-margin-xs"),
2245                        transitionDuration: elem.attr("data-transition") || "0.45s",
2246                        isOriginLeft: isotopeRTL,
2247                    };
2248
2249                    $(window).breakpoints("lessThan", "lg", function() {
2250                        elem.options.gridMargin =
2251                            elem.options.gridMarginXs || elem.options.gridMargin;
2252                    });
2253
2254                    elem.css(
2255                        "margin",
2256                        "0 -" +
2257                        elem.options.gridMargin +
2258                        "px -" +
2259                        elem.options.gridMargin +
2260                        "px 0"
2261                    );
2262                    elem
2263                        .find("." + elem.options.itemSelector)
2264                        .css(
2265                            "padding",
2266                            "0 " +
2267                            elem.options.gridMargin +
2268                            "px " +
2269                            elem.options.gridMargin +
2270                            "px 0"
2271                        );
2272
2273                    if (elem.attr("data-default-filter")) {
2274                        var elemDefaultFilter = elem.options.filter;
2275                        elem.options.filter = "." + elem.options.filter;
2276                    }
2277
2278                    elem.append('<div class="grid-loader"></div>');
2279                    var $isotopelayout = $(elem).imagesLoaded(function() {
2280                        // init Isotope after all images have loaded
2281                        $isotopelayout.isotope({
2282                            layoutMode: elem.options.layoutMode,
2283                            transitionDuration: elem.options.transitionDuration,
2284                            stagger: Number(elem.options.stagger),
2285                            resize: true,
2286                            itemSelector: "." + elem.options.itemSelector + ":not(.grid-loader)",
2287                            isOriginLeft: elem.options.isOriginLeft,
2288                            autoHeight: elem.options.autoHeight,
2289                            masonry: {
2290                                columnWidth: elem.find(
2291                                    "." + elem.options.itemSelector + ":not(.large-width)"
2292                                )[0],
2293                            },
2294                            filter: elem.options.filter,
2295                        });
2296                        elem.remove(".grid-loader").addClass("grid-loaded");
2297                    });
2298
2299                    //Infinity Scroll
2300                    if (elem.next().hasClass("infinite-scroll")) {
2301                        INSPIRO.elements.gridLayoutInfinite(
2302                            elem,
2303                            elem.options.itemSelector,
2304                            elem.options.gridMargin
2305                        );
2306                    }
2307                    if ($gridFilter.length > 0) {
2308                        $gridFilter.each(function() {
2309                            var elemFilter = $(this),
2310                                $filterItem = elemFilter.find("a"),
2311                                elemFilterLayout = elemFilter.attr("data-layout"),
2312                                $filterItemActiveClass = "active";
2313                            $filterItem.on("click", function() {
2314                                elemFilter.find("li").removeClass($filterItemActiveClass);
2315                                $(this).parent("li").addClass($filterItemActiveClass);
2316
2317                                var filterValue = $(this).attr("data-category");
2318                                $(elemFilterLayout)
2319                                    .isotope({
2320                                        filter: filterValue,
2321                                    })
2322                                    .on("layoutComplete", function() {
2323                                        $window.trigger("scroll");
2324                                        INSPIRO.elements.naTo();
2325                                    });
2326                                if ($(".grid-active-title").length > 0) {
2327                                    $(".grid-active-title").empty().append($(this).text());
2328                                }
2329                                return false;
2330                            });
2331                            if (elemDefaultFilter) {
2332                                var filterDefaultValue = elemFilter.find(
2333                                    $('[data-category="' + elem.options.filter + '"]')
2334                                );
2335                                elemFilter.find("li").removeClass($filterItemActiveClass);
2336                                filterDefaultValue
2337                                    .parent("li")
2338                                    .addClass($filterItemActiveClass);
2339                            } else {
2340                                var filterDefaultValue = elemFilter.find(
2341                                    $('[data-category="*"]')
2342                                );
2343                                filterDefaultValue
2344                                    .parent("li")
2345                                    .addClass($filterItemActiveClass);
2346                            }
2347                        });
2348                    }
2349                });
2350            }
2351        },
2352        gridLayoutInfinite: function(element, elementSelector, elemGridMargin) {
2353            //Check if infiniteScroll plugin is loaded
2354            if (typeof $.fn.infiniteScroll === "undefined") {
2355                INSPIRO.elements.notification(
2356                    "Warning",
2357                    "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>",
2358                    "danger"
2359                );
2360                return true;
2361            }
2362            var elem = element,
2363                gridItem = elementSelector,
2364                gridMargin = elemGridMargin,
2365                loadOnScroll = true,
2366                threshold = 500,
2367                prefilli = true,
2368                pathSelector,
2369                loadMoreElem = $("#showMore"),
2370                loadMoreBtn = $("#showMore a.btn"),
2371                loadMoreBtnText = $("#showMore a.btn").html(),
2372                loadMoreMessage = $(
2373                    '<div class="infinite-scroll-message"><p class="animate__animated visible animate__fadeIn">No more posts to show</p></div>'
2374                );
2375
2376            pathSelector = $(".infinite-scroll > a").attr("href");
2377
2378            if (pathSelector.indexOf(".html") > -1) {
2379                pathSelector = pathSelector.replace(/(-\d+)/g, "-{{#}}");
2380            } else {
2381                pathSelector = ".infinite-scroll > a";
2382            }
2383
2384            if (loadMoreElem.length > 0) {
2385                loadOnScroll = false;
2386                threshold = false;
2387                prefilli = false;
2388            }
2389
2390            elem.infiniteScroll({
2391                path: pathSelector,
2392                append: "." + gridItem,
2393                history: false,
2394                button: "#showMore a",
2395                scrollThreshold: threshold,
2396                loadOnScroll: loadOnScroll,
2397                prefill: prefilli,
2398            });
2399
2400            elem.on("load.infiniteScroll", function(event, response, path, items) {
2401                var $items = $(response).find("." + gridItem);
2402                $items.imagesLoaded(function() {
2403                    elem.append($items);
2404                    elem.isotope("insert", $items);
2405                });
2406            });
2407
2408            elem.on("error.infiniteScroll", function(event, error, path) {
2409                loadMoreElem.addClass("animate__animated visible animate__fadeOut");
2410                var t = setTimeout(function() {
2411                    loadMoreElem.hide();
2412                    elem.after(loadMoreMessage);
2413                }, 500);
2414                var t = setTimeout(function() {
2415                    $(".infinite-scroll-message").addClass("animate__animated visible animate__fadeOut");
2416                }, 3000);
2417            });
2418            elem.on("append.infiniteScroll", function(event, response, path, items) {
2419                INSPIRO.slider.carousel($(items).find(".carousel"));
2420                loadMoreBtn.html(loadMoreBtnText);
2421                element.css(
2422                    "margin",
2423                    "0 -" + gridMargin + "px -" + gridMargin + "px 0"
2424                );
2425                element
2426                    .find("." + gridItem)
2427                    .css("padding", "0 " + gridMargin + "px " + gridMargin + "px 0");
2428            });
2429        },
2430
2431        tooltip: function() {
2432            var $tooltip = $('[data-bs-toggle="tooltip"]');
2433            if ($tooltip.length > 0) {
2434                //Check if tooltip plugin is loaded
2435                if (typeof $.fn.tooltip === "undefined") {
2436                    INSPIRO.elements.notification(
2437                        "Warning: jQuery tooltip plugin is missing in plugins.js file.",
2438                        "warning"
2439                    );
2440                    return true;
2441                }
2442                //Initialize Tooltip plugin function
2443                $tooltip.tooltip();
2444            }
2445        },
2446        popover: function() {
2447            var $popover = $('[data-toggle="popover"]');
2448            if ($popover.length > 0) {
2449                //Check if popover plugin is loaded
2450                if (typeof $.fn.popover === "undefined") {
2451                    INSPIRO.elements.notification(
2452                        "Warning: jQuery popover plugin is missing in plugins.js file.",
2453                        "warning"
2454                    );
2455                    return true;
2456                }
2457                //Initialize Tooltip plugin function
2458                $popover.popover({
2459                    container: "body",
2460                    html: true,
2461                });
2462            }
2463        },
2464
2465        magnificPopup: function() {
2466            var $lightbox = $("[data-lightbox]");
2467            if ($lightbox.length > 0) {
2468                //Check if magnificPopup plugin is loaded
2469                if (typeof $.fn.magnificPopup === "undefined") {
2470                    INSPIRO.elements.notification(
2471                        "Warning",
2472                        "jQuery magnificPopup plugin is missing in plugins.js file.",
2473                        "danger"
2474                    );
2475                    return true;
2476                }
2477                //Get lightbox data type
2478                var getType = {
2479                    image: {
2480                        type: "image",
2481                        closeOnContentClick: true,
2482                        removalDelay: 500,
2483                        image: {
2484                            verticalFit: true,
2485                        },
2486                        callbacks: {
2487                            beforeOpen: function() {
2488                                this.st.image.markup = this.st.image.markup.replace(
2489                                    "mfp-figure",
2490                                    "mfp-figure mfp-with-anim"
2491                                );
2492                                this.st.mainClass = "mfp-zoom-out";
2493                            },
2494                        },
2495                    },
2496                    gallery: {
2497                        delegate: 'a[data-lightbox="gallery-image"], a[data-lightbox="image"]',
2498                        type: "image",
2499                        image: {
2500                            verticalFit: true,
2501                        },
2502                        gallery: {
2503                            enabled: true,
2504                            navigateByImgClick: true,
2505                            preload: [0, 1],
2506                        },
2507                        removalDelay: 500,
2508                        callbacks: {
2509                            beforeOpen: function() {
2510                                this.st.image.markup = this.st.image.markup.replace(
2511                                    "mfp-figure",
2512                                    "mfp-figure mfp-with-anim"
2513                                );
2514                                this.st.mainClass = "mfp-zoom-out";
2515                            },
2516                        },
2517                    },
2518                    iframe: {
2519                        type: "iframe",
2520                        removalDelay: 500,
2521                        callbacks: {
2522                            beforeOpen: function() {
2523                                this.st.image.markup = this.st.image.markup.replace(
2524                                    "mfp-figure",
2525                                    "mfp-figure mfp-with-anim"
2526                                );
2527                                this.st.mainClass = "mfp-zoom-out";
2528                            },
2529                        },
2530                    },
2531                    ajax: {
2532                        type: "ajax",
2533                        removalDelay: 500,
2534                        callbacks: {
2535                            ajaxContentAdded: function(mfpResponse) {
2536                                // INSPIRO.elements.functions();
2537
2538                                //Reinitialize carousel function
2539                                if ($(".mfp-content").find(".carousel").length > 0) {
2540                                    INSPIRO.slider.carousel($(".mfp-content").find(".carousel"));
2541                                }
2542                            },
2543                        },
2544                    },
2545                    inline: {
2546                        type: "inline",
2547                        removalDelay: 500,
2548                        closeBtnInside: true,
2549                        midClick: true,
2550                        callbacks: {
2551                            beforeOpen: function() {
2552                                this.st.image.markup = this.st.image.markup.replace(
2553                                    "mfp-figure",
2554                                    "mfp-figure mfp-with-anim"
2555                                );
2556                                this.st.mainClass = "mfp-zoom-out";
2557                            },
2558                            open: function() {
2559                                if ($(this.content).find("video").length > 0) {
2560                                    $(this.content).find("video").get(0).play();
2561                                }
2562                            },
2563                            close: function() {
2564                                if ($(this.content).find("video").length > 0) {
2565                                    $(this.content).find("video").get(0).load();
2566                                }
2567                            },
2568                        },
2569                        fixedContentPos: true,
2570                        overflowY: "scroll",
2571                    },
2572                };
2573                //Initializing jQuery magnificPopup plugin and passing the options
2574                $lightbox.each(function() {
2575                    var elem = $(this),
2576                        elemType = elem.attr("data-lightbox");
2577                    switch (elemType) {
2578                        case "image":
2579                            elem.magnificPopup(getType.image);
2580                            break;
2581                        case "gallery":
2582                            elem.magnificPopup(getType.gallery);
2583                            break;
2584                        case "iframe":
2585                            elem.magnificPopup(getType.iframe);
2586                            break;
2587                        case "ajax":
2588                            elem.magnificPopup(getType.ajax);
2589                            break;
2590                        case "inline":
2591                            elem.magnificPopup(getType.inline);
2592                            break;
2593                    }
2594                });
2595            }
2596        },
2597        yTPlayer: function() {
2598            var $ytPlayer = $(".youtube-background");
2599            if ($ytPlayer.length > 0) {
2600                //Check if YTPlayer plugin is loaded
2601                if (typeof $.fn.YTPlayer === "undefined") {
2602                    INSPIRO.elements.notification(
2603                        "Warning",
2604                        "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>",
2605                        "danger",
2606                        10000
2607                    );
2608                    return true;
2609                }
2610                $ytPlayer.each(function() {
2611                    var elem = $(this);
2612                    //Plugin Options
2613                    elem.options = {
2614                        videoURL: elem.attr("data-youtube-url"),
2615                        autoPlay: elem.data("youtube-autoplay") == false ? 0 : 1,
2616                        mute: elem.data("youtube-mute") == false ? false : true,
2617                        pauseOnScroll: elem.data("youtube-pauseOnScroll") == false ? false : true,
2618                        loop: elem.data("youtube-loop") == false ? false : true,
2619                        vol: elem.attr("data-youtube-volume") || 50,
2620                        startAt: elem.attr("data-youtube-start") || 0,
2621                        stopAt: elem.attr("data-youtube-stop") || 0,
2622                        controls: elem.data("youtube-controls") == true ? 1 : 0,
2623                    };
2624                    var regExp = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
2625                    var match = elem.options.videoURL.match(regExp);
2626                    if (match && match[2].length == 11) {
2627                        elem.options.videoURL = match[2];
2628                    } else {
2629                        elem.options.videoURL = elem.options.videoURL;
2630                    }
2631                    elem.YTPlayer({
2632                        fitToBackground: true,
2633                        videoId: elem.options.videoURL,
2634                        repeat: elem.options.loop,
2635                        playerVars: {
2636                            start: elem.options.start,
2637                            end: elem.options.end,
2638                            autoplay: elem.options.autoPlay,
2639                            modestbranding: elem.options.logo,
2640                            controls: elem.options.controls,
2641                            origin: window.location.origin,
2642                            branding: 0,
2643                            rel: 0,
2644                            showinfo: 0,
2645                        },
2646                        events: {
2647                            onReady: onPlayerReady,
2648                        },
2649                    });
2650
2651                    function onPlayerReady(event) {
2652                        if (elem.options.vol) {
2653                            event.target.setVolume(elem.options.vol);
2654                        }
2655                        if (elem.options.mute) {
2656                            event.target.mute();
2657                        }
2658                        if (elem.options.pauseOnScroll) {
2659                            var waypoint = new Waypoint({
2660                                element: elem,
2661                                handler: function(direction) {
2662                                    event.target.pauseVideo();
2663                                    if (elem.options.autoPlay == true && direction == "up") {
2664                                        event.target.playVideo();
2665                                    }
2666                                },
2667                            });
2668                        }
2669                        if (Settings.isMobile) {
2670                            elem.on("click", function(ev) {
2671                                event.target.playVideo();
2672                                ev.preventDefault();
2673                            });
2674                        }
2675                    }
2676                });
2677            }
2678        },
2679        vimeoPlayer: function() {
2680            var $vmPlayer = $(".vimeo-background");
2681            if ($vmPlayer.length > 0) {
2682                //Check if vimeo_player plugin is loaded
2683                if (typeof $.fn.vimeo_player === "undefined") {
2684                    INSPIRO.elements.notification(
2685                        "Warning",
2686                        "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>",
2687                        "danger",
2688                        10000
2689                    );
2690                    return true;
2691                }
2692                $vmPlayer.each(function() {
2693                    var elem = $(this),
2694                        elemVideo = elem.attr("data-vimeo-url") || null,
2695                        elemMute = elem.attr("data-vimeo-mute") || false,
2696                        elemRatio = elem.attr("data-vimeo-ratio") || "16/9",
2697                        elemQuality = elem.attr("data-vimeo-quality") || "hd720",
2698                        elemOpacity = elem.attr("data-vimeo-opacity") || 1,
2699                        elemContainer = elem.attr("data-vimeo-container") || "self",
2700                        elemOptimize = elem.attr("data-vimeo-optimize") || true,
2701                        elemLoop = elem.attr("data-vimeo-loop") || true,
2702                        elemVolume = elem.attr("data-vimeo-volume") || 70,
2703                        elemStart = elem.attr("data-vimeo-start") || 0,
2704                        elemStop = elem.attr("data-vimeo-stop") || 0,
2705                        elemAutoPlay = elem.attr("data-vimeo-autoplay") || true,
2706                        elemFullScreen = elem.attr("data-vimeo-fullscreen") || true,
2707                        elemControls = elem.attr("data-vimeo-controls") || false,
2708                        elemLogo = elem.attr("data-vimeo-logo") || false,
2709                        elemAutoPause = elem.attr("data-vimeo-autopause") || false;
2710                    elem.vimeo_player({
2711                        videoURL: elemVideo,
2712                        mute: elemMute,
2713                        ratio: elemRatio,
2714                        quality: elemQuality,
2715                        opacity: elemOpacity,
2716                        containment: elemContainer,
2717                        optimizeDisplay: elemOptimize,
2718                        loop: elemLoop,
2719                        vol: elemVolume,
2720                        startAt: elemStart,
2721                        stopAt: elemStop,
2722                        autoPlay: elemAutoPlay,
2723                        realfullscreen: elemFullScreen,
2724                        showvmLogo: elemLogo,
2725                        showControls: elemControls,
2726                    });
2727                });
2728            }
2729        },
2730        modal: function() {
2731            //Check if magnificPopup plugin is loaded
2732            if (typeof $.fn.magnificPopup === "undefined") {
2733                INSPIRO.elements.notification(
2734                    "Warning",
2735                    "jQuery magnificPopup plugin is missing in plugins.js file.",
2736                    "danger"
2737                );
2738                return true;
2739            }
2740            var $modal = $(".modal"),
2741                $modalStrip = $(".modal-strip"),
2742                $btnModal = $(".btn-modal"),
2743                modalShow = "modal-auto-open",
2744                modalShowClass = "modal-active",
2745                modalDecline = $(".modal-close"),
2746                cookieNotify = $(".cookie-notify"),
2747                cookieConfirm = cookieNotify.find(".modal-confirm, .mfp-close");
2748
2749            /*Modal*/
2750            if ($modal.length > 0) {
2751                $modal.each(function() {
2752                    var elem = $(this),
2753                        elemDelay = elem.attr("data-delay") || 3000,
2754                        elemCookieExpire = elem.attr("data-cookie-expire") || 365,
2755                        elemCookieName =
2756                        elem.attr("data-cookie-name") || "cookieModalName2020_3",
2757                        elemCookieEnabled =
2758                        elem.data("cookie-enabled") == true ? true : false,
2759                        elemModalDismissDelay = elem.attr("data-delay-dismiss");
2760                    /*Modal Auto Show*/
2761                    if (elem.hasClass(modalShow)) {
2762                        var modalElem = $(this);
2763                        var timeout = setTimeout(function() {
2764                            modalElem.addClass(modalShowClass);
2765                        }, elemDelay);
2766                    }
2767                    /*Modal Dissmis Button*/
2768                    elem.find(modalDecline).click(function() {
2769                        elem.removeClass(modalShowClass);
2770                        return false;
2771                    });
2772                    /*Modal Auto Show*/
2773                    if (elem.hasClass(modalShow)) {
2774                        if (elemCookieEnabled != true) {
2775                            /*Cookie Notify*/
2776                            var t = setTimeout(function() {
2777                                $.magnificPopup.open({
2778                                        items: {
2779                                            src: elem,
2780                                        },
2781                                        type: "inline",
2782                                        closeBtnInside: true,
2783                                        midClick: true,
2784                                        callbacks: {
2785                                            beforeOpen: function() {
2786                                                this.st.image.markup = this.st.image.markup.replace(
2787                                                    "mfp-figure",
2788                                                    "mfp-figure mfp-with-anim"
2789                                                );
2790                                                this.st.mainClass = "mfp-zoom-out";
2791                                            },
2792                                            open: function() {
2793                                                if ($(this.content).find("video").length > 0) {
2794                                                    $(this.content).find("video").get(0).play();
2795                                                }
2796                                            },
2797                                            close: function() {
2798                                                if ($(this.content).find("video").length > 0) {
2799                                                    $(this.content).find("video").get(0).load();
2800                                                }
2801                                            },
2802                                        },
2803                                    },
2804                                    0
2805                                );
2806                            }, elemDelay);
2807                        } else {
2808                            if (typeof Cookies.get(elemCookieName) == "undefined") {
2809                                /*Cookie Notify*/
2810                                var t = setTimeout(function() {
2811                                    $.magnificPopup.open({
2812                                            items: {
2813                                                src: elem,
2814                                            },
2815                                            type: "inline",
2816                                            closeBtnInside: true,
2817                                            midClick: true,
2818                                            callbacks: {
2819                                                beforeOpen: function() {
2820                                                    this.st.image.markup = this.st.image.markup.replace(
2821                                                        "mfp-figure",
2822                                                        "mfp-figure mfp-with-anim"
2823                                                    );
2824                                                    this.st.mainClass = "mfp-zoom-out";
2825                                                },
2826                                                open: function() {
2827                                                    if ($(this.content).find("video").length > 0) {
2828                                                        $(this.content).find("video").get(0).play();
2829                                                    }
2830                                                    cookieConfirm.click(function() {
2831                                                        Cookies.set(elemCookieName, true, {
2832                                                            expires: Number(elemCookieExpire),
2833                                                        });
2834                                                        $.magnificPopup.close();
2835                                                        cookieNotify.removeClass(modalShowClass);
2836                                                        return false;
2837                                                    });
2838                                                },
2839                                                close: function() {
2840                                                    if ($(this.content).find("video").length > 0) {
2841                                                        $(this.content).find("video").get(0).load();
2842                                                    }
2843
2844                                                    Cookies.set(elemCookieName, true, {
2845                                                        expires: Number(elemCookieExpire),
2846                                                    });
2847                                                },
2848                                            },
2849                                        },
2850                                        0
2851                                    );
2852                                }, elemDelay);
2853                            }
2854                        }
2855                    }
2856                    /*Modal Dissmis Button*/
2857                    elem.find(modalDecline).click(function() {
2858                        $.magnificPopup.close();
2859                        return false;
2860                    });
2861
2862                    if (elemModalDismissDelay) {}
2863                });
2864            }
2865            /*Modal Strip*/
2866            if ($modalStrip.length > 0) {
2867                $modalStrip.each(function() {
2868                    var elem = $(this),
2869                        elemDelay = elem.attr("data-delay") || 3000,
2870                        elemCookieExpire = elem.attr("data-cookie-expire") || 365,
2871                        elemCookieName = elem.attr("data-cookie-name") || "cookieName2013",
2872                        elemCookieEnabled =
2873                        elem.data("cookie-enabled") == true ? true : false,
2874                        elemModalDismissDelay = elem.attr("data-delay-dismiss");
2875                    /*Modal Auto Show*/
2876                    if (elem.hasClass(modalShow)) {
2877                        var modalElem = $(this);
2878                        var timeout = setTimeout(function() {
2879                            modalElem.addClass(modalShowClass);
2880                            if (elemModalDismissDelay) {
2881                                var t = setTimeout(function() {
2882                                    elem.removeClass(modalShowClass);
2883                                }, elemModalDismissDelay);
2884                            }
2885                        }, elemDelay);
2886                    }
2887                    /*Modal Dissmis Button*/
2888                    elem.find(modalDecline).click(function() {
2889                        elem.removeClass(modalShowClass);
2890                        return false;
2891                    });
2892                    /*Cookie Notify*/
2893                    if (elem.hasClass("cookie-notify")) {
2894                        var timeout = setTimeout(function() {
2895                            if (elemCookieEnabled != true) {
2896                                cookieNotify.addClass(modalShowClass);
2897                            } else {
2898                                if (typeof Cookies.get(elemCookieName) == "undefined") {
2899                                    cookieNotify.addClass(modalShowClass);
2900                                }
2901                            }
2902                        }, elemDelay);
2903                        cookieConfirm.click(function() {
2904                            Cookies.set(elemCookieName, true, {
2905                                expires: Number(elemCookieExpire),
2906                            });
2907                            $.magnificPopup.close();
2908                            cookieNotify.removeClass(modalShowClass);
2909                            return false;
2910                        });
2911                    }
2912                });
2913            }
2914            /*Modal toggles*/
2915            if ($btnModal.length > 0) {
2916                $btnModal.each(function() {
2917                    var elem = $(this),
2918                        modalTarget = elem.attr("data-modal");
2919                    elem.click(function() {
2920                        $(modalTarget).toggleClass(modalShowClass, 1000);
2921                        return false;
2922                    });
2923                });
2924            }
2925        },
2926        notification: function(
2927            $title,
2928            $message,
2929            $type,
2930            $element,
2931            $delay,
2932            $placement,
2933            $animateEnter,
2934            $animateExit,
2935            $backgroundImage,
2936            $timeout
2937        ) {
2938            var $element,
2939                $elementContainer,
2940                $animateEnter = "animate__" + $animateEnter || "animate__fadeInDown",
2941                $animateExit = "animate__" + $animateExit || "animate__fadeOutDown",
2942                $placement,
2943                $backgroundImage,
2944                $backgroundImageContainer,
2945                $timeout;
2946
2947            if ($placement) {
2948                $placement = $placement;
2949            } else {
2950                $placement = "top";
2951            }
2952
2953            if ($element) {
2954                $elementContainer = "element-container";
2955                ($animateEnter = "animate__fadeIn"), ($animateExit = "animate__fadeOut");
2956            } else {
2957                $elementContainer = "col-11 col-md-4";
2958            }
2959
2960            if ($backgroundImage) {
2961                $backgroundImageContainer =
2962                    'style="background-image:url(' +
2963                    $backgroundImage +
2964                    '); background-repeat: no-repeat; background-position: 50% 20%; height:120px !important; width:430px !important; border:0px;" ';
2965            }
2966
2967            if (!$message) {
2968                $message = "";
2969            }
2970
2971            $element = "body";
2972
2973            var notify = function() {
2974                $.notify({
2975                    title: $title,
2976                    message: $message,
2977                }, {
2978                    element: $element,
2979                    type: $type || "warning",
2980                    delay: $delay || 10000,
2981                    template: '<div data-notify="container" ' +
2982                        $backgroundImageContainer +
2983                        ' class="bootstrap-notify ' +
2984                        $elementContainer +
2985                        ' alert alert-{0}" role="alert">' +
2986                        '<button type="button" aria-hidden="true" class="btn-close" data-notify="dismiss"></button>' +
2987                        '<span data-notify="icon"></span> ' +
2988                        '<span data-notify="title">{1}</span> ' +
2989                        '<span data-notify="message">{2}</span>' +
2990                        "</div>",
2991                    mouse_over: true,
2992                    allow_dismiss: true,
2993                    placement: {
2994                        from: $placement,
2995                    },
2996                    animate: {
2997                        enter: "animate__animated " + $animateEnter,
2998                        exit: "animate__animated " + $animateExit,
2999                    },
3000                });
3001            };
3002
3003            if ($timeout) {
3004                setTimeout(function() {
3005                    notify();
3006                }, 2000);
3007            } else {
3008                notify();
3009            }
3010        },
3011        sidebarFixed: function() {
3012            if (INSPIRO.core.rtlStatus()) {
3013                return true;
3014            }
3015            var $sidebarFixed = $(".sticky-sidebar");
3016            if ($sidebarFixed.length > 0) {
3017                //Check if theiaStickySidebar plugin is loaded
3018                if (typeof $.fn.theiaStickySidebar === "undefined") {
3019                    INSPIRO.elements.notification(
3020                        "Warning",
3021                        "jQuery theiaStickySidebar plugin is missing in plugins.js file.",
3022                        "danger"
3023                    );
3024                    return true;
3025                }
3026                $sidebarFixed.each(function() {
3027                    var elem = $(this);
3028                    elem.options = {
3029                        additionalMarginTop: elem.attr("data-margin-top") || 120,
3030                        additionalMarginBottom: elem.attr("data-margin-bottom") || 50,
3031                    };
3032                    //Initialize theiaStickySidebar plugin and passing the options
3033                    elem.theiaStickySidebar({
3034                        additionalMarginTop: Number(elem.options.additionalMarginTop),
3035                        additionalMarginBottom: Number(elem.options.additionalMarginBottom),
3036                        disableOnResponsiveLayouts: true,
3037                    });
3038                });
3039            }
3040        },
3041        bootstrapSwitch: function() {
3042            var $bootstrapSwitch = $("[data-switch=true]");
3043            if ($bootstrapSwitch.length > 0) {
3044                //Check if bootstrapSwitch plugin is loaded
3045                if (typeof $.fn.bootstrapSwitch === "undefined") {
3046                    INSPIRO.elements.notification(
3047                        "Warning",
3048                        "jQuery bootstrapSwitch plugin is missing in plugins.js file.",
3049                        "danger"
3050                    );
3051                    return true;
3052                }
3053                //Initialize jQuery BootstrapSwitch plugin
3054                $bootstrapSwitch.bootstrapSwitch();
3055            }
3056        },
3057        clipboard: function() {
3058            var $clipboardTarget = $("[data-clipboard-target]"),
3059                $clipboardText = $("[data-clipboard-text]");
3060            if ($clipboardTarget.length > 0) {
3061                //Check if ClipboardJS plugin is loaded
3062                if (typeof ClipboardJS === "undefined") {
3063                    INSPIRO.elements.notification(
3064                        "Warning",
3065                        "jQuery ClipboardJS plugin is missing in plugins.js file.",
3066                        "danger"
3067                    );
3068                    return true;
3069                }
3070                if ($clipboardTarget) {
3071                    new ClipboardJS("[data-clipboard-target]");
3072                    clipboardInit($clipboardTarget);
3073                }
3074                if ($clipboardText) {
3075                    new ClipboardJS("[data-clipboard-text]");
3076                    clipboardInit($clipboardText);
3077                }
3078
3079                function clipboardInit(clipboardType) {
3080                    clipboardType.each(function() {
3081                        var elem = $(this),
3082                            title = elem.attr("data-bs-original-title") || "Copy to clipboard",
3083                            titleSuccess =
3084                            elem.attr("data-bs-original-title-success") || "Copied!";
3085                        elem.tooltip({
3086                            placement: "top",
3087                            title: title,
3088                        });
3089                        elem
3090                            .on("click", function() {
3091                                elem.attr("data-bs-original-title", titleSuccess).tooltip("show");
3092                            })
3093                            .on("mouseleave", function() {
3094                                elem.tooltip("hide").attr("data-bs-original-title", title);
3095                                return false;
3096                            });
3097                    });
3098                }
3099            }
3100        },
3101        countdown: function() {
3102            var $countdown = $(".p-countdown");
3103            if ($countdown.length > 0) {
3104                $countdown.each(function() {
3105                    var $elem = $(this),
3106                        $elemCount = $elem.find(".p-countdown-count"),
3107                        $elemShow = $elem.find(".p-countdown-show"),
3108                        $elemSeconds = $elem.attr("data-delay") || 5;
3109                    $elemCount.find(".count-number").html($elemSeconds);
3110                    new Waypoint({
3111                        element: $elem,
3112                        handler: function() {
3113                            var interval = setInterval(function() {
3114                                $elemSeconds--;
3115                                if ($elemSeconds == 0) {
3116                                    clearInterval(interval);
3117                                    $elemCount.fadeOut("slow");
3118                                    setTimeout(function() {
3119                                        $elemShow.fadeIn("show");
3120                                    }, 1000);
3121                                } else {
3122                                    $elemCount.find(".count-number").html($elemSeconds);
3123                                }
3124                            }, 1000);
3125                            this.destroy();
3126                        },
3127                        offset: "100%",
3128                    });
3129                });
3130            }
3131        },
3132        videoBackground: function() {
3133            var $videoBackground = $("[data-bg-video]");
3134            if ($videoBackground.length > 0) {
3135                $videoBackground.each(function() {
3136                    var elem = $(this);
3137                    elem.options = {
3138                        autoplay: elem.data("autoplay") == false ? false : true,
3139                        controls: elem.attr("data-controls"),
3140                        loop: elem.data("loop") == true ? true : false,
3141                        muted: elem.data("muted") == false ? false : true,
3142                        poster: elem.attr("data-poster") || "",
3143                        preload: elem.attr("data-preload") || "auto",
3144                        src: elem.attr("data-bg-video"),
3145                        randomId: Math.random().toString(36).substr(2, 5),
3146                    };
3147
3148                    if (elem.options.controls) {
3149                        elem.options.controls =
3150                            ' controls="' + elem.options.controls + '" ';
3151                    } else {
3152                        elem.options.controls = "";
3153                    }
3154                    elem.prepend(
3155                        '<div class="html5vid" id="video-' +
3156                        elem.options.randomId +
3157                        '">' +
3158                        "<video playsinline " +
3159                        elem.options.controls +
3160                        ' loop="' +
3161                        elem.options.loop +
3162                        '" muted="' +
3163                        elem.options.muted +
3164                        '" poster="' +
3165                        elem.options.poster +
3166                        '" preload="' +
3167                        elem.options.preload +
3168                        '">' +
3169                        '<source src="' +
3170                        elem.options.src +
3171                        '" type="video/mp4">' +
3172                        "</video>" +
3173                        "</div>"
3174                    );
3175                    if (elem.options.autoplay) {
3176                        setTimeout(function() {
3177                            $("#video-" + elem.options.randomId).waypoint(
3178                                function(direction) {
3179                                    if (direction === "down") {
3180                                        $("#video-" + elem.options.randomId)
3181                                            .find("video")
3182                                            .get(0)
3183                                            .play();
3184                                    } else {
3185                                        $("#video-" + elem.options.randomId)
3186                                            .find("video")
3187                                            .get(0)
3188                                            .pause();
3189                                    }
3190                                }, {
3191                                    offset: "50%",
3192                                }
3193                            );
3194                        }, 100);
3195                    }
3196                    setTimeout(function() {
3197                        $("#video-" + elem.options.randomId).addClass("video-loaded");
3198                    }, 300);
3199                });
3200            }
3201        },
3202    };
3203    INSPIRO.widgets = {
3204        functions: function() {
3205            INSPIRO.widgets.twitter();
3206            INSPIRO.widgets.flickr();
3207            INSPIRO.widgets.instagram();
3208            INSPIRO.widgets.subscribeForm();
3209        },
3210        twitter: function() {
3211            var $widget_twitter = $(".widget-tweeter") || $(".widget-twitter");
3212            if ($widget_twitter.length > 0) {
3213                //Check if twittie plugin is loaded
3214                if (typeof $.fn.twittie === "undefined") {
3215                    INSPIRO.elements.notification(
3216                        "Warning",
3217                        "jQuery twittie plugin is missing in plugins.js file.",
3218                        "danger"
3219                    );
3220                    return true;
3221                }
3222                var t = setTimeout(function() {
3223                    $widget_twitter.each(function() {
3224                        var elem = $(this),
3225                            twitterUsername = elem.attr("data-username") || "ardianmusliu",
3226                            twitterLimit = elem.attr("data-limit") || 2,
3227                            twitterDateFormat = elem.attr("data-format") || "%b/%d/%Y",
3228                            twitterLoadingText =
3229                            elem.attr("data-loading-text") || "Loading...",
3230                            twitterApiPAth =
3231                            elem.attr("data-loader") || "include/twitter/tweet.php",
3232                            twitterAvatar = elem.attr("data-avatar") || false;
3233                        if (twitterAvatar == "true") {
3234                            twitterAvatar = "{{avatar}}";
3235                        } else {
3236                            twitterAvatar = "";
3237                        }
3238                        elem.append('<div id="twitter-cnt"></div>');
3239                        elem.find("#twitter-cnt").twittie({
3240                                username: twitterUsername,
3241                                count: twitterLimit,
3242                                dateFormat: twitterDateFormat,
3243                                template: twitterAvatar + "{{tweet}}<small>{{date}}</small>",
3244                                apiPath: twitterApiPAth,
3245                                loadingText: twitterLoadingText,
3246                            },
3247                            function() {
3248                                if (elem.parents(".grid-layout").length > 0) {
3249                                    elem.parents(".grid-layout").isotope("layout");
3250                                }
3251                            }
3252                        );
3253                    });
3254                }, 2000);
3255            }
3256        },
3257        flickr: function() {
3258            var $flickr_widget = $(".flickr-widget");
3259            if ($flickr_widget.length > 0) {
3260                //Check if jflickrfeed plugin is loaded
3261                if (typeof $.fn.jflickrfeed === "undefined") {
3262                    INSPIRO.elements.notification(
3263                        "Warning",
3264                        "jQuery jflickrfeed plugin is missing in plugins.js file.",
3265                        "danger"
3266                    );
3267                    return true;
3268                }
3269                $flickr_widget.each(function() {
3270                    var elem = $(this);
3271                    elem.options = {
3272                        id: elem.attr("data-flickr-id") || "52617155@N08",
3273                        limit: elem.attr("data-flickr-images") || "9",
3274                        itemTemplate: '<a href="{{image}}" title="{{title}}"><img src="{{image_s}}" alt="{{title}}" /></a>',
3275                    };
3276                    //Initializing jflickrfeed plugin and passing the options
3277                    $flickr_widget.jflickrfeed({
3278                            limit: elem.options.limit,
3279                            qstrings: {
3280                                id: elem.options.id,
3281                            },
3282                            itemTemplate: elem.options.itemTemplate,
3283                        },
3284                        function() {
3285                            var t = setTimeout(function() {
3286                                elem.addClass("flickr-widget-loaded");
3287                            }, 1000);
3288                            elem.magnificPopup({
3289                                    delegate: "a",
3290                                    type: "image",
3291                                    gallery: {
3292                                        enabled: true,
3293                                    },
3294                                },
3295                                function() {
3296                                    if (elem.parents(".grid-layout").length > 0) {
3297                                        elem.parents(".grid-layout").isotope("layout");
3298                                    }
3299                                }
3300                            );
3301                        }
3302                    );
3303                });
3304            }
3305        },
3306        instagram: function() {
3307            var $widget_instagram = $(".widget-instagram");
3308            if ($widget_instagram.length > 0) {
3309                //Check if spectragram plugin is loaded
3310                if (typeof $.fn.spectragram === "undefined") {
3311                    INSPIRO.elements.notification(
3312                        "Warning",
3313                        "jQuery spectragram plugin is missing in plugins.js file.",
3314                        "danger"
3315                    );
3316                    return true;
3317                }
3318
3319                $widget_instagram.each(function() {
3320                    var elem = $(this),
3321                        instagramLimit = elem.attr("data-limit") || 12,
3322                        instagramColumns = elem.attr("data-col") || 3,
3323                        instagramAccessToken =
3324                        elem.attr("data-token") ||
3325                        "IGQVJYMjdIb3lOZAlBpTDZApY1lOakNVTk1xWVdW
3325Vk42Y0RWMFNDSUE4TDRad3M5d2JNZAUZAiLXBhY0ZAfWVZAYUEctMDF0R1QwZA2lTalRQWC1kMi1zd2pQc3U0V3lkMEE0Tk8wZAUlzQW55d3h3THFjRU94TgZDZD",
3326                        instagramItems = "#instagram-cnt",
3327                        instagramSize = elem.attr("data-size") || "small", //The size of the photos. 'small', 'medium' or 'big'. Default: 'medium'
3328                        instagramGridColumns = "grid-" + instagramColumns;
3329                    elem.append(
3330                        '<div id="instagram-cnt" class="' +
3331                        instagramGridColumns +
3332                        '"></div>'
3333                    );
3334
3335                    jQuery.fn.spectragram.accessData = {
3336                        accessToken: instagramAccessToken,
3337                    };
3338
3339                    elem.find($(instagramItems)).spectragram({
3340                        complete: myCallbackFunc(),
3341                        max: instagramLimit,
3342                        size: instagramSize,
3343                        wrapEachWith: "",
3344                    });
3345
3346                    function myCallbackFunc() {
3347                        elem.addClass("widget-instagram-loaded");
3348                        /*   setTimeout(function () {
3349                            if (elem.parents(".grid-layout").length > 0) {
3350                              elem.parents(".grid-layout").isotope("layout");
3351                            }
3352                          }, 100); */
3353                    }
3354                });
3355            }
3356        },
3357        subscribeForm: function() {
3358            var $subscribeForm = $(".widget-subscribe-form");
3359            if ($subscribeForm.length > 0) {
3360                $subscribeForm.each(function() {
3361                    var elem = $(this),
3362                        elemSuccessMessage =
3363                        elem.attr("data-success-message") ||
3364                        "You have successfully subscribed to our mailing list.";
3365                    var addonIcon = elem.find('button[type="submit"]'),
3366                        addonIconText = addonIcon.html();
3367                    elem.submit(function(event) {
3368                        event.preventDefault();
3369                        var post_url = $(this).attr("action");
3370                        var request_method = $(this).attr("method");
3371                        var form_data = $(this).serialize();
3372                        if (elem[0].checkValidity() === false) {
3373                            event.stopPropagation();
3374                            elem.addClass("was-validated");
3375                        } else {
3376                            $(elem).removeClass("was-validated");
3377                            addonIcon.html('<i class="icon-loader fa-spin"></i>');
3378                            $.ajax({
3379                                url: post_url,
3380                                type: request_method,
3381                                data: form_data,
3382                                dataType: "json",
3383                                success: function(text) {
3384                                    if (text.response == "success") {
3385                                        $.notify({
3386                                            message: elemSuccessMessage,
3387                                        }, {
3388                                            type: "success",
3389                                        });
3390                                        $(elem)[0].reset();
3391                                        $(elem).removeClass("was-validated");
3392                                        addonIcon.html(addonIconText);
3393                                    } else {
3394                                        $.notify({
3395                                            message: text.message,
3396                                        }, {
3397                                            type: "warning",
3398                                        });
3399                                        $(elem)[0].reset();
3400                                        $(elem).removeClass("was-validated");
3401                                        addonIcon.html(addonIconText);
3402                                    }
3403                                },
3404                                done: function() {
3405                                    addonIcon.html(addonIconText);
3406                                },
3407                            });
3408                        }
3409                    });
3410                });
3411            }
3412        },
3413    };
3414    //Load Functions on document ready
3415    $(document).ready(function() {
3416        INSPIRO.core.functions();
3417        INSPIRO.header.functions();
3418        INSPIRO.slider.functions();
3419        INSPIRO.widgets.functions();
3420        INSPIRO.elements.functions();
3421    });
3422    //Recall Functions on window scroll
3423    $window.on("scroll", function() {
3424        INSPIRO.header.stickyHeader();
3425        INSPIRO.core.scrollTop();
3426        INSPIRO.header.dotsMenu();
3427    });
3428    //Recall Functions on window resize
3429    $window.on("resize", function() {
3430        INSPIRO.header.logoStatus();
3431        INSPIRO.header.stickyHeader();
3432        INSPIRO.header.mainMenuResponsiveShow();
3433    });
3434})(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.