// La funció checkReadyState() crida a una altra funció:
// updateResults(), que ha de ser definida a la pàgina de crida
// Aquesta funció ha de tractar el resultat de la petició Ajax.
//
// ALERTA:
//
// Els camps de Formulari SELECT admeten seleccions múltiples. 
// Els paràmetres s'envien com a : nomDelCamp_indexDelOption = valor.
// 		essent indexDelOption un número entre el 0 i el total de options del select -1.
//
// Els camps input="checkbox" :
// Els paràmetres s'envien com a : nomDelCamp_indexDeCheckbox=valorDelCheckbox, 
// 		essent indexDeCheckbox un número entre el 0 i el total de checkboxs del grup de checkboxs -1.



var oRequest;
		
function xmlHttpPost(strUrl, oQuery){
	try{
		oRequest = new XMLHttpRequest();
	}
	catch(e){
		try{
			oRequest = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){
			alert("ERROR " + e);
			return;
		}
	}
	
	var strQ = getQueryString(oQuery);

	oRequest.open("POST", strUrl, true);
	oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oRequest.onreadystatechange = checkReadyState;
	
	if (strQ && strQ.length > 0){
		oRequest.send(strQ);
	}
	else{
		try{
			oRequest.send(null);
		}
		catch(e){
			try{
				oRequest.send();
			}
			catch(e){
				alert("ERROR " + e);
				return;
			}
		}
	}
	
}


function checkReadyState(){

	if (!oRequest){
		return;
	}
	
	if (oRequest.readyState == 4){
		if (oRequest.status == 200){
			updateResults(oRequest.responseText);
		}
		else{
			alert("ERROR: " + oRequest.statusText);
			return;	
		}
	}
	
}

function getQueryString(oQuery) {
	var strQuery = "";
	if (oQuery.nodeName == "FORM"){
		for (var i = 0; i < oQuery.length; i++){
			var e = oQuery.elements[i];
			var n = e.nodeName;
			// Agafem els elements del Formulari que son INPUT
			if (n == "INPUT"){
				var a = e.getAttribute("type");
				// Descartem els elements que no tenen un value
				if (a != "button" && a != "image" && a != "reset" && a != "submit"){
					// Si trobem un radiobutton
					if (a == "radio"){
						var r = e.name;
						var ar = document.getElementsByName(r);
						for (var j = 0; j < ar.length; j++){
							if (ar[j].checked){
								strQuery += (r + "=" + ar[j].value + "&");
							}
							i++;
						}
						i--;
					}
					// Si trobem un checkbox
					else if (a == "checkbox"){
						var c = e.name;
						var cr = document.getElementsByName(c);
						for (var k = 0; k < cr.length; k++){
							if (cr[k].checked){
								strQuery += (c + "=" + cr[k].value + "&");
							}
							i++;
						}
						i--;
					}
					// Si trobem un hidden, text, password, file
					else{
						strQuery += (e.name + "=" + e.value + "&");
					}
				}
			}
			// Agafem els altres Valors (SELECT i TEXTAREA)
			else if (n == "TEXTAREA"){
				strQuery += (e.name + "=" + e.value + "&");
			}
			else if (n == "SELECT"){
				if (e.type == "select-multiple"){
					for (var l = 0; l < e.length; l++){
						if (e.options[l].selected){
							strQuery += (e.name + "_" + l + "=" + e.options[l].value + "&");
						}
					}
				}
				else{
					strQuery += (e.name + "=" + e.options[e.selectedIndex].value + "&");
				}
			}
		}
		strQuery = strQuery.substr(0, (strQuery.length - 1));
	}
	else{
		strQuery = oQuery;
	}
//	alert(strQuery);
    return strQuery;
}


