1;( function( $, window, undefined ) { 2 3 $.fn.rangeCalendar = function(options) { 4 5 var defaults = { 6 7 lang: "tr", 8 theme: "default-theme", 9 themeContext: this, 10 startDate: moment().add("MMM Do YY"), 11 endDate: moment().add('month', 3), 12 start : "+1", 13 startRangeWidth : 1, 14 minRangeWidth: 1, 15 maxRangeWidth: 1, 16 weekends: true, 17 autoHideMonths: false, 18 visible: true, 19 trigger: null, 20 changeRangeCallback : function( el, cont, dateProp ) { return true; } 21 }; 22 23 var returnObj; 24 25 26 this.each(function(i, el) { 27 28 var obj = el, 29 $el = $(el), 30 settings = $.extend( true, {},defaults, options ); 31 obj.options = settings; 32 33 obj.showCalendar = function(animate) { 34 35 var calPos = obj.calendarObj.position(); 36 var lastItemPos = obj.calendarObj.find(".cell").last().position(); 37 var lastItemRight = (lastItemPos.left + obj.calendarObj.find(".cell").last().outerWidth() ); 38 var selectedItemPos = obj.calendarObj.find(".cell").eq(0).position(); 39 40 $el.slideDown((animate ? 300 : 0), function() { 41 42 var windowWidth = $(window).outerWidth(); 43 $(obj.calendarObj).css({left: windowWidth }); 44 $(obj.monthsObj).css({left: windowWidth }); 45 obj._placeElement(obj.calendarObj,(!selectedItemPos ? 0 : selectedItemPos.left) ); 46 obj._placeElement(obj.monthsObj); 47 }); 48 49 obj.visible = true; 50 }, 51 obj.hideCalendar = function() { 52 53 $el.slideUp(50); 54 obj.visible = false; 55 }, 56 obj.toggleCalendar = function () { 57 58 if(obj.visible) 59 obj.showCalendar(); 60 else 61 obj.hideCalendar(); 62 }, 63 64 obj.rangeWidth = function(){ 65 66 var cellWidth = obj.calendarObj.find(".cell").outerWidth(); 67 var rangeWidth = parseInt(obj.calendarObj.find('.range-bar').outerWidth()/cellWidth); 68 obj._rangeWidth = ( !rangeWidth ? obj._rangeWidth : rangeWidth) ; 69 70 return obj._rangeWidth; 71 }, 72 obj.setRangeWidth = function(rangeWidth) { 73 74 var cellWidth = obj.calendarObj.find(".cal-cell").eq(0).outerWidth(); 75 var rangeWidth = parseInt(!rangeWidth || rangeWidth < obj.minRangeWidth ? obj.minRangeWidth : rangeWidth); 76 $el.find(".range-bar").width(cellWidth*rangeWidth); 77 $el.find(".range-bar").trigger("resize"); 78 }, 79 obj.range = function() { 80 81 var startDateIndex = obj.calendarObj.find('.cell.selected:eq(0)').index(); 82 var endDateIndex = obj.calendarObj.find('.cell.selected').last().index(); 83 var startDate = moment().add('days', startDateIndex+obj.start); 84 var startDateFormatted = (startDateIndex>=0 ? moment().add('days', startDateIndex+obj.start).format() : null); 85 var endDateFormatted = (endDateIndex>=0 ? moment().add('days', endDateIndex+obj.start).format() : null); 86 var range = $.data( obj, "range", { 87 start: startDateFormatted, 88 end: endDateFormatted, 89 width: obj.rangeWidth(), 90 fromNow: startDate.fromNow() 91 }); 92 return range; 93 }, 94 95 obj.setStartDate = function(startDate) { 96 97 var date = moment(startDate); 98 var fullYear = date.format("YYYY"); 99 var monthNumber = date.format("MM"); 100 var dayNumber = date.format('D'); 101 var dateId = fullYear+monthNumber+dayNumber; 102 var monthId = fullYear+monthNumber; 103 104 var dateCell = obj.calendarObj.find('.cell[date-id="'+dateId+'"]').eq(0); 105 dateCell.trigger("click"); 106 107 var monthCell = obj.monthsObj.find('.cell[month-id="'+monthId+'"]').eq(0); 108 monthCell.trigger("click"); 109 }, 110 111 obj.lang = function (){ 112 return obj.lang; 113 }, 114 115 obj.setTheme = function (themeName){ 116 117 var _themeName = $(obj.themeContext).attr("theme"); 118 119 if(_themeName) 120 $(obj.themeContext).removeClass(_themeName); 121 122 $(obj.themeContext).attr("theme",""+themeName+""); 123 $(obj.themeContext).addClass(""+themeName+""); 124 obj.theme = themeName; 125 }, 126 127 obj.update = function() { 128 129 //console.log("update"); 130 moment.lang(obj.lang); 131 obj.setTheme(obj.theme); 132 obj._generateView(); 133 }, 134 135 //EVENTS 136 obj.didResizeBar = function() { 137 138 var prevRangeWidth = obj.rangeWidth(); 139 var rangeWidth = prevRangeWidth; 140 var resizeBarPos = obj.calendarObj.find('.range-bar').position(); 141 var resizeBarWidth = obj.calendarObj.find('.range-bar').outerWidth(); 142 var resizeBarRight = resizeBarPos.left+resizeBarWidth; 143 var cellWidth = $(obj).find(".cell").first().outerWidth();
144 var lastCellPos = $(obj).find(".cell").last().position(); 145 var deltaWidth = 0 146 var objWidth = (lastCellPos.left+cellWidth); 147 148 if(resizeBarRight > objWidth){ 149 150 deltaWidth = objWidth-resizeBarWidth; 151 prevRangeWidth = (resizeBarWidth-deltaWidth)/cellWidth; 152 } 153 154 155 obj.calendarObj.find('.cell').removeClass("selected"); 156 obj.calendarObj.find('.cell').removeClass("last"); 157 obj.calendarObj.find('.cell.start').addClass("selected"); 158 obj.calendarObj.find('.cell.start').nextAll().slice(0, (!rangeWidth ? obj.minRangeWidth-1 : rangeWidth-1)).addClass('selected'); 159 obj.calendarObj.find('.cell.selected').last().addClass("last"); 160 obj._dispatchEvent(obj.changeRangeCallback,obj.range(),obj); 161 }, 162 obj.didSelectMonth = function(e) { 163 164 165 if(obj.isDragging || $(obj.lastTarget).is(obj.monthsObj) ){ 166 167 delete obj.lastTarget; 168 return; 169 } 170 171 var currentMonthId = $(this).attr("month-id"); 172 var currentCellMonth = obj.calendarObj.find('.cell[month-id="'+currentMonthId+'"].selected').eq(0); 173 var monthPosition = (!currentCellMonth.length ? obj.calendarObj.find('.cell[month-id="'+currentMonthId+'"]').eq(0).position() : currentCellMonth.position()); 174 var calendarViewWidth = $($el).outerWidth(); 175 176 obj.monthsObj.find('.cell').not(this).removeClass('selected'); 177 $(this).addClass('selected'); 178 179 obj._placeElement(obj.calendarObj,monthPosition); 180 obj._dispatchEvent(obj.changeRangeCallback,obj.range(),obj); 181 182 }, 183 184 185 186 obj.didChangeRange = function(e,ui) { 187 188 if(obj.isDragging || $(obj.lastTarget).is(obj.calendarObj)){ 189 190 delete obj.lastTarget; 191 return; 192 } 193 var rangeWidth = obj.rangeWidth(); 194 var currentCalItem = $(this); 195 var lastCalItem = obj.calendarObj.find('.cell').last(); 196 var delta = lastCalItem.index()-currentCalItem.index(); 197 198 var rightBar = currentCalItem.index()+rangeWidth-1; 199 if(rightBar > lastCalItem.index()){ 200 obj.calendarObj.find(' .cell').eq(currentCalItem.index()-rangeWidth+delta+1).trigger("click"); 201 return; 202 } 203 204 obj.calendarObj.find(".start").removeClass("start"); 205 currentCalItem.addClass("start"); 206 207 obj._updateRangeBar(); 208 obj._updateMonths(); 209 obj._dispatchEvent(obj.changeRangeCallback,obj.range(),obj); 210 211 }, 212 213 214
215 ///////////////////////////////////////////////////////* 216 217 // PRIVATE METHODS 218 219 220 obj._initRangeBar = function(){ 221 222 $(window).unbind("resize"); //Prevents window.resize event triggering 223 var rangeWidth = obj.rangeWidth() ; 224 var cellWidth = obj.calendarObj.find(".cell").eq(0).outerWidth(); 225 var cellHeight = obj.calendarObj.find(".cell").eq(0).outerHeight(); 226 var selectedCell = obj.calendarObj.find(".cell.selected:eq(0)"); 227 228 229 if(!selectedCell.length) 230 return; 231 232 233 obj.calendarObj.find(".range-bar").unbind( "resize"); 234 obj.calendarObj.find(".range-bar").remove(); 235 236 $(selectedCell).append('<div class="range-bar resizable"><div class="range-bar-content"></div></div>'); 237 238 if(obj.maxRangeWidth > 1){ 239 obj.calendarObj.find(".range-bar").resizable({ 240 grid:[cellWidth,0], 241 maxWidth: obj.maxRangeWidth*cellWidth, 242 minWidth: cellWidth*obj.minRangeWidth, 243 maxHeight:cellHeight, 244 minHeight:cellHeight, 245 handles: "e" 246 }); 247 } 248 249 250 obj.setRangeWidth(rangeWidth); 251 obj.calendarObj.find(".range-bar").on( "resize", obj.didResizeBar); 252 253 $(window).bind("resize",obj._resize); 254 255 }, 256 obj._initMonths = function() { 257 258 259 260 obj.monthsObj.draggable({ 261 262 axis: "x" , 263 scrollSensitivity: 100, 264 scrollSpeed: 100 , 265 cursor: "move", 266 267 create: function (e, ui) { 268 269 obj._updateMonths(); 270 obj._placeElement(obj.monthsObj); 271 272 }, 273 start: function (e, ui) { 274 275 obj.isDragging = true; 276 obj.monthsObj.find('.cell').unbind("click"); 277 278 279 }, 280 drag: function (e, ui) { 281 282 }, 283 284 stop: function(e, ui) { 285 286 287 $(this).css({top: 0}); 288 obj.lastTarget = e.target; 289 290 setTimeout(function(){ 291 obj.isDragging = false; 292 delete obj.lastTarget; 293 obj._placeElement(obj.monthsObj); 294 obj.monthsObj.find('.cell').bind("click",obj.didSelectMonth); 295 },10); 296 } 297 }); 298 299 }, 300 301 obj._initCalendar = function() { 302 303 var xpos; 304 305 obj.calendarObj.draggable({ 306 307 axis: "x" , 308 scrollSensitivity: 100, 309 scrollSpeed: 100 , 310 cursor: "move", 311 312 create: function () { 313 314 obj.calendarObj.find('.cell').removeClass("selected"); 315 obj.calendarObj.find('.cell').removeClass("last"); 316 obj.calendarObj.find(".cell").eq(obj.start-1).addClass("start"); 317 obj.calendarObj.find(".cell").eq(obj.start-1).addClass("selected"); 318 obj.calendarObj.find('.cell.start').nextAll().slice(0, obj._rangeWidth-1).addClass('selected'); 319 obj.calendarObj.find('.cell').bind("click",obj.didChangeRange); 320 obj.calendarObj.find('.cell.selected').last().addClass("last"); 321 322 obj._placeElement(obj.calendarObj); 323 }, 324 start: function(e, ui) { 325 326 xpos = ui.position.left; 327 $(window).unbind("resize"); //Prevents window.resize event triggering 328 obj.isDragging = true; 329 obj.calendarObj.find('.cell').unbind("click"); 330 }, 331 drag: function (e, ui) { 332
333 var xmove = ui.position.left - xpos; 334 var direction = xmove >= 0 ? 'right' : 'left'; 335 336 var rangeCalendarWidth = $el.outerWidth(); 337 var calendarOffset = obj.calendarObj.position(); 338 339 var monthMaxId = parseInt(obj.monthsObj.find(".cell").last().attr("month-id")); 340 var monthMinId = parseInt(obj.monthsObj.find(".cell").first().attr("month-id")); 341 342 var currentMonthId = parseInt(obj.monthsObj.find(".cell.selected").attr("month-id")); 343 var nextMonthId = parseInt(obj.monthsObj.find(".cell.selected").next().attr("month-id")); 344 var prevMonthId = parseInt(obj.monthsObj.find(".cell.selected").prev().attr("month-id")); 345 346 347 if(nextMonthId && currentMonthId && nextMonthId <= monthMaxId && direction == "left") { 348 349 var nextMonthsCell = obj.monthsObj.find('.cell[month-id="'+nextMonthId+'"]'); 350 var nextMonthCalendarCell = obj.calendarObj.find('.cell[month-id="'+nextMonthId+'"]').first(); 351 var nextMonthCalendarCellPos = nextMonthCalendarCell.position(); 352 353 354 var nextMonthLeftCenter = (rangeCalendarWidth/2 -(nextMonthCalendarCellPos.left )) ; 355 356 if( nextMonthLeftCenter >= calendarOffset.left && calendarOffset.left != 0){ 357 358 obj.monthsObj.find(".cell").removeClass("selected"); 359 $(nextMonthsCell).addClass("selected"); 360 obj._placeElement(obj.monthsObj,nextMonthsCell.position()); 361 } 362 363 } 364 else if(prevMonthId && currentMonthId && prevMonthId >= monthMinId && direction == "right") { 365 366 var prevMonthCell = obj.monthsObj.find('.cell[month-id="'+prevMonthId+'"]'); 367 var prevMonthCalendarCell = obj.calendarObj.find('.cell[month-id="'+prevMonthId+'"]').last(); 368 var prevMonthCalendarCellPos = prevMonthCalendarCell.position(); 369 var prevMonthLeftCenter = (rangeCalendarWidth/2 -(prevMonthCalendarCellPos.left )) ; 370 371 if(prevMonthLeftCenter <= calendarOffset.left+prevMonthCalendarCell.outerWidth() ) { 372 373 obj.monthsObj.find(".cell").removeClass("selected"); 374 $(prevMonthCell).addClass("selected"); 375 376 obj._placeElement(obj.monthsObj,prevMonthCell.position()); 377 } 378 } 379 }, 380 stop: function(e, ui) { 381 382 //alert("Drag easing da inserire"); 383 //var calendarOffset = obj.calendarObj.position(); 384 //obj.calendarObj.animate({left: parseInt(calendarOffset.left)-100},300,'easeOutCirc'); 385 obj.lastTarget = e.target; 386 obj._placeElement(obj.calendarObj); 387 388 setTimeout(function(){ 389 obj.isDragging = false; 390 delete obj.lastTarget; 391 392 obj.calendarObj.find('.cell').bind("click",obj.didChangeRange); 393 $(window).bind("resize",obj._resize); 394 obj._placeElement(obj.monthsObj); 395 },100); 396 397 } 398 }); 399 }, 400 401 402 obj._attachDragEasing = function(obj){ 403 404 return; 405 var draggableObj = $(obj); 406 407 var x1, x2, y1, y2, t1, t2, 408 minDistance = 40, 409 friction = 10; 410 411 var onMouseMove = function(e) { 412 var mouseEvents = draggableObj.data("mouseEvents"); 413 if (e.timeStamp - mouseEvents[mouseEvents.length - 1].timeStamp > 40) { 414 mouseEvents.push(e); 415 if (mouseEvents.length > 2) { 416 mouseEvents.shift(); 417 } 418 } 419 }; 420 421 var onMouseUp = function() { 422 //$(draggableObj).unbind("mousemove mouseup"); 423 }; 424 425 draggableObj.bind('dragstart',function (e){ 426 427 draggableObj.data("mouseEvents", [e]); 428 $(document).mousemove(onMouseMove).mouseup(onMouseUp); 429 }); 430 431 draggableObj.bind('dragstop',function (e){ 432 433 draggableObj.stop(); 434 435 var lastE = draggableObj.data("mouseEvents").shift(); 436 437 x1 = lastE.pageX; 438 y1 = lastE.pageY; 439 t1 = lastE.timeStamp; 440 x2 = e.pageX; 441 y2 = e.pageY; 442 t2 = e.timeStamp; 443 444 // Deltas 445 var dX = x2 - x1, 446 dY = y2 - y1, 447 dMs = Math.max(t2 - t1, 1); 448 449 // Speeds 450 var speedX = Math.max(Math.min(dX / dMs, 1), -1), 451 speedY = Math.max(Math.min(dY / dMs, 1), -1);
452 453 // Distance moved (Euclidean distance) 454 var distance = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)); 455 456 if (distance > minDistance) { 457 // Momentum 458 var lastStepTime = new Date(); 459 460 var maxLeft = $(window).width() - (draggableObj.width() + 10), 461 maxTop = 0; 462 463 draggableObj.animate({ 464 textIndent: 0 465 }, { 466 duration: Math.max(Math.abs(speedX), Math.abs(speedY)) * 2000, 467 step: function(currentStep) { 468 speedX *= (currentStep / 100); 469 speedY *= (currentStep / 100); 470 471 var now = new Date(); 472 var stepDuration = now.getTime() - lastStepTime.getTime(); 473 474 lastStepTime = now; 475 476 var position = draggableObj.position(); 477 478 var newLeft = (position.left + (speedX * stepDuration / friction)), 479 newTop = (position.top + (speedY * stepDuration / friction)); 480 481 console.log(newLeft); 482 newLeft = newLeft > maxLeft ? maxLeft : newLeft < 10 ? 10 : newLeft; 483 newTop = newTop > maxTop ? maxTop : newTop < 10 ? 10 : newTop; 484 485 draggableObj.css({ 486 left: newLeft + "px", 487 top: 0 + "px" 488 }); 489 } 490 }); 491 } 492 }); 493 }, 494 obj._getCalendarHTML = function(startDate,endDate) { 495 496 var calendarHtml = ''; 497 var cell; 498 var date = moment(startDate).add('days', obj.start); 499 var endDate = moment(endDate).add('days', obj.start); 500 var rangeWidth = obj.rangeWidth(); 501 502 for (var index = 1; (date.isBefore(endDate) || date.isSame(endDate)) ; index++){ 503 504 var fullYear = date.format("YYYY"); 505 var month = date.format("MMM"); 506 var monthNumber = date.format("MM"); 507 var day = date.format('ddd'); 508 var dayNumber = date.format('D'); 509 var isWeekend = date.day()%6==0; 510 511 if(isWeekend && !obj.weekends){ 512 date.add('days', 1); 513 continue; 514 } 515 516 cell = '<div class="cal-cell cell" date-id="'+fullYear+monthNumber+dayNumber+'" month-id="'+fullYear+''+monthNumber+'" month="'+monthNumber+'">'; 517 cell += '<div class="cell-content">'; 518 cell += '<div class="day-number">'+dayNumber+'</div>'; 519 520 cell += '<div class="day '+( isWeekend ? 'ferial' : '') +'">'+day+'</div>'; 521 cell += '</div>'; 522 cell += '</div>'; 523 524 calendarHtml += cell; 525 date.add('days', 1); 526 } 527 528 529 530 return calendarHtml; 531 }, 532 obj._getMonthsHTML = function(startDate,endDate) { 533 534 var monthsHtml = ''; 535 var cell; 536 var date = moment(startDate).add('days', obj.start); 537 var endDate = moment(endDate).add('days', obj.start); 538 for (var index = 1; (date.isBefore(endDate) || date.isSame(endDate)) ; index++){ 539 540 var year = date.format("YY"); 541 var fullYear = date.format("YYYY");
542 var month = date.format("MMM"); 543 var monthNumber = date.format("MM"); 544 545 cell = '<div class="month-cell cell" month-id="'+fullYear+''+monthNumber+'" month="'+monthNumber+'">'; 546 cell += '<i class="bullet"></i>'; 547 cell += '<div class="date-formatted"><span class="month-name">'+month+'</span> '+year+'</span></div>'; 548 cell += '</div>'; 549 550 monthsHtml += cell; 551 date.add('month', 1); 552 } 553 554 return monthsHtml; 555 }, 556 obj._updateMonths = function() { 557 558 var currentMonth = obj.calendarObj.find('.cell.selected:eq(0)').attr("month-id"); 559 obj.monthsObj.find('.cell').removeClass('selected'); 560 obj.monthsObj.find('.cell').removeClass('current'); 561 obj.monthsObj.find('.cell[month-id="'+currentMonth+'"]').addClass('selected'); 562 obj.monthsObj.find('.cell[month-id="'+currentMonth+'"]').addClass('current'); 563 }, 564 obj._updateRangeBar = function() { 565 566 obj.didResizeBar(); 567 obj._initRangeBar(); 568 }, 569 obj._dispatchEvent = function (callback,options,el) { 570 571 if(!callback) 572 return false; 573 574 callback(el,options); 575 }, 576 obj._placeElement = function (el) { 577 578 obj._placeElement(el,null); 579 }, 580 obj._placeElement = function (el, position) { 581 582 var calendarViewWidth = $el.outerWidth(); 583 var cellWidth = $(el).find(".cell").first().outerWidth(); 584 var objChildrens = $(el).children().length; 585 var objWidth = (objChildrens*cellWidth); 586 587 var elPos = $(el).position(); 588 left = ( !position ? parseInt(elPos.left) : -position.left); 589 590 if(calendarViewWidth > objWidth ) 591 left = (calendarViewWidth-objWidth)/2; 592 else if (calendarViewWidth < objWidth && left >= 0) 593 left = 0 ; 594 else if(left < calendarViewWidth-objWidth) 595 left = -objWidth+calendarViewWidth; 596 597 $(el).stop().animate({left: left},300,'easeOutCirc'); 598 }, 599 obj._timedResize = function() { 600 601 clearTimeout(obj.resizeTimer); 602 obj.resizeTimer = setTimeout(obj._resize, obj.timeoutTime); 603 }, 604 obj._bindEvents = function () { 605 606 if(obj.trigger){ 607 608 $(obj.trigger).unbind("click"); 609 $(obj.trigger).click(obj.toggleCalendar); 610 } 611 612 obj.timeout = false; 613 obj.timeoutTime = 100; 614 615 obj.calendarObj.find(".range-bar").on( "resize", obj.didResizeBar); 616 obj.monthsObj.find('.cell').bind("click",obj.didSelectMonth); 617 618 $(window).bind('resize',obj._timedResize); 619 620 $el.hover( 621 622 function() { 623 624 if(obj.autoHideMonths) 625 obj.monthsObj.slideDown(100,'easeOutCirc'); 626 }, 627 function() { 628 629 if(obj.autoHideMonths) 630 obj.monthsObj.slideUp(0,'easeOutCirc'); 631 632 } 633 ); 634 635 $(obj).on('mousedown', '.range-bar', function (e) { 636 637 638 var topElement = document.elementFromPoint(e.clientX, e.clientY); 639 if($(topElement).hasClass('ui-resizable-handle')){ 640 641 e.stopPropagation(); 642 return false; 643 } 644 645 }); 646 647 648 $(obj).on('mouseup', '.range-bar', function (e) { 649 650 if($(obj).find('.range-bar').hasClass('ui-resizable-resizing')) 651 return true; 652 653 $(this).hide(); 654 var BottomElement = document.elementFromPoint(e.clientX, e.clientY); 655 $(this).show(); 656 657 $(BottomElement).trigger('click'); //Manually fire the event for desired underlying element 658 return true; 659 }); 660 661 }, 662 663 obj._resize = function(){ 664 665 666 obj._placeElement(obj.calendarObj); 667 obj._placeElement(obj.monthsObj); 668 obj.timeout = false; 669 670 }, 671
672 obj._updateView = function (startDate,endDate){ 673 674 obj.calendarObj.append(obj._getCalendarHTML(startDate,endDate)); 675 obj.monthsObj.append(obj._getMonthsHTML(startDate,endDate)); 676 677 if(obj.visible){ 678 $el.css({display:"block"}); 679 obj.showCalendar(); 680 } 681 else 682 $el.css({display:"none"}); 683 684 obj._initCalendar(); 685 obj._initMonths(); 686 obj._initRangeBar(); 687 688 obj._attachDragEasing(obj.calendarObj); 689 }, 690 obj._generateView = function () { 691 692 var mainClass = "range-calendar"; 693 694 $el.removeClass(mainClass) 695 $el.addClass(mainClass); 696 $el.empty(); 697 698 obj.monthsObj = $('<div class="wrapper"><div class="months"></div></div>'); 699 $el.append( obj.monthsObj ); 700 obj.monthsObj = obj.monthsObj.find(".months"); 701 (obj.autoHideMonths ? obj.monthsObj.addClass("auto-hide-months") : ''); 702 703 obj.calendarObj = $('<div class="wrapper"><div class="calendar"></div></div>'); 704 $el.append( obj.calendarObj ); 705 obj.calendarObj = obj.calendarObj.find(".calendar"); 706 707 708 obj._updateView(obj.startDate,obj.endDate); 709 obj._bindEvents(); 710 obj._dispatchEvent(obj.changeRangeCallback,obj.range(),obj); 711 } 712 713 714 715 716 717 obj._init = function( element,options ) { 718 719 obj.themeContext = options.themeContext; 720 obj.lang = options.lang ; 721 obj.isDragging = false; 722 obj.minRangeWidth = options.minRangeWidth; 723 obj.maxRangeWidth = options.maxRangeWidth; 724 obj.weekends = options.weekends; 725 obj.startDate = options.startDate; 726 obj.endDate = options.endDate; 727 obj.start = (!options.start ? "+7" : parseInt(options.start)) ; 728 obj.startRangeWidth = ( options.startRangeWidth > options.maxRangeWidth ? options.maxRangeWidth : options.startRangeWidth); 729 obj._rangeWidth = obj.startRangeWidth; 730 obj.trigger = options.trigger; 731 obj.visible = options.visible; 732 obj.changeRangeCallback = options.changeRangeCallback; 733 obj.autoHideMonths = options.autoHideMonths ; 734 735 obj.theme = (options.theme ? options.theme : defaults.theme ); 736 obj.update(); 737 }, 738 739 obj._init(el,obj.options); 740 $(obj).data('rangeCalendar', obj ); 741 742 743 }); 744 745 746 return this.data("rangeCalendar"); 747 748 749 }; 750 751 } )( jQuery, window ); 752 753 754 755 756 757 758 759 760 761 762
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.