﻿/* http://keith-wood.name/calendars.html
   Calendars date picker for jQuery v1.1.2.
   Written by Keith Wood (kbwood{at}iinet.com.au) August 2009.
   Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and 
   MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. 
   Please attribute the author if you use it. */
(function($){function CalendarsPicker(){this._defaults={calendar:$.calendars.instance(),pickerClass:'',showOnFocus:true,showTrigger:null,showAnim:'show',showOptions:{},showSpeed:'normal',popupContainer:null,alignment:'bottom',fixedWeeks:false,firstDay:null,calculateWeek:null,monthsToShow:1,monthsOffset:0,monthsToStep:1,monthsToJump:12,useMouseWheel:true,changeMonth:true,yearRange:'c-10:c+10',showOtherMonths:false,selectOtherMonths:false,defaultDate:null,selectDefaultDate:false,minDate:null,maxDate:null,dateFormat:null,autoSize:false,rangeSelect:false,rangeSeparator:' - ',multiSelect:0,multiSeparator:',',onDate:null,onShow:null,onChangeMonthYear:null,onSelect:null,onClose:null,altField:null,altFormat:null,constrainInput:true,commandsAsDateFormat:false,commands:this.commands};this.regional={'':{renderer:this.defaultRenderer,prevText:'&lt;Prev',prevStatus:'Show the previous month',prevJumpText:'&lt;&lt;',prevJumpStatus:'Show the previous year',nextText:'Next&gt;',nextStatus:'Show the next month',nextJumpText:'&gt;&gt;',nextJumpStatus:'Show the next year',currentText:'Current',currentStatus:'Show the current month',todayText:'Today',todayStatus:'Show today\'s month',clearText:'Clear',clearStatus:'Clear all the dates',closeText:'Close',closeStatus:'Close the datepicker',yearStatus:'Change the year',monthStatus:'Change the month',weekText:'Wk',weekStatus:'Week of the year',dayStatus:'Select DD, M d, yyyy',defaultStatus:'Select a date',isRTL:false}};$.extend(this._defaults,this.regional['']);this._disabled=[]}$.extend(CalendarsPicker.prototype,{dataName:'calendarsPicker',markerClass:'hasCalendarsPicker',_popupClass:'calendars-popup',_triggerClass:'calendars-trigger',_disableClass:'calendars-disable',_coverClass:'calendars-cover',_monthYearClass:'calendars-month-year',_curMonthClass:'calendars-month-',_anyYearClass:'calendars-any-year',_curDoWClass:'calendars-dow-',commands:{prev:{text:'prevText',status:'prevStatus',keystroke:{keyCode:33},enabled:function(a){var b=a.curMinDate();return(!b||a.drawDate.newDate().add(1-a.get('monthsToStep')-a.get('monthsOffset'),'m').day(a.get('calendar').minDay).add(-1,'d').compareTo(b)!=-1)},date:function(a){return a.drawDate.newDate().add(-a.get('monthsToStep')-a.get('monthsOffset'),'m').day(a.get('calendar').minDay)},action:function(a){$.calendars.picker.changeMonth(this,-a.get('monthsToStep'))}},prevJump:{text:'prevJumpText',status:'prevJumpStatus',keystroke:{keyCode:33,ctrlKey:true},enabled:function(a){var b=a.curMinDate();return(!b||a.drawDate.newDate().add(1-a.get('monthsToJump')-a.get('monthsOffset'),'m').day(a.get('calendar').minDay).add(-1,'d').compareTo(b)!=-1)},date:function(a){return a.drawDate.newDate().add(-a.get('monthsToJump')-a.get('monthsOffset'),'m').day(a.get('calendar').minDay)},action:function(a){$.calendars.picker.changeMonth(this,-a.get('monthsToJump'))}},next:{text:'nextText',status:'nextStatus',keystroke:{keyCode:34},enabled:function(a){var b=a.get('maxDate');return(!b||a.drawDate.newDate().add(a.get('monthsToStep')-a.get('monthsOffset'),'m').day(a.get('calendar').minDay).compareTo(b)!=+1)},date:function(a){return a.drawDate.newDate().add(a.get('monthsToStep')-a.get('monthsOffset'),'m').day(a.get('calendar').minDay)},action:function(a){$.calendars.picker.changeMonth(this,a.get('monthsToStep'))}},nextJump:{text:'nextJumpText',status:'nextJumpStatus',keystroke:{keyCode:34,ctrlKey:true},enabled:function(a){var b=a.get('maxDate');return(!b||a.drawDate.newDate().add(a.get('monthsToJump')-a.get('monthsOffset'),'m').day(a.get('calendar').minDay).compareTo(b)!=+1)},date:function(a){return a.drawDate.newDate().add(a.get('monthsToJump')-a.get('monthsOffset'),'m').day(a.get('calendar').minDay)},action:function(a){$.calendars.picker.changeMonth(this,a.get('monthsToJump'))}},current:{text:'currentText',status:'currentStatus',keystroke:{keyCode:36,ctrlKey:true},enabled:function(a){var b=a.curMinDate();var c=a.get('maxDate');var d=a.selectedDates[0]||a.get('calendar').today();return(!b||d.compareTo(b)!=-1)&&(!c||d.compareTo(c)!=+1)},date:function(a){return a.selectedDates[0]||a.get('calendar').today()},action:function(a){var b=a.selectedDates[0]||a.get('calendar').today();$.calendars.picker.showMonth(this,b.year(),b.month())}},today:{text:'todayText',status:'todayStatus',keystroke:{keyCode:36,ctrlKey:true},enabled:function(a){var b=a.curMinDate();var c=a.get('maxDate');return(!b||a.get('calendar').today().compareTo(b)!=-1)&&(!c||a.get('calendar').today().compareTo(c)!=+1)},date:function(a){return a.get('calendar').today()},action:function(a){$.calendars.picker.showMonth(this)}},clear:{text:'clearText',status:'clearStatus',keystroke:{keyCode:35,ctrlKey:true},enabled:function(a){return true},date:function(a){return null},action:function(a){$.calendars.picker.clear(this)}},close:{text:'closeText',status:'closeStatus',keystroke:{keyCode:27},enabled:function(a){return true},date:function(a){return null},action:function(a){$.calendars.picker.hide(this)}},prevWeek:{text:'prevWeekText',status:'prevWeekStatus',keystroke:{keyCode:38,ctrlKey:true},enabled:function(a){var b=a.curMinDate();return(!b||a.drawDate.newDate().add(-a.get('calendar').daysInWeek(),'d').compareTo(b)!=-1)},date:function(a){return a.drawDate.newDate().add(-a.get('calendar').daysInWeek(),'d')},action:function(a){$.calendars.picker.changeDay(this,-a.get('calendar').daysInWeek())}},prevDay:{text:'prevDayText',status:'prevDayStatus',keystroke:{keyCode:37,ctrlKey:true},enabled:function(a){var b=a.curMinDate();return(!b||a.drawDate.newDate().add(-1,'d').compareTo(b)!=-1)},date:function(a){return a.drawDate.newDate().add(-1,'d')},action:function(a){$.calendars.picker.changeDay(this,-1)}},nextDay:{text:'nextDayText',status:'nextDayStatus',keystroke:{keyCode:39,ctrlKey:true},enabled:function(a){var b=a.get('maxDate');return(!b||a.drawDate.newDate().add(1,'d').compareTo(b)!=+1)},date:function(a){return a.drawDate.newDate().add(1,'d')},action:function(a){$.calendars.picker.changeDay(this,1)}},nextWeek:{text:'nextWeekText',status:'nextWeekStatus',keystroke:{keyCode:40,ctrlKey:true},enabled:function(a){var b=a.get('maxDate');return(!b||a.drawDate.newDate().add(a.get('calendar').daysInWeek(),'d').compareTo(b)!=+1)},date:function(a){return a.drawDate.newDate().add(a.get('calendar').daysInWeek(),'d')},action:function(a){$.calendars.picker.changeDay(this,a.get('calendar').daysInWeek())}}},defaultRenderer:{picker:'<div class="calendars">'+'<div class="calendars-nav">{link:prev}{link:today}{link:next}</div>{months}'+'{popup:start}<div class="calendars-ctrl">{link:clear}{link:close}</div>{popup:end}'+'<div class="calendars-clear-fix"></div></div>',monthRow:'<div class="calendars-month-row">{months}</div>',month:'<div class="calendars-month"><div class="calendars-month-header">{monthHeader}</div>'+'<table><thead>{weekHeader}</thead><tbody>{weeks}</tbody></table></div>',weekHeader:'<tr>{days}</tr>',dayHeader:'<th>{day}</th>',week:'<tr>{days}</tr>',day:'<td>{day}</td>',monthSelector:'.calendars-month',daySelector:'td',rtlClass:'calendars-rtl',multiClass:'calendars-multi',defaultClass:'',selectedClass:'calendars-selected',highlightedClass:'calendars-highlight',todayClass:'calendars-today',otherMonthClass:'calendars-other-month',weekendClass:'calendars-weekend',commandClass:'calendars-cmd',commandButtonClass:'',commandLinkClass:'',disabledClass:'calendars-disabled'},setDefaults:function(a){$.extend(this._defaults,a||{});return this},_attachPicker:function(c,d){c=$(c);if(c.hasClass(this.markerClass)){return}c.addClass(this.markerClass);var e={target:c,selectedDates:[],drawDate:null,pickingRange:false,inline:($.inArray(c[0].nodeName.toLowerCase(),['div','span'])>-1),get:function(a){var b=this.settings[a]!==undefined?this.settings[a]:$.calendars.picker._defaults[a];if($.inArray(a,['defaultDate','minDate','maxDate'])>-1){b=this.get('calendar').determineDate(b,null,this.selectedDates[0],this.get('dateFormat'),{dayNames:this.get('dayNames'),dayNamesShort:this.get('dayNamesShort'),monthNames:this.get('monthNames'),monthNamesShort:this.get('monthNamesShort'),shortYearCutoff:this.get('shortYearCutoff')})}else if(a=='dateFormat'){b=b||this.get('calendar').local.dateFormat}return b},curMinDate:function(){return(this.pickingRange?this.selectedDates[0]:this.get('minDate'))}};$.data(c[0],this.dataName,e);var f=($.fn.metadata?c.metadata():{});e.settings=$.extend({},d||{},f||{});if(e.inline){this._update(c[0]);if($.fn.mousewheel){c.mousewheel(this._doMouseWheel)}}else{this._attachments(c,e);c.bind('keydown.'+this.dataName,this._keyDown).bind('keypress.'+this.dataName,this._keyPress).bind('keyup.'+this.dataName,this._keyUp);if(c.attr('disabled')){this.disable(c[0])}}},options:function(a,b){var c=$.data(a,this.dataName);return(c?(b?(b=='all'?c.settings:c.settings[b]):$.calendars.picker._defaults):{})},option:function(b,c,d){b=$(b);if(!b.hasClass(this.markerClass)){return}c=c||{};if(typeof c=='string'){var e=c;c={};c[e]=d}var f=$.data(b[0],this.dataName);if(c.calendar&&c.calendar!=f.get('calendar')){var g=function(a){return(typeof f.settings[a]=='object'?null:f.settings[a])};c=$.extend({defaultDate:g('defaultDate'),minDate:g('minDate'),maxDate:g('maxDate')},c);f.selectedDates=[];f.drawDate=null}var h=f.selectedDates;extendRemove(f.settings,c);this.setDate(b[0],h,null,false,true);f.pickingRange=false;var i=f.get('calendar');f.drawDate=this._checkMinMax((c.defaultDate?f.get('defaultDate'):f.drawDate)||f.get('defaultDate')||i.today(),f).newDate();if(!f.inline){this._attachments(b,f)}if(f.inline||f.div){this._update(b[0])}},_attachments:function(a,b){a.unbind('focus.'+this.dataName);if(b.get('showOnFocus')){a.bind('focus.'+this.dataName,this.show)}if(b.trigger){b.trigger.remove()}var c=b.get('showTrigger');b.trigger=(!c?$([]):$(c).clone().addClass(this._triggerClass)[b.get('isRTL')?'insertBefore':'insertAfter'](a).click(function(){if(!$.calendars.picker.isDisabled(a[0])){$.calendars.picker[$.calendars.picker.curInst==b?'hide':'show'](a[0])}}));this._autoSize(a,b);var d=this._extractDates(b,a.val());if(d){this.setDate(a[0],d,null,true)}if(b.get('selectDefaultDate')&&b.get('defaultDate')&&b.selectedDates.length==0){var e=b.get('calendar');this.setDate(a[0],(b.get('defaultDate')||e.today()).newDate())}},_autoSize:function(d,e){if(e.get('autoSize')&&!e.inline){var f=e.get('calendar');var g=f.newDate(2009,10,20);var h=e.get('dateFormat');if(h.match(/[DM]/)){var j=function(a){var b=0;var c=0;for(var i=0;i<a.length;i++){if(a[i].length>b){b=a[i].length;c=i}}return c};g.month(j(f.local[h.match(/MM/)?'monthNames':'monthNamesShort'])+1);g.day(j(f.local[h.match(/DD/)?'dayNames':'dayNamesShort'])+20-g.dayOfWeek())}e.target.attr('size',g.formatDate(h).length)}},destroy:function(a){a=$(a);if(!a.hasClass(this.markerClass)){return}var b=$.data(a[0],this.dataName);if(b.trigger){b.trigger.remove()}a.removeClass(this.markerClass).empty().unbind('.'+this.dataName);if(b.inline&&$.fn.mousewheel){a.unmousewheel()}if(!b.inline&&b.get('autoSize')){a.removeAttr('size')}$.removeData(a[0],this.dataName)},multipleEvents:function(b){var c=arguments;return function(a){for(var i=0;i<c.length;i++){c[i].apply(this,arguments)}}},enable:function(b){var c=$(b);if(!c.hasClass(this.markerClass)){return}var d=$.data(b,this.dataName);if(d.inline)c.children('.'+this._disableClass).remove().end().find('button,select').attr('disabled','').end().find('a').attr('href','javascript:void(0)');else{b.disabled=false;d.trigger.filter('button.'+this._triggerClass).attr('disabled','').end().filter('img.'+this._triggerClass).css({opacity:'1.0',cursor:''})}this._disabled=$.map(this._disabled,function(a){return(a==b?null:a)})},disable:function(b){var c=$(b);if(!c.hasClass(this.markerClass))return;var d=$.data(b,this.dataName);if(d.inline){var e=c.children(':last');var f=e.offset();var g={left:0,top:0};e.parents().each(function(){if($(this).css('position')=='relative'){g=$(this).offset();return false}});var h=c.css('zIndex');h=(h=='auto'?0:parseInt(h,10))+1;c.prepend('<div class="'+this._disableClass+'" style="'+'width: '+e.outerWidth()+'px; height: '+e.outerHeight()+'px; left: '+(f.left-g.left)+'px; top: '+(f.top-g.top)+'px; z-index: '+h+'"></div>').find('button,select').attr('disabled','disabled').end().find('a').removeAttr('href')}else{b.disabled=true;d.trigger.filter('button.'+this._triggerClass).attr('disabled','disabled').end().filter('img.'+this._triggerClass).css({opacity:'0.5',cursor:'default'})}this._disabled=$.map(this._disabled,function(a){return(a==b?null:a)});this._disabled.push(b)},isDisabled:function(a){return(a&&$.inArray(a,this._disabled)>-1)},show:function(b){b=b.target||b;var c=$.data(b,$.calendars.picker.dataName);if($.calendars.picker.curInst==c){return}if($.calendars.picker.curInst){$.calendars.picker.hide($.calendars.picker.curInst,true)}if(c){c.lastVal=null;c.selectedDates=$.calendars.picker._extractDates(c,$(b).val());c.pickingRange=false;c.drawDate=$.calendars.picker._checkMinMax((c.selectedDates[0]||c.get('defaultDate')||c.get('calendar').today()).newDate(),c);$.calendars.picker.curInst=c;$.calendars.picker._update(b,true);var d=$.calendars.picker._checkOffset(c);c.div.css({left:d.left,top:d.top});var e=c.get('showAnim');var f=c.get('showSpeed');f=(f=='normal'&&$.ui&&$.ui.version>='1.8'?'_default':f);var g=function(){var a=$.calendars.picker._getBorders(c.div);c.div.find('.'+$.calendars.picker._coverClass).css({left:-a[0],top:-a[1],width:c.div.outerWidth()+a[0],height:c.div.outerHeight()+a[1]})};if($.effects&&$.effects[e]){c.div.show(e,c.get('showOptions'),f,g)}else{c.div[e||'show']((e?f:''),g)}if(!e){g()}}},_extractDates:function(a,b){if(b==a.lastVal){return}a.lastVal=b;var c=a.get('calendar');var d=a.get('dateFormat');var f=a.get('multiSelect');var g=a.get('rangeSelect');b=b.split(f?a.get('multiSeparator'):(g?a.get('rangeSeparator'):'\x00'));var h=[];for(var i=0;i<b.length;i++){try{var k=c.parseDate(d,b[i]);if(k){var l=false;for(var j=0;j<h.length;j++){if(h[j].compareTo(k)==0){l=true;break}}if(!l){h.push(k)}}}catch(e){}}h.splice(f||(g?2:1),h.length);if(g&&h.length==1){h[1]=h[0]}return h},_update:function(a,b){a=$(a.target||a);var c=$.data(a[0],$.calendars.picker.dataName);if(c){if(c.inline){a.html(this._generateContent(a[0],c))}else if($.calendars.picker.curInst==c){if(!c.div){c.div=$('<div></div>').addClass(this._popupClass).css({display:(b?'none':'static'),position:'absolute',left:a.offset().left,top:a.offset().top+a.outerHeight()}).appendTo($(c.get('popupContainer')||'body'));if($.fn.mousewheel){c.div.mousewheel(this._doMouseWheel)}}c.div.html(this._generateContent(a[0],c));a.focus()}if(c.inline||$.calendars.picker.curInst==c){var d=c.get('onChangeMonthYear');if(d&&(!c.prevDate||c.prevDate.year()!=c.drawDate.year()||c.prevDate.month()!=c.drawDate.month())){d.apply(a[0],[c.drawDate.year(),c.drawDate.month()])}}}},_updateInput:function(a,b){var c=$.data(a,this.dataName);if(c){var d='';var e='';var f=(c.get('multiSelect')?c.get('multiSeparator'):c.get('rangeSeparator'));var g=c.get('calendar');var h=c.get('dateFormat')||g.local.dateFormat;var j=c.get('altFormat')||h;for(var i=0;i<c.selectedDates.length;i++){d+=(b?'':(i>0?f:'')+g.formatDate(h,c.selectedDates[i]));e+=(i>0?f:'')+g.formatDate(j,c.selectedDates[i])}if(!c.inline&&!b){$(a).val(d)}$(c.get('altField')).val(e);var k=c.get('onSelect');if(k&&!b&&!c.inSelect){c.inSelect=true;k.apply(a,[c.selectedDates]);c.inSelect=false}}},_getBorders:function(c){var d=function(a){var b=($.browser.msie?1:0);return{thin:1+b,medium:3+b,thick:5+b}[a]||a};return[parseFloat(d(c.css('border-left-width'))),parseFloat(d(c.css('border-top-width')))]},_checkOffset:function(a){var b=(a.target.is(':hidden')&&a.trigger?a.trigger:a.target);var c=b.offset();var d=false;$(a.target).parents().each(function(){d|=$(this).css('position')=='fixed';return!d});if(d&&$.browser.opera){c.left-=document.documentElement.scrollLeft;c.top-=document.documentElement.scrollTop}var e=(!$.browser.mozilla||document.doctype?document.documentElement.clientWidth:0)||document.body.clientWidth;var f=(!$.browser.mozilla||document.doctype?document.documentElement.clientHeight:0)||document.body.clientHeight;if(e==0){return c}var g=a.get('alignment');var h=a.get('isRTL');var i=document.documentElement.scrollLeft||document.body.scrollLeft;var j=document.documentElement.scrollTop||document.body.scrollTop;var k=c.top-a.div.outerHeight()-(d&&$.browser.opera?document.documentElement.scrollTop:0);var l=c.top+b.outerHeight();var m=c.left;var n=c.left+b.outerWidth()-a.div.outerWidth()-(d&&$.browser.opera?document.documentElement.scrollLeft:0);var o=(c.left+a.div.outerWidth()-i)>e;var p=(c.top+a.target.outerHeight()+a.div.outerHeight()-j)>f;if(g=='topLeft'){c={left:m,top:k}}else if(g=='topRight'){c={left:n,top:k}}else if(g=='bottomLeft'){c={left:m,top:l}}else if(g=='bottomRight'){c={left:n,top:l}}else if(g=='top'){c={left:(h||o?n:m),top:k}}else{c={left:(h||o?n:m),top:(p?k:l)}}c.left=Math.max((d?0:i),c.left-(d?i:0));c.top=Math.max((d?0:j),c.top-(d?j:0));return c},_checkExternalClick:function(a){if(!$.calendars.picker.curInst){return}var b=$(a.target);if(!b.parents().andSelf().hasClass($.calendars.picker._popupClass)&&!b.hasClass($.calendars.picker.markerClass)&&!b.parents().andSelf().hasClass($.calendars.picker._triggerClass)){$.calendars.picker.hide($.calendars.picker.curInst)}},hide:function(b,c){var d=$.data(b,this.dataName)||b;if(d&&d==$.calendars.picker.curInst){var e=(c?'':d.get('showAnim'));var f=d.get('showSpeed');f=(f=='normal'&&$.ui&&$.ui.version>='1.8'?'_default':f);var g=function(){d.div.remove();d.div=null;$.calendars.picker.curInst=null;var a=d.get('onClose');if(a){a.apply(b,[d.selectedDates])}};d.div.stop();if($.effects&&$.effects[e]){d.div.hide(e,d.get('showOptions'),f,g)}else{var h=(e=='slideDown'?'slideUp':(e=='fadeIn'?'fadeOut':'hide'));d.div[h]((e?f:''),g)}if(!e){g()}}},_keyDown:function(a){var b=a.target;var c=$.data(b,$.calendars.picker.dataName);var d=false;if(c.div){if(a.keyCode==9){$.calendars.picker.hide(b)}else if(a.keyCode==13){$.calendars.picker.selectDate(b,$('a.'+c.get('renderer').highlightedClass,c.div)[0]);d=true}else{var e=c.get('commands');for(var f in e){var g=e[f];if(g.keystroke.keyCode==a.keyCode&&!!g.keystroke.ctrlKey==!!(a.ctrlKey||a.metaKey)&&!!g.keystroke.altKey==a.altKey&&!!g.keystroke.shiftKey==a.shiftKey){$.calendars.picker.performAction(b,f);d=true;break}}}}else{var g=c.get('commands').current;if(g.keystroke.keyCode==a.keyCode&&!!g.keystroke.ctrlKey==!!(a.ctrlKey||a.metaKey)&&!!g.keystroke.altKey==a.altKey&&!!g.keystroke.shiftKey==a.shiftKey){$.calendars.picker.show(b);d=true}}c.ctrlKey=((a.keyCode<48&&a.keyCode!=32)||a.ctrlKey||a.metaKey);if(d){a.preventDefault();a.stopPropagation()}return!d},_keyPress:function(a){var b=a.target;var c=$.data(b,$.calendars.picker.dataName);if(c&&c.get('constrainInput')){var d=String.fromCharCode(a.keyCode||a.charCode);var e=$.calendars.picker._allowedChars(c);return(a.metaKey||c.ctrlKey||d<' '||!e||e.indexOf(d)>-1)}return true},_allowedChars:function(a){var b=a.get('dateFormat');var c=(a.get('multiSelect')?a.get('multiSeparator'):(a.get('rangeSelect')?a.get('rangeSeparator'):''));var d=false;var e=false;for(var i=0;i<b.length;i++){var f=b.charAt(i);if(d){if(f=="'"&&b.charAt(i+1)!="'"){d=false}else{c+=f}}else{switch(f){case'd':case'm':case'o':case'w':c+=(e?'':'0123456789');e=true;break;case'y':case'@':case'!':c+=(e?'':'0123456789')+'-';e=true;break;case'J':c+=(e?'':'0123456789')+'-.';e=true;break;case'D':case'M':case'Y':return null;case"'":if(b.charAt(i+1)=="'"){c+="'"}else{d=true}break;default:c+=f}}}return c},_keyUp:function(a){var b=a.target;var c=$.data(b,$.calendars.picker.dataName);if(c&&!c.ctrlKey&&c.lastVal!=c.target.val()){try{var d=$.calendars.picker._extractDates(c,c.target.val());if(d.length>0){$.calendars.picker.setDate(b,d,null,true)}}catch(a){}}return true},_doMouseWheel:function(a,b){var c=($.calendars.picker.curInst&&$.calendars.picker.curInst.target[0])||$(a.target).closest('.'+$.calendars.picker.markerClass)[0];if($.calendars.picker.isDisabled(c)){return}var d=$.data(c,$.calendars.picker.dataName);if(d.get('useMouseWheel')){b=($.browser.opera?-b:b);b=(b<0?-1:+1);$.calendars.picker.changeMonth(c,-d.get(a.ctrlKey?'monthsToJump':'monthsToStep')*b)}a.preventDefault()},clear:function(a){var b=$.data(a,this.dataName);if(b){b.selectedDates=[];this.hide(a);if(b.get('selectDefaultDate')&&b.get('defaultDate')){var c=b.get('calendar');this.setDate(a,(b.get('defaultDate')||c.today()).newDate())}else{this._updateInput(a)}}},getDate:function(a){var b=$.data(a,this.dataName);return(b?b.selectedDates:[])},setDate:function(a,b,c,d,e){var f=$.data(a,this.dataName);if(f){if(!$.isArray(b)){b=[b];if(c){b.push(c)}}var g=f.get('calendar');var h=f.get('dateFormat');var k=f.get('minDate');var l=f.get('maxDate');var m=f.selectedDates[0];f.selectedDates=[];for(var i=0;i<b.length;i++){var n=g.determineDate(b[i],null,m,h);if(n){if((!k||n.compareTo(k)!=-1)&&(!l||n.compareTo(l)!=+1)){var o=false;for(var j=0;j<f.selectedDates.length;j++){if(f.selectedDates[j].compareTo(n)==0){o=true;break}}if(!o){f.selectedDates.push(n)}}}}var p=f.get('rangeSelect');f.selectedDates.splice(f.get('multiSelect')||(p?2:1),f.selectedDates.length);if(p){switch(f.selectedDates.length){case 1:f.selectedDates[1]=f.selectedDates[0];break;case 2:f.selectedDates[1]=(f.selectedDates[0].compareTo(f.selectedDates[1])==+1?f.selectedDates[0]:f.selectedDates[1]);break}f.pickingRange=false}f.prevDate=(f.drawDate?f.drawDate.newDate():null);f.drawDate=this._checkMinMax((f.selectedDates[0]||f.get('defaultDate')||g.today()).newDate(),f);if(!e){this._update(a);this._updateInput(a,d)}}},isSelectable:function(a,b){var c=$.data(a,this.dataName);if(!c){return false}b=$.calendars.picker.determineDate(b,c.selectedDates[0]||c.get('calendar').today(),null,c.get('dateFormat'),c.getConfig());return this._isSelectable(a,b,c.get('onDate'),c.get('minDate'),c.get('maxDate'))},_isSelectable:function(a,b,c,d,e){var f=(typeof c=='boolean'?{selectable:c}:(!c?{}:c.apply(a,[b,true])));return(f.selectable!=false)&&(!d||b.toJD()>=d.toJD())&&(!e||b.toJD()<=e.toJD())},performAction:function(a,b){var c=$.data(a,this.dataName);if(c&&!this.isDisabled(a)){var d=c.get('commands');if(d[b]&&d[b].enabled.apply(a,[c])){d[b].action.apply(a,[c])}}},showMonth:function(a,b,c,d){var e=$.data(a,this.dataName);if(e&&(d!=null||(e.drawDate.year()!=b||e.drawDate.month()!=c))){e.prevDate=e.drawDate.newDate();var f=e.get('calendar');var g=this._checkMinMax((b!=null?f.newDate(b,c,1):f.today()),e);e.drawDate.date(g.year(),g.month(),(d!=null?d:Math.min(e.drawDate.day(),f.daysInMonth(g.year(),g.month()))));this._update(a)}},changeMonth:function(a,b){var c=$.data(a,this.dataName);if(c){var d=c.drawDate.newDate().add(b,'m');this.showMonth(a,d.year(),d.month())}},changeDay:function(a,b){var c=$.data(a,this.dataName);if(c){var d=c.drawDate.newDate().add(b,'d');this.showMonth(a,d.year(),d.month(),d.day())}},_checkMinMax:function(a,b){var c=b.get('minDate');var d=b.get('maxDate');a=(c&&a.compareTo(c)==-1?c.newDate():a);a=(d&&a.compareTo(d)==+1?d.newDate():a);return a},retrieveDate:function(a,b){var c=$.data(a,this.dataName);return(!c?null:c.get('calendar').fromJD(parseFloat(b.className.replace(/^.*jd(\d+\.5).*$/,'$1'))))},selectDate:function(a,b){var c=$.data(a,this.dataName);if(c&&!this.isDisabled(a)){var d=this.retrieveDate(a,b);var e=c.get('multiSelect');var f=c.get('rangeSelect');if(e){var g=false;for(var i=0;i<c.selectedDates.length;i++){if(d.compareTo(c.selectedDates[i])==0){c.selectedDates.splice(i,1);g=true;break}}if(!g&&c.selectedDates.length<e){c.selectedDates.push(d)}}else if(f){if(c.pickingRange){c.selectedDates[1]=d}else{c.selectedDates=[d,d]}c.pickingRange=!c.pickingRange}else{c.selectedDates=[d]}this._updateInput(a);if(c.inline||c.pickingRange||c.selectedDates.length<(e||(f?2:1))){this._update(a)}else{this.hide(a)}}},_generateContent:function(h,i){var j=i.get('calendar');var k=i.get('renderer');var l=i.get('monthsToShow');l=($.isArray(l)?l:[1,l]);i.drawDate=this._checkMinMax(i.drawDate||i.get('defaultDate')||j.today(),i);var m=i.drawDate.newDate().add(-i.get('monthsOffset'),'m');var n='';for(var o=0;o<l[0];o++){var p='';for(var q=0;q<l[1];q++){p+=this._generateMonth(h,i,m.year(),m.month(),j,k,(o==0&&q==0));m.add(1,'m')}n+=this._prepare(k.monthRow,i).replace(/\{months\}/,p)}var r=this._prepare(k.picker,i).replace(/\{months\}/,n).replace(/\{weekHeader\}/g,this._generateDayHeaders(i,j,k))+($.browser.msie&&parseInt($.browser.version,10)<7&&!i.inline?'<iframe src="javascript:void(0);" class="'+this._coverClass+'"></iframe>':'');var s=i.get('commands');var t=i.get('commandsAsDateFormat');var u=function(a,b,c,d,e){if(r.indexOf('{'+a+':'+d+'}')==-1){return}var f=s[d];var g=(t?f.date.apply(h,[i]):null);r=r.replace(new RegExp('\\{'+a+':'+d+'\\}','g'),'<'+b+(f.status?' title="'+i.get(f.status)+'"':'')+' class="'+k.commandClass+' '+k.commandClass+'-'+d+' '+e+(f.enabled(i)?'':' '+k.disabledClass)+'">'+(g?g.formatDate(i.get(f.text)):i.get(f.text))+'</'+c+'>')};for(var v in s){u('button','button type="button"','button',v,k.commandButtonClass);u('link','a href="javascript:void(0)"','a',v,k.commandLinkClass)}r=$(r);if(l[1]>1){var w=0;$(k.monthSelector,r).each(function(){var a=++w%l[1];$(this).addClass(a==1?'first':(a==0?'last':''))})}var x=this;r.find(k.daySelector+' a').hover(function(){$(this).addClass(k.highlightedClass)},function(){(i.inline?$(this).parents('.'+x.markerClass):i.div).find(k.daySelector+' a').removeClass(k.highlightedClass)}).click(function(){x.selectDate(h,this)}).end().find('select.'+this._monthYearClass+':not(.'+this._anyYearClass+')').change(function(){var a=$(this).val().split('/');x.showMonth(h,parseInt(a[1],10),parseInt(a[0],10))}).end().find('select.'+this._anyYearClass).click(function(){$(this).next('input').css({left:this.offsetLeft,top:this.offsetTop,width:this.offsetWidth,height:this.offsetHeight}).show().focus()}).end().find('input.'+x._monthYearClass).change(function(){try{var a=parseInt($(this).val(),10);a=(isNaN(a)?i.drawDate.year():a);x.showMonth(h,a,i.drawDate.month(),i.drawDate.day())}catch(e){alert(e)}}).keydown(function(a){if(a.keyCode==27){$(a.target).hide();i.target.focus()}});r.find('.'+k.commandClass).click(function(){if(!$(this).hasClass(k.disabledClass)){var a=this.className.replace(new RegExp('^.*'+k.commandClass+'-([^ ]+).*$'),'$1');$.calendars.picker.performAction(h,a)}});if(i.get('isRTL')){r.addClass(k.rtlClass)}if(l[0]*l[1]>1){r.addClass(k.multiClass)}var y=i.get('pickerClass');if(y){r.addClass(y)}$('body').append(r);var z=0;r.find(k.monthSelector).each(function(){z+=$(this).outerWidth()});r.width(z/l[0]);var A=i.get('onShow');if(A){A.apply(h,[r,j,i])}return r},_generateMonth:function(a,b,c,d,e,f,g){var h=e.daysInMonth(c,d);var j=b.get('monthsToShow');j=($.isArray(j)?j:[1,j]);var k=b.get('fixedWeeks')||(j[0]*j[1]>1);var l=b.get('firstDay');l=(l==null?e.local.firstDay:l);var m=(e.dayOfWeek(c,d,e.minDay)-l+e.daysInWeek())%e.daysInWeek();var n=(k?6:Math.ceil((m+h)/e.daysInWeek()));var o=b.get('showOtherMonths');var p=b.get('selectOtherMonths')&&o;var q=b.get('dayStatus');var r=(b.pickingRange?b.selectedDates[0]:b.get('minDate'));var s=b.get('maxDate');var t=b.get('rangeSelect');var u=b.get('onDate');var v=f.week.indexOf('{weekOfYear}')>-1;var w=b.get('calculateWeek');var x=e.today();var y=e.newDate(c,d,e.minDay);y.add(-m-(k&&(y.dayOfWeek()==l||y.daysInMonth()<e.daysInWeek())?e.daysInWeek():0),'d');var z=y.toJD();var A='';for(var B=0;B<n;B++){var C=(!v?'':'<span class="jd'+z+'">'+(w?w(y):y.weekOfYear())+'</span>');var D='';for(var E=0;E<e.daysInWeek();E++){var F=false;if(t&&b.selectedDates.length>0){F=(y.compareTo(b.selectedDates[0])!=-1&&y.compareTo(b.selectedDates[1])!=+1)}else{for(var i=0;i<b.selectedDates.length;i++){if(b.selectedDates[i].compareTo(y)==0){F=true;break}}}var G=(!u?{}:u.apply(a,[y,y.month()==d]));var H=(p||y.month()==d)&&this._isSelectable(a,y,G.selectable,r,s);D+=this._prepare(f.day,b).replace(/\{day\}/g,(H?'<a href="javascript:void(0)"':'<span')+' class="jd'+z+' '+(G.dateClass||'')+(F&&(p||y.month()==d)?' '+f.selectedClass:'')+(H?' '+f.defaultClass:'')+(y.weekDay()?'':' '+f.weekendClass)+(y.month()==d?'':' '+f.otherMonthClass)+(y.compareTo(x)==0&&y.month()==d?' '+f.todayClass:'')+(y.compareTo(b.drawDate)==0&&y.month()==d?' '+f.highlightedClass:'')+'"'+(G.title||(q&&H)?' title="'+(G.title||y.formatDate(q))+'"':'')+'>'+(o||y.month()==d?G.content||y.day():'&nbsp;')+(H?'</a>':'</span>'));y.add(1,'d');z++}A+=this._prepare(f.week,b).replace(/\{days\}/g,D).replace(/\{weekOfYear\}/g,C)}var I=this._prepare(f.month,b).match(/\{monthHeader(:[^\}]+)?\}/);I=(I[0].length<=13?'MM yyyy':I[0].substring(13,I[0].length-1));I=(g?this._generateMonthSelection(b,c,d,r,s,I,e,f):e.formatDate(I,e.newDate(c,d,e.minDay)));var J=this._prepare(f.weekHeader,b).replace(/\{days\}/g,this._generateDayHeaders(b,e,f));return this._prepare(f.month,b).replace(/\{monthHeader(:[^\}]+)?\}/g,I).replace(/\{weekHeader\}/g,J).replace(/\{weeks\}/g,A)},_generateDayHeaders:function(a,b,c){var d=a.get('firstDay');d=(d==null?b.local.firstDay:d);var e='';for(var f=0;f<b.daysInWeek();f++){var g=(f+d)%b.daysInWeek();e+=this._prepare(c.dayHeader,a).replace(/\{day\}/g,'<span class="'+this._curDoWClass+g+'" title="'+b.local.dayNames[g]+'">'+b.local.dayNamesMin[g]+'</span>')}return e},_generateMonthSelection:function(a,b,c,d,e,f,g){if(!a.get('changeMonth')){return g.formatDate(f,g.newDate(b,c,1))}var h=g.local['monthNames'+(f.match(/mm/i)?'':'Short')];var i=f.replace(/m+/i,'\\x2E').replace(/y+/i,'\\x2F');var j='<select class="'+this._monthYearClass+'" title="'+a.get('monthStatus')+'">';var k=g.monthsInYear(b)+g.minMonth;for(var m=g.minMonth;m<k;m++){if((!d||g.newDate(b,m,g.daysInMonth(b,m)-1+g.minDay).compareTo(d)!=-1)&&(!e||g.newDate(b,m,g.minDay).compareTo(e)!=+1)){j+='<option value="'+m+'/'+b+'"'+(c==m?' selected="selected"':'')+'>'+h[m-g.minMonth]+'</option>'}}j+='</select>';i=i.replace(/\\x2E/,j);var l=a.get('yearRange');if(l=='any'){j='<select class="'+this._monthYearClass+' '+this._anyYearClass+'" title="'+a.get('yearStatus')+'">'+'<option>'+b+'</option></select>'+'<input class="'+this._monthYearClass+' '+this._curMonthClass+c+'" value="'+b+'">'}else{l=l.split(':');var n=g.today().year();var o=(l[0].match('c[+-].*')?b+parseInt(l[0].substring(1),10):((l[0].match('[+-].*')?n:0)+parseInt(l[0],10)));var p=(l[1].match('c[+-].*')?b+parseInt(l[1].substring(1),10):((l[1].match('[+-].*')?n:0)+parseInt(l[1],10)));j='<select class="'+this._monthYearClass+'" title="'+a.get('yearStatus')+'">';o=g.newDate(o+1,g.firstMonth,g.minDay).add(-1,'d');p=g.newDate(p,g.firstMonth,g.minDay);var q=function(y){if(y!=0||g.hasYearZero){j+='<option value="'+Math.min(c,g.monthsInYear(y)-1+g.minMonth)+'/'+y+'"'+(b==y?' selected="selected"':'')+'>'+y+'</option>'}};if(o.toJD()<p.toJD()){o=(d&&d.compareTo(o)==+1?d:o).year();p=(e&&e.compareTo(p)==-1?e:p).year();for(var y=o;y<=p;y++){q(y)}}else{o=(e&&e.compareTo(o)==-1?e:o).year();p=(d&&d.compareTo(p)==+1?d:p).year();for(var y=o;y>=p;y--){q(y)}}j+='</select>'}i=i.replace(/\\x2F/,j);return i},_prepare:function(e,f){var g=function(a,b){while(true){var c=e.indexOf('{'+a+':start}');if(c==-1){return}var d=e.substring(c).indexOf('{'+a+':end}');if(d>-1){e=e.substring(0,c)+(b?e.substr(c+a.length+8,d-a.length-8):'')+e.substring(c+d+a.length+6)}}};g('inline',f.inline);g('popup',!f.inline);var h=/\{l10n:([^\}]+)\}/;var i=null;while(i=h.exec(e)){e=e.replace(i[0],f.get(i[1]))}return e}});function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a};$.fn.calendarsPicker=function(a){var b=Array.prototype.slice.call(arguments,1);if($.inArray(a,['getDate','isDisabled','isSelectable','options','retrieveDate'])>-1){return $.calendars.picker[a].apply($.calendars.picker,[this[0]].concat(b))}return this.each(function(){if(typeof a=='string'){$.calendars.picker[a].apply($.calendars.picker,[this].concat(b))}else{$.calendars.picker._attachPicker(this,a||{})}})};$.calendars.picker=new CalendarsPicker();$(function(){$(document).mousedown($.calendars.picker._checkExternalClick).resize(function(){$.calendars.picker.hide($.calendars.picker.curInst)})})})(jQuery);
