PageSourceSearch

http://primariaturda.ro/wp-content/plugins/modern-events-calendar-lite/assets/js/frontend.js?ver=7.33.0

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