blob: 9f566582b220664e3a80ee5207727a6068b232ed [file] [log] [blame]
dojo.provide("dojo.date.common");
dojo.date.setDayOfYear=function(_1,_2){
_1.setMonth(0);
_1.setDate(_2);
return _1;
};
dojo.date.getDayOfYear=function(_3){
var _4=_3.getFullYear();
var _5=new Date(_4-1,11,31);
return Math.floor((_3.getTime()-_5.getTime())/86400000);
};
dojo.date.setWeekOfYear=function(_6,_7,_8){
if(arguments.length==1){
_8=0;
}
dojo.unimplemented("dojo.date.setWeekOfYear");
};
dojo.date.getWeekOfYear=function(_9,_a){
if(arguments.length==1){
_a=0;
}
var _b=new Date(_9.getFullYear(),0,1);
var _c=_b.getDay();
_b.setDate(_b.getDate()-_c+_a-(_c>_a?7:0));
return Math.floor((_9.getTime()-_b.getTime())/604800000);
};
dojo.date.setIsoWeekOfYear=function(_d,_e,_f){
if(arguments.length==1){
_f=1;
}
dojo.unimplemented("dojo.date.setIsoWeekOfYear");
};
dojo.date.getIsoWeekOfYear=function(_10,_11){
if(arguments.length==1){
_11=1;
}
dojo.unimplemented("dojo.date.getIsoWeekOfYear");
};
dojo.date.shortTimezones=["IDLW","BET","HST","MART","AKST","PST","MST","CST","EST","AST","NFT","BST","FST","AT","GMT","CET","EET","MSK","IRT","GST","AFT","AGTT","IST","NPT","ALMT","MMT","JT","AWST","JST","ACST","AEST","LHST","VUT","NFT","NZT","CHAST","PHOT","LINT"];
dojo.date.timezoneOffsets=[-720,-660,-600,-570,-540,-480,-420,-360,-300,-240,-210,-180,-120,-60,0,60,120,180,210,240,270,300,330,345,360,390,420,480,540,570,600,630,660,690,720,765,780,840];
dojo.date.getDaysInMonth=function(_12){
var _13=_12.getMonth();
var _14=[31,28,31,30,31,30,31,31,30,31,30,31];
if(_13==1&&dojo.date.isLeapYear(_12)){
return 29;
}else{
return _14[_13];
}
};
dojo.date.isLeapYear=function(_15){
var _16=_15.getFullYear();
return (_16%400==0)?true:(_16%100==0)?false:(_16%4==0)?true:false;
};
dojo.date.getTimezoneName=function(_17){
var str=_17.toString();
var tz="";
var _1a;
var pos=str.indexOf("(");
if(pos>-1){
pos++;
tz=str.substring(pos,str.indexOf(")"));
}else{
var pat=/([A-Z\/]+) \d{4}$/;
if((_1a=str.match(pat))){
tz=_1a[1];
}else{
str=_17.toLocaleString();
pat=/ ([A-Z\/]+)$/;
if((_1a=str.match(pat))){
tz=_1a[1];
}
}
}
return tz=="AM"||tz=="PM"?"":tz;
};
dojo.date.getOrdinal=function(_1d){
var _1e=_1d.getDate();
if(_1e%100!=11&&_1e%10==1){
return "st";
}else{
if(_1e%100!=12&&_1e%10==2){
return "nd";
}else{
if(_1e%100!=13&&_1e%10==3){
return "rd";
}else{
return "th";
}
}
}
};
dojo.date.compareTypes={DATE:1,TIME:2};
dojo.date.compare=function(_1f,_20,_21){
var dA=_1f;
var dB=_20||new Date();
var now=new Date();
with(dojo.date.compareTypes){
var opt=_21||(DATE|TIME);
var d1=new Date((opt&DATE)?dA.getFullYear():now.getFullYear(),(opt&DATE)?dA.getMonth():now.getMonth(),(opt&DATE)?dA.getDate():now.getDate(),(opt&TIME)?dA.getHours():0,(opt&TIME)?dA.getMinutes():0,(opt&TIME)?dA.getSeconds():0);
var d2=new Date((opt&DATE)?dB.getFullYear():now.getFullYear(),(opt&DATE)?dB.getMonth():now.getMonth(),(opt&DATE)?dB.getDate():now.getDate(),(opt&TIME)?dB.getHours():0,(opt&TIME)?dB.getMinutes():0,(opt&TIME)?dB.getSeconds():0);
}
if(d1.valueOf()>d2.valueOf()){
return 1;
}
if(d1.valueOf()<d2.valueOf()){
return -1;
}
return 0;
};
dojo.date.dateParts={YEAR:0,MONTH:1,DAY:2,HOUR:3,MINUTE:4,SECOND:5,MILLISECOND:6,QUARTER:7,WEEK:8,WEEKDAY:9};
dojo.date.add=function(dt,_29,_2a){
if(typeof dt=="number"){
dt=new Date(dt);
}
function fixOvershoot(){
if(sum.getDate()<dt.getDate()){
sum.setDate(0);
}
}
var sum=new Date(dt);
with(dojo.date.dateParts){
switch(_29){
case YEAR:
sum.setFullYear(dt.getFullYear()+_2a);
fixOvershoot();
break;
case QUARTER:
_2a*=3;
case MONTH:
sum.setMonth(dt.getMonth()+_2a);
fixOvershoot();
break;
case WEEK:
_2a*=7;
case DAY:
sum.setDate(dt.getDate()+_2a);
break;
case WEEKDAY:
var dat=dt.getDate();
var _2d=0;
var _2e=0;
var _2f=0;
var _30=0;
var adj=0;
var mod=_2a%5;
if(mod==0){
_2e=(_2a>0)?5:-5;
_2d=(_2a>0)?((_2a-5)/5):((_2a+5)/5);
}else{
_2e=mod;
_2d=parseInt(_2a/5);
}
_2f=dt.getDay();
if(_2f==6&&_2a>0){
adj=1;
}else{
if(_2f==0&&_2a<0){
adj=-1;
}
}
_30=(_2f+_2e);
if(_30==0||_30==6){
adj=(_2a>0)?2:-2;
}
sum.setDate(dat+(7*_2d)+_2e+adj);
break;
case HOUR:
sum.setHours(sum.getHours()+_2a);
break;
case MINUTE:
sum.setMinutes(sum.getMinutes()+_2a);
break;
case SECOND:
sum.setSeconds(sum.getSeconds()+_2a);
break;
case MILLISECOND:
sum.setMilliseconds(sum.getMilliseconds()+_2a);
break;
default:
break;
}
}
return sum;
};
dojo.date.diff=function(dtA,dtB,_35){
if(typeof dtA=="number"){
dtA=new Date(dtA);
}
if(typeof dtB=="number"){
dtB=new Date(dtB);
}
var _36=dtB.getFullYear()-dtA.getFullYear();
var _37=(dtB.getMonth()-dtA.getMonth())+(_36*12);
var _38=dtB.getTime()-dtA.getTime();
var _39=_38/1000;
var _3a=_39/60;
var _3b=_3a/60;
var _3c=_3b/24;
var _3d=_3c/7;
var _3e=0;
with(dojo.date.dateParts){
switch(_35){
case YEAR:
_3e=_36;
break;
case QUARTER:
var mA=dtA.getMonth();
var mB=dtB.getMonth();
var qA=Math.floor(mA/3)+1;
var qB=Math.floor(mB/3)+1;
qB+=(_36*4);
_3e=qB-qA;
break;
case MONTH:
_3e=_37;
break;
case WEEK:
_3e=parseInt(_3d);
break;
case DAY:
_3e=_3c;
break;
case WEEKDAY:
var _43=Math.round(_3c);
var _44=parseInt(_43/7);
var mod=_43%7;
if(mod==0){
_43=_44*5;
}else{
var adj=0;
var _47=dtA.getDay();
var _48=dtB.getDay();
_44=parseInt(_43/7);
mod=_43%7;
var _49=new Date(dtA);
_49.setDate(_49.getDate()+(_44*7));
var _4a=_49.getDay();
if(_3c>0){
switch(true){
case _47==6:
adj=-1;
break;
case _47==0:
adj=0;
break;
case _48==6:
adj=-1;
break;
case _48==0:
adj=-2;
break;
case (_4a+mod)>5:
adj=-2;
break;
default:
break;
}
}else{
if(_3c<0){
switch(true){
case _47==6:
adj=0;
break;
case _47==0:
adj=1;
break;
case _48==6:
adj=2;
break;
case _48==0:
adj=1;
break;
case (_4a+mod)<0:
adj=2;
break;
default:
break;
}
}
}
_43+=adj;
_43-=(_44*2);
}
_3e=_43;
break;
case HOUR:
_3e=_3b;
break;
case MINUTE:
_3e=_3a;
break;
case SECOND:
_3e=_39;
break;
case MILLISECOND:
_3e=_38;
break;
default:
break;
}
}
return Math.round(_3e);
};