function uberValidate(f) {
	var legal = new Array(" ","\"","\”","\'","@","#","\/","\\",";",":","{","}","\$","|","[","]","?","<",">","!","\%","^","&","*","(",")",",",".","=","+","_","-");
	for (var i = 0; i < f.elements.length; i++) {
		if (f.elements[i].className == "required" || f.elements[i].className == "requiredError") {
			if (f.elements[i].value == null || f.elements[i].value == "undefined" || f.elements[i].value == "") {
				alert('You have left out one of the required fields: \n"' + f.elements[i].id + '"');
				f.elements[i].className = "requiredError";
				f.elements[i].focus();
				return false;
			} else {
				f.elements[i].className = "required";
			}
		}
		/**/
		if (f.elements[i].className == "password" || f.elements[i].className == "passwordError") {
			if (f.elements[i].value == null || f.elements[i].value == "undefined" || f.elements[i].value == "") {
				alert('Your password is required.');
				f.elements[i].className = "passwordError";
				f.elements[i].focus();
				return false;
			} else {
				f.elements[i].className = "password";
				if(i != 0) {
					if (f.elements[i-1].className == "password" || f.elements[i-1].className == "passwordError") {
						// Assumes that required password, and confirm password, fields are in series with regards to elements within the form
						if (f.elements[i].value != f.elements[i-1].value) {
							alert("Your passwords do not match.");
							f.elements[i].className = "passwordError";
							f.elements[i-1].className = "passwordError";
							f.elements[i-1].focus();
							f.elements[i-1].select();
							return false;
						} else {
							f.elements[i].className = "password";
							f.elements[i-1].className = "password";
						}
					}
				}
			}
		}
		if (f.elements[i].className == "email" || f.elements[i].className =="emailError") {
			if (f.elements[i].value == null || f.elements[i].value == "undefined" || f.elements[i].value == "") {
				alert('Your e-mail address is required.');
				f.elements[i].className = "emailError";
				f.elements[i].focus();
				return false;
			} else {
				f.elements[i].className = "email";
				if (f.elements[i].value.indexOf("@",0) == -1 || f.elements[i].value.indexOf(".",0) == -1) {
					alert("Invalid e-mail address entered");
					f.elements[i].className = "emailError";
					f.elements[i].focus();
					f.elements[i].select();
					return false;
				} else {
					if(i != 0) {
						if (f.elements[i-1].className == "email" || f.elements[i-1].className == "emailError") {
							// Assumes that required email, and confirm email, fields are in series with regards to elements within the form
							if (f.elements[i].value != f.elements[i-1].value) {
								alert("You e-mail addresses don't match");
								f.elements[i-1].className = "emailError";
								f.elements[i].className = "emailError";
								f.elements[i-1].focus();
								f.elements[i-1].select();
								return false;
							}
						}
					}
				}
			}
					
		}
		if (f.elements[i].className == "number" || f.elements[i].className == "numberError") {
			if (f.elements[i].value == null || f.elements[i].value == "undefined" || f.elements[i].value == "") {
				alert("You have left out one of the required number fields.");
				f.elements[i].className = "numberError";
				f.elements[i].focus();
				return false;	
			} else {
				f.elements[i].className = "number";
				for(var n = 0; n < f.elements[i].value.length; n++) {
					if(f.elements[i].value.charAt(n) < "0" || f.elements[i].value.charAt(n) > "9") {
						alert("Only characters of numeric value are permitted in this field.");
						f.elements[i].className = "numberError";
						f.elements[i].focus();
						f.elements[i].select();
						return false;
						break;
					}
				}

			}
		}
		if (f.elements[i].className == "legal" || f.elements[i].className == "legalError") {
			if (f.elements[i].value == null || f.elements[i].value == "undefined" || f.elements[i].value == "") {
				alert('You have left out one of the required fields: \n"' + f.elements[i].id + '"');
				f.elements[i].className = "legalError";
				f.elements[i].focus();
				return false;	
			} else {
				f.elements[i].className = "legal";
				for (var n = 0; n < f.elements[i].value.length; n++) {
					for (var m = 0; m < legal.length; m++) {
						if(f.elements[i].value.charAt(n) == legal[m]) {
							alert("You have used an illegal character: "+legal[m]);
							f.elements[i].className = "legalError";
							f.elements[i].focus();
							f.elements[i].select();
							return false;
							break;
						}
					}
				}

			}
		}
		/**/
	}
}
