PageSourceSearch

https://www.oakfarmvineyards.com/wp-content/plugins/modern-events-…/assets/js/frontend.js?ver=7.9.0

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