function validate(frm) {
	if (document.frm.name.value == '') {
		alert('Please enter your name');
		document.frm.name.focus();
		return false;
	}
	if (document.frm.lame.value == '') {
		alert('Please enter your email address');
		document.frm.lame.focus();
		return false;
	}
	if (document.frm.lame.value != document.frm.lameagain.value) {
		alert('Please re-enter your email address');
		document.frm.lame.focus();
		return false;
	}	
	if (!checkEmail(document.frm.lame.value)) {
		alert('Please check your email address');
		document.frm.lame.focus();
		return false;
	}
	return true;
}

 
 
function checkEmail(strValue)
{
 /*
  retVal is the return value of the result of performing this function
  1 = Valid email address
  2 = Email address is incorrect (@ and .'s needs to be checked)
  3 = Ths email address contains invalid characters
  4 = Ths domain name contains invalid characters
  5 = The email address doesn't appear to be valid
  6 = Destination IP address is invalid
  7 = The domain name does not appear to be valid
  8 = The address does not end in a well-known domain or two letter country code
  9 = The address is missing a hostname
 */
 var retVal   = 1;
 var checkTLD   = 1;
 var knownDomsPat  = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
 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  = strValue.match(emailPat);
 
 if ( matchArray == null )
 {
  retVal = 2;
  //return retVal;
  alert("Email address seems incorrect (check @ and .'s)");
  return false;
 }
 
 var user   = matchArray[1];
 var domain   = matchArray[2];

 for ( i = 0; i < user.length; i++ )
 {
  if ( user.charCodeAt(i) > 127 )
  {
   retVal = 3;
   //return retVal;
   alert("Ths email address contains invalid characters.");
   return false;
    }
 }

 for ( i = 0; i < domain.length; i++ )
 {
  if ( domain.charCodeAt(i) > 127 )
  {
   retVal = 4;
   //return retVal;
   alert("Ths domain name contains invalid characters.");
   return false;
  }
 }
 
 if ( user.match(userPat) == null )
 {
  retVal = 5;
  //return retVal;
  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 )
   {
    retVal = 6;
    //return retVal;
    alert("Destination IP address is invalid!");
    return false;
   }
  }
  return true;
 }
 
 var atomPat = new RegExp("^" + atom + "$");
 var domArr = domain.split(".");
 var len  = domArr.length;

 for ( i = 0; i < len; i++ )
 {
  if ( domArr[i].search(atomPat) == -1 )
  {
   retVal = 7;
   //return retVal;
   alert("The domain name does not seem to be valid.");
   return false;
  }
 }
 
 if ( (checkTLD) && (domArr[domArr.length-1].length != 2) && (domArr[domArr.length-1].search(knownDomsPat) == -1) )
 {
  retVal = 8;
  //return retVal;
  alert("The address must end in a well-known domain or two letter " + "country.");
  return false;
 }
 
 if ( len < 2 )
 {
  retVal = 9;
  //return retVal;
  alert("This address is missing a hostname!");
  return false;
 }

 //return retVal;
 return true;
} 
