function ConstructorXMLHttpRequest() 
{
	if(window.XMLHttpRequest) //Vemos si el objeto window (la base de la ventana del navegador) posee el metodo XMLHttpRequest. 
	{
		return new XMLHttpRequest(); //Si lo tiene, crearemos el objeto con este método.
	}
	else if(window.ActiveXObject) //Sino  tenía el método anterior, deberia ser un navegador que emplee objetos ActiveX, lo mismo, miramos si tiene el método de creación.
	{
		//Hay diferentes versiones del objeto, creamos un array, que contiene los diferentes tipos desde la ultima version a la primera y la de microsoft.
		var versionesObj = new Array(
								'Msxml2.XMLHTTP.5.0',
								'Msxml2.XMLHTTP.4.0',
								'Msxml2.XMLHTTP.3.0',
								'Msxml2.XMLHTTP',
								'Microsoft.XMLHTTP');

		for (var i = 0; i < versionesObj.length; i++)
		{
			try 
			{
				//Intentamos devolver el objeto intentando crear las diferentes versiones se puede intentar crear uno que no existe y se producira un error.
				return new ActiveXObject(versionesObj[i]);
			} 
			catch (errorControlado) //Capturamos el error y no hacemos nada, ya que podría crearse otro objeto.
			{
			}
		}
	}
//Si el navegador llego aquí es porque no posee manera alguna de crear el objeto, emitimos un mensaje de error.
throw new Error("No se pudo crear el objeto XMLHttpRequest");
}
