// JavaScript Document

function checkEmail (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)
  {
    alert("Email address seems incorrect (check @ and .'s)")
    return false
  }

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

  if (user.match(userPat) == null)
  {
    alert("The email address 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 chk()
{
  // the name 'contact_form' must be the same as the name of the formin personal.php
  // the same applies to the individual fields - name, contact and notes

  var d = document.contact_form;
  if(d.name.value == "")
  {
    alert("Please enter your full name.");
    d.name.focus();
    return false;
  }

  if(d.contact.value == "")
  {
    alert("Please enter your email adress.");
    d.contact.focus();
    return false;
  }

  if(!checkEmail(d.contact.value))
  {
    d.contact.focus();
    return false;
  }

  if(d.notes.value == "")
  {
    alert("Please enter your message.");
    d.notes.focus();
    return false;
  }

  return true;
}

