
// Two functions to check if an e-mail address entered in a field called
// email, is a correctly formatted e-mail address, and has a valid top
// level domain.
// Call from the onSubmit handler of the form by using this code
// onSubmit="return check(this)"

function check(obj) {
  valid=validmail(obj.User_email.value);
  if (valid!='ok') {
   Error=window.open('','Error','toolbar=no,location=no,directories=no,menubar=no,resizable=no,scrollbars=no,status=no,width=320,height=150')
   Str='<HTML><HEAD><TITLE>Error: invalid e-mail address</TITLE></HEAD><BODY BGCOLOR=white><CENTER><font face=arial size=+2>ERROR!</font><br><br><font face=arial size=2>The email address given is not valid because:<br><b> '
  if (valid.charAt(5)==1) Str+='it contains no @'
  if (valid.charAt(5)==2) Str+='it starts with a . or @'
  if (valid.charAt(5)==3) Str+='it contains an invalid char ('+valid.charAt(6)+')'
  if (valid.charAt(5)==4) Str+='it contains more than one @'
  if (valid.charAt(5)==5) Str+='it has a . adjacent to the @'
  if (valid.charAt(5)==6) Str+='it ends with a . or an @'
  if (valid.charAt(5)==7) Str+='it contains two adjacent .'
  if (valid.charAt(5)==8) Str+='it has an invalid top level domain'
  if (valid.charAt(5)==9) Str+='it has an invalid top level domain'
  Str+='</b><FORM><INPUT TYPE=BUTTON VALUE=" OK " onClick="self.close()"></CENTER></FORM></BODY></HTML></A>'
  Error.focus()
  Error.document.open()
  Error.document.write(Str)
  Error.document.close()
  return false
 }
 return true
}

function validmail(obj) {
 disallowed="()<>,;:\\\"[ ]"
 Domains=new Array('com','org','net','edu','gov','biz','name','mil','int')
 Domsa='defgilmnoqrcstuwz'
 Domsb='abdefghijmnorstuvwyz'
 Domsc='acfghiklmnorsuvxyz'
 Domsd='ejkmoz'
 Domse='cqeghst'
 Domsf='ijkmor'
 Domsg='abdefghilmnpqrtuwy'
 Domsh='kmnrtu'
 Domsi='delmnoqrst'
 Domsj='emop'
 Domsk='eghimnprwyz'
 Domsl='abcikrsntuvy'
 Domsm='acdghklmnopqrstvuwxyz'
 Domsn='acefgiloprtuz'
 Domso='m'
 Domsp='aefghklmnrtwy'
 Domsq='a'
 Domsr='eouw'
 Domss='abcdeghijklmnortuvyz'
 Domst='cdfghjkmnoprtvwz'
 Domsu='agknssyz'
 Domsv='aceginu'
 Domsw='fs'
 Domsx=''
 Domsy='eu'
 Domsz='amw'
 valid=true;
 if (obj.indexOf('@')<0) return 'Error1';
 if (obj.indexOf('.')==0 || obj.indexOf('@')==0) return 'Error2';
 for (var i=0;i<12;i++) {
  if (obj.indexOf(disallowed.substring(i,i+1))!=-1)  return 'Error3'+disallowed.substring(i,i+1);
 }
 atpos=obj.indexOf('@')
 if (obj.charAt(atpos-1)=='.') return 'Error5'
 copy=obj.substring(atpos+1,obj.length);
 if (copy.indexOf('@')!=-1) return 'Error4';
 if (copy.indexOf(".")<1) return 'Error5';
 if (copy.lastIndexOf(".")+1==copy.length) return 'Error6';
 copy=obj;
 while (copy.indexOf('.')!=-1) {
  copy=copy.substring(copy.indexOf('.')+1,copy.length);
  if (copy.indexOf('.')==0) return 'Error7';
 }
 copy=obj.substring(obj.lastIndexOf('.')+1,obj.length).toLowerCase();
 if (copy.length>3 || copy.length<1) return 'Error8'
  else {
  k=-1;valid=false;
  while (Domains[++k]) {
   if (Domains[k]==copy) valid=true
  }
  if (copy.length==2) {
   comp=eval('Doms'+copy.charAt(0))
   k=-1
   while (comp.charAt(++k)) {
    if (copy.charAt(1)==comp.charAt(k)) valid=true
   }
  }
 }
 if (valid!=true) return 'Error9'
 return 'ok'
}

