         // how reliable is this test?
         isIE = (document.all ? true : false);
	 isDOM = (document.getElementById ? true : false);

         // Initialize arrays.
         var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
	 "Aug", "Sep", "Oct", "Nov", "Dec");
         var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,
            30, 31, 30, 31);
	 var displayMonth = new Date().getMonth();
	 var displayYear = new Date().getFullYear();
	 var displayDivName;
	 var displayElement;
	 var TitlebarColor="";
	 var CalColor="";
	 var TFColor="";
	 var WDFColor="";
	 var DGColor="";
	 var imgPath="";
         function getDays(month, year) {
            // Test for leap year when February is selected.
            if (1 == month)
               return ((0 == year % 4) && (0 != (year % 100))) ||
                  (0 == year % 400) ? 29 : 28;
            else
               return daysInMonth[month];
         }

         function getToday() {
            // Generate today's date.
            this.now = new Date();
            this.year = this.now.getFullYear();
            this.month = this.now.getMonth();
            this.day = this.now.getDate();
         }

         // Start with a calendar for today.
         today = new getToday();

         function newCalendar(eltName,attachedElement,path,TitleColor,gridColor,tfcolor,wdfcolor,dgcolor) {
         imgPath=path
         TitlebarColor=TitleColor;
         if(TitlebarColor=="")
         {
         	TitlebarColor="rgb(255,154,93)";
         }
         CalColor=gridColor;
         if(CalColor=="")
         {
         	CalColor="rgb(228,228,228)";
         }
         TFColor=tfcolor;
         if(TFColor=="")
         {
         	TFColor="#000000";
         }
         WDFColor=wdfcolor;
         if(WDFColor=="")
         {
         	WDFColor="#003366"
         }
         DGColor=dgcolor;
         if(DGColor=="")
         {
         	DGColor="#003366";
         }
         
	    if (attachedElement) {
	       if (displayDivName && displayDivName != eltName) hideElement(displayDivName);
	       displayElement = attachedElement;
	    }
	    displayDivName = eltName;
            today = new getToday();
            var parseYear = parseInt(displayYear + '');
            var newCal = new Date(parseYear,displayMonth,1);
            var day = -1;
            var startDayOfWeek = newCal.getDay();
            if ((today.year == newCal.getFullYear()) &&
                  (today.month == newCal.getMonth()))
	    {
               day = today.day;
            }
            var intDaysInMonth =
               getDays(newCal.getMonth(), newCal.getFullYear());
            var daysGrid = makeDaysGrid(startDayOfWeek,day,intDaysInMonth,newCal,eltName,imgPath)
	    if (isIE) {
	       var elt = document.all[eltName];
	       elt.innerHTML = daysGrid;
            } else if (isDOM) {
	       var elt = document.getElementById(eltName);
	       elt.innerHTML = daysGrid;
	    } else {
	       var elt = document.layers[eltName].document;
	       elt.open();
	       elt.write(daysGrid);
	       elt.close();
	    }
	 }

	 function incMonth(delta,eltName) {
	   displayMonth += delta;
	   if (displayMonth >= 12) {
	     displayMonth = 0;
	     incYear(1,eltName);
	   } else if (displayMonth <= -1) {
	     displayMonth = 11;
	     incYear(-1,eltName);
	   } else {
	     newCalendar(eltName,"",imgPath,TitlebarColor,CalColor,TFColor,WDFColor,DGColor);
	   }
	 }

	 function incYear(delta,eltName) {
	   displayYear = parseInt(displayYear + '') + delta;
	   newCalendar(eltName,"",imgPath,TitlebarColor,CalColor,TFColor,WDFColor,DGColor);
	 }

	 function makeDaysGrid(startDay,day,intDaysInMonth,newCal,eltName,path) {
	 	    var daysGrid;
	 	    var month = newCal.getMonth();
	 	    var year = newCal.getFullYear();
	 	    var isThisYear = (year == new Date().getFullYear());
	 	    var isThisMonth = (day > -1)
	 	    daysGrid = '<table cellspacing=0 cellpadding=0 rules=none bordercolor=#000000 Style="border:1px;"><tr bgcolor='+TitlebarColor+'><td nowrap align=center>';
	 	    daysGrid += '<font face="arial" size=2 color=#ffffff>';
	 	    daysGrid += '<a href="javascript:incMonth(-1,\'' + eltName + '\')"><img src="'+path+'prev.gif" border=0  Alt="Last Month"></a>&nbsp;';
	 	    daysGrid += '<b>';
	 	    if (isThisMonth) { daysGrid += '<font color='+TFColor+' face=arial size=2>' + months[month] + '</font>'; }
	 	    else { daysGrid +='<font color='+TFColor+' face=arial size=2>'+ months[month]+ '</font>'; }
	 	    daysGrid += '</b>&nbsp;';
	 
	 	    daysGrid += '<a href="javascript:incMonth(1,\'' + eltName + '\')"><img src="'+path+'next.gif" border=0  Alt="Next Month"></a>';
	 	    daysGrid += '</td><td nowrap align=center>';
	 	    daysGrid += '<a href="javascript:incYear(-1,\'' + eltName + '\')"><img src="'+path+'prev.gif" border=0  Alt="Last Year"></a>';
	 	    daysGrid += '&nbsp;<b>';
	 	    if (isThisYear) { daysGrid += '<font color='+TFColor+'  face=arial size=2>' + year + '</font>'; }
	 	    else { daysGrid += '<font color='+TFColor+'  face=arial size=2>'+year+'</font>'; }
	 	    daysGrid += '</b>&nbsp;';
	 	    daysGrid += '<a href="javascript:incYear(1,\'' + eltName + '\')"><img src="'+path+'next.gif" border=0  Alt="Next Year"></a>';
	 	    daysGrid += '</td><td align=right><a href="javascript:hideElement(\'' + eltName + '\')"><img src="'+path+'closebtn.gif" border=0  Alt="Close Calendar"></a>';
	 	    daysGrid += '</td></tr><tr><td nowrap colspan=3><table bgcolor='+CalColor+'><tr>';		
	 	    daysGrid += '<td align=center><font color=#ff0000 face=arial size=2>Sun</font></td><td align=center><font color='+WDFColor+' face=arial size=2> Mon</font></td><td align=center><font color='+WDFColor+' face=arial size=2>Tue</font></td> <td align=center><font color='+WDFColor+' face=arial size=2>Wed</font></td> <td align=center><font color='+WDFColor+' face=arial size=2>Thu</font></td> <td align=center><font color='+WDFColor+' face=arial size=2>Fri</font></td><td align=center><font color='+WDFColor+' face=arial size=2>Sat</font></td></tr>';
	 	    //daysGrid+='<tr><td colspan=7><hr></td></tr>'	
	 	    var dayOfMonthOfFirstSunday = (7 - startDay + 1);
	 	    for (var intWeek = 0; intWeek < 6; intWeek++) {
	 	       var dayOfMonth;
	 	       daysGrid +='<tr>'
	 	       for (var intDay = 0; intDay < 7; intDay++) {
	 	         dayOfMonth = (intWeek * 7) + intDay + dayOfMonthOfFirstSunday - 7;
	 		if (dayOfMonth <= 0)
	 		 {
	 	           daysGrid += "<td>&nbsp;</td>";
	 		 }
	 		 else if (dayOfMonth <= intDaysInMonth) 
	 		 {
	 		   var color = DGColor
	 		   if (day > 0 && day == dayOfMonth) color="red";
	 		   if(intDay==0) color="red"; 
	 		   daysGrid += '<td align=center><a href="javascript:setDay(';
	 		   daysGrid += dayOfMonth + ',\'' + eltName + '\')" '
	 		   daysGrid += 'style="color:' + color + ';text-decoration:none">';
	 		   var dayString ='<font size=2 face=arial>'+ dayOfMonth + "</font></a></td>";
	 		   if (dayString.length == 6) dayString = '0' + dayString;
	 		   daysGrid += dayString;
	 		 }
	 	       }
	 	       if (dayOfMonth < intDaysInMonth) daysGrid += "</tr>";
	 	    }
	 	    return daysGrid + "</table></td></tr></table>";
	 	 }

	 function setDay(day,eltName) {
	   displayElement.value = (displayMonth + 1) + "/" + day + "/" + displayYear;
	   hideElement(eltName);
	 }

