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 days = new Array("S", "M", "T", "W", "T", "F", "S");

today = new getToday();	
var element_id;
var global_cal_id="";

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() ; // Returned year XXXX
	this.month = this.now.getMonth();
	this.day = this.now.getDate();
}

 
function newCalendar(global_cal_id) 
{
	var cal_year = global_cal_id + "year";
	var cal_month = global_cal_id + "month";
	var index = document.all[cal_year].selectedIndex;
	var parseYear = parseInt(document.all[cal_year] [index].text);
 
	var newCal = new Date(parseYear , document.all[cal_month].selectedIndex, 1);
	var day = -1;
	var startDay = newCal.getDay();
	var daily = 0; 

	today = new getToday(); // 1st call
	if ((today.year == newCal.getFullYear() ) &&   (today.month == newCal.getMonth()))
	   day = today.day;
	// Cache the calendar table's tBody section, dayList.
	var cal_daylist = global_cal_id + "daylist";
	var tableCal = document.all[global_cal_id].tBodies[cal_daylist];

	var intDaysInMonth =
	   getDays(newCal.getMonth(), newCal.getFullYear() );

	for (var intWeek = 0; intWeek < tableCal.rows.length;  intWeek++)
		   for (var intDay = 0;
			 intDay < tableCal.rows[intWeek].cells.length;
			 intDay++)
	 {
		  var cell = tableCal.rows[intWeek].cells[intDay];
		  var cal_todayday = global_cal_id + "todayday";

		  // Start counting days.
		  if ((intDay == startDay) && (0 == daily))
			 daily = 1;

		  // Highlight the current day.
		  cell.style.color = (day == daily) ? "red" : "";
		  if(day == daily)
		  {
				document.all[cal_todayday].innerText= "Today: " +  (newCal.getMonth()+1)  + "/" + day + "/" + newCal.getFullYear() ;
		  }
		  // Output the day number into the cell.
		  if ((daily > 0) && (daily <= intDaysInMonth))
			 cell.innerText = daily++;
		  else
			 cell.innerText = " ";
	   }

}
	  
function getTodayDay(global_cal_id)
	 {
			    document.all[element_id].value = (today.month+1)+ "/" +  today.day  + 
					"/" + today.year; 
		        //document.all[global_cal_id].style.visibility="hidden";
				document.all[global_cal_id].style.display="none";
				 
	 }
 
function getDate(global_cal_id) 
		 {
            // This code executes when the user clicks on a day
            // in the calendar.
            if ("TD" == event.srcElement.tagName)
               // Test whether day is valid.
               if ("" != event.srcElement.innerText)
			   { 
				 var cal_year = global_cal_id + "year";
				 var cal_month = global_cal_id + "month";
				 var index = document.all[cal_year].selectedIndex;
				 var mn = document.all[cal_month].selectedIndex+1;
    			 var Year = document.all[cal_year] [index].text;
				 document.all[element_id].value=mn + "/" + event.srcElement.innerText + "/"  +Year;
		         //document.all[global_cal_id].style.visibility="hidden";
				 document.all[global_cal_id].style.display="none";
			 }
		 }
 
function GetBodyOffsetX(el_name, shift)
{
	var x;
	var y;
	x = 0;
	y = 0;

	var elem = document.all[el_name];
	do 
	{
		x += elem.offsetLeft;
		y += elem.offsetTop;
		if (elem.tagName == "BODY")
			break;
		elem = elem.offsetParent; 
	} while  (1 > 0);

	shift[0] = x;
	shift[1] = y;
	return  x;
}	

function SetCalendarOnElement(el_name,global_cal_id)
{
	if (el_name=="") 
	el_name = element_id;
	var shift = new Array(2);
	GetBodyOffsetX(el_name, shift);
	document.all[global_cal_id].style.pixelLeft  = shift[0]; //  - document.all[global_cal_id].offsetLeft;
	document.all[global_cal_id].style.pixelTop = shift[1] + 20 ;
}
	           
function ShowCalendar(elem_name,global_cal_id)
{
		if (elem_name=="")
		elem_name = element_id;

		element_id	= elem_name; // element_id is global variable
		newCalendar(global_cal_id);
		SetCalendarOnElement(element_id,global_cal_id);
		//document.all[global_cal_id].style.visibility = "visible";
		document.all[global_cal_id].style.display="inline";
}

function HideCalendar(global_cal_id)
{
	//document.all[global_cal_id].style.visibility="hidden";
	document.all[global_cal_id].style.display="none";
}

function toggleCalendar(elem_name,cal_name)
{
	var pre_global_cal_id=global_cal_id;
	global_cal_id = cal_name; 
	
	if(pre_global_cal_id != global_cal_id)
		{
		document.all[pre_global_cal_id].style.display="none";
		}
	
	if(document.all[global_cal_id].style.display=="none")
		{ShowCalendar(elem_name,global_cal_id);		
		}		
	else		
		{
		HideCalendar(global_cal_id);		
		}
}

//added by Jane
function outputMonth()
{
		for (var intLoop = 0; intLoop < months.length; intLoop++)
			document.write("<OPTION " +	(today.month == intLoop ? "Selected" : "") + ">" + months[intLoop]);
}

function outputYear()
{
	for (var intLoop = 2004; intLoop < 2028; intLoop++)
			document.write("<OPTION " + (today.year == intLoop ? "Selected" : "") + ">" + intLoop);
}

function outputDays()
{
	for (var intLoop = 0; intLoop < days.length; intLoop++)
		document.write("<TD style='COLOR: navy; FONT-FAMILY: Verdana; FONT-SIZE: 10px; FONT-WEIGHT: bold; TEXT-ALIGN: center'>" + days[intLoop] + "</TD>");
}

function generateIndividualDays()
{
	for (var intWeeks = 0; intWeeks < 6; intWeeks++)
		{
			document.write("<TR>");
			for (var intDays = 0; intDays < days.length; intDays++)
				document.write("<TD style='COLOR: black; FONT-FAMILY: Verdana; FONT-SIZE: 10px; TEXT-ALIGN: center'></TD>");
			document.write("</TR>");
		}
}

function generateCalendar(cal_name)
{
global_cal_id	= cal_name; // global_cal_id is global variable

document.write("<TABLE bgColor=#ffffff border=1 cellPadding=0 cellSpacing=0 id=" + global_cal_id + " style='DISPLAY: none; POSITION: absolute; Z-INDEX: 4'>");
document.write("<TBODY><TR>");
document.write("<TD colSpan=7 vAlign=center>");
document.write("<SELECT id='" + global_cal_id + "month' onchange=newCalendar(global_cal_id) style='COLOR: black; FONT-FAMILY: Verdana;'>");
			outputMonth();
document.write("</SELECT>");
document.write("<SELECT id='" + global_cal_id + "year' onchange=newCalendar(global_cal_id) style='COLOR: black; FONT-FAMILY: Verdana;'>");
			outputYear();
document.write("</SELECT></TD></TR>");

document.write("<TR>");
			outputDays();
document.write("</TR></TBODY>");


document.write("<TBODY id='" + global_cal_id + "daylist' onclick='getDate(global_cal_id)' vAlign=center>");
		generateIndividualDays();
document.write("</TBODY>");

document.write("<TBODY><TR>");
document.write("<TD colSpan=5 id='" + global_cal_id + "todayday' onclick='getTodayDay(global_cal_id)' style='COLOR: navy; FONT-SIZE: 10px; FONT-WEIGHT: bold;'></TD>");
document.write("<TD align=right colSpan=2><A href='javascript:HideCalendar(global_cal_id);'><SPAN style='COLOR: black; FONT-SIZE: 10px;FONT-WEIGHT: bold;'>Hide</SPAN></A></TD>");
document.write("</TR></TBODY>");
document.write("</TABLE>");
}



