function validate() {

	var obj;
	var validLabelClass = "validLabel";
	var invalidLabelClass = "invalidLabel";
	var validBoxClass = "validBox";
	var invalidBoxClass = "invalidBox";
	var malformedBoxClass = "malformedBox";
	
	/* Clear errors */
	clearRequiredLabel();
	clearFormatLabel();
	var valid = true;
	
	/* Tournament Drop Down */
	obj = document.getElementById("Tournament");
	if (obj.options[obj.selectedIndex].value == "") {
		document.getElementById("TournamentLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("TournamentLabel").className = validLabelClass;
	}
	
	/* School Name Field */
	obj = document.getElementById("SchoolName");
	if (obj.value == "") {
		document.getElementById("SchoolNameLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("SchoolNameLabel").className = validLabelClass;
	}
	
	/* School Address 1 Field */
	obj = document.getElementById("StreetAddress1");
	if (obj.value == "") {
		document.getElementById("StreetAddress1Label").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("StreetAddress1Label").className = validLabelClass;
	}
	
	/* School City Field */
	obj = document.getElementById("City");
	if (obj.value == "") {
		document.getElementById("CityLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("CityLabel").className = validLabelClass;
	}
	
	/* School State Field */
	obj = document.getElementById("State");
	if (obj.value == "") {
		document.getElementById("StateLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("StateLabel").className = validLabelClass;
	}
	
	/* School Zip Code Field */
	obj = document.getElementById("ZipCode");
	if (obj.value == "") {
		document.getElementById("ZipCodeLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("ZipCodeLabel").className = validLabelClass;
	}
	
	/* Coach Name Field */
	obj = document.getElementById("CoachName");
	if (obj.value == "") {
		document.getElementById("CoachNameLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("CoachNameLabel").className = validLabelClass;
	}
	
	/* Coach Phone Code Field */
	obj = document.getElementById("CoachPhone");
	if (obj.value == "") {
		document.getElementById("CoachPhoneLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("CoachPhoneLabel").className = validLabelClass;
	}
	
	/* Coach EMail Field */
	obj = document.getElementById("CoachEMail");
	if (obj.value == "") {
		document.getElementById("CoachEMailLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("CoachEMailLabel").className = validLabelClass;
	}
	
	/* Team Name Field */
	obj = document.getElementById("TeamName");
	if (obj.value == "") {
		document.getElementById("TeamNameLabel").className = invalidLabelClass;
		showRequiredLabel();
		valid = false;
	} else {
		document.getElementById("TeamNameLabel").className = validLabelClass;
	}
	
	var i;
	var boardList = new Array("Board1", "Board2", "Board3");
	for (i = 0; i < boardList.length; i++) {
	
		/* Name */
		obj = document.getElementById(boardList[i] + "Name");
		if (obj.value == "") {
			document.getElementById(boardList[i] + "NameBox").className = invalidBoxClass;
			showRequiredLabel();
			valid = false;
		} else if (!validName(obj.value)) {
			document.getElementById(boardList[i] + "NameBox").className = malformedBoxClass;
			showFormatLabel();
			valid = false;
		} else {
			document.getElementById(boardList[i] + "NameBox").className = validBoxClass;
		}
		
		/* USCF ID */
		obj = document.getElementById(boardList[i] + "USCFID");
		if (obj.value != "" && obj.value.length != 8) {
			document.getElementById(boardList[i] + "USCFIDBox").className = malformedBoxClass;
			showFormatLabel();
			valid = false;
		} else {
			document.getElementById(boardList[i] + "USCFIDBox").className = validBoxClass;
		}
		
		/* USCF Expiration */
		obj = document.getElementById(boardList[i] + "USCFEXP");
		if (obj.value != "" && ! validDate(obj.value)) {
			document.getElementById(boardList[i] + "USCFEXPBox").className = malformedBoxClass;
			showFormatLabel();
			valid = false;
		} else {
			document.getElementById(boardList[i] + "USCFEXPBox").className = validBoxClass;
		}
		
		/* MCA Expiration */
		obj = document.getElementById(boardList[i] + "MCAEXP");
		if (obj.value != "" && ! validDate(obj.value)) {
			document.getElementById(boardList[i] + "MCAEXPBox").className = malformedBoxClass;
			showFormatLabel();
			valid = false;
		} else {
			document.getElementById(boardList[i] + "MCAEXPBox").className = validBoxClass;
		}
	}
	
	return valid;
}

function updateTotals() {

	var board1USCFFeeIndex = document.form.Board1USCFFee.selectedIndex;
	var board2USCFFeeIndex = document.form.Board2USCFFee.selectedIndex;
	var board3USCFFeeIndex = document.form.Board3USCFFee.selectedIndex;
	var board4USCFFeeIndex = document.form.Board4USCFFee.selectedIndex;
	var altUSCFFeeIndex = document.form.AltUSCFFee.selectedIndex;
			
	var board1MCAFeeIndex = document.form.Board1MCAFee.selectedIndex;
	var board2MCAFeeIndex = document.form.Board2MCAFee.selectedIndex;
	var board3MCAFeeIndex = document.form.Board3MCAFee.selectedIndex;
	var board4MCAFeeIndex = document.form.Board4MCAFee.selectedIndex;
	var altMCAFeeIndex = document.form.AltMCAFee.selectedIndex;
			
	/* USCF Fees */
	var board1USCFFee
	var board2USCFFee
	var board3USCFFee
	var board4USCFFee
	var altUSCFFee

	board1USCFFee = parseInt(document.form.Board1USCFFee.options[board1USCFFeeIndex].value);
	board2USCFFee = parseInt(document.form.Board2USCFFee.options[board2USCFFeeIndex].value);
	board3USCFFee = parseInt(document.form.Board3USCFFee.options[board3USCFFeeIndex].value);
	board4USCFFee = parseInt(document.form.Board4USCFFee.options[board4USCFFeeIndex].value);
	altUSCFFee = parseInt(document.form.AltUSCFFee.options[altUSCFFeeIndex].value);
			
	/* MCA Fees */
	var board1MCAFee;
	var board2MCAFee;
	var board3MCAFee;
	var board4MCAFee;
	var altMCAFee;

	board1MCAFee = parseInt(document.form.Board1MCAFee.options[board1MCAFeeIndex].value);
	board2MCAFee = parseInt(document.form.Board2MCAFee.options[board2MCAFeeIndex].value);
	board3MCAFee = parseInt(document.form.Board3MCAFee.options[board3MCAFeeIndex].value);
	board4MCAFee = parseInt(document.form.Board4MCAFee.options[board4MCAFeeIndex].value);
	altMCAFee = parseInt(document.form.AltMCAFee.options[altMCAFeeIndex].value);
			
	var USCFFee = board1USCFFee + board2USCFFee + board3USCFFee + board4USCFFee + altUSCFFee;
	var MCAFee = board1MCAFee + board2MCAFee + board3MCAFee + board4MCAFee + altMCAFee;
			
	document.getElementById("USCFFees").innerHTML = "$" + USCFFee;
	document.getElementById("MCAFees").innerHTML = "$" + MCAFee;
	document.getElementById("Total").innerHTML = "$" + parseInt(USCFFee + MCAFee + 50);
}

function showRequiredLabel() {
	document.getElementById("RequiredLine").innerHTML = "Fields marked in red are required";
}
		
function clearRequiredLabel() {
	document.getElementById("RequiredLine").innerHTML = "";
}

function showFormatLabel() {
	document.getElementById("FormatLine").innerHTML = "Fields marked in blue are malformed";
}

function clearFormatLabel() {
	document.getElementById("FormatLine").innerHTML = "";
}

function validDate(date) {
	
	var temp;
	
	/* Convert string to parts */
	temp = date.replace(".", "/");
	temp = temp.replace("-", "/");
	var dateArray = temp.split("/");
	if (dateArray.length != 2) return false;
	dateArray[0]--;
	if (dateArray[1] < 100) dateArray[1] += 2000;
	
	var dateObject = new Date(dateArray[1], dateArray[0], 1);
	
	return ((dateArray[0] == dateObject.getMonth()) && (dateArray[1] == dateObject.getFullYear()));
}

function validName(name) {

	var nameArray = name.split(",");
	
	if (nameArray.length != 2) return false;
	
	
	if (nameArray[0].length > 0 && nameArray[1].length > 0) return true;
	else return false;
}

function clearBoards() {

	var i;
	var boardList = new Array("Board1", "Board2", "Board3", "Board4", "Alt");
	for (i = 0; i < boardList.length; i++) {
		document.getElementById(boardList[i] + "Name").value = "";	
		document.getElementById(boardList[i] + "USCFID").value = "";	
		document.getElementById(boardList[i] + "USCFEXP").value = "";	
		document.getElementById(boardList[i] + "USCFFee").selectedIndex = 0;	
		document.getElementById(boardList[i] + "MCAEXP").value = "";	
		document.getElementById(boardList[i] + "MCAFee").selectedIndex = 0;	
		document.getElementById(boardList[i] + "Grade").value = "";	
		document.getElementById(boardList[i] + "Birthday").value = "";	
		document.getElementById(boardList[i] + "StreetAddress").value = "";	
		document.getElementById(boardList[i] + "City").value = "";	
		document.getElementById(boardList[i] + "ZipCode").value = "";	
	}

	updateTotals();
}
