PageSourceSearch

https://www.thaisolarenergy.com/wp-content/plugins/modern-events-calendar-lite/assets/js/frontend.js?ver=7.3.1

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