//Checks for a valid email address
function isValidEmail(emailToCheck) {
	allowedChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.";
	validatedE = true;

	//Split the email address into three parts (part1@part2.part3)
	var posAtSymbol;
	var posDotSymbol;

	//Make sure there is only one @ symbol and save it's location and the location of the last .
	var numFound = 0;

	for (i=0; i<emailToCheck.length; i++) {
		if (emailToCheck.charAt(i) == ".") {
			posDotSymbol = i;
		}

		if (emailToCheck.charAt(i) == "@") {
			numFound++;
			posAtSymbol = i;
		}
	}

	//If there are more than 1 @'s found or the last period found was before the @ set a faulty validation
	if ((numFound != 1) || (posDotSymbol < posAtSymbol))
		validatedE = false;

	//If there were no errors, split up the email string and check each segment
	if (validatedE) {

		//Split up the email into segments
		var part1 = emailToCheck.substring(0, posAtSymbol);
		var part2 = emailToCheck.substring(posAtSymbol+1, posDotSymbol);
		var part3 = emailToCheck.substring(posDotSymbol+1, emailToCheck.length);

		//Length errors
		if (part1.length < 2)
			validatedE = false;

		if (part2.length < 2)
			validatedE = false;

		if ((part3.length < 2) || (part3.length > 4))
			validatedE = false;

		//Check each segment for invalid characters (part1)
		allowedChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_";
		subValid1 = true;

		for (i=0; i<part1.length; i++) {
			validatedChar = false;

			//Make sure zip is numeric
			for (j=0; j<allowedChars.length; j++) {
				if (part1.charAt(i) == allowedChars.charAt(j)) {
					validatedChar = true;
					break;
				}
			}

			if (!validatedChar) {
				subValid1 = false;
				break;
			}
		}

		//Check each segment for invalid characters (part2)
		allowedChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";
		subValid2 = true;

		for (i=0; i<part2.length; i++) {
			validatedChar = false;

			//Make sure zip is numeric
			for (j=0; j<allowedChars.length; j++) {
				if (part2.charAt(i) == allowedChars.charAt(j)) {
					validatedChar = true;
					break;
				}
			}

			if (!validatedChar) {
				subValid2 = false;
				break;
			}
		}

		//Check each segment for invalid characters (part3)
		allowedChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.";
		subValid3 = true;

		for (i=0; i<part3.length; i++) {
			validatedChar = false;

			//Make sure zip is numeric
			for (j=0; j<allowedChars.length; j++) {
				if (part3.charAt(i) == allowedChars.charAt(j)) {
					validatedChar = true;
					break;
				}
			}

			if (!validatedChar) {
				subValid3 = false;
				break;
			}
		}

		if (!subValid1 || !subValid2 || !subValid3)
			validatedE = false;

	}

	return validatedE;
}