// form_functions.js

/* 

Many helper functions for form validation

*/

// Acceptable 'text' characters:
// 'A' - 'Z', 'a' - 'z', '.', ' ', ',', '-'
function isAllText(field, friendlyName) {

	for (var i = 0; i < field.value.length; i++) {
	
		// return a useful error message & boolean false
		// once we find an invalid character
		if ( !(field.value.charAt(i) >= 'A' 
				&& field.value.charAt(i) <= 'Z')
			&& !(field.value.charAt(i) >= 'a' 
				&& field.value.charAt(i) <= 'z')
			&& field.value.charAt(i) != ' '
			&& field.value.charAt(i) != '.'
			&& field.value.charAt(i) != ','
			&& field.value.charAt(i) != '-'
			&& field.value.charAt(i) != '\'')
		{
			// non-text character in field.
			alert("Please use only alphabet characters, apostrophes, spaces, commas, hyphens or "
				+ "periods in the '" + friendlyName + "' field.");
			field.focus();
			field.select();
			return false;
		}

	}
	
	// All characters valid.
	return true;
	
}


function hasMinimumLength(field, minLength, friendlyName) {

	if (field.value.length < minLength) {
		alert("Please enter your complete " + friendlyName + ".");
		field.focus();
		field.select();
		return false;
	}
	
	return true;
}

function isAllDigits(field, friendlyName) {
	for (var i = 0; i < field.value.length; i++) {
	
		// return a useful error message & boolean false
		// once we find an invalid character
		if (field.value.charAt(i) < '0' 
			|| field.value.charAt(i) > '9')
		{
			// non-text character in field.
			alert("Please enter only numbers in the '" + friendlyName + "' field.");
			field.focus();
			field.select();
			return false;
		}

	}
	
	// All characters valid.
	return true;
}

// Make sure we have at least one number or letter
function isNotEmpty(field, friendlyName) {

	for (var i = 0; i < field.value.length; i++) {
	
		// return a useful error message & boolean false
		// once we find an invalid character
		if ((field.value.charAt(i) >= 'A' 
			&& field.value.charAt(i) <= 'Z')
			|| 
			(field.value.charAt(i) >= 'a' 
			&& field.value.charAt(i) <= 'z')
			||
			(field.value.charAt(i) >= '0'
			&& field.value.charAt(i) <= '9'))
		{
			return true;
		}
	}
	
	// Couldn't find any alphabetic or numeric characters.
	alert("Please fill in the '" + friendlyName + "' field.");
	field.focus();
	field.select();
	return false;
}


function isPhoneNumber(field, friendlyName) {

	if (field.value != "") {
		var valid = "0123456789-() ";
		var temp;
		
		for (var i = 0; i < field.value.length; i++) {
		
			temp = "" + field.value.substring(i, i+1);
			
			if (valid.indexOf(temp) == "-1") {
			
				alert("Invalid " + friendlyName + ", only numbers 0-9, " 
					+ "hyphens, parentheses and spaces are allowed.");
				field.focus();
				field.select();
				return false;
				
			}
			
		}

	}

	if (field.value.length < 10) {
		alert("Please include your complete " + friendlyName + ".");
		field.focus();
		field.select();
		return false;
	}
}


function isEmail(field) {

	if ((field.value.length < 5)
		|| (field.value.indexOf('@') < 2))
	{
		alert("Please enter your email address.");
		field.focus();
		field.select();
		return false;
	}

	return true;

}

function isSomethingSelected(field, friendlyName) {

	if (field.selectedIndex <= 0) {
		alert("Please select your " + friendlyName + ".");
		field.focus();
		return false;
	}

	return true;

}