	function validate()
	{
		var valid = true;
		var errorString = "The following error(s) have occured:\n\n";
		var reg = /\S+/;
		var regEmail = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/;
	
		if (!reg.exec(document.fm.fname.value))
		{
			valid = false;
			errorString += "No first name entered.\n";
		}
		
		if (!reg.exec(document.fm.lname.value))
		{
			valid = false;
			errorString += "No last name entered.\n";
		}
		
		if (!reg.exec(document.fm.school.value))
		{
			valid = false;
			errorString += "No school name entered.\n";
		}
		
		if (!reg.exec(document.fm.addr.value))
		{
			valid = false;
			errorString += "No school address entered.\n";
		}
		
		if (!reg.exec(document.fm.city.value))
		{
			valid = false;
			errorString += "No city entered.\n";
		}
		
		if (document.fm.state.value == "Please choose a state.")
		{
			valid = false;
			errorString += "No state selected.\n";
		}
		
		if (!reg.exec(document.fm.zip.value))
		{
			valid = false;
			errorString += "No zip code entered.\n";
		}
		
		if (!regEmail.exec(document.fm.email.value))
		{
			valid = false
			errorString += "Invalid e-mail format.\n";
		}
		
		var levels = new Array("ms", "hs", "aph");
		
		if(!validCheckboxes(levels, document.fm))
		{
			valid = false;
			errorString += "No level taught selected.\n";
		}
		
		var subjects = new Array("math", "ss", "langarts", "sci", "tech", "forlang");
	
		if(!validCheckboxes(subjects, document.fm))
		{
			valid = false;
			errorString += "No subjects taught selected.\n";
		}
	
		if (!valid)
		{
			alert(errorString);
		}
				
		return valid;
	}
	
	function validCheckboxes(fieldNames, form)
	{
		for(var n = 0; n < fieldNames.length; n++)
		{		
			if (form.elements[fieldNames[n]].checked)
			{
				return true;
			}
		}
		return false;
	}
