    function VerifyForm(form) {
      var checkemail = form.email.value.match(/\b(^(\S+@).+(\..{2,6})$)\b/gi);

       if(!form) {
            return false;
        }
        if(!form.firstname.value) {
            alert("Your FIRST name is blank!\nPlease revise this field.");
            return false;
        }
        if(form.firstname.value.match(/[^A-z\.\ \'\`\-]/g)){
            alert("Your FIRST name appears to contain improper characters!\nPlease revise this field.");
            return false;
        }
        if(countchars(form.firstname.value)){
            alert("Your FIRST name appears to contain improper usage of letters!\nPlease revise this field.");
            return false;
        }
        if(!form.firstname.value.match(/[A-z\.]{2,20}/g)){
            alert("Your FIRST name appears to be either too short or unrealistically long!\nPlease revise this field.");
            return false;
        }
        if (form.firstname.value.match(/Dr\.\s|dr\.\s|Rev\.\s|rev\.\s|Jr\.\s|jr\.\s|Sr\.\s|sr\.\s|\sIII|III\s|\siii|iii\s|\sII|II\s|\sii|ii\s|\sIV|IV\s|\siv|iv\s|Mr\.\s|mr\.\s|Mrs\.\s|mrs\.\s|Ms\.\s|ms\.\s/g)){
            alert("Your FIRST name appears to contain prefixes or suffixes that are not appropriate!\nPlease revise this field.");
            return false;
        }
        if (badCAPS(form.firstname)){
            alert("Your FIRST name appears to have inappropriate use of upper/lower case!\nPlease revise this field.");
            return false;
        }
        if(!form.lastname.value) {
            alert("Your LAST name is blank!\nPlease revise this field.");
            return false;
        }
        if(form.lastname.value.match(/[^A-z\.\ \'\`\-]/g)){
            alert("Your LAST name appears to contain improper characters!\nPlease revise this field.");
            return false;
        }
        if(countchars(form.lastname.value)){
            alert("Your LAST name appears to contain improper usage of letters!\nPlease revise this field.");
            return false;
        }
        if(!form.lastname.value.match(/[A-z]{2,20}/g)){
            alert("Your LAST name appears to be either too short or unrealistically long!\nPlease revise this field.");
            return false;
        }
        if (LbadCAPS(form.lastname)){
            alert("Your LAST name appears to have inappropriate use of upper/lower case!\nPlease revise this field.");
            return false;
        }
        if (form.title.value == "Mr" ||
            form.title.value == "Mr." ||
            form.title.value == "Mrs." ||
            form.title.value == "Mrs" ||
            form.title.value == "Miss" ||
            form.title.value == "Miss." ||
            form.title.value == "Ms" ||
            form.title.value == "Ms." ||
            form.title.value == "Dr" ||
            form.title.value == "Dr." ||
            form.title.value == "Rev" ||
            form.title.value == "Rev.") {
          alert("Your TITLE/ORGANIZATION appears to be inappropriate.  Please use the HONORIFIC instead of the titles you entered.");
          return false;
        }
        if(!form.address.value) {
            alert("Your ADDRESS information is blank!\nPlease revise this field.");
            return false;
        } 
        if(form.address.value.match(/[^A-z0-9\/\.\'\`\ \,\-\#\:]/g)){
            alert("Your ADDRESS appears to contain improper characters!\nPlease revise this field.");
            return false;
        }
        if (addCAPS(form.address)){
            alert("Your ADDRESS appears to have inappropriate use of upper/lower case!\nPlease revise this field.");
            return false;
        }
        if(countchars(form.address.value)){
            alert("Your ADDRESS name appears to contain improper usage of letters or numbers!\nPlease revise this field.");
            return false;
        }
        if(!form.address.value.match(/[A-z0-9\.]{2,16}/g)){
            alert("Your ADDRESS name appears to be either too short or using unrealistically long words!\nPlease revise this field.");
            return false; 
        }
        if(!form.city.value) {
            alert("Your CITY name is blank!\nPlease revise this field.");
            return false;
        }
        if (badCAPS(form.city)){
            alert("Your CITY appears to have inappropriate use of upper/lower case!\nPlease revise this field.");
            return false;
        }
        if(form.city.value.match(/[^A-z\.\ \'\`\-]/g)){
            alert("Your CITY name appears to contain improper usage of letters!\nPlease revise this field.");
            return false;
        }
        if(countchars(form.city.value)){
            alert("Your CITY name appears to contain improper usage of letters!\nPlease revise this field.");
            return false;
        }
        if(!form.city.value.match(/[A-z]{2,20}/g)){
            alert("Your CITY name appears to be either too short or unrealistically long!\nPlease revise this field.");
            return false;
        }   
        if(form.stateID.value == 57) {
            alert("Please make sure to select a state!");
            return false;
        }        
        if(form.zip.value.match(/[^0-9]/g)){
            alert("Your ZIPCODE appears to contain improper usage of letters!\nPlease revise this field.");
            return false;
        }  
        if(!form.zip.value.match(/[0-9]{5,5}/g)){
            alert("Your ZIPCODE appears to be either too short or unrealistically long!\nPlease revise this field.");
            return false;
        }  
        if(!form.zip.value){
            alert("Your ZIPCODE information is blank!\nPlease revise this field.");
            return false;
        }                
        if(!form.phone.value) {
            alert("Your PHONE number is blank!\nPlease revise this field.");
            return false;
        }
        if(form.phone.value.match(/[^0-9\ \.\-\(\)]/g)){
            alert("Your PHONE NUMBER includes improper characters!\nPlease revise this field.");
            return false;
        }
        if(countdigits(form.phone.value)){
            alert("Your PHONE number appears to be too short or too long!\nPlease revise this field.");
            return false;
        }
        if(!form.username.value) {
            alert("Your USERNAME is blank!\nPlease revise this field.");
            return false;
        }
        if(!checkemail) {
            alert("Your EMAIL address is either blank or obviously in error!\nPlease revise this field.");
            return false;
        }  
        if(!form.email.value) {
            alert("Your EMAIL address is blank!\nPlease revise this field.");
            return false;
        }    
        if(form.password.value != form.password2.value) {
            alert("Your PASSWORDS do not match! This may be due to a typo.\nPlease revise these fields.");
            return false;
        }
        return true;
    }              
    
    // this simple function checks to see if there are any more than 2 consecutive letters or allowed nonalphanumeric characters
    // returns 1 if true, 0 if false.
	
	// recent edit: to allow roman numerical endparts, like III of VIII, etc... characters V and I and X are being ignored
    function countchars(totest) {
     var results = totest.match(/[A-HJ-UY-z\.\'\`\-\,\#\:]/g);
     for (i=0; i < results.length; i++){
      var j = i-1;
      var k = i-2;
      if (i > 2){
       if (results[i] == results[j] && results[i] == results[k]){ return 1; }
      }
     }
     return 0;
    }     
    
	// recent edit: the matching expression seems to have difficulty checking actual volume of digits, so this does it
	// more manually
    function countdigits(totest) {
     var results = totest.match(/[0-9]/g);
     if (results.length == 10 || results.length == 11){
      return 0;
     }
     return 1;
    }
      
      
function badCAPS(theelement) {
 var letters = theelement.value.match(/[A-z]/g);
 var caps = theelement.value.match(/[A-HJ-UY-Z]/g);
 var allcaps = theelement.value.match(/[A-Z]/g);
 var firstletter = theelement.value.substring(0,1);
 var firstCAP = firstletter.match(/[A-Z]/g); 

 if (!theelement.value){
  return false;
 }
 if (!allcaps){ return true; }
 if (!firstCAP || (caps && caps.length > 4)){
  return true;
 }    
    
 return false;
}

function LbadCAPS(theelement) {
 var letters = theelement.value.match(/[A-z]/g);
 var caps = theelement.value.match(/[A-HJ-UY-Z]/g);
 var allcaps = theelement.value.match(/[A-Z]/g);
 var nocaps = theelement.value.match(/[a-z]/g);

 if (!theelement.value){  return false; }
 if (!allcaps){ return true; }
 if (!nocaps){ return true; }

 return false;
}

function addCAPS(theelement) {
 var letters = theelement.value.match(/[A-z]/g);
 var allcaps = theelement.value.match(/[A-Z]/g);
 var caps = theelement.value.match(/[A-HJ-UY-Z]/g);
 
 if (!allcaps){ return true; }
 if (allcaps.length > 5){
  return true;
 }    
    
 return false;
}      


function checkfor(theelement, openit){
 if (badCAPS(theelement)){
  expandcontent(openit); 
 }
}      

function emailValid(form){
      var checkemail = form.email.value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.us)|(\.info)|(\.biz)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
        if(!checkemail) {
            alert("Your EMAIL address is either blank or obviously in error!\nPlease revise this field.");
            return false;
        }
        if(!form.email.value) {
            alert("Your EMAIL address is blank!\nPlease revise this field.");
            return false;
        }
return true;	
}


