PageSourceSearch

https://fitzpatrickscasinogroup.com/wp-content/plugins/modern-events-calendar/assets/js/frontend.js

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