function checkNumber(input, min, max, msg)
{
	msg = msg + " field has invalid data: " + input.value;
	var str = input.value;
	for (var i = 0; i < str.length; i++)
	{
		var ch = str.substring(i, i + 1)
		if ((ch < "0" || "9" < ch) && ch != '.')
		{
			alert(msg);
			return false;
		}
	}
	var num = 0 + str
	if (num < min || max < num)
	{
		alert(msg + " not in range [" + min + ".." + max + "]");
		return false;
	}
	input.value = str;
	return true;
}

function computeGradenum2(input)
{
	var gradenum=-1;
	var thegrade=input;
	if (thegrade=="A" || thegrade=="a")
		gradenum=4;
	if (thegrade=="B" || thegrade=="b")
		gradenum=3;
	if (thegrade=="C" || thegrade=="c")
		gradenum=2;
	if (thegrade=="D" || thegrade=="d")
		gradenum=1;
	if (thegrade=="F" || thegrade=="f" )
		gradenum=0;
	if (gradenum==-1)
	{
		gradenum=0;
		alert("This is not a valid Grade. Valid Grades are A thru F...only.");
	}
	return gradenum;
}

function computeField(input)
{
	 if (input.value != null && input.value.length != 0)
		  input.value = "" + eval(input.value);
		  computeForm(input.form);
}

function computeForm(form)
{
	if ((form.hours.value == null || form.hours.value.length == 0 || form.grade.value.length == 0 || form.hours.value == "" || form.grade.value == null || form.grade.value == ""))
	{
		form.qualtypoints.value = "";
		return;
	}

	if (!checkNumber(form.hours, .5, 200, "Hours"))
	{
		form.qualtypoints.value = "Invalid";
		return;
	}

	form.qualtypoints.value = ((computeGradenum2(form.grade.value)) * form.hours.value);
}

function computesumForm(form)
{
	var hours = form.hours;
	var qualtypoints = form.qualtypoints;
	var grade = form.grade;

	hours.value = 0;
	qualtypoints.value = 0;


	for(var i=1; i<11; i++)
	{
		var class_form = document.getElementById( 'form_' + i );

		if (!(class_form.hours.value == null || class_form.hours.value.length == 0))
		{
			if (!(class_form.grade.value == null || class_form.grade.length == 0))
			{
				var temp=computeField(class_form.qualtypoints);
				var temp=computeField(class_form.hours);
				var temp=computeForm(class_form);

				if ( !(class_form.qualtypoints.value == 0) )
					qualtypoints.value = eval(qualtypoints.value)+(eval(class_form.qualtypoints.value));
				if (!(class_form.hours.value == 0))
					hours.value = eval(hours.value)+(eval(class_form.hours.value));
			}
		}
	}

	if (!(hours.value == 0))
		grade.value= Math.round( (((eval(qualtypoints.value)/(eval(hours.value))+.000000001))) * 100 ) / 100;
}
function computeCumCurr(form)
{
	if ((form.hours.value == null || form.hours.value.length == 0))
	{
		  return;
	 }
	 if (!checkNumber(form.hours, .5, 300, "Cum Hours"))
	 {
		  form.qualtypoints.value = "Invalid";
		  return;
	 }
	 if ((form.grade.value == null || form.grade.value.length == 0))
	 {
		  return;
	 }
	 if (!checkNumber(form.grade, .0001, 4.3, "Cum GPA"))
	 {
		  form.qualtypoints.value = "Invalid";
		  return;
	 }
	 form.qualtypoints.value = Math.round( ( form.grade.value * form.hours.value ) * 100 ) / 100;
}
function computeCumPoss(form)
{
if ((document.getElementById( 'semester_gpa' ).grade.value == null || document.getElementById( 'semester_gpa' ).grade.value.length == 0)) {
  //alert("Re-check/Re-compute Predicted Current GPA fields");
	form.hours.value = "Invalid";
	form.grade.value = "Invalid";
	form.qualtypoints.value = "Invalid";
		  return;
}
if ((document.getElementById( 'cum_gpa_1' ).grade.value == null || document.getElementById( 'cum_gpa_1' ).grade.value.length == 0)) {
  //alert("Re-check/Re-compute Cumulative GPA transcript data");
	  form.hours.value = "Invalid";
	  form.grade.value = "Invalid";
	  form.qualtypoints.value = "Invalid";
		  return;
}
form.hours.value = (eval(document.getElementById( 'semester_gpa' ).hours.value) + eval(document.getElementById( 'cum_gpa_1' ).hours.value));
form.qualtypoints.value = Math.round( (eval(document.getElementById( 'semester_gpa' ).qualtypoints.value) + eval(document.getElementById( 'cum_gpa_1' ).qualtypoints.value)) * 100 ) / 100;
var gpa = ((form.qualtypoints.value / form.hours.value)+ .000000001);
form.grade.value = Math.round(gpa*100)/100;
}
function clearForm(form)
{
	 form.hours.value = "";
	 form.grade.value = "";
	 form.qualtypoints.value = "";
}