in tapestry-framework/src/js/dojo-0.4.3-custom-4.1.6/src/date/format.js [218:392]
dojo.date.parse=function(_1f,_20){
_20=_20||{};
var _21=dojo.hostenv.normalizeLocale(_20.locale);
var _22=dojo.date._getGregorianBundle(_21);
var _23=_20.formatLength||"full";
if(!_20.selector){
_20.selector="dateOnly";
}
var _24=_20.datePattern||_22["dateFormat-"+_23];
var _25=_20.timePattern||_22["timeFormat-"+_23];
var _26;
if(_20.selector=="dateOnly"){
_26=_24;
}else{
if(_20.selector=="timeOnly"){
_26=_25;
}else{
if(_20.selector=="dateTime"){
_26=_24+" "+_25;
}else{
var msg="dojo.date.parse: Unknown selector param passed: '"+_20.selector+"'.";
msg+=" Defaulting to date pattern.";
dojo.debug(msg);
_26=_24;
}
}
}
var _28=[];
var _29=_processPattern(_26,dojo.lang.curry(this,_buildDateTimeRE,_28,_22,_20));
var _2a=new RegExp("^"+_29+"$");
var _2b=_2a.exec(_1f);
if(!_2b){
return null;
}
var _2c=["abbr","wide","narrow"];
var _2d=new Date(1972,0);
var _2e={};
for(var i=1;i<_2b.length;i++){
var grp=_28[i-1];
var l=grp.length;
var v=_2b[i];
switch(grp.charAt(0)){
case "y":
if(l!=2){
_2d.setFullYear(v);
_2e.year=v;
}else{
if(v<100){
v=Number(v);
var _33=""+new Date().getFullYear();
var _34=_33.substring(0,2)*100;
var _35=Number(_33.substring(2,4));
var _36=Math.min(_35+20,99);
var num=(v<_36)?_34+v:_34-100+v;
_2d.setFullYear(num);
_2e.year=num;
}else{
if(_20.strict){
return null;
}
_2d.setFullYear(v);
_2e.year=v;
}
}
break;
case "M":
if(l>2){
if(!_20.strict){
v=v.replace(/\./g,"");
v=v.toLowerCase();
}
var _38=_22["months-format-"+_2c[l-3]].concat();
for(var j=0;j<_38.length;j++){
if(!_20.strict){
_38[j]=_38[j].toLowerCase();
}
if(v==_38[j]){
_2d.setMonth(j);
_2e.month=j;
break;
}
}
if(j==_38.length){
dojo.debug("dojo.date.parse: Could not parse month name: '"+v+"'.");
return null;
}
}else{
_2d.setMonth(v-1);
_2e.month=v-1;
}
break;
case "E":
case "e":
if(!_20.strict){
v=v.toLowerCase();
}
var _3a=_22["days-format-"+_2c[l-3]].concat();
for(var j=0;j<_3a.length;j++){
if(!_20.strict){
_3a[j]=_3a[j].toLowerCase();
}
if(v==_3a[j]){
break;
}
}
if(j==_3a.length){
dojo.debug("dojo.date.parse: Could not parse weekday name: '"+v+"'.");
return null;
}
break;
case "d":
_2d.setDate(v);
_2e.date=v;
break;
case "a":
var am=_20.am||_22.am;
var pm=_20.pm||_22.pm;
if(!_20.strict){
v=v.replace(/\./g,"").toLowerCase();
am=am.replace(/\./g,"").toLowerCase();
pm=pm.replace(/\./g,"").toLowerCase();
}
if(_20.strict&&v!=am&&v!=pm){
dojo.debug("dojo.date.parse: Could not parse am/pm part.");
return null;
}
var _3d=_2d.getHours();
if(v==pm&&_3d<12){
_2d.setHours(_3d+12);
}else{
if(v==am&&_3d==12){
_2d.setHours(0);
}
}
break;
case "K":
if(v==24){
v=0;
}
case "h":
case "H":
case "k":
if(v>23){
dojo.debug("dojo.date.parse: Illegal hours value");
return null;
}
_2d.setHours(v);
break;
case "m":
_2d.setMinutes(v);
break;
case "s":
_2d.setSeconds(v);
break;
case "S":
_2d.setMilliseconds(v);
break;
default:
dojo.unimplemented("dojo.date.parse: unsupported pattern char="+grp.charAt(0));
}
}
if(_2e.year&&_2d.getFullYear()!=_2e.year){
dojo.debug("Parsed year: '"+_2d.getFullYear()+"' did not match input year: '"+_2e.year+"'.");
return null;
}
if(_2e.month&&_2d.getMonth()!=_2e.month){
dojo.debug("Parsed month: '"+_2d.getMonth()+"' did not match input month: '"+_2e.month+"'.");
return null;
}
if(_2e.date&&_2d.getDate()!=_2e.date){
dojo.debug("Parsed day of month: '"+_2d.getDate()+"' did not match input day of month: '"+_2e.date+"'.");
return null;
}
return _2d;
};