function EmailCheck (emailStr) 
{
  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) 
  {
     /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
    alert("Email address seems incorrect (check @ and .'s)");
    return (false);
  }

  var user=matchArray[1];
  var domain=matchArray[2];

  if (user.match(userPat)==null) 
  {
    // user is not valid
    alert("The username doesn't seem to be valid.");
    return (false);
  }

  var IPArray=domain.match(ipDomainPat)
  if (IPArray!=null) 
  {
    for (var i=1;i<=4;i++) 
    {
      if (IPArray[i]>255) 
      {
        alert("Destination IP address is invalid!");
        return (false);
      }
    }
    return (true);
  }

  var domainArray=domain.match(domainPat);
  if (domainArray==null) 
  {
    alert("The domain name doesn't seem to be valid.");
    return (false);
  }

  var atomPat=new RegExp(atom,"g");
  var domArr=domain.match(atomPat);
  var len=domArr.length;
  
  if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
  {
    alert("The address must end in a three-letter domain, or two letter country.");
    return (false);
  }
  if (len<2) 
  {
    alert("This address is missing a hostname!");
    return (false);
  }
  return (true);
}

function Form1_Validator(theForm)
{
  
  if (theForm.name.value == "")
  {
    alert("Please enter a value for the 'Name' field.");
    theForm.name.focus();
    return (false);
  }
  if (theForm.company.value == "")
  {
    alert("Please enter a value for the 'Company' field.");
    theForm.company.focus();
    return (false);
  }
  if (!EmailCheck (theForm.email.value))
  {
    theForm.email.focus();
    return (false);
  }
  if (theForm.phone.value == "")
  {
    alert("Please enter a value for the 'Phone' field.");
    theForm.phone.focus();
    return (false);
  }
  return (true);
}