PageSourceSearch

https://www.bluelinksystems.ro/themes/custom/bootstrap_sass/js/script.js?v=8.9.7

js bluelinksystems.ro collected 2026-10-02 01:08:29 UTC 55,090 bytes, 1,140 lines download raw bytes

1(function ($, Drupal) {
2    'use strict';
3
4    Drupal.behaviors.bootstrapSassScripts = {
5        attach: function (context, settings) {
6            var $document = $(document, context);
7
8            // Global variables
9            var userAgent = navigator.userAgent.toLowerCase(),
10                initialDate = new Date(),
11
12                $window = $(window, context),
13                $html = $("html", context),
14
15                isDesktop = $html.hasClass("desktop"),
16                isIE = userAgent.indexOf("msie") !== -1 ? parseInt(userAgent.split("msie")[1], 10) : userAgent.indexOf("trident") !== -1 ? 11 : userAgent.indexOf("edge") !== -1 ? 12 : false,
17                isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),
18                windowReady = false,
19                isNoviBuilder = false,
20                pageTransitionDuration = 500,
21
22                plugins = {
23                    bootstrapTooltip: $("[data-toggle='tooltip']", context),
24                    bootstrapModalDialog: $('.modal', context),
25                    bootstrapCollapse: $(".card-custom", context),
26                    bootstrapTabs: $('.tabs-custom', context),
27                    counter: $(".counter", context),
28                    circleProgress: $(".progress-bar-circle", context),
29                    captcha: $('.recaptcha', context),
30                    campaignMonitor: $('.campaign-mailform', context),
31                    copyrightYear: $(".copyright-year", context),
32                    checkbox: $("input[type='checkbox']", context),
33                    dateCountdown: $('.DateCountdown', context),
34                    isotope: $(".isotope", context),
35                    lightGallery: $("[data-lightgallery='group']", context),
36                    lightGalleryItem: $("[data-lightgallery='item']", context),
37                    lightDynamicGalleryItem: $("[data-lightgallery='dynamic']", context),
38                    materialParallax: $(".parallax-container", context),
39                    owl: $(".owl-carousel", context),
40                    popover: $('[data-toggle="popover"]', context),
41                    progressLinear: $(".progress-linear", context),
42                    preloader: $(".preloader", context),
43                    rdNavbar: $(".rd-navbar", context),
44                    maps: $(".google-map-container", context),
45                    rdMailForm: $(".rd-mailform", context),
46                    rdInputLabel: $(".form-label", context),
47                    radio: $("input[type='radio']", context),
48                    statefulButton: $('.btn-stateful', context),
49                    viewAnimate: $('.view-animate', context),
50                    wow: $(".wow", context),
51                    countDown: $(".countdown", context),
52                    selectFilter: $(".select", context),
53                    buttonWinona: $('.button-winona', context),
54                    slick: $('.slick-slider', context),
55                    buttonLoad: $('.button-load', context),
56                    parallaxJs: $(".parallax-scene-js", context),
57                    navbar: document.querySelectorAll('.navbar'),
58                };
59
60            // Initialize scripts that require a loaded page
61            $window.on('load', function () {
62                // Page loader & Page transition
63                if (plugins.preloader.length && !isNoviBuilder) {
64                    pageTransition({
65                        target: document.querySelector('.page'),
66                        delay: 0,
67                        duration: pageTransitionDuration,
68                        classIn: 'fadeIn',
69                        classOut: 'fadeOut',
70                        classActive: 'animated',
71                        conditions: function (event, link) {
72                            return !/(\#|callto:|tel:|mailto:|:\/\/)/.test(link)
73                                && !event.currentTarget.hasAttribute('data-lightgallery');
74                        },
75                        onTransitionStart: function (options) {
76                            setTimeout(function () {
77                                plugins.preloader.removeClass('loaded');
78                            }, options.duration * .75);
79                        },
80                        onReady: function () {
81                            plugins.preloader.addClass('loaded');
82                            windowReady = true;
83                        }
84                    });
85                }
86            });
87
88            // Initialize scripts that require a finished document
89            isNoviBuilder = window.xMode;
90
91            /**
92             * @desc Initialize owl carousel plugin
93             * @param {object} c - carousel jQuery object
94             */
95            function initOwlCarousel(c) {
96                var aliaces = ["-", "-sm-", "-md-", "-lg-", "-xl-", "-xxl-"],
97                    values = [0, 576, 768, 992, 1200, 1600],
98                    responsive = {};
99
100                for (var j = 0; j < values.length; j++) {
101                    responsive[values[j]] = {};
102                    for (var k = j; k >= -1; k--) {
103                        if (!responsive[values[j]]["items"] && c.attr("data" + aliaces[k] + "items")) {
104                            responsive[values[j]]["items"] = k < 0 ? 1 : parseInt(c.attr("data" + aliaces[k] + "items"), 10);
105                        }
106                        if (!responsive[values[j]]["stagePadding"] && responsive[values[j]]["stagePadding"] !== 0 && c.attr("data" + aliaces[k] + "stage-padding")) {
107                            responsive[values[j]]["stagePadding"] = k < 0 ? 0 : parseInt(c.attr("data" + aliaces[k] + "stage-padding"), 10);
108                        }
109                        if (!responsive[values[j]]["margin"] && responsive[values[j]]["margin"] !== 0 && c.attr("data" + aliaces[k] + "margin")) {
110                            responsive[values[j]]["margin"] = k < 0 ? 30 : parseInt(c.attr("data" + aliaces[k] + "margin"), 10);
111                        }
112                        if (!responsive[values[j]]["autoWidth"] && responsive[values[j]]["autoWidth"] !== 0 && c.attr("data" + aliaces[k] + "auto-width")) {
113                            responsive[values[j]]["autoWidth"] = k < 0 ? false : c.attr("data" + aliaces[k] + "auto-width");
114                        }
115                    }
116                }
117
118                // Enable custom pagination
119                if (c.attr('data-dots-custom')) {
120                    c.on("initialized.owl.carousel", function (event) {
121                        var carousel = $(event.currentTarget),
122                            customPag = $(carousel.attr("data-dots-custom")),
123                            active = 0;
124
125                        if (carousel.attr('data-active')) {
126                            active = parseInt(carousel.attr('data-active'), 10);
127                        }
128
129                        carousel.trigger('to.owl.carousel', [active, 300, true]);
130                        customPag.find("[data-owl-item='" + active + "']").addClass("active");
131
132                        customPag.find("[data-owl-item]").on('click', function (e) {
133                            e.preventDefault();
134                            carousel.trigger('to.owl.carousel', [parseInt(this.getAttribute("data-owl-item"), 10), 300, true]);
135                        });
136
137                        carousel.on("translate.owl.carousel", function (event) {
138                            customPag.find(".active").removeClass("active");
139                            customPag.find("[data-owl-item='" + event.item.index + "']").addClass("active")
140                        });
141                    });
142                }
143
144                // Create custom Numbering
145                if (typeof(c.attr("data-numbering")) !== 'undefined') {
146                    var numberingObject = $(c.attr("data-numbering"));
147
148                    c.on('initialized.owl.carousel changed.owl.carousel', function (numberingObject) {
149                        return function (e) {
150                            if (!e.namespace) return;
151                            numberingObject.find('.numbering-current').text(e.item.index + 1);
152                            numberingObject.find('.numbering-count').text(e.item.count);
153                        };
154                    }(numberingObject));
155                }
156
157                if (typeof(c.attr("data-custom-next")) !== 'undefined') {
158                    var customNext = $(c.attr("data-custom-next"));
159
160                    customNext.on('click', function (customNext, c) {
161                        return function () {
162                            c.trigger('next.owl.carousel');
163                        };
164                    }(customNext, c));
165                }
166
167                c.owlCarousel({
168                    autoplay: isNoviBuilder ? false : c.attr("data-autoplay") === "true",
169                    autoplayTimeout: c.attr("data-autoplay-timeout") ? parseInt(c.attr("data-autoplay-timeout"), 10) : 100,
170                    autoplayHoverPause: true,
171                    smartSpeed: c.attr("data-speed") ? parseInt(c.attr("data-speed")) : 250,
172                    loop: isNoviBuilder ? false : c.attr("data-loop") !== "fal
172se",
173                    items: 1,
174                    easing: c.attr('data-easing') ? c.attr('data-easing') : 'swing',
175                    center: c.attr("data-center") === "true",
176                    dotsContainer: c.attr("data-pagination-container") || false,
177                    navContainer: c.attr("data-navigation-container") || false,
178                    mouseDrag: isNoviBuilder ? false : c.attr("data-mouse-drag") !== "false",
179                    nav: c.attr("data-nav") === "true",
180                    dots: c.attr("data-dots") === "true",
181                    dotsEach: c.attr("data-dots-each") ? parseInt(c.attr("data-dots-each"), 10) : false,
182                    animateIn: c.attr('data-animation-in') ? c.attr('data-animation-in') : false,
183                    animateOut: c.attr('data-animation-out') ? c.attr('data-animation-out') : false,
184                    responsive: responsive,
185                    navText: c.attr("data-nav-text") ? $.parseJSON(c.attr("data-nav-text")) : [],
186                    navClass: c.attr("data-nav-class") ? $.parseJSON(c.attr("data-nav-class")) : ['owl-prev', 'owl-next']
187                });
188            }
189
190            /**
191             * @desc Check the element whas been scrolled into the view
192             * @param {object} elem - jQuery object
193             * @return {boolean}
194             */
195            function isScrolledIntoView(elem) {
196                if (isNoviBuilder) {
197                    return true;
198                }
199
200                return elem.offset().top + elem.outerHeight() >= $window.scrollTop() && elem.offset().top <= $window.scrollTop() + $window.height();
201            }
202
203            /**
204             * @desc Initialize Bootstrap tooltip with required placement
205             * @param {string} tooltipPlacement
206             */
207            function initBootstrapTooltip(tooltipPlacement) {
208                plugins.bootstrapTooltip.tooltip('dispose');
209
210                for (var i = 0; i < plugins.bootstrapTooltip.length; i++) {
211                    var $tooltip = $(plugins.bootstrapTooltip[i]);
212
213                    if (window.innerWidth < 576) {
214                        $tooltip.tooltip({
215                            customClass: $tooltip.attr('data-class') ? $tooltip.attr('data-class') : '',
216                            placement: 'bottom'
217                        });
218                    } else {
219                        $tooltip.tooltip({
220                            customClass: $tooltip.attr('data-class') ? $tooltip.attr('data-class') : '',
221                            placement: tooltipPlacement
222                        });
223                    }
224                }
225            }
226
227            /**
228             * @desc Initialize the gallery with set of images
229             * @param {object} itemsToInit - jQuery object
230             * @param {string} addClass - additional gallery class
231             */
232            function initLightGallery(itemsToInit, addClass) {
233                if (!isNoviBuilder) {
234                    $(itemsToInit).lightGallery({
235                        thumbnail: $(itemsToInit).attr("data-lg-thumbnail") !== "false",
236                        selector: "[data-lightgallery='item']",
237                        autoplay: $(itemsToInit).attr("data-lg-autoplay") === "true",
238                        pause: parseInt($(itemsToInit).attr("data-lg-autoplay-delay")) || 5000,
239                        addClass: addClass,
240                        mode: $(itemsToInit).attr("data-lg-animation") || "lg-slide",
241                        loop: $(itemsToInit).attr("data-lg-loop") !== "false"
242                    });
243                }
244            }
245
246            /**
247             * @desc Initialize the gallery with dynamic addition of images
248             * @param {object} itemsToInit - jQuery object
249             * @param {string} addClass - additional gallery class
250             */
251            function initDynamicLightGallery(itemsToInit, addClass) {
252                if (!isNoviBuilder) {
253                    $(itemsToInit).on("click", function () {
254                        $(itemsToInit).lightGallery({
255                            thumbnail: $(itemsToInit).attr("data-lg-thumbnail") !== "fal
255se",
256                            selector: "[data-lightgallery='item']",
257                            autoplay: $(itemsToInit).attr("data-lg-autoplay") === "true",
258                            pause: parseInt($(itemsToInit).attr("data-lg-autoplay-delay")) || 5000,
259                            addClass: addClass,
260                            mode: $(itemsToInit).attr("data-lg-animation") || "lg-slide",
261                            loop: $(itemsToInit).attr("data-lg-loop") !== "false",
262                            dynamic: true,
263                            dynamicEl: JSON.parse($(itemsToInit).attr("data-lg-dynamic-elements")) || []
264                        });
265                    });
266                }
267            }
268
269            /**
270             * @desc Initialize the gallery with one image
271             * @param {object} itemToInit - jQuery object
272             * @param {string} addClass - additional gallery class
273             */
274            function initLightGalleryItem(itemToInit, addClass) {
275                itemToInit = $(itemToInit);
276                if (!isNoviBuilder) {
277                    if (itemToInit.length && itemToInit.attr('href').split('http').length > 1) {
278                        addClass = 'lightgallery-iframe';
279                    }
280                    itemToInit.lightGallery({
281                        selector: "this",
282                        addClass: addClass,
283                        counter: false,
284                        iframeMaxWidth: '90%',
285                        youtubePlayerParams: {
286                            modestbranding: 1,
287                            showinfo: 1,
288                            rel: 1,
289                            controls: 1
290                        },
291                        vimeoPlayerParams: {
292                            byline: 0,
293                            portrait: 0
294                        }
295                    });
296                }
297            }
298
299            // Additional class on html if mac os.
300            if (navigator.platform.match(/(Mac)/i)) {
301                $html.addClass("mac-os");
302            }
303
304            // Adds some loosing functionality to IE browsers (IE Polyfills)
305            if (isIE) {
306                if (isIE === 12) $html.addClass("ie-edge");
307                if (isIE === 11) $html.addClass("ie-11");
308                if (isIE < 10) $html.addClass("lt-ie-10");
309                if (isIE < 11) $html.addClass("ie-10");
310            }
311
312            // Bootstrap Tooltips
313            if (plugins.bootstrapTooltip.length) {
314                var tooltipPlacement = plugins.bootstrapTooltip.attr('data-placement');
315                initBootstrapTooltip(tooltipPlacement);
316
317                $window.on('resize orientationchange', function () {
318                    initBootstrapTooltip(tooltipPlacement);
319                })
320            }
321
322            // Stop video in bootstrapModalDialog
323            if (plugins.bootstrapModalDialog.length) {
324                plugins.bootstrapModalDialog.once().each(function () {
325                    var modalItem = $(this);
326
327                    modalItem.on('hidden.bs.modal', $.proxy(function () {
328                        var activeModal = $(this),
329                            rdVideoInside = activeModal.find('video'),
330                            youTubeVideoInside = activeModal.find('iframe');
331
332                        if (rdVideoInside.length) {
333                            rdVideoInside[0].pause();
334                        }
335
336                        if (youTubeVideoInside.length) {
337                            var videoUrl = youTubeVideoInside.attr('src');
338
339                            youTubeVideoInside
340                                .attr('src', '')
341                                .attr('src', videoUrl);
342                        }
343                    }, modalItem));
344                });
345            }
346
347            // Popovers
348            if (plugins.popover.length) {
349                if (window.innerWidth < 767) {
350                    plugins.popover.attr('data-placement', 'bottom');
351                    plugins.popover.popover();
352                }
353                else {
354                    plugins.popover.popover();
355                }
356            }
357
358            // Bootstrap Buttons
359            if (plugins.statefulButton.length) {
360                $(plugins.statefulButton).on('click', function () {
361                    var statefulButtonLoading = $(this).button('loading');
362
363                    setTimeout(function () {
364                        statefulButtonLoading.button('reset')
365                    }, 2000);
366                })
367            }
368
369            // Copyright Year (Evaluates correct copyright year)
370            if (plugins.copyrightYear.length) {
371                plugins.copyrightYear.text(initialDate.getFullYear());
372            }
373
374            // Bootstrap Collapse Custom
375            if (plugins.bootstrapCollapse.length) {
376                plugins.bootstrapCollapse.once().each(function () {
377                    var $bootstrapCollapseItem = $(this);
378
379                    (function ($bootstrapCollapseItem) {
380                        if (!$bootstrapCollapseItem.find('a.collapsed').length) {
381                            $bootstrapCollapseItem.addClass('active');
382                        }
383
384                        $bootstrapCollapseItem.on('show.bs.collapse', function () {
385                            $bootstrapCollapseItem.addClass('active');
386                        });
387
388                        $bootstrapCollapseItem.on('hide.bs.collapse', function () {
389                            $bootstrapCollapseItem.removeClass('active');
390                        });
391                    })($bootstrapCollapseItem);
392                });
393            }
394
395            // Bootstrap tabs
396            if (plugins.bootstrapTabs.length) {
397                var MILLISECONDS_MULTIPLIER = 1000;
398
399                plugins.bootstrapTabs.once().each(function () {
400                    var $bootstrapTabsItem = $(this);
401
402                    // Nav plugin
403                    if ($bootstrapTabsItem.attr('data-transition-state') === 'true') {
404                        $bootstrapTabsItem.on('hide.bs.tab', function (event) {
405                            document.querySelectorAll(event.target.getAttribute('href'))[0].classList.add('hiding');
406                        });
407                        $bootstrapTabsItem.on('hidden.bs.tab', function (event) {
408                            var target = document.querySelectorAll(event.target.getAttribute('href'))[0],
409                                timeout = parseFloat(window.getComputedStyle(target).getPropertyValue('animation-duration')) * MILLISECONDS_MULTIPLIER;
410                            setTimeout(function () {
411                                target.classList.remove('hiding');
412                            }, timeout);
413                        });
414                        $bootstrapTabsItem.on('show.bs.tab', function (event) {
415                            document.querySelectorAll(event.target.getAttribute('href'))[0].classList.add('showing');
416                        });
417                        $bootstrapTabsItem.on('shown.bs.tab', function (event) {
418                            var target = document.querySelectorAll(event.target.getAttribute('href'))[0],
419                                timeout = parseFloat(window.getComputedStyle(target).getPropertyValue('animation-duration')) * MILLISECONDS_MULTIPLIER;
420                            setTimeout(function () {
421                                target.classList.remove('showing');
422                            }, timeout);
423                        });
424                    }
425                });
426            }
427
428            // Add custom styling options for input[type="radio"]
429            if (plugins.radio.length) {
430                plugins.radio.once().each(function () {
431                    $(this).addClass("radio-custom").after("<span class='radio-custom-dummy'></span>")
432                });
433            }
434
435            // Add custom styling options for input[type="checkbox"]
436            if (plugins.checkbox.length) {
437                plugins.checkbox.once().each(function () {
438                    $(this).addClass("checkbox-custom").after("<span class='checkbox-custom-dummy'></span>")
439                });
440            }
441
442            // UI To Top
443            if (isDesktop && !isNoviBuilder) {
444                $().UItoTop({
445                    easingType: 'easeOutQuad',
446                    containerClass: 'ui-to-top mdi mdi-chevron-up'
447                });
448            }
449
450            // RD Navbar
451            if (plugins.rdNavbar.length) {
452                var aliases, i, j, len, value, values;
453
454                aliases = ["-", "-sm-", "-md-", "-lg-", "-xl-", "-xxl-"];
455                values = [0, 576, 768, 992, 1200, 1600];
456
457                plugins.rdNavbar.each(function () {
458                    var $rdNavbar = $(this),
459                        responsiveNavbar = {};
460
461                    for (i = j = 0, len = values.length; j < len; i = ++j) {
462                        value = values[i];
463                        if (!responsiveNavbar[values[i]]) {
464                            responsiveNavbar[values[i]] = {};
465                        }
466                        if ($rdNavbar.attr('data' + aliases[i] + 'layout')) {
467                            responsiveNavbar[values[i]].layout = $rdNavbar.attr('data' + aliases[i] + 'layout');
468                        }
469                        if ($rdNavbar.attr('data' + aliases[i] + 'device-layout')) {
470                            responsiveNavbar[values[i]]['deviceLayout'] = $rdNavbar.attr('data' + aliases[i] + 'device-layout');
471                        }
472                        if ($rdNavbar.attr('data' + aliases[i] + 'hover-on')) {
473                            responsiveNavbar[values[i]]['focusOnHover'] = $rdNavbar.attr('data' + aliases[i] + 'hover-on') === 'true';
474                        }
475                        if ($rdNavbar.attr('data' + aliases[i] + 'auto-height')) {
476                            responsiveNavbar[values[i]]['autoHeight'] = $rdNavbar.attr('data' + aliases[i] + 'auto-height') === 'true';
477                        }
478
479                        if ($rdNavbar.attr('data' + aliases[i] + 'anchor-nav-offset')) {
480                            responsiveNavbar[values[i]]['anchorNavOffset'] = $rdNavbar.attr('data' + aliases[i] + 'anchor-nav-offset');
481                        }
482
483                        if (isNoviBuilder) {
484                            responsiveNavbar[values[i]]['stickUp'] = false;
485                        } else if ($rdNavbar.attr('data' + aliases[i] + 'stick-up')) {
486                            var isDemoNavbar = $rdNavbar.parents('.layout-navbar-demo').length;
487                            responsiveNavbar[values[i]]['stickUp'] = $rdNavbar.attr('data' + aliases[i] + 'stick-up') === 'true' && !isDemoNavbar;
488                        }
489
490                        if ($rdNavbar.attr('data' + aliases[i] + 'stick-up-offset')) {
491                            responsiveNavbar[values[i]]['stickUpOffset'] = $rdNavbar.attr('data' + aliases[i] + 'stick-up-offset');
492                        }
493                    }
494
495                    $rdNavbar.RDNavbar({
496                        anchorNav: !isNoviBuilder,
497                        stickUpClone: ($rdNavbar.attr("data-stick-up-clone") && !isNoviBuilder) ? $rdNavbar.attr("data-stick-up-clone") === 'true' : false,
498                        responsive: responsiveNavbar,
499                        callbacks: {
500                            onStuck: function () {
501                                var navbarSearch = this.$element.find('.rd-search input');
502
503                                if (navbarSearch) {
504                                    navbarSearch.val('').trigger('propertychange');
505                                }
506                            },
507                            onDropdownOver: function () {
508                                return !isNoviBuilder;
509                            },
510                            onUnstuck: function () {
511                                if (this.$clone === null)
512                                    return;
513
514                                var navbarSearch = this.$clone.find('.rd-search input');
515
516                                if (navbarSearch) {
517                                    navbarSearch.val('').trigger('propertychange');
518                                    navbarSearch.trigger('blur');
519                                }
520
521                            }
522                        }
523                    });
524
525                    if ($rdNavbar.attr("data-body-class")) {
526                        document.body.className += ' ' + $rdNavbar.attr("data-body-class");
527                    }
528                });
529            }
530
531            // Add class in viewport
532            if (plugins.viewAnimate.length) {
533                plugins.viewAnimate.once().each(function () {
534                    var $view = $(this).not('.active');
535
536                    $document.on("scroll", $.proxy(function () {
537                        if (isScrolledIntoView(this)) {
538                            this.addClass("active");
539                        }
540                    }, $view))
541                        .trigger("scroll");
542                });
543            }
544
545            // Owl carousel
546            if (plugins.owl.length) {
547                plugins.owl.once().each(function () {
548                    initOwlCarousel($(this));
549                });
550            }
551
552            // Isotope
553            if (plugins.isotope.length) {
554                var isogroup = [];
555
556                plugins.isotope.once().each(function () {
557                    var isotopeItem = this,
558                        isotopeInitAttrs = {
559                            itemSelector: '.isotope-item',
560                            layoutMode: isotopeItem.getAttribute('data-isotope-layout') ? isotopeItem.getAttribute('data-isotope-layout') : 'masonry',
561                            filter: '*'
562                        };
563
564                    if (isotopeItem.getAttribute('data-column-width')) {
565                        isotopeInitAttrs.masonry = {
566                            columnWidth: parseFloat(isotopeItem.getAttribute('data-column-width'))
567                        };
568                    } else if (isotopeItem.getAttribute('data-column-class')) {
569                        isotopeInitAttrs.masonry = {
570                            columnWidth: isotopeItem.getAttribute('data-column-class')
571                        };
572                    }
573
574                    var iso = new Isotope(isotopeItem, isotopeInitAttrs);
575
576                    isotopeItem.isotope = iso;
577                    isogroup.push(iso);
578                });
579
580                setTimeout(function () {
581                    for (var i = 0; i < isogroup.length; i++) {
582                        isogroup[i].element.className += " isotope--loaded";
583                        isogroup[i].layout();
584                    }
585                }, 200);
586
587                var resizeTimout;
588
589                $("[data-isotope-filter]").on("click", function (e) {
590                    e.preventDefault();
591                    var filter = $(this);
592                    clearTimeout(resizeTimout);
593                    filter.parents(".isotope-filters").find('.active').removeClass("active");
594                    filter.addClass("active");
595                    var iso = $('.isotope[data-isotope-group="' + this.getAttribute("data-isotope-group") + '"]'),
596                        isotopeAttrs = {
597                            itemSelector: '.isotope-item',
598                            layoutMode: iso.attr('data-isotope-layout') ? iso.attr('data-isotope-layout') : 'masonry',
599                            filter: this.getAttribute("data-isotope-filter") === '*' ? '*' : '[data-filter*="' + this.getAttribute("data-isotope-filter") + '"]'
600                        };
601                    if (iso.attr('data-column-width')) {
602                        isotopeAttrs.masonry = {
603                            columnWidth: parseFloat(iso.attr('data-column-width'))
604                        };
605                    } else if (iso.attr('data-column-class')) {
606                        isotopeAttrs.masonry = {
607                            columnWidth: iso.attr('data-column-class')
608                        };
609                    }
610                    iso.isotope(isotopeAttrs);
611                }).eq(0).trigger("click")
612            }
613
614            // WOW
615            if ($html.hasClass('wow-animation') && plugins.wow.length && !isNoviBuilder && isDesktop) {
616                setTimeout(function () {
617                    new WOW().init();
618                }, pageTransitionDuration + 100);
619            }
620
621            // RD Input Label
622            if (plugins.rdInputLabel.length) {
623                plugins.rdInputLabel.RDInputLabel();
624            }
625
626            // RD Mail Form
627            if (plugins.rdMailForm.length) {
628                var i, j,
629                    msg = {
630                        'MF000': 'Successfully sent!',
631                        'MF001': 'Recipients are not set!',
632                        'MF002': 'Form will not work locally!',
633                        'MF003': 'Please, define email field in your form!',
634                        'MF004': 'Please, define type of your form!',
635                        'MF254': 'Something went wrong with PHPMailer!',
636                        'MF255': 'Aw, snap! Something went wrong.'
637                    };
638
639                plugins.rdMailForm.once().each(function () {
640                    var $form = $(this);
641
642                    $form.attr('novalidate', 'novalidate');
643                });
644            }
645
646            // lightGallery
647            if (plugins.lightGallery.length) {
648                plugins.lightGallery.once().each(function () {
649                    initLightGallery(this);
650                });
651            }
652
653            // lightGallery item
654            if (plugins.lightGalleryItem.length) {
655                // Filter carousel items
656                var notCarouselItems = [];
657
658                plugins.lightGalleryItem.once().each(function () {
659                    if (!$(this).parents('.owl-carousel').length &&
660                        !$(this).parents('.slick-slider').length) {
661                        notCarouselItems.push(this);
662                    }
663                });
664
665                plugins.lightGalleryItem = notCarouselItems;
666
667                for (var i = 0; i < plugins.lightGalleryItem.length; i++) {
668                    initLightGalleryItem(plugins.lightGalleryItem[i]);
669                }
670            }
671
672            // Dynamic lightGallery
673            if (plugins.lightDynamicGalleryItem.length) {
674                plugins.lightDynamicGalleryItem.once().each(function () {
675                    initDynamicLightGallery(this);
676                });
677            }
678
679            // jQuery Count To
680            if (plugins.counter.length) {
681                plugins.counter.once().each(function () {
682                    var $counterNotAnimated = $(this).not('.animated');
683
684                    $document.on("scroll", (function ($counterNotAnimated) {
685                        return function (event) {
686                            if ((!$counterNotAnimated.hasClass("animated")) && (isScrolledIntoView($c
686ounterNotAnimated))) {
687                                $counterNotAnimated.countTo({
688                                    refreshInterval: 40,
689                                    from: 0,
690                                    to: parseInt($counterNotAnimated.text(), 10),
691                                    speed: $counterNotAnimated.attr("data-speed") || 1000
692                                });
693
694                                $counterNotAnimated.addClass('animated');
695                                $document.off(event);
696                            }
697                        }
698
699                    })($counterNotAnimated));
700                });
701
702                $document.trigger('scroll');
703            }
704
705            // TimeCircles
706            if (plugins.dateCountdown.length) {
707                plugins.dateCountdown.once().each(function () {
708                    var dateCountdownItem = $(this),
709                        time = {
710                            "Days": {
711                                "text": "Days",
712                                "show": true,
713                                color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
714                            },
715                            "Hours": {
716                                "text": "Hours",
717                                "show": true,
718                                color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
719                            },
720                            "Minutes": {
721                                "text": "Minutes",
722                                "show": true,
723                                color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
724                            },
725                            "Seconds": {
726                                "text": "Seconds",
727                                "show": true,
728                                color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
729                            }
730                        };
731
732                    dateCountdownItem.TimeCircles({
733                        color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "rgba(247, 247, 247, 1)",
734                        animation: "smooth",
735                        bg_width: dateCountdownItem.attr("data-bg-width") ? dateCountdownItem.attr("data-bg-width") : 0.6,
736                        circle_bg_color: dateCountdownItem.attr("data-bg") ? dateCountdownItem.attr("data-bg") : "rgba(0, 0, 0, 1)",
737                        fg_width: dateCountdownItem.attr("data-width") ? dateCountdownItem.attr("data-width") : 0.03
738                    });
739
740                    (function (dateCountdownItem, time) {
741                        $window.on('load resize orientationchange', function () {
742                            if (window.innerWidth < 479) {
743                                dateCountdownItem.TimeCircles({
744                                    time: {
745                                        "Days": {
746                                            "text": "Days",
747                                            "show": true,
748                                            color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
749                                        },
750                                        "Hours": {
751                                            "text": "Hours",
752                                            "show": true,
753                                            color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
754                                        },
755                                        "Minutes": {
756                                            "text": "Minutes",
757                                            "show": true,
758                                            color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
759                                        },
760                                        Seconds: {
761                                            "text": "Seconds",
762                                            show: false,
763                                            color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
764                                        }
765                                    }
766                                }).rebuild();
767                            } else if (window.innerWidth < 767) {
768                                dateCountdownItem.TimeCircles({
769                                    time: {
770                                        "Days": {
771                                            "text": "Days",
772                                            "show": true,
773                                            color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
774                                        },
775                                        "Hours": {
776                                            "text": "Hours",
777                                            "show": true,
778                                            color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
779                                        },
780                                        "Minutes": {
781                                            "text": "Minutes",
782                                            "show": true,
783                                            color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
784                                        },
785                                        Seconds: {
786                                            text: '',
787                                            show: false,
788                                            color: dateCountdownItem.attr("data-color") ? dateCountdownItem.attr("data-color") : "#f9f9f9"
789                                        }
790                                    }
791                                }).rebuild();
792                            } else {
793                                dateCountdownItem.TimeCircles({time: time}).rebuild();
794                            }
795                        });
796                    })(dateCountdownItem, time);
797                });
798            }
799
800            // Circle Progress
801            if (plugins.circleProgress.length) {
802                plugins.circleProgress.once().each(function () {
803                    var circleProgressItem = $(this);
804
805                    $document.on("scroll", $.proxy(function (event) {
806                        var $this = $(this);
807
808                        if (!$this.hasClass('animated') && isScrolledIntoView($this)) {
809
810                            var arrayGradients = $this.attr('data-gradient').split(",");
811
812                            $this.circleProgress({
813                                value: $this.attr('data-value'),
814                                size: $this.attr('data-size') ? $this.attr('data-size') : 175,
815                                fill: {gradient: arrayGradients, gradientAngle: Math.PI / 4},
816                                startAngle: -Math.PI / 4 * 2,
817                                emptyFill: $this.attr('data-empty-fill') ? $this.attr('data-empty-fill') : "rgb(245,245,245)",
818                                thickness: $this.attr('data-thickness') ? parseInt($this.attr('data-thickness'), 10) : 10
819
820                            }).on('circle-animation-progress', function (event, progress, stepValue) {
821                                $(this).find('span').text(String(stepValue.toFixed(2)).replace('0.', '').replace('1.', '1'));
822                            });
823                            $this.addClass('animated');
824                            $document.off(event);
825                        }
826                    }, circleProgressItem))
827                        .trigger("scroll");
828                });
829            }
830
831            // Linear Progress bar
832            if (plugins.progressLinear.length) {
833                plugins.progressLinear.once().each(function () {
834                    var progressBar = $(this);
835
836                    $window.on("scroll load", $.proxy(function () {
837                        var $bar = $(this);
838
839                        if (!$bar.hasClass('animated-first') && isScrolledIntoView($bar)) {
840                            var end = parseInt($(this).find('.progress-value').text(), 10);
841                            $bar.find('.progress-bar-linear').css({width: end + '%'});
842                            $bar.find('.progress-value').countTo({
843                                refreshInterval: 40,
844                                from: 0,
845                                to: end,
846                                speed: 500
847                            });
848                            $bar.addClass('animated-first');
849                        }
850                    }, progressBar));
851                });
852            }
853
854            // Material Parallax
855            if (plugins.materialParallax.length) {
856                if (!isNoviBuilder && !isIE && !isMobile) {
857                    plugins.materialParallax.parallax();
858
859                    // heavy pages fix
860                    $window.on('load', function () {
861                        setTimeout(function () {
862                            $window.scroll();
863                        }, 500);
864                    });
865                } else {
866                    plugins.materialParallax.once().each(function () {
867                        var parallax = $(this),
868                            imgPath = parallax.data("parallax-img");
869
870                        var parallaxBg = document.createElement('div');
871                        parallaxBg.classList.add('material-parallax');
872                        parallax.prepend(parallaxBg);
873
874                        parallaxBg.style.backgroundImage = 'url(' + imgPath + ')';
875                        parallaxBg.style.backgroundSize = 'cover';
876                    });
877                }
878            }
879
880            // Select2
881            if (plugins.selectFilter.length) {
882                plugins.selectFilter.once().each(function () {
883                    var select = $(this);
884
885                    select.select2({
886                        placeholder: select.attr("data-placeholder") ? select.attr("data-placeholder") : false,
887                        minimumResultsForSearch: select.attr("data-minimum-results-search") ? select.attr("data-minimum-results-search") : 10,
888                        maximumSelectionSize: 3,
889                        dropdownCssClass: select.attr("data-dropdown-class") ? select.attr("data-dropdown-class") : ''
890                    });
891                });
892            }
893
894            // jQuery Countdown
895            if (plugins.countDown.length) {
896                plugins.countDown.once().each(function () {
897                    var $countDownItem = $(this),
898                        d = new Date(),
899                        type = $countDownItem.attr('data-type'),
900                        time = $countDownItem.attr('data-time'),
901                        format = $countDownItem.attr('data-format'),
902                        settings = [];
903
904                    d.setTime(Date.parse(time)).toLocaleString();
905                    settings[type] = d;
906                    settings['format'] = format;
907                    $countDownItem.countdown(settings);
908                });
909            }
910
911            // Winona buttons
912            if (plugins.buttonWinona.length && !isNoviBuilder && !isIE) {
913                initWinonaButtons(plugins.buttonWinona);
914            }
915
916            function initWinonaButtons(buttons) {
917                buttons.once().each(function () {
918                    var $button = $(this);
919                    var innerContent = $button.html();
920
921                    $button.html('');
922                    $button.append(
923                        '<div class="content-original">' + innerContent + '</div>'
924                        + '<div class="content-dubbed">' + innerContent + '</div>');
925                });
926            }
927
928            // Slick carousel
929            if (plugins.slick.length) {
930                plugins.slick.once().each(function () {
931                    var $slickItem = $(this);
932
933                    $slickItem.slick({
934                        slidesToScroll: parseInt($slickItem.attr('data-slide-to-scroll'), 10) || 1,
935                        asNavFor: $slickItem.attr('data-for') || false,
936                        dots: $slickItem.attr("data-dots") === "true",
937                        infinite: isNoviBuilder ? false : $slickItem.attr("data-loop") === "true",
938                        focusOnSelect: true,
939                        initialSlide: parseInt($slickItem.attr('data-initial-slide'), 10) || 0,
940                        speed: parseInt($slickItem.attr('data-speed'), 10) || 500,
941                        arrows: $slickItem.attr("data-arrows") === "true",
942                        swipe: $slickItem.attr("data-swipe") === "true",
943                        autoplay: $slickItem.attr("data-autoplay") === "true",
944                        autoplaySpeed: $slickItem.attr("data-autoplay-speed") ? parseInt($slickItem.attr("data-autoplay-speed")) : 3500,
945                        vertical: $slickItem.attr("data-vertical") === "true",
946                        centerMode: $slickItem.attr("data-center-mode") === "true",
947                        centerPadding: $slickItem.attr("data-center-padding") ? $slickItem.attr("data-center-padding") : '0.50',
948                        mobileFirst: true,
949                        responsive: [
950                            {
951                                breakpoint: 0,
952                                settings: {
953                                    slidesToShow: parseInt($slickItem.attr('data-items'), 10) || 1
954                                }
955                            },
956                            {
957                                breakpoint: 575,
958                                settings: {
959                                    slidesToShow: parseInt($slickItem.attr('data-sm-items'), 10) || 1
960                                }
961                            },
962                            {
963                                breakpoint: 767,
964                                settings: {
965                                    slidesToShow: parseInt($slickItem.attr('data-md-items'), 10) || 1
966                                }
967                            },
968                            {
969                                breakpoint: 991,
970                                settings: {
971                                    slidesToShow: parseInt($slickItem.attr('data-lg-items'), 10) || 1
972                                }
973                            },
974                            {
975                                breakpoint: 1199,
976                                settings: {
977                                    slidesToShow: parseInt($slickItem.attr('data-xl-items'), 10) || 1
978                                }
979                            }
980                        ]
981                    })
982                        .on('afterChange', function (event, slick, currentSlide) {
983                            var $this = $(this),
984                                childCarousel = $this.attr('data-child');
985
986                            if (childCarousel) {
987                                $(childCarousel + ' .slick-slide').removeClass('slick-current');
988                                $(childCarousel + ' .slick-slide').eq(currentSlide).addClass('slick-current');
989                            }
990                        });
991
992                    if (parseInt($slickItem.attr('data-initial-slide'), 10)) {
993                        var currentSlideIndex = parseInt($slickItem.attr('data-initial-slide'), 10),
994                            activeSlides = $slickItem.find('.slick-active');
995
996                        if (currentSlideIndex < activeSlides.length) {
997                            activeSlides[0].classList.remove('slick-current');
998                            activeSlides[currentSlideIndex].classList.add('slick-current');
999                        }
1000                    }
1001
1002                    if ($slickItem.attr('data-fraction')) {
1003                        (function () {
1004                            var fractionElement = document.querySelectorAll($slickItem.attr('data-fraction'))[0],
1005                                fractionCurrent = fractionElement.querySelectorAll('.slick-fraction-current')[0],
1006                                fractionAll = fractionElement.querySelectorAll('.slick-fraction-all')[0];
1007
1008                            $slickItem.on('afterChange', function (slick) {
1009                                fractionCurrent.innerText = leadingZero(this.slick.currentSlide + 1);
1010                                fractionAll.innerText = leadingZero(this.slick.slideCount);
1011                            });
1012
1013                            $slickItem.trigger('afterChange');
1014                        })();
1015                    }
1016                });
1017            }
1018
1019            function leadingZero(decimal) {
1020                return decimal < 10 && decimal > 0 ? '0' + decimal : decimal;
1021            }
1022
1023            // Button Load
1024            if (plugins.buttonLoad.length) {
1025                for (var i = 0; i < plugins.buttonLoad.length; i++) {
1026                    var $button = $(plugins.buttonLoad[i]);
1027                    (function ($button) {
1028                        $button.on('click', function () {
1029                            var affectedElements = $('[data-load-trigger = "#' + this.id + '"]');
1030                            $button.addClass('button-load-in-process');
1031
1032                            setTimeout(function () {
1033                                for (var j = 0; j < affectedElements.length; j++) {
1034                                    var $currentAffected = $(affectedElements[j]);
1035                                    $currentAffected.css({'display': 'block'});
1036                                    $currentAffected.slideDown('300', 'linear');
1037
1038                                    var isotopeParent = $currentAffected.parents('.isotope');
1039                                    if (isotopeParent.length) {
1040                                        isotopeParent[0].isotope.layout();
1041                                    }
1042                                }
1043
1044                                $button.removeClass('button-load-in-process');
1045                                $button.addClass('button-load-loaded');
1046                            }, 800);
1047                        });
1048                    })($button);
1049                }
1050            }
1051
1052            // Parallax JS
1053            if (plugins.parallaxJs.length && !isNoviBuilder) {
1054                for (var i = 0; i < plugins.parallaxJs.length; i++) {
1055                    var scene = plugins.parallaxJs[i];
1056                    new Parallax(scene);
1057                }
1058            }
1059
1060            // Navbar-related functions
1061            function updAnchOffset() {
1062                var
1063                    relatives = document.querySelectorAll(this.dParams.anchor.offsetRef),
1064                    dY = 0;
1065
1066                for (var j = 0; j < relatives.length; j++) {
1067                    dY -= relatives[j].offsetHeight;
1068                }
1069
1070                this.dParams.anchor.offset = dY * 1.05;
1071            }
1072
1073            function updStuckOffset() {
1074                this.dParams.stuck.offset = document.querySelector(this.dParams.stuck.offsetRef).getBoundingClientRect().height;
1075            }
1076
1077            function isInView(node) {
1078                var rect = node.getBoundingClientRect();
1079                return (
1080                    rect.top >= 0 &&
1081                    rect.left >= 0 &&
1082                    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
1083                    rect.right <= (window.innerWidth || document.documentElement.clientWidth)
1084                );
1085            }
1086
1087            // Navbar
1088            if (plugins.navbar.length && !isNoviBuilder) {
1089                plugins.navbar.once().each(function () {
1090                    var
1091                        navbar,
1092                        node = this,
1093                        options = JSON.parse(node.getAttribute('data-navbar'));
1094
1095                    if (options.anchor !== false) {
1096                        if (!options.anchor) options.anchor = {};
1097
1098                        options.anchor.clickCb = function () {
1099                            var
1100                                target = $(this.anchor),
1101                                top = target.offset().top,
1102                                offset = this.ref.dParams.anchor.offset;
1103
1104                            $('html, body').stop().animate({
1105                                scrollTop: top + offset + 1
1106                            }, 500, 'swing');
1107                        };
1108                    }
1109
1110                    navbar = new Navbar(node, options);
1111
1112                    if (options.stuck !== false && options.stuck && options.stuck.offsetRef) {
1113                        updStuckOffset.call(navbar);
1114                        window.addEventListener('scroll', updStuckOffset.bind(navbar));
1115                        window.addEventListener('resize', updStuckOffset.bind(navbar));
1116                    }
1117
1118                    if (options.anchor !== false && options.anchor && options.anchor.offsetRef) {
1119                        updAnchOffset.call(navbar);
1120                        window.addEventListener('scroll', updAnchOffset.bind(navbar));
1121                        window.addEventListener('resize', updAnchOffset.bind(navbar));
1122                    }
1123
1124                    node.addEventListener('anchorchange', function () {
1125                        if (this.currentAnchor && !isInView(this.currentAnchor)) {
1126                            var
1127                                nav = $(this.node).find('.navigation'),
1128                                offset = $(this.currentAnchor).parent().offset().left + nav.scrollLeft();
1129
1130                            nav.stop().animate({
1131                                scrollLeft: offset
1132                            }, 400, 'swing');
1133                        }
1134                    }.bind(navbar));
1135
1136                });
1137            }
1138        }
1139    }
1140})(jQuery, Drupal);

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.