// Traitement du formulaire lorsque la zone de texte comporte des balises

// Variables
var reg = new RegExp('^[-0-0 ]?$');
var regEmail = new RegExp("^[\\w\\-]+(\\.[\\w\\-]+)*@[\\w\\-]+(\\.[\\w\\-]+)*\\.[\\w\\-]{2,6}$", "i");var msg = $("textarea#message").text();
var nom;
var societe;
var email;
var objet;
var msg;

// fonction de test
function testObjet(objetCourant){
	// on teste que l'input n'est pas vide
	if (reg.test(objetCourant.val())){
		objetCourant.next(".error").show();
		return false;
	}
	else{
		if (objetCourant.attr("id") == "email"){
			// on teste qu'il s'agit bien d'un email
			if (regEmail.test(objetCourant.val())){
				objetCourant.next(".error").hide();
				return true;
			}
			else{
				objetCourant.next(".error").show();
				return false;
			}
		}
		else {
			objetCourant.next(".error").hide();
			return true;
		}
	}
}

// ecrit la valeur du champ entre dans la zone de texte
function writeObjet(objetCourant){
	var id = objetCourant.attr("id");
	var baliseOuvrante = "["+ id +"]";
	var baliseFermante = "[/"+ id +"]";
	// si les balises correspondant a l'id de l'objet existent dans la textarea et que l'ouvrante est avant la fermante
	if ((msg.indexOf(baliseOuvrante) != -1) && (msg.indexOf(baliseFermante) != -1) && (msg.indexOf(baliseOuvrante) < msg.indexOf(baliseFermante))){
		var msgPart1 = msg.split(baliseOuvrante)[0];
		var msgPart2 = msg.split(baliseFermante)[1];
		msg = msgPart1 + objetCourant.val() + msgPart2;
	 	$("textarea#message").val(msg);
	}
	// sinon on recherche l'ancienne valeur de l'objet
	else {
		var txtRemplace;
		// on affecte a txtRemplace la valeur de la variable globale correspondante
		eval("txtRemplace = "+ objetCourant.attr("id") +";");
		// expression reguliere qui va trouver toutes les occurrences de txtRemplace quelle que soit la casse
		var reg = new RegExp("("+txtRemplace+")", "gi");
		// on remplace les occurrences dans le corps du message
		msg = msg.replace(reg,objetCourant.val());
		$("textarea#message").val(msg);
	}
	// On evalue la chaine ci-dessous qui attribue la valeur de l'objet a la variable globale qui porte son id
	// et ce afin de stocker la version "precedente" du champ entre par l'utilisateur, pour le rechercher dans la textarea eventuellement plus tard
	eval(objetCourant.attr("id") + " = '" + objetCourant.val() + "';");
	return false;
}

$(document).ready(function(){
	msg = $("textarea#message").val();
	$(".error").each(function(){
		testObjet($(this).prev(".text"));
	});
	$(".formulaireStandard input.text").change( function(){
		// si l'objet est valide, on l'inscrit dans la zone de texte
		if (testObjet($(this))) writeObjet($(this));
		$(this).blur();
		return false;
	});
	
	// a chaque modification de la zone de texte, on met a jour la variable
	$("textarea#message").change( function(){
		msg = $("#message").val();
		$(this).blur();
		return false;
	});
	return false;
});