1jQuery( document ).ready(function( $ ) { 2 'use strict'; 3 $("body").tooltip({ selector: '[data-toggle=tooltip]' }); 4 5 (function (factory) { 6 if (typeof define === 'function' && define.amd) { 7 // AMD. Register as an anonymous module. 8 define(['jquery'], factory); 9 } else if (typeof exports === 'object') { 10 // Node/CommonJS style for Browserify 11 module.exports = factory; 12 } else { 13 // Browser globals 14 factory(jQuery); 15 } 16 }( 17 /** 18 * @param {jQuery} $ 19 */ 20 function($) { 21 // disable drop open behavior 22 $('html').on('dragover drop', function(e) { e.preventDefault() }); 23 24 $.fn.scrollbars = function(a,b,c) { 25 if(window.isMobile || window.isTouch) {//} && window.isTouch) { 26 switch(a) { 27 case 'scrollTo': 28 return this.scrollTop(b); 29 // case 'update': 30 // return this.mCustomScrollbar('update'); 31 case '': 32 return this; 33 default: 34 console.log('SCROLLBARS: ',a,b,c) 35 if(typeof a == 'object' && typeof b == 'undefined') { 36 this.css('overflow', 'auto') 37 } 38 return this; 39 } 40 } else { 41 return this.mCustomScrollbar(a,b,c); 42 } 43 } 44 45 $.fn.calendar = function (opt,val) { 46 var self = this; 47 if(typeof opt === 'string' && typeof val !== 'undefined') switch(opt) { // setter | method with args 48 49 // return this; 50 } 51 else if(typeof opt === 'string') switch(opt) { // getter | method with no args 52 // return; 53 } 54 var def = { 55 date: new Date(), 56 autoSelect: false, 57 select: function(date) {}, 58 toggle: function(y, m) {}, 59 } 60 var current = { 61 y: def.date.getFullYear(), 62 m: def.date.getMonth()+1, 63 d: def.date.getDate(), 64 } 65 var selected = { 66 y: 0, 67 m: 0, 68 d: 0, 69 } 70 $(this).prop('selected', selected); 71 def = $.extend(def, opt); 72 var weekDays = 'Sun Mon Tue Wed Thu Fri Sat'.split(' '); 73 var yearMonths = 'January February March April May June July August September October November December'.split(' '); 74 var yearMonthsShort = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '); 75 var today = new Date(); 76 var todayDate = today.getDate(); 77 var makeMonth = function(y,m,d) { 78 var body = $('<table>') 79 .addClass('month-body') 80 // .appendTo(month) 81 var week = $('<thead>') 82 .addClass('month-week') 83 .appendTo(body) 84 .append('<tr></tr>') 85 .find('tr') 86 var days = $('<tbody>') 87 .addClass('month-days') 88 .appendTo(body) 89 for(i=0;i<7;i++) { 90 week.append('<th>'+weekDays[i]+'</th>'); 91 } 92 var date = new Date(y,m-1,1); 93 var today = new Date(); 94 var todayDate = today.getDate(); 95 var thisMonth = !!(today.getMonth()+1 === m && today.getFullYear() === y); 96 // date.setFullYear(y,m-1,1); 97 var numDays = (new Date(y,m,0)).getDate(); 98 var numWeeks = Math.ceil((numDays + date.getDay())/7); 99 var day = 1; 100 // console.log(date.getDay(), date.getMonth(), numDays); 101 // for(var i=0; i<numWeeks; i++) { 102 for(var i=0; i<5; i++) { 103 var wk = $('<tr>').appendTo(days); 104 for(var j=0;j<7;j++) { 105 if((i===0 && j<date.getDay()) || (day>numDays)) { 106 wk.append('<td></td>') 107 // wk.append('<td class="fade"> - </td>') 108 // continue; 109 } else { 110 $('<td>') 111 .text(day < 10 ? '0'+day : day) 112 // .addClass(day === d ? 'active' : '') 113 .addClass(thisMonth && day === todayDate ? 'today' : '') 114 .attr('data-date', day) 115 // .ripple({ type: 'icon' }) 116 .appendTo(wk) 117 .click(function(e) { 118 $(this).parent().parent().find('.active').removeClass('active') 119 $(this).addClass('active') 120 selectDate(y, m, parseInt($(this).attr('data-date'))) 121 }) 122 day++; 123 } 124 } 125 // if(wk.text().trim() === '' && days.children(':first').text().split(' ').join('').split('0').join('').length === 7) wk.prependTo(days); 126 if(i === 5 && days.children(':first').text().split(' ').join('').split('0').join('').length === 7) wk.prependTo(days); 127 } 128 // days.find('td[data-date]').ripple({ type: 'centered' }) 129 days.find('td[data-date]').ripple() 130 if(def.autoSelect) { 131 days.find('td[data-date="'+d+'"]').click()//.addClass('active') 132 } 133 return body; 134 } 135 var selectDate = function(y,m,d) { 136 selected.d = d; 137 selected.m = m; 138 selected.y = y; 139 var dt = new Date(y,m-1,d); 140 def.select.bind(self)(dt); 141 } 142 var bringMonth = function(p_n,y,m,d) { 143 isMoving = true; 144 month.addClass('no-overflow'); 145 yMon.text(yearMonths[m-1]+' '+y) 146 yrnm.text(y) 147 yrbd.find('.active').removeClass('active') 148 yrbd.find('[data-month="'+m+'"]').addClass('active') 149 if(d === null && y === selected.y && m === selected.m) d = selected.d; 150 var mon = makeMonth(y,m,d) 151 .addClass(p_n) 152 .insertBefore(body) 153 def.toggle.bind(self)(current.y, current.m); 154 // requestAnimationFrame(function() { 155 setTimeout(function() { 156 mon.addClass('come') 157 }, 1000/60) 158 body.one('transitionend', function(e) { 159 body.remove() 160 body = mon; 161 body.removeClass(p_n+' come') 162 month.removeClass('no-overflow'); 163 // def.toggle.bind(self)(current.y, current.m); 164 isMoving = false;
165 }) 166 } 167 var showYearPicker = function(e) { 168 year.addClass('visible') 169 } 170 var hideYearPicker = function(e) { 171 year.removeClass('visible') 172 } 173 var isMoving = false; 174 var date = def.date; 175 // var month = $('<div>') 176 var month = $(this[0]) 177 .addClass('nao-month') 178 // .appendTo(dpkr) 179 var btn1 = $('<button>') 180 .addClass('ic ic-arrow-angle-left') 181 .ripple() 182 .attr('data-toggle', 'tooltip') 183 .attr('title', 'Previous month') 184 .click(function(e) { 185 e.preventDefault(); 186 if(isMoving) return; 187 current.m = current.m-1 === 0 ? 12 : current.m-1; 188 current.y = current.m === 12 ? current.y-1 : current.y; 189 bringMonth('prev', current.y, current.m, null); 190 }) 191 .focus(hideYearPicker) 192 var btn2 = $('<button>') 193 .addClass('ic ic-arrow-angle-right') 194 .ripple() 195 .attr('data-toggle', 'tooltip') 196 .attr('title', 'Next month') 197 .click(function(e) { 198 e.preventDefault(); 199 if(isMoving) return; 200 current.m = current.m+1 === 13 ? 1 : current.m+1; 201 current.y = current.m === 1 ? current.y+1 : current.y; 202 bringMonth('next', current.y, current.m, null); 203 }) 204 .focus(hideYearPicker) 205 var btn3 = $('<button>') 206 .addClass('btn ic ic-arrow-circle-angle-down') 207 .ripple() 208 .attr('data-toggle', 'tooltip') 209 .attr('title', 'View current month') 210 .click(function(e) { 211 e.preventDefault(); 212 if(isMoving) return; 213 var dt = new Date(); 214 if(dt.getFullYear() === current.y && dt.getMonth()+1 === current.m) return; 215 var dr = current.y*12+current.m > dt.getFullYear()*12+dt.getMonth()+1 ? 'prev' : 'next'; 216 current.y = dt.getFullYear(); 217 current.m = dt.getMonth()+1; 218 bringMonth(dr, current.y, current.m, null); 219 }) 220 .focus(hideYearPicker) 221 var btn4 = $('<button>') 222 .addClass('btn ic ic-target') 223 .ripple() 224 .attr('data-toggle', 'tooltip') 225 .attr('title', 'View selected date') 226 .click(function(e) { 227 e.preventDefault(); 228 if(isMoving) return; 229 if(selected.d < 1) return; 230 if(selected.y === current.y && selected.m === current.m) return; 231 var dr = current.y*12+current.m > selected.y*12+selected.m ? 'prev' : 'next'; 232 current.y = selected.y; 233 current.m = selected.m; 234 bringMonth(dr, current.y, current.m, null); 235 }) 236 .focus(hideYearPicker) 237 var yMon = $('<div>') 238 .text(yearMonths[date.getMonth()]+' '+date.getFullYear()) 239 .attr('data-toggle', 'tooltip') 240 .attr('title', 'Year and Month') 241 // .click(showYearPicker) 242 var head = $('<div>') 243 .addClass('month-head') 244 // .text(yearMonths[date.getMonth()]+' '+date.getFullYear()) 245 .append(btn1) 246 .append(btn3) 247 .append(btn2) 248 .append(btn4) 249 .append(yMon) 250 .appendTo(month) 251 var body = makeMonth(current.y, current.m, (opt && opt.date) ? current.d : null) 252 .appendTo(month) 253 var togg = def.toggle.bind(self)(current.y, current.m); 254 var year = $('<div>') 255 .addClass('year-month') 256 .prependTo(month) 257 var yrnx = $('<button>') 258 // .addClass('span') 259 .addClass('ic ic-arrow-angle-right') 260 .ripple() 261 .click(function(e) { 262 e.preventDefault(); 263 if(isMoving) return; 264 current.y++; 265 yrnm.text(current.y) 266 bringMonth('next', current.y, current.m, null); 267 }) 268 .focus(showYearPicker) 269 var yrpv = $('<button>') 270 // .addClass('span') 271 .addClass('ic ic-arrow-angle-left') 272 .ripple() 273 .click(function(e) { 274 e.preventDefault(); 275 if(isMoving) return; 276 current.y--; 277 yrnm.text(current.y) 278 bringMonth('prev', current.y, current.m, null); 279 }) 280 .focus(showYearPicker) 281 var yrnm = $('<div>') 282 .text(current.y) 283 .attr('data-toggle', 'tooltip') 284 .attr('title', 'Go back to calendar') 285 .click(hideYearPicker) 286 var yrhd = $('<div>') 287 .addClass('month-head') 288 // .addClass('year-head') 289 .append(yrpv) 290 .append(yrnx) 291 .append(yrnm) 292 .appendTo(year) 293 var yrbd = $('<table>') 294 .addClass('year-body') 295 .appendTo(year) 296 .html('<tbody></tbody>') 297 .find('tbody') 298 var yrft = $('<div>') 299 .addClass('year-footer ic ic-arrow-circle-angle-up') 300 .attr('data-toggle', 'tooltip') 301 .attr('title', 'Go back to calendar') 302 .ripple() 303 .appendTo(year) 304 .click(function(e) { 305 year.removeClass('visible') 306 }) 307 for(var i=0; i<4; i++) { 308 var row = $('<tr>').appendTo(yrbd)
309 for(var j=0; j<3; j++) { 310 var idx = i*3+j; 311 var col = $('<td>') 312 .text(yearMonths[idx]) 313 .attr('data-month', idx+1) 314 .addClass(current.m === idx+1 ? 'active' : '') 315 .appendTo(row) 316 .ripple() 317 .click(function(e) { 318 if(isMoving) return; 319 var mm = parseInt($(this).attr('data-month')) 320 if(mm == current.m) return; 321 var dr = current.m > mm ? 'prev' : 'next'; 322 current.m = mm; 323 $(this).parent().parent().find('.active').removeClass('active') 324 $(this).addClass('active') 325 bringMonth(dr, current.y, current.m, null); 326 }) 327 } 328 } 329 return this; 330 } 331 return $; 332 })); 333});
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.