/**********************************************************************************************************************
Libreria iAjax por el Ing. Ivan Arvizu Bejarano
ivanarvizu@equiposysistemas.com.mx

Esta libreria es una recopilacion de codigo, mejorada por su servidor y optimizada para ser leida con cualquier
navegador.

Uso:

:::Carga de informacion:::
loadAjax(url, capa, id_preloader, timeout)
Donde:
- url: Direccion de la pagina o documento xml que se va a cargar. Esta debe estar en el mismo servidor.
- capa: id de la DIV donde se cargara la pagina. Esta debe estar definida como <DIV ID="capa">
- id_preloader: id de una DIV que se mostrara para agregarle amigabilidad a la carga. Puede enviarse un campo vacio.
- timeout: timeout en milisengundos

:::Envío de Informaci&oacute;n:::
sendAjax(url, capa, valores, metodo, id_preloader)
Donde:
- url: Direccion de la pagina o documento xml que se va a cargar. Esta debe estar en el mismo servidor. Si se envia 
informacion por GET, debe incluir la cadena de variables. Ejm:
	pagina.asp?variable1=valor&variable2=valor
- capa: id de la DIV donde se cargara la pagina. Esta debe estar definida como <DIV ID="capa">
- valores: valores enviados, usar SOLO si los datos se envian por POST, Ejm:
	variable1=valor&variable2=valor
- metodo: Especificar si los valores se envian por GET o POST
- id_preloader: id de una DIV que se mostrara para agregarle amigabilidad a la carga. Puede enviarse un campo vacio.

:::Mostrar y ocultar el preloader manualmente:::
showPreload(id_preload): muestra preloader
hidePreload(id_preload): oculta preloader

***********************************************************************************************************************/

//----------------------------------------------------------------------------------------------------------------------

function creaAjax()
{
	var objetoAjax = false
	if (window.XMLHttpRequest) 
	{
		// Si es Mozilla, Safari etc
		objetoAjax = new XMLHttpRequest()
	} 
	else if (window.ActiveXObject)
	{ 
		// pero si es IE
		try 
		{
			objetoAjax = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e)
		{ 
			// en caso que sea una versi&oacute;n antigua
			try
			{
				objetoAjax = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){}
		}
	}
	else
	{
		return false;
	}
	return objetoAjax;
}
//----------------------------------------------------------------------------------------------------------------------
function asincrono(url, capa, id_preloader)
{
	pagina_requerida = creaAjax();
	pagina_requerida.onreadystatechange=function()
	{ 
		//funci&oacute;n de respuesta
		cargarpagina(pagina_requerida, capa, id_preloader);
	}
	pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
	pagina_requerida.send(null)
}
//----------------------------------------------------------------------------------------------------------------------
function cargarpagina(pagina_requerida, capa, id_preloader)
{
	//alert(isIE);
	if (pagina_requerida.readyState==1) 
	{
		
	}
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1))
	{
		if(pagina_requerida.responseText != "undefined")
			document.getElementById(capa).innerHTML=pagina_requerida.responseText;
		else
			document.getElementById(capa).innerHTML="No se encontr&oacute; la p&aacute;gina";
		hidePreload(id_preloader);
	}
}
//----------------------------------------------------------------------------------------------------------------------
function loadAjax(url, capa, id_preloader, timeout)
{
	//... Parche porque en el sendAjax a veces falla 
	showPreload(id_preloader);
	setTimeout("asincrono('"+url+"', '"+capa+"', '"+id_preloader+"')",timeout);
}
//----------------------------------------------------------------------------------------------------------------------
function sendAjax(url, capa, valores, metodo, id_preloader)
{
	var ajax=creaAjax();
    var capaContenedora = document.getElementById(capa);
	showPreload(id_preloader);
	/*Creamos y ejecutamos la instancia si el metodo elegido es POST*/
	if(metodo.toUpperCase()=='POST')
	{
		ajax.open ('POST', url, true);
		ajax.onreadystatechange = function() 
		{
			if (ajax.readyState==1) 
			{
				//showPreload(id_preloader);
         	}
         	else if (ajax.readyState==4)
			{
				if(ajax.status==200)
				{
 					document.getElementById(capa).innerHTML=ajax.responseText;
				}
				else if(ajax.status==404)
				{
					capaContenedora.innerHTML = "La direccion no existe";
				}
				else
				{
					capaContenedora.innerHTML = "Error: ".ajax.status;
				}
			}
		}
		ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        ajax.send(valores);
	//	loadAjax('form.php','wrap');       
	    return;
	}
	/*Creamos y ejecutamos la instancia si el metodo elegido es GET*/
	if (metodo.toUpperCase()=='GET')
	{
		ajax.open ('GET', url, true);
        ajax.onreadystatechange = function() 
		{
         	if (ajax.readyState==1) 
			{
				capaContenedora.innerHTML="Cargando.......";
         	}
         	else if (ajax.readyState==4)
			{
				if(ajax.status==200)
				{
					document.getElementById(capa).innerHTML=ajax.responseText;
				}
				else if(ajax.status==404)
				{
					capaContenedora.innerHTML = "La direccion no existe";
				}
				else
				{
					capaContenedora.innerHTML = "Error: ".ajax.status;
				}
			}
		}
        ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        ajax.send(null);
		//loadAjax('form.php','wrap');
        return
	}
	hidePreload(id_preloader);
} 
//----------------------------------------------------------------------------------------------------------------------
function showPreload(id_preloader)
{
	if(id_preloader != "")
		document.getElementById(id_preloader).style.display = "inline";		// Muestra preloader
}
//----------------------------------------------------------------------------------------------------------------------
function hidePreload(id_preloader)
{
	if(id_preloader != "")
		document.getElementById(id_preloader).style.display = "none";
}
//----------------------------------------------------------------------------------------------------------------------
function loadFunctionAjax(url, capa, id_preloader, functionToExec, timeout)
{
	//... Parche porque en el sendAjax a veces falla 
	showPreload(id_preloader);
	setTimeout("asincronoFn('"+url+"', '"+capa+"', '"+id_preloader+"', '" + functionToExec + "')",timeout);
}
//----------------------------------------------------------------------------------------------------------------------
function asincronoFn(url, capa, id_preloader, functionToExec)
{
	pagina_requerida = creaAjax();
	pagina_requerida.onreadystatechange=function()
	{ 
		//funci&oacute;n de respuesta
		cargarpaginaFn(pagina_requerida, capa, id_preloader, functionToExec);
	}
	pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
	pagina_requerida.send(null)
}
//----------------------------------------------------------------------------------------------------------------------
function cargarpaginaFn(pagina_requerida, capa, id_preloader, functionToExec)
{
	//alert(isIE);
	if (pagina_requerida.readyState==1) 
	{
		
	}
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1))
	{
		if(pagina_requerida.responseText != "undefined")
		{
			document.getElementById(capa).innerHTML=pagina_requerida.responseText;
			eval(functionToExec);
		}
		else
			document.getElementById(capa).innerHTML="No se encontr&oacute; la p&aacute;gina";
		hidePreload(id_preloader);
	}
}
