PageSourceSearch

https://www.neuquencapital.gov.ar/wp-content/plugins/extensions-fo…/assets/js/frontend.min.js?ver=2.0.890

js neuquencapital.gov.ar collected 2026-10-02 12:52:45 UTC 162,903 bytes, 3,349 lines download raw bytes

1/* Cookies set inside object */
2var cookieHelper = {
3    /* Cookies */
4    create: function (name, value, days) {
5        if (days) {
6            var date = new Date();
7            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
8            var expires = "; expires=" + date.toGMTString();
9        }
10        else var expires = "";
11
12        document.cookie = name + "=" + value + expires + "; path=/";
13    },
14
15    read: function (name) {
16        var nameEQ = name + "=";
17        var ca = document.cookie.split(';');
18        for (var i = 0; i < ca.length; i++) {
19            var c = ca[i];
20            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
21            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
22        }
23        return null;
24    },
25
26    erase: function (name) {
27        //   createCookie(name, "", -1);
28        document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
29    }
30}
31
32
33jQuery(document).ready(function () {
34    jQuery('#cookie-law-info-again').click(function () {
35        jQuery('#mbr-myModal').css('display', 'block');
36        jQuery('#cookie-law-info-again').css('display', 'none');
37    });
38    jQuery('#ee_mb_cookie_close_btn').click(function () {
39        jQuery('#ee_mb_cookie_msg').slideUp();
40        /* Set cookie */
41        cookieHelper.create('accepted', true);
42        jQuery('#cookie-law-info-again').css('display', 'block');
43    });
44    jQuery('#ee_mb_cookie_accept').click(function () {
45        jQuery('#ee_mb_cookie_msg').slideUp();
46        cookieHelper.create('accepted', true);
47        jQuery('#cookie-law-info-again').css('display', 'block');
48    });
49
50    jQuery('#ee_mb_settings_button').click(function () {
51        jQuery('#mbr-myModal').css('display', 'block');
52        jQuery('#cookie-law-info-again').css('display', 'none');
53    });
54
55    jQuery('.mbr-myModal-close').click(function () {
56        jQuery('#mbr-myModal').css('display', 'none');
57        jQuery('#cookie-law-info-again').css('display', 'block');
58    });
59
60    jQuery('#ee_mb_cookie_accept_btn').click(function () {
61        jQuery('#ee_mb_cookie_msg').slideUp();
62        cookieHelper.create('accepted', true);
63        jQuery('#cookie-law-info-again').css('display', 'block');
64    });
65    jQuery('#ee_mb_cookie_denied_btn').click(function () {
66        jQuery('#ee_mb_cookie_msg').slideUp();
67        cookieHelper.create('accepted', false);
68        jQuery('#cookie-law-info-again').css('display', 'block');
69    });
70});
71
72if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery"); +function (t) { "use strict"; var e = t.fn.jquery.split(" ")[0].split("."); if (e[0] < 2 && e[1] < 9 || 1 == e[0] && 9 == e[1] && e[2] < 1 || e[0] > 3) throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4") }(jQuery), +function (t) { "use strict"; function e(e) { var n = e.attr("data-target"); n || (n = e.attr("href"), n = n && /#[A-Za-z]/.test(n) && n.replace(/.*(?=#[^\s]*$)/, "")); var a = "#" !== n ? t(document).find(n) : null; return a && a.length ? a : e.parent() } function n(n) { n && 3 === n.which || (t(i).remove(), t(o).each(function () { var a = t(this), i = e(a), o = { relatedTarget: this }; i.hasClass("open") && (n && "click" == n.type && /input|textarea/i.test(n.target.tagName) && t.contains(i[0], n.target) || (i.trigger(n = t.Event("hide.bs.dropdown", o)), n.isDefaultPrevented() || (a.attr("aria-expanded", "false"), i.removeClass("open").trigger(t.Event("hidden.bs.dropdown", o))))) })) } function a(e) { return this.each(function () { var n = t(this), a = n.data("bs.dropdown"); a || n.data("bs.dropdown", a = new s(this)), "string" == typeof e && a[e].call(n) }) } var i = ".dropdown-backdrop", o = '[data-toggle="dropdown"]', s = function (e) { t(e).on("click.bs.dropdown", this.toggle) }; s.VERSION = "3.4.1", s.prototype.toggle = function (a) { var i = t(this); if (!i.is(".disabled, :disabled")) { var o = e(i), s = o.hasClass("open"); if (n(), !s) { "ontouchstart" in document.documentElement && !o.closest(".
72navbar-nav").length && t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click", n); var r = { relatedTarget: this }; if (o.trigger(a = t.Event("show.bs.dropdown", r)), a.isDefaultPrevented()) return; i.trigger("focus").attr("aria-expanded", "true"), o.toggleClass("open").trigger(t.Event("shown.bs.dropdown", r)) } return !1 } }, s.prototype.keydown = function (n) { if (/(38|40|27|32)/.test(n.which) && !/input|textarea/i.test(n.target.tagName)) { var a = t(this); if (n.preventDefault(), n.stopPropagation(), !a.is(".disabled, :disabled")) { var i = e(a), s = i.hasClass("open"); if (!s && 27 != n.which || s && 27 == n.which) return 27 == n.which && i.find(o).trigger("focus"), a.trigger("click"); var r = " li:not(.disabled):visible a", l = i.find(".dropdown-menu" + r); if (l.length) { var d = l.index(n.target); 38 == n.which && d > 0 && d--, 40 == n.which && d < l.length - 1 && d++, ~d || (d = 0), l.eq(d).trigger("focus") } } } }; var r = t.fn.dropdown; t.fn.dropdown = a, t.fn.dropdown.Constructor = s, t.fn.dropdown.noConflict = function () { return t.fn.dropdown = r, this }, t(document).on("click.bs.dropdown.data-api", n).on("click.bs.dropdown.data-api", ".dropdown form", function (t) { t.stopPropagation() }).on("click.bs.dropdown.data-api", o, s.prototype.toggle).on("keydown.bs.dropdown.data-api", o, s.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", s.prototype.keydown) }(jQuery), +function (t) { "use strict"; function e(e) { var n, a = e.attr("data-target") || (n = e.attr("href")) && n.replace(/.*(?=#[^\s]+$)/, ""); return t(document).find(a) } function n(e) { return this.each(function () { var n = t(this), i = n.data("bs.collapse"), o = t.extend({}, a.DEFAULTS, n.data(), "object" == typeof e && e); !i && o.toggle && /show|hide/.test(e) && (o.toggle = !1), i || n.data("bs.collapse", i = new a(this, o)), "string" == typeof e && i[e]() }) } var a = function (e, n) { this.$element = t(e), this.options = t.extend({}, a.DEFAULTS, n), this.$trigger = t('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]'), this.transitioning = null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger), this.options.toggle && this.toggle() }; a.VERSION = "3.4.1", a.TRANSITION_DURATION = 350, a.DEFAULTS = { toggle: !0 }, a.prototype.dimension = function () { var t = this.$element.hasClass("width"); return t ? "width" : "height" }, a.prototype.show = function () { if (!this.transitioning && !this.$element.hasClass("in")) { var e, i = this.$parent && this.$parent.children(".panel").children(".in, .collapsing"); if (!(i && i.length && (e = i.data("bs.collapse"), e && e.transitioning))) { var o = t.Event("show.bs.collapse"); if (this.$element.trigger(o), !o.isDefaultPrevented()) { i && i.length && (n.call(i, "hide"), e || i.data("bs.collapse", null)); var s = this.dimension(); this.$element.removeClass("collapse").addClass("collapsing")[s](0).attr("aria-expanded", !0), this.$trigger.removeClass("collapsed").attr("aria-expanded", !0), this.transitioning = 1; var r = function () { this.$element.removeClass("collapsing").addClass("collapse in")[s](""), this.transitioning = 0, this.$element.trigger("shown.bs.collapse") }; if (!t.support.transition) return r.call(this); var l = t.camelCase(["scroll", s].join("-")); this.$element.one("bsTransitionEnd", t.proxy(r, this)).emulateTransitionEnd(a.TRANSITION_DURATION)[s](this.$element[0][l]) } } } }, a.prototype.hide = function () { if (!this.transitioning && this.$element.hasClass("in")) { var e = t.Event("hide.bs.collapse"); if (this.$element.trigger(e), !e.isDefaultPrevented()) { var n = this.dimension(); this.$element[n](this.$element[n]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1), this.$trigger.addClass("collapsed").attr("aria-expanded", !1), this.transitioning = 1; var i = function () { this.transitioning = 0, this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse") }; return t.support.transition ? void this.$element[n](0).one("bsTransitionEnd", t.proxy(i, this)).emulateTransitionEnd(a.TRANSITION_DURATION) : i.call(this) } } }, a.prototype.toggle = function () { this[this.$element.hasClass("in") ? "hide" : "show"]() }, a.prototype.getParent = function () { return t(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(t.proxy(function (n, a) { var i = t(a); this.addAriaAndCollapsedClass(e(i), i) }, this)).end() }, a.prototype.addAriaAndCollapsedClass = function (t, e) { var n = t.hasClass("in"); t.attr("aria-expanded", n), e.toggleClass("collapsed", !n).attr("aria-expanded", n) }; var i = t.fn.collapse; t.fn.collapse = n, t.fn.collapse.Constructor = a, t.fn.collapse.noConflict = function () { return t.fn.collapse = i, this }, t(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function (a) { var i = t(this); i.attr("data-target") || a.preventDefault(); var o = e(i), s = o.data("bs.collapse"), r = s ? "toggle" : i.data(); n.call(o, r) }) }(jQuery);
73jQuery(function () {
74    /* If cookie hasnt reveioly been accepted, show banner */
75    if (!cookieHelper.read('accepted')) {
76        jQuery('#ee_mb_cookie_msg').slideDown();
77    } else {
78        jQuery('#cookie-law-info-again').css('display', 'block');
79    }
80});
81
82
83(function ($) {
84
85    /*@ Common start */
86    var ee_common = {
87        getModelCID: function getModelCID() {
88            return ee_common.$element.data('model-cid');
89        },
90        getElementSettings: function ($element, setting) {
91
92            var elementSettings = {},
93                modelCID = $element.data('model-cid');
94
95            if (elementorFrontend.isEditMode() && modelCID) {
96                var settings = elementorFrontend.config.elements.data[modelCID],
97                    settingsKeys = elementorFrontend.config.elements.keys[settings.attributes.widgetType || settings.attributes.elType];
98                jQuery.each(settings.getActiveControls(), function (controlKey) {
99                    if (settingsKeys) {
100                        if (-1 !== settingsKeys.indexOf(controlKey)) {
101                            elementSettings[controlKey] = settings.attributes[controlKey];
102                        }
103                    }
104                });
105            } else {
106                elementSettings = $element.data('settings') || {};
107            }
108
109            return ee_common.getItems(elementSettings, setting);
110        },
111        getItems: function (items, itemKey) {
112            if (itemKey) {
113                var keyStack = itemKey.split('.'),
114                    currentKey = keyStack.splice(0, 1);
115
116                if (!keyStack.length) {
117                    return items[currentKey];
118                }
119
120                if (!items[currentKey]) {
121                    return;
122                }
123
124                return ee_common.getItems(items[currentKey], keyStack.join('.'));
125            }
126
127            return items;
128        },
129        showLoading: function (current) {
130            current.find('.elementor_extensions_loading_overlay').show();
131        },
132        hideLoading: function (current) {
133            current.find('.elementor_extensions_loading_overlay').hide();
134        },
135        equalheight: function (t) {
136            var e, i = 0,
137                r = 0,
138                h = new Array;
139            jQuery(t).each(function () {
140                if (e = jQuery(this), jQuery(e).height("auto"), topPostion = e.position().top, r != topPostion) {
141                    for (currentDiv = 0; currentDiv < h.length; currentDiv++) h[currentDiv].height(i);
142                    h.length = 0, r = topPostion, i = e.height(), h.push(e)
143                } else h.push(e), i = i < e.height() ? e.height() : i;
144                for (currentDiv = 0; currentDiv < h.length; currentDiv++) h[currentDiv].height(i)
145            })
146        },
147        findObjectByKey: function (array, key, value) {
148            for (var i = 0; i < array.length; i++) {
149                if (array[i][key] === value) {
150                    return array[i];
151                }
152            }
153            return null;
154        },
155        debounce: function (threshold, callback) {
156            var timeout;
157
158            return function debounced($event) {
159                function delayed() {
160                    callback.call(this, $event);
161                    timeout = null;
162                }
163
164                if (timeout) {
165                    clearTimeout(timeout);
166                }
167
168                timeout = setTimeout(delayed, threshold);
169            };
170        },
171        getObjectNextKey: function (object, key) {
172            var keys = Object.keys(object),
173                idIndex = keys.indexOf(key),
174                nextIndex = idIndex += 1;
175
176            if (nextIndex >= keys.length) {
177                return false;
178            }
179
180            var nextKey = keys[nextIndex];
181
182            return nextKey;
183        },
184        getObjectPrevKey: function (object, key) {
185            var keys = Object.keys(object),
186                idIndex = keys.indexOf(key),
187                prevIndex = idIndex -= 1;
188
189            if (0 > idIndex) {
190                return false;
191            }
192
193            var prevKey = keys[prevIndex];
194
195            return prevKey;
196        },
197        getObjectFirstKey: function (object) {
198            return Object.keys(object)[0];
199        },
200        getObjectLastKey: function (object) {
201            return Object.keys(object)[Object.keys(object).length - 1];
202        },
203        renderMap: function (data_address) {
204            // Get the user defined values
205            var address = data_address;
206            var radius = 2 * 1000;
207
208            // get the selected type
209            selectedTypes = ['school'];
210
211            var geocoder = new google.maps.Geocoder();
212            var selLocLat = 0;
213            var selLocLng = 0;
214
215            geocoder.geocode({
216                'address': address
217            }, function (results, status) {
218
219                if (status === 'OK') {
220
221                    selLocLat = results[0].geometry.location.lat();
222                    selLocLng = results[0].geometry.location.lng();
223
224                    var pyrmont = new google.maps.LatLng(selLocLat, selLocLng);
225
226                    map = new google.maps.Map(document.getElementById('ee-mb-map'), {
227                        center: pyrmont,
228                        zoom: 14
229                    });
230
231                    var request = {
232                        location: pyrmont,
233                        radius: radius,
234                        types: selectedTypes
235                    };
236
237                    infowindow = new google.maps.InfoWindow();
238
239                    var service = new google.maps.places.PlacesService(map);
240                    service.nearbySearch(request, ee_common.mapCallback);
241                } else {
242                    alert('Geocode was not successful for the following reason: ' + status);
243                }
244            });
245        },
246        mapCallback: function (results, status) {
247
248            if (status == google.maps.places.PlacesServiceStatus.OK) {
249                for (var i = 0; i < results.length; i++) {
250                    ee_common.createMarker(results[i], results[i].icon);
251                }
252            }
253        },
254        createMarker: function (place, icon) {
255            var placeLoc = place.geometry.location;
256
257            var marker = new google.maps.Marker({
258                map: map,
259                position: place.geometry.location,
260                icon: {
261                    url: icon,
262                    scaledSize: new google.maps.Size(40, 40) // pixels
263                },
264                animation: google.maps.Animation.DROP
265            });
266
267            google.maps.event.addListener(marker, 'click', function () {
268                infowindow.setContent(place.name + '<br>' + place.vicinity);
269                infowindow.open(map, this);
270            });
271        }
272    }
273
274    /*@ Inline Attribute Equal Height */
275    var matchHeight = function () {
276        function init() {
277            eventListeners();
278            matchHeight();
279        }
280
281        function eventListeners() {
282            $(window).on('resize', function () {
283                matchHeight();
284            });
285        }
286
287        function matchHeight() {
288            var groupName = $('[data-match-height]');
289            var groupHeights = [];
290
291            groupName.css('min-height', 'auto');
292
293            groupName.each(function () {
294                groupHeights.push($(this).outerHeight());
295            });
296
297            var maxHeight = Math.max.apply(null, groupHeights);
298            groupName.css('min-height', maxHeight);
299        };
300
301        return {
302            init: init
303        };
304    }();
305
306    $(document).ready(function () {
307        matchHeight.init();
308    });
309
310    /*@ A to Z Listing */
311    var ee_atoz = {
312
313        atoz_fun: function ($scope, $) {
314
315            ee_atoz.atoz_fun.elementSettings = ee_common.getElementSettings($scope);
316
317            var $listing_wrapper = $scope.find('.az-listing-container');
318
319            ee_atoz.atoz_fun.init = function () {
320                $listing_wrapper.find('.categories a').on('click', function () {
321                    ee_common.showLoading($scope);
322                    $listing_wrapper.find('.categories li').removeClass('active');
323                    jQuery(this).parent('li').toggleClass('active');
324
325                    var cat_data = jQuery(this).data('setting');
326                    var widget_settings = $scope.data('settings');
327                    jQuery.ajax({
328                        url: ElementorExtensionsFrontendConfig.ajaxurl,
329                        type: 'POST',
330                        data: {
331                            'action': 'getPostsByCategory',
332                            'cat_data': cat_data,
333                            'widget_settings': widget_settings
334                        },
335                        success: function (data) {
336                            jQuery('#listings').html(data);
337                            ee_common.hideLoading($scope);
338                        }
339                    });
340                });
341
342                /*@ Smooth scrolling on click */
343
344                $scope.find("ul.alphabets a").click(function (e) {
345                    e.preventDefault();
346                    var hash_id = jQuery(this).attr('href');
347                    if (jQuery(hash_id).length) {
348                        jQuery('html, body').animate({
349                            scrollTop: jQuery(hash_id).offset().top
350                        }, 500);
351                    }
352                });
353
354                if (window.location.hash) {
355                    jQuery(window.location.hash).trigger('click');
356                }
357            };
358
359            ee_atoz.atoz_fun.init();
360        }
361    }
362
363    $(window).on('elementor/frontend/init', function () {
364        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-atoz-listing.default', ee_atoz.atoz_fun);
365    });
366
367    /*@ Anchor Scroll */
368    var ee_anchor = {
369
370        anchor_scroll_fun: function ($scope, $) {
371
372            ee_anchor.anchor_scroll_fun.elementSettings = ee_common.getElementSettings($scope);
373
374            var $anchor_scroll = $scope.find('.anchor-scroll');
375
376            ee_anchor.anchor_scroll_fun.init = function () {
377
378                $anchor_scroll.anchorScroll({
379                    scrollSpeed: 800,
380                    offsetTop: 0,
381                    scrollStart: function () {
382                        $anchor_scroll.find(".fill-bg").fadeIn("slow");
383                        $anchor_scroll.find(".popup").text("Scrolling...");
384                    },
385                    scrollEnd: function () {
386                        $anchor_scroll.find(".fill-bg").delay(1000).fadeOut("slow");
387                        $anchor_scroll.find(".popup").text("Done!");
388                    }
389                });
390
391            };
392
393            ee_anchor.anchor_scroll_fun.init();
394        }
395    }
396
397    $(window).on('elementor/frontend/init', function () {
398        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-anchor-scroll.default', ee_anchor.anchor_scroll_fun);
399    });
400
401    /*@ Document Library */
402    var ee_document_library = {
403
404        document_library_fun: function ($scope, $) {
405
406            var ee_dl_settings = ee_common.getElementSettings($scope),
407                $document_library = $scope.find('.document_library_wrapper '),
408                is_sortable = ee_dl_settings.is_header_sortable,
409                dl_tbl = $document_library.find('> table'),
410                order_filename_asc = ee_dl_settings.order_filename_asc;
411
412            ee_document_library.document_library_fun.init = function () {
413                if (is_sortable === 'yes') {
414
415                    var sort_list = (order_filename_asc === 'yes') ? [[0, 0]] : '';
416                    dl_tbl.tablesorter({
417                        sortList: sort_list
418                    });
419                }
420            };
421            ee_document_library.document_library_fun.init();
422        }
423    }
424
425    $(window).on('elementor/frontend/init', function () {
426        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-document-library.default', ee_document_library.document_library_fun);
427    });
428
429    /*@ Flipbox */
430    var ee_mb_flipbox_with_slider = {
431        onInit: function ($scope, $) {
432
433            var carousel_elem = $scope.find('.elementor-slides').eq(0);
434            if (carousel_elem.length > 0) {
435
436                var elementSettings = ee_common.getElementSettings($scope);
437                if (elementSettings) {
438                    var slickOptions = {
439                        slidesToShow: 1,
440                        slidesToScroll: 1,
441                        autoplay: 'yes' === elementSettings.autoplay,
442                        autoplaySpeed: elementSettings.autoplay_speed,
443                        infinite: 'yes' === elementSettings.infinite,
444                        pauseOnHover: 'yes' === elementSettings.pause_on_hover,
445                        speed: elementSettings.speed,
446                        arrows: -1 !== ['arrows', 'both'].indexOf(elementSettings.navigation),
447                        dots: -1 !== ['dots', 'both'].indexOf(elementSettings.navigation),
448                        rtl: 'rtl' === elementSettings.direction,
449                        fade: 'fade' === elementSettings.transition,
450                    };
451
452                }
453                carousel_elem.slick(slickOptions);
454
455                var slideContent = '.elementor-slide-content',
456                    animation = elementSettings.content_animation,
457                    animated = 'animated';
458
459                carousel_elem.on({
460                    beforeChange: function beforeChange() {
461                        var $sliderContent = carousel_elem.find(slideContent);
462                        $sliderContent.removeClass(animated + ' ' + animation).hide();
463                    },
464                    afterChange: function afterChange(event, slick, currentSlide) {
465                        var $currentSlide = jQuery(slick.$slides.get(currentSlide)).find(slideContent);
466                        $currentSlide.show().addClass(animated + ' ' + animation);
467                    }
468                });
469
470                /*@ On click of icon box flip the box */
471                var frontbox = $scope.find('.ee_mb_flipbox_container .ee_mb_flipbox_front'),
472                    back_slider = $scope.find('.ee_mb_flipbox_container .elementor-slides-wrapper'),
473                    flip_container = $scope.find('.ee_mb_flipbox_container');
474
475                $scope.find('.ee_mb_flipbox_container .ee_mb_flipbox_front ul li').on('click', function () {
476                    /*@ Activate slider as per the frontbox icon index */
477                    var li_index = $(this).index();
478                    carousel_elem.slick('slickGoTo', li_index, true);
479
480                    /*@ Assign slider height to container */
481                    var slider_height = back_slider.height();
482                    flip_container.height(slider_height);
483
484                    /*@ Flip the frontbox to back-side */
485                    frontbox.css({
486                        '-webkit-transform': 'rotateX(-180deg)',
487                        '-moz-transform': 'rotateX(-180deg)',
488                        '-ms-transform': 'rotateX(-180deg)',
489                        '-o-transform': 'rotateX(-180deg)',
490                        'transform': 'rotateX(-180deg)'
491                    });
492
493                    /*@ Flip the slider to front-side */
494                    back_slider.css({
495                        '-webkit-transform': 'rotateX(0deg)',
496                        '-moz-transform': 'rotateX(0deg)',
497                        '-ms-transform': 'rotateX(0deg)',
498                        '-o-transform': 'rotateX(0deg)',
499                        'transform': 'rotateX(0deg)',
500                        'overflow': 'visible'
501                    });
502
503                    /*@ Add remove active class for maintaining active height to container on resize window */
504                    frontbox.removeClass('active');
505                    back_slider.addClass('active');
506                });
507
508                $scope.find('.ee_mb_flipbox_container .ee_mb_flip_back').on('click', function () {
509
510                    /*@ Assign front height to container */
511                    flip_container.attr('style', '');
512                    var front_height = frontbox.height();
513                    flip_container.height(front_height);
514
515                    /*@ Flip frontbox to front-side */
516                    frontbox.css({
517                        '-webkit-transform': 'rotateX(0deg)',
518                        '-moz-transform': 'rotateX(0deg)',
519                        '-ms-transform': 'rotateX(0deg)',
520                        '-o-transform': 'rotateX(0deg)',
521                        'transform': 'rotateX(0deg)'
522                    });
523
524                    /*@ Flip the slider to back-side */
525                    back_slider.css({
526                        '-webkit-transform': 'rotateX(180deg)',
527                        '-moz-transform': 'rotateX(180deg)',
528                        '-ms-transform': 'rotateX(180deg)',
529                        '-o-transform': 'rotateX(180deg)',
530                        'transform': 'rotateX(180deg)',
531                        'overflow': 'hidden'
532                    });
533
534                    /*@ Add remove active class for maintaining active height to container on resize window */
535                    frontbox.addClass('active');
536                    back_slider.removeClass('active');
537                });
538
539                /*@ On resize assign height of active front or back to the flip container */
540                jQuery(window).resize(function () {
541
542                    flip_container.attr('style', '');
543                    if (frontbox.hasClass('active')) {
544                        var front_height = frontbox.height();
545                        flip_container.height(front_height);
546                    } else {
547                        var slider_height = back_slider.height();
548                        flip_container.height(slider_height);
549                    }
550                });
551
552            }
553        }
554    };
555
556    $(window).on('elementor/frontend/init', function () {
557        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-flipbox.default', ee_mb_flipbox_with_slider.onInit);
558    });
559
560    /*@ Imagebox Repeater */
561    var ee_mb_imagebox_repeater = {
562
563        onInit: function ($scope, $) {
564
565            var carousel_elem = $scope.find('.elementor-image-carousel').eq(0);
566
567            if (carousel_elem.length > 0) {
568
569                var elementSettings = ee_common.getElementSettings($scope);
570
571                if (elementSettings) {
572                    var slidesToShow = +elementSettings.slides_to_show || 3,
573                        isSingleSlide = 1 === slidesToShow,
574                        defaultLGDevicesSlidesCount = isSingleSlide ? 1 : 2,
575                        breakpoints = elementorFrontend.config.breakpoints;
576
577                    var slickOptions = {
578                        slidesToShow: slidesToShow,
579                        autoplay: 'yes' === elementSettings.autoplay,
580                        autoplaySpeed: elementSettings.autoplay_speed,
581                        infinite: 'yes' === elementSettings.infinite,
582                        pauseOnHover: 'yes' === elementSettings.pause_on_hover,
583                        speed: elementSettings.speed,
584                        arrows: -1 !== ['arrows', 'both'].indexOf(elementSettings.navigation),
585                        dots: -1 !== ['dots', 'both'].indexOf(elementSettings.navigation),
586                        rtl: 'rtl' === elementSettings.direction,
587                        responsive: [{
588                            breakpoint: breakpoints.lg,
589                            settings: {
590                                slidesToShow: +elementSettings.slides_to_show_tablet || defaultLGDevicesSlidesCount,
591                                slidesToScroll: +elementSettings.slides_to_scroll_tablet || defaultLGDevicesSlidesCount
592                            }
593                        }, {
594                            breakpoint: breakpoints.md,
595                            settings: {
596                                slidesToShow: +elementSettings.slides_to_show_mobile || 1,
597                                slidesToScroll: +elementSettings.slides_to_scroll_mobile || 1
598                            }
599                        }]
600                    };
601
602                    if (isSingleSlide) {
603                        slickOptions.fade = 'fade' === elementSettings.effect;
604                    } else {
605                        slickOptions.slidesToScroll = +elementSettings.slides_to_scroll || defaultLGDevicesSlidesCount;
606                    }
607                }
608                carousel_elem.slick(slickOptions);
609            }
610        }
611    };
612
613    $(window).on('elementor/frontend/init', function () {
614        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-imagebox-repeater.default', ee_mb_imagebox_repeater.onInit);
615    });
616
617    /*@ Multipoint map */
618    var ee_mb_google_map = {
619
620        EeMbGoogleMap: function ($scope, $) {
621
622            ee_mb_google_map.EeMbGoogleMap.elementSettings = ee_common.getElementSettings($scope);
623
624            var $map = $scope.find('.ee-mb-google-map');
625
626            if (!$map.length) return;
627
628            var $pins = $map.find('.ee-mb-google-map__pin'),
629                $navigation = $scope.find('.ee-mb-google-map__navigation'),
630                settings = ee_mb_google_map.EeMbGoogleMap.elementSettings,
631                gmapArgs = {
632                    center: [48.8583736, 2.2922873],
633
634                    mapTypeId: google.maps.MapTypeId[settings.map_type],
635                    scrollwheel: 'yes' === settings.scrollwheel,
636                    clickableIcons: 'yes' === settings.clickable_icons,
637                    disableDoubleClickZoom: 'yes' !== settings.doubleclick_zoom,
638                    keyboardShortcuts: 'yes' === settings.keyboard_shortcuts,
639                    draggable: (!elementorFrontend.isEditMode() && 'yes' === settings.draggable),
640
641                    fullscreenControl: 'yes' === settings.fullscreen_control,
642                    mapTypeControl: 'yes' === settings.map_type_control,
643                    rotateControl: 'yes' === settings.rotate_control,
644                    scaleControl: 'yes' === settings.scale_control,
645                    streetViewControl: 'yes' === settings.streetview_control,
646                    zoomControl: 'yes' === settings.zoom_control,
647                },
648                polygonArgs = {
649                    default: {
650                        strokeColor: (settings.polygon_stroke_color) ? settings.polygon_stroke_color : '#FF0000',
651                        strokeWeight: (settings.polygon_stroke_weight) ? settings.polygon_stroke_weight.size : 2,
652                        strokeOpacity: (settings.polygon_stroke_opacity) ? settings.polygon_stroke_opacity.size : 0.8,
653                        fillColor: (settings.polygon_fill_color) ? settings.polygon_fill_color : '#FF0000',
654                        fillOpacity: (settings.polygon_fill_opacity) ? settings.polygon_fill_opacity.size : 0.35,
655                    },
656                    hover: {
657                        strokeColor: (settings.polygon_stroke_color_hover) ? settings.polygon_stroke_color_hover : '#FF0000',
658                        strokeWeight: (settings.polygon_stroke_weight_hover) ? settings.polygon_stroke_weight_hover.size : 2,
659                        strokeOpacity: (settings.polygon_stroke_opacity_hover) ? settings.polygon_stroke_opacity_hover.size : 0.8,
660                        fillColor: (settings.polygon_fill_color_hover) ? settings.polygon_fill_color_hover : '#FF0000',
661                        fillOpacity: (settings.polygon_fill_opacity_hover) ? settings.polygon_fill_opacity_hover.size : 0.35,
662                    }
663                },
664                markers = [],
665                paths = [],
666                instance = null;
667
668            ee_mb_google_map.EeMbGoogleMap.init = function () {
669
670                var mapStyle = settings.map_style_json;
671
672                if ('api' === settings.map_style_type && settings.map_style_api) {
673                    var jsonParse = JSON.parse(settings.map_style_api);
674
675                    if (jsonParse) {
676                        mapStyle = JSON.parse(settings.map_style_api).json;
677                    }
678                }
679
680                var map_color = $map.data('map-color');
681
682                if (map_color == '00' && undefined !== map_color) {
683                    gmapArgs.styles = [
684                        { elementType: 'geometry', stylers: [{ color: settings.map_geometry }] },
685                        { elementType: 'labels.text.stroke', stylers: [{ color: settings.label_text_stroke }] },
686                        { elementType: 'labels.text.fill', stylers: [{ color: settings.label_text_fill }] },
687                        {
688                            featureType: 'administrative.locality',
689                            elementType: 'labels.text.fill',
690                            stylers: [{ color: settings.administrative_locality }]
691                        },
692                        {
693                            featureType: 'poi',
694                            elementType: 'geometry',
695                            stylers: [{ color: settings.map_poi_color }]
696                        },
697                        {
698                            featureType: 'poi',
699                            elementType: 'labels.text.fill',
700                            stylers: [{ color: settings.map_poi_fill }]
701                        },
702                        {
703                            featureType: 'poi.park',
704                            elementType: 'geometry.fill',
705                            stylers: [{ color: settings.map_park_color }]
706                        },
707                        {
708                            featureType: 'poi.park',
709                            elementType: 'labels.text.fill',
710                            stylers: [{ color: settings.map_park_fill }]
711                        },
712                        {
713                            featureType: 'water',
714                            elementType: 'geometry',
715                            stylers: [{ color: settings.water_color }]
716                        },
717                        {
718                            featureType: 'water',
719                            elementType: 'labels.text.fill',
720                            stylers: [{ color: settings.water_text_fill }]
721                        },
722                        {
723                            featureType: 'water',
724                            elementType: 'labels.text.stroke',
725                            stylers: [{ color: settings.water_text_stroke }]
726                        },
727                        {
728                            featureType: 'road',
729                            elementType: 'geometry',
730                            stylers: [{ color: settings.road_color }]
731                        },
732                        {
733                            featureType: 'road',
734                            elementType: 'geometry.stroke',
735                            stylers: [{ color: settings.road_stroke }]
736                        },
737                        {
738                            featureType: 'road.highway',
739                            elementType: 'geometry',
740                            stylers: [{ color: settings.highway_color }]
741                        },
742                        {
743                            featureType: 'road.highway',
744                            elementType: 'geometry.stroke',
745                            stylers: [{ color: settings.highway_stroke }]
746                        },
747                        {
748                            featureType: 'road.highway',
749                            elementType: 'labels.text.fill',
750                            stylers: [{ color: settings.highway_text_fill }]
751                        },
752                        {
753                            featureType: 'transit',
754                            elementType: 'geometry',
755                            stylers: [{ color: settings.transit }]
756                        },
757                        {
758                            featureType: 'transit.station',
759                            elementType: 'labels.text.fill',
760                            stylers: [{ color: settings.transit_text_fill }]
761                        },
762                    ];
763                }
764
765                if ('' !== $.trim(mapStyle) && undefined !== mapStyle) {
766                    gmapArgs.styles = ee_mb_google_map.EeMbGoogleMap.parseStyles(mapStyle);
767                }
768
769                if ('yes' !== settings.fit) {
770                    if ('undefined' !== typeof settings.zoom) {
771                        gmapArgs.zoom = settings.zoom.size;
772                    }
773
774                    if ($map.data('lat') && $map.data('lng')) {
775                        gmapArgs.center = [$map.data('lat'), $map.data('lng')];
776                    }
777                }
778
779                instance = $map.gmap3(gmapArgs);
780
781                ee_mb_google_map.EeMbGoogleMap.addPins();
782
783                if ('yes' === settings.popups)
784                    ee_mb_google_map.EeMbGoogleMap.addInfoWindows();
785
786                if ('yes' === settings.route && $pins.length > 1)
787                    ee_mb_google_map.EeMbGoogleMap.addRoute();
788
789                if ('yes' === settings.polygon)
790                    ee_mb_google_map.EeMbGoogleMap.addPolygon();
791
792                if ('yes' === settings.navigation)
793                    ee_mb_google_map.EeMbGoogleMap.navigation();
794
795                /* Init events */
796                ee_mb_google_map.EeMbGoogleMap.events();
797
798                /* Center to fit or custom */
799                ee_mb_google_map.EeMbGoogleMap.center();
800            };
801
802            ee_mb_google_map.EeMbGoogleMap.events = function () {
803                $map._resize(ee_mb_google_map.EeMbGoogleMap.onResize);
804            };
805
806            ee_mb_google_map.EeMbGoogleMap.onResize = function () {
807                ee_mb_google_map.EeMbGoogleMap.center();
808            };
809
810            ee_mb_google_map.EeMbGoogleMap.center = function () {
811                if ('yes' === settings.fit) {
812                    instance.wait(2000).fit();
813                } else {
814                    instance.get(0).setCenter(new google.maps.LatLng(gmapArgs.center[0], gmapArgs.center[1]));
815                }
816            };
817
818            ee_mb_google_map.EeMbGoogleMap.parseStyles = function (style) {
819
820                try {
821                    var json = JSON.parse(style);
822
823                    if (json && typeof json === "object") { return json; }
824                }
825                catch (e) {
826                    alert('Invalid JSON');
827                }
828
829                return false;
830            };
831
832            ee_mb_google_map.EeMbGoogleMap.addPolygon = function () {
833
834                if ($pins.length <= 1)
835                    return;
836
837                instance
838                    .polygon({
839                        strokeColor: polygonArgs.default.strokeColor,
840                        strokeWeight: polygonArgs.default.strokeWeight,
841                        strokeOpacity: polygonArgs.default.strokeOpacity,
842                        fillColor: polygonArgs.default.fillColor,
843                        fillOpacity: polygonArgs.default.fillOpacity,
844                        paths: paths,
845                    })
846                    .on({
847                        mouseover: function (polygon, event) {
848                            polygon.setOptions({
849                                strokeColor: polygonArgs.hover.strokeColor,
850                                strokeWeight: polygonArgs.hover.strokeWeight,
851                                strokeOpacity: polygonArgs.hover.strokeOpacity,
852                                fillColor: polygonArgs.hover.fillColor,
853                                fillOpacity: polygonArgs.hover.fillOpacity,
854                            });
855                        },
856                        mouseout: function (polygon, event) {
857                            polygon.setOptions({
858                                strokeColor: polygonArgs.default.strokeColor,
859                                strokeWeight: polygonArgs.default.strokeWeight,
860                                strokeOpacity: polygonArgs.default.strokeOpacity,
861                                fillColor: polygonArgs.default.fillColor,
862                                fillOpacity: polygonArgs.default.fillOpacity,
863                            });
864                        }
865                    });
866            };
867
868            ee_mb_google_map.EeMbGoogleMap.addPins = function () {
869                if (!$pins.length)
870                    return;
871
872                $pins.each(function () {
873                    var marker = {},
874                        pin = {
875                            id: $(this).data('id'),
876                            input: $(this).data('input'),
877                            lat: $(this).data('lat'),
878                            lng: $(this).data('lng'),
879                            trigger: $(this).data('trigger'),
880                            icon: $(this).data('icon'),
881                            label: $(this).data('label'),
882                            label_color: $(this).data('label-color'),
883                            content: $(this).html(),
884                        };
885
886                    if (!pin.lat || !pin.lng) {
887                        return;
888                    }
889
890                    marker.id = pin.id;
891                    marker.trigger = pin.trigger;
892                    marker.position = [pin.lat, pin.lng];
893
894                    paths.push(marker.position);
895
896                    if (pin.icon) {
897                        var iconSize = (settings.pin_size) ? settings.pin_size.size : 50,
898                            iconPosition = ee_mb_google_map.EeMbGoogleMap.getIconPosition(iconSize);
899
900                        marker.icon = {
901                            url: pin.icon,
902                            scaledSize: new google.maps.Size(iconSize, iconSize),
903                            origin: new google.maps.Point(0, 0),
904                            anchor: new google.maps.Point(iconPosition[0], iconPosition[1]),
905                        };
906
907                        if (pin.label) {
908                            marker.icon.labelOrigin = new google.maps.Point(iconPosition[0], (iconPosition[1] + 10));
909                        }
910
911                    } else {
912
913                        if (pin.label) {
914
915                            marker.icon = {
916                                url: "http://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi2.png",
917                                labelOrigin: new google.maps.Point(15, 55),
918                                size: new google.maps.Size(30, 45),
919                                anchor: new google.maps.Point(16, 32)
920                            };
921                        }
922                    }
923
924                    if (pin.label) {
925
926                        var markerLabel = pin.label;
927                        var maplabelcolor = (pin.label_color) ? pin.label_color : '#FF0000';
928
929                        marker.label = {
930                            text: markerLabel,
931                            color: maplabelcolor,
932                            fontSize: "20px",
933                            fontWeight: "bold"
934                        };
935                    }
936
937
938                    if (pin.content && settings.popups)
939                        marker.content = pin.content;
940
941                    markers.push(marker);
942                });
943
944                instance.marker(markers);
945            };
946
947            ee_mb_google_map.EeMbGoogleMap.getIconPosition = function (size) {
948                var horiz = 25,
949                    vert = 50;
950
951                switch (settings.pin_position_horizontal) {
952                    case 'left':
953                        horiz = size;
954                        break;
955                    case 'center':
956                        horiz = size / 2;
957                        break;
958                    case 'right':
959                        horiz = 0;
960                        break;
961                    default:
962                        horiz = size / 2;
963                }
964
965                switch (settings.pin_position_vertical) {
966                    case 'top':
967                        vert = size;
968                        break;
969                    case 'middle':
970                        vert = size / 2;
971                        break;
972                    case 'bottom':
973                        vert = 0;
974                        break;
975                    default:
976                        vert = size;
977                }
978
979                return [horiz, vert];
980            };
981
982            ee_mb_google_map.EeMbGoogleMap.addInfoWindows = function () {
983                if (!$pins.length)
984                    return;
985
986                instance
987                    .infowindow(markers)
988                    .then(function (infowindow) {
989
990                        var map = this.get(0),
991                            marker = this.get(1);
992
993                        marker.forEach(function (pin, index) {
994
995                            if ('auto' === pin.trigger) {
996                                infowindow[index].open(map, pin);
997
998                                pin.addListener('click', function () {
999                                    infowindow[index].open(map, pin);
1000                                });
1001                            } else if ('mouseover' === pin.trigger) {
1002                                pin.addListener('mouseover', function () {
1003                                    infowindow[index].open(map, pin);
1004                                });
1005                                pin.addListener('mouseout', function () {
1006                                    infowindow[index].close(map, pin);
1007                                });
1008                            } else if ('click' === pin.trigger) {
1009                                pin.addListener('click', function () {
1010                                    infowindow[index].open(map, pin);
1011                                });
1012                            }
1013                        })
1014                    });
1015            };
1016
1017            ee_mb_google_map.EeMbGoogleMap.addRoute = function () {
1018
1019                if ($pins.length <= 1)
1020                    return;
1021
1022                var points = markers.slice(),
1023                    origin = ee_mb_google_map.EeMbGoogleMap.getMarkerDataForRoutes(markers[0]),
1024                    destination = ee_mb_google_map.EeMbGoogleMap.getMarkerDataForRoutes(markers[markers.length - 1]),
1025                    waypoints = (markers.length >= 3) ? ee_mb_google_map.EeMbGoogleMap.getWaypoints(points) : null;
1026
1027                instance
1028                    .route({
1029                        origin: origin,
1030                        destination: destination,
1031                        waypoints: waypoints,
1032                        travelMode: google.maps.DirectionsTravelMode.DRIVING
1033                    })
1034                    .directionsrenderer(function (results) {
1035                        if (results) {
1036                            return {
1037                                suppressMarkers: 'yes' !== settings.route_markers,
1038                                directions: results,
1039                            }
1040                        }
1041                    });
1042            };
1043
1044            ee_mb_google_map.EeMbGoogleMap.getWaypoints = function (points) {
1045                var waypoints = [];
1046
1047                /* Remove first and last markers */
1048                points.shift();
1049                points.pop();
1050
1051                points.forEach(function (point, index) {
1052                    waypoints.push({
1053                        location: ee_mb_google_map.EeMbGoogleMap.getMarkerDataForRoutes(point),
1054                        stopover: true,
1055                    });
1056                });
1057
1058                return waypoints;
1059            };
1060
1061            ee_mb_google_map.EeMbGoogleMap.getMarkerDataForRoutes = function (marker) {
1062                return new google.maps.LatLng(marker.position[0], marker.position[1]);
1063            };
1064
1065            ee_mb_google_map.EeMbGoogleMap.navigation = function () {
1066                var $items = $navigation.find('.ee-mb-google-map__navigation__item'),
1067                    $all = $items.filter('.ee-mb-google-map__navigation__item--all');
1068
1069                $all.addClass('ee--is-active');
1070
1071                $items.on('click', function (e) {
1072                    e.preventDefault();
1073                    e.stopPropagation();
1074
1075                    $items.removeClass('ee--is-active');
1076                    $(this).addClass('ee--is-active');
1077
1078                    var marker = ee_common.findObjectByKey(markers, 'id', $(this).data('id'));
1079
1080                    if (marker) {
1081                        instance.get(0).setCenter(new google.maps.LatLng(marker.position[0], marker.position[1]));
1082                        instance.get(0).setZoom(18);
1083                    } else {
1084                        instance.fit();
1085                    }
1086                });
1087            };
1088
1089            ee_mb_google_map.EeMbGoogleMap.init();
1090        },
1091    };
1092
1093    $(window).on('elementor/frontend/init', function () {
1094        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-google-map.default', ee_mb_google_map.EeMbGoogleMap);
1095    });
1096
1097    /*@ Navigation Menu */
1098    var ee_nav_menu = {
1099
1100        ee_navigation_menu_fun: function ($scope, $) {
1101
1102            ee_nav_menu.ee_navigation_menu_fun.elementSettings = ee_common.getElementSettings($scope);
1103            var $scroll_hamburger = $scope.find('.scroll_hamburger'),
1104                windowWidth = jQuery(window).width(),
1105                menuSetting = ee_nav_menu.ee_navigation_menu_fun.elementSettings;
1106
1107            ee_nav_menu.ee_navigation_menu_fun.init = function () {
1108
1109                if (ee_nav_menu.ee_navigation_menu_fun.elementSettings.layout == 'scroll_hamburger') {
1110                    if ($scroll_hamburger.length > 0) {
1111
1112                        var sticky_menu = $scroll_hamburger.parents('section');
1113                        sticky_menu.parent().append('<div class="hamburger_icon_wrapper">' +
1114                            '<div class="arrow_for_scroll">' +
1115                            '<i class="fa fa-bars"></i>' +
1116                            '</div>' +
1117                            '</div>');
1118
1119                        var toggleed = false;
1120                        $('.arrow_for_scroll').click(function (e) {
1121                            e.preventDefault();
1122                            if (sticky_menu.is(':visible')) {
1123                                sticky_menu.stop().slideUp();
1124                            } else {
1125                                sticky_menu.stop().slideDown();
1126                            }
1127                            toggleed = true;
1128                            setTimeout(function () {
1129                                toggleed = false;
1130                            }, 500);
1131                        });
1132
1133                        $(window).bind('scroll', function () {
1134                            if ($(window).width() > 900) {
1135                                if (!toggleed) {
1136                                    if ($(window).scrollTop() > 50) {
1137                                        $('.arrow_for_scroll').fadeIn();
1138                                        sticky_menu.slideUp();
1139                                        if (!jQuery(document).find('.elementor-location-header').hasClass('hamburger_fixed_header')) {
1140                                            jQuery(document).find('.elementor-location-header').next().css('padding-top', jQuery('.elementor-location-header').outerHeight());
1141                                            jQuery(document).find('.elementor-location-header').addClass('hamburger_fixed_header');
1142                                        }
1143                                    } else {
1144                                        $('.arrow_for_scroll').fadeOut();
1145                                        sticky_menu.slideDown();
1146                                        if (jQuery(document).find('.elementor-location-header').hasClass('hamburger_fixed_header')) {
1147                                            jQuery(document).find('.elementor-location-header').next().css('padding-top', '0px');
1148                                            jQuery(document).find('.elementor-location-header').removeClass('hamburger_fixed_header');
1149                                        }
1150                                    }
1151                                }
1152                            }
1153                        });
1154                    } else {
1155                        jQuery(document).find('.hamburger_icon_wrapper').remove();
1156                    }
1157                } else {
1158                    if (jQuery(document).find('.scroll_hamburger').length == 0) {
1159                        jQuery(document).find('.hamburger_icon_wrapper').remove();
1160                    }
1161                }
1162
1163                var forEach = function (t, o, r) { if ("[object Object]" === Object.prototype.toString.call(t)) for (var c in t) Object.prototype.hasOwnProperty.call(t, c) && o.call(r, t[c], c, t); else for (var e = 0, l = t.length; l > e; e++)o.call(r, t[e], e, t) };
1164
1165                var hamburgers = document.querySelectorAll(".hamburger");
1166                if (hamburgers.length > 0) {
1167                    forEach(hamburgers, function (hamburger) {
1168                        hamburger.addEventListener("click", function () {
1169                            this.classList.toggle("is-active");
1170                        }, false);
1171                    });
1172                }
1173
1174                /*@ If outside click then close the hamburger & sidebar */
1175                jQuery(document).click(function (e) {
1176                    if (!jQuery(e.target).is('.hamburger')) {
1177                        jQuery(document).find('.sidebar').fadeOut('slow');
1178                        jQuery(document).find('.hamburger').removeClass('is-active');
1179                    }
1180
1181                    // if(windowWidth <= 1024){
1182                    //     if (!jQuery(e.target).is('.ee-mb-megamenu-wrapper .menu-item .elementor-item') && !jQuery(e.target).is('.ee-mb-megamenu-wrapper .btn_menu_back')) {
1183                    //         jQuery(document).find('.ee-mb-megamenu-wrapper .ee-mb-nav-shortcode').hide();
1184                    //         jQuery(document).find('.ee-mb-megamenu-wrapper .menu-item').removeClass('uparrow');
1185                    //     }
1186                    // }
1187                });
1188
1189                jQuery(document).on('click', '.hamburger', function (e) {
1190                    jQuery(this).siblings('.ee-mb-sidebar-menu-wrapper').find(".sidebar").toggle("slide");
1191                    e.preventDefault();
1192                    return false;
1193                });
1194
1195                // if(windowWidth <= 1024){
1196                //     jQuery(document).on('click', '.ee-mb-megamenu-wrapper .menu-item', function() {
1197                //         jQuery(document).find('.ee-mb-megamenu-wrapper .ee-mb-nav-shortcode').hide();
1198
1199                //         if (jQuery(this).hasClass('uparrow')) {
1200                //             jQuery(this).removeClass('uparrow');
1201                //             jQuery(this).find('.ee-mb-nav-shortcode').slideUp('slow');
1202                //         } else {
1203                //             jQuery(this).addClass('uparrow');
1204                //             jQuery(this).find('.ee-mb-nav-shortcode').slideDown('slow');
1205                //         }
1206
1207                //     });
1208                // }
1209
1210                /*@ Megamenu start */
1211                ee_nav_menu.supportTabs($scope);
1212                ee_nav_menu.megaMenu(menuSetting);
1213
1214                // $(window).on('resize', function(){
1215                //     ee_nav_menu.megaMenu(menuSetting);
1216                // });
1217            };
1218
1219            ee_nav_menu.ee_navigation_menu_fun.init();
1220        },
1221        calculateTopHeight: function (menuSetting) {
1222            /*@ Start:: Calculate top height start */
1223            let megaMenuTopSpacing = (menuSetting.megamenu_top_spacing) ? menuSetting.megamenu_top_spacing.size : 0,
1224                menuFromTop = 0,
1225                adminBar = jQuery('#wpadminbar').length,
1226                adminBarHeight = 0,
1227                isCookie = jQuery('#ee_mb_cookie_msg').length,
1228                cookieHeight = 0;
1229
1230            /*@ If admin bar then add height */
1231            if (adminBar > 0) {
1232                adminBarHeight = jQuery('#wpadminbar').outerHeight();
1233            }
1234
1235            if (isCookie > 0 && !jQuery('#ee_mb_cookie_msg').hasClass('cookie_position') && jQuery('#ee_mb_cookie_msg').is(':visible')) {
1236                cookieHeight = jQuery('#ee_mb_cookie_msg').outerHeight();
1237            }
1238
1239            /*@ Calculate height of each sections before the nav menu */
1240            jQuery(document).find('.elementor-location-header').find('.elementor-top-section').each(function () {
1241
1242                menuFromTop += jQuery(this).outerHeight();
1243
1244                if (jQuery(this).find('#templateMainNav').length > 0) {
1245                    return false;
1246                }
1247            });
1248
1249            if (!megaMenuTopSpacing) {
1250                jQuery(document).find('#mainNavigation > .ee-mb-nav-shortcode').css({ 'top': menuFromTop + adminBarHeight + cookieHeight });
1251            } else {
1252                jQuery(document).find('#mainNavigation > .ee-mb-nav-shortcode').css({ 'top': megaMenuTopSpacing + adminBarHeight + cookieHeight });
1253            }
1254
1255            /*@ End:: Calculate top height */
1256        },
1257        megaMenu: function (menuSetting) {
1258            if ((menuSetting.dropdown === 'tablet' && jQuery(window).width() <= 1024) || (menuSetting.dropdown === 'mobile' && jQuery(window).width() <= 768)) {
1259
1260                /*@ Megamenu for mobile */
1261
1262                $("#templateMainNav").find('.ee-mb-nav-shortcode').each(function () {
1263                    if ($(this).find('.backButton').length <= 0) {
1264                        $('<div class="backButton"><span class="fa fa-chevron-left backIcon"></span> Back</div>').insertBefore($(this).find('.elementor-container:first'));
1265                    }
1266                });
1267
1268                $(document).find('#mainNavigation').html($('#templateMainNav').html());
1269
1270                $("#mainNavigation").attr("class", $("#templateMainNav").attr("class"));
1271
1272                if ($(document).find('.ee-mb-megamenu-wrapper').length > 0) {
1273
1274                    jQuery(document).find('.ee-mb-megamenu-wrapper > ul > li:not(.menu-item-has-children)').on('click touchstart', function (e) {
1275
1276                        let menuAnchor = $(this).find('a').attr('href'),
1277                            liIndex = jQuery(this).index();
1278
1279                        if (menuAnchor === '#' || menuAnchor === '') {
1280                            e.preventDefault();
1281                        }
1282
1283                        if (jQuery(document).find('#mainNavigation .ee-mb-nav-shortcode').eq(liIndex).find('div').length > 0) {
1284
1285                            let menuFromTop = jQuery('body > .elementor-location-header .elementor-top-section').outerHeight();
1286
1287                            jQuery(document).find('#mainNavigation .ee-mb-nav-shortcode').eq(liIndex).css({ 'opacity': 1, 'visibility': 'visible', 'left': '40px' });
1288
1289                            jQuery(document).find('#mainNavigation').css({ 'display': 'flex', 'left': 0 }).animate({ "right": "-1000px" }, "slow");
1290                        }
1291                    });
1292
1293                    /*@ Close modal start */
1294                    jQuery(document).find('#mainNavigation .backButton').on('click touchstart', function (e) {
1295
1296                        jQuery(document).find('#mainNavigation').css({ 'right': '-1000px', 'left': '100%', 'display': 'none' }).animate({ "right": "-1000px" }, "slow");
1297
1298                        jQuery(document).find('#mainNavigation .ee-mb-nav-shortcode').css({ 'opacity': 0, 'visibility': 'hidden' });
1299
1300                        e.preventDefault();
1301                    });
1302
1303                    $(document).keydown(function (event) {
1304                        if (event.keyCode == 27) {
1305                            jQuery(document).find('#mainNavigation').css({ 'opacity': 0, 'visibility': 'hidden' });
1306
1307                            jQuery(document).find('#mainNavigation .ee-mb-nav-shortcode').css({ 'opacity': 0, 'visibility': 'hidden', 'right': '-1000px' });
1308                        }
1309                    });
1310                    /*@ Close modal end */
1311                }
1312            } else {
1313
1314                $(document).find('#mainNavigation').html($('#templateMainNav').html());
1315
1316                $(document).find('#mainNavigation').hide();
1317
1318                if ($(document).find('.ee-mb-megamenu-wrapper').length > 0) {
1319
1320
1321                    jQuery(document).find('.ee-mb-megamenu-wrapper > ul > .menu-item').mouseenter(function () {
1322                        let liIndex = jQuery(this).index();
1323                        $(document).find('#mainNavigation').show();
1324
1325                        /*@ If menu sticky then support it */
1326                        if (jQuery('.elementor-sticky').length > 0) {
1327                            jQuery(document).find('#mainNavigation .ee-mb-nav-shortcode').css({ 'position': 'fixed' });
1328                        }
1329
1330                        jQuery(document).find('#mainNavigation .ee-mb-nav-shortcode').css({ 'opacity': 0, 'visibility': 'hidden' });
1331
1332                        jQuery(document).find('#mainNavigation .ee-mb-nav-shortcode').eq(liIndex).css({ 'opacity': 1, 'visibility': 'visible' });
1333
1334                        ee_nav_menu.calculateTopHeight(menuSetting);
1335                    });
1336
1337                    jQuery(document).find('#mainNavigation').mouseleave(function () {
1338
1339                        $(document).find('#mainNavigation').hide();
1340
1341                        jQuery(document).find('#mainNavigation .ee-mb-nav-shortcode').css({ 'opacity': 0, 'visibility': 'hidden' });
1342
1343                        ee_nav_menu.calculateTopHeight(menuSetting);
1344                    });
1345                }
1346            }
1347        },
1348        supportTabs: function ($scope) {
1349            let navMenu = jQuery(document).find('.ee-mb-nav-shortcode');
1350            /*@ If tabs found in mega menu then proceed */
1351            if (navMenu.find('.elementor-tabs').length > 0) {
1352
1353                /*@ By default activate first tab */
1354                let allTabContent = navMenu.find('.elementor-tabs-content-wrapper'),
1355                    allTabTitle = navMenu.find('.elementor-tabs-wrapper');
1356
1357                allTabContent.each(function () {
1358                    jQuery(this).find('.elementor-tab-content').first().show();
1359                });
1360
1361                allTabTitle.each(function () {
1362                    jQuery(this).find('.elementor-tab-title').first().addClass('elementor-active');
1363                });
1364
1365                // allTabContent.first().show();
1366                // allTabTitle.first().toggleClass('elementor-active');
1367
1368                /*@ On click of tabs hide/show individual tabs content and tab title */
1369                jQuery(document).on('click', '.ee-mb-nav-shortcode .elementor-tab-title', function (e) {
1370                    e.preventDefault();
1371
1372                    let $this = jQuery(this),
1373                        index = $this.attr('data-tab'),
1374                        tabContent = $this.parent().siblings('.elementor-tabs-content-wrapper').find('.elementor-tab-content');
1375
1376                    // Remove all active class and add to current only
1377                    $this.siblings().removeClass('elementor-active');
1378                    $this.addClass('elementor-active');
1379
1380                    // Hide/Show content
1381                    tabContent.each(function () {
1382                        jQuery(this).hide();
1383                        if (jQuery(this).attr('data-tab') === index) {
1384                            jQuery(this).show();
1385                        }
1386                    });
1387                });
1388            }
1389        }
1390    }
1391
1392    $(window).on('elementor/frontend/init', function () {
1393        elementorFrontend.hooks.addAction('frontend/element_ready/nav-menu.default', ee_nav_menu.ee_navigation_menu_fun);
1394    });
1395
1396    /*@ Event Slider */
1397    var ee_mb_event_slider = {
1398
1399        onInit: function ($scope, $) {
1400
1401            var carousel_elem = $scope.find('.elementor-image-carousel').eq(0);
1402
1403            if (carousel_elem.length > 0) {
1404
1405                var elementSettings = ee_common.getElementSettings($scope);
1406
1407                if (elementSettings) {
1408                    var slidesToShow = +elementSettings.slides_to_show || 3,
1409                        slideRows = +elementSettings.slides_rows || 1,
1410                        isSingleSlide = 1 === slidesToShow,
1411                        defaultLGDevicesSlidesCount = isSingleSlide ? 1 : 2,
1412                        breakpoints = elementorFrontend.config.breakpoints;
1413
1414                    var slickOptions = {
1415                        slidesToShow: slidesToShow,
1416                        rows: slideRows,
1417                        autoplay: 'yes' === elementSettings.autoplay,
1418                        autoplaySpeed: elementSettings.autoplay_speed,
1419                        infinite: 'yes' === elementSettings.infinite,
1420                        pauseOnHover: 'yes' === elementSettings.pause_on_hover,
1421                        speed: elementSettings.speed,
1422                        arrows: -1 !== ['arrows', 'both'].indexOf(elementSettings.navigation),
1423                        dots: -1 !== ['dots', 'both'].indexOf(elementSettings.navigation),
1424                        rtl: 'rtl' === elementSettings.direction,
1425                        responsive: [{
1426                            breakpoint: breakpoints.lg,
1427                            settings: {
1428                                slidesToShow: +elementSettings.slides_to_show_tablet || defaultLGDevicesSlidesCount,
1429                                slidesToScroll: +elementSettings.slides_to_scroll_tablet || defaultLGDevicesSlidesCount,
1430                            }
1431                        }, {
1432                            breakpoint: breakpoints.md,
1433                            settings: {
1434                                slidesToShow: +elementSettings.slides_to_show_mobile || 1,
1435                                slidesToScroll: +elementSettings.slides_to_scroll_mobile || 1,
1436                            }
1437                        }]
1438                    };
1439
1440                    if (isSingleSlide) {
1441                        slickOptions.fade = 'fade' === elementSettings.effect;
1442                    } else {
1443                        slickOptions.slidesToScroll = +elementSettings.slides_to_scroll || defaultLGDevicesSlidesCount;
1444                    }
1445                }
1446                carousel_elem.slick(slickOptions);
1447
1448
1449                carousel_elem.on('setPosition', function () {
1450                    ee_common.equalheight('.elementor-widget-event-slider .slick-track > .slick-slide.es_event_slider');
1451                });
1452
1453            }
1454        }
1455    };
1456
1457    $(window).on('elementor/frontend/init', function () {
1458        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-event-slider.default', ee_mb_event_slider.onInit);
1459    });
1460
1461    jQuery(window).load(function () {
1462        ee_common.equalheight('.elementor-widget-event-slider .slick-track > .slick-slide.es_event_slider');
1463    });
1464
1465    jQuery(window).resize(function () {
1466        ee_common.equalheight('.elementor-widget-event-slider .slick-track > .slick-slide.es_event_slider');
1467    });
1468
1469    /*@ Google Map */
1470    var ee_mb_map = {
1471
1472        ee_mb_map_fun: function ($scope, $) {
1473
1474            ee_mb_map.ee_mb_map_fun.init = function () {
1475                var elementSettings = ee_common.getElementSettings($scope);
1476
1477                if (!elementSettings.address) {
1478                    return false;
1479                }
1480
1481                var maptype = elementSettings.map_type;
1482
1483                if (maptype == 'ROADMAP') {
1484
1485                    var styledMapType = new google.maps.StyledMapType(
1486                        [
1487                            { elementType: 'geometry', stylers: [{ color: elementSettings.map_geometry }] },
1488                            { elementType: 'labels.text.stroke', stylers: [{ color: elementSettings.label_text_stroke }] },
1489                            { elementType: 'labels.text.fill', stylers: [{ color: elementSettings.label_text_fill }] },
1490                            {
1491                                featureType: 'administrative.locality',
1492                                elementType: 'labels.text.fill',
1493                                stylers: [{ color: elementSettings.administrative_locality }]
1494                            },
1495                            {
1496                                featureType: 'poi',
1497                                elementType: 'geometry',
1498                                stylers: [{ color: elementSettings.map_poi_color }]
1499                            },
1500                            {
1501                                featureType: 'poi',
1502                                elementType: 'labels.text.fill',
1503                                stylers: [{ color: elementSettings.map_poi_fill }]
1504                            },
1505                            {
1506                                featureType: 'poi.park',
1507                                elementType: 'geometry.fill',
1508                                stylers: [{ color: elementSettings.map_park_color }]
1509                            },
1510                            {
1511                                featureType: 'poi.park',
1512                                elementType: 'labels.text.fill',
1513                                stylers: [{ color: elementSettings.map_park_fill }]
1514                            },
1515                            {
1516                                featureType: 'water',
1517                                elementType: 'geometry',
1518                                stylers: [{ color: elementSettings.water_color }]
1519                            },
1520                            {
1521                                featureType: 'water',
1522                                elementType: 'labels.text.fill',
1523                                stylers: [{ color: elementSettings.water_text_fill }]
1524                            },
1525                            {
1526                                featureType: 'water',
1527                                elementType: 'labels.text.stroke',
1528                                stylers: [{ color: elementSettings.water_text_stroke }]
1529                            },
1530                            {
1531                                featureType: 'road',
1532                                elementType: 'geometry',
1533                                stylers: [{ color: elementSettings.road_color }]
1534                            },
1535                            {
1536                                featureType: 'road',
1537                                elementType: 'geometry.stroke',
1538                                stylers: [{ color: elementSettings.road_stroke }]
1539                            },
1540                            {
1541                                featureType: 'road.highway',
1542                                elementType: 'geometry',
1543                                stylers: [{ color: elementSettings.highway_color }]
1544                            },
1545                            {
1546                                featureType: 'road.highway',
1547                                elementType: 'geometry.stroke',
1548                                stylers: [{ color: elementSettings.highway_stroke }]
1549                            },
1550                            {
1551                                featureType: 'road.highway',
1552                                elementType: 'labels.text.fill',
1553                                stylers: [{ color: elementSettings.highway_text_fill }]
1554                            },
1555                            {
1556                                featureType: 'transit',
1557                                elementType: 'geometry',
1558                                stylers: [{ color: elementSettings.transit }]
1559                            },
1560                            {
1561                                featureType: 'transit.station',
1562                                elementType: 'labels.text.fill',
1563                                stylers: [{ color: elementSettings.transit_text_fill }]
1564                            },
1565                        ],
1566                        { name: 'Styled Map' }
1567                    );
1568                }
1569
1570                var gstrh = 'cooperative';
1571                var scrollval = true;
1572                var defscroll = elementSettings.prevent_scroll;
1573                if (defscroll == 'yes') {
1574                    gstrh = 'none';
1575                    scrollval = false;
1576                }
1577
1578                var map = new google.maps.Map(document.getElementById('map'), {
1579                    zoom: (elementSettings.zoom.size) ? elementSettings.zoom.size : 10,
1580                    mapTypeId: google.maps.MapTypeId[maptype],
1581                    scrollwheel: scrollval,
1582                    gestureHandling: gstrh,
1583                    zoomControl: scrollval
1584                });
1585
1586                var geocoder = new google.maps.Geocoder();
1587                ee_mb_map.geocodeAddress(geocoder, map, elementSettings);
1588
1589                /* Associate the styled map with the MapTypeId and set it to display. */
1590                if (maptype == 'ROADMAP') {
1591                    map.mapTypes.set('styled_map', styledMapType);
1592                    map.setMapTypeId('styled_map');
1593                }
1594
1595            };
1596
1597            ee_mb_map.ee_mb_map_fun.init();
1598        },
1599        geocodeAddress: function (geocoder, resultsMap, elementSettings) {
1600            var address = elementSettings.address;
1601            geocoder.geocode({ 'address': address }, function (results, status) {
1602                if (status === 'OK') {
1603                    resultsMap.setCenter(results[0].geometry.location);
1604                    var markerLabel = (elementSettings.map_markerlabel) ? elementSettings.map_markerlabel : '';
1605                    var maplabelcolor = (elementSettings.map_markerlabel_color) ? elementSettings.map_markerlabel_color : '';
1606                    if (markerLabel == "" || markerLabel.length == 0) { markerLabel = ' '; }
1607                    if (maplabelcolor == "" || maplabelcolor.length == 0) { maplabelcolor = '#ff0000'; }
1608
1609                    var marker = new google.maps.Marker({
1610                        map: resultsMap,
1611                        position: results[0].geometry.location,
1612                        icon: {
1613                            url: "//maps.gstatic.com/mapfiles/api-3/images/spotlight-poi2.png",
1614                            labelOrigin: new google.maps.Point(15, 55),
1615                            size: new google.maps.Size(30, 45),
1616                            anchor: new google.maps.Point(16, 32)
1617                        },
1618                        label: {
1619                            text: markerLabel,
1620                            color: maplabelcolor,
1621                            fontSize: "20px",
1622                            fontWeight: "bold"
1623                        }
1624                    });
1625                } else {
1626                    console.log('Geocode was not successful for the following reason: ' + status);
1627                }
1628            });
1629        }
1630    }
1631
1632    $(window).on('elementor/frontend/init', function () {
1633        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-map.default', ee_mb_map.ee_mb_map_fun);
1634    });
1635
1636    /*@ Google Calendar */
1637    var ee_mb_gcal = {
1638        ee_mb_gcal_fun: function ($scope, $) {
1639
1640            ee_mb_gcal.ee_mb_gcal_fun.init = function () {
1641
1642                var elementSettings = ee_common.getElementSettings($scope),
1643                    gcal = $scope.find('.ee-mb-google-calendar'),
1644                    cal_uid = gcal.data('cal-uid'),
1645                    cal_api_key = gcal.data('cal-api-key'),
1646                    cal_layout = elementSettings.cal_layout_type,
1647                    cal_id = elementSettings.cal_id,
1648                    eventsdata = [],
1649                    i = 0;
1650
1651                if (!cal_api_key && !cal_id) {
1652                    return false;
1653                }
1654
1655                if (cal_layout == 'grid') {
1656
1657                    var calendarEl = document.getElementById('calendar-' + cal_uid);
1658
1659                    var calendar = new FullCalendar.Calendar(calendarEl, {
1660                        plugins: ['interaction', 'dayGrid', 'timeGrid', 'list', 'googleCalendar'],
1661                        header: {
1662                            left: 'prev,next today',
1663                            center: 'title',
1664                            right: 'month,agendaWeek,agendaDay'
1665                        },
1666                        googleCalendarApiKey: cal_api_key,
1667                        events: {
1668                            googleCalendarId: cal_id
1669                        },
1670                        eventRender: function (event, element) {
1671                            if (eventsdata.length == 0) {
1672                                eventsdata.push(event.title);
1673                                i++;
1674                            } else {
1675                                var tmp = eventsdata.indexOf(event.title);
1676                                if (tmp == -1) {
1677                                    eventsdata.push(event.title);
1678                                    i++;
1679                                }
1680                            }
1681
1682                            if (typeof element !== 'undefined') {
1683                                element.addClass("custom-event-" + eventsdata.indexOf(event.title));
1684                            }
1685                        },
1686                    });
1687
1688                    calendar.render();
1689
1690                } else {
1691
1692                    var calendarEl = document.getElementById('calendar-' + cal_uid);
1693
1694                    var calendar = new FullCalendar.Calendar(calendarEl, {
1695                        plugins: ['interaction', 'dayGrid', 'timeGrid', 'list', 'googleCalendar'],
1696                        defaultView: 'listWeek',
1697                        views: {
1698                            listDay: { buttonText: 'list day' },
1699                            listWeek: { buttonText: 'list week' },
1700                            listMonth: { buttonText: 'list month' }
1701                        },
1702                        header: {
1703                            left: 'title',
1704                            center: '',
1705                            right: 'listDay,listWeek,listMonth'
1706                        },
1707                        googleCalendarApiKey: cal_api_key,
1708                        events: {
1709                            googleCalendarId: cal_id
1710                        }
1711                    });
1712
1713                    calendar.render();
1714                }
1715            }
1716            ee_mb_gcal.ee_mb_gcal_fun.init();
1717        }
1718    }
1719    $(window).on('elementor/frontend/init', function () {
1720        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-google-calendar.default', ee_mb_gcal.ee_mb_gcal_fun);
1721    });
1722
1723    /*@ Member */
1724    var ee_mb_member = {
1725
1726        ee_mb_member_fun: function ($scope, $) {
1727
1728            ee_mb_member.ee_mb_member_fun.init = function () {
1729                var elementSettings = ee_common.getElementSettings($scope);
1730
1731                jQuery('.ee_mb_drp_member').on('change', function () {
1732
1733                    var sorting_by = $scope.find('#drp_sorting').val(),
1734                        industry = $scope.find('#drp_industrial_sector').val(),
1735                        status = $scope.find('#drp_status').val()
1736                    params = { sortby: sorting_by, statusby: status, industry: industry },
1737                        new_url = jQuery.param(params);
1738
1739                    window.location.search = new_url;
1740                });
1741
1742                var sortby = 'sortby',
1743                    filterby = 'statusby',
1744                    url = window.location.href
1745
1746                if (url.indexOf('?' + sortby + '=') != -1 || url.indexOf('?' + filterby + '=') != -1) {
1747                    jQuery('html, body').animate({
1748                        scrollTop: jQuery('#members_wrapper').offset().top - 40
1749                    }, 1200);
1750                }
1751            }
1752
1753            ee_mb_member.ee_mb_member_fun.init();
1754        }
1755    }
1756    $(window).on('elementor/frontend/init', function () {
1757        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-member.default', ee_mb_member.ee_mb_member_fun);
1758    });
1759
1760    /*@ Events */
1761    var ee_mb_events = {
1762
1763        ee_mb_events_fun: function ($scope, $) {
1764
1765            ee_mb_events.ee_mb_events_fun.init = function () {
1766
1767                var elementSettings = ee_common.getElementSettings($scope),
1768                    ajaxurl = ElementorExtensionsFrontendConfig.ajaxurl;
1769
1770                jQuery(document).on('click', '.myeventon_summary_eventlist_wrapper .summary_filter a', function (e) {
1771                    e.preventDefault();
1772                    var current = jQuery(this);
1773                    ee_common.showLoading($scope);
1774                    var data_month = jQuery(this).attr('data-month');
1775                    var data_year = jQuery(this).attr('data-year');
1776
1777                    var sumarry_wrapper = current.parents('.myeventon_summary_eventlist_wrapper'),
1778                        sumarry_filter = sumarry_wrapper.find('> .summary_filter'),
1779                        enable_event_detail = sumarry_filter.data('event-detail'),
1780                        disable_event_link = sumarry_filter.data('disable-link'),
1781                        event_date_layout = sumarry_filter.data('date-layout'),
1782                        event_limit = sumarry_filter.data('event-limit'),
1783                        event_offset = sumarry_filter.data('event-offset'),
1784                        hide_past_events = sumarry_filter.data('hide-past-events');
1785
1786                    var d = new Date();
1787
1788                    if (!data_year) {
1789                        var data_year = sumarry_wrapper.find('.summary_filter > .year_filter_wrapper a.current').attr('data-year');
1790                    } else {
1791                        sumarry_wrapper.find('> .summary_filter > .year_filter_wrapper a').removeClass('current');
1792                    }
1793
1794                    if (!data_month) {
1795                        var data_month = sumarry_wrapper.find('.summary_filter > .month_filter_wrapper > a.current').attr('data-month');
1796                    } else {
1797                        sumarry_wrapper.find('> .summary_filter > .month_filter_wrapper a').removeClass('current');
1798                    }
1799
1800                    jQuery(this).addClass('current');
1801
1802                    jQuery.ajax({
1803                        url: ajaxurl,
1804                        data: {
1805                            'action': 'getSummaryListAjax',
1806                            'month': data_month,
1807                            'year': data_year,
1808                            'event_date_layout': event_date_layout,
1809                            'cat': '',
1810                            'limit': event_limit,
1811                            'offset': event_offset,
1812                            'enable_event_detail': enable_event_detail,
1813                            'disable_link': disable_event_link,
1814                            'hide_past_events': hide_past_events,
1815                        },
1816                        method: 'POST',
1817                        success: function (data) {
1818                            sumarry_wrapper.find('.summaryEventList').html(data).append('<div class="elementor_extensions_loading_overlay"><div class="elementor_extensions_loader"></div></div>');
1819                            ee_common.hideLoading($scope);
1820                        },
1821                        error: function (errorThrown) {
1822                            console.log(errorThrown);
1823                            ee_common.hideLoading($scope);
1824                        }
1825                    });
1826                });
1827
1828                /*@Next Prev button click*/
1829                jQuery(document).on('click', '#summary_prev,#summary_next', function () {
1830                    var current = jQuery(this);
1831                    ee_common.showLoading($scope);
1832
1833                    var sumarry_wrapper = current.parents('.myeventon_summary_eventlist_wrapper'),
1834                        sumarry_filter = sumarry_wrapper.find('> .summary_filter'),
1835                        event_limit = sumarry_filter.data('event-limit'),
1836                        event_offset = sumarry_filter.data('event-offset')
1837                    month_year = current.data('date'),
1838                        event_date_layout = current.data('date-layout'),
1839                        enable_event_detail = current.data('event-detail'),
1840                        disable_event_link = current.data('disable-link'),
1841                        hide_past_events = current.data('hide-past-events'),
1842                        splited = month_year.split('-');
1843
1844                    jQuery.ajax({
1845                        url: ajaxurl,
1846                        data: {
1847                            'action': 'getSummaryListAjax',
1848                            'month_year': month_year,
1849                            'event_date_layout': event_date_layout,
1850                            'enable_event_detail': enable_event_detail,
1851                            'disable_link': disable_event_link,
1852                            'hide_past_events': hide_past_events,
1853                            'limit': event_limit,
1854                            'offset': event_offset,
1855                        },
1856                        method: 'POST',
1857                        success: function (data) {
1858                            jQuery('.myeventon_summary_eventlist_wrapper > .summary_filter  a').removeClass('current');
1859                            jQuery('.myeventon_summary_eventlist_wrapper > .summary_filter > .year_filter_wrapper a[data-year="' + splited[0] + '"]').addClass('current');
1860                            jQuery('.myeventon_summary_eventlist_wrapper > .summary_filter > .month_filter_wrapper a[data-month="' + splited[1] + '"]').addClass('current');
1861                            current.parents('.summaryEventList').html(data).append('<div class="elementor_extensions_loading_overlay"><div class="elementor_extensions_loader"></div></div>');
1862                            ee_common.hideLoading($scope);
1863                        },
1864                        error: function (errorThrown) {
1865                            console.log(errorThrown);
1866                            ee_common.hideLoading($scope);
1867                        }
1868                    });
1869                });
1870
1871                /*@Show more button click*/
1872                jQuery(document).on('click', '.myeventon_summary_eventlist_wrapper .summaryEventList .show_more_events', function () {
1873                    var current = jQuery(this);
1874                    ee_common.showLoading($scope);
1875
1876                    var sumarry_wrapper = current.parents('.myeventon_summary_eventlist_wrapper'),
1877                        sumarry_filter = sumarry_wrapper.find('> .summary_filter'),
1878                        data_year = sumarry_wrapper.find('.summary_filter > .year_filter_wrapper a.current').attr('data-year'),
1879                        data_month = sumarry_wrapper.find('.summary_filter > .month_filter_wrapper > a.current').attr('data-month'),
1880                        event_date_layout = sumarry_filter.data('date-layout'),
1881                        enable_event_detail = sumarry_filter.data('event-detail'),
1882                        disable_event_link = sumarry_filter.data('disable-link'),
1883                        hide_past_events = sumarry_filter.data('hide-past-events'),
1884                        event_offset = parseInt(jQuery(document).find('#hd_offset').val()),
1885                        event_limit = sumarry_filter.data('event-limit'),
1886                        show_future_events = sumarry_filter.data('future-events');
1887
1888                    /*@ Determine first click */
1889                    if (current.hasClass('clicked')) {
1890                        event_offset = parseInt(jQuery(document).find('#hd_limit_offset').val());
1891                    } else {
1892                        current.addClass('clicked');
1893                        event_offset = event_limit + event_offset;
1894                    }
1895
1896                    jQuery.ajax({
1897                        url: ajaxurl,
1898                        data: {
1899                            'action': 'getSummaryListAjax',
1900                            'month': data_month,
1901                            'year': data_year,
1902                            'limit': '-1',
1903                            'offset': event_offset,
1904                            'event_date_layout': event_date_layout,
1905                            'enable_event_detail': enable_event_detail,
1906                            'disable_link': disable_event_link,
1907                            'hide_past_events': hide_past_events,
1908                            'show_future_events': (show_future_events) ? show_future_events : '',
1909                        },
1910                        method: 'POST',
1911                        success: function (data) {
1912                            current.parents('.summaryEventList').html(data).append('<div class="elementor_extensions_loading_overlay"><div class="elementor_extensions_loader"></div></div>');
1913                            jQuery(document).find('#hd_offset').val(event_offset);
1914                            ee_common.hideLoading($scope);
1915                        },
1916                        error: function (errorThrown) {
1917                            console.log(errorThrown);
1918                            ee_common.hideLoading($scope);
1919                        }
1920                    });
1921                });
1922
1923                /*@ Calendar view*/
1924                var calendar_wrapper_div = jQuery("div.myeventon_calendar");
1925                if (calendar_wrapper_div.length > 0) {
1926                    calendar_wrapper_div.each(function () {
1927                        var calendar_id = jQuery(this).attr('data-id');
1928                        var event_list = jQuery(this).data('caldata');
1929                        var disable_link = jQuery(this).data('disable-link');
1930
1931                        var calendarEl = document.getElementById('calendar-' + calendar_id);
1932
1933                        var calendar = new FullCalendar.Calendar(calendarEl, {
1934                            plugins: ['interaction', 'dayGrid', 'timeGrid', 'list'],
1935                            header: {
1936                                left: 'prev,next today',
1937                                center: 'title',
1938                                right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth'
1939                            },
1940                            events: event_list,
1941                            eventRender: function (event, element) {
1942                                if (typeof element !== 'undefined') {
1943                                    element.addClass("custom-event");
1944                                }
1945                            },
1946                            eventClick: function (arg) {
1947                                var clicked_date = arg.event.start;
1948                                clicked_date = moment(clicked_date).format("YYYY-MM-DD");
1949
1950                                var current = jQuery(arg.el);
1951                                jQuery.ajax({
1952                                    url: ajaxurl,
1953                                    data: {
1954                                        'action': 'getEventListByDay',
1955                                        'date': clicked_date,
1956                                        'disable_link': disable_link
1957                                    },
1958                                    method: 'POST',
1959                                    success: function (data) {
1960                                        current.parents('.myeventon_calendar').siblings('.myeventon_calendar_summaryview').html(data);
1961                                    },
1962                                    error: function (errorThrown) {
1963                                    }
1964                                });
1965                            },
1966                            dayClick: function (arg) {
1967                                var clicked_date = arg.event.start;
1968                                clicked_date = moment(clicked_date).format("YYYY-MM-DD");
1969
1970                                var current = jQuery(arg.el);
1971                                jQuery.ajax({
1972                                    url: ajaxurl,
1973                                    data: {
1974                                        'action': 'getEventListByDay',
1975                                        'date': clicked_date,
1976                                        'disable_link': disable_link,
1977                                    },
1978                                    method: 'POST',
1979                                    success: function (data) {
1980                                        current.parents('.myeventon_calendar').siblings('.myeventon_calendar_summaryview').html(data);
1981                                    },
1982                                    error: function (errorThrown) {
1983                                    }
1984                                });
1985                            }
1986                        });
1987
1988                        calendar.render();
1989                    });
1990                }
1991
1992                /*@ Display - Hide summary description no click of event label */
1993                jQuery(document).on('click', '.myeventon_calendar_summaryview li,.summaryEventList li', function (e) {
1994                    jQuery(this).next('.summary_cal_description').slideToggle();
1995                    e.preventDefault();
1996                });
1997            }
1998            ee_mb_events.ee_mb_events_fun.init();
1999        }
2000    }
2001    $(window).on('elementor/frontend/init', function () {
2002        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-events.default', ee_mb_events.ee_mb_events_fun);
2003    });
2004
2005    /*@ Property Search */
2006    var ee_mb_property_search = {
2007
2008        ee_mb_property_search_fun: function ($scope, $) {
2009
2010            ee_mb_property_search.ee_mb_property_search_fun.init = function () {
2011
2012                if (typeof google === 'object' && typeof google.maps === 'object') {
2013                    function ee_mb_property_search_box_autocomplete() {
2014
2015                        var elementSettings = ee_common.getElementSettings($scope),
2016                            input = document.getElementById('ee_mb_property_txt'),
2017                            data_setting = $scope.find('.ee_mb_homepage_searchbox_form').data('settings');
2018
2019                        if (input) {
2020                            var options = {
2021                                types: ['geocode']
2022                            };
2023
2024                            if (data_setting.country_restriction) {
2025                                options.componentRestrictions = { country: data_setting.country_restriction };
2026                            }
2027
2028                            var autocomplete = new google.maps.places.Autocomplete(input, options);
2029
2030                            /**
2031                             * Get lat long and add it into the hidden text boxes
2032                             */
2033                            google.maps.event.addDomListener(input, 'keydown', function (event) {
2034                                if (event.keyCode === 13) {
2035                                    event.preventDefault();
2036                                } else {
2037                                    google.maps.event.addListener(autocomplete, 'place_changed', function () {
2038                                        var place = autocomplete.getPlace();
2039
2040                                        var lat = place.geometry.location.lat();
2041                                        var lng = place.geometry.location.lng();
2042
2043                                        document.getElementById("ee_mb_property_lat").value = lat;
2044                                        document.getElementById("ee_mb_property_long").value = lng;
2045                                    });
2046                                }
2047                            });
2048                        }
2049                    }
2050
2051                    google.maps.event.addDomListener(window, 'load', ee_mb_property_search_box_autocomplete);
2052                }
2053
2054            }
2055            ee_mb_property_search.ee_mb_property_search_fun.init();
2056        }
2057    }
2058
2059    $(window).on('elementor/frontend/init', function () {
2060        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-property-search.default', ee_mb_property_search.ee_mb_property_search_fun);
2061    });
2062
2063    var ee_mb_properties = {
2064
2065        fun: function ($scope, $) {
2066
2067            elementSettings = ee_common.getElementSettings($scope);
2068
2069            var $listing_wrapper = $scope.find('.ee_mb_property_listing_wrapper');
2070            var $data_setting = $scope.find('.ee_mb_property_search_page_outer_wrapper').data('settings');
2071
2072            ee_mb_properties.fun.init = function () {
2073                ee_mb_properties.fun.addPropertyPageClassInBody();
2074                ee_mb_properties.fun.get();
2075                ee_mb_properties.fun.getviews();
2076                ee_mb_properties.fun.addPromiximityRangeSlider();
2077                ee_mb_properties.fun.changeEvents();
2078                if (typeof google === 'object' && typeof google.maps === 'object') {
2079                    google.maps.event.addDomListener(window, 'load', ee_mb_properties.fun.addAutocompleteLocation());
2080                }
2081            };
2082
2083            ee_mb_properties.fun.get = function () {
2084                ee_mb_properties.fun.showLoading();
2085                var ajaxurl = ElementorExtensionsFrontendConfig.ajaxurl,
2086                    view = ee_mb_properties.fun.getUrlParameter('view'),
2087                    property_type = ee_mb_properties.fun.getUrlParameter('property_type');
2088
2089                jQuery('#ee_mb_property_listing').html('');
2090                jQuery('#property_pagination').html('');
2091                jQuery('#search_result').text('');
2092
2093
2094                jQuery.ajax({
2095                    url: ajaxurl,
2096                    data: {
2097                        'action': 'eeMbPropertySearchAjax',
2098                        'location': ee_mb_properties.fun.getUrlParameter('location'),
2099                        'radius': ee_mb_properties.fun.getUrlParameter('radius'),
2100                        'lat': ee_mb_properties.fun.getUrlParameter('lat'),
2101                        'long': ee_mb_properties.fun.getUrlParameter('long'),
2102                        'max': ee_mb_properties.fun.getUrlParameter('max'),
2103                        'min': ee_mb_properties.fun.getUrlParameter('min'),
2104                        'room': ee_mb_properties.fun.getUrlParameter('room'),
2105                        'property_type': (property_type) ? property_type : elementSettings.default_property_type,
2106                        'view': view,
2107                        'price_sort': ee_mb_properties.fun.getUrlParameter('price_sort'),
2108                        'paged': ee_mb_properties.fun.getUrlParameter('pagination'),
2109                        'default_sort': elementSettings.default_sort,
2110                        'post_per_page': elementSettings.post_per_page,
2111                        'area': ee_mb_properties.fun.getUrlParameter('area'),
2112                        'sqft': ee_mb_properties.fun.getUrlParameter('sqft'),
2113                    },
2114                    method: 'POST',
2115                    success: function (data) {
2116
2117                        if (data.results || data.results == '0') {
2118                            jQuery('#search_result').html(data.results);
2119                        }
2120
2121                        if (data.results && data.results !== '0') {
2122                            if (view == 'map') {
2123
2124                                jQuery('#ee_mb_property_listing').html('<div id="propertymap"></div>');
2125
2126                                var locations = data.map_properties;
2127
2128                                var map = new google.maps.Map(document.getElementById('propertymap'), {
2129                                    zoom: 10,
2130                                    center: new google.maps.LatLng(locations[0][1], locations[0][2]),
2131                                    mapTypeId: google.maps.MapTypeId.ROADMAP
2132                                });
2133
2134                                var infowindow = new google.maps.InfoWindow();
2135                                var marker, i, content = "";
2136
2137                                for (i = 0; i < locations.length; i++) {
2138                                    var latlng = new google.maps.LatLng(locations[i][1], locations[i][2]);
2139                                    marker = new google.maps.Marker({
2140                                        position: latlng,
2141                                        map: map,
2142                                        icon: ElementorExtensionsFrontendConfig.ee_mb_path + "assets/img/map-pin.png"
2143                                    });
2144
2145                                    var property_img = locations[i][6],
2146                                        title = locations[i][0],
2147                                        price = locations[i][3],
2148                                        bedrooms = locations[i][4],
2149                                        type = locations[i][5],
2150                                        listed_on = locations[i][7],
2151                                        prop_url = locations[i][8];
2152
2153                                    content = "<div class='map_info_wrapper'><a href=" + prop_url + "><div class='img_wrapper'><img src=" + property_img + "></div>" +
2154                                        "<div class='property_content_wrap'>" +
2155                                        "<div class='property_title'>" +
2156                                        "<span>" + title + "</span>" +
2157                                        "</div>" +
2158
2159                                        "<div class='property_price'>" +
2160                                        "<span>" + price + "</span>" +
2161                                        "</div>" +
2162
2163                                        "<div class='property_bed_type'>" +
2164                                        "<span>" + bedrooms + " beds</span>" +
2165                                        "<ul><li>" + type + "</li></ul>" +
2166                                        "</div>" +
2167
2168                                        "<div class='property_listed_date'>" +
2169                                        "<span>Listed on " + listed_on + "</span>" +
2170                                        "</div>" +
2171                                        "<div class='btn_visit_marker'><span>View more</span></div>"
2172                                    "</div></a></div>";
2173
2174                                    google.maps.event.addListener(marker, 'click', (function (marker, content, i) {
2175                                        return function () {
2176                                            infowindow.setContent(content);
2177                                            infowindow.open(map, marker);
2178                                        }
2179                                    })(marker, content, i));
2180                                }
2181
2182                            } else {
2183                                jQuery.each(data.property, function (index, value) {
2184                                    jQuery('#ee_mb_property_listing').append(value);
2185                                });
2186                                jQuery('#property_pagination').html(data.next_pagination);
2187                            }
2188                        }
2189
2190                        ee_mb_properties.fun.hideLoading();
2191                    },
2192                    error: function (errorThrown) { }
2193                });
2194            };
2195
2196            ee_mb_properties.fun.addPropertyPageClassInBody = function () {
2197                jQuery(document).find('body').addClass('property-search-page');
2198            };
2199
2200            ee_mb_properties.fun.addPromiximityRangeSlider = function () {
2201                var slider = document.getElementById("promiximity_range");
2202
2203                if (slider) {
2204                    var output = document.getElementById("txt_miles");
2205                    output.innerHTML = slider.value + ' miles'; /* Display the default slider value */
2206
2207                    /* Update the current slider value (each time you drag the slider handle) */
2208                    slider.oninput = function () {
2209                        output.innerHTML = this.value + ' miles';
2210                    }
2211                }
2212            };
2213
2214            ee_mb_properties.fun.addAutocompleteLocation = function () {
2215
2216                var input = document.getElementById('ee_mb_property_txt');
2217
2218                if (input) {
2219                    var options = {
2220                        types: ['geocode']
2221                    };
2222
2223                    if ($data_setting.country_restriction) {
2224                        options.componentRestrictions = { country: $data_setting.country_restriction };
2225                    }
2226
2227                    var autocomplete = new google.maps.places.Autocomplete(input, options);
2228
2229                    /**
2230                     * Get lat long and add it into the hidden text boxes
2231                     */
2232                    google.maps.event.addListener(autocomplete, 'place_changed', function () {
2233                        var place = autocomplete.getPlace();
2234
2235                        var current_add = jQuery('#ee_mb_property_txt').val();
2236
2237                        var lat = place.geometry.location.lat();
2238                        var lng = place.geometry.location.lng();
2239
2240                        document.getElementById("ee_mb_property_lat").value = lat;
2241                        document.getElementById("ee_mb_property_long").value = lng;
2242
2243                        var newurl = ee_mb_properties.fun.replaceUrlParam('location', encodeURIComponent(current_add));
2244                        history.pushState(null, null, newurl);
2245
2246                        var newurl = ee_mb_properties.fun.replaceUrlParam('lat', lat);
2247                        history.pushState(null, null, newurl);
2248
2249                        var newurl = ee_mb_properties.fun.replaceUrlParam('long', lng);
2250                        history.pushState(null, null, newurl);
2251                    });
2252                }
2253            };
2254
2255            ee_mb_properties.fun.getUrlParameter = function (name) {
2256                name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
2257                var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
2258                var results = regex.exec(location.search);
2259                return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
2260            };
2261
2262            ee_mb_properties.fun.changeEvents = function () {
2263                jQuery("#drp_min_price").on('change', function () {
2264                    var newurl = ee_mb_properties.fun.replaceUrlParam('min', jQuery(this).val());
2265                    history.pushState(null, null, newurl);
2266                    ee_mb_properties.fun.get();
2267                });
2268
2269                jQuery("#drp_max_price").on('change', function () {
2270                    var newurl = ee_mb_properties.fun.replaceUrlParam('max', jQuery(this).val());
2271                    history.pushState(null, null, newurl);
2272                    ee_mb_properties.fun.get();
2273                });
2274
2275                jQuery("#drp_bedrooms").on('change', function () {
2276                    var newurl = ee_mb_properties.fun.replaceUrlParam('room', jQuery(this).val());
2277                    history.pushState(null, null, newurl);
2278                    ee_mb_properties.fun.get();
2279                });
2280
2281                jQuery("#drp_property_type").on('change', function () {
2282                    var newurl = ee_mb_properties.fun.replaceUrlParam('property_type', jQuery(this).val());
2283                    history.pushState(null, null, newurl);
2284                    ee_mb_properties.fun.get();
2285                });
2286
2287                jQuery("#promiximity_range").on('change', function () {
2288                    var newurl = ee_mb_properties.fun.replaceUrlParam('radius', jQuery(this).val());
2289                    history.pushState(null, null, newurl);
2290                    ee_mb_properties.fun.get();
2291                });
2292
2293                jQuery("#price_sort").on('change', function () {
2294                    var newurl = ee_mb_properties.fun.replaceUrlParam('price_sort', jQuery(this).val());
2295                    history.pushState(null, null, newurl);
2296                    ee_mb_properties.fun.get();
2297                });
2298
2299                jQuery("#btn_property_search").on('click', function () {
2300                    var areaUrl = ee_mb_properties.fun.replaceUrlParam('area', jQuery('#area').val());
2301                    history.pushState(null, null, areaUrl);
2302                    var sqftUrl = ee_mb_properties.fun.replaceUrlParam('sqft', jQuery('#sqft').val());
2303                    history.pushState(null, null, sqftUrl);
2304                    ee_mb_properties.fun.get();
2305                });
2306
2307                jQuery(document).on('click', '.page-numbers', function (e) {
2308                    e.preventDefault();
2309                    var pagination_link = jQuery(this).attr('href');
2310                    paged = pagination_link.split('?');
2311                    paged = paged[1].split('=');
2312                    var newurl = ee_mb_properties.fun.replaceUrlParam('pagination', paged[1]);
2313                    history.pushState(null, null, newurl);
2314                    ee_mb_properties.fun.get();
2315                });
2316            };
2317
2318            ee_mb_properties.fun.replaceUrlParam = function (paramName, paramValue) {
2319                var url = window.location.href;
2320                if (paramValue == null) {
2321                    paramValue = '';
2322                }
2323                var pattern = new RegExp('\\b(' + paramName + '=).*?(&|#|$)');
2324                if (url.search(pattern) >= 0) {
2325                    return url.replace(pattern, '$1' + paramValue + '$2');
2326                }
2327                url = url.replace(/[?#]$/, '');
2328                return url + (url.indexOf('?') > 0 ? '&' : '?') + paramName + '=' + paramValue;
2329            };
2330
2331            ee_mb_properties.fun.showLoading = function () {
2332                jQuery(document).find('.elementor_ee_mb_loading_overlay.property_search').show();
2333            };
2334
2335            ee_mb_properties.fun.hideLoading = function () {
2336                jQuery(document).find('.elementor_ee_mb_loading_overlay.property_search').hide();
2337            };
2338
2339            ee_mb_properties.fun.getviews = function () {
2340                jQuery('#btn_view_group li').on('click', function () {
2341                    var view = jQuery(this).data('view');
2342
2343                    if (view == 'list') {
2344                        jQuery('#ee_mb_property_listing').removeClass('grid');
2345                        jQuery('#ee_mb_property_listing').removeClass('map');
2346                        jQuery('#ee_mb_property_listing').addClass('list');
2347                    } else if (view == 'grid') {
2348                        jQuery('#ee_mb_property_listing').addClass('grid');
2349                        jQuery('#ee_mb_property_listing').removeClass('list');
2350                        jQuery('#ee_mb_property_listing').removeClass('map');
2351                    } else if (view == 'map') {
2352                        jQuery('#ee_mb_property_listing').removeClass('grid');
2353                        jQuery('#ee_mb_property_listing').removeClass('list');
2354                        jQuery('#ee_mb_property_listing').addClass('map');
2355                    }
2356
2357                    jQuery('#btn_view_group li').removeClass('active');
2358                    jQuery(this).addClass('active');
2359                    var newurl = ee_mb_properties.fun.replaceUrlParam('view', view);
2360                    history.pushState(null, null, newurl);
2361                    ee_mb_properties.fun.get();
2362                });
2363            };
2364
2365            ee_mb_properties.fun.init();
2366        }
2367    }
2368
2369    $(window).on('elementor/frontend/init', function () {
2370        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-properties.default', ee_mb_properties.fun);
2371    });
2372
2373    /*@ Property School Checker Map */
2374    var ee_mb_property_school_checker_map =
2375    {
2376        ee_mb_property_school_checker_map_fun: function ($scope, $) {
2377            var settings = $scope.find('#ee-mb-school-checker-map-wrapper').data('settings');
2378
2379            ee_mb_property_school_checker_map.ee_mb_property_school_checker_map_fun.init = function () {
2380
2381                if (typeof google === 'object' && typeof google.maps === 'object') {
2382                    if (settings && settings['addresses'] && settings['addresses']['address']) {
2383                        address = settings['addresses']['address'];
2384                    }
2385
2386                    if (address) {
2387                        ee_common.renderMap(address);
2388                    }
2389                }
2390            }
2391
2392            ee_mb_property_school_checker_map.ee_mb_property_school_checker_map_fun.init();
2393        }
2394    }
2395
2396    $(window).on('elementor/frontend/init', function () {
2397        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-property-school-checker-map.default', ee_mb_property_school_checker_map.ee_mb_property_school_checker_map_fun);
2398    });
2399
2400    /*@ Property slider */
2401    var ee_mb_property_slider =
2402    {
2403        ee_mb_property_slider_fun: function ($scope, $) {
2404            let $slides_counter = $scope.find('.slider-for > div.slider_item').length;
2405
2406            ee_mb_property_slider.ee_mb_property_slider_fun.init = function () {
2407                /*@ Slick slider*/
2408
2409                if ($slides_counter > 0) {
2410                    var slideCount = $scope.find('.slideCount');
2411                    $scope.find('.slider-for,.slider-nav').on('init reInit afterChange', function (event, slick, currentSlide, nextSlide) {
2412                        //currentSlide is undefined on init -- set it to 0 in this case (currentSlide is 0 based)
2413                        var slider_caption = $scope.find('.slick-current').attr('data-image-caption');
2414                        if (slider_caption) {
2415                            $scope.find('#slider_caption_text').text(slider_caption);
2416                        }
2417                        var i = (currentSlide ? currentSlide : 0) + 1;
2418                        $scope.find('.slideCount').html('<span class="slideCountItem">' + i + '</span> ' + 'of' + ' <span class="slideCountAll">' + slick.slideCount + '</span>');
2419                    });
2420
2421                    $scope.find('.slider-for').slick({
2422                        slidesToShow: 1,
2423                        slidesToScroll: 1,
2424                        arrows: true,
2425                        fade: true,
2426                        asNavFor: '.slider-nav',
2427                        slide: '.slider_item',
2428                        adaptiveHeight: true,
2429                    });
2430
2431                    $scope.find('.slider-nav').slick({
2432                        slidesToShow: 5, //(slides_counter > 5) ? (6 - 1) : (slides_counter == 1) ? 1 : (slides_counter - 1),
2433                        slidesToScroll: 1,
2434                        asNavFor: '.slider-for',
2435                        dots: false,
2436                        arrows: true,
2437                        centerMode: false,
2438                        focusOnSelect: true,
2439                    });
2440
2441                    $scope.find("#btn_enlarge").on('click', function () {
2442                        var photos = new Array();
2443                        $scope.find(".slider_item").each(function () {
2444                            href = jQuery(this).children('img').attr("src");
2445                            photos.push({
2446                                'src': href,
2447                            })
2448                        });
2449
2450                        jQuery.fancybox.open(photos, {
2451                            loop: true,
2452                            hash: "test"
2453                        });
2454                    });
2455                }
2456            }
2457
2458            ee_mb_property_slider.ee_mb_property_slider_fun.init();
2459        }
2460    }
2461
2462    $(window).on('elementor/frontend/init', function () {
2463        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-property-slider.default', ee_mb_property_slider.ee_mb_property_slider_fun);
2464    });
2465
2466    /*@ Property Agent */
2467    var ee_mb_property_agent =
2468    {
2469        ee_mb_property_agent_fun: function ($scope, $) {
2470            var settings = $scope.find('.agent_form').data('settings'),
2471                elementSettings = ee_common.getElementSettings($scope);
2472
2473            ee_mb_property_agent.ee_mb_property_agent_fun.init = function () {
2474                if (settings) {
2475                    var agent_email = '';
2476                    if (settings['agent_email']) {
2477                        agent_email = settings['agent_email'];
2478                    }
2479
2480                    jQuery(document).on('click', '#btn_send_agent', function (e) {
2481                        e.preventDefault();
2482                        ee_common.showLoading($scope);
2483                        var ajaxurl = ElementorExtensionsFrontendConfig.ajaxurl;
2484                        jQuery.ajax({
2485                            url: ajaxurl,
2486                            data: {
2487                                'action': 'eeMbAgentMailSendAjax',
2488                                'name': document.getElementById('name').value,
2489                                'email': document.getElementById('email').value,
2490                                'message': document.getElementById('message').value,
2491                                'phone': document.getElementById('telephone').value,
2492                                'property_link': document.getElementById('property_link').value,
2493                                'sendto': agent_email,
2494                            },
2495                            method: 'POST',
2496                            success: function (data) {
2497                                if (data.success) {
2498                                    jQuery(document).find('.form_error').text('');
2499                                    jQuery(document).find('.form_success').remove();
2500                                    jQuery('#btn_send_agent').after('<span class="form_success">' + elementSettings.form_success_msg + '</span>');
2501                                    jQuery('#agent_contact_form').trigger("reset");
2502                                } else {
2503                                    jQuery(document).find('.form_error').remove();
2504                                    jQuery.each(data.error, function (index, value) {
2505                                        jQuery('#' + index).after('<span class="form_error">' + value + '</span>');
2506                                    });
2507                                }
2508                                ee_common.hideLoading($scope);
2509                            },
2510                            error: function () {
2511                                alert('Something went wrong, please contact administrator');
2512                                ee_common.hideLoading($scope);
2513                            }
2514                        });
2515                    });
2516                }
2517            }
2518
2519            ee_mb_property_agent.ee_mb_property_agent_fun.init();
2520        }
2521    }
2522
2523    $(window).on('elementor/frontend/init', function () {
2524        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-property-agent.default', ee_mb_property_agent.ee_mb_property_agent_fun);
2525    });
2526
2527    /*@ Scroll navigation */
2528    var eeMbScrollNavigation = function ($scope, $) {
2529        var $target = $scope.find('.ee-mb-scroll-navigation'),
2530            instance = null,
2531            settings = $target.data('settings');
2532
2533        instance = new ee_mb_scroll_navigation($target, settings);
2534        instance.init();
2535    };
2536
2537    window.ee_mb_scroll_navigation = function ($selector, settings) {
2538        var self = this,
2539            $window = $(window),
2540            $document = $(document),
2541            $instance = $selector,
2542            $htmlBody = $('html, body'),
2543            $itemsList = $('.ee-mb-scroll-navigation__item', $instance),
2544            sectionList = [],
2545            defaultSettings = {
2546                speed: 500,
2547                blockSpeed: 500,
2548                offset: 200,
2549                sectionSwitch: false
2550            },
2551            settings = $.extend({}, defaultSettings, settings),
2552            sections = {},
2553            currentSection = null,
2554            isScrolling = false,
2555            isSwipe = false,
2556            hash = window.location.hash.slice(1),
2557            timeout = null,
2558            timeStamp = 0,
2559            platform = navigator.platform;
2560
2561        jQuery.extend(jQuery.easing, {
2562            easeInOutCirc: function (x, t, b, c, d) {
2563                if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
2564                return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
2565            }
2566        });
2567
2568        self.init = function () {
2569            self.setSectionsData();
2570
2571            $itemsList.on('click.ee_mb_scroll_navigation', self.onAnchorChange);
2572
2573            $window.on('scroll.ee_mb_scroll_navigation', self.onScroll);
2574            $window.on('resize.ee_mb_scroll_navigation orientationchange.ee_mb_scroll_navigation', ee_common.debounce(50, self.onResize));
2575            $window.on('load', function () { self.setSectionsData(); });
2576            $instance.parents('.elementor-column').css('min-height', 'auto');
2577            $document.keydown(function (event) {
2578
2579                if (38 == event.keyCode) {
2580                    self.directionSwitch(event, 'up');
2581                }
2582
2583                if (40 == event.keyCode) {
2584                    self.directionSwitch(event, 'down');
2585                }
2586            });
2587
2588            if (settings.sectionSwitch) {
2589                if ('onwheel' in window) {
2590                }
2591                $document.on('mousewheel.ee_mb_scroll_navigation DOMMouseScroll.ee_mb_scroll_navigation', self.onWheel);
2592            }
2593
2594            if (hash && sections.hasOwnProperty(hash)) {
2595                $itemsList.addClass('invert');
2596            }
2597
2598            for (var section in sections) {
2599                var $section = sections[section].selector;
2600
2601                elementorFrontend.waypoint($section, function (direction) {
2602                    var $this = $(this),
2603                        sectionId = $this.attr('id');
2604
2605                    if ('down' === direction && !isScrolling && !isSwipe) {
2606                        window.history.pushState(null, null, '#' + sectionId);
2607                        currentSection = sectionId;
2608                        $itemsList.removeClass('active');
2609                        $('[data-anchor=' + sectionId + ']', $instance).addClass('active');
2610
2611                        $itemsList.removeClass('invert');
2612
2613                        if (sections[sectionId].invert) {
2614                            $itemsList.addClass('invert');
2615                        }
2616                    }
2617                }, {
2618                    offset: '95%',
2619                    triggerOnce: false
2620                });
2621
2622                elementorFrontend.waypoint($section, function (direction) {
2623                    var $this = $(this),
2624                        sectionId = $this.attr('id');
2625
2626                    if ('up' === direction && !isScrolling && !isSwipe) {
2627                        window.history.pushState(null, null, '#' + sectionId);
2628                        currentSection = sectionId;
2629                        $itemsList.removeClass('active');
2630                        $('[data-anchor=' + sectionId + ']', $instance).addClass('active');
2631
2632                        $itemsList.removeClass('invert');
2633
2634                        if (sections[sectionId].invert) {
2635                            $itemsList.addClass('invert');
2636                        }
2637                    }
2638                }, {
2639                    offset: '0%',
2640                    triggerOnce: false
2641                });
2642            }
2643        };
2644
2645        self.onAnchorChange = function (event) {
2646            var $this = $(this),
2647                sectionId = $this.data('anchor'),
2648                offset = null;
2649
2650            if (!sections.hasOwnProperty(sectionId)) {
2651                return false;
2652            }
2653
2654            offset = sections[sectionId].offset - settings.offset;
2655
2656            if (!isScrolling) {
2657                isScrolling = true;
2658                window.history.pushState(null, null, '#' + sectionId);
2659                currentSection = sectionId;
2660
2661                $itemsList.removeClass('active');
2662                $this.addClass('active');
2663
2664                $itemsList.removeClass('invert');
2665
2666                if (sections[sectionId].invert) {
2667                    $itemsList.addClass('invert');
2668                }
2669
2670                $htmlBody.stop().clearQueue().animate({ 'scrollTop': offset }, settings.speed, 'easeInOutCirc', function () {
2671                    isScrolling = false;
2672                });
2673            }
2674        };
2675
2676        self.directionSwitch = function (event, direction) {
2677            var direction = direction || 'up',
2678                sectionId,
2679                nextItem = $('[data-anchor=' + currentSection + ']', $instance).next(),
2680                prevItem = $('[data-anchor=' + currentSection + ']', $instance).prev();
2681
2682            if (isScrolling) {
2683                return false;
2684            }
2685
2686            if ('up' === direction) {
2687                if (prevItem[0]) {
2688                    prevItem.trigger('click.ee_mb_scroll_navigation');
2689                }
2690            }
2691
2692            if ('down' === direction) {
2693                if (nextItem[0]) {
2694                    nextItem.trigger('click.ee_mb_scroll_navigation');
2695                }
2696            }
2697        };
2698
2699        self.onScroll = function (event) {
2700            if (isScrolling || isSwipe) {
2701                event.preventDefault();
2702            }
2703        };
2704
2705        self.onWheel = function (event) {
2706
2707            if (isScrolling || isSwipe) {
2708                event.preventDefault();
2709                return false;
2710            }
2711
2712            var $target = $(event.target),
2713                $section = $target.closest('.elementor-top-section'),
2714                sectionId = $section.attr('id'),
2715                offset = 0,
2716                newSectionId = false,
2717                prevSectionId = false,
2718                nextSectionId = false,
2719                delta = event.originalEvent.wheelDelta || -event.originalEvent.detail,
2720                direction = (0 < delta) ? 'up' : 'down',
2721                windowScrollTop = $window.scrollTop();
2722
2723            if (self.beforeCheck()) {
2724                sectionId = ee_common.getObjectFirstKey(sections);
2725            }
2726
2727            if (self.afterCheck()) {
2728                sectionId = ee_common.getObjectLastKey(sections);
2729            }
2730
2731            if (sectionId && sections.hasOwnProperty(sectionId)) {
2732
2733                prevSectionId = ee_common.getObjectPrevKey(sections, sectionId);
2734                nextSectionId = ee_common.getObjectNextKey(sections, sectionId);
2735
2736                if ('up' === direction) {
2737                    if (!nextSectionId && sections[sectionId].offset < windowScrollTop) {
2738                        newSectionId = sectionId;
2739                    } else {
2740                        newSectionId = prevSectionId;
2741                    }
2742                }
2743
2744                if ('down' === direction) {
2745                    if (!prevSectionId && sections[sectionId].offset > windowScrollTop + 5) {
2746                        newSectionId = sectionId;
2747                    } else {
2748                        newSectionId = nextSectionId;
2749                    }
2750                }
2751
2752                if (newSectionId) {
2753
2754                    if (event.timeStamp - timeStamp > 10 && 'MacIntel' == platform) {
2755                        timeStamp = event.timeStamp;
2756                        event.preventDefault();
2757                        return false;
2758                    }
2759
2760                    event.preventDefault();
2761
2762                    offset = sections[newSectionId].offset - settings.offset;
2763                    window.history.pushState(null, null, '#' + newSectionId);
2764                    currentSection = newSectionId;
2765
2766                    $itemsList.removeClass('active');
2767                    $('[data-anchor=' + newSectionId + ']', $instance).addClass('active');
2768
2769                    $itemsList.removeClass('invert');
2770
2771                    if (sections[newSectionId].invert) {
2772                        $itemsList.addClass('invert');
2773                    }
2774
2775                    isScrolling = true;
2776                    self.scrollStop();
2777                    $htmlBody.animate({ 'scrollTop': offset }, settings.blockSpeed, 'easeInOutCirc', function () {
2778                        isScrolling = false;
2779                    });
2780                }
2781            }
2782
2783        };
2784
2785        self.setSectionsData = function () {
2786            $itemsList.each(function () {
2787                var $this = $(this),
2788                    sectionId = $this.data('anchor'),
2789                    sectionInvert = 'yes' === $this.data('invert') ? true : false,
2790                    $section = $('#' + sectionId);
2791
2792                $section.addClass('ee-mb-scroll-navigation-section');
2793                $section.attr({ 'touch-action': 'none' });
2794
2795                if ($section[0]) {
2796                    sections[sectionId] = {
2797                        selector: $section,
2798                        offset: Math.round($section.offset().top),
2799                        height: $section.outerHeight(),
2800                        invert: sectionInvert
2801                    };
2802                }
2803            });
2804        };
2805
2806        self.beforeCheck = function (event) {
2807            var windowScrollTop = $window.scrollTop(),
2808                firstSectionId = ee_common.getObjectFirstKey(sections),
2809                offset = sections[firstSectionId].offset,
2810                topBorder = windowScrollTop + $window.outerHeight();
2811
2812            if (topBorder > offset) {
2813                return false;
2814            }
2815
2816            return true;
2817        };
2818
2819        self.afterCheck = function (event) {
2820            var windowScrollTop = $window.scrollTop(),
2821                lastSectionId = ee_common.getObjectLastKey(sections),
2822                offset = sections[lastSectionId].offset,
2823                bottomBorder = sections[lastSectionId].offset + sections[lastSectionId].height;
2824
2825            if (windowScrollTop < bottomBorder) {
2826                return false;
2827            }
2828
2829            return true;
2830        };
2831
2832        self.onResize = function (event) {
2833            self.setSectionsData();
2834        };
2835
2836        self.scrollStop = function () {
2837            $htmlBody.stop(true);
2838        };
2839
2840        self.mobileAndTabletcheck = function () {
2841            var check = false;
2842
2843            (function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera);
2844
2845            return check;
2846        };
2847
2848    }
2849
2850    $(window).on('elementor/frontend/init', function () {
2851        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-scroll-navigation.default', eeMbScrollNavigation);
2852    });
2853
2854    /*@ Table */
2855    var ee_mb_table = {
2856        ee_table: function ($scope, $) {
2857
2858            ee_mb_table.ee_table.elementSettings = ee_common.getElementSettings($scope);
2859
2860            var $table = $scope.find('table.ele-site-table'),
2861                sortableInstance = $table.data('tablesorter');
2862
2863            ee_mb_table.ee_table.init = function () {
2864
2865                if ('scrollable' == ee_mb_table.ee_table.elementSettings.scrollable) {
2866                    $scope.css('overflow-x', 'auto');
2867                }
2868
2869                if ('yes' == ee_mb_table.ee_table.elementSettings.sortable) {
2870                    $table.tablesorter({
2871                        cssHeader: 'ele-site-table__sort',
2872                        cssAsc: 'ele-site-table__sort--up',
2873                        cssDesc: 'ele-site-table__sort--down',
2874                    });
2875                } else {
2876                    $table.removeData('tablesorter');
2877                }
2878            };
2879
2880            ee_mb_table.ee_table.init();
2881        }
2882    }
2883
2884    $(window).on('elementor/frontend/init', function () {
2885        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-table.default', ee_mb_table.ee_table);
2886    });
2887
2888    /*@ Testimonial Swiper */
2889    var ee_testimonial_swiper = {
2890        getDefaultSettings: function getDefaultSettings() {
2891            return {
2892                selectors: {
2893                    mainSwiper: '.elementor-main-swiper',
2894                    swiperSlide: '.swiper-slide'
2895                },
2896                slidesPerView: {
2897                    desktop: 3,
2898                    tablet: 2,
2899                    mobile: 1
2900                }
2901            };
2902        },
2903        ee_testi_fun: function ($scope, $) {
2904
2905            var elementSettings = ee_common.getElementSettings($scope);
2906
2907            if ('progress' === elementSettings.pagination) {
2908                elementSettings.pagination = 'progressbar';
2909            }
2910
2911            var swiperOptions = {
2912                grabCursor: true,
2913                initialSlide: 1,
2914                slidesPerView: (elementSettings.slides_per_view) ? elementSettings.slides_per_view : 1,
2915                slidesPerGroup: (elementSettings.slides_to_scroll) ? elementSettings.slides_to_scroll : 1,
2916                spaceBetween: (elementSettings.space_between.size) ? elementSettings.space_between.size : 10,
2917                loop: 'yes' === elementSettings.loop,
2918                speed: elementSettings.speed,
2919                effect: "slide",
2920            };
2921
2922            if (elementSettings.show_arrows) {
2923                swiperOptions.navigation = {
2924                    prevEl: '.elementor-swiper-button-prev',
2925                    nextEl: '.elementor-swiper-button-next'
2926                };
2927            }
2928
2929            if (elementSettings.pagination) {
2930                swiperOptions.pagination = {
2931                    el: '.swiper-pagination',
2932                    type: elementSettings.pagination,
2933                    clickable: true
2934                };
2935            }
2936
2937            if (elementSettings.autoplay) {
2938                swiperOptions.autoplay = {
2939                    delay: elementSettings.autoplay_speed,
2940                    disableOnInteraction: !!elementSettings.pause_on_interaction
2941                };
2942            }
2943
2944            swiperOptions.breakpoints = {
2945                767: {
2946                    slidesPerGroup: (elementSettings.slides_to_scroll_mobile) ? elementSettings.slides_to_scroll_mobile : 1,
2947                    slidesPerView: (elementSettings.slides_per_view_mobile) ? elementSettings.slides_per_view_mobile : 1,
2948                    spaceBetween: (elementSettings.space_between_mobile.size) ? elementSettings.space_between_mobile.size : 10,
2949                },
2950                1024: {
2951                    slidesPerGroup: (elementSettings.slides_to_scroll_tablet) ? elementSettings.slides_to_scroll_tablet : 1,
2952                    slidesPerView: (elementSettings.slides_per_view_tablet) ? elementSettings.slides_per_view_tablet : 1,
2953                    spaceBetween: (elementSettings.space_between_tablet.size) ? elementSettings.space_between_tablet.size : 10,
2954                }
2955            };
2956
2957            var $slider_wrapper = $scope.find('.elementor-main-swiper');
2958
2959            ee_testimonial_swiper.ee_testi_fun.init = function () {
2960                new Swiper($slider_wrapper, swiperOptions);
2961            };
2962
2963            /*@ Change the height of image as per content */
2964            $slider_wrapper.find('.elementor-testimonial__content').each(function () {
2965                var tallness = jQuery(this).outerHeight();
2966                jQuery(this).siblings('.elementor-testimonial__footer').height(tallness);
2967            });
2968
2969            jQuery(window).resize(function () {
2970                $slider_wrapper.find('.elementor-testimonial__content').each(function () {
2971                    var tallness = jQuery(this).outerHeight();
2972                    jQuery(this).siblings('.elementor-testimonial__footer').height(tallness);
2973                });
2974            });
2975
2976            ee_testimonial_swiper.ee_testi_fun.init();
2977        }
2978    }
2979
2980    $(window).on('elementor/frontend/init', function () {
2981        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-testimonial-swi
2981per.default', ee_testimonial_swiper.ee_testi_fun);
2982    });
2983
2984    /*@ The Event Calendar */
2985    var ee_mb_the_event_calendar = {
2986
2987        ee_mb_the_events_cal_fun: function ($scope, $) {
2988
2989            ee_mb_the_event_calendar.ee_mb_the_events_cal_fun.init = function () {
2990
2991                var elementSettings = ee_common.getElementSettings($scope),
2992                    ajaxurl = ElementorExtensionsFrontendConfig.ajaxurl;
2993
2994                /**
2995                 * @ Start: Summary view
2996                */
2997                jQuery(document).on('click', '.myeventon_summary_eventlist_wrapper .summary_filter a', function (e) {
2998                    e.preventDefault();
2999                    var current = jQuery(this);
3000                    ee_common.showLoading($scope);
3001                    var data_month = jQuery(this).attr('data-month');
3002                    var data_year = jQuery(this).attr('data-year');
3003
3004                    var sumarry_wrapper = current.parents('.myeventon_summary_eventlist_wrapper'),
3005                        sumarry_filter = sumarry_wrapper.find('> .summary_filter'),
3006                        enable_event_detail = sumarry_filter.data('event-detail'),
3007                        disable_event_link = sumarry_filter.data('disable-link'),
3008                        event_date_layout = sumarry_filter.data('date-layout'),
3009                        event_limit = sumarry_filter.data('event-limit'),
3010                        event_offset = sumarry_filter.data('event-offset'),
3011                        hide_past_events = sumarry_filter.data('hide-past-events');
3012
3013                    var d = new Date();
3014
3015                    if (!data_year) {
3016                        var data_year = sumarry_wrapper.find('.summary_filter > .year_filter_wrapper a.current').attr('data-year');
3017                    } else {
3018                        sumarry_wrapper.find('> .summary_filter > .year_filter_wrapper a').removeClass('current');
3019                    }
3020
3021                    if (!data_month) {
3022                        var data_month = sumarry_wrapper.find('.summary_filter > .month_filter_wrapper > a.current').attr('data-month');
3023                    } else {
3024                        sumarry_wrapper.find('> .summary_filter > .month_filter_wrapper a').removeClass('current');
3025                    }
3026
3027                    jQuery(this).addClass('current');
3028
3029                    jQuery.ajax({
3030                        url: ajaxurl,
3031                        data: {
3032                            'action': 'getSummaryListAjaxTec',
3033                            'month': data_month,
3034                            'year': data_year,
3035                            'event_date_layout': event_date_layout,
3036                            'cat': '',
3037                            'limit': event_limit,
3038                            'offset': event_offset,
3039                            'enable_event_detail': enable_event_detail,
3040                            'disable_link': disable_event_link,
3041                            'hide_past_events': hide_past_events,
3042                            'default_to_show_time': elementSettings.default_to_show_time,
3043                            'default_to_show_time_formate': elementSettings.default_to_show_time_formate,
3044                            'event_categories': elementSettings.event_categories,
3045                            'start_date': elementSettings.start_date,
3046                        },
3047                        method: 'POST',
3048                        success: function (data) {
3049                            sumarry_wrapper.find('.summaryEventList').html(data).append('<div class="elementor_extensions_loading_overlay"><div class="elementor_extensions_loader"></div></div>');
3050                            ee_common.hideLoading($scope);
3051                        },
3052                        error: function (errorThrown) {
3053                            console.log(errorThrown);
3054                            ee_common.hideLoading($scope);
3055                        }
3056                    });
3057                });
3058
3059
3060
3061
3062                function onSummaryClick(e) {
3063
3064
3065
3066                    var current = jQuery(this);
3067                    ee_common.showLoading($scope);
3068
3069                    var sumarry_wrapper = current.parents('.myeventon_summary_eventlist_wrapper'),
3070                        sumarry_filter = sumarry_wrapper.find('> .summary_filter'),
3071                        event_limit = sumarry_filter.data('event-limit'),
3072                        event_offset = sumarry_filter.data('event-offset')
3073                    month_year = current.data('date'),
3074                        event_date_layout = current.data('date-layout'),
3075                        enable_event_detail = current.data('event-detail'),
3076                        disable_event_link = current.data('disable-link'),
3077                        hide_past_events = current.data('hide-past-events'),
3078                        default_to_show_time = current.data('default_to_show_time'),
3079                        default_to_show_time_formate = current.data('default_to_show_time_formate'),
3080                        event_categories = current.data('event_categories'),
3081                        end_date = current.data('end_date'),
3082                        order = current.data('order'),
3083                        eventDisplay = current.data('eventDisplay'),
3084                        posts_per_page = current.data('posts_per_page'),
3085                        splited = month_year.split('-');
3086
3087                    if (jQuery('[data-elementor-post-type="page"] [data-settings*="' + elementSettings.event_categories + '"]').length > 0) {
3088
3089
3090                        jQuery.ajax({
3091                            url: ajaxurl,
3092                            data: {
3093                                'action': 'getSummaryListAjaxTec',
3094                                'month_year': month_year,
3095                                'event_date_layout': event_date_layout,
3096                                'enable_event_detail': enable_event_detail,
3097                                'disable_link': disable_event_link,
3098                                'hide_past_events': hide_past_events,
3099                                'limit': event_limit,
3100                                'offset': event_offset,
3101                                'default_to_show_time': default_to_show_time,
3102                                'default_to_show_time_formate': default_to_show_time_formate,
3103                                'event_categories': elementSettings.event_categories,
3104                                'start_date': elementSettings.start_date,
3105                                'end_date': end_date,
3106                                'order': order,
3107                                'eventDisplay': eventDisplay,
3108                                'posts_per_page': posts_per_page,
3109                                'default_to_show_time': elementSettings.default_to_show_time,
3110                                'default_to_show_time_formate': elementSettings.default_to_show_time_formate,
3111                            },
3112                            method: 'POST',
3113                            success: function (data) {
3114
3115                                jQuery('.myeventon_summary_eventlist_wrapper > .summary_filter  a').removeClass('current');
3116                                jQuery('.myeventon_summary_eventlist_wrapper > .summary_filter > .year_filter_wrapper a[data-year="' + splited[0] + '"]').addClass('current');
3117                                jQuery('.myeventon_summary_eventlist_wrapper > .summary_filter > .month_filter_wrapper a[data-month="' + splited[1] + '"]').addClass('current');
3118
3119                                console.log(elementSettings.event_categories);
3120                                console.log(default_to_show_time_formate > 0);
3121
3122                                //jQuery('.summaryEventList').html(data).append('<div class="elementor_extensions_loading_overlay"><div class="elementor_extensions_loader"></div></div>');
3123                                document.querySelector('.summaryEventList').innerHTML = '';
3124                                document.querySelector('.summaryEventList').innerHTML = data;
3125                                document.querySelector('.summaryEventList').insertAdjacentHTML('beforeend', '<div class="elementor_extensions_loading_overlay"><div class="elementor_extensions_loader"></div></div>')
3126
3127
3128                                ee_common.hideLoading($scope);
3129                            },
3130                            error: function (errorThrown) {
3131                                console.log(errorThrown);
3132                                ee_common.hideLoading($scope);
3133                            }
3134                        });
3135
3136
3137                    }
3138
3139                }
3140
3141
3142                jQuery(document).on('click', '#summary_prev', onSummaryClick);
3143                jQuery(document).on('click', '#summary_next', onSummaryClick);
3144
3145
3146                /*@Show more button click*/
3147                jQuery(document).on('click', '.myeventon_summary_eventlist_wrapper .summaryEventList .show_more_events', function () {
3148                    var current = jQuery(this);
3149                    ee_common.showLoading($scope);
3150
3151                    var sumarry_wrapper = current.parents('.myeventon_summary_eventlist_wrapper'),
3152                        sumarry_filter = sumarry_wrapper.find('> .summary_filter'),
3153                        data_year = sumarry_wrapper.find('.summary_filter > .year_filter_wrapper a.current').attr('data-year'),
3154                        data_month = sumarry_wrapper.find('.summary_filter > .month_filter_wrapper > a.current').attr('data-month'),
3155                        event_date_layout = sumarry_filter.data('date-layout'),
3156                        enable_event_detail = sumarry_filter.data('event-detail'),
3157                        disable_event_link = sumarry_filter.data('disable-link'),
3158                        hide_past_events = sumarry_filter.data('hide-past-events'),
3159                        event_offset = parseInt(jQuery(document).find('#hd_offset').val()),
3160                        event_limit = sumarry_filter.data('event-limit'),
3161                        show_future_events = sumarry_filter.data('future-events');
3162
3163                    /*@ Determine first click */
3164                    if (current.hasClass('clicked')) {
3165                        event_offset = parseInt(jQuery(document).find('#hd_limit_offset').val());
3166                    } else {
3167                        current.addClass('clicked');
3168                        event_offset = event_limit + event_offset;
3169                    }
3170
3171                    let empty = false;
3172                    if (!elementSettings.event_categories) {
3173                        empty = true;
3174                    }
3175
3176                    if (empty || (jQuery('[data-elementor-post-type="page"] [data-settings*="' + elementSettings.event_categories + '"]').length > 0)) {
3177
3178                        jQuery.ajax({
3179                            url: ajaxurl,
3180                            data: {
3181                                'action': 'getSummaryListAjaxTec',
3182                                'month': data_month,
3183                                'year': data_year,
3184                                'limit': elementSettings.event_limit,
3185                                'offset': event_offset,
3186                                'event_date_layout': event_date_layout,
3187                                'enable_event_detail': enable_event_detail,
3188                                'disable_link': disable_event_link,
3189                                'hide_past_events': hide_past_events,
3190                                'show_future_events': (show_future_events) ? show_future_events : '',
3191                                'orderby': elementSettings.orderby,
3192                                'order': elementSettings.order,
3193                                'query_limit': elementSettings.query_limit,
3194                                'end_date': elementSettings.end_date,
3195                                'custom_end_date': elementSettings.custom_end_date,
3196                                'start_date': elementSettings.start_date,
3197                                'custom_start_date': elementSettings.custom_start_date,
3198                                'event_categories': elementSettings.event_categories,
3199                                'default_to_show_time': elementSettings.default_to_show_time,
3200                                'default_to_show_time_formate': elementSettings.default_to_show_time_formate,
3201                            },
3202                            method: 'POST',
3203                            success: function (data) {
3204                                document.querySelector('.summaryEventList').innerHTML = '';
3205                                jQuery('.summaryEventList').html(data).append('<div class="elementor_extensions_loading_overlay"><div class="elementor_extensions_loader"></div></div>');
3206                                jQuery(document).find('#hd_offset').val(event_offset);
3207                                ee_common.hideLoading($scope);
3208                            },
3209                            error: function (errorThrown) {
3210                                console.log(errorThrown);
3211                                ee_common.hideLoading($scope);
3212                            }
3213                        });
3214                    }
3215                });
3216
3217                /**
3218                 * @ Start: Summary view
3219                */
3220
3221                /*@ Calendar view*/
3222                var calendar_wrapper_div = $scope.find("div.tec.myeventon_calendar");
3223                if (calendar_wrapper_div.length > 0) {
3224                    calendar_wrapper_div.each(function () {
3225
3226                        var calendar_id = jQuery(this).attr('data-id');
3227                        var event_list = jQuery(this).data('caldata');
3228                        var disable_link = jQuery(this).data('disable-link');
3229
3230                        var calendarEl = document.getElementById('calendar-' + calendar_id);
3231
3232                        var calendar = new FullCalendar.Calendar(calendarEl, {
3233                            displayEventTime: false,
3234                            plugins: ['interaction', 'dayGrid', 'timeGrid', 'list'],
3235                            header: {
3236                                left: 'prev,next today',
3237                                center: 'title',
3238                                right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth'
3239                            },
3240                            events: event_list,
3241                            eventRender: function (event, element) {
3242                                if (typeof element !== 'undefined') {
3243                                    element.addClass("custom-event");
3244                                }
3245                            },
3246                            eventClick: function (arg) {
3247                                var clicked_date = arg.event.start;
3248                                clicked_date = moment(clicked_date).format("YYYY-MM-DD");
3249
3250                                var current = jQuery(arg.el);
3251                                jQuery.ajax({
3252                                    url: ajaxurl,
3253                                    data: {
3254                                        'action': 'getEventListByDayTec',
3255                                        'date': clicked_date,
3256                                        'disable_link': disable_link
3257                                    },
3258                                    method: 'POST',
3259                                    success: function (data) {
3260                                        current.parents('.myeventon_calendar').siblings('.myeventon_calendar_summaryview').html(data);
3261                                    },
3262                                    error: function (errorThrown) {
3263                                    }
3264                                });
3265                            },
3266                            dayClick: function (arg) {
3267                                var clicked_date = arg.event.start;
3268                                clicked_date = moment(clicked_date).format("YYYY-MM-DD");
3269
3270                                var current = jQuery(arg.el);
3271                                jQuery.ajax({
3272                                    url: ajaxurl,
3273                                    data: {
3274                                        'action': 'getEventListByDayTec',
3275                                        'date': clicked_date,
3276                                        'disable_link': disable_link,
3277                                    },
3278                                    method: 'POST',
3279                                    success: function (data) {
3280                                        current.parents('.myeventon_calendar').siblings('.myeventon_calendar_summaryview').html(data);
3281                                    },
3282                                    error: function (errorThrown) {
3283                                    }
3284                                });
3285                            }
3286                        });
3287                        calendar.changeView(elementSettings.default_calendar_view);
3288                        calendar.render();
3289                    });
3290                }
3291
3292                /*@ Display - Hide summary description no click of event label */
3293                if (elementSettings.enable_event_detail === 'yes') {
3294                    jQuery(document).on('click', '.myeventon_calendar_summaryview li,.summaryEventList li', function (e) {
3295                        jQuery(this).next('.summary_cal_description').slideToggle();
3296                        e.preventDefault();
3297                    });
3298                }
3299            };
3300            ee_mb_the_event_calendar.ee_mb_the_events_cal_fun.init();
3301
3302        }
3303
3304    }
3305
3306    $(window).on('elementor/frontend/init', function () {
3307        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-the-events-calendar.default', ee_mb_the_event_calendar.ee_mb_the_events_cal_fun);
3308    });
3309
3310    // Event calendar
3311    var event_calendar = {
3312        event_calendar_fun: function ($scope, $) {
3313
3314            var elementSettings = ee_common.getElementSettings($scope);
3315
3316            event_calendar.event_calendar_fun.init = function () {
3317
3318                jQuery('.categories_tribe_filter').change(function () {
3319                    var categorySlug = jQuery(this).val();
3320                    elementSettings['event_categories'] = categorySlug;
3321                    jQuery.ajax({
3322                        url: ElementorExtensionsFrontendConfig.ajaxurl,
3323                        data: {
3324                            'action': 'getEventFilterAjax',
3325                            'setting': elementSettings,
3326                        },
3327                        method: 'POST',
3328                        success: function (data) {
3329                            jQuery('.past_events_wrapper.tec-wrapper').remove();
3330                            jQuery('#filter').replaceWith(data).append('<div class="elementor_extensions_loading_overlay"><div class="elementor_extensions_loader"></div></div>');
3331                            ee_common.hideLoading($scope);
3332                        },
3333                        error: function (errorThrown) {
3334                            console.log(errorThrown);
3335                            ee_common.hideLoading($scope);
3336                        }
3337                    });
3338                });
3339            };
3340
3341            event_calendar.event_calendar_fun.init();
3342        }
3343    }
3344
3345    $(window).on('elementor/frontend/init', function () {
3346        elementorFrontend.hooks.addAction('frontend/element_ready/ee-mb-the-events-calendar.default', event_calendar.event_calendar_fun);
3347    });
3348
3349})(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.