PageSourceSearch

https://www.farminveste-sgps.com/wp-content/plugins/modern-events-calendar/assets/js/frontend.js?ver=5.8.2

js farminveste-sgps.com collected 2026-10-04 13:56:55 UTC 104,657 bytes, 2,857 lines download raw bytes

1// MEC Single Event Displayer
2var mecSingleEventDisplayer = {
3    getSinglePage: function(id, occurrence, ajaxurl, layout)
4    {
5        if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
6        jQuery('.mec-modal-result').addClass('mec-modal-preloader');
7
8        jQuery.ajax(
9        {
10            url: ajaxurl,
11            data: "action=mec_load_single_page&id="+id+(occurrence != null ? "&occurrence="+occurrence : "")+"&layout="+layout,
12            type: "get",
13            success: function(response)
14            {
15                jQuery('.mec-modal-result').removeClass("mec-modal-preloader");
16                lity(response);
17            },
18            error: function()
19            {
20            }
21        });
22    }
23};
24
25// MEC SEARCH FORM PLUGIN
26(function($)
27{
28    $.fn.mecSearchForm = function(options)
29    {
30        // Default Options
31        var settings = $.extend(
32        {
33            // These are the defaults.
34            id: 0,
35            search_form_element: '',
36            atts: '',
37            callback: function()
38            {
39            }
40        }, options);
41        
42        $("#mec_sf_category_"+settings.id).on('change', function(e)
43        {
44            search();
45        });
46        
47        $("#mec_sf_location_"+settings.id).on('change', function(e)
48        {
49            search();
50        });
51        
52        $("#mec_sf_organizer_"+settings.id).on('change', function(e)
53        {
54            search();
55        });
56        
57        $("#mec_sf_label_"+settings.id).on('change', function(e)
58        {
59            search();
60        });
61        
62        $("#mec_sf_s_"+settings.id).on('change', function(e)
63        {
64            search();
65        });
66
67        $("#mec_sf_month_"+settings.id).on('change', function(e)
68        {
69            search();
70        });
71
72        $("#mec_sf_year_"+settings.id).on('change', function(e)
73        {
74            // Change Month to January if it's set to ignore date and year changed
75            if($("#mec_sf_month_"+settings.id).val() === 'ignore_date') $("#mec_sf_month_"+settings.id).val('01');
76            
77            search();
78        });
79        
80        function search()
81        {
82            var s = $("#mec_sf_s_"+settings.id).length ? $("#mec_sf_s_"+settings.id).val() : '';
83            var category = $("#mec_sf_category_"+settings.id).length ? $("#mec_sf_category_"+settings.id).val() : '';
84            var location = $("#mec_sf_location_"+settings.id).length ? $("#mec_sf_location_"+settings.id).val() : '';
85            var organizer = $("#mec_sf_organizer_"+settings.id).length ? $("#mec_sf_organizer_"+settings.id).val() : '';
86            var label = $("#mec_sf_label_"+settings.id).length ? $("#mec_sf_label_"+settings.id).val() : '';
87            var month = $("#mec_sf_month_"+settings.id).length ? $("#mec_sf_month_"+settings.id).val() : '';
88            var year = $("#mec_sf_year_"+settings.id).length ? $("#mec_sf_year_"+settings.id).val() : '';
89            var skip_date = false;
90            
91            if(month === 'ignore_date') skip_date = true;
92
93            // Skip filter by date
94            if(skip_date === true)
95            {
96                month = '';
97                year = '';
98            }
99            
100            var atts = settings.atts+'&sf[s]='+s+'&sf[month]='+month+'&sf[year]='+year+'&sf[category]='+category+'&sf[location]='+location+'&sf[organizer]='+organizer+'&sf[label]='+label;
101            settings.callback(atts);
102        }
103    };
104    
105}(jQuery));
106
107// MEC GOOGLE MAPS PLUGIN
108(function($)
109{
110    $.fn.mecGoogleMaps = function(options)
111    {
112        // Default Options
113        var settings = $.extend(
114        {
115            // These are the defaults.
116            latitude: 0,
117            longitude: 0,
118            autoinit: true,
119            zoom: 14,
120            icon: '../img/m-01.png',
121            markers: {},
122            sf: {},
123            getDirection: 0,
124            directionOptions:
125            {
126                form: '#mec_get_direction_form',
127                reset: '.mec-map-get-direction-reset',
128                addr: '#mec_get_direction_addr',
129                destination: {},
130            },
131        }, options);
132
133        var bounds;
134        var map;
135        var infowindow;
136        var loadedMarkers = new Array();
137
138        var canvas = this;
139        var DOM = canvas[0];
140
141        // Init the Map
142        if(settings.autoinit) init();
143        
144        function init()
145        {
146            // Search Widget
147            if(settings.sf.container !== '')
148            {
149                $(settings.sf.container).mecSearchForm(
150                {
151                    id: settings.id,
152                    atts: settings.atts,
153                    callback: function(atts)
154                    {
155                        settings.atts = atts;
156                        getMarkers();
157                    }
158                });
159            }
160
161            // Create the options
162            bounds = new google.maps.LatLngBounds();
163            var center = new google.maps.LatLng(settings.latitude, settings.longitude);
164
165            var mapOptions = {
166                scrollwheel: false,
167                mapTypeId: google.maps.MapTypeId.ROADMAP,
168                center: center,
169                zoom: settings.zoom,
170                styles: settings.styles,
171            };
172
173            // Init map
174            map = new google.maps.Map(DOM, mapOptions);
175
176            // Init Infowindow
177            infowindow = new google.maps.InfoWindow(
178            {
179                pixelOffset: new google.maps.Size(0, -37)
180            });
181
182            // Load Markers
183            loadMarkers(settings.markers);
184
185            // Initialize get direction feature
186            if(settings.getDirection === 1) initSimpleGetDirection();
187            else if(settings.getDirection === 2) initAdvancedGetDirection();
188        }
189        
190        function loadMarkers(markers)
191        {
192            var f = 0;
193            for(var i in markers)
194            {
195                f++;
196                var dataMarker = markers[i];
197
198                var marker = new RichMarker(
199                {
200                    position: new google.maps.LatLng(dataMarker.latitude, dataMarker.longitude),
201                    map: map,
202                    event_ids: dataMarker.event_ids,
203                    infowindow: dataMarker.infowindow,
204                    lightbox: dataMarker.lightbox,
205                    icon: (dataMarker.icon ? dataMarker.icon : settings.icon),
206                    content: '<div class="mec-marker-container"><span class="mec-marker-wrap"><span class="mec-marker">'+dataMarker.count+'</span><span class="mec-marker-pulse-wrap"><span class="mec-marker-pulse"></span></span></span></div>',
207                    shadow: 'none'
208                });
209
210                // Marker Info-Window
211                google.maps.event.addListener(marker, 'mouseover', function(event)
212                {
213                    infowindow.close();
214                    infowindow.setContent(this.infowindow);
215                    infowindow.open(map, this);
216                });
217
218                // Marker Lightbox
219                google.maps.event.addListener(marker, 'click', function(event)
220                {
221                    lity(this.lightbox);
222                });
223
224                // extend the bounds to include each marker's position
225                bounds.extend(marker.position);
226                
227                // Added to Markers
228                loadedMarkers.push(marker);
229            }
230            
231            if(f > 1) map.fitBounds(bounds);
232
233            // Set map center if only 1 marker found
234            if(f === 1)
235            {
236                map.setCenter(new google.maps.LatLng(dataMarker.latitude, dataMarker.longitude));
237            }
238        }
239        
240        function getMarkers()
241        {
242            // Add loader
243            $("#mec_googlemap_canvas"+settings.id).addClass("mec-loading");
244            
245            $.ajax(
246            {
247                url: settings.ajax_url,
248                data: "action=mec_map_get_markers&"+settings.atts,
249                dataType: "json",
250                type: "post",
251                success: function(response)
252                {
253                    // Remove Markers
254                    removeMarkers();
255                    
256                    // Load Markers
257                    loadMarkers(response.markers);
258                    
259                    // Remove loader
260                    $("#mec_googlemap_canvas"+settings.id).removeClass("mec-loading");
261                },
262                error: function()
263                {
264                    // Remove loader
265                    $("#mec_googlemap_canvas"+settings.id).removeClass("mec-loading");
266                }
267            });
268        }
269        
270        function removeMarkers()
271        {
272            bounds = new google.maps.LatLngBounds();
273            
274            if(loadedMarkers)
275            {
276                for(i=0; i < loadedMarkers.length; i++) loadedMarkers[i].setMap(null);
277                loadedMarkers.length = 0;
278            }
279        }
280        
281        var directionsDisplay;
282        var directionsService;
283        var startMarker;
284        var endMarker;
285
286        function initSimpleGetDirection()
287        {
288            $(settings.directionOptions.form).on('submit', function(event)
289            {
290                event.preventDefault();
291
292                var from = $(settings.directionOptions.addr).val();
293                var dest = new google.maps.LatLng(settings.directionOptions.destination.latitude, settings.directionOptions.destination.longitude);
294
295                // Reset the direction
296                if(typeof directionsDisplay !== 'undefined')
297                {
298                    directionsDisplay.setMap(null);
299                    startMarker.setMap(null);
300                    endMarker.setMap(null);
301                }
302
303                // Fade Google Maps canvas
304                $(canvas).fadeTo(300, .4);
305
306                directionsDisplay = new google.maps.DirectionsRenderer({suppressMarkers: true});
307                directionsService = new google.maps.DirectionsService();
308
309                var request = {
310                    origin: from, 
311                    destination: dest,
312                    travelMode: google.maps.DirectionsTravelMode.DRIVING
313                };
314
315                directionsService.route(request, function(response, status)
316                {
317                    if(status === google.maps.DirectionsStatus.OK)
318                    {
319                        directionsDisplay.setDirections(response);
320                        directionsDisplay.setMap(map);
321
322                        var leg = response.routes[0].legs[0];
323                        startMarker = new google.maps.Marker(
324                        {
325                            position: leg.start_location,
326                            map: map,
327                            icon: settings.directionOptions.startMarker,
328                        });
329
330                        endMarker = new google.maps.Marker(
331                        {
332                            position: leg.end_location,
333                            map: map,
334                            icon: settings.directionOptions.endMarker,
335                        });
336                    }
337
338                    // Fade Google Maps canvas
339                    $(canvas).fadeTo(300, 1);
340                });
341
342                // Show reset button
343                $(settings.directionOptions.reset).removeClass('mec-util-hidden');
344            });
345
346            $(settings.directionOptions.reset).on('click', function(event)
347            {
348                $(settings.directionOptions.addr).val('');
349                $(settings.directionOptions.form).submit();
350
351                // Hide reset button
352                $(settings.directionOptions.reset).addClass('mec-util-hidden');
353            });
354        }
355
356        function initAdvancedGetDirection()
357        {
358            $(settings.directionOptions.form).on('submit', function(event)
359            {
360                event.preventDefault();
361
362                var from = $(settings.directionOptions.addr).val();
363                var url = 'https://maps.google.com/?saddr='+encodeURIComponent(from)+'&daddr='+settings.directionOptions.destination.latitude+','+settings.directionOptions.destination.longitude;
364
365                window.open(url);
366            });
367        }
368
369        return {
370            init: function()
371            {
372                init();
373            }
374        };
375    };
376    
377}(jQuery));
378
379// MEC FULL CALENDAR PLUGIN
380(function($)
381{
382    $.fn.mecFullCalendar = function(options)
383    {
384        // Default Options
385        var settings = $.extend(
386        {
387            // These are the defaults.
388            id: 0,
389            atts: '',
390            ajax_url: '',
391            sf: {},
392            skin: '',
393        }, options);
394        
395        // Set onclick Listeners
396        setListeners();
397        
398        var sf;
399        function setListeners()
400        {
401            // Search Widget
402            if(settings.sf.container !== '')
403            {
404                sf = $(settings.sf.container).mecSearchForm(
405                {
406                    id: settings.id,
407                    atts: settings.atts,
408                    callback: function(atts)
409                    {
410                        settings.atts = atts;
411                        search();
412                    }
413                });
414            }
415            
416            // Add the onclick event
417            $("#mec_skin_"+settings.id+" .mec-totalcal-box .mec-totalcal-view span").on('click', function(e)
418            {
419                e.preventDefault();
420                var skin = $(this).data('skin');
421
422                $(this).addClass('mec-totalcalview-selected').siblings().removeClass('mec-totalcalview-selected');
423                
424                loadSkin(skin);
425            });
426        }
427        
428        function loadSkin(skin)
429        {
430            // Set new Skin
431            settings.skin = skin;
432            
433            // Add Loading Class
434        if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
435        jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
436
437            $.ajax(
438            {
439                url: settings.ajax_url,
440                data: "action=mec_full_calendar_switch_skin&skin="+skin+"&"+settings.atts+"&apply_sf_date=1&sed="+settings.sed_method,
441                dataType: "json",
442                type: "post",
443                success: function(response)
444                {
445                    $("#mec_full_calendar_container_"+settings.id).html(response);
446                    
447                    // Remove loader
448                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
449                },
450                error: function()
451                {
452                }
453            });
454        }
455        
456        function search()
457        {
458            // Add Loading Class
459        if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
460        jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
461            
462            $.ajax(
463            {
464                url: settings.ajax_url,
465                data: "action=mec_full_calendar_switch_skin&skin="+settings.skin+"&"+settings.atts+"&apply_sf_date=1",
466                dataType: "json",
467                type: "post",
468                success: function(response)
469                {
470                    $("#mec_full_calendar_container_"+settings.id).html(response);
471                    
472                    // Remove loader
473                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
474                },
475                error: function()
476                {
477                }
478            });
479        }
480    };
481    
482}(jQuery));
483
484// MEC YEARLY VIEW PLUGIN
485(function($)
486{
487    $.fn.mecYearlyView = function(options)
488    {
489        var active_year;
490
491        // Default Options
492        var settings = $.extend(
493        {
494            // These are the defaults.
495            today: null,
496            id: 0,
497            events_label: 'Events',
498            event_label: 'Event',
499            year_navigator: 0,
500            atts: '',
501            next_year: {},
502            sf: {},
503            ajax_url: '',
504        }, options);
505
506        // Initialize Year Navigator
507        if(settings.year_navigator) initYearNavigator();
508
509        // Load Next Year in background
510        if(settings.year_navigator) setYear(settings.next_year.year, true);
511
512        // Set onclick Listeners
513        setListeners();
514
515        // load more
516        $(document).on("click", "#mec_skin_events_"+settings.id+" .mec-load-more-button", function()
517        {
518            var year = $(this).parent().parent().parent().data('year-id');
519            loadMoreButton(year);
520        });
521
522        // Search Widget
523        if(settings.sf.container !== '')
524        {
525            sf = $(settings.sf.container).mecSearchForm(
526            {
527                id: settings.id,
528                atts: settings.atts,
529                callback: function(atts)
530                {
531                    settings.atts = atts;
532                    search(active_year);
533                }
534            });
535        }
536
537        function initYearNavigator()
538        {
539            // Remove the onclick event
540            $("#mec_skin_"+settings.id+" .mec-load-year").off("click");
541
542            // Add onclick event
543            $("#mec_skin_"+settings.id+" .mec-load-year").on("click", function()
544            {
545                var year = $(this).data("mec-year");
546                setYear(year);
547            });
548        }
549
550        function search(year)
551        {
552            // Add Loading Class
553            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
554            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
555
556            $.ajax(
557            {
558                url: settings.ajax_url,
559                data: "action=mec_yearly_view_load_year&mec_year="+year+"&"+settings.atts+"&apply_sf_date=1",
560                dataType: "json",
561                type: "post",
562                success: function(response)
563                {
564                    active_year = response.current_year.year;
565
566                    // Append Year
567                    $("#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>');
568
569                    // Append Year Navigator
570                    $("#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>');
571
572                    // Re-initialize Year Navigator
573                    initYearNavigator();
574
575                    // Set onclick Listeners
576                    setListeners();
577
578                    // Toggle Year
579                    toggleYear(response.current_year.id);
580
581                    // Remove loading Class
582                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
583                        
584                },
585                error: function()
586                {
587                }
588            });
589        }
590
591        function setYear(year, do_in_background)
592        {
593            if(typeof do_in_background === "undefined") do_in_background = false;
594
595            var year_id = year;
596            active_year = year;
597
598            // Year exists so we just show it
599            if($("#mec_yearly_view_year_"+settings.id+"_"+year_id).length)
600            {
601                // Toggle Year
602                toggleYear(year_id);
603            }
604            else
605            {
606                if(!do_in_background)
607                {
608                    // Add Loading Class
609                    if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
610                    jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
611                }
612
613                $.ajax(
614                {
615                    url: settings.ajax_url,
616                    data: "action=mec_yearly_view_load_year&mec_year="+year+"&"+settings.atts+"&apply_sf_date=0",
617                    dataType: "json",
618                    type: "post",
619                    success: function(response)
620                    {
621                        // Append Year
622                        $("#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>');
623
624                        // Append Year Navigator
625                        $("#mec_skin_"+settings.id+" .mec-yearly-title-sec").append('<div class="mec-year-navigator" id="mec_year_navigator_'+settings.id+'_'+response.current_year.i
625d+'">'+response.navigator+'</div>');
626
627                        // Re-initialize Year Navigator
628                        initYearNavigator();
629
630                        // Set onclick Listeners
631                        setListeners();
632
633                        if(!do_in_background)
634                        {
635                            // Toggle Year
636                            toggleYear(response.current_year.id);
637
638                            // Remove loading Class
639                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
640
641                            // Set Year Filter values in search widget
642                            $("#mec_sf_year_"+settings.id).val(year);
643                        }
644                        else
645                        {
646                            $("#mec_yearly_view_year_"+settings.id+"_"+response.current_year.id).hide();
647                            $("#mec_year_navigator_"+settings.id+"_"+response.current_year.id).hide();
648                        }
649                    },
650                    error: function()
651                    {
652                    }
653                });
654            }
655        }
656
657        function toggleYear(year_id)
658        {
659            // Toggle Year Navigator
660            $("#mec_skin_"+settings.id+" .mec-year-navigator").hide();
661            $("#mec_year_navigator_"+settings.id+"_"+year_id).show();
662
663            // Toggle Year
664            $("#mec_skin_"+settings.id+" .mec-year-container").hide();
665            $("#mec_yearly_view_year_"+settings.id+"_"+year_id).show();
666        }
667
668        var sf;
669        function setListeners()
670        {
671            // Single Event Method
672            if(settings.sed_method != '0')
673            {
674                sed();
675            }
676        }
677
678        function sed()
679        {
680            // Single Event Display
681            $("#mec_skin_"+settings.id+" .mec-agenda-event-title a").off('click').on('click', function(e)
682            {
683                e.preventDefault();
684                var href = $(this).attr('href');
685
686                var id = $(this).data('event-id');
687                var occurrence = get_parameter_by_name('occurrence', href);
688                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
689            });
690        }
691
692        function loadMoreButton(year)
693        {
694            var $max_count, $current_count = 0;
695            $max_count = $("#mec_yearly_view_year_"+settings.id+"_"+year+ " .mec-yearly-max").data('count');
696            $current_count = $("#mec_yearly_view_year_"+settings.id+"_"+year+ " .mec-util-hidden").length;
697
698            if($current_count > 10)
699            {
700                for(var i = 0; i < 10; i++)
701                {
702                    $("#mec_yearly_view_year_"+settings.id+"_"+year+ " .mec-util-hidden").slice(0, 2).each(function()
703                    {
704                        $(this).removeClass('mec-util-hidden');
705                    });
706                }
707            }
708
709            if($current_count < 10 && $current_count != 0)
710            {
711                for(var j = 0; j < $current_count; j++)
712                {
713                    $("#mec_yearly_view_year_"+settings.id+"_"+year+ " .mec-util-hidden").slice(0, 2).each(function()
714                    {
715                        $(this).removeClass('mec-util-hidden');
716                        $("#mec_yearly_view_year_"+settings.id+"_"+year+ " .mec-load-more-wrap").css('display', 'none');
717                    });
718                }
719            }
720        }
721    };
722
723}(jQuery));
724
725// MEC MONTHLY VIEW PLUGIN
726(function($)
727{
728    $.fn.mecMonthlyView = function(options)
729    {
730        var active_month;
731        var active_year;
732        
733        // Default Options
734        var settings = $.extend(
735        {
736            // These are the defaults.
737            today: null,
738            id: 0,
739            events_label: 'Events',
740            event_label: 'Event',
741            month_navigator: 0,
742            atts: '',
743            next_month: {},
744            sf: {},
745            ajax_url: '',
746        }, options);
747
748        // Initialize Month Navigator
749        if(settings.month_navigator) initMonthNavigator();
750        
751        // Load Next Month in background
752        setMonth(settings.next_month.year, settings.next_month.month, true);
753        
754        // Set onclick Listeners
755        setListeners();
756        
757        // Search Widget
758        if(settings.sf.container !== '')
759        {
760            sf = $(settings.sf.container).mecSearchForm(
761            {
762                id: settings.id,
763                atts: settings.atts,
764                callback: function(atts)
765                {
766                    settings.atts = atts;
767                    search(active_year, active_month);
768                }
769            });
770        }
771        
772        function initMonthNavigator()
773        {
774            // Remove the onclick event
775            $("#mec_skin_"+settings.id+" .mec-load-month").off("
775click");
776
777            // Add onclick event
778            $("#mec_skin_"+settings.id+" .mec-load-month").on("click", function()
779            {
780                var year = $(this).data("mec-year");
781                var month = $(this).data("mec-month");
782
783                setMonth(year, month);
784            });
785        }
786        
787        function search(year, month)
788        {
789
790            // Add Loading Class
791            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
792            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
793            
794            $.ajax(
795            {
796                url: settings.ajax_url,
797                data: "action=mec_monthly_view_load_month&mec_year="+year+"&mec_month="+month+"&"+settings.atts+"&apply_sf_date=1",
798                dataType: "json",
799                type: "post",
800                success: function(response)
801                {
802                    active_month = response.current_month.month;
803                    active_year = response.current_month.year;
804            
805                    // Append Month
806                    $("#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>');
807
808                    // Append Month Navigator
809                    $("#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>');
810
811                    // Append Events Side
812                    $("#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>');
813
814                    // Re-initialize Month Navigator
815                    initMonthNavigator();
816
817                    // Set onclick Listeners
818                    setListeners();
819
820                    // Toggle Month
821                    toggleMonth(response.current_month.id);
822
823                    // Remove loading Class
824                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
825
826                },
827                error: function()
828                {
829                }
830            });
831        }
832        
833        function setMonth(year, month, do_in_background)
834        {
835            if(typeof do_in_background === "undefined") do_in_background = false;
836            var month_id = year+""+month;
837            
838            active_month = month;
839            active_year = year;
840            
841            // Month exists so we just show it
842            if($("#mec_monthly_view_month_"+settings.id+"_"+month_id).length)
843            {
844                // Toggle Month
845                toggleMonth(month_id);
846            }
847            else
848            {
849                if(!do_in_background)
850                {
851
852                // Add Loading Class
853                if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
854                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
855                }
856
857                $.ajax(
858                {
859                    url: settings.ajax_url,
860                    data: "action=mec_monthly_view_load_month&mec_year="+year+"&mec_month="+month+"&"+settings.atts+"&apply_sf_date=0",
861                    dataType: "json",
862                    type: "post",
863                    success: function(response)
864                    {
865                        // Append Month
866                        $("#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>');
867                        
868                        // Append Month Navigator
869                        $("#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>');
870
871                        // Append Events Side
872                        $("#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>');
873
874                        // Re-initialize Month Navigator
875                        initMonthNavigator();
876
877                        // Set onclick Listeners
878                        setListeners();
879
880                        if(!do_in_background)
881                        {
882                            // Toggle Month
883                            toggleMonth(response.current_month.id);
884
885                            // Remove loading Class
886                            $('.mec-modal-result').removeClass("mec-month-navigator-loading");
887
888                            
889                            // Set Month Filter values in search widget
890                            $("#mec_sf_month_"+settings.id).val(month);
891                            $("#mec_sf_year_"+settings.id).val(year);
892                        }
893                        else
894                        {
895                            $("#mec_monthly_view_month_"+settings.id+"_"+response.current_month.id).hide();
896                            $("#mec_month_navigator_"+settings.id+"_"+response.current_month.id).hide();
897                            $("#mec_month_side_"+settings.id+"_"+response.current_month.id).hide();
898                        }
899                    },
900                    error: function()
901                    {
902                    }
903                });
904            }
905        }
906
907        function toggleMonth(month_id)
908        {
909            var active_month = $("#mec_skin_"+settings.id+" .mec-month-container-selected").data("month-id");
910            var active_day = $("#mec_monthly_view_month_"+settings.id+"_"+active_month+" .mec-selected-day").data("day");
911
912            if(active_day <= 9) active_day = "0"+active_day;
913
914            // Toggle Month Navigator
915            $("#mec_skin_"+settings.id+" .mec-month-navigator").hide();
916            $("#mec_month_navigator_"+settings.id+"_"+month_id).show();
917
918            // Toggle Month
919            $("#mec_skin_"+settings.id+" .mec-month-container").hide();
920            $("#mec_monthly_view_month_"+settings.id+"_"+month_id).show();
921
922            // Add selected class
923            $("#mec_skin_"+settings.id+" .mec-month-container").removeClass("mec-month-container-selected");
924            $("#mec_monthly_view_month_"+settings.id+"_"+month_id).addClass("mec-month-container-selected");
925
926            // Toggle Events Side
927            $("#mec_skin_"+settings.id+" .mec-month-side").hide();
928            $("#mec_month_side_"+settings.id+"_"+month_id).show();
929        }
930        
931        var sf;
932        function setListeners()
933        {
934            // Remove the onclick event
935            $("#mec_skin_"+settings.id+" .mec-has-event").off("click");
936
937            // Add the onclick event
938            $("#mec_skin_"+settings.id+" .mec-has-event").on('click', function(e)
939            {
940                e.preventDefault();
941                
942                // define variables
943                var $this = $(this), data_mec_cell = $this.data('mec-cell'), month_id = $this.data('month');
944
945                $("#mec_monthly_view_month_"+settings.id+"_"+month_id+" .mec-calendar-day").removeClass('mec-selected-day');
946                $this.addClass('mec-selected-day');
947
948                $('#mec_month_side_'+settings.id+'_'+month_id+' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
949                $('#mec_month_side_'+settings.id+'_'+month_id+' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
950
951                $('#mec_monthly_view_month_'+settings.id+'_'+month_id+' .mec-calendar-events-sec:not([data-mec-cell=' + data_mec_cell + '])').slideUp();
952                $('#mec_monthly_view_month_'+settings.id+'_'+month_id+' .mec-calendar-events-sec[data-mec-cell=' + data_mec_cell + ']').slideDown();
953            });
954            
955            // Single Event Method
956            if(settings.sed_method != '0')
957            {
958                sed();
959            }
960        }
961        
962        function sed()
963        {
964            // Single Event Display
965            $("#mec_skin_"+settings.id+" .mec-event-title a").off('click').on('click', function(e)
966            {
967                e.preventDefault();
968                var href = $(this).attr('href');
969
970                var id = $(this).data('event-id');
971                var occurrence = get_parameter_by_name('occurrence', href);
972                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
973            });
974        }
975    };
976
977}(jQuery));
978
979// MEC WEEKLY VIEW PLUGIN
980(function($)
981{
982    $.fn.mecWeeklyView = function(options)
983    {
984        var active_year;
985        var active_month;
986        var active_week;
987        var active_week_number;
988        
989        // Default Options
990        var settings = $.extend(
991        {
992            // These are the defaults.
993            today: null,
994            week: 1,
995            id: 0,
996            changeWeekElement: '.mec-load-week',
997            month_navigator: 0,
998            atts: '',
999            ajax_url: '',
1000            sf: {}
1001        }, options);
1002        
1003        // Search Widget
1004        if(settings.sf.container !== '')
1005        {
1006            $(settings.sf.container).mecSearchForm(
1007            {
1008                id: settings.id,
1009                atts: settings.atts,
1010                callback: function(atts)
1011                {
1012                    settings.atts = atts;
1013                    search(active_year, active_month, active_week);
1014                }
1015            });
1016        }
1017            
1018        // Set The Week
1019        setThisWeek(settings.month_id+settings.week);
1020        
1021        // Set Listeners
1022        setListeners();
1023        
1024        // Initialize Month Navigator
1025        if(settings.month_navigator) initMonthNavigator(settings.month_id);
1026        
1027        function setListeners()
1028        {
1029            $(settings.changeWeekElement).off('click').on('click', function()
1030            {
1031                var week = $('#mec_skin_'+settings.id+' .mec-weekly-view-week-active').data('week-id');
1032                var max_weeks = $('#mec_skin_'+settings.id+' .mec-weekly-view-week-active').data('max-weeks');
1033                var new_week_number = active_week_number;
1034                
1035                if($(this).hasClass('mec-previous-month'))
1036                {
1037                    week = parseInt(week)-1;
1038                    new_week_number--;
1039                }
1040                else
1041                {
1042                    week = parseInt(week)+1;
1043                    new_week_number++;
1044                }
1045                
1046                if(new_week_number <= 1 || new_week_number >= max_weeks)
1047                {
1048                    // Disable Next/Previous Button
1049                    $(this).css({'opacity': .6, 'cursor': 'default'});
1050                    $(this).find('i').css({'opacity': .6, 'cursor': 'default'});
1051                }
1052                else
1053                {
1054                    // Enable Next/Previous Buttons
1055                    $('#mec_skin_'+settings.id+' .mec-load-week, #mec_skin_'+settings.id+' .mec-load-week i').css({'opacity': 1, 'cursor': 'pointer'});
1056                }
1057                
1058                // Week is not in valid range
1059                if(new_week_number === 0 || new_week_number > max_weeks)
1060                {
1061                }
1062                else
1063                {
1064                    setThisWeek(week);
1065                }
1066            });
1067            
1068            // Single Event Method
1069            if(settings.sed_method != '0')
1070            {
1071                sed();
1072            }
1073        }
1074        
1075        function setThisWeek(week)
1076        {
1077            // Week is not exists
1078            if(!$('#mec_weekly_view_week_'+settings.id+'_'+week).length)
1079            {
1080                return setThisWeek((parseInt(week)-1));
1081            }
1082
1083            // Set week to active in week list
1084            $('#mec_skin_'+settings.id+' .mec-weekly-view-week').removeClass('mec-weekly-view-week-active');
1085            $('#mec_weekly_view_week_'+settings.id+'_'+week).addClass('mec-weekly-view-week-active');
1086            
1087            // Show related events
1088            $('#mec_skin_'+settings.id+' .mec-weekly-view-date-events').addClass('mec-util-hidden');
1089            $('.mec-weekly-view-week-'+settings.id+'-'+week).removeClass('mec-util-hidden');
1090
1091            active_week = week;
1092            active_week_number = $('#mec_skin_'+settings.id+' .mec-weekly-view-week-active').data('week-number');
1093
1094            $('#mec_skin_'+settings.id+' .mec-calendar-d-top').find('.mec-current-week').find('span').remove();
1095            $('#mec_skin_'+settings.id+' .mec-calendar-d-top').find('.mec-current-week').append('<span>'+active_week_number+'</span>');
1096
1097            if(active_week_number === 1)
1098            {
1099                // Disable Previous Button
1100                $('#mec_skin_'+settings.id+' .mec-previous-month.mec-load-week').css({'opacity': .6, 'cursor': 'default'});
1101                $('#mec_skin_'+settings.id+' .mec-previous-month.mec-load-week').find('i').css({'opacity': .6, 'cursor': 'default'});
1102            }
1103        }
1104
1105        function initMonthNavigator(month_id)
1106        {
1107            $('#mec_month_navigator'+settings.id+'_'+month_id+' .mec-load-month').off('click');
1108            $('#mec_month_navigator'+settings.id+'_'+month_id+' .mec-load-month').on('click', function()
1109            {
1110                var year = $(this).data('mec-year');
1111                var month = $(this).data('mec-month');
1112
1113                setMonth(year, month, active_week);
1114            });
1115        }
1116        
1117        function search(year, month, week)
1118        {
1119            var week_number = (String(week).slice(-1));
1120
1121                // Add Loading Class
1122            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1123            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1124
1125            $.ajax(
1126            {
1127                url: settings.ajax_url,
1128                data: "action=mec_weekly_view_load_month&mec_year="+year+"&mec_month="+month+"&mec_week="+week_number+"&"+settings.atts+"&apply_sf_date=1",
1129                dataType: "json",
1130                type: "post",
1131                success: function(response)
1132                {
1133                    // Remove Loading Class
1134                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1135
1136                    // Append Month
1137                    $("#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>');
1138
1139                    // Append Month Navigator
1140                    $("#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>');
1141
1142                    // Set Listeners
1143                    setListeners();
1144
1145                    // Toggle Month
1146                    toggleMonth(response.current_month.id);
1147
1148                    // Set active week
1149                    setThisWeek(response.week_id);
1150                },
1151                error: function()
1152                {
1153                }
1154            });
1155        }
1156        
1157        function setMonth(year, month, week)
1158        {
1159            var month_id = ''+year+month;
1160            var week_number = (String(week).slice(-1));
1161            
1162            active_month = month;
1163            active_year = year;
1164
1165            // Month exists so we just show it
1166            if($("#mec_weekly_view_month_"+settings.id+"_"+month_id).length)
1167            {
1168                // Toggle Month
1169                toggleMonth(month_id);
1170
1171                // Set active week
1172                setThisWeek(''+month_id+week_number);
1173            }
1174            else
1175            {
1176                // Add Loading Class
1177                if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1178                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1179
1180                $.ajax(
1181                {
1182                    url: settings.ajax_url,
1183                    data: "action=mec_weekly_view_load_month&mec_year="+year+"&mec_month="+month+"&mec_week="+week_number+"&"+settings.atts+"&apply_sf_date=0",
1184                    dataType: "json",
1185                    type: "post",
1186                    success: function(response)
1187                    {
1188                        // Remove Loading Class
1189                         $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1190
1191                        // Append Month
1192                        $("#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>');
1193
1194                        // Append Month Navigator
1195                        $("#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>');
1196
1197                        // Set Listeners
1198                        setListeners();
1199
1200                        // Toggle Month
1201                        toggleMonth(response.current_month.id);
1202
1203                        // Set active week
1204                        setThisWeek(response.week_id);
1205                        
1206                        // Set Month Filter values in search widget
1207                        $("#mec_sf_month_"+settings.id).val(month);
1208                        $("#mec_sf_year_"+settings.id).val(year);
1209                    },
1210                    error: function()
1211                    {
1212                    }
1213                });
1214            }
1215        }
1216
1217        function toggleMonth(month_id)
1218        {
1219            // Show related events
1220            $('#mec_skin_'+settings.id+' .mec-month-container').addClass('mec-util-hidden');
1221            $('#mec_weekly_view_month_'+settings.id+'_'+month_id).removeClass('mec-util-hidden');
1222
1223            $('#mec_skin_'+settings.id+' .mec-month-navigator').addClass('mec-util-hidden');
1224            $('#mec_month_navigator'+settings.id+'_'+month_id).removeClass('mec-util-hidden');
1225
1226            // Initialize Month Navigator
1227            if(settings.month_navigator) initMonthNavigator(month_id);
1228        }
1229        
1230        function sed()
1231        {
1232            // Single Event Display
1233            $("#mec_skin_"+settings.id+" .mec-event-title a").off('click').on('click', function(e)
1234            {
1235                e.preventDefault();
1236                var href = $(this).attr('href');
1237
1238                var id = $(this).data('event-id');
1239                var occurrence = get_parameter_by_name('occurrence', href);
1240
1241                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
1242            });
1243        }
1244    };
1245    
1246}(jQuery));
1247
1248// MEC DAILY VIEW PLUGIN
1249(function($)
1250{
1251    $.fn.mecDailyView = function(options)
1252    {
1253        var active_month;
1254        var active_year;
1255        var active_day;
1256        
1257        // Default Options
1258        var settings = $.extend(
1259        {
1260            // These are the defaults.
1261            today: null,
1262            id: 0,
1263            changeDayElement: '.mec-daily-view-day',
1264            events_label: 'Events',
1265            event_label: 'Event',
1266            month_navigator: 0,
1267            atts: '',
1268            ajax_url: '',
1269            sf: {},
1270        }, options);
1271        
1272        active_month = settings.month;
1273        active_year = settings.year;
1274        active_day = settings.day;
1275            
1276        // Set Today
1277        setToday(settings.today);
1278
1279        // Set Listeners
1280        setListeners();
1281
1282        // Initialize Month Navigator
1283        if(settings.month_navigator) initMonthNavigator(settings.month_id);
1284        
1285        // Initialize Days Slider
1286        initDaysSlider(settings.month_id);
1287        
1288        // Search Widget
1289        if(settings.sf.container !== '')
1290        {
1291            $(settings.sf.container).mecSearchForm(
1292            {
1293                id: settings.id,
1294                atts: settings.atts,
1295                callback: function(atts)
1296                {
1297                    settings.atts = atts;
1298                    search(active_year, active_month, active_day);
1299                }
1300            });
1301        }
1302        
1303        function setListeners()
1304        {
1305            $(settings.changeDayElement).on('click', function()
1306            {
1307                var today = $(this).data('day-id');
1308                setToday(today);
1309            });
1310            
1311            // Single Event Method
1312            if(settings.sed_method != '0')
1313            {
1314                sed();
1315            }
1316        }
1317
1318        var current_monthday;
1319        function setToday(today)
1320        {
1321            // For caring about 31st, 30th and 29th of some months
1322            if(!$('#mec_daily_view_day'+settings.id+'_'+today).length)
1323            {
1324                setToday(parseInt(today)-1);
1325                return false;
1326            }
1327
1328            // Set day to active in day list
1329            $('.mec-daily-view-day').removeClass('mec-daily-view-day-active mec-color');
1330            $('#mec_daily_view_day'+settings.id+'_'+today).addClass('mec-daily-view-day-active mec-color');
1331
1332            // Show related events
1333            $('.mec-daily-view-date-events').addClass('mec-util-hidden');
1334            $('#mec_daily_view_date_events'+settings.id+'_'+today).removeClass('mec-util-hidden');
1335
1336            // Set today label
1337            var weekday = $('#mec_daily_view_day'+settings.id+'_'+today).data('day-weekday');
1338            var monthday = $('#mec_daily_view_day'+settings.id+'_'+today).data('day-monthday');
1339            var count = $('#mec_daily_view_day'+settings.id+'_'+today).data('events-count');
1340            var month_id = $('#mec_daily_view_day'+settings.id+'_'+today).data('month-id');
1341
1342            $('#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>');
1343
1344            if(monthday <= 9) current_monthday = '0'+monthday;
1345            else current_monthday = monthday;
1346        }
1347
1348        function initMonthNavigator(month_id)
1349        {
1350            $('#mec_month_navigator'+settings.id+'_'+month_id+' .mec-load-month').off('click');
1351            $('#mec_month_navigator'+settings.id+'_'+month_id+' .mec-load-month').on('click', function()
1352            {
1353                var year = $(this).data('mec-year');
1354                var month = $(this).data('mec-month');
1355
1356                setMonth(year, month, current_monthday);
1357            });
1358        }
1359
1360        function initDaysSlider(month_id, day_id)
1361        {
1362            // Init Days slider
1363            var owl = $("#mec-owl-calendar-d-table-"+settings.id+"-"+month_id);
1364            owl.owlCarousel(
1365            {
1366                items : 22, //22 items above 1000px browser width
1367                responsiveClass: true,
1368                responsive: {
1369                    479: {
1370                        items: 4,
1371                    },
1372                    767: {
1373                        items: 7,
1374                    },
1375                    960: {
1376                        items: 14,
1377                    },
1378                    1000: {
1379                        items: 19,
1380                    }
1381                },
1382                dots: false,
1383                loop: true,
1384            });
1385
1386            // Custom Navigation Events
1387            $("#mec_daily_view_month_"+settings.id+"_"+month_id+" .mec-table-d-next").click(function(e)
1388            {
1389                e.preventDefault();
1390                owl.trigger('owl.next');
1391            });
1392
1393            $("#mec_daily_view_month_"+settings.id+"_"+month_id+" .mec-table-d-prev").click(function(e)
1394            {
1395                e.preventDefault();
1396                owl.trigger('owl.prev');
1397            });
1398
1399            if(typeof day_id === 'undefined') day_id = $('.mec-daily-v
1399iew-day-active').data('day-id');
1400
1401            var today_str = day_id.toString().substring(6,8);
1402            var today_int = parseInt(today_str);
1403
1404            owl.trigger('owl.goTo', [today_int]);
1405        }
1406        
1407        function search(year, month, day)
1408        {
1409            // Add Loading Class
1410            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1411            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1412
1413            $.ajax(
1414            {
1415                url: settings.ajax_url,
1416                data: "action=mec_daily_view_load_month&mec_year="+year+"&mec_month="+month+"&mec_day="+day+"&"+settings.atts+"&apply_sf_date=1",
1417                dataType: "json",
1418                type: "post",
1419                success: function(response)
1420                {
1421                    // Remove Loading Class
1422                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1423
1424                    // Append Month
1425                    $("#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>');
1426
1427                    // Append Month Navigator
1428                    $("#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>');
1429
1430                    // Set Listeners
1431                    setListeners();
1432                    
1433                    active_year = response.current_month.year;
1434                    active_month = response.current_month.month;
1435                    active_day = '01';
1436                    
1437                    // Toggle Month
1438                    toggleMonth(response.current_month.id, ''+active_year+active_month+active_day);
1439
1440                    // Set Today
1441                    setToday(''+active_year+active_month+active_day);
1442                },
1443                error: function()
1444                {
1445                }
1446            });
1447        }
1448        
1449        function setMonth(year, month, day)
1450        {
1451            var month_id = '' + year + month;
1452            
1453            active_month = month;
1454            active_year = year;
1455            active_day = day;
1456            
1457            // Month exists so we just show it
1458            if($("#mec_daily_view_month_"+settings.id+"_"+month_id).length)
1459            {
1460                // Toggle Month
1461                toggleMonth(month_id);
1462
1463                // Set Today
1464                setToday(''+month_id+day);
1465            }
1466            else
1467            {
1468                // Add Loading Class
1469                if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1470                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1471
1472                $.ajax(
1473                {
1474                    url: settings.ajax_url,
1475                    data: "action=mec_daily_view_load_month&mec_year="+year+"&mec_month="+month+"&mec_day="+day+"&"+settings.atts+"&apply_sf_date=0",
1476                    dataType: "json",
1477                    type: "post",
1478                    success: function(response)
1479                    {
1480                        // Remove Loading Class
1481                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1482
1483                        // Append Month
1484                        $("#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>');
1485
1486                        // Append Month Navigator
1487                        $("#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>');
1488
1489                        // Set Listeners
1490                        setListeners();
1491
1492                        // Toggle Month
1493                        toggleMonth(response.current_month.id, ''+year+month+'01');
1494
1495                        // Set Today
1496                        setToday(''+year+month+'01');
1497                        
1498                        // Set Month Filter values in search widget
1499                        $("#mec_sf_month_"+settings.id).val(month);
1500                        $("#mec_sf_year_"+settings.id).val(year);
1501                    },
1502                    error: function()
1503                    {
1504                    }
1505                });
1506            }
1507        }
1508
1509        function toggleMonth(month_id, day_id)
1510        {
1511            // Show related events
1512            $('#mec_skin_'+settings.id+' .mec-month-container').addClass('mec-util-hidden');
1513            $('#mec_daily_view_month_'+settings.id+'_'+month_id).removeClass('mec-util-hidden');
1514
1515            $('#mec_skin_'+settings.id+' .mec-month-navigator').addClass('mec-util-hidden');
1516            $('#mec_month_navigator'+settings.id+'_'+month_id).removeClass('mec-util-hidden');
1517
1518            // Initialize Month Navigator
1519            if(settings.month_navigator) initMonthNavigator(month_id);
1520
1521            // Initialize Days Slider
1522            initDaysSlider(month_id, day_id);
1523        }
1524        
1525        function sed()
1526        {
1527            // Single Event Display
1528            $("#mec_skin_"+settings.id+" .mec-event-title a").off('click').on('click', function(e)
1529            {
1530                e.preventDefault();
1531                var href = $(this).attr('href');
1532
1533                var id = $(this).data('event-id');
1534                var occurrence = get_parameter_by_name('occurrence', href);
1535
1536                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
1537            });
1538        }
1539    };
1540    
1541}(jQuery));
1542
1543// MEC TIMETABLE PLUGIN
1544(function($)
1545{
1546    $.fn.mecTimeTable = function(options)
1547    {
1548        var active_year;
1549        var active_month;
1550        var active_week;
1551        var active_week_number;
1552        var active_day;
1553
1554        // Default Options
1555        var settings = $.extend(
1556        {
1557            // These are the defaults.
1558            today: null,
1559            week: 1,
1560            active_day: 1,
1561            id: 0,
1562            changeWeekElement: '.mec-load-week',
1563            month_navigator: 0,
1564            atts: '',
1565            ajax_url: '',
1566            sf: {}
1567        }, options);
1568
1569        // Search Widget
1570        if(settings.sf.container !== '')
1571        {
1572            $(settings.sf.container).mecSearchForm(
1573            {
1574                id: settings.id,
1575                atts: settings.atts,
1576                callback: function(atts)
1577                {
1578                    settings.atts = atts;
1579                    search(active_year, active_month, active_week, active_day);
1580                }
1581            });
1582        }
1583
1584        // Set The Week
1585        setThisWeek(settings.month_id+settings.week, settings.active_day);
1586
1587        // Set Listeners
1588        setListeners();
1589
1590        // Initialize Month Navigator
1591        if(settings.month_navigator) initMonthNavigator(settings.month_id);
1592
1593        function setListeners()
1594        {
1595            // Change Week Listener
1596            $(settings.changeWeekElement).off('click').on('click', function()
1597            {
1598                var week = $('#mec_skin_'+settings.id+' .mec-weekly-view-week-active').data('week-id');
1599                var max_weeks = $('#mec_skin_'+settings.id+' .mec-weekly-view-week-active').data('max-weeks');
1600                var new_week_number = active_week_number;
1601
1602                if($(this).hasClass('mec-previous-month'))
1603                {
1604                    week = parseInt(week)-1;
1605                    new_week_number--;
1606                }
1607                else
1608                {
1609                    week = parseInt(week)+1;
1610                    new_week_number++;
1611                }
1612
1613                if(new_week_number <= 1 || new_week_number >= max_weeks)
1614                {
1615                    // Disable Next/Previous Button
1616                    $(this).css({'opacity': .6, 'cursor': 'default'});
1617                    $(this).find('i').css({'opacity': .6, 'cursor': 'default'});
1618                }
1619                else
1620                {
1621                    // Enable Next/Previous Buttons
1622                    $('#mec_skin_'+settings.id+' .mec-load-week, #mec_skin_'+settings.id+' .mec-load-week i').css({'opacity': 1, 'cursor': 'pointer'});
1623                }
1624
1625                // Week is not in valid range
1626                if(new_week_number === 0 || new_week_number > max_weeks)
1627                {
1628                }
1629                else
1630                {
1631                    setThisWeek(week);
1632                }
1633            });
1634
1635            // Change Day Listener
1636            $('#mec_skin_'+settings.id+' .mec-weekly-view-week dt').not('.mec-timetable-has-no-event').off('click').on('click', function()
1637            {
1638                var day = $(this).data('date-id');
1639                setDay(day);
1640            });
1641
1642            // Single Event Method
1643            if(settings.sed_method != '0')
1644            {
1645                sed();
1646            }
1647        }
1648
1649        function setThisWeek(week, day)
1650        {
1651            // Week is not exists
1652            if(!$('#mec_weekly_view_week_'+settings.id+'_'+week).length)
1653            {
1654                return setThisWeek((parseInt(week)-1), day);
1655            }
1656
1657            // Set week to active in week list
1658            $('#mec_skin_'+settings.id+' .mec-weekly-view-week').removeClass('mec-weekly-view-week-active');
1659            $('#mec_weekly_view_week_'+settings.id+'_'+week).addClass('mec-weekly-view-week-active');
1660
1661            setDay(day);
1662
1663            active_week = week;
1664            active_week_number = $('#mec_skin_'+settings.id+' .mec-weekly-view-week-active').data('week-number');
1665
1666            $('#mec_skin_'+settings.id+' .mec-calendar-d-top').find('.mec-current-week').find('span').remove();
1667            $('#mec_skin_'+settings.id+' .mec-calendar-d-top').find('.mec-current-week').append('<span>'+active_week_number+'</span>');
1668
1669            if(active_week_number === 1)
1670            {
1671                // Disable Previous Button
1672                $('#mec_skin_'+settings.id+' .mec-previous-month.mec-load-week').css({'opacity': .6, 'cursor': 'default'});
1673                $('#mec_skin_'+settings.id+' .mec-previous-month.mec-load-week').find('i').css({'opacity': .6, 'cursor': 'default'});
1674            }
1675        }
1676
1677        function setDay(day)
1678        {
1679            // Find the date automatically
1680            if(typeof day === 'undefined')
1681            {
1682                day = $('#mec_skin_'+settings.id+' .mec-weekly-view-week-active dt').not('.mec-timetable-has-no-event').first().data('date-id');
1683            }
1684
1685            // Activate the date element
1686            $('#mec_skin_'+settings.id+' dt').removeClass('mec-timetable-day-active');
1687            $('#mec_skin_'+settings.id+' .mec-weekly-view-week-active dt[data-date-id="'+day+'"]').addClass('mec-timetable-day-active');
1688
1689            // Show related events
1690            $('#mec_skin_'+settings.id+' .mec-weekly-view-date-events').addClass('mec-util-hidden');
1691            $('#mec_weekly_view_date_events'+settings.id+'_'+day).removeClass('mec-util-hidden');
1692        }
1693
1694        function initMonthNavigator(month_id)
1695        {
1696            $('#mec_month_navigator'+settings.id+'_'+month_id+' .mec-load-month').off('click').on('click', function()
1697            {
1698                var year = $(this).data('mec-year');
1699                var month = $(this).data('mec-month');
1700
1701                setMonth(year, month, active_week);
1702            });
1703        }
1704
1705        function search(year, month, week)
1706        {
1707            var week_number = (String(week).slice(-1));
1708
1709            // Add Loading Class
1710            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1711            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1712
1713            $.ajax(
1714            {
1715                url: settings.ajax_url,
1716                data: "action=mec_timetable_load_month&mec_year="+year+"&mec_month="+month+"&mec_week="+week_number+"&"+settings.atts+"&apply_sf_date=1",
1717                dataType: "json",
1718                type: "post",
1719                success: function(response)
1720                {
1721                    // Remove Loading Class
1722                    $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1723
1724                    // Append Month
1725                    $("#mec_skin_events_"+settings.id).html('<div class="mec-month-container" id="mec_timetable_month_'+settings.id+'_'+response.current_month.id+'">'+response.month+'</div>');
1726
1727                    // Append Month Navigator
1728                    $("#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>');
1729
1730                    // Set Listeners
1731                    setListeners();
1732
1733                    // Toggle Month
1734                    toggleMonth(response.current_month.id);
1735
1736                    // Set active week
1737                    setThisWeek(response.week_id);
1738                },
1739                error: function()
1740                {
1741                }
1742            });
1743        }
1744
1745        function setMonth(year, month, week)
1746        {
1747            var month_id = ''+year+month;
1748            var week_number = (String(week).slice(-1));
1749
1750            active_month = month;
1751            active_year = year;
1752
1753            // Month exists so we just show it
1754            if($("#mec_timetable_month_"+settings.id+"_"+month_id).length)
1755            {
1756                // Toggle Month
1757                toggleMonth(month_id);
1758
1759                // Set active week
1760                setThisWeek(''+month_id+week_number);
1761            }
1762            else
1763            {
1764                // Add Loading Class
1765                if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
1766                jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
1767
1768                $.ajax(
1769                {
1770                    url: settings.ajax_url,
1771                    data: "action=mec_timetable_load_month&mec_year="+year+"&mec_month="+month+"&mec_week="+week_number+"&"+settings.atts+"&apply_sf_date=0",
1772                    dataType: "json",
1773                    type: "post",
1774                    success: function(response)
1775                    {
1776                        // Remove Loading Class
1777                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
1778
1779                        // Append Month
1780                        $("#mec_skin_events_"+settings.id).append('<div class="mec-month-container" id="mec_timetable_month_'+settings.id+'_'+response.current_month.id+'">'+response.month+'</div>');
1781
1782                        // Append Month Navigator
1783                        $("#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>');
1784
1785                        // Set Listeners
1786                        setListeners();
1787
1788                        // Toggle Month
1789                        toggleMonth(response.current_month.id);
1790
1791                        // Set active week
1792                        setThisWeek(response.week_id);
1793
1794                        // Set Month Filter values in search widget
1795                        $("#mec_sf_month_"+settings.id).val(month);
1796                        $("#mec_sf_year_"+settings.id).val(year);
1797                    },
1798                    error: function()
1799                    {
1800                    }
1801                });
1802            }
1803        }
1804
1805        function toggleMonth(month_id)
1806        {
1807            // Show related events
1808            $('#mec_skin_'+settings.id+' .mec-month-container').addClass('mec-util-hidden');
1809            $('#mec_timetable_month_'+settings.id+'_'+month_id).removeClass('mec-util-hidden');
1810
1811            $('#mec_skin_'+settings.id+' .mec-month-navigator').addClass('mec-util-hidden');
1812            $('#mec_month_navigator'+settings.id+'_'+month_id).removeClass('mec-util-hidden');
1813
1814            // Initialize Month Navigator
1815            if(settings.month_navigator) initMonthNavigator(month_id);
1816        }
1817
1818        function sed()
1819        {
1820            // Single Event Display
1821            $("#mec_skin_"+settings.id+" .mec-timetable-event-title a").off('click').on('click', function(e)
1822            {
1823                e.preventDefault();
1824                var href = $(this).attr('href');
1825
1826                var id = $(this).data('event-id');
1827                var occurrence = get_parameter_by_name('occurrence', href);
1828
1829                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
1830            });
1831        }
1832    };
1833
1834}(jQuery));
1835
1836// MEC WEEKLY PROGRAM PLUGIN
1837(function($)
1838{
1839    $.fn.mecWeeklyProgram = function(options)
1840    {
1841        // Default Options
1842        var settings = $.extend(
1843        {
1844            // These are the defaults.
1845            id: 0,
1846            sf: {}
1847        }, options);
1848
1849        console.log(settings);
1850
1851        // Set Listeners
1852        setListeners();
1853
1854        function setListeners()
1855        {
1856            // Single Event Method
1857            if(settings.sed_method != '0')
1858            {
1859                sed();
1860            }
1861        }
1862
1863        function sed()
1864        {
1865            // Single Event Display
1866            $("#mec_skin_"+settings.id+" .mec-event-title a").off('click').on('click', function(e)
1867            {
1868                e.preventDefault();
1869                var href = $(this).attr('href');
1870
1871                var id = $(this).data('event-id');
1872                var occurrence = get_parameter_by_name('occurrence', href);
1873
1874                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
1875            });
1876        }
1877    };
1878
1879}(jQuery));
1880
1881// MEC MASONRY VIEW PLUGIN
1882(function($)
1883{
1884    $.fn.mecMasonryView = function(options)
1885    {
1886        // Default Options
1887        var settings = $.extend(
1888        {
1889            // These are the defaults.
1890            id: 0,
1891            atts: '',
1892            ajax_url: '',
1893            sf: {},
1894            end_date: '',
1895            offset: 0,
1896            start_date: '',
1897        }, options);
1898
1899        // Set onclick Listeners
1900        setListeners();
1901
1902        // Init Masonry
1903        jQuery(window).load(function(){
1904            initMasonry();
1905        });
1906        function initMasonry()
1907        {
1908            var $container = $("#mec_skin_"+settings.id+" .mec-event-masonry");
1909            $container.isotope(
1910            {
1911                filter: '*',
1912                animationOptions: {
1913                    duration: 750,
1914                    easing: 'linear',
1915                    queue: false
1916                }
1917            });
1918
1919            $("#mec_skin_"+settings.id+" .mec-events-masonry-cats a").click(function()
1920            {
1921                var selector = $(this).attr('data-filter');
1922                $container.isotope(
1923                {
1924                    filter: selector,
1925                    animationOptions: {
1926                        duration: 750,
1927                        easing: 'linear',
1928                        queue: false
1929                    }
1930                });
1931
1932                return false;
1933            });
1934
1935            var $optionSets = $("#mec_skin_"+settings.id+" .mec-events-masonry-cats"),
1936                $optionLinks = $optionSets.find('a');
1937
1938            $optionLinks.click(function()
1939            {
1940                var $this = $(this);
1941
1942                // don't proceed if already selected
1943                if($this.hasClass('selected')) return false;
1944
1945                var $optionSet = $this.parents('.mec-events-masonry-cats');
1946                $optionSet.find('.mec-masonry-cat-selected').removeClass('mec-masonry-cat-selected');
1947                $this.addClass('mec-masonry-cat-selected');
1948            });
1949        }
1950
1951        function setListeners()
1952        {
1953            // Single Event Method
1954            if(settings.sed_method != '0')
1955            {
1956                sed();
1957            }
1958        }
1959
1960        function sed()
1961        {
1962            // Single Event Display
1963            $("#mec_skin_"+settings.id+" .mec-event-title a, #mec_skin_"+settings.id+" .mec-booking-button").off('click').on('click', function(e)
1964            {
1965                e.preventDefault();
1966                var href = $(this).attr('href');
1967
1968                var id = $(this).data('event-id');
1969                var occurrence = get_parameter_by_name('occurrence', href);
1970
1971                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
1972            });
1973        }
1974    };
1975
1976}(jQuery));
1977
1978
1979// MEC LIST VIEW PLUGIN
1980(function($)
1981{
1982    $.fn.mecListView = function(options)
1983    {
1984        // Default Options
1985        var settings = $.extend(
1986        {
1987            // These are the defaults.
1988            id: 0,
1989            atts: '',
1990            ajax_url: '',
1991            sf: {},
1992            current_month_divider: '',
1993            end_date: '',
1994            offset: 0,
1995        }, options);
1996        
1997        // Set onclick Listeners
1998        setListeners();
1999        
2000        var sf;
2001        function setListeners()
2002        {
2003            // Search Widget
2004            if(settings.sf.container !== '')
2005            {
2006                sf = $(settings.sf.container).mecSearchForm(
2007                {
2008                    id: settings.id,
2009                    atts: settings.atts,
2010                    callback: function(atts)
2011                    {
2012                        settings.atts = atts;
2013                        search();
2014                    }
2015                });
2016            }
2017            
2018            $("#mec_skin_"+settings.id+" .mec-load-more-button").on("click", function()
2019            {
2020                loadMore();
2021            });
2022
2023            // Accordion Toggle
2024            if(settings.style === 'accordion') accordion();
2025            
2026            // Single Event Method
2027            if(settings.sed_method != '0')
2028            {
2029                sed();
2030            }
2031        }
2032
2033        function accordion()
2034        {
2035            // Accordion Toggle
2036            $("#mec_skin_"+settings.id+" .mec-toggle-item-inner").off("click").on("click", function(event)
2037            {
2038                event.preventDefault();
2039
2040                var $this = $(this);
2041                $(this).parent().find(".mec-content-toggle").slideToggle("fast", function()
2042                {
2043                    $this.children("i").toggleClass("mec-sl-arrow-down mec-sl-arrow-up");
2044                });
2045
2046                // Trigger Google Map
2047                var unique_id = $(this).parent().find(".mec-modal-wrap").data('unique-id');
2048
2049                window['mec_init_gmap'+unique_id]();
2050            });
2051        }
2052        
2053        function sed()
2054        {
2055            // Single Event Display
2056            $("#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)
2057            {
2058                e.preventDefault();
2059                var href = $(this).attr('href');
2060
2061                var id = $(this).data('event-id');
2062                var occurrence = get_parameter_by_name('occurrence', href);
2063
2064                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
2065            });
2066        }
2067        
2068        function loadMore()
2069        {
2070            // Add loading Class
2071            $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-load-more-loading");
2072
2073            $.ajax(
2074            {
2075                url: settings.ajax_url,
2076                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",
2077                dataType: "json",
2078                type: "post",
2079                success: function(response)
2080                {
2081                    if(response.count == "0")
2082                    {
2083                        // Remove loading Class
2084                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-load-more-loading");
2085
2086                        // Hide load more button
2087                        $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2088                    }
2089                    else
2090                    {
2091                        // Show load more button
2092                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-util-hidden");
2093                        
2094                        // Append Items
2095                        $("#mec_skin_events_"+settings.id).append(response.html);
2096
2097                        // Remove loading Class
2098                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-load-more-loading");
2099
2100                        // Update the variables
2101                        settings.end_date = response.end_date;
2102                        settings.offset = response.offset;
2103                        settings.current_month_divider = response.current_month_divider;
2104                        
2105                        // Single Event Method
2106                        if(settings.sed_method != '0')
2107                        {
2108                            sed();
2109                        }
2110
2111                        // Accordion Toggle
2112                        if(settings.style === 'accordion') accordion();
2113                    }
2114                },
2115                error: function()
2116                {
2117                }
2118            });
2119        }
2120        
2121        function search()
2122        {
2123            // Hide no event message
2124            $("#mec_skin_no_events_"+settings.id).addClass("mec-util-hidden");
2125            
2126            // Add loading Class
2127            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2128            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2129
2130            $.ajax(
2131            {
2132                url: settings.ajax_url,
2133                data: "action=mec_list_load_more&mec_start_date="+sett
2133ings.start_date+"&"+settings.atts+"&current_month_divider=0&apply_sf_date=1",
2134                dataType: "json",
2135                type: "post",
2136                success: function(response)
2137                {
2138                    if(response.count == "0")
2139                    {
2140                        // Append Items
2141                        $("#mec_skin_events_"+settings.id).html('');
2142                        
2143                        // Remove loading Class
2144                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2145
2146                        // Hide it
2147                        $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2148                        
2149                        // Show no event message
2150                        $("#mec_skin_no_events_"+settings.id).removeClass("mec-util-hidden");
2151                    }
2152                    else
2153                    {
2154                        // Append Items
2155                        $("#mec_skin_events_"+settings.id).html(response.html);
2156
2157                        // Remove loading Class
2158                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2159
2160                        // Show load more button
2161                        if(response.count >= settings.limit) $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-util-hidden");
2162                        // Hide load more button
2163                        else $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2164
2165                        // Update the variables
2166                        settings.end_date = response.end_date;
2167            			settings.offset = response.offset;
2168                        settings.current_month_divider = response.current_month_divider;
2169                        
2170                        // Single Event Method
2171                        if(settings.sed_method != '0')
2172                        {
2173                            sed();
2174                        }
2175
2176                        // Accordion Toggle
2177                        if(settings.style === 'accordion') accordion();
2178                    }
2179                },
2180                error: function()
2181                {
2182                }
2183            });
2184        }
2185    };
2186    
2187}(jQuery));
2188
2189// MEC GRID VIEW PLUGIN
2190(function($)
2191{
2192    $.fn.mecGridView = function(options)
2193    {
2194        // Default Options
2195        var settings = $.extend(
2196        {
2197            // These are the defaults.
2198            id: 0,
2199            atts: '',
2200            ajax_url: '',
2201            sf: {},
2202            end_date: '',
2203            offset: 0,
2204            start_date: '',
2205        }, options);
2206        
2207        // Set onclick Listeners
2208        setListeners();
2209        
2210        var sf;
2211        function setListeners()
2212        {
2213            // Search Widget
2214            if(settings.sf.container !== '')
2215            {
2216                sf = $(settings.sf.container).mecSearchForm(
2217                {
2218                    id: settings.id,
2219                    atts: settings.atts,
2220                    callback: function(atts)
2221                    {
2222                        settings.atts = atts;
2223                        search();
2224                    }
2225                });
2226            }
2227            
2228            $("#mec_skin_"+settings.id+" .mec-load-more-button").on("click", function()
2229            {
2230                loadMore();
2231            });
2232            
2233            // Single Event Method
2234            if(settings.sed_method != '0')
2235            {
2236                sed();
2237            }
2238        }
2239        
2240        function sed()
2241        {
2242            // Single Event Display
2243            $("#mec_skin_"+settings.id+" .mec-event-title a, #mec_skin_"+settings.id+" .mec-booking-button").off('click').on('click', function(e)
2244            {
2245                e.preventDefault();
2246                var href = $(this).attr('href');
2247
2248                var id = $(this).data('event-id');
2249                var occurrence = get_parameter_by_name('occurrence', href);
2250
2251                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
2252            });
2253        }
2254        
2255        function loadMore()
2256        {
2257            // Add loading Class
2258            $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-load-more-loading");
2259
2260            $.ajax(
2261            {
2262                url: settings.ajax_url,
2263                data: "action=mec_grid_load_more&mec_start_date="+sett
2263ings.end_date+"&mec_offset="+settings.offset+"&"+settings.atts+"&apply_sf_date=0",
2264                dataType: "json",
2265                type: "post",
2266                success: function(response)
2267                {
2268                    if(response.count == "0")
2269                    {
2270                        // Remove loading Class
2271                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-load-more-loading");
2272
2273                        // Hide load more button
2274                        $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2275                    }
2276                    else
2277                    {
2278                        // Show load more button
2279                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-util-hidden");
2280                        
2281                        // Append Items
2282                        $("#mec_skin_events_"+settings.id).append(response.html);
2283
2284                        // Remove loading Class
2285                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-load-more-loading");
2286
2287                        // Update the variables
2288                        settings.end_date = response.end_date;
2289                        settings.offset = response.offset;
2290                        
2291                        // Single Event Method
2292                        if(settings.sed_method != '0')
2293                        {
2294                            sed();
2295                        }
2296                    }
2297                },
2298                error: function()
2299                {
2300                }
2301            });
2302        }
2303        
2304        function search()
2305        {
2306            // Hide no event message
2307            $("#mec_skin_no_events_"+settings.id).addClass("mec-util-hidden");
2308                        
2309            // Add loading Class
2310            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2311            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2312
2313            $.ajax(
2314            {
2315                url: settings.ajax_url,
2316                data: "action=mec_grid_load_more&mec_start_date="+settings.start_date+"&"+settings.atts+"&apply_sf_date=1",
2317                dataType: "json",
2318                type: "post",
2319                success: function(response)
2320                {
2321                    if(response.count == "0")
2322                    {
2323                        // Append Items
2324                        $("#mec_skin_events_"+settings.id).html('');
2325                        
2326                        // Remove loading Class
2327                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2328
2329                        // Hide it
2330                        $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2331                        
2332                        // Show no event message
2333                        $("#mec_skin_no_events_"+settings.id).removeClass("mec-util-hidden");
2334                    }
2335                    else
2336                    {
2337                        // Append Items
2338                        $("#mec_skin_events_"+settings.id).html(response.html);
2339
2340                        // Remove loading Class
2341                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2342
2343                        // Show load more button
2344                        if(response.count >= settings.limit) $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-util-hidden");
2345                        // Hide load more button
2346                        else $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2347
2348                        // Update the variables
2349                        settings.end_date = response.end_date;
2350			            settings.offset = response.offset;
2351                        
2352                        // Single Event Method
2353                        if(settings.sed_method != '0')
2354                        {
2355                            sed();
2356                        }
2357                    }
2358                },
2359                error: function()
2360                {
2361                }
2362            });
2363        }
2364    };
2365    
2366}(jQuery));
2367
2368// MEC AGENDA VIEW PLUGIN
2369(function($)
2370{
2371    $.fn.mecAgendaView = function(options)
2372    {
2373        // Default Options
2374        var settings = $.extend(
2375        {
2376            // These are the defaults.
2377            id: 0,
2378            atts: '',
2379            ajax_url: '',
2380            sf: {},
2381            current_month_divider: '',
2382            end_date: '',
2383            offset: 0,
2384        }, options);
2385
2386        // Set onclick Listeners
2387        setListeners();
2388
2389        var sf;
2390        function setListeners()
2391        {
2392            // Search Widget
2393            if(settings.sf.container !== '')
2394            {
2395                sf = $(settings.sf.container).mecSearchForm(
2396                {
2397                    id: settings.id,
2398                    atts: settings.atts,
2399                    callback: function(atts)
2400                    {
2401                        settings.atts = atts;
2402                        search();
2403                    }
2404                });
2405            }
2406
2407            $("#mec_skin_"+settings.id+" .mec-load-more-button").on("click", function()
2408            {
2409                loadMore();
2410            });
2411
2412            // Single Event Method
2413            if(settings.sed_method != '0')
2414            {
2415                sed();
2416            }
2417        }
2418
2419        function sed()
2420        {
2421            // Single Event Display
2422            $("#mec_skin_"+settings.id+" .mec-agenda-event-title a").off('click').on('click', function(e)
2423            {
2424                e.preventDefault();
2425                var href = $(this).attr('href');
2426
2427                var id = $(this).data('event-id');
2428                var occurrence = get_parameter_by_name('occurrence', href);
2429
2430                mecSingleEventDisplayer.getSinglePage(id, occurrence, settings.ajax_url, settings.sed_method);
2431            });
2432        }
2433
2434        function loadMore()
2435        {
2436            // Add loading Class
2437            $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-load-more-loading");
2438
2439            $.ajax(
2440            {
2441                url: settings.ajax_url,
2442                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",
2443                dataType: "json",
2444                type: "post",
2445                success: function(response)
2446                {
2447                    if(response.count == "0")
2448                    {
2449                        // Remove loading Class
2450                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-load-more-loading");
2451
2452                        // Hide load more button
2453                        $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2454                    }
2455                    else
2456                    {
2457                        // Show load more button
2458                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-util-hidden");
2459
2460                        // Append Items
2461                        $("#mec_skin_events_"+settings.id+" .mec-events-agenda-container").append(response.html);
2462
2463                        // Remove loading Class
2464                        $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-load-more-loading");
2465
2466                        // Update the variables
2467                        settings.end_date = response.end_date;
2468                        settings.offset = response.offset;
2469                        settings.current_month_divider = response.current_month_divider;
2470
2471                        // Single Event Method
2472                        if(settings.sed_method != '0')
2473                        {
2474                            sed();
2475                        }
2476                    }
2477                },
2478                error: function()
2479                {
2480                }
2481            });
2482        }
2483
2484        function search()
2485        {
2486            // Hide no event message
2487            $("#mec_skin_no_events_"+settings.id).addClass("mec-util-hidden");
2488
2489            // Add loading Class
2490            if(jQuery('.mec-modal-result').length === 0) jQuery('.mec-wrap').append('<div class="mec-modal-result"></div>');
2491            jQuery('.mec-modal-result').addClass('mec-month-navigator-loading');
2492
2493            $.ajax(
2494            {
2495                url: settings.ajax_url,
2496                data: "action=mec_agenda_load_more&mec_start_date="+settings.start_date+"&"+settings.atts+"&current_month_divider=0&apply_sf_date=1",
2497                dataType: "json",
2498                type: "post",
2499                success: function(response)
2500                {
2501                    if(response.count == "0")
2502                    {
2503                        // Append Items
2504                        $("#mec_skin_events_"+settings.id+" .mec-events-agenda-container").html('');
2505
2506                        // Remove loading Class
2507                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2508                    
2509                        // Hide it
2510                        $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2511
2512                        // Show no event message
2513                        $("#mec_skin_no_events_"+settings.id).removeClass("mec-util-hidden");
2514                    }
2515                    else
2516                    {
2517                        // Append Items
2518                        $("#mec_skin_events_"+settings.id+" .mec-events-agenda-container").html(response.html);
2519
2520                        // Remove loading Class
2521                        $('.mec-modal-result').removeClass("mec-month-navigator-loading");
2522
2523                        // Show load more button
2524                        if(response.count >= settings.limit) $("#mec_skin_"+settings.id+" .mec-load-more-button").removeClass("mec-util-hidden");
2525                        // Hide load more button
2526                        else $("#mec_skin_"+settings.id+" .mec-load-more-button").addClass("mec-util-hidden");
2527
2528                        // Update the variables
2529                        settings.end_date = response.end_date;
2530                        settings.offset = response.offset;
2531                        settings.current_month_divider = response.current_month_divider;
2532
2533                        // Single Event Method
2534                        if(settings.sed_method != '0')
2535                        {
2536                            sed();
2537                        }
2538                    }
2539                },
2540                error: function()
2541                {
2542                }
2543            });
2544        }
2545    };
2546}(jQuery));
2547
2548// MEC CAROUSEL VIEW PLUGIN
2549(function($)
2550{
2551    $.fn.mecCarouselView = function(options)
2552    {
2553        // Default Options
2554        var settings = $.extend(
2555        {
2556            // These are the defaults.
2557            id: 0,
2558            atts: '',
2559            ajax_url: '',
2560            sf: {},
2561            items: 3,
2562            autoplay:'',
2563            style: 'type1',
2564            start_date: ''
2565        }, options);
2566        
2567        // Init Sliders
2568        initSlider();
2569        
2570        function initSlider()
2571        {
2572            if(settings.style === 'type1')
2573            {
2574                // Start carousel skin
2575                var owl = $("#mec_skin_"+settings.id+" .mec-event-carousel-type1 .mec-owl-carousel");
2576
2577                owl.owlCarousel(
2578                {
2579                    autoplay: true,
2580                    autoplayTimeout: settings.autoplay, // Set AutoPlay to 3 seconds
2581                    loop: true,
2582                    items: settings.items,
2583                    responsiveClass: true,
2584                    responsive: {
2585                        0: {
2586                            items: 1,
2587                        },
2588                        979: {
2589                            items: 2,
2590                        },
2591                        1199: {
2592                            items: settings.count,
2593                        }
2594                    },
2595                    dots: true,
2596                    nav: false,
2597                    autoplayHoverPause:true
2598                });
2599            }
2600            else
2601            {
2602                $("#mec_skin_"+settings.id+" .mec-owl-carousel").owlCarousel(
2603                {
2604                    autoplay: true,
2605                    loop: true,
2606                    autoplayTimeout: settings.autoplay,
2607                    items: settings.items,
2608                    dots: false,
2609                    nav: true,
2610                    responsiveClass: true,
2611                    responsive: {
2612                        0: {
2613                            items: 1,
2614                        },
2615                        979: {
2616                            items: 2,
2617                        },
2618                        1199: {
2619                            items: settings.count,
2620                        }
2621                    },
2622                    autoplayHoverPause:true,
2623                    navText: ["<i class='mec-sl-arrow-left'></i>"," <i class='mec-sl-arrow-right'></i>"],
2624                });
2625            }
2626        }
2627    };
2628    
2629}(jQuery));
2630
2631// MEC SLIDER VIEW PLUGIN
2632(function($)
2633{
2634    $.fn.mecSliderView = function(options)
2635    {
2636        // Default Options
2637        var settings = $.extend(
2638        {
2639            // These are the defaults.
2640            id: 0,
2641            atts: '',
2642            autoplay: false,
2643            ajax_url: '',
2644            sf: {},
2645            start_date: ''
2646        }, options);
2647
2648        // Init Sliders
2649        initSlider();
2650        function initSlider()
2651        {
2652            $("#mec_skin_"+settings.id+" .mec-owl-carousel").owlCarousel(
2653            {
2654                autoplay: true,
2655                autoplayTimeout: settings.autoplay,
2656                loop: true,
2657                items: 1,
2658                responsiveClass: true,
2659                responsive: {
2660                    0: {
2661                        items: 1,
2662                    },
2663                    960: {
2664                        items: 1,
2665                    },
2666                    1200: {
2667                        items: 1,
2668                    }
2669                },
2670                dots: false,
2671                nav: true,
2672                autoplayHoverPause: true,
2673                navText: ["<i class='mec-sl-arrow-left'></i>", " <i class='mec-sl-arrow-right'></i>"],
2674            });
2675        }
2676    };
2677
2678}(jQuery));
2679
2680// MEC COUNTDOWN MODULE
2681(function($)
2682{
2683    $.fn.mecCountDown = function(options, callBack)
2684    {
2685        // Default Options
2686        var settings = $.extend(
2687        {
2688            // These are the defaults.
2689            date: null,
2690            format: null
2691        }, options);
2692
2693        var callback = callBack;
2694        var selector = $(this);
2695        
2696        startCountdown();
2697        var interval = setInterval(startCountdown, 1000);
2698        
2699        function startCountdown()
2700        {
2701            var eventDate = Date.parse(settings.date) / 1000;
2702            var currentDate = Math.floor($.now() / 1000);
2703
2704            if(eventDate <= currentDate)
2705            {
2706                callback.call(this);
2707                clearInterval(interval);
2708            }
2709
2710            var seconds = eventDate - currentDate;
2711
2712            var days = Math.floor(seconds / (60 * 60 * 24)); 
2713            seconds -= days * 60 * 60 * 24; 
2714
2715            var hours = Math.floor(seconds / (60 * 60));
2716            seconds -= hours * 60 * 60; 
2717
2718            var minutes = Math.floor(seconds / 60);
2719            seconds -= minutes * 60;
2720            
2721            if(days == 1) selector.find(".mec-timeRefDays").text(mecdata.day);
2722            else selector.find(".mec-timeRefDays").text(mecdata.days);
2723            
2724            if(hours == 1) selector.find(".mec-timeRefHours").text(mecdata.hour);
2725            else selector.find(".mec-timeRefHours").text(mecdata.hours);
2726            
2727            if(minutes == 1) selector.find(".mec-timeRefMinutes").text(mecdata.minute);
2728            else selector.find(".mec-timeRefMinutes").text(mecdata.minutes);
2729            
2730            if(seconds == 1) selector.find(".mec-timeRefSeconds").text(mecdata.second);
2731            else selector.find(".mec-timeRefSeconds").text(mecdata.seconds);
2732
2733            if(settings.format === "on")
2734            {
2735                days = (String(days).length >= 2) ? days : "0" + days;
2736                hours = (String(hours).length >= 2) ? hours : "0" + hours;
2737                minutes = (String(minutes).length >= 2) ? minutes : "0" + minutes;
2738                seconds = (String(seconds).length >= 2) ? seconds : "0" + seconds;
2739            }
2740
2741            if(!isNaN(eventDate))
2742            {
2743                selector.find(".mec-days").text(days);
2744                selector.find(".mec-hours").text(hours);
2745                selector.find(".mec-minutes").text(minutes);
2746                selector.find(".mec-seconds").text(seconds);
2747            }
2748            else
2749            {
2750                clearInterval(interval);
2751            }
2752        }
2753    };
2754    
2755}(jQuery));
2756
2757function mec_gateway_selected(gateway_id)
2758{
2759    // Hide all gateway forms
2760    jQuery('.mec-book-form-gateway-checkout').addClass('mec-util-hidden');
2761    
2762    // Show selected gateway form
2763    jQuery('#mec_book_form_gateway_checkout'+gateway_id).removeClass('mec-util-hidden');
2764}
2765
2766function mec_wrap_resize()
2767{
2768    var $mec_wrap = jQuery('.mec-wrap'), mec_width = $mec_wrap.width();
2769    if(mec_width < 959)
2770    {
2771        $mec_wrap.addClass('mec-sm959');
2772    }
2773    else
2774    {
2775        $mec_wrap.removeClass('mec-sm959');
2776    }
2777}
2778
2779function get_parameter_by_name(name, url)
2780{
2781    if(!url)
2782    {
2783        url = window.location.href;
2784    }
2785    
2786    name = name.replace(/[\[\]]/g, "\\$&");
2787    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
2788        results = regex.exec(url);
2789
2790    if(!results) return null;
2791    if(!results[2]) return '';
2792    
2793    return decodeURIComponent(results[2].replace(/\+/g, " "));
2794}
2795
2796// TODO must be cleaned JS codes
2797(function($)
2798{
2799    $(document).ready(function()
2800    {
2801        // MEC WIDGET CAROUSEL
2802        $(".mec-widget .mec-event-grid-classic").addClass('mec-owl-carousel mec-owl-theme');
2803        $(".mec-widget .mec-event-grid-classic").owlCarousel(
2804        {
2805            autoplay: true,
2806            autoplayTimeout: 3000, // Set AutoPlay to 3 seconds
2807            autoplayHoverPause: true,
2808            loop: true,
2809            dots: false,
2810            nav: true,
2811            navText: ["<i class='mec-sl-arrow-left'></i>", " <i class='mec-sl-arrow-right'></i>"],
2812            items: 1,
2813            autoHeight: true,
2814            responsiveClass: true,
2815        });
2816        
2817        // add mec-sm959 class if mec-wrap div size < 959
2818        mec_wrap_resize();
2819        
2820        jQuery(window).bind('resize', function()
2821        {
2822            mec_wrap_resize();
2823        });
2824
2825        // Fixed: social hover in iphone
2826        $('.mec-event-sharing-wrap').hover(function()
2827        {
2828            $(this).find('.mec-event-sharing').show(0);
2829        },
2830        function()
2831        {
2832            $(this).find('.mec-event-sharing').hide(0);
2833        });
2834
2835        // Register Booking Smooth Scroll
2836        $('a[href="#mec-events-meta-group-booking"]').click(function()
2837        {
2838            if(location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname)
2839            {
2840                var target = $(this.hash);
2841                target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
2842
2843                if(target.length)
2844                {
2845                    var scrollTopVal = target.offset().top - 30;
2846
2847                    $('html, body').animate(
2848                    {
2849                        scrollTop: scrollTopVal
2850                    }, 600);
2851
2852                    return false;
2853                }
2854            }
2855        });
2856    });
2857})(jQuery);

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.