/**********************************************************************************************************************
File: lib_ajax.js
Info: Motor de AJAX 
Author: SiPoX
Version: 2.0 - 13/02/2008 - SiPoX
**********************************************************************************************************************/


/* Genera el objeto HttpRequest(), objeto para el uso de AJAX */
function genAJAX()  
{
	// Intentamos generar el objeto, para distin
	try 
	{
  		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 	} 
 	catch (e) 
 	{
  		try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } 
  		catch (E) { xmlhttp = false; }
	}
	
	// Si ninguna forma de las anteriores ha tenido éxito... 
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); }
	
	// Devolvemos el objeto.. 
	return xmlhttp;
}


/* Envía el objeto AJAX, enviando con él la petición asincrona http */
function sendAJAX(xmlhttp, method, urlToLoad, async, callback) 
{
	xmlhttp.open(method, urlToLoad, async);
	
 	xmlhttp.onreadystatechange=function() 
	{
    		if (xmlhttp.readyState==4) 
    		{ //readyState retorna 4 al terminar la operacion
   			callback(xmlhttp); //Retorna resultado
		}
 	}
 	
 	xmlhttp.send(null);
}


/* Obtiene el contenido de lo devuelto por la peticion http y lo carga en la capa apropiada.. */
function getAJAX(httpRequest) 
{ 
	var val="";
	var layer_name=httpRequest.layerName;
	
		
	for(i in httpRequest) 
	{
		try {
		val+="httpRequest."+i+"="+httpRequest[i]+"\n";
		} 
		catch(e) {}
	}
	
	// Si estado == alguna fase de carga...
	//if (httpRequest.readyState==1) document.getElementById(layer_name).innerHTML="cargando.";
	//else if (httpRequest.readyState==2) document.getElementById(layer_name).innerHTML="cargando..";
	//else if (httpRequest.readyState==3) document.getElementById(layer_name).innerHTML="cargando...";
	//else if (httpRequest.readyState==4) // Objecto cargado....
	//{
		if (httpRequest.status == 200) document.getElementById(layer_name).innerHTML=httpRequest.responseText;  // Todo OK		
		else if(httpRequest.status==404) alert("Esta pagina no existe");                                                                             // Error 404, página no encontrada... 
		else document.getElementById(layer_name).innerHTML="error al procesar!";		                                                   // Otro Error 
	//}	
	
    	document.getElementById(layer_name).innerHTML=httpRequest.responseText; 

}

//eval(topOpenItem + ".style.display = 'none'");

/* Funcion a la que llamar para generar una zona basada en AJAX */
function genContent(element, urlToLoad) 
{
	xmlhttp=genAJAX() //Iniciamos proceso
	
	//var value_layer=document.getElementById(element).value //Declaramos variables de uso
	xmlhttp.layerName=element;

	//sendAJAX(xmlhttp,"GET",urlToLoad+"valor="+encodeURIComponent(value_layer),true,getAJAX); //Usamos la funcion de envio
	sendAJAX(xmlhttp,"GET",urlToLoad, true, getAJAX); //Usamos la funcion de envio
}



/* Muestra el contenido generado o pedido por genContent */
function showContent(httpRequest) 
{
	var layer_name=httpRequest.layerName;
	
	// Si estado == alguna fase de carga...
	if (httpRequest.readyState==1) document.getElementById(layer_name).innerHTML="cargando.";
	else if (httpRequest.readyState==2) document.getElementById(layer_name).innerHTML="cargando..";
	else if (httpRequest.readyState==3) document.getElementById(layer_name).innerHTML="cargando...";
	else if (httpRequest.readyState==4) // Objecto cargado....
	{
		if (httpRequest.status == 200) // la peticin devuelve el cdigo de todo OK
		{
			document.getElementById(layer_name).innerHTML=httpRequest.responseText;					
		} 
		else document.getElementById(layer_name).innerHTML="error al procesar!";		
	}
}


function loadAjax(layer,mode)
{
	var js_table;
	var cadie; 
	
	if (mode=="fields_search" || mode=="fields_sel" || mode=="fields_map") 
	{ 
		 js_table=document.getElementById('Table').value;
		 cadie="cjx/ajax_dmn.php?mode=" + mode + "&table=" + js_table; 
	} 

	genContent(layer,cadie); 
}

