$(document).ready(function() {
  
  var validation_formulaire = $("#formulaire-saisie-recruteur").validate({
    rules: {
      "RECRUTEUR[nom]": "required",
      "RECRUTEUR[prenom]": "required",
      "RECRUTEUR[mot_de_passe]": "required",
      "RECRUTEUR[raison_sociale_recruteur]": "required",
      "RECRUTEUR[id_secteur_activite]": { min: 1 },
      "RECRUTEUR[id_effectif]": { min: 1 },
      "RECRUTEUR[adresse]": "required",
      "RECRUTEUR[code_postal]": "required",
      "RECRUTEUR[ville]": "required",
      "RECRUTEUR[telephone]": "required",
      // On ne peut pas utiliser un autre nom sinon le système 
      // ne fonctionne pas comme attendu.
      // Voir dans la fonction submitHandler pour le workaround.
      "email": {
        required: true,
        email: true,
        remote: { 
          url: "ajax/verification-email-recruteur.php",
          type: "get",
          data: {
            // On récupère la nouvelle valeur du champ à chaque envoi !
            "RECRUTEUR[email]": function() {
              return $('input[name="email"]').val();
            },
            "RECRUTEUR[id]": $('input[name="RECRUTEUR[id]"]').val()
          }
        }
      },
      // On procède de même pour l'identifiant
      "identifiant": {
        required: true,
        minlength: 6,
        remote: {
          url: "ajax/verification-login-recruteur.php",
          type: "get",
          data: {
            // On récupère la nouvelle valeur du champ à chaque envoi !
            "RECRUTEUR[identifiant]": function() {
              return $('input[name="identifiant"]').val();
            },
            "RECRUTEUR[id]": $('input[name="RECRUTEUR[id]"]').val()
          }
        }
      }
    },
    messages: {
      "identifiant": {
        "remote": "Cet identifiant n'est pas disponible !"
      },
      "email": {
        "remote": "Cet email n'est pas disponible !"
      },
      "RECRUTEUR[id_secteur_activite]": {
        "min": "Veuillez sélectionner un secteur d'activité !"
      },
      "RECRUTEUR[id_effectif]": {
        "min": "Veuillez sélectionner un effectif !"
      }
    },
    submitHandler: function(form) {
      // Avant d'envoyer, on remet le champ d'email en place
      // pour faciliter le traitement ultérieur.
      var email_element = $('<input />')
          .attr('type', 'hidden')
          .attr('name', 'RECRUTEUR[email]')
          .val($('input[name="email"]').val());
      $('#formulaire-saisie-recruteur').append(email_element);

      // On fait de même avec le login
      var identifiant_element = $('<input />')
          .attr('type', 'hidden')
          .attr('name', 'RECRUTEUR[identifiant]')
          .val($('input[name="identifiant"]').val());
      $('#formulaire-saisie-recruteur').append(identifiant_element);
      
      // Validation du formulaire.
  	  if(validation_formulaire.numberOfInvalids() == 0) form.submit();
    },
    invalidHandler: function(form, validator) {
      var messages = [ ];
		  $.each(validator.errorList, function() {
        messages.push( '<strong>' + $(this.element).attr('alt').capitalize() + "</strong> : " + this.message );
		  });
      
      jAlert(messages.join('<br />'), "Erreurs dans le formulaire.");
      return false;
    },
    showErrors: function(errorMap, errorList) {
		  // Ne rien faire.
		  
	  } 
  });

});




/**
  Fonction utilitaire pour capitaliser une chaîne.
*/
String.prototype.capitalize = function() {
  return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
}
