PageSourceSearch

https://jolys-leipzig.de/wp-content/plugins/modern-events-calendar/assets/js/frontend.js?ver=7.29.0

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