function uberValidate(d) {
	var e = new Array(" ", '"', "???", "'", "@", "#", "/", "\\", ";", ":", "{", "}", "$", "|", "[", "]", "?", "<", ">", "!", "%", "^", "&", "*", "(", ")", ",", ".", "=", "+", "_", "-");
	
	for (var f = 0; f < d.elements.length; f++) {
		
		//Added some Jquery as a fix; has class and adding / remove classes
		jqueryObjec = $(d.elements[f]);
		
		if (jqueryObjec.hasClass( "required" ) || jqueryObjec.hasClass( "requiredError" )) {
			if (d.elements[f].value == null || d.elements[f].value == "undefined" || d.elements[f].value == "") {
				var b = d.elements[f].getAttribute("rel");
				if (b == undefined) {
					b = d.elements[f].id;
				}
				alert('You have left out one of the required fields: \n"' + b + '"');
				jqueryObjec.removeClass("required").addClass('requiredError');
				
				;d.elements[f].focus();
				return false;
			} else {
				jqueryObjec.removeClass("requiredError").addClass('required');
			}
		}
		if ( jqueryObjec.hasClass( "password") || jqueryObjec.hasClass( "passwordError") ) {
			if (d.elements[f].value == null || d.elements[f].value == "undefined" || d.elements[f].value == "") {
				alert("Your password is required.");
				jqueryObjec.removeClass("password").addClass('passwordError');
				d.elements[f].focus();
				return false;
			} else {
				jqueryObjec.removeClass("passwordError").addClass('password');
				
				
				if (f != 0) {
					jqueryObjec2 = $(d.elements[f-1]);
					
					if ( jqueryObjec2.hasClass("password") || jqueryObjec2.hasClass("passwordError")) {
						if (d.elements[f].value != d.elements[f - 1].value) {
							alert("Your passwords do not match.");
							
							jqueryObjec.removeClass("password").addClass('passwordError');
							jqueryObjec2.removeClass("password").addClass('passwordError');
							
							d.elements[f - 1].focus();
							d.elements[f - 1].select();
							return false;
						} else {
							jqueryObjec.removeClass("passwordError").addClass('password');
							jqueryObjec2.removeClass("passwordError").addClass('password');
						}
					}
				}
			}
		}
		if ( jqueryObjec.hasClass( "email") || jqueryObjec.hasClass( "emailError")) {
			if (d.elements[f].value == null || d.elements[f].value == "undefined" || d.elements[f].value == "") {
				alert("Your e-mail address is required.");
				jqueryObjec.removeClass("email").addClass('emailError');
				d.elements[f].focus();
				return false;
			} else {
				jqueryObjec.removeClass("emailError").addClass('email');
				if (d.elements[f].value.indexOf("@", 0) == -1 || d.elements[f].value.indexOf(".", 0) == -1) {
					alert("Invalid e-mail address entered");
					jqueryObjec.removeClass("email").addClass('emailError');
					
					d.elements[f].focus();
					d.elements[f].select();
					return false;
				} else {
					if (f != 0) {
						jqueryObjec2 = $(d.elements[f-1]);
						
						if ( jqueryObjec2.hasClass("email") ||  jqueryObjec2.hasClass("emailError")) {
							if (d.elements[f].value != d.elements[f - 1].value) {
								alert("You e-mail addresses don't match");
								
								jqueryObjec.removeClass("email").addClass('emailError');
								jqueryObjec2.removeClass("email").addClass('emailError');
								
								d.elements[f - 1].focus();
								d.elements[f - 1].select();
								return false;
							}
						}
					}
				}
			}
		}
		
		if ( jqueryObjec.hasClass( "checkbox") || jqueryObjec.hasClass( "checkboxError") ) {
			if (d.elements[f].checked == null || d.elements[f].checked == false) {
				var b = d.elements[f].getAttribute("rel");
				if (b == undefined) {
					b = d.elements[f].id;
				}
				alert('You have left out one of the required fields: \n"' + b + '"');
				jqueryObjec.removeClass("checkbox").addClass('checkboxError');
				d.elements[f].focus();
				return false;
			} else {
				jqueryObjec.removeClass("checkboxError").addClass('checkbox');
			}
		}
		if ( jqueryObjec.hasClass( "number") || jqueryObjec.hasClass( "numberError") ) {
			if (d.elements[f].value == null || d.elements[f].value == "undefined" || d.elements[f].value == "") {
				alert("You have left out one of the required number fields.");
				jqueryObjec.removeClass("number").addClass('numberError');
				d.elements[f].focus();
				return false;
			} else {
				d.elements[f].className = "number";
				for (var c = 0; c < d.elements[f].value.length; c++) {
					if (d.elements[f].value.charAt(c) < "0" || d.elements[f].value.charAt(c) > "9") {
						alert("Only characters of numeric value are permitted in this field.");
						jqueryObjec.removeClass("number").addClass('numberError');
						d.elements[f].focus();
						d.elements[f].select();
						return false;
						break;
					}
				}
			}
		}
		if (jqueryObjec.hasClass( "legal") || jqueryObjec.hasClass( "legalError") ) {
			if (d.elements[f].value == null || d.elements[f].value == "undefined" || d.elements[f].value == "") {
				alert('You have left out one of the required fields: \n"' + d.elements[f].id + '"');
				jqueryObjec.removeClass("legal").addClass('legalError');
				d.elements[f].focus();
				return false;
			} else {
				d.elements[f].className = "legal";
				for (var c = 0; c < d.elements[f].value.length; c++) {
					for (var a = 0; a < e.length; a++) {
						if (d.elements[f].value.charAt(c) == e[a]) {
							alert("You have used an illegal character: " + e[a]);
							jqueryObjec.removeClass("legal").addClass('legalError');
							d.elements[f].focus();
							d.elements[f].select();
							return false;
							break;
						}
					}
				}
			}
		}
		if ( jqueryObjec.hasClass( "selectrequired")|| jqueryObjec.hasClass( "selectrequiredError") ) {
			if (d.elements[f].value == null || d.elements[f].value == "undefined" || d.elements[f].value == "" || d.elements[f].value == "-1") {
				var b = d.elements[f].getAttribute("rel");
				if (b == undefined) {
					b = d.elements[f].id;
				}
				alert('You have left out one of the required fields: \n"' + b + '"');
				jqueryObjec.removeClass("selectrequired").addClass('selectrequiredError');
				
				d.elements[f].focus();
				return false;
			} else {
				jqueryObjec.removeClass("selectrequiredError").addClass('selectrequired');
			}
		}
	}
}
