//Student Services GPA Calculator
//Created by Martin Rybak
//Boston College Information Technology Services
//Last Updated: Thursday, July 10, 2003
function computeTotals()
{
	//Declare an initialize variables
	var i;
	var intTotalCredits = 0;
	var intTotalGradePoints = 0;
	//Loop through each course row form on page, totaling the credits and grade fields
	for (i = 0; i < document.forms.length - 2; i++)
	{
		//If neither course credit or grade field is empty
		if (document.forms[i].credits.value != "" && document.forms[i].grade.value != "")
		{
			intTotalCredits += Number(document.forms[i].credits.value);
			intTotalGradePoints += Number(document.forms[i].credits.value) * computeGradeValue(document.forms[i].grade.value);
		}
	}
	//If neither current GPA or current credits field is empty
	if (document.current.currentGPA.value != "" && document.current.currentCredits.value != "")
	{
		//Add current grade points (calculated from current GPA * current credits) to running total
		intTotalGradePoints += (document.current.currentGPA.value * document.current.currentCredits.value);
		
		//Add current credits to running total
		intTotalCredits += Number(document.current.currentCredits.value);
	}
	//Round and print totals
	document.totals.totalcredits.value = round(intTotalCredits, 1);
	document.totals.gpa.value = round(intTotalGradePoints / intTotalCredits, 3);
}
//Returns a numeric value of a uppercase or lowercase grade
function computeGradeValue(strInput)
{
	//Declare and initialize variables
	var strGrade = strInput.toUpperCase();
	switch(strGrade)
	{
		case 'A':
			return 4;
		case 'A-':
			return 3.67;
		case 'B+':
			return 3.33;
		case 'B':
			return 3;
		case 'B-':
			return 2.67;
		case 'C+':
			return 2.33;
		case 'C':
			return 2;
		case 'C-':
			return 1.67;
		case 'D+':
			return 1.33;
		case 'D':
			return 1;
		case 'D-':
			return .67;
		case 'F':
			return 0;
		default:
			return 'error';
	}
	return intPoints;
}
//Clears the form
function clearForm()
{
	//Loop through each course row form on page, clearing each field
	for (i = 0; i < document.forms.length - 2; i++)
	{
		document.forms[i].credits.value = "";
		document.forms[i].grade.value = "";
	}
	//Clear remaining fields and variables
	document.current.currentGPA.value = "";
	document.current.currentCredits.value = "";
	document.totals.totalcredits.value = "";
	document.totals.gpa.value = "";
	intTotalCredits = 0;
	intTotalGradePoints = 0;	
}