
var defaultEmptyOK = false
var whitespace = " \t\n\r";

// Check whether string s is empty.
function isEmpty(s)	{   
	return ((s == null) || (s.length == 0))
}
// Returns true if string s is empty or whitespace chars only.
function isWhitespace (s)	{   
	var i;

	if (isEmpty(s)) return true;

	// Search thru string's chars one by one
	// until we find a non-whitespace char.
	// When we do, return false; if we don't, return true.

	for (i = 0; i < s.length; i++)	{
		// Check that current char isn't whitespace.
		var c = s.charAt(i);
		if (whitespace.indexOf(c) == -1) return false;
	}

	// All chars are whitespace
	return true;
}

// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form 'a@b.c', i.e:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//

function isEmail (s)	{

	if (isEmpty(s)) 
		if (isEmail.arguments.length == 1) return defaultEmptyOK;
		else return (isEmail.arguments[1] == true);

	if (isWhitespace(s)) return false;

	// there must be >= 1 character before @, so we
	// start looking at character position 1  (i.e. 2nd char)
	var i = 1;
	var sLength = s.length;

	// look for @
	while ((i < sLength) && (s.charAt(i) != "@"))	{ 
		i++
	}

	if ((i >= sLength) || (s.charAt(i) != "@")) return false;
	else i += 2;

	// look for .
	while ((i < sLength) && (s.charAt(i) != "."))	{
		i++
	}

	// there must be at least one character after the .
	if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
	else return true;
}

// pass in the form's email field, e.g.
// onsubmit="return checkEmail(this.email_field);"
function checkEmail (f)	{
	var v = f.value;

	if (!isEmail(v))	{
		var errMsg = "Sorry, the email address you entered:\n";
		errMsg += v;
		errMsg += "\ndoes not appear to be valid.";

		alert (errMsg);

		f.select();
		f.focus();

		return false;  
	}
	else return true;

}