PageSourceSearch

https://www.in-global.eu/wp-content/plugins/modern-events-calendar-lite/assets/js/frontend.js?ver=7.26.0

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