PageSourceSearch

https://serraus.org/wp-content/plugins/modern-events-calendar-lite/assets/js/frontend.js?ver=7.31.0

js serraus.org collected 2026-10-02 10:54:01 UTC 315,656 bytes, 7,386 lines download raw bytes

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