PageSourceSearch

https://gunsnh.com/wp-content/plugins/modern-events-calendar/assets/js/frontend.js?ver=6.10.5.1790436253

js gunsnh.com collected 2026-09-26 15:25:30 UTC 288,819 bytes, 6,959 lines download raw bytes

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