PageSourceSearch

https://www.thetahealinginstituteofknowledge.com/wp-content/plugin…/js/frontend.js?ver=7.24.0.1790300233

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