PageSourceSearch

https://www.ponarseurasia.org/wp-content/plugins/modern-events-calendar/assets/js/frontend.js?ver=6.1.6

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

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.