1(function (jQuery) { 2 3 var eCalendar = function (options, object) { 4 // Initializing global variables 5 var adDay = new Date().getDate(); 6 var adMonth = new Date().getMonth(); 7 var adYear = new Date().getFullYear(); 8 var dDay = adDay; 9 var dMonth = adMonth; 10 var dYear = adYear; 11 var instance = object; 12 13 var settings = jQuery.extend({}, jQuery.fn.eCalendar.defaults, options); 14 15 function lpad(value, length, pad) { 16 if (typeof pad == 'undefined') { 17 pad = '0'; 18 } 19 var p; 20 for (var i = 0; i < length; i++) { 21 p += pad; 22 } 23 return (p + value).slice(-length); 24 } 25 26 var mouseOver = function () { 27// jQuery(this).addClass('c-nav-btn-over'); 28 }; 29 var mouseLeave = function () { 30// jQuery(this).removeClass('c-nav-btn-over'); 31 }; 32 var mouseOverEvent = function () { 33 jQuery(this).addClass('c-event-over'); 34 var d = jQuery(this).attr('data-event-day'); 35 jQuery('a.c-event-item[data-event-day="' + d + '"]').addClass('c-event-over'); 36 }; 37 var mouseLeaveEvent = function () { 38 jQuery(this).removeClass('c-event-over') 39 var d = jQuery(this).attr('data-event-day'); 40 jQuery('a.c-event-item[data-event-day="' + d + '"]').removeClass('c-event-over'); 41 }; 42 var mouseOverItem = function () { 43 jQuery(this).addClass('c-event-over'); 44 var d = jQuery(this).attr('data-event-day'); 45 jQuery('div.c-event[data-event-day="' + d + '"]').addClass('c-event-over'); 46 }; 47 var mouseLeaveItem = function () { 48 jQuery(this).removeClass('c-event-over') 49 var d = jQuery(this).attr('data-event-day'); 50 jQuery('div.c-event[data-event-day="' + d + '"]').removeClass('c-event-over'); 51 }; 52 53 // var mouseClickEvent = function () { 54 // jQuery(".c-event-item").hide(); 55 // var d = jQuery(this).attr('data-event-day'); 56 // jQuery('div.c-event[data-event-day="' + d + '"]').show(); 57 // jQuery('div.c-event-item[data-event-day="' + d + '"]').show(); 58 // }; 59 60 //Add click event for each day with events on calender 61 var mouseClickEvent = function () { 62 jQuery(".c-event-item").hide(); 63 var d = jQuery(this).attr('data-event-day'); 64 jQuery('div.c-event[data-event-day="' + d + '"]').show(); 65 jQuery('a.c-event-item[data-event-day="' + d + '"]').show(); 66 }; 67 68 var nextMonth = function () { 69 if (dMonth < 11) { 70 dMonth++; 71 } else { 72 dMonth = 0; 73 dYear++; 74 } 75 print(); 76 }; 77 var previousMonth = function () { 78 if (dMonth > 0) { 79 dMonth--; 80 } else { 81 dMonth = 11; 82 dYear--; 83 } 84 print(); 85 }; 86 87 function loadEvents() { 88 if (typeof settings.url != 'undefined' && settings.url != '') { 89 jQuery.ajax({ 90 url: settings.url, 91 async: false, 92 success: function (result) { 93 settings.events = result; 94 } 95 }); 96 } 97 } 98 99 function print() { 100 loadEvents(); 101 var dWeekDayOfMonthStart = new Date(dYear, dMonth, 1).getDay(); 102 var dLastDayOfMonth = new Date(dYear, dMonth + 1, 0).getDate(); 103 var dLastDayOfPreviousMonth = new Date(dYear, dMonth + 1, 0).getDate() - dWeekDayOfMonthStart + 1; 104 105 var cBody = jQuery('<div/>').addClass('c-grid'); 106 var cEvents = jQuery('<div/>').addClass('c-event-grid'); 107 var cEventsBody = jQuery('<div/>').addClass('c-event-body').attr("data-simplebar","init"); 108// cEvents.append(jQuery('<div/>
108').addClass('c-event-title').html(settings.eventTitle)); 109 cEvents.append(cEventsBody); 110 var cNext = jQuery('<div/>').addClass('c-next c-grid-title'); 111 var cMonth = jQuery('<div/>').addClass('c-month c-grid-title'); 112 var cPrevious = jQuery('<div/>').addClass('c-previous c-grid-title'); 113 cPrevious.html(settings.textArrows.previous); 114 cMonth.html(settings.months[dMonth] + ' ' + dYear); 115 cNext.html(settings.textArrows.next); 116 117 cPrevious.on('mouseover', mouseOver).on('mouseleave', mouseLeave).on('click', previousMonth); 118 cNext.on('mouseover', mouseOver).on('mouseleave', mouseLeave).on('click', nextMonth); 119 120 cBody.append(cPrevious); 121 cBody.append(cMonth); 122 cBody.append(cNext); 123 for (var i = 0; i < settings.weekDays.length; i++) { 124 var cWeekDay = jQuery('<div/>').addClass('c-week-day'); 125 cWeekDay.html(settings.weekDays[i]); 126 cBody.append(cWeekDay); 127 } 128 var day = 1; 129 var dayOfNextMonth = 1; 130 for (var i = 0; i < 42; i++) { 131 var cDay = jQuery('<div/>'); 132 if (i < dWeekDayOfMonthStart) { 133 cDay.addClass('c-day-previous-month'); 134 cDay.html(dLastDayOfPreviousMonth++); 135 } else if (day <= dLastDayOfMonth) { 136 cDay.addClass('c-day'); 137 if (day == dDay && adMonth == dMonth && adYear == dYear) { 138 cDay.addClass('c-today'); 139 } 140 for (var j = 0; j < settings.events.length; j++) { 141 var d = settings.events[j].datetime; 142 if (d.getDate() == day && d.getMonth() == dMonth && d.getFullYear() == dYear) { 143 cDay.addClass('c-event').attr('data-event-day', d.getDate()); 144 cDay.on('mouseover', mouseOverEvent).on('mouseleave', mouseLeaveEvent); 145 //register the click events 146 cDay.on('mousedown', mouseClickEvent) 147 } 148 } 149 cDay.html(day++); 150 } else { 151 cDay.addClass('c-day-next-month'); 152 cDay.html(dayOfNextMonth++); 153 } 154 cBody.append(cDay); 155 } 156 var eventList = jQuery('<div/>').addClass('c-event-list'); 157 var hasEvents = false; 158 for (var i = 0; i < settings.events.length; i++) { 159 var d = settings.events[i].datetime; 160 if (d.getMonth() == dMonth && d.getFullYear() == dYear) { 161 hasEvents = true; 162 var date = lpad(d.getDate(), 2) + '/' + lpad(d.getMonth(), 2) + ' ' + lpad(d.getHours(), 2) + ':' + lpad(d.getMinutes(), 2); 163 164 var item = jQuery('<a/>').addClass('c-event-item').attr('href', settings.events[i].href); 165 166 //var title = jQuery('<div/>').addClass('title').html(settings.events[i].title + '<br/>'); 167 var titleText = settings.events[i].title.split(" "); 168 var title = jQuery('<div/>').addClass('title') 169 .html('<span class="event-month">' + titleText[0] + '</span> ' + titleText[1]); 170 var description = jQuery('<div/>').addClass('description').html(settings.events[i].description + '<br/>'); 171 172 item.attr('data-event-day', d.getDate()); 173 174 item.click(function () { 175 $(this).addClass('c-event-over'); 176 $(this).siblings().removeClass('c-event-over'); 177 178 var d = $(this).attr('data-event-day'); 179 $('div.c-event-item[data-event-day="' + d + '"]').addClass('c-event-over'); 180 $('div').not('.c-event-item[data-event-day="' + d + '"]').removeClass('c-event-over'); 181 $(".c-event-item").removeClass("event-info"); 182 }); 183 184 var wrapper = jQuery('<div/>').addClass('c_event_txt'); 185 186 wrapper.append(title).append(description); 187 188 item.append(wrapper);
189 eventList.append(item); 190 } 191 } 192 193 if ( !hasEvents ) { 194 eventList.append( 195 jQuery('<div/>') 196 .addClass('c-no-events') 197 .html('There are no public meetings or events scheduled for this month.') 198 ); 199 } 200 201 jQuery(instance).addClass('calendar'); 202 cEventsBody.append(eventList); 203 jQuery(instance).html(cBody).append(cEvents); 204 } 205 206 return print(); 207 } 208 209 jQuery.fn.eCalendar = function (oInit) { 210 return this.each(function () { 211 return eCalendar(oInit, jQuery(this)); 212 }); 213 }; 214 215}(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.