blob: 484675919063c3afad4a4d41c00c7e9ecbd49ec5 [file] [log] [blame]
/*
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["dojox.date.buddhist"]){
dojo._hasResource["dojox.date.buddhist"]=true;
dojo.provide("dojox.date.buddhist");
dojo.experimental("dojox.date.buddhist");
dojo.require("dojox.date.buddhist.Date");
dojo.require("dojo.date");
dojox.date.buddhist.getDaysInMonth=function(_1){
return dojo.date.getDaysInMonth(_1.toGregorian());
};
dojox.date.buddhist.isLeapYear=function(_2){
return dojo.date.isLeapYear(_2.toGregorian());
};
dojox.date.buddhist.compare=function(_3,_4,_5){
return dojo.date.compare(_3,_4,_5);
};
dojox.date.buddhist.add=function(_6,_7,_8){
var _9=new dojox.date.buddhist.Date(_6);
switch(_7){
case "day":
_9.setDate(_6.getDate(true)+_8);
break;
case "weekday":
var _a,_b;
var _c=_8%5;
if(!_c){
_a=(_8>0)?5:-5;
_b=(_8>0)?((_8-5)/5):((_8+5)/5);
}else{
_a=_c;
_b=parseInt(_8/5);
}
var _d=_6.getDay();
var _e=0;
if(_d==6&&_8>0){
_e=1;
}else{
if(_d==0&&_8<0){
_e=-1;
}
}
var _f=_d+_a;
if(_f==0||_f==6){
_e=(_8>0)?2:-2;
}
_8=(7*_b)+_a+_e;
_9.setDate(_6.getDate(true)+_8);
break;
case "year":
_9.setFullYear(_6.getFullYear()+_8);
break;
case "week":
_8*=7;
_9.setDate(_6.getDate(true)+_8);
break;
case "month":
_9.setMonth(_6.getMonth()+_8);
break;
case "hour":
_9.setHours(_6.getHours()+_8);
break;
case "minute":
_9.setMinutes(_6.getMinutes()+_8);
break;
case "second":
_9.setSeconds(_6.getSeconds()+_8);
break;
case "millisecond":
_9.setMilliseconds(_6.getMilliseconds()+_8);
break;
}
return _9;
};
dojox.date.buddhist.difference=function(_10,_11,_12){
_11=_11||new dojox.date.buddhist.Date();
_12=_12||"day";
var _13=_10.getFullYear()-_11.getFullYear();
var _14=1;
switch(_12){
case "weekday":
var _15=Math.round(dojox.date.buddhist.difference(_10,_11,"day"));
var _16=parseInt(dojox.date.buddhist.difference(_10,_11,"week"));
var mod=_15%7;
if(mod==0){
_15=_16*5;
}else{
var adj=0;
var _17=_11.getDay();
var _18=_10.getDay();
_16=parseInt(_15/7);
mod=_15%7;
var _19=new dojox.date.buddhist.Date(_10);
_19.setDate(_19.getDate(true)+(_16*7));
var _1a=_19.getDay();
if(_15>0){
switch(true){
case _17==5:
adj=-1;
break;
case _17==6:
adj=0;
break;
case _18==5:
adj=-1;
break;
case _18==6:
adj=-2;
break;
case (_1a+mod)>5:
adj=-2;
}
}else{
if(_15<0){
switch(true){
case _17==5:
adj=0;
break;
case _17==6:
adj=1;
break;
case _18==5:
adj=2;
break;
case _18==6:
adj=1;
break;
case (_1a+mod)<0:
adj=2;
}
}
}
_15+=adj;
_15-=(_16*2);
}
_14=_15;
break;
case "year":
_14=_13;
break;
case "month":
var _1b=(_10.toGregorian()>_11.toGregorian())?_10:_11;
var _1c=(_10.toGregorian()>_11.toGregorian())?_11:_10;
var _1d=_1b.getMonth();
var _1e=_1c.getMonth();
if(_13==0){
_14=_1b.getMonth()-_1c.getMonth();
}else{
_14=12-_1e;
_14+=_1d;
var i=_1c.getFullYear()+1;
var e=_1b.getFullYear();
for(i;i<e;i++){
_14+=12;
}
}
if(_10.toGregorian()<_11.toGregorian()){
_14=-_14;
}
break;
case "week":
_14=parseInt(dojox.date.buddhist.difference(_10,_11,"day")/7);
break;
case "day":
_14/=24;
case "hour":
_14/=60;
case "minute":
_14/=60;
case "second":
_14/=1000;
case "millisecond":
_14*=_10.toGregorian().getTime()-_11.toGregorian().getTime();
}
return Math.round(_14);
};
}