// Documento JavaScript
// by Token386

/*

onreadystatechange: Función de gestión de evento para un evento que se activa con cada cambio de estado.

readyState: Devuelve el estado del objeto como sigue:
0 = sin inicializar, 1 = cargando, 2 = cargado, 3 = interactivo y 4 = completado.

responseText: 	Devuelve la respuesta como una cadena

responseXML: 	Devuelve la respuesta como XML. Esta propiedad devuelve un objeto documento XML, que puede ser examinado usando las propiedades y métodos del árbol del DOM.

status: 	Devuelve el estado como un número (p. ej. 404 para "Not Found" y 200 para "OK").
statusText: 	Devuelve el estado como una cadena (p. ej. "Not Found" o "OK").

*/
var debug = false;
var espera_tmp;

function FAjax (url,capa,valores,metodo)
{
          var ajax=objetus();
          var capaContenedora = document.getElementById(capa);

/*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) {
                          capaContenedora.innerHTML="Cargando.......";
         }
         else if (ajax.readyState==4){
                   if(ajax.status==200)
                   {
                        capaContenedora.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);
         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);
         return
}
} 


function _objetus_() {
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation,
// we can cope with old IE versions.
// and security blocked creation of the objects.
try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}


 function objetus() {
   try 
   {
      objetus = new ActiveXObject("Msxml2.XMLHTTP");
   } 
   catch (e) 
   {
      try 
      {
         objetus= new ActiveXObject("Microsoft.XMLHTTP");
      } 
      catch (E) 
      {
         objetus= false;
      }
   }
   
  if (!objetus && typeof XMLHttpRequest!='undefined') 
  {
     objetus = new XMLHttpRequest();
  }
  return objetus;
}


function GetXmlHttp() {	
	var xmlhttp = false;
	if (window.XMLHttpRequest)
	{
		xmlhttp = new XMLHttpRequest();
  }
	else if (window.ActiveXObject)// code for IE
	{
		try 
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp=false;
			}
		}
	}
	return xmlhttp;
}
function PassAjaxResponseToFunction(url, callbackFunction, params)
{		
  var xmlhttp = new GetXmlHttp();
 
  if (xmlhttp)
  {
    xmlhttp.onreadystatechange = function () 
                                {
	                                if (xmlhttp && xmlhttp.readyState==4)
	                                {
		                                if (xmlhttp.status==200)
		                                {
			                                var response = xmlhttp.responseText;
			                                var functionToCall = callbackFunction+'(response,'+params+')';
			                                if(debug){
				                                alert(response);
				                                alert (functionToCall);
			                                }
			                                eval(functionToCall);
		                                } else if(debug){
			                                document.write(xmlhttp.responseText);
		                                }
	                                }
                                }
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
  }
}

function SetInnerHTMLFromAjaxResponse(url, obj_id)
{		
  var xmlhttp = new GetXmlHttp();
 
  if (xmlhttp)
  {
    xmlhttp.onreadystatechange = function () 
                                {
	                                if (xmlhttp && xmlhttp.readyState==4)
	                                {
		                                if (xmlhttp.status==200)
		                                {
			                                if(debug){
				                                alert(xmlhttp.responseText);
			                                }
			                                if(typeof obj_id == 'object'){
				                                obj_id.innerHTML = xmlhttp.responseText;
			                                } else {
				                                document.getElementById(obj_id).innerHTML = xmlhttp.responseText;
			                                }
		                                } else if(debug){
			                                document.Write(xmlhttp.responseText);
		                                }
	                                }
                                }
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
  }
}



function yyGetContent (url, id_contenedor,id_espera,texto_espera){    
	var pagina_requerida =  new GetXmlHttp();
	

	// guardamos el contenido de la zona de espera
	if(!espera_tmp && document.getElementById (id_espera)){
				espera_tmp=document.getElementById(id_espera).innerHTML;	
	}
	
	pagina_requerida.onreadystatechange = function ()    {        // función de respuesta
	
	    if (pagina_requerida)if(pagina_requerida.readyState==4){
		                                if (pagina_requerida.status==200){
			                                if(debug){
				                                alert(pagina_requerida.responseText);
			                                }                      
				                            if(document.getElementById(id_contenedor))
											     document.getElementById(id_contenedor).innerHTML = pagina_requerida.responseText;
	    									if(document.getElementById(id_espera))
	   											 document.getElementById(id_espera).innerHTML = espera_tmp;
			                                
		                                } else {
										    if(document.getElementById(id_contenedor))
 									           document.getElementById(id_contenedor).innerHTML = '<font color=red>Error! : ' + pagina_requerida.statusText + '</font>' ;
										}
	      }else {
								
											// mientras el estado no es el 4, esperamos ...
											if(document.getElementById(id_espera))	
	   										    document.getElementById(id_espera).innerHTML = texto_espera;
														                                
          }
									
	
	}    
	
	pagina_requerida.open('GET', url, true); // asignamos los métodos open y send    
	pagina_requerida.send(null);
	
}


