/*


*/

	
var dayName = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

var monName = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 

var dayNameA = new Array("الأحد", "الأثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت");

var monNameA = new Array("يناير", "فبراير", "مارس", "ابريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"); 

	//  Create array of maximum days
	var maxDays = new Array(12);

	maxDays[0] = 31;	// January has 31 days
	maxDays[1] = 28;
	maxDays[2] = 31;
	maxDays[3] = 30;
	maxDays[4] = 31;
	maxDays[5] = 30;
	maxDays[6] = 31;
	maxDays[7] = 31;
	maxDays[8] = 30;
	maxDays[9] = 31;
	maxDays[10] = 30;
	maxDays[11] = 31;


function whatDay(form,isEdd) {
	var month = form.month.selectedIndex;
	var date = form.date.selectedIndex + 1;
	var year = form.year.selectedIndex;

	var today = new Date();
	thisYear = today.getYear();

	//  Year 2000 test
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}


	//  What year was selected?
	
	if (year == 0) {
		year = thisYear - 1;	// Last year
	} else {
		if ((isEdd == 2) && (year == 2)) {
			year = thisYear + 1	// Next year
		} else {
			year = thisYear;	// This year
		}
	}

	if (isEdd == 1) {	//  The choices for EDD year are 
				//  off by 1, compared to LMP choices
		year = year + 1
	}


	var whatDate = new Date(date +" " +  monName[month] + ", " + year + " 12:00:00");

	form.day.selectedIndex = whatDate.getDay();

	if (isEdd == 2) {
		return true
	} else {
		document.weeksPreg.calcYet.value = 0
			//  Since the LMP or EDD is being changed,
			//  we can't calculate EGA yet.
	}

	//  Reset the rest of the form
	document.DueDate.concep.value = ""
	document.DueDate.first.value = ""
	document.DueDate.second.value = ""
	document.weeksPreg.weeks.value = ""

	return true
}

function dueDate(form) {
	var LMPmonth = form.month.selectedIndex;
	var LMPdate = form.date.selectedIndex + 1;
	var LMPyear = form.year.selectedIndex;

	if (LMPyear == -1) {
		alert(" برجاء اختيار السنة ");
		form.year.focus();
		return false;
	}

	document.weeksPreg.calcYet.value = 1;
		//  Now that we're calculating EDD, we may also 
		//  calculate EGA later

	var today = new Date();
	thisYear = today.getYear();

	//  Year 2000 test
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}


	//  What year was selected?
	
	if (LMPyear == 0) {
		LMPyear = thisYear - 1;	// Last year
	} else {
		LMPyear = thisYear;	// This year
	}


	if (!checkDate(LMPmonth,LMPdate,LMPyear)) {
		alert(monNameA[LMPmonth] + " به " + maxDays[LMPmonth] + 
			" يوم فقط ");
		form.date.focus();
		return false;
	}
	
	var lmp = new Date(LMPdate + " " + monName[LMPmonth] + ", " + LMPyear + " 12:00:00");

	form.day.selectedIndex = lmp.getDay();
	form.theDate.value = lmp.getTime();


	var concep = 14;	// conception occurs at 2 weeks (14 days)
	var abort = 35;		// high risk for abortion
	var organs = 70;	// main organs created
	var first = 84;		// end of first trimester at 12 weeks
	var	organf = 161;	// main organs complete
	var second = 189;	// end of second trimester
	var edd = 280;		// estimated due date



	form.concep.value = display(lmp.getTime(),concep,0,0);
	form.first.value = display(lmp.getTime(),first,0,0);
	form.second.value = display(lmp.getTime(),second,0,0);
	form.abort.value = display(lmp.getTime(),abort,0,0);	
	form.organs.value = display(lmp.getTime(),organs,0,0);	
	form.organf.value = display(lmp.getTime(),organf,0,0);
	
	
	//  The '1' at the end indicates this is EDD
	display(lmp.getTime(),edd,1,0);

	return true;
}


function display(whatDate,numDays,isEdd,isLMP) {
	var today = new Date();
	var lmp = new Date(whatDate);

	var futureDate = lmp.getTime() + (numDays * 24*60*60*1000);
		//  convert lmp to milliseconds, and add appropriate msec

	var future = new Date();
	future.setTime(futureDate);  // convert from msec to actual date
	future.setHours(12);		// set the time to 12:00 pm

	var futureDay = dayNameA[future.getDay()];
	var futureMonth = monNameA[future.getMonth()];
	var futureYear = future.getYear();

	if (isEdd == 1) {		// Change the EDD selection boxes
		var yearChoice = 0;

		//  Do we need to change the displayed EDD year?

	if ((lmp.getYear() == today.getYear()) && (today.getYear() != futureYear)) {
		yearChoice = 1;
	}

	if (futureYear < today.getYear()) {
		yearChoice = -1;
	}	

	document.eddForm.day.selectedIndex = future.getDay();
	document.eddForm.month.selectedIndex = future.getMonth();
	document.eddForm.date.selectedIndex = future.getDate() - 1;
	document.eddForm.year.selectedIndex = yearChoice;
	document.eddForm.theDate.value = future.getTime();
	//
	}


	if (isLMP == 1) {		// Change the LMP selection boxes
		var yearChoice = 1;

		//  Do we need to change the displayed LMP year?

	if ((lmp.getYear() == today.getYear()) && (today.getYear() != futureYear)) {
		yearChoice = 0;
	}

	if (today.getYear() < futureYear) {
		yearChoice = -1;
	}

	document.DueDate.day.selectedIndex = future.getDay();
	document.DueDate.month.selectedIndex = future.getMonth();
	document.DueDate.date.selectedIndex = future.getDate() - 1;
	document.DueDate.year.selectedIndex = yearChoice;
	document.DueDate.theDate.value = future.getTime();
	}


	//  Calculate # weeks pregnant, based on today's date
	if ((isEdd == 1) || (isLMP == 1)) {
		// First, reset all values in the purple box

		document.weeksPreg.month.selectedIndex = today.getMonth();
		document.weeksPreg.date.selectedIndex = today.getDate()-1;
		document.weeksPreg.year.selectedIndex = 1;
		document.weeksPreg.day.selectedIndex = today.getDay();
		document.weeksPreg.weeks.value = "";

		today.setHours(13);
			/* Since LMP is set to 12:00 noon, we must set
			   today's time temporarily to 1:00 pm, so that
			   if today date = LMP date, then 
			   today's time is GREATER than LMP time
			*/

		var todaydate = today.getTime();
		var lmpdate = document.DueDate.theDate.value;
		var edd = document.eddForm.theDate.value;
		edd = Number(edd) + 10 *7*24*60*60*1000;
				//  Allow for up to 50 weeks EGA

		if ((todaydate > lmpdate) && 
			(todaydate < edd)) {
				// Check that today's date is BETWEEN 
				// the LMP and EDD
		document.weeksPreg.weeks.value = calcEGA(lmpdate,todaydate);
		}			
		return true
	}		


	//  Year-2000 compliance test
	if (futureYear < 300) {
		futureYear = futureYear + 1900
	}

	var futureDisplay = futureDay + ",  " + future.getDate() + "  " + futureMonth  + ",  " + futureYear;

	return futureDisplay;
}


function checkDate(month,day,year) {
	//  Reset February's "maxdays"
	maxDays[1] = 28;

	//  Check February leap year
	//  Years divisible by 100 are NOT leap years (1700, 1800, 1900), 
	//  	except years divisible by 400 (2000, 2400) are leap years.

	if ((month == 1) && ((year % 4) == 0)) {
		if (((year % 100) == 0) && ((year % 400) != 0)) {
			maxDays[1] = 28;
		} else {
			maxDays[1] = 29;
		}
	}

	if (day > maxDays[month]) {
		return false;
	}

	return true;
}



function datetoWeeks(form) {
	if (document.weeksPreg.calcYet.value == 0) {
		alert(" عليك بادخال تاريخ أول يوم في أخر دورة أو التاريخ المتوقع للولادة ");
		return false
	}

	var desiredMonth = form.month.selectedIndex;
	var desiredDate = form.date.selectedIndex + 1;
	var desiredYear = form.year.selectedIndex;

	var today = new Date();
	thisYear = today.getYear();

	//  Year 2000 test
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}

	//  What year was selected?
	
	desiredYear = thisYear + desiredYear - 1;

	if (!checkDate(desiredMonth,desiredDate,desiredYear)) {
		alert(monNameA[desiredMonth] + " به " + 
			maxDays[desiredMonth] + " يوم فقط ");
		form.date.focus();
		return false;
	}
	
	var des = new Date(desiredDate + " " + monName[desiredMonth] + ", " + desiredYear + " 14:00:00");
	form.day.selectedIndex = des.getDay();

	var lmpDate = document.DueDate.theDate.value;
	var eddDate = document.eddForm.theDate.value;
	eddDate = Number(eddDate) + 10 *7*24*60*60*1000;
			// Allow EDD to be 50 weeks for maximum
	var desDate = des.getTime();

	//  Check that desired date is BETWEEN LMP and EDD

	if ((desDate < lmpDate) || (desDate > eddDate)) {
		alert(" عليك بادخال تاريخ أول يوم في أخر دورة أو التاريخ المتوقع للولادة ");
		return false;
	}

	form.weeks.value = calcEGA(lmpDate,desDate);
	return true
}


function calcEGA(lmpDate,desDate) {
	var daysEGA = (desDate - lmpDate) / (1000*60*60*24);
	var EGA = Math.floor(daysEGA / 7);
	var EGAfrac = Math.round(daysEGA % 7);
		//  Daylight Savings Time (DST) makes this calculation
		//  veer slightly off from being integer.

	if (EGAfrac == 7) {	//  Another correction for DST
		EGAfrac = 0;
		EGA = EGA + 1;
	}

	if (EGAfrac == 0) {
		return EGA
	}
		
	EGA = EGA + " " + EGAfrac + "/7";
	return EGA
}



function weekstoDate(form) {
	if (document.weeksPreg.calcYet.value == 0) {
		alert(" عليك بادخال تاريخ أول يوم في أخر دورة أو التاريخ المتوقع للولادة ");
		return false
	}

	var add = form.weeks.value;

	if (add.indexOf("/") != -1) {		// Is "add" a fraction?
		add = evalFrac(add);
		if (add == false) {
			return false
		}
	}

	if (add == "pi") {
		alert("Pi = 3.14159265358979323...  ");
	}

        if ((add == "") || (isNaN(add)) || (add < 0) || (add > 50)) {
                alert(" برجاء ادخال رقم صحيح للتاريخ ");
                form.weeks.value = "";
                form.weeks.focus();
                return false
        }
	

	//  Adding milliseconds
	var lmpDate = Number(document.DueDate.theDate.value);
	var egaMsec = lmpDate + (add * 7*24*60*60*1000);

	var today = new Date();
	var todayYr = today.getYear();

	//  Convert the EGA to a date
	var ega = new Date();
	ega.setTime(egaMsec);
	var egaYr = ega.getYear();

	if (egaYr < 300) {egaYr = egaYr + 1900}
	if (todayYr < 300) {todayYr = todayYr + 1900}

	var egaYear = (egaYr - todayYr) + 1;

	form.day.selectedIndex = ega.getDay();
	form.month.selectedIndex = ega.getMonth();
	form.date.selectedIndex = ega.getDate() - 1;
	form.year.selectedIndex = egaYear;
	return true
}



function evalFrac(frac) {
	var slash = frac.indexOf("/");

	if (frac.charAt(slash + 1) != 7) {	// Is denominator 7?
		alert(" تقسم ايام الأسبوع على 7 ");
		document.weeksPreg.weeks.focus();
		return false;
	}

	//  Check numerator
	if ((Number(frac.charAt(slash-1)) > 6) || 
	   
	   (isNaN(frac.charAt(slash-1)))) {
		alert(" برجاء ادخال رقم صحيح ");
		document.weeksPreg.weeks.focus();
		return false;
	}


	if ((frac.charAt(slash-2) != " ") && (frac.indexOf("/") != 1))
		{alert(" برجاء ادخال رقم صحيح ");
		document.weeksPreg.weeks.focus();
		return false;
	}


	//  Evaluate the fraction
	var top = Number(frac.charAt(slash-1));
	var fraction = top / 7;


	//  Anything before the fraction?
	if (frac.indexOf("/") == 1) {
		if (fraction == 0) {
			fraction = 0.001
				//  Prevents script from interpreting
				//  this as a 'false' value
		}
		return fraction
	}

	var fullNum = frac.substring(0,frac.indexOf(" "));
	if (isNaN(fullNum)) {
		alert(" برجاء ادخال عدد صحيح من الأسابيع ");
		document.weeksPreg.weeks.focus();
		return false
	}

	frac = Number(fullNum) + fraction;
		if (frac == 0) {frac = 0.001}
	return frac;
}	



function getLMP(form) {
	var eddMonth = form.month.selectedIndex;
	var eddDate = form.date.selectedIndex + 1;
	var eddYear = form.year.selectedIndex;

	if (eddYear == -1) {
		alert(" برجاء أختيار السنة ");
		form.year.focus();
		return false;
	}

	document.weeksPreg.calcYet.value = 1;
		//  Now that we're calculating LMP, we may also 
		//  calculate EGA later

	var today = new Date();
	thisYear = today.getYear();

	//  Year 2000 test
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}

	//  What year was selected?
	
	if (eddYear == 0) {
		eddYear = thisYear;	// This year
	} else {
		eddYear = thisYear + 1;	// Next year
	}


	if (!checkDate(eddMonth,eddDate,eddYear)) {
		alert(monNameA[eddMonth] + " به " + maxDays[eddMonth] + 
			" أيام فقط ");
		form.date.focus();
		return false;
	}
	
	var edd = new Date(eddDate + monName[eddMonth] + " " + ", " +
		eddYear + " 12:00:00");

	form.day.selectedIndex = edd.getDay();
	form.theDate.value = edd.getTime();

	var lmp = -280;		// estimated due date
	var concep = -266;	// conception occurs at 2 weeks (14 days)
	var first = -196;	// end of first trimester at 12 weeks
	var second = -91;	// end of second trimester

	//  The last "1" indicates this is LMP
	display(edd.getTime(),lmp,0,1);

	document.DueDate.concep.value=display(edd.getTime(),concep,0,0);
	document.DueDate.first.value = display(edd.getTime(),first,0,0);
	document.DueDate.second.value = display(edd.getTime(),second,0,0);

	
	
	//  document.DueDate.edd.value = display(edd.getTime(),0,0,0);

	return true;
}


function resetForm() {
	document.DueDate.reset();
	document.eddForm.reset();
	document.weeksPreg.reset();
	return true
}


function dateSelect(Month,dd,Year,isEdd) {

var today = new Date();

//
// JavaScript:  Choose Day
//

document.writeln("<select name=\"day\" " + "onChange=\"whatDay(this.form," + isEdd + ")\">");


//	Select the names for the days

for (var i=0; i < 7; i++) {
	if (i == today.getDay()) {
		document.writeln("<option selected>" +
		dayNameA[i]);
	} else {
		document.writeln("<option>" + 
		dayNameA[i]);
	}
}
document.writeln("</select>, ");

//
// JavaScript:  Choose Date
//

document.writeln("<select name=\"date\" " +
	"onChange=\"whatDay(this.form," + isEdd + ")\">");

for (var d = 1; d < 32; d++) {
	if (d == dd) {
		document.writeln("<option selected>" + dd);
	} else {
		document.writeln("<option>" + d);
	}
}

document.writeln("</select>, ");

//
// JavaScript:  Choose Month
//

document.writeln("<select name=\"month\" " + "onChange=\"whatDay(this.form," + isEdd + ")\">");


//	Select the names for the months

for (var i=0; i < 12; i++) {
	if (i == Month) {
		document.writeln("<option selected>" +
		monNameA[i]);
	} else {
		document.writeln("<option>" + 
		monNameA[i]);
	}
}
document.writeln("</select>");





//
// JavaScript:  Choose Year
//

document.writeln("<select name=\"year\" " + 
	"onChange=\"whatDay(this.form," + isEdd + ")\">");

//	For dates before the year 2000 (ex. 1999), the year
//	is stored as "xx" (ex. 99).  However, for dates on or 
//	after the year 2000 (ex. 2003), the year is stored as 
//	"xxxx" (ex. 2003).

if (Year < 300) {
	Year = Year + 1900
	}

var checkYr = today.getYear();
if (checkYr < 300) {
	checkYr = checkYr + 1900
	}

var Year1 = Year - 1;

if (isEdd == 2) {Year = Year + 1}  //  This allows for 3 choices

for (var yrCount = Year1; yrCount < (Year + 1); yrCount++) {
	if (yrCount == checkYr) {
		document.writeln("<option selected>" + yrCount)
	} else {
		document.writeln("<option>" + yrCount)
	}
}

document.writeln("</select>");

return true;
}

function blood(form) {
	var LMPmonth = form.month.selectedIndex;
	var LMPdate = form.date.selectedIndex + 1;
	var LMPyear = form.year.selectedIndex;

	if (LMPyear == -1) {
		alert(" برجاء اختيار السنة ");
		form.year.focus();
		return false;
	}

	 document.weeksPreg.calcYet.value = 0;
		//  Now that we're calculating EDD, we may also 
		//  calculate EGA later

	var today = new Date();
	thisYear = today.getYear();

	//  Year 2000 test
	if (thisYear < 300) {
		thisYear = thisYear + 1900
	}


	//  What year was selected?
	
	if (LMPyear == 0) {
		LMPyear = thisYear - 1;	// Last year
	} else {
		LMPyear = thisYear;	// This year
	}


	if (!checkDate(LMPmonth,LMPdate,LMPyear)) {
		alert(monNameA[LMPmonth] + " به " + maxDays[LMPmonth] + 
			" يوم فقط ");
		form.date.focus();
		return false;
	}
	
	var lmp = new Date(LMPdate + " " + monName[LMPmonth] + ", " + LMPyear + " 12:00:00");

	form.day.selectedIndex = lmp.getDay();
	form.theDate.value = lmp.getTime();


	var blood = 56;		// Donate after
	form.blood.value = display(lmp.getTime(),blood,0,0);


	return true;
}