PageSourceSearch

https://prevent-suicide.org.uk/wp-content/plugins/modern-events-ca…/js/frontend.js?ver=7.36.4.1789726087

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