///////////////////////////////////////////////////////////////////////////////////////////
//  Cleopatra Network Solutions
//  (c) 2008. Esteve Blanch Sanmartí.
//
///////////////////////////////////////////////////////////////////////////////////////////


function createXMLcon()
{
	var obj;
	
	try {
		obj = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			obj = new ActiveXObject("Microsoft.XMLHTTP")
		} catch(e) { obj = null; }
	}
	
	if ( obj == null )
	{
		try {
			obj = new XMLHttpRequest();
		} catch (e) {}
	}
	
	if ( obj == null && window.createRequest )
	{
		try {
			obj = window.createRequest();
		} catch (e) {}
	}
	
	return obj; 
}

var xmlRequest = null;
var nReg = 0;
var pullSpace = null;

function initPull()
{
	pullSpace = createPullSpace();
	obreConnexio();
}

function obreConnexio()
{
	xmlRequest = createXMLcon();
	
	xmlRequest.open("POST", "AJAXsrv/pull.japx", true);
	xmlRequest.setRequestHeader("Content-type", "aplication/x-www-form-urlencodes");
	xmlRequest.setRequestHeader("X-AJAX-APP", "Cleopatra Asyncrous web plataform");
	xmlRequest.setRequestHeader("Content-type", "text/xml; charset=iso-8859-1");
}

function createPullSpace()
{
	var obj;
							 
	obj = document.createElement("div");
	obj.id = "pullSpace";
	obj.innerHTML = "iniciant ...";
							 
	document.getElementById("pEnquesta").appendChild(obj);
							 
	return obj;
}

function requestEstat()
{
	switch(xmlRequest.readyState)
	{
	case 0:
		return "Uninitialized";
	case 1:
		return "Loading";
	case 2:
		return "Loaded";
	case 3:
		return "Interactive";
	case 4:
		return "Complete";
	}
}

function enviarDades(xmlSeq)
{
	try {
		xmlRequest.send(xmlSeq);
	} catch(e) {
		alert(e);
	}
}

function mostrar()
{
	enviarDades(this.generarRequestShow());
	xmlRequest.onreadystatechange = canviEstats;
}

function canviEstats()
{
	if(requestEstat() == "Loading")
	{
		pullSpace.innerHTML = "carregant dades ...";
								 
	} else if(requestEstat() == "Complete")
	{
		pullSpace.innerHTML = "completat!";
		parseResponse(xmlRequest.responseText);
								 
	} else {
		pullSpace.innerHTML = "error";
	}
}

function generarRequestShow()
{
	var rqs;
							 
	rqs = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>";
	rqs += "<cawp version=\"1.0\">";
	rqs += "<request type=\"getEnquesta\" select=\"last\" />";
	rqs += "</cawp>";
	
	return rqs;
}

function generarRequestVot( enqId, votValue )
{
	var rqs;
	
	rqs = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>";
	rqs += "<cawp version=\"1.0\">";
	rqs += "<request type=\"sendVot\" enqid=\""+enqId+"\" value=\""+votValue+"\" />";
	rqs += "</cawp>";
	
	return rqs;
}

function generarFormulari( dades )
{
	var form = document.createElement("form");
	form.id = "fPull";
	form.name = "fPull";
	form.method = "POST";
	form.action = "";
	
	var attr = document.createElement("input");
	attr.type = "hidden";
	attr.name = "enq_id";
	attr.value = dades.attributes[0].nodeValue;
	form.appendChild(attr);
	
	var rCount = 1;
	for(var i=0; i<dades.childNodes.length; i++)
	{
		if( dades.childNodes[i].nodeName == "pregunta" )
		{
			var question = document.createElement("p");
			question.innerHTML = "<b>Pregunta:</b> " + dades.childNodes[i].firstChild.nodeValue;
			form.appendChild(question);

		} else if( dades.childNodes[i].nodeName == "resposta" )
		{
			var cspan = document.createElement("span");
			var ctxt = document.createElement("font");
			ctxt.face = "Arial, Helvetica, sans-serif";
			ctxt.size = "2";
			var check = document.createElement("input");
			check.type = "radio";
			check.name = "enq";
			check.value = dades.childNodes[i].attributes[0].nodeValue;
			ctxt.innerHTML = dades.childNodes[i].firstChild.nodeValue + "<br />";
			cspan.appendChild(check);
			cspan.appendChild(ctxt);
			form.appendChild(cspan);
			rCount++;
		}
	}
	nReg = rCount;
	
	var send = document.createElement("input");
	send.type = "button";
	send.value = "votar";
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		send.attachEvent('onclick', function() {enviaVot();});
	} else {
		send.addEventListener('click', function() {enviaVot();}, false);
	}
	form.appendChild(send);
							 
							 
	pullSpace.appendChild(form);
}

function parseResponse(dades)
{
	var XmlData;
	
	try {
		XmlData = new ActiveXObject("Microsoft.XMLDOM");
		XmlData.async = false;
		XmlData.loadXML(dades);
	}
	catch (e)
	{
		parser = new DOMParser();
		XmlData = parser.parseFromString(dades, "text/xml");
	}
	
	reqTipus = XmlData.getElementsByTagName("response")[0].attributes[0].nodeValue;
	
	switch(reqTipus)
	{
		case 'dadesEnquesta':
			_netejaEspai();
			generarFormulari( XmlData.getElementsByTagName("enquesta")[0] );
			break;
		case 'dadesRespostes':
			_netejaEspai();
			generaGrafic( XmlData.getElementsByTagName("enquesta")[0] );
			break;
		case 'error':
			_netejaEspai();
			pullSpace.innerHTML = "ERROR: " + XmlData.getElementsByTagName("response")[0].attributes[1].nodeValue;
			break;
	}
}

function _netejaEspai()
{
	pullSpace.innerHTML = "";
}

function enviaVot()
{
	// validem
	validat = false;
	k = 0;
	for(var i = 0; i < document.fPull.enq.length; i++)
	{
		if( document.fPull.enq[i].checked )
		{
			validat = true;
			k = i;
			break;
		}
	}
	
	if(validat)
	{
		dades = generarRequestVot(document.fPull.enq_id.value, document.fPull.enq[k].value );
		obreConnexio();
		enviarDades(dades);
		xmlRequest.onreadystatechange = canviEstats;
		
	} else {
		alert("No s'ha seleccionat cap resposta !");
	}
}

function generaGrafic( dades )
{
	for(var i=0; i<dades.childNodes.length; i++)
	{
		if( dades.childNodes[i].nodeName == "pregunta" )
		{
			var question = document.createElement("p");
			question.innerHTML = "<b>Pregunta:</b> " + dades.childNodes[i].firstChild.nodeValue;
			pullSpace.appendChild(question);
		} else if( dades.childNodes[i].nodeName == "resposta" )
		{
			var rspan = document.createElement("span");
			rspan.innerHTML = "<p>"+dades.childNodes[i].firstChild.nodeValue+"<br /><img src=\"inclusio/imatges/eslic_enquesta_barra.gif\" width=\""+dades.childNodes[i].attributes[0].nodeValue+"\" height=\"10\" /></p>";
			pullSpace.appendChild(rspan);
		}
	}
}