/**
	Título: Wrapper JavaScript a funciones XMLHTTP para AJAX 0.1b
	Autor.: Pablo Rodríguez Rey (mr.xkr -en- inertinc -punto- org)
	        http://mr.xkr.inertinc.org/

	Agradecimientos a Cucaracha, por darme interés en el desarrollo de webs usando
	AJAX y proveerme del ejemplo básico con el que está desarrollada esta librería.
*/


// constantes para httpRequest
var hGET=0;
var hPOST=1;


// función auxiliar GetID(id)
function gid(id) { return(document.getElementById(id)); }


// crea el objeto XML-HTTP
function httpObject() {
	var xmlhttp;
	// comprobar que el navegador soporta XMLHttpRequest
	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch (e) { try { xmlhttp = new XMLHttpRequest(); }
	catch (e) { xmlhttp = false; } } }
	return(xmlhttp);
}

// estado de la petición
function httpState() {
	try { return(http.readyState); }
	catch (e) { return(5); }
}

// cadena de estado de la petición
function httpStateString() {
	try { var rs=http.readyState; }
	catch (e) { var rs=5; }
	switch (rs) {
	case 0: return("Uninitialized")
	case 1: return("Loading");
	case 2: return("Loaded");
	case 3: return("Interactive");
	case 4: return("Complete");
	case 5: return("Server Crashed");
	}
}

// Indicar si se ha completado la operación
function httpComplete() {
	if (http.readyState==4) return(true);
	else return(false);
}

// Devolver los datos recibidos
function httpData() {
	return(http.responseText);
}

// Devolver el estado del servidor
// Si se detecta error, el servidor no estará disponible
function httpStatus() {
	try { return(http.status); }
	catch(e) { return(0); }
}

// Comprobar que la respuesta del servidor es la 200 (HTTP OK)
function httpError() {
	if (http.readyState==4) {
		try { var ok=(http.status!=200); }
		catch(e) { return(true); }
		return(ok);
	}
}

// Realizar un envío de datos http
function httpSend(method, url, data) {
	var sdata=data;
	switch (method) {
	case 0: http.open("GET",url+"?"+sdata,true); sdata=null; break;
	case 1: http.open("POST",url,true); break;
	default: return(false);
	}
	http.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-1"');
	http.send(sdata);
	return(true);
}

// Devuelve todos los campos y datos
// de un formulario tipo campo1=dato1&campo2=dato2&...
function httpFormFields(formObject) {
	var fields="";
	for (x=0;x<formObject.length;x++) {
		var val="";
		switch (formObject[x].type) {
		case "button": continue;
		case "checkbox": val=(formObject[x].checked?"1":"0"); break;
		case "select-one": case "text": case "textarea":
		default: val=formObject[x].value;
		}
		fields=fields+(x>0?"&":"")+formObject[x].name+"="+escape(val);
	}
	return(fields);
}

function httpFormFieldsEnabled(formObject,isEnabled) {
	for (x=0;x<formObject.length;x++) {
		try { formObject[x].disabled=isEnabled; }
		catch(e) {}
	}
}
