]> git.wh0rd.org - tt-rss.git/blob - lib/dojo/date/locale.js
add dijit/dojo stuff; initial ui mockup
[tt-rss.git] / lib / dojo / date / locale.js
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 }