function US_Good(fieldName, obj){
  /*
  Called from Tom's "Validate (form)" function
  if (fields[i] == "ZIPC") error = US_Good(fields[i],obj);
  if (fields[i] == "ZIP4") error = US_Good(fields[i],obj);
  */
  error = '';
  if (fieldName == "ZIPC"){
    if (obj.value=='') {
      return "missingreq";
    }else if (obj.value.length!=5) {
      error = "ZIP_5_long";
    }else if (isNaN(obj.value) ) {
      error = "ZIP_num_only"; 
    }
  }
  if (fieldName == "ZIP4"){
    if (obj.value=='') {
      return;
    }else if (obj.value.length!=4 && obj.value.length!=0) {
      error = "ZIP_4_long";
    }else if (isNaN(obj.value) ) {
      error = "ZIP_num_only"; 
    }
  }
  return error;
}

 
function CA_Good(str){ 
  /****************************************************************
     Expects 6 characters only with the split done on the CGI end.
     Check for legal characters in string
     Apparently, the Postal Code can not contain an I or O
     Canadian Postal Code in A0A0A0 format made A0A 0A0 in CGI
     
     Called from Tom's "Validate (form)" function
     if (fields[i] == "CZIP") error = CA_Good(obj);
  ****************************************************************/
  str = str.value; 
  if (str.length == 0){
    return "missingreq";
  }else if (str.length != 6) {
    return "bad_CA_postal_length";
  }
  str=str.toUpperCase();        // in case of lowercase characters
  if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(str.charAt(0)) < 0) {return "bad_CA_postal_format";}
  if ('0123456789'.indexOf(str.charAt(1)) < 0) {return "bad_CA_postal_format";}
  if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(str.charAt(2)) < 0) {return "bad_CA_postal_format";}
  if ('0123456789'.indexOf(str.charAt(3)) < 0) {return "bad_CA_postal_format";}
  if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(str.charAt(4)) < 0) {return "bad_CA_postal_format";}
  if ('0123456789'.indexOf(str.charAt(5)) < 0) {return "bad_CA_postal_format";}
  return; 
}