//////////////////////////////
// A esto tenemos que proveer con una función que ocurrirá cuando llame con el contenido del texto.
// Es super primitivo, pero debería servirnos.
//
//Forma de uso: 
//1- Crear el objeto como en "cosa = new request_http()";
//2- Para realizar una petición llamamos al método cargar(url y función) del objeto: "Cosa('www.google.es', 'mifuncion')"...
//3- La llamada a "cargar" tira una request a la url dada y cuando se ha completado devuelve TODO el contenido que haya sacado esa url como parámetro de la función especificada
//4- La función deberíamos definirla fuera del objeto y hacerla particular de cada página.
//5- Para pasar la función como parámetro debemos hacerlo sin paréntesis (de lo contrario la ejecutará en la propia llamada a cargar()).
//
//Hay algún ejemplo abajo muy ramplón que hace "alert" del contenido de la url que se haya pasado.
//
//Dani Diciembre 2008.

function request_http()
{		
	this.crear_request = function ()	//Esto, obviamente, no es mio... Nos ayuda a separar si es un objeto para IE o para el resto del mundo.
	{ 	
		if (typeof XMLHttpRequest != 'undefined') return new XMLHttpRequest(); 		//Para el resto del mundo.
		try { return new ActiveXObject("Msxml2.XMLHTTP");} 	//Para explorer...
		catch (e) 
		{ 
			try {return new ActiveXObject("Microsoft.XMLHTTP");}	//Para Dios sabe que otra versión de Explorer.
			catch (e) {} 
		} 
		return false; 	//Para Mosaic :P.
	}
	
	this.cargar = function(url, metodo)
	{					
		var funcion_respuesta = this.respuesta;	//Necesitamos hacer accesible al siguiente ámbito esto...
		var request_temporal=this.request;		//...y esto...			
		var funcion = function () {funcion_respuesta(request_temporal, metodo)}; //Y ahora creamos esto otro para poder usarlo de respuesta.			
		this.request.open("GET", url, true);	//Prepara...						
		this.request.onreadystatechange = funcion; //La respuesta cuando haya cambio			
		this.request.send(null);	//Lanza.						
	}
			
	this.respuesta = function(request_temporal, metodo)	//Cuando cambia el estado (según el método cargar()) lanzaremos esto, que recibe el request completo...
	{						
		if (request_temporal.readyState == 4) metodo(request_temporal.responseText);	//Cuando el estado sea 4 llamaremos a la función que pásamos... Nótese que al ser de ámbito global al objeto la podemos usar.
	}
	
	this.request = this.crear_request(); //Finalmente esto es lo primerísimo que ocurre cuando creamos un objeto: dentro del objeto se crea una instancia de XMLHTTPRequest en función del navegador que sea.		
}

/* 
Y este es el aspecto que tiene una función que damos al request, su creación y la llamada.

	<script type="text/javascript">
	function recarga(texto)
	{		
		alert(texto);
	}	

	var peticion = new request_http();		
	</script>

	<select onchange="peticion.cargar('dani2.php', recarga)">
		<option>1</option>
		<option>2</option>
		<option>3</option>
	</select>
*/

