PageSourceSearch

https://geotronics.sk/wp-content/plugins/modern-events-calendar-lite/assets/js/frontend.js?ver=6.4.2

js geotronics.sk collected 2026-10-08 21:15:06 UTC 241,122 bytes, 5,626 lines download raw bytes

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

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.