PageSourceSearch

https://digitallifelegacy.nl/wp-content/plugins/modern-events-cale…/js/frontend.js?ver=7.37.0.1791207305

js digitallifelegacy.nl collected 2026-10-08 11:17:20 UTC 326,291 bytes, 7,491 lines download raw bytes

1// MEC Single Event Displayer
2var mecSingleEventDisplayer =
3{
4    getSinglePage: function (id, occurrence, time, ajaxurl, layout, image_popup) {
5        if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6        jQuery('.mec-modal-result').addClass('mec-modal-preloader');
7
8        jQuery.ajax(
9            {
10                url: ajaxurl,
11                data: "action=mec_load_single_page&id=" + id + (occurrence != null ? "&occurrence=" + occurrence : "") + (time != null ? "&time=" + time : "") + "&layout=" + layout,
12                type: "get",
13                success: function (response) {
14                    jQuery('.mec-modal-result').removeClass("mec-modal-preloader");
15                    jQuery.featherlight(response);
16
17                    setTimeout(function () {
18                        if (typeof grecaptcha !== 'undefined' && jQuery('#g-recaptcha').length > 0) {
19                            grecaptcha.render("g-recaptcha", {
20                                sitekey: mecdata.recapcha_key
21                            });
22                        }
23
24                        // Event Gallery
25                        mec_init_event_gallery();
26
27                        // Number Spinner
28                        mec_init_number_spinner();
29                    }, 1000);
30
31                    if (image_popup != 0) {
32                        if (jQuery('.featherlight-content .mec-events-content a img').length > 0) {
33                            jQuery('.featherlight-content .mec-events-content a img').each(function () {
34                                if (jQuery(this).attr('src') === jQuery(this).closest('a').attr('href')) {
35                                    jQuery(this).closest('a').attr('data-featherlight', 'image');
36                                }
37                            });
38                        }
39                    }
40
41                    if (typeof mecdata.enableSingleFluent != 'undefined' && mecdata.enableSingleFluent) mecFluentSinglePage();
42                },
43                error: function () { }
44            });
45    }
46};
47
48var mec_search_callbacks = [];
49
50function mecApplySelect2Accessibility($select)
51{
52    if(!$select || !$select.length) return;
53
54    var ariaLabel = $select.attr('aria-label') || $select.attr('title') || '';
55    if(!ariaLabel || !$select.attr('id')) return;
56
57    var $selection = jQuery('#select2-' + $select.attr('id') + '-container').closest('.select2-selection');
58    if(!$selection.length) return;
59
60    $selection.attr('aria-label', ariaLabel);
61}
62
63function mecFormatA11yString(template, replacements)
64{
65    var output = String(template || '');
66
67    jQuery.each(replacements || [], function (index, value) {
68        output = output.replace('%' + (index + 1) + '$s', value);
69    });
70
71    return output;
72}
73
74// MEC SEARCH FORM PLUGIN
75(function ($) {
76    $.fn.mecSearchForm = function (options) {
77
78        // Default Options
79        var settings = $.extend({
80            // These are the defaults.
81            id: 0,
82            refine: 0,
83            ajax_url: '',
84            search_form_element: '',
85            atts: '',
86            start_date: '',
87            callback: function () { }
88        }, options);
89        if (typeof mec_search_callbacks[settings.id] === 'undefined') mec_search_callbacks[settings.id] = [];
90
91        var callback_exists = false;
92        for (const callback of mec_search_callbacks[settings.id]) {
93            if (callback.toString() === settings.callback.toString()) callback_exists = true;
94        }
95
96        if (!callback_exists) mec_search_callbacks[settings.id].push(settings.callback);
97
98        $('#mec_search_form_' + settings.id).off('submit.mecSearchForm' + settings.id).on('submit.mecSearchForm' + settings.id, (e) => {
99            e.preventDefault();
100        });
101
102        var $event_cost_min = $("#mec_sf_event_cost_min_" + settings.id);
103        var $event_cost_max = $("#mec_sf_event_cost_max_" + settings.id);
104        var $time_start = $("#mec_sf_timepicker_start_" + settings.id);
105        var $time_end = $("#mec_sf_timepicker_end_" + settings.id);
106        var $s = $("#mec_sf_s_" + settings.id);
107        var $address = $("#mec_sf_address_s_" + settings.id);
108        var $address_radius = $("#mec_sf_address_radius_" + settings.id);
109        var $date_start = $('#mec_sf_date_start_' + settings.id);
110        var $date_end = $('#mec_sf_date_end_' + settings.id);
111        var $event_type = $('#mec_sf_event_type_' + settings.id);
112        var $event_type_2 = $('#mec_sf_event_type_2_' + settings.id);
113        var $attribute = $('#mec_sf_attribute_' + settings.id);
114        const $wrapper = $("#mec_search_form_" + settings.id);
115        var $custom_fields = $wrapper.find('.mec-custom-event-field');
116        const $status = $("#mec_search_form_" + settings.id + "_status");
117        var $reset = $("#mec_search_form_" + settings.id + '_reset');
118        var $event_status = $(".mec_sf_event_status_" + settings.id);
119        var last_field;
120
121        // URL Sync option
122        var updateUrl = (typeof mecdata !== 'undefined' && parseInt(mecdata.sf_update_url) === 1);
123        var isApplyingFromURL = false;
124        var originalURL = window.location.href;
125
126        // Trigger
127        trigger();
128
129        $(document).off('mec_search_init.mecSearchA11y' + settings.id).on('mec_search_init.mecSearchA11y' + settings.id, function (event, view, viewSettings, response) {
130            if (!viewSettings || String(viewSettings.id) !== String(settings.id)) return;
131
132            announceSearchResults(response);
133        });
134
135        $custom_fields.off('change.mecSf' + settings.id).on('change.mecSf' + settings.id, function (e) {
136            last_field = $(this).data('field-id');
137            search();
138        });
139
140        $s.off('change').on('change', function (e) {
141            last_field = 's';
142            search();
143        });
144
145        $address.off('change').on('change', function (e) {
146            last_field = 'address';
147            search();
148        });
149        $address_radius.off('change').on('change', function (e) {
150            last_field = 'address_radius';
151            search();
152        });
153
154        $event_cost_min.off('change').on('change', function (e) {
155            last_field = 'cost-min';
156            $event_cost_max.attr('min', $(this).val());
157            search();
158        });
159
160        $event_cost_max.off('change').on('change', function (e) {
161            last_field = 'cost-max';
162            $event_cost_min.attr('max', $(this).val());
163            search();
164        });
165
166        // Timepicker
167        if ($time_start.length) {
168            var format = (($time_start.data('format') === 12) ? 'hh:mm p' : 'HH:mm');
169            $time_start.timepicker(
170                {
171                    timeFormat: format,
172                    minTime: new Date(0, 0, 0, 0, 0, 0),
173                    maxTime: new Date(0, 0, 0, 23, 55, 0),
174                    interval: 5,
175                    dropdown: false,
176                    change: function () {
177                        last_field = 'time-start';
178                        search();
179                    }
180                });
181
182            $time_end.timepicker(
183                {
184                    timeFormat: format,
185                    minTime: new Date(0, 0, 0, 0, 0, 0),
186                    maxTime: new Date(0, 0, 0, 23, 55, 0),
187                    interval: 5,
188                    dropdown: false,
189                    change: function () {
190                        last_field = 'time-end';
191                        search();
192                    }
193                });
194        }
195
196        var $month = $("#mec_sf_month_" + settings.id);
197        var $year = $("#mec_sf_year_" + settings.id);
198        var $month_or_year = $("#mec_sf_month_" + settings.id + ', ' + "#mec_sf_year_" + settings.id);
199
200        $month_or_year.off('change.mecSearchForm' + settings.id).on('change.mecSearchForm' + settings.id, function (e) {
201            last_field = 'date-dropdown';
202
203            var mec_month_val = $month.val();
204            var mec_year_val = $year.val();
205
206            if ((mec_month_val !== 'none' && mec_year_val !== 'none') || ((mec_month_val === 'none' && mec_year_val === 'none'))) search();
207        });
208
209        $date_start.off('change').on('change', function () {
210            last_field = 'date-start';
211            search();
212        });
213
214        $date_end.off('change').on('change', function () {
215            last_field = 'date-end';
216            search();
217        });
218
219        $event_type.off('change').on('change', function (e) {
220            last_field = 'event-type';
221            search();
222        });
223
224        $event_type_2.off('change').on('change', function (e) {
225            last_field = 'event-type-2';
226            search();
227        });
228
229        $attribute.off('change').on('change', function (e) {
230            last_field = 'attribute';
231            search();
232        });
233
234        if ($event_status.length > 0) {
235            $event_status.off('change').on('change', function (e) {
236                last_field = 'event_status';
237                search();
238            });
239        }
240
241        if (settings.fields && settings.fields.length > 0) {
242            for (var k in settings.fields) {
243                $("#mec_sf_" + settings.fields[k] + '_' + settings.id).off('change').on('change', function (e) {
244                    search();
245                });
246            }
247        }
248
249        // Reset
250        if ($reset.length) {
251            $reset.off('click').on('click', function (e) {
252                reset();
253            });
254        }
255
256        function get_fields() {
257            return [
258                'state',
259                'city',
260                'region',
261                'region',
262                'street',
263                'postal_code',
264            ];
265        }
266
267        function getSearchResultCount(response) {
268            if (response && typeof response.count !== 'undefined' && !isNaN(parseInt(response.count, 10))) {
269                return Math.max(parseInt(response.count, 10), 0);
270            }
271
272            var $noEvents = $("#mec_skin_no_events_" + settings.id);
273            if ($noEvents.length && !$noEvents.hasClass("mec-util-hidden")) return 0;
274
275            return $("#mec_skin_events_" + settings.id).find(".mec-event-article").length;
276        }
277
278        function getSearchContextSuffix() {
279            var query = $s.length ? $.trim($s.val()) : '';
280            if (query) {
281                return mecFormatA11yString(mecdata.a11y_search_query || ' for "%s"', [query]).replace('%s', query);
282            }
283
284            var addressQuery = $address.length ? $.trim($address.val()) : '';
285            if (addressQuery) {
286                return mecFormatA11yString(mecdata.a11y_search_address || ' near "%s"', [addressQuery]).replace('%s', addressQuery);
287            }
288
289            return '';
290        }
291
292        function announceSearchResults(response) {
293            if (!$status.length) return;
294
295            var count = getSearchResultCount(response);
296            var suffix = getSearchContextSuffix();
297            var template = count === 1
298                ? (mecdata.a11y_search_result || 'Search updated. %1$s event found%2$s.')
299                : (mecdata.a11y_search_results || 'Search updated. %1$s events found%2$s.');
300
301            window.setTimeout(function () {
302                $status.text(mecFormatA11yString(template, [count, suffix]));
303            }, 0);
304        }
305
306        function trigger() {
307            if ($wrapper.hasClass('mec-dropdown-enhanced')) {
308                $wrapper.find($('select')).each(function () {
309                    $(this).select2();
310                    mecApplySelect2Accessibility($(this));
311                });
312            }
313
314            $("#mec_sf_category_" + settings.id).off('change.mecSearchForm' + settings.id).on('change.mecSearchForm' + settings.id, function (e) {
315                last_field = 'category';
316                search();
317            });
318
319            $("#mec_sf_location_" + settings.id).off('change.mecSearchForm' + settings.id).on('change.mecSearchForm' + settings.id, function (e) {
320                last_field = 'location';
321                search();
322            });
323
324            $("#mec_sf_organizer_" + settings.id).off('change.mecSearchForm' + settings.id).on('change.mecSearchForm' + settings.id, function (e) {
325                last_field = 'organizer';
326                search();
327            });
328
329            $("#mec_sf_speaker_" + settings.id).off('change.mecSearchForm' + settings.id).on('change.mecSearchForm' + settings.id, function (e) {
330                last_field = 'speaker';
331                search();
332            });
333
334            $("#mec_sf_tag_" + settings.id).off('change.mecSearchForm' + settings.id).on('change.mecSearchForm' + settings.id, function (e) {
335                last_field = 'tag';
336                search();
337            });
338
339            $("#mec_sf_label_" + settings.id).off('change.mecSearchForm' + settings.id).on('change.mecSearchForm' + settings.id, function (e) {
340                last_field = 'label';
341                search();
342            });
343
344            var fields = get_fields();
345            $.each(fields, function (i, field) {
346                $("#mec_sf_" + field + "_" + settings.id).off('change.mecSearchForm' + settings.id).on('change.mecSearchForm' + settings.id, function (e) {
347                    last_field = field;
348                    search();
349                });
350            });
351        }
352
353        function getRawNonSfQuery() {
354            var search = window.location.search;
355            if (search.indexOf('?') === 0) search = search.substring(1);
356            if (!search) return '';
357            var parts = search.split('&');
358            var kept = [];
359            for (var i = 0; i < parts.length; i++) {
360                var p = parts[i];
361                if (!p) continue;
362                var key = p.split('=')[0] || '';
363                if (key.indexOf('sf[') === 0 || key.indexOf('sf%5B') === 0) continue;
364                kept.push(p);
365            }
366            return kept.join('&');
367        }
368
369        function encodeSfQuery(sfQS) {
370            if (!sfQS) return '';
371            var out = [];
372            var parts = sfQS.split('&');
373            for (var i = 0; i < parts.length; i++) {
374                var p = parts[i];
375                if (!p) continue;
376                var eq = p.indexOf('=');
377                var key = eq > -1 ? p.substring(0, eq) : p;
378                var val = eq > -1 ? p.substring(eq + 1) : '';
379                if (val === '') continue;
380                out.push(key + '=' + encodeURIComponent(val));
381            }
382            return out.join('&');
383        }
384
385        function pushFiltersToUrl(sfQS) {
386            if (!updateUrl) return;
387            try {
388                var base = window.location.origin + window.location.pathname;
389                var preserved = getRawNonSfQuery();
390                var sfRaw = encodeSfQuery(sfQS); // keep keys as sf[...]
391                var qs = '';
392                if (preserved) qs = preserved;
393                if (sfRaw) qs = qs ? (qs + '&' + sfRaw) : sfRaw;
394                var finalUrl = qs ? (base + '?' + qs + window.location.hash) : (base + window.location.hash);
395                window.history.pushState({ mec_sf: true, id: settings.id }, '', finalUrl);
396            } catch (e) { }
397        }
398
399        function extractSfFromRawSearch() {
400            var res = {};
401            try {
402                var raw = window.location.search;
403                if (raw.indexOf('?') === 0) raw = raw.substring(1);
404                var regex = /(?:^|&)sf(?:%5B|\[)([^\]=%]+)(?:%5D|\])=([^&]*)/g;
405                var m;
406                while ((m = regex.exec(raw)) !== null) {
407                    var k = m[1];
408                    var v = decodeURIComponent(m[2] || '');
409                    res[k] = v;
410                }
411            } catch (e) { }
412            return res;
413        }
414
415        function applyURLToFormAndSearch() {
416            if (!updateUrl) return;
417            try {
418                var sfObj = extractSfFromRawSearch();
419
420                if (Object.keys(sfObj).length === 0) return;
421
422                isApplyingFromURL = true;
423
424                // Simple fields
425                if (typeof sfObj['s'] !== 'undefined' && $s.length) $s.val(sfObj['s']);
426                if (typeof sfObj['address'] !== 'undefined' && $address.length) $address.val(sfObj['address']);
427                if (typeof sfObj['address_radius'] !== 'undefined' && $address_radius.length) $address_radius.val(sfObj['address_radius']);
428                if (typeof sfObj['cost-min'] !== 'undefined' && $event_cost_min.length) $event_cost_min.val(sfObj['cost-min']);
429                if (typeof sfObj['cost-max'] !== 'undefined' && $event_cost_max.length) $event_cost_max.val(sfObj['cost-max']);
430                if (typeof sfObj['time-start'] !== 'undefined' && $time_start.length) $time_start.val(sfObj['time-start']);
431                if (typeof sfObj['time-end'] !== 'undefined' && $time_end.length) $time_end.val(sfObj['time-end']);
432                if (typeof sfObj['month'] !== 'undefined' && $month.length) $month.val(sfObj['month']);
433                if (typeof sfObj['year'] !== 'undefined' && $year.length) $year.val(sfObj['year']);
434                if (typeof sfObj['start'] !== 'undefined' && $date_start.length) $date_start.val(sfObj['start']);
435                if (typeof sfObj['end'] !== 'undefined' && $date_end.length) $date_end.val(sfObj['end']);
436                if (typeof sfObj['date_start'] !== 'undefined' && $date_start.length) $date_start.val(sfObj['date_start']);
437                if (typeof sfObj['date_end'] !== 'undefined' && $date_end.length) $date_end.val(sfObj['date_end']);
438                if (typeof sfObj['event_type'] !== 'undefined' && $event_type.length) $event_type.val(sfObj['event_type']);
439                if (typeof sfObj['event_type_2'] !== 'undefined' && $event_type_2.length) $event_type_2.val(sfObj['event_type_2']);
440                if (typeof sfObj['attribute'] !== 'undefined' && $attribute.length) $attribute.val(sfObj['attribute']);
441
442                // Event status (radio)
443                if (typeof sfObj['event_status'] !== 'undefined' && $event_status.length) {
444                    $event_status.prop('checked', false);
445                    $event_status.filter('[value="' + sfObj['event_status'] + '"]').prop('checked', true);
446                }
447
448                // Taxonomies: select/ul checkboxes
449                function applyTaxonomy($el, csv) {
450                    if (!$el.length) return;
451                    var vals = (csv || '').split(',').filter(function (x) { return x !== '' });
452                    var tag = ($el.prop('tagName') || '').toLowerCase();
453                    if (tag === 'select') {
454                        $el.val(vals.length > 1 ? vals : (vals[0] || ''));
455                        if ($wrapper.hasClass('mec-dropdown-enhanced') && jQuery().select2) {
456                            $el.trigger('change.select2');
457                        } else if (jQuery().niceSelect) {
458                            $el.niceSelect('update');
459                        }
460                    } else if (tag === 'ul') {
461                        var set = new Set(vals);
462                        $el.find('input[type=checkbox]').each(function () {
463                            var v = jQuery(this).val();
464                            jQuery(this).prop('checked', set.has(v));
465                        });
466                    }
467                }
468
469                applyTaxonomy($("#mec_sf_category_" + settings.id), sfObj['category']);
470                applyTaxonomy($("#mec_sf_location_" + settings.id), sfObj['location']);
471                applyTaxonomy($("#mec_sf_organizer_" + settings.id), sfObj['organizer']);
472                applyTaxonomy($("#mec_sf_speaker_" + settings.id), sfObj['speaker']);
473                applyTaxonomy($("#mec_sf_tag_" + settings.id), sfObj['tag']);
474                applyTaxonomy($("#mec_sf_label_" + settings.id), sfObj['label']);
475
476                // Update UI for simple selects in enhanced mode
477                function updateSelectUI($sel) {
478                    if (!$sel || !$sel.length) return;
479                    if ($wrapper.hasClass('mec-dropdown-enhanced') && jQuery().select2) {
480                        $sel.trigger('change.select2');
481                    } else if (jQuery().niceSelect) {
482                        $sel.niceSelect('update');
483                    }
484                }
485
486                updateSelectUI($month);
487                updateSelectUI($year);
488                updateSelectUI($event_type);
489                updateSelectUI($event_type_2);
490                updateSelectUI($attribute);
491
492                // Trigger a search with these values (skip once if server already applied them)
493                setTimeout(function () {
494                    isApplyingFromURL = false;
495                    var skipOnce = $wrapper.data('mec-skip-initial-search');
496                    if (skipOnce) {
497                        $wrapper.removeAttr('data-mec-skip-initial-search');
498                    } else {
499                        search();
500                    }
501                }, 50);
502
503            } catch (e) { }
504        }
505
506        // Handle browser back/forward to re-apply filters
507        if (updateUrl && !$wrapper.data('mec-popstate-bound')) {
508            jQuery(window).on('popstate', function () {
509                applyURLToFormAndSearch();
510            });
511            $wrapper.data('mec-popstate-bound', true);
512        }
513        // Apply URL filters immediately on init
514        applyURLToFormAndSearch();
515
516        function search() {
517            var $category = $("#mec_sf_category_" + settings.id);
518            var $location = $("#mec_sf_location_" + settings.id);
519            var $organizer = $("#mec_sf_organizer_" + settings.id);
520            var $speaker = $("#mec_sf_speaker_" + settings.id);
521            var $tag = $("#mec_sf_tag_" + settings.id);
522            var $label = $("#mec_sf_label_" + settings.id);
523
524            var s = $s.length ? $s.val() : '';
525            var address = $address.length ? $address.val() : '';
526            var address_radius = $address_radius.length ? $address_radius.val() : '';
527            var tag = $tag.length ? $tag.val() : '';
528            var month = $month.length ? $month.val() : '';
529            var year = $year.length ? $year.val() : '';
530            var event_type = $event_type.length ? $event_type.val() : '';
531            var event_type_2 = $event_type_2.length ? $event_type_2.val() : '';
532            var attribute = $attribute.length ? $attribute.val() : '';
533            var event_status = $event_status.filter(':checked').length ? $event_status.filter(':checked').val() : 'all';
534
535            if (month === null) month = '';
536
537            var start = $date_start.length ? $date_start.val() : '';
538            var end = $date_end.length ? $date_end.val() : '';
539
540            var cost_min = $event_cost_min.length ? $event_cost_min.val() : '';
541            var cost_max = $event_cost_max.length ? $event_cost_max.val() : '';
542
543            var time_start = $time_start.length ? $time_start.val() : '';
544            var time_end = $time_end.length ? $time_end.val() : '';
545
546            var category;
547            if ($category.prop('tagName') && $category.prop('tagName').toLowerCase() === 'div') {
548                category = [];
549                $category.find($('select')).each(function () {
550                    category.push($(this).val());
551                });
552                category = category.join(',');
553            }
554            else if ($category.prop('tagName') && $category.prop('tagName').toLowerCase() === 'ul') {
555                category = [];
556                $category.find($('input[type=checkbox]:checked')).each(function () {
557                    category.push($(this).val());
558                });
559                category = category.join(',');
560            }
561            else category = $category.length ? $category.val() : '';
562
563            var location;
564            if ($location.prop('tagName') && $location.prop('tagName').toLowerCase() === 'ul') {
565                location = [];
566                $location.find($('input[type=checkbox]:checked')).each(function () {
567                    location.push($(this).val());
568                });
569                location = location.join(',');
570            }
571            else location = $location.length ? $location.val() : '';
572
573            var organizer;
574            if ($organizer.prop('tagName') && $organizer.prop('tagName').toLowerCase() === 'ul') {
575                organizer = [];
576                $organizer.find($('input[type=checkbox]:checked')).each(function () {
577                    organizer.push($(this).val());
578                });
579                organizer = organizer.join(',');
580            }
581            else organizer = $organizer.length ? $organizer.val() : '';
582
583            var speaker;
584            if ($speaker.prop('tagName') && $speaker.prop('tagName').toLowerCase() === 'ul') {
585                speaker = [];
586                $speaker.find($('input[type=checkbox]:checked')).each(function () {
587                    speaker.push($(this).val());
588                });
589                speaker = speaker.join(',');
590            }
591            else speaker = $speaker.length ? $speaker.val() : '';
592
593            var label;
594            if ($label.prop('tagName') && $label.prop('tagName').toLowerCase() === 'ul') {
595                label = [];
596                $label.find($('input[type=checkbox]:checked')).each(function () {
597                    label.push($(this).val());
598                });
599                label = label.join(',');
600            }
601            else label = $label.length ? $label.val() : '';
602
603            if (year === 'none' && month === 'none') {
604                year = '';
605                month = '';
606            }
607
608            if (!year) year = '';
609
610            var addation_attr = '';
611            if (settings.fields && settings.fields.length > 0) {
612                for (var k in settings.fields) {
613                    var field = '#mec_sf_' + settings.fields[k] + '_' + settings.id;
614                    var val = $(field).length ? $(field).val() : '';
615
616                    addation_attr += '&sf[' + settings.fields[k] + ']=' + val;
617                }
618            }
619
620            // Search Parameters
621            var sf = 'sf[s]=' + s + '&sf[address]=' + address + '&sf[address_radius]=' + address_radius + '&sf[cost-min]=' + cost_min + '&sf[cost-max]=' + cost_max + '&sf[time-start]=' + time_start + '&sf[time-end]=' + time_end + '&sf[month]=' + month + '&sf[year]=' + year + '&sf[start]=' + start + '&sf[end]=' + end + '&sf[event_type]=' + event_type + '&sf[event_type_2]=' + event_type_2 + '&sf[event_status]=' + event_status + '&sf[attribute]=' + attribute + addation_attr;
622
623            if ($category.length) sf += '&sf[category]=' + category;
624            if ($location.length) sf += '&sf[location]=' + location;
625            if ($organizer.length) sf += '&sf[organizer]=' + organizer;
626            if ($speaker.length) sf += '&sf[speaker]=' + speaker;
627            if ($tag.length) sf += '&sf[tag]=' + tag;
628            if ($label.length) sf += '&sf[label]=' + label;
629
630            // Event Fields
631            $custom_fields.each(function () {
632                var custom_field_id = $(this).data('field-id');
633                var custom_request_key = $(this).data('request-key');
634                var custom_field_value = $(this).val();
635
636                if (custom_request_key) sf += '&sf[fields][' + custom_field_id + '][' + custom_request_key + ']=' + custom_field_value;
637                else sf += '&sf[fields][' + custom_field_id + ']=' + custom_field_value;
638            });
639
640            var fields = get_fields();
641            $.each(fields, function (i, field) {
642                if ($("#mec_sf_" + field + "_" + settings.id).length) {
643                    v = $("#mec_sf_" + field + "_" + settings.id).val();
644                    sf += '&sf[' + field + ']=' + v;
645                }
646            });
647
648            // Refine Parameters
649            if (settings.refine) refine(sf);
650
651            // Attributes
652            var atts = settings.atts + '&' + sf;
653
654            // Search
655            if (typeof mec_search_callbacks[settings.id] !== 'undefined') {
656                for (const cb of mec_search_callbacks[settings.id]) cb(atts);
657            }
658
659            // Update URL after search so it can be shared
660            if (updateUrl && !isApplyingFromURL) {
661                pushFiltersToUrl(sf);
662            }
663        }
664
665        function reset() {
666            var $category = $("#mec_sf_category_" + settings.id);
667            var $location = $("#mec_sf_location_" + settings.id);
668            var $organizer = $("#mec_sf_organizer_" + settings.id);
669            var $speaker = $("#mec_sf_speaker_" + settings.id);
670            var $tag = $("#mec_sf_tag_" + settings.id);
671            var $label = $("#mec_sf_label_" + settings.id);
672            var isEnhanced = $wrapper.hasClass('mec-dropdown-enhanced');
673
674            if ($category.length && $category.prop('tagName') && $category.prop('tagName').toLowerCase() === 'div') {
675                $category.find('select').each(function () {
676                    $(this).val(null).trigger('change');
677                });
678                    if (isEnhanced && jQuery().select2) {
679                        $category.find('select').select2();
680                        $category.find('select').each(function () {
681                            mecApplySelect2Accessibility($(this));
682                        });
683                    }
684                else if (jQuery().niceSelect) $category.find('select').niceSelect('update');
685            }
686            else if ($category.length && $category.prop('tagName') && $category.prop('tagName').toLowerCase() === 'ul') {
687                $category.find($('input[type=checkbox]:checked')).each(function () {
688                    $(this).prop('checked', false);
689                });
690            }
691            else if ($category.length) {
692                $category.val(null);
693                if ($category.prop('tagName') && $category.prop('tagName').toLowerCase() === 'select') {
694                if (isEnhanced && jQuery().select2) {
695                    $category.select2();
696                    mecApplySelect2Accessibility($category);
697                }
698                    else if (jQuery().niceSelect) $category.niceSelect('update');
699                }
700            }
701
702            if ($location.length && $location.prop('tagName') && $location.prop('tagName').toLowerCase() === 'ul') {
703                $location.find($('input[type=checkbox]:checked')).each(function () {
704                    $(this).prop('checked', false);
705                });
706            }
707            else if ($location.length) {
708                $location.val(null);
709                if ($location.prop('tagName') && $location.prop('tagName').toLowerCase() === 'select') {
710                    if (isEnhanced && jQuery().select2) {
711                        $location.select2();
712                        mecApplySelect2Accessibility($location);
713                    }
714                    else if (jQuery().niceSelect) $location.niceSelect('update');
715                }
716            }
717
718            if ($organizer.length && $organizer.prop('tagName') && $organizer.prop('tagName').toLowerCase() === 'ul') {
719                $organizer.find($('input[type=checkbox]:checked')).each(function () {
720                    $(this).prop('checked', false);
721                });
722            }
723            else if ($organizer.length) {
724                $organizer.val(null);
725                if ($organizer.prop('tagName') && $organizer.prop('tagName').toLowerCase() === 'select') {
726                    if (isEnhanced && jQuery().select2) {
727                        $organizer.select2();
728                        mecApplySelect2Accessibility($organizer);
729                    }
730                    else if (jQuery().niceSelect) $organizer.niceSelect('update');
731                }
732            }
733
734            if ($speaker.length && $speaker.prop('tagName') && $speaker.prop('tagName').toLowerCase() === 'ul') {
735                $speaker.find($('input[type=checkbox]:checked')).each(function () {
736                    $(this).prop('checked', false);
737                });
738            }
739            else if ($speaker.length) {
740                $speaker.val(null);
741                if ($speaker.prop('tagName') && $speaker.prop('tagName').toLowerCase() === 'select') {
742                    if (isEnhanced && jQuery().select2) {
743                        $speaker.select2();
744                        mecApplySelect2Accessibility($speaker);
745                    }
746                    else if (jQuery().niceSelect) $speaker.niceSelect('update');
747                }
748            }
749
750            if ($label.length && $label.prop('tagName') && $label.prop('tagName').toLowerCase() === 'ul') {
751                $label.find($('input[type=checkbox]:checked')).each(function () {
752                    $(this).prop('checked', false);
753                });
754            }
755            else if ($label.length) {
756                $label.val(null);
757                if ($label.prop('tagName') && $label.prop('tagName').toLowerCase() === 'select') {
758                    if (isEnhanced && jQuery().select2) {
759                        $label.select2();
760                        mecApplySelect2Accessibility($label);
761                    }
762                    else if (jQuery().niceSelect) $label.niceSelect('update');
763                }
764            }
765
766            if ($tag.length) $tag.val(null);
767            if ($s.length) $s.val(null);
768            if ($address.length) $address.val(null);
769            if ($address_radius.length) $address_radius.val(null);
770            if ($month.length) $month.val(null);
771            if ($year.length) $year.val(null);
772            if ($event_cost_min.length) $event_cost_min.val(null);
773            if ($event_cost_max.length) $event_cost_max.val(null);
774            if ($date_start.length) $date_start.val(null);
775            if ($date_end.length) $date_end.val(null);
776            if ($time_start.length) $time_start.val(null);
777            if ($time_end.length) $time_end.val(null);
778            if ($event_status.length) {
779                $event_status.prop('checked', false);
780                $event_status.filter('[value="all"]').prop('checked', true);
781            }
782
783            // Reset map fields specifically
784            var mapFields = ['state', 'city', 'region', 'street', 'postal_code'];
785            $.each(mapFields, function (i, field) {
786                var $mapField = $("#mec_sf_" + field + "_" + settings.id);
787                if ($mapField.length) {
788                    $mapField.val(null);
789                    if ($mapField.is('select')) {
790                        if (isEnhanced && jQuery().select2) {
791                            $mapField.select2();
792                            mecApplySelect2Accessibility($mapField);
793                        }
794                        else if (jQuery().niceSelect) jQuery("#mec_sf_" + field + "_" + settings.id).niceSelect('update');
795                    }
796                }
797            });
798
799            var fields = get_fields();
800            $.each(fields, function (i, field) {
801                const $f = $("#mec_sf_" + field + "_" + settings.id);
802                if ($f.length) {
803                    $f.val(null);
804                    if ($f.is('select') && jQuery().niceSelect) {
805                        jQuery("#mec_sf_" + field + "_" + settings.id).niceSelect('update');
806                    }
807                }
808            });
809
810            if (jQuery().niceSelect) {
811
812                jQuery('.mec-fluent-wrap').find('.mec-filter-content').find('select:not([multiple])').niceSelect('update');
813            }
814
815            // Clean URL query if enabled
816            if (updateUrl) {
817                try {
818                    var url = new URL(window.location.href);
819                    url = removeSfParamsFromUrl(url);
820                    window.history.pushState({ mec_sf: true, id: settings.id }, '', url.toString());
821                } catch (e) { }
822            }
823
824            // Search Again
825            setTimeout(function () {
826                search();
827            }, 200);
828        }
829
830        function refine(sf) {
831            var $category = $("#mec_sf_category_" + settings.id);
832            var $location = $("#mec_sf_location_" + settings.id);
833            var $organizer = $("#mec_sf_organizer_" + settings.id);
834            var $speaker = $("#mec_sf_speaker_" + settings.id);
835            var $tag = $("#mec_sf_tag_" + settings.id);
836            var $label = $("#mec_sf_label_" + settings.id);
837
838            var category_type;
839            if ($category.length && $category.prop('tagName') && $category.prop('tagName').toLowerCase() === 'div') category_type = 'checkboxes';
840            else if ($category.length && $category.prop('tagName') && $category.prop('tagName').toLowerCase() === 'ul') category_type = 'simple-checkboxes';
841            else if ($category.length) category_type = 'dropdown';
842
843            var location_type;
844            if ($location.length && $location.prop('tagName') && $location.prop('tagName').toLowerCase() === 'ul') location_type = 'simple-checkboxes';
845            else if ($location.length) location_type = 'dropdown';
846
847            var organizer_type;
848            if ($organizer.length && $organizer.prop('tagName') && $organizer.prop('tagName').toLowerCase() === 'ul') organizer_type = 'simple-checkboxes';
849            else if ($organizer.length) organizer_type = 'dropdown';
850
851            var speaker_type;
852            if ($speaker.length && $speaker.prop('tagName') && $speaker.prop('tagName').toLowerCase() === 'ul') speaker_type = 'simple-checkboxes';
853            else if ($organizer.length) speaker_type = 'dropdown';
854
855            var label_type;
856            if ($label.length && $label.prop('tagName') && $label.prop('tagName').toLowerCase() === 'ul') label_type = 'simple-checkboxes';
857            else if ($label.length) label_type = 'dropdown';
858
859            $.ajax(
860                {
861                    url: settings.ajax_url,
862                    data: "action=mec_refine_search_items&mec_start_date=" + settings.start_date + "&" + sf + '&last_field=' + last_field + '&category_type=' + category_type + '&location_type=' + location_type + '&organizer_type=' + organizer_type + '&speaker_type=' + speaker_type + '&label_type=' + label_type + '&id=' + settings.id,
863                    dataType: "json",
864                    type: "post",
865                    success: function (response) {
866                        // Categories
867                        if (typeof response.categories !== 'undefined' && response.categories !== '') {
868                            // Multi Select
869                            if ($category.length && category_type === 'checkboxes') {
870                                $category.html(response.categories);
871                            }
872                            // Checkboxes
873                            else if ($category.length && category_type === 'simple-checkboxes') {
874                                $category.html(response.categories);
875                            }
876                            // Dropdown
877                            else if ($category.length) {
878                                $category.replaceWith(response.categories);
879                            }
880
881                            // Categories Search bar
882                            if (jQuery(".mec-searchbar-category-wrap select").length > 0 && jQuery().niceSelect) jQuery(".mec-searchbar-category-wrap select").niceSelect();
883                        }
884
885                        // Locations
886                        if (typeof response.locations !== 'undefined' && response.locations !== '') {
887                            // Checkboxes
888                            if ($location.length && location_type === 'simple-checkboxes') {
889                                $location.html(response.locations);
890                            }
891                            // Dropdown
892                            else if ($location.length) {
893                                $location.replaceWith(response.locations);
894                            }
895                        }
896
897                        // Organizers
898                        if (typeof response.organizers !== 'undefined' && response.organizers !== '') {
899                            // Checkboxes
900                            if ($organizer.length && organizer_type === 'simple-checkboxes') {
901                                $organizer.html(response.organizers);
902                            }
903                            // Dropdown
904                            else if ($organizer.length) {
905                                $organizer.replaceWith(response.organizers);
906                            }
907                        }
908
909                        // Speakers
910                        if (typeof response.speakers !== 'undefined' && response.speakers !== '') {
911                            // Checkboxes
912                            if ($speaker.length && speaker_type === 'simple-checkboxes') {
913                                $speaker.html(response.speakers);
914                            }
915                            // Dropdown
916                            else if ($speaker.length) {
917                                $speaker.replaceWith(response.speakers);
918                            }
919                        }
920
921                        // Labels
922                        if (typeof response.labels !== 'undefined' && response.labels !== '') {
923                            // Checkboxes
924                            if ($label.length && label_type === 'simple-checkboxes') {
925                                $label.html(response.labels);
926                            }
927                            // Dropdown
928                            else if ($label.length) {
929                                $label.replaceWith(response.labels);
930                            }
931                        }
932
933                        // Tags
934                        if (typeof response.tags !== 'undefined' && response.tags !== '') {
935                            $tag.replaceWith(response.tags);
936                        }
937
938                        // Trigger
939                        trigger();
940                    },
941                    error: function () { }
942                });
943        }
944    };
945}(jQuery));
946
947jQuery(document).ready(function ($) {
948    // Select2
949    if (jQuery(".mec-fes-form-cntt #mec-location select").length > 0) {
950        jQuery(".mec-fes-form-cntt #mec-location select").select2();
951        jQuery(".mec-fes-form-cntt #mec-location select").each(function () { mecApplySelect2Accessibility(jQuery(this)); });
952    }
953    if (jQuery(".mec-fes-form-cntt #mec-organizer select").length > 0) {
954        jQuery(".mec-fes-form-cntt #mec-organizer select").select2();
955        jQuery(".mec-fes-form-cntt #mec-organizer select").each(function () { mecApplySelect2Accessibility(jQuery(this)); });
956    }
957    // Location select2
958    if (jQuery("#mec_location_id").length > 0) {
959        jQuery("#mec_location_id").select2();
960        mecApplySelect2Accessibility(jQuery("#mec_location_id"));
961    }
962    // Organizer Select2
963    if (jQuery("#mec_organizer_id").length > 0) {
964        jQuery("#mec_organizer_id").select2();
965        mecApplySelect2Accessibility(jQuery("#mec_organizer_id"));
966    }
967    // Categories Search bar
968    if (jQuery(".mec-searchbar-category-wrap select").length > 0) {
969        jQuery(".mec-searchbar-category-wrap select").select2();
970        jQuery(".mec-searchbar-category-wrap select").each(function () { mecApplySelect2Accessibility(jQuery(this)); });
971    }
972
973    jQuery(".mec-search-form.mec-totalcal-box").find(".mec-search-reset-button").parents().eq(2).addClass("mec-there-reset-button");
974
975    jQuery(".mec-search-form.mec-totalcal-box").find(".mec-minmax-event-cost").parent().find(".mec-text-address-search").addClass("with-mec-cost");
976    jQuery(".mec-search-form.mec-totalcal-box").find(".mec-text-address-search").parent().find(".mec-minmax-event-cost").addClass("with-mec-address");
977
978    /** New Searchbar JS */
979    jQuery(".mec-full-calendar-search-ends").find(".mec-text-input-search").parent().find(".mec-tab-loader").removeClass("col-md-12").addClass("col-md-6");
980    jQuery(".mec-search-form.mec-totalcal-box").find(".mec-text-input-search").parent().find(".mec-date-search").parent().find(".mec-text-input-search").addClass("col-md-6");
981    jQuery(".mec-search-form.mec-totalcal-box").find(".mec-text-input-search").parent().find(".mec-time-picker-search").parent().find(".mec-text-input-search").addClass("col-md-6");
982    jQuery(".mec-full-calendar-search-ends").find(".mec-text-input-search").addClass("col-md-12").parent().find(".mec-time-picker-search").addClass("col-md-6");
983    jQuery(".mec-search-form.mec-totalcal-box").find(".mec-date-search").parent().find(".mec-time-picker-search").addClass("with-mec-date-search");
984    jQuery(".mec-search-form.mec-totalcal-box").find(".mec-time-picker-search").parent().find(".mec-date-search").addClass("with-mec-time-picker");
985
986    jQuery('#mec-gCalendar-wrap .openMonthFilter').on('click', function (e) {
987        jQuery(this).toggleClass('open');
988    });
989
990    jQuery('body').on('click', function (e) {
991        jQuery('#mec-gCalendar-wrap .openMonthFilter').removeClass('open');
992    });
993
994    mec_init_number_spinner();
995});
996
997function mec_init_number_spinner() {
998    /* buttons functions */
999    jQuery('.mec-booking .mec-event-tickets-list .mec-ticket-style-row div a').off('click').on('click', function () {
1000        var $input = jQuery(this).parents('.mec-ticket-style-row div').find(jQuery('input.in-num'));
1001
1002        var count = parseFloat($input.val());
1003        if (jQuery(this).hasClass('minus')) {
1004            count = count - 1;
1005            count = count < 1 ? 0 : count;
1006            if (count < 1) {
1007                jQuery(this).addClass('dis');
1008            }
1009            else {
1010                jQuery(this).removeClass('dis');
1011            }
1012            $input.val(count);
1013        }
1014        else {
1015            count = count + 1;
1016            $input.val(count);
1017            if (count > 1) {
1018                jQuery(this).parents('.mec-ticket-style-row div').find(('.minus')).removeClass('dis');
1019            }
1020        }
1021
1022        $input.change();
1023        return false;
1024    });
1025}
1026
1027jQuery(window).on('load', function () {
1028    jQuery(".single-mec-events").find(".mejs-controls button").addClass("mejs")
1029});
1030
1031// MEC FULL CALENDAR PLUGIN
1032(function ($) {
1033    $.fn.mecFullCalendar = function (options) {
1034        // Default Options
1035        var settings = $.extend({
1036            // These are the defaults.
1037            id: 0,
1038            atts: '',
1039            ajax_url: '',
1040            sf: {},
1041            skin: '',
1042        }, options);
1043
1044        // Set onclick Listeners
1045        setListeners();
1046
1047        $(document).trigger('mec_full_calendar_before_init', $("#mec_full_calendar_container_" + settings.id));
1048
1049        mecFluentCurrentTimePosition();
1050        mecFluentCustomScrollbar();
1051
1052        var sf;
1053
1054        function setListeners() {
1055            // Search Widget
1056            if (settings.sf.container !== '' && false == $(settings.sf.container).hasClass('mec-skin-search-init')) {
1057                sf = $(settings.sf.container).mecSearchForm({
1058                    id: settings.id,
1059                    refine: settings.sf.refine,
1060                    ajax_url: settings.ajax_url,
1061                    start_date: settings.start_date,
1062                    atts: settings.atts,
1063                    callback: function (atts) {
1064                        settings.atts = atts;
1065                        if (false == $("#mec_skin_" + settings.id).hasClass('mec-fluent-wrap') && false == $("#mec_skin_" + settings.id).hasClass('mec-liquid-wrap')) {
1066
1067                            search();
1068                        }
1069                    }
1070                });
1071
1072                $(settings.sf.container).addClass('mec-skin-search-init');
1073            }
1074
1075            $('.mec-subscribe-to-calendar-btn').off('click').on('click', function () {
1076                $(this).parent().find('>.mec-subscribe-to-calendar-items').toggle();
1077            });
1078
1079            // Add the onclick event
1080            $("#mec_skin_" + settings.id + " .mec-totalcal-box .mec-totalcal-view span:not(.mec-fluent-more-views-icon):not(.mec-fluent-more-views-content)").on('click', function (e) {
1081                e.preventDefault();
1082                var skin = $(this).data('skin');
1083                var mec_month_select = $('#mec_sf_month_' + settings.id);
1084                var mec_year_select = $('#mec_sf_year_' + settings.id);
1085
1086                if (mec_year_select.val() == 'none') {
1087                    mec_year_select.find('option').each(function () {
1088                        var option_val = $(this).val();
1089                        if (option_val == mecdata.current_year) mec_year_select.val(option_val);
1090                    });
1091                }
1092
1093                if (mec_month_select.val() == 'none') {
1094                    mec_month_select.find('option').each(function () {
1095                        var option_val = $(this).val();
1096                        if (option_val == mecdata.current_month) mec_month_select.val(option_val);
1097                    });
1098                }
1099
1100                if (skin == 'list' || skin == 'grid' || skin == 'agenda') {
1101                    var mec_filter_none = '<option class="mec-none-item" value="none">' + $('#mec-filter-none').val() + '</option>';
1102                    if (mec_month_select.find('.mec-none-item').length == 0) mec_month_select.prepe
1102nd(mec_filter_none);
1103                    if (mec_year_select.find('.mec-none-item').length == 0) mec_year_select.prepend(mec_filter_none);
1104                }
1105                else {
1106                    if (mec_month_select.find('.mec-none-item').length != 0) mec_month_select.find('.mec-none-item').remove();
1107                    if (mec_year_select.find('.mec-none-item').length != 0) mec_year_select.find('.mec-none-item').remove();
1108                }
1109
1110                $("#mec_skin_" + settings.id + " .mec-totalcal-box .mec-totalcal-view span").removeClass('mec-totalcalview-selected')
1111                $(this).addClass('mec-totalcalview-selected');
1112                if ($(this).closest('.mec-fluent-more-views-content').length > 0) {
1113                    $('.mec-fluent-more-views-icon').addClass('active');
1114                    $('.mec-fluent-more-views-content').removeClass('active');
1115                } else {
1116                    $('.mec-fluent-more-views-icon').removeClass('active');
1117                }
1118
1119                loadSkin(skin);
1120            });
1121        }
1122
1123        function loadSkin(skin) {
1124            // Set new Skin
1125            settings.skin = skin;
1126
1127            // Add Loading Class
1128            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1129            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1130
1131            var $month_picker = $("#mec_sf_month_" + settings.id);
1132            var $year_picker = $("#mec_sf_year_" + settings.id);
1133
1134            // Add Month & Year
1135            if (settings.atts.indexOf('sf[month]') <= -1 && $month_picker.length && $year_picker.length) {
1136                settings.atts += '&sf[month]=' + $month_picker.val() + '&sf[year]=' + $year_picker.val();
1137            }
1138
1139            $.ajax({
1140                url: settings.ajax_url,
1141                data: "action=mec_full_calendar_switch_skin&skin=" + skin + "&" + settings.atts + "&apply_sf_date=1&sed=" + settings.sed_method,
1142                type: "post",
1143                success: function (response) {
1144
1145                    jQuery(document).trigger('mec_before_load_skin_success', [$("#mec_full_calendar_container_" + settings.id), settings.id]);
1146
1147                    $("#mec_full_calendar_container_" + settings.id).html(response);
1148
1149                    // Remove loader
1150                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1151
1152                    // Focus First Active Day
1153                    mecFocusDay(settings);
1154
1155                    mecFluentCurrentTimePosition();
1156                    mecFluentCustomScrollbar();
1157
1158                    jQuery(document).trigger('mec_load_skin_success', $("#mec_full_calendar_container_" + settings.id));
1159                },
1160                error: function () { }
1161            });
1162        }
1163
1164        function search() {
1165            // Add Loading Class
1166            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1167            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1168
1169            $.ajax({
1170                url: settings.ajax_url,
1171                data: "action=mec_full_calendar_switch_skin&skin=" + settings.skin + "&" + settings.atts + "&apply_sf_date=1",
1172                type: "post",
1173                success: function (response) {
1174                    $("#mec_full_calendar_container_" + settings.id).html(response);
1175
1176                    // Remove loader
1177                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1178
1179                    // Focus First Active Day
1180                    mecFocusDay(settings);
1181
1182                    // Focus First Active Week
1183                    mec_focus_week(settings.id);
1184
1185                    mecFluentCurrentTimePosition();
1186                    mecFluentCustomScrollbar();
1187
1188                    jQuery(document).trigger('mec_search_success', $("#mec_full_calendar_container_" + settings.id));
1189                },
1190                error: function () { }
1191            });
1192        }
1193    };
1194
1195}(jQuery));
1196
1197// MEC YEARLY VIEW PLUGIN
1198(function ($) {
1199    $.fn.mecYearlyView = function (options) {
1200        var active_year;
1201
1202        // Default Options
1203        var settings = $.extend({
1204            // These are the defaults.
1205            today: null,
1206            id: 0,
1207            events_label: 'Events',
1208            event_label: 'Event',
1209            year_navigator: 0,
1210            atts: '',
1211            next_year: {},
1212            sf: {},
1213            ajax_url: '',
1214        }, options);
1215
1216        mecFluentYearlyUI(settings.id, settings.year_id);
1217
1218        // Initialize Year Navigator
1219        if (settings.year_navigator) initYearNavigator();
1220
1221        // Set onclick Listeners
1222        setListeners();
1223
1224        // load more
1225        $(document).on("click", "#mec_skin_events_" + settings.id + " .mec-load-more-button", function () {
1226            var year = $(this).parent().parent().parent().data('year-id');
1227            loadMoreButton(year);
1228        });
1229
1230        // Search Widget
1231        if (settings.sf.container !== '') {
1232            sf = $(settings.sf.container).mecSearchForm({
1233                id: settings.id,
1234                refine: settings.sf.refine,
1235                ajax_url: settings.ajax_url,
1236                start_date: settings.start_date,
1237                atts: settings.atts,
1238                callback: function (atts) {
1239                    settings.atts = atts;
1240                    active_year = $('.mec-yearly-view-wrap .mec-year-navigator').filter(function () {
1241                        return $(this).css('display') == "block";
1242                    });
1243                    active_year = parseInt(active_year.find('h2').text());
1244                    search(active_year);
1245                }
1246            });
1247
1248            $(settings.sf.container).addClass('mec-skin-search-init');
1249        }
1250
1251        function initYearNavigator() {
1252            // Add onclick event
1253            $("#mec_skin_" + settings.id + " .mec-load-year").off("click").on("click", function () {
1254                var year = $(this).data("mec-year");
1255                setYear(year);
1256            });
1257        }
1258
1259        function search(year) {
1260            // Add Loading Class
1261            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1262            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1263
1264            $.ajax({
1265                url: settings.ajax_url,
1266                data: "action=mec_yearly_view_load_year&mec_year=" + year + "&" + settings.atts + "&apply_sf_date=1",
1267                dataType: "json",
1268                type: "post",
1269                success: function (response) {
1270                    active_year = response.current_year.year;
1271
1272                    // Append Year
1273                    $("#mec_skin_events_" + settings.id).html('<div class="mec-year-container" id="mec_yearly_view_year_' + settings.id + '_' + response.current_year.id + '" data-year-id="' + response.current_year.id + '">' + response.year + '</div>');
1274
1275                    // Append Year Navigator
1276                    $("#mec_skin_" + settings.id + " .mec-yearly-title-sec").append('<div class="mec-year-navigator" id="mec_year_navigator_' + settings.id + '_' + response.current_year.id + '">' + response.navigator + '</div>');
1277
1278                    // Re-initialize Year Navigator
1279                    initYearNavigator();
1280
1281                    // Set onclick Listeners
1282                    setListeners();
1283
1284                    // Toggle Year
1285                    toggleYear(response.current_year.id);
1286
1287                    // Remove loading Class
1288                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1289
1290                    mecFluentYearlyUI(settings.id, active_year);
1291                    mecFluentCustomScrollbar();
1292
1293                    $(document).trigger('mec_search_init', ['yearly_view', settings, response]);
1294
1295                },
1296                error: function () { }
1297            });
1298        }
1299
1300        function setYear(year, do_in_background) {
1301            if (typeof do_in_background === "undefined") do_in_background = false;
1302
1303            var year_id = year;
1304            active_year = year;
1305
1306            // Year exists so we just show it
1307            if ($("#mec_yearly_view_year_" + settings.id + "_" + year_id).length) {
1308                // Toggle Year
1309                toggleYear(year_id);
1310                mecFluentCustomScrollbar();
1311            } else {
1312                if (!do_in_background) {
1313                    // Add Loading Class
1314                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1315                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1316                }
1317
1318                $.ajax({
1319                    url: settings.ajax_url,
1320                    data: "action=mec_yearly_view_load_year&mec_year=" + year + "&" + settings.atts + "&apply_sf_date=0",
1321                    dataType: "json",
1322                    type: "post",
1323                    success: function (response) {
1324                        // Append Year
1325                        $("#mec_skin_events_" + settings.id).append('<div class="mec-year-container" id="mec_yearly_view_year_' + settings.id + '_' + response.current_year.id + '" data-year-id="' + response.current_year.id + '">' + response.year + '</div>');
1326
1327                        // Append Year Navigator
1328                        $("#mec_skin_" + settings.id + " .mec-yearly-title-sec").append('<div class="mec-year-navigator" id="mec_year_navigator_' + settings.id + '_' + response.current_year.id + '">' + response.navigator + '</div>');
1329
1330                        // Re-initialize Year Navigator
1331                        initYearNavigator();
1332
1333                        // Set onclick Listeners
1334                        setListeners();
1335
1336                        if (!do_in_background) {
1337                            // Toggle Year
1338                            toggleYear(response.current_year.id);
1339
1340                            // Remove loading Class
1341                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1342
1343                            // Set Year Filter values in search widget
1344                            $("#mec_sf_year_" + settings.id).val(year);
1345                        } else {
1346                            $("#mec_yearly_view_year_" + settings.id + "_" + response.current_year.id).hide();
1347                            $("#mec_year_navigator_" + settings.id + "_" + response.current_year.id).hide();
1348                        }
1349                        mecFluentYearlyUI(settings.id, year);
1350                        if (!do_in_background) {
1351                            mecFluentCustomScrollbar();
1352                        }
1353                    },
1354                    error: function () { }
1355                });
1356            }
1357        }
1358
1359        function toggleYear(year_id) {
1360            // Toggle Year Navigator
1361            $("#mec_skin_" + settings.id + " .mec-year-navigator").hide();
1362            $("#mec_year_navigator_" + settings.id + "_" + year_id).show();
1363
1364            // Toggle Year
1365            $("#mec_skin_" + settings.id + " .mec-year-container").hide();
1366            $("#mec_yearly_view_year_" + settings.id + "_" + year_id).show();
1367        }
1368
1369        var sf;
1370
1371        function setListeners() {
1372            // Single Event Method
1373            if (settings.sed_method != '0') {
1374                sed();
1375            }
1376
1377            $('.mec-subscribe-to-calendar-btn').off('click').on('click', function () {
1378                $(this).parent().find('>.mec-subscribe-to-calendar-items').toggle();
1379            });
1380
1381            // Yearly view
1382            $("#mec_skin_" + settings.id + " .mec-has-event a").on('click', function (e) {
1383                e.preventDefault();
1384
1385                var des = $(this).attr('href');
1386                var visible = $(des).is(':visible');
1387                if (!visible) {
1388                    var year = $(des).parents('.mec-year-container').data('year-id');
1389                    if (year) {
1390
1391                        while (!visible) {
1392                            loadMoreButton(year);
1393
1394                            visible = $(des).is(':visible');
1395                        }
1396                    }
1397                }
1398
1399                $('.mec-events-agenda').removeClass('mec-selected');
1400                $(des).closest('.mec-events-agenda').addClass('mec-selected');
1401
1402                var scrollTopVal = $(des).closest('.mec-events-agenda').offset().top - 35;
1403                if ($(this).closest('.mec-fluent-wrap').length > 0) {
1404                    var parent = jQuery(this).closest('.mec-fluent-wrap').find('.mec-yearly-agenda-sec');
1405                    scrollTopVal = parent.scrollTop() + ($(des).closest('.mec-events-agenda').offset().top - parent.offset().top);
1406                    jQuery(this).closest('.mec-fluent-wrap').find('.mec-yearly-agenda-sec').getNiceScroll(0).doScrollTop(scrollTopVal - 15, 120);
1407                }
1408                else {
1409                    $('html, body').animate({
1410                        scrollTop: scrollTopVal
1411                    }, 300);
1412                }
1413            });
1414        }
1415
1416        function sed() {
1417            // Single Event Display
1418            $("#mec_skin_" + settings.id + " .mec-agenda-event-title a").off('click').on('click', function (e) {
1419                var sed_method = $(this).attr('target');
1420                if ('_blank' === sed_method) {
1421
1422                    return;
1423                }
1424                e.preventDefault();
1425                var href = $(this).attr('href');
1426
1427                var id = $(this).data('event-id');
1428                var occurrence = get_parameter_by_name('occurrence', href);
1429                var time = get_parameter_by_name('time', href);
1430
1431                if ('undefined' == typeof id) {
1432                    return;
1433                }
1434
1435                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
1436            });
1437        }
1438
1439        function loadMoreButton(year) {
1440            var $max_count, $current_count = 0;
1441            $max_count = $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-yearly-max").data('count');
1442            $current_count = $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-util-hidden").length;
1443
1444            if ($current_count > 10) {
1445                for (var i = 0; i < 10; i++) {
1446                    $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-util-hidden").slice(0, 2).each(function () {
1447                        $(this).removeClass('mec-util-hidden');
1448                    });
1449                }
1450            }
1451
1452            if ($current_count < 10 && $current_count != 0) {
1453                for (var j = 0; j < $current_count; j++) {
1454                    $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-util-hidden").slice(0, 2).each(function () {
1455                        $(this).removeClass('mec-util-hidden');
1456                        $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-load-more-wrap").css('display', 'none');
1457                    });
1458                }
1459            }
1460        }
1461    };
1462
1463}(jQuery));
1464
1465
1466// MEC GENERAL CALENDAR VIEW PLUGIN
1467(function ($) {
1468    $.fn.mecGeneralCalendarView = function (options) {
1469        // Default Options
1470        var settings = $.extend({
1471            // These are the defaults.
1472            id: 0,
1473            atts: '',
1474            ajax_url: '',
1475            sf: {},
1476        }, options);
1477
1478        // Set onclick Listeners
1479        setListeners();
1480
1481        function setListeners() {
1482            // Single Event Method
1483            if (settings.sed_method != '0') {
1484                sed();
1485            }
1486        }
1487        function sed() {
1488            // Single Event Display
1489            $("#mec_skin_" + settings.id + " .fc-daygrid-event").off('click').on('click', function (e) {
1490                e.preventDefault();
1491                var sed_method = $(this).attr('target');
1492                if ('_blank' === sed_method || '_self' === sed_method || 'no' === sed_method) {
1493
1494                    return;
1495                }
1496                e.preventDefault();
1497                var href = $(this).attr('href');
1498
1499                var id = $(this).data('event-id');
1500                var occurrence = get_parameter_by_name('occurrence', href);
1501                var time = get_parameter_by_name('time', href);
1502
1503                if ('undefined' == typeof id) {
1504                    return;
1505                }
1506
1507                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
1508            });
1509        }
1510    };
1511
1512}(jQuery));
1513
1514// MEC MONTHLY VIEW PLUGIN
1515(function ($) {
1516    $.fn.mecMonthlyView = function (options) {
1517        var active_month;
1518        var active_year;
1519
1520        // Default Options
1521        var settings = $.extend({
1522            // These are the defaults.
1523            today: null,
1524            id: 0,
1525            events_label: 'Events',
1526            event_label: 'Event',
1527            month_navigator: 0,
1528            atts: '',
1529            active_month: {},
1530            next_month: {},
1531            sf: {},
1532            ajax_url: '',
1533        }, options);
1534
1535        // Initialize Month Navigator
1536        if (settings.month_navigator) initMonthNavigator();
1537
1538        active_month = settings.active_month.month;
1539        active_year = settings.active_month.year;
1540
1541        // Set onclick Listeners
1542        setListeners();
1543
1544        // Search Widget
1545        if (settings.sf.container !== '') {
1546            sf = $(settings.sf.container).mecSearchForm({
1547                id: settings.id,
1548                refine: settings.sf.refine,
1549                ajax_url: settings.ajax_url,
1550                start_date: settings.start_date,
1551                atts: settings.atts,
1552                callback: function (atts) {
1553                    settings.atts = atts;
1554                    search(active_year, active_month);
1555                }
1556            });
1557
1558            $(settings.sf.container).addClass('mec-skin-search-init');
1559        }
1560
1561        function initMonthNavigator() {
1562            // Remove the onclick event
1563            $("#mec_skin_" + settings.id + " .mec-load-month").off("click");
1564
1565            // Add onclick event
1566            $("#mec_skin_" + settings.id + " .mec-load-month").on("click", function () {
1567                var year = $(this).data("mec-year");
1568                var month = $(this).data("mec-month");
1569
1570                setMonth(year, month, false, true);
1571            });
1572        }
1573
1574        function search(year, month) {
1575            // Modal
1576            var $modal = jQuery('.mec-modal-result');
1577
1578            // Add Loading Class
1579            if ($modal.length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1580            $modal.addClass('mec-month-navigator-loading');
1581
1582            $.ajax(
1583                {
1584                    url: settings.ajax_url,
1585                    data: "action=mec_monthly_view_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
1586                    dataType: "json",
1587                    type: "post",
1588                    success: function (response) {
1589                        // Append Month
1590                        $("#mec_skin_events_" + settings.id).html('<div class="mec-month-container" id="mec_monthly_view_month_' + settings.id + '_' + response.current_month.id + '" data-month-id="' + response.current_month.id + '">' + response.month + '</div>');
1591
1592                        // Append Month Navigator
1593                        $("#mec_skin_" + settings.id + " .mec-skin-monthly-view-month-navigator-container").html('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
1594
1595                        // Append Events Side
1596                        $("#mec_skin_" + settings.id + " .mec-calendar-events-side").html('<div class="mec-month-side" id="mec_month_side_' + settings.id + '_' + response.current_month.id + '">' + response.events_side + '</div>');
1597
1598                        // Re-initialize Month Navigator
1599                        initMonthNavigator();
1600
1601                        // Set onclick Listeners
1602                        setListeners();
1603
1604                        // Toggle Month
1605                        toggleMonth(response.current_month.id);
1606
1607                        jQuery(document).trigger('load_calendar_data');
1608
1609                        // Remove loading Class
1610                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1611
1612                        $(document).trigger('mec_search_init', ['monthly_view', settings, response]);
1613
1614                    },
1615                    error: function () { }
1616                });
1617        }
1618
1619        function setMonth(year, month, do_in_background, navigator_click) {
1620            if (typeof do_in_background === "undefined") do_in_background = false;
1621            navigator_click = navigator_click || false;
1622            var month_id = year + "" + month;
1623
1624            if (!do_in_background) {
1625                active_month = month;
1626                active_year = year;
1627            }
1628
1629            // Month exists so we just show it
1630            if ($("#mec_monthly_view_month_" + settings.id + "_" + month_id).length) {
1631                // Set Month Filter values in search widget
1632                $("#mec_sf_month_" + settings.id).val(month);
1633                $("#mec_sf_year_" + settings.id).val(year);
1634
1635                // Toggle Month
1636                toggleMonth(month_id);
1637            } else {
1638                if (!do_in_background) {
1639
1640                    // Add Loading Class
1641                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1642                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1643                }
1644
1645                $.ajax({
1646                    url: settings.ajax_url,
1647                    data: "action=mec_monthly_view_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
1648                    dataType: "json",
1649                    type: "post",
1650                    success: function (response) {
1651                        // Append Month
1652                        $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_monthly_view_month_' + settings.id + '_' + response.current_month.id + '" data-month-id="' + response.current_month.id + '">' + response.month + '</div>');
1653
1654                        // Append Month Navigator
1655                        $("#mec_skin_" + settings.id + " .mec-skin-monthly-view-month-navigator-container").append('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
1656
1657                        // Append Events Side
1658                        $("#mec_skin_" + settings.id + " .mec-calendar-events-side").append('<div class="mec-month-side" id="mec_month_side_' + settings.id + '_' + response.current_month.id + '">' + response.events_side + '</div>');
1659
1660                        // Re-initialize Month Navigator
1661                        initMonthNavigator();
1662
1663                        // Set onclick Listeners
1664                        setListeners();
1665
1666                        if (!do_in_background) {
1667                            // Toggle Month
1668                            toggleMonth(response.current_month.id);
1669
1670                            // Remove loading Class
1671                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1672
1673                            // Set Month Filter values in search widget
1674                            $("#mec_sf_month_" + settings.id).val(month);
1675                            $("#mec_sf_year_" + settings.id).val(year);
1676                        } else {
1677                            $("#mec_monthly_view_month_" + settings.id + "_" + response.current_month.id).hide();
1678                            $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
1679                            $("#mec_month_side_" + settings.id + "_" + response.current_month.id).hide();
1680                        }
1681                        if (typeof custom_month !== undefined) var custom_month;
1682                        if (typeof custom_month != undefined) {
1683                            if (custom_month == 'true') {
1684                                $(".mec-month-container .mec-calendar-day").removeClass('mec-has-event');
1685                                $(".mec-month-container .mec-calendar-day").removeClass('mec-selected-day');
1686                                $('.mec-calendar-day').off('click');
1687                            }
1688                        }
1689
1690                        jQuery(document).trigger('load_calendar_data');
1691
1692                    },
1693                    error: function () { }
1694                });
1695            }
1696        }
1697
1698        function toggleMonth(month_id) {
1699            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
1700            var active_day = $("#mec_monthly_view_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
1701
1702            if (active_day <= 9) active_day = "0" + active_day;
1703
1704            // Toggle Month Navigator
1705            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
1706            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
1707
1708            // Toggle Month
1709            $("#mec_skin_" + settings.id + " .mec-month-container").hide();
1710            $("#mec_monthly_view_month_" + settings.id + "_" + month_id).show();
1711
1712            // Add selected class
1713            $("#mec_skin_" + settings.id + " .mec-month-container").removeClass("mec-month-container-selected");
1714            $("#mec_monthly_view_month_" + settings.id + "_" + month_id).addClass("mec-month-container-selected");
1715
1716            // Toggle Events Side
1717            $("#mec_skin_" + settings.id + " .mec-month-side").hide();
1718            $("#mec_month_side_" + settings.id + "_" + month_id).show();
1719
1720            jQuery(document).trigger('mec_toggle_month', [settings, month_id]);
1721        }
1722
1723        var sf;
1724
1725        function setListeners() {
1726            // Remove the onclick event
1727            $("#mec_skin_" + settings.id + " .mec-has-event").off("click");
1728
1729            // Add the onclick event
1730            $("#mec_skin_" + settings.id + " .mec-has-event").on('click', function (e) {
1731                // define variables
1732                var $this = $(this),
1733                    data_mec_cell = $this.data('mec-cell'),
1734                    month_id = $this.data('month');
1735
1736                if (settings.display_all == 0) {
1737                    e.preventDefault();
1738
1739                    $("#mec_monthly_view_month_" + settings.id + "_" + month_id + " .mec-calendar-day").removeClass('mec-selected-day');
1740                    $this.addClass('mec-selected-day');
1741
1742                    $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
1743                    $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
1744
1745                    $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
1746                    $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
1747                }
1748                else {
1749                    $("#mec_monthly_view_month_" + settings.id + "_" + month_id + " .mec-calendar-day").removeClass('mec-selected-day');
1750                    $this.addClass('mec-selected-day');
1751                }
1752            });
1753
1754            $('.mec-subscribe-to-calendar-btn').off('click').on('click', function () {
1755                $(this).parent().find('>.mec-subscribe-to-calendar-items').toggle();
1756            });
1757
1758            mec_tooltip();
1759
1760            // Single Event Method
1761            if (settings.sed_method != '0') {
1762                sed();
1763            }
1764
1765            if (settings.style == 'novel') {
1766                if ($('.mec-single-event-novel').length > 0) {
1767                    $('.mec-single-event-novel').colourBrightness();
1768                    $('.mec-single-event-novel').each(function () {
1769                        $(this).colourBrightness()
1770                    });
1771                }
1772            }
1773        }
1774
1775        function sed() {
1776            // Single Event Display
1777            $("#mec_skin_" + settings.id + " .mec-event-title a,#mec_skin_" + settings.id + " .event-single-link-novel,#mec_skin_" + settings.id + " .mec-monthly-tooltip").off('click').on('click', function (e) {
1778                var sed_method = $(this).attr('target');
1779                if ('_blank' === sed_method) {
1780
1781                    return;
1782                }
1783                e.preventDefault();
1784                var href = $(this).attr('href');
1785
1786                var id = $(this).data('event-id');
1787                var occurrence = get_parameter_by_name('occurrence', href);
1788                var time = get_parameter_by_name('time', href);
1789
1790                if ('undefined' == typeof id) {
1791                    return;
1792                }
1793
1794                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
1795            });
1796
1797        }
1798
1799        function mec_tooltip() {
1800            if ($('.mec-monthly-tooltip').length >= 1) {
1801                if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) > 768) {
1802                    $('.mec-monthly-tooltip').tooltipster({
1803                        theme: 'tooltipster-shadow',
1804                        interactive: true,
1805                        delay: 100,
1806                        minWidth: 350,
1807                        maxWidth: 350
1808                    });
1809                    if (settings.sed_method != '0') {
1810                        sed();
1811                    }
1812                } else {
1813                    var touchtime = 0;
1814                    $(".mec-monthly-tooltip").on("click", function (event) {
1815                        event.preventDefault();
1816                        if (touchtime == 0) {
1817                            $('.mec-monthly-tooltip').tooltipster({
1818                                theme: 'tooltipster-shadow',
1819                                interactive: true,
1820                                delay: 100,
1821                                minWidth: 350,
1822                                maxWidth: 350,
1823                                trigger: "custom",
1824                                triggerOpen: {
1825                                    click: true,
1826                                    tap: true
1827                                },
1828                                triggerClose: {
1829                                    click: true,
1830                                    tap: true
1831                                }
1832                            });
1833                            touchtime = new Date().getTime();
1834                        } else {
1835                            if (((new Date().getTime()) - touchtime) < 200) {
1836                                var el = $(this);
1837                                var link = el.attr("href");
1838                                window.location = link;
1839                                touchtime = 0;
1840                            } else {
1841                                touchtime = new Date().getTime();
1842                            }
1843                        }
1844                    });
1845                }
1846            }
1847        }
1848    };
1849
1850}(jQuery));
1851
1852// MEC WEEKLY VIEW PLUGIN
1853(function ($) {
1854    $.fn.mecWeeklyView = function (options) {
1855        var active_year;
1856        var active_month;
1857        var active_week;
1858        var active_week_number;
1859
1860        // Default Options
1861        var settings = $.extend({
1862            // These are the defaults.
1863            today: null,
1864            week: 1,
1865            id: 0,
1866            current_year: null,
1867            current_month: null,
1868            changeWeekElement: '.mec-load-week',
1869            month_navigator: 0,
1870            atts: '',
1871            ajax_url: '',
1872            sf: {}
1873        }, options);
1874
1875        // Set Active Time
1876        active_year = settings.current_year;
1877        active_month = settings.current_month;
1878
1879        // Search Widget
1880        if (settings.sf.container !== '') {
1881            $(settings.sf.container).mecSearchForm({
1882                id: settings.id,
1883                refine: settings.sf.refine,
1884                ajax_url: settings.ajax_url,
1885                start_date: settings.start_date,
1886                atts: settings.atts,
1887                callback: function (atts) {
1888                    settings.atts = atts;
1889                    search(active_year, active_month, active_week);
1890                }
1891            });
1892
1893            $(settings.sf.container).addClass('mec-skin-search-init');
1894        }
1895
1896        // Set The Week
1897        setThisWeek(settings.month_id + settings.week);
1898
1899        // Set Listeners
1900        setListeners();
1901
1902        // Initialize Month Navigator
1903        if (settings.month_navigator) initMonthNavigator(settings.month_id);
1904
1905        function setListeners() {
1906            $(settings.changeWeekElement).off('click').on('click', function (e) {
1907                var week = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('week-id');
1908                var max_weeks = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('max-weeks');
1909                var new_week_number = active_week_number;
1910
1911                if ($(this).hasClass('mec-previous-month')) {
1912                    week = parseInt(week) - 1;
1913                    new_week_number--;
1914                } else {
1915                    week = parseInt(week) + 1;
1916                    new_week_number++;
1917                }
1918
1919                if (new_week_number <= 1 || new_week_number >= max_weeks) {
1920                    // Disable Next/Previous Button
1921                    $(this).css({
1922                        'opacity': .6,
1923                        'cursor': 'default'
1924                    });
1925                    $(this).find('i').css({
1926                        'opacity': .6,
1927                        'cursor': 'default'
1928                    });
1929                } else {
1930                    // Enable Next/Previous Buttons
1931                    $('#mec_skin_' + settings.id + ' .mec-load-week, #mec_skin_' + settings.id + ' .mec-load-week i').css({
1932                        'opacity': 1,
1933                        'cursor': 'pointer'
1934                    });
1935                }
1936
1937                // Week is not in valid range
1938                if (new_week_number === 0 || new_week_number > max_weeks) { } else {
1939                    setThisWeek(week);
1940                }
1941            });
1942
1943            $('.mec-subscribe-to-calendar-btn').off('click').on('click', function () {
1944                $(this).parent().find('>.mec-subscribe-to-calendar-items').toggle();
1945            });
1946
1947            // Single Event Method
1948            if (settings.sed_method != '0') {
1949                sed();
1950            }
1951        }
1952
1953        function setThisWeek(week, auto_focus) {
1954            if (typeof auto_focus === 'undefined') auto_focus = false;
1955
1956            // Week is not exists
1957            if (!$('#mec_weekly_view_week_' + settings.id + '_' + week).length) {
1958                return setThisWeek((parseInt(week) - 1));
1959            }
1960
1961            // Set week to active in week list
1962            $('#mec_skin_' + settings.id + ' .mec-weekly-view-week').removeClass('mec-weekly-view-week-active');
1963            $('#mec_weekly_view_week_' + settings.id + '_' + week).addClass('mec-weekly-view-week-active');
1964            $('#mec_weekly_view_top_week_' + settings.id + '_' + week).addClass('mec-weekly-view-week-active');
1965
1966            // Show related events
1967            $('#mec_skin_' + settings.id + ' .mec-weekly-view-date-events').addClass('mec-util-hidden');
1968            $('.mec-weekly-view-week-' + settings.id + '-' + week).removeClass('mec-util-hidden');
1969            $('#mec_skin_' + settings.id + ' .mec-calendar-row').addClass('mec-util-hidden');
1970            $('#mec_skin_' + settings.id + ' .mec-calendar-row[data-week=' + week % 10 + ']').removeClass('mec-util-hidden');
1971
1972            active_week = week;
1973            active_week_number = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('week-number');
1974
1975            $('#mec_skin_' + settings.id + ' .mec-calendar-d-top').find('.mec-current-week').find('span').remove();
1976            $('#mec_skin_' + settings.id + ' .mec-calendar-d-top').find('.mec-current-week').append('<span>' + active_week_number + '</span>');
1977
1978            if (active_week_number === 1) {
1979                // Disable Previous Button
1980                $('#mec_skin_' + settings.id + ' .mec-previous-month.mec-load-week').css({
1981                    'opacity': .6,
1982                    'cursor': 'default'
1983                });
1984                $('#mec_skin_' + settings.id + ' .mec-previous-month.mec-load-week').find('i').css({
1985                    'opacity': .6,
1986                    'cursor': 'default'
1987                });
1988            }
1989
1990            // Go To Event Week
1991            if (auto_focus) mec_focus_week(settings.id);
1992
1993            mecFluentCustomScrollbar();
1994        }
1995
1996        function initMonthNavigator(month_id) {
1997            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').off('click').on('click', function () {
1998                var year = $(this).data('mec-year');
1999                var month = $(this).data('mec-month');
2000
2001                setMonth(year, month, active_week, true);
2002            });
2003        }
2004
2005        function search(year, month, week, navigation_click) {
2006            var week_number = (String(week).slice(-1));
2007
2008            // Add Loading Class
2009            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2010            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2011
2012            $.ajax({
2013                url: settings.ajax_url,
2014                data: "action=mec_weekly_view_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_week=" + week_number + "&" + settings.atts + "&apply_sf_date=1",
2015                dataType: "json",
2016                type: "post",
2017                success: function (response) {
2018                    // Remove Loading Class
2019                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2020
2021                    // Append Month
2022                    $("#mec_skin_events_" + settings.id).html('<div class="mec-month-container" id="mec_weekly_view_month_' + settings.id + '_' + response.current_month.id + '">' + response.month + '</div>');
2023
2024                    // Append Month Navigator
2025                    $("#mec_skin_" + settings.id + " .mec-skin-weekly-view-month-navigator-container").html('<div class="mec-month-navigator" id="mec_month_navigator' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
2026
2027                    // Set Listeners
2028                    setListeners();
2029
2030                    // Toggle Month
2031                    toggleMonth(response.current_month.id);
2032
2033                    // Set active week
2034                    setThisWeek(response.week_id, true);
2035                    mecFluentCustomScrollbar();
2036
2037                    $(document).trigger('mec_search_init', ['weekly_view', settings, response]);
2038                },
2039                error: function () { }
2040            });
2041        }
2042
2043        function setMonth(year, month, week, navigation_click) {
2044            var month_id = '' + year + month;
2045            var week_number = (String(week).slice(-1));
2046
2047            active_month = month;
2048            active_year = year;
2049            navigation_click = navigation_click || false;
2050
2051            // Month exists so we just show it
2052            if ($("#mec_weekly_view_month_" + settings.id + "_" + month_id).length) {
2053                // Set Month Filter values in search widget
2054                $("#mec_sf_month_" + settings.id).val(month);
2055                $("#mec_sf_year_" + settings.id).val(year);
2056
2057                // Toggle Month
2058                toggleMonth(month_id);
2059
2060                // Set active week
2061                setThisWeek('' + month_id + week_number, true);
2062                mecFluentCustomScrollbar();
2063            } else {
2064                // Add Loading Class
2065                if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2066                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2067
2068                $.ajax({
2069                    url: settings.ajax_url,
2070                    data: "action=mec_weekly_view_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_week=" + week_number + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigation_click,
2071                    dataType: "json",
2072                    type: "post",
2073                    success: function (response) {
2074                        // Remove Loading Class
2075                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2076
2077                        $('#mec_skin_' + settings.id + ' .mec-calendar-d-top h3').after(response.topWeeks);
2078
2079                        // Append Month
2080                        $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_weekly_view_month_' + settings.id + '_' + response.current_month.id + '">' + response.month + '</div>');
2081
2082                        // Append Month Navigator
2083                        $("#mec_skin_" + settings.id + " .mec-skin-weekly-view-month-navigator-container").append('<div class="mec-month-navigator" id="mec_month_navigator' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
2084
2085                        // Set Listeners
2086                        setListeners();
2087
2088                        // Toggle Month
2089                        toggleMonth(response.current_month.id);
2090
2091                        // Set active week
2092                        setThisWeek(response.week_id, true);
2093
2094                        // Set Month Filter values in search widget
2095                        $("#mec_sf_month_" + settings.id).val(month);
2096                        $("#mec_sf_year_" + settings.id).val(year);
2097                        mecFluentCustomScrollbar();
2098                    },
2099                    error: function () { }
2100                });
2101            }
2102        }
2103
2104        function toggleMonth(month_id) {
2105            // Show related events
2106            $('#mec_skin_' + settings.id + ' .mec-month-container').addClass('mec-util-hidden');
2107            $('#mec_weekly_view_month_' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
2108
2109            $('#mec_skin_' + settings.id + ' .mec-month-navigator').addClass('mec-util-hidden');
2110            $('#mec_month_navigator' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
2111
2112            // Initialize Month Navigator
2113            if (settings.month_navigator) initMonthNavigator(month_id);
2114
2115            jQuery(document).trigger('mec_toggle_month', [settings, month_id]);
2116        }
2117
2118        function sed() {
2119            // Single Event Display
2120            $("#mec_skin_" + settings.id + " .mec-event-title a").off('click').on('click', function (e) {
2121                var sed_method = $(this).attr('target');
2122                if ('_blank' === sed_method) {
2123                    return;
2124                }
2125
2126                e.preventDefault();
2127                var href = $(this).attr('href');
2128
2129                var id = $(this).data('event-id');
2130                var occurrence = get_parameter_by_name('occurrence', href);
2131                var time = get_parameter_by_name('time', href);
2132
2133                if ('undefined' == typeof id) {
2134                    return;
2135                }
2136
2137                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
2138            });
2139        }
2140    };
2141
2142}(jQuery));
2143
2144// MEC DAILY VIEW PLUGIN
2145(function ($) {
2146    $.fn.mecDailyView = function (options) {
2147        var active_month;
2148        var active_year;
2149        var active_day;
2150
2151        // Default Options
2152        var settings = $.extend({
2153            // These are the defaults.
2154            today: null,
2155            id: 0,
2156            changeDayElement: '.mec-daily-view-day',
2157            events_label: 'Events',
2158            event_label: 'Event',
2159            month_navigator: 0,
2160            atts: '',
2161            ajax_url: '',
2162            sf: {},
2163        }, options);
2164
2165        active_month = settings.month;
2166        active_year = settings.year;
2167        active_day = settings.day;
2168
2169        mecFluentCustomScrollbar();
2170
2171        // Set Today
2172        setToday(settings.today);
2173
2174        // Set Listeners
2175        setListeners();
2176
2177        // Initialize Month Navigator
2178        if (settings.month_navigator) initMonthNavigator(settings.month_i
2178d);
2179
2180        // Initialize Days Slider
2181        initDaysSlider(settings.month_id);
2182
2183        // Slider first event day focus when page load.
2184        mecFocusDay(settings);
2185
2186        // Search Widget
2187        if (settings.sf.container !== '') {
2188            $(settings.sf.container).mecSearchForm({
2189                id: settings.id,
2190                refine: settings.sf.refine,
2191                ajax_url: settings.ajax_url,
2192                start_date: settings.start_date,
2193                atts: settings.atts,
2194                callback: function (atts) {
2195                    settings.atts = atts;
2196                    search(active_year, active_month, active_day);
2197                }
2198            });
2199
2200            $(settings.sf.container).addClass('mec-skin-search-init');
2201        }
2202
2203        function setListeners() {
2204            $(settings.changeDayElement).on('click', function () {
2205                var today = $(this).data('day-id');
2206                setToday(today);
2207                mecFluentCustomScrollbar();
2208            });
2209
2210            $('.mec-subscribe-to-calendar-btn').off('click').on('click', function () {
2211                $(this).parent().find('>.mec-subscribe-to-calendar-items').toggle();
2212            });
2213
2214            // Single Event Method
2215            if (settings.sed_method != '0') {
2216                sed();
2217            }
2218        }
2219
2220        var current_monthday;
2221
2222        function setToday(today) {
2223            // For caring about 31st, 30th and 29th of some months
2224            if (!$('#mec_daily_view_day' + settings.id + '_' + today).length) {
2225                setToday(parseInt(today) - 1);
2226                return false;
2227            }
2228
2229            // Set day to active in day list
2230            $('.mec-daily-view-day').removeClass('mec-daily-view-day-active mec-color');
2231            $('#mec_daily_view_day' + settings.id + '_' + today).addClass('mec-daily-view-day-active mec-color');
2232
2233            // Show related events
2234            $('.mec-daily-view-date-events').addClass('mec-util-hidden');
2235            $('#mec_daily_view_date_events' + settings.id + '_' + today).removeClass('mec-util-hidden');
2236            $('.mec-daily-view-events').addClass('mec-util-hidden');
2237            $('#mec-daily-view-events' + settings.id + '_' + today).removeClass('mec-util-hidden');
2238
2239            // Set today label
2240            var weekday = $('#mec_daily_view_day' + settings.id + '_' + today).data('day-weekday');
2241            var monthday = $('#mec_daily_view_day' + settings.id + '_' + today).data('day-monthday');
2242            var count = $('#mec_daily_view_day' + settings.id + '_' + today).data('events-count');
2243            var month_id = $('#mec_daily_view_day' + settings.id + '_' + today).data('month-id');
2244
2245            $('#mec_today_container' + settings.id + '_' + month_id).html('<h2>' + monthday + '</h2><h3>' + weekday + '</h3><div class="mec-today-count">' + count + ' ' + (count > 1 ? settings.events_label : settings.event_label) + '</div>');
2246
2247            if (monthday <= 9) current_monthday = '0' + monthday;
2248            else current_monthday = monthday;
2249        }
2250
2251        function initMonthNavigator(month_id) {
2252            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').off('click');
2253            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').on('click', function () {
2254                var year = $(this).data('mec-year');
2255                var month = $(this).data('mec-month');
2256
2257                setMonth(year, month, current_monthday, true);
2258            });
2259        }
2260
2261        function initDaysSlider(month_id, day_id) {
2262            // Set Global Month ID
2263            mec_g_month_id = month_id;
2264
2265            // Check RTL website
2266            var owl_rtl = $('body').hasClass('rtl') ? true : false;
2267
2268            // Init Days slider
2269            var owl = $("#mec-owl-calendar-d-table-" + settings.id + "-" + month_id);
2270            if (owl.hasClass('owl-loaded')) {
2271                owl.trigger('destroy.owl.carousel');
2272                owl.removeClass('owl-loaded');
2273                owl.find('.owl-stage-outer').children().unwrap();
2274            }
2275
2276            // Check if carousel is in a narrow container (like sidebar)
2277            var parentWidth = owl.parent().width();
2278            var isNarrowContainer = parentWidth < 500;
2279
2280            var responsiveConfig = {
2281                0: {
2282                    items: owl.closest('.mec-fluent-wrap,.mec-liquid-wrap').length > 0 ? 3 : 2,
2283                },
2284                479: {
2285                    items: isNarrowContainer ? 3 : 4,
2286                },
2287                767: {
2288                    items: isNarrowContainer ? 4 : 7,
2289                },
2290                960: {
2291                    items: isNarrowContainer ? 5 : 14,
2292                },
2293                1000: {
2294                    items: isNarrowContainer ? 6 : 19,
2295                },
2296                1200: {
2297                    items: isNarrowContainer ? 7 : 22,
2298                }
2299            };
2300
2301            owl.owlCarousel({
2302                responsiveClass: true,
2303                responsive: responsiveConfig,
2304                dots: false,
2305                loop: false,
2306                rtl: owl_rtl,
2307                navElement: 'button type="button" role="button"',
2308            });
2309
2310            $(document).trigger('mec_daily_slider_init', [owl, owl_rtl]);
2311
2312            // Custom Navigation Events
2313            $("#mec_daily_view_month_" + settings.id + "_" + month_id + " .mec-table-d-next").click(function (e) {
2314                e.preventDefault();
2315                owl.trigger('next.owl.carousel');
2316            });
2317
2318            $("#mec_daily_view_month_" + settings.id + "_" + month_id + " .mec-table-d-prev").click(function (e) {
2319                e.preventDefault();
2320                owl.trigger('prev.owl.carousel');
2321            });
2322
2323            if (typeof day_id === 'undefined') day_id = $('.mec-daily-view-day-active').data('day-id');
2324
2325            var today_str = day_id.toString().substring(6, 8);
2326            var today_int = parseInt(today_str);
2327
2328            owl.trigger('owl.goTo', [today_int]);
2329
2330            owl.removeClass('owl-hidden');
2331        }
2332
2333        function search(year, month, day) {
2334            // Add Loading Class
2335            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2336            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2337
2338            $.ajax({
2339                url: settings.ajax_url,
2340                data: "action=mec_daily_view_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_day=" + day + "&" + settings.atts + "&apply_sf_date=1",
2341                dataType: "json",
2342                type: "post",
2343                success: function (response) {
2344                    // Remove Loading Class
2345                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2346
2347                    // Append Month
2348                    $("#mec_skin_events_" + settings.id).html('<div class="mec-month-container" id="mec_daily_view_month_' + settings.id + '_' + response.current_month.id + '">' + response.month + '</div>');
2349
2350                    // Append Month Navigator
2351                    $("#mec_skin_" + settings.id + " .mec-calendar-a-month.mec-clear").html('<div class="mec-month-navigator" id="mec_month_navigator' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
2352
2353                    // Set Listeners
2354                    setListeners();
2355
2356                    active_year = response.current_month.year;
2357                    active_month = response.current_month.month;
2358
2359                    // Toggle Month
2360                    toggleMonth(response.current_month.id, '' + active_year + active_month + active_day);
2361
2362                    // Set Today
2363                    setToday('' + active_year + active_month + active_day);
2364
2365                    // Focus First Active Day
2366                    mecFocusDay(settings);
2367                    mecFluentCustomScrollbar();
2368
2369                    $(document).trigger('mec_search_init', ['daily_view', settings, response]);
2370                },
2371                error: function () { }
2372            });
2373        }
2374
2375        function setMonth(year, month, day, navigation_click) {
2376            var month_id = '' + year + month;
2377
2378            active_month = month;
2379            active_year = year;
2380            active_day = day;
2381            navigation_click = navigation_click || false;
2382
2383            // Month exists so we just show it
2384            if ($("#mec_daily_view_month_" + settings.id + "_" + month_id).length) {
2385                // Set Month Filter values in search widget
2386                $("#mec_sf_month_" + settings.id).val(month);
2387                $("#mec_sf_year_" + settings.id).val(year);
2388
2389                // Toggle Month
2390                toggleMonth(month_id);
2391
2392                // Set Today
2393                setToday('' + month_id + day);
2394            } else {
2395                // Add Loading Class
2396                if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2397                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2398
2399                $.ajax({
2400                    url: settings.ajax_url,
2401                    data: "action=mec_daily_view_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_day=" + day + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigation_click,
2402                    dataType: "json",
2403                    type: "post",
2404                    success: function (response) {
2405                        // Remove Loading Class
2406                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2407
2408                        // Append Month
2409                        $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_daily_view_month_' + settings.id + '_' + response.current_month.id + '">' + response.month + '</div>');
2410
2411                        // Append Month Navigator
2412                        $("#mec_skin_" + settings.id + " .mec-calendar-a-month.mec-clear").append('<div class="mec-month-navigator" id="mec_month_navigator' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
2413
2414                        // Set Listeners
2415                        setListeners();
2416
2417                        // Toggle Month
2418                        toggleMonth(response.current_month.id, '' + year + month + '01');
2419
2420                        // Set Today
2421                        setToday('' + year + month + '01');
2422
2423                        // Set Month Filter values in search widget
2424                        $("#mec_sf_month_" + settings.id).val(month);
2425                        $("#mec_sf_year_" + settings.id).val(year);
2426                        mecFluentCustomScrollbar();
2427                    },
2428                    error: function () { }
2429                });
2430            }
2431        }
2432
2433        function toggleMonth(month_id, day_id) {
2434            // Show related events
2435            $('#mec_skin_' + settings.id + ' .mec-month-container').addClass('mec-util-hidden');
2436            $('#mec_daily_view_month_' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
2437
2438            $('#mec_skin_' + settings.id + ' .mec-month-navigator').addClass('mec-util-hidden');
2439            $('#mec_month_navigator' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
2440
2441            // Initialize Month Navigator
2442            if (settings.month_navigator) initMonthNavigator(month_id);
2443
2444            // Initialize Days Slider
2445            initDaysSlider(month_id, day_id);
2446
2447            // Focus First Active Day
2448            mecFocusDay(settings);
2449
2450            jQuery(document).trigger('mec_toggle_month', [settings, month_id]);
2451        }
2452
2453        function sed() {
2454            // Single Event Display
2455            $("#mec_skin_" + settings.id + " .mec-event-title a").off('click').on('click', function (e) {
2456                var sed_method = $(this).attr('target');
2457                if ('_blank' === sed_method) {
2458
2459                    return;
2460                }
2461                e.preventDefault();
2462                var href = $(this).attr('href');
2463
2464                var id = $(this).data('event-id');
2465                var occurrence = get_parameter_by_name('occurrence', href);
2466                var time = get_parameter_by_name('time', href);
2467
2468                if ('undefined' == typeof id) {
2469                    return;
2470                }
2471
2472                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
2473            });
2474        }
2475    };
2476
2477}(jQuery));
2478
2479// MEC TIMETABLE PLUGIN
2480(function ($) {
2481    $.fn.mecTimeTable = function (options) {
2482        var active_year;
2483        var active_month;
2484        var active_week;
2485        var active_week_number;
2486        var active_day;
2487
2488        // Default Options
2489        var settings = $.extend({
2490            // These are the defaults.
2491            today: null,
2492            week: 1,
2493            active_day: 1,
2494            id: 0,
2495            changeWeekElement: '.mec-load-week',
2496            month_navigator: 0,
2497            atts: '',
2498            ajax_url: '',
2499            sf: {}
2500        }, options);
2501
2502        // Search Widget
2503        if (settings.sf.container !== '') {
2504            $(settings.sf.container).mecSearchForm({
2505                id: settings.id,
2506                refine: settings.sf.refine,
2507                ajax_url: settings.ajax_url,
2508                start_date: settings.start_date,
2509                atts: settings.atts,
2510                callback: function (atts) {
2511                    settings.atts = atts;
2512                    search(active_year, active_month, active_week, active_day);
2513                }
2514            });
2515
2516            $(settings.sf.container).addClass('mec-skin-search-init');
2517        }
2518
2519        // Set The Week
2520        setThisWeek(settings.month_id + settings.week, settings.active_day);
2521
2522        // Set Listeners
2523        setListeners();
2524
2525        // Initialize Month Navigator
2526        if (settings.month_navigator) initMonthNavigator(settings.month_id);
2527
2528        function setListeners() {
2529            // Change Week Listener
2530            $(settings.changeWeekElement).off('click').on('click', function () {
2531                var week = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('week-id');
2532                var max_weeks = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('max-weeks');
2533                var new_week_number = active_week_number;
2534
2535                if ($(this).hasClass('mec-previous-month')) {
2536                    week = parseInt(week) - 1;
2537                    new_week_number--;
2538                } else {
2539                    week = parseInt(week) + 1;
2540                    new_week_number++;
2541                }
2542
2543                if (new_week_number <= 1 || new_week_number >= max_weeks) {
2544                    // Disable Next/Previous Button
2545                    $(this).css({
2546                        'opacity': .6,
2547                        'cursor': 'default'
2548                    });
2549                    $(this).find('i').css({
2550                        'opacity': .6,
2551                        'cursor': 'default'
2552                    });
2553                } else {
2554                    // Enable Next/Previous Buttons
2555                    $('#mec_skin_' + settings.id + ' .mec-load-week, #mec_skin_' + settings.id + ' .mec-load-week i').css({
2556                        'opacity': 1,
2557                        'cursor': 'pointer'
2558                    });
2559                }
2560
2561                // Week is not in valid range
2562                if (new_week_number === 0 || new_week_number > max_weeks) { } else {
2563                    setThisWeek(week);
2564                }
2565            });
2566
2567            // Change Day Listener
2568            $('#mec_skin_' + settings.id + ' .mec-weekly-view-week dt').not('.mec-timetable-has-no-event').off('click').on('click', function () {
2569                var day = $(this).data('date-id');
2570                setDay(day);
2571            });
2572
2573            // Single Event Method
2574            if (settings.sed_method != '0') {
2575                sed();
2576            }
2577        }
2578
2579        function setThisWeek(week, day) {
2580            // Week is not exists
2581            if (!$('#mec_weekly_view_week_' + settings.id + '_' + week).length) {
2582                return setThisWeek((parseInt(week) - 1), day);
2583            }
2584
2585            // Set week to active in week list
2586            $('#mec_skin_' + settings.id + ' .mec-weekly-view-week').removeClass('mec-weekly-view-week-active');
2587            $('#mec_weekly_view_week_' + settings.id + '_' + week).addClass('mec-weekly-view-week-active');
2588
2589            setDay(day);
2590
2591            active_week = week;
2592            active_week_number = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('week-number');
2593
2594            $('#mec_skin_' + settings.id + ' .mec-calendar-d-top').find('.mec-current-week').find('span').remove();
2595            $('#mec_skin_' + settings.id + ' .mec-calendar-d-top').find('.mec-current-week').append('<span>' + active_week_number + '</span>');
2596
2597            if (active_week_number === 1) {
2598                // Disable Previous Button
2599                $('#mec_skin_' + settings.id + ' .mec-previous-month.mec-load-week').css({
2600                    'opacity': .6,
2601                    'cursor': 'default'
2602                });
2603                $('#mec_skin_' + settings.id + ' .mec-previous-month.mec-load-week').find('i').css({
2604                    'opacity': .6,
2605                    'cursor': 'default'
2606                });
2607            }
2608        }
2609
2610        function setDay(day) {
2611            // Find the date automatically
2612            if (typeof day === 'undefined') {
2613                day = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active dt').not('.mec-timetable-has-no-event').first().data('date-id');
2614            }
2615
2616            // Activate the date element
2617            $('#mec_skin_' + settings.id + ' dt').removeClass('mec-timetable-day-active');
2618            $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active dt[data-date-id="' + day + '"]').addClass('mec-timetable-day-active');
2619
2620            // Show related events
2621            $('#mec_skin_' + settings.id + ' .mec-weekly-view-date-events').addClass('mec-util-hidden');
2622            $('.mec_weekly_view_date_events' + settings.id + '_' + day).removeClass('mec-util-hidden').show();
2623        }
2624
2625        function initMonthNavigator(month_id) {
2626            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').off('click').on('click', function () {
2627                var year = $(this).data('mec-year');
2628                var month = $(this).data('mec-month');
2629
2630                setMonth(year, month, active_week);
2631            });
2632        }
2633
2634        function search(year, month, week) {
2635            var week_number = (String(week).slice(-1));
2636
2637            // Add Loading Class
2638            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2639            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2640
2641            // Set MEC Year And Month If Undefined
2642            year = typeof year == 'undefined' ? '' : year;
2643            month = typeof month == 'undefined' ? '' : month;
2644
2645            // Append current week to data body for used after filter.
2646            $('body').data('currentweek', $("#mec_skin_events_" + settings.id).find('.mec-current-week > span').html());
2647
2648            $.ajax({
2649                url: settings.ajax_url,
2650                data: "action=mec_timetable_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_week=" + week_number + "&" + settings.atts + "&apply_sf_date=1",
2651                dataType: "json",
2652                type: "post",
2653                success: function (response) {
2654                    // Remove Loading Class
2655                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2656
2657                    // Append Month
2658                    $("#mec_skin_events_" + settings.id).html('<div class="mec-month-container" id="mec_timetable_month_' + settings.id + '_' + response.current_month.id + '">' + response.month + '</div>');
2659
2660                    // Append Month Navigator
2661                    $("#mec_skin_" + settings.id + " .mec-skin-weekly-view-month-navigator-container").html('<div class="mec-month-navigator" id="mec_month_navigator' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
2662
2663                    // Set Listeners
2664                    setListeners();
2665
2666                    // Toggle Month
2667                    toggleMonth(response.current_month.id);
2668
2669                    // Set active week
2670                    setThisWeek(response.week_id);
2671
2672                    // Focus First Active Week
2673                    mec_focus_week(settings.id, 'timetable');
2674
2675                    mecFluentCustomScrollbar();
2676
2677                    $(document).trigger('mec_search_init', ['timetable', settings, response]);
2678                },
2679                error: function () { }
2680            });
2681        }
2682
2683        function setMonth(year, month, week) {
2684            var month_id = '' + year + month;
2685            var week_number = (String(week).slice(-1));
2686
2687            active_month = month;
2688            active_year = year;
2689
2690            // Month exists so we just show it
2691            if ($("#mec_timetable_month_" + settings.id + "_" + month_id).length) {
2692                // Toggle Month
2693                toggleMonth(month_id);
2694
2695                // Set active week
2696                setThisWeek('' + month_id + week_number);
2697            } else {
2698                // Add Loading Class
2699                if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2700                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2701
2702                $.ajax({
2703                    url: settings.ajax_url,
2704                    data: "action=mec_timetable_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_week=" + week_number + "&" + settings.atts + "&apply_sf_date=0",
2705                    dataType: "json",
2706                    type: "post",
2707                    success: function (response) {
2708                        // Remove Loading Class
2709                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2710
2711                        // Append Month
2712                        $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_timetable_month_' + settings.id + '_' + response.current_month.id + '">' + response.month + '</div>');
2713
2714                        // Append Month Navigator
2715                        $("#mec_skin_" + settings.id + " .mec-skin-weekly-view-month-navigator-container").append('<div class="mec-month-navigator" id="mec_month_navigator' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
2716
2717                        // Set Listeners
2718                        setListeners();
2719
2720                        // Toggle Month
2721                        toggleMonth(response.current_month.id);
2722
2723                        // Set active week
2724                        setThisWeek(response.week_id);
2725
2726                        // Set Month Filter values in search widget
2727                        $("#mec_sf_month_" + settings.id).val(month);
2728                        $("#mec_sf_year_" + settings.id).val(year);
2729                    },
2730                    error: function () { }
2731                });
2732            }
2733        }
2734
2735        function toggleMonth(month_id) {
2736            // Show related events
2737            $('#mec_skin_' + settings.id + ' .mec-month-container').addClass('mec-util-hidden');
2738            $('#mec_timetable_month_' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
2739
2740            $('#mec_skin_' + settings.id + ' .mec-month-navigator').addClass('mec-util-hidden');
2741            $('#mec_month_navigator' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
2742
2743            // Initialize Month Navigator
2744            if (settings.month_navigator) initMonthNavigator(month_id);
2745
2746            jQuery(document).trigger('mec_toggle_month', [settings, month_id]);
2747        }
2748
2749        function sed() {
2750            // Single Event Display
2751            $("#mec_skin_" + settings.id + " .mec-timetable-event-title a").off('click').on('click', function (e) {
2752                e.preventDefault();
2753                var href = $(this).attr('href');
2754
2755                var id = $(this).data('event-id');
2756                var occurrence = get_parameter_by_name('occurrence', href);
2757                var time = get_parameter_by_name('time', href);
2758
2759                if ('undefined' == typeof id) {
2760                    return;
2761                }
2762
2763                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
2764            });
2765        }
2766    };
2767
2768}(jQuery));
2769
2770// MEC WEEKLY PROGRAM PLUGIN
2771(function ($) {
2772    $.fn.mecWeeklyProgram = function (options) {
2773        // Default Options
2774        var settings = $.extend({
2775            // These are the defaults.
2776            id: 0,
2777            atts: '',
2778            sf: {}
2779        }, options);
2780        var currentStartDate = settings.start_date;
2781
2782        // Search Widget
2783        if (settings.sf.container !== '') {
2784            $(settings.sf.container).mecSearchForm({
2785                id: settings.id,
2786                refine: settings.sf.refine,
2787                ajax_url: settings.ajax_url,
2788                start_date: settings.start_date,
2789                atts: settings.atts,
2790                callback: function (atts) {
2791                    settings.atts = atts;
2792                    search();
2793                }
2794            });
2795
2796            $(settings.sf.container).addClass('mec-skin-search-init');
2797        }
2798
2799        // Set Listeners
2800        setListeners();
2801
2802        function setListeners() {
2803            if (settings.week_navigator) {
2804                $('#mec_skin_' + settings.id + ' .mec-timetable-week-navigator .mec-load-week').off('click').on('click', function (e) {
2805                    e.preventDefault();
2806                    loadWeek($(this).data('mec-start-date'));
2807                });
2808            }
2809
2810            // Single Event Method
2811            if (settings.sed_method != '0') {
2812                sed();
2813            }
2814        }
2815
2816        function search() {
2817            var $modal = $('.mec-modal-result');
2818
2819            // Add Loading Class
2820            if ($modal.length === 0) $('.mec-wrap').append('<div class="mec-modal-result"></div>');
2821            $modal.addClass('mec-month-navigator-loading');
2822
2823            $.ajax({
2824                url: settings.ajax_url,
2825                data: "action=mec_weeklyprogram_load&mec_start_date=" + encodeURIComponent(currentStartDate) + "&" + settings.atts + "&apply_sf_date=1",
2826                dataType: "json",
2827                type: "post",
2828                success: function (response) {
2829                    // Remove Loading Class
2830                    $modal.removeClass("mec-month-navigator-loading");
2831
2832                    // Append Month
2833                    $("#mec_skin_events_" + settings.id).html(response.date_events);
2834
2835                    // Set Listeners
2836                    setListeners();
2837
2838                    $(document).trigger('mec_search_init', ['weeklyprogram', settings, response]);
2839                },
2840                error: function () { }
2841            });
2842        }
2843
2844        function loadWeek(startDate) {
2845            if (!startDate) return;
2846
2847            var $modal = $('.mec-modal-result');
2848            if ($modal.length === 0) $('.mec-wrap').append('<div class="mec-modal-result"></div>');
2849            $('.mec-modal-result').addClass('mec-month-navigator-loading');
2850
2851            $.ajax({
2852                url: settings.ajax_url,
2853                data: "action=mec_weeklyprogram_load&mec_start_date=" + encodeURIComponent(startDate) + "&" + settings.atts + "&apply_sf_date=0",
2854                dataType: "json",
2855                type: "post",
2856                success: function (response) {
2857                    $('.mec-modal-result').removeClass('mec-month-navigator-loading');
2858                    currentStartDate = startDate;
2859                    $('#mec_skin_events_' + settings.id).html(response.date_events);
2860                    $('#mec_skin_' + settings.id + ' .mec-timetable-week-navigator').html(response.navigator);
2861                    setListeners();
2862                },
2863                error: function () {
2864                    $('.mec-modal-result').removeClass('mec-month-navigator-loading');
2865                }
2866            });
2867        }
2868
2869        function sed() {
2870            // Single Event Display
2871            $("#mec_skin_" + settings.id + " .mec-event-title a").off('click').on('click', function (e) {
2872                var sed_method = $(this).attr('target');
2873                if ('_blank' === sed_method) {
2874
2875                    return;
2876                }
2877                e.preventDefault();
2878                var href = $(this).attr('href');
2879
2880                var id = $(this).data('event-id');
2881                var occurrence = get_parameter_by_name('occurrence', href);
2882                var time = get_parameter_by_name('time', href);
2883
2884                if ('undefined' == typeof id) {
2885                    return;
2886                }
2887
2888                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
2889            });
2890        }
2891    };
2892
2893}(jQuery));
2894
2895// MEC MASONRY VIEW PLUGIN
2896(function ($) {
2897    $.fn.mecMasonryView = function (options) {
2898        // Default Options
2899        var settings = $.extend({
2900            // These are the defaults.
2901            id: 0,
2902            atts: '',
2903            ajax_url: '',
2904            sf: {},
2905            end_date: '',
2906            offset: 0,
2907            start_date: '',
2908            pagination: '0',
2909            infinite_locked: false,
2910        }, options);
2911
2912        let history = [];
2913        const $next = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-next-button');
2914        const $prev = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-prev-button');
2915
2916        // Set onclick Listeners
2917        setListeners();
2918
2919        // Init Masonry
2920        initMasonry();
2921        if (typeof custom_dev !== undefined) var custom_dev;
2922        if (custom_dev == 'yes') {
2923            $(".mec-wrap").css("height", "1550");
2924            if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) < 768) {
2925                $(".mec-wrap").css("height", "5500");
2926            }
2927            if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) < 480) {
2928                $(".mec-wrap").css("height", "5000");
2929            }
2930            $(".mec-event-masonry .mec-masonry-item-wrap:nth-child(n+20)").css("display", "none");
2931            $(".mec-load-more-button").on("click", function () {
2932                $(".mec-event-masonry .mec-masonry-item-wrap:nth-child(n+20)").css("display", "block");
2933                $(".mec-wrap").css("height", "auto");
2934                initMasonry();
2935                $(".mec-load-more-button").hide();
2936            })
2937            $(".mec-events-masonry-cats a:first-child").on("click", function () {
2938                $(".mec-wrap").css("height", "auto");
2939                $(".mec-event-masonry .mec-masonry-item-wrap:nth-child(n+20)").css("display", "block");
2940                $(".mec-load-more-button").hide();
2941                initMasonry();
2942            })
2943            $(".mec-events-masonry-cats a:not(:first-child)").on("click", function () {
2944                $(".mec-load-more-button").hide();
2945                $(".mec-wrap").css("height", "auto");
2946                $(".mec-wrap").css("min-height", "400");
2947                $(".mec-event-masonry .mec-masonry-item-wrap").css("display", "block");
2948                var element = document.querySelector("#mec_skin_" + settings.id + " .mec-event-masonry");
2949                var selector = $(this).attr('data-group');
2950                var CustomShuffle = new Shuffle(element, {
2951                    itemSelector: '.mec-masonry-item-wrap',
2952                });
2953                CustomShuffle.sort({
2954                    by: element.getAttribute('data-created'),
2955                });
2956                CustomShuffle.filter(selector != '*' ? selector : Shuffle.ALL_ITEMS);
2957                $(".mec-event-masonry .mec-masonry-item-wrap").css("visibility", "visible");
2958            })
2959        }
2960
2961        // Fix Elementor Masonry
2962        if (mecdata.elementor_edit_mode != 'no') elementorFrontend.hooks.addAction('frontend/element_ready/global', initMasonry());
2963
2964        function initMasonry() {
2965            var $container = $("#mec_skin_" + settings.id + " .mec-event-masonry");
2966            var data_sortAscending = $("#mec_skin_" + settings.id).data('sortascending');
2967            $container.imagesLoaded(function () {
2968                var $grid = $container.isotope({
2969                    filter: '*',
2970                    itemSelector: '.mec-masonry-item-wrap',
2971                    getSortData: {
2972                        date: '[data-sort-masonry]',
2973                    },
2974                    sortBy: 'date',
2975                    sortAscending: data_sortAscending,
2976                    animationOptions: {
2977                        duration: 750,
2978                        easing: 'linear',
2979                        queue: false
2980                    },
2981                });
2982                if (settings.fit_to_row == 1) $grid.isotope({
2983                    layoutMode: 'fitRows',
2984                    sortAscending: data_sortAscending,
2985                });
2986                // Fix Elementor tab
2987                $('.elementor-tabs').find('.elementor-tab-title').click(function () {
2988                    $grid.isotope({
2989                        sortBy: 'date',
2990                        sortAscending: data_sortAscending,
2991                    });
2992                });
2993            })
2994
2995            $("#mec_skin_" + settings.id + " .mec-events-masonry-cats a").click(function () {
2996                var selector = $(this).attr('data-filter');
2997                var $grid_cat = $container.isotope({
2998                    filter: selector,
2999                    itemSelector: '.mec-masonry-item-wrap',
3000                    getSortData: {
3001                        date: '[data-sort-masonry]',
3002                    },
3003                    sortBy: 'date',
3004                    sortAscending: data_sortAscending,
3005                    animationOptions: {
3006                        duration: 750,
3007                        easing: 'linear',
3008                        queue: false
3009                    },
3010                });
3011                if (settings.masonry_like_grid == 1) $grid_cat.isotope({
3012                    sortBy: 'date',
3013                    sortAscending: data_sortAscending,
3014                });
3015                return false;
3016            });
3017
3018            var $optionSets = $("#mec_skin_" + settings.id + " .mec-events-masonry-cats"),
3019                $optionLinks = $optionSets.find('a');
3020
3021            $optionLinks.click(function () {
3022                var $this = $(this);
3023
3024                // don't proceed if already selected
3025                if ($this.hasClass('selected')) return false;
3026
3027                var $optionSet = $this.parents('.mec-events-masonry-cats');
3028                $optionSet.find('.mec-masonry-cat-selected').removeClass('mec-masonry-cat-selected');
3029                $this.addClass('mec-masonry-cat-selected');
3030            });
3031        }
3032
3033        function setListeners() {
3034            $("#mec_skin_" + settings.id + " .mec-events-masonry-cats > a").click(function () {
3035                var mec_load_more_btn = $("#mec_skin_" + settings.id + " .mec-load-more-button");
3036                var mec_filter_value = $(this).data('filter').replace('.mec-t', '');
3037
3038                if (mec_load_more_btn.hasClass('mec-load-more-loading')) mec_load_more_btn.removeClass('mec-load-more-loading');
3039                if (mec_load_more_btn.hasClass("mec-hidden-" + mec_filter_value)) mec_load_more_btn.addClass("mec-util-hidden");
3040                else mec_load_more_btn.removeClass("mec-util-hidden");
3041            });
3042
3043            // Load More
3044            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
3045                loadMore();
3046            });
3047
3048            // Scroll
3049            if (settings.pagination === 'scroll') {
3050                $(window).on("scroll", function (event) {
3051                    var $target = $("#mec_skin_" + settings.id + " .mec-load-more-wrap");
3052
3053                    var finished = $target.data('page-finished');
3054                    if (finished) return;
3055
3056                    var hT = $target.offset().top,
3057                        hH = $target.outerHeight(),
3058                        wH = $(window).height(),
3059                        wS = $(this).scrollTop();
3060
3061                    if (wS + 100 > hT + hH - wH && !settings.infinite_locked) {
3062                        settings.infinite_locked = true;
3063                        $target.addClass('mec-load-more-scroll-loading');
3064                        loadMore();
3065                    }
3066                });
3067            }
3068
3069            // Next Prev Pagination
3070            if (settings.pagination === 'nextprev') {
3071                // Events Wrapper
3072                const $EW = $("#mec_skin_" + settings.id + " .mec-event-masonry");
3073
3074                let next_disabled = false;
3075
3076                // Previous Button
3077                $prev.on('click', function () {
3078                    if (history.length) {
3079                        let page = history.pop();
3080
3081                        var oldItems = $EW.find('.mec-masonry-item-wrap');
3082                        $EW.isotope('remove', oldItems);
3083
3084                        // Display Events
3085                        var newItems = $('<div>' + page.html + '</div>').find('.mec-masonry-item-wrap');
3086                        newItems.each(function (index) {
3087                            $EW.isotope()
3088                                .append(newItems[index])
3089                                .isotope('appended', newItems[index]);
3090                        });
3091
3092                        // Update the variables
3093                        settings.end_date = page.end_date;
3094                        settings.offset = page.offset;
3095                        settings.current_month_divider = page.current_month_divider;
3096
3097                        // Display Next Button
3098                        $next.removeClass('mec-util-hidden');
3099                    }
3100
3101                    // Hide Previous Button
3102                    if (!history.length) $prev.addClass('mec-util-hidden');
3103                });
3104
3105                // Next Button
3106                $next.on('click', function (e) {
3107                    // Prevent Redirect
3108                    e.preventDefault();
3109
3110                    // Currently Disabled
3111                    if (next_disabled) return;
3112
3113                    // Disable Button
3114                    next_disabled = true;
3115
3116                    // Add Loading Style
3117                    $EW.addClass('mec-loading-events');
3118
3119                    // Push to History
3120                    history.push({
3121                        end_date: settings.end_date,
3122                        offset: settings.offset,
3123                        current_month_divider: settings.current_month_divider,
3124                        html: $EW.html()
3125                    });
3126
3127                    loadMore(function (response) {
3128                        // Display New Events
3129                        if (response.count) {
3130                            var oldItems = $EW.find('.mec-masonry-item-wrap');
3131                            $EW.isotope('remove', oldItems);
3132
3133                            var newItems = $(response.html).find('.mec-masonry-item-wrap');
3134                            newItems.each(function (index) {
3135                                $EW.isotope()
3136                                    .append(newItems[index])
3137                                    .isotope('appended', newItems[index]);
3138                            });
3139                        }
3140                        // Remove Last Page
3141                        else history.pop();
3142
3143                        // Enable Button
3144                        next_disabled = false;
3145
3146                        // Remove Loading Style
3147                        $EW.removeClass('mec-loading-events');
3148
3149                        // Display Previous Button
3150                        if (history.length) $prev.removeClass('mec-util-hidden');
3151                        // Hide Next Button
3152                        if (response.count === 0 || (typeof response.has_more_event !== 'undefined' && !response.has_more_event)) $next.addClass('mec-util-hidden');
3153                    });
3154                });
3155            }
3156
3157            if (settings.sed_method != '0') {
3158                sed();
3159            }
3160        }
3161
3162        function sed() {
3163            // Single Event Display
3164            $("#mec_skin_" + settings.id + " .mec-masonry-img a, #mec_skin_" + settings.id + " .mec-event-title a, #mec_skin_" + settings.id + " .mec-booking-button").off('click').on('click', function (e) {
3165                var sed_method = $(this).attr('target');
3166                if ('_blank' === sed_method) {
3167
3168                    return;
3169                }
3170                e.preventDefault();
3171                var href = $(this).attr('href');
3172
3173                var id = $(this).data('event-id');
3174                var occurrence = get_parameter_by_name('occurrence', href);
3175                var time = get_parameter_by_name('time', href);
3176
3177                if ('undefined' == typeof id) {
3178                    return;
3179                }
3180
3181                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
3182            });
3183        }
3184
3185        function loadMore(callback) {
3186            // Add loading Class
3187            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
3188            var mec_cat_elem = $('#mec_skin_' + settings.id).find('.mec-masonry-cat-selected');
3189            var mec_filter_value = (mec_cat_elem && mec_cat_elem.data('filter') != undefined) ? mec_cat_elem.data('filter').replace('.mec-t', '') : '';
3190            var mec_filter_by = $('#mec_skin_' + settings.id).data('filterby');
3191
3192            $.ajax({
3193                url: settings.ajax_url,
3194                data: "action=mec_masonry_load_more&mec_filter_by=" + mec_filter_by + "&mec_filter_value=" + mec_filter_value + "&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&apply_sf_date=0",
3195                dataType: "json",
3196                type: "post",
3197                success: function (response) {
3198                    if (response.count === 0) {
3199                        // Remove loading Class
3200                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading").addClass("mec-util-hidden mec-hidden-" + mec_filter_value);
3201
3202                        // Release Lock of Infinite Scroll
3203                        settings.infinite_locked = false;
3204                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").data('page-finished', true).removeClass('mec-load-more-scroll-loading');
3205
3206                        // Run Callback
3207                        if (typeof callback === 'function') callback(response);
3208                    } else {
3209                        // Show load more button
3210                        if (typeof response.has_more_event === 'undefined' || (typeof response.has_more_event !== 'undefined' && response.has_more_event)) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
3211                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
3212
3213                        // Run Callback
3214                        if (typeof callback === 'function') callback(response);
3215                        // Append Items
3216                        else {
3217                            var node = $("#mec_skin_" + settings.id + " .mec-event-masonry");
3218                            var newItems = $(response.html).find('.mec-masonry-item-wrap');
3219
3220                            newItems.each(function (index) {
3221                                node.isotope()
3222                                    .append(newItems[index])
3223                                    .isotope('appended', newItems[index]);
3224                            });
3225                        }
3226
3227                        // Remove loading Class
3228                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
3229
3230                        // Update the variables
3231                        settings.end_date = response.end_date;
3232                        settings.offset = response.offset;
3233
3234                        // Single Event Method
3235                        if (settings.sed_method != '0') {
3236                            sed();
3237                        }
3238
3239                        // Release Lock of Infinite Scroll
3240                        settings.infinite_locked = false;
3241                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
3242
3243                        $(document).trigger('mec_load_more_init', ['masonry', settings]);
3244                    }
3245                },
3246                error: function () { }
3247            });
3248        }
3249    };
3250}(jQuery));
3251
3252// MEC LIST VIEW PLUGIN
3253(function ($) {
3254    $.fn.mecListView = function (options) {
3255        // Default Options
3256        var settings = $.extend({
3257            // These are the defaults.
3258            id: 0,
3259            atts: '',
3260            ajax_url: '',
3261            sf: {},
3262            current_month_divider: '',
3263            end_date: '',
3264            offset: 0,
3265            limit: 0,
3266            pagination: '0',
3267            infinite_locked: false,
3268        }, options);
3269
3270        var sf;
3271
3272        let history = [];
3273        const $next = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-next-button');
3274        const $prev = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-prev-button');
3275
3276        // Set onclick Listeners
3277        setListeners();
3278
3279        function setListeners() {
3280            // Search Widget
3281            if (settings.sf.container !== '') {
3282                sf = $(settings.sf.container).mecSearchForm({
3283                    id: settings.id,
3284                    refine: settings.sf.refine,
3285                    ajax_url: settings.ajax_url,
3286                    start_date: settings.start_date,
3287                    atts: settings.atts,
3288                    callback: function (atts) {
3289                        settings.atts = atts;
3290                        search();
3291                    }
3292                });
3293
3294                $(settings.sf.container).addClass('mec-skin-search-init');
3295            }
3296
3297            // Load More
3298            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
3299                loadMore();
3300            });
3301
3302            // Scroll
3303            if (settings.pagination === 'scroll') {
3304                $(window).on("scroll", function (event) {
3305                    var $target = $("#mec_skin_" + settings.id + " .mec-load-more-wrap");
3306
3307                    // Check if target element exists
3308                    if ($target.length === 0) return;
3309
3310                    var finished = $target.data('page-finished');
3311                    if (finished) return;
3312
3313                    var hT = $target.offset().top,
3314                        hH = $target.outerHeight(),
3315                        wH = $(window).height(),
3316                        wS = $(this).scrollTop();
3317
3318                    if (wS + 100 > hT + hH - wH && !settings.infinite_locked) {
3319                        settings.infinite_locked = true;
3320                        $target.addClass('mec-load-more-scroll-loading');
3321                        loadMore();
3322                    }
3323                });
3324            }
3325
3326            // Next Prev Pagination
3327            if (settings.pagination === 'nextprev') {
3328                // Events Wrapper
3329                const $EW = $("#mec_skin_events_" + settings.id);
3330
3331                let next_disabled = false;
3332
3333                // Previous Button
3334                $prev.on('click', function () {
3335                    if (history.length) {
3336                        let page = history.pop();
3337
3338                        // Display Events
3339                        $EW.html(page.html);
3340
3341                        // Update the variables
3342                        settings.end_date = page.end_date;
3343                        settings.offset = page.offset;
3344                        settings.current_month_divider = page.current_month_divider;
3345
3346                        // Display Next Button
3347                        $next.removeClass('mec-util-hidden');
3348                    }
3349
3350                    // Hide Previous Button
3351                    if (!history.length) $prev.addClass('mec-util-hidden');
3352                });
3353
3354                // Next Button
3355                $next.on('click', function (e) {
3356                    // Prevent Redirect
3357                    e.preventDefault();
3358
3359                    // Currently Disabled
3360                    if (next_disabled) return;
3361
3362                    // Disable Button
3363                    next_disabled = true;
3364
3365                    // Add Loading Style
3366                    $EW.addClass('mec-loading-events');
3367
3368                    // Push to History
3369                    history.push({
3370                        end_date: settings.end_date,
3371                        offset: settings.offset,
3372                        current_month_divider: settings.current_month_divider,
3373                        html: $EW.html()
3374                    });
3375
3376                    loadMore(function (response) {
3377                        // Display New Events
3378                        if (response.count) $EW.html(response.html);
3379                        // Remove Last Page
3380                        else history.pop();
3381
3382                        // Enable Button
3383                        next_disabled = false;
3384
3385                        // Remove Loading Style
3386                        $EW.removeClass('mec-loading-events');
3387
3388                        // Display Previous Button
3389                        if (history.length) $prev.removeClass('mec-util-hidden');
3390
3391                        // Hide Next Button
3392                        if (response.count === 0 || (typeof response.has_more_event !== 'undefined' && !response.has_more_event)) $next.addClass('mec-util-hidden');
3393                    });
3394                });
3395            }
3396
3397            // Accordion Toggle
3398            if (settings.style === 'accordion') {
3399                if (settings.toggle_month_divider) {
3400                    $('#mec_skin_' + settings.id + ' .mec-month-divider:first-of-type').addClass('active');
3401                    $('#mec_skin_' + settings.id + ' .mec-month-divider:first-of-type').find('i').removeClass('mec-sl-arrow-down').addClass('mec-sl-arrow-up');
3402
3403                    toggle();
3404                }
3405
3406                accordion();
3407            }
3408
3409            // Single Event Method
3410            if (settings.sed_method != '0') {
3411                sed();
3412            }
3413        }
3414
3415        function toggle() {
3416            $('#mec_skin_' + settings.id + ' .mec-month-divider').off("click").on("click", function (event) {
3417                event.preventDefault();
3418
3419                var status = $(this).hasClass('active');
3420
3421                // Remove Active Style of Month Divider
3422                $('#mec_skin_' + settings.id + ' .mec-month-divider').removeClass('active');
3423
3424                // Hide All Events
3425                $('#mec_skin_' + settings.id + ' .mec-divider-toggle').slideUp('fast');
3426
3427                if (status) {
3428                    $(this).removeClass('active');
3429                    $('.mec-month-divider').find('i').removeClass('mec-sl-arrow-up').addClass('mec-sl-arrow-down');
3430                } else {
3431                    $(this).addClass('active');
3432                    $('.mec-month-divider').find('i').removeClass('mec-sl-arrow-up').addClass('mec-sl-arrow-down')
3433                    $(this).find('i').removeClass('mec-sl-arrow-down').addClass('mec-sl-arrow-up');
3434
3435                    var month = $(this).data('toggle-divider');
3436                    $('#mec_skin_' + settings.id + ' .' + month).slideDown('fast');
3437                }
3438            });
3439        }
3440
3441        function toggleLoadmore() {
3442            $('#mec_skin_' + settings.id + ' .mec-month-divider:not(:last)').each(function () {
3443                if ($(this).hasClass('active')) $(this).removeClass('active');
3444                var month = $(this).data('toggle-divider');
3445                $('#mec_skin_' + settings.id + ' .' + month).slideUp('fast');
3446            });
3447
3448            // Set Active Class For Last Article
3449            $('#mec_skin_' + settings.id + ' .mec-month-divider:last').addClass('active');
3450
3451            // Register Listeners
3452            toggle();
3453        }
3454
3455        function accordion() {
3456            // Accordion Toggle
3457            $("#mec_skin_" + settings.id + " .mec-toggle-item-inner").off("click").on("click", function (event) {
3458                event.preventDefault();
3459
3460                var $this = $(this);
3461                $(this).parent().find(".mec-content-toggle").slideToggle("fast", function () {
3462                    $this.children("i").toggleClass("mec-sl-arrow-down mec-sl-arrow-up");
3463                });
3464
3465                // Trigger Google Map
3466                var unique_id = $(this).parent().find(".mec-modal-wrap").data('unique-id');
3467
3468                if (typeof window['mec_init_gmap' + unique_id] === 'function') window['mec_init_gmap' + unique_id]();
3469            });
3470
3471            $(document).trigger('mec_skin_accordion_init', settings);
3472        }
3473
3474        function sed() {
3475            // Single Event Display
3476            $("#mec_skin_" + settings.id + " .mec-event-title > a, #mec_skin_" + settings.id + " .mec-booking-button, #mec_skin_" + settings.id + " .mec-detail-button").off('click').on('click', function (e) {
3477                e.preventDefault();
3478                var href = $(this).attr('href');
3479
3480                var id = $(this).data('event-id');
3481                var occurrence = get_parameter_by_name('occurrence', href);
3482                var time = get_parameter_by_name('time', href);
3483
3484                if ('undefined' == typeof id) {
3485                    return;
3486                }
3487
3488                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
3489            });
3490
3491            $("#mec_skin_" + settings.id + " .mec-event-image a img").off('click').on('click', function (e) {
3492                e.preventDefault();
3493                var href = $(this).parent().attr('href');
3494
3495                var id = $(this).parent().data('event-id');
3496                var occurrence = get_parameter_by_name('occurrence', href);
3497                var time = get_parameter_by_name('time', href);
3498
3499                if ('undefined' == typeof id) {
3500                    return;
3501                }
3502
3503                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
3504            });
3505        }
3506
3507        function loadMore(callback) {
3508            // Add loading Class
3509            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
3510
3511            $.ajax({
3512                url: settings.ajax_url,
3513                data: "action=mec_list_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&current_month_divider=" + settings.current_month_divider + "&apply_sf_date=0",
3514                dataType: "json",
3515                type: "post",
3516                success: function (response) {
3517                    if (response.count === 0) {
3518                        // Remove loading Class
3519                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
3520
3521                        // Release Lock of Infinite Scroll
3522                        settings.infinite_locked = false;
3523                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
3524
3525                        // Hide Pagination
3526                        mec_toggle_shortcode_pagination(settings.id, 'hide');
3527
3528                        // Run Callback
3529                        if (typeof callback === 'function') callback(response);
3530                    } else {
3531                        // Show load more button
3532                        if (typeof response.has_more_event === 'undefined' || (typeof response.has_more_event !== 'undefined' && response.has_more_event)) mec_toggle_shortcode_pagination(settings.id, 'show');
3533                        else mec_toggle_shortcode_pagination(settings.id, 'hide');
3534
3535                        // Run Callback
3536                        if (typeof callback === 'function') callback(response);
3537                        // Append Items
3538                        else $("#mec_skin_events_" + settings.id).append(response.html);
3539
3540                        // Remove loading Class
3541                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
3542
3543                        // Update the variables
3544                        settings.end_date = response.end_date;
3545                        settings.offset = response.offset;
3546                        settings.current_month_divider = response.current_month_divider;
3547
3548                        // Single Event Method
3549                        if (settings.sed_method != '0') {
3550                            sed();
3551                        }
3552
3553                        // Accordion Toggle
3554                        if (settings.style === 'accordion') {
3555                            if (settings.toggle_month_divider) toggleLoadmore();
3556
3557                            accordion();
3558                        }
3559
3560                        // Release Lock of Infinite Scroll
3561                        settings.infinite_locked = false;
3562                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
3563                    }
3564
3565                    $(document).trigger('mec_load_more_init', ['list', settings]);
3566                },
3567                error: function () { }
3568            });
3569        }
3570
3571        function search() {
3572            // Hide no event message
3573            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
3574
3575            var $skinRoot = jQuery("#mec_skin_" + settings.id);
3576            var $loading_element = $skinRoot.find('.mec-modal-result');
3577
3578            // Add loading Class
3579            if ($loading_element.length === 0) {
3580                $skinRoot.append('<div class="mec-modal-result"></div>');
3581                $loading_element = $skinRoot.find('.mec-modal-result');
3582            }
3583
3584            $loading_element.addClass('mec-month-navigator-loading');
3585
3586            jQuery("#gmap-data-" + settings.id).val("");
3587            history = [];
3588            $prev.addClass('mec-util-hidden');
3589
3590            $.ajax({
3591                url: settings.ajax_url,
3592                data: "action=mec_list_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&current_month_divider=0&apply_sf_date=1",
3593                dataType: "json",
3594                type: "post",
3595                success: function (response) {
3596                    if (response.count === 0) {
3597                        // Append Items
3598                        $("#mec_skin_events_" + settings.id).html('');
3599
3600                        // Remove loading Class
3601                        $loading_element.removeClass("mec-month-navigator-loading");
3602
3603                        // Hide Map
3604                        $skinRoot.find('.mec-skin-map-container').addClass("mec-util-hidden");
3605
3606                        // Hide pagination
3607                        mec_toggle_shortcode_pagination(settings.id, 'hide');
3608
3609                        // Show no event message
3610                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
3611                    } else {
3612                        // Append Items
3613                        $("#mec_skin_events_" + settings.id).html(response.html);
3614
3615                        // Remove loading Class
3616                        $loading_element.removeClass("mec-month-navigator-loading");
3617
3618                        // Show Map
3619                        $skinRoot.find('.mec-skin-map-container').removeClass("mec-util-hidden");
3620
3621                        // Show load more button
3622                        if (response.count >= settings.limit) mec_toggle_shortcode_pagination(settings.id, 'show');
3623                        // Hide load more button
3624                        else mec_toggle_shortcode_pagination(settings.id, 'hide');
3625
3626                        // Update the variables
3627                        settings.end_date = response.end_date;
3628                        settings.offset = response.offset;
3629                        settings.current_month_divider = response.current_month_divider;
3630
3631                        // Single Event Method
3632                        if (settings.sed_method != '0') {
3633                            sed();
3634                        }
3635
3636                        // Accordion Toggle
3637                        if (settings.style === 'accordion') {
3638                            if (settings.toggle_month_divider) toggle();
3639
3640                            accordion();
3641                        }
3642                    }
3643
3644                    $(document).trigger('mec_search_init', ['list', settings, response]);
3645                },
3646                error: function () { }
3647            });
3648        }
3649    };
3650
3651}(jQuery));
3652
3653// MEC GRID VIEW PLUGIN
3654(function ($) {
3655    $.fn.mecGridView = function (options) {
3656        // Default Options
3657        var settings = $.extend({
3658            // These are the defaults.
3659            id: 0,
3660            atts: '',
3661            ajax_url: '',
3662            sf: {},
3663            end_date: '',
3664            offset: 0,
3665            start_date: '',
3666            pagination: '0',
3667            infinite_locked: false,
3668        }, options);
3669
3670        var sf;
3671
3672        let history = [];
3673        const $next = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-next-button');
3674        const $prev = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-prev-button');
3675
3676        // Set onclick Listeners
3677        setListeners();
3678
3679        function setListeners() {
3680            // Search Widget
3681            if (settings.sf.container !== '') {
3682                sf = $(settings.sf.container).mecSearchForm({
3683                    id: settings.id,
3684                    refine: settings.sf.refine,
3685                    ajax_url: settings.ajax_url,
3686                    start_date: settings.start_date,
3687                    atts: settings.atts,
3688                    callback: function (atts) {
3689                        settings.atts = atts;
3690                        search();
3691                    }
3692                });
3693
3694                $(settings.sf.container).addClass('mec-skin-search-init');
3695            }
3696
3697            // Load More
3698            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
3699                loadMore();
3700            });
3701
3702            // Scroll
3703            if (settings.pagination === 'scroll') {
3704                $(window).on("scroll", function (event) {
3705                    var $target = $("#mec_skin_" + settings.id + " .mec-load-more-wrap");
3706
3707                    var finished = $target.data('page-finished');
3708                    if (finished) return;
3709
3710                    var hT = $target.offset().top,
3711                        hH = $target.outerHeight(),
3712                        wH = $(window).height(),
3713                        wS = $(this).scrollTop();
3714
3715                    if (wS + 100 > hT + hH - wH && !settings.infinite_locked) {
3716                        settings.infinite_locked = true;
3717                        $target.addClass('mec-load-more-scroll-loading');
3718                        loadMore();
3719                    }
3720                });
3721            }
3722
3723            // Next Prev Pagination
3724            if (settings.pagination === 'nextprev') {
3725                // Events Wrapper
3726                const $EW = $("#mec_skin_events_" + settings.id);
3727
3728                let next_disabled = false;
3729
3730                // Previous Button
3731                $prev.on('click', function () {
3732                    if (history.length) {
3733                        let page = history.pop();
3734
3735                        // Display Events
3736                        $EW.html(page.html);
3737
3738                        // Update the variables
3739                        settings.end_date = page.end_date;
3740                        settings.offset = page.offset;
3741                        settings.current_month_divider = page.current_month_divider;
3742
3743                        // Display Next Button
3744                        $next.removeClass('mec-util-hidden');
3745                    }
3746
3747                    // Hide Previous Button
3748                    if (!history.length) $prev.addClass('mec-util-hidden');
3749                });
3750
3751                // Next Button
3752                $next.on('click', function (e) {
3753                    // Prevent Redirect
3754                    e.preventDefault();
3755
3756                    // Currently Disabled
3757                    if (next_disabled) return;
3758
3759                    // Disable Button
3760                    next_disabled = true;
3761
3762                    // Add Loading Style
3763                    $EW.addClass('mec-loading-events');
3764
3765                    // Push to History
3766                    history.push({
3767                        end_date: settings.end_date,
3768                        offset: settings.offset,
3769                        current_month_divider: settings.current_month_divider,
3770                        html: $EW.html()
3771                    });
3772
3773                    loadMore(function (response) {
3774                        // Display New Events
3775                        if (response.count) $EW.html(response.html);
3776                        // Remove Last Page
3777                        else history.pop();
3778
3779                        // Enable Button
3780                        next_disabled = false;
3781
3782                        // Remove Loading Style
3783                        $EW.removeClass('mec-loading-events');
3784
3785                        // Display Previous Button
3786                        if (history.length) $prev.removeClass('mec-util-hidden');
3787                        // Hide Next Button
3788                        if (response.count === 0 || (typeof response.has_more_event !== 'undefined' && !response.has_more_event)) $next.addClass('mec-util-hidden');
3789                    });
3790                });
3791            }
3792
3793            // Single Event Method
3794            if (settings.sed_method != '0') {
3795                sed();
3796            }
3797        }
3798
3799        function sed() {
3800            // Single Event Display
3801            $("#mec_skin_" + settings.id + " .mec-event-title a, #mec_skin_" + settings.id + " .mec-booking-button").off('click').on('click', function (e) {
3802                e.preventDefault();
3803                var href = $(this).attr('href');
3804
3805                var id = $(this).data('event-id');
3806                var occurrence = get_parameter_by_name('occurrence', href);
3807                var time = get_parameter_by_name('time', href);
3808
3809                if ('undefined' == typeof id) {
3810                    return;
3811                }
3812
3813                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
3814            });
3815            $("#mec_skin_" + settings.id + " .mec-event-image a img").off('click').on('click', function (e) {
3816                e.preventDefault();
3817                var href = $(this).parent().attr('href');
3818
3819                var id = $(this).parent().data('event-id');
3820                var occurrence = get_parameter_by_name('occurrence', href);
3821                var time = get_parameter_by_name('time', href);
3822
3823                if ('undefined' == typeof id) {
3824                    return;
3825                }
3826
3827                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
3828            });
3829        }
3830
3831        function loadMore(callback) {
3832            // Add loading Class
3833            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
3834
3835            $.ajax({
3836                url: settings.ajax_url,
3837                data: "action=mec_grid_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&apply_sf_date=0",
3838                dataType: "json",
3839                type: "post",
3840                success: function (response) {
3841                    if (response.count === 0) {
3842                        // Remove loading Class
3843                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading").addClass("mec-util-hidden");
3844
3845                        // Release Lock of Infinite Scroll
3846                        settings.infinite_locked = false;
3847                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").data('page-finished', true).removeClass('mec-load-more-scroll-loading');
3848
3849                        // Run Callback
3850                        if (typeof callback === 'function') callback(response);
3851                    } else {
3852                        // Show load more button
3853                        if (typeof response.has_more_event === 'undefined' || (typeof response.has_more_event !== 'undefined' && response.has_more_event)) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
3854                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
3855
3856                        // Run Callback
3857                        if (typeof callback === 'function') callback(response);
3858                        // Append Items
3859                        else $("#mec_skin_events_" + settings.id).append(response.html);
3860
3861                        // Remove loading Class
3862                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
3863
3864                        // Update the variables
3865                        settings.end_date = response.end_date;
3866                        settings.offset = response.offset;
3867
3868                        // Single Event Method
3869                        if (settings.sed_method != '0') {
3870                            sed();
3871                        }
3872
3873                        // Release Lock of Infinite Scroll
3874                        settings.infinite_locked = false;
3875                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
3876                    }
3877
3878                    $(document).trigger('mec_load_more_init', ['grid', settings]);
3879                },
3880                error: function () { }
3881            });
3882        }
3883
3884        function search() {
3885            // Hide no event message
3886            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
3887
3888            var $skinRoot = jQuery("#mec_skin_" + settings.id);
3889            var $loading_element = $skinRoot.find('.mec-modal-result');
3890            if ($loading_element.length === 0) {
3891                $skinRoot.append('<div class="mec-modal-result"></div>');
3892                $loading_element = $skinRoot.find('.mec-modal-result');
3893            }
3894            $loading_element.addClass('mec-month-navigator-loading');
3895            jQuery("#gmap-data-" + settings.id).val("");
3896
3897            $.ajax({
3898                url: settings.ajax_url,
3899                data: "action=mec_grid_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&apply_sf_date=1",
3900                dataType: "json",
3901                type: "post",
3902                success: function (response) {
3903                    if (response.count === 0) {
3904                        // Append Items
3905                        $("#mec_skin_events_" + settings.id).html('');
3906
3907                        // Remove loading Class
3908                        $loading_element.removeClass("mec-month-navigator-loading");
3909
3910                        // Hide Map
3911                        $skinRoot.find('.mec-skin-map-container').addClass("mec-util-hidden");
3912
3913                        // Hide it
3914                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
3915
3916                        // Show no event message
3917                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
3918                    } else {
3919                        // Append Items
3920                        $("#mec_skin_events_" + settings.id).html(response.html);
3921
3922                        // Remove loading Class
3923                        $loading_element.removeClass("mec-month-navigator-loading");
3924
3925                        // Show Map
3926                        $skinRoot.find('.mec-skin-map-container').removeClass("mec-util-hidden");
3927
3928                        // Show load more button
3929                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
3930                        // Hide load more button
3931                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
3932
3933                        // Update the variables
3934                        settings.end_date = response.end_date;
3935                        settings.offset = response.offset;
3936
3937                        // Single Event Method
3938                        if (settings.sed_method != '0') {
3939                            sed();
3940                        }
3941                    }
3942
3943                    $(document).trigger('mec_search_init', ['grid', settings, response]);
3944                },
3945                error: function () { }
3946            });
3947        }
3948    };
3949
3950}(jQuery));
3951
3952// MEC CUSTOM VIEW PLUGIN
3953(function ($) {
3954    $.fn.mecCustomView = function (options) {
3955        // Default Options
3956        var settings = $.extend({
3957            // These are the defaults.
3958            id: 0,
3959            atts: '',
3960            ajax_url: '',
3961            sf: {},
3962            end_date: '',
3963            offset: 0,
3964            start_date: '',
3965            pagination: '0',
3966            infinite_locked: false,
3967        }, options);
3968
3969        // Set onclick Listeners
3970        setListeners();
3971
3972        var sf;
3973
3974        function setListeners() {
3975            // Search Widget
3976            if (settings.sf.container !== '') {
3977                sf = $(settings.sf.container).mecSearchForm({
3978                    id: settings.id,
3979                    refine: settings.sf.refine,
3980                    ajax_url: settings.ajax_url,
3981                    start_date: settings.start_date,
3982                    atts: settings.atts,
3983                    callback: function (atts) {
3984                        settings.atts = atts;
3985                        search();
3986                    }
3987                });
3988
3989                $(settings.sf.container).addClass('mec-skin-search-init');
3990            }
3991
3992            // Load More
3993            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
3994                loadMore();
3995            });
3996
3997            // Scroll
3998            if (settings.pagination === 'scroll') {
3999                $(window).on("scroll", function (event) {
4000                    var $target = $("#mec_skin_" + settings.id + " .mec-load-more-wrap");
4001
4002                    var finished = $target.data('page-finished');
4003                    if (finished) return;
4004
4005                    var hT = $target.offset().top,
4006                        hH = $target.outerHeight(),
4007                        wH = $(window).height(),
4008                        wS = $(this).scrollTop();
4009
4010                    if (wS + 100 >
4010 hT + hH - wH && !settings.infinite_locked) {
4011                        settings.infinite_locked = true;
4012                        $target.addClass('mec-load-more-scroll-loading');
4013                        loadMore();
4014                    }
4015                });
4016            }
4017
4018            // Single Event Method
4019            if (settings.sed_method != '0') {
4020                sed();
4021            }
4022        }
4023
4024        function sed() {
4025            // Single Event Display
4026            $("#mec_skin_" + settings.id + " .mec-event-title a, #mec_skin_" + settings.id + " .mec-booking-button").off('click').on('click', function (e) {
4027                e.preventDefault();
4028                var href = $(this).attr('href');
4029
4030                var id = $(this).data('event-id');
4031                var occurrence = get_parameter_by_name('occurrence', href);
4032                var time = get_parameter_by_name('time', href);
4033
4034                if ('undefined' == typeof id) {
4035                    return;
4036                }
4037
4038                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
4039            });
4040            $("#mec_skin_" + settings.id + " .mec-event-image a img").off('click').on('click', function (e) {
4041                e.preventDefault();
4042                var href = $(this).parent().attr('href');
4043
4044                var id = $(this).parent().data('event-id');
4045                var occurrence = get_parameter_by_name('occurrence', href);
4046                var time = get_parameter_by_name('time', href);
4047
4048                if ('undefined' == typeof id) {
4049                    return;
4050                }
4051
4052                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
4053            });
4054        }
4055
4056        function loadMore() {
4057            // Add loading Class
4058            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
4059
4060            $.ajax({
4061                url: settings.ajax_url,
4062                data: "action=mec_custom_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&apply_sf_date=0",
4063                dataType: "json",
4064                type: "post",
4065                success: function (response) {
4066                    if (response.count === 0) {
4067                        // Remove loading Class
4068                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading").addClass("mec-util-hidden");
4069
4070                        // Release Lock of Infinite Scroll
4071                        settings.infinite_locked = false;
4072                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").data('page-finished', true).removeClass('mec-load-more-scroll-loading');
4073                    } else {
4074                        // Show load more button
4075                        if (typeof response.has_more_event === 'undefined' || (typeof response.has_more_event !== 'undefined' && response.has_more_event)) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
4076                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4077
4078                        var html = $(response.html);
4079                        if ($('.mec-month-divider', html).length) {
4080                            var df = $('.mec-month-divider:first', html).data('toggle-divider');
4081                            var dl = $("#mec_skin_events_" + settings.id + " .mec-month-divider:last").data('toggle-divider');
4082
4083                            if (df == dl) {
4084                                $(html).find('.mec-month-divider:first').remove();
4085                                response.html = html;
4086                            }
4087
4088                        }
4089
4090                        // Append Items
4091                        $("#mec_skin_events_" + settings.id).append(response.html);
4092
4093                        // Remove loading Class
4094                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
4095
4096                        // Update the variables
4097                        settings.end_date = response.end_date;
4098                        settings.offset = response.offset;
4099
4100                        if ($('.mec-event-sd-countdown').length > 0) {
4101                            $('.mec-event-sd-countdown').each(function (event) {
4102                                var dc = $(this).attr('data-date-custom');
4103                                $(this).mecCountDown(
4104                                    {
4105                                        date: dc,
4106                                        format: "off"
4107                                    },
4108                                    function () {
4109                                    });
4110                            })
4111                        }
4112                        // Single Event Method
4113                        if (settings.sed_method != '0') {
4114                            sed();
4115                        }
4116
4117                        // Release Lock of Infinite Scroll
4118                        settings.infinite_locked = false;
4119                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
4120
4121                    }
4122
4123                    $(document).trigger('mec_load_more_init', ['custom', settings]);
4124                },
4125                error: function () { }
4126            });
4127        }
4128
4129        function search() {
4130            // Hide no event message
4131            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
4132
4133            var $skinRoot = jQuery("#mec_skin_" + settings.id);
4134            var $loading_element = $skinRoot.find('.mec-modal-result');
4135            if ($loading_element.length === 0) {
4136                $skinRoot.append('<div class="mec-modal-result"></div>');
4137                $loading_element = $skinRoot.find('.mec-modal-result');
4138            }
4139            $loading_element.addClass('mec-month-navigator-loading');
4140            jQuery("#gmap-data-" + settings.id).val("");
4141
4142            $.ajax({
4143                url: settings.ajax_url,
4144                data: "action=mec_custom_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&apply_sf_date=1",
4145                dataType: "json",
4146                type: "post",
4147                success: function (response) {
4148                    if (response.count === 0) {
4149                        // Append Items
4150                        $("#mec_skin_events_" + settings.id).html('');
4151
4152                        // Remove loading Class
4153                        $loading_element.removeClass("mec-month-navigator-loading");
4154
4155                        // Hide Map
4156                        $skinRoot.find('.mec-skin-map-container').addClass("mec-util-hidden");
4157
4158                        // Hide it
4159                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4160
4161                        // Show no event message
4162                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
4163                    } else {
4164                        // Append Items
4165                        $("#mec_skin_events_" + settings.id).html(response.html);
4166
4167                        // Remove loading Class
4168                        $loading_element.removeClass("mec-month-navigator-loading");
4169
4170                        // Show Map
4171                        $skinRoot.find('.mec-skin-map-container').removeClass("mec-util-hidden");
4172
4173                        // Show load more button
4174                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
4175                        // Hide load more button
4176                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4177
4178                        // Update the variables
4179                        settings.end_date = response.end_date;
4180                        settings.offset = response.offset;
4181
4182                        // Single Event Method
4183                        if (settings.sed_method != '0') {
4184                            sed();
4185                        }
4186                    }
4187
4188                    $(document).trigger('mec_search_init', ['custom', settings, response]);
4189                },
4190                error: function () { }
4191            });
4192        }
4193    };
4194
4195}(jQuery));
4196
4197// MEC TIMELINE VIEW PLUGIN
4198(function ($) {
4199    $.fn.mecTimelineView = function (options) {
4200        // Default Options
4201        var settings = $.extend({
4202            // These are the defaults.
4203            id: 0,
4204            atts: '',
4205            ajax_url: '',
4206            sf: {},
4207            end_date: '',
4208            offset: 0,
4209            start_date: '',
4210            pagination: '0',
4211            infinite_locked: false,
4212        }, options);
4213
4214        var sf;
4215
4216        let history = [];
4217        const $next = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-next-button');
4218        const $prev = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-prev-button');
4219
4220        // Set onclick Listeners
4221        setListeners();
4222
4223        function setListeners() {
4224            // Search Widget
4225            if (settings.sf.container !== '') {
4226                sf = $(settings.sf.container).mecSearchForm({
4227                    id: settings.id,
4228                    refine: settings.sf.refine,
4229                    ajax_url: settings.ajax_url,
4230                    start_date: settings.start_date,
4231                    atts: settings.atts,
4232                    callback: function (atts) {
4233                        settings.atts = atts;
4234                        search();
4235                    }
4236                });
4237
4238                $(settings.sf.container).addClass('mec-skin-search-init');
4239            }
4240
4241            // Load More
4242            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
4243                loadMore();
4244            });
4245
4246            // Scroll
4247            if (settings.pagination === 'scroll') {
4248                $(window).on("scroll", function (event) {
4249                    var $target = $("#mec_skin_" + settings.id + " .mec-load-more-wrap");
4250
4251                    var finished = $target.data('page-finished');
4252                    if (finished) return;
4253
4254                    var hT = $target.offset().top,
4255                        hH = $target.outerHeight(),
4256                        wH = $(window).height(),
4257                        wS = $(this).scrollTop();
4258
4259                    if (wS + 100 >
4259 hT + hH - wH && !settings.infinite_locked) {
4260                        settings.infinite_locked = true;
4261                        $target.addClass('mec-load-more-scroll-loading');
4262                        loadMore();
4263                    }
4264                });
4265            }
4266
4267            // Next Prev Pagination
4268            if (settings.pagination === 'nextprev') {
4269                // Events Wrapper
4270                const $EW = $("#mec_skin_events_" + settings.id);
4271
4272                let next_disabled = false;
4273
4274                // Previous Button
4275                $prev.on('click', function () {
4276                    if (history.length) {
4277                        let page = history.pop();
4278
4279                        // Display Events
4280                        $EW.html(page.html);
4281
4282                        // Update the variables
4283                        settings.end_date = page.end_date;
4284                        settings.offset = page.offset;
4285                        settings.current_month_divider = page.current_month_divider;
4286
4287                        // Display Next Button
4288                        $next.removeClass('mec-util-hidden');
4289                    }
4290
4291                    // Hide Previous Button
4292                    if (!history.length) $prev.addClass('mec-util-hidden');
4293                });
4294
4295                // Next Button
4296                $next.on('click', function (e) {
4297                    // Prevent Redirect
4298                    e.preventDefault();
4299
4300                    // Currently Disabled
4301                    if (next_disabled) return;
4302
4303                    // Disable Button
4304                    next_disabled = true;
4305
4306                    // Add Loading Style
4307                    $EW.addClass('mec-loading-events');
4308
4309                    // Push to History
4310                    history.push({
4311                        end_date: settings.end_date,
4312                        offset: settings.offset,
4313                        current_month_divider: settings.current_month_divider,
4314                        html: $EW.html()
4315                    });
4316
4317                    loadMore(function (response) {
4318                        // Display New Events
4319                        if (response.count) $EW.html(response.html);
4320                        // Remove Last Page
4321                        else history.pop();
4322
4323                        // Enable Button
4324                        next_disabled = false;
4325
4326                        // Remove Loading Style
4327                        $EW.removeClass('mec-loading-events');
4328
4329                        // Display Previous Button
4330                        if (history.length) $prev.removeClass('mec-util-hidden');
4331                        // Hide Next Button
4332                        if (response.count === 0 || (typeof response.has_more_event !== 'undefined' && !response.has_more_event)) $next.addClass('mec-util-hidden');
4333                    });
4334                });
4335            }
4336
4337            // Single Event Method
4338            if (settings.sed_method != '0') {
4339                sed();
4340            }
4341        }
4342
4343        function sed() {
4344            // Single Event Display
4345            $("#mec_skin_" + settings.id + " .mec-timeline-event-image a, #mec_skin_" + settings.id + " .mec-event-title a, #mec_skin_" + settings.id + " .mec-booking-button").off('click').on('click', function (e) {
4346                e.preventDefault();
4347                var href = $(this).attr('href');
4348
4349                var id = $(this).data('event-id');
4350                var occurrence = get_parameter_by_name('occurrence', href);
4351                var time = get_parameter_by_name('time', href);
4352
4353                if ('undefined' == typeof id) {
4354                    return;
4355                }
4356
4357                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
4358            });
4359            $("#mec_skin_" + settings.id + " .mec-event-image a img").off('click').on('click', function (e) {
4360                e.preventDefault();
4361                var href = $(this).parent().attr('href');
4362
4363                var id = $(this).parent().data('event-id');
4364                var occurrence = get_parameter_by_name('occurrence', href);
4365                var time = get_parameter_by_name('time', href);
4366
4367                if ('undefined' == typeof id) {
4368                    return;
4369                }
4370
4371                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
4372            });
4373        }
4374
4375        function loadMore(callback) {
4376            // Add loading Class
4377            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
4378
4379            $.ajax({
4380                url: settings.ajax_url,
4381                data: "action=mec_timeline_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&apply_sf_date=0",
4382                dataType: "json",
4383                type: "post",
4384                success: function (response) {
4385                    if (response.count === 0) {
4386                        // Remove loading Class
4387                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading").addClass("mec-util-hidden");
4388
4389                        // Release Lock of Infinite Scroll
4390                        settings.infinite_locked = false;
4391                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").data('page-finished', true).removeClass('mec-load-more-scroll-loading');
4392
4393                        // Run Callback
4394                        if (typeof callback === 'function') callback(response);
4395                    } else {
4396                        // Show load more button
4397                        if (typeof response.has_more_event === 'undefined' || (typeof response.has_more_event !== 'undefined' && response.has_more_event)) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
4398                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4399
4400                        // Run Callback
4401                        if (typeof callback === 'function') callback(response);
4402                        // Append Items
4403                        else $("#mec_skin_events_" + settings.id).append(response.html);
4404
4405                        // Remove loading Class
4406                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
4407
4408                        // Update the variables
4409                        settings.end_date = response.end_date;
4410                        settings.offset = response.offset;
4411
4412                        // Single Event Method
4413                        if (settings.sed_method != '0') {
4414                            sed();
4415                        }
4416
4417                        // Release Lock of Infinite Scroll
4418                        settings.infinite_locked = false;
4419                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
4420                    }
4421
4422                    $(document).trigger('mec_load_more_init', ['timeline', settings]);
4423                },
4424                error: function () { }
4425            });
4426        }
4427
4428        function search() {
4429            // Hide no event message
4430            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
4431
4432            var $skinRoot = jQuery("#mec_skin_" + settings.id);
4433            var $loading_element = $skinRoot.find('.mec-modal-result');
4434            if ($loading_element.length === 0) {
4435                $skinRoot.append('<div class="mec-modal-result"></div>');
4436                $loading_element = $skinRoot.find('.mec-modal-result');
4437            }
4438            $loading_element.addClass('mec-month-navigator-loading');
4439
4440            $.ajax({
4441                url: settings.ajax_url,
4442                data: "action=mec_timeline_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&apply_sf_date=1",
4443                dataType: "json",
4444                type: "post",
4445                success: function (response) {
4446                    if (response.count === 0) {
4447                        // Append Items
4448                        $("#mec_skin_events_" + settings.id).html('');
4449
4450                        // Remove loading Class
4451                        $loading_element.removeClass("mec-month-navigator-loading");
4452
4453                        // Hide Map
4454                        $skinRoot.find('.mec-skin-map-container').addClass("mec-util-hidden");
4455
4456                        // Hide it
4457                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4458
4459                        // Show no event message
4460                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
4461                    } else {
4462                        // Append Items
4463                        $("#mec_skin_events_" + settings.id).html(response.html);
4464
4465                        // Remove loading Class
4466                        $loading_element.removeClass("mec-month-navigator-loading");
4467
4468                        // Show Map
4469                        $skinRoot.find('.mec-skin-map-container').removeClass("mec-util-hidden");
4470
4471                        // Show load more button
4472                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
4473                        // Hide load more button
4474                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4475
4476                        // Update the variables
4477                        settings.end_date = response.end_date;
4478                        settings.offset = response.offset;
4479
4480                        // Single Event Method
4481                        if (settings.sed_method != '0') {
4482                            sed();
4483                        }
4484                    }
4485
4486                    $(document).trigger('mec_search_init', ['timeline', settings, response]);
4487                },
4488                error: function () { }
4489            });
4490        }
4491    };
4492
4493}(jQuery));
4494
4495// MEC AGENDA VIEW PLUGIN
4496(function ($) {
4497    $.fn.mecAgendaView = function (options) {
4498        // Default Options
4499        var settings = $.extend({
4500            // These are the defaults.
4501            id: 0,
4502            atts: '',
4503            ajax_url: '',
4504            sf: {},
4505            current_month_divider: '',
4506            end_date: '',
4507            offset: 0,
4508            pagination: '0',
4509            infinite_locked: false,
4510        }, options);
4511
4512        var sf;
4513
4514        let history = [];
4515        const $next = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-next-button');
4516        const $prev = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-prev-button');
4517
4518        // Set onclick Listeners
4519        setListeners();
4520
4521        function setListeners() {
4522            // Search Widget
4523            if (settings.sf.container !== '') {
4524                sf = $(settings.sf.container).mecSearchForm({
4525                    id: settings.id,
4526                    refine: settings.sf.refine,
4527                    ajax_url: settings.ajax_url,
4528                    start_date: settings.start_date,
4529                    atts: settings.atts,
4530                    callback: function (atts) {
4531                        settings.atts = atts;
4532                        search();
4533                    }
4534                });
4535
4536                $(settings.sf.container).addClass('mec-skin-search-init');
4537            }
4538
4539            // Load More
4540            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
4541                loadMore();
4542            });
4543
4544            // Scroll
4545            if (settings.pagination === 'scroll') {
4546                $(window).on("scroll", function (event) {
4547                    var $target = $("#mec_skin_" + settings.id + " .mec-load-more-wrap");
4548
4549                    var finished = $target.data('page-finished');
4550                    if (finished) return;
4551
4552                    var hT = $target.offset().top,
4553                        hH = $target.outerHeight(),
4554                        wH = $(window).height(),
4555                        wS = $(this).scrollTop();
4556
4557                    if (wS + 100 >
4557 hT + hH - wH && !settings.infinite_locked) {
4558                        settings.infinite_locked = true;
4559                        $target.addClass('mec-load-more-scroll-loading');
4560                        loadMore();
4561                    }
4562                });
4563            }
4564
4565            // Next Prev Pagination
4566            if (settings.pagination === 'nextprev') {
4567                // Events Wrapper
4568                const $EW = $("#mec_skin_events_" + settings.id + " .mec-events-agenda-container");
4569
4570                let next_disabled = false;
4571
4572                // Previous Button
4573                $prev.on('click', function () {
4574                    if (history.length) {
4575                        let page = history.pop();
4576
4577                        // Display Events
4578                        $EW.html(page.html);
4579
4580                        // Update the variables
4581                        settings.end_date = page.end_date;
4582                        settings.offset = page.offset;
4583                        settings.current_month_divider = page.current_month_divider;
4584
4585                        // Display Next Button
4586                        $next.removeClass('mec-util-hidden');
4587                    }
4588
4589                    // Hide Previous Button
4590                    if (!history.length) $prev.addClass('mec-util-hidden');
4591                });
4592
4593                // Next Button
4594                $next.on('click', function (e) {
4595                    // Prevent Redirect
4596                    e.preventDefault();
4597
4598                    // Currently Disabled
4599                    if (next_disabled) return;
4600
4601                    // Disable Button
4602                    next_disabled = true;
4603
4604                    // Add Loading Style
4605                    $EW.addClass('mec-loading-events');
4606
4607                    // Push to History
4608                    history.push({
4609                        end_date: settings.end_date,
4610                        offset: settings.offset,
4611                        current_month_divider: settings.current_month_divider,
4612                        html: $EW.html()
4613                    });
4614
4615                    loadMore(function (response) {
4616                        // Display New Events
4617                        if (response.count) $EW.html(response.html);
4618                        // Remove Last Page
4619                        else history.pop();
4620
4621                        // Enable Button
4622                        next_disabled = false;
4623
4624                        // Remove Loading Style
4625                        $EW.removeClass('mec-loading-events');
4626
4627                        // Display Previous Button
4628                        if (history.length) $prev.removeClass('mec-util-hidden');
4629                        // Hide Next Button
4630                        if (response.count === 0 || (typeof response.has_more_event !== 'undefined' && !response.has_more_event)) $next.addClass('mec-util-hidden');
4631                    });
4632                });
4633            }
4634
4635            // Single Event Method
4636            if (settings.sed_method != '0') {
4637                sed();
4638            }
4639        }
4640
4641        function sed() {
4642            // Single Event Display
4643            $("#mec_skin_" + settings.id + " .mec-agenda-event-title a").off('click').on('click', function (e) {
4644                var sed_method = $(this).attr('target');
4645                if ('_blank' === sed_method) {
4646
4647                    return;
4648                }
4649                e.preventDefault();
4650                var href = $(this).attr('href');
4651
4652                var id = $(this).data('event-id');
4653                var occurrence = get_parameter_by_name('occurrence', href);
4654                var time = get_parameter_by_name('time', href);
4655
4656                if ('undefined' == typeof id) {
4657                    return;
4658                }
4659
4660                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
4661            });
4662        }
4663
4664        function loadMore(callback) {
4665            // Add loading Class
4666            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
4667
4668            $.ajax({
4669                url: settings.ajax_url,
4670                data: "action=mec_agenda_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&current_month_divider=" + settings.current_month_divider + "&apply_sf_date=0",
4671                dataType: "json",
4672                type: "post",
4673                success: function (response) {
4674                    if (response.count === 0) {
4675                        // Remove loading Class
4676                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading").addClass("mec-util-hidden");
4677
4678                        // Release Lock of Infinite Scroll
4679                        settings.infinite_locked = false;
4680                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").data('page-finished', true).removeClass('mec-load-more-scroll-loading');
4681
4682                        // Run Callback
4683                        if (typeof callback === 'function') callback(response);
4684                    } else {
4685                        // Show load more button
4686                        if (typeof response.has_more_event === 'undefined' || (typeof response.has_more_event !== 'undefined' && response.has_more_event)) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
4687                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4688
4689                        // Run Callback
4690                        if (typeof callback === 'function') callback(response);
4691                        // Append Items
4692                        else $("#mec_skin_events_" + settings.id + " .mec-events-agenda-container").append(response.html);
4693
4694                        // Remove loading Class
4695                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
4696
4697                        // Update the variables
4698                        settings.end_date = response.end_date;
4699                        settings.offset = response.offset;
4700                        settings.current_month_divider = response.current_month_divider;
4701
4702                        // Single Event Method
4703                        if (settings.sed_method != '0') {
4704                            sed();
4705                        }
4706                        mecFluentCustomScrollbar();
4707
4708                        // Release Lock of Infinite Scroll
4709                        settings.infinite_locked = false;
4710                        $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
4711                    }
4712
4713                    $(document).trigger('mec_load_more_init', ['agenda', settings]);
4714                },
4715                error: function () { }
4716            });
4717        }
4718
4719        function search() {
4720            // Hide no event message
4721            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
4722
4723            // Add loading Class
4724            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
4725            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
4726            mecFluentCustomScrollbar();
4727
4728            $.ajax({
4729                url: settings.ajax_url,
4730                data: "action=mec_agenda_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&current_month_divider=0&apply_sf_date=1",
4731                dataType: "json",
4732                type: "post",
4733                success: function (response) {
4734                    if (response.count === 0) {
4735                        // Append Items
4736                        $("#mec_skin_events_" + settings.id + " .mec-events-agenda-container").html('');
4737
4738                        // Remove loading Class
4739                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
4740
4741                        // Hide it
4742                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4743
4744                        // Show no event message
4745                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
4746                    } else {
4747                        // Append Items
4748                        $("#mec_skin_events_" + settings.id + " .mec-events-agenda-container").html(response.html);
4749
4750                        // Remove loading Class
4751                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
4752
4753                        // Show load more button
4754                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
4755                        // Hide load more button
4756                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4757
4758                        // Update the variables
4759                        settings.end_date = response.end_date;
4760                        settings.offset = response.offset;
4761                        settings.current_month_divider = response.current_month_divider;
4762
4763                        // Single Event Method
4764                        if (settings.sed_method != '0') {
4765                            sed();
4766                        }
4767                    }
4768                    mecFluentCustomScrollbar();
4769
4770                    $(document).trigger('mec_search_init', ['agenda', settings, response]);
4771                },
4772                error: function () { }
4773            });
4774        }
4775    };
4776}(jQuery));
4777
4778// MEC CAROUSEL VIEW PLUGIN
4779(function ($) {
4780    $.fn.mecCarouselView = function (options) {
4781        // Default Options
4782        var settings = $.extend({
4783            // These are the defaults.
4784            id: 0,
4785            atts: '',
4786            ajax_url: '',
4787            sf: {},
4788            items: 3,
4789            items_mobile: 1,
4790            items_tablet: 2,
4791            loop: true,
4792            autoplay_status: true,
4793            autoplay: '',
4794            style: 'type1',
4795            start_date: ''
4796        }, options);
4797
4798        // Init Sliders
4799        initSlider(settings);
4800
4801        // Single Event Method
4802        if (settings.sed_method != '0') {
4803            sed(settings);
4804        }
4805
4806        function initSlider(settings) {
4807            // Check RTL website
4808            if ($('body').hasClass('rtl')) {
4809                var owl_rtl = true;
4810            } else {
4811                var owl_rtl = false;
4812            }
4813
4814            if (settings.style === 'type1') {
4815                // Start carousel skin
4816                var owl = $("#mec_skin_" + settings.id + " .mec-event-carousel-type1 .mec-owl-carousel");
4817
4818                owl.owlCarousel({
4819                    autoplay: settings.autoplay_status,
4820                    autoplayTimeout: settings.autoplay, // Set AutoPlay to 3 seconds
4821                    loop: settings.loop,
4822                    items: settings.items,
4823                    dots: true,
4824                    nav: false,
4825                    autoplayHoverPause: settings.autoplay_status,
4826                    rtl: owl_rtl,
4827                    navElement: 'button type="button" role="button"',
4828                    responsiveClass: true,
4829                    responsive: {
4830                        0: {
4831                            items: settings.items_mobile,
4832                        },
4833                        768: {
4834                            items: settings.items_tablet,
4835                        },
4836                        1199: {
4837                            items: settings.items,
4838                        }
4839                    },
4840                });
4841
4842                if (settings.autoplay_status) {
4843                    owl.on(
4844                        "mouseleave",
4845                        function (event) {
4846                            $("#mec_skin_" + settings.id + " .mec-owl-carousel").trigger('play.owl.autoplay');
4847                        }
4848                    );
4849                }
4850            } else if (settings.style === 'type4') {
4851                $("#mec_skin_" + settings.id + " .mec-owl-carousel").owlCarousel({
4852                    autoplay: settings.autoplay_status,
4853                    loop: settings.loop,
4854                    autoplayTimeout: settings.autoplay,
4855                    items: settings.items,
4856                    dots: false,
4857                    nav: true,
4858                    autoplayHoverPause: settings.autoplay_status,
4859                    navText: ["<i class='mec-sl-arrow-left' aria-label='Previous'></i>", " <i class='mec-sl-arrow-right' aria-label='Next'></i>"],
4860                    navElement: 'button type="button" role="button"',
4861                    rtl: owl_rtl,
4862                    responsiveClass: true,
4863                    responsive: {
4864                        0: {
4865                            items: settings.items_mobile,
4866                        },
4867                        768: {
4868                            items: settings.items_tablet,
4869                        },
4870                        1199: {
4871                            items: settings.items,
4872                        }
4873                    },
4874                });
4875
4876                if (settings.autoplay_status) {
4877                    $("#mec_skin_" + settings.id + " .mec-owl-carousel").on(
4878                        "mouseleave",
4879                        function (event) {
4880                            $("#mec_skin_" + settings.id + " .mec-owl-carousel").trigger('play.owl.autoplay');
4881                        }
4882                    );
4883                }
4884            } else {
4885                $("#mec_skin_" + settings.id + " .mec-owl-carousel").owlCarousel({
4886                    autoplay: settings.autoplay_status,
4887                    loop: settings.loop,
4888                    autoplayTimeout: settings.autoplay,
4889                    items: settings.items,
4890                    dots: typeof settings.dots_navigation != 'undefined' ? settings.dots_navigation : false,
4891                    nav: typeof settings.navigation != 'undefined' ? settings.navigation : true,
4892                    autoplayHoverPause: settings.autoplay_status,
4893                    navText: typeof settings.navText != 'undefined' ? settings.navText : ["<i class='mec-sl-arrow-left' aria-label='Previous'></i>", " <i class='mec-sl-arrow-right' aria-label='Next'></i>"],
4894                    navElement: 'button type="button" role="button"',
4895                    rtl: owl_rtl,
4896                    responsiveClass: true,
4897                    responsive: {
4898                        0: {
4899                            items: settings.items_mobile,
4900                        },
4901                        768: {
4902                            items: settings.items_tablet,
4903                        },
4904                        1199: {
4905                            items: settings.items,
4906                        }
4907                    },
4908                });
4909
4910                if (settings.autoplay_status) {
4911                    $("#mec_skin_" + settings.id + " .mec-owl-carousel").on(
4912                        "mouseleave",
4913                        function (event) {
4914                            $("#mec_skin_" + settings.id + " .mec-owl-carousel").trigger('play.owl.autoplay');
4915                        }
4916                    );
4917                }
4918            }
4919        }
4920    };
4921
4922    function sed(settings) {
4923        // Single Event Display
4924        $("#mec_skin_" + settings.id + " .mec-event-carousel-title a, #mec_skin_" + settings.id + " .mec-event-image a, #mec_skin_" + settings.id + " .mec-booking-button, #mec_skin_" + settings.id + " .mec-event-button").off('click').on('click', function (e) {
4925            var sed_method = $(this).attr('target');
4926            if ('_blank' === sed_method) {
4927
4928                return;
4929            }
4930            e.preventDefault();
4931            var href = $(this).attr('href');
4932
4933            var id = $(this).data('event-id');
4934            var occurrence = get_parameter_by_name('occurrence', href);
4935            var time = get_parameter_by_name('time', href);
4936
4937            if ('undefined' == typeof id) {
4938                return;
4939            }
4940
4941            mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
4942        });
4943    }
4944}(jQuery));
4945
4946// MEC SLIDER VIEW PLUGIN
4947(function ($) {
4948    $.fn.mecSliderView = function (options) {
4949        // Default Options
4950        var settings = $.extend({
4951            // These are the defaults.
4952            id: 0,
4953            atts: '',
4954            transition_time: 250,
4955            autoplay: false,
4956            ajax_url: '',
4957            sf: {},
4958            start_date: ''
4959        }, options);
4960
4961        var rtl = false;
4962
4963        // Init Sliders
4964        initSlider();
4965
4966        function initSlider() {
4967            // Check RTL website
4968            if ($('body').hasClass('rtl')) rtl = true;
4969
4970            $("#mec_skin_" + settings.id + " .mec-owl-carousel").owlCarousel(
4971                {
4972                    autoplay: true,
4973                    smartSpeed: settings.transition_time,
4974                    autoplayTimeout: settings.autoplay,
4975                    loop: true,
4976                    items: 1,
4977                    responsiveClass: true,
4978                    responsive: {
4979                        0: {
4980                            items: 1,
4981                        },
4982                        960: {
4983                            items: 1,
4984                        },
4985                        1200: {
4986                            items: 1,
4987                        }
4988                    },
4989                    dots: false,
4990                    nav: true,
4991                    autoplayHoverPause: true,
4992                    navText: typeof settings.navText != 'undefined' ? settings.navText : ["<i class='mec-sl-arrow-left' aria-label='Previous'></i>", " <i class='mec-sl-arrow-right' aria-label='Next'></i>"],
4993                    navElement: 'button type="button" role="button"',
4994                    rtl: rtl,
4995                });
4996        }
4997    };
4998}(jQuery));
4999
5000// MEC COUNTDOWN MODULE
5001(function ($) {
5002    $.fn.mecCountDown = function (options, callBack) {
5003        // Default Options
5004        var settings = $.extend({
5005            // These are the defaults.
5006            date: null,
5007            format: null
5008        }, options);
5009
5010        var callback = callBack;
5011        var selector = $(this);
5012
5013        startCountdown();
5014        var interval = setInterval(startCountdown, 1000);
5015
5016        function startCountdown() {
5017            var eventDate = Date.parse(settings.date) / 1000;
5018            var currentDate = Math.floor($.now() / 1000);
5019
5020            if (eventDate <= currentDate) {
5021                selector.find(".mec-days").text("00");
5022                selector.find(".mec-hours").text("00");
5023                selector.find(".mec-minutes").text("00");
5024                selector.find(".mec-seconds").text("00");
5025
5026                callback.call(this);
5027                clearInterval(interval);
5028                return;
5029            }
5030
5031            var seconds = eventDate - currentDate;
5032
5033            var days = Math.floor(seconds / (60 * 60 * 24));
5034            seconds -= days * 60 * 60 * 24;
5035
5036            var hours = Math.floor(seconds / (60 * 60));
5037            seconds -= hours * 60 * 60;
5038
5039            var minutes = Math.floor(seconds / 60);
5040            seconds -= minutes * 60;
5041
5042            if (days == 1) selector.find(".mec-timeRefDays").text(mecdata.day);
5043            else selector.find(".mec-timeRefDays").text(mecdata.days);
5044
5045            if (hours == 1) selector.find(".mec-timeRefHours").text(mecdata.hour);
5046            else selector.find(".mec-timeRefHours").text(mecdata.hours);
5047
5048            if (minutes == 1) selector.find(".mec-timeRefMinutes").text(mecdata.minute);
5049            else selector.find(".mec-timeRefMinutes").text(mecdata.minutes);
5050
5051            if (seconds == 1) selector.find(".mec-timeRefSeconds").text(mecdata.second);
5052            else selector.find(".mec-timeRefSeconds").text(mecdata.seconds);
5053
5054            if (settings.format === "on") {
5055                days = (String(days).length >= 2) ? days : "0" + days;
5056                hours = (String(hours).length >= 2) ? hours : "0" + hours;
5057                minutes = (String(minutes).length >= 2) ? minutes : "0" + minutes;
5058                seconds = (String(seconds).length >= 2) ? seconds : "0" + seconds;
5059            }
5060
5061            if (!isNaN(eventDate)) {
5062                selector.find(".mec-days").text(days);
5063                selector.find(".mec-hours").text(hours);
5064                selector.find(".mec-minutes").text(minutes);
5065                selector.find(".mec-seconds").text(seconds);
5066            } else {
5067                clearInterval(interval);
5068            }
5069        }
5070    };
5071
5072}(jQuery));
5073
5074// MEC TILE VIEW PLUGIN
5075(function ($) {
5076    $.fn.mecTileView = function (options) {
5077        var active_month;
5078        var active_year;
5079
5080        // Default Options
5081        var settings = $.extend({
5082            // These are the defaults.
5083            today: null,
5084            id: 0,
5085            events_label: 'Events',
5086            event_label: 'Event',
5087            month_navigator: 0,
5088            atts: '',
5089            active_month: {},
5090            next_month: {},
5091            sf: {},
5092            ajax_url: '',
5093            pagination: '0',
5094            infinite_locked: false,
5095        }, options);
5096
5097        // Initialize Month Navigator
5098        if (settings.month_navigator) initMonthNavigator();
5099
5100        // Load Next Month in background
5101        if (settings.load_method === 'month') setMonth(settings.next_month.year, settings.next_month.month, true);
5102
5103        active_month = settings.active_month.month;
5104        active_year = settings.active_month.year;
5105
5106        let history = [];
5107        const $next = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-next-button');
5108        const $prev = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-prev-button');
5109
5110        // Set onclick Listeners
5111        setListeners();
5112
5113        // Search Widget
5114        if (settings.sf.container !== '') {
5115            $(settings.sf.container).mecSearchForm(
5116                {
5117                    id: settings.id,
5118                    refine: settings.sf.refine,
5119                    ajax_url: settings.ajax_url,
5120                    atts: settings.atts,
5121                    callback: function (atts) {
5122                        settings.atts = atts;
5123                        search(active_year, active_month);
5124                    }
5125                });
5126
5127            $(settings.sf.container).addClass('mec-skin-search-init');
5128        }
5129
5130        function initMonthNavigator() {
5131            $("#mec_skin_" + settings.id + " .mec-load-month").off("click").on("click", function () {
5132                var year = $(this).data("mec-year");
5133                var month = $(this).data("mec-month");
5134
5135                setMonth(year, month, false, true);
5136            });
5137        }
5138
5139        function search(year, month) {
5140            // Add Loading Class
5141            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
5142            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
5143
5144            $.ajax(
5145                {
5146                    url: settings.ajax_url,
5147                    data: "action=mec_tile_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
5148                    dataType: "json",
5149                    type: "post",
5150                    success: function (response) {
5151                        if (settings.load_method === 'month') {
5152                            active_month = response.current_month.month;
5153                            active_year = response.current_month.year;
5154
5155                            // Append Month
5156                            $("#mec_skin_events_" + settings.id).html('<div class="mec-month-container" id="mec_tile_month_' + settings.id + '_' + response.current_month.id + '" data-month-id="' + response.current_month.id + '">' + response.month + '</div>');
5157
5158                            // Append Month Navigator
5159                            $("#mec_skin_" + settings.id + " .mec-skin-tile-month-navigator-container").append('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
5160
5161                            // Re-initialize Month Navigator
5162                            initMonthNavigator();
5163
5164                            // Set onclick Listeners
5165                            setListeners();
5166
5167                            // Toggle Month
5168                            toggleMonth(response.current_month.id);
5169                        }
5170                        else {
5171                            // Append Items
5172                            $("#mec_skin_events_" + settings.id).html(response.html);
5173
5174                            // Show load more button
5175                            if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
5176                            // Hide load more button
5177                            else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
5178
5179                            // Update the variables
5180                            settings.end_date = response.end_date;
5181                            settings.offset = response.offset;
5182
5183                            // Set onclick Listeners
5184                            setListeners();
5185                        }
5186
5187                        // Remove loading Class
5188                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
5189
5190                        $(document).trigger('mec_search_init', ['tile', settings, response]);
5191                    },
5192                    error: function () { }
5193                });
5194        }
5195
5196        function setMonth(year, month, do_in_background, navigator_click) {
5197            if (typeof do_in_background === "undefined") do_in_background = false;
5198            navigator_click = navigator_click || false;
5199
5200            var month_id = year + "" + month;
5201
5202            if (!do_in_background) {
5203                active_month = month;
5204                active_year = year;
5205            }
5206
5207            // Month exists so we just show it
5208            if ($("#mec_tile_month_" + settings.id + "_" + month_id).length) {
5209                // Toggle Month
5210                toggleMonth(month_id);
5211            }
5212            else {
5213                if (!do_in_background) {
5214                    // Add Loading Class
5215                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
5216                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
5217                }
5218
5219                $.ajax(
5220                    {
5221                        url: settings.ajax_url,
5222                        data: "action=mec_tile_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
5223                        dataType: "json",
5224                        type: "post",
5225                        success: function (response) {
5226                            // Append Month
5227                            $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_tile_month_' + settings.id + '_' + response.current_month.id + '" data-month-id="' + response.current_month.id + '">' + response.month + '</div>');
5228
5229                            // Append Month Navigator
5230                            $("#mec_skin_" + settings.id + " .mec-skin-tile-month-navigator-container").append('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
5231
5232                            // Re-initialize Month Navigator
5233                            initMonthNavigator();
5234
5235                            // Set onclick Listeners
5236                            setListeners();
5237
5238                            if (!do_in_background) {
5239                                // Toggle Month
5240                                toggleMonth(response.current_month.id);
5241
5242                                // Remove loading Class
5243                                $('.mec-modal-result').removeClass("mec-month-navigator-loading");
5244
5245                                // Set Month Filter values in search widget
5246                                $("#mec_sf_month_" + settings.id).val(month);
5247                                $("#mec_sf_year_" + settings.id).val(year);
5248                            }
5249                            else {
5250                                $("#mec_tile_month_" + settings.id + "_" + response.current_month.id).hide();
5251                                $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
5252                            }
5253                        },
5254                        error: function () { }
5255                    });
5256            }
5257        }
5258
5259        function toggleMonth(month_id) {
5260            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
5261            var active_day = $("#mec_tile_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
5262
5263            if (active_day <= 9) active_day = "0" + active_day;
5264
5265            // Toggle Month Navigator
5266            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
5267            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
5268
5269            // Toggle Month
5270            $("#mec_skin_" + settings.id + " .mec-month-container").hide().removeClass("mec-month-container-selected");
5271            $("#mec_tile_month_" + settings.id + "_" + month_id).show().addClass("mec-month-container-selected");
5272
5273            jQuery(document).trigger('mec_toggle_month', [settings, month_id]);
5274        }
5275
5276        var sf;
5277
5278        function setListeners() {
5279            // Load More
5280            $("#mec_skin_" + settings.id + " .mec-load-more-button").off("click").on("click", function () {
5281                loadMore();
5282            });
5283
5284            // Scroll
5285            if (settings.pagination === 'scroll') {
5286                $(window).on("scroll", function (event) {
5287                    var $target = $("#mec_skin_" + settings.id + " .mec-load-more-wrap");
5288
5289                    var finished = $target.data('page-finished');
5290                    if (finished) return;
5291
5292                    var hT = $target.offset().top,
5293                        hH = $target.outerHeight(),
5294                        wH = $(window).height(),
5295                        wS = $(this).scrollTop();
5296
5297                    if (wS + 100 > hT + hH - wH && !settings.infinite_locked) {
5298                        settings.infinite_locked = true;
5299                        $target.addClass('mec-load-more-scroll-loading');
5300                        loadMore();
5301                    }
5302                });
5303            }
5304
5305            // Next Prev Pagination
5306            if (settings.pagination === 'nextprev') {
5307                // Events Wrapper
5308                const $EW = $("#mec_skin_events_" + settings.id);
5309
5310                let next_disabled = false;
5311
5312                // Previous Button
5313                $prev.on('click', function () {
5314                    if (history.length) {
5315                        let page = history.pop();
5316
5317                        // Display Events
5318                        $EW.html(page.html);
5319
5320                        // Update the variables
5321                        settings.end_date = page.end_date;
5322                        settings.offset = page.offset;
5323                        settings.current_month_divider = page.current_month_divider;
5324
5325                        // Display Next Button
5326                        $next.removeClass('mec-util-hidden');
5327                    }
5328
5329                    // Hide Previous Button
5330                    if (!history.length) $prev.addClass('mec-util-hidden');
5331                });
5332
5333                // Next Button
5334                $next.on('click', function (e) {
5335                    // Prevent Redirect
5336                    e.preventDefault();
5337
5338                    // Currently Disabled
5339                    if (next_disabled) return;
5340
5341                    // Disable Button
5342                    next_disabled = true;
5343
5344                    // Add Loading Style
5345                    $EW.addClass('mec-loading-events');
5346
5347                    // Push to History
5348                    history.push({
5349                        end_date: settings.end_date,
5350                        offset: settings.offset,
5351                        current_month_divider: settings.current_month_divider,
5352                        html: $EW.html()
5353                    });
5354
5355                    loadMore(function (response) {
5356                        // Display New Events
5357                        if (response.count) $EW.html(response.html);
5358                        // Remove Last Page
5359                        else history.pop();
5360
5361                        // Enable Button
5362                        next_disabled = false;
5363
5364                        // Remove Loading Style
5365                        $EW.removeClass('mec-loading-events');
5366
5367                        // Display Previous Button
5368                        if (history.length) $prev.removeClass('mec-util-hidden');
5369                        // Hide Next Button
5370                        if (response.count === 0 || (typeof response.has_more_event !== 'undefined' && !response.has_more_event)) $next.addClass('mec-util-hidden');
5371                    });
5372                });
5373            }
5374
5375            $("#mec_skin_" + settings.id + " article").off("click").on("click", function (e) {
5376                // Link Clicked
5377                if (e.target.nodeName.toLowerCase() === 'a') return;
5378
5379                var href = $(this).data('href');
5380                if (!href) return;
5381
5382                var target = $(this).data('target');
5383
5384                if (target === 'blank') window.open(href, '_blank');
5385                else if (target !== 'm1') document.location.href = href;
5386            });
5387
5388            // Add the onclick event
5389            $("#mec_skin_" + settings.id + " .mec-has-event").off("click").on('click', function (e) {
5390                e.preventDefault();
5391
5392                // define variables
5393                var $this = $(this),
5394                    data_mec_cell = $this.data('mec-cell'),
5395                    month_id = $this.data('month');
5396
5397                $("#mec_monthly_view_month_" + settings.id + "_" + month_id + " .mec-calendar-day").removeClass('mec-selected-day');
5398                $this.addClass('mec-selected-day');
5399
5400                $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
5401                $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
5402
5403                $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
5404                $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
5405            });
5406
5407            // Single Event Method
5408            if (settings.sed_method != '0') {
5409                sed();
5410            }
5411        }
5412
5413        function sed() {
5414            // Single Event Display
5415            $("#mec_skin_" + settings.id + " .mec-event-content .mec-tile-into-content-link,#mec_skin_" + settings.id + " .mec-event-content .mec-event-title a").off('click').on('click', function (e) {
5416
5417                var sed_method = $(this).closest('.mec-event-article.mec-tile-item').data('target');
5418                if ('_blank' === sed_method) {
5419                    return;
5420                }
5421                e.preventDefault();
5422                var href = $(this).closest('.mec-event-article.mec-tile-item').data('href');
5423
5424                var id = $(this).closest('.mec-event-article.mec-tile-item').find('.mec-event-title a').data('event-id');
5425                var occurrence = get_parameter_by_name('occurrence', href);
5426                var time = get_parameter_by_name('time', href);
5427
5428                if ('undefined' == typeof id) {
5429                    return;
5430                }
5431
5432                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
5433            });
5434        }
5435
5436        function loadMore(callback) {
5437            // Load More Button
5438            var $load_more_button = $("#mec_skin_" + settings.id + " .mec-load-more-button");
5439
5440            // Add loading Class
5441            $load_more_button.addClass("mec-load-more-loading");
5442
5443            $.ajax(
5444                {
5445                    url: settings.ajax_url,
5446                    data: "action=mec_tile_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&current_month_divider=" + settings.current_month_divider + "&apply_sf_date=0",
5447                    dataType: "json",
5448                    type: "post",
5449                    success: function (response) {
5450                        if (response.count == '0') {
5451                            // Remove loading Class
5452                            $load_more_button.removeClass("mec-load-more-loading");
5453
5454                            // Hide load more button
5455                            $load_more_button.addClass("mec-util-hidden");
5456
5457                            // Release Lock of Infinite Scroll
5458                            settings.infinite_locked = false;
5459                            $("#mec_skin_" + settings.id + " .mec-load-more-wrap").data('page-finished', true).removeClass('mec-load-more-scroll-loading');
5460
5461                            // Run Callback
5462                            if (typeof callback === 'function') callback(response);
5463                        }
5464                        else {
5465                            // Show load more button
5466                            if (typeof response.has_more_event === 'undefined' || (typeof response.has_more_event !== 'undefined' && response.has_more_event)) $load_more_button.removeClass("mec-util-hidden");
5467                            else $load_more_button.addClass("mec-util-hidden");
5468
5469                            // Run Callback
5470                            if (typeof callback === 'function') callback(response);
5471                            // Append Items
5472                            else $("#mec_skin_events_" + settings.id).append(response.html);
5473
5474                            // Remove loading Class
5475                            $load_more_button.removeClass("mec-load-more-loading");
5476
5477                            // Update the variables
5478                            settings.end_date = response.end_date;
5479                            settings.offset = response.offset;
5480                            settings.current_month_divider = response.current_month_divider;
5481
5482                            // Single Event Method
5483                            if (settings.sed_method != '0') {
5484                                sed();
5485                            }
5486
5487                            // Release Lock of Infinite Scroll
5488                            settings.infinite_locked = false;
5489                            $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
5490                        }
5491
5492                        $(document).trigger('mec_load_more_init', ['tile', settings]);
5493                    },
5494                    error: function () { }
5495                });
5496        }
5497    };
5498}(jQuery));
5499
5500function mec_gateway_selected(gateway_id) {
5501    // Hide all gateway forms
5502    jQuery('.mec-book-form-gateway-checkout').addClass('mec-util-hidden');
5503
5504    // Show selected gateway form
5505    jQuery('#mec_book_form_gateway_checkout' + gateway_id).removeClass('mec-util-hidden');
5506}
5507
5508function mec_wrap_resize() {
5509    var $mec_wrap = jQuery('.mec-wrap'),
5510        mec_width = $mec_wrap.width();
5511    if (mec_width < 959) {
5512        $mec_wrap.addClass('mec-sm959');
5513    } else {
5514        $mec_wrap.removeClass('mec-sm959');
5515    }
5516}
5517
5518function get_parameter_by_name(name, url) {
5519    if (!url) {
5520        url = window.location.href;
5521    }
5522
5523    name = name.replace(/[\[\]]/g, "\\$&");
5524    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
5525        results = regex.exec(url);
5526
5527    if (!results) return null;
5528    if (!results[2]) return '';
5529
5530    return decodeURIComponent(results[2].replace(/\+/g, " "));
5531}
5532
5533// Focus events day
5534var mec_g_month_id = null;
5535
5536function mecFocusDay(settings) {
5537    if (mec_g_month_id != null) {
5538        setTimeout(function () {
5539            var id = settings.id,
5540                date = new Date(),
5541                mec_owl_year = mec_g_month_id.substr(0, 4),
5542                mec_current_year = date.getFullYear(),
5543                mec_owl_month = mec_g_month_id.substr(4, 6),
5544                mec_current_month = date.getMonth() + 1,
5545                mec_current_day = date.getDate(),
5546                mec_owl_go = jQuery("#mec-owl-calendar-d-table-" + id + "-" + mec_g_month_id),
5547                mec_day_exist = false;
5548            mec_owl_go.find('.owl-stage > div').each(function (index) {
5549                if (parseInt(jQuery(this).children('div').data("events-count")) > 0) {
5550                    if ((((mec_owl_year != mec_current_year) && (mec_owl_month != mec_current_month)) || (mec_owl_year == mec_current_year) && (mec_owl_month != mec_current_month)) || parseInt(jQuery(this).children('div').text()) > mec_current_day) {
5551                        var index_plus = index + 1;
5552                        jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_i
5552d + (index < 10 ? '0' + index_plus : index_plus)).trigger('click');
5553                        mec_owl_go.trigger('to.owl.carousel', index_plus);
5554                        mec_day_exist = true;
5555                        return false;
5556                    }
5557                    else {
5558                        jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_id + mec_current_day).trigger('click');
5559                        mec_owl_go.trigger('to.owl.carousel', mec_current_day);
5560                        mec_day_exist = true;
5561                        return false;
5562                    }
5563                }
5564            });
5565
5566            if (!mec_day_exist && ((mec_owl_year == mec_current_year) && (mec_owl_month == mec_current_month))) {
5567                jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_id + mec_current_day).trigger('click');
5568                mec_owl_go.trigger('to.owl.carousel', mec_current_day);
5569            }
5570        }, 1000);
5571    }
5572}
5573
5574// Focus events week
5575function mec_focus_week(id, skin) {
5576    skin = skin || 'weekly';
5577    var wrap_elem = jQuery('.mec-weeks-container .mec-weekly-view-week-active').parent();
5578    var days = wrap_elem.find('dt');
5579    var week = wrap_elem.find('dl').length;
5580    var focus_week = false;
5581    var i = j = 1;
5582
5583    for (i = 1; i < week; i++) {
5584        setTimeout(function () {
5585            var event = new Event('click');
5586            jQuery('#mec_skin_' + id + ' .mec-previous-month.mec-load-week')[0].dispatchEvent(event);
5587        }, 33);
5588    }
5589
5590    days.each(function (i) {
5591        if (jQuery(this).data('events-count') > 0) {
5592            if (focus_week === false) {
5593                focus_week = parseInt(jQuery(this).parent().data('week-number'));
5594            }
5595
5596            if (skin == 'timetable') {
5597                if (parseInt(jQuery(this).parent().data('week-number')) == parseInt(jQuery('body').data('currentweek'))) {
5598                    focus_week = parseInt(jQuery(this).parent().data('week-number'));
5599                    return false;
5600                }
5601            }
5602            else {
5603                return false;
5604            }
5605        }
5606    });
5607
5608    if (focus_week !== false) {
5609        for (j = 1; j < focus_week; j++) {
5610            setTimeout(function () {
5611                var event = new Event('click');
5612                jQuery('#mec_skin_' + id + ' .mec-next-month.mec-load-week')[0].dispatchEvent(event);
5613            }, 33);
5614        }
5615    }
5616}
5617
5618// TODO must be cleaned JS codes
5619(function ($) {
5620    $(document).ready(function () {
5621        // Check RTL website
5622        if ($('body').hasClass('rtl')) {
5623            var owl_rtl = true;
5624        } else {
5625            var owl_rtl = false;
5626        }
5627
5628        // MEC WIDGET CAROUSEL
5629        $(".mec-widget .mec-event-grid-classic").each(function () {
5630            var loop_status = $(this).data('widget-loop');
5631            if (typeof loop_status === 'undefined') loop_status = 1;
5632
5633            var autoplay_status = $(this).data('widget-autoplay');
5634            if (typeof autoplay_status === 'undefined') autoplay_status = 1;
5635
5636            var autoplay_time = $(this).data('widget-autoplay-time');
5637            if (typeof autoplay_time === 'undefined') autoplay_time = 3000;
5638
5639            $(this).addClass('mec-owl-carousel mec-owl-theme');
5640            $(this).owlCarousel(
5641                {
5642                    autoplay: (autoplay_status ? true : false),
5643                    autoplayTimeout: autoplay_time,
5644                    autoplayHoverPause: (autoplay_status ? true : false),
5645                    loop: (loop_status ? true : false),
5646                    dots: false,
5647                    nav: true,
5648                    navText: ["<i class='mec-sl-arrow-left' aria-label='Previous'></i>", " <i class='mec-sl-arrow-right' aria-label='Next'></i>"],
5649                    navElement: 'button type="button" role="button"',
5650                    items: 1,
5651                    autoHeight: true,
5652                    responsiveClass: true,
5653                    rtl: owl_rtl,
5654                });
5655        });
5656
5657        // add mec-sm959 class if mec-wrap div size < 959
5658        mec_wrap_resize();
5659
5660        jQuery(window).on('resize', function () {
5661            mec_wrap_resize();
5662        });
5663
5664        // Fixed: social hover in iphone
5665        $('.mec-event-sharing-wrap').hover(function () {
5666            $(this).find('.mec-event-sharing').show(0);
5667        },
5668            function () {
5669                $(this).find('.mec-event-sharing').hide(0);
5670            });
5671
5672        // Register Booking Smooth Scroll
5673        $('a.simple-booking[href^="#mec-events-meta-group-booking"]').click(function () {
5674            if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
5675                var target = $(this.hash);
5676                target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
5677
5678                if (target.length) {
5679                    var scrollTopVal = target.offset().top - 30;
5680
5681                    if ($('body[class^="mec-events-template"]').length > 0) {
5682                        $('html, body').animate({
5683                            scrollTop: scrollTopVal
5684                        }, 600);
5685
5686                        return false;
5687
5688                    } else {
5689
5690                        return true;
5691
5692                    }
5693                }
5694            }
5695        });
5696
5697        // Load Information widget under title in mobile/tablet
5698        if ($('.single-mec-events .mec-single-event:not(.mec-single-modern)').length > 0) {
5699            if ($('.single-mec-events .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox').length > 0) {
5700                var html = $('.single-mec-events .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox')[0].outerHTML;
5701                if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) < 960) {
5702                    $('.single-mec-events .col-md-4 .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox').remove();
5703                    $('.single-mec-events .mec-event-info-mobile').html(html)
5704                }
5705            }
5706        }
5707
5708        // FAQ
5709        $(document).on('click', '.mec-faq-toggle-icon', function () {
5710            $(this).parent().toggleClass('close');
5711        });
5712    });
5713})(jQuery);
5714
5715// Weather
5716(function ($) {
5717    // Convart fahrenheit to centigrade
5718    function convertToC(value) {
5719        return Math.round(((parseFloat(value) - 32) * 5 / 9));
5720    }
5721
5722    // Convert centigrade to fahrenheit
5723    function convertToF(value) {
5724        return Math.round(((1.8 * parseFloat(value)) + 32));
5725    }
5726
5727    // Convert miles to kilometers
5728    function MPHToKPH(value) {
5729        return Math.round(1.609344 * parseFloat(value));
5730    }
5731
5732    // Convert kilometers to miles
5733    function KPHToMPH(value) {
5734        return Math.round((0.6214 * parseFloat(value)));
5735    }
5736
5737    $(document).ready(function ($) {
5738        var degree = $('.mec-weather-summary-temp');
5739        var weather_extra = $('.mec-weather-extras');
5740        var wind = weather_extra.children('.mec-weather-wind');
5741        var visibility = weather_extra.children('.mec-weather-visibility');
5742        var feelslike = weather_extra.children('.mec-weather-feels-like');
5743
5744        //  Events
5745        $('.degrees-mode').on('click', function () {
5746            var degree_mode = degree.children('var').text().trim();
5747            var wind_text = wind.text().substring(5);
5748            var visibility_text = visibility.text().substring(11);
5749            var feelslike_text = feelslike.text().substring(12);
5750
5751            if (degree_mode == degree.data('c').trim()) {
5752                degree.html(convertToF(parseInt(degree.text())) + ' <var>' + degree.data('f') + '</var>');
5753                feelslike.html('<span>Feels Like:</span> ' + convertToF(parseInt(feelslike_text)) + ' <var>' + feelslike.data('f') + '</var>');
5754                wind.html('<span>Wind:</span> ' + KPHToMPH(parseInt(wind_text)) + '<var>' + wind.data('mph') + '</var>');
5755                visibility.html('<span>Visibility:</span> ' + KPHToMPH(parseInt(visibility_text)) + '<var>' + visibility.data('mph') + '</var>');
5756                $(this).text($(this).data('metric'));
5757            }
5758            else if (degree_mode == degree.data('f').trim()) {
5759                degree.html(convertToC(parseInt(degree.text())) + ' <var>' + degree.data('c') + '</var>');
5760                feelslike.html('<span>Feels Like:</span> ' + convertToC(parseInt(feelslike_text)) + ' <var>' + feelslike.data('c') + '</var>');
5761                wind.html('<span>Wind:</span> ' + MPHToKPH(parseInt(wind_text)) + '<var>' + wind.data('kph') + '</var>');
5762                visibility.html('<span>Visibility:</span> ' + MPHToKPH(parseInt(visibility_text)) + '<var>' + visibility.data('kph') + '</var>');
5763                $(this).text($(this).data('imperial'));
5764            }
5765        });
5766
5767        $('a').on('click', function () { });
5768
5769        // FES Speakers Adding - Name Only
5770        $('#mec_add_speaker_button').on('click', function () {
5771            const $this = this;
5772            const content = $($this).parent().find('input');
5773            const list = $('#mec-fes-speakers-list');
5774            const key = list.find('.mec-error').length;
5775
5776            $($this).prop("disabled", true).css('cursor', 'wait');
5777            $.post(ajaxurl, {
5778                action: "mec_speaker_adding",
5779                content: content.val(),
5780                fes_nonce: mecdata.fes_nonce,
5781                key: key
5782            })
5783                .done(function (data) {
5784                    if ($(data).hasClass('mec-error')) {
5785                        list.prepend(data);
5786                        setTimeout(function () {
5787                            $('#mec-speaker-error-${key}').remove();
5788                        }, 1500);
5789                    } else {
5790                        list.html(data);
5791                        content.val('');
5792                    }
5793
5794                    $($this).prop("disabled", false).css('cursor', 'pointer');
5795                });
5796        });
5797
5798        // FES Speaker Adding - Full Details
5799        $('#mec_add_full_speaker_button').on('click', function () {
5800            const $this = this;
5801            const list = $('#mec-fes-speakers-list');
5802            const name = $('#mec_speaker_full_info_name');
5803            const type = $('#mec_speaker_full_info_type');
5804            const job_title = $('#mec_speaker_full_info_job_title');
5805            const tel = $('#mec_speaker_full_info_tel');
5806            const email = $('#mec_speaker_full_info_email');
5807            const website = $('#mec_speaker_full_info_website');
5808            const facebook = $('#mec_speaker_full_info_facebook');
5809            const instagram = $('#mec_speaker_full_info_instagram');
5810            const linkedin = $('#mec_speaker_full_info_linkedin');
5811            const twitter = $('#mec_speaker_full_info_twitter');
5812            const image = $('#mec_fes_speaker_thumbnail');
5813            const key = list.find('.mec-error').length;
5814
5815            $($this).prop("disabled", true).css('cursor', 'wait');
5816            $.post(ajaxurl, {
5817                action: "mec_speaker_adding",
5818                name: name.val(),
5819                type: type.val(),
5820                job_title: job_title.val(),
5821                tel: tel.val(),
5822                email: email.val(),
5823                website: website.val(),
5824                facebook: facebook.val(),
5825                instagram: instagram.val(),
5826                linkedin: linkedin.val(),
5827                twitter: twitter.val(),
5828                image: image.val(),
5829                fes_nonce: mecdata.fes_nonce,
5830                key: key
5831            })
5832                .done(function (data) {
5833                    if ($(data).hasClass('mec-error')) {
5834                        list.prepend(data);
5835                        setTimeout(function () {
5836                            $('#mec-speaker-error-${key}').remove();
5837                        }, 1500);
5838                    } else {
5839                        list.html(data);
5840                        name.val('');
5841                        type.val('');
5842                        job_title.val('');
5843                        tel.val('');
5844                        email.val('');
5845                        website.val('');
5846                        facebook.val('');
5847                        instagram.val('');
5848                        linkedin.val('');
5849                        twitter.val('');
5850
5851                        $('#mec_fes_speaker_remove_image_button').trigger('click');
5852                    }
5853
5854                    $($this).prop("disabled", false).css('cursor', 'pointer');
5855                });
5856        });
5857
5858        // FES Sponsor Adding - Name Only
5859        $('#mec_add_sponsor_button').on('click', function () {
5860            const $this = this;
5861            const content = $($this).parent().find('input');
5862            const list = $('#mec-fes-sponsors-list');
5863            const key = list.find('.mec-error').length;
5864
5865            $($this).prop("disabled", true).css('cursor', 'wait');
5866            $.post(ajaxurl, {
5867                action: "mec_sponsor_adding",
5868                content: content.val(),
5869                fes_nonce: mecdata.fes_nonce,
5870                key: key
5871            })
5872                .done(function (data) {
5873                    if ($(data).hasClass('mec-error')) {
5874                        list.prepend(data);
5875                        setTimeout(function () {
5876                            $('#mec-sponsor-error-${key}').remove();
5877                        }, 1500);
5878                    } else {
5879                        list.html(data);
5880                        content.val('');
5881                    }
5882
5883                    $($this).prop("disabled", false).css('cursor', 'pointer');
5884                });
5885        });
5886
5887        // FES Sponsor Adding - Full Details
5888        $('#mec_add_full_sponsor_button').on('click', function () {
5889            const $this = this;
5890            const list = $('#mec-fes-sponsors-list');
5891            const name = $('#mec_sponsor_full_info_name');
5892            const url = $('#mec_sponsor_full_info_url');
5893            const image = $('#mec_fes_sponsor_thumbnail');
5894            const key = list.find('.mec-error').length;
5895
5896            $($this).prop("disabled", true).css('cursor', 'wait');
5897            $.post(ajaxurl, {
5898                action: "mec_sponsor_adding",
5899                name: name.val(),
5900                url: url.val(),
5901                image: image.val(),
5902                fes_nonce: mecdata.fes_nonce,
5903                key: key
5904            })
5905                .done(function (data) {
5906                    if ($(data).hasClass('mec-error')) {
5907                        list.prepend(data);
5908                        setTimeout(function () {
5909                            $('#mec-sponsor-error-${key}').remove();
5910                        }, 1500);
5911                    } else {
5912                        list.html(data);
5913                        name.val('');
5914                        url.val('');
5915
5916                        $('#mec_fes_sponsor_remove_image_button').trigger('click');
5917                    }
5918
5919                    $($this).prop("disabled", false).css('cursor', 'pointer');
5920                });
5921        });
5922
5923        // Check RTL website
5924        var owl_rtl = $('body').hasClass('rtl') ? true : false;
5925
5926        // MEC FES Date Item Event
5927        $(document).on('click', '.mec-export-list-wrapper .mec-export-list-item', function () {
5928            $('.mec-export-list-item').removeClass('fes-export-date-active');
5929            $(this).addClass('fes-export-date-active');
5930        });
5931
5932        // MEC BuddyPress Integration Attendees Modules
5933        var mec_bd_attendees_modules = $('.mec-attendees-list-details > ul > li');
5934        mec_bd_attendees_modules.click(function () {
5935            $(this).find('.mec-attendees-toggle').toggle();
5936        });
5937
5938        // MEC FES export csv
5939        $(document).on('click', '.mec-event-export-csv, .mec-event-export-excel', function () {
5940            var mec_event_id = $(this).parent().parent().data('event-id');
5941
5942            var time = $(this).parent().parent().find($('.fes-export-date-active')).data('time');
5943            if (typeof time === 'undefined') time = 0;
5944
5945            var type = $(this).hasClass('mec-event-export-excel') ? 'ms-excel' : 'csv';
5946
5947            var url = mecdata.ajax_url + "?action=mec_fes_csv_export&fes_nonce=" + mecdata.fes_nonce + "&mec_event_id=" + mec_event_id + "&timestamp=" + time + "&type=" + type;
5948
5949            window.location = url;
5950        });
5951    });
5952})(jQuery);
5953
5954function mec_book_form_submit(event, unique_id) {
5955    event.preventDefault();
5956    window["mec_book_form_submit" + unique_id]();
5957}
5958
5959function mec_book_form_back_btn_cache(context, unique_id) {
5960    var id = jQuery(context).attr('id');
5961    var mec_form_data = jQuery('#mec_book_form' + unique_id).serializeArray();
5962
5963    if (id == "mec-book-form-btn-step-1") jQuery('body').data('mec-book-form-step-1', jQuery('#mec_booking' + unique_id).html()).data('unique-id', unique_id).data('mec-book-form-data-step-1', mec_form_data);
5964    else if (id == "mec-book-form-btn-step-2") jQuery('body').data('mec-book-form-step-2', jQuery('#mec_booking' + unique_id).html()).data('mec-book-form-data-step-2', mec_form_data);
5965}
5966
5967function mec_agreement_change(context) {
5968    var status = jQuery(context).is(":checked");
5969
5970    if (status) jQuery(context).prop("checked", "checked");
5971    else jQuery(context).removeProp("checked");
5972}
5973
5974function mec_book_form_back_btn_click(context, unique_id) {
5975    var id = jQuery(context).attr('id');
5976    unique_id = jQuery('body').data('unique-id');
5977
5978    jQuery('#mec_booking_message' + unique_id).hide();
5979    if (id == "mec-book-form-back-btn-step-2") {
5980        var mec_form_data_step_1 = jQuery('body').data('mec-book-form-data-step-1');
5981
5982        jQuery('#mec_booking' + unique_id).html(jQuery('body').data('mec-book-form-step-1'));
5983        jQuery.each(mec_form_data_step_1, function (index, object_item) {
5984            if (object_item.name === 'book[date][]') {
5985                jQuery('[value="' + object_item.value + '"]').prop('checked', true);
5986            }
5987            else jQuery('[name="' + object_item.name + '"]').val(object_item.value);
5988        });
5989
5990        // Booking Refresh Recaptcha When Back Button Click.
5991        var recaptcha_check = jQuery('#mec_booking' + unique_id).find('#g-recaptcha').length;
5992        if (recaptcha_check != 0) {
5993            jQuery('#g-recaptcha').html('');
5994            grecaptcha.render("g-recaptcha", {
5995                sitekey: mecdata.recapcha_key
5996            });
5997        }
5998
5999        mec_init_number_spinner();
6000
6001        var event_id = jQuery('input[name="event_id"]').val();
6002        var date = jQuery('#mec_book_form_date' + unique_id).val();
6003
6004        // Update Availability
6005        window['mec_get_tickets_availability' + unique_id](event_id, date);
6006    }
6007    else if (id == "mec-book-form-back-btn-step-3") {
6008        var mec_form_data_step_2 = jQuery('body').data('mec-book-form-data-step-2');
6009
6010        jQuery('#mec_booking' + unique_id).html(jQuery('body').data('mec-book-form-step-2'));
6011        jQuery.each(mec_form_data_step_2, function (index, object_item) {
6012            var mec_elem = jQuery('[name="' + object_item.name + '"]');
6013            var mec_type = mec_elem.attr('type');
6014
6015            if ((mec_type == 'checkbox' || mec_type == 'radio')) {
6016                var mec_elem_len = jQuery('[name="' + object_item.name + '"]').length;
6017
6018                if (mec_elem_len > 1) {
6019                    var id = '#' + mec_elem.attr('id').match(/mec_book_reg_field_reg.*_/g) + object_item.value.toLowerCase();
6020                    jQuery(id).prop('checked', true);
6021                }
6022                else {
6023                    mec_elem.prop('checked', true);
6024                }
6025            }
6026
6027            mec_elem.val(object_item.value);
6028        });
6029    }
6030}
6031
6032// Google map Skin
6033function gmapSkin(NewJson, id) {
6034    var gmap_temp = jQuery("#gmap-data-" + id);
6035    var beforeJson = gmap_temp.val();
6036    if (typeof beforeJson === 'undefined') beforeJson = '';
6037
6038    var newJson = NewJson;
6039    let jsonPush = (typeof beforeJson != 'undefined' && beforeJson.trim() == "") ? [] : JSON.parse(beforeJson);
6040    var pushState = jsonPush.length < 1 ? false : true;
6041
6042    for (var key in newJson) {
6043        if (pushState) {
6044            jsonPush.forEach(function (Item, Index) {
6045                var render_location = jsonPush[Index].latitude + "," + jsonPush[Index].longitude;
6046                if (key.trim() == render_location.trim()) {
6047                    // LightBox Count Update
6048                    newJson[key].count = newJson[key].count + jsonPush[Index].count;
6049
6050                    // LightBox Ids Update
6051                    newJson[key].event_ids = newJson[key].event_ids.concat(jsonPush[Index].event_ids);
6052
6053                    // LightBox Initialize
6054                    var dom = jQuery(newJson[key].lightbox).find("div:nth-child(2)");
6055                    var main_items = dom.html();
6056                    var new_items = jQuery(jsonPush[Index].lightbox).find("div:nth-child(2)").html();
6057
6058                    var render_items = dom.html(main_items + new_items).html();
6059                    var new_info_lightbox = '<div><div class="mec-event-detail mec-map-view-event-detail"><i class="mec-sl-map-marker"></i> ' + newJson[key].name + '</div><div>' + render_items + '</div></div>';
6060                    newJson[key].lightbox = new_info_lightbox;
6061
6062                    // LightBox info
6063                    var new_info_window = '<div class="mec-marker-infowindow-wp"><div class="mec-marker-infowindow-count">' + newJson[key].count + '</div><div class="mec-marker-infowindow-content"><span>Event at this location</span><span>' + newJson[key].name + '</span></div></div>';
6064                    newJson[key].infowindow = new_info_window;
6065
6066                    // Remove before values of this location
6067                    jsonPush.splice(Index, 1);
6068                }
6069            });
6070        }
6071
6072        jsonPush.push(newJson[key]);
6073    }
6074
6075    gmap_temp.val(JSON.stringify(jsonPush));
6076    return jsonPush;
6077}
6078
6079// Fluent Scripts
6080jQuery(document).ready(function () {
6081    if (jQuery('.mec-fluent-wrap').length < 0) {
6082        return;
6083    }
6084    // Events
6085    jQuery(window).on('resize', mecFluentToggoleDisplayValueFilterContent);
6086    jQuery(document).on('click', '.mec-fluent-wrap .mec-filter-icon', mecFluentToggleFilterContent);
6087    jQuery(document).on('click', '.mec-fluent-wrap .mec-more-events-icon', mecFluentToggleMoreEvents);
6088    jQuery(document).on('click', '.mec-fluent-wrap .mec-yearly-calendar', mecFluentYearlyCalendar);
6089    jQuery(document).on('click', mecFluentOutsideEvent);
6090    jQuery(document).on('click', '.mec-fluent-more-views-icon', mecFluentMoreViewsContent);
6091    jQuery(document).on('change', '.mec-fluent-wrap .mec-filter-content select, .mec-fluent-wrap .mec-filter-content input', mecFluentSmartFilterIcon);
6092    // Run
6093    mecFluentTimeTableUI();
6094    mecFluentUI();
6095    mecFluentNiceSelect();
6096    mecFluentWrapperFullScreenWidth();
6097    jQuery(window).on('load', mecFluentWrapperFullScreenWidth);
6098    jQuery(window).on('load', mecFluentCurrentTimePosition);
6099    jQuery(window).on('resize', mecFluentWrapperFullScreenWidth);
6100    jQuery(window).on('resize', mecFluentTimeTableUI);
6101    mecFluentSliderUI();
6102    mecFluentFullCalendar();
6103    jQuery(window).on('resize', mecFluentFullCalendar);
6104    mecFluentCustomScrollbar();
6105});
6106
6107function mecFluentSinglePage() {
6108    if (jQuery().niceScroll) {
6109        jQuery('.mec-single-fluent-body .featherlight .mec-single-fluent-wrap').niceScroll({
6110            horizrailenabled: false,
6111            cursorcolor: '#C1C5C9',
6112            cursorwidth: '4px',
6113            cursorborderradius: '4px',
6114            cursorborder: 'none',
6115            railoffset: {
6116                left: 10,
6117            }
6118        });
6119    }
6120}
6121
6122function mecFluentFullCalendar() {
6123    if (jQuery('.mec-fluent-wrap.mec-skin-full-calendar-container').length > 0) {
6124        var widowWidth = jQuery(window).innerWidth();
6125        if (widowWidth <= 767) {
6126            jQuery('.mec-fluent-wrap.mec-skin-full-calendar-container .mec-skin-monthly-view-month-navigator-container, .mec-fluent-wrap.mec-skin-full-calendar-container .mec-calendar-a-month, .mec-fluent-wrap.mec-skin-full-calendar-container .mec-yearly-title-sec').css({
6127                paddingTop: jQuery('.mec-fluent-wrap.mec-skin-full-calendar-container').children('.mec-totalcal-box').height() + 40,
6128            });
6129        } else {
6130            jQuery('.mec-fluent-wrap.mec-skin-full-calendar-container .mec-skin-monthly-view-month-navigator-container, .mec-fluent-wrap.mec-skin-full-calendar-container .mec-calendar-a-month, .mec-fluent-wrap.mec-skin-full-calendar-container .mec-yearly-title-sec').css({
6131                paddingTop: 32,
6132            });
6133        }
6134    }
6135}
6136
6137function mecFluentSmartFilterIcon() {
6138    var filterContent = jQuery(this).closest('.mec-filter-content');
6139    var hasValue = false;
6140    if (jQuery(this).closest('.mec-date-search').length > 0) {
6141        var yearValue = jQuery(this).closest('.mec-date-search').find('select[id*="mec_sf_year"]').val();
6142        var monthValue = jQuery(this).closest('.mec-date-search').find('select[id*="mec_sf_month"]').val();
6143        if ((yearValue == 'none' && monthValue == 'none') || (yearValue != 'none' && monthValue != 'none')) {
6144            filterContent.hide();
6145            if ((yearValue != 'none' && monthValue != 'none')) {
6146                hasValue = true;
6147            } else {
6148                hasValue = false;
6149            }
6150        } else {
6151            return false;
6152        }
6153    } else {
6154        filterContent.hide();
6155    }
6156    if (!hasValue) {
6157        filterContent.find(':not(.mec-date-search)').find('select, input:not([type="hidden"])').each(function () {
6158            if (jQuery(this).val()) {
6159                hasValue = true;
6160                return false;
6161            }
6162        });
6163    }
6164    if (hasValue) {
6165        jQuery(this).closest('.mec-search-form').find('.mec-filter-icon').addClass('active');
6166    } else {
6167        jQuery(this).closest('.mec-search-form').find('.mec-filter-icon').removeClass('active');
6168    }
6169}
6170
6171function mecFluentMoreViewsContent() {
6172    jQuery(this).find('.mec-fluent-more-views-content').toggleClass('active');
6173}
6174
6175function mecFluentWrapperFullScreenWidth() {
6176    if (jQuery('.mec-fluent-bg-wrap').length > 0) {
6177        jQuery('.mec-fluent-bg-wrap').css({
6178            maxWidth: jQuery('body').width() + 8,
6179        });
6180    }
6181}
6182
6183function mecFluentUI() {
6184    if (typeof mecdata != 'undefined' && typeof mecdata.enableSingleFluent != 'undefined' && mecdata.enableSingleFluent) {
6185        jQuery('body').addClass('mec-single-fluent-body');
6186    }
6187    // Set filter content position
6188    jQuery(window).on('load resize', function () {
6189        if (jQuery('.mec-filter-content').length > 0) {
6190            jQuery('.mec-filter-content').css({
6191                right: -(jQuery('.mec-calendar').width() - jQuery('.mec-search-form.mec-totalcal-box').position().left - jQuery('.mec-search-form.mec-totalcal-box').width() + 40),
6192                left: -jQuery('.mec-search-form.mec-totalcal-box').position().left + 40,
6193            });
6194        }
6195        if (jQuery('.mec-filter-icon').is(':visible')) {
6196            var filterIconLeftPosition = parseInt(jQuery('.mec-search-form.mec-totalcal-box').position().left) + parseInt(jQuery('.mec-filter-icon').position().left) - 25;
6197            jQuery('head').find('style[title="mecFluentFilterContentStyle"]').remove().end().append('<style title="mecFluentFilterContentStyle">.mec-fluent-wrap .mec-filter-content:before{left: ' + filterIconLeftPosition + 'px;}.mec-fluent-wrap .mec-filter-content:after{left: ' + (filterIconLeftPosition + 1) + 'px;}</style>');
6198        }
6199    });
6200    // Hide empty filter content
6201    if (jQuery('.mec-filter-content').is(':empty')) {
6202        jQuery('.mec-filter-icon').hide();
6203    }
6204    // Prevend Default For Event Share Icon
6205    jQuery(document).on('click keydown', '.mec-event-share-icon', function (e) {
6206        if (e.type === 'keydown' && e.key !== 'Enter' && e.key !== ' ') return;
6207        e.preventDefault();
6208
6209        var $wrap = jQuery(this).closest('.mec-event-sharing-wrap');
6210        var isOpen = $wrap.hasClass('active');
6211
6212        // Close all other share popups
6213        jQuery('.mec-event-sharing-wrap.active').not($wrap).removeClass('active').find('.mec-event-share-icon').attr('aria-expanded', 'false');
6214
6215        // Toggle current
6216        $wrap.toggleClass('active');
6217        jQuery(this).attr('aria-expanded', !isOpen);
6218    });
6219
6220    // Close share popup on Escape
6221    jQuery(document).on('keydown', '.mec-event-sharing-wrap.active .mec-event-share-icon', function (e) {
6222        if (e.key === 'Escape') {
6223            var $wrap = jQuery(this).closest('.mec-event-sharing-wrap');
6224            $wrap.removeClass('active');
6225            jQuery(this).attr('aria-expanded', 'false').focus();
6226        }
6227    });
6228
6229    // Close share popup when clicking outside
6230    jQuery(document).on('click', function (e) {
6231        if (!jQuery(e.target).closest('.mec-event-sharing-wrap').length) {
6232            jQuery('.mec-event-sharing-wrap.active').removeClass('active').find('.mec-event-share-icon').attr('aria-expanded', 'false');
6233        }
6234    });
6235}
6236
6237function mecFluentCurrentTimePosition() {
6238    if (jQuery('.mec-fluent-wrap').length > 0) {
6239        jQuery('.mec-fluent-current-time').each(function () {
6240            var currentTimeMinutes = jQuery(this).data('time');
6241            var height = jQuery(this).closest('.mec-fluent-current-time-cell').height();
6242            jQuery(this).css({
6243                top: (currentTimeMinutes / 60) * height,
6244            });
6245        });
6246    }
6247}
6248
6249function mecFluentNiceSelect() {
6250    if (jQuery('.mec-fluent-wrap').length < 0) {
6251        return;
6252    }
6253
6254    if (jQuery().niceSelect) {
6255        jQuery('.mec-fluent-wrap').find('.mec-filter-content').find('select').niceSelect();
6256    }
6257}
6258
6259function mecFluentCustomScrollbar(y) {
6260
6261    jQuery(document).trigger('mec_custom_scrollbar_init', [y]);
6262
6263    if (jQuery('.mec-fluent-wrap').length < 0) {
6264        return;
6265    }
6266
6267    if (jQuery().niceScroll) {
6268        jQuery('.mec-custom-scrollbar').niceScroll({
6269            cursorcolor: '#C7EBFB',
6270            cursorwidth: '4px',
6271            cursorborderradius: '4px',
6272            cursorborder: 'none',
6273            railoffset: {
6274                left: -2,
6275            }
6276        });
6277        jQuery('.mec-custom-scrollbar').getNiceScroll().resize();
6278        jQuery('.mec-custom-scrollbar').each(function () {
6279            if (jQuery(this).find('.mec-fluent-current-time-cell').length > 0) {
6280                var parentTopOffset = jQuery(this).offset().top;
6281                var currentTimeCellOffset = jQuery(this).find('.mec-fluent-current-time-cell').offset().top;
6282                jQuery(this).getNiceScroll(0).doScrollTop(currentTimeCellOffset - parentTopOffset - 16, 120);
6283                jQuery(this).on('scroll', function () {
6284                    if (jQuery(this).getNiceScroll(0).scroll.y != 0) {
6285                        jQuery(this).addClass('mec-scrolling');
6286                    } else {
6287                        jQuery(this).removeClass('mec-scrolling');
6288                    }
6289                });
6290            }
6291            if (typeof y != 'undefined') {
6292                if (jQuery(this).closest('.mec-skin-list-wrap').length > 0 || jQuery(this).closest('.mec-skin-grid-wrap').length > 0) {
6293                    jQuery(this).getNiceScroll(0).doScrollTop(0, 120);
6294                }
6295            }
6296        });
6297    }
6298}
6299
6300function mecFluentTimeTableUI() {
6301    jQuery('.mec-fluent-wrap.mec-timetable-wrap .mec-cell').css('min-height', 0);
6302    var maxHeight = Math.max.apply(null, jQuery('.mec-fluent-wrap.mec-timetable-wrap .mec-cell').map(function () {
6303        return jQuery(this).height();
6304    }).get());
6305    maxHeight = maxHeight > 87 ? maxHeight : 87;
6306    jQuery('.mec-fluent-wrap.mec-timetable-wrap .mec-cell').css('min-height', maxHeight + 2);
6307}
6308
6309function mecFluentSliderUI() {
6310    jQuery(window).on('load', function () {
6311        if (typeof mecdata === 'undefined') return;
6312
6313        jQuery('.mec-fluent-wrap.mec-skin-slider-container .owl-next').prepend('<span>' + mecdata.next + '</span>');
6314        jQuery('.mec-fluent-wrap.mec-skin-slider-container .owl-prev').append('<span>' + mecdata.prev + '</span>');
6315    });
6316}
6317
6318function mecFluentToggleFilterContent(e) {
6319    e.preventDefault();
6320    if (jQuery('.mec-filter-content').is(':visible')) {
6321        jQuery('.mec-filter-content').css({
6322            display: 'none',
6323        });
6324    } else {
6325        const displayValue = jQuery(window).width() <= 790 ? 'block' : 'flex';
6326        jQuery('.mec-filter-content').css({
6327            display: displayValue,
6328        });
6329    }
6330}
6331
6332function mecFluentToggoleDisplayValueFilterContent() {
6333    const displayValue = jQuery(window).width() <= 767 ? 'block' : 'flex';
6334    if (jQuery('.mec-filter-content').is(':visible')) {
6335        jQuery('.mec-filter-content').css({
6336            display: displayValue,
6337        });
6338    }
6339}
6340
6341function mecFluentToggleMoreEvents(e) {
6342    e.preventDefault();
6343    const moreEventsWrap = jQuery(this).siblings('.mec-more-events-wrap');
6344    const moreEvents = moreEventsWrap.children('.mec-more-events');
6345    jQuery('.mec-more-events-wrap').removeClass('active');
6346    moreEventsWrap.addClass('active');
6347    jQuery('.mec-more-events-wrap:not(.active)').hide();
6348    if (moreEventsWrap.is(':visible')) {
6349        moreEventsWrap.hide();
6350    } else {
6351        topElement = moreEventsWrap.closest('.mec-more-events-inner-controller').length > 0 ? moreEventsWrap.closest('.mec-more-events-inner-controller') : moreEventsWrap.closest('.mec-more-events-controller');
6352        moreEventsWrap.show().css({
6353            top: topElement.offset().top - window.scrollY,
6354            left: moreEventsWrap.closest('.mec-more-events-controller').offset().left,
6355            width: moreEventsWrap.closest('.mec-more-events-controller').width(),
6356        });
6357        if (moreEventsWrap.width() > 400) {
6358            moreEvents.css({
6359                left: (moreEventsWrap.width() / 2) - (moreEvents.width() / 2),
6360                width: 400,
6361            });
6362        } else {
6363            moreEvents.css({
6364                width: moreEventsWrap.width(),
6365                left: 0,
6366            });
6367        }
6368    }
6369}
6370
6371function mecFluentOutsideEvent(e) {
6372    if (!jQuery(e.target).is('.mec-more-events-icon') && !jQuery(e.target).closest('.mec-more-events-wrap').length) {
6373        jQuery('.mec-more-events-wrap').hide();
6374    }
6375    if (!jQuery(e.target).is('.mec-filter-icon') && !jQuery(e.target).closest('.mec-filter-content').length) {
6376        jQuery('.mec-filter-content').hide();
6377    }
6378    if (!jQuery(e.target).is('.mec-fluent-more-views-icon') && !jQuery(e.target).closest('.mec-fluent-more-views-content').length) {
6379        jQuery('.mec-fluent-more-views-content').removeClass('active');
6380    }
6381}
6382
6383function mecFluentYearlyCalendar() {
6384    const monthNum = jQuery(this).data('month');
6385    const monthName = jQuery(this).find('.mec-calendar-table-title').text();
6386    jQuery('.mec-fluent-wrap').find('.mec-yearly-calendar').removeClass('active');
6387    jQuery(this).addClass('active')
6388        .closest('.mec-year-container')
6389        .find('.mec-yearly-agenda-sec-title span').text(monthName).end()
6390        .find('.mec-events-agenda').addClass('mec-util-hidden').end()
6391        .find('.mec-events-agenda[data-month=' + monthNum + ']').removeClass('mec-util-hidden');
6392    mecFluentCustomScrollbar();
6393}
6394
6395function mecFluentYearlyUI(eventID, yearID) {
6396    var fluentWrap = jQuery('#mec_skin_' + eventID + '.mec-fluent-wrap');
6397    if (fluentWrap.length < 0) {
6398        return;
6399    }
6400    var monthNum = fluentWrap.find('.mec-year-container[data-year-id=' + yearID + ']').find('.mec-events-agenda:not(.mec-util-hidden)').data('month');
6401    var activeMonth = fluentWrap.find('.mec-year-container[data-year-id=' + yearID + ']').find('.mec-yearly-calendar[data-month=' + monthNum + ']');
6402    var activeMonthName = activeMonth.find('.mec-calendar-table-title').text();
6403    activeMonth.addClass('active');
6404}
6405
6406// MEC LIST VIEW Fluent PLUGIN
6407(function ($) {
6408    $.fn.mecListViewFluent = function (options) {
6409        var active_month;
6410        var active_year;
6411
6412        // Default Options
6413        var settings = $.extend({
6414            // These are the defaults.
6415            today: null,
6416            id: 0,
6417            events_label: 'Events',
6418            event_label: 'Event',
6419            month_navigator: 0,
6420            atts: '',
6421            active_month: {},
6422            next_month: {},
6423            sf: {},
6424            ajax_url: '',
6425        }, options);
6426
6427        mecFluentCustomScrollbar();
6428
6429        initLoadMore('#mec_list_view_month_' + settings.id + '_' + settings.month_i
6429d);
6430
6431        function initLoadMore(monthID) {
6432            $(monthID).off().on('click', '.mec-load-more-button', function () {
6433                loadMore(this);
6434            });
6435        }
6436
6437        function loadMore(This) {
6438            // Add loading Class
6439            var currentLoadMore = $(This);
6440            currentLoadMore.addClass("mec-load-more-loading");
6441            var endDate = currentLoadMore.data('end-date');
6442            var maximumDate = currentLoadMore.data('maximum-date');
6443            var nextOffset = currentLoadMore.data('next-offset');
6444            var year = currentLoadMore.data('year');
6445            var month = currentLoadMore.data('month');
6446
6447            $.ajax({
6448                url: settings.ajax_url,
6449                data: "action=mec_list_load_more&mec_year=" + year + "&mec_month=" + month + "&mec_maximum_date=" + maximumDate + "&mec_start_date=" + endDate + "&mec_offset=" + nextOffset + "&" + settings.atts + "&current_month_divider=0&apply_sf_date=0",
6450                dataType: "json",
6451                type: "post",
6452                success: function (response) {
6453                    currentLoadMore.parent().remove();
6454                    if (response.count != '0') {
6455                        // Append Items
6456                        $('#mec_list_view_month_' + settings.id + '_' + response.current_month.id).append(response.month);
6457
6458                        // Single Event Method
6459                        if (settings.sed_method != '0') {
6460                            sed();
6461                        }
6462
6463                        mecFluentCustomScrollbar();
6464                        initLoadMore('#mec_list_view_month_' + settings.id + '_' + response.current_month.id);
6465                    }
6466
6467                    $(document).trigger('mec_load_more_init', ['list', settings]);
6468                },
6469                error: function () { }
6470            });
6471        }
6472
6473        // Initialize Month Navigator
6474        if (settings.month_navigator) initMonthNavigator();
6475
6476        // Load Next Month in background
6477        setMonth(settings.next_month.year, settings.next_month.month, true);
6478
6479        var initMonth;
6480        var initYear;
6481        active_month = initMonth = settings.active_month.month;
6482        active_year = initYear = settings.active_month.year;
6483
6484        // Search Widget
6485        if (settings.sf.container !== '') {
6486            sf = $(settings.sf.container).mecSearchForm({
6487                id: settings.id,
6488                refine: settings.sf.refine,
6489                ajax_url: settings.ajax_url,
6490                start_date: settings.start_date,
6491                atts: settings.atts,
6492                callback: function (atts) {
6493                    settings.atts = atts;
6494                    search(active_year, active_month);
6495                }
6496            });
6497
6498            $(settings.sf.container).addClass('mec-skin-search-init');
6499        }
6500
6501        // Single Event Method
6502        if (settings.sed_method != '0') {
6503            sed();
6504        }
6505
6506        function initMonthNavigator() {
6507            $("#mec_skin_" + settings.id + " .mec-load-month").off().on("click", function () {
6508                var year = $(this).data("mec-year");
6509                var month = $(this).data("mec-month");
6510                setMonth(year, month, false, true);
6511            });
6512        }
6513
6514        function parseQuery(queryString) {
6515            var query = {};
6516            var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');
6517            for (var i = 0; i < pairs.length; i++) {
6518                var pair = pairs[i].split('=');
6519                query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
6520            }
6521            return query;
6522        }
6523
6524        function updateQueryStringParameter(uri, key, val) {
6525            return uri
6526                .replace(RegExp("([?&]" + key + "(?=[=&#]|$)[^#&]*|(?=#|$))"), "&" + key + "=" + encodeURIComponent(val));
6527        }
6528
6529        function search(year, month) {
6530            // Add Loading Class
6531            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6532            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
6533
6534            var ObjAtts = parseQuery(settings.atts);
6535            if (!(ObjAtts['sf[month'] || ObjAtts['sf[year]'])) {
6536                settings.atts = updateQueryStringParameter(settings.atts.trim(), 'sf[year]', initYear);
6537                settings.atts = updateQueryStringParameter(settings.atts.trim(), 'sf[month]', initMonth);
6538            }
6539
6540            $.ajax({
6541                url: settings.ajax_url,
6542                data: "action=mec_list_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
6543                dataType: "json",
6544                type: "post",
6545                success: function (response) {
6546                    active_month = response.current_month.month;
6547                    active_year = response.current_month.year;
6548
6549                    // Append Month
6550                    $("#mec_skin_events_" + settings.id).html('<div class="mec-month-container" id="mec_list_view_month_' + settings.id + '_' + response.current_month.id + '" data-month-id="' + response.current_month.id + '">' + response.month + '</div>');
6551
6552                    // Append Month Navigator
6553                    $("#mec_skin_" + settings.id + " .mec-skin-list-view-month-navigator-container").html('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
6554
6555                    // Re-initialize Month Navigator
6556                    initMonthNavigator();
6557
6558                    // Toggle Month
6559                    toggleMonth(response.current_month.id);
6560
6561                    initLoadMore('#mec_list_view_month_' + settings.id + '_' + response.current_month.id);
6562
6563                    // Remove loading Class
6564                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
6565
6566                    mecFluentCustomScrollbar();
6567
6568                    $(document).trigger('mec_search_process_end', { r: response, settings_id: settings.id });
6569
6570                    $(document).trigger('mec_search_init', ['list', settings, response]);
6571                },
6572                error: function () { }
6573            });
6574        }
6575
6576        function setMonth(year, month, do_in_background, navigator_click) {
6577            if (typeof do_in_background === "undefined") do_in_background = false;
6578            navigator_click = navigator_click || false;
6579            var month_id = year + "" + month;
6580
6581            if (!do_in_background) {
6582                active_month = month;
6583                active_year = year;
6584            }
6585
6586            // Month exists so we just show it
6587            if ($("#mec_list_view_month_" + settings.id + "_" + month_id).length) {
6588                // Toggle Month
6589                toggleMonth(month_id);
6590                mecFluentCustomScrollbar(0);
6591            } else {
6592                if (!do_in_background) {
6593                    // Add Loading Class
6594                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6595                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
6596                }
6597
6598                $.ajax({
6599                    url: settings.ajax_url,
6600                    data: "action=mec_list_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
6601                    dataType: "json",
6602                    type: "post",
6603                    success: function (response) {
6604                        // Append Month
6605                        $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_list_view_month_' + settings.id + '_' + response.current_month.id + '" data-month-id="' + response.current_month.id + '">' + response.month + '</div>');
6606
6607                        // Append Month Navigator
6608                        $("#mec_skin_" + settings.id + " .mec-skin-list-view-month-navigator-container").append('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
6609
6610                        // Re-initialize Month Navigator
6611                        initMonthNavigator();
6612                        initLoadMore('#mec_list_view_month_' + settings.id + '_' + response.current_month.id);
6613
6614                        if (!do_in_background) {
6615                            // Toggle Month
6616                            toggleMonth(response.current_month.id);
6617
6618                            // Remove loading Class
6619                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
6620
6621
6622                            // Set Month Filter values in search widget
6623                            $("#mec_sf_month_" + settings.id).val(month);
6624                            $("#mec_sf_year_" + settings.id).val(year);
6625                        } else {
6626                            $("#mec_list_view_month_" + settings.id + "_" + response.current_month.id).hide();
6627                            $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
6628                        }
6629                        if (typeof custom_month !== undefined) var custom_month;
6630                        if (typeof custom_month != undefined) {
6631                            if (custom_month == 'true') {
6632                                $(".mec-month-container .mec-calendar-day").removeClass('mec-has-event');
6633                                $(".mec-month-container .mec-calendar-day").removeClass('mec-selected-day');
6634                                $('.mec-calendar-day').off('click');
6635                            }
6636                        }
6637                        if (!do_in_background) {
6638                            mecFluentCustomScrollbar(0);
6639                        }
6640
6641                        if (jQuery().niceSelect) jQuery('.mec-fluent-wrap').find('.mec-filter-content').find('select').niceSelect();
6642
6643                        $(document).trigger('mec_set_month_process_end', { r: response, settings_id: settings.id });
6644                    },
6645                    error: function () { }
6646                });
6647            }
6648        }
6649
6650        function toggleMonth(month_id) {
6651            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
6652            var active_day = $("#mec_list_view_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
6653
6654            if (active_day <= 9) active_day = "0" + active_day;
6655
6656            // Toggle Month Navigator
6657            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
6658            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
6659
6660            // Toggle Month
6661            $("#mec_skin_" + settings.id + " .mec-month-container").hide();
6662            $("#mec_list_view_month_" + settings.id + "_" + month_id).show();
6663
6664            // Add selected class
6665            $("#mec_skin_" + settings.id + " .mec-month-container").removeClass("mec-month-container-selected");
6666            $("#mec_list_view_month_" + settings.id + "_" + month_id).addClass("mec-month-container-selected");
6667
6668            jQuery(document).trigger('mec_toggle_month', [settings, month_i
6668d]);
6669        }
6670
6671        var sf;
6672
6673        function sed() {
6674            // Single Event Display
6675            $(".mec-skin-list-wrap#mec_skin_" + settings.id).off('click').on('click', '[data-event-id]', function (e) {
6676                e.preventDefault();
6677                var href = $(this).attr('href');
6678
6679                var id = $(this).data('event-id');
6680                var occurrence = get_parameter_by_name('occurrence', href);
6681                var time = get_parameter_by_name('time', href);
6682
6683                if ('undefined' == typeof id) {
6684                    return;
6685                }
6686
6687                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
6688            });
6689        }
6690    };
6691}(jQuery));
6692
6693// MEC Grid VIEW Fluent PLUGIN
6694(function ($) {
6695    $.fn.mecGridViewFluent = function (options) {
6696        var active_month;
6697        var active_year;
6698
6699        // Default Options
6700        var settings = $.extend({
6701            // These are the defaults.
6702            today: null,
6703            id: 0,
6704            events_label: 'Events',
6705            event_label: 'Event',
6706            month_navigator: 0,
6707            atts: '',
6708            active_month: {},
6709            next_month: {},
6710            sf: {},
6711            ajax_url: '',
6712        }, options);
6713
6714        initLoadMore('#mec_grid_view_month_' + settings.id + '_' + settings.month_id);
6715
6716        function initLoadMore(monthID) {
6717            $(monthID).off().on('click', '.mec-load-more-button', function () {
6718                loadMore(this);
6719            });
6720        }
6721
6722        function loadMore(This) {
6723            // Add loading Class
6724            var currentLoadMore = $(This);
6725            currentLoadMore.addClass("mec-load-more-loading");
6726            var endDate = currentLoadMore.data('end-date');
6727            var maximumDate = currentLoadMore.data('maximum-date');
6728            var nextOffset = currentLoadMore.data('next-offset');
6729            var year = currentLoadMore.data('year');
6730            var month = currentLoadMore.data('month');
6731
6732            $.ajax({
6733                url: settings.ajax_url,
6734                data: "action=mec_grid_load_more&mec_year=" + year + "&mec_month=" + month + "&mec_maximum_date=" + maximumDate + "&mec_start_date=" + endDate + "&mec_offset=" + nextOffset + "&" + settings.atts + "&current_month_divider=0&apply_sf_date=0",
6735                dataType: "json",
6736                type: "post",
6737                success: function (response) {
6738                    currentLoadMore.parent().remove();
6739                    if (response.count != '0') {
6740                        // Append Items
6741                        $('#mec_grid_view_month_' + settings.id + '_' + response.current_month.id).append(response.month);
6742
6743                        // Single Event Method
6744                        if (settings.sed_method != '0') {
6745                            sed();
6746                        }
6747
6748                        mecFluentCustomScrollbar();
6749                        initLoadMore('#mec_grid_view_month_' + settings.id + '_' + response.current_month.id);
6750                    }
6751
6752                    $(document).trigger('mec_load_more_init', ['grid', settings]);
6753                },
6754                error: function () { }
6755            });
6756        }
6757
6758        // Initialize Month Navigator
6759        if (settings.month_navigator) initMonthNavigator();
6760
6761        // Load Next Month in background
6762        setMonth(settings.next_month.year, settings.next_month.month, true);
6763
6764        var initMonth;
6765        var initYear;
6766        active_month = initMonth = settings.active_month.month;
6767        active_year = initYear = settings.active_month.year;
6768
6769        // Search Widget
6770        if (settings.sf.container !== '') {
6771            sf = $(settings.sf.container).mecSearchForm({
6772                id: settings.id,
6773                refine: settings.sf.refine,
6774                ajax_url: settings.ajax_url,
6775                start_date: settings.start_date,
6776                atts: settings.atts,
6777                callback: function (atts) {
6778                    settings.atts = atts;
6779                    search(active_year, active_month);
6780                }
6781            });
6782
6783            $(settings.sf.container).addClass('mec-skin-search-init');
6784        }
6785
6786        // Single Event Method
6787        if (settings.sed_method != '0') {
6788            sed();
6789        }
6790
6791        function initMonthNavigator() {
6792            $("#mec_skin_" + settings.id + " .mec-load-month").off().on("click", function () {
6793                var year = $(this).data("mec-year");
6794                var month = $(this).data("mec-month");
6795                setMonth(year, month, false, true);
6796            });
6797        }
6798
6799        function parseQuery(queryString) {
6800            var query = {};
6801            var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');
6802            for (var i = 0; i < pairs.length; i++) {
6803                var pair = pairs[i].split('=');
6804                query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
6805            }
6806            return query;
6807        }
6808
6809        function updateQueryStringParameter(uri, key, val) {
6810            return uri
6811                .replace(RegExp("([?&]" + key + "(?=[=&#]|$)[^#&]*|(?=#|$))"), "&" + key + "=" + encodeURIComponent(val));
6812        }
6813
6814        function search(year, month) {
6815            // Add Loading Class
6816            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6817            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
6818
6819            var ObjAtts = parseQuery(settings.atts);
6820            if (!(ObjAtts['sf[month'] || ObjAtts['sf[year]'])) {
6821                settings.atts = updateQueryStringParameter(settings.atts.trim(), 'sf[year]', initYear);
6822                settings.atts = updateQueryStringParameter(settings.atts.trim(), 'sf[month]', initMonth);
6823            }
6824
6825            $.ajax({
6826                url: settings.ajax_url,
6827                data: "action=mec_grid_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
6828                dataType: "json",
6829                type: "post",
6830                success: function (response) {
6831                    active_month = response.current_month.month;
6832                    active_year = response.current_month.year;
6833
6834                    // Append Month
6835                    $("#mec_skin_events_" + settings.id).html('<div class="mec-month-container" id="mec_grid_view_month_' + settings.id + '_' + response.current_month.id + '" data-month-id="' + response.current_month.id + '">' + response.month + '</div>');
6836
6837                    // Append Month Navigator
6838                    $("#mec_skin_" + settings.id + " .mec-skin-grid-view-month-navigator-container").html('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
6839
6840                    // Re-initialize Month Navigator
6841                    initMonthNavigator();
6842
6843                    // Toggle Month
6844                    toggleMonth(response.current_month.id);
6845
6846                    initLoadMore('#mec_grid_view_month_' + settings.id + '_' + response.current_month.id);
6847
6848                    // Remove loading Class
6849                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
6850
6851                    mecFluentCustomScrollbar();
6852
6853                    $(document).trigger('mec_search_init', ['grid', settings, response]);
6854                },
6855                error: function () { }
6856            });
6857        }
6858
6859        function setMonth(year, month, do_in_background, navigator_click) {
6860            if (typeof do_in_background === "undefined") do_in_background = false;
6861            navigator_click = navigator_click || false;
6862            var month_id = year + "" + month;
6863
6864            if (!do_in_background) {
6865                active_month = month;
6866                active_year = year;
6867            }
6868
6869            // Month exists so we just show it
6870            if ($("#mec_grid_view_month_" + settings.id + "_" + month_id).length) {
6871                // Toggle Month
6872                toggleMonth(month_id);
6873                mecFluentCustomScrollbar();
6874            } else {
6875                if (!do_in_background) {
6876                    // Add Loading Class
6877                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6878                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
6879                }
6880
6881                $.ajax({
6882                    url: settings.ajax_url,
6883                    data: "action=mec_grid_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
6884                    dataType: "json",
6885                    type: "post",
6886                    success: function (response) {
6887                        // Append Month
6888                        $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_grid_view_month_' + settings.id + '_' + response.current_month.id + '" data-month-id="' + response.current_month.id + '">' + response.month + '</div>');
6889
6890                        // Append Month Navigator
6891                        $("#mec_skin_" + settings.id + " .mec-skin-grid-view-month-navigator-container").append('<div class="mec-month-navigator" id="mec_month_navigator_' + settings.id + '_' + response.current_month.id + '">' + response.navigator + '</div>');
6892
6893                        // Re-initialize Month Navigator
6894                        initMonthNavigator();
6895                        initLoadMore('#mec_grid_view_month_' + settings.id + '_' + response.current_month.id);
6896
6897                        if (!do_in_background) {
6898                            // Toggle Month
6899                            toggleMonth(response.current_month.id);
6900
6901                            // Remove loading Class
6902                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
6903
6904
6905                            // Set Month Filter values in search widget
6906                            $("#mec_sf_month_" + settings.id).val(month);
6907                            $("#mec_sf_year_" + settings.id).val(year);
6908                        } else {
6909                            $("#mec_grid_view_month_" + settings.id + "_" + response.current_month.id).hide();
6910                            $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
6911                        }
6912                        if (typeof custom_month !== undefined) var custom_month;
6913                        if (typeof custom_month != undefined) {
6914                            if (custom_month == 'true') {
6915                                $(".mec-month-container .mec-calendar-day").removeClass('mec-has-event');
6916                                $(".mec-month-container .mec-calendar-day").removeClass('mec-selected-day');
6917                                $('.mec-calendar-day').off('click');
6918                            }
6919                        }
6920                        if (!do_in_background) {
6921                            mecFluentCustomScrollbar();
6922                        }
6923                    },
6924                    error: function () { }
6925                });
6926            }
6927        }
6928
6929        function toggleMonth(month_id) {
6930            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
6931            var active_day = $("#mec_grid_view_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
6932
6933            if (active_day <= 9) active_day = "0" + active_day;
6934
6935            // Toggle Month Navigator
6936            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
6937            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
6938
6939            // Toggle Month
6940            $("#mec_skin_" + settings.id + " .mec-month-container").hide();
6941            $("#mec_grid_view_month_" + settings.id + "_" + month_id).show();
6942
6943            // Add selected class
6944            $("#mec_skin_" + settings.id + " .mec-month-container").removeClass("mec-month-container-selected");
6945            $("#mec_grid_view_month_" + settings.id + "_" + month_id).addClass("mec-month-container-selected");
6946
6947            jQuery(document).trigger('mec_toggle_month', [settings, month_id]);
6948        }
6949
6950        var sf;
6951
6952        function sed() {
6953            // Single Event Display
6954            $(".mec-skin-grid-wrap#mec_skin_" + settings.id).off('click').on('click', '[data-event-id]', function (e) {
6955                e.preventDefault();
6956                var href = $(this).attr('href');
6957
6958                var id = $(this).data('event-id');
6959                var occurrence = get_parameter_by_name('occurrence', href);
6960                var time = get_parameter_by_name('time', href);
6961
6962                if ('undefined' == typeof id) {
6963                    return;
6964                }
6965
6966                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
6967            });
6968        }
6969    };
6970}(jQuery));
6971
6972// MEC Booking Calendar
6973(function ($) {
6974    $.fn.mecBookingCalendar = function (options) {
6975        var active_month;
6976        var active_year;
6977
6978        // Default Options
6979        var settings = $.extend({
6980            // These are the defaults.
6981            active_month: {},
6982            next_month: {},
6983            ajax_url: '',
6984            event_id: '',
6985            selected_datetime: '',
6986        }, options);
6987
6988        // Initialize Month Navigator
6989        initMonthNavigator();
6990
6991        active_month = settings.active_month.month;
6992        active_year = settings.active_month.year;
6993
6994        // Set onclick Listeners
6995        setListeners();
6996
6997        function initMonthNavigator() {
6998            // Add onclick event
6999            $("#mec_booking_calendar_" + settings.id + " .mec-load-month").off('click').on('click', function () {
7000                var year = $(this).data('mec-year');
7001                var month = $(this).data('mec-month');
7002
7003                setMonth(year, month);
7004            });
7005        }
7006
7007        function setMonth(year, month) {
7008            active_month = month;
7009            active_year = year;
7010
7011            var $modal = $('.mec-modal-result');
7012
7013            // Add Loading Class
7014            if ($modal.length === 0) $('.mec-wrap').append('<div class="mec-modal-result"></div>');
7015            $modal.addClass('mec-month-navigator-loading');
7016
7017            $.ajax(
7018                {
7019                    url: settings.ajax_url,
7020                    data: "action=mec_booking_calendar_load_month&event_id=" + settings.event_id + "&uniqueid=" + settings.id + "&year=" + year + "&month=" + month,
7021                    dataType: "json",
7022                    type: "post",
7023                    success: function (response) {
7024                        const $month_wrapper = $('#mec_booking_calendar_wrapper' + settings.id + ' .mec-select-date-calendar-container');
7025
7026                        // HTML
7027                        $month_wrapper.html(response.html);
7028
7029                        // Hide Message
7030                        $('#mec_book_form' + settings.id + ' .mec-ticket-unavailable-spots').addClass('mec-util-hidden');
7031
7032                        // Empty the Date
7033                        $('#mec_book_form_date' + settings.id).val('').trigger('change');
7034
7035                        // Remove loading Class
7036                        $modal.removeClass("mec-month-navigator-loading");
7037
7038                        setTimeout(function () {
7039                            $month_wrapper.find($('.mec-booking-calendar-date')).first().trigger('click');
7040                        }, 200);
7041                    },
7042                    error: function () {
7043                        // Remove loading Class
7044                        $modal.removeClass("mec-month-navigator-loading");
7045                    }
7046                });
7047        }
7048
7049        function setListeners() {
7050            // Add the onclick event (delegated so cloned sidebar items also work)
7051            $("#mec_booking_calendar_" + settings.id).off('click', '.mec-booking-calendar-date').on('click', '.mec-booking-calendar-date', function (e) {
7052                e.preventDefault();
7053
7054                // Activate
7055                $("#mec_booking_calendar_" + settings.id + " .mec-booking-calendar-date").removeClass('mec-active');
7056                $("#mec_booking_calendar_" + settings.id + " .mec-calendar-day").removeClass('mec-wrap-active');
7057                $(this).addClass('mec-active');
7058                $(this).parents('.mec-calendar-day').addClass('mec-wrap-active');
7059
7060                // Set Data
7061                var timestamp = $(this).data('timestamp');
7062                $('#mec_book_form_date' + settings.id).val(timestamp).trigger('change');
7063
7064                // Set Formatted Date
7065                var formatted_date = $(this).data('formatted-date');
7066                $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-formatted-date").html(formatted_date);
7067
7068                // Update chosen time message
7069                var $chosenMsg = $(this).closest(".mec-booking-calendar-container").find(".mec-choosen-time-message");
7070                $chosenMsg.removeClass("disable");
7071                $chosenMsg.find(".mec-choosen-time").empty().append($(this).data('formatted-date'));
7072            });
7073
7074            // Add the onclick event on calendar date
7075            $("#mec_booking_calendar_" + settings.id + " .mec-has-one-repeat-in-day").off('click').on('click', function (e) {
7076                e.preventDefault();
7077
7078                var mec_date_value = $(this).attr('data-timestamp');
7079
7080                // Activate
7081                $("#mec_booking_calendar_" + settings.id + " .mec-has-one-repeat-in-day").removeClass('mec-active');
7082                $("#mec_booking_calendar_" + settings.id + " [data-timestamp=\"" + mec_date_value + "\"]").addClass('mec-active');
7083
7084                // Set Data
7085                var timestamp = $(this).data('timestamp');
7086                $('#mec_book_form_date' + settings.id).val(timestamp).trigger('change');
7087
7088                // Set Formatted Date
7089                var formatted_date = $(this).data('formatted-date');
7090                $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-formatted-date").html(formatted_date);
7091
7092                // Update chosen time message
7093                var $chosenMsg = $(this).closest(".mec-booking-calendar-container").find(".mec-choosen-time-message");
7094                $chosenMsg.removeClass("disable");
7095                $chosenMsg.find(".mec-choosen-time").empty().append($(this).data('formatted-date'));
7096
7097                var $container = $("#mec_booking_calendar_" + settings.id + " .mec-booking-tooltip-container");
7098                var $content = $(this).find(".mec-booking-tooltip").children().clone();
7099                $container.empty().append($content).show();
7100            });
7101
7102            var $has_time_repeat = $("#mec_booking_calendar_" + settings.id + " .mec-has-time-repeat");
7103
7104            $has_time_repeat.off('click').on('click', function () {
7105                $("#mec_booking_calendar_" + settings.id + " .mec-has-time-repeat").removeClass('mec-wrap-active').removeClass('mec-active');
7106                $(this).addClass("mec-active");
7107
7108                // Populate sidebar with time slots from this day
7109                var $container = $("#mec_booking_calendar_" + settings.id + " .mec-booking-tooltip-container");
7110                var $tooltip = $(this).find(".mec-booking-tooltip");
7111                var $content = $tooltip.children().clone();
7112                $content.css('display', '').removeAttr('style');
7113                $container.empty().append($content).show();
7114
7115                // Send message under the calendar
7116                var $activeDate = $(this).find(".mec-booking-calendar-date.mec-active");
7117                var sendTimeToMessage = $activeDate.length ? $activeDate.data('formatted-date') : '';
7118                var $chosenMsg = $(this).closest(".mec-booking-calendar-container").find(".mec-choosen-time-message");
7119                $chosenMsg.removeClass("disable");
7120                $chosenMsg.find(".mec-choosen-time").empty().append(sendTimeToMessage);
7121            });
7122
7123            // Selected DateTime
7124            if (settings.selected_datetime) {
7125                var $selected_datetime = $(".mec-booking-calendar-date[data-timestamp='" + settings.selected_datetime + "']");
7126                if ($selected_datetime.length) {
7127                    var $repeatDay = $selected_datetime.closest(".mec-has-time-repeat");
7128                    if ($repeatDay.length) {
7129                        $repeatDay.trigger('click');
7130                        var $sidebarDate = $(".mec-booking-tooltip-container .mec-booking-calendar-date[data-timestamp='" + settings.selected_datetime + "']");
7131                        if ($sidebarDate.length) $sidebarDate.trigger('click');
7132                    } else $selected_datetime.closest(".mec-has-one-repeat-in-day").trigger('click');
7133                }
7134            }
7135
7136            // Dropdown Toggle
7137            $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-dropdown").off('click').on('click', function () {
7138                var $up = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-icons-up");
7139                var $down = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-icons-down");
7140                var $calendar = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-container");
7141
7142                var $current = $(this).find($('.mec-select-date-calendar-icons span:not(.mec-util-hidden)'));
7143                if ($current.hasClass('mec-select-date-calendar-icons-up')) {
7144                    $up.addClass('mec-util-hidden');
7145                    $down.removeClass('mec-util-hidden');
7146                    $calendar.removeClass('mec-util-hidden');
7147
7148                    setTimeout(function () {
7149                        $('body').off('click').on('click', mec_calendar_close_calendar_on_body_click);
7150                    }, 100);
7151                }
7152                else {
7153                    $up.removeClass('mec-util-hidden');
7154                    $down.addClass('mec-util-hidden');
7155                    $calendar.addClass('mec-util-hidden');
7156                }
7157            });
7158
7159            function mec_calendar_close_calendar_on_body_click(e) {
7160                var $up = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-icons-up");
7161                var $down = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-icons-down");
7162                var $calendar = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-container");
7163
7164                // Click was inside calendar
7165                if ($(e.target).closest($calendar).length > 0) return false;
7166
7167                $up.removeClass('mec-util-hidden');
7168                $down.addClass('mec-util-hidden');
7169                $calendar.addClass('mec-util-hidden');
7170
7171                $('body').off('click', mec_calendar_close_calendar_on_body_click);
7172            }
7173        }
7174    };
7175}(jQuery));
7176
7177// MEC Cart
7178(function ($) {
7179    $.fn.mecCart = function (options) {
7180        // Default Options
7181        var settings = $.extend({
7182            // These are the defaults.
7183            ajax_url: '',
7184        }, options);
7185
7186        // Set DOM Listeners
7187        setListeners();
7188
7189        function setListeners() {
7190            // Add the onclick event
7191            $(".mec-cart-remove-transactions").off('click').on('click', function (e) {
7192                e.preventDefault();
7193
7194                var transaction_id = $(this).data('transaction-id');
7195                remove(transaction_id);
7196            });
7197
7198            $('#mec_cart_coupon_form').off('submit').on('submit', function (e) {
7199                e.preventDefault();
7200                coupon();
7201            });
7202        }
7203
7204        function remove(transaction_id) {
7205            var $wrapper = $('.mec-cart');
7206
7207            // Add loading Class
7208            $wrapper.addClass('mec-loading');
7209
7210            $.ajax(
7211                {
7212                    url: settings.ajax_url,
7213                    data: "action=mec_cart_remove_transaction&transaction_id=" + transaction_id,
7214                    dataType: "json",
7215                    type: "post",
7216                    success: function (response) {
7217                        // Remove Loading Class
7218                        $wrapper.removeClass('mec-loading');
7219
7220                        if (response.success) {
7221                            // Remove Transaction Row
7222                            $('#mec_cart_transactions_' + transaction_id).remove();
7223
7224                            if (!$('#mec_cart_transactions_table>tbody>tr').length) {
7225                                $('#mec_cart_transactions_table').remove();
7226                                $('.mec-cart-coupon-checkout-action').remove();
7227                                $('.mec-cart-empty-wrapper').removeClass('mec-util-hidden');
7228                            }
7229
7230                            // Update Total Payable Price
7231                            $('#mec_cart_total_payable').html(response.total);
7232                        }
7233                    },
7234                    error: function () { }
7235                });
7236        }
7237
7238        function coupon() {
7239            var $wrapper = $('.mec-cart');
7240            var $message = $('#mec_cart_message');
7241
7242            // Add loading Class
7243            $wrapper.addClass('mec-loading');
7244
7245            // Empty Message
7246            $message.html('');
7247
7248            var coupon = $('#mec_cart_coupon_input').val();
7249
7250            $.ajax(
7251                {
7252                    url: settings.ajax_url,
7253                    data: "action=mec_cart_coupon&coupon=" + coupon,
7254                    dataType: "json",
7255                    type: "post",
7256                    success: function (response) {
7257                        // Remove Loading Class
7258                        $wrapper.removeClass('mec-loading');
7259
7260                        if (response.success) {
7261                            $message.html('<p class="mec-success">' + response.message + '</p>');
7262
7263                            setTimeout(function () {
7264                                location.reload();
7265                            }, 2000);
7266                        }
7267                        else {
7268                            $message.html('<p class="mec-error">' + response.message + '</p>');
7269                        }
7270                    },
7271                    error: function () { }
7272                });
7273        }
7274    };
7275}(jQuery));
7276
7277// MEC Checkout
7278(function ($) {
7279    $.fn.mecCheckout = function (options) {
7280        // Default Options
7281        var settings = $.extend({
7282            // These are the defaults.
7283            ajax_url: '',
7284        }, options);
7285
7286        // Set DOM Listeners
7287        setListeners();
7288
7289        function setListeners() {
7290            // Add the onclick event
7291            $(".mec-checkout-gateways-radio").off('change').on('change', function (e) {
7292                e.preventDefault();
7293
7294                var gateway_id = $('.mec-checkout-gateways-radio:checked').val();
7295
7296                // Hide all gateway forms
7297                jQuery(".mec-checkout-form-gateway-checkout").addClass("mec-util-hidden");
7298                jQuery(".mec-checkout-price-details-wrapper").addClass("mec-util-hidden");
7299                jQuery(".mec-checkout-price-wrapper").addClass("mec-util-hidden");
7300
7301                // Show selected gateway form
7302                jQuery("#mec_checkout_form_gateway_checkout" + gateway_id).removeClass("mec-util-hidden");
7303                jQuery("#mec-checkout-price-details-wrapper-" + gateway_id).removeClass("mec-util-hidden");
7304                jQuery("#mec-checkout-price-wrapper-" + gateway_id).removeClass("mec-util-hidden");
7305            });
7306
7307            if ($(".mec-checkout-gateways-radio:first").length) {
7308
7309                $(".mec-checkout-gateways-radio:first").prop('checked', true).change();
7310            } else {
7311
7312                jQuery(".mec-checkout-price-details-wrapper:first").removeClass("mec-util-hidden");
7313            }
7314
7315            $('#mec_checkout_form_free_booking').off('submit').on('submit', function (e) {
7316                e.preventDefault();
7317                free();
7318            });
7319        }
7320
7321        function free() {
7322            var $wrapper = $('.mec-checkout');
7323            var $message = $('#mec_checkout_message');
7324
7325            // Add loading Class
7326            $wrapper.addClass('mec-loading');
7327
7328            // Empty Message
7329            $message.html('');
7330
7331            var data = $('#mec_checkout_form_free_booking').serialize();
7332
7333            $.ajax(
7334                {
7335                    url: settings.ajax_url,
7336                    data: data,
7337                    dataType: "json",
7338                    type: "post",
7339	                    success: function (response) {
7340	                        // Remove Loading Class
7341	                        $wrapper.removeClass('mec-loading');
7342	
7343	                        if (response.success) {
7344	                            $message.html('<div class="mec-success">' + response.message + '</div>');
7345	                            if (response.data && typeof response.data.redirect_to !== "undefined" && response.data.redirect_to !== "") {
7346	                                setTimeout(function () {
7347	                                    window.location.href = response.data.redirect_to;
7348	                                }, 2000);
7349	                            }
7350	                            $wrapper.slideUp().html('');
7351	                        }
7352	                        else {
7353	                            $message.html('<div class="mec-error">' + response.message + '</div>');
7354	                        }
7355                    },
7356                    error: function () { }
7357                });
7358        }
7359    };
7360}(jQuery));
7361
7362// Booking Shortcode Scripts
7363jQuery(document).ready(function () {
7364    // Event Gallery
7365    mec_init_event_gallery();
7366
7367    if (jQuery('.mec-booking-shortcode').length < 0) {
7368        return;
7369    }
7370    // Events
7371    if (jQuery().niceSelect) {
7372        jQuery('.mec-booking-shortcode').find('.mec-book-first').find('select').niceSelect();
7373    }
7374
7375    // General Calendar
7376    if (jQuery("#gCalendarMonthFilterButton").length > 0) {
7377        jQuery("#gCalendarMonthFilterButton").monthPicker({
7378            format: "yyyy-mm",
7379            viewMode: "months",
7380            minViewMode: "months"
7381        })
7382        jQuery("#gCalendarMonthFilterButton").monthPicker('hide')
7383    }
7384});
7385
7386function mec_init_event_gallery() {
7387    // Event Gallery
7388    jQuery('.mec-event-gallery-wrapper').each(function () {
7389        let $gallery = jQuery(this);
7390
7391        $gallery.find(jQuery('.mec-event-gallery-list li')).on('click', function () {
7392            let $image = jQuery(this).find(jQuery('img'));
7393            let src = $image.data('full-src');
7394            let alt = $image.attr('alt');
7395
7396            jQuery('.mec-event-gallery-image img')
7397                .fadeTo(200, 0.8)
7398                .attr('src', src)
7399                .attr('alt', alt)
7400                .fadeTo(200, 1);
7401        });
7402    });
7403}
7404
7405function mec_toggle_shortcode_pagination(shortcode_id, method) {
7406    if (method === 'show') {
7407        jQuery("#mec_skin_" + shortcode_id + " .mec-load-more-button").removeClass("mec-util-hidden");
7408        jQuery('#mec-nextprev-wrap-' + shortcode_id + ' .mec-nextprev-next-button').removeClass("mec-util-hidden");
7409    }
7410    else {
7411        jQuery("#mec_skin_" + shortcode_id + " .mec-load-more-button").addClass("mec-util-hidden");
7412        jQuery('#mec-nextprev-wrap-' + shortcode_id + ' .mec-nextprev-next-button').addClass("mec-util-hidden");
7413        jQuery('#mec-nextprev-wrap-' + shortcode_id + ' .mec-nextprev-hide-button').addClass("mec-util-hidden");
7414    }
7415}
7416
7417// MEC COUNTDOWN MODULE
7418(function ($) {
7419    $.fn.mecProgressBar = function () {
7420        let $bar = $(this).find($('progress'));
7421        let value = parseInt($bar.attr('value'));
7422        const max = parseInt($bar.attr('max'));
7423
7424        var passed = 0;
7425        var remained = 0;
7426        var passed_days;
7427        var passed_hours;
7428        var passed_minutes;
7429        var passed_seconds;
7430        var remained_days;
7431        var remained_hours;
7432        var remained_minutes;
7433        var remained_seconds;
7434
7435        var $time_passed = $(this).find($('.mec-progress-bar-time-passed'));
7436        var $time_remained = $(this).find($('.mec-progress-bar-time-remained'));
7437
7438        startProgress();
7439        var interval = setInterval(startProgress, 1000);
7440
7441        function startProgress() {
7442            if (value >= max) {
7443                clearInterval(interval);
7444                return;
7445            }
7446            value += 1;
7447            $bar.attr('value', value);
7448
7449            let passed_str = '';
7450            let remained_str = '';
7451
7452            passed = value;
7453            remained = max - passed;
7454
7455            passed_days = Math.floor(passed / 86400);
7456            passed -= passed_days * 86400;
7457
7458            passed_hours = Math.floor(passed / 3600);
7459            passed -= passed_hours * 3600;
7460
7461            passed_minutes = Math.floor(passed / 60);
7462            passed -= passed_minutes * 60;
7463
7464            passed_seconds = passed;
7465
7466            remained_days = Math.floor(remained / 86400);
7467            remained -= remained_days * 86400;
7468
7469            remained_hours = Math.floor(remained / 3600);
7470            remained -= remained_hours * 3600;
7471
7472            remained_minutes = Math.floor(remained / 60);
7473            remained -= remained_minutes * 60;
7474
7475            remained_seconds = remained;
7476
7477            if (passed_days > 0) passed_str += (passed_days < 10 ? '0' : '') + passed_days + ':';
7478            if (passed_days > 0 || passed_hours > 0) passed_str += (passed_hours < 10 ? '0' : '') + passed_hours + ':';
7479            passed_str += (passed_minutes < 10 ? '0' : '') + passed_minutes + ':';
7480            passed_str += (passed_seconds < 10 ? '0' : '') + passed_seconds;
7481
7482            if (remained_days >
7482 0) remained_str += (remained_days < 10 ? '0' : '') + remained_days + ':';
7483            if (remained_days > 0 || remained_hours > 0) remained_str += (remained_hours < 10 ? '0' : '') + remained_hours + ':';
7484            remained_str += (remained_minutes < 10 ? '0' : '') + remained_minutes + ':';
7485            remained_str += (remained_seconds < 10 ? '0' : '') + remained_seconds;
7486
7487            $time_passed.html(passed_str);
7488            $time_remained.html(remained_str);
7489        }
7490    };
7491}(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.