var request = null;

/*
 *	Wrapper para la conexión
 *
 *	reqType: Tipo de http request, como POST ó GET
 *	url: La URL del servidor/página
 *	asynch: request sincrónico ó asyncrónico
 *	respHandle: Nombre de una función para manipular la respuesta.
 *	
 *	Cualquier información en el parámetro 5to será data propia de un request tipo POST.
 *
 */

function httpRequest(reqType, url, asynch, respHandle) {


	if (window.XMLHttpRequest) { // Mozilla
		request = new XMLHttpRequest();

        if (request.overrideMimeType) {
	       request.overrideMimeType('text/xml');
		}

	} else if (window.ActiveXObject) { // IE
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
			
			}
		}
	}

	if (request) {

		//	Si el tipo de request es POST, el 5to parámetro es POST data.
		if (reqType.toLowerCase() != "post") {
			initReq(reqType, url, asynch, respHandle);

		} else {

			// POST data
			var args = arguments[4];

			if (args != null && args.length > 0) {
				initReq(reqType, url, asynch, respHandle, args);
			}
		}

	} else {
		
		alert("Error: Su navegador no soporta AJAX.");
	}


	/* Inicializa un objeto REQUEST creado previamente */

	function initReq(reqType, url, bool, respHandle) {
		try	{
			request.onreadystatechange = respHandle;
			request.open(reqType, url, bool);

			// POST request:
			if (reqType.toLowerCase() == "post") {
				request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
				// Mozilla
				//request.overrideMimeType("text/xml");
				request.send(arguments[4]);

			} else {

				request.send(null);
			}

		} catch (errv) {

			alert("Error: No se pudo inicializar el request.");
		}
	}
}



var queryString;

/*
 *
 * Arma un string con los campos de un formulario (para POST)
 *
 *
 */

function setQueryString(frm) {
	queryString = "";

	var numberElements = frm.elements.length;

	for (var i = 0; i < numberElements; i++) {

		if (i < numberElements - 1) {
			queryString += frm.elements[i].name + "=" + encodeURIComponent(frm.elements[i].value) + "&";
		} else {
			queryString += frm.elements[i].name + "=" + encodeURIComponent(frm.elements[i].value);
		}
	}
}


/*
 * Envía un request
 *
 ****************************************************************/
function sendData(vUrl, form) {

	setQueryString(form);

	//alert(queryString);

	httpRequest("POST", vUrl, true, handleResponse, queryString);
}