root / trunk / web / dojo / dojox / widget / Calendar.js @ 11
History | View | Annotate | Download (19.2 KB)
1 |
/*
|
---|---|
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 |
} |