PageSourceSearch

https://www.paralympic.org.au/wp-content/themes/paralympics/webnus…/assets/js/frontend.js?ver=7.35.1

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