function makeArray(n) {
        this.length = n
        for (var i=1; i <= n; i++)
                this[i] = null
                return this
}

var daysinmonth = new makeArray(12)

daysinmonth[1] = 31
daysinmonth[2] = 28
daysinmonth[3] = 31
daysinmonth[4] = 30
daysinmonth[5] = 31
daysinmonth[6] = 30
daysinmonth[7] = 31
daysinmonth[8] = 31
daysinmonth[9] = 30
daysinmonth[10] = 31
daysinmonth[11] = 30
daysinmonth[12] = 31

var monthname = new makeArray(12)

monthname[1] = "January"
monthname[2] = "February"
monthname[3] = "March"
monthname[4] = "April"
monthname[5] = "May"
monthname[6] = "June"
monthname[7] = "July"
monthname[8] = "August"
monthname[9] = "September"
monthname[10] = "October"
monthname[11] = "November"
monthname[12] = "December"

var monthnum = new makeArray(9)

// 280 days broken into 40 weeks 

monthnum[0] = "pre-first"
monthnum[1] = "first"
monthnum[2] = "first"
monthnum[3] = "second"
monthnum[4] = "third"
monthnum[5] = "fourth"
monthnum[6] = "fifth"
monthnum[7] = "sixth"
monthnum[8] = "seventh"
monthnum[9] = "eighth"
monthnum[10] = "ninth"
monthnum[11] = "ninth +"

// Calculate the Current Month

function calcCurrentMonth(month,day,year) {
   startday = eval(day);
   startmonth = eval(month);
   startyear = eval(year);

   var today = new Date();
   var currMonth = today.getMonth() + 1;
   var currDay = today.getDate();
   var currYear = today.getYear();
   var daysthismonth;
   var days_since = 0;
   if (currYear < 1900){
      currYear = currYear + 1900;
   }

   while (startyear < currYear || (startyear == currYear && startmonth < currMonth)){
      if (startmonth == 2 && (startyear % 4) == 0) 
         daysthismonth = 29;
      else
         daysthismonth = daysinmonth[startmonth];
	   
      days_since = days_since + daysthismonth;
      startmonth++;
      if (startmonth > 12){
	 startyear++;
	 startmonth = 1;
      }
   }

   if (startyear == currYear && startmonth == currMonth)
      days_since = days_since + eval(currDay) - startday;
   else
      days_since = -1;

   var offset = ((days_since + 14) / 28);
   var index = Math.round(offset);
   if (index > 11){
      index = 11;
   }

   var monthstring = monthnum[index];
   return monthstring;
}

// Calculate the date string

function calcNewDate(month,day,year,daystoadd) {
   dueday = eval(day) + daystoadd
   duemonth = month
   dueyear = eval(year)
   var daysthismonth
   for (var i = 0; i < 12; i++) {
      if (duemonth == 2 && (dueyear % 4) == 0) {
         daysthismonth = 29
      } else
         daysthismonth = daysinmonth[duemonth]

      if (dueday > daysthismonth) {
         dueday = dueday - daysthismonth
         duemonth++
         if (duemonth > 12) {
            dueyear++
            duemonth = 1
         }
      }
      else
         break
   }

   var datestring = monthname[duemonth] + " " + dueday + ", " + dueyear
   return datestring
}

// Get the date entered and calculate the rest of the dates

function compute() {
   var day = document.f.date.selectedIndex + 1;
   var year = document.f.year[document.f.year.selectedIndex].value;
   var month = document.f.month[document.f.month.selectedIndex].value;
   showdiv("calculatorresults");
   document.getElementById("duedate").innerHTML = calcNewDate(month,day,year,280);
   document.getElementById("whichmonth").innerHTML = calcCurrentMonth(month,day,year);
}
