// usage: <form name=blah onsubmit="return checkEmail(this.form.emailfield.value)">

function email_check(emailStr){
emailPat=/^(.+)@(.+)$/
specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
validChars="\[^\\s" + specialChars + "\]"
quotedUser="(\"[^\"]*\")"
ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
atom=validChars + '+'
word="(" + atom + "|" + quotedUser + ")"
userPat=new RegExp("^" + word + "(\\." + word + ")*$")
domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
matchArray=emailStr.match(emailPat)
if (matchArray==null){
  alert("Your e-mail address seems incorrect (check @ and .'s)");
  return false;
}
user=matchArray[1]
domain=matchArray[2]
if (user.match(userPat)==null){
  alert("The username doesn't seem to be valid.");
  return false
}
IPArray=domain.match(ipDomainPat)
if (IPArray!=null){
  for (i=1;i<=4;i++){
    if (IPArray[i]>255){
      alert("Destination IP address is invalid!");
      return false;
    }
  }
}
domainArray=domain.match(domainPat)
if (domainArray==null){
  alert("Your domain name doesn't seem to be valid.");
  return false;
}
atomPat=new RegExp(atom,"g");
domArr=domain.match(atomPat);
len=domArr.length;
if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4){
  alert("Your e-mail address must end in a two to four letter domain.");
  return false;
}
if (len<2){
  errStr="Your address is missing a hostname!";
  alert(errStr);
  return false;
}
return true;
}