﻿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;
						}
					}
				}

			}
		}
	}
}
