function validate(classname){

		var name = $$("." + classname); 				// Grabs the user submitted data to array
		var namevar;
		var err = Array();

		name.each(function(namevar)				// Runs through the array, each input gets
												//	sent to its code via the switch
		{
			namevar.removeClass("invalid");			// Resets the error state
			var input = namevar.alt.split("|");

			switch(input[0])
			{
			case 'email':
 				var requiredField = namevar.alt.search("/|req");
 				if (requiredField > 0 || namevar.value.length > 0)
	 			{

					var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-@";
					var Char;
					var isAt = namevar.value.search("@");
					var isAtDomian = namevar.value.lastIndexOf(".");
					for (i = 0; i < namevar.value.length ; i++)
					{
						Char = namevar.value.charAt(i);

						// Handles any characters that are not in "ValidChars"
						// Also checks that there are no illegal characters after the "@"
						if (ValidChars.indexOf(Char) == -1)
						{
							if (Char.search(/[.]/) == -1)
							{
				        		if (i > isAt)
								{
				        			namevar.addClass("invalid");
									err.push("Email Address not Valid");
				        		}
				        	}
			        	}

		        	}

					// Checks that there are characters after the first dot
					if (isAtDomian  +2 < namevar.value.length)
					{

					}
					else
					{
						namevar.addClass("invalid");
						err.push("Email Address not Valid");
					}
					if (isAt == -1)
					{
						namevar.addClass("invalid");
						err.push("Email Address must Contain the @ symbol");
					}								// Checks for "@"
					if (isAtDomian == -1)
					{
						err.push("Email Address must Contain a dot");
						namevar.addClass("invalid");
					}						// Checks for dot
					// Checks that the "@" is Before the dot
					if (isAt > 0 && isAtDomian > isAt && isAtDomian  +2 < namevar.value.length)
					{

					}
					else
					{
						namevar.addClass("invalid");
						err.push("Email Address does not match Valid Format");
					}
					if (namevar.value == "")
					{
						namevar.addClass("invalid");
						err.push("Email Address field is Empty");
					}
				}
			break;
			// Checks for illegal Characters and for a dot
			case 'website':
 				var requiredField = namevar.alt.search("/|req");
 				if (requiredField > 0 || namevar.value.length > 0)
	 			{

					var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-";
					var Char;
					var isAtDomian = namevar.value.search(/[.]/);
					for (i = 0; i < namevar.value.length ; i++)
					{
						Char = namevar.value.charAt(i);
						if (ValidChars.indexOf(Char) == -1)
						{
							if (Char.search(/[.]/) == -1)
							{
				        		namevar.addClass("invalid");
								err.push("WebSite contains illegal Characters");
				        	}
			        	}
					}
					if (isAtDomian  +2 < namevar.value.length)
					{

					}
					else
					{
						namevar.addClass("invalid");
						err.push("WebSite not Valid");
					}
					if (namevar.value == "")
					{
						namevar.addClass("invalid");
						err.push("WebSite field is Empty");
					}
					if (namevar.value.search(/[.]/) == -1)
					{
						namevar.addClass("invalid");
						err.push("WebSite must contain a dot");

					}
				}
			break;
			// Only checks that the field is not empty
			case 'required':
				if (namevar.value == "")
				{
					namevar.addClass("invalid");
					err.push("Required field is Empty");
				}
			break;
			//  Checks for numbers only
			case 'phoneNumber':
 				var requiredField = namevar.alt.search("/|req");
 				if (requiredField > 0 || namevar.value.length > 0)
	 			{
					var ValidChars = "+() -0123456789";
					var IsNumber=false;
					var Char;
					for (i = 0; i < namevar.value.length && IsNumber == false; i++)
					{
						Char = namevar.value.charAt(i);
						if (ValidChars.indexOf(Char) == -1)
			        	{
			        	IsNumber = true;
			        	}

		        	}
					if (namevar.value == "")
					{
						namevar.addClass("invalid");
						err.push("Phone Number field is Empty");
					}
					if (IsNumber)
					{
						namevar.addClass("invalid");
						err.push("Phone Number field must contain Numbers Only");

					}
				}
			break;
			// Checks for numbers only but allows a dot but not more than 2 numbers after the dot
			case 'price':
 				var requiredField = namevar.alt.search("/|req");
 				if (requiredField > 0 || namevar.value.length > 0)
	 			{
					var ValidChars = "0123456789";
					var IsNotNumber=false;
					var HasDecimal = namevar.value.search(/[.]/);
					var Char;
					for (i = 0; i < namevar.value.length && IsNotNumber == false; i++)
					{
						Char = namevar.value.charAt(i);
						if (ValidChars.indexOf(Char) == -1 && HasDecimal == -1)
			        	{
			        		IsNotNumber = true;
			        	}

		        	}
					if (HasDecimal > 0)
					{
						if (HasDecimal > namevar.value.length - 4 )
						{

						}
						else
						{
							namevar.addClass("invalid");
							err.push(namevar.name + " field contains too many numbers after a Decimal");
						}
					}
					if (namevar.value == "")
					{
						namevar.addClass("invalid");
						err.push(namevar.name + " field is Empty");
					}
		        	if (IsNotNumber)
					{
						namevar.addClass("invalid");
						err.push("Price must contain Numbers Only, One Decimal is Permitted");
					}
				}
			break;
			// Checks for numbers only and will allow dots
			case 'number':
 				var requiredField = namevar.alt.search("/|req");
 				if (requiredField > 0 || namevar.value.length > 0)
	 			{

				var ValidChars = "0123456789.";
				var IsNumber=false;
				var Char;
				for (i = 0; i < namevar.value.length && IsNumber == false; i++)
					{
						Char = namevar.value.charAt(i);
						if (ValidChars.indexOf(Char) == -1)
			        	{
			        	IsNumber = true;
			        	}

		        	}
					if (namevar.value == "")
					{
						namevar.addClass("invalid");
						err.push(namevar.name + " field must Contain Numbers");
					}
					if (IsNumber)
					{
						namevar.addClass("invalid");
						err.push("Hoi");
					}
				}
			break;
			// Checks for Characters only
			case 'character':
 				var requiredField = namevar.alt.search("/|req");
 				if (requiredField > 0 || namevar.value.length > 0)
	 			{
					var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
					var IsChar=false;
					var Char;
					for (i = 0; i < namevar.value.length && IsChar == false; i++)
					{
						Char = namevar.value.charAt(i);
						if (ValidChars.indexOf(Char) == -1)
			        	{
			        	IsChar = true;
			        	}

		        	}
					if (namevar.value == "")
					{
						namevar.addClass("invalid");
						err.push(namevar.name + " must contain letters only");
					}
					if (IsChar)
					{
						namevar.addClass("invalid");
						err.push("Hoi");
					}
				}
			break;
			case 'custom':
 				var requiredField = namevar.alt.search("/|req");
 				if (requiredField > 0 || namevar.value.length > 0)
	 			{
	 				var isNotExpected = true;
					for (i = 1; i < input.length && isNotExpected == true; i++)
	 				{
	 					var xpected = namevar.value.search(input[i]);
	 					if (xpected > -1)
	 					{
	 						isNotExpected = false;
	 					}
	 				}
	 				if (isNotExpected)
	 				{
	 					namevar.addClass("invalid");
						err.push(namevar.name + " does not match Expected");
	 				}
 				}
			break;

		}
	}
		);

	return err;

}

