function zip_validation(cnt_no, prov_no, zip){
  var re_test;
  var is_valid;
  var first_char;
  
  //Valider le format
  switch(cnt_no){
    case '1':
      //re_test = /^([a-z]\d){3}$/i
      re_test = /(^([a-z]\d){3}$)|(^[a-z]{1}\d{1}[a-z]{1} \d{1}[a-z]{1}\d{1}$)/i;         
      break;
    case '2':
      re_test = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
      break;   
    default:
      is_valid=true
      break;   
  }
  is_valid = re_test.test(zip);   
  
  //Valider le premier caractère en fonction de la province
  
  if(is_valid){
    first_char = zip.substring(0,1);
    first_char = first_char.toLowerCase();
    if(cnt_no=='1'){
      switch(prov_no){
        case '1': //Québec
          if(first_char!='g' && first_char!='h' && first_char!='j'){
            is_valid = false;
          }
          break;
        case '2': // 	Ontario
          if(first_char!='k' && first_char!='l' && first_char!='m' && first_char!='n' && first_char!='p'){
            is_valid = false;
          }
          break;      
        case '3': // 	Nouvelle-Écosse
          if(first_char!='b'){
            is_valid = false;
          }
          break;     
        case '4': // 	Nouveau-Brunswick
          if(first_char!='e'){
            is_valid = false;
          }
          break;  
        case '5': // 	Manitoba
          if(first_char!='r'){
            is_valid = false;
          }
          break;   
        case '6': // 	Colombie-Britannique
          if(first_char!='v'){
            is_valid = false;
          }
          break;   
        case '7': // 	Île du Prince Édouard
          if(first_char!='c'){
            is_valid = false;
          }
          break;   
        case '8': // 	Saskatchewan
          if(first_char!='s'){
            is_valid = false;
          }
          break;    
        case '9': // 	Alberta
          if(first_char!='t'){
            is_valid = false;
          }
          break;      
        case '10': // 	Terre-Neuve et Labrador
          if(first_char!='a'){
            is_valid = false;
          }
          break;                                               
        default:
          is_valid=true
          break;     
      }
    }
    if(cnt_no=='2'){
      switch(first_char){
        case '0':
          if(prov_no!='17' && prov_no!='31' && prov_no!='29' && prov_no!='39' && prov_no!='40' && prov_no!='49' && prov_no!='55'){
            is_valid = false;
          }      
          break;
        case '1':
          if(prov_no!='18' && prov_no!='42' && prov_no!='48'){
            is_valid = false;
          }      
          break;   
        case '2':
          if(prov_no!='30' && prov_no!='43' && prov_no!='50' && prov_no!='56' && prov_no!='58' && prov_no!='61'){
            is_valid = false;
          }      
          break;   
        case '3':
          if(prov_no!='11' && prov_no!='19' && prov_no!='20' && prov_no!='34' && prov_no!='52'){
            is_valid = false;
          }      
          break;   
        case '4':
          if(prov_no!='24' && prov_no!='27' && prov_no!='32' && prov_no!='45'){
            is_valid = false;
          }      
          break;        
        case '5':
          if(prov_no!='25' && prov_no!='33' && prov_no!='36' && prov_no!='44' && prov_no!='51' && prov_no!='59'){
            is_valid = false;
          }      
          break;     
        case '6':
          if(prov_no!='23' && prov_no!='26' && prov_no!='35' && prov_no!='37'){
            is_valid = false;
          }      
          break;   
        case '7':
          if(prov_no!='14' && prov_no!='28' && prov_no!='46' && prov_no!='53'){
            is_valid = false;
          }      
          break;   
        case '8':
          if(prov_no!='13' && prov_no!='16' && prov_no!='22' && prov_no!='41' && prov_no!='38' && prov_no!='54' && prov_no!='60'){
            is_valid = false;
          }      
          break;   
        case '9':
          if(prov_no!='12' && prov_no!='15' && prov_no!='21' && prov_no!='47' && prov_no!='57'){
            is_valid = false;
          }      
          break;                                                                    
      }
    }
  }
  return(is_valid);
}
