1if (uts == undefined) 2 var uts = {}; 3if (uts.apps == undefined) 4 uts.apps = {}; 5if (uts.apps.calendar == undefined) 6 uts.apps.calendar = {}; 7 8uts.apps.calendar.currentDate = new Date(); 9 10uts.apps.calendar.render = function(){ 11 12 document.write("<div id='cal-" + uts.apps.calendar.id + "'></div>"); 13 14 if (uts.apps.calendar.size == "big") 15 { 16 $("#cal-" + uts.apps.calendar.id).append($('<div>') 17 .addClass("uts-calendar-legend") 18 ); 19 uts.apps.calendar.renderCategories(); 20 } 21 22 if (uts.apps.calendar.size != "list") 23 { 24 $("#cal-" + uts.apps.calendar.id).append($('<div>') 25 .addClass("uts-calendar-selector") 26 ); 27 $("#cal-" + uts.apps.calendar.id).append($('<div>') 28 .addClass("uts-calendar-weekdays") 29 ); 30 $("#cal-" + uts.apps.calendar.id).append($('<div>') 31 .addClass("uts-calendar") 32 ); 33 if (uts.apps.calendar.size == "small") { 34 $("#cal-" + uts.apps.calendar.id + " .uts-calendar").addClass("uts-calendar-small"); 35 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector").addClass("uts-calendar-selector-small"); 36 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-weekdays").addClass("uts-calendar-weekdays-small"); 37 } 38 39 uts.apps.calendar.renderNavLinks(); 40 uts.apps.calendar.renderDayNames(); 41 uts.apps.calendar.renderCalendar(); 42 uts.apps.calendar.renderEvents(); 43 } 44 else 45 { 46 $("#cal-" + uts.apps.calendar.id).append($('<div>') 47 .addClass("uts-calendar-list") 48 ); 49 50 uts.apps.calendar.renderEventsList(); 51 } 52}; 53 54uts.apps.calendar.renderCategories = function(){ 55 $(uts.apps.calendar.categories).each(function(){ 56 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-legend").append($('<div>') 57 .addClass("uts-calendar-legend-category") 58 .addClass("selected") 59 .text($(this)[0].name) 60 .prop('id', $(this)[0].id) 61 .css('backgroundColor', '#' + $(this)[0].color) 62 .css('color', uts.apps.calendar.getFontColor('#' + $(this)[0].color)) 63 .on('click', function(){ 64 if ($(this).hasClass('selected')){ 65 $('.uts-calendar-event-' + $(this).prop('id')).hide(); 66 $(this).removeClass('selected') 67 } else { 68 $('.uts-calendar-event-' + $(this).prop('id')).show(); 69 $(this).addClass('selected') 70 } 71 }) 72 ); 73 }); 74}; 75 76uts.apps.calendar.renderDayNames = function(){ 77 78 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-weekdays *").remove(); 79 80 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-weekdays").append($('<table>') 81 .css('width', '100%') 82 .append($('<tr>')) 83 ); 84 85 for (var i=0; i<=6; i++){ 86 if (uts.apps.calendar.size != "small"){ 87 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-weekdays table tr").append($('<td>') 88 .css('width', '14.3%') 89 .text(uts.apps.calendar.weekdays[i]) 90 ); 91 } else { 92 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-weekdays table tr").append($('<td>') 93 .css('width', '14.3%') 94 .text(uts.apps.calendar.weekdays[i].substr(0, 2)) 95 ); 96 } 97 } 98}; 99 100uts.apps.calendar.renderCalendar = function(){ 101 102 $("#cal-" + uts.apps.calendar.id + " .uts-calendar *").remove(); 103 $("#cal-" + uts.apps.calendar.id + " .uts-calendar").append($('<table>') 104 .css('width', '100%') 105 ); 106 107 var today = uts.apps.calendar.cloneDate(uts.apps.calendar.currentDate); 108 var date = uts.apps.calendar.cloneDate(uts.apps.calendar.currentDate); 109 110 date = uts.apps.calendar.getPreviousMonth(date); 111 date = uts.apps.calendar.getNextMonth(date); 112 113 while (date.getDay() != 0) 114 date = uts.apps.calendar.addDays(date, -1); 115 116 for (var i=1; i<=6; i++){ 117 $("#cal-" + uts.apps.calendar.id + " .uts-calendar table").append($('<tr>') 118 .css('width', '16.7%') 119 ); 120 for (var j=1; j<=7; j++){ 121 $("#cal-" + uts.apps.calendar.id + " .uts-calendar table tr:last-child").append($('<td>') 122 .css('width', '14.3%') 123 .append($('<label>') 124 .text(date.getDate().toString()) 125 ).attr('id', 'uts-calendar-day-' + uts.apps.calendar.formatDate(date)) 126 .addClass('uts-calendar-day') 127 ); 128 if (uts.apps.calendar.isWeekDay(date)) 129 $("#cal-" + uts.apps.calendar.id + " .uts-calendar table tr:last-child td:last-child").addClass('uts-calendar-day-weekend'); 130 if (date.getMonth() != today.getMonth()) 131 $("#cal-" + uts.apps.calendar.id + " .uts-calendar table tr:last-child td:last-child").addClass('uts-calendar-day-other-month'); 132 date = uts.apps.calendar.getNextDay(date); 133 } 134 } 135 136 uts.apps.calendar.setHeights(); 137}; 138 139uts.apps.calendar.setHeights = function(){ 140 $("#cal-" + uts.apps.calendar.id + " .uts-calendar table").css('height', $("#cal-" + uts.apps.calendar.id + " .uts-calendar table").width()); 141 $("#cal-" + uts.apps.calendar.id + " .uts-calendar table tr td").each(function(){ 142 $(this).css('height', $(this).width()) 143 }); 144}; 145 146uts.apps.calendar.renderNavLinks = function(){ 147 148 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector *").remove(); 149 150 if (uts.apps.calendar.size == "small"){ 151 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector").append($('<table>') 152 .css('width', '100%') 153 .append($('<tr>') 154 .append($('<td width="33%">') 155 .append($('<a>') 156 .text("<") 157 .on('click', function(){ 158 uts.apps.calendar.currentDate = uts.apps.calendar.getPreviousMonth(uts.apps.calendar.currentDate);
159 uts.apps.calendar.renderCalendar(); 160 uts.apps.calendar.renderNavLinks(); 161 uts.apps.calendar.renderEvents(); 162 }) 163 ) 164 ).append($('<td width="33%">') 165 .append($('<select>') 166 .addClass('uts-calendar-selector-month') 167 ).append($('<select>') 168 .addClass('uts-calendar-selector-year') 169 ) 170 ).append($('<td width="33%">') 171 .append($('<a>') 172 .text(">") 173 .on('click', function(){ 174 uts.apps.calendar.currentDate = uts.apps.calendar.getNextMonth(uts.apps.calendar.currentDate); 175 uts.apps.calendar.renderCalendar(); 176 uts.apps.calendar.renderNavLinks(); 177 uts.apps.calendar.renderEvents(); 178 }) 179 ) 180 ) 181 ) 182 ); 183 } else { 184 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector").append($('<table>') 185 .css('width', '100%') 186 .append($('<tr>') 187 .append($('<td width="33%">') 188 .append($('<a>') 189 .text(uts.apps.calendar.getMonthName(uts.apps.calendar.getPreviousMonth(uts.apps.calendar.currentDate))) 190 .on('click', function(){ 191 uts.apps.calendar.currentDate = uts.apps.calendar.getPreviousMonth(uts.apps.calendar.currentDate); 192 uts.apps.calendar.renderCalendar(); 193 uts.apps.calendar.renderNavLinks(); 194 uts.apps.calendar.renderEvents(); 195 }) 196 ) 197 ).append($('<td width="33%">') 198 .append($('<select>') 199 .addClass('uts-calendar-selector-month') 200 ).append($('<select>') 201 .addClass('uts-calendar-selector-year') 202 ) 203 ).append($('<td width="33%">') 204 .append($('<a>') 205 .text(uts.apps.calendar.getMonthName(uts.apps.calendar.getNextMonth(uts.apps.calendar.currentDate))) 206 .on('click', function(){ 207 uts.apps.calendar.currentDate = uts.apps.calendar.getNextMonth(uts.apps.calendar.currentDate); 208 uts.apps.calendar.renderCalendar(); 209 uts.apps.calendar.renderNavLinks(); 210 uts.apps.calendar.renderEvents(); 211 }) 212 ) 213 ) 214 ) 215 ); 216 } 217 218 for (var i=0; i<uts.apps.calendar.months.length; i++){ 219 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector .uts-calendar-selector-month").append($('<option>') 220 .text(uts.apps.calendar.months[i]) 221 .val(i) 222 ); 223 } 224 225 for (var i=uts.apps.calendar.minyear; i<=uts.apps.calendar.maxyear; i++){ 226 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector .uts-calendar-selector-year").append($('<option>') 227 .text(i) 228 .val(i) 229 ); 230 } 231 232 if (uts.apps.calendar.getPreviousMonth(uts.apps.calendar.currentDate).getFullYear() < uts.apps.calendar.minyear) 233 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector td:eq(0) *").remove(); 234 235 if (uts.apps.calendar.getNextMonth(uts.apps.calendar.currentDate).getFullYear() > uts.apps.calendar.maxyear) 236 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector td:eq(2) *").remove(); 237 238 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector .uts-calendar-selector-month").val(uts.apps.calendar.currentDate.getMonth()); 239 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector .uts-calendar-selector-year").val(uts.apps.calendar.currentDate.getFullYear()); 240 241 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector .uts-calendar-selector-month").on('change', function(){ 242 uts.apps.calendar.currentDate = new Date(uts.apps.calendar.currentDate.getFullYear(), $(this).val(), 1, 0, 0, 0, 0);
243 uts.apps.calendar.renderCalendar(); 244 uts.apps.calendar.renderNavLinks(); 245 uts.apps.calendar.renderEvents(); 246 }); 247 248 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-selector .uts-calendar-selector-year").on('change', function(){ 249 uts.apps.calendar.currentDate = new Date($(this).val(), uts.apps.calendar.currentDate.getMonth(), 1, 0, 0, 0, 0); 250 uts.apps.calendar.renderCalendar(); 251 uts.apps.calendar.renderNavLinks(); 252 uts.apps.calendar.renderEvents(); 253 }); 254}; 255 256uts.apps.calendar.renderEvents = function(){ 257 $(uts.apps.calendar.events).each(function(){ 258 var d = $(this)[0].date; 259 if ($("#uts-calendar-day-" + uts.apps.calendar.formatDate(d)).size() > 0){ 260 if (!$("#uts-calendar-day-" + uts.apps.calendar.formatDate(d)).hasClass('uts-calendar-day-other-month')){ 261 if (uts.apps.calendar.size == "small"){ 262 $("#uts-calendar-day-" + uts.apps.calendar.formatDate(d)).addClass('uts-calendar-day-hasevent'); 263 var eventText = "<b>" + uts.apps.calendar.truncate($(this)[0].name, 20) + "</b> (" + $(this)[0].startTime + "-" + $(this)[0].endTime + ")<br /><p>" + uts.apps.calendar.truncate($(this)[0].description, 80) + "</p>"; 264 if ($(this)[0].startTime == "00:00" || $(this)[0].endTime == "00:00") 265 eventText = "<b>" + uts.apps.calendar.truncate($(this)[0].name, 20) + "</b><br /><p>" + uts.apps.calendar.truncate($(this)[0].description, 80) + "</p>"; 266 if ($("#uts-calendar-day-" + uts.apps.calendar.formatDate(d)).attr('title') != undefined) 267 $("#uts-calendar-day-" + uts.apps.calendar.formatDate(d)).attr('title', $("#uts-calendar-day-" + uts.apps.calendar.formatDate(d)).attr('title') + "<br/>" + eventText); 268 else 269 $("#uts-calendar-day-" + uts.apps.calendar.formatDate(d)).attr('title', eventText); 270 } else { 271 $("#uts-calendar-day-" + uts.apps.calendar.formatDate(d)).append($('<div>') 272 .addClass("uts-calendar-event") 273 .addClass("uts-calendar-event-" + $(this)[0].categoryId) 274 .text(uts.apps.calendar.getEventText($(this)[0].name, $(this)[0].startTime)) 275 .prop('name', $(this)[0].name) 276 .prop('description', $(this)[0].description) 277 .prop('date', $(this)[0].date) 278 .prop('startTime', $(this)[0].startTime) 279 .prop('endTime', $(this)[0].endTime) 280 .css('backgroundColor', '#' + $(this)[0].categoryColor) 281 .css('cursor', 'pointer') 282 .css('color', uts.apps.calendar.getFontColor('#' + $(this)[0].categoryColor)) 283 .on('click', function () { 284 if ($(this).prop('startTime') == "00:00" && $(this).prop('endTime') == "00:00") 285 alert($(this).prop('name') + "\n\n" + $(this).prop('description') + "\n\n" + uts.apps.calendar.formatDate($(this).prop('date'))); 286 else if ($(this).prop('endTime') == "00:00") 287 alert($(this).prop('name') + "\n\n" + $(this).prop('description') + "\n\n" + uts.apps.calendar.formatDate($(this).prop('date')) + " (" + $(this).prop('startTime') + ")"); 288 else 289 alert($(this).prop('name') + "\n\n" + $(this).prop('description') + "\n\n" + uts.apps.calendar.formatDate($(this).prop('date')) + " (" + $(this).prop('startTime') + " - " + $(this).prop('endTime') + ")"); 290 }) 291 ); 292 } 293 } 294 } 295 }); 296 297 if (uts.apps.calendar.size == "small"){ 298 $('.uts-calendar-day-hasevent').each(function(){ 299 $(this).tipsy({gravity: 'e', fade: true, html: true, opacity: 1}); 300 }); 301 } 302}; 303 304uts.apps.calendar.renderEventsList = function () 305{ 306 var lastMonth = ""; 307 308 $(uts.apps.calendar.events).each(function () 309 { 310 var d = $(this)[0].date; 311 var name = $(this)[0].name; 312 var description = $(this)[0].description; 313 var startTime = $(this)[0].startTime; 314 var endTime = $(this)[0].endTime;
315 var currentMonth = uts.apps.calendar.getMonthName(d); 316 var eventTime = startTime + " - " + endTime; 317 318 if (endTime == "00:00") 319 eventTime = startTime; 320 321 if (startTime == "00:00" && endTime == "00:00") 322 eventTime = ""; 323 324 if (lastMonth != currentMonth) 325 { 326 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-list").append($('<div>') 327 .addClass("uts-calendar-list-month") 328 .text(currentMonth) 329 ); 330 } 331 332 $("#cal-" + uts.apps.calendar.id + " .uts-calendar-list").append($('<div>') 333 .addClass("uts-calendar-list-day") 334 .append($('<label>') 335 .addClass('uts-calendar-list-day-date') 336 .text(uts.apps.calendar.formatDateHuman(d)) 337 ).append($('<label>') 338 .addClass('uts-calendar-list-day-time') 339 .text(eventTime) 340 ).append($('<label>') 341 .addClass('uts-calendar-list-day-name') 342 .text(name) 343 ).append($('<label>') 344 .addClass('uts-calendar-list-day-description') 345 .html(description.replace(/\n/g, '<br />')) 346 ) 347 ); 348 349 lastMonth = currentMonth; 350 }); 351}; 352 353uts.apps.calendar.cloneDate = function(date){ 354 return new Date(date.getTime()); 355}; 356 357uts.apps.calendar.getMonthName = function(date){ 358 var year = date.getFullYear(); 359 var month = uts.apps.calendar.months[date.getMonth()]; 360 return month + " " + year; 361}; 362 363uts.apps.calendar.getPreviousMonth = function(date){ 364 var d = uts.apps.calendar.cloneDate(date); 365 d.setDate(1); 366 d.setMonth(d.getMonth() - 1); 367 return d; 368}; 369 370uts.apps.calendar.getNextMonth = function(date){ 371 var d = uts.apps.calendar.cloneDate(date); 372 d.setDate(1); 373 d.setMonth(d.getMonth() + 1); 374 return d; 375}; 376 377uts.apps.calendar.getNextDay = function(date){ 378 var d = uts.apps.calendar.cloneDate(date); 379 d.setDate(d.getDate() + 1); 380 return d; 381}; 382 383uts.apps.calendar.addDays = function(date, days){ 384 var d = uts.apps.calendar.cloneDate(date); 385 d.setDate(d.getDate() + days); 386 return d; 387}; 388 389uts.apps.calendar.isWeekDay = function(date){ 390 var day = date.getDay(); 391 if (day == 0 || day == 6) 392 return true; 393 return false; 394}; 395 396uts.apps.calendar.formatDate = function(date){ 397 var yyyy = date.getFullYear().toString(); 398 var MM = (date.getMonth() + 1).toString(); 399 var dd = date.getDate().toString(); 400 return yyyy + "-" + MM + "-" + dd; 401}; 402 403uts.apps.calendar.formatDateHuman = function (date) { 404 var yyyy = date.getFullYear().toString(); 405 var MM = uts.apps.calendar.getMonthName(date); 406 var dd = date.getDate().toString(); 407 return dd + " " + MM; 408}; 409 410uts.apps.calendar.getFontColor = function(backColor){ 411 var r = parseInt(backColor.substr(1, 2), 16); 412 var g = parseInt(backColor.substr(3, 2), 16); 413 var b = parseInt(backColor.substr(5, 2), 16); 414 var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; 415 return (yiq >= 139) ? '#000000' : '#ffffff'; 416}; 417 418uts.apps.calendar.truncate = function(text, maxLength){ 419 if (text.length > maxLength) 420 return text.substr(0, maxLength) + "..."; 421 return text; 422}; 423 424uts.apps.calendar.getEventText = function(text, startTime){ 425 if (startTime == "00:00") 426 return uts.apps.calendar.truncate(text, 20); 427 return uts.apps.calendar.truncate(text, 20) + " (" + startTime + ")"; 428}; 429 430$(document).ready(function(){ 431 uts.apps.calendar.setHeights(); 432}); 433 434(function($){ 435 436 function fixTitle($ele) { 437 if ($ele.attr('title') || typeof($ele.attr('original-title')) != 'string') { 438 $ele.attr('original-title', $ele.attr('title') || '').removeAttr('title'); 439 } 440 } 441 442 function Tipsy(element, options) { 443 this.$element = $(element); 444 this.options = options; 445 this.enabled = true; 446 fixTitle(this.$element); 447 } 448 449 Tipsy.prototype = { 450 show: function() { 451 var title = this.getTitle(); 452 if (title && this.enabled) { 453 var $tip = this.tip(); 454 455 $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title); 456 $tip[0].className = 'tipsy'; 457 $tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body); 458 459 var pos = $.extend({}, this.$element.offset(), { 460 width: this.$element[0].offsetWidth, 461 height: this.$element[0].offsetHeight 462 }); 463 464 var actualWidth = $tip[0].offsetWidth, actualHeight = $tip[0].offsetHeight; 465 var gravity = (typeof this.options.gravity == 'function') 466 ? this.options.gravity.call(this.$element[0]) 467 : this.options.gravity; 468 469 var tp; 470 switch (gravity.charAt(0)) { 471 case 'n': 472 tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}; 473 break; 474 case 's': 475 tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}; 476 break; 477 case 'e': 478 tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset}; 479 break; 480 case 'w': 481 tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset}; 482 break; 483 } 484 485 if (gravity.length == 2) { 486 if (gravity.charAt(1) == 'w') { 487 tp.left = pos.left + pos.width / 2 - 15; 488 } else { 489 tp.left = pos.left + pos.width / 2 - actualWidth + 15; 490 } 491 } 492 493 $tip.css(tp).addClass('tipsy-' + gravity); 494 495 if (this.options.fade) { 496 $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity}); 497 } else { 498 $tip.css({visibility: 'visible', opacity: this.options.opacity}); 499 } 500 } 501 }, 502 503 hide: function() { 504 if (this.options.fade) { 505 this.tip().stop().fadeOut(function() { $(this).remove(); }); 506 } else { 507 this.tip().remove(); 508 } 509 }, 510 511 getTitle: function() { 512 var title, $e = this.$element, o = this.options; 513 fixTitle($e); 514 var title, o = this.options; 515 if (typeof o.title == 'string') { 516 title = $e.attr(o.title == 'title' ? 'original-title' : o.title); 517 } else if (typeof o.title == 'function') { 518 title = o.title.call($e[0]); 519 } 520 title = ('' + title).replace(/(^\s*|\s*$)/, ""); 521 return title || o.fallback; 522 }, 523 524 tip: function() { 525 if (!this.$tip) { 526 this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"/></div>'); 527 } 528 return this.$tip; 529 }, 530 531 validate: function() { 532 if (!this.$element[0].parentNode) { 533 this.hide(); 534 this.$element = null; 535 this.options = null; 536 } 537 }, 538 539 enable: function() { this.enabled = true; }, 540 disable: function() { this.enabled = false; }, 541 toggleEnabled: function() { this.enabled = !this.enabled; } 542 }; 543 544 $.fn.tipsy = function(options) { 545 546 if (options === true) { 547 return this.data('tipsy'); 548 } else if (typeof options == 'string') { 549 return this.data('tipsy')[options](); 550 } 551 552 options = $.extend({}, $.fn.tipsy.defaults, options); 553 554 function get(ele) { 555 var tipsy = $.data(ele, 'tipsy'); 556 if (!tipsy) { 557 tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options)); 558 $.data(ele, 'tipsy', tipsy); 559 } 560 return tipsy; 561 } 562 563 function enter() { 564 var tipsy = get(this); 565 tipsy.hoverState = 'in'; 566 if (options.delayIn == 0) { 567 tipsy.show(); 568 } else { 569 setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn); 570 } 571 }; 572 573 function leave() { 574 var tipsy = get(this); 575 tipsy.hoverState = 'out'; 576 if (options.delayOut == 0) { 577 tipsy.hide(); 578 } else { 579 setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut); 580 } 581 }; 582 583 if (!options.live) this.each(function() { get(this); }); 584 585 if (options.trigger != 'manual') { 586 var binder = options.live ? 'live' : 'bind', 587 eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', 588 eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; 589 this[binder](eventIn, enter)[binder](eventOut, leave); 590 } 591 592 return this; 593 594 }; 595 596 $.fn.tipsy.defaults = { 597 delayIn: 0, 598 delayOut: 0, 599 fade: false, 600 fallback: '', 601 gravity: 'n', 602 html: false, 603 live: false, 604 offset: 0, 605 opacity: 0.8, 606 title: 'title', 607 trigger: 'hover' 608 }; 609 610 $.fn.tipsy.elementOptions = function(ele, options) { 611 return $.metadata ? $.extend({}, options, $(ele).metadata()) : options; 612 }; 613 614 $.fn.tipsy.autoNS = function() { 615 return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n'; 616 }; 617 618 $.fn.tipsy.autoWE = function() { 619 return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w'; 620 }; 621 622})(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.