Now      = new Date();
NowDay   = Now.getDate();
NowMonth = Now.getMonth();
NowYear  = Now.getYear();

function DaysInMonth(WhichMonth, WhichYear) {
  var DaysInMonth = 31;
  if (WhichMonth == "April" || WhichMonth == "June" || WhichMonth == "September" || 
      WhichMonth == "November") 
     DaysInMonth = 30;
  if (WhichMonth == "February" && (WhichYear/4) != Math.floor(WhichYear/4))	
     DaysInMonth = 28;
  if (WhichMonth == "February" && (WhichYear/4) == Math.floor(WhichYear/4))	
     DaysInMonth = 29;
  return DaysInMonth;
}

function ChangeOptionDays(Which) {
  DaysObj  = eval("document.forms[0]." + Which + "Day"); 
  MonthObj = eval("document.forms[0]." + Which + "Month");
  YearObj  = eval("document.forms[0]." + Which + "Year"); 
  Month = MonthObj[MonthObj.selectedIndex].text;
  Year  = YearObj[YearObj.selectedIndex].text;
  DaysForThisSelection = DaysInMonth(Month, Year);
  CurrentDaysInSelection = DaysObj.length;  
  if (CurrentDaysInSelection > DaysForThisSelection) {
    for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++) {
      DaysObj.options[DaysObj.options.length - 1] = null
    }
  }  
  if (DaysForThisSelection > CurrentDaysInSelection) {
    for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++) {
      NewOption = new Option(DaysObj.options.length + 1);
      DaysObj.add(NewOption);
    }
  }  
  if (DaysObj.selectedIndex < 0) DaysObj.selectedIndex == 0;
}

function monthList(month) {
   var labels = new Array(
      "January", "February", "March", "April",
      "May", "June", "July", "August", "September",
      "October", "November", "December"
   ); 
   var line = "";
   var selected = "";
   for (i = 1; i <= 12; i++) {
     if (month == i)
        selected = "selected"; 
     else
        selected = "";   
     line += "<option value="+ i +" "+ selected +">" + labels[i - 1] + "</option>\n";
   }
   return line;   
}

function dayList(day) {
   var line = "";
   var selected = "";  
   for (i = 1; i <= 31; i++) {
     if (day == i)
        selected = "selected"; 
     else
        selected = "";    
    line += "<option value="+ i +" "+ selected +">" + i + "</option>\n";
  }
  return line;
}

function yearList(YearsAhead, StartYear, year) {
   var line = "";
   var selected = "";  
   for (i = 0; i < YearsAhead; i++) {
      if (year == (parseInt(StartYear + i)))
         selected = "selected"; 
      else
         selected = "";     
     line += "<option value=" + parseInt(StartYear + i) + ">";
     line += StartYear + i + "</option>\n";
  }
  return line;
}

function SetToToday(Which) {
  DaysObject  = eval("document.forms[0]." + Which + "Day");
  MonthObject = eval("document.forms[0]." + Which + "Month");
  YearObject  = eval("document.forms[0]." + Which + "Year");
  YearObject[0].selected = true;
  MonthObject[NowMonth].selected = true;  
  ChangeOptionDays(Which);  
  DaysObject[NowDay-1].selected = true;
}

function setPointer(theRow, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
    var theCells = null;
    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
        || typeof(theRow.style) == 'undefined') {
        return false;
    }
    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }
    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
        && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        currentColor = theCells[0].style.backgroundColor;
        domDetect    = false;
    } // end 3
    // 4. Defines the new color
    // 4.1 Current color is the default one
    if (currentColor == ''
        || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
        if (theAction == 'over' && thePointerColor != '') {
            newColor = thePointerColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor = theMarkColor;
        }
    }
    // 4.1.2 Current color is the pointer one
    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()) {
        if (theAction == 'out') {
            newColor = theDefaultColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor = theMarkColor;
        }
    }
    // 4.1.3 Current color is the marker one
    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
        if (theAction == 'click') {
            newColor = (thePointerColor != '')
                     ? thePointerColor
                     : theDefaultColor;
        }
    } // end 4

    // 5. Sets the new color...
    if (newColor) {
        var c = null;
        // 5.1 ... with DOM compatible browsers except Opera
        if (domDetect) {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            } // end for
        }
        // 5.2 ... with other browsers
        else {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].style.backgroundColor = newColor;
            }
        }
    } // end 5
    return true;
} // end of the 'setPointer()' function