<script Language="JavaScript">
function makeArray() {
for (i = 0; i<makeArray.arguments.length; i++)
this[i + 1] = makeArray.arguments[i];
}
var months = new makeArray('January','February','March','April',
'May','June','July','August','September',
'October','November','December');
function nths(day) {
if (day == 1 || day == 21 || day == 31) return 'st';
if (day == 2 || day == 22) return 'nd';
if (day == 3 || day == 23) return 'rd';
return 'th';
}
function y2k(number) { return (number < 1000) ? number + 1900 : number; }
function daysInMonth(theYear, theMonth) {
var numDays = 27;
var refMonth = --theMonth;
while (refMonth == theMonth) {
var refDate = new Date(theYear, theMonth, ++numDays, 0, 0, 0, 0);
refMonth = refDate.getMonth();
}
return --numDays;
}
function addDaysToDate(myDate,days) {
return new Date(myDate.getTime() + days*24*60*60*1000);
}
function addMonthsToDate(startDate, numMonths) {
var addYears = Math.floor(numMonths/12);
var addMonths = numMonths - (addYears * 12);
var newMonth = startDate.getMonth() + addMonths;
if (startDate.getMonth() + addMonths > 11) {
++addYears;
newMonth = startDate.getMonth() + addMonths - 12;
}
var newDate = new Date(startDate.getYear()+addYears,newMonth,startDate.getDate(),startDate.getHours(),startDate.getMinutes(),startDate.getSeconds());
// adjust to correct month
while (newDate.getMonth() != newMonth) {
newDate = addDaysToDate(newDate, -1);
}
return newDate;
}
function addDuration(startDate, durationUnit, durationValue) {
var numMonths;
if (durationUnit == "YEAR")
numMonths = durationValue * 12;
else
if (durationUnit == "MONTH")
numMonths = durationValue;
else
if (durationUnit == "DAY") {
return addDaysToDate(startDate, durationValue);
}
else
return startDate(); // invalid durationUnit
return addMonthsToDate(startDate, numMonths);
}
function isValidDate(year, month, day) {
checkDate = new Date(year, --month, day, 0, 0, 0, 0);
return checkDate.getMonth() == month;
}
function formatDate(aDate) {
return aDate.getDate() + nths(aDate.getDate()) + ' ' + months[aDate.getMonth() + 1] + ' ' + y2k(aDate.getYear());
}
function testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit) {
document.writeln("Scenario " + scenario);
document.writeln("DurationValue " + durationValue.toString());
document.writeln("DurationUnit " + durationUnit.toString());
if (!isValidDate(startYear, startMonth, startDay)) {
document.writeln("Invalid start date " + startYear + "/" + (startMonth) + "/" + startDay);
}
else {
document.writeln("valid date");
startDate = new Date(startYear, startMonth-1, startDay, 0, 0, 0, 0);
document.writeln(formatDate(startDate));
endDate = addDuration(startDate, durationUnit, durationValue);
document.writeln(formatDate(endDate));
}
document.writeln();
}
function testLastActive() {
var scenario;
var startDate;
var endDate;
var startYear;
var startMonth;
var startDay;
var durationValue;
var durationUnit;
scenario=1;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=1;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=2;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=2;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=3;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=6;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=4;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=11;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=5;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=12;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=6;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=14;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=1;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=26;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=7;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=1;
durationUnit="YEAR";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=8;
startYear=2003;
startMonth=12;
startDay=31;
durationValue=3;
durationUnit="YEAR";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=9;
startYear=2003;
startMonth=2;
startDay=28;
durationValue=2;
durationUnit="YEAR";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=10;
startYear=2003;
startMonth=2;
startDay=29;
durationValue=2;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=11;
startYear=2002;
startMonth=1;
startDay=1;
durationValue=1;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=12;
startYear=2002;
startMonth=1;
startDay=1;
durationValue=2;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=13;
startYear=2002;
startMonth=2;
startDay=28;
durationValue=2;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=14;
startYear=2002;
startMonth=6;
startDay=31;
durationValue=2;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=15;
startYear=2002;
startMonth=7;
startDay=31;
durationValue=2;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=16;
startYear=2004;
startMonth=2;
startDay=29;
durationValue=1;
durationUnit="YEAR";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=17;
startYear=2002;
startMonth=2;
startDay=28;
durationValue=3;
durationUnit="DAY";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=18;
startYear=2002;
startMonth=10;
startDay=31;
durationValue=3;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=19;
startYear=2002;
startMonth=12;
startDay=01;
durationValue=3;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=20;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=12;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=21;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=14;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=22;
startYear=2002;
startMonth=01;
startDay=10;
durationValue=1;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=23;
startYear=2002;
startMonth=01;
startDay=20;
durationValue=1;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=24;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=1;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=25;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=2;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=26;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=6;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=27;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=11;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=28;
startYear=2002;
startMonth=08;
startDay=15;
durationValue=12;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=29;
startYear=2002;
startMonth=07;
startDay=31;
durationValue=14;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=30;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=26;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=31;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=1;
durationUnit="YEAR";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=32;
startYear=2002;
startMonth=12;
startDay=31;
durationValue=3;
durationUnit="YEAR";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=33;
startYear=2002;
startMonth=2;
startDay=28;
durationValue=2;
durationUnit="YEAR";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
scenario=34;
startYear=2002;
startMonth=2;
startDay=29;
durationValue=2;
durationUnit="MONTH";
testScenario(scenario,startDate,endDate,startYear,startMonth,startDay,durationValue,durationUnit);
}
testLastActive();
</script>
|