PageSourceSearch

https://leh.org/wp-content/plugins/modern-events-calendar/assets/js/frontend.js?ver=6.6.12

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

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.