var arrMonthDays = new Array("31","28","31","30","31","30","31","31","30","31","30","31");
var arrDayNames = new Array("Sunday","Monday", "Tuesday","Wednesday", "Thursday", "Friday", "Saturday");
var arrMonthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October",	"November", "December"); 

function result(theDate,numDays,type) 
{
	var today = new Date();
	var lmp = new Date(theDate);
	var lmpYear = lmp.getYear();
	var calcDate = lmp.getTime() + (numDays * 24*60*60*1000);
	var calc = new Date();
	calc.setTime(calcDate);
	calc.setHours(12);	// set the time to 12:00 pm

	var calcDay = arrDayNames[calc.getDay()];
	var calcMonth = arrMonthNames[calc.getMonth()];
	var calcYear = calc.getYear();


	//  Y2k test
	if (lmpYear < 200) 
	{
		lmpYear = lmpYear + 1900
	}
	if (calcYear < 200) 
	{
		calcYear = calcYear + 1900
	}

	yearChoice = calcYear - 1970;  // Set the index to the index of calcYear

	var calcResult = calcDay + ", " + calcMonth + " " + calc.getDate() + ", " + calcYear;

	if (type == "EDD")
	{
		document.eddForm.month.selectedIndex = calc.getMonth();
		document.eddForm.date.selectedIndex = calc.getDate() - 1;
		document.eddForm.year.selectedIndex = yearChoice;
	}

	if (type == "LMP") 
	{
		document.DueDate.month.selectedIndex = calc.getMonth();
		document.DueDate.date.selectedIndex = calc.getDate() - 1;
		document.DueDate.year.selectedIndex = yearChoice;
	}

	return calcResult;
}

function getLMP(form) 
{
	var EDDmonth = form.month.selectedIndex;
	var EDDdate = form.date.selectedIndex + 1;
	if (form.year.selectedIndex == -1) 
	{
		alert("Please select a year for Estimated Due Date.");
		form.year.focus();
		return false;
	}

	var EDDyear = form.year.options[form.year.selectedIndex].value

	if (!checkDate(EDDmonth,EDDdate,EDDyear)) 
	{
		alert(arrMonthNames[EDDmonth] + " only has " + arrMonthDays[EDDmonth] + " days.");
		form.date.focus();
		return false;
	}
	
	var edd = new Date(arrMonthNames[EDDmonth] + " " + EDDdate + ", " + EDDyear + " 12:00:00");

	var mp = -280;		// estimated due date
	var lmp = -280;		// estimated due date
	var conception = -266;	// conception (2 weeks)
	var secondtrim = -196;	// begining of second trimester
	var book = -140;	// class book date
	var thirdtrim = -91;	// begining of third trimester
	var birthday = 0;		// birthday
	
	document.ResultsForm.mp.value = result(edd.getTime(),mp,"");
	document.ResultsForm.conception.value = result(edd.getTime(),conception,"");
	document.ResultsForm.secondtrim.value = result(edd.getTime(),secondtrim,"");
	document.ResultsForm.book.value = result(edd.getTime(),book,"");
	document.ResultsForm.thirdtrim.value = result(edd.getTime(),thirdtrim,"");
	document.ResultsForm.birthday.value = result(edd.getTime(),birthday,"");
	result(edd.getTime(),lmp,"LMP");
	return true;
}

function getEDD(form) 
{
	var LMPmonth = form.month.selectedIndex;
	var LMPdate = form.date.selectedIndex + 1;
	if (form.year.selectedIndex == -1) 
	{
		alert("Please select a year for last menstrual period.");
		form.year.focus();
		return false;
	}

        var LMPyear = form.year.options[form.year.selectedIndex].value

	if (!checkDate(LMPmonth,LMPdate,LMPyear)) 
	{
		alert(arrMonthNames[LMPmonth] + " only has " + arrMonthDays[LMPmonth] + " days.");
		form.date.focus();
		return false;
	}
	
	var lmp = new Date(arrMonthNames[LMPmonth] + " " + LMPdate + ", " + LMPyear + " 12:00:00");

	var mp = 0;		// last menstrual period
	var edd = 280;		// estimated due date
	var conception = 14;	// conception (2 weeks)
	var secondtrim = 84;	// begining of second trimester
	var book = 140;		// class book date
	var thirdtrim = 189;	// begining of third trimester
	var birthday = 280;		// birthday

	document.ResultsForm.mp.value = result(lmp.getTime(),mp,"");
	document.ResultsForm.conception.value = result(lmp.getTime(),conception,"");
	document.ResultsForm.secondtrim.value = result(lmp.getTime(),secondtrim,"");
	document.ResultsForm.book.value = result(lmp.getTime(),book,"");
	document.ResultsForm.thirdtrim.value = result(lmp.getTime(),thirdtrim,"");
	document.ResultsForm.birthday.value = result(lmp.getTime(),birthday,"");
	result(lmp.getTime(),edd,"EDD");
	return true;
}


function checkDate(intMonth,intDay,intYear) 
{
	//  Reset February
	arrMonthDays[1] = 28;

	if ((intMonth == 1) && ((intYear % 4) == 0)) 
	//  Check leap year
	//  years divisible by 100 are not leap years except for the ones divisible by 400.
	{
		if (((intYear % 100) == 0) && ((intYear % 400) != 0)) 
		{
			arrMonthDays[1] = 28;
		} 
		else 
		{
			arrMonthDays[1] = 29;
		}
	}
	if (intDay > arrMonthDays[intMonth]) 
	{
		return false;
	}

	return true;
}


function resetCalcDays()
{
	document.ResultsForm.mp.value = ""
	document.ResultsForm.conception.value = ""
	document.ResultsForm.secondtrim.value = ""
	document.ResultsForm.book.value = ""
	document.ResultsForm.thirdtrim.value = ""
	document.ResultsForm.birthday.value = ""
	return true
}<!-- 

 -->