1var simpleCalendarStep = 0; 2var calendar = { 3 4 init: function(ajax, events) { 5 6 if (ajax) { 7 8 // ajax call to print json 9 $.ajax({ 10 url: 'data/events.json', 11 type: 'GET', 12 }) 13 .done(function(data) { 14 var events = data.events; 15 16 // loop json & append to dom 17 for (var i = 0; i < events.length; i++) { 18 $('.list').append('<div class="day-event" date-day="'+ events[i].day +'" date-month="' + events[i].month +'" date-year="'+ events[i].year +'" data-number="'+ i +'"><a href="#" class="close fontawesome-remove"></a><div class="title calendar__title">'+ events[i].title +'</div><p>'+ events[i].description +'</p><label class="check-btn"><input type="checkbox" class="save" id="save" name="" value=""/><span>Save to personal list!</span></label></div>'); 19 } 20 21 // start calendar 22 calendar.startCalendar(); 23 24 }) 25 .fail(function(data) { 26 console.log(data); 27 }); 28 } else { 29 if (typeof events != "undefined"){ 30 var events = events; 31 } 32 // loop json & append to dom 33 for (var i = 0; i < events.length; i++) { 34 $('.list').append('<div class="day-event" date-day="'+ events[i].day +'" date-month="' + events[i].month +'" date-year="'+ events[i].year +'" data-number="'+ i +'"><a href="#" class="close fontawesome-remove"></a><div class="title calendar__title">'+ events[i].title +'</div><p>'+ events[i].description +'</p><label class="check-btn"><input type="checkbox" class="save" id="save" name="" value=""/><span>Save to personal list!</span></label></div>'); 35 } 36 // if not using ajax start calendar 37 calendar.startCalendar(); 38 } 39 40 }, 41 42 startCalendar: function() { 43 var mon = 'ÐÐ'; 44 var tue = 'ÐТ'; 45 var wed = 'СР'; 46 var thur = 'ЧТ'; 47 var fri = 'ÐТ'; 48 var sat = 'СÐ'; 49 var sund = 'ÐС'; 50 51 /** 52 * Get current date 53 */ 54 var d = new Date(); 55 var yearNumber = (new Date).getFullYear(); 56 var strDate = yearNumber + "/" + (d.getMonth() + 1) + "/" + d.getDate(); 57 /** 58 * Get current month and set as '.current-month' in title 59 */ 60 var monthNumber = d.getMonth() + 1; 61 62 function GetMonthName(monthNumber) { 63 var months = ['ЯнваÑÑ', 'ФевÑалÑ', 'ÐаÑÑ', 'ÐпÑелÑ', 'Ðай', 'ÐÑнÑ', 'ÐÑлÑ', 'ÐвгÑÑÑ', 'СенÑÑбÑÑ', 'ÐкÑÑбÑÑ', 'ÐоÑбÑÑ', 'ÐекабÑÑ']; 64 return months[monthNumber - 1]; 65 } 66 67 setMonth(monthNumber, mon, tue, wed, thur, fri, sat, sund); 68 69 function setMonth(monthNumber, mon, tue, wed, thur, fri, sat, sund) { 70 $('.month').text(GetMonthName(monthNumber) + ' ' + yearNumber); 71 $('.month').attr('data-month', monthNumber); 72 printDateNumber(monthNumber, mon, tue, wed, thur, fri, sat, sund); 73 } 74 75 $('.btn-next').on('click', function(e) { 76 var monthNumber = $('.month').attr('data-month'); 77 if (monthNumber > 11) { 78 $('.month').attr('data-month', '0'); 79 var monthNumber = $('.month').attr('data-month'); 80 yearNumber = yearNumber + 1; 81 setMonth(parseInt(monthNumber) + 1, mon, tue, wed, thur, fri, sat, sund); 82 } else { 83 setMonth(parseInt(monthNumber) + 1, mon, tue, wed, thur, fri, sat, sund); 84 }; 85 }); 86 87 $('.btn-prev').on('click', function(e) { 88 var monthNumber = $('.month').attr('data-month'); 89 if (monthNumber < 2) { 90 $('.month').attr('data-month', '13'); 91 var monthNumber = $('.month').attr('data-month'); 92 yearNumber = yearNumber - 1; 93 setMonth(parseInt(monthNumber) - 1, mon, tue, wed, thur, fri, sat, sund); 94 } else { 95 setMonth(parseInt(monthNumber) - 1, mon, tue, wed, thur, fri, sat, sund); 96 }; 97 }); 98 99 /** 100 * Get all dates for current month 101 */ 102 103 function printDateNumber(monthNumber, mon, tue, wed, thur, fri, sat, sund) { 104 105 $($('tbody.event-calendar tr')).each(function(index) { 106 $(this).empty(); 107 }); 108 109 $($('thead.event-days tr')).each(function(index) { 110 $(this).empty(); 111 }); 112 113 function getDaysInMonth(month, year) { 114 // Since no month has fewer than 28 days 115 var date = new Date(year, month, 1); 116 var days = []; 117 while (date.getMonth() === month) { 118 days.push(new Date(date)); 119 date.setDate(date.getDate() + 1); 120 } 121 return days; 122 } 123 124 i = 0; 125 126 setDaysInOrder(mon, tue, wed, thur, fri, sat, sund); 127 128 function setDaysInOrder(mon, tue, wed, thur, fri, sat, sund) { 129 var monthDay = getDaysInMonth(monthNumber - 1, yearNumber)[0].toString().substring(0, 3); 130 if (monthDay === 'Mon') { 131 simpleCalendarStep = 0; 132 //$('thead.event-days tr').append('<td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td>'); 133 } else if (monthDay === 'Tue') { 134 simpleCalendarStep = 1; 135 //$('thead.event-days tr').append('<td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td>'); 136 } else if (monthDay === 'Wed') { 137 simpleCalendarStep = 2; 138 //$('thead.event-days tr').append('<td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td>'); 139 } else if (monthDay === 'Thu') { 140 simpleCalendarStep = 3; 141 //$('thead.event-days tr').append('<td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td>'); 142 } else if (monthDay === 'Fri') { 143 simpleCalendarStep = 4; 144 //$('thead.event-days tr').append('<td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td>'); 145 } else if (monthDay === 'Sat') { 146 simpleCalendarStep = 5; 147 //$('thead.event-days tr').append('<td>' + sat + '</td><td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td>'); 148 } else if (monthDay === 'Sun') { 149 simpleCalendarStep = 6; 150 //$('thead.event-days tr').append('<td>' + sund + '</td><td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td>'); 151 } 152 $('thead.event-days tr').append('<td>' + mon + '</td><td>' + tue + '</td><td>' + wed + '</td><td>' + thur + '</td><td>' + fri + '</td><td>' + sat + '</td><td>' + sund + '</td>'); 153 }; 154 var daysInMonth = getDaysInMonth(monthNumber - 1, yearNumber); 155 // daysInMonth += simpleCalendarStep; 156 for (var i = 1; i <= simpleCalendarStep; i++){ 157 $('tbody.event-calendar tr.1').append('<td class="empty-calendar"></td>'); 158 }
159 $(daysInMonth).each(function(index) { 160 var index = index + 1; 161 162 if (index <= 0){ 163 $('tbody.event-calendar tr.1').append('<td></td>'); 164 } else if (index < 8 - simpleCalendarStep) { 165 $('tbody.event-calendar tr.1').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>'); 166 } else if (index < 15 - simpleCalendarStep) { 167 $('tbody.event-calendar tr.2').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>'); 168 } else if (index < 22 - simpleCalendarStep) { 169 $('tbody.event-calendar tr.3').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>'); 170 } else if (index < 29 - simpleCalendarStep) { 171 $('tbody.event-calendar tr.4').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>'); 172 } else if (index < 32) { 173 $('tbody.event-calendar tr.5').append('<td date-month="' + monthNumber + '" date-day="' + index + '" date-year="' + yearNumber + '">' + index + '</td>'); 174 } 175 i++; 176 }); 177 var date = new Date(); 178 var month = date.getMonth() + 1; 179 var thisyear = new Date().getFullYear(); 180 setCurrentDay(month, thisyear); 181 setEvent(); 182 //displayEvent(); 183 } 184 185 /** 186 * Get current day and set as '.current-day' 187 */ 188 function setCurrentDay(month, year) { 189 var viewMonth = $('.month').attr('data-month'); 190 var eventYear = $('.event-days').attr('date-year'); 191 if (parseInt(year) === yearNumber) { 192 if (parseInt(month) === parseInt(viewMonth)) { 193 $('tbody.event-calendar td[date-day="' + d.getDate() + '"]').addClass('current-day'); 194 } 195 } 196 }; 197 198 /** 199 * Add class '.active' on calendar date 200 */ 201 $('tbody td').on('click', function(e) { 202 if ($(this).hasClass('event')) { 203 $('tbody.event-calendar td').removeClass('active'); 204 $(this).addClass('active'); 205 } else { 206 $('tbody.event-calendar td').removeClass('active'); 207 }; 208 }); 209 210 /** 211 * Add '.event' class to all days that has an event 212 */ 213 function setEvent() { 214 $('.day-event').each(function(i) { 215 var eventMonth = $(this).attr('date-month'); 216 var eventDay = $(this).attr('date-day'); 217 var eventYear = $(this).attr('date-year'); 218 var eventClass = $(this).attr('event-class'); 219 if (eventClass === undefined) eventClass = 'event'; 220 else eventClass = 'event ' + eventClass; 221 222 if (parseInt(eventYear) === yearNumber) { 223 $('tbody.event-calendar tr td[date-month="' + eventMonth + '"][date-day="' + eventDay + '"]').addClass(eventClass); 224 } 225 }); 226 }; 227 228 /** 229 * Get current day on click in calendar 230 * and find day-event to display 231 */ 232 function displayEvent() { 233 $('tbody.event-calendar td').on('click', function(e) { 234 $('.day-event').slideUp('fast'); 235 var monthEvent = $(this).attr('date-month'); 236 var dayEvent = $(this).text(); 237 $('.day-event[date-month="' + monthEvent + '"][date-day="' + dayEvent + '"]').slideDown('fast'); 238 }); 239 }; 240 241 /** 242 * Close day-event 243 */ 244 $('.close').on('click', function(e) { 245 $(this).parent().slideUp('fast'); 246 }); 247 248 /** 249 * Save & Remove to/from personal list 250 */ 251 $('.save').click(function() { 252 if (this.checked) { 253 $(this).next().text('Remove from personal list'); 254 var eventHtml = $(this).closest('.day-event').html(); 255 var eventMonth = $(this).closest('.day-event').attr('date-month'); 256 var eventDay = $(this).closest('.day-event').attr('date-day'); 257 var eventNumber = $(this).closest('.day-event').attr('data-number'); 258 $('.person-list').append('<div class="day" date-month="' + eventMonth + '" date-day="' + eventDay + '" data-number="' + eventNumber + '" style="display:none;">' + eventHtml + '</div>'); 259 $('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"]').slideDown('fast'); 260 $('.day').find('.close').remove(); 261 $('.day').find('.save').removeClass('save').addClass('remove'); 262 $('.day').find('.remove').next().addClass('hidden-print'); 263 remove(); 264 sortlist(); 265 } else { 266 $(this).next().text('Save to personal list'); 267 var eventMonth = $(this).closest('.day-event').attr('date-month'); 268 var eventDay = $(this).closest('.day-event').attr('date-day'); 269 var eventNumber = $(this).closest('.day-event').attr('data-number'); 270 $('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').slide
270Up('slow'); 271 setTimeout(function() { 272 $('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').remove(); 273 }, 1500); 274 } 275 }); 276 277 function remove() { 278 $('.remove').click(function() { 279 if (this.checked) { 280 $(this).next().text('Remove from personal list'); 281 var eventMonth = $(this).closest('.day').attr('date-month'); 282 var eventDay = $(this).closest('.day').attr('date-day'); 283 var eventNumber = $(this).closest('.day').attr('data-number'); 284 $('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').slideUp('slow'); 285 $('.day-event[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').find('.save').attr('checked', false); 286 $('.day-event[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').find('span').text('Save to personal list'); 287 setTimeout(function() { 288 $('.day[date-month="' + eventMonth + '"][date-day="' + eventDay + '"][data-number="' + eventNumber + '"]').remove(); 289 }, 1500); 290 } 291 }); 292 } 293 294 /** 295 * Sort personal list 296 */ 297 function sortlist() { 298 var personList = $('.person-list'); 299 300 personList.find('.day').sort(function(a, b) { 301 return +a.getAttribute('date-day') - +b.getAttribute('date-day'); 302 }).appendTo(personList); 303 } 304 305 /** 306 * Print button 307 */ 308 $('.print-btn').click(function() { 309 window.print(); 310 }); 311 }, 312 313};
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.