
function calcGradePoints(letter_grade, offset) {
	/* returns number of grade points corresp. to letter_grade */
	switch(letter_grade) {
		case "A":
		case "a":
			return 4 + offset;
		break;
		case "B":
		case "b":
			return 3 + offset;
		break;
		case "C":
		case "c":
			return 2 + offset;
		break;
		case "D":
		case "d":
			return 1 + offset;
		break;
		case "F":
		case "f":
			return 0 + offset;
		break;
	}
}

function calcGPA(numClasses)
{
	/* calculate gpa, put result in text field*/
	var i=0;
	var numFieldsWithEntries = numClasses;
	var letter_grade = "";
	var gpa = 0;
	for(i=0; i<numClasses; i++) {
		/* calc grade stuff */
		letter_grade = document.gpa_form.elements["regular"+i].value;

		if(letter_grade != "")
			gpa += calcGradePoints( letter_grade, 0 );
		else {
			letter_grade = document.gpa_form.elements["honors"+i].value;
			if(letter_grade != "")
				gpa += calcGradePoints( letter_grade, 0.5 );
			else {
				letter_grade = document.gpa_form.elements["college"+i].value;
				if(letter_grade != "")
					gpa += calcGradePoints( letter_grade, 1 );
				else
					numFieldsWithEntries--;
			}
		}
	}
	gpa = gpa/numFieldsWithEntries;
	gpa = Math.round(gpa*100)/100
	document.gpa_form.elements["semester_gpa"].value = gpa;
}

function clearRow(newSelected, num) {
	/* when a menu value is changed, clears other values in that row */
	/* (cant have a grade selected for college AND honors AND regular in same row) */


	if(newSelected == "honors") {
		document.gpa_form.elements["regular"+num].selectedIndex = 0;
		document.gpa_form.elements["college"+num].selectedIndex = 0;
		}
	if(newSelected == "regular") {
		document.gpa_form.elements["honors"+num].selectedIndex = 0;
		document.gpa_form.elements["college"+num].selectedIndex = 0;

		}
	if(newSelected == "college") {
		document.gpa_form.elements["honors"+num].selectedIndex = 0;
		document.gpa_form.elements["regular"+num].selectedIndex = 0;
		}

}


function addMenu(grade_type, num) {

	/* grade_type = regular OR honors OR college */
	var menu = "";
	menu += "<select name=" + grade_type + ""+num +" style=\"width:60px\" onChange=clearRow(\""+grade_type+"\","+num+") size=1 >";
	menu += "<option value=\"\" selected></option>";
	menu += "<option value=\"a\">A</option>";
	menu += "<option value=\"b\">B</option>";
	menu += "<option value=\"c\">C</option>";
	menu += "<option value=\"d\">D</option>";
	menu += "<option value=\"f\">F</option>";
	menu += "</select>";
	return menu;
}

function drawCalc(numClasses) {

	/* draw the form with fields to enter grades and stuff... */

	var html_text = "";
	html_text += "<form name=\"gpa_form\"><table cellspacing=5><tr><td></td><td>Regular</td><td>Honors</td><td>College</td>";
	var i= 0;
	for(i=0; i<numClasses; i++) {
  		//alert("in for loop");
		html_text += "<tr><td>Class "+(i+1)+"</td>";
		//html_text += "<td><input type=text name=regular"+i+"></td>";
		html_text += "<td>" + addMenu("regular", i) + "</td>";
		html_text += "<td>" + addMenu("honors", i) + "</td>";
		html_text += "<td>" + addMenu("college", i) + "</td>";
		//html_text += "<td><input type=text name=honors"+i+"></td>";
		//html_text += "<td><input type=text name=colleg"+i+"></td></tr>";
	}
	html_text += "</table><p> <input type=reset value=Reset> ";
	html_text += "<input type=button value=\"Calculate!\" onclick=\"calcGPA("+numClasses+")\">";
	html_text += "<p>Total Semester GPA: <input type=text name=semester_gpa></form>";



	return html_text;

}


function calcTotalGPA(numSemesters)
{
	
	/* calculate gpa, put result in text field*/
	var i=0;
	var numFieldsWithEntries = numSemesters;
	var gpa=0;

	var quality_points=0;
	var sem_gpa=0;
	var num_credits=0;
	var total_credits=0;
	
	/* calc: add up quality points:		*/
	/*	sem_gpa times num_credits	*/ 
	/*   and add up total_credits		*/
	/*   then divide quality_pts by num_credits == GPA */
	

	for(i=0; i<numSemesters; i++) {
		/* calc grade stuff */

		sem_gpa     = parseFloat(document.total_gpa_form.elements["semester_gpa"+i].value);
		num_credits = parseFloat(document.total_gpa_form.elements["semester_credits"+i].value);

		if( !isNaN(num_credits) && !isNaN(sem_gpa) ) {
			quality_points += (sem_gpa * num_credits);
			total_credits  += num_credits;
		} else {
			numFieldsWithEntries--;
		}
	}

	gpa = quality_points/total_credits;
	gpa = Math.round(gpa*100)/100
	document.total_gpa_form.elements["cumulative_gpa"].value = gpa;
	document.total_gpa_form.elements["cumulative_units"].value = total_credits;
}

function drawTotalCalc( numSemesters ) {

	/* draw the form with fields to enter grades and stuff... */

	var html_text = "";
	html_text += "<form name=\"total_gpa_form\"><table cellspacing=5><tr><td></td><td>Semester GPA</td><td>Units Earned</td>";
	var i= 0;
	for(i=0; i<numSemesters; i++) {

		html_text += "<tr><td>Semester "+(i+1)+"</td>";
		html_text += "<td><input type=text name=semester_gpa"+i+"></td>";
		html_text += "<td><input type=text name=semester_credits"+i+"></td>";
	}
	html_text += "</table><p> <input type=reset value=Reset> ";
	html_text += "<input type=button value=\"Calculate!\" onclick=\"calcTotalGPA("+numSemesters+")\">";
	html_text += "<p>Cumulative GPA: <input type=text name=cumulative_gpa><br>";
	html_text += "<p>Cumulative Units Earned: <input type=text name=cumulative_units></form>";



	return html_text;

}


