jQuery(document).ready(function() {
	/*
	*	Rajout des data sur le #form
	*	On part du principe qu'il y a des erreurs (quand on arrive les cases sont vides)
	*	Du coup, on peut pas valider le formulaire.
	*/
	$("#form").data('noError',false);
	$("#form").data("goForm",false);
});

// Dès qu'on clique sur #submit
jQuery("input#submit").live('click', function(){
	// S'il y a des erreurs on lance verifForm();
	$("div#boxerror").remove();
	if ($("#form").data('noError') == false) { verifForm(); }
	// Si après la moulinette de verifForm il n'y a plus d'erreur, alors on met goForm  à true
	if ($("#form").data('noError') == true) { $("#form").data("goForm",true); } 
});

jQuery("#form").live('submit', function() {
	// Si goForm est true (donc noError == true = pas d'erreur) alors on rend le form submitable
	if ($("#form").data("goForm") == true) { return true; }
	// Sinon, non.
	else { return false; }
});

// Quand on clique sur la div du message d'erreur
jQuery("div#boxerror").live('click', function(){
	$("div#boxerror").fadeOut("slow");
	// On vide l'HTML
	$("#error ul").html("");
});

// Quand on clique sur un .obligatoire
jQuery(".obligatoire").live('focus', function() {
	// Si le contenu est "champ obligatoire" (msg d'erreur)
	if ($(this).val() == "Champ obligatoire") {
		// On vire la bordure, on remet la couleur "normale" et on vire l'italic
		$(this).val("").css({
			"border-left": "1px black solid", "color": "black", "font-style": "normal"
		});
	}
});

// function qui va servir à parser les elements vides & remplir notre tableau
function verifForm() {
	// On reset tout le délire
	var count = 0; error = []; noError = 0; elemName = "";
	// Pour chaque input.obligatoire
	$('input.obligatoire').each(function(i, elem){
		var elem = $(elem);
		// Si les input sont vides
		if ((!elem.val()) || (elem.val() == "Champ obligatoire")) {
			// On leur fout un border left de 2 px
			elem.val("Champ obligatoire").css({
				"border-left": "2px red solid",
				"color": "red",
				"font-style": "italic"
			});
			// On donne du contenu à notre variable qui servira à ne lancer qu'une fois la fonction
			count++;
			// On rempli le tableau
			error[i] = parseName(elem.attr("name"));
			
		}
		// Si l'elem.attr("name") == email & que la regex n'est pas matchée alors on se fait un petit message d'erreur, coolos quoi.
		if (elem.attr("name") == "destinataires_email" && !elem.val().match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)) { error[i] = "Email non valide"; }
		// Si les inputs ne sont pas vides, alors on rempli "noError" qui servira à lancer ou non une function
		else { noError++; }
	});

	// Si il y a quelque chose dans count, alors on lance afficheErreur avec notre tableau en argument
	if (count) return afficheErreur(error);

	// Sinon, on fait autre chose, à définir.
	else if (noError) {
		$("#form").data('noError',true);
	}
}

// Function qui va servir à afficher notre message d'erreur
function afficheErreur(data) {
	// On affiche la div du message d'erreur
	$('<div id="boxerror"><div id="error"><p>Merci de bien vouloir remplir<br />les champs suivants:</p><ul></ul></div></div>').appendTo("body");
	if ($("div#boxerror").is(":hidden")) {
		$("div#boxerror").slideDown("slow");
	}
	// On parcour le tableau pour remplir notre liste de trucs à remplir
	for (var z = 0; z <= data.length; z++) {
		if (data[z]) {
			$("#error ul").append("<li>"+data[z]+"</li>");
		}
	}
}
function parseName(data) {
	var vireDestinataire = data.replace("destinataires_",""), 
		premierChr = vireDestinataire.charAt(0),
		apresPremierChr = vireDestinataire.slice(1,vireDestinataire.length),
		chaineFinale = triageName(premierChr.toUpperCase()+apresPremierChr);
	return chaineFinale;
}
function triageName(data) {
	if (data == "Telephonestd") return "Telephone";
	else if (data == "Codepostal") return "Code postal";
	else if (data == "Societe") return "Société";
	else { return data; }
}
