var READY_STATE_COMPLETE=4;
var peticion_http = null;

/**
 *	Inicializacion del objeto Ajax
 */
function inicializa_xhr() {

	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} // if

} // inicializa_xhr

/**
 *	Envia la encuesta mediante Ajax
 *	Envio
 */
function enviaEncuesta(idPregunta) {

	var peticion_http = inicializa_xhr();

	if(peticion_http) {
		// Preparacion del envio de datos
		var resp = 0;
		for(var i = 0; i < document.formEncuesta.respuestas.length; i++) {
			if(document.formEncuesta.respuestas[i].checked) resp = document.formEncuesta.respuestas[i].value;
		} // for
		
		if(resp == 0) alert("Se debe escoger la opción a votar.");
		else {
			peticion_http.onreadystatechange = function() {
				respuestaEnviaEncuesta(peticion_http);
			}
			peticion_http.open("POST", "cgi/encuesta/respuesta", true);
					
			// Construccion del string de parametros
			var query_string = "pregunta=" + idPregunta + "&respuestas=" + resp + "&nocache=" + Math.random();
			
			// Envio
			peticion_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			peticion_http.send(query_string);
		} // if
		
	} // if

} // enviaEncuesta

/**
 *	Envia la encuesta mediante Ajax
 *	Respuesta
 */
function respuestaEnviaEncuesta(peticion_http) {

	if(peticion_http.readyState == READY_STATE_COMPLETE) {
		if (peticion_http.status == 200) {
			var documento_xml = peticion_http.responseXML;
			var root = documento_xml.getElementsByTagName("xml")[0];
			var resultado = root.getElementsByTagName("resultado")[0].firstChild.data;
			if(resultado == 0) {
				// Resultado correcto
				
				// Actualizacion de los valores
				var numRespuestas = root.getElementsByTagName("respuestas")[0].firstChild.data;
				var suma = root.getElementsByTagName("suma_respuestas")[0].firstChild.data;
				var respuestas = root.getElementsByTagName("respuesta");
				for(var i = 0; i < numRespuestas; i++) {
					var id = respuestas[i].getElementsByTagName("id")[0].firstChild.data;
					var valor = respuestas[i].getElementsByTagName("valor")[0].firstChild.data;
					var porcent = Math.round(valor / suma * 1000) / 10;
					var casilla = document.getElementById("resp" + id + "_prop");
					casilla.innerHTML = porcent + "%";
				} // for
				
				var preg = document.getElementById("pregunta");
				preg.style.display = "none";
				
				var resp = document.getElementById("respuesta");
				resp.style.display = "block";
			} else {
				switch(resultado) {
					case '-1':
						// Parametro no recibido
						alert('Se ha producido un error al enviar la encuesta, por favor vuelva a intentarlo más tarde.');
						break;
					case '-2':
						// Error en el acceso a base de datos
						alert('Se ha producido un error al enviar la encuesta, por favor vuelva a intentarlo más tarde.');
						break;
					default:; // Error desconocido
				} // switch
			} // if
		} // if
	} // if

} // respuestaEnviaEncuesta