PageSourceSearch

https://www.santacomba.es/wp-content/plugins/modern-events-calendar/assets/js/frontend.js?ver=7.23.0

js santacomba.es collected 2026-09-25 07:35:36 UTC 303,633 bytes, 7,141 lines download raw bytes

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