function ValidateIt(theForm)
{

  if (theForm.crdEmail.value == "")
  {
    alert("Please enter a value for the \"Email Address\" field.");
    theForm.crdEmail.focus();
    return (false);
  }

  if (theForm.crdEmail.value.length > 128)
  {
    alert("Please enter at most 128 characters in the \"Email Address\" field.");
    theForm.crdEmail.focus();
    return (false);
  }

   //  Begin Email address validation . -->
   emailStr = (theForm.crdEmail.value)    
   
	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)")
		theForm.crdEmail.focus();
		return false
	}

	var user=matchArray[1]
	var domain=matchArray[2]

	// See if "user" is valid 
	if (user.match(userPat)==null) {
	    // user is not valid
	    alert("The username doesn't seem to be valid.")
	    theForm.crdEmail.focus();
	    return false
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic
       host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
	    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Destination IP address is invalid!")
	        theForm.crdEmail.focus();
		return false
	    }
    }
    return true
	}

	// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("The domain name doesn't seem to be valid.")
		theForm.crdEmail.focus();
	    return false
	}

	/* domain name seems valid, but now make sure that it ends in a
       three-letter word (like com, edu, gov) or a two-letter word,
       representing country (uk, nl), and that there's a hostname preceding 
       the domain or country. */

	/* Now we need to break up the domain to get a count of how many atoms
       it consists of. */

	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>5) {
	   // the address must end in a two letter or three letter word.
	   alert("The address must end in a four-letter domain, or two letter country.")
	   theForm.crdEmail.focus();
	   return false
	}

	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="This address is missing a hostname!"
	   alert(errStr)
	   theForm.crdEmail.focus();
	   return false
	}

//  End email address validation -->




  if (theForm.crdPassword1.value == "")
  {
    alert("Please enter a value for the \"Password\" field.");
    theForm.crdPassword1.focus();
    return (false);
  }

  if (theForm.crdPassword1.value.length < 4)
  {
    alert("Please enter at least 4 characters in the \"Password\" field.");
    theForm.crdPassword1.focus();
    return (false);
  }

  if (theForm.crdPassword1.value.length > 20)
  {
    alert("Please enter at most 20 characters in the \"Password\" field.");
    theForm.crdPassword1.focus();
    return (false);
  }

  if (theForm.crdPassword2.value == "")
  {
    alert("Please enter a value for the \"Confirm Password\" field.");
    theForm.crdPassword2.focus();
    return (false);
  }

  if (theForm.crdPassword2.value.length < 4)
  {
    alert("Please enter at least 4 characters in the \"Confirm Password\" field.");
    theForm.crdPassword2.focus();
    return (false);
  }

  if (theForm.crdPassword2.value.length > 20)
  {
    alert("Please enter at most 20 characters in the \"Confirm Password\" field.");
    theForm.crdPassword2.focus();
    return (false);
  }

  if (theForm.crdFirst.value == "")
  {
    alert("Please enter a value for the \"First Name\" field.");
    theForm.crdFirst.focus();
    return (false);
  }

  if (theForm.crdFirst.value.length > 32)
  {
    alert("Please enter at most 32 characters in the \"First Name\" field.");
    theForm.crdFirst.focus();
    return (false);
  }

  if (theForm.crdLast.value == "")
  {
    alert("Please enter a value for the \"Last Name\" field.");
    theForm.crdLast.focus();
    return (false);
  }

  if (theForm.crdLast.value.length > 32)
  {
    alert("Please enter at most 32 characters in the \"Last Name\" field.");
    theForm.crdLast.focus();
    return (false);
  }

  if (theForm.crdCity.value == "")
  {
    alert("Please enter a value for the \"City\" field.");
    theForm.crdCity.focus();
    return (false);
  }

  if (theForm.crdCity.value.length > 32)
  {
    alert("Please enter at most 32 characters in the \"City\" field.");
    theForm.crdCity.focus();
    return (false);
  }

  if (theForm.crdState.value == "")
  {
    alert("Please enter a value for the \"State\" field.");
    theForm.crdState.focus();
    return (false);
  }

  if (theForm.crdState.value.length > 32)
  {
    alert("Please enter at most 32 characters in the \"State\" field.");
    theForm.crdState.focus();
    return (false);
  }

  if (theForm.crdCompany.value == "")
  {
    alert("Please enter a value for the \"Firm Name\" field.");
    theForm.crdCompany.focus();
    return (false);
  }

  if (theForm.crdCompany.value.length > 64)
  {
    alert("Please enter at most 128 characters in the \"Firm Name\" field.");
    theForm.crdCompany.focus();
    return (false);
  }


  return (true);
}