// (c) 2010 CodePlex Foundation (function(){function n(){Type.registerNamespace("Sys.Extended.UI");Sys.Extended.UI.CalendarBehavior=function(n){Sys.Extended.UI.CalendarBehavior.initializeBase(this,[n]);this._textbox=Sys.Extended.UI.TextBoxWrapper.get_Wrapper(n);this._format="d";this._todaysDateFormat="MMMM d, yyyy";this._daysModeTitleFormat="MMMM, yyyy";this._cssClass="ajax__calendar";this._enabled=!0;this._animated=!0;this._buttonID=null;this._layoutRequested=0;this._layoutSuspended=!1;this._button=null;this._popupMouseDown=!1;this._selectedDate=null;this._startDate=null;this._endDate=null;this._visibleDate=null;this._todaysDate=null;this._firstDayOfWeek=Sys.Extended.UI.FirstDayOfWeek.Default;this._firstPopUp=!0;this._container=null;this._popupDiv=null;this._header=null;this._prevArrow=null;this._nextArrow=null;this._title=null;this._body=null;this._today=null;this._days=null;this._daysTable=null;this._daysTableHeader=null;this._daysTableHeaderRow=null;this._daysBody=null;this._months=null;this._monthsTable=null;this._monthsBody=null;this._years=null;this._yearsTable=null;this._yearsBody=null;this._popupPosition=Sys.Extended.UI.CalendarPosition.BottomLeft;this._defaultView=Sys.Extended.UI.CalendarDefaultView.Days;this._popupBehavior=null;this._modeChangeAnimation=null;this._modeChangeMoveTopOrLeftAnimation=null;this._modeChangeMoveBottomOrRightAnimation=null;this._mode="days";this._selectedDateChanging=!1;this._isOpen=!1;this._isAnimating=!1;this._clearTime=!1;this._width=170;this._height=139;this._modes={days:null,months:null,years:null};this._modeOrder={days:0,months:1,years:2};this._blur=new Sys.Extended.UI.DeferredOperation(1,this,this.blur);this._button$delegates={click:Function.createDelegate(this,this._button_onclick),keypress:Function.createDelegate(this,this._button_onkeypress),blur:Function.createDelegate(this,this._button_onblur)};this._element$delegates={change:Function.createDelegate(this,this._element_onchange),keypress:Function.createDelegate(this,this._element_onkeypress),click:Function.createDelegate(this,this._element_onclick),focus:Function.createDelegate(this,this._element_onfocus),blur:Function.createDelegate(this,this._element_onblur)};this._popup$delegates={mousedown:Function.createDelegate(this,this._popup_onmousedown),mouseup:Function.createDelegate(this,this._popup_onmouseup),drag:Function.createDelegate(this,this._popup_onevent),dragstart:Function.createDelegate(this,this._popup_onevent)};this._cell$delegates={mouseover:Function.createDelegate(this,this._cell_onmouseover),mouseout:Function.createDelegate(this,this._cell_onmouseout),click:Function.createDelegate(this,this._cell_onclick)}};Sys.Extended.UI.CalendarBehavior.prototype={get_clearTime:function(){return this._clearTime},set_clearTime:function(n){this._clearTime!=n&&(this._clearTime=n,this.raisePropertyChanged("_clearTime"))},get_animated:function(){return this._animated},set_animated:function(n){this._animated!=n&&(this._animated=n,this.raisePropertyChanged("animated"))},get_enabled:function(){return this._enabled},set_enabled:function(n){this._enabled!=n&&(this._enabled=n,this.raisePropertyChanged("enabled"))},get_button:function(){return this._button},set_button:function(n){this._button!=n&&(this._button&&this.get_isInitialized()&&$common.removeHandlers(this._button,this._button$delegates),this._button=n,this._button&&this.get_isInitialized()&&$addHandlers(this._button,this._button$delegates),this.raisePropertyChanged("button"))},get_popupPosition:function(){return this._popupPosition},set_popupPosition:function(n){this._popupPosition!=n&&(this._popupPosition=n,this.raisePropertyChanged("popupPosition"))},set_startDate:function(n){this._startDate!=n&&(this._startDate=new Date(n),this.raisePropertyChanged("startDate"))},get_startDate:function(){return this._startDate},set_endDate:function(n){this._endDate!=n&&(this._endDate=new Date(n),this.raisePropertyChanged("_endDate"))},get_endDate:function(){return this._endDate},get_format:function(){return this._format},set_format:function(n){this._format!=n&&(this._format=n,this.raisePropertyChanged("format"))},get_todaysDateFormat:function(){return this._todaysDateFormat},set_todaysDateFormat:function(n){this._todaysDateFormat!=n&&(this._todaysDateFormat=n,this.raisePropertyChanged("todaysDateFormat"))},get_daysModeTitleFormat:function(){return this._daysModeTitleFormat},set_daysModeTitleFormat:function(n){this._daysModeTitleFormat!=n&&(this._daysModeTitleFormat=n,this.raisePropertyChanged("daysModeTitleFormat"))},get_selectedDate:function(){if(this._selectedDate==null){var n=this._textbox.get_Value();n&&(n=this._parseTextValue(n),n&&(this._selectedDate=n))}return this._selectedDate},set_selectedDate:function(n){var i,t;n&&String.isInstanceOfType(n)&&n.length!=0&&(n=new Date(n));this._selectedDate!=n&&(this._selectedDate=n,this._selectedDateChanging=!0,i="",n&&(i=this._convertToLocal(n).localeFormat(this._format),this._clearTime||(t=this._textbox.get_Value(),t&&(t=this._parseTextValue(t)),t&&n!=t.getDateOnly()&&(n.setUTCHours(t.getUTCHours()),n.setUTCMinutes(t.getUTCMinutes()),n.setUTCMilliseconds(t.getUTCMilliseconds()),i=this._convertToLocal(n).localeFormat(this._format)))),i!=this._textbox.get_Value()&&(this._textbox.set_Value(i),this._fireChanged()),this._selectedDateChanging=!1,this.invalidate(),this.raisePropertyChanged("selectedDate"))},get_defaultView:function(){return this._defaultView},set_defaultView:function(n){this._defaultView!=n&&(this._defaultView=n,this.raisePropertyChanged("defaultView"))},get_visibleDate:function(){return this._visibleDate},set_visibleDate:function(n){n&&String.isInstanceOfType(n)&&n.length!=0&&(n=new Date(n));this._visibleDate!=n&&(this._switchMonth(n,!this._isOpen),this.raisePropertyChanged("visibleDate"))},get_isOpen:function(){return this._isOpen},get_todaysDate:function(){return this._todaysDate!=null?this._todaysDate:new Date},set_todaysDate:function(n){this._todaysDate!=n&&(this._todaysDate=n,this.invalidate(),this.raisePropertyChanged("todaysDate"))},get_firstDayOfWeek:function(){return this._firstDayOfWeek},set_firstDayOfWeek:function(n){this._firstDayOfWeek!=n&&(this._firstDayOfWeek=n,this.invalidate(),this.raisePropertyChanged("firstDayOfWeek"))},get_cssClass:function(){return this._cssClass},set_cssClass:function(n){this._cssClass!=n&&(this._cssClass&&this.get_isInitialized()&&Sys.UI.DomElement.removeCssClass(this._container,this._cssClass),this._cssClass=n,this._cssClass&&this.get_isInitialized()&&Sys.UI.DomElement.addCssClass(this._container,this._cssClass),this.raisePropertyChanged("cssClass"))},get_todayButton:function(){return this._today},get_dayCell:function(n,t){return this._daysBody?this._daysBody.rows[n].cells[t].firstChild:null},add_showing:function(n){this.get_events().addHandler("showing",n)},remove_showing:function(n){this.get_events().removeHandler("showing",n)},raiseShowing:function(n){var t=this.get_events().getHandler("showing");t&&t(this,n)},add_shown:function(n){this.get_events().addHandler("shown",n)},remove_shown:function(n){this.get_events().removeHandler("shown",n)},raiseShown:function(){var n=this.get_events().getHandler("shown");n&&n(this,Sys.EventArgs.Empty)},add_hiding:function(n){this.get_events().addHandler("hiding",n)},remove_hiding:function(n){this.get_events().removeHandler("hiding",n)},raiseHiding:function(n){var t=this.get_events().getHandler("hiding");t&&t(this,n)},add_hidden:function(n){this.get_events().addHandler("hidden",n)},remove_hidden:function(n){this.get_events().removeHandler("hidden",n)},raiseHidden:function(){var n=this.get_events().getHandler("hidden");n&&n(this,Sys.EventArgs.Empty)},add_dateSelectionChanged:function(n){this.get_events().addHandler("dateSelectionChanged",n)},remove_dateSelectionChanged:function(n){this.get_events().removeHandler("dateSelectionChanged",n)},raiseDateSelectionChanged:function(){var n=this.get_events().getHandler("dateSelectionChanged");n&&n(this,Sys.EventArgs.Empty)},initialize:function(){var t,n;Sys.Extended.UI.CalendarBehavior.callBaseMethod(this,"initialize");t=this.get_element();$addHandlers(t,this._element$delegates);this._button&&$addHandlers(this._button,this._button$delegates);this._modeChangeMoveTopOrLeftAnimation=new Sys.Extended.UI.Animation.LengthAnimation(null,null,null,"style",null,0,0,"px");this._modeChangeMoveBottomOrRightAnimation=new Sys.Extended.UI.Animation.LengthAnimation(null,null,null,"style",null,0,0,"px");this._modeChangeAnimation=new Sys.Extended.UI.Animation.ParallelAnimation(null,.25,null,[this._modeChangeMoveTopOrLeftAnimation,this._modeChangeMoveBottomOrRightAnimation]);n=this.get_selectedDate();n&&this.set_selectedDate(n)},dispose:function(){var n,i,t,r;if(this._popupBehavior&&(this._popupBehavior.dispose(),this._popupBehavior=null),this._modes=null,this._modeOrder=null,this._modeChangeMoveTopOrLeftAnimation&&(this._modeChangeMoveTopOrLeftAnimation.dispose(),this._modeChangeMoveTopOrLeftAnimation=null),this._modeChangeMoveBottomOrRightAnimation&&(this._modeChangeMoveBottomOrRightAnimation.dispose(),this._modeChangeMoveBottomOrRightAnimation=null),this._modeChangeAnimation&&(this._modeChangeAnimation.dispose(),this._modeChangeAnimation=null),this._container&&(this._container.parentNode&&this._container.parentNode.removeChild(this._container),this._container=null),this._popupDiv&&($common.removeHandlers(this._popupDiv,this._popup$delegates),this._popupDiv=null),this._prevArrow&&($common.removeHandlers(this._prevArrow,this._cell$delegates),this._prevArrow=null),this._nextArrow&&($common.removeHandlers(this._nextArrow,this._cell$delegates),this._nextArrow=null),this._title&&($common.removeHandlers(this._title,this._cell$delegates),this._title=null),this._today&&($common.removeHandlers(this._today,this._cell$delegates),this._today=null),this._button&&($common.removeHandlers(this._button,this._button$delegates),this._button=null),this._daysBody){for(n=0;n0?this._layoutRequested=!0:this._performLayout()},_buildCalendar:function(){var t=this.get_element(),n=this.get_id();this._container=$common.createElementFromTemplate({nodeName:"div",properties:{id:n+"_container"},cssClasses:[this._cssClass],visible:!1},t.parentNode);this._popupDiv=$common.createElementFromTemplate({nodeName:"div",events:this._popup$delegates,properties:{id:n+"_popupDiv"},cssClasses:["ajax__calendar_container"]},this._container)},_buildHeader:function(){var n=this.get_id(),t,i,r;this._header=$common.createElementFromTemplate({nodeName:"div",properties:{id:n+"_header"},cssClasses:["ajax__calendar_header"]},this._popupDiv);t=$common.createElementFromTemplate({nodeName:"div"},this._header);this._prevArrow=$common.createElementFromTemplate({nodeName:"div",properties:{id:n+"_prevArrow",mode:"prev"},events:this._cell$delegates,cssClasses:["ajax__calendar_prev"]},t);i=$common.createElementFromTemplate({nodeName:"div"},this._header);this._nextArrow=$common.createElementFromTemplate({nodeName:"div",properties:{id:n+"_nextArrow",mode:"next"},events:this._cell$delegates,cssClasses:["ajax__calendar_next"]},i);r=$common.createElementFromTemplate({nodeName:"div"},this._header);this._title=$common.createElementFromTemplate({nodeName:"div",properties:{id:n+"_title",mode:"title"},events:this._cell$delegates,cssClasses:["ajax__calendar_title"]},r)},_buildBody:function(){this._body=$common.createElementFromTemplate({nodeName:"div",properties:{id:this.get_id()+"_body"},cssClasses:["ajax__calendar_body"]},this._popupDiv);this._buildDays();this._buildMonths();this._buildYears()},_buildFooter:function(){var n=$common.createElementFromTemplate({nodeName:"div"},this._popupDiv);this._today=$common.createElementFromTemplate({nodeName:"div",properties:{id:this.get_id()+"_today",mode:"today"},events:this._cell$delegates,cssClasses:["ajax__calendar_footer","ajax__calendar_today"]},n)},_buildDays:function(){var e=Sys.CultureInfo.CurrentCulture.dateTimeFormat,t=this.get_id(),n,f,r,i,u;for(this._days=$common.createElementFromTemplate({nodeName:"div",properties:{id:t+"_days"},cssClasses:["ajax__calendar_days"]},this._body),this._modes.days=this._days,this._daysTable=$common.createElementFromTemplate({nodeName:"table",properties:{id:t+"_daysTable",cellPadding:0,cellSpacing:0,border:0,style:{margin:"auto"}}},this._days),this._daysTableHeader=$common.createElementFromTemplate({nodeName:"thead",properties:{id:t+"_daysTableHeader"}},this._daysTable),this._daysTableHeaderRow=$common.createElementFromTemplate({nodeName:"tr",properties:{id:t+"_daysTableHeaderRow"}},this._daysTableHeader),n=0;n<7;n++)i=$common.createElementFromTemplate({nodeName:"td"},this._daysTableHeaderRow),u=$common.createElementFromTemplate({nodeName:"div",cssClasses:["ajax__calendar_dayname"]},i);for(this._daysBody=$common.createElementFromTemplate({nodeName:"tbody",properties:{id:t+"_daysBody"}},this._daysTable),n=0;n<6;n++)for(f=$common.createElementFromTemplate({nodeName:"tr"},this._daysBody),r=0;r<7;r++)i=$common.createElementFromTemplate({nodeName:"td"},f),u=$common.createElementFromTemplate({nodeName:"div",properties:{mode:"day",id:t+"_day_"+n+"_"+r,innerHTML:" "},events:this._cell$delegates,cssClasses:["ajax__calendar_day"]},i)},_buildMonths:function(){var f=Sys.CultureInfo.CurrentCulture.dateTimeFormat,i=this.get_id(),n,r,t,u,e;for(this._months=$common.createElementFromTemplate({nodeName:"div",properties:{id:i+"_months"},cssClasses:["ajax__calendar_months"],visible:!1},this._body),this._modes.months=this._months,this._monthsTable=$common.createElementFromTemplate({nodeName:"table",properties:{id:i+"_monthsTable",cellPadding:0,cellSpacing:0,border:0,style:{margin:"auto"}}},this._months),this._monthsBody=$common.createElementFromTemplate({nodeName:"tbody",properties:{id:i+"_monthsBody"}},this._monthsTable),n=0;n<3;n++)for(r=$common.createElementFromTemplate({nodeName:"tr"},this._monthsBody),t=0;t<4;t++)u=$common.createElementFromTemplate({nodeName:"td"},r),e=$common.createElementFromTemplate({nodeName:"div",properties:{id:i+"_month_"+n+"_"+t,mode:"month",month:n*4+t,innerHTML:"
"+f.AbbreviatedMonthNames[n*4+t]},events:this._cell$delegates,cssClasses:["ajax__calendar_month"]},u)},_buildYears:function(){var i=this.get_id(),n,r,t,u,f;for(this._years=$common.createElementFromTemplate({nodeName:"div",properties:{id:i+"_years"},cssClasses:["ajax__calendar_years"],visible:!1},this._body),this._modes.years=this._years,this._yearsTable=$common.createElementFromTemplate({nodeName:"table",properties:{id:i+"_yearsTable",cellPadding:0,cellSpacing:0,border:0,style:{margin:"auto"}}},this._years),this._yearsBody=$common.createElementFromTemplate({nodeName:"tbody",properties:{id:i+"_yearsBody"}},this._yearsTable),n=0;n<3;n++)for(r=$common.createElementFromTemplate({nodeName:"tr"},this._yearsBody),t=0;t<4;t++)u=$common.createElementFromTemplate({nodeName:"td"},r),f=$common.createElementFromTemplate({nodeName:"div",properties:{id:i+"_year_"+n+"_"+t,mode:"year",year:n*4+t-1},events:this._cell$delegates,cssClasses:["ajax__calendar_year"]},u)},_isInDateRange:function(n,t){switch(t){case"d":if(this._startDate&&this._getDateOnly(n)this._getDateOnly(this._endDate))return!1;break;case"M":if(this._startDate&&this._getMonthOnly(n)this._getMonthOnly(this._endDate))return!1;break;case"y":if(this._startDate&&n.getUTCFullYear()this._endDate.getUTCFullYear())return!1}return!0},_getDateOnly:function(n){return new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()))},_getMonthOnly:function(n){return new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),1))},_convertToUTC:function(n){return n&&(n=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()))),n},_convertToLocal:function(n){var t=new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),n.getUTCMilliseconds());return t.getDate()!=n.getUTCDate()&&(t=new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours()+1,n.getUTCMinutes(),n.getUTCSeconds(),n.getUTCMilliseconds())),t},_performLayout:function(){var p=this.get_element(),v,s,h,u,c,y,l,t,o,r,e,f,n;if(p&&this.get_isInitialized()&&this._isOpen){var w=Sys.CultureInfo.CurrentCulture.dateTimeFormat,b=this.get_selectedDate(),i=this._getEffectiveVisibleDate(),a=this.get_todaysDate();switch(this._mode){case"days":for(v=this._getFirstDayOfWeek(),s=i.getUTCDay()-v,s<=0&&(s+=7),h=new Date(i),h.setUTCDate(h.getUTCDate()-s),u=new Date(h),r=0;r<7;r++)t=this._daysTableHeaderRow.cells[r].firstChild,t.firstChild&&t.removeChild(t.firstChild),t.appendChild(document.createTextNode(w.ShortestDayNames[(r+v)%7]));for(c=0;c<6;c++)for(y=this._daysBody.rows[c],l=0;l<7;l++)t=y.cells[l].firstChild,t.firstChild&&t.removeChild(t.firstChild),t.appendChild(document.createTextNode(u.getUTCDate())),t.title=this._convertToLocal(u).localeFormat("D"),t.date=u,$common.removeCssClasses(t.parentNode,["ajax__calendar_other","ajax__calendar_active","ajax__calendar_today"]),this._isInDateRange(u,"d")?($common.removeCssClasses(t.parentNode,["ajax__calendar_invalid","ajax__calendar_other","ajax__calendar_active",""]),Sys.UI.DomElement.addCssClass(t.parentNode,this._getCssClass(t.date,"d"))):($common.removeCssClasses(t.parentNode,["ajax__calendar_other","ajax__calendar_active"]),Sys.UI.DomElement.addCssClass(t.parentNode,"ajax__calendar_invalid")),u=new Date(u),u.setUTCDate(u.getUTCDate()+1);this._prevArrow.date=new Date(Date.UTC(i.getUTCFullYear(),i.getUTCMonth()-1,1));this._nextArrow.date=new Date(Date.UTC(i.getUTCFullYear(),i.getUTCMonth()+1,1));this._title.firstChild&&this._title.removeChild(this._title.firstChild);this._title.appendChild(document.createTextNode(this._convertToLocal(i).localeFormat(this.get_daysModeTitleFormat())));this._title.date=i;break;case"months":for(r=0;rn?($common.setLocation(r,{x:-162,y:0}),$common.setVisible(r,!0),this._modeChangeMoveTopOrLeftAnimation.set_propertyKey("left"),this._modeChangeMoveTopOrLeftAnimation.set_target(r),this._modeChangeMoveTopOrLeftAnimation.set_startValue(-this._width),this._modeChangeMoveTopOrLeftAnimation.set_endValue(0),$common.setLocation(i,{x:0,y:0}),$common.setVisible(i,!0),this._modeChangeMoveBottomOrRightAnimation.set_propertyKey("left"),this._modeChangeMoveBottomOrRightAnimation.set_target(i),this._modeChangeMoveBottomOrRightAnimation.set_startValue(0),this._modeChangeMoveBottomOrRightAnimation.set_endValue(this._width)):($common.setLocation(i,{x:0,y:0}),$common.setVisible(i,!0),this._modeChangeMoveTopOrLeftAnimation.set_propertyKey("left"),this._modeChangeMoveTopOrLeftAnimation.set_target(i),this._modeChangeMoveTopOrLeftAnimation.set_endValue(-this._width),this._modeChangeMoveTopOrLeftAnimation.set_startValue(0),$common.setLocation(r,{x:162,y:0}),$common.setVisible(r,!0),this._modeChangeMoveBottomOrRightAnimation.set_propertyKey("left"),this._modeChangeMoveBottomOrRightAnimation.set_target(r),this._modeChangeMoveBottomOrRightAnimation.set_endValue(0),this._modeChangeMoveBottomOrRightAnimation.set_startValue(this._width)),this._visibleDate=n,this.invalidate(),f=Function.createDelegate(this,function(){this._body.removeChild(i);i=null;this._isAnimating=!1;this._modeChangeAnimation.remove_ended(f)}),this._modeChangeAnimation.add_ended(f),this._modeChangeAnimation.play()):(this._visibleDate=n,this.invalidate()))},_canSwitchMonth:function(n){switch(this._mode){case"days":if(!this._isInDateRange(n,"M"))return!1;break;case"months":if(!this._isInDateRange(n,"y"))return!1;break;case"years":if(!this._isInDateRange(n,"y"))return!1}return!0},_switchMode:function(n,t){var u;if(!this._isAnimating&&this._mode!=n){var f=this._modeOrder[this._mode]