/ajax/libs/dojo/1.3.1/date/locale.js
JavaScript | 494 lines | 487 code | 2 blank | 5 comment | 49 complexity | 5a5e7f225de8a9d212bcf13cffdbe005 MD5 | raw file
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojo.date.locale"]){
- dojo._hasResource["dojo.date.locale"]=true;
- dojo.provide("dojo.date.locale");
- dojo.require("dojo.date");
- dojo.require("dojo.cldr.supplemental");
- dojo.require("dojo.regexp");
- dojo.require("dojo.string");
- dojo.require("dojo.i18n");
- dojo.requireLocalization("dojo.cldr","gregorian",null,"ROOT,ar,ca,cs,da,de,el,en,en-au,en-ca,en-gb,es,es-es,fi,fr,he,hu,it,it-it,ja,ko,ko-kr,nb,nl,pl,pt,pt-br,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-cn,zh-tw");
- (function(){
- function _1(_2,_3,_4,_5){
- return _5.replace(/([a-z])\1*/ig,function(_6){
- var s,_8;
- var c=_6.charAt(0);
- var l=_6.length;
- var _b=["abbr","wide","narrow"];
- switch(c){
- case "G":
- s=_3[(l<4)?"eraAbbr":"eraNames"][_2.getFullYear()<0?0:1];
- break;
- case "y":
- s=_2.getFullYear();
- switch(l){
- case 1:
- break;
- case 2:
- if(!_4){
- s=String(s);
- s=s.substr(s.length-2);
- break;
- }
- default:
- _8=true;
- }
- break;
- case "Q":
- case "q":
- s=Math.ceil((_2.getMonth()+1)/3);
- _8=true;
- break;
- case "M":
- var m=_2.getMonth();
- if(l<3){
- s=m+1;
- _8=true;
- }else{
- var _d=["months","format",_b[l-3]].join("-");
- s=_3[_d][m];
- }
- break;
- case "w":
- var _e=0;
- s=dojo.date.locale._getWeekOfYear(_2,_e);
- _8=true;
- break;
- case "d":
- s=_2.getDate();
- _8=true;
- break;
- case "D":
- s=dojo.date.locale._getDayOfYear(_2);
- _8=true;
- break;
- case "E":
- var d=_2.getDay();
- if(l<3){
- s=d+1;
- _8=true;
- }else{
- var _10=["days","format",_b[l-3]].join("-");
- s=_3[_10][d];
- }
- break;
- case "a":
- var _11=(_2.getHours()<12)?"am":"pm";
- s=_3[_11];
- break;
- case "h":
- case "H":
- case "K":
- case "k":
- var h=_2.getHours();
- switch(c){
- case "h":
- s=(h%12)||12;
- break;
- case "H":
- s=h;
- break;
- case "K":
- s=(h%12);
- break;
- case "k":
- s=h||24;
- break;
- }
- _8=true;
- break;
- case "m":
- s=_2.getMinutes();
- _8=true;
- break;
- case "s":
- s=_2.getSeconds();
- _8=true;
- break;
- case "S":
- s=Math.round(_2.getMilliseconds()*Math.pow(10,l-3));
- _8=true;
- break;
- case "v":
- case "z":
- s=dojo.date.getTimezoneName(_2);
- if(s){
- break;
- }
- l=4;
- case "Z":
- var _13=_2.getTimezoneOffset();
- var tz=[(_13<=0?"+":"-"),dojo.string.pad(Math.floor(Math.abs(_13)/60),2),dojo.string.pad(Math.abs(_13)%60,2)];
- if(l==4){
- tz.splice(0,0,"GMT");
- tz.splice(3,0,":");
- }
- s=tz.join("");
- break;
- default:
- throw new Error("dojo.date.locale.format: invalid pattern char: "+_5);
- }
- if(_8){
- s=dojo.string.pad(s,l);
- }
- return s;
- });
- };
- dojo.date.locale.format=function(_15,_16){
- _16=_16||{};
- var _17=dojo.i18n.normalizeLocale(_16.locale);
- var _18=_16.formatLength||"short";
- var _19=dojo.date.locale._getGregorianBundle(_17);
- var str=[];
- var _1b=dojo.hitch(this,_1,_15,_19,_16.fullYear);
- if(_16.selector=="year"){
- var _1c=_15.getFullYear();
- if(_17.match(/^zh|^ja/)){
- _1c+="年";
- }
- return _1c;
- }
- if(_16.selector!="time"){
- var _1d=_16.datePattern||_19["dateFormat-"+_18];
- if(_1d){
- str.push(_1e(_1d,_1b));
- }
- }
- if(_16.selector!="date"){
- var _1f=_16.timePattern||_19["timeFormat-"+_18];
- if(_1f){
- str.push(_1e(_1f,_1b));
- }
- }
- var _20=str.join(" ");
- return _20;
- };
- dojo.date.locale.regexp=function(_21){
- return dojo.date.locale._parseInfo(_21).regexp;
- };
- dojo.date.locale._parseInfo=function(_22){
- _22=_22||{};
- var _23=dojo.i18n.normalizeLocale(_22.locale);
- var _24=dojo.date.locale._getGregorianBundle(_23);
- var _25=_22.formatLength||"short";
- var _26=_22.datePattern||_24["dateFormat-"+_25];
- var _27=_22.timePattern||_24["timeFormat-"+_25];
- var _28;
- if(_22.selector=="date"){
- _28=_26;
- }else{
- if(_22.selector=="time"){
- _28=_27;
- }else{
- _28=_26+" "+_27;
- }
- }
- var _29=[];
- var re=_1e(_28,dojo.hitch(this,_2b,_29,_24,_22));
- return {regexp:re,tokens:_29,bundle:_24};
- };
- dojo.date.locale.parse=function(_2c,_2d){
- var _2e=dojo.date.locale._parseInfo(_2d);
- var _2f=_2e.tokens,_30=_2e.bundle;
- var re=new RegExp("^"+_2e.regexp+"$",_2e.strict?"":"i");
- var _32=re.exec(_2c);
- if(!_32){
- return null;
- }
- var _33=["abbr","wide","narrow"];
- var _34=[1970,0,1,0,0,0,0];
- var _35="";
- var _36=dojo.every(_32,function(v,i){
- if(!i){
- return true;
- }
- var _39=_2f[i-1];
- var l=_39.length;
- switch(_39.charAt(0)){
- case "y":
- if(l!=2&&_2d.strict){
- _34[0]=v;
- }else{
- if(v<100){
- v=Number(v);
- var _3b=""+new Date().getFullYear();
- var _3c=_3b.substring(0,2)*100;
- var _3d=Math.min(Number(_3b.substring(2,4))+20,99);
- var num=(v<_3d)?_3c+v:_3c-100+v;
- _34[0]=num;
- }else{
- if(_2d.strict){
- return false;
- }
- _34[0]=v;
- }
- }
- break;
- case "M":
- if(l>2){
- var _3f=_30["months-format-"+_33[l-3]].concat();
- if(!_2d.strict){
- v=v.replace(".","").toLowerCase();
- _3f=dojo.map(_3f,function(s){
- return s.replace(".","").toLowerCase();
- });
- }
- v=dojo.indexOf(_3f,v);
- if(v==-1){
- return false;
- }
- }else{
- v--;
- }
- _34[1]=v;
- break;
- case "E":
- case "e":
- var _41=_30["days-format-"+_33[l-3]].concat();
- if(!_2d.strict){
- v=v.toLowerCase();
- _41=dojo.map(_41,function(d){
- return d.toLowerCase();
- });
- }
- v=dojo.indexOf(_41,v);
- if(v==-1){
- return false;
- }
- break;
- case "D":
- _34[1]=0;
- case "d":
- _34[2]=v;
- break;
- case "a":
- var am=_2d.am||_30.am;
- var pm=_2d.pm||_30.pm;
- if(!_2d.strict){
- var _45=/\./g;
- v=v.replace(_45,"").toLowerCase();
- am=am.replace(_45,"").toLowerCase();
- pm=pm.replace(_45,"").toLowerCase();
- }
- if(_2d.strict&&v!=am&&v!=pm){
- return false;
- }
- _35=(v==pm)?"p":(v==am)?"a":"";
- break;
- case "K":
- if(v==24){
- v=0;
- }
- case "h":
- case "H":
- case "k":
- if(v>23){
- return false;
- }
- _34[3]=v;
- break;
- case "m":
- _34[4]=v;
- break;
- case "s":
- _34[5]=v;
- break;
- case "S":
- _34[6]=v;
- }
- return true;
- });
- var _46=+_34[3];
- if(_35==="p"&&_46<12){
- _34[3]=_46+12;
- }else{
- if(_35==="a"&&_46==12){
- _34[3]=0;
- }
- }
- var _47=new Date(_34[0],_34[1],_34[2],_34[3],_34[4],_34[5],_34[6]);
- if(_2d.strict){
- _47.setFullYear(_34[0]);
- }
- var _48=_2f.join("");
- if(!_36||(_48.indexOf("M")!=-1&&_47.getMonth()!=_34[1])||(_48.indexOf("d")!=-1&&_47.getDate()!=_34[2])){
- return null;
- }
- return _47;
- };
- function _1e(_49,_4a,_4b,_4c){
- var _4d=function(x){
- return x;
- };
- _4a=_4a||_4d;
- _4b=_4b||_4d;
- _4c=_4c||_4d;
- var _4f=_49.match(/(''|[^'])+/g);
- var _50=_49.charAt(0)=="'";
- dojo.forEach(_4f,function(_51,i){
- if(!_51){
- _4f[i]="";
- }else{
- _4f[i]=(_50?_4b:_4a)(_51);
- _50=!_50;
- }
- });
- return _4c(_4f.join(""));
- };
- function _2b(_53,_54,_55,_56){
- _56=dojo.regexp.escapeString(_56);
- if(!_55.strict){
- _56=_56.replace(" a"," ?a");
- }
- return _56.replace(/([a-z])\1*/ig,function(_57){
- var s;
- var c=_57.charAt(0);
- var l=_57.length;
- var p2="",p3="";
- if(_55.strict){
- if(l>1){
- p2="0"+"{"+(l-1)+"}";
- }
- if(l>2){
- p3="0"+"{"+(l-2)+"}";
- }
- }else{
- p2="0?";
- p3="0{0,2}";
- }
- switch(c){
- case "y":
- s="\\d{2,4}";
- break;
- case "M":
- s=(l>2)?"\\S+?":p2+"[1-9]|1[0-2]";
- break;
- case "D":
- s=p2+"[1-9]|"+p3+"[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]";
- break;
- case "d":
- s="[12]\\d|"+p2+"[1-9]|3[01]";
- break;
- case "w":
- s=p2+"[1-9]|[1-4][0-9]|5[0-3]";
- break;
- case "E":
- s="\\S+";
- break;
- case "h":
- s=p2+"[1-9]|1[0-2]";
- break;
- case "k":
- s=p2+"\\d|1[01]";
- break;
- case "H":
- s=p2+"\\d|1\\d|2[0-3]";
- break;
- case "K":
- s=p2+"[1-9]|1\\d|2[0-4]";
- break;
- case "m":
- case "s":
- s="[0-5]\\d";
- break;
- case "S":
- s="\\d{"+l+"}";
- break;
- case "a":
- var am=_55.am||_54.am||"AM";
- var pm=_55.pm||_54.pm||"PM";
- if(_55.strict){
- s=am+"|"+pm;
- }else{
- s=am+"|"+pm;
- if(am!=am.toLowerCase()){
- s+="|"+am.toLowerCase();
- }
- if(pm!=pm.toLowerCase()){
- s+="|"+pm.toLowerCase();
- }
- if(s.indexOf(".")!=-1){
- s+="|"+s.replace(/\./g,"");
- }
- }
- s=s.replace(/\./g,"\\.");
- break;
- default:
- s=".*";
- }
- if(_53){
- _53.push(_57);
- }
- return "("+s+")";
- }).replace(/[\xa0 ]/g,"[\\s\\xa0]");
- };
- })();
- (function(){
- var _5f=[];
- dojo.date.locale.addCustomFormats=function(_60,_61){
- _5f.push({pkg:_60,name:_61});
- };
- dojo.date.locale._getGregorianBundle=function(_62){
- var _63={};
- dojo.forEach(_5f,function(_64){
- var _65=dojo.i18n.getLocalization(_64.pkg,_64.name,_62);
- _63=dojo.mixin(_63,_65);
- },this);
- return _63;
- };
- })();
- dojo.date.locale.addCustomFormats("dojo.cldr","gregorian");
- dojo.date.locale.getNames=function(_66,_67,_68,_69){
- var _6a;
- var _6b=dojo.date.locale._getGregorianBundle(_69);
- var _6c=[_66,_68,_67];
- if(_68=="standAlone"){
- var key=_6c.join("-");
- _6a=_6b[key];
- if(_6a[0]==1){
- _6a=undefined;
- }
- }
- _6c[1]="format";
- return (_6a||_6b[_6c.join("-")]).concat();
- };
- dojo.date.locale.displayPattern=function(_6e,_6f){
- var _70="GyMdkHmsSEDFwWahKzYeugAZvcL",_71=dojo.date.locale._getGregorianBundle(_6f).patternChars;
- return dojo.map(_6e,function(c){
- var i=_70.indexOf(c);
- return i<0?c:_71.charAt(i);
- }).join("");
- };
- dojo.date.locale.isWeekend=function(_74,_75){
- var _76=dojo.cldr.supplemental.getWeekend(_75);
- var day=(_74||new Date()).getDay();
- if(_76.end<_76.start){
- _76.end+=7;
- if(day<_76.start){
- day+=7;
- }
- }
- return day>=_76.start&&day<=_76.end;
- };
- dojo.date.locale._getDayOfYear=function(_78){
- return dojo.date.difference(new Date(_78.getFullYear(),0,1,_78.getHours()),_78)+1;
- };
- dojo.date.locale._getWeekOfYear=function(_79,_7a){
- if(arguments.length==1){
- _7a=0;
- }
- var _7b=new Date(_79.getFullYear(),0,1).getDay();
- var adj=(_7b-_7a+7)%7;
- var _7d=Math.floor((dojo.date.locale._getDayOfYear(_79)+adj-1)/7);
- if(_7b==_7a){
- _7d++;
- }
- return _7d;
- };
- }