12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.widget.Calendar"]){dojo._hasResource["dojox.widget.Calendar"]=true;dojo.provide("dojox.widget.Calendar");dojo.experimental("dojox.widget.Calendar");dojo.require("dijit.Calendar");dojo.require("dijit._Container");dojo.declare("dojox.widget._CalendarBase",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:dojo.cache("dojox.widget","Calendar/Calendar.html","<div class=\"dojoxCalendar\">\n <div tabindex=\"0\" class=\"dojoxCalendarContainer\" style=\"visibility: visible;\" dojoAttachPoint=\"container\">\n\t\t<div style=\"display:none\">\n\t\t\t<div dojoAttachPoint=\"previousYearLabelNode\"></div>\n\t\t\t<div dojoAttachPoint=\"nextYearLabelNode\"></div>\n\t\t\t<div dojoAttachPoint=\"monthLabelSpacer\"></div>\n\t\t</div>\n <div class=\"dojoxCalendarHeader\">\n <div>\n <div class=\"dojoxCalendarDecrease\" dojoAttachPoint=\"decrementMonth\"></div>\n </div>\n <div class=\"\">\n <div class=\"dojoxCalendarIncrease\" dojoAttachPoint=\"incrementMonth\"></div>\n </div>\n <div class=\"dojoxCalendarTitle\" dojoAttachPoint=\"header\" dojoAttachEvent=\"onclick: onHeaderClick\">\n </div>\n </div>\n <div class=\"dojoxCalendarBody\" dojoAttachPoint=\"containerNode\"></div>\n <div class=\"\">\n <div class=\"dojoxCalendarFooter\" dojoAttachPoint=\"footer\"> \n </div>\n </div>\n </div>\n</div>\n"),_views:null,useFx:true,widgetsInTemplate:true,value:new Date(),constraints:null,footerFormat:"medium",constructor:function(){this._views=[];},postMixInProperties:function(){var c=this.constraints;if(c){var _1=dojo.date.stamp.fromISOString;if(typeof c.min=="string"){c.min=_1(c.min);}if(typeof c.max=="string"){c.max=_1(c.max);}}},postCreate:function(){this.displayMonth=new Date(this.attr("value"));var _2={parent:this,_getValueAttr:dojo.hitch(this,function(){return new Date(this._internalValue||this.value);}),_getDisplayMonthAttr:dojo.hitch(this,function(){return new Date(this.displayMonth);}),_getConstraintsAttr:dojo.hitch(this,function(){return this.constraints;}),getLang:dojo.hitch(this,function(){return this.lang;}),isDisabledDate:dojo.hitch(this,this.isDisabledDate),getClassForDate:dojo.hitch(this,this.getClassForDate),addFx:this.useFx?dojo.hitch(this,this.addFx):function(){}};dojo.forEach(this._views,function(_3){var _4=new _3(_2,dojo.create("div"));this.addChild(_4);var _5=_4.getHeader();if(_5){this.header.appendChild(_5);dojo.style(_5,"display","none");}dojo.style(_4.domNode,"visibility","hidden");dojo.connect(_4,"onValueSelected",this,"_onDateSelected");_4.attr("value",this.attr("value"));},this);if(this._views.length<2){dojo.style(this.header,"cursor","auto");}this.inherited(arguments);this._children=this.getChildren();this._currentChild=0;var _6=new Date();this.footer.innerHTML="Today: "+dojo.date.locale.format(_6,{formatLength:this.footerFormat,selector:"date",locale:this.lang});dojo.connect(this.footer,"onclick",this,"goToToday");var _7=this._children[0];dojo.style(_7.domNode,"top","0px");dojo.style(_7.domNode,"visibility","visible");var _8=_7.getHeader();if(_8){dojo.style(_7.getHeader(),"display","");}dojo[_7.useHeader?"removeClass":"addClass"](this.container,"no-header");_7.onDisplay();var _9=this;var _a=function(_b,_c,_d){dijit.typematic.addMouseListener(_9[_b],_9,function(_e){if(_e>=0){_9._adjustDisplay(_c,_d);}},0.8,500);};_a("incrementMonth","month",1);_a("decrementMonth","month",-1);this._updateTitleStyle();},addFx:function(_f,_10){},_setValueAttr:function(_11){if(!_11["getFullYear"]){_11=dojo.date.stamp.fromISOString(_11+"");}if(!this.value||dojo.date.compare(_11,this.value)){_11=new Date(_11);this.displayMonth=new Date(_11);this._internalValue=_11;if(!this.isDisabledDate(_11,this.lang)&&this._currentChild==0){this.value=_11;this.onChange(_11);}this._children[this._currentChild].attr("value",this.value);return true;}return false;},isDisabledDate:function(_12,_13){var c=this.constraints;var _14=dojo.date.compare;return c&&(c.min&&(_14(c.min,_12,"date")>0)||(c.max&&_14(c.max,_12,"date")<0));},onValueSelected:function(_15){},_onDateSelected:function(_16,_17,_18){this.displayMonth=_16;this.attr("value",_16);if(!this._transitionVert(-1)){if(!_17&&_17!==0){_17=this.attr("value");}this.onValueSelected(_17);}},onChange:function(_19){},onHeaderClick:function(e){this._transitionVert(1);},goToToday:function(){this.attr("value",new Date());this.onValueSelected(this.attr("value"));},_transitionVert:function(_1a){var _1b=this._children[this._currentChild];var _1c=this._children[this._currentChild+_1a];if(!_1c){return false;}dojo.style(_1c.domNode,"visibility","visible");var _1d=dojo.style(this.containerNode,"height");_1c.attr("value",this.displayMonth);if(_1b.header){dojo.style(_1b.header,"display","none");}if(_1c.header){dojo.style(_1c.header,"display","");}dojo.style(_1c.domNode,"top",(_1d*-1)+"px");dojo.style(_1c.domNode,"visibility","visible");this._currentChild+=_1a;var _1e=_1d*_1a;var _1f=0;dojo.style(_1c.domNode,"top",(_1e*-1)+"px");var _20=dojo.animateProperty({node:_1b.domNode,properties:{top:_1e},onEnd:function(){dojo.style(_1b.domNode,"visibility","hidden");}});var _21=dojo.animateProperty({node:_1c.domNode,properties:{top:_1f},onEnd:function(){_1c.onDisplay();}});dojo[_1c.useHeader?"removeClass":"addClass"](this.container,"no-header");_20.play();_21.play();_1b.onBeforeUnDisplay();_1c.onBeforeDisplay();this._updateTitleStyle();return true;},_updateTitleStyle:function(){dojo[this._currentChild<this._children.length-1?"addClass":"removeClass"](this.header,"navToPanel");},_slideTable:function(_22,_23,_24){var _25=_22.domNode;var _26=_25.cloneNode(true);var _27=dojo.style(_25,"width");_25.parentNode.appendChild(_26);dojo.style(_25,"left",(_27*_23)+"px");_24();var _28=dojo.animateProperty({node:_26,properties:{left:_27*_23*-1},duration:500,onEnd:function(){_26.parentNode.removeChild(_26);}});var _29=dojo.animateProperty({node:_25,properties:{left:0},duration:500});_28.play();_29.play();},_addView:function(_2a){this._views.push(_2a);},getClassForDate:function(_2b,_2c){},_adjustDisplay:function(_2d,_2e,_2f){var _30=this._children[this._currentChild];var _31=this.displayMonth=_30.adjustDate(this.displayMonth,_2e);this._slideTable(_30,_2e,function(){_30.attr("value",_31);});}});dojo.declare("dojox.widget._CalendarView",dijit._Widget,{headerClass:"",useHeader:true,cloneClass:function(_32,n,_33){var _34=dojo.query(_32,this.domNode)[0];var i;if(!_33){for(i=0;i<n;i++){_34.parentNode.appendChild(_34.cloneNode(true));}}else{var _35=dojo.query(_32,this.domNode)[0];for(i=0;i<n;i++){_34.parentNode.insertBefore(_34.cloneNode(true),_35);}}},_setText:function(_36,_37){if(_36.innerHTML!=_37){dojo.empty(_36);_36.appendChild(dojo.doc.createTextNode(_37));}},getHeader:function(){return this.header||(this.header=this.header=dojo.create("span",{"class":this.headerClass}));},onValueSelected:function(_38){},adjustDate:function(_39,_3a){return dojo.date.add(_39,this.datePart,_3a);},onDisplay:function(){},onBeforeDisplay:function(){},onBeforeUnDisplay:function(){}});dojo.declare("dojox.widget._CalendarDay",null,{parent:null,constructor:function(){this._addView(dojox.widget._CalendarDayView);}});dojo.declare("dojox.widget._CalendarDayView",[dojox.widget._CalendarView,dijit._Templated],{templateString:dojo.cache("dojox.widget","Calendar/CalendarDay.html","<div class=\"dijitCalendarDayLabels\" style=\"left: 0px;\" dojoAttachPoint=\"dayContainer\">\n\t<div dojoAttachPoint=\"header\">\n\t\t<div dojoAttachPoint=\"monthAndYearHeader\">\n\t\t\t<span dojoAttachPoint=\"monthLabelNode\" class=\"dojoxCalendarMonthLabelNode\"></span>\n\t\t\t<span dojoAttachPoint=\"headerComma\" class=\"dojoxCalendarComma\">,</span>\n\t\t\t<span dojoAttachPoint=\"yearLabelNode\" class=\"dojoxCalendarDayYearLabel\"></span>\n\t\t</div>\n\t</div>\n\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"margin: auto;\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<td class=\"dijitCalendarDayLabelTemplate\"><div class=\"dijitCalendarDayLabel\"></div></td>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody dojoAttachEvent=\"onclick: _onDayClick\">\n\t\t\t<tr class=\"dijitCalendarWeekTemplate\">\n\t\t\t\t<td class=\"dojoxCalendarNextMonth dijitCalendarDateTemplate\">\n\t\t\t\t\t<div class=\"dijitCalendarDateLabel\"></div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n"),datePart:"month",dayWidth:"narrow",postCreate:function(){this.cloneClass(".dijitCalendarDayLabelTemplate",6);this.cloneClass(".dijitCalendarDateTemplate",6);this.cloneClass(".dijitCalendarWeekTemplate",5);var _3b=dojo.date.locale.getNames("days",this.dayWidth,"standAlone",this.getLang());var _3c=dojo.cldr.supplemental.getFirstDayOfWeek(this.getLang());dojo.query(".dijitCalendarDayLabel",this.domNode).forEach(function(_3d,i){this._setText(_3d,_3b[(i+_3c)%7]);},this);},onDisplay:function(){if(!this._addedFx){this._addedFx=true;this.addFx(".dijitCalendarDateTemplate div",this.domNode);}},_onDayClick:function(e){if(typeof (e.target._date)=="undefined"){return;}var _3e=new Date(this.attr("displayMonth"));var p=e.target.parentNode;var c="dijitCalendar";var d=dojo.hasClass(p,c+"PreviousMonth")?-1:(dojo.hasClass(p,c+"NextMonth")?1:0);if(d){_3e=dojo.date.add(_3e,"month",d);}_3e.setDate(e.target._date);if(this.isDisabledDate(_3e)){dojo.stopEvent(e);return;}this.parent._onDateSelected(_3e);},_setValueAttr:function(_3f){this._populateDays();},_populateDays:function(){var _40=new Date(this.attr("displayMonth"));_40.setDate(1);var _41=_40.getDay();var _42=dojo.date.getDaysInMonth(_40);var _43=dojo.date.getDaysInMonth(dojo.date.add(_40,"month",-1));var _44=new Date();var _45=this.attr("value");var _46=dojo.cldr.supplemental.getFirstDayOfWeek(this.getLang());if(_46>_41){_46-=7;}var _47=dojo.date.compare;var _48=".dijitCalendarDateTemplate";var _49="dijitCalendarSelectedDate";var _4a=this._lastDate;var _4b=_4a==null||_4a.getMonth()!=_40.getMonth()||_4a.getFullYear()!=_40.getFullYear();this._lastDate=_40;if(!_4b){dojo.query(_48,this.domNode).removeClass(_49).filter(function(_4c){return _4c.className.indexOf("dijitCalendarCurrent")>-1&&_4c._date==_45.getDate();}).addClass(_49);return;}dojo.query(_48,this.domNode).forEach(function(_4d,i){i+=_46;var _4e=new Date(_40);var _4f,_50="dijitCalendar",adj=0;if(i<_41){_4f=_43-_41+i+1;adj=-1;_50+="Previous";}else{if(i>=(_41+_42)){_4f=i-_41-_42+1;adj=1;_50+="Next";}else{_4f=i-_41+1;_50+="Current";}}if(adj){_4e=dojo.date.add(_4e,"month",adj);}_4e.setDate(_4f);if(!_47(_4e,_44,"date")){_50="dijitCalendarCurrentDate "+_50;}if(!_47(_4e,_45,"date")&&!_47(_4e,_45,"month")&&!_47(_4e,_45,"year")){_50=_49+" "+_50;}if(this.isDisabledDate(_4e,this.getLang())){_50=" dijitCalendarDisabledDate "+_50;}var _51=this.getClassForDate(_4e,this.getLang());if(_51){_50+=_51+" "+_50;}_4d.className=_50+"Month dijitCalendarDateTemplate";_4d.dijitDateValue=_4e.valueOf();var _52=dojo.query(".dijitCalendarDateLabel",_4d)[0];this._setText(_52,_4e.getDate());_52._date=_52.parentNode._date=_4e.getDate();},this);var _53=dojo.date.locale.getNames("months","wide","standAlone",this.getLang());this._setText(this.monthLabelNode,_53[_40.getMonth()]);this._setText(this.yearLabelNode,_40.getFullYear());}});dojo.declare("dojox.widget._CalendarMonthYear",null,{constructor:function(){this._addView(dojox.widget._CalendarMonthYearView);}});dojo.declare("dojox.widget._CalendarMonthYearView",[dojox.widget._CalendarView,dijit._Templated],{templateString:dojo.cache("dojox.widget","Calendar/CalendarMonthYear.html","<div class=\"dojoxCal-MY-labels\" style=\"left: 0px;\"\t\n\tdojoAttachPoint=\"myContainer\" dojoAttachEvent=\"onclick: onClick\">\n\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"margin: auto;\">\n\t\t\t\t<tbody>\n\t\t\t\t\t\t<tr class=\"dojoxCal-MY-G-Template\">\n\t\t\t\t\t\t\t\t<td class=\"dojoxCal-MY-M-Template\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dojoxCalendarMonthLabel\"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td class=\"dojoxCal-MY-M-Template\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dojoxCalendarMonthLabel\"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td class=\"dojoxCal-MY-Y-Template\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dojoxCalendarYearLabel\"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td class=\"dojoxCal-MY-Y-Template\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dojoxCalendarYearLabel\"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t </tr>\n\t\t\t\t\t\t <tr class=\"dojoxCal-MY-btns\">\n\t\t\t\t\t\t \t <td class=\"dojoxCal-MY-btns\" colspan=\"4\">\n\t\t\t\t\t\t \t\t <span class=\"dijitReset dijitInline dijitButtonNode ok-btn\" dojoAttachEvent=\"onclick: onOk\" dojoAttachPoint=\"okBtn\">\n\t\t\t\t\t\t \t \t \t <button\tclass=\"dijitReset dijitStretch dijitButtonContents\">OK</button>\n\t\t\t\t\t\t\t\t </span>\n\t\t\t\t\t\t\t\t <span class=\"dijitReset dijitInline dijitButtonNode cancel-btn\" dojoAttachEvent=\"onclick: onCancel\" dojoAttachPoint=\"cancelBtn\">\n\t\t\t\t\t\t \t \t\t <button\tclass=\"dijitReset dijitStretch dijitButtonContents\">Cancel</button>\n\t\t\t\t\t\t\t\t </span>\n\t\t\t\t\t\t \t </td>\n\t\t\t\t\t\t </tr>\n\t\t\t\t</tbody>\n\t\t</table>\n</div>\n"),datePart:"year",displayedYears:10,useHeader:false,postCreate:function(){this.cloneClass(".dojoxCal-MY-G-Template",5,".dojoxCal-MY-btns");this.monthContainer=this.yearContainer=this.myContainer;var _54="dojoxCalendarYearLabel";var _55="dojoxCalendarDecrease";var _56="dojoxCalendarIncrease";dojo.query("."+_54,this.myContainer).forEach(function(_57,idx){var _58=_56;switch(idx){case 0:_58=_55;case 1:dojo.removeClass(_57,_54);dojo.addClass(_57,_58);break;}});this._decBtn=dojo.query("."+_55,this.myContainer)[0];this._incBtn=dojo.query("."+_56,this.myContainer)[0];dojo.query(".dojoxCal-MY-M-Template",this.domNode).filter(function(_59){return _59.cellIndex==1;}).addClass("dojoxCal-MY-M-last");dojo.connect(this,"onBeforeDisplay",dojo.hitch(this,function(){this._cachedDate=new Date(this.attr("value").getTime());this._populateYears(this._cachedDate.getFullYear());this._populateMonths();this._updateSelectedMonth();this._updateSelectedYear();}));dojo.connect(this,"_populateYears",dojo.hitch(this,function(){this._updateSelectedYear();}));dojo.connect(this,"_populateMonths",dojo.hitch(this,function(){this._updateSelectedMonth();}));this._cachedDate=this.attr("value");this._populateYears();this._populateMonths();this.addFx(".dojoxCalendarMonthLabel,.dojoxCalendarYearLabel ",this.myContainer);},_setValueAttr:function(_5a){this._populateYears(_5a.getFullYear());},getHeader:function(){return null;},_getMonthNames:function(_5b){this._monthNames=this._monthNames||dojo.date.locale.getNames("months",_5b,"standAlone",this.getLang());return this._monthNames;},_populateMonths:function(){var _5c=this._getMonthNames("abbr");dojo.query(".dojoxCalendarMonthLabel",this.monthContainer).forEach(dojo.hitch(this,function(_5d,cnt){this._setText(_5d,_5c[cnt]);}));var _5e=this.attr("constraints");if(_5e){var _5f=new Date();_5f.setFullYear(this._year);var min=-1,max=12;if(_5e.min){var _60=_5e.min.getFullYear();if(_60>this._year){min=12;}else{if(_60==this._year){min=_5e.min.getMonth();}}}if(_5e.max){var _61=_5e.max.getFullYear();if(_61<this._year){max=-1;}else{if(_61==this._year){max=_5e.max.getMonth();}}}dojo.query(".dojoxCalendarMonthLabel",this.monthContainer).forEach(dojo.hitch(this,function(_62,cnt){dojo[(cnt<min||cnt>max)?"addClass":"removeClass"](_62,"dijitCalendarDisabledDate");}));}var h=this.getHeader();if(h){this._setText(this.getHeader(),this.attr("value").getFullYear());}},_populateYears:function(_63){var _64=this.attr("constraints");var _65=_63||this.attr("value").getFullYear();var _66=_65-Math.floor(this.displayedYears/2);var min=_64&&_64.min?_64.min.getFullYear():_66-10000;_66=Math.max(min,_66);this._displayedYear=_65;var _67=dojo.query(".dojoxCalendarYearLabel",this.yearContainer);var max=_64&&_64.max?_64.max.getFullYear()-_66:_67.length;var _68="dijitCalendarDisabledDate";_67.forEach(dojo.hitch(this,function(_69,cnt){if(cnt<=max){this._setText(_69,_66+cnt);dojo.removeClass(_69,_68);}else{dojo.addClass(_69,_68);}}));if(this._incBtn){dojo[max<_67.length?"addClass":"removeClass"](this._incBtn,_68);}if(this._decBtn){dojo[min>=_66?"addClass":"removeClass"](this._decBtn,_68);}var h=this.getHeader();if(h){this._setText(this.getHeader(),_66+" - "+(_66+11));}},_updateSelectedYear:function(){this._year=String((this._cachedDate||this.attr("value")).getFullYear());this._updateSelectedNode(".dojoxCalendarYearLabel",dojo.hitch(this,function(_6a,idx){return this._year!==null&&_6a.innerHTML==this._year;}));},_updateSelectedMonth:function(){var _6b=(this._cachedDate||this.attr("value")).getMonth();this._month=_6b;this._updateSelectedNode(".dojoxCalendarMonthLabel",function(_6c,idx){return idx==_6b;});},_updateSelectedNode:function(_6d,_6e){var sel="dijitCalendarSelectedDate";dojo.query(_6d,this.domNode).forEach(function(_6f,idx,_70){dojo[_6e(_6f,idx,_70)?"addClass":"removeClass"](_6f.parentNode,sel);});var _71=dojo.query(".dojoxCal-MY-M-Template div",this.myContainer).filter(function(_72){return dojo.hasClass(_72.parentNode,sel);})[0];if(!_71){return;}var _73=dojo.hasClass(_71,"dijitCalendarDisabledDate");dojo[_73?"addClass":"removeClass"](this.okBtn,"dijitDisabled");},onClick:function(evt){var _74;var _75=this;var sel="dijitCalendarSelectedDate";function hc(c){return dojo.hasClass(evt.target,c);};if(hc("dijitCalendarDisabledDate")){dojo.stopEvent(evt);return false;}if(hc("dojoxCalendarMonthLabel")){_74="dojoxCal-MY-M-Template";this._month=evt.target.parentNode.cellIndex+(evt.target.parentNode.parentNode.rowIndex*2);this._cachedDate.setMonth(this._month);this._updateSelectedMonth();}else{if(hc("dojoxCalendarYearLabel")){_74="dojoxCal-MY-Y-Template";this._year=Number(evt.target.innerHTML);this._cachedDate.setYear(this._year);this._populateMonths();this._updateSelectedYear();}else{if(hc("dojoxCalendarDecrease")){this._populateYears(this._displayedYear-10);return true;}else{if(hc("dojoxCalendarIncrease")){this._populateYears(this._displayedYear+10);return true;}else{return true;}}}}dojo.stopEvent(evt);return false;},onOk:function(evt){dojo.stopEvent(evt);if(dojo.hasClass(this.okBtn,"dijitDisabled")){return false;}this.onValueSelected(this._cachedDate);return false;},onCancel:function(evt){dojo.stopEvent(evt);this.onValueSelected(this.attr("value"));return false;}});dojo.declare("dojox.widget.Calendar2Pane",[dojox.widget._CalendarBase,dojox.widget._CalendarDay,dojox.widget._CalendarMonthYear],{});dojo.declare("dojox.widget.Calendar",[dojox.widget._CalendarBase,dojox.widget._CalendarDay,dojox.widget._CalendarMonthYear],{});dojo.declare("dojox.widget.DailyCalendar",[dojox.widget._CalendarBase,dojox.widget._CalendarDay],{});dojo.declare("dojox.widget.MonthAndYearlyCalendar",[dojox.widget._CalendarBase,dojox.widget._CalendarMonthYear],{});}
|