PageSourceSearch

https://newhorizonumc.com/wp-content/plugins/modern-events-calendar-lite/assets/js/frontend.js?ver=7.25.0

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