PageSourceSearch

https://www.gillettestadium.com/wp-content/plugins/modern-events-calendar/assets/js/frontend.js?ver=7.17.1

js gillettestadium.com collected 2026-10-02 02:38:40 UTC 299,565 bytes, 7,035 lines download raw bytes

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