PageSourceSearch

https://redeemer-pca.org/wp-content/plugins/modern-events-calendar-lite/assets/js/frontend.js?ver=6.5.1

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

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.