PageSourceSearch

https://www.turniton.co.uk/wp-content/plugins/modern-events-calendar-lite/assets/js/frontend.js?ver=7.8.0

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