PageSourceSearch

https://urbanmatter.com/chicago/wp-content/plugins/modern-events-calendar/assets/js/frontend.js?ver=5.2.3

js urbanmatter.com collected 2026-09-24 06:56:56 UTC 161,449 bytes, 3,853 lines download raw bytes

1// MEC Single Event Displayer
2var mecSingleEventDisplayer = {
3    getSinglePage: function (id, occurrence, ajaxurl, layout, image_popup) {
4        if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
5        jQuery('.mec-modal-result').addClass('mec-modal-preloader');
6
7        jQuery.ajax({
8            url: ajaxurl,
9            data: "action=mec_load_single_page&id=" + id + (occurrence != null ? "&occurrence=" + occurrence : "") + "&layout=" + layout,
10            type: "get",
11            success: function (response) {
12                jQuery('.mec-modal-result').removeClass("mec-modal-preloader");
13                //lity(response);
14                jQuery.featherlight(response);
15
16                setTimeout(function () {
17                    grecaptcha.render("g-recaptcha", {
18                        sitekey: mecdata.recapcha_key
19                    });
20                }, 1000);
21
22                if (image_popup != 0) {
23                    if (jQuery('.featherlight-content .mec-events-content a img').length > 0) {
24                        jQuery('.featherlight-content .mec-events-content a img').each(function () {
25                            jQuery(this).closest('a').attr('data-featherlight', 'image');
26                        });
27                    }
28                }
29            },
30            error: function () {}
31        });
32    }
33};
34
35// MEC SEARCH FORM PLUGIN
36(function ($) {
37    $.fn.mecSearchForm = function (options) {
38        // Default Options
39        var settings = $.extend({
40            // These are the defaults.
41            id: 0,
42            search_form_element: '',
43            atts: '',
44            callback: function () {}
45        }, options);
46
47        $("#mec_sf_category_" + settings.id).on('change', function (e) {
48            search();
49        });
50
51        $("#mec_sf_location_" + settings.id).on('change', function (e) {
52            search();
53        });
54
55        $("#mec_sf_organizer_" + settings.id).on('change', function (e) {
56            search();
57        });
58
59        $("#mec_sf_speaker_" + settings.id).on('change', function (e) {
60            search();
61        });
62
63        $("#mec_sf_tag_" + settings.id).on('change', function (e) {
64            search();
65        });
66
67
68        $("#mec_sf_label_" + settings.id).on('change', function (e) {
69            search();
70        });
71
72        $("#mec_sf_s_" + settings.id).on('change', function (e) {
73            search();
74        });
75       
76        $("#mec_sf_address_s_" + settings.id).on('change', function (e) {
77            search();
78        });
79        
80        var mec_sf_month_selector = "#mec_sf_month_" + settings.id;
81        var  mec_sf_year_selector = "#mec_sf_year_" + settings.id;
82        mec_sf_month_selector += (', ' + mec_sf_year_selector);
83        
84        $(mec_sf_month_selector).on('change', function (e) {
85            if($(mec_sf_year_selector).find('option:eq(0)').val() == 'none')
86            {
87                var mec_month_val = $(mec_sf_month_selector).val();
88                var mec_year_val = $(mec_sf_year_selector).val();
89
90                if((mec_month_val != 'none' && mec_year_val != 'none') || ((mec_month_val == 'none' && mec_year_val == 'none'))) search();
91            } else search();
92        });
93
94        $("#mec_sf_event_type_" + settings.id).on('change', function (e) {
95            search();
96        });
97
98        $("#mec_sf_event_type_2_" + settings.id).on('change', function (e) {
99            search();
100        });
101        $("#mec_sf_attribute_" + settings.id).on('change', function (e) {
102            search();
103        });
104
105        if (settings.fields && settings.fields != null && settings.fields.length > 0) {
106            for (var k in settings.fields) {
107                $("#mec_sf_" + settings.fields[k] + '_' + settings.id).on('change', function (e) {
108                    search();
109                });
110            }
111        }
112
113        function search() {
114            var s = $("#mec_sf_s_" + settings.id).length ? $("#mec_sf_s_" + settings.id).val() : '';
115            var address = $("#mec_sf_address_s_" + settings.id).length ? $("#mec_sf_address_s_" + settings.id).val() : '';
116            var category = $("#mec_sf_category_" + settings.id).length ? $("#mec_sf_category_" + settings.id).val() : '';
117            var location = $("#mec_sf_location_" + settings.id).length ? $("#mec_sf_location_" + settings.id).val() : '';
118            var organizer = $("#mec_sf_organizer_" + settings.id).length ? $("#mec_sf_organizer_" + settings.id).val() : '';
119            var speaker = $("#mec_sf_speaker_" + settings.id).length ? $("#mec_sf_speaker_" + settings.id).val() : '';
120            var tag = $("#mec_sf_tag_" + settings.id).length ? $("#mec_sf_tag_" + settings.id).val() : '';
121            var label = $("#mec_sf_label_" + settings.id).length ? $("#mec_sf_label_" + settings.id).val() : '';
122            var month = $("#mec_sf_month_" + settings.id).length ? $("#mec_sf_month_" + settings.id).val() : '';
123            var year = $("#mec_sf_year_" + settings.id).length ? $("#mec_sf_year_" + settings.id).val() : '';
124            var event_type = $("#mec_sf_event_type_" + settings.id).length ? $("#mec_sf_event_type_" + settings.id).val() : '';
125            var event_type_2 = $("#mec_sf_event_type_2_" + settings.id).length ? $("#mec_sf_event_type_2_" + settings.id).val() : '';
126            var attribute = $("#mec_sf_attribute_" + settings.id).length ? $("#mec_sf_attribute_" + settings.id).val() : '';
127
128            if (year === 'none' && month === 'none') {
129                year = '';
130                month = '';
131            }
132
133            var addation_attr = '';
134
135            if (settings.fields && settings.fields != null && settings.fields.length > 0) {
136                for (var k in settings.fields) {
137                    var field = '#mec_sf_' + settings.fields[k] + '_' + settings.id;
138                    var val = $(field).length ? $(field).val() : '';
139                    addation_attr += '&sf[' + settings.fields[k] + ']=' + val;
140                }
141            }
142
143            var atts = settings.atts + '&sf[s]=' + s + '&sf[address]=' + address + '&sf[month]=' + month + '&sf[year]=' + year + '&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;
144            settings.callback(atts);
145        }
146    };
147
148}(jQuery));
149
150// MEC FULL CALENDAR PLUGIN
151(function ($) {
152    $.fn.mecFullCalendar = function (options) {
153        // Default Options
154        var settings = $.extend({
155            // These are the defaults.
156            id: 0,
157            atts: '',
158            ajax_url: '',
159            sf: {},
160            skin: '',
161        }, options);
162
163        // Set onclick Listeners
164        setListeners();
165
166        var sf;
167
168        function setListeners() {
169            // Search Widget
170            if (settings.sf.container !== '') {
171                sf = $(settings.sf.container).mecSearchForm({
172                    id: settings.id,
173                    atts: settings.atts,
174                    callback: function (atts) {
175                        settings.atts = atts;
176                        search();
177                    }
178                });
179            }
180
181            // Add the onclick event
182            $("#mec_skin_" + settings.id + " .mec-totalcal-box .mec-totalcal-view span").on('click', function (e) {
183                e.preventDefault();
184                var skin = $(this).data('skin');
185                var mec_month_select = $('#mec_sf_month_' + settings.id);
186                var mec_year_select = $('#mec_sf_year_' + settings.id);
187
188                if(mec_year_select.val() == 'none')
189                {
190                    mec_year_select.find('option').each(function()
191                    {
192                        var option_val = $(this).val();
193                        if(option_val == mecdata.current_year) mec_year_select.val(option_val);
194                    });
195                }
196
197                if(skin == 'list')
198                {
199                    var mec_filter_none = '<option class="mec-none-item" value="none">' + $('#mec-filter-none').val() + '</option>';
200                    if(mec_month_select.find('.mec-none-item').length == 0) mec_month_select.prepend(mec_filter_none);
201                    if(mec_year_select.find('.mec-none-item').length == 0) mec_year_select.prepend(mec_filter_none);
202                }
203                else
204                {
205                    if(mec_month_select.find('.mec-none-item').length != 0) mec_month_select.find('.mec-none-item').remove();
206                    if(mec_year_select.find('.mec-none-item').length != 0) mec_year_select.find('.mec-none-item').remove();
207                }
208
209                $(this).addClass('mec-totalcalview-selected').siblings().removeClass('mec-totalcalview-selected');
210
211                loadSkin(skin);
212            });
213        }
214
215        function loadSkin(skin) {
216            // Set new Skin
217            settings.skin = skin;
218
219            // Add Loading Class
220            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
221            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
222
223            $.ajax({
224                url: settings.ajax_url,
225                data: "action=mec_full_calendar_switch_skin&skin=" + skin + "&" + settings.atts + "&apply_sf_date=1&sed=" + settings.sed_method,
226                dataType: "json",
227                type: "post",
228                success: function (response) {
229                    $("#mec_full_calendar_container_" + settings.id).html(response);
230
231                    // Remove loader
232                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
233
234                    // Focus First Active Day
235                    mecFocusDay(settings);
236                },
237                error: function () {}
238            });
239        }
240
241        function search() {
242            // Add Loading Class
243            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
244            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
245
246            $.ajax({
247                url: settings.ajax_url,
248                data: "action=mec_full_calendar_switch_skin&skin=" + settings.skin + "&" + settings.atts + "&apply_sf_date=1",
249                dataType: "json",
250                type: "post",
251                success: function (response) {
252                    $("#mec_full_calendar_container_" + settings.id).html(response);
253
254                    // Remove loader
255                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
256
257                    // Focus First Active Day
258                    mecFocusDay(settings);
259
260                    // Focus First Active Week
261                    mec_focus_week(settings.id);
262                },
263                error: function () {}
264            });
265        }
266    };
267
268}(jQuery));
269
270// MEC YEARLY VIEW PLUGIN
271(function ($) {
272    $.fn.mecYearlyView = function (options) {
273        var active_year;
274
275        // Default Options
276        var settings = $.extend({
277            // These are the defaults.
278            today: null,
279            id: 0,
280            events_label: 'Events',
281            event_label: 'Event',
282            year_navigator: 0,
283            atts: '',
284            next_year: {},
285            sf: {},
286            ajax_url: '',
287        }, options);
288
289        // Initialize Year Navigator
290        if (settings.year_navigator) initYearNavigator();
291
292        // Load Next Year in background
293        if (settings.year_navigator) setYear(settings.next_year.year, true);
294
295        // Set onclick Listeners
296        setListeners();
297
298        // load more
299        $(document).on("click", "#mec_skin_events_" + settings.id + " .mec-load-more-button", function () {
300            var year = $(this).parent().parent().parent().data('year-id');
301            loadMoreButton(year);
302        });
303
304        // Search Widget
305        if (settings.sf.container !== '') {
306            sf = $(settings.sf.container).mecSearchForm({
307                id: settings.id,
308                atts: settings.atts,
309                callback: function (atts) {
310                    settings.atts = atts;
311                    active_year = $('.mec-yearly-view-wrap .mec-year-navigator').filter(function () {
312                        return $(this).css('display') == "block";
313                    });
314                    active_year = parseInt(active_year.find('h2').text());
315                    search(active_year);
316                }
317            });
318        }
319
320        function initYearNavigator() {
321            // Remove the onclick event
322            $("#mec_skin_" + settings.id + " .mec-load-year").off("click");
323
324            // Add onclick event
325            $("#mec_skin_" + settings.id + " .mec-load-year").on("click", function () {
326                var year = $(this).data("mec-year");
327                setYear(year);
328            });
329        }
330
331        function search(year) {
332            // Add Loading Class
333            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
334            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
335
336            $.ajax({
337                url: settings.ajax_url,
338                data: "action=mec_yearly_view_load_year&mec_year=" + year + "&" + settings.atts + "&apply_sf_date=1",
339                dataType: "json",
340                type: "post",
341                success: function (response) {
342                    active_year = response.current_year.year;
343
344                    // Append Year
345                    $("#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>');
346
347                    // Append Year Navigator
348                    $("#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>');
349
350                    // Re-initialize Year Navigator
351                    initYearNavigator();
352
353                    // Set onclick Listeners
354                    setListeners();
355
356                    // Toggle Year
357                    toggleYear(response.current_year.id);
358
359                    // Remove loading Class
360                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
361
362                },
363                error: function () {}
364            });
365        }
366
367        function setYear(year, do_in_background) {
368            if (typeof do_in_background === "undefined") do_in_background = false;
369
370            var year_id = year;
371            active_year = year;
372
373            // Year exists so we just show it
374            if ($("#mec_yearly_view_year_" + settings.id + "_" + year_id).length) {
375                // Toggle Year
376                toggleYear(year_id);
377            } else {
378                if (!do_in_background) {
379                    // Add Loading Class
380                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
381                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
382                }
383
384                $.ajax({
385                    url: settings.ajax_url,
386                    data: "action=mec_yearly_view_load_year&mec_year=" + year + "&" + settings.atts + "&apply_sf_date=0",
387                    dataType: "json",
388                    type: "post",
389                    success: function (response) {
390                        // Append Year
391                        $("#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>');
392
393                        // Append Year Navigator
394                        $("#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>');
395
396                        // Re-initialize Year Navigator
397                        initYearNavigator();
398
399                        // Set onclick Listeners
400                        setListeners();
401
402                        if (!do_in_background) {
403                            // Toggle Year
404                            toggleYear(response.current_year.id);
405
406                            // Remove loading Class
407                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
408
409                            // Set Year Filter values in search widget
410                            $("#mec_sf_year_" + settings.id).val(year);
411                        } else {
412                            $("#mec_yearly_view_year_" + settings.id + "_" + response.current_year.id).hide();
413                            $("#mec_year_navigator_" + settings.id + "_" + response.current_year.id).hide();
414                        }
415                    },
416                    error: function () {}
417                });
418            }
419        }
420
421        function toggleYear(year_id) {
422            // Toggle Year Navigator
423            $("#mec_skin_" + settings.id + " .mec-year-navigator").hide();
424            $("#mec_year_navigator_" + settings.id + "_" + year_id).show();
425
426            // Toggle Year
427            $("#mec_skin_" + settings.id + " .mec-year-container").hide();
428            $("#mec_yearly_view_year_" + settings.id + "_" + year_id).show();
429        }
430
431        var sf;
432
433        function setListeners() {
434            // Single Event Method
435            if (settings.sed_method != '0') {
436                sed();
437            }
438        }
439
440        function sed() {
441            // Single Event Display
442            $("#mec_skin_" + settings.id + " .mec-agenda-event-title a").off('click').on('click', function (e) {
443                e.preventDefault();
444                var href = $(this).attr('href');
445
446                var id = $(this).data('event-id');
447                var occurrence = get_parameter_by_name('occurrence', href);
448                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
449            });
450        }
451
452        function loadMoreButton(year) {
453            var $max_count, $current_count = 0;
454            $max_count = $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-yearly-max").data('count');
455            $current_count = $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-util-hidden").length;
456
457            if ($current_count > 10) {
458                for (var i = 0; i < 10; i++) {
459                    $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-util-hidden").slice(0, 2).each(function () {
460                        $(this).removeClass('mec-util-hidden');
461                    });
462                }
463            }
464
465            if ($current_count < 10 && $current_count != 0) {
466                for (var j = 0; j < $current_count; j++) {
467                    $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-util-hidden").slice(0, 2).each(function () {
468                        $(this).removeClass('mec-util-hidden');
469                        $("#mec_yearly_view_year_" + settings.id + "_" + year + " .mec-load-more-wrap").css('display', 'none');
470                    });
471                }
472            }
473        }
474    };
475
476}(jQuery));
477
478// MEC MONTHLY VIEW PLUGIN
479(function ($) {
480    $.fn.mecMonthlyView = function (options) {
481        var active_month;
482        var active_year;
483
484        // Default Options
485        var settings = $.extend({
486            // These are the defaults.
487            today: null,
488            id: 0,
489            events_label: 'Events',
490            event_label: 'Event',
491            month_navigator: 0,
492            atts: '',
493            active_month: {},
494            next_month: {},
495            sf: {},
496            ajax_url: '',
497        }, options);
498
499        // Initialize Month Navigator
500        if (settings.month_navigator) initMonthNavigator();
501
502        // Load Next Month in background
503        setMonth(settings.next_month.year, settings.next_month.month, true);
504
505        active_month = settings.active_month.month;
506        active_year = settings.active_month.year;
507
508        // Set onclick Listeners
509        setListeners();
510
511        // Search Widget
512        if (settings.sf.container !== '') {
513            sf = $(settings.sf.container).mecSearchForm({
514                id: settings.id,
515                atts: settings.atts,
516                callback: function (atts) {
517                    settings.atts = atts;
518                    search(active_year, active_month);
519                }
520            });
521        }
522
523        function initMonthNavigator() {
524            // Remove the onclick event
525            $("#mec_skin_" + settings.id + " .mec-load-month").off("click");
526
527            // Add onclick event
528            $("#mec_skin_" + settings.id + " .mec-load-month").on("click", function () {
529                var year = $(this).data("mec-year");
530                var month = $(this).data("mec-month");
531
532                setMonth(year, month, false, true);
533            });
534        }
535
536        function search(year, month) {
537            // Add Loading Class
538            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
539            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
540
541            $.ajax({
542                url: settings.ajax_url,
543                data: "action=mec_monthly_view_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
544                dataType: "json",
545                type: "post",
546                success: function (response) {
547                    active_month = response.current_month.month;
548                    active_year = response.current_month.year;
549
550                    // Append Month
551                    $("#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>');
552
553                    // Append Month Navigator
554                    $("#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>');
555
556                    // Append Events Side
557                    $("#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>');
558
559                    // Re-initialize Month Navigator
560                    initMonthNavigator();
561
562                    // Set onclick Listeners
563                    setListeners();
564
565                    // Toggle Month
566                    toggleMonth(response.current_month.id);
567
568                    // Remove loading Class
569                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
570
571                },
572                error: function () {}
573            });
574        }
575
576        function setMonth(year, month, do_in_background, navigator_click) {
577            if (typeof do_in_background === "undefined") do_in_background = false;
578            navigator_click = navigator_click || false;
579            var month_id = year + "" + month;
580
581            if (!do_in_background) {
582                active_month = month;
583                active_year = year;
584            }
585
586            // Month exists so we just show it
587            if ($("#mec_monthly_view_month_" + settings.id + "_" + month_id).length) {
588                // Toggle Month
589                toggleMonth(month_id);
590            } else {
591                if (!do_in_background) {
592
593                    // Add Loading Class
594                    if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
595                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
596                }
597
598                $.ajax({
599                    url: settings.ajax_url,
600                    data: "action=mec_monthly_view_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
601                    dataType: "json",
602                    type: "post",
603                    success: function (response) {
604                        // Append Month
605                        $("#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>');
606
607                        // Append Month Navigator
608                        $("#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>');
609
610                        // Append Events Side
611                        $("#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>');
612
613                        // Re-initialize Month Navigator
614                        initMonthNavigator();
615
616                        // Set onclick Listeners
617                        setListeners();
618
619                        if (!do_in_background) {
620                            // Toggle Month
621                            toggleMonth(response.current_month.id);
622
623                            // Remove loading Class
624                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
625
626
627                            // Set Month Filter values in search widget
628                            $("#mec_sf_month_" + settings.id).val(month);
629                            $("#mec_sf_year_" + settings.id).val(year);
630                        } else {
631                            $("#mec_monthly_view_month_" + settings.id + "_" + response.current_month.id).hide();
632                            $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
633                            $("#mec_month_side_" + settings.id + "_" + response.current_month.id).hide();
634                        }
635                        if (typeof custom_month !== undefined) var custom_month;
636                        if (typeof custom_month != undefined) {
637                            if (custom_month == 'true') {
638                                $(".mec-month-container .mec-calendar-day").removeClass('mec-has-event');
639                                $(".mec-month-container .mec-calendar-day").removeClass('mec-selected-day');
640                                $('.mec-calendar-day').unbind('click');
641                            }
642                        }
643
644                    },
645                    error: function () {}
646                });
647            }
648        }
649
650        function toggleMonth(month_id) {
651            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
652            var active_day = $("#mec_monthly_view_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
653
654            if (active_day <= 9) active_day = "0" + active_day;
655
656            // Toggle Month Navigator
657            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
658            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
659
660            // Toggle Month
661            $("#mec_skin_" + settings.id + " .mec-month-container").hide();
662            $("#mec_monthly_view_month_" + settings.id + "_" + month_id).show();
663
664            // Add selected class
665            $("#mec_skin_" + settings.id + " .mec-month-container").removeClass("mec-month-container-selected");
666            $("#mec_monthly_view_month_" + settings.id + "_" + month_id).addClass("mec-month-container-selected");
667
668            // Toggle Events Side
669            $("#mec_skin_" + settings.id + " .mec-month-side").hide();
670            $("#mec_month_side_" + settings.id + "_" + month_id).show();
671        }
672
673        var sf;
674
675        function setListeners() {
676            // Remove the onclick event
677            $("#mec_skin_" + settings.id + " .mec-has-event").off("click");
678
679            // Add the onclick event
680            $("#mec_skin_" + settings.id + " .mec-has-event").on('click', function (e) {
681                e.preventDefault();
682
683                // define variables
684                var $this = $(this),
685                    data_mec_cell = $this.data('mec-cell'),
686                    month_id = $this.data('month');
687
688                $("#mec_monthly_view_month_" + settings.id + "_" + month_id + " .mec-calendar-day").removeClass('mec-selected-day');
689                $this.addClass('mec-selected-day');
690
691                $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
692                $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
693
694                $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
695                $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
696            });
697
698            mec_tooltip();
699
700            // Single Event Method
701            if (settings.sed_method != '0') {
702                sed();
703            }
704
705            if (settings.style == 'novel') {
706                if ($('.mec-single-event-novel').length > 0) {
707                    $('.mec-single-event-novel').colourBrightness();
708                    $('.mec-single-event-novel').each(function () {
709                        $(this).colourBrightness()
710                    });
711                }
712            }
713        }
714
715        function sed() {
716            // Single Event Display
717            $("#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) {
718                e.preventDefault();
719                var href = $(this).attr('href');
720
721                var id = $(this).data('event-id');
722                var occurrence = get_parameter_by_name('occurrence', href);
723                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
724            });
725
726        }
727
728        function mec_tooltip() {
729            if ($('.mec-monthly-tooltip').length > 1) {
730                if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) > 768) {
731                    $('.mec-monthly-tooltip').tooltipster({
732                        theme: 'tooltipster-shadow',
733                        interactive: true,
734                        delay: 100,
735                        minWidth: 350,
736                        maxWidth: 350
737                    });
738                    if (settings.sed_method != '0') {
739                        sed();
740                    }
741                } else {
742                    var touchtime = 0;
743                    $(".mec-monthly-tooltip").on("click", function (event) {
744                        event.preventDefault();
745                        if (touchtime == 0) {
746                            $('.mec-monthly-tooltip').tooltipster({
747                                theme: 'tooltipster-shadow',
748                                interactive: true,
749                                delay: 100,
750                                minWidth: 350,
751                                maxWidth: 350,
752                                trigger: "custom",
753                                triggerOpen: {
754                                    click: true,
755                                    tap: true
756                                },
757                                triggerClose: {
758                                    click: true,
759                                    tap: true
760                                }
761                            });
762                            touchtime = new Date().getTime();
763                        } else {
764                            if (((new Date().getTime()) - touchtime) < 200) {
765                                var el = $(this);
766                                var link = el.attr("href");
767                                window.location = link;
768                                touchtime = 0;
769                            } else {
770                                touchtime = new Date().getTime();
771                            }
772                        }
773                    });
774                }
775            }
776        }
777    };
778
779}(jQuery));
780
781// MEC WEEKLY VIEW PLUGIN
782(function ($) {
783    $.fn.mecWeeklyView = function (options) {
784        var active_year;
785        var active_month;
786        var active_week;
787        var active_week_number;
788
789        // Default Options
790        var settings = $.extend({
791            // These are the defaults.
792            today: null,
793            week: 1,
794            id: 0,
795            current_year: null,
796            current_month: null,
797            changeWeekElement: '.mec-load-week',
798            month_navigator: 0,
799            atts: '',
800            ajax_url: '',
801            sf: {}
802        }, options);
803
804        // Set Active Time
805        active_year = settings.current_year;
806        active_month = settings.current_month;
807
808        // Search Widget
809        if (settings.sf.container !== '') {
810            $(settings.sf.container).mecSearchForm({
811                id: settings.id,
812                atts: settings.atts,
813                callback: function (atts) {
814                    settings.atts = atts;
815                    search(active_year, active_month, active_week);
816                }
817            });
818        }
819
820        // Set The Week
821        setThisWeek(settings.month_id + settings.week);
822
823        // Set Listeners
824        setListeners();
825
826        // Initialize Month Navigator
827        if (settings.month_navigator) initMonthNavigator(settings.month_id);
828
829        function setListeners() {
830            $(settings.changeWeekElement).off('click').on('click', function (e) {
831                var week = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('week-id');
832                var max_weeks = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('max-weeks');
833                var new_week_number = active_week_number;
834
835                if ($(this).hasClass('mec-previous-month')) {
836                    week = parseInt(week) - 1;
837                    new_week_number--;
838                } else {
839                    week = parseInt(week) + 1;
840                    new_week_number++;
841                }
842
843                if (new_week_number <= 1 || new_week_number >= max_weeks) {
844                    // Disable Next/Previous Button
845                    $(this).css({
846                        'opacity': .6,
847                        'cursor': 'default'
848                    });
849                    $(this).find('i').css({
850                        'opacity': .6,
851                        'cursor': 'default'
852                    });
853                } else {
854                    // Enable Next/Previous Buttons
855                    $('#mec_skin_' + settings.id + ' .mec-load-week, #mec_skin_' + settings.id + ' .mec-load-week i').css({
856                        'opacity': 1,
857                        'cursor': 'pointer'
858                    });
859                }
860
861                // Week is not in valid range
862                if (new_week_number === 0 || new_week_number > max_weeks) {} else {
863                    setThisWeek(week);
864                }
865            });
866
867            // Single Event Method
868            if (settings.sed_method != '0') {
869                sed();
870            }
871        }
872
873        function setThisWeek(week, auto_focus) {
874            if (typeof auto_focus === 'undefined') auto_focus = false;
875
876            // Week is not exists
877            if (!$('#mec_weekly_view_week_' + settings.id + '_' + week).length) {
878                return setThisWeek((parseInt(week) - 1));
879            }
880
881            // Set week to active in week list
882            $('#mec_skin_' + settings.id + ' .mec-weekly-view-week').removeClass('mec-weekly-view-week-active');
883            $('#mec_weekly_view_week_' + settings.id + '_' + week).addClass('mec-weekly-view-week-active');
884
885            // Show related events
886            $('#mec_skin_' + settings.id + ' .mec-weekly-view-date-events').addClass('mec-util-hidden');
887            $('.mec-weekly-view-week-' + settings.id + '-' + week).removeClass('mec-util-hidden');
888
889            active_week = week;
890            active_week_number = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('week-number');
891
892            $('#mec_skin_' + settings.id + ' .mec-calendar-d-top').find('.mec-current-week').find('span').remove();
893            $('#mec_skin_' + settings.id + ' .mec-calendar-d-top').find('.mec-current-week').append('<span>' + active_week_number + '</span>');
894
895            if (active_week_number === 1) {
896                // Disable Previous Button
897                $('#mec_skin_' + settings.id + ' .mec-previous-month.mec-load-week').css({
898                    'opacity': .6,
899                    'cursor': 'default'
900                });
901                $('#mec_skin_' + settings.id + ' .mec-previous-month.mec-load-week').find('i').css({
902                    'opacity': .6,
903                    'cursor': 'default'
904                });
905            }
906
907            // Go To Event Week
908            if (auto_focus) mec_focus_week(settings.id);
909        }
910
911        function initMonthNavigator(month_id) {
912            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').off('click');
913            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').on('click', function () {
914                var year = $(this).data('mec-year');
915                var month = $(this).data('mec-month');
916
917                setMonth(year, month, active_week, true);
918            });
919        }
920
921        function search(year, month, week, navigation_click) {
922            var week_number = (String(week).slice(-1));
923
924            // Add Loading Class
925            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
926            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
927
928            $.ajax({
929                url: settings.ajax_url,
930                data: "action=mec_weekly_view_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_week=" + week_number + "&" + settings.atts + "&apply_sf_date=1",
931                dataType: "json",
932                type: "post",
933                success: function (response) {
934                    // Remove Loading Class
935                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
936
937                    // Append Month
938                    $("#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>');
939
940                    // Append Month Navigator
941                    $("#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>');
942
943                    // Set Listeners
944                    setListeners();
945
946                    // Toggle Month
947                    toggleMonth(response.current_month.id);
948
949                    // Set active week
950                    setThisWeek(response.week_id, true);
951                },
952                error: function () {}
953            });
954        }
955
956        function setMonth(year, month, week, navigation_click) {
957            var month_id = '' + year + month;
958            var week_number = (String(week).slice(-1));
959
960            active_month = month;
961            active_year = year;
962            navigation_click = navigation_click || false;
963
964            // Month exists so we just show it
965            if ($("#mec_weekly_view_month_" + settings.id + "_" + month_id).length) {
966                // Toggle Month
967                toggleMonth(month_id);
968
969                // Set active week
970                setThisWeek('' + month_id + week_number);
971            } else {
972                // Add Loading Class
973                if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
974                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
975
976                $.ajax({
977                    url: settings.ajax_url,
978                    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,
979                    dataType: "json",
980                    type: "post",
981                    success: function (response) {
982                        // Remove Loading Class
983                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
984
985                        // Append Month
986                        $("#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>');
987
988                        // Append Month Navigator
989                        $("#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>');
990
991                        // Set Listeners
992                        setListeners();
993
994                        // Toggle Month
995                        toggleMonth(response.current_month.id);
996
997                        // Set active week
998                        setThisWeek(response.week_id, true);
999
1000                        // Set Month Filter values in search widget
1001                        $("#mec_sf_month_" + settings.id).val(month);
1002                        $("#mec_sf_year_" + settings.id).val(year);
1003                    },
1004                    error: function () {}
1005                });
1006            }
1007        }
1008
1009        function toggleMonth(month_id) {
1010            // Show related events
1011            $('#mec_skin_' + settings.id + ' .mec-month-container').addClass('mec-util-hidden');
1012            $('#mec_weekly_view_month_' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
1013
1014            $('#mec_skin_' + settings.id + ' .mec-month-navigator').addClass('mec-util-hidden');
1015            $('#mec_month_navigator' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
1016
1017            // Initialize Month Navigator
1018            if (settings.month_navigator) initMonthNavigator(month_id);
1019        }
1020
1021        function sed() {
1022            // Single Event Display
1023            $("#mec_skin_" + settings.id + " .mec-event-title a").off('click').on('click', function (e) {
1024                e.preventDefault();
1025                var href = $(this).attr('href');
1026
1027                var id = $(this).data('event-id');
1028                var occurrence = get_parameter_by_name('occurrence', href);
1029
1030                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
1031            });
1032        }
1033    };
1034
1035}(jQuery));
1036
1037// MEC DAILY VIEW PLUGIN
1038(function ($) {
1039    $.fn.mecDailyView = function (options) {
1040        var active_month;
1041        var active_year;
1042        var active_day;
1043
1044        // Default Options
1045        var settings = $.extend({
1046            // These are the defaults.
1047            today: null,
1048            id: 0,
1049            changeDayElement: '.mec-daily-view-day',
1050            events_label: 'Events',
1051            event_label: 'Event',
1052            month_navigator: 0,
1053            atts: '',
1054            ajax_url: '',
1055            sf: {},
1056        }, options);
1057
1058        active_month = settings.month;
1059        active_year = settings.year;
1060        active_day = settings.day;
1061
1062        // Set Today
1063        setToday(settings.today);
1064
1065        // Set Listeners
1066        setListeners();
1067
1068        // Initialize Month Navigator
1069        if (settings.month_navigator) initMonthNavigator(settings.month_id);
1070
1071        // Initialize Days Slider
1072        initDaysSlider(settings.month_id);
1073
1074        // Slider first event day focus when page load.
1075        mecFocusDay(settings);
1076
1077        // Search Widget
1078        if (settings.sf.container !== '') {
1079            $(settings.sf.container).mecSearchForm({
1080                id: settings.id,
1081                atts: settings.atts,
1082                callback: function (atts) {
1083                    settings.atts = atts;
1084                    search(active_year, active_month, active_day);
1085                }
1086            });
1087        }
1088
1089        function setListeners() {
1090            $(settings.changeDayElement).on('click', function () {
1091                var today = $(this).data('day-id');
1092                setToday(today);
1093            });
1094
1095            // Single Event Method
1096            if (settings.sed_method != '0') {
1097                sed();
1098            }
1099        }
1100
1101        var current_monthday;
1102
1103        function setToday(today) {
1104            // For caring about 31st, 30th and 29th of some months
1105            if (!$('#mec_daily_view_day' + settings.id + '_' + today).length) {
1106                setToday(parseInt(today) - 1);
1107                return false;
1108            }
1109
1110            // Set day to active in day list
1111            $('.mec-daily-view-day').removeClass('mec-daily-view-day-active mec-color');
1112            $('#mec_daily_view_day' + settings.id + '_' + today).addClass('mec-daily-view-day-active mec-color');
1113
1114            // Show related events
1115            $('.mec-daily-view-date-events').addClass('mec-util-hidden');
1116            $('#mec_daily_view_date_events' + settings.id + '_' + today).removeClass('mec-util-hidden');
1117
1118            // Set today label
1119            var weekday = $('#mec_daily_view_day' + settings.id + '_' + today).data('day-weekday');
1120            var monthday = $('#mec_daily_view_day' + settings.id + '_' + today).data('day-monthday');
1121            var count = $('#mec_daily_view_day' + settings.id + '_' + today).data('events-count');
1122            var month_id = $('#mec_daily_view_day' + settings.id + '_' + today).data('month-id');
1123
1124            $('#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>');
1125
1126            if (monthday <= 9) current_monthday = '0' + monthday;
1127            else current_monthday = monthday;
1128        }
1129
1130        function initMonthNavigator(month_id) {
1131            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').off('click');
1132            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').on('click', function () {
1133                var year = $(this).data('mec-year');
1134                var month = $(this).data('mec-month');
1135
1136                setMonth(year, month, current_monthday, true);
1137            });
1138        }
1139
1140        function initDaysSlider(month_id, day_id) {
1141            // Set Global Month Id
1142            mec_g_month_id = month_id;
1143
1144            // Check RTL website
1145            var owl_rtl = $('body').hasClass('rtl') ? true : false;
1146
1147            // Init Days slider
1148            var owl = $("#mec-owl-calendar-d-table-" + settings.id + "-" + month_id);
1149            owl.owlCarousel({
1150                responsiveClass: true,
1151                responsive: {
1152                    0: {
1153                        items: 2,
1154                    },
1155                    479: {
1156                        items: 4,
1157                    },
1158                    767: {
1159                        items: 7,
1160                    },
1161                    960: {
1162                        items: 14,
1163                    },
1164                    1000: {
1165                        items: 19,
1166                    },
1167                    1200: {
1168                        items: 22,
1169                    }
1170                },
1171                dots: false,
1172                loop: false,
1173                rtl: owl_rtl,
1174            });
1175
1176            // Custom Navigation Events
1177            $("#mec_daily_view_month_" + settings.id + "_" + month_id + " .mec-table-d-next").click(function (e) {
1178                e.preventDefault();
1179                owl.trigger('next.owl.carousel');
1180            });
1181
1182            $("#mec_daily_view_month_" + settings.id + "_" + month_id + " .mec-table-d-prev").click(function (e) {
1183                e.preventDefault();
1184                owl.trigger('prev.owl.carousel');
1185            });
1186
1187            if (typeof day_id === 'undefined') day_id = $('.mec-daily-view-day-active').data('day-id');
1188
1189            var today_str = day_id.toString().substring(6, 8);
1190            var today_int = parseInt(today_str);
1191
1192            owl.trigger('owl.goTo', [today_int]);
1193        }
1194
1195        function search(year, month, day) {
1196            // Add Loading Class
1197            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1198            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1199
1200            $.ajax({
1201                url: settings.ajax_url,
1202                data: "action=mec_daily_view_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_day=" + day + "&" + settings.atts + "&apply_sf_date=1",
1203                dataType: "json",
1204                type: "post",
1205                success: function (response) {
1206                    // Remove Loading Class
1207                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1208
1209                    // Append Month
1210                    $("#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>');
1211
1212                    // Append Month Navigator
1213                    $("#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>');
1214
1215                    // Set Listeners
1216                    setListeners();
1217
1218                    active_year = response.current_month.year;
1219                    active_month = response.current_month.month;
1220
1221                    // Toggle Month
1222                    toggleMonth(response.current_month.id, '' + active_year + active_month + active_day);
1223
1224                    // Set Today
1225                    setToday('' + active_year + active_month + active_day);
1226
1227                    // Focus First Active Day
1228                    mecFocusDay(settings);
1229                },
1230                error: function () {}
1231            });
1232        }
1233
1234        function setMonth(year, month, day, navigation_click) {
1235            var month_id = '' + year + month;
1236
1237            active_month = month;
1238            active_year = year;
1239            active_day = day;
1240            navigation_click = navigation_click || false;
1241
1242            // Month exists so we just show it
1243            if ($("#mec_daily_view_month_" + settings.id + "_" + month_id).length) {
1244                // Toggle Month
1245                toggleMonth(month_id);
1246
1247                // Set Today
1248                setToday('' + month_id + day);
1249            } else {
1250                // Add Loading Class
1251                if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1252                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1253
1254                $.ajax({
1255                    url: settings.ajax_url,
1256                    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,
1257                    dataType: "json",
1258                    type: "post",
1259                    success: function (response) {
1260                        // Remove Loading Class
1261                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1262
1263                        // Append Month
1264                        $("#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>');
1265
1266                        // Append Month Navigator
1267                        $("#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>');
1268
1269                        // Set Listeners
1270                        setListeners();
1271
1272                        // Toggle Month
1273                        toggleMonth(response.current_month.id, '' + year + month + '01');
1274
1275                        // Set Today
1276                        setToday('' + year + month + '01');
1277
1278                        // Set Month Filter values in search widget
1279                        $("#mec_sf_month_" + settings.id).val(month);
1280                        $("#mec_sf_year_" + settings.id).val(year);
1281                    },
1282                    error: function () {}
1283                });
1284            }
1285        }
1286
1287        function toggleMonth(month_id, day_id) {
1288            // Show related events
1289            $('#mec_skin_' + settings.id + ' .mec-month-container').addClass('mec-util-hidden');
1290            $('#mec_daily_view_month_' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
1291
1292            $('#mec_skin_' + settings.id + ' .mec-month-navigator').addClass('mec-util-hidden');
1293            $('#mec_month_navigator' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
1294
1295            // Initialize Month Navigator
1296            if (settings.month_navigator) initMonthNavigator(month_id);
1297
1298            // Initialize Days Slider
1299            initDaysSlider(month_id, day_id);
1300
1301            // Focus First Active Day
1302            mecFocusDay(settings);
1303        }
1304
1305        function sed() {
1306            // Single Event Display
1307            $("#mec_skin_" + settings.id + " .mec-event-title a").off('click').on('click', function (e) {
1308                e.preventDefault();
1309                var href = $(this).attr('href');
1310
1311                var id = $(this).data('event-id');
1312                var occurrence = get_parameter_by_name('occurrence', href);
1313
1314                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
1315            });
1316        }
1317    };
1318
1319}(jQuery));
1320
1321// MEC TIMETABLE PLUGIN
1322(function ($) {
1323    $.fn.mecTimeTable = function (options) {
1324        var active_year;
1325        var active_month;
1326        var active_week;
1327        var active_week_number;
1328        var active_day;
1329
1330        // Default Options
1331        var settings = $.extend({
1332            // These are the defaults.
1333            today: null,
1334            week: 1,
1335            active_day: 1,
1336            id: 0,
1337            changeWeekElement: '.mec-load-week',
1338            month_navigator: 0,
1339            atts: '',
1340            ajax_url: '',
1341            sf: {}
1342        }, options);
1343
1344        // Search Widget
1345        if (settings.sf.container !== '') {
1346            $(settings.sf.container).mecSearchForm({
1347                id: settings.id,
1348                atts: settings.atts,
1349                callback: function (atts) {
1350                    settings.atts = atts;
1351                    search(active_year, active_month, active_week, active_day);
1352                }
1353            });
1354        }
1355
1356        // Set The Week
1357        setThisWeek(settings.month_id + settings.week, settings.active_day);
1358
1359        // Set Listeners
1360        setListeners();
1361
1362        // Initialize Month Navigator
1363        if (settings.month_navigator) initMonthNavigator(settings.month_id);
1364
1365        function setListeners() {
1366            // Change Week Listener
1367            $(settings.changeWeekElement).off('click').on('click', function () {
1368                var week = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('week-id');
1369                var max_weeks = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('max-weeks');
1370                var new_week_number = active_week_number;
1371
1372                if ($(this).hasClass('mec-previous-month')) {
1373                    week = parseInt(week) - 1;
1374                    new_week_number--;
1375                } else {
1376                    week = parseInt(week) + 1;
1377                    new_week_number++;
1378                }
1379
1380                if (new_week_number <= 1 || new_week_number >= max_weeks) {
1381                    // Disable Next/Previous Button
1382                    $(this).css({
1383                        'opacity': .6,
1384                        'cursor': 'default'
1385                    });
1386                    $(this).find('i').css({
1387                        'opacity': .6,
1388                        'cursor': 'default'
1389                    });
1390                } else {
1391                    // Enable Next/Previous Buttons
1392                    $('#mec_skin_' + settings.id + ' .mec-load-week, #mec_skin_' + settings.id + ' .mec-load-week i').css({
1393                        'opacity': 1,
1394                        'cursor': 'pointer'
1395                    });
1396                }
1397
1398                // Week is not in valid range
1399                if (new_week_number === 0 || new_week_number > max_weeks) {} else {
1400                    setThisWeek(week);
1401                }
1402            });
1403
1404            // Change Day Listener
1405            $('#mec_skin_' + settings.id + ' .mec-weekly-view-week dt').not('.mec-timetable-has-no-event').off('click').on('click', function () {
1406                var day = $(this).data('date-id');
1407                setDay(day);
1408            });
1409
1410            // Single Event Method
1411            if (settings.sed_method != '0') {
1412                sed();
1413            }
1414        }
1415
1416        function setThisWeek(week, day) {
1417            // Week is not exists
1418            if (!$('#mec_weekly_view_week_' + settings.id + '_' + week).length) {
1419                return setThisWeek((parseInt(week) - 1), day);
1420            }
1421
1422            // Set week to active in week list
1423            $('#mec_skin_' + settings.id + ' .mec-weekly-view-week').removeClass('mec-weekly-view-week-active');
1424            $('#mec_weekly_view_week_' + settings.id + '_' + week).addClass('mec-weekly-view-week-active');
1425
1426            setDay(day);
1427
1428            active_week = week;
1429            active_week_number = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active').data('week-number');
1430
1431            $('#mec_skin_' + settings.id + ' .mec-calendar-d-top').find('.mec-current-week').find('span').remove();
1432            $('#mec_skin_' + settings.id + ' .mec-calendar-d-top').find('.mec-current-week').append('<span>' + active_week_number + '</span>');
1433
1434            if (active_week_number === 1) {
1435                // Disable Previous Button
1436                $('#mec_skin_' + settings.id + ' .mec-previous-month.mec-load-week').css({
1437                    'opacity': .6,
1438                    'cursor': 'default'
1439                });
1440                $('#mec_skin_' + settings.id + ' .mec-previous-month.mec-load-week').find('i').css({
1441                    'opacity': .6,
1442                    'cursor': 'default'
1443                });
1444            }
1445        }
1446
1447        function setDay(day) {
1448            // Find the date automatically
1449            if (typeof day === 'undefined') {
1450                day = $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active dt').not('.mec-timetable-has-no-event').first().data('date-id');
1451            }
1452
1453            // Activate the date element
1454            $('#mec_skin_' + settings.id + ' dt').removeClass('mec-timetable-day-active');
1455            $('#mec_skin_' + settings.id + ' .mec-weekly-view-week-active dt[data-date-id="' + day + '"]').addClass('mec-timetable-day-active');
1456
1457            // Show related events
1458            $('#mec_skin_' + settings.id + ' .mec-weekly-view-date-events').addClass('mec-util-hidden');
1459            $('#mec_weekly_view_date_events' + settings.id + '_' + day).removeClass('mec-util-hidden');
1460        }
1461
1462        function initMonthNavigator(month_id) {
1463            $('#mec_month_navigator' + settings.id + '_' + month_id + ' .mec-load-month').off('click').on('click', function () {
1464                var year = $(this).data('mec-year');
1465                var month = $(this).data('mec-month');
1466
1467                setMonth(year, month, active_week);
1468            });
1469        }
1470
1471        function search(year, month, week) {
1472            var week_number = (String(week).slice(-1));
1473
1474            // Add Loading Class
1475            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1476            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1477
1478            // Set MEC Year And Month If Undefined
1479            year = typeof year == 'undefined' ? '' : year;
1480            month = typeof month == 'undefined' ? '' : month;
1481
1482            // Append current week to data body for used after filter.
1483            $('body').data('currentweek', $("#mec_skin_events_" + settings.id).find('.mec-current-week > span').html());
1484
1485            $.ajax({
1486                url: settings.ajax_url,
1487                data: "action=mec_timetable_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_week=" + week_number + "&" + settings.atts + "&apply_sf_date=1",
1488                dataType: "json",
1489                type: "post",
1490                success: function (response) {
1491                    // Remove Loading Class
1492                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1493
1494                    // Append Month
1495                    $("#mec_skin_events_" + settings.id).html('<div class="mec-month-container" id="mec_timetable_month_' + settings.id + '_' + response.current_month.id + '">' + response.month + '</div>');
1496
1497                    // Append Month Navigator
1498                    $("#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>');
1499
1500                    // Set Listeners
1501                    setListeners();
1502
1503                    // Toggle Month
1504                    toggleMonth(response.current_month.id);
1505
1506                    // Set active week
1507                    setThisWeek(response.week_id);
1508
1509                    // Focus First Active Week
1510                    mec_focus_week(settings.id, 'timetable');
1511                },
1512                error: function () {}
1513            });
1514        }
1515
1516        function setMonth(year, month, week) {
1517            var month_id = '' + year + month;
1518            var week_number = (String(week).slice(-1));
1519
1520            active_month = month;
1521            active_year = year;
1522
1523            // Month exists so we just show it
1524            if ($("#mec_timetable_month_" + settings.id + "_" + month_id).length) {
1525                // Toggle Month
1526                toggleMonth(month_id);
1527
1528                // Set active week
1529                setThisWeek('' + month_id + week_number);
1530            } else {
1531                // Add Loading Class
1532                if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1533                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1534
1535                $.ajax({
1536                    url: settings.ajax_url,
1537                    data: "action=mec_timetable_load_month&mec_year=" + year + "&mec_month=" + month + "&mec_week=" + week_number + "&" + settings.atts + "&apply_sf_date=0",
1538                    dataType: "json",
1539                    type: "post",
1540                    success: function (response) {
1541                        // Remove Loading Class
1542                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1543
1544                        // Append Month
1545                        $("#mec_skin_events_" + settings.id).append('<div class="mec-month-container" id="mec_timetable_month_' + settings.id + '_' + response.current_month.id + '">' + response.month + '</div>');
1546
1547                        // Append Month Navigator
1548                        $("#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>');
1549
1550                        // Set Listeners
1551                        setListeners();
1552
1553                        // Toggle Month
1554                        toggleMonth(response.current_month.id);
1555
1556                        // Set active week
1557                        setThisWeek(response.week_id);
1558
1559                        // Set Month Filter values in search widget
1560                        $("#mec_sf_month_" + settings.id).val(month);
1561                        $("#mec_sf_year_" + settings.id).val(year);
1562                    },
1563                    error: function () {}
1564                });
1565            }
1566        }
1567
1568        function toggleMonth(month_id) {
1569            // Show related events
1570            $('#mec_skin_' + settings.id + ' .mec-month-container').addClass('mec-util-hidden');
1571            $('#mec_timetable_month_' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
1572
1573            $('#mec_skin_' + settings.id + ' .mec-month-navigator').addClass('mec-util-hidden');
1574            $('#mec_month_navigator' + settings.id + '_' + month_id).removeClass('mec-util-hidden');
1575
1576            // Initialize Month Navigator
1577            if (settings.month_navigator) initMonthNavigator(month_id);
1578        }
1579
1580        function sed() {
1581            // Single Event Display
1582            $("#mec_skin_" + settings.id + " .mec-timetable-event-title a").off('click').on('click', function (e) {
1583                e.preventDefault();
1584                var href = $(this).attr('href');
1585
1586                var id = $(this).data('event-id');
1587                var occurrence = get_parameter_by_name('occurrence', href);
1588
1589                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
1590            });
1591        }
1592    };
1593
1594}(jQuery));
1595
1596// MEC WEEKLY PROGRAM PLUGIN
1597(function ($) {
1598    $.fn.mecWeeklyProgram = function (options) {
1599        // Default Options
1600        var settings = $.extend({
1601            // These are the defaults.
1602            id: 0,
1603            atts: '',
1604            sf: {}
1605        }, options);
1606
1607        // Search Widget
1608        if (settings.sf.container !== '') {
1609            $(settings.sf.container).mecSearchForm({
1610                id: settings.id,
1611                atts: settings.atts,
1612                callback: function (atts) {
1613                    settings.atts = atts;
1614                    search();
1615                }
1616            });
1617        }
1618
1619        // Set Listeners
1620        setListeners();
1621
1622        function setListeners() {
1623            // Single Event Method
1624            if (settings.sed_method != '0') {
1625                sed();
1626            }
1627        }
1628
1629        function search() {
1630            var $modal = $('.mec-modal-result');
1631
1632            // Add Loading Class
1633            if ($modal.length === 0) $('.mec-wrap').append('<div class="mec-modal-result"></div>');
1634            $modal.addClass('mec-month-navigator-loading');
1635
1636            $.ajax({
1637                url: settings.ajax_url,
1638                data: "action=mec_weeklyprogram_load&" + settings.atts + "&apply_sf_date=1",
1639                dataType: "json",
1640                type: "post",
1641                success: function (response) {
1642                    // Remove Loading Class
1643                    $modal.removeClass("mec-month-navigator-loading");
1644
1645                    // Append Month
1646                    $("#mec_skin_events_" + settings.id).html(response.date_events);
1647
1648                    // Set Listeners
1649                    setListeners();
1650                },
1651                error: function () {}
1652            });
1653        }
1654
1655        function sed() {
1656            // Single Event Display
1657            $("#mec_skin_" + settings.id + " .mec-event-title a").off('click').on('click', function (e) {
1658                e.preventDefault();
1659                var href = $(this).attr('href');
1660
1661                var id = $(this).data('event-id');
1662                var occurrence = get_parameter_by_name('occurrence', href);
1663
1664                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
1665            });
1666        }
1667    };
1668
1669}(jQuery));
1670
1671// MEC MASONRY VIEW PLUGIN
1672(function ($) {
1673    $.fn.mecMasonryView = function (options) {
1674        // Default Options
1675        var settings = $.extend({
1676            // These are the defaults.
1677            id: 0,
1678            atts: '',
1679            ajax_url: '',
1680            sf: {},
1681            end_date: '',
1682            offset: 0,
1683            start_date: '',
1684        }, options);
1685
1686        // Set onclick Listeners
1687        setListeners();
1688
1689        // Init Masonry
1690        jQuery(window).load(function () {
1691            
1692            initMasonry();
1693            if (typeof custom_dev !== undefined) var custom_dev;
1694            if (custom_dev == 'yes') {
1695                $(".mec-wrap").css("height", "1550");
1696                if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) < 768) {
1697                    $(".mec-wrap").css("height", "5500");
1698                }
1699                if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) < 480) {
1700                    $(".mec-wrap").css("height", "5000");
1701                }
1702                $(".mec-event-masonry .mec-masonry-item-wrap:nth-child(n+20)").css("display", "none");
1703                $(".mec-load-more-button").on("click", function () {
1704                    $(".mec-event-masonry .mec-masonry-item-wrap:nth-child(n+20)").css("display", "block");
1705                    $(".mec-wrap").css("height", "auto");
1706                    initMasonry();
1707                    $(".mec-load-more-button").hide();
1708                })
1709                $(".mec-events-masonry-cats a:first-child").on("click", function () {
1710                    $(".mec-wrap").css("height", "auto");
1711                    $(".mec-event-masonry .mec-masonry-item-wrap:nth-child(n+20)").css("display", "block");
1712                    $(".mec-load-more-button").hide();
1713                    initMasonry();
1714                })
1715                $(".mec-events-masonry-cats a:not(:first-child)").on("click", function () {
1716                    $(".mec-load-more-button").hide();
1717                    $(".mec-wrap").css("height", "auto");
1718                    $(".mec-wrap").css("min-height", "400");
1719                    $(".mec-event-masonry .mec-masonry-item-wrap").css("display", "block");
1720                    var element = document.querySelector("#mec_skin_" + settings.id + " .mec-event-masonry");
1721                    var selector = $(this).attr('data-group');
1722                    var CustomShuffle = new Shuffle(element, {
1723                        itemSelector: '.mec-masonry-item-wrap',
1724                    });
1725                    CustomShuffle.sort({
1726                        by: element.getAttribute('data-created'),
1727                    });
1728                    CustomShuffle.filter(selector != '*' ? selector : Shuffle.ALL_ITEMS);
1729                    $(".mec-event-masonry .mec-masonry-item-wrap").css("visibility", "visible");
1730                })
1731            }
1732        });
1733
1734        // Fix Elementor Masonry
1735        if ( mecdata.elementor_edit_mode != 'no' ) elementorFrontend.hooks.addAction('frontend/element_ready/global', initMasonry());
1736
1737        function initMasonry() {
1738            var $container = $("#mec_skin_" + settings.id + " .mec-event-masonry");
1739            var data_sortAscending = $("#mec_skin_" + settings.id).data('sortascending');
1740            var $grid = $container.isotope({
1741                filter: '*',
1742                itemSelector: '.mec-masonry-item-wrap',
1743                getSortData: {
1744                    date: '[data-sort-masonry]',
1745                },
1746                sortBy: 'date',
1747                sortAscending: data_sortAscending,
1748                animationOptions: {
1749                    duration: 750,
1750                    easing: 'linear',
1751                    queue: false
1752                },
1753            });
1754
1755            if (settings.fit_to_row == 1) $grid.isotope({
1756                layoutMode: 'fitRows',
1757                sortAscending: data_sortAscending,
1758            });
1759
1760            // Fix Elementor tab
1761            $('.elementor-tabs').find('.elementor-tab-title').click(function () {
1762                $grid.isotope({
1763                    sortBy: 'date',
1764                    sortAscending: data_sortAscending,
1765                });
1766            });
1767
1768            $("#mec_skin_" + settings.id + " .mec-events-masonry-cats a").click(function () {
1769                var selector = $(this).attr('data-filter');
1770                var $grid_cat = $container.isotope({
1771                    filter: selector,
1772                    itemSelector: '.mec-masonry-item-wrap',
1773                    getSortData: {
1774                        date: '[data-sort-masonry]',
1775                    },
1776                    sortBy: 'date',
1777                    sortAscending: data_sortAscending,
1778                    animationOptions: {
1779                        duration: 750,
1780                        easing: 'linear',
1781                        queue: false
1782                    },
1783                });
1784                if (settings.masonry_like_grid == 1) $grid_cat.isotope({
1785                    sortBy: 'date',
1786                    sortAscending: data_sortAscending,
1787                });
1788                return false;
1789            });
1790
1791            var $optionSets = $("#mec_skin_" + settings.id + " .mec-events-masonry-cats"),
1792                $optionLinks = $optionSets.find('a');
1793
1794            $optionLinks.click(function () {
1795                var $this = $(this);
1796
1797                // don't proceed if already selected
1798                if ($this.hasClass('selected')) return false;
1799
1800                var $optionSet = $this.parents('.mec-events-masonry-cats');
1801                $optionSet.find('.mec-masonry-cat-selected').removeClass('mec-masonry-cat-selected');
1802                $this.addClass('mec-masonry-cat-selected');
1803            });
1804        }
1805
1806        function setListeners() {
1807            if (settings.sed_method != '0') {
1808                sed();
1809            }
1810
1811        }
1812
1813        $("#mec_skin_" + settings.id + " .mec-events-masonry-cats > a").click(function()
1814        {
1815            var mec_load_more_btn = $("#mec_skin_" + settings.id + " .mec-load-more-button");
1816            var mec_filter_value = $(this).data('filter').replace('.mec-t', '');
1817
1818            if(mec_load_more_btn.hasClass('mec-load-more-loading')) mec_load_more_btn.removeClass('mec-load-more-loading');
1819            if(mec_load_more_btn.hasClass("mec-hidden-" + mec_filter_value)) mec_load_more_btn.addClass("mec-util-hidden");
1820            else mec_load_more_btn.removeClass("mec-util-hidden");
1821        });
1822        
1823        $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
1824            loadMore();
1825        });
1826
1827        function sed() {
1828            // Single Event Display
1829            $("#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) {
1830                e.preventDefault();
1831                var href = $(this).attr('href');
1832
1833                var id = $(this).data('event-id');
1834                var occurrence = get_parameter_by_name('occurrence', href);
1835
1836                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
1837            });
1838        }
1839
1840        function loadMore() {
1841            // Add loading Class
1842            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
1843            var mec_cat_elem = $('#mec_skin_' + settings.id).find('.mec-masonry-cat-selected');
1844            var mec_filter_value = (mec_cat_elem && mec_cat_elem.data('filter') != undefined) ? mec_cat_elem.data('filter').replace('.mec-t', '') : '';
1845            var mec_filter_by = $('#mec_skin_' + settings.id).data('filterby');
1846
1847            $.ajax({
1848                url: settings.ajax_url,
1849                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",
1850                dataType: "json",
1851                type: "post",
1852                success: function (response) {
1853                    if (response.count == "0") {
1854                        // Remove loading Class
1855                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
1856
1857                        // Hide load more button
1858                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden mec-hidden-" + mec_filter_value);
1859                    } else {
1860                        // Show load more button
1861                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
1862
1863                        // Append Items
1864                        var node = $("#mec_skin_" + settings.id + " .mec-event-masonry");
1865                        var markup = '',
1866                            newItems = $(response.html).find('.mec-masonry-item-wrap');
1867
1868                        newItems.each(function (index) {
1869                            node.isotope()
1870                                .append(newItems[index])
1871                                .isotope('appended', newItems[index]);
1872                        });
1873
1874                        // Remove loading Class
1875                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
1876
1877                        // Update the variables
1878                        settings.end_date = response.end_date;
1879                        settings.offset = response.offset;
1880
1881                        // Single Event Method
1882                        if (settings.sed_method != '0') {
1883                            sed();
1884                        }
1885                    }
1886                },
1887                error: function () {}
1888            });
1889        }
1890    };
1891}(jQuery));
1892
1893// MEC LIST VIEW PLUGIN
1894(function ($) {
1895    $.fn.mecListView = function (options) {
1896        // Default Options
1897        var settings = $.extend({
1898            // These are the defaults.
1899            id: 0,
1900            atts: '',
1901            ajax_url: '',
1902            sf: {},
1903            current_month_divider: '',
1904            end_date: '',
1905            offset: 0,
1906            limit: 0
1907        }, options);
1908
1909        // Set onclick Listeners
1910        setListeners();
1911
1912        var sf;
1913
1914        function setListeners() {
1915            // Search Widget
1916            if (settings.sf.container !== '') {
1917                sf = $(settings.sf.container).mecSearchForm({
1918                    id: settings.id,
1919                    atts: settings.atts,
1920                    callback: function (atts) {
1921                        settings.atts = atts;
1922                        search();
1923                    }
1924                });
1925            }
1926
1927            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
1928                loadMore();
1929            });
1930
1931            // Accordion Toggle
1932            if (settings.style === 'accordion') {
1933                if (settings.toggle_month_divider) {
1934                    $('#mec_skin_' + settings.id + ' .mec-month-divider:first-of-type').addClass('active');
1935                    $('#mec_skin_' + settings.id + ' .mec-month-divider:first-of-type').find('i').removeClass('mec-sl-arrow-down').addClass('mec-sl-arrow-up');
1936
1937                    toggle();
1938                }
1939
1940                accordion();
1941            }
1942
1943            // Single Event Method
1944            if (settings.sed_method != '0') {
1945                sed();
1946            }
1947        }
1948
1949        function toggle() {
1950            $('#mec_skin_' + settings.id + ' .mec-month-divider').off("click").on("click", function (event) {
1951                event.preventDefault();
1952
1953                var status = $(this).hasClass('active');
1954
1955                // Remove Active Style of Month Divider
1956                $('#mec_skin_' + settings.id + ' .mec-month-divider').removeClass('active');
1957
1958                // Hide All Events
1959                $('#mec_skin_' + settings.id + ' .mec-divider-toggle').slideUp('fast');
1960
1961                if (status) {
1962                    $(this).removeClass('active');
1963                    $('.mec-month-divider').find('i').removeClass('mec-sl-arrow-up').addClass('mec-sl-arrow-down');
1964                } else {
1965                    $(this).addClass('active');
1966                    $('.mec-month-divider').find('i').removeClass('mec-sl-arrow-up').addClass('mec-sl-arrow-down')
1967                    $(this).find('i').removeClass('mec-sl-arrow-down').addClass('mec-sl-arrow-up');
1968
1969                    var month = $(this).data('toggle-divider');
1970                    $('#mec_skin_' + settings.id + ' .' + month).slideDown('fast');
1971                }
1972            });
1973        }
1974
1975        function toggleLoadmore()
1976        {
1977            $('#mec_skin_' + settings.id + ' .mec-month-divider:not(:last)').each(function ()
1978            {
1979                if($(this).hasClass('active')) $(this).removeClass('active');
1980                var month = $(this).data('toggle-divider');
1981                $('#mec_skin_' + settings.id + ' .' + month).slideUp('fast');
1982            });
1983
1984            // Set Active Class For Last Article
1985            $('#mec_skin_' + settings.id + ' .mec-month-divider:last').addClass('active');
1986
1987            // Register Listeners
1988            toggle();
1989        }
1990
1991        function accordion() {
1992            // Accordion Toggle
1993            $("#mec_skin_" + settings.id + " .mec-toggle-item-inner").off("click").on("click", function (event) {
1994                event.preventDefault();
1995
1996                var $this = $(this);
1997                $(this).parent().find(".mec-content-toggle").slideToggle("fast", function () {
1998                    $this.children("i").toggleClass("mec-sl-arrow-down mec-sl-arrow-up");
1999                });
2000
2001                // Trigger Google Map
2002                var unique_id = $(this).parent().find(".mec-modal-wrap").data('unique-id');
2003
2004                window['mec_init_gmap' + unique_id]();
2005            });
2006        }
2007
2008        function sed() {
2009            // Single Event Display
2010            $("#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) {
2011                e.preventDefault();
2012                var href = $(this).attr('href');
2013
2014                var id = $(this).data('event-id');
2015                var occurrence = get_parameter_by_name('occurrence', href);
2016
2017                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2018            });
2019
2020            $("#mec_skin_" + settings.id + " .mec-event-image a img").off('click').on('click', function (e) {
2021                e.preventDefault();
2022                var href = $(this).parent().attr('href');
2023
2024                var id = $(this).parent().data('event-id');
2025                var occurrence = get_parameter_by_name('occurrence', href);
2026
2027                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2028            });
2029        }
2030
2031        function loadMore() {
2032            // Add loading Class
2033            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
2034
2035            $.ajax({
2036                url: settings.ajax_url,
2037                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",
2038                dataType: "json",
2039                type: "post",
2040                success: function (response) {
2041                    if (response.count == '0') {
2042                        // Remove loading Class
2043                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2044
2045                        // Hide load more button
2046                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2047                    } else {
2048                        // Show load more button
2049                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2050
2051                        // Append Items
2052                        $("#mec_skin_events_" + settings.id).append(response.html);
2053
2054                        // Remove loading Class
2055                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2056
2057                        // Update the variables
2058                        settings.end_date = response.end_date;
2059                        settings.offset = response.offset;
2060                        settings.current_month_divider = response.current_month_divider;
2061
2062                        // Single Event Method
2063                        if (settings.sed_method != '0') {
2064                            sed();
2065                        }
2066
2067                        // Accordion Toggle
2068                        if (settings.style === 'accordion') {
2069                            if (settings.toggle_month_divider) toggleLoadmore();
2070
2071                            accordion();
2072                        }
2073                    }
2074                },
2075                error: function () {}
2076            });
2077        }
2078
2079        function search() {
2080            // Hide no event message
2081            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
2082
2083            // Add loading Class
2084            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2085            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2086            jQuery("#gmap-data").val("");
2087
2088            $.ajax({
2089                url: settings.ajax_url,
2090                data: "action=mec_list_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&current_month_divider=0&apply_sf_date=1",
2091                dataType: "json",
2092                type: "post",
2093                success: function (response) {
2094                    if (response.count == "0") {
2095                        // Append Items
2096                        $("#mec_skin_events_" + settings.id).html('');
2097
2098                        // Remove loading Class
2099                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2100
2101                        // Hide Map
2102                        $('.mec-skin-map-container').addClass("mec-util-hidden");
2103
2104                        // Hide it
2105                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2106
2107                        // Show no event message
2108                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
2109                    } else {
2110                        // Append Items
2111                        $("#mec_skin_events_" + settings.id).html(response.html);
2112
2113                        // Remove loading Class
2114                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2115
2116                        // Show Map
2117                        $('.mec-skin-map-container').removeClass("mec-util-hidden");
2118
2119                        // Show load more button
2120                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2121                        // Hide load more button
2122                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2123
2124                        // Update the variables
2125                        settings.end_date = response.end_date;
2126                        settings.offset = response.offset;
2127                        settings.current_month_divider = response.current_month_divider;
2128
2129                        // Single Event Method
2130                        if (settings.sed_method != '0') {
2131                            sed();
2132                        }
2133
2134                        // Accordion Toggle
2135                        if (settings.style === 'accordion') {
2136                            if (settings.toggle_month_divider) toggle();
2137
2138                            accordion();
2139                        }
2140                    }
2141                },
2142                error: function () {}
2143            });
2144        }
2145    };
2146
2147}(jQuery));
2148
2149// MEC GRID VIEW PLUGIN
2150(function ($) {
2151    $.fn.mecGridView = function (options) {
2152        // Default Options
2153        var settings = $.extend({
2154            // These are the defaults.
2155            id: 0,
2156            atts: '',
2157            ajax_url: '',
2158            sf: {},
2159            end_date: '',
2160            offset: 0,
2161            start_date: '',
2162        }, options);
2163
2164        // Set onclick Listeners
2165        setListeners();
2166
2167        var sf;
2168
2169        function setListeners() {
2170            // Search Widget
2171            if (settings.sf.container !== '') {
2172                sf = $(settings.sf.container).mecSearchForm({
2173                    id: settings.id,
2174                    atts: settings.atts,
2175                    callback: function (atts) {
2176                        settings.atts = atts;
2177                        search();
2178                    }
2179                });
2180            }
2181
2182            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
2183                loadMore();
2184            });
2185
2186            // Single Event Method
2187            if (settings.sed_method != '0') {
2188                sed();
2189            }
2190        }
2191
2192        function sed() {
2193            // Single Event Display
2194            $("#mec_skin_" + settings.id + " .mec-event-title a, #mec_skin_" + settings.id + " .mec-booking-button").off('click').on('click', function (e) {
2195                e.preventDefault();
2196                var href = $(this).attr('href');
2197
2198                var id = $(this).data('event-id');
2199                var occurrence = get_parameter_by_name('occurrence', href);
2200
2201                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2202            });
2203            $("#mec_skin_" + settings.id + " .mec-event-image a img").off('click').on('click', function (e) {
2204                e.preventDefault();
2205                var href = $(this).parent().attr('href');
2206
2207                var id = $(this).parent().data('event-id');
2208                var occurrence = get_parameter_by_name('occurrence', href);
2209
2210                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2211            });
2212        }
2213
2214        function loadMore() {
2215            // Add loading Class
2216            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
2217
2218            $.ajax({
2219                url: settings.ajax_url,
2220                data: "action=mec_grid_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&apply_sf_date=0",
2221                dataType: "json",
2222                type: "post",
2223                success: function (response) {
2224                    if (response.count == "0") {
2225                        // Remove loading Class
2226                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2227
2228                        // Hide load more button
2229                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2230                    } else {
2231                        // Show load more button
2232                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2233
2234                        // Append Items
2235                        $("#mec_skin_events_" + settings.id).append(response.html);
2236
2237                        // Remove loading Class
2238                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2239
2240                        // Update the variables
2241                        settings.end_date = response.end_date;
2242                        settings.offset = response.offset;
2243
2244                        // Single Event Method
2245                        if (settings.sed_method != '0') {
2246                            sed();
2247                        }
2248                    }
2249                },
2250                error: function () {}
2251            });
2252        }
2253
2254        function search() {
2255            // Hide no event message
2256            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
2257
2258            // Add loading Class
2259            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2260            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2261            jQuery("#gmap-data").val("");
2262
2263            $.ajax({
2264                url: settings.ajax_url,
2265                data: "action=mec_grid_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&apply_sf_date=1",
2266                dataType: "json",
2267                type: "post",
2268                success: function (response) {
2269                    if (response.count == "0") {
2270                        // Append Items
2271                        $("#mec_skin_events_" + settings.id).html('');
2272
2273                        // Remove loading Class
2274                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2275
2276                        // Hide Map
2277                        $('.mec-skin-map-container').addClass("mec-util-hidden");
2278
2279                        // Hide it
2280                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2281
2282                        // Show no event message
2283                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
2284                    } else {
2285                        // Append Items
2286                        $("#mec_skin_events_" + settings.id).html(response.html);
2287
2288                        // Remove loading Class
2289                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2290
2291                        // Show Map
2292                        $('.mec-skin-map-container').removeClass("mec-util-hidden");
2293
2294                        // Show load more button
2295                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2296                        // Hide load more button
2297                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2298
2299                        // Update the variables
2300                        settings.end_date = response.end_date;
2301                        settings.offset = response.offset;
2302
2303                        // Single Event Method
2304                        if (settings.sed_method != '0') {
2305                            sed();
2306                        }
2307                    }
2308                },
2309                error: function () {}
2310            });
2311        }
2312    };
2313
2314}(jQuery));
2315
2316// MEC CUSTOM VIEW PLUGIN
2317(function ($) {
2318    $.fn.mecCustomView = function (options) {
2319        // Default Options
2320        var settings = $.extend({
2321            // These are the defaults.
2322            id: 0,
2323            atts: '',
2324            ajax_url: '',
2325            sf: {},
2326            end_date: '',
2327            offset: 0,
2328            start_date: '',
2329        }, options);
2330
2331        // Set onclick Listeners
2332        setListeners();
2333
2334        var sf;
2335
2336        function setListeners() {
2337            // Search Widget
2338            if (settings.sf.container !== '') {
2339                sf = $(settings.sf.container).mecSearchForm({
2340                    id: settings.id,
2341                    atts: settings.atts,
2342                    callback: function (atts) {
2343                        settings.atts = atts;
2344                        search();
2345                    }
2346                });
2347            }
2348
2349            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
2350                loadMore();
2351            });
2352
2353            // Single Event Method
2354            if (settings.sed_method != '0') {
2355                sed();
2356            }
2357        }
2358
2359        function sed() {
2360            // Single Event Display
2361            $("#mec_skin_" + settings.id + " .mec-event-title a, #mec_skin_" + settings.id + " .mec-booking-button").off('click').on('click', function (e) {
2362                e.preventDefault();
2363                var href = $(this).attr('href');
2364
2365                var id = $(this).data('event-id');
2366                var occurrence = get_parameter_by_name('occurrence', href);
2367
2368                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2369            });
2370            $("#mec_skin_" + settings.id + " .mec-event-image a img").off('click').on('click', function (e) {
2371                e.preventDefault();
2372                var href = $(this).parent().attr('href');
2373
2374                var id = $(this).parent().data('event-id');
2375                var occurrence = get_parameter_by_name('occurrence', href);
2376
2377                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2378            });
2379        }
2380
2381        function loadMore() {
2382            // Add loading Class
2383            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
2384
2385            $.ajax({
2386                url: settings.ajax_url,
2387                data: "action=mec_custom_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&apply_sf_date=0",
2388                dataType: "json",
2389                type: "post",
2390                success: function (response) {
2391                    if (response.count == "0") {
2392                        // Remove loading Class
2393                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2394
2395                        // Hide load more button
2396                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2397                    } else {
2398                        // Show load more button
2399                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2400
2401                        // Append Items
2402                        $("#mec_skin_events_" + settings.id).append(response.html);
2403
2404                        // Remove loading Class
2405                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2406
2407                        // Update the variables
2408                        settings.end_date = response.end_date;
2409                        settings.offset = response.offset;
2410
2411                        if ( $('.mec-event-sd-countdown').length > 0 )
2412                        {
2413                            $('.mec-event-sd-countdown').each(function (event) {
2414                                var dc= $(this).attr('data-date-custom');
2415                                $(this).mecCountDown(
2416                                {
2417                                    date: dc,
2418                                    format: "off"
2419                                },
2420                                function () {
2421                                });
2422                            })
2423                        }
2424                        // Single Event Method
2425                        if (settings.sed_method != '0') {
2426                            sed();
2427                        }
2428                    }
2429                },
2430                error: function () {}
2431            });
2432        }
2433
2434        function search() {
2435            // Hide no event message
2436            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
2437
2438            // Add loading Class
2439            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2440            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2441            jQuery("#gmap-data").val("");
2442
2443            $.ajax({
2444                url: settings.ajax_url,
2445                data: "action=mec_custom_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&apply_sf_date=1",
2446                dataType: "json",
2447                type: "post",
2448                success: function (response) {
2449                    if (response.count == "0") {
2450                        // Append Items
2451                        $("#mec_skin_events_" + settings.id).html('');
2452
2453                        // Remove loading Class
2454                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2455
2456                        // Hide Map
2457                        $('.mec-skin-map-container').addClass("mec-util-hidden");
2458
2459                        // Hide it
2460                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2461
2462                        // Show no event message
2463                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
2464                    } else {
2465                        // Append Items
2466                        $("#mec_skin_events_" + settings.id).html(response.html);
2467
2468                        // Remove loading Class
2469                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2470
2471                        // Show Map
2472                        $('.mec-skin-map-container').removeClass("mec-util-hidden");
2473
2474                        // Show load more button
2475                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2476                        // Hide load more button
2477                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2478
2479                        // Update the variables
2480                        settings.end_date = response.end_date;
2481                        settings.offset = response.offset;
2482
2483                        // Single Event Method
2484                        if (settings.sed_method != '0') {
2485                            sed();
2486                        }
2487                    }
2488                },
2489                error: function () {}
2490            });
2491        }
2492    };
2493
2494}(jQuery));
2495
2496// MEC TIMELINE VIEW PLUGIN
2497(function ($) {
2498    $.fn.mecTimelineView = function (options) {
2499        // Default Options
2500        var settings = $.extend({
2501            // These are the defaults.
2502            id: 0,
2503            atts: '',
2504            ajax_url: '',
2505            sf: {},
2506            end_date: '',
2507            offset: 0,
2508            start_date: '',
2509        }, options);
2510
2511        // Set onclick Listeners
2512        setListeners();
2513
2514        var sf;
2515
2516        function setListeners() {
2517            // Search Widget
2518            if (settings.sf.container !== '') {
2519                sf = $(settings.sf.container).mecSearchForm({
2520                    id: settings.id,
2521                    atts: settings.atts,
2522                    callback: function (atts) {
2523                        settings.atts = atts;
2524                        search();
2525                    }
2526                });
2527            }
2528
2529            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
2530                loadMore();
2531            });
2532
2533            // Single Event Method
2534            if (settings.sed_method != '0') {
2535                sed();
2536            }
2537        }
2538
2539        function sed() {
2540            // Single Event Display
2541            $("#mec_skin_" + settings.id + " .mec-event-title a, #mec_skin_" + settings.id + " .mec-booking-button").off('click').on('click', function (e) {
2542                e.preventDefault();
2543                var href = $(this).attr('href');
2544
2545                var id = $(this).data('event-id');
2546                var occurrence = get_parameter_by_name('occurrence', href);
2547
2548                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2549            });
2550            $("#mec_skin_" + settings.id + " .mec-event-image a img").off('click').on('click', function (e) {
2551                e.preventDefault();
2552                var href = $(this).parent().attr('href');
2553
2554                var id = $(this).parent().data('event-id');
2555                var occurrence = get_parameter_by_name('occurrence', href);
2556
2557                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2558            });
2559        }
2560
2561        function loadMore() {
2562            // Add loading Class
2563            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
2564
2565            $.ajax({
2566                url: settings.ajax_url,
2567                data: "action=mec_timeline_load_more&mec_start_date=" + settings.end_date + "&mec_offset=" + settings.offset + "&" + settings.atts + "&apply_sf_date=0",
2568                dataType: "json",
2569                type: "post",
2570                success: function (response) {
2571                    if (response.count == "0") {
2572                        // Remove loading Class
2573                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2574
2575                        // Hide load more button
2576                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2577                    } else {
2578                        // Show load more button
2579                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2580
2581                        // Append Items
2582                        $("#mec_skin_events_" + settings.id).append(response.html);
2583
2584                        // Remove loading Class
2585                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2586
2587                        // Update the variables
2588                        settings.end_date = response.end_date;
2589                        settings.offset = response.offset;
2590
2591                        // Single Event Method
2592                        if (settings.sed_method != '0') {
2593                            sed();
2594                        }
2595
2596                    }
2597                },
2598                error: function () { }
2599            });
2600        }
2601
2602        function search() {
2603            // Hide no event message
2604            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
2605
2606            // Add loading Class
2607            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2608            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2609
2610            $.ajax({
2611                url: settings.ajax_url,
2612                data: "action=mec_timeline_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&apply_sf_date=1",
2613                dataType: "json",
2614                type: "post",
2615                success: function (response) {
2616                    if (response.count == "0") {
2617                        // Append Items
2618                        $("#mec_skin_events_" + settings.id).html('');
2619
2620                        // Remove loading Class
2621                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2622
2623                        // Hide Map
2624                        $('.mec-skin-map-container').addClass("mec-util-hidden");
2625
2626                        // Hide it
2627                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2628
2629                        // Show no event message
2630                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
2631                    } else {
2632                        // Append Items
2633                        $("#mec_skin_events_" + settings.id).html(response.html);
2634
2635                        // Remove loading Class
2636                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2637
2638                        // Show Map
2639                        $('.mec-skin-map-container').removeClass("mec-util-hidden");
2640
2641                        // Show load more button
2642                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2643                        // Hide load more button
2644                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2645
2646                        // Update the variables
2647                        settings.end_date = response.end_date;
2648                        settings.offset = response.offset;
2649
2650                        // Single Event Method
2651                        if (settings.sed_method != '0') {
2652                            sed();
2653                        }
2654                    }
2655                },
2656                error: function () { }
2657            });
2658        }
2659    };
2660
2661}(jQuery));
2662
2663// MEC AGENDA VIEW PLUGIN
2664(function ($) {
2665    $.fn.mecAgendaView = function (options) {
2666        // Default Options
2667        var settings = $.extend({
2668            // These are the defaults.
2669            id: 0,
2670            atts: '',
2671            ajax_url: '',
2672            sf: {},
2673            current_month_divider: '',
2674            end_date: '',
2675            offset: 0,
2676        }, options);
2677
2678        // Set onclick Listeners
2679        setListeners();
2680
2681        var sf;
2682
2683        function setListeners() {
2684            // Search Widget
2685            if (settings.sf.container !== '') {
2686                sf = $(settings.sf.container).mecSearchForm({
2687                    id: settings.id,
2688                    atts: settings.atts,
2689                    callback: function (atts) {
2690                        settings.atts = atts;
2691                        search();
2692                    }
2693                });
2694            }
2695
2696            $("#mec_skin_" + settings.id + " .mec-load-more-button").on("click", function () {
2697                loadMore();
2698            });
2699
2700            // Single Event Method
2701            if (settings.sed_method != '0') {
2702                sed();
2703            }
2704        }
2705
2706        function sed() {
2707            // Single Event Display
2708            $("#mec_skin_" + settings.id + " .mec-agenda-event-title a").off('click').on('click', function (e) {
2709                e.preventDefault();
2710                var href = $(this).attr('href');
2711
2712                var id = $(this).data('event-id');
2713                var occurrence = get_parameter_by_name('occurrence', href);
2714
2715                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2716            });
2717        }
2718
2719        function loadMore() {
2720            // Add loading Class
2721            $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-load-more-loading");
2722
2723            $.ajax({
2724                url: settings.ajax_url,
2725                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",
2726                dataType: "json",
2727                type: "post",
2728                success: function (response) {
2729                    if (response.count == "0") {
2730                        // Remove loading Class
2731                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2732
2733                        // Hide load more button
2734                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2735                    } else {
2736                        // Show load more button
2737                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2738
2739                        // Append Items
2740                        $("#mec_skin_events_" + settings.id + " .mec-events-agenda-container").append(response.html);
2741
2742                        // Remove loading Class
2743                        $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-load-more-loading");
2744
2745                        // Update the variables
2746                        settings.end_date = response.end_date;
2747                        settings.offset = response.offset;
2748                        settings.current_month_divider = response.current_month_divider;
2749
2750                        // Single Event Method
2751                        if (settings.sed_method != '0') {
2752                            sed();
2753                        }
2754                    }
2755                },
2756                error: function () {}
2757            });
2758        }
2759
2760        function search() {
2761            // Hide no event message
2762            $("#mec_skin_no_events_" + settings.id).addClass("mec-util-hidden");
2763
2764            // Add loading Class
2765            if (jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2766            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2767
2768            $.ajax({
2769                url: settings.ajax_url,
2770                data: "action=mec_agenda_load_more&mec_start_date=" + settings.start_date + "&" + settings.atts + "&current_month_divider=0&apply_sf_date=1",
2771                dataType: "json",
2772                type: "post",
2773                success: function (response) {
2774                    if (response.count == "0") {
2775                        // Append Items
2776                        $("#mec_skin_events_" + settings.id + " .mec-events-agenda-container").html('');
2777
2778                        // Remove loading Class
2779                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2780
2781                        // Hide it
2782                        $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2783
2784                        // Show no event message
2785                        $("#mec_skin_no_events_" + settings.id).removeClass("mec-util-hidden");
2786                    } else {
2787                        // Append Items
2788                        $("#mec_skin_events_" + settings.id + " .mec-events-agenda-container").html(response.html);
2789
2790                        // Remove loading Class
2791                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2792
2793                        // Show load more button
2794                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
2795                        // Hide load more button
2796                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
2797
2798                        // Update the variables
2799                        settings.end_date = response.end_date;
2800                        settings.offset = response.offset;
2801                        settings.current_month_divider = response.current_month_divider;
2802
2803                        // Single Event Method
2804                        if (settings.sed_method != '0') {
2805                            sed();
2806                        }
2807                    }
2808                },
2809                error: function () {}
2810            });
2811        }
2812    };
2813}(jQuery));
2814
2815// MEC CAROUSEL VIEW PLUGIN
2816(function ($) {
2817    $.fn.mecCarouselView = function (options) {
2818        // Default Options
2819        var settings = $.extend({
2820            // These are the defaults.
2821            id: 0,
2822            atts: '',
2823            ajax_url: '',
2824            sf: {},
2825            items: 3,
2826            autoplay: '',
2827            style: 'type1',
2828            start_date: ''
2829        }, options);
2830
2831        // Init Sliders
2832        initSlider(settings);
2833
2834        // Single Event Method
2835        if (settings.sed_method != '0') {
2836            sed(settings);
2837        }
2838
2839        function initSlider(settings) {
2840            // Check RTL website
2841            if ($('body').hasClass('rtl')) {
2842                var owl_rtl = true;
2843            } else {
2844                var owl_rtl = false;
2845            }
2846
2847            if (settings.style === 'type1') {
2848
2849                // Start carousel skin
2850                var owl = $("#mec_skin_" + settings.id + " .mec-event-carousel-type1 .mec-owl-carousel");
2851
2852                owl.owlCarousel({
2853                    autoplay: true,
2854                    autoplayTimeout: settings.autoplay, // Set AutoPlay to 3 seconds
2855                    loop: true,
2856                    items: settings.items,
2857                    responsiveClass: true,
2858                    responsive: {
2859                        0: {
2860                            items: 1,
2861                        },
2862                        979: {
2863                            items: 2,
2864                        },
2865                        1199: {
2866                            items: settings.count,
2867                        }
2868                    },
2869                    dots: true,
2870                    nav: false,
2871                    autoplayHoverPause: true,
2872                    rtl: owl_rtl,
2873                });
2874                owl.bind(
2875                    "mouseleave",
2876                    function (event) {
2877                        $("#mec_skin_" + settings.id + " .mec-owl-carousel").trigger('play.owl.autoplay');
2878                    }
2879                );
2880            } else if (settings.style === 'type4') {
2881                $("#mec_skin_" + settings.id + " .mec-owl-carousel").owlCarousel({
2882                    autoplay: true,
2883                    loop: true,
2884                    autoplayTimeout: settings.autoplay,
2885                    items: settings.items,
2886                    dots: false,
2887                    nav: true,
2888                    responsiveClass: true,
2889                    responsive: {
2890                        0: {
2891                            items: 1,
2892                            stagePadding: 50,
2893                        },
2894                        979: {
2895                            items: 2,
2896                        },
2897                        1199: {
2898                            items: settings.count,
2899                        }
2900                    },
2901                    autoplayHoverPause: true,
2902                    navText: ["<i class='mec-sl-arrow-left'></i>", " <i class='mec-sl-arrow-right'></i>"],
2903                    rtl: owl_rtl,
2904                });
2905                $("#mec_skin_" + settings.id + " .mec-owl-carousel").bind(
2906                    "mouseleave",
2907                    function (event) {
2908                        $("#mec_skin_" + settings.id + " .mec-owl-carousel").trigger('play.owl.autoplay');
2909                    }
2910                );
2911            } else {
2912                $("#mec_skin_" + settings.id + " .mec-owl-carousel").owlCarousel({
2913                    autoplay: true,
2914                    loop: true,
2915                    autoplayTimeout: settings.autoplay,
2916                    items: settings.items,
2917                    dots: false,
2918                    nav: true,
2919                    responsiveClass: true,
2920                    responsive: {
2921                        0: {
2922                            items: 1,
2923                        },
2924                        979: {
2925                            items: 2,
2926                        },
2927                        1199: {
2928                            items: settings.count,
2929                        }
2930                    },
2931                    autoplayHoverPause: true,
2932                    navText: ["<i class='mec-sl-arrow-left'></i>", " <i class='mec-sl-arrow-right'></i>"],
2933                    rtl: owl_rtl,
2934                });
2935                $("#mec_skin_" + settings.id + " .mec-owl-carousel").bind(
2936                    "mouseleave",
2937                    function (event) {
2938                        $("#mec_skin_" + settings.id + " .mec-owl-carousel").trigger('play.owl.autoplay');
2939                    }
2940                );
2941            }
2942        }
2943    };
2944
2945    function sed(settings) {
2946        // Single Event Display
2947        $("#mec_skin_" + settings.id + " .mec-event-carousel-title a, #mec_skin_" + settings.id + " .mec-booking-button, #mec_skin_" + settings.id + " .mec-event-button").off('click').on('click', function (e) {
2948            e.preventDefault();
2949            var href = $(this).attr('href');
2950
2951            var id = $(this).data('event-id');
2952            var occurrence = get_parameter_by_name('occurrence', href);
2953
2954            mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
2955        });
2956    }
2957}(jQuery));
2958
2959// MEC SLIDER VIEW PLUGIN
2960(function ($) {
2961    $.fn.mecSliderView = function (options) {
2962        // Default Options
2963        var settings = $.extend({
2964            // These are the defaults.
2965            id: 0,
2966            atts: '',
2967            autoplay: false,
2968            ajax_url: '',
2969            sf: {},
2970            start_date: ''
2971        }, options);
2972
2973        // Init Sliders
2974        initSlider();
2975
2976        function initSlider() {
2977            // Check RTL website
2978            if ($('body').hasClass('rtl')) {
2979                var owl_rtl = true;
2980            } else {
2981                var owl_rtl = false;
2982            }
2983
2984            $("#mec_skin_" + settings.id + " .mec-owl-carousel").owlCarousel({
2985                autoplay: true,
2986                autoplayTimeout: settings.autoplay,
2987                loop: true,
2988                items: 1,
2989                responsiveClass: true,
2990                responsive: {
2991                    0: {
2992                        items: 1,
2993                    },
2994                    960: {
2995                        items: 1,
2996                    },
2997                    1200: {
2998                        items: 1,
2999                    }
3000                },
3001                dots: false,
3002                nav: true,
3003                autoplayHoverPause: true,
3004                navText: ["<i class='mec-sl-arrow-left'></i>", " <i class='mec-sl-arrow-right'></i>"],
3005                rtl: owl_rtl,
3006            });
3007        }
3008    };
3009
3010}(jQuery));
3011
3012// MEC COUNTDOWN MODULE
3013(function ($) {
3014    $.fn.mecCountDown = function (options, callBack) {
3015        // Default Options
3016        var settings = $.extend({
3017            // These are the defaults.
3018            date: null,
3019            format: null
3020        }, options);
3021
3022        var callback = callBack;
3023        var selector = $(this);
3024
3025        startCountdown();
3026        var interval = setInterval(startCountdown, 1000);
3027
3028        function startCountdown() {
3029            var eventDate = Date.parse(settings.date) / 1000;
3030            var currentDate = Math.floor($.now() / 1000);
3031
3032            if (eventDate <= currentDate) {
3033                callback.call(this);
3034                clearInterval(interval);
3035            }
3036
3037            var seconds = eventDate - currentDate;
3038
3039            var days = Math.floor(seconds / (60 * 60 * 24));
3040            seconds -= days * 60 * 60 * 24;
3041
3042            var hours = Math.floor(seconds / (60 * 60));
3043            seconds -= hours * 60 * 60;
3044
3045            var minutes = Math.floor(seconds / 60);
3046            seconds -= minutes * 60;
3047
3048            if (days == 1) selector.find(".mec-timeRefDays").text(mecdata.day);
3049            else selector.find(".mec-timeRefDays").text(mecdata.days);
3050
3051            if (hours == 1) selector.find(".mec-timeRefHours").text(mecdata.hour);
3052            else selector.find(".mec-timeRefHours").text(mecdata.hours);
3053
3054            if (minutes == 1) selector.find(".mec-timeRefMinutes").text(mecdata.minute);
3055            else selector.find(".mec-timeRefMinutes").text(mecdata.minutes);
3056
3057            if (seconds == 1) selector.find(".mec-timeRefSeconds").text(mecdata.second);
3058            else selector.find(".mec-timeRefSeconds").text(mecdata.seconds);
3059
3060            if (settings.format === "on") {
3061                days = (String(days).length >= 2) ? days : "0" + days;
3062                hours = (String(hours).length >= 2) ? hours : "0" + hours;
3063                minutes = (String(minutes).length >= 2) ? minutes : "0" + minutes;
3064                seconds = (String(seconds).length >= 2) ? seconds : "0" + seconds;
3065            }
3066
3067            if (!isNaN(eventDate)) {
3068                selector.find(".mec-days").text(days);
3069                selector.find(".mec-hours").text(hours);
3070                selector.find(".mec-minutes").text(minutes);
3071                selector.find(".mec-seconds").text(seconds);
3072            } else {
3073                clearInterval(interval);
3074            }
3075        }
3076    };
3077
3078}(jQuery));
3079
3080// MEC TILE VIEW PLUGIN
3081(function($)
3082{
3083    $.fn.mecTileView = function(options)
3084    {
3085        var active_month;
3086        var active_year;
3087
3088        // Default Options
3089        var settings = $.extend({
3090            // These are the defaults.
3091            today: null,
3092            id: 0,
3093            events_label: 'Events',
3094            event_label: 'Event',
3095            month_navigator: 0,
3096            atts: '',
3097            active_month: {},
3098            next_month: {},
3099            sf: {},
3100            ajax_url: ''
3101        }, options);
3102
3103        // Initialize Month Navigator
3104        if(settings.month_navigator) initMonthNavigator();
3105
3106        // Load Next Month in background
3107        if(settings.load_method === 'month') setMonth(settings.next_month.year, settings.next_month.month, true);
3108
3109        active_month = settings.active_month.month;
3110        active_year = settings.active_month.year;
3111
3112        // Set onclick Listeners
3113        setListeners();
3114
3115        // Search Widget
3116        if(settings.sf.container !== '')
3117        {
3118            sf = $(settings.sf.container).mecSearchForm(
3119            {
3120                id: settings.id,
3121                atts: settings.atts,
3122                callback: function(atts)
3123                {
3124                    settings.atts = atts;
3125                    search(active_year, active_month);
3126                }
3127            });
3128        }
3129
3130        function initMonthNavigator()
3131        {
3132            $("#mec_skin_" + settings.id + " .mec-load-month").off("click").on("click", function()
3133            {
3134                var year = $(this).data("mec-year");
3135                var month = $(this).data("mec-month");
3136
3137                setMonth(year, month, false, true);
3138            });
3139        }
3140
3141        function search(year, month)
3142        {
3143            // Add Loading Class
3144            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
3145            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
3146
3147            $.ajax(
3148            {
3149                url: settings.ajax_url,
3150                data: "action=mec_tile_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=1",
3151                dataType: "json",
3152                type: "post",
3153                success: function(response)
3154                {
3155                    if(settings.load_method === 'month')
3156                    {
3157                        active_month = response.current_month.month;
3158                        active_year = response.current_month.year;
3159
3160                        // Append Month
3161                        $("#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>');
3162
3163                        // Append Month Navigator
3164                        $("#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>');
3165
3166                        // Re-initialize Month Navigator
3167                        initMonthNavigator();
3168
3169                        // Set onclick Listeners
3170                        setListeners();
3171
3172                        // Toggle Month
3173                        toggleMonth(response.current_month.id);
3174                    }
3175                    else
3176                    {
3177                        // Append Items
3178                        $("#mec_skin_events_" + settings.id).html(response.html);
3179
3180                        // Show load more button
3181                        if (response.count >= settings.limit) $("#mec_skin_" + settings.id + " .mec-load-more-button").removeClass("mec-util-hidden");
3182                        // Hide load more button
3183                        else $("#mec_skin_" + settings.id + " .mec-load-more-button").addClass("mec-util-hidden");
3184
3185                        // Update the variables
3186                        settings.end_date = response.end_date;
3187                        settings.offset = response.offset;
3188
3189                        // Set onclick Listeners
3190                        setListeners();
3191                    }
3192
3193                    // Remove loading Class
3194                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
3195                },
3196                error: function(){}
3197            });
3198        }
3199
3200        function setMonth(year, month, do_in_background, navigator_click)
3201        {
3202            if(typeof do_in_background === "undefined") do_in_background = false;
3203            navigator_click = navigator_click || false;
3204
3205            var month_id = year + "" + month;
3206
3207            if(!do_in_background)
3208            {
3209                active_month = month;
3210                active_year = year;
3211            }
3212
3213            // Month exists so we just show it
3214            if($("#mec_tile_month_" + settings.id + "_" + month_id).length)
3215            {
3216                // Toggle Month
3217                toggleMonth(month_id);
3218            }
3219            else
3220            {
3221                if(!do_in_background)
3222                {
3223                    // Add Loading Class
3224                    if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
3225                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
3226                }
3227
3228                $.ajax(
3229                {
3230                    url: settings.ajax_url,
3231                    data: "action=mec_tile_load_month&mec_year=" + year + "&mec_month=" + month + "&" + settings.atts + "&apply_sf_date=0" + "&navigator_click=" + navigator_click,
3232                    dataType: "json",
3233                    type: "post",
3234                    success: function(response)
3235                    {
3236                        // Append Month
3237                        $("#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>');
3238
3239                        // Append Month Navigator
3240                        $("#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>');
3241
3242                        // Re-initialize Month Navigator
3243                        initMonthNavigator();
3244
3245                        // Set onclick Listeners
3246                        setListeners();
3247
3248                        if(!do_in_background)
3249                        {
3250                            // Toggle Month
3251                            toggleMonth(response.current_month.id);
3252
3253                            // Remove loading Class
3254                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
3255
3256                            // Set Month Filter values in search widget
3257                            $("#mec_sf_month_" + settings.id).val(month);
3258                            $("#mec_sf_year_" + settings.id).val(year);
3259                        }
3260                        else
3261                        {
3262                            $("#mec_tile_month_" + settings.id + "_" + response.current_month.id).hide();
3263                            $("#mec_month_navigator_" + settings.id + "_" + response.current_month.id).hide();
3264                        }
3265                    },
3266                    error: function(){}
3267                });
3268            }
3269        }
3270
3271        function toggleMonth(month_id)
3272        {
3273            var active_month = $("#mec_skin_" + settings.id + " .mec-month-container-selected").data("month-id");
3274            var active_day = $("#mec_tile_month_" + settings.id + "_" + active_month + " .mec-selected-day").data("day");
3275
3276            if(active_day <= 9) active_day = "0" + active_day;
3277
3278            // Toggle Month Navigator
3279            $("#mec_skin_" + settings.id + " .mec-month-navigator").hide();
3280            $("#mec_month_navigator_" + settings.id + "_" + month_id).show();
3281
3282            // Toggle Month
3283            $("#mec_skin_" + settings.id + " .mec-month-container").hide().removeClass("mec-month-container-selected");
3284            $("#mec_tile_month_" + settings.id + "_" + month_id).show().addClass("mec-month-container-selected");
3285        }
3286
3287        var sf;
3288
3289        function setListeners()
3290        {
3291            $("#mec_skin_" + settings.id + " .mec-load-more-button").off("click").on("click", function()
3292            {
3293                loadMore();
3294            });
3295
3296            // Add the onclick event
3297            $("#mec_skin_" + settings.id + " .mec-has-event").off("click").on('click', function(e)
3298            {
3299                e.preventDefault();
3300
3301                // define variables
3302                var $this = $(this),
3303                    data_mec_cell = $this.data('mec-cell'),
3304                    month_id = $this.data('month');
3305
3306                $("#mec_monthly_view_month_" + settings.id + "_" + month_id + " .mec-calendar-day").removeClass('mec-selected-day');
3307                $this.addClass('mec-selected-day');
3308
3309                $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
3310                $('#mec_month_side_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
3311
3312                $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
3313                $('#mec_monthly_view_month_' + settings.id + '_' + month_id + ' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
3314            });
3315
3316            // Single Event Method
3317            if(settings.sed_method != '0')
3318            {
3319                sed();
3320            }
3321        }
3322
3323        function sed()
3324        {
3325            // Single Event Display
3326            $("#mec_skin_" + settings.id + " .mec-event-title a").off('click').on('click', function(e)
3327            {
3328                e.preventDefault();
3329                var href = $(this).attr('href');
3330
3331                var id = $(this).data('event-id');
3332                var occurrence = get_parameter_by_name('occurrence', href);
3333                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method, settings.image_popup);
3334            });
3335        }
3336
3337        function loadMore()
3338        {
3339            // Load More Button
3340            var $load_more_button = $("#mec_skin_" + settings.id + " .mec-load-more-button");
3341
3342            // Add loading Class
3343            $load_more_button.addClass("mec-load-more-loading");
3344
3345            $.ajax(
3346            {
3347                url: settings.ajax_url,
3348                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",
3349                dataType: "json",
3350                type: "post",
3351                success: function(response)
3352                {
3353                    if(response.count == '0')
3354                    {
3355                        // Remove loading Class
3356                        $load_more_button.removeClass("mec-load-more-loading");
3357
3358                        // Hide load more button
3359                        $load_more_button.addClass("mec-util-hidden");
3360                    }
3361                    else
3362                    {
3363                        // Show load more button
3364                        $load_more_button.removeClass("mec-util-hidden");
3365
3366                        // Append Items
3367                        $("#mec_skin_events_" + settings.id).append(response.html);
3368
3369                        // Remove loading Class
3370                        $load_more_button.removeClass("mec-load-more-loading");
3371
3372                        // Update the variables
3373                        settings.end_date = response.end_date;
3374                        settings.offset = response.offset;
3375                        settings.current_month_divider = response.current_month_divider;
3376
3377                        // Single Event Method
3378                        if(settings.sed_method != '0')
3379                        {
3380                            sed();
3381                        }
3382                    }
3383                },
3384                error: function(){}
3385            });
3386        }
3387    };
3388}(jQuery));
3389
3390function mec_gateway_selected(gateway_id) {
3391    // Hide all gateway forms
3392    jQuery('.mec-book-form-gateway-checkout').addClass('mec-util-hidden');
3393
3394    // Show selected gateway form
3395    jQuery('#mec_book_form_gateway_checkout' + gateway_id).removeClass('mec-util-hidden');
3396}
3397
3398function mec_wrap_resize() {
3399    var $mec_wrap = jQuery('.mec-wrap'),
3400        mec_width = $mec_wrap.width();
3401    if (mec_width < 959) {
3402        $mec_wrap.addClass('mec-sm959');
3403    } else {
3404        $mec_wrap.removeClass('mec-sm959');
3405    }
3406}
3407
3408function get_parameter_by_name(name, url) {
3409    if (!url) {
3410        url = window.location.href;
3411    }
3412
3413    name = name.replace(/[\[\]]/g, "\\$&");
3414    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
3415        results = regex.exec(url);
3416
3417    if (!results) return null;
3418    if (!results[2]) return '';
3419
3420    return decodeURIComponent(results[2].replace(/\+/g, " "));
3421}
3422
3423// Focus events day
3424var mec_g_month_id = null;
3425
3426function mecFocusDay(settings)
3427{
3428    setTimeout(function()
3429    {
3430        var id = settings.id,
3431        date = new Date(),
3432        mec_owl_year = mec_g_month_id.substr(0, 4),
3433        mec_current_year = date.getFullYear(),
3434        mec_owl_month = mec_g_month_id.substr(4, 6),
3435        mec_current_month = date.getMonth() + 1,
3436        mec_current_day = date.getDate(),
3437        mec_owl_go = jQuery("#mec-owl-calendar-d-table-" + id + "-" + mec_g_month_id),
3438        mec_day_exist = false;
3439        mec_owl_go.find('.owl-stage > div').each(function (index)
3440        {
3441            if(parseInt(jQuery(this).children('div').data("events-count")) > 0)
3442            {
3443                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)
3444                {
3445                    var index_plus = index + 1;
3446                    jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_i
3446d + (index < 10 ? '0' + index_plus : index_plus)).trigger('click');
3447                    mec_owl_go.trigger('to.owl.carousel', index_plus);
3448                    mec_day_exist = true;
3449                    return false;
3450                }
3451                else
3452                {
3453                    jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_id + mec_current_day).trigger('click');
3454                    mec_owl_go.trigger('to.owl.carousel', mec_current_day);
3455                    mec_day_exist = true;
3456                    return false;
3457                }
3458            }
3459        });
3460
3461        if(!mec_day_exist && ((mec_owl_year == mec_current_year) && (mec_owl_month == mec_current_month)))
3462        {
3463            jQuery('#mec_daily_view_day' + id + '_' + mec_g_month_id + mec_current_day).trigger('click');
3464            mec_owl_go.trigger('to.owl.carousel', mec_current_day);
3465        }
3466    }, 1000);
3467}
3468
3469// Focus events week
3470function mec_focus_week(id, skin) {
3471    skin = skin || 'weekly';
3472    var wrap_elem = jQuery('.mec-weeks-container .mec-weekly-view-week-active').parent();
3473    var days = wrap_elem.find('dt');
3474    var week = wrap_elem.find('dl').length;
3475    var focus_week = false;
3476    var i = j = 1;
3477    
3478    for (i = 1; i < week; i++) {
3479        setTimeout(function () {
3480            var event = new Event('click');
3481            jQuery('#mec_skin_' + id + ' .mec-previous-month.mec-load-week')[0].dispatchEvent(event);
3482        }, 33);
3483    }
3484
3485    days.each(function (i) {
3486        if (jQuery(this).data('events-count') > 0) {
3487            if (focus_week === false) {
3488                focus_week = parseInt(jQuery(this).parent().data('week-number'));
3489            }
3490
3491            if (skin == 'timetable') {
3492                if (parseInt(jQuery(this).parent().data('week-number')) == parseInt(jQuery('body').data('currentweek'))) {
3493                    focus_week = parseInt(jQuery(this).parent().data('week-number'));
3494                    return false;
3495                }
3496            }
3497            else {
3498                return false;
3499            }
3500        }
3501    });
3502
3503    if (focus_week !== false) {
3504        for (j = 1; j < focus_week; j++) {
3505            setTimeout(function () {
3506                var event = new Event('click');
3507                jQuery('#mec_skin_' + id + ' .mec-next-month.mec-load-week')[0].dispatchEvent(event);
3508            }, 33);
3509        }
3510    }
3511}
3512
3513// TODO must be cleaned JS codes
3514(function ($) {
3515    $(document).ready(function () {
3516        // Check RTL website
3517        if ($('body').hasClass('rtl')) {
3518            var owl_rtl = true;
3519        } else {
3520            var owl_rtl = false;
3521        }
3522
3523        // MEC WIDGET CAROUSEL
3524        $(".mec-widget .mec-event-grid-classic").addClass('mec-owl-carousel mec-owl-theme');
3525        $(".mec-widget .mec-event-grid-classic").owlCarousel({
3526            autoplay: true,
3527            autoplayTimeout: 3000, // Set AutoPlay to 3 seconds
3528            autoplayHoverPause: true,
3529            loop: true,
3530            dots: false,
3531            nav: true,
3532            navText: ["<i class='mec-sl-arrow-left'></i>", " <i class='mec-sl-arrow-right'></i>"],
3533            items: 1,
3534            autoHeight: true,
3535            responsiveClass: true,
3536            rtl: owl_rtl,
3537        });
3538
3539        // add mec-sm959 class if mec-wrap div size < 959
3540        mec_wrap_resize();
3541
3542        jQuery(window).bind('resize', function () {
3543            mec_wrap_resize();
3544        });
3545
3546        // Fixed: social hover in iphone
3547        $('.mec-event-sharing-wrap').hover(function () {
3548                $(this).find('.mec-event-sharing').show(0);
3549            },
3550            function () {
3551                $(this).find('.mec-event-sharing').hide(0);
3552            });
3553
3554        // Register Booking Smooth Scroll
3555        $('a.simple-booking[href^="#mec-events-meta-group-booking"]').click(function () {
3556            if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
3557                var target = $(this.hash);
3558                target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
3559
3560                if (target.length) {
3561                    var scrollTopVal = target.offset().top - 30;
3562
3563                    $('html, body').animate({
3564                        scrollTop: scrollTopVal
3565                    }, 600);
3566
3567                    return false;
3568                }
3569            }
3570        });
3571
3572        // Load Information widget under title in mobile/tablet
3573        if ($('.single-mec-events .mec-single-event:not(".mec-single-modern")').length > 0) {
3574            if ($('.single-mec-events .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox').length > 0) {
3575                var html = $('.single-mec-events .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox')[0].outerHTML;
3576                if (Math.max(document.documentElement.clientWidth, window.innerWidth || 0) < 960) {
3577                    $('.single-mec-events .col-md-4 .mec-event-info-desktop.mec-event-meta.mec-color-before.mec-frontbox').remove();
3578                    $('.single-mec-events .mec-event-info-mobile').html(html)
3579                }
3580            }
3581        }
3582
3583        // Yearly view
3584        $('.mec-yearly-calendar .mec-has-event a').on('click', function(e) {
3585            e.preventDefault();
3586            var des = $(this).attr('href');
3587            $('.mec-events-agenda').removeClass('mec-selected');
3588            $(des).closest('.mec-events-agenda').addClass('mec-selected');
3589            var scrollTopVal = $(des).closest('.mec-events-agenda').offset().top - 35;
3590
3591            $('html, body').animate({
3592                scrollTop: scrollTopVal
3593            }, 300);
3594        });
3595
3596    });
3597})(jQuery);
3598
3599// Weather
3600(function ($) {
3601    // Convart fahrenheit to centigrade
3602    function convertToC(value) {
3603        return Math.round(((parseFloat(value) - 32) * 5 / 9));
3604    }
3605
3606    // Convert centigrade to fahrenheit
3607    function convertToF(value) {
3608        return Math.round(((1.8 * parseFloat(value)) + 32));
3609    }
3610
3611    // Convert miles to kilometers
3612    function MPHToKPH(value) {
3613        return Math.round(1.609344 * parseFloat(value));
3614    }
3615
3616    // Convert kilometers to miles
3617    function KPHToMPH(value) {
3618        return Math.round((0.6214 * parseFloat(value)));
3619    }
3620
3621    $(document).ready(function ($) {
3622        var degree = $('.mec-weather-summary-temp');
3623        var weather_extra = $('.mec-weather-extras');
3624        var wind = weather_extra.children('.mec-weather-wind');
3625        var visibility = weather_extra.children('.mec-weather-visibility');
3626
3627        //  Events
3628        $('.degrees-mode').click(function () {
3629            var degree_mode = degree.children('var').text().trim();
3630            var wind_text = wind.text().substring(5);
3631            var visibility_text = visibility.text().substring(11);
3632
3633            if (degree_mode == degree.data('c').trim()) {
3634                degree.html(convertToF(parseInt(degree.text())) + ' <var>' + degree.data('f') + '</var>');
3635                wind.html('<span>Wind:</span> ' + KPHToMPH(parseInt(wind_text)) + '<var>' + wind.data('mph') + '</var>');
3636                visibility.html('<span>Visibility:</span> ' + KPHToMPH(parseInt(visibility_text)) + '<var>' + visibility.data('mph') + '</var>');
3637                $(this).text($(this).data('metric'));
3638            } else if (degree_mode == degree.data('f').trim()) {
3639                degree.html(convertToC(parseInt(degree.text())) + ' <var>' + degree.data('c') + '</var>');
3640                wind.html('<span>Wind:</span> ' + MPHToKPH(parseInt(wind_text)) + '<var>' + wind.data('kph') + '</var>');
3641                visibility.html('<span>Visibility:</span> ' + MPHToKPH(parseInt(visibility_text)) + '<var>' + visibility.data('kph') + '</var>');
3642                $(this).text($(this).data('imperial'));
3643            }
3644        });
3645
3646        $('a').on('click', function () {})
3647
3648        // FES Speakers Adding
3649        $('#mec_add_speaker_button').on('click', function () {
3650            var $this = this;
3651            var content = $($this).parent().find('input');
3652            var list = $('#mec-fes-speakers-list');
3653            var key = list.find('.mec-error').length;
3654
3655            $($this).prop("disabled", true).css('cursor', 'wait');
3656            $.post(ajaxurl, {
3657                    action: "speaker_adding",
3658                    content: content.val(),
3659                    key: key
3660                })
3661                .done(function (data) {
3662                    if ($(data).hasClass('mec-error')) {
3663                        list.prepend(data);
3664                        setTimeout(function () {
3665                            $('#mec-speaker-error-${key}').remove();
3666                        }, 1500);
3667                    } else {
3668                        list.html(data);
3669                        content.val('');
3670                    }
3671
3672                    $($this).prop("disabled", false).css('cursor', 'pointer');
3673                });
3674        });
3675
3676        // Check RTL website
3677        var owl_rtl = $('body').hasClass('rtl') ? true : false;
3678
3679        // MEC FES Date Wrappers
3680        var fes_export_list = $('.mec-export-list-wrapper');
3681
3682        // MEC FES Date Item Event
3683        fes_export_list.find('.mec-export-list-item').click(function()
3684        {
3685            $('.mec-export-list-item').removeClass('fes-export-date-active');
3686            $(this).addClass('fes-export-date-active'); 
3687        });
3688
3689        // MEC BuddyPress Integration Attendees Modules
3690        var mec_bd_attendees_modules = $('.mec-attendees-list-details > ul > li');
3691        mec_bd_attendees_modules.click(function()
3692        {
3693           $(this).find('.mec-attendees-toggle').toggle();
3694        });
3695
3696        // MEC FES export csv
3697        $('.mec-event-export-csv, .mec-event-export-excel').click(function()
3698        {
3699            var mec_event_id = $(this).parent().parent().data('event-id');
3700            var booking_data = $(this).parent().parent().find('.mec-fes-btn-date .mec-certain-user-booking-ids').val();
3701            var certain_data = $(this).parent().parent().find('.fes-export-date-active').data('ids');
3702            
3703            if(typeof booking_data == 'undefined') booking_data = ',';
3704            if(typeof certain_data != 'undefined') booking_data = certain_data;
3705
3706            booking_data = booking_data.substr(0, booking_data.length -1);
3707            $.ajax({
3708                url: mecdata.ajax_url,
3709                data: "action=mec_fes_csv_export&fes_nonce=" + mecdata.fes_nonce + "&mec_event_id=" + mec_event_id + "&booking_ids=" + booking_data,
3710                dataType: 'json',
3711                type: "post",
3712                success: function (res) {
3713                    if(res.ex != 'error')
3714                    {
3715                        var $csv = $('<a>');
3716                        $csv.attr('href', res.ex);
3717                        $('body').append($csv);
3718                        $csv.attr('download', 'bookings-' + res.name + '.csv');
3719                        $csv[0].click();
3720                        $csv.remove();
3721                    }
3722                },
3723                error: function () {}
3724            });
3725        });
3726    });
3727})(jQuery);
3728
3729function mec_book_form_submit(event, unique_id)
3730{
3731    event.preventDefault();
3732    window["mec_book_form_submit" + unique_id]();
3733}
3734
3735function mec_book_form_back_btn_cache(context, unique_id)
3736{
3737    var id = jQuery(context).attr('id');
3738    var mec_form_data = jQuery('#mec_book_form' + unique_id).serializeArray();
3739
3740    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);
3741    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);
3742}
3743
3744function mec_agreement_change(context)
3745{
3746    var status = jQuery(context).is(":checked") ? true : false;
3747    
3748    if(status) jQuery(context).attr("checked", "checked");
3749    else jQuery(context).removeAttr("checked");
3750}
3751
3752function mec_book_form_back_btn_click(context, unique_id)
3753{
3754    var id = jQuery(context).attr('id');
3755    unique_id = jQuery('body').data('unique-id');
3756
3757    jQuery('#mec_booking_message' + unique_id).hide();
3758    if(id == "mec-book-form-back-btn-step-2")
3759    {
3760        var mec_form_data_step_1 = jQuery('body').data('mec-book-form-data-step-1');
3761
3762        jQuery('#mec_booking' + unique_id).html(jQuery('body').data('mec-book-form-step-1'));
3763        jQuery.each(mec_form_data_step_1, function(index, object_item)
3764        {
3765            jQuery('[name="' + object_item.name + '"]').val(object_item.value);
3766        });
3767
3768        // Booking Refresh Recaptcha When Back Button Click.
3769        var recaptcha_check =  jQuery('#mec_booking' + unique_id).find('#g-recaptcha').length;
3770        if(recaptcha_check != 0)
3771        {
3772            jQuery('#g-recaptcha').html('');
3773            grecaptcha.render("g-recaptcha", {
3774                sitekey: mecdata.recapcha_key
3775            });
3776        }
3777    }
3778    else if(id == "mec-book-form-back-btn-step-3")
3779    {
3780        var mec_form_data_step_2 = jQuery('body').data('mec-book-form-data-step-2');
3781        
3782        jQuery('#mec_booking' + unique_id).html(jQuery('body').data('mec-book-form-step-2'));
3783        jQuery.each(mec_form_data_step_2, function(index, object_item)
3784        {
3785            var mec_elem = jQuery('[name="'+ object_item.name +'"]');
3786            var mec_type = mec_elem.attr('type');
3787
3788            if((mec_type == 'checkbox' || mec_type == 'radio'))
3789            {
3790                var mec_elem_len = jQuery('[name="'+ object_item.name +'"]').length;
3791
3792                if(mec_elem_len > 1)
3793                {
3794                    var id = '#' + mec_elem.attr('id').match(/mec_book_reg_field_reg.*_/g) + object_item.value.toLowerCase();
3795                    jQuery(id).prop('checked', true);
3796                }
3797                else
3798                {
3799                    mec_elem.prop('checked', true);
3800                }
3801            }
3802
3803            mec_elem.val(object_item.value);
3804        });
3805    }
3806}
3807
3808// Google map Skin
3809function gmapSkin(NewJson) {
3810    var gmap_temp = jQuery("#gmap-data");
3811    var beforeJson = gmap_temp.val();
3812    if (typeof beforeJson === 'undefined') beforeJson = '';
3813
3814    var newJson = NewJson;
3815    var jsonPush = (typeof beforeJson != 'undefined' && beforeJson.trim() == "") ? [] : JSON.parse(beforeJson);
3816    var pushState = jsonPush.length < 1 ? false : true;
3817
3818    for (var key in newJson) {
3819        if (pushState) {
3820            jsonPush.forEach(function (Item, Index) {
3821                var render_location = jsonPush[Index].latitude + "," + jsonPush[Index].longitude;
3822                if (key.trim() == render_location.trim()) {
3823                    // LightBox Count Update
3824                    newJson[key].count = newJson[key].count + jsonPush[Index].count;
3825
3826                    // LightBox Ids Update
3827                    newJson[key].event_ids = newJson[key].event_ids.concat(jsonPush[Index].event_ids);
3828
3829                    // LightBox Initialize
3830                    var dom = jQuery(newJson[key].lightbox).find("div:nth-child(2)");
3831                    var main_items = dom.html();
3832                    var new_items = jQuery(jsonPush[Index].lightbox).find("div:nth-child(2)").html();
3833
3834                    var render_items = dom.html(main_items + new_items).html();
3835                    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>';
3836                    newJson[key].lightbox = new_info_lightbox;
3837
3838                    // LightBox info                        
3839                    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>';
3840                    newJson[key].infowindow = new_info_window;
3841
3842                    // Remove before values of this location
3843                    jsonPush.splice(Index, 1);
3844                }
3845            });
3846        }
3847
3848        jsonPush.push(newJson[key]);
3849    }
3850
3851    gmap_temp.val(JSON.stringify(jsonPush));
3852    return jsonPush;
3853}

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.