PageSourceSearch

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

js dinamicnavarra.com collected 2026-09-27 04:57:52 UTC 299,553 bytes, 7,036 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);
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);
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").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").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").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                            stagePadding: 50,
4493                        },
4494                        768: {
4495                            items: settings.items_tablet,
4496                        },
4497                        1199: {
4498                            items: settings.items,
4499                        }
4500                    },
4501                });
4502
4503                if (settings.autoplay_status) {
4504                    $("#mec_skin_" + settings.id + " .mec-owl-carousel").bind(
4505                        "mouseleave",
4506                        function (event) {
4507                            $("#mec_skin_" + settings.id + " .mec-owl-carousel").trigger('play.owl.autoplay');
4508                        }
4509                    );
4510                }
4511            } else {
4512                $("#mec_skin_" + settings.id + " .mec-owl-carousel").owlCarousel({
4513                    autoplay: settings.autoplay_status,
4514                    loop: settings.loop,
4515                    autoplayTimeout: settings.autoplay,
4516                    items: settings.items,
4517                    dots: typeof settings.dots_navigation != 'undefined' ? settings.dots_navigation : false,
4518                    nav: typeof settings.navigation != 'undefined' ? settings.navigation : true,
4519                    autoplayHoverPause: settings.autoplay_status,
4520                    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>"],
4521                    navElement: 'button type="button" role="button"',
4522                    rtl: owl_rtl,
4523                    responsiveClass: true,
4524                    responsive: {
4525                        0: {
4526                            items: settings.items_mobile,
4527                        },
4528                        768: {
4529                            items: settings.items_tablet,
4530                        },
4531                        1199: {
4532                            items: settings.items,
4533                        }
4534                    },
4535                });
4536
4537                if (settings.autoplay_status) {
4538                    $("#mec_skin_" + settings.id + " .mec-owl-carousel").bind(
4539                        "mouseleave",
4540                        function (event) {
4541                            $("#mec_skin_" + settings.id + " .mec-owl-carousel").trigger('play.owl.autoplay');
4542                        }
4543                    );
4544                }
4545            }
4546        }
4547    };
4548
4549    function sed(settings) {
4550        // Single Event Display
4551        $("#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) {
4552            var sed_method = $(this).attr('target');
4553            if ('_blank' === sed_method) {
4554
4555                return;
4556            }
4557            e.preventDefault();
4558            var href = $(this).attr('href');
4559
4560            var id = $(this).data('event-id');
4561            var occurrence = get_parameter_by_name('occurrence', href);
4562            var time = get_parameter_by_name('time', href);
4563
4564            if( 'undefined' == typeof id ){
4565                return;
4566            }
4567
4568            mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
4569        });
4570    }
4571}(jQuery));
4572
4573// MEC SLIDER VIEW PLUGIN
4574(function ($) {
4575    $.fn.mecSliderView = function (options) {
4576        // Default Options
4577        var settings = $.extend({
4578            // These are the defaults.
4579            id: 0,
4580            atts: '',
4581            transition_time: 250,
4582            autoplay: false,
4583            ajax_url: '',
4584            sf: {},
4585            start_date: ''
4586        }, options);
4587
4588        var rtl = false;
4589
4590        // Init Sliders
4591        initSlider();
4592
4593        function initSlider() {
4594            // Check RTL website
4595            if ($('body').hasClass('rtl')) rtl = true;
4596
4597            $("#mec_skin_" + settings.id + " .mec-owl-carousel").owlCarousel(
4598                {
4599                    autoplay: true,
4600                    smartSpeed: settings.transition_time,
4601                    autoplayTimeout: settings.autoplay,
4602                    loop: true,
4603                    items: 1,
4604                    responsiveClass: true,
4605                    responsive: {
4606                        0: {
4607                            items: 1,
4608                        },
4609                        960: {
4610                            items: 1,
4611                        },
4612                        1200: {
4613                            items: 1,
4614                        }
4615                    },
4616                    dots: false,
4617                    nav: true,
4618                    autoplayHoverPause: true,
4619                    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>"],
4620                    navElement: 'button type="button" role="button"',
4621                    rtl: rtl,
4622                });
4623        }
4624    };
4625}(jQuery));
4626
4627// MEC COUNTDOWN MODULE
4628(function ($) {
4629    $.fn.mecCountDown = function (options, callBack) {
4630        // Default Options
4631        var settings = $.extend({
4632            // These are the defaults.
4633            date: null,
4634            format: null
4635        }, options);
4636
4637        var callback = callBack;
4638        var selector = $(this);
4639
4640        startCountdown();
4641        var interval = setInterval(startCountdown, 1000);
4642
4643        function startCountdown() {
4644            var eventDate = Date.parse(settings.date) / 1000;
4645            var currentDate = Math.floor($.now() / 1000);
4646
4647            if (eventDate <= currentDate) {
4648                callback.call(this);
4649                clearInterval(interval);
4650            }
4651
4652            var seconds = eventDate - currentDate;
4653
4654            var days = Math.floor(seconds / (60 * 60 * 24));
4655            seconds -= days * 60 * 60 * 24;
4656
4657            var hours = Math.floor(seconds / (60 * 60));
4658            seconds -= hours * 60 * 60;
4659
4660            var minutes = Math.floor(seconds / 60);
4661            seconds -= minutes * 60;
4662
4663            if (days == 1) selector.find(".mec-timeRefDays").text(mecdata.day);
4664            else selector.find(".mec-timeRefDays").text(mecdata.days);
4665
4666            if (hours == 1) selector.find(".mec-timeRefHours").text(mecdata.hour);
4667            else selector.find(".mec-timeRefHours").text(mecdata.hours);
4668
4669            if (minutes == 1) selector.find(".mec-timeRefMinutes").text(mecdata.minute);
4670            else selector.find(".mec-timeRefMinutes").text(mecdata.minutes);
4671
4672            if (seconds == 1) selector.find(".mec-timeRefSeconds").text(mecdata.second);
4673            else selector.find(".mec-timeRefSeconds").text(mecdata.seconds);
4674
4675            if (settings.format === "on") {
4676                days = (String(days).length >= 2) ? days : "0" + days;
4677                hours = (String(hours).length >= 2) ? hours : "0" + hours;
4678                minutes = (String(minutes).length >= 2) ? minutes : "0" + minutes;
4679                seconds = (String(seconds).length >= 2) ? seconds : "0" + seconds;
4680            }
4681
4682            if (!isNaN(eventDate)) {
4683                selector.find(".mec-days").text(days);
4684                selector.find(".mec-hours").text(hours);
4685                selector.find(".mec-minutes").text(minutes);
4686                selector.find(".mec-seconds").text(seconds);
4687            } else {
4688                clearInterval(interval);
4689            }
4690        }
4691    };
4692
4693}(jQuery));
4694
4695// MEC TILE VIEW PLUGIN
4696(function ($) {
4697    $.fn.mecTileView = function (options) {
4698        var active_month;
4699        var active_year;
4700
4701        // Default Options
4702        var settings = $.extend({
4703            // These are the defaults.
4704            today: null,
4705            id: 0,
4706            events_label: 'Events',
4707            event_label: 'Event',
4708            month_navigator: 0,
4709            atts: '',
4710            active_month: {},
4711            next_month: {},
4712            sf: {},
4713            ajax_url: '',
4714            pagination: '0',
4715            infinite_locked: false,
4716        }, options);
4717
4718        // Initialize Month Navigator
4719        if (settings.month_navigator) initMonthNavigator();
4720
4721        // Load Next Month in background
4722        if (settings.load_method === 'month') setMonth(settings.next_month.year, settings.next_month.month, true);
4723
4724        active_month = settings.active_month.month;
4725        active_year = settings.active_month.year;
4726
4727        let history = [];
4728        const $next = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-next-button');
4729        const $prev = $('#mec-nextprev-wrap-' + settings.id + ' .mec-nextprev-prev-button');
4730
4731        // Set onclick Listeners
4732        setListeners();
4733
4734        // Search Widget
4735        if ( settings.sf.container !== '' ) {
4736            $(settings.sf.container).mecSearchForm(
4737            {
4738                id: settings.id,
4739                refine: settings.sf.refine,
4740                ajax_url: settings.ajax_url,
4741                atts: settings.atts,
4742                callback: function (atts) {
4743                    settings.atts = atts;
4744                    search(active_year, active_month);
4745                }
4746            });
4747
4748            $(settings.sf.container).addClass('mec-skin-search-init');
4749        }
4750
4751        function initMonthNavigator() {
4752            $("#mec_skin_" + settings.id + " .mec-load-month").off("click").on("click", function () {
4753                var year = $(this).data("mec-year");
4754                var month = $(this).data("mec-month");
4755
4756                setMonth(year, month, false, true);
4757            });
4758        }
4759
4760        function search(year, month) {
4761            // Add Loading Class
4762            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
4763            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
4764
4765            $.ajax(
4766                {
4767                    url: settings.ajax_url,
4768                    data: "action=mec_tile_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
4769                    dataType: "json",
4770                    type: "post",
4771                    success: function (response) {
4772                        if (settings.load_method === 'month') {
4773                            active_month = response.current_month.month;
4774                            active_year = response.current_month.year;
4775
4776                            // Append Month
4777                            $("#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>');
4778
4779                            // Append Month Navigator
4780                            $("#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>');
4781
4782                            // Re-initialize Month Navigator
4783                            initMonthNavigator();
4784
4785                            // Set onclick Listeners
4786                            setListeners();
4787
4788                            // Toggle Month
4789                            toggleMonth(response.current_month.id);
4790                        }
4791                        else {
4792                            // Append Items
4793                            $("#mec_skin_events_" + settings.id).html(response.html);
4794
4795                            // Show load more button
4796                            if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
4797                            // Hide load more button
4798                            else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
4799
4800                            // Update the variables
4801                            settings.end_date = response.end_date;
4802                            settings.offset = response.offset;
4803
4804                            // Set onclick Listeners
4805                            setListeners();
4806                        }
4807
4808                        // Remove loading Class
4809                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
4810
4811                        $(document).trigger('mec_search_init',['tile',settings,response]);
4812                    },
4813                    error: function () { }
4814                });
4815        }
4816
4817        function setMonth(year, month, do_in_background, navigator_click) {
4818            if (typeof do_in_background === "undefined") do_in_background = false;
4819            navigator_click = navigator_click || false;
4820
4821            var month_id = year + "" + month;
4822
4823            if (!do_in_background) {
4824                active_month = month;
4825                active_year = year;
4826            }
4827
4828            // Month exists so we just show it
4829            if ($("#mec_tile_month_" + settings.id + "_" + month_id).length) {
4830                // Toggle Month
4831                toggleMonth(month_id);
4832            }
4833            else {
4834                if (!do_in_background) {
4835                    // Add Loading Class
4836                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
4837                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
4838                }
4839
4840                $.ajax(
4841                    {
4842                        url: settings.ajax_url,
4843                        data: "action=mec_tile_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
4844                        dataType: "json",
4845                        type: "post",
4846                        success: function (response) {
4847                            // Append Month
4848                            $("#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>');
4849
4850                            // Append Month Navigator
4851                            $("#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>');
4852
4853                            // Re-initialize Month Navigator
4854                            initMonthNavigator();
4855
4856                            // Set onclick Listeners
4857                            setListeners();
4858
4859                            if (!do_in_background) {
4860                                // Toggle Month
4861                                toggleMonth(response.current_month.id);
4862
4863                                // Remove loading Class
4864                                $('.mec-modal-result').removeClass("mec-month-navigator-loading");
4865
4866                                // Set Month Filter values in search widget
4867                                $("#mec_sf_month_" + settings.id).val(month);
4868                                $("#mec_sf_year_" + settings.id).val(year);
4869                            }
4870                            else {
4871                                $("#mec_tile_month_" + settings.id + "_" + response.current_month.id).hide();
4872                                $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
4873                            }
4874                        },
4875                        error: function () { }
4876                    });
4877            }
4878        }
4879
4880        function toggleMonth(month_id) {
4881            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
4882            var active_day = $("#mec_tile_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
4883
4884            if (active_day <= 9) active_day = "0" + active_day;
4885
4886            // Toggle Month Navigator
4887            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
4888            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
4889
4890            // Toggle Month
4891            $("#mec_skin_" + settings.id + " .mec-month-container").hide().removeClass("mec-month-container-selected");
4892            $("#mec_tile_month_" + settings.id + "_" + month_id).show().addClass("mec-month-container-selected");
4893
4894            jQuery(document).trigger('mec_toggle_month', [settings, month_id]);
4895        }
4896
4897        var sf;
4898
4899        function setListeners() {
4900            // Load More
4901            $("#mec_skin_" + settings.id + " .mec-load-more-button").off("click").on("click", function () {
4902                loadMore();
4903            });
4904
4905            // Scroll
4906            if(settings.pagination === 'scroll') {
4907                $(window).on("scroll", function (event) {
4908                    var $target = $("#mec_skin_" + settings.id + " .mec-load-more-wrap");
4909
4910                    var finished = $target.data('page-finished');
4911                    if(finished) return;
4912
4913                    var hT = $target.offset().top,
4914                        hH = $target.outerHeight(),
4915                        wH = $(window).height(),
4916                        wS = $(this).scrollTop();
4917
4918                    if (wS + 100 > hT + hH - wH && !settings.infinite_locked) {
4919                        settings.infinite_locked = true;
4920                        $target.addClass('mec-load-more-scroll-loading');
4921                        loadMore();
4922                    }
4923                });
4924            }
4925
4926            // Next Prev Pagination
4927            if(settings.pagination === 'nextprev')
4928            {
4929                // Events Wrapper
4930                const $EW = $("#mec_skin_events_" + settings.id);
4931
4932                let next_disabled = false;
4933
4934                // Previous Button
4935                $prev.on('click', function()
4936                {
4937                    if(history.length)
4938                    {
4939                        let page = history.pop();
4940
4941                        // Display Events
4942                        $EW.html(page.html);
4943
4944                        // Update the variables
4945                        settings.end_date = page.end_date;
4946                        settings.offset = page.offset;
4947                        settings.current_month_divider = page.current_month_divider;
4948
4949                        // Display Next Button
4950                        $next.removeClass('mec-util-hidden');
4951                    }
4952
4953                    // Hide Previous Button
4954                    if(!history.length) $prev.addClass('mec-util-hidden');
4955                });
4956
4957                // Next Button
4958                $next.on('click', function(e)
4959                {
4960                    // Prevent Redirect
4961                    e.preventDefault();
4962
4963                    // Currently Disabled
4964                    if(next_disabled) return;
4965
4966                    // Disable Button
4967                    next_disabled = true;
4968
4969                    // Add Loading Style
4970                    $EW.addClass('mec-loading-events');
4971
4972                    // Push to History
4973                    history.push({
4974                        end_date: settings.end_date,
4975                        offset: settings.offset,
4976                        current_month_divider: settings.current_month_divider,
4977                        html: $EW.html()
4978                    });
4979
4980                    loadMore(function(response)
4981                    {
4982                        // Display New Events
4983                        if(response.count) $EW.html(response.html);
4984                        // Remove Last Page
4985                        else history.pop();
4986
4987                        // Enable Button
4988                        next_disabled = false;
4989
4990                        // Remove Loading Style
4991                        $EW.removeClass('mec-loading-events');
4992
4993                        // Display Previous Button
4994                        if(history.length) $prev.removeClass('mec-util-hidden');
4995                        // Hide Next Button
4996                        if(response.count === 0 || (typeof response.has_more_event !== 'undefined' && !response.has_more_event)) $next.addClass('mec-util-hidden');
4997                    });
4998                });
4999            }
5000
5001            $("#mec_skin_" + settings.id + " article").off("click").on("click", function (e) {
5002                // Link Clicked
5003                if (e.target.nodeName.toLowerCase() === 'a') return;
5004
5005                var href = $(this).data('href');
5006                if (!href) return;
5007
5008                var target = $(this).data('target');
5009
5010                if (target === 'blank') window.open(href, '_blank');
5011                else if (target !== 'm1') document.location.href = href;
5012            });
5013
5014            // Add the onclick event
5015            $("#mec_skin_" + settings.id + " .mec-has-event").off("click").on('click', function (e) {
5016                e.preventDefault();
5017
5018                // define variables
5019                var $this = $(this),
5020                    data_mec_cell = $this.data('mec-cell'),
5021                    month_id = $this.data('month');
5022
5023                $("#mec_monthly_view_month_" + settings.id + "_" + month_id + " .mec-calendar-day").removeClass('mec-selected-day');
5024                $this.addClass('mec-selected-day');
5025
5026                $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
5027                $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
5028
5029                $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
5030                $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
5031            });
5032
5033            // Single Event Method
5034            if (settings.sed_method != '0') {
5035                sed();
5036            }
5037        }
5038
5039        function sed() {
5040            // Single Event Display
5041            $("#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) {
5042
5043                var sed_method = $(this).closest('.mec-event-article.mec-tile-item').data('target');
5044                if ('_blank' === sed_method) {
5045                    return;
5046                }
5047                e.preventDefault();
5048                var href = $(this).closest('.mec-event-article.mec-tile-item').data('href');
5049
5050                var id = $(this).closest('.mec-event-article.mec-tile-item').find('.mec-event-title a').data('event-id');
5051                var occurrence = get_parameter_by_name('occurrence', href);
5052                var time = get_parameter_by_name('time', href);
5053
5054                if( 'undefined' == typeof id ){
5055                    return;
5056                }
5057
5058                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
5059            });
5060        }
5061
5062        function loadMore(callback) {
5063            // Load More Button
5064            var $load_more_button = $("#mec_skin_" + settings.id + " .mec-load-more-button");
5065
5066            // Add loading Class
5067            $load_more_button.addClass("mec-load-more-loading");
5068
5069            $.ajax(
5070                {
5071                    url: settings.ajax_url,
5072                    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",
5073                    dataType: "json",
5074                    type: "post",
5075                    success: function (response) {
5076                        if (response.count == '0') {
5077                            // Remove loading Class
5078                            $load_more_button.removeClass("mec-load-more-loading");
5079
5080                            // Hide load more button
5081                            $load_more_button.addClass("mec-util-hidden");
5082
5083                            // Release Lock of Infinite Scroll
5084                            settings.infinite_locked = false;
5085                            $("#mec_skin_" + settings.id + " .mec-load-more-wrap").data('page-finished', true).removeClass('mec-load-more-scroll-loading');
5086
5087                            // Run Callback
5088                            if(typeof callback === 'function') callback(response);
5089                        }
5090                        else {
5091                            // Show load more button
5092                            if (typeof response.has_more_event === 'undefined' || (typeof response.has_more_event !== 'undefined' && response.has_more_event)) $load_more_button.removeClass("mec-util-hidden");
5093                            else $load_more_button.addClass("mec-util-hidden");
5094
5095                            // Run Callback
5096                            if(typeof callback === 'function') callback(response);
5097                            // Append Items
5098                            else $("#mec_skin_events_" + settings.id).append(response.html);
5099
5100                            // Remove loading Class
5101                            $load_more_button.removeClass("mec-load-more-loading");
5102
5103                            // Update the variables
5104                            settings.end_date = response.end_date;
5105                            settings.offset = response.offset;
5106                            settings.current_month_divider = response.current_month_divider;
5107
5108                            // Single Event Method
5109                            if (settings.sed_method != '0') {
5110                                sed();
5111                            }
5112
5113                            // Release Lock of Infinite Scroll
5114                            settings.infinite_locked = false;
5115                            $("#mec_skin_" + settings.id + " .mec-load-more-wrap").removeClass('mec-load-more-scroll-loading');
5116                        }
5117
5118                        $(document).trigger('mec_load_more_init',['tile',settings]);
5119                    },
5120                    error: function () { }
5121                });
5122        }
5123    };
5124}(jQuery));
5125
5126function mec_gateway_selected(gateway_id) {
5127    // Hide all gateway forms
5128    jQuery('.mec-book-form-gateway-checkout').addClass('mec-util-hidden');
5129
5130    // Show selected gateway form
5131    jQuery('#mec_book_form_gateway_checkout' + gateway_id).removeClass('mec-util-hidden');
5132}
5133
5134function mec_wrap_resize() {
5135    var $mec_wrap = jQuery('.mec-wrap'),
5136        mec_width = $mec_wrap.width();
5137    if (mec_width < 959) {
5138        $mec_wrap.addClass('mec-sm959');
5139    } else {
5140        $mec_wrap.removeClass('mec-sm959');
5141    }
5142}
5143
5144function get_parameter_by_name(name, url) {
5145    if (!url) {
5146        url = window.location.href;
5147    }
5148
5149    name = name.replace(/[\[\]]/g, "\\$&");
5150    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
5151        results = regex.exec(url);
5152
5153    if (!results) return null;
5154    if (!results[2]) return '';
5155
5156    return decodeURIComponent(results[2].replace(/\+/g, " "));
5157}
5158
5159// Focus events day
5160var mec_g_month_id = null;
5161
5162function mecFocusDay(settings) {
5163    if (mec_g_month_id != null) {
5164        setTimeout(function () {
5165            var id = settings.id,
5166                date = new Date(),
5167                mec_owl_year = mec_g_month_id.substr(0, 4),
5168                mec_current_year = date.getFullYear(),
5169                mec_owl_month = mec_g_month_id.substr(4, 6),
5170                mec_current_month = date.getMonth() + 1,
5171                mec_current_day = date.getDate(),
5172                mec_owl_go = jQuery("#mec-owl-calendar-d-table-" + id + "-" + mec_g_month_id),
5173                mec_day_exist = false;
5174            mec_owl_go.find('.owl-stage > div').each(function (index) {
5175                if (parseInt(jQuery(this).children('div').data("events-count")) > 0) {
5176                    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) {
5177                        var index_plus = index + 1;
5178                        jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_i
5178d + (index < 10 ? '0' + index_plus : index_plus)).trigger('click');
5179                        mec_owl_go.trigger('to.owl.carousel', index_plus);
5180                        mec_day_exist = true;
5181                        return false;
5182                    }
5183                    else {
5184                        jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_id + mec_current_day).trigger('click');
5185                        mec_owl_go.trigger('to.owl.carousel', mec_current_day);
5186                        mec_day_exist = true;
5187                        return false;
5188                    }
5189                }
5190            });
5191
5192            if (!mec_day_exist && ((mec_owl_year == mec_current_year) && (mec_owl_month == mec_current_month))) {
5193                jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_id + mec_current_day).trigger('click');
5194                mec_owl_go.trigger('to.owl.carousel', mec_current_day);
5195            }
5196        }, 1000);
5197    }
5198}
5199
5200// Focus events week
5201function mec_focus_week(id, skin) {
5202    skin = skin || 'weekly';
5203    var wrap_elem = jQuery('.mec-weeks-container .mec-weekly-view-week-active').parent();
5204    var days = wrap_elem.find('dt');
5205    var week = wrap_elem.find('dl').length;
5206    var focus_week = false;
5207    var i = j = 1;
5208
5209    for (i = 1; i < week; i++) {
5210        setTimeout(function () {
5211            var event = new Event('click');
5212            jQuery('#mec_skin_' + id + ' .mec-previous-month.mec-load-week')[0].dispatchEvent(event);
5213        }, 33);
5214    }
5215
5216    days.each(function (i) {
5217        if (jQuery(this).data('events-count') > 0) {
5218            if (focus_week === false) {
5219                focus_week = parseInt(jQuery(this).parent().data('week-number'));
5220            }
5221
5222            if (skin == 'timetable') {
5223                if (parseInt(jQuery(this).parent().data('week-number')) == parseInt(jQuery('body').data('currentweek'))) {
5224                    focus_week = parseInt(jQuery(this).parent().data('week-number'));
5225                    return false;
5226                }
5227            }
5228            else {
5229                return false;
5230            }
5231        }
5232    });
5233
5234    if (focus_week !== false) {
5235        for (j = 1; j < focus_week; j++) {
5236            setTimeout(function () {
5237                var event = new Event('click');
5238                jQuery('#mec_skin_' + id + ' .mec-next-month.mec-load-week')[0].dispatchEvent(event);
5239            }, 33);
5240        }
5241    }
5242}
5243
5244// TODO must be cleaned JS codes
5245(function ($) {
5246    $(document).ready(function () {
5247        // Check RTL website
5248        if ($('body').hasClass('rtl')) {
5249            var owl_rtl = true;
5250        } else {
5251            var owl_rtl = false;
5252        }
5253
5254        // MEC WIDGET CAROUSEL
5255        $(".mec-widget .mec-event-grid-classic").each(function () {
5256            var loop_status = $(this).data('widget-loop');
5257            if (typeof loop_status === 'undefined') loop_status = 1;
5258
5259            var autoplay_status = $(this).data('widget-autoplay');
5260            if (typeof autoplay_status === 'undefined') autoplay_status = 1;
5261
5262            var autoplay_time = $(this).data('widget-autoplay-time');
5263            if (typeof autoplay_time === 'undefined') autoplay_time = 3000;
5264
5265            $(this).addClass('mec-owl-carousel mec-owl-theme');
5266            $(this).owlCarousel(
5267                {
5268                    autoplay: (autoplay_status ? true : false),
5269                    autoplayTimeout: autoplay_time,
5270                    autoplayHoverPause: (autoplay_status ? true : false),
5271                    loop: (loop_status ? true : false),
5272                    dots: false,
5273                    nav: true,
5274                    navText: ["<i class='mec-sl-arrow-left' aria-label='Previous'></i>", " <i class='mec-sl-arrow-right' aria-label='Next'></i>"],
5275                    navElement: 'button type="button" role="button"',
5276                    items: 1,
5277                    autoHeight: true,
5278                    responsiveClass: true,
5279                    rtl: owl_rtl,
5280                });
5281        });
5282
5283        // add mec-sm959 class if mec-wrap div size < 959
5284        mec_wrap_resize();
5285
5286        jQuery(window).bind('resize', function () {
5287            mec_wrap_resize();
5288        });
5289
5290        // Fixed: social hover in iphone
5291        $('.mec-event-sharing-wrap').hover(function () {
5292            $(this).find('.mec-event-sharing').show(0);
5293        },
5294            function () {
5295                $(this).find('.mec-event-sharing').hide(0);
5296            });
5297
5298        // Register Booking Smooth Scroll
5299        $('a.simple-booking[href^="#mec-events-meta-group-booking"]').click(function () {
5300            if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
5301                var target = $(this.hash);
5302                target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
5303
5304                if (target.length) {
5305                    var scrollTopVal = target.offset().top - 30;
5306
5307                    if($('body[class^="mec-events-template"]').length > 0 ) {
5308                        $('html, body').animate({
5309                            scrollTop: scrollTopVal
5310                        }, 600);
5311
5312                        return false;
5313
5314                    } else {
5315
5316                        return true;
5317
5318                    }
5319                }
5320            }
5321        });
5322
5323        // Load Information widget under title in mobile/tablet
5324        if ($('.single-mec-events .mec-single-event:not(.mec-single-modern)').length > 0) {
5325            if ($('.single-mec-events .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox').length > 0) {
5326                var html = $('.single-mec-events .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox')[0].outerHTML;
5327                if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) < 960) {
5328                    $('.single-mec-events .col-md-4 .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox').remove();
5329                    $('.single-mec-events .mec-event-info-mobile').html(html)
5330                }
5331            }
5332        }
5333
5334        // FAQ
5335        $(document).on('click', '.mec-faq-toggle-icon', function()
5336        {
5337            $(this).parent().toggleClass('close');
5338        });
5339    });
5340})(jQuery);
5341
5342// Weather
5343(function ($) {
5344    // Convart fahrenheit to centigrade
5345    function convertToC(value) {
5346        return Math.round(((parseFloat(value) - 32) * 5 / 9));
5347    }
5348
5349    // Convert centigrade to fahrenheit
5350    function convertToF(value) {
5351        return Math.round(((1.8 * parseFloat(value)) + 32));
5352    }
5353
5354    // Convert miles to kilometers
5355    function MPHToKPH(value) {
5356        return Math.round(1.609344 * parseFloat(value));
5357    }
5358
5359    // Convert kilometers to miles
5360    function KPHToMPH(value) {
5361        return Math.round((0.6214 * parseFloat(value)));
5362    }
5363
5364    $(document).ready(function ($) {
5365        var degree = $('.mec-weather-summary-temp');
5366        var weather_extra = $('.mec-weather-extras');
5367        var wind = weather_extra.children('.mec-weather-wind');
5368        var visibility = weather_extra.children('.mec-weather-visibility');
5369        var feelslike = weather_extra.children('.mec-weather-feels-like');
5370
5371        //  Events
5372        $('.degrees-mode').on('click', function () {
5373            var degree_mode = degree.children('var').text().trim();
5374            var wind_text = wind.text().substring(5);
5375            var visibility_text = visibility.text().substring(11);
5376            var feelslike_text = feelslike.text().substring(12);
5377
5378            if (degree_mode == degree.data('c').trim()) {
5379                degree.html(convertToF(parseInt(degree.text())) + ' <var>' + degree.data('f') + '</var>');
5380                feelslike.html('<span>Feels Like:</span> ' + convertToF(parseInt(feelslike_text)) + ' <var>' + feelslike.data('f') + '</var>');
5381                wind.html('<span>Wind:</span> ' + KPHToMPH(parseInt(wind_text)) + '<var>' + wind.data('mph') + '</var>');
5382                visibility.html('<span>Visibility:</span> ' + KPHToMPH(parseInt(visibility_text)) + '<var>' + visibility.data('mph') + '</var>');
5383                $(this).text($(this).data('metric'));
5384            }
5385            else if (degree_mode == degree.data('f').trim()) {
5386                degree.html(convertToC(parseInt(degree.text())) + ' <var>' + degree.data('c') + '</var>');
5387                feelslike.html('<span>Feels Like:</span> ' + convertToC(parseInt(feelslike_text)) + ' <var>' + feelslike.data('c') + '</var>');
5388                wind.html('<span>Wind:</span> ' + MPHToKPH(parseInt(wind_text)) + '<var>' + wind.data('kph') + '</var>');
5389                visibility.html('<span>Visibility:</span> ' + MPHToKPH(parseInt(visibility_text)) + '<var>' + visibility.data('kph') + '</var>');
5390                $(this).text($(this).data('imperial'));
5391            }
5392        });
5393
5394        $('a').on('click', function () { });
5395
5396        // FES Speakers Adding
5397        $('#mec_add_speaker_button').on('click', function () {
5398            var $this = this;
5399            var content = $($this).parent().find('input');
5400            var list = $('#mec-fes-speakers-list');
5401            var key = list.find('.mec-error').length;
5402
5403            $($this).prop("disabled", true).css('cursor', 'wait');
5404            $.post(ajaxurl, {
5405                action: "speaker_adding",
5406                content: content.val(),
5407                key: key
5408            })
5409                .done(function (data) {
5410                    if ($(data).hasClass('mec-error')) {
5411                        list.prepend(data);
5412                        setTimeout(function () {
5413                            $('#mec-speaker-error-${key}').remove();
5414                        }, 1500);
5415                    } else {
5416                        list.html(data);
5417                        content.val('');
5418                    }
5419
5420                    $($this).prop("disabled", false).css('cursor', 'pointer');
5421                });
5422        });
5423
5424        // FES Sponsor Adding
5425        $('#mec_add_sponsor_button').on('click', function () {
5426            var $this = this;
5427            var content = $($this).parent().find('input');
5428            var list = $('#mec-fes-sponsors-list');
5429            var key = list.find('.mec-error').length;
5430
5431            $($this).prop("disabled", true).css('cursor', 'wait');
5432            $.post(ajaxurl, {
5433                action: "mec_sponsor_adding",
5434                content: content.val(),
5435                key: key
5436            })
5437            .done(function (data) {
5438                if ($(data).hasClass('mec-error')) {
5439                    list.prepend(data);
5440                    setTimeout(function () {
5441                        $('#mec-sponsor-error-${key}').remove();
5442                    }, 1500);
5443                } else {
5444                    list.html(data);
5445                    content.val('');
5446                }
5447
5448                $($this).prop("disabled", false).css('cursor', 'pointer');
5449            });
5450        });
5451
5452        // Check RTL website
5453        var owl_rtl = $('body').hasClass('rtl') ? true : false;
5454
5455        // MEC FES Date Item Event
5456        $(document).on( 'click', '.mec-export-list-wrapper .mec-export-list-item', function () {
5457            $('.mec-export-list-item').removeClass('fes-export-date-active');
5458            $(this).addClass('fes-export-date-active');
5459        });
5460
5461        // MEC BuddyPress Integration Attendees Modules
5462        var mec_bd_attendees_modules = $('.mec-attendees-list-details > ul > li');
5463        mec_bd_attendees_modules.click(function () {
5464            $(this).find('.mec-attendees-toggle').toggle();
5465        });
5466
5467        // MEC FES export csv
5468        $(document).on( 'click','.mec-event-export-csv, .mec-event-export-excel', function () {
5469            var mec_event_id = $(this).parent().parent().data('event-id');
5470
5471            var time = $(this).parent().parent().find($('.fes-export-date-active')).data('time');
5472            if (typeof time === 'undefined') time = 0;
5473
5474            var type = $(this).hasClass('mec-event-export-excel') ? 'ms-excel' : 'csv';
5475
5476            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;
5477
5478            window.location = url;
5479        });
5480    });
5481})(jQuery);
5482
5483function mec_book_form_submit(event, unique_id) {
5484    event.preventDefault();
5485    window["mec_book_form_submit" + unique_id]();
5486}
5487
5488function mec_book_form_back_btn_cache(context, unique_id) {
5489    var id = jQuery(context).attr('id');
5490    var mec_form_data = jQuery('#mec_book_form' + unique_id).serializeArray();
5491
5492    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);
5493    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);
5494}
5495
5496function mec_agreement_change(context) {
5497    var status = jQuery(context).is(":checked");
5498
5499    if (status) jQuery(context).prop("checked", "checked");
5500    else jQuery(context).removeProp("checked");
5501}
5502
5503function mec_book_form_back_btn_click(context, unique_id) {
5504    var id = jQuery(context).attr('id');
5505    unique_id = jQuery('body').data('unique-id');
5506
5507    jQuery('#mec_booking_message' + unique_id).hide();
5508    if (id == "mec-book-form-back-btn-step-2") {
5509        var mec_form_data_step_1 = jQuery('body').data('mec-book-form-data-step-1');
5510
5511        jQuery('#mec_booking' + unique_id).html(jQuery('body').data('mec-book-form-step-1'));
5512        jQuery.each(mec_form_data_step_1, function(index, object_item)
5513        {
5514            if(object_item.name === 'book[date][]')
5515            {
5516                jQuery('[value="' + object_item.value + '"]').prop('checked', true);
5517            }
5518            else jQuery('[name="' + object_item.name + '"]').val(object_item.value);
5519        });
5520
5521        // Booking Refresh Recaptcha When Back Button Click.
5522        var recaptcha_check = jQuery('#mec_booking' + unique_id).find('#g-recaptcha').length;
5523        if (recaptcha_check != 0) {
5524            jQuery('#g-recaptcha').html('');
5525            grecaptcha.render("g-recaptcha", {
5526                sitekey: mecdata.recapcha_key
5527            });
5528        }
5529
5530        mec_init_number_spinner();
5531
5532        var event_id = jQuery('input[name="event_id"]').val();
5533        var date = jQuery('#mec_book_form_date' + unique_id).val();
5534
5535        // Update Availability
5536        window['mec_get_tickets_availability' + unique_id](event_id, date);
5537    }
5538    else if (id == "mec-book-form-back-btn-step-3") {
5539        var mec_form_data_step_2 = jQuery('body').data('mec-book-form-data-step-2');
5540
5541        jQuery('#mec_booking' + unique_id).html(jQuery('body').data('mec-book-form-step-2'));
5542        jQuery.each(mec_form_data_step_2, function (index, object_item) {
5543            var mec_elem = jQuery('[name="' + object_item.name + '"]');
5544            var mec_type = mec_elem.attr('type');
5545
5546            if ((mec_type == 'checkbox' || mec_type == 'radio')) {
5547                var mec_elem_len = jQuery('[name="' + object_item.name + '"]').length;
5548
5549                if (mec_elem_len > 1) {
5550                    var id = '#' + mec_elem.attr('id').match(/mec_book_reg_field_reg.*_/g) + object_item.value.toLowerCase();
5551                    jQuery(id).prop('checked', true);
5552                }
5553                else {
5554                    mec_elem.prop('checked', true);
5555                }
5556            }
5557
5558            mec_elem.val(object_item.value);
5559        });
5560    }
5561}
5562
5563// Google map Skin
5564function gmapSkin(NewJson) {
5565    var gmap_temp = jQuery("#gmap-data");
5566    var beforeJson = gmap_temp.val();
5567    if (typeof beforeJson === 'undefined') beforeJson = '';
5568
5569    var newJson = NewJson;
5570    var jsonPush = (typeof beforeJson != 'undefined' && beforeJson.trim() == "") ? [] : JSON.parse(beforeJson);
5571    var pushState = jsonPush.length < 1 ? false : true;
5572
5573    for (var key in newJson) {
5574        if (pushState) {
5575            jsonPush.forEach(function (Item, Index) {
5576                var render_location = jsonPush[Index].latitude + "," + jsonPush[Index].longitude;
5577                if (key.trim() == render_location.trim()) {
5578                    // LightBox Count Update
5579                    newJson[key].count = newJson[key].count + jsonPush[Index].count;
5580
5581                    // LightBox Ids Update
5582                    newJson[key].event_ids = newJson[key].event_ids.concat(jsonPush[Index].event_ids);
5583
5584                    // LightBox Initialize
5585                    var dom = jQuery(newJson[key].lightbox).find("div:nth-child(2)");
5586                    var main_items = dom.html();
5587                    var new_items = jQuery(jsonPush[Index].lightbox).find("div:nth-child(2)").html();
5588
5589                    var render_items = dom.html(main_items + new_items).html();
5590                    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>';
5591                    newJson[key].lightbox = new_info_lightbox;
5592
5593                    // LightBox info
5594                    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>';
5595                    newJson[key].infowindow = new_info_window;
5596
5597                    // Remove before values of this location
5598                    jsonPush.splice(Index, 1);
5599                }
5600            });
5601        }
5602
5603        jsonPush.push(newJson[key]);
5604    }
5605
5606    gmap_temp.val(JSON.stringify(jsonPush));
5607    return jsonPush;
5608}
5609
5610// Fluent Scripts
5611jQuery(document).ready(function () {
5612    if (jQuery('.mec-fluent-wrap').length < 0) {
5613        return;
5614    }
5615    // Events
5616    jQuery(window).on('resize', mecFluentToggoleDisplayValueFilterContent);
5617    jQuery(document).on('click', '.mec-fluent-wrap .mec-filter-icon', mecFluentToggleFilterContent);
5618    jQuery(document).on('click', '.mec-fluent-wrap .mec-more-events-icon', mecFluentToggleMoreEvents);
5619    jQuery(document).on('click', '.mec-fluent-wrap .mec-yearly-calendar', mecFluentYearlyCalendar);
5620    jQuery(document).on('click', mecFluentOutsideEvent);
5621    jQuery(document).on('click', '.mec-fluent-more-views-icon', mecFluentMoreViewsContent);
5622    jQuery(document).on('change', '.mec-fluent-wrap .mec-filter-content select, .mec-fluent-wrap .mec-filter-content input', mecFluentSmartFilterIcon);
5623    // Run
5624    mecFluentTimeTableUI();
5625    mecFluentUI();
5626    mecFluentNiceSelect();
5627    mecFluentWrapperFullScreenWidth();
5628    jQuery(window).on('load', mecFluentWrapperFullScreenWidth);
5629    jQuery(window).on('load', mecFluentCurrentTimePosition);
5630    jQuery(window).on('resize', mecFluentWrapperFullScreenWidth);
5631    jQuery(window).on('resize', mecFluentTimeTableUI);
5632    mecFluentSliderUI();
5633    mecFluentFullCalendar();
5634    jQuery(window).on('resize', mecFluentFullCalendar);
5635    mecFluentCustomScrollbar();
5636});
5637
5638function mecFluentSinglePage() {
5639    if (jQuery().niceScroll) {
5640        jQuery('.mec-single-fluent-body .featherlight .mec-single-fluent-wrap').niceScroll({
5641            horizrailenabled: false,
5642            cursorcolor: '#C1C5C9',
5643            cursorwidth: '4px',
5644            cursorborderradius: '4px',
5645            cursorborder: 'none',
5646            railoffset: {
5647                left: 10,
5648            }
5649        });
5650    }
5651}
5652
5653function mecFluentFullCalendar() {
5654    if (jQuery('.mec-fluent-wrap.mec-skin-full-calendar-container').length > 0) {
5655        var widowWidth = jQuery(window).innerWidth();
5656        if (widowWidth <= 767) {
5657            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({
5658                paddingTop: jQuery('.mec-fluent-wrap.mec-skin-full-calendar-container').children('.mec-totalcal-box').height() + 40,
5659            });
5660        } else {
5661            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({
5662                paddingTop: 32,
5663            });
5664        }
5665    }
5666}
5667
5668function mecFluentSmartFilterIcon() {
5669    var filterContent = jQuery(this).closest('.mec-filter-content');
5670    var hasValue = false;
5671    if (jQuery(this).closest('.mec-date-search').length > 0) {
5672        var yearValue = jQuery(this).closest('.mec-date-search').find('select[id*="mec_sf_year"]').val();
5673        var monthValue = jQuery(this).closest('.mec-date-search').find('select[id*="mec_sf_month"]').val();
5674        if ((yearValue == 'none' && monthValue == 'none') || (yearValue != 'none' && monthValue != 'none')) {
5675            filterContent.hide();
5676            if ((yearValue != 'none' && monthValue != 'none')) {
5677                hasValue = true;
5678            } else {
5679                hasValue = false;
5680            }
5681        } else {
5682            return false;
5683        }
5684    } else {
5685        filterContent.hide();
5686    }
5687    if (!hasValue) {
5688        filterContent.find(':not(.mec-date-search)').find('select, input:not([type="hidden"])').each(function () {
5689            if (jQuery(this).val()) {
5690                hasValue = true;
5691                return false;
5692            }
5693        });
5694    }
5695    if (hasValue) {
5696        jQuery(this).closest('.mec-search-form').find('.mec-filter-icon').addClass('active');
5697    } else {
5698        jQuery(this).closest('.mec-search-form').find('.mec-filter-icon').removeClass('active');
5699    }
5700}
5701
5702function mecFluentMoreViewsContent() {
5703    jQuery(this).find('.mec-fluent-more-views-content').toggleClass('active');
5704}
5705
5706function mecFluentWrapperFullScreenWidth() {
5707    if (jQuery('.mec-fluent-bg-wrap').length > 0) {
5708        jQuery('.mec-fluent-bg-wrap').css({
5709            maxWidth: jQuery('body').width() + 8,
5710        });
5711    }
5712}
5713
5714function mecFluentUI() {
5715    if (typeof mecdata != 'undefined' && typeof mecdata.enableSingleFluent != 'undefined' && mecdata.enableSingleFluent) {
5716        jQuery('body').addClass('mec-single-fluent-body');
5717    }
5718    // Set filter content position
5719    jQuery(window).on('load resize', function () {
5720        if (jQuery('.mec-filter-content').length > 0) {
5721            jQuery('.mec-filter-content').css({
5722                right: -(jQuery('.mec-calendar').width() - jQuery('.mec-search-form.mec-totalcal-box').position().left - jQuery('.mec-search-form.mec-totalcal-box').width() + 40),
5723                left: -jQuery('.mec-search-form.mec-totalcal-box').position().left + 40,
5724            });
5725        }
5726        if (jQuery('.mec-filter-icon').is(':visible')) {
5727            var filterIconLeftPosition = parseInt(jQuery('.mec-search-form.mec-totalcal-box').position().left) + parseInt(jQuery('.mec-filter-icon').position().left) - 25;
5728            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>');
5729        }
5730    });
5731    // Hide empty filter content
5732    if (jQuery('.mec-filter-content').is(':empty')) {
5733        jQuery('.mec-filter-icon').hide();
5734    }
5735    // Prevend Default For Event Share Icon
5736    jQuery(document).on('click', '.mec-event-share-icon', function (e) {
5737        e.preventDefault();
5738    });
5739}
5740
5741function mecFluentCurrentTimePosition() {
5742    if (jQuery('.mec-fluent-wrap').length > 0) {
5743        jQuery('.mec-fluent-current-time').each(function () {
5744            var currentTimeMinutes = jQuery(this).data('time');
5745            var height = jQuery(this).closest('.mec-fluent-current-time-cell').height();
5746            jQuery(this).css({
5747                top: (currentTimeMinutes / 60) * height,
5748            });
5749        });
5750    }
5751}
5752
5753function mecFluentNiceSelect() {
5754    if (jQuery('.mec-fluent-wrap').length < 0) {
5755        return;
5756    }
5757
5758    if (jQuery().niceSelect) {
5759        jQuery('.mec-fluent-wrap').find('.mec-filter-content').find('select').niceSelect();
5760    }
5761}
5762
5763function mecFluentCustomScrollbar(y) {
5764
5765    jQuery(document).trigger( 'mec_custom_scrollbar_init', [y] );
5766
5767    if (jQuery('.mec-fluent-wrap').length < 0) {
5768        return;
5769    }
5770
5771    if (jQuery().niceScroll) {
5772        jQuery('.mec-custom-scrollbar').niceScroll({
5773            cursorcolor: '#C7EBFB',
5774            cursorwidth: '4px',
5775            cursorborderradius: '4px',
5776            cursorborder: 'none',
5777            railoffset: {
5778                left: -2,
5779            }
5780        });
5781        jQuery('.mec-custom-scrollbar').getNiceScroll().resize();
5782        jQuery('.mec-custom-scrollbar').each(function () {
5783            if (jQuery(this).find('.mec-fluent-current-time-cell').length > 0) {
5784                var parentTopOffset = jQuery(this).offset().top;
5785                var currentTimeCellOffset = jQuery(this).find('.mec-fluent-current-time-cell').offset().top;
5786                jQuery(this).getNiceScroll(0).doScrollTop(currentTimeCellOffset - parentTopOffset - 16, 120);
5787                jQuery(this).on('scroll', function () {
5788                    if (jQuery(this).getNiceScroll(0).scroll.y != 0) {
5789                        jQuery(this).addClass('mec-scrolling');
5790                    } else {
5791                        jQuery(this).removeClass('mec-scrolling');
5792                    }
5793                });
5794            }
5795            if (typeof y != 'undefined') {
5796                if (jQuery(this).closest('.mec-skin-list-wrap').length > 0 || jQuery(this).closest('.mec-skin-grid-wrap').length > 0) {
5797                    jQuery(this).getNiceScroll(0).doScrollTop(0, 120);
5798                }
5799            }
5800        });
5801    }
5802}
5803
5804function mecFluentTimeTableUI() {
5805    jQuery('.mec-fluent-wrap.mec-timetable-wrap .mec-cell').css('min-height', 0);
5806    var maxHeight = Math.max.apply(null, jQuery('.mec-fluent-wrap.mec-timetable-wrap .mec-cell').map(function () {
5807        return jQuery(this).height();
5808    }).get());
5809    maxHeight = maxHeight > 87 ? maxHeight : 87;
5810    jQuery('.mec-fluent-wrap.mec-timetable-wrap .mec-cell').css('min-height', maxHeight + 2);
5811}
5812
5813function mecFluentSliderUI() {
5814    jQuery(window).on('load', function () {
5815        if(typeof mecdata === 'undefined') return;
5816
5817        jQuery('.mec-fluent-wrap.mec-skin-slider-container .owl-next').prepend('<span>'+ mecdata.next +'</span>');
5818        jQuery('.mec-fluent-wrap.mec-skin-slider-container .owl-prev').append('<span>'+  mecdata.prev +'</span>');
5819    });
5820}
5821
5822function mecFluentToggleFilterContent(e) {
5823    e.preventDefault();
5824    if (jQuery('.mec-filter-content').is(':visible')) {
5825        jQuery('.mec-filter-content').css({
5826            display: 'none',
5827        });
5828    } else {
5829        const displayValue = jQuery(window).width() <= 790 ? 'block' : 'flex';
5830        jQuery('.mec-filter-content').css({
5831            display: displayValue,
5832        });
5833    }
5834}
5835
5836function mecFluentToggoleDisplayValueFilterContent() {
5837    const displayValue = jQuery(window).width() <= 767 ? 'block' : 'flex';
5838    if (jQuery('.mec-filter-content').is(':visible')) {
5839        jQuery('.mec-filter-content').css({
5840            display: displayValue,
5841        });
5842    }
5843}
5844
5845function mecFluentToggleMoreEvents(e) {
5846    e.preventDefault();
5847    const moreEventsWrap = jQuery(this).siblings('.mec-more-events-wrap');
5848    const moreEvents = moreEventsWrap.children('.mec-more-events');
5849    jQuery('.mec-more-events-wrap').removeClass('active');
5850    moreEventsWrap.addClass('active');
5851    jQuery('.mec-more-events-wrap:not(.active)').hide();
5852    if (moreEventsWrap.is(':visible')) {
5853        moreEventsWrap.hide();
5854    } else {
5855        topElement = moreEventsWrap.closest('.mec-more-events-inner-controller').length > 0 ? moreEventsWrap.closest('.mec-more-events-inner-controller') : moreEventsWrap.closest('.mec-more-events-controller');
5856        moreEventsWrap.show().css({
5857            top: topElement.offset().top - window.scrollY,
5858            left: moreEventsWrap.closest('.mec-more-events-controller').offset().left,
5859            width: moreEventsWrap.closest('.mec-more-events-controller').width(),
5860        });
5861        if (moreEventsWrap.width() > 400) {
5862            moreEvents.css({
5863                left: (moreEventsWrap.width() / 2) - (moreEvents.width() / 2),
5864                width: 400,
5865            });
5866        } else {
5867            moreEvents.css({
5868                width: moreEventsWrap.width(),
5869                left: 0,
5870            });
5871        }
5872    }
5873}
5874
5875function mecFluentOutsideEvent(e) {
5876    if (!jQuery(e.target).is('.mec-more-events-icon') && !jQuery(e.target).closest('.mec-more-events-wrap').length) {
5877        jQuery('.mec-more-events-wrap').hide();
5878    }
5879    if (!jQuery(e.target).is('.mec-filter-icon') && !jQuery(e.target).closest('.mec-filter-content').length) {
5880        jQuery('.mec-filter-content').hide();
5881    }
5882    if (!jQuery(e.target).is('.mec-fluent-more-views-icon') && !jQuery(e.target).closest('.mec-fluent-more-views-content').length) {
5883        jQuery('.mec-fluent-more-views-content').removeClass('active');
5884    }
5885}
5886
5887function mecFluentYearlyCalendar() {
5888    const monthNum = jQuery(this).data('month');
5889    const monthName = jQuery(this).find('.mec-calendar-table-title').text();
5890    jQuery('.mec-fluent-wrap').find('.mec-yearly-calendar').removeClass('active');
5891    jQuery(this).addClass('active')
5892        .closest('.mec-year-container')
5893        .find('.mec-yearly-agenda-sec-title span').text(monthName).end()
5894        .find('.mec-events-agenda').addClass('mec-util-hidden').end()
5895        .find('.mec-events-agenda[data-month=' + monthNum + ']').removeClass('mec-util-hidden');
5896    mecFluentCustomScrollbar();
5897}
5898
5899function mecFluentYearlyUI(eventID, yearID) {
5900    var fluentWrap = jQuery('#mec_skin_' + eventID + '.mec-fluent-wrap');
5901    if (fluentWrap.length < 0) {
5902        return;
5903    }
5904    var monthNum = fluentWrap.find('.mec-year-container[data-year-id=' + yearID + ']').find('.mec-events-agenda:not(.mec-util-hidden)').data('month');
5905    var activeMonth = fluentWrap.find('.mec-year-container[data-year-id=' + yearID + ']').find('.mec-yearly-calendar[data-month=' + monthNum + ']');
5906    var activeMonthName = activeMonth.find('.mec-calendar-table-title').text();
5907    activeMonth.addClass('active');
5908}
5909
5910// MEC LIST VIEW Fluent PLUGIN
5911(function ($) {
5912    $.fn.mecListViewFluent = function (options) {
5913        var active_month;
5914        var active_year;
5915
5916        // Default Options
5917        var settings = $.extend({
5918            // These are the defaults.
5919            today: null,
5920            id: 0,
5921            events_label: 'Events',
5922            event_label: 'Event',
5923            month_navigator: 0,
5924            atts: '',
5925            active_month: {},
5926            next_month: {},
5927            sf: {},
5928            ajax_url: '',
5929        }, options);
5930
5931        mecFluentCustomScrollbar();
5932
5933        initLoadMore('#mec_list_view_month_' + settings.id + '_' + settings.month_id);
5934
5935        function initLoadMore(monthID) {
5936            $(monthID).off().on('click', '.mec-load-more-button', function () {
5937                loadMore(this);
5938            });
5939        }
5940
5941        function loadMore(This) {
5942            // Add loading Class
5943            var currentLoadMore = $(This);
5944            currentLoadMore.addClass("mec-load-more-loading");
5945            var endDate = currentLoadMore.data('end-date');
5946            var maximumDate = currentLoadMore.data('maximum-date');
5947            var nextOffset = currentLoadMore.data('next-offset');
5948            var year = currentLoadMore.data('year');
5949            var month = currentLoadMore.data('month');
5950
5951            $.ajax({
5952                url: settings.ajax_url,
5953                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",
5954                dataType: "json",
5955                type: "post",
5956                success: function (response) {
5957                    currentLoadMore.parent().remove();
5958                    if (response.count != '0') {
5959                        // Append Items
5960                        $('#mec_list_view_month_' + settings.id + '_' + response.current_month.id).append(response.month);
5961
5962                        // Single Event Method
5963                        if (settings.sed_method != '0') {
5964                            sed();
5965                        }
5966
5967                        mecFluentCustomScrollbar();
5968                        initLoadMore('#mec_list_view_month_' + settings.id + '_' + response.current_month.id);
5969                    }
5970
5971                    $(document).trigger('mec_load_more_init',['list',settings]);
5972                },
5973                error: function () { }
5974            });
5975        }
5976
5977        // Initialize Month Navigator
5978        if (settings.month_navigator) initMonthNavigator();
5979
5980        // Load Next Month in background
5981        setMonth(settings.next_month.year, settings.next_month.month, true);
5982
5983        var initMonth;
5984        var initYear;
5985        active_month = initMonth = settings.active_month.month;
5986        active_year = initYear = settings.active_month.year;
5987
5988        // Search Widget
5989        if ( settings.sf.container !== '' ) {
5990            sf = $(settings.sf.container).mecSearchForm({
5991                id: settings.id,
5992                refine: settings.sf.refine,
5993                ajax_url: settings.ajax_url,
5994                start_date: settings.start_date,
5995                atts: settings.atts,
5996                callback: function (atts) {
5997                    settings.atts = atts;
5998                    search(active_year, active_month);
5999                }
6000            });
6001
6002            $(settings.sf.container).addClass('mec-skin-search-init');
6003        }
6004
6005        // Single Event Method
6006        if (settings.sed_method != '0') {
6007            sed();
6008        }
6009
6010        function initMonthNavigator() {
6011            $("#mec_skin_" + settings.id + " .mec-load-month").off().on("click", function () {
6012                var year = $(this).data("mec-year");
6013                var month = $(this).data("mec-month");
6014                setMonth(year, month, false, true);
6015            });
6016        }
6017
6018        function parseQuery(queryString) {
6019            var query = {};
6020            var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');
6021            for (var i = 0; i < pairs.length; i++) {
6022                var pair = pairs[i].split('=');
6023                query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
6024            }
6025            return query;
6026        }
6027
6028        function updateQueryStringParameter(uri, key, val) {
6029            return uri
6030                .replace(RegExp("([?&]" + key + "(?=[=&#]|$)[^#&]*|(?=#|$))"), "&" + key + "=" + encodeURIComponent(val));
6031        }
6032
6033        function search(year, month) {
6034            // Add Loading Class
6035            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6036            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
6037
6038            var ObjAtts = parseQuery(settings.atts);
6039            if (!(ObjAtts['sf[month'] || ObjAtts['sf[year]'])) {
6040                settings.atts = updateQueryStringParameter(settings.atts.trim(), 'sf[year]', initYear);
6041                settings.atts = updateQueryStringParameter(settings.atts.trim(), 'sf[month]', initMonth);
6042            }
6043
6044            $.ajax({
6045                url: settings.ajax_url,
6046                data: "action=mec_list_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
6047                dataType: "json",
6048                type: "post",
6049                success: function (response) {
6050                    active_month = response.current_month.month;
6051                    active_year = response.current_month.year;
6052
6053                    // Append Month
6054                    $("#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>');
6055
6056                    // Append Month Navigator
6057                    $("#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>');
6058
6059                    // Re-initialize Month Navigator
6060                    initMonthNavigator();
6061
6062                    // Toggle Month
6063                    toggleMonth(response.current_month.id);
6064
6065                    initLoadMore('#mec_list_view_month_' + settings.id + '_' + response.current_month.id);
6066
6067                    // Remove loading Class
6068                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
6069
6070                    mecFluentCustomScrollbar();
6071
6072                    $(document).trigger('mec_search_process_end', {r:response, settings_id: settings.id});
6073
6074                    $(document).trigger('mec_search_init',['list',settings,response]);
6075                },
6076                error: function () { }
6077            });
6078        }
6079
6080        function setMonth(year, month, do_in_background, navigator_click) {
6081            if (typeof do_in_background === "undefined") do_in_background = false;
6082            navigator_click = navigator_click || false;
6083            var month_id = year + "" + month;
6084
6085            if (!do_in_background) {
6086                active_month = month;
6087                active_year = year;
6088            }
6089
6090            // Month exists so we just show it
6091            if ($("#mec_list_view_month_" + settings.id + "_" + month_id).length) {
6092                // Toggle Month
6093                toggleMonth(month_id);
6094                mecFluentCustomScrollbar(0);
6095            } else {
6096                if (!do_in_background) {
6097                    // Add Loading Class
6098                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6099                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
6100                }
6101
6102                $.ajax({
6103                    url: settings.ajax_url,
6104                    data: "action=mec_list_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
6105                    dataType: "json",
6106                    type: "post",
6107                    success: function (response) {
6108                        // Append Month
6109                        $("#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>');
6110
6111                        // Append Month Navigator
6112                        $("#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>');
6113
6114                        // Re-initialize Month Navigator
6115                        initMonthNavigator();
6116                        initLoadMore('#mec_list_view_month_' + settings.id + '_' + response.current_month.id);
6117
6118                        if (!do_in_background) {
6119                            // Toggle Month
6120                            toggleMonth(response.current_month.id);
6121
6122                            // Remove loading Class
6123                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
6124
6125
6126                            // Set Month Filter values in search widget
6127                            $("#mec_sf_month_" + settings.id).val(month);
6128                            $("#mec_sf_year_" + settings.id).val(year);
6129                        } else {
6130                            $("#mec_list_view_month_" + settings.id + "_" + response.current_month.id).hide();
6131                            $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
6132                        }
6133                        if (typeof custom_month !== undefined) var custom_month;
6134                        if (typeof custom_month != undefined) {
6135                            if (custom_month == 'true') {
6136                                $(".mec-month-container .mec-calendar-day").removeClass('mec-has-event');
6137                                $(".mec-month-container .mec-calendar-day").removeClass('mec-selected-day');
6138                                $('.mec-calendar-day').unbind('click');
6139                            }
6140                        }
6141                        if (!do_in_background) {
6142                            mecFluentCustomScrollbar(0);
6143                        }
6144
6145                        if(jQuery().niceSelect) jQuery('.mec-fluent-wrap').find('.mec-filter-content').find('select').niceSelect();
6146
6147                        $(document).trigger('mec_set_month_process_end', {r:response, settings_id: settings.id});
6148                    },
6149                    error: function () { }
6150                });
6151            }
6152        }
6153
6154        function toggleMonth(month_id) {
6155            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
6156            var active_day = $("#mec_list_view_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
6157
6158            if (active_day <= 9) active_day = "0" + active_day;
6159
6160            // Toggle Month Navigator
6161            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
6162            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
6163
6164            // Toggle Month
6165            $("#mec_skin_" + settings.id + " .mec-month-container").hide();
6166            $("#mec_list_view_month_" + settings.id + "_" + month_id).show();
6167
6168            // Add selected class
6169            $("#mec_skin_" + settings.id + " .mec-month-container").removeClass("mec-month-container-selected");
6170            $("#mec_list_view_month_" + settings.id + "_" + month_id).addClass("mec-month-container-selected");
6171
6172            jQuery(document).trigger('mec_toggle_month', [settings, month_i
6172d]);
6173        }
6174
6175        var sf;
6176
6177        function sed() {
6178            // Single Event Display
6179            $(".mec-skin-list-wrap#mec_skin_" + settings.id).off('click').on('click', '[data-event-id]', function (e) {
6180                e.preventDefault();
6181                var href = $(this).attr('href');
6182
6183                var id = $(this).data('event-id');
6184                var occurrence = get_parameter_by_name('occurrence', href);
6185                var time = get_parameter_by_name('time', href);
6186
6187                if( 'undefined' == typeof id ){
6188                    return;
6189                }
6190
6191                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
6192            });
6193        }
6194    };
6195}(jQuery));
6196
6197// MEC Grid VIEW Fluent PLUGIN
6198(function ($) {
6199    $.fn.mecGridViewFluent = function (options) {
6200        var active_month;
6201        var active_year;
6202
6203        // Default Options
6204        var settings = $.extend({
6205            // These are the defaults.
6206            today: null,
6207            id: 0,
6208            events_label: 'Events',
6209            event_label: 'Event',
6210            month_navigator: 0,
6211            atts: '',
6212            active_month: {},
6213            next_month: {},
6214            sf: {},
6215            ajax_url: '',
6216        }, options);
6217
6218        initLoadMore('#mec_grid_view_month_' + settings.id + '_' + settings.month_id);
6219
6220        function initLoadMore(monthID) {
6221            $(monthID).off().on('click', '.mec-load-more-button', function () {
6222                loadMore(this);
6223            });
6224        }
6225
6226        function loadMore(This) {
6227            // Add loading Class
6228            var currentLoadMore = $(This);
6229            currentLoadMore.addClass("mec-load-more-loading");
6230            var endDate = currentLoadMore.data('end-date');
6231            var maximumDate = currentLoadMore.data('maximum-date');
6232            var nextOffset = currentLoadMore.data('next-offset');
6233            var year = currentLoadMore.data('year');
6234            var month = currentLoadMore.data('month');
6235
6236            $.ajax({
6237                url: settings.ajax_url,
6238                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",
6239                dataType: "json",
6240                type: "post",
6241                success: function (response) {
6242                    currentLoadMore.parent().remove();
6243                    if (response.count != '0') {
6244                        // Append Items
6245                        $('#mec_grid_view_month_' + settings.id + '_' + response.current_month.id).append(response.month);
6246
6247                        // Single Event Method
6248                        if (settings.sed_method != '0') {
6249                            sed();
6250                        }
6251
6252                        mecFluentCustomScrollbar();
6253                        initLoadMore('#mec_grid_view_month_' + settings.id + '_' + response.current_month.id);
6254                    }
6255
6256                    $(document).trigger('mec_load_more_init',['grid',settings]);
6257                },
6258                error: function () { }
6259            });
6260        }
6261
6262        // Initialize Month Navigator
6263        if (settings.month_navigator) initMonthNavigator();
6264
6265        // Load Next Month in background
6266        setMonth(settings.next_month.year, settings.next_month.month, true);
6267
6268        var initMonth;
6269        var initYear;
6270        active_month = initMonth = settings.active_month.month;
6271        active_year = initYear = settings.active_month.year;
6272
6273        // Search Widget
6274        if ( settings.sf.container !== '' ) {
6275            sf = $(settings.sf.container).mecSearchForm({
6276                id: settings.id,
6277                refine: settings.sf.refine,
6278                ajax_url: settings.ajax_url,
6279                start_date: settings.start_date,
6280                atts: settings.atts,
6281                callback: function (atts) {
6282                    settings.atts = atts;
6283                    search(active_year, active_month);
6284                }
6285            });
6286
6287            $(settings.sf.container).addClass('mec-skin-search-init');
6288        }
6289
6290        // Single Event Method
6291        if (settings.sed_method != '0') {
6292            sed();
6293        }
6294
6295        function initMonthNavigator() {
6296            $("#mec_skin_" + settings.id + " .mec-load-month").off().on("click", function () {
6297                var year = $(this).data("mec-year");
6298                var month = $(this).data("mec-month");
6299                setMonth(year, month, false, true);
6300            });
6301        }
6302
6303        function parseQuery(queryString) {
6304            var query = {};
6305            var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');
6306            for (var i = 0; i < pairs.length; i++) {
6307                var pair = pairs[i].split('=');
6308                query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
6309            }
6310            return query;
6311        }
6312
6313        function updateQueryStringParameter(uri, key, val) {
6314            return uri
6315                .replace(RegExp("([?&]" + key + "(?=[=&#]|$)[^#&]*|(?=#|$))"), "&" + key + "=" + encodeURIComponent(val));
6316        }
6317
6318        function search(year, month) {
6319            // Add Loading Class
6320            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6321            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
6322
6323            var ObjAtts = parseQuery(settings.atts);
6324            if (!(ObjAtts['sf[month'] || ObjAtts['sf[year]'])) {
6325                settings.atts = updateQueryStringParameter(settings.atts.trim(), 'sf[year]', initYear);
6326                settings.atts = updateQueryStringParameter(settings.atts.trim(), 'sf[month]', initMonth);
6327            }
6328
6329            $.ajax({
6330                url: settings.ajax_url,
6331                data: "action=mec_grid_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
6332                dataType: "json",
6333                type: "post",
6334                success: function (response) {
6335                    active_month = response.current_month.month;
6336                    active_year = response.current_month.year;
6337
6338                    // Append Month
6339                    $("#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>');
6340
6341                    // Append Month Navigator
6342                    $("#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>');
6343
6344                    // Re-initialize Month Navigator
6345                    initMonthNavigator();
6346
6347                    // Toggle Month
6348                    toggleMonth(response.current_month.id);
6349
6350                    initLoadMore('#mec_grid_view_month_' + settings.id + '_' + response.current_month.id);
6351
6352                    // Remove loading Class
6353                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
6354
6355                    mecFluentCustomScrollbar();
6356
6357                    $(document).trigger('mec_search_init',['grid',settings,response]);
6358                },
6359                error: function () { }
6360            });
6361        }
6362
6363        function setMonth(year, month, do_in_background, navigator_click) {
6364            if (typeof do_in_background === "undefined") do_in_background = false;
6365            navigator_click = navigator_click || false;
6366            var month_id = year + "" + month;
6367
6368            if (!do_in_background) {
6369                active_month = month;
6370                active_year = year;
6371            }
6372
6373            // Month exists so we just show it
6374            if ($("#mec_grid_view_month_" + settings.id + "_" + month_id).length) {
6375                // Toggle Month
6376                toggleMonth(month_id);
6377                mecFluentCustomScrollbar();
6378            } else {
6379                if (!do_in_background) {
6380                    // Add Loading Class
6381                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6382                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
6383                }
6384
6385                $.ajax({
6386                    url: settings.ajax_url,
6387                    data: "action=mec_grid_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
6388                    dataType: "json",
6389                    type: "post",
6390                    success: function (response) {
6391                        // Append Month
6392                        $("#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>');
6393
6394                        // Append Month Navigator
6395                        $("#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>');
6396
6397                        // Re-initialize Month Navigator
6398                        initMonthNavigator();
6399                        initLoadMore('#mec_grid_view_month_' + settings.id + '_' + response.current_month.id);
6400
6401                        if (!do_in_background) {
6402                            // Toggle Month
6403                            toggleMonth(response.current_month.id);
6404
6405                            // Remove loading Class
6406                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
6407
6408
6409                            // Set Month Filter values in search widget
6410                            $("#mec_sf_month_" + settings.id).val(month);
6411                            $("#mec_sf_year_" + settings.id).val(year);
6412                        } else {
6413                            $("#mec_grid_view_month_" + settings.id + "_" + response.current_month.id).hide();
6414                            $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
6415                        }
6416                        if (typeof custom_month !== undefined) var custom_month;
6417                        if (typeof custom_month != undefined) {
6418                            if (custom_month == 'true') {
6419                                $(".mec-month-container .mec-calendar-day").removeClass('mec-has-event');
6420                                $(".mec-month-container .mec-calendar-day").removeClass('mec-selected-day');
6421                                $('.mec-calendar-day').unbind('click');
6422                            }
6423                        }
6424                        if (!do_in_background) {
6425                            mecFluentCustomScrollbar();
6426                        }
6427                    },
6428                    error: function () { }
6429                });
6430            }
6431        }
6432
6433        function toggleMonth(month_id) {
6434            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
6435            var active_day = $("#mec_grid_view_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
6436
6437            if (active_day <= 9) active_day = "0" + active_day;
6438
6439            // Toggle Month Navigator
6440            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
6441            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
6442
6443            // Toggle Month
6444            $("#mec_skin_" + settings.id + " .mec-month-container").hide();
6445            $("#mec_grid_view_month_" + settings.id + "_" + month_id).show();
6446
6447            // Add selected class
6448            $("#mec_skin_" + settings.id + " .mec-month-container").removeClass("mec-month-container-selected");
6449            $("#mec_grid_view_month_" + settings.id + "_" + month_id).addClass("mec-month-container-selected");
6450
6451            jQuery(document).trigger('mec_toggle_month', [settings, month_id]);
6452        }
6453
6454        var sf;
6455
6456        function sed() {
6457            // Single Event Display
6458            $(".mec-skin-grid-wrap#mec_skin_" + settings.id).off('click').on('click', '[data-event-id]', function (e) {
6459                e.preventDefault();
6460                var href = $(this).attr('href');
6461
6462                var id = $(this).data('event-id');
6463                var occurrence = get_parameter_by_name('occurrence', href);
6464                var time = get_parameter_by_name('time', href);
6465
6466                if( 'undefined' == typeof id ){
6467                    return;
6468                }
6469
6470                mecSingleEventDisplayer.getSinglePage(id, occurrence, time, settings.ajax_url, settings.sed_method, settings.image_popup);
6471            });
6472        }
6473    };
6474}(jQuery));
6475
6476// MEC Booking Calendar
6477(function($)
6478{
6479    $.fn.mecBookingCalendar = function(options)
6480    {
6481        var active_month;
6482        var active_year;
6483
6484        // Default Options
6485        var settings = $.extend({
6486            // These are the defaults.
6487            active_month: {},
6488            next_month: {},
6489            ajax_url: '',
6490            event_id: '',
6491            selected_datetime: '',
6492        }, options);
6493
6494        // Initialize Month Navigator
6495        initMonthNavigator();
6496
6497        active_month = settings.active_month.month;
6498        active_year = settings.active_month.year;
6499
6500        // Set onclick Listeners
6501        setListeners();
6502
6503        function initMonthNavigator()
6504        {
6505            // Add onclick event
6506            $("#mec_booking_calendar_" + settings.id + " .mec-load-month").off('click').on('click', function()
6507            {
6508                var year = $(this).data('mec-year');
6509                var month = $(this).data('mec-month');
6510
6511                setMonth(year, month);
6512            });
6513        }
6514
6515        function setMonth(year, month)
6516        {
6517            active_month = month;
6518            active_year = year;
6519
6520            var $modal = $('.mec-modal-result');
6521
6522            // Add Loading Class
6523            if ($modal.length === 0) $('.mec-wrap').append('<div class="mec-modal-result"></div>');
6524            $modal.addClass('mec-month-navigator-loading');
6525
6526            $.ajax(
6527            {
6528                url: settings.ajax_url,
6529                data: "action=mec_booking_calendar_load_month&event_id=" + settings.event_id + "&uniqueid=" + settings.id + "&year=" + year + "&month=" + month,
6530                dataType: "json",
6531                type: "post",
6532                success: function(response)
6533                {
6534                    const $month_wrapper = $('#mec_booking_calendar_wrapper' + settings.id + ' .mec-select-date-calendar-container');
6535
6536                    // HTML
6537                    $month_wrapper.html(response.html);
6538
6539                    // Hide Message
6540                    $('#mec_book_form' + settings.id + ' .mec-ticket-unavailable-spots').addClass('mec-util-hidden');
6541
6542                    // Empty the Date
6543                    $('#mec_book_form_date' + settings.id).val('').trigger('change');
6544
6545                    // Remove loading Class
6546                    $modal.removeClass("mec-month-navigator-loading");
6547
6548                    setTimeout(function()
6549                    {
6550                        $month_wrapper.find($('.mec-booking-calendar-date')).first().trigger('click');
6551                    }, 200);
6552                },
6553                error: function()
6554                {
6555                    // Remove loading Class
6556                    $modal.removeClass("mec-month-navigator-loading");
6557                }
6558            });
6559        }
6560
6561        function setListeners()
6562        {
6563            // Add the onclick event
6564            $("#mec_booking_calendar_" + settings.id + " .mec-booking-calendar-date").off('click').on('click', function(e)
6565            {
6566                e.preventDefault();
6567
6568                // Activate
6569                $("#mec_booking_calendar_" + settings.id + " .mec-booking-calendar-date").removeClass('mec-active');
6570                $("#mec_booking_calendar_" + settings.id + " .mec-calendar-day").removeClass('mec-wrap-active');
6571                $(this).addClass('mec-active');
6572                $(this).parents('.mec-calendar-day').addClass('mec-wrap-active');
6573
6574                // Set Data
6575                var timestamp = $(this).data('timestamp');
6576                $('#mec_book_form_date' + settings.id).val(timestamp).trigger('change');
6577
6578                // Set Formatted Date
6579                var formatted_date = $(this).data('formatted-date');
6580                $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-formatted-date").html(formatted_date);
6581            });
6582
6583            // Add the onclick event on calendar date
6584            $("#mec_booking_calendar_" + settings.id + " .mec-has-one-repeat-in-day").off('click').on('click', function(e)
6585            {
6586                e.preventDefault();
6587
6588                var mec_date_value = $(this).attr('data-timestamp');
6589
6590                // Activate
6591                $("#mec_booking_calendar_" + settings.id + " .mec-has-one-repeat-in-day").removeClass('mec-active');
6592                $("#mec_booking_calendar_" + settings.id + " [data-timestamp=\"" + mec_date_value + "\"]").addClass('mec-active');
6593
6594                // Set Data
6595                var timestamp = $(this).data('timestamp');
6596                $('#mec_book_form_date' + settings.id).val(timestamp).trigger('change');
6597
6598                // Set Formatted Date
6599                var formatted_date = $(this).data('formatted-date');
6600                $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-formatted-date").html(formatted_date);
6601            });
6602
6603            // If day has some time slot
6604            $("#mec_booking_calendar_" + settings.id + " .mec-has-time-repeat .mec-calendar-novel-selected-day").off('click').on('click', function(e)
6605            {
6606                $("#mec_booking_calendar_" + settings.id + " .mec-has-time-repeat").removeClass('mec-wrap-active').removeClass('mec-active');
6607                $(".mec-has-time-repeat").find('.mec-booking-calendar-date').hide();
6608                $(this).parents(".mec-has-time-repeat").find('.mec-booking-calendar-date').toggle();
6609                $(this).parents(".mec-has-time-repeat").addClass('mec-active');
6610            });
6611
6612            var $has_time_repeat = $("#mec_booking_calendar_" + settings.id + " .mec-has-time-repeat");
6613
6614            // Find more time in tooltip to set button
6615            $has_time_repeat.on('mouseenter', function()
6616            {
6617                var moreTimeFinder = $(this).find(".mec-booking-calendar-date");
6618                if(moreTimeFinder.length >= 1)
6619                {
6620                    $(this).find(".mec-booking-tooltip").removeClass("multiple-time");
6621                    $(this).find(".mec-booking-tooltip").addClass("multiple-time");
6622                }
6623
6624                $(this).find(".mec-booking-calendar-date").css("display", "block");
6625            });
6626
6627            $has_time_repeat.off('click').on('click', function()
6628            {
6629                $("#mec_booking_calendar_" + settings.id + " .mec-has-time-repeat").removeClass('mec-wrap-active').removeClass('mec-active');
6630                $(this).addClass("mec-active");
6631
6632                // Send message under the calendar for multiple time in one day
6633                var sendTimeToMessage = $(this).find(".multiple-time .mec-booking-calendar-date.mec-active").text();
6634
6635                $(this).parents().eq(3).find(".mec-choosen-time-message").removeClass("disable");
6636                $(this).parents().eq(3).find(".mec-choosen-time-message .mec-choosen-time").empty();
6637                $(this).parents().eq(3).find(".mec-choosen-time-message .mec-choosen-time").append(sendTimeToMessage);
6638            });
6639
6640            // Selected DateTime
6641            if(settings.selected_datetime && $has_time_repeat.length)
6642            {
6643                var $selected_datetime = $(".mec-booking-calendar-date[data-timestamp='"+settings.selected_datetime+"']");
6644                if($selected_datetime.length)
6645                {
6646                    $selected_datetime.parent().addClass("multiple-time");
6647                    $selected_datetime.addClass("mec-active").trigger('click');
6648                }
6649            }
6650
6651            // Dropdown Toggle
6652            $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-dropdown").off('click').on('click', function()
6653            {
6654                var $up = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-icons-up");
6655                var $down = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-icons-down");
6656                var $calendar = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-container");
6657
6658                var $current = $(this).find($('.mec-select-date-calendar-icons span:not(.mec-util-hidden)'));
6659                if($current.hasClass('mec-select-date-calendar-icons-up'))
6660                {
6661                    $up.addClass('mec-util-hidden');
6662                    $down.removeClass('mec-util-hidden');
6663                    $calendar.removeClass('mec-util-hidden');
6664
6665                    setTimeout(function()
6666                    {
6667                        $('body').off('click').on('click', mec_calendar_close_calendar_on_body_click);
6668                    }, 100);
6669                }
6670                else
6671                {
6672                    $up.removeClass('mec-util-hidden');
6673                    $down.addClass('mec-util-hidden');
6674                    $calendar.addClass('mec-util-hidden');
6675                }
6676            });
6677
6678            function mec_calendar_close_calendar_on_body_click(e)
6679            {
6680                var $up = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-icons-up");
6681                var $down = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-icons-down");
6682                var $calendar = $("#mec_booking_calendar_wrapper" + settings.id + " .mec-select-date-calendar-container");
6683
6684                // Click was inside calendar
6685                if($(e.target).closest($calendar).length > 0) return false;
6686
6687                $up.removeClass('mec-util-hidden');
6688                $down.addClass('mec-util-hidden');
6689                $calendar.addClass('mec-util-hidden');
6690
6691                $('body').off('click', mec_calendar_close_calendar_on_body_click);
6692            }
6693        }
6694    };
6695}(jQuery));
6696
6697// MEC Cart
6698(function($)
6699{
6700    $.fn.mecCart = function(options)
6701    {
6702        // Default Options
6703        var settings = $.extend({
6704            // These are the defaults.
6705            ajax_url: '',
6706        }, options);
6707
6708        // Set DOM Listeners
6709        setListeners();
6710
6711        function setListeners()
6712        {
6713            // Add the onclick event
6714            $(".mec-cart-remove-transactions").off('click').on('click', function(e)
6715            {
6716                e.preventDefault();
6717
6718                var transaction_id = $(this).data('transaction-id');
6719                remove(transaction_id);
6720            });
6721
6722            $('#mec_cart_coupon_form').off('submit').on('submit', function(e)
6723            {
6724                e.preventDefault();
6725                coupon();
6726            });
6727        }
6728
6729        function remove(transaction_id)
6730        {
6731            var $wrapper = $('.mec-cart');
6732
6733            // Add loading Class
6734            $wrapper.addClass('mec-loading');
6735
6736            $.ajax(
6737            {
6738                url: settings.ajax_url,
6739                data: "action=mec_cart_remove_transaction&transaction_id=" + transaction_id,
6740                dataType: "json",
6741                type: "post",
6742                success: function(response)
6743                {
6744                    // Remove Loading Class
6745                    $wrapper.removeClass('mec-loading');
6746
6747                    if(response.success)
6748                    {
6749                        // Remove Transaction Row
6750                        $('#mec_cart_transactions_'+transaction_id).remove();
6751
6752                        if(!$('#mec_cart_transactions_table>tbody>tr').length)
6753                        {
6754                            $('#mec_cart_transactions_table').remove();
6755                            $('.mec-cart-coupon-checkout-action').remove();
6756                            $('.mec-cart-empty-wrapper').removeClass('mec-util-hidden');
6757                        }
6758
6759                        // Update Total Payable Price
6760                        $('#mec_cart_total_payable').html(response.total);
6761                    }
6762                },
6763                error: function(){}
6764            });
6765        }
6766
6767        function coupon()
6768        {
6769            var $wrapper = $('.mec-cart');
6770            var $message = $('#mec_cart_message');
6771
6772            // Add loading Class
6773            $wrapper.addClass('mec-loading');
6774
6775            // Empty Message
6776            $message.html('');
6777
6778            var coupon = $('#mec_cart_coupon_input').val();
6779
6780            $.ajax(
6781            {
6782                url: settings.ajax_url,
6783                data: "action=mec_cart_coupon&coupon=" + coupon,
6784                dataType: "json",
6785                type: "post",
6786                success: function(response)
6787                {
6788                    // Remove Loading Class
6789                    $wrapper.removeClass('mec-loading');
6790
6791                    if(response.success)
6792                    {
6793                        $message.html('<p class="mec-success">'+response.message+'</p>');
6794
6795                        setTimeout(function()
6796                        {
6797                            location.reload();
6798                        }, 2000);
6799                    }
6800                    else
6801                    {
6802                        $message.html('<p class="mec-error">'+response.message+'</p>');
6803                    }
6804                },
6805                error: function(){}
6806            });
6807        }
6808    };
6809}(jQuery));
6810
6811// MEC Checkout
6812(function($)
6813{
6814    $.fn.mecCheckout = function(options)
6815    {
6816        // Default Options
6817        var settings = $.extend({
6818            // These are the defaults.
6819            ajax_url: '',
6820        }, options);
6821
6822        // Set DOM Listeners
6823        setListeners();
6824
6825        function setListeners()
6826        {
6827            // Add the onclick event
6828            $(".mec-checkout-gateways-radio").off('change').on('change', function(e)
6829            {
6830                e.preventDefault();
6831
6832                var gateway_id = $('.mec-checkout-gateways-radio:checked').val();
6833
6834                // Hide all gateway forms
6835                jQuery(".mec-checkout-form-gateway-checkout").addClass("mec-util-hidden");
6836                jQuery(".mec-checkout-price-details-wrapper").addClass("mec-util-hidden");
6837                jQuery(".mec-checkout-price-wrapper").addClass("mec-util-hidden");
6838
6839                // Show selected gateway form
6840                jQuery("#mec_checkout_form_gateway_checkout" + gateway_id).removeClass("mec-util-hidden");
6841                jQuery("#mec-checkout-price-details-wrapper-" + gateway_id).removeClass("mec-util-hidden");
6842                jQuery("#mec-checkout-price-wrapper-" + gateway_id).removeClass("mec-util-hidden");
6843            });
6844
6845            if( $(".mec-checkout-gateways-radio:first").length ){
6846
6847                $(".mec-checkout-gateways-radio:first").prop('checked',true).change();
6848            }else{
6849
6850                jQuery(".mec-checkout-price-details-wrapper:first").removeClass("mec-util-hidden");
6851            }
6852
6853            $('#mec_checkout_form_free_booking').off('submit').on('submit', function(e)
6854            {
6855                e.preventDefault();
6856                free();
6857            });
6858        }
6859
6860        function free()
6861        {
6862            var $wrapper = $('.mec-checkout');
6863            var $message = $('#mec_checkout_message');
6864
6865            // Add loading Class
6866            $wrapper.addClass('mec-loading');
6867
6868            // Empty Message
6869            $message.html('');
6870
6871            var data = $('#mec_checkout_form_free_booking').serialize();
6872
6873            $.ajax(
6874            {
6875                url: settings.ajax_url,
6876                data: data,
6877                dataType: "json",
6878                type: "post",
6879                success: function(response)
6880                {
6881                    // Remove Loading Class
6882                    $wrapper.removeClass('mec-loading');
6883
6884                    if(response.success)
6885                    {
6886                        $message.html('<div class="mec-success">'+response.message+'</div>');
6887                        $wrapper.slideUp().html('');
6888                    }
6889                    else
6890                    {
6891                        $message.html('<div class="mec-error">'+response.message+'</div>');
6892                    }
6893                },
6894                error: function(){}
6895            });
6896        }
6897    };
6898}(jQuery));
6899
6900// Booking Shortcode Scripts
6901jQuery(document).ready(function()
6902{
6903    // Event Gallery
6904    mec_init_event_gallery();
6905
6906    if (jQuery('.mec-booking-shortcode').length < 0) {
6907        return;
6908    }
6909    // Events
6910    if (jQuery().niceSelect) {
6911        jQuery('.mec-booking-shortcode').find('.mec-book-first').find('select').niceSelect();
6912    }
6913
6914    // General Calendar
6915    if ( jQuery("#gCalendarMonthFilterButton").length > 0 ) {
6916        jQuery("#gCalendarMonthFilterButton").monthPicker({
6917            format: "yyyy-mm",
6918            viewMode: "months",
6919            minViewMode: "months"
6920        })
6921        jQuery("#gCalendarMonthFilterButton").monthPicker('hide')
6922    }
6923});
6924
6925function mec_init_event_gallery()
6926{
6927    // Event Gallery
6928    jQuery('.mec-event-gallery-wrapper').each(function()
6929    {
6930        let $gallery = jQuery(this);
6931
6932        $gallery.find(jQuery('.mec-event-gallery-list li')).on('click', function()
6933        {
6934            let $image = jQuery(this).find(jQuery('img'));
6935            let src = $image.data('full-src');
6936            let alt = $image.attr('alt');
6937
6938            jQuery('.mec-event-gallery-image img')
6939                .fadeTo(200, 0.8)
6940                .attr('src', src)
6941                .attr('alt', alt)
6942                .fadeTo(200, 1);
6943        });
6944    });
6945}
6946
6947function mec_toggle_shortcode_pagination(shortcode_id, method)
6948{
6949    if(method === 'show')
6950    {
6951        jQuery("#mec_skin_" + shortcode_id + " .mec-load-more-button").removeClass("mec-util-hidden");
6952        jQuery('#mec-nextprev-wrap-' + shortcode_id + ' .mec-nextprev-next-button').removeClass("mec-util-hidden");
6953    }
6954    else
6955    {
6956        jQuery("#mec_skin_" + shortcode_id + " .mec-load-more-button").addClass("mec-util-hidden");
6957        jQuery('#mec-nextprev-wrap-' + shortcode_id + ' .mec-nextprev-next-button').addClass("mec-util-hidden");
6958        jQuery('#mec-nextprev-wrap-' + shortcode_id + ' .mec-nextprev-hide-button').addClass("mec-util-hidden");
6959    }
6960}
6961
6962// MEC COUNTDOWN MODULE
6963(function ($) {
6964    $.fn.mecProgressBar = function () {
6965        let $bar = $(this).find($('progress'));
6966        let value = parseInt($bar.attr('value'));
6967        const max = parseInt($bar.attr('max'));
6968
6969        var passed = 0;
6970        var remained = 0;
6971        var passed_days;
6972        var passed_hours;
6973        var passed_minutes;
6974        var passed_seconds;
6975        var remained_days;
6976        var remained_hours;
6977        var remained_minutes;
6978        var remained_seconds;
6979
6980        var $time_passed = $(this).find($('.mec-progress-bar-time-passed'));
6981        var $time_remained = $(this).find($('.mec-progress-bar-time-remained'));
6982
6983        startProgress();
6984        var interval = setInterval(startProgress, 1000);
6985
6986        function startProgress() {
6987            if(value >= max) {
6988                clearInterval(interval);
6989                return;
6990            }
6991            value += 1;
6992            $bar.attr('value', value);
6993
6994            let passed_str = '';
6995            let remained_str = '';
6996
6997            passed = value;
6998            remained = max - passed;
6999
7000            passed_days = Math.floor(passed / 86400);
7001            passed -= passed_days * 86400;
7002
7003            passed_hours = Math.floor(passed / 3600);
7004            passed -= passed_hours * 3600;
7005
7006            passed_minutes = Math.floor(passed / 60);
7007            passed -= passed_minutes * 60;
7008
7009            passed_seconds = passed;
7010
7011            remained_days = Math.floor(remained / 86400);
7012            remained -= remained_days * 86400;
7013
7014            remained_hours = Math.floor(remained / 3600);
7015            remained -= remained_hours * 3600;
7016
7017            remained_minutes = Math.floor(remained / 60);
7018            remained -= remained_minutes * 60;
7019
7020            remained_seconds = remained;
7021
7022            if(passed_days > 0) passed_str += (passed_days < 10 ? '0' : '') + passed_days + ':';
7023            if(passed_days > 0 || passed_hours > 0) passed_str += (passed_hours < 10 ? '0' : '') + passed_hours + ':';
7024            passed_str += (passed_minutes < 10 ? '0' : '') + passed_minutes + ':';
7025            passed_str += (passed_seconds < 10 ? '0' : '') + passed_seconds;
7026
7027            if(remained_days >
7027 0) remained_str += (remained_days < 10 ? '0' : '') + remained_days + ':';
7028            if(remained_days > 0 || remained_hours > 0) remained_str += (remained_hours < 10 ? '0' : '') + remained_hours + ':';
7029            remained_str += (remained_minutes < 10 ? '0' : '') + remained_minutes + ':';
7030            remained_str += (remained_seconds < 10 ? '0' : '') + remained_seconds;
7031
7032            $time_passed.html(passed_str);
7033            $time_remained.html(remained_str);
7034        }
7035    };
7036}(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.