/* Valide si on a fait un choix et envoie la requête */
function effectuerVote() {
	var formulaire=document.getElementById("frm_sondage");
	var inputsFormulaire=formulaire.getElementsByTagName("input");
	var choixRadio=new Array();
	var intNombreChampsVides=0;
	var champChoisi;
	
	//On va chercher les boutons radios
	for(var intCompteur=0 ; intCompteur < inputsFormulaire.length ; intCompteur++) {
		if (inputsFormulaire[intCompteur].name == "idReponse") {
			choixRadio.push(inputsFormulaire[intCompteur]);
		};
	};
	//On vérifie si on a fait un choix
	for(var intCompteur=0 ; intCompteur < choixRadio.length ; intCompteur++) {
		if (choixRadio[intCompteur].checked == false) {
			intNombreChampsVides++;
		}
		else {
			champChoisi = choixRadio[intCompteur];
		}
	};
	//Si on a faut un choix, envoyer la reqûete. Sinon, on oublie ça.
	if (intNombreChampsVides < choixRadio.length) {
		envoyerRequete(inputsFormulaire, champChoisi);
	};
	return false;
};

/* Crée la requête, effectue l'envoi et gère la réponse */
function envoyerRequete(inputsFormulaire, champChoisi) {
	var requeteHTTP;
	var strQueryString = "";
	var strDelimiteur = "";
	var imageLoading;

	//Création de l,objet XMLHttpRequest
	//Source: http://developer.mozilla.org/en/docs/AJAX:Getting_Started#Step_1_.E2.80.93_How_to_Make_an_HTTP_Request
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		requeteHTTP = new XMLHttpRequest();
		if (requeteHTTP.overrideMimeType) {
			requeteHTTP.overrideMimeType("text/xml");
		};
	} 
	else if (window.ActiveXObject) { // IE
		try {
			requeteHTTP = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				requeteHTTP = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {
			};
		};
	};
	if (!requeteHTTP) {
		alert("Impossible de créer l'objet XMLHTTP");
		return false;
	};
	
	//Création de la querystring
	for (var intCompteur=0;intCompteur < inputsFormulaire.length; intCompteur++) {
		if (intCompteur > 0) {
			strDelimiteur = "&"
		};
		//On en veut seulement avoir les paramètre autres que le réponses
		//(étant donné qu'on ne veut pas avoir plein de idReponse dans la querystring)
		if (inputsFormulaire[intCompteur].name != "idReponse" && inputsFormulaire[intCompteur].name != "" && inputsFormulaire[intCompteur].value != "") {
			strQueryString += strDelimiteur + inputsFormulaire[intCompteur].name + "=" + inputsFormulaire[intCompteur].value;
		};
	};
	strQueryString += strDelimiteur + champChoisi.name + "=" + champChoisi.value;
	
	//Envoi de la requête
	requeteHTTP.onreadystatechange = function () {
		switch(requeteHTTP.readyState) {
			case 0:
				//Requête non initialisée
			break;
			case 1:
				//Requête configurée
			break;
			case 2:
				//Requête envoyée
				document.getElementById("sondage_soumettre").disabled="disabled";
				imageLoading = document.createElement("img");
				imageLoading.id="sondage_loading";
				imageLoading.src="/_images/img_sondageloading.gif";
				document.getElementById("sondage").appendChild(imageLoading);
			break;
			case 3:
				//Requête en cours de processus
			break;
			case 4:
				//Requête complete
				document.getElementById("sondage").removeChild(imageLoading)
				if (requeteHTTP.status == 200) {
					traiterResultats(requeteHTTP.responseXML);
				}
				else {
					alert("Une erreur s'est produite lors de la requête");
				};
			break;
		};
	};
	//Envoi des données en POST nécéssite cela
	requeteHTTP.open("POST","/client/quiz/sondage_reponse.asp",true);
	requeteHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	requeteHTTP.send(strQueryString);
};

function traiterResultats(xmlRecu) {
	var noeudRacine = xmlRecu.getElementsByTagName("sondage").item(0);
	//Mémorisation des différents noeuds
	var strTitreSondage = noeudRacine.childNodes[0].firstChild.data;
	var strSituationSondage = "";
	if (noeudRacine.childNodes[1].firstChild != null) {
		strSituationSondage = noeudRacine.childNodes[1].firstChild.data;
	};
	
	var strRemerciementsSondage = "";
	if (noeudRacine.childNodes[2].firstChild != null) {
		strRemerciementsSondage = noeudRacine.childNodes[2].firstChild.data;
	};
	
	//Mémorisation des réponses
	var arrReponses = new Array(noeudRacine.childNodes[3].childNodes.length);
	var arrReponse;
	for (var intCompteur=0;intCompteur<noeudRacine.childNodes[3].childNodes.length;intCompteur++) {
		arrReponse = new Array(noeudRacine.childNodes[3].childNodes[intCompteur].childNodes.length);
		//Titre de la réponse
		arrReponse[0] = noeudRacine.childNodes[3].childNodes[intCompteur].childNodes[0].firstChild.data;
		//Nombre de votes de la réponse
		arrReponse[1] = parseInt(noeudRacine.childNodes[3].childNodes[intCompteur].childNodes[1].firstChild.data);
		//Pourcentage pour la réponse
		arrReponse[2] = noeudRacine.childNodes[3].childNodes[intCompteur].childNodes[2].firstChild.data;
		arrReponses[intCompteur] = arrReponse;
	};
	var intTotalReponses = noeudRacine.childNodes[4].firstChild.data; 
	afficherResultats(arrReponses,intTotalReponses);
};

function afficherResultats(arrReponses,intTotalReponses) {
	var elementTableau;
	var elementCaption;
	var elementTBody;
	var elementLigne;
	var elementCellule;
	var divBarreFond;
	var divBarreDessus;
	var nodeTexte;
	//On commence par enlever le formulaire et le loading
	var divSondage = document.getElementById("sondage");
	var bolNodeTrouve=false;
	for(var intCompteur=0;intCompteur < divSondage.childNodes.length;intCompteur++) {
		if (divSondage.childNodes[intCompteur].id == "frm_sondage") {
			divSondage.removeChild(divSondage.childNodes[intCompteur]);
		};
	};
	
	//Création du tableau des résultats
	elementTableau = document.createElement("table");
	elementTableau.id = "sondage_resultats"
	elementTBody = document.createElement("tbody");
	nodeTexte = document.createTextNode("Résultats");
	elementCaption = document.createElement("caption");
	elementCaption.appendChild(nodeTexte);
	elementTableau.appendChild(elementCaption);
	

	for (var intCompteur=0;intCompteur < arrReponses.length;intCompteur++) {
		//Cellule titre de question
		elementLigne = document.createElement("tr");
		elementCellule = document.createElement("th");
		nodeTexte = document.createTextNode(arrReponses[intCompteur][0]);
		
		//Insertion
		elementCellule.appendChild(nodeTexte);
		elementLigne.appendChild(elementCellule);
		
		//Cellule nombre de résultats
		elementCellule = document.createElement("td");
		if (arrReponses[intCompteur][1] > 1) {
			nodeTexte = document.createTextNode(arrReponses[intCompteur][1] + " votes (" + arrReponses[intCompteur][2] + ")");
		}
		else {
			nodeTexte = document.createTextNode(arrReponses[intCompteur][1] + " vote (" + arrReponses[intCompteur][2] + ")");
		};
		
		//Insertion
		elementCellule.appendChild(nodeTexte);
		elementLigne.appendChild(elementCellule);
		elementTBody.appendChild(elementLigne);

		//Barre de pourcentage du vote
		elementLigne = document.createElement("tr");
		
		elementCellule = document.createElement("td");
		elementCellule.colSpan="2";
		
		divBarreFond = document.createElement("div");
		divBarreFond.className = "barreresultats_fond";
		divBarreFond.style.width="100%";
		
		divBarreDessus = document.createElement("div");
		divBarreDessus.className = "barreresultats_dessus";
		divBarreDessus.style.width = arrReponses[intCompteur][2];
		
		//Insertion
		divBarreFond.appendChild(divBarreDessus);	
		elementCellule.appendChild(divBarreFond);
		elementLigne.appendChild(elementCellule);
		elementTBody.appendChild(elementLigne);
	};
	//Création de la ligne du total des votes
	elementLigne = document.createElement("tr");
	elementCellule = document.createElement("td");
	elementCellule.colSpan="2";
	nodeTexte = document.createTextNode("Total des votes : " + intTotalReponses);
	elementCellule.appendChild(nodeTexte);
	elementLigne.appendChild(elementCellule);
	elementTBody.appendChild(elementLigne);
	
	//Insertion du tableau
	elementTableau.appendChild(elementTBody);
	divSondage.appendChild(elementTableau);
};