// JavaScript Document
	// 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 months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var displayMonth = new Date().getMonth(); // current month
	var displayYear = new Date().getFullYear(); // current year
	var displayDivName;
	var element_month;
	var element_day;
	var element_year;

	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();
	//(eltName, element_month, element_day, element_year, element_month.value, element_day.value, element_year.value);
	function newCalendar(eltName, el_month, el_day, el_year, s_month, s_day, s_year) {
	    if (el_day && el_month && el_year) {
	       if (displayDivName && displayDivName != eltName) hideElement(displayDivName);
	       element_month = el_month;
		   element_day = el_day;
		   element_year = el_year;
	    }
	    displayDivName = eltName;
		today = new getToday();
		var day = -1;
		/* get the current values */
		if( s_day > 0 && s_day < 32 && s_month >0 && s_month < 13){
			displayYear = s_year;
			displayMonth = s_month-1;
			day = s_day;
		}
		var parseYear = parseInt(displayYear + '');
		var newCal = new Date(parseYear,displayMonth,1); //yyyy, mm, dd
		var startDayOfWeek = newCal.getDay();
		if ( (today.year == newCal.getFullYear() ) && (today.month == newCal.getMonth() ) ){
		   day = today.day;// -- DAY!!!!!!!
		}
		var intDaysInMonth = getDays(newCal.getMonth(), newCal.getFullYear());
		//var daysGrid = 'month: '+s_month+' -- ';
		var daysGrid = makeDaysGrid(startDayOfWeek,day,intDaysInMonth,newCal,eltName)
	    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);
	   }
	 }

	 function incYear(delta,eltName) {
	   displayYear = parseInt(displayYear + '') + delta;
	   newCalendar(eltName);
	 }

	 function makeDaysGrid(startDay,day,intDaysInMonth,newCal,eltName) {
	    var daysGrid;
	    var month = newCal.getMonth();
	    var year = newCal.getFullYear();
	    var isThisYear = (year == new Date().getFullYear());
	    var isThisMonth = (day > -1);
		var style_class;
	    daysGrid = '<div id="toolbar">';
	    daysGrid += '<a class="close" title="Close Calendar" href="javascript:hideElement(\'' + eltName + '\')">close X</a>';
	    daysGrid += 'Month <a  title="Previous Month" href="javascript:incMonth(-1,\'' + eltName + '\')">&laquo; </a>';

	    daysGrid += '<strong>';
	    if (isThisMonth) { daysGrid += '<span class="current">' + months[month] + '</span>'; }
	    else { daysGrid += months[month]; }
	    daysGrid += '</strong>';

	    daysGrid += '<a title="Next Month" href="javascript:incMonth(1,\'' + eltName + '\')"> &raquo;</a>';
	    daysGrid += '<br />';
	    daysGrid += 'Year <a title="Previous Year" href="javascript:incYear(-1,\'' + eltName + '\')">&laquo; </a>';

	    daysGrid += '<strong>';
	    if (isThisYear) { daysGrid += '<span class="current">' + year + '</span>'; }
	    else { daysGrid += ''+year; }
	    daysGrid += '<strong>';

	    daysGrid += '<a  title="Next Year" href="javascript:incYear(1,\'' + eltName + '\')"> &raquo;</a></div>';
	    daysGrid += '<table><tr><th>Su</th><th>Mo</th><th>Tu</th><th>We</th><th>Th</th><th>Fr</th><th>Sa</th>';
	    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 (intDay == 0 && dayOfMonth > intDaysInMonth) {
					daysGrid += '<td class="no_week" colspan="7" >&nbsp;</td> ';
					break;
				}
				else if (dayOfMonth <= 0 || dayOfMonth > intDaysInMonth) {
					daysGrid += '<td class="no_date">&nbsp;</td> ';
				}
				else if (dayOfMonth <= intDaysInMonth) {
		   			var color = "blue";
					style_class = '';
				   if (day > 0 && day == dayOfMonth){
					   color="red";
					   style_class=' class="today" ';
				   }
				   if(intDay == 0 || intDay == 6){
					   style_class=' class="weekend" ';
				   }
				   daysGrid += '<td'+style_class+'><a title="Click to select this day" href="javascript:setDay(';
				   daysGrid += dayOfMonth + ',\'' + eltName + '\')" '
				   daysGrid += 'style="color:' + color + '">';
				   var dayString = dayOfMonth + "</a> ";
				   if (dayString.length == 6) dayString = '0' + dayString;
				   daysGrid += dayString+'</td>';
		 		}
	       }
		   daysGrid += "</tr>";
	       //if (dayOfMonth < intDaysInMonth) daysGrid += "<br>&nbsp;";
	    }
	    return daysGrid + "</table>";
	 }

	 function setDay(day,eltName) {
	   //displayElement.value =  + "/" +  + "/" + ;
	   element_month.selectedIndex = (displayMonth + 0);
	   element_day.value = day;
	   element_year.value = displayYear;
	   hideElement(eltName);
	 }