PageSourceSearch

https://nbmediacoop.org/wp-content/plugins/modern-events-calendar-…/assets/js/frontend.js?ver=6.2.0.1790918449

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

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.