PageSourceSearch

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

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

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.