function MyDate(){this.setFromDate=setFromDateMD;
this.setFromString=setFromStringMD;
this.setFromInt=setFromIntMD;
this.setFromValues=setFromValuesMD;
this.getAsString=getAsStringMD;
this.getAsDate=getAsDateMD;
this.getAsInt=getAsIntMD;
this.compare=compareMD;
this.diff=diffMD;
this.checkIsValid=checkIsValidMD;
this.makeValid=makeValidMD;
this.addDays=addDaysMD;
this.addWeeks=addWeeksMD;
this.addMonths=addMonthsMD;
this.addYears=addYearsMD;
this.getDayOfYear=getDayOfYearMD;
this.getDaysInMonth=getDaysInMonthMD;
this.getDayOfWeek=getDayOfWeekMD;
this.getDayOfWeekName=getDayOfWeekNameMD;
this.getWeekInMonth=getWeekInMonthMD;
this.setWeekInMonth=setWeekInMonthMD;
this.getDayOfWeekInMonth=getDayOfWeekInMonthMD;
this.getMaxDayOfWeekInMonth=getMaxDayOfWeekInMonthMD;
this.getMonthName=getMonthNameMD;
this.year=0;
this.month=0;
this.day=0
}function MyTime(){this.setFromString=setFromStringMT;
this.setFromDate=setFromDateMT;
this.setFromInt=setFromIntMT;
this.setFromValues=setFromValuesMT;
this.getAsString=getAsStringMT;
this.getAsDate=getAsDateMT;
this.getAsInt=getAsIntMT;
this.addSeconds=addSecondsMT;
this.addMinutes=addMinutesMT;
this.addHours=addHoursMT;
this.compare=compareMT;
this.diff=compareMT;
this.checkIsValid=checkIsValidMT;
this.makeValid=makeValidMT;
this.hour=0;
this.minute=0;
this.second=0
}var months=new Array("January","Feburary","March","April","May","June","July","August","September","October","November","December");
var monthsShort=new Array("Jan","Feb","Mar","Apr","May","June","July","Aug","Sep","Oct","Nov","Dec");
var daysOfWeek=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var daysShort=new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var monthStartDay=new Array(0,31,59,90,120,151,181,212,243,273,304,334);
var TIMESTAMP="TIMESTAMP";
function setFromDateMD(a){this.year=a.getYear();
if(this.year<1000){this.year+=1900
}this.month=a.getMonth()+1;
this.day=a.getDate();
return this
}function setFromStringMD(a,b){if(a==TIMESTAMP){return this.setFromDate(currentDateTime())
}var c=parseDate(a);
if(c.length!=3||c[0]==""||c[1]==""||c[2]==""){this.year=null;
return this
}this.month=parseInt(c[0],10);
this.day=parseInt(c[1],10);
this.year=parseInt(c[2],10);
if(this.year<100){if(b==null){b=(currentYear()+20)%100
}this.year=2000+((this.year>=b)?this.year-100:this.year)
}return this
}function setFromIntMD(b){var a=new Date();
a.setTime(b);
this.setFromDate(a);
return this
}function setFromValuesMD(a,c,b){this.year=a;
this.month=c;
this.day=b;
return this
}var NUMERIC_MONTH=2,SHORT_MONTH=3,LONG_MONTH=4;
var NO_YEAR=0,SHORT_YEAR=2,FULL_YEAR=4;
function getAsStringMD(d,a){var b="",c=", ";
if(d==SHORT_MONTH){b+=this.getMonthName(true)+" "+this.day
}else{if(d>=LONG_MONTH){b+=this.getMonthName(false)+" "+this.day
}else{b+=twoDigit(this.month)+"/"+twoDigit(this.day);
c="/"
}}if(a==SHORT_YEAR){b+=c+twoDigit(this.year%100)
}else{if(a!=NO_YEAR){b+=c+this.year
}}return b
}function getAsDateMD(a){if(a!=null){a.setDate(this.day);
a.setMonth(this.month-1);
a.setYear(this.year);
return a
}return new Date(this.year,this.month-1,this.day)
}function getAsIntMD(){return this.getAsDate().getTime()
}function compareMD(a){return this.getAsInt()-a.getAsInt()
}function diffMD(b){if(b.compare(this)>0){return -b.diff(this)
}if(this.year==b.year){return this.getDayOfYear()-b.getDayOfYear()
}var a=daysInYear(b.year)-b.getDayOfYear()+this.getDayOfYear();
var c=b.year+1;
while(this.year>c){a+=daysInYear(c++)
}return a
}function checkIsValidMD(){if(this.year==null){return"Please enter a valid date."
}if(this.year<100){return"The date requires a 4 digit year."
}if(this.year<1000){return"The year must be after 1000 AD."
}if(this.month<1||this.month>12){return this.month+" is not a valid month."
}if(this.day>this.getDaysInMonth()){return(this.month==2&&this.day==29)?(this.year+" is not a leap year."):(this.getMonthName()+" does not have "+this.day+" days.")
}if(this.day<1){return this.day+" is not a valid day of month."
}return""
}function makeValidMD(a){while(this.month<1||this.day<1){if(this.month<1){this.year--;
this.month+=12
}else{this.month--;
this.day+=(this.month<1)?31:this.getDaysInMonth()
}}while(this.month>12||this.day>this.getDaysInMonth()){if(this.month>12){this.month-=12;
this.year++
}else{if(a){this.day=this.getDaysInMonth()
}else{this.day-=this.getDaysInMonth();
this.month++
}}}}function addDaysMD(a){this.day+=a;
this.makeValid()
}function addWeeksMD(a){this.addDays(a*7)
}function addMonthsMD(b,a){this.month+=b;
this.makeValid(a)
}function addYearsMD(b,a){this.year+=b;
this.makeValid(a)
}function getDayOfYearMD(){var a=monthStartDay[this.month-1]+this.day;
if(this.month>2&&isLeapYear(this.year)){a++
}return a
}function getDaysInMonthMD(){if(this.month==4||this.month==6||this.month==9||this.month==11){return 30
}if(this.month!=2){return 31
}if(isLeapYear(this.year)){return 29
}return 28
}function getDayOfWeekMD(){return this.getAsDate().getDay()
}function getDayOfWeekNameMD(a){if(a==true){return daysShort[this.getDayOfWeek()]
}return daysOfWeek[this.getDayOfWeek()]
}function getWeekInMonthMD(){return parseInt((this.day-((this.day+6-this.getDayOfWeek()-1)%7+1)+6)/7)
}function setWeekInMonthMD(a){this.addWeeks(a-this.getWeekInMonth())
}function getDayOfWeekInMonthMD(){return parseInt((this.day-1)/7)+1
}function getMaxDayOfWeekInMonthMD(){return(this.getDaysInMonth()-((this.day-1)%7)>28)?5:4
}function getMonthNameMD(a){if(a==true){return monthsShort[this.month-1]
}return months[this.month-1]
}function setFromStringMT(c){if(c==TIMESTAMP){return this.setFromDate(currentDateTime())
}var a,b=parseTime(c);
if(b.length<3||b[0]==""){this.hour=null;
return this
}for(a in b){b[a]=parseInt(b[a],10);
if(isNaN(b[a])){b[a]=0
}}this.hour=parseInt(b[0],10);
this.minute=parseInt(b[1],10);
this.second=parseInt(b[2],10);
return this
}function setFromDateMT(a){this.hour=a.getHours();
this.minute=a.getMinutes();
this.second=a.getSeconds();
return this
}function setFromIntMT(a){while(a<0){a+=24*60*60
}this.hour=parseInt(a/3600)%24;
this.minute=parseInt(a/60)%60;
this.second=a%60;
return this
}function setFromValuesMT(c,b,a){this.hour=c;
this.minute=b;
this.second=a;
return this
}function getAsStringMT(c,e){var b="";
if(e){b=twoDigit(this.hour)+":"+twoDigit(this.minute);
if(c){b+=":"+twoDigit(this.second)
}}else{var d="am";
var a=this.hour;
if(a>12){a-=12;
d="pm"
}else{if(a==12){d="pm"
}else{if(a==0){a+=12
}}}b=a+":"+twoDigit(this.minute);
if(c){b+=":"+twoDigit(this.second)
}b+=d
}return b
}function getAsDateMT(a){if(a!=null){a.setHours(this.hour);
a.setMinutes(this.minute);
a.setSeconds(this.second);
return a
}return new Date(1980,0,1,this.hour,this.minute,this.second)
}function getAsIntMT(){return this.hour*3600+this.minute*60+this.second
}function addSecondsMT(a){this.second+=a;
this.makeValid()
}function addMinutesMT(a){this.minute+=a;
this.makeValid()
}function addHoursMT(a){this.hour+=a;
this.makeValid()
}function compareMT(a){return this.getAsInt()-a.getAsInt()
}function checkIsValidMT(){if(this.hour==null){return"Please enter a valid time."
}if(this.hour>=24){return"There are only 24 hours in a day"
}if(this.minute>=60){return"There are only 60 minutes in an hour"
}if(this.second>=60){return"There are only 60 seconds in a minute"
}return""
}function makeValidMT(){this.setFromInt(this.getAsInt())
}var dateSeparators="/-\\. ";
var timeSeparators=".:";
var NUMERIC="0123456789";
var monthList="jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec";
function twoDigit(a){if(a==0){return"00"
}return(a<10)?"0"+a:a
}function parseDateTime(e,b){e=extract(e,NUMERIC+b);
var d=new Array(),c=0,a;
for(a=0;
a<e.length;
a++){if(b.indexOf(e.charAt(a))!=-1){if(d[c]!=null){++c
}}else{if(d[c]==null){d[c]=""
}d[c]+=e.charAt(a)
}}return d
}function parseDate(b){var c=parseDateTime(b,dateSeparators);
if(c.length!=3||c[0]==""||c[1]==""||c[2]==""){return smartDate(b,c)
}if(c[0].length==4){var a=c[0];
c[0]=c[1];
c[1]=c[2];
c[2]=a
}return c
}function parseMonthName(b){var a;
b=b.toLowerCase();
for(a=0;
a<12;
a++){if(b.indexOf(monthList.substring(a*4,a*4+3))!=-1){break
}}return a
}function smartDate(h,g){var e=new Array();
var f=parseMonthName(h);
if(f<12){var c,d="",a=-1;
e[0]=f+1;
c=false;
for(f=0;
f<h.length;
f++){if(NUMERIC.indexOf(h.charAt(f))!=-1){if(dayPos=-1){dayPos=f
}d+=h.charAt(f);
c=true
}else{if(c==true){break
}else{a=f
}}}if(d==""){e[1]="1";
e[2]=currentYear();
return e
}e[1]=d;
c=false;
d="";
for(f=h.length-1;
f>=0;
f--){if(NUMERIC.indexOf(h.charAt(f))!=-1){yearPos=f;
d=h.charAt(f)+d;
c=true
}else{if(c==true){break
}}}if(f!=a){e[2]=d
}else{if(e[1].charAt(0)=="0"||parseInt(e[1],10)>31){e[1]="1";
e[2]=d
}else{e[2]=currentYear()
}}if(e[1].length==4){var b=e[1];
e[1]=e[2];
e[2]=b
}}else{if(g.length==2||(g.length==3&&g[2]=="")){g[2]=currentYear();
return g
}h=extract(h,NUMERIC);
if(h.length<4||h.length>8){return e
}if(h.length==4){e[0]=h.charAt(0);
e[1]=h.charAt(1);
e[2]=h.substring(2)
}else{if(h.length==5||h.length==7){if(h.charAt(0)=="0"||(h.charAt(0)=="1"&&h.charAt(1)<="2"&&h.charAt(2)!="0")){e[0]=h.substring(0,2);
e[1]=h.charAt(2)
}else{e[0]=h.charAt(0);
e[1]=h.substring(1,3)
}e[2]=h.substring(3)
}else{if(h.length==6){if(h.substring(0,3).indexOf("0")==-1&&(h.substring(0,2)>"12"||h.substring(2,4)>"31"||h.substring(2,4)=="19"||h.substring(2,4)=="20")){e[0]=h.charAt(0);
e[1]=h.charAt(1);
e[2]=h.substring(2)
}else{e[0]=h.substring(0,2);
e[1]=h.substring(2,4);
e[2]=h.substring(4)
}}else{if(h.length==8){e[0]=h.substring(0,2);
e[1]=h.substring(2,4);
e[2]=h.substring(4)
}}}}}return e
}function parseTime(c){var b=parseDateTime(c,timeSeparators);
if(b.length>1||b[0]>""){if(b.length==1){if(b[0].length<3){b[1]="00"
}else{b[1]=b[0].substring(b[0].length-2);
b[0]=b[0].substring(0,b[0].length-2)
}}if(b.length==2){b[2]="00"
}var a=parseInt(b[0],10);
if(a>=1&&a<12&&c.toLowerCase().indexOf("p")!=-1){b[0]=a+12
}else{if(a==12&&c.toLowerCase().indexOf("a")!=-1){b[0]=(a-12)+""
}}}else{b.length=0
}return b
}function extract(d,a){var b="";
for(var c=0;
c<d.length;
c++){if(a.indexOf(d.charAt(c))!=-1){b+=d.charAt(c)
}}return b
}function isLeapYear(a){return a%4==0&&(a%100!=0||a%400==0)
}function daysInYear(a){return isLeapYear(a)?366:365
}function currentYear(){var a=currentDateTime().getYear();
if(a<1000){a+=1900
}return a
}var _SR_;
if(_SR_!=null){_SR_.notify("datetools.js")
};
