//funcion encargada de crear el objeto

var resultado_ajax;


function crear_ajax()
{
	var peticion = false;
	try 
	{
       peticion = new XMLHttpRequest();
	} 
	catch (trymicrosoft) 
	{
		try 
		{
			var ids = ["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0",
 					   "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP",
  					   "Microsoft.XMLHTTP"];
			for(var i=0; !peticion && i < ids.length; i++) 
			{
    			try { peticion = new ActiveXObject(ids[i]); }
    			catch(ex) { peticion = false; }
			}
       		//peticion = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (othermicrosoft) 
		{
			try 
			{
       			peticion = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed) 
			{
       			peticion = null;
			} 
		}
	}
	if (!peticion)
       alert("ERROR AL INICIALIZAR!");
    return peticion;
}


function comunicar (url, llamar)
{
	var ajax = crear_ajax();
	if (typeof(ajax) == 'object')
	{
		try
		{
			
			ajax.open("GET", url, true, null, null);
		}
		catch (e)
		{
			if (window.location.hostname == "localhost") 
			{
				resultado_ajax = ("Tu navegador bloquea XMLHttpRequest a 'localhost', intenta usar un nombre real de servidor para desarrollo o testeo.");
			}
			else
			{
				resultado_ajax = ("No se pudo consultar al servidor mediante ajax.")
			}
			throw e;
			return;
		}

		ajax.onreadystatechange =
			function()
			{
				var respuesta;
				switch(ajax.readyState)
				{
					case 1:
						respuesta = "Conectado";
					break;
					case 2:
						respuesta = "Enviando";
					break;
					case 3:
						respuesta = "Recibiendo";
					break;
					case 4:
						if (ajax.status == 200)
						{
							respuesta = ajax.responseText;
							resultado_ajax = respuesta;
							if (llamar.length > 0)
								eval(llamar);
						}
					break;
				}
			}
			ajax.send(null);
		delete ajax;
	}
	else
	{
		resultado_ajax ("Su navegador no soporta AJAX");
	}
}
