]>
Commit | Line | Data |
---|---|---|
2f01fe57 AD |
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["dojo.date.locale"]){ | |
9 | dojo._hasResource["dojo.date.locale"]=true; | |
10 | dojo.provide("dojo.date.locale"); | |
11 | dojo.require("dojo.date"); | |
12 | dojo.require("dojo.cldr.supplemental"); | |
13 | dojo.require("dojo.regexp"); | |
14 | dojo.require("dojo.string"); | |
15 | dojo.require("dojo.i18n"); | |
16 | dojo.requireLocalization("dojo.cldr","gregorian",null,"ROOT,ar,ca,cs,da,de,el,en,en-au,en-ca,en-gb,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw"); | |
17 | (function(){ | |
18 | function _1(_2,_3,_4,_5){ | |
19 | return _5.replace(/([a-z])\1*/ig,function(_6){ | |
20 | var s,_7,c=_6.charAt(0),l=_6.length,_8=["abbr","wide","narrow"]; | |
21 | switch(c){ | |
22 | case "G": | |
23 | s=_3[(l<4)?"eraAbbr":"eraNames"][_2.getFullYear()<0?0:1]; | |
24 | break; | |
25 | case "y": | |
26 | s=_2.getFullYear(); | |
27 | switch(l){ | |
28 | case 1: | |
29 | break; | |
30 | case 2: | |
31 | if(!_4.fullYear){ | |
32 | s=String(s); | |
33 | s=s.substr(s.length-2); | |
34 | break; | |
35 | } | |
36 | default: | |
37 | _7=true; | |
38 | } | |
39 | break; | |
40 | case "Q": | |
41 | case "q": | |
42 | s=Math.ceil((_2.getMonth()+1)/3); | |
43 | _7=true; | |
44 | break; | |
45 | case "M": | |
46 | var m=_2.getMonth(); | |
47 | if(l<3){ | |
48 | s=m+1; | |
49 | _7=true; | |
50 | }else{ | |
51 | var _9=["months","format",_8[l-3]].join("-"); | |
52 | s=_3[_9][m]; | |
53 | } | |
54 | break; | |
55 | case "w": | |
56 | var _a=0; | |
57 | s=dojo.date.locale._getWeekOfYear(_2,_a); | |
58 | _7=true; | |
59 | break; | |
60 | case "d": | |
61 | s=_2.getDate(); | |
62 | _7=true; | |
63 | break; | |
64 | case "D": | |
65 | s=dojo.date.locale._getDayOfYear(_2); | |
66 | _7=true; | |
67 | break; | |
68 | case "E": | |
69 | var d=_2.getDay(); | |
70 | if(l<3){ | |
71 | s=d+1; | |
72 | _7=true; | |
73 | }else{ | |
74 | var _b=["days","format",_8[l-3]].join("-"); | |
75 | s=_3[_b][d]; | |
76 | } | |
77 | break; | |
78 | case "a": | |
79 | var _c=(_2.getHours()<12)?"am":"pm"; | |
80 | s=_3["dayPeriods-format-wide-"+_c]; | |
81 | break; | |
82 | case "h": | |
83 | case "H": | |
84 | case "K": | |
85 | case "k": | |
86 | var h=_2.getHours(); | |
87 | switch(c){ | |
88 | case "h": | |
89 | s=(h%12)||12; | |
90 | break; | |
91 | case "H": | |
92 | s=h; | |
93 | break; | |
94 | case "K": | |
95 | s=(h%12); | |
96 | break; | |
97 | case "k": | |
98 | s=h||24; | |
99 | break; | |
100 | } | |
101 | _7=true; | |
102 | break; | |
103 | case "m": | |
104 | s=_2.getMinutes(); | |
105 | _7=true; | |
106 | break; | |
107 | case "s": | |
108 | s=_2.getSeconds(); | |
109 | _7=true; | |
110 | break; | |
111 | case "S": | |
112 | s=Math.round(_2.getMilliseconds()*Math.pow(10,l-3)); | |
113 | _7=true; | |
114 | break; | |
115 | case "v": | |
116 | case "z": | |
117 | s=dojo.date.locale._getZone(_2,true,_4); | |
118 | if(s){ | |
119 | break; | |
120 | } | |
121 | l=4; | |
122 | case "Z": | |
123 | var _d=dojo.date.locale._getZone(_2,false,_4); | |
124 | var tz=[(_d<=0?"+":"-"),dojo.string.pad(Math.floor(Math.abs(_d)/60),2),dojo.string.pad(Math.abs(_d)%60,2)]; | |
125 | if(l==4){ | |
126 | tz.splice(0,0,"GMT"); | |
127 | tz.splice(3,0,":"); | |
128 | } | |
129 | s=tz.join(""); | |
130 | break; | |
131 | default: | |
132 | throw new Error("dojo.date.locale.format: invalid pattern char: "+_5); | |
133 | } | |
134 | if(_7){ | |
135 | s=dojo.string.pad(s,l); | |
136 | } | |
137 | return s; | |
138 | }); | |
139 | }; | |
140 | dojo.date.locale._getZone=function(_e,_f,_10){ | |
141 | if(_f){ | |
142 | return dojo.date.getTimezoneName(_e); | |
143 | }else{ | |
144 | return _e.getTimezoneOffset(); | |
145 | } | |
146 | }; | |
147 | dojo.date.locale.format=function(_11,_12){ | |
148 | _12=_12||{}; | |
149 | var _13=dojo.i18n.normalizeLocale(_12.locale),_14=_12.formatLength||"short",_15=dojo.date.locale._getGregorianBundle(_13),str=[],_16=dojo.hitch(this,_1,_11,_15,_12); | |
150 | if(_12.selector=="year"){ | |
151 | return _17(_15["dateFormatItem-yyyy"]||"yyyy",_16); | |
152 | } | |
153 | var _18; | |
154 | if(_12.selector!="date"){ | |
155 | _18=_12.timePattern||_15["timeFormat-"+_14]; | |
156 | if(_18){ | |
157 | str.push(_17(_18,_16)); | |
158 | } | |
159 | } | |
160 | if(_12.selector!="time"){ | |
161 | _18=_12.datePattern||_15["dateFormat-"+_14]; | |
162 | if(_18){ | |
163 | str.push(_17(_18,_16)); | |
164 | } | |
165 | } | |
166 | return str.length==1?str[0]:_15["dateTimeFormat-"+_14].replace(/\{(\d+)\}/g,function(_19,key){ | |
167 | return str[key]; | |
168 | }); | |
169 | }; | |
170 | dojo.date.locale.regexp=function(_1a){ | |
171 | return dojo.date.locale._parseInfo(_1a).regexp; | |
172 | }; | |
173 | dojo.date.locale._parseInfo=function(_1b){ | |
174 | _1b=_1b||{}; | |
175 | var _1c=dojo.i18n.normalizeLocale(_1b.locale),_1d=dojo.date.locale._getGregorianBundle(_1c),_1e=_1b.formatLength||"short",_1f=_1b.datePattern||_1d["dateFormat-"+_1e],_20=_1b.timePattern||_1d["timeFormat-"+_1e],_21; | |
176 | if(_1b.selector=="date"){ | |
177 | _21=_1f; | |
178 | }else{ | |
179 | if(_1b.selector=="time"){ | |
180 | _21=_20; | |
181 | }else{ | |
182 | _21=_1d["dateTimeFormat-"+_1e].replace(/\{(\d+)\}/g,function(_22,key){ | |
183 | return [_20,_1f][key]; | |
184 | }); | |
185 | } | |
186 | } | |
187 | var _23=[],re=_17(_21,dojo.hitch(this,_24,_23,_1d,_1b)); | |
188 | return {regexp:re,tokens:_23,bundle:_1d}; | |
189 | }; | |
190 | dojo.date.locale.parse=function(_25,_26){ | |
191 | var _27=dojo.date.locale._parseInfo(_26),_28=_27.tokens,_29=_27.bundle,re=new RegExp("^"+_27.regexp+"$",_27.strict?"":"i"),_2a=re.exec(_25); | |
192 | if(!_2a){ | |
193 | return null; | |
194 | } | |
195 | var _2b=["abbr","wide","narrow"],_2c=[1970,0,1,0,0,0,0],_2d="",_2e=dojo.every(_2a,function(v,i){ | |
196 | if(!i){ | |
197 | return true; | |
198 | } | |
199 | var _2f=_28[i-1]; | |
200 | var l=_2f.length; | |
201 | switch(_2f.charAt(0)){ | |
202 | case "y": | |
203 | if(l!=2&&_26.strict){ | |
204 | _2c[0]=v; | |
205 | }else{ | |
206 | if(v<100){ | |
207 | v=Number(v); | |
208 | var _30=""+new Date().getFullYear(),_31=_30.substring(0,2)*100,_32=Math.min(Number(_30.substring(2,4))+20,99),num=(v<_32)?_31+v:_31-100+v; | |
209 | _2c[0]=num; | |
210 | }else{ | |
211 | if(_26.strict){ | |
212 | return false; | |
213 | } | |
214 | _2c[0]=v; | |
215 | } | |
216 | } | |
217 | break; | |
218 | case "M": | |
219 | if(l>2){ | |
220 | var _33=_29["months-format-"+_2b[l-3]].concat(); | |
221 | if(!_26.strict){ | |
222 | v=v.replace(".","").toLowerCase(); | |
223 | _33=dojo.map(_33,function(s){ | |
224 | return s.replace(".","").toLowerCase(); | |
225 | }); | |
226 | } | |
227 | v=dojo.indexOf(_33,v); | |
228 | if(v==-1){ | |
229 | return false; | |
230 | } | |
231 | }else{ | |
232 | v--; | |
233 | } | |
234 | _2c[1]=v; | |
235 | break; | |
236 | case "E": | |
237 | case "e": | |
238 | var _34=_29["days-format-"+_2b[l-3]].concat(); | |
239 | if(!_26.strict){ | |
240 | v=v.toLowerCase(); | |
241 | _34=dojo.map(_34,function(d){ | |
242 | return d.toLowerCase(); | |
243 | }); | |
244 | } | |
245 | v=dojo.indexOf(_34,v); | |
246 | if(v==-1){ | |
247 | return false; | |
248 | } | |
249 | break; | |
250 | case "D": | |
251 | _2c[1]=0; | |
252 | case "d": | |
253 | _2c[2]=v; | |
254 | break; | |
255 | case "a": | |
256 | var am=_26.am||_29["dayPeriods-format-wide-am"],pm=_26.pm||_29["dayPeriods-format-wide-pm"]; | |
257 | if(!_26.strict){ | |
258 | var _35=/\./g; | |
259 | v=v.replace(_35,"").toLowerCase(); | |
260 | am=am.replace(_35,"").toLowerCase(); | |
261 | pm=pm.replace(_35,"").toLowerCase(); | |
262 | } | |
263 | if(_26.strict&&v!=am&&v!=pm){ | |
264 | return false; | |
265 | } | |
266 | _2d=(v==pm)?"p":(v==am)?"a":""; | |
267 | break; | |
268 | case "K": | |
269 | if(v==24){ | |
270 | v=0; | |
271 | } | |
272 | case "h": | |
273 | case "H": | |
274 | case "k": | |
275 | if(v>23){ | |
276 | return false; | |
277 | } | |
278 | _2c[3]=v; | |
279 | break; | |
280 | case "m": | |
281 | _2c[4]=v; | |
282 | break; | |
283 | case "s": | |
284 | _2c[5]=v; | |
285 | break; | |
286 | case "S": | |
287 | _2c[6]=v; | |
288 | } | |
289 | return true; | |
290 | }); | |
291 | var _36=+_2c[3]; | |
292 | if(_2d==="p"&&_36<12){ | |
293 | _2c[3]=_36+12; | |
294 | }else{ | |
295 | if(_2d==="a"&&_36==12){ | |
296 | _2c[3]=0; | |
297 | } | |
298 | } | |
299 | var _37=new Date(_2c[0],_2c[1],_2c[2],_2c[3],_2c[4],_2c[5],_2c[6]); | |
300 | if(_26.strict){ | |
301 | _37.setFullYear(_2c[0]); | |
302 | } | |
303 | var _38=_28.join(""),_39=_38.indexOf("d")!=-1,_3a=_38.indexOf("M")!=-1; | |
304 | if(!_2e||(_3a&&_37.getMonth()>_2c[1])||(_39&&_37.getDate()>_2c[2])){ | |
305 | return null; | |
306 | } | |
307 | if((_3a&&_37.getMonth()<_2c[1])||(_39&&_37.getDate()<_2c[2])){ | |
308 | _37=dojo.date.add(_37,"hour",1); | |
309 | } | |
310 | return _37; | |
311 | }; | |
312 | function _17(_3b,_3c,_3d,_3e){ | |
313 | var _3f=function(x){ | |
314 | return x; | |
315 | }; | |
316 | _3c=_3c||_3f; | |
317 | _3d=_3d||_3f; | |
318 | _3e=_3e||_3f; | |
319 | var _40=_3b.match(/(''|[^'])+/g),_41=_3b.charAt(0)=="'"; | |
320 | dojo.forEach(_40,function(_42,i){ | |
321 | if(!_42){ | |
322 | _40[i]=""; | |
323 | }else{ | |
324 | _40[i]=(_41?_3d:_3c)(_42.replace(/''/g,"'")); | |
325 | _41=!_41; | |
326 | } | |
327 | }); | |
328 | return _3e(_40.join("")); | |
329 | }; | |
330 | function _24(_43,_44,_45,_46){ | |
331 | _46=dojo.regexp.escapeString(_46); | |
332 | if(!_45.strict){ | |
333 | _46=_46.replace(" a"," ?a"); | |
334 | } | |
335 | return _46.replace(/([a-z])\1*/ig,function(_47){ | |
336 | var s,c=_47.charAt(0),l=_47.length,p2="",p3=""; | |
337 | if(_45.strict){ | |
338 | if(l>1){ | |
339 | p2="0"+"{"+(l-1)+"}"; | |
340 | } | |
341 | if(l>2){ | |
342 | p3="0"+"{"+(l-2)+"}"; | |
343 | } | |
344 | }else{ | |
345 | p2="0?"; | |
346 | p3="0{0,2}"; | |
347 | } | |
348 | switch(c){ | |
349 | case "y": | |
350 | s="\\d{2,4}"; | |
351 | break; | |
352 | case "M": | |
353 | s=(l>2)?"\\S+?":p2+"[1-9]|1[0-2]"; | |
354 | break; | |
355 | case "D": | |
356 | s=p2+"[1-9]|"+p3+"[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]"; | |
357 | break; | |
358 | case "d": | |
359 | s="3[01]|[12]\\d|"+p2+"[1-9]"; | |
360 | break; | |
361 | case "w": | |
362 | s=p2+"[1-9]|[1-4][0-9]|5[0-3]"; | |
363 | break; | |
364 | case "E": | |
365 | s="\\S+"; | |
366 | break; | |
367 | case "h": | |
368 | s=p2+"[1-9]|1[0-2]"; | |
369 | break; | |
370 | case "k": | |
371 | s=p2+"\\d|1[01]"; | |
372 | break; | |
373 | case "H": | |
374 | s=p2+"\\d|1\\d|2[0-3]"; | |
375 | break; | |
376 | case "K": | |
377 | s=p2+"[1-9]|1\\d|2[0-4]"; | |
378 | break; | |
379 | case "m": | |
380 | case "s": | |
381 | s="[0-5]\\d"; | |
382 | break; | |
383 | case "S": | |
384 | s="\\d{"+l+"}"; | |
385 | break; | |
386 | case "a": | |
387 | var am=_45.am||_44["dayPeriods-format-wide-am"],pm=_45.pm||_44["dayPeriods-format-wide-pm"]; | |
388 | if(_45.strict){ | |
389 | s=am+"|"+pm; | |
390 | }else{ | |
391 | s=am+"|"+pm; | |
392 | if(am!=am.toLowerCase()){ | |
393 | s+="|"+am.toLowerCase(); | |
394 | } | |
395 | if(pm!=pm.toLowerCase()){ | |
396 | s+="|"+pm.toLowerCase(); | |
397 | } | |
398 | if(s.indexOf(".")!=-1){ | |
399 | s+="|"+s.replace(/\./g,""); | |
400 | } | |
401 | } | |
402 | s=s.replace(/\./g,"\\."); | |
403 | break; | |
404 | default: | |
405 | s=".*"; | |
406 | } | |
407 | if(_43){ | |
408 | _43.push(_47); | |
409 | } | |
410 | return "("+s+")"; | |
411 | }).replace(/[\xa0 ]/g,"[\\s\\xa0]"); | |
412 | }; | |
413 | })(); | |
414 | (function(){ | |
415 | var _48=[]; | |
416 | dojo.date.locale.addCustomFormats=function(_49,_4a){ | |
417 | _48.push({pkg:_49,name:_4a}); | |
418 | }; | |
419 | dojo.date.locale._getGregorianBundle=function(_4b){ | |
420 | var _4c={}; | |
421 | dojo.forEach(_48,function(_4d){ | |
422 | var _4e=dojo.i18n.getLocalization(_4d.pkg,_4d.name,_4b); | |
423 | _4c=dojo.mixin(_4c,_4e); | |
424 | },this); | |
425 | return _4c; | |
426 | }; | |
427 | })(); | |
428 | dojo.date.locale.addCustomFormats("dojo.cldr","gregorian"); | |
429 | dojo.date.locale.getNames=function(_4f,_50,_51,_52){ | |
430 | var _53,_54=dojo.date.locale._getGregorianBundle(_52),_55=[_4f,_51,_50]; | |
431 | if(_51=="standAlone"){ | |
432 | var key=_55.join("-"); | |
433 | _53=_54[key]; | |
434 | if(_53[0]==1){ | |
435 | _53=undefined; | |
436 | } | |
437 | } | |
438 | _55[1]="format"; | |
439 | return (_53||_54[_55.join("-")]).concat(); | |
440 | }; | |
441 | dojo.date.locale.isWeekend=function(_56,_57){ | |
442 | var _58=dojo.cldr.supplemental.getWeekend(_57),day=(_56||new Date()).getDay(); | |
443 | if(_58.end<_58.start){ | |
444 | _58.end+=7; | |
445 | if(day<_58.start){ | |
446 | day+=7; | |
447 | } | |
448 | } | |
449 | return day>=_58.start&&day<=_58.end; | |
450 | }; | |
451 | dojo.date.locale._getDayOfYear=function(_59){ | |
452 | return dojo.date.difference(new Date(_59.getFullYear(),0,1,_59.getHours()),_59)+1; | |
453 | }; | |
454 | dojo.date.locale._getWeekOfYear=function(_5a,_5b){ | |
455 | if(arguments.length==1){ | |
456 | _5b=0; | |
457 | } | |
458 | var _5c=new Date(_5a.getFullYear(),0,1).getDay(),adj=(_5c-_5b+7)%7,_5d=Math.floor((dojo.date.locale._getDayOfYear(_5a)+adj-1)/7); | |
459 | if(_5c==_5b){ | |
460 | _5d++; | |
461 | } | |
462 | return _5d; | |
463 | }; | |
464 | } |