var XHR = new CreateXMLHTTPRequestObject(); // on cree l'instance ajax
XHR.setAsynchronous(); // on passe en mode asynchrone (pour pas ralentir le navigateur)
XHR.setIndicatorFunction(indic_charge); // la fonction qui affiche/cache le "Envoi du mail"


/* fonction pour afficher/cacher le "envoi du mail en cours" */
function indic_charge(affiche) { 
	if( affiche ) { // si on doit afficher
		document.getElementById("btn_submit").disabled=true;
		document.getElementById("btn_submit").value="Envoi en cours...";
	}
	else {
		document.getElementById("btn_submit").disabled=false;
		document.getElementById("btn_submit").value="Envoyer";
	}
}



/* fonction appelee lors du clic sur "envoi" */
function envoi(email,type,theme,departement,message,fichier_ajax) {
	ferme_messages(); // on commence par fermer les messages
	XHR.cancelRequest(); // puis on annule une requete deja en cours...
	param = "email=" + encodeURIComponent(email); // ceci consitue les parametres envoyes a "envoi_mail.php"
	param+= "&type=" + encodeURIComponent(type);  // on les encode pour préserver certains caractères. en php faut decoder aver urldecode.
	param+= "&theme=" + encodeURIComponent(theme);
	param+= "&departement=" + encodeURIComponent(departement);
	param+= "&message=" + encodeURIComponent(message);
	if ( XHR.getFilePost(fichier_ajax,param) ) { // si la requete a ete effectuee
		check(); // on va attendre la reponse
	}
	else { // requete non effectuee
		affiche_message('erreur_requete');
	}
}
	


/* cette fonction va chercher la reponse. en attendant la reponse, un cadre "chargement" s'affiche */
function check() {
	if( !XHR.hasResponse() ) {
		// Reponse pas arrivee
		setTimeout("check()", 200); // on rappelle la fonction
		return; // qu'on quitte (puisque qu'elle  est rappelee)
	}
	// du coup, si la reponse est arrivee
	// (on ne peut arriver ici que si elle est arrivee, car sinon la fonction se quitte, voir au dessus)
	var code_r = XHR.getResponse(); // on recupere la reponse, pour la traiter apres
	action_code(code_r); // on fait ce qu'on doit faire en fonction du code recu
}


/* fonction qui agit en fonction du code renvoye par "envoi_mail.php" */
function action_code(code_r) {
	if ( code_r == "0" ) { // message non-envoye
		affiche_message('message_non_envoye');
	}
	else if ( code_r == "1" ) { // message envoye, tout va bien!
		affiche_message('message_envoye');
	}
	else if ( code_r == "-1" ){ // email invalide
		affiche_message('email_invalide');
	}
}



/* fonction qui affiche un cadre (<div id="cadre">), donne en parametre */
function affiche_message(lequel) { // fonction qui affiche les messages
	ferme_messages();
	if ( lequel=="message_envoye" ) { // on change la couleur de fond si le message est bien envoye
		document.getElementById('messages').style.backgroundColor="#00CC00"; // en vert
	}
	document.getElementById(lequel).style.display="block"; // on affiche le message
	document.getElementById('messages').style.display="block"; // on affiche le conteneur des messages!
}



/* fonction qui ferme toutes les boites de messages */
function ferme_messages() { // cache la boite messages
	document.getElementById('messages').style.display="none";
	document.getElementById('erreur_message_non_envoye').style.display="none";
	document.getElementById('message_envoye').style.display="none";
	document.getElementById('email_invalide').style.display="none";
	document.getElementById('erreur_requete').style.display="none";
	document.getElementById('envoi_en_cours').style.display="none";
}



/* fonction pour recuperer la valeur du bouton radio selectionne par l'utilisateur */
function valeur_radio(rad) { // recuperer la valeur d'un bouton radio
	for (var i=0; i<rad.length;i++) {
		if (rad[i].checked) {
		return rad[i].value;
		}
	}
}



/* fonction qui desactive le bouton submit si ajax ne fonctionne pas */
/* appele par lib_ajax.js */
function desactive_bouton_submit() {
	//document.getElementById("btn_submit").disabled=true;
	//document.getElementById("btn_submit").value="Impossible d'utiliser ce formulaire. Veuillez mettre votre navigateur &agrave; jour.";
}

