root / trunk / web / dojo / dojox / widget / Calendar.js @ 9
History | View | Annotate | Download (19.2 KB)
| 1 | 9 | andrej.cim | /*
|
|---|---|---|---|
| 2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||
| 3 | Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||
| 4 | see: http://dojotoolkit.org/license for details
|
||
| 5 | */
|
||
| 6 | |||
| 7 | |||
| 8 | if(!dojo._hasResource["dojox.widget.Calendar"]){ |
||
| 9 | dojo._hasResource["dojox.widget.Calendar"]=true; |
||
| 10 | dojo.provide("dojox.widget.Calendar");
|
||
| 11 | dojo.experimental("dojox.widget.Calendar");
|
||
| 12 | dojo.require("dijit.Calendar");
|
||
| 13 | dojo.require("dijit._Container");
|
||
| 14 | 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(){ |
||
| 15 | this._views=[];
|
||
| 16 | },postMixInProperties:function(){ |
||
| 17 | var c=this.constraints; |
||
| 18 | if(c){
|
||
| 19 | var _1=dojo.date.stamp.fromISOString;
|
||
| 20 | if(typeof c.min=="string"){ |
||
| 21 | c.min=_1(c.min); |
||
| 22 | } |
||
| 23 | if(typeof c.max=="string"){ |
||
| 24 | c.max=_1(c.max); |
||
| 25 | } |
||
| 26 | } |
||
| 27 | },postCreate:function(){ |
||
| 28 | this.displayMonth=new Date(this.get("value")); |
||
| 29 | var _2={parent:this,_getValueAttr:dojo.hitch(this,function(){ |
||
| 30 | return new Date(this._internalValue||this.value); |
||
| 31 | }),_getDisplayMonthAttr:dojo.hitch(this,function(){ |
||
| 32 | return new Date(this.displayMonth); |
||
| 33 | }),_getConstraintsAttr:dojo.hitch(this,function(){ |
||
| 34 | return this.constraints; |
||
| 35 | }),getLang:dojo.hitch(this,function(){ |
||
| 36 | return this.lang; |
||
| 37 | }),isDisabledDate:dojo.hitch(this,this.isDisabledDate),getClassForDate:dojo.hitch(this,this.getClassForDate),addFx:this.useFx?dojo.hitch(this,this.addFx):function(){ |
||
| 38 | }}; |
||
| 39 | dojo.forEach(this._views,function(_3){ |
||
| 40 | var _4=new _3(_2,dojo.create("div")); |
||
| 41 | this.addChild(_4);
|
||
| 42 | var _5=_4.getHeader();
|
||
| 43 | if(_5){
|
||
| 44 | this.header.appendChild(_5);
|
||
| 45 | dojo.style(_5,"display","none"); |
||
| 46 | } |
||
| 47 | dojo.style(_4.domNode,"visibility","hidden"); |
||
| 48 | dojo.connect(_4,"onValueSelected",this,"_onDateSelected"); |
||
| 49 | _4.attr("value",this.get("value")); |
||
| 50 | },this);
|
||
| 51 | if(this._views.length<2){ |
||
| 52 | dojo.style(this.header,"cursor","auto"); |
||
| 53 | } |
||
| 54 | this.inherited(arguments); |
||
| 55 | this._children=this.getChildren(); |
||
| 56 | this._currentChild=0; |
||
| 57 | var _6=new Date(); |
||
| 58 | this.footer.innerHTML="Today: "+dojo.date.locale.format(_6,{formatLength:this.footerFormat,selector:"date",locale:this.lang}); |
||
| 59 | dojo.connect(this.footer,"onclick",this,"goToToday"); |
||
| 60 | var _7=this._children[0]; |
||
| 61 | dojo.style(_7.domNode,"top","0px"); |
||
| 62 | dojo.style(_7.domNode,"visibility","visible"); |
||
| 63 | var _8=_7.getHeader();
|
||
| 64 | if(_8){
|
||
| 65 | dojo.style(_7.getHeader(),"display",""); |
||
| 66 | } |
||
| 67 | dojo[_7.useHeader?"removeClass":"addClass"](this.container,"no-header"); |
||
| 68 | _7.onDisplay(); |
||
| 69 | var _9=this; |
||
| 70 | var _a=function(_b,_c,_d){ |
||
| 71 | dijit.typematic.addMouseListener(_9[_b],_9,function(_e){
|
||
| 72 | if(_e>=0){ |
||
| 73 | _9._adjustDisplay(_c,_d); |
||
| 74 | } |
||
| 75 | },0.8,500); |
||
| 76 | }; |
||
| 77 | _a("incrementMonth","month",1); |
||
| 78 | _a("decrementMonth","month",-1); |
||
| 79 | this._updateTitleStyle();
|
||
| 80 | },addFx:function(_f,_10){ |
||
| 81 | },_setValueAttr:function(_11){ |
||
| 82 | if(!_11["getFullYear"]){ |
||
| 83 | _11=dojo.date.stamp.fromISOString(_11+"");
|
||
| 84 | } |
||
| 85 | if(!this.value||dojo.date.compare(_11,this.value)){ |
||
| 86 | _11=new Date(_11);
|
||
| 87 | this.displayMonth=new Date(_11); |
||
| 88 | this._internalValue=_11;
|
||
| 89 | if(!this.isDisabledDate(_11,this.lang)&&this._currentChild==0){ |
||
| 90 | this.value=_11;
|
||
| 91 | this.onChange(_11);
|
||
| 92 | } |
||
| 93 | this._children[this._currentChild].attr("value",this.value); |
||
| 94 | return true; |
||
| 95 | } |
||
| 96 | return false; |
||
| 97 | },isDisabledDate:function(_12,_13){ |
||
| 98 | var c=this.constraints; |
||
| 99 | var _14=dojo.date.compare;
|
||
| 100 | return c&&(c.min&&(_14(c.min,_12,"date")>0)||(c.max&&_14(c.max,_12,"date")<0)); |
||
| 101 | },onValueSelected:function(_15){ |
||
| 102 | },_onDateSelected:function(_16,_17,_18){ |
||
| 103 | this.displayMonth=_16;
|
||
| 104 | this.set("value",_16); |
||
| 105 | if(!this._transitionVert(-1)){ |
||
| 106 | if(!_17&&_17!==0){ |
||
| 107 | _17=this.get("value"); |
||
| 108 | } |
||
| 109 | this.onValueSelected(_17);
|
||
| 110 | } |
||
| 111 | },onChange:function(_19){ |
||
| 112 | },onHeaderClick:function(e){ |
||
| 113 | this._transitionVert(1); |
||
| 114 | },goToToday:function(){ |
||
| 115 | this.set("value",new Date()); |
||
| 116 | this.onValueSelected(this.get("value")); |
||
| 117 | },_transitionVert:function(_1a){ |
||
| 118 | var _1b=this._children[this._currentChild]; |
||
| 119 | var _1c=this._children[this._currentChild+_1a]; |
||
| 120 | if(!_1c){
|
||
| 121 | return false; |
||
| 122 | } |
||
| 123 | dojo.style(_1c.domNode,"visibility","visible"); |
||
| 124 | var _1d=dojo.style(this.containerNode,"height"); |
||
| 125 | _1c.attr("value",this.displayMonth); |
||
| 126 | if(_1b.header){
|
||
| 127 | dojo.style(_1b.header,"display","none"); |
||
| 128 | } |
||
| 129 | if(_1c.header){
|
||
| 130 | dojo.style(_1c.header,"display",""); |
||
| 131 | } |
||
| 132 | dojo.style(_1c.domNode,"top",(_1d*-1)+"px"); |
||
| 133 | dojo.style(_1c.domNode,"visibility","visible"); |
||
| 134 | this._currentChild+=_1a;
|
||
| 135 | var _1e=_1d*_1a;
|
||
| 136 | var _1f=0; |
||
| 137 | dojo.style(_1c.domNode,"top",(_1e*-1)+"px"); |
||
| 138 | var _20=dojo.animateProperty({node:_1b.domNode,properties:{top:_1e},onEnd:function(){ |
||
| 139 | dojo.style(_1b.domNode,"visibility","hidden"); |
||
| 140 | }}); |
||
| 141 | var _21=dojo.animateProperty({node:_1c.domNode,properties:{top:_1f},onEnd:function(){ |
||
| 142 | _1c.onDisplay(); |
||
| 143 | }}); |
||
| 144 | dojo[_1c.useHeader?"removeClass":"addClass"](this.container,"no-header"); |
||
| 145 | _20.play(); |
||
| 146 | _21.play(); |
||
| 147 | _1b.onBeforeUnDisplay(); |
||
| 148 | _1c.onBeforeDisplay(); |
||
| 149 | this._updateTitleStyle();
|
||
| 150 | return true; |
||
| 151 | },_updateTitleStyle:function(){ |
||
| 152 | dojo[this._currentChild<this._children.length-1?"addClass":"removeClass"](this.header,"navToPanel"); |
||
| 153 | },_slideTable:function(_22,_23,_24){ |
||
| 154 | var _25=_22.domNode;
|
||
| 155 | var _26=_25.cloneNode(true); |
||
| 156 | var _27=dojo.style(_25,"width"); |
||
| 157 | _25.parentNode.appendChild(_26); |
||
| 158 | dojo.style(_25,"left",(_27*_23)+"px"); |
||
| 159 | _24(); |
||
| 160 | var _28=dojo.animateProperty({node:_26,properties:{left:_27*_23*-1},duration:500,onEnd:function(){ |
||
| 161 | _26.parentNode.removeChild(_26); |
||
| 162 | }}); |
||
| 163 | var _29=dojo.animateProperty({node:_25,properties:{left:0},duration:500}); |
||
| 164 | _28.play(); |
||
| 165 | _29.play(); |
||
| 166 | },_addView:function(_2a){ |
||
| 167 | this._views.push(_2a);
|
||
| 168 | },getClassForDate:function(_2b,_2c){ |
||
| 169 | },_adjustDisplay:function(_2d,_2e,_2f){ |
||
| 170 | var _30=this._children[this._currentChild]; |
||
| 171 | var _31=this.displayMonth=_30.adjustDate(this.displayMonth,_2e); |
||
| 172 | this._slideTable(_30,_2e,function(){ |
||
| 173 | _30.attr("value",_31);
|
||
| 174 | }); |
||
| 175 | }}); |
||
| 176 | dojo.declare("dojox.widget._CalendarView",dijit._Widget,{headerClass:"",useHeader:true,cloneClass:function(_32,n,_33){ |
||
| 177 | var _34=dojo.query(_32,this.domNode)[0]; |
||
| 178 | var i;
|
||
| 179 | if(!_33){
|
||
| 180 | for(i=0;i<n;i++){ |
||
| 181 | _34.parentNode.appendChild(_34.cloneNode(true));
|
||
| 182 | } |
||
| 183 | }else{
|
||
| 184 | var _35=dojo.query(_32,this.domNode)[0]; |
||
| 185 | for(i=0;i<n;i++){ |
||
| 186 | _34.parentNode.insertBefore(_34.cloneNode(true),_35);
|
||
| 187 | } |
||
| 188 | } |
||
| 189 | },_setText:function(_36,_37){ |
||
| 190 | if(_36.innerHTML!=_37){
|
||
| 191 | dojo.empty(_36); |
||
| 192 | _36.appendChild(dojo.doc.createTextNode(_37)); |
||
| 193 | } |
||
| 194 | },getHeader:function(){ |
||
| 195 | return this.header||(this.header=this.header=dojo.create("span",{"class":this.headerClass})); |
||
| 196 | },onValueSelected:function(_38){ |
||
| 197 | },adjustDate:function(_39,_3a){ |
||
| 198 | return dojo.date.add(_39,this.datePart,_3a); |
||
| 199 | },onDisplay:function(){ |
||
| 200 | },onBeforeDisplay:function(){ |
||
| 201 | },onBeforeUnDisplay:function(){ |
||
| 202 | }}); |
||
| 203 | dojo.declare("dojox.widget._CalendarDay",null,{parent:null,constructor:function(){ |
||
| 204 | this._addView(dojox.widget._CalendarDayView);
|
||
| 205 | }}); |
||
| 206 | 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(){ |
||
| 207 | this.cloneClass(".dijitCalendarDayLabelTemplate",6); |
||
| 208 | this.cloneClass(".dijitCalendarDateTemplate",6); |
||
| 209 | this.cloneClass(".dijitCalendarWeekTemplate",5); |
||
| 210 | var _3b=dojo.date.locale.getNames("days",this.dayWidth,"standAlone",this.getLang()); |
||
| 211 | var _3c=dojo.cldr.supplemental.getFirstDayOfWeek(this.getLang()); |
||
| 212 | dojo.query(".dijitCalendarDayLabel",this.domNode).forEach(function(_3d,i){ |
||
| 213 | this._setText(_3d,_3b[(i+_3c)%7]); |
||
| 214 | },this);
|
||
| 215 | },onDisplay:function(){ |
||
| 216 | if(!this._addedFx){ |
||
| 217 | this._addedFx=true; |
||
| 218 | this.addFx(".dijitCalendarDateTemplate div",this.domNode); |
||
| 219 | } |
||
| 220 | },_onDayClick:function(e){ |
||
| 221 | if(typeof (e.target._date)=="undefined"){ |
||
| 222 | return;
|
||
| 223 | } |
||
| 224 | var _3e=new Date(this.get("displayMonth")); |
||
| 225 | var p=e.target.parentNode;
|
||
| 226 | var c="dijitCalendar"; |
||
| 227 | var d=dojo.hasClass(p,c+"PreviousMonth")?-1:(dojo.hasClass(p,c+"NextMonth")?1:0); |
||
| 228 | if(d){
|
||
| 229 | _3e=dojo.date.add(_3e,"month",d);
|
||
| 230 | } |
||
| 231 | _3e.setDate(e.target._date); |
||
| 232 | if(this.isDisabledDate(_3e)){ |
||
| 233 | dojo.stopEvent(e); |
||
| 234 | return;
|
||
| 235 | } |
||
| 236 | this.parent._onDateSelected(_3e);
|
||
| 237 | },_setValueAttr:function(_3f){ |
||
| 238 | this._populateDays();
|
||
| 239 | },_populateDays:function(){ |
||
| 240 | var _40=new Date(this.get("displayMonth")); |
||
| 241 | _40.setDate(1);
|
||
| 242 | var _41=_40.getDay();
|
||
| 243 | var _42=dojo.date.getDaysInMonth(_40);
|
||
| 244 | var _43=dojo.date.getDaysInMonth(dojo.date.add(_40,"month",-1)); |
||
| 245 | var _44=new Date(); |
||
| 246 | var _45=this.get("value"); |
||
| 247 | var _46=dojo.cldr.supplemental.getFirstDayOfWeek(this.getLang()); |
||
| 248 | if(_46>_41){
|
||
| 249 | _46-=7;
|
||
| 250 | } |
||
| 251 | var _47=dojo.date.compare;
|
||
| 252 | var _48=".dijitCalendarDateTemplate"; |
||
| 253 | var _49="dijitCalendarSelectedDate"; |
||
| 254 | var _4a=this._lastDate; |
||
| 255 | var _4b=_4a==null||_4a.getMonth()!=_40.getMonth()||_4a.getFullYear()!=_40.getFullYear(); |
||
| 256 | this._lastDate=_40;
|
||
| 257 | if(!_4b){
|
||
| 258 | dojo.query(_48,this.domNode).removeClass(_49).filter(function(_4c){ |
||
| 259 | return _4c.className.indexOf("dijitCalendarCurrent")>-1&&_4c._date==_45.getDate(); |
||
| 260 | }).addClass(_49); |
||
| 261 | return;
|
||
| 262 | } |
||
| 263 | dojo.query(_48,this.domNode).forEach(function(_4d,i){ |
||
| 264 | i+=_46; |
||
| 265 | var _4e=new Date(_40); |
||
| 266 | var _4f,_50="dijitCalendar",adj=0; |
||
| 267 | if(i<_41){
|
||
| 268 | _4f=_43-_41+i+1;
|
||
| 269 | adj=-1;
|
||
| 270 | _50+="Previous";
|
||
| 271 | }else{
|
||
| 272 | if(i>=(_41+_42)){
|
||
| 273 | _4f=i-_41-_42+1;
|
||
| 274 | adj=1;
|
||
| 275 | _50+="Next";
|
||
| 276 | }else{
|
||
| 277 | _4f=i-_41+1;
|
||
| 278 | _50+="Current";
|
||
| 279 | } |
||
| 280 | } |
||
| 281 | if(adj){
|
||
| 282 | _4e=dojo.date.add(_4e,"month",adj);
|
||
| 283 | } |
||
| 284 | _4e.setDate(_4f); |
||
| 285 | if(!_47(_4e,_44,"date")){ |
||
| 286 | _50="dijitCalendarCurrentDate "+_50;
|
||
| 287 | } |
||
| 288 | if(!_47(_4e,_45,"date")&&!_47(_4e,_45,"month")&&!_47(_4e,_45,"year")){ |
||
| 289 | _50=_49+" "+_50;
|
||
| 290 | } |
||
| 291 | if(this.isDisabledDate(_4e,this.getLang())){ |
||
| 292 | _50=" dijitCalendarDisabledDate "+_50;
|
||
| 293 | } |
||
| 294 | var _51=this.getClassForDate(_4e,this.getLang()); |
||
| 295 | if(_51){
|
||
| 296 | _50+=_51+" "+_50;
|
||
| 297 | } |
||
| 298 | _4d.className=_50+"Month dijitCalendarDateTemplate";
|
||
| 299 | _4d.dijitDateValue=_4e.valueOf(); |
||
| 300 | var _52=dojo.query(".dijitCalendarDateLabel",_4d)[0]; |
||
| 301 | this._setText(_52,_4e.getDate());
|
||
| 302 | _52._date=_52.parentNode._date=_4e.getDate(); |
||
| 303 | },this);
|
||
| 304 | var _53=dojo.date.locale.getNames("months","wide","standAlone",this.getLang()); |
||
| 305 | this._setText(this.monthLabelNode,_53[_40.getMonth()]); |
||
| 306 | this._setText(this.yearLabelNode,_40.getFullYear()); |
||
| 307 | }}); |
||
| 308 | dojo.declare("dojox.widget._CalendarMonthYear",null,{constructor:function(){ |
||
| 309 | this._addView(dojox.widget._CalendarMonthYearView);
|
||
| 310 | }}); |
||
| 311 | 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(){ |
||
| 312 | this.cloneClass(".dojoxCal-MY-G-Template",5,".dojoxCal-MY-btns"); |
||
| 313 | this.monthContainer=this.yearContainer=this.myContainer; |
||
| 314 | var _54="dojoxCalendarYearLabel"; |
||
| 315 | var _55="dojoxCalendarDecrease"; |
||
| 316 | var _56="dojoxCalendarIncrease"; |
||
| 317 | dojo.query("."+_54,this.myContainer).forEach(function(_57,idx){ |
||
| 318 | var _58=_56;
|
||
| 319 | switch(idx){
|
||
| 320 | case 0: |
||
| 321 | _58=_55; |
||
| 322 | case 1: |
||
| 323 | dojo.removeClass(_57,_54); |
||
| 324 | dojo.addClass(_57,_58); |
||
| 325 | break;
|
||
| 326 | } |
||
| 327 | }); |
||
| 328 | this._decBtn=dojo.query("."+_55,this.myContainer)[0]; |
||
| 329 | this._incBtn=dojo.query("."+_56,this.myContainer)[0]; |
||
| 330 | dojo.query(".dojoxCal-MY-M-Template",this.domNode).filter(function(_59){ |
||
| 331 | return _59.cellIndex==1; |
||
| 332 | }).addClass("dojoxCal-MY-M-last");
|
||
| 333 | dojo.connect(this,"onBeforeDisplay",dojo.hitch(this,function(){ |
||
| 334 | this._cachedDate=new Date(this.get("value").getTime()); |
||
| 335 | this._populateYears(this._cachedDate.getFullYear()); |
||
| 336 | this._populateMonths();
|
||
| 337 | this._updateSelectedMonth();
|
||
| 338 | this._updateSelectedYear();
|
||
| 339 | })); |
||
| 340 | dojo.connect(this,"_populateYears",dojo.hitch(this,function(){ |
||
| 341 | this._updateSelectedYear();
|
||
| 342 | })); |
||
| 343 | dojo.connect(this,"_populateMonths",dojo.hitch(this,function(){ |
||
| 344 | this._updateSelectedMonth();
|
||
| 345 | })); |
||
| 346 | this._cachedDate=this.get("value"); |
||
| 347 | this._populateYears();
|
||
| 348 | this._populateMonths();
|
||
| 349 | this.addFx(".dojoxCalendarMonthLabel,.dojoxCalendarYearLabel ",this.myContainer); |
||
| 350 | },_setValueAttr:function(_5a){ |
||
| 351 | this._populateYears(_5a.getFullYear());
|
||
| 352 | },getHeader:function(){ |
||
| 353 | return null; |
||
| 354 | },_getMonthNames:function(_5b){ |
||
| 355 | this._monthNames=this._monthNames||dojo.date.locale.getNames("months",_5b,"standAlone",this.getLang()); |
||
| 356 | return this._monthNames; |
||
| 357 | },_populateMonths:function(){ |
||
| 358 | var _5c=this._getMonthNames("abbr"); |
||
| 359 | dojo.query(".dojoxCalendarMonthLabel",this.monthContainer).forEach(dojo.hitch(this,function(_5d,cnt){ |
||
| 360 | this._setText(_5d,_5c[cnt]);
|
||
| 361 | })); |
||
| 362 | var _5e=this.get("constraints"); |
||
| 363 | if(_5e){
|
||
| 364 | var _5f=new Date(); |
||
| 365 | _5f.setFullYear(this._year);
|
||
| 366 | var min=-1,max=12; |
||
| 367 | if(_5e.min){
|
||
| 368 | var _60=_5e.min.getFullYear();
|
||
| 369 | if(_60>this._year){ |
||
| 370 | min=12;
|
||
| 371 | }else{
|
||
| 372 | if(_60==this._year){ |
||
| 373 | min=_5e.min.getMonth(); |
||
| 374 | } |
||
| 375 | } |
||
| 376 | } |
||
| 377 | if(_5e.max){
|
||
| 378 | var _61=_5e.max.getFullYear();
|
||
| 379 | if(_61<this._year){ |
||
| 380 | max=-1;
|
||
| 381 | }else{
|
||
| 382 | if(_61==this._year){ |
||
| 383 | max=_5e.max.getMonth(); |
||
| 384 | } |
||
| 385 | } |
||
| 386 | } |
||
| 387 | dojo.query(".dojoxCalendarMonthLabel",this.monthContainer).forEach(dojo.hitch(this,function(_62,cnt){ |
||
| 388 | dojo[(cnt<min||cnt>max)?"addClass":"removeClass"](_62,"dijitCalendarDisabledDate"); |
||
| 389 | })); |
||
| 390 | } |
||
| 391 | var h=this.getHeader(); |
||
| 392 | if(h){
|
||
| 393 | this._setText(this.getHeader(),this.get("value").getFullYear()); |
||
| 394 | } |
||
| 395 | },_populateYears:function(_63){ |
||
| 396 | var _64=this.get("constraints"); |
||
| 397 | var _65=_63||this.get("value").getFullYear(); |
||
| 398 | var _66=_65-Math.floor(this.displayedYears/2); |
||
| 399 | var min=_64&&_64.min?_64.min.getFullYear():_66-10000; |
||
| 400 | _66=Math.max(min,_66); |
||
| 401 | this._displayedYear=_65;
|
||
| 402 | var _67=dojo.query(".dojoxCalendarYearLabel",this.yearContainer); |
||
| 403 | var max=_64&&_64.max?_64.max.getFullYear()-_66:_67.length;
|
||
| 404 | var _68="dijitCalendarDisabledDate"; |
||
| 405 | _67.forEach(dojo.hitch(this,function(_69,cnt){ |
||
| 406 | if(cnt<=max){
|
||
| 407 | this._setText(_69,_66+cnt);
|
||
| 408 | dojo.removeClass(_69,_68); |
||
| 409 | }else{
|
||
| 410 | dojo.addClass(_69,_68); |
||
| 411 | } |
||
| 412 | })); |
||
| 413 | if(this._incBtn){ |
||
| 414 | dojo[max<_67.length?"addClass":"removeClass"](this._incBtn,_68); |
||
| 415 | } |
||
| 416 | if(this._decBtn){ |
||
| 417 | dojo[min>=_66?"addClass":"removeClass"](this._decBtn,_68); |
||
| 418 | } |
||
| 419 | var h=this.getHeader(); |
||
| 420 | if(h){
|
||
| 421 | this._setText(this.getHeader(),_66+" - "+(_66+11)); |
||
| 422 | } |
||
| 423 | },_updateSelectedYear:function(){ |
||
| 424 | this._year=String((this._cachedDate||this.get("value")).getFullYear()); |
||
| 425 | this._updateSelectedNode(".dojoxCalendarYearLabel",dojo.hitch(this,function(_6a,idx){ |
||
| 426 | return this._year!==null&&_6a.innerHTML==this._year; |
||
| 427 | })); |
||
| 428 | },_updateSelectedMonth:function(){ |
||
| 429 | var _6b=(this._cachedDate||this.get("value")).getMonth(); |
||
| 430 | this._month=_6b;
|
||
| 431 | this._updateSelectedNode(".dojoxCalendarMonthLabel",function(_6c,idx){ |
||
| 432 | return idx==_6b;
|
||
| 433 | }); |
||
| 434 | },_updateSelectedNode:function(_6d,_6e){ |
||
| 435 | var sel="dijitCalendarSelectedDate"; |
||
| 436 | dojo.query(_6d,this.domNode).forEach(function(_6f,idx,_70){ |
||
| 437 | dojo[_6e(_6f,idx,_70)?"addClass":"removeClass"](_6f.parentNode,sel); |
||
| 438 | }); |
||
| 439 | var _71=dojo.query(".dojoxCal-MY-M-Template div",this.myContainer).filter(function(_72){ |
||
| 440 | return dojo.hasClass(_72.parentNode,sel);
|
||
| 441 | })[0];
|
||
| 442 | if(!_71){
|
||
| 443 | return;
|
||
| 444 | } |
||
| 445 | var _73=dojo.hasClass(_71,"dijitCalendarDisabledDate"); |
||
| 446 | dojo[_73?"addClass":"removeClass"](this.okBtn,"dijitDisabled"); |
||
| 447 | },onClick:function(evt){ |
||
| 448 | var _74;
|
||
| 449 | var _75=this; |
||
| 450 | var sel="dijitCalendarSelectedDate"; |
||
| 451 | function hc(c){ |
||
| 452 | return dojo.hasClass(evt.target,c);
|
||
| 453 | }; |
||
| 454 | if(hc("dijitCalendarDisabledDate")){ |
||
| 455 | dojo.stopEvent(evt); |
||
| 456 | return false; |
||
| 457 | } |
||
| 458 | if(hc("dojoxCalendarMonthLabel")){ |
||
| 459 | _74="dojoxCal-MY-M-Template";
|
||
| 460 | this._month=evt.target.parentNode.cellIndex+(evt.target.parentNode.parentNode.rowIndex*2); |
||
| 461 | this._cachedDate.setMonth(this._month); |
||
| 462 | this._updateSelectedMonth();
|
||
| 463 | }else{
|
||
| 464 | if(hc("dojoxCalendarYearLabel")){ |
||
| 465 | _74="dojoxCal-MY-Y-Template";
|
||
| 466 | this._year=Number(evt.target.innerHTML);
|
||
| 467 | this._cachedDate.setYear(this._year); |
||
| 468 | this._populateMonths();
|
||
| 469 | this._updateSelectedYear();
|
||
| 470 | }else{
|
||
| 471 | if(hc("dojoxCalendarDecrease")){ |
||
| 472 | this._populateYears(this._displayedYear-10); |
||
| 473 | return true; |
||
| 474 | }else{
|
||
| 475 | if(hc("dojoxCalendarIncrease")){ |
||
| 476 | this._populateYears(this._displayedYear+10); |
||
| 477 | return true; |
||
| 478 | }else{
|
||
| 479 | return true; |
||
| 480 | } |
||
| 481 | } |
||
| 482 | } |
||
| 483 | } |
||
| 484 | dojo.stopEvent(evt); |
||
| 485 | return false; |
||
| 486 | },onOk:function(evt){ |
||
| 487 | dojo.stopEvent(evt); |
||
| 488 | if(dojo.hasClass(this.okBtn,"dijitDisabled")){ |
||
| 489 | return false; |
||
| 490 | } |
||
| 491 | this.onValueSelected(this._cachedDate); |
||
| 492 | return false; |
||
| 493 | },onCancel:function(evt){ |
||
| 494 | dojo.stopEvent(evt); |
||
| 495 | this.onValueSelected(this.get("value")); |
||
| 496 | return false; |
||
| 497 | }}); |
||
| 498 | dojo.declare("dojox.widget.Calendar2Pane",[dojox.widget._CalendarBase,dojox.widget._CalendarDay,dojox.widget._CalendarMonthYear],{});
|
||
| 499 | dojo.declare("dojox.widget.Calendar",[dojox.widget._CalendarBase,dojox.widget._CalendarDay,dojox.widget._CalendarMonthYear],{});
|
||
| 500 | dojo.declare("dojox.widget.DailyCalendar",[dojox.widget._CalendarBase,dojox.widget._CalendarDay],{});
|
||
| 501 | dojo.declare("dojox.widget.MonthAndYearlyCalendar",[dojox.widget._CalendarBase,dojox.widget._CalendarMonthYear],{});
|
||
| 502 | } |