/* Funcion para crear una instancia del objeto XMLHTTPRequest
XMLHTTPRequest es una interfaz empleada para realizar peticiones HTTP y HTTPS a servidores WEB*/
function createREQ()
{
	try
	{
		req = new XMLHttpRequest(); /* p.e. Firefox */
    }
	catch(err1)
	{
		try
		{
			req = new ActiveXObject('Msxml2.XMLHTTP'); /* algunas versiones IE */
			
		}
		catch (err2) 
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP"); /* algunas versiones IE */
			}
			catch (err3)
			{
				req = false;
			}
		}
     }
     return req;
}

/*Funcion que nos permite llevar a cabo las peticiones GET
url es a donde se envia la peticion, query es la peticion & req es la instancia del objeto XMLHttpRequest*/
function requestGET(url, query, req)
{
	myRand=parseInt(Math.random()*99999999);
	req.open("GET",url+'?'+'query'+'&rand='+myRand,true);
	req.send(null);
}

/*Funcion que nos permite llevar a cabo las peticiones POST
url es a donde se envia la peticion, query es la peticion & req es la instancia del objeto XMLHttpRequest*/
function requestPOST(url, query, req)
{
	req.open("POST", url,true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.send(query);
}

/*Funcion que determina si la repuesta a recibir sera como texto o XML
callback nombre de la funcion a utilizar como funcion de respuesta, item indica como manejar los datos devueltos si como texto o XML*/
function doCallback(callback,item) 
{
	eval(callback + '(item)');
}

/*Funcion que permite que interactue toda la libreria
url es a donde se envia la peticion, query es la peticion, callback nombre de la funcion a utilizar como funcion de respuesta, reqtype es el tipo de peticion GET o POST, getxml determina el tipo de datos 0 xml o 1 text*/
function doAjax(url,query,callback,reqtype,getxml)
{
	// crea la instancia del objeto XMLHTTPRequest 
	var myreq = createREQ();
	myreq.onreadystatechange = function() 
	{
		if(myreq.readyState == 4)
		{
			if(myreq.status == 200)
			{
				var item = myreq.responseText;
				if(getxml==1) 
				{
					item = myreq.responseXML;
				}
				doCallback(callback, item);
			}
		}
	}
	if(reqtype=='post') 
	{
		requestPOST(url,query,myreq);
	}
	else
	{
		requestGET(url,query,myreq);
	}
}



