function isEmail(x)
{
	var emailStr=x.value;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null)
	  return "the email address seems incorrect (check @ and .'s)";

	var user=matchArray[1];
	var domain=matchArray[2];
	if (user.match(userPat)==null)
	   return "the email address username doesn't seem to be valid";

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null)
	{
		for (var i=1;i<=4;i++) {
		   if (IPArray[i]>255)
				return "the email address destination IP address is invalid";
		}
		return "";
	}

	var domainArray=domain.match(domainPat);
	if (domainArray==null)
		return "the email address domain name doesn't seem to be valid.";

	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;

	if (domArr[domArr.length-1].length<2)
	   return "the email address must end in a two letter country code, or three or more letter international code.";

	if (len<2)
	   return "the email address is missing a hostname";

	return "";
}


function valIsNumber(x) {
	if (getLength(x) > 0) {
		if (isNaN(getValue(x)))
			return "must be a number";
		else if (parseInt(getValue(x))>=0)
			return "";
		else
			return "must be a number";
	} else {
		return "";
	}
}

function getValue(x) {
	if (x.type.substr(0,6)=="select") //a hack thanks to Netscape
		return x.options[x.selectedIndex].value;
	else
		return x.value;
}

function getLength(x) {
	if (x.type.substr(0,6)=="select") //a hack thanks to Netscape
		if (x.selectedIndex > -1)
			return x.options[x.selectedIndex].value.length;
		else
			return 0;
	else {
		x.value = trimString(x.value);
		return x.value.length;
	}
}

function trimString(theString) {
	var newString = theString;
	while (newString.charAt(0) == " ") {
		newString = newString.substring(1,newString.length);
	}
	while (newString.charAt(newString.length - 1) == " ") {
		newString = newString.substring(0,newString.length - 1);
	}
	return newString;
}

