	var points_str_4 = "4,4,3.7,3.3,3,2.7,2.3,2,1.7,1.3,1,1,0";
	var points_str_5 = "5,5,5,4,4,4,3,3,3,2,2,2,1";
	var grades_str = "A+,A,A-,B+,B,B-,C+,C,C-,D+,D,D-,F";
	
	/*function $(item) { return document.getElementById(item);}*/
	
	function calculate() {
		//check that all fields aren't empty
		mainform = $("myform");
		var empty = 0;
		
		for (var i = 0; i < 14; i++) {
			if ( mainform.elements[i].value == "" ) {
				empty++;
			} else {
				break;
			}
		}
		
		if (empty == 14) {
			errorbox("Please enter some values.");
			return false;
		}
		
		var points = 0;
		var credits = 0;
		
		//create gpa array based on scale
		GPA_ar = new Array();
		var scale = $("scale").value;
		grades_ar = grades_str.split(",");
		
		if ( scale == "4.0 Scale" ) {
			points_ar = points_str_4.split(",");
		} else if ( scale == "5.0 Scale" ) {
			points_ar = points_str_5.split(",");
		} else {														//if custom GPA scale
			for (var i = 0; i < grades_ar.length ; i++) {
				val = $("letter" + i).value;
			
				if ( val != "") {
					if (/^[0-9]*(\.[0-9]+)?$/.test(val)) {
						points_ar[i] = parseFloat( val);
					} else {
						errorbox("Please enter only decimal numbers for the GPA point values");
						return false;
					}
				} else {
					errorbox("Please enter the GPA points value for each letter");
					return false;
				}
			}
		}
		
		
		
		for (var i = 0; i < grades_ar.length ; i++) {
			GPA_ar["" + grades_ar[i] ] =  parseFloat( points_ar[i] );
		}
		
		//get grades and credits and add to total
		for (var i = 1; i < 7 ; i++) {
			grade = $("grade" + i);
			credit = $("credit" + i);
			
			if (grade.value != "" && credit.value != "") { 				
				if (/^([0-9]+)$/.test(credit.value)) {					//if credit is a positive integer
					
					for (var j = 0; j < credit.value ; j++) {
						points += GPA_ar[grade.value];
					}
					credits += Number(credit.value);
					
				} else {
					errorbox("Please enter only integers for credits");
					return false;
				}
			} else if (grade.value != "" || credit.value != "") {
				errorbox("Please enter missing information for class " + i);
				return false;
			}
		}
		
		//incorporate prior gpa
		
		oldgpa = $("oldgpa");
		oldcredits = $("oldcredits");
		
		if (oldgpa.value != "" && oldcredits.value != "") {
			/*	max value check
			
			if (Number(oldgpa.value) > GPA_ar["A+"] ) {
				errorbox("Please enter Prior GPA on a " + GPA_ar["A+"] + " scale");
				return false;
			}
			*/
			
			if (/^[0-9]*(\.[0-9]+)?$/.test(oldgpa.value) && /^([0-9]+)$/.test(oldcredits.value)) {
				points += Number(oldgpa.value) * Number(oldcredits.value);
				credits += Number(oldcredits.value);
			} else {
				errorbox("Please enter only decimal numbers for GPA and integers for credits");
				return false;
			}
			
		} else {
			if (oldgpa.value == "" && oldcredits.value != "") {
				errorbox("Please enter Prior GPA");
				return false;
			} else if (oldgpa.value != "" && oldcredits.value == "") {
				errorbox("Please enter Prior Credits");
				return false;
			}
		}
		
		//show gpa
		$("gpa").innerHTML = "<span class='label'>GPA: </span><span id='score'>" + (points/credits).toFixed(3) + "</span>";
		
		//do not submit form
		return false;
	}
	
	/*function showError(s) {
		$("score").innerHTML = "";
		$("error").style.display = "block";
		$("error").innerHTML = s;
	}*/
	
	function setCredit(val, i) {
		//automatically assign credit of 1 when letter is selected
		credit = $("credit" + i);
		if (val != "") {
			if (credit.value == "") {
				credit.value = 1;
			}
		} else {
			credit.value = "";
		}
	}
	
	function setScale() {
		//adjust point values based on pre-defined scales
		var scale = $("scale").value;
		
		if ( scale != "(Custom)") {
		
			if ( scale == "4.0 Scale" ) {
				points_ar = points_str_4.split(",");
			} else if ( scale == "5.0 Scale" ) {
				points_ar = points_str_5.split(",");
			}
			
			for (var i = 0; i < 13 ; i++) {
				$("letter" + i).value = points_ar[i];
			}
		}
	}
	
	function setCustom() {
		//change form select value
		if ($("scale").value != "(Custom)") { $("scale").value = "(Custom)"; }
	}
