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