function validate() {

with (document.PPForm) {
    
    var pattern = /\s*\w+@[^\.]+\.[^\.]+(\.[^\.])*\s*/;
    legalChars = "~0123456789.-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_@+";
    errorMsg = "";

//    if (!(confirmed.checked))  errorMsg += "\nConfirmation box must be checked";

/***
amount
first_name
last_name
address1
city
state
zip
night_phone_a
night_phone_b
night_phone_c
email
***/

///////////
    if (amount.value.length < 1)  errorMsg += "\nDonation amount is required";
    if (first_name.value.length < 2)  errorMsg += "\nFirst Name must be at least 2 characters";
    if (last_name.value.length < 2)  errorMsg += "\nLast Name must be at least 2 characters";
    if (address1.value.length < 2)  errorMsg += "\nAddress must be at least 2 characters";
    if (city.value.length < 2)  errorMsg += "\nCity must be at least 2 characters";
    if (state.value.length < 2)  errorMsg += "\nState Code must be 2 characters";
	if (zip.value.length < 5)  errorMsg += "\nZip Code must be 5 characters";
    if (night_phone_a.value.length < 3)  errorMsg += "\nArea Code must be 3 characters";
    if (night_phone_b.value.length < 3)  errorMsg += "\nPhone Prefix must be 3 characters";
    if (night_phone_c.value.length < 4)  errorMsg += "\nPhone Suffix must be 4 characters";

  if (email.value.length < 7)
    errorMsg += "\nE-Mail address must be at least 7 characters";
  //Validate Email against pattern match
  if (email.value != "") {
      if(!pattern.test(email.value)) {
      errorMsg += "\nInvalid E-Mail Address."
      }
  }
  //This enhances the previous EMail check. This checks for legal values and returns illegal values
  if (email.value != "" && email.value.length > 1) {
      for(x=0; x < email.value.length; x++) {
    if (legalChars.indexOf(email.value.substring(x,x+1)) < 0)
        errorMsg += "\n" + "Illegal character '"+email.value.substring(x,x+1)+"' at position " +(x+1)+ " in E-Mail Address.";
      }
  }

	/************************************/
    if (MailAcknowledgement.checked) {

		if (!((inmem_inhonor[0].checked) || (inmem_inhonor[1].checked))) {
			 errorMsg += "\nPlease select if donation is 'In Memory' or 'In Honor'";
		}
		else if (inmem_inhonor[0].checked) {
			if ((MemoryName.value.length < 4) || (MemoryName.value=="Name of Person"))  errorMsg += "\nName of Person required";
		}
		else if (inmem_inhonor[1].checked) {
			if ((HonorName.value.length < 4) || (HonorName.value=="Name of Person"))  errorMsg += "\nName of Person required";

			if (Occasion[Occasion.selectedIndex].value == "other") {
				if (Occasion_Other.value.length < 4)  errorMsg += "\nPlease enter the Occasion";
			}
		}

		if (ak_first_name.value.length < 2)  errorMsg += "\nAcknowledgement First Name required";
		if (ak_last_name.value.length < 2)  errorMsg += "\nAcknowledgement Last Name required";
		if (ak_address1.value.length < 2)  errorMsg += "\nAcknowledgement Address required";
		if (ak_city.value.length < 2)  errorMsg += "\nAcknowledgement City required";
		if (ak_state.value.length < 2)  errorMsg += "\nAcknowledgement State required";
		if (ak_zip.value.length < 5)  errorMsg += "\nAcknowledgement Zip required";
	}




	//FINAL CHECK FOR ERROR MESSAGES
    if (errorMsg.length > 0) {
	errorMsg = "The following errors must be corrected before submitting this form: \n" + errorMsg
	alert (errorMsg);
	return false;
    }
return true;
}
}
