// Field validator functions.  Copyright (c) 2009 by Dale M. Smith.

function validateTextField(strng, name)
{
	var error = "";
	if (strng == "") {
		error = "-> Please enter a value for " + name + ".\n";
	}
	return error;
}

function validateEmail(strng, name)
{
	var error = validateTextField(strng, name);
	if (error == "") {
		var filter=/^.+@.+\..{2,3}$/;
		if (!(filter.test(strng))) { 
		   error = "-> Please enter a valid email address.\n";
		}
		else {
			//test email for illegal characters
			var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
			if (strng.match(illegalChars)) {
				error = "-> The email address contains illegal characters.\n";
			}
		}
	}
	return error;
}

function validateOptionalDate(strng, name) /* MM/DD/YY, M/DD/YY, MM/D/YY, or M/D/YY */
{
	var error = "";
	if (strng.length == 0) {
		return "";
	}
	else if (strng.length < 8 || strng.length > 10) {
		error = "-> For " + name + ", please enter a date of the form 'mm/dd/yyyy' (e.g., 7/31/1962).\n";
	}
	else {
		var filter = /\d{1,2}\/\d{1,2}\/\d\d\d\d/;

		if (!filter.test(strng)) {
			error = "-> For " + name + ", please enter a date of the form 'mm/dd/yyyy' (e.g., 7/31/1962).\n";
		}
	}
	return error;
}

function validateOptionalNum(strng, name, minlen, maxlen)
{
	var error = "";
	if (strng.length == 0) {
		return "";
	}
	else if (strng.length < minlen || strng.length > maxlen) {
		error = "-> For " + name + ", please enter a number between " + minlen + " and " + maxlen + " digits long.\n";
	}
	else {
		var filter = /[0-9]/;
		
		for (var num = 0; num < strng.length; num++) {
			if (!filter.test(strng.charAt(num))) {
				 error = "-> In " + name + ", '" + strng.charAt(num) + "' is not a valid digit.\n";
				 break;
			}
		}
	}
	return error;
}

function validateState(strng, name)
{
	alert("strng=" + strng + ".");
	var error = validateTextField(strng, name);
	if (error == "") {
		var filter = /^[A-Za-z][A-Za-z]$/;
		if (!filter.test(strng)) { 
		   error = "-> For State, please enter a valid two-letter state abbreviation ('" + strng + "').\n";
		}
	}
	return error;
}

function validateTel(strng, name)
{
	var error = validateTextField(strng, name);
	if (error == "") {
		var validChars = "01234567890().+- ";
		for (var ch = 0; ch < strng.length; ch++) {
			if (validChars.indexOf(strng.charAt(ch)) == -1) {
			   error = "-> For " + name + ", '" + strng.charAt(ch) + "' is not valid for a telephone number.\n";
			   return error;
			}
		}
	}
	return error;
}

function validateZip(strng, name)
{
	var error = validateTextField(strng, name);
	if (error == "") {
		var filter = /^[0-9][0-9][0-9][0-9][0-9]$/;
		var filter2 = /^[0-9][0-9][0-9][0-9][0-9]\-[0-9][0-9][0-9][0-9]$/;
		if (!filter.test(strng) && !filter2.test(strng)) { 
		   error = "-> For " + name + ", please enter 5 digits or a Zip+4 code.\n";
		}
	}
	return error;
}

function validateZip5(strng, name)
{
	var error = validateTextField(strng, name);
	if (error == "") {
		var filter = /^[0-9][0-9][0-9][0-9][0-9]$/;
		if (!filter.test(strng)) { 
		   error = "-> For " + name + ", please enter a 5 digit zip code.\n";
		}
	}
	return error;
}
