var http_request = false;
var loader = "Cargando...";

function setLoader(loaderPersonal){
	loader = loaderPersonal;
}

function openAJAX( Url, Method, FunctionAfterReq, post_param )
{
   http_request = false;

   if ( window.XMLHttpRequest) { // Mozilla, Safari,...
      http_request = new XMLHttpRequest();
      // Comentado porque desde el FireFox 1.0.1 da problemas dado
      // que interpreta el codigo de salida del requerimiento
      // solo como codigo XML aunque se le haya definidio que es text
      //if ( http_request.overrideMimeType )
      //{
         //http_request.overrideMimeType('text/xml');
      //}
   }
   else {
      if ( window.ActiveXObject ) { // IE
         try {
           http_request = new ActiveXObject("Msxml2.XMLHTTP");
         }
	 catch (e) {
            try {
              http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
   }

   if ( !http_request ) {
      // alert('Giving up :( Cannot create an XMLHTTP instance');
      return false;
   }

   http_request.onreadystatechange = FunctionAfterReq;
   http_request.open(Method, Url, true);
   if ( Method == "POST" ) {
         http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   }
   http_request.send(post_param);

   return true;
}


function stateAJAX()
{
   if ( http_request.readyState == 4 ) {
      if (  http_request.status == 200 )
         return true;
      else
         return false;
   }
}

function creaAjax()
{
   var objetoAjax=false;
   if(window.XMLHttpRequest){
	objetoAjax= new XMLHttpRequest();
   }else if(window.ActiveXObject){
	try{
		objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e){
			objetoAjax = false;
		}
	}
   }
   return objetoAjax;
}

function displayAjax( docID, url, capa, valores, metodo )
{

   /**
   C�digo HTMl para metodo GET
   
<form method="get" onsubmit="displayAjax(docID,'ajax.php?campo1='+docID.getElementById('campo1').value
   +'&campo2='+docID.getElementById('campo2').value,'capaContenedora','','get'); return false" action="#">

   # En la funci�n displayAjax invocada para m�todo get, hay un par�metro vac�o.
   # Eso es por que GET necesita la url concatenada con las variables y valores, por
   # lo que los valores no se pueden mandar por separado, como es el caso que necesita POST

   C�digo HTMl para metodo POST:
   <form method="post" onsubmit="displayAjax(docID,'ajax.php,'capaContenedora','campo1='+docID.getElementById('campo1').value
   +'&campo2='+docID.getElementById('campo2').value,'post'); return false" action="#">
   **/

   var ajax=new creaAjax();
   var capaContenedora = docID.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="<center><img src='img/ajax-loader.gif'></center>";
            capaContenedora.innerHTML=loader;
         }
         else if ( ajax.readyState == 4 ) {
                 if ( ajax.status == 200 ) {
                    docID.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);
      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=loader;
         }
         else if ( ajax.readyState == 4 ) {
                 if ( ajax.status == 200 ) {
                    docID.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 displayAjax2( docID, url, capa, valores, metodo, sincronizado )
{

   /**
   C�digo HTMl para metodo GET
   
<form method="get" onsubmit="displayAjax(docID,'ajax.php?campo1='+docID.getElementById('campo1').value
   +'&campo2='+docID.getElementById('campo2').value,'capaContenedora','','get'); return false" action="#">

   # En la funci�n displayAjax invocada para m�todo get, hay un par�metro vac�o.
   # Eso es por que GET necesita la url concatenada con las variables y valores, por
   # lo que los valores no se pueden mandar por separado, como es el caso que necesita POST

   C�digo HTMl para metodo POST:
   <form method="post" onsubmit="displayAjax(docID,'ajax.php,'capaContenedora','campo1='+docID.getElementById('campo1').value
   +'&campo2='+docID.getElementById('campo2').value,'post'); return false" action="#">
   **/

   var ajax=new creaAjax();
   var capaContenedora = docID.getElementById(capa);

   /* Creamos y ejecutamos la instancia si el metodo elegido es POST */
   if ( metodo.toUpperCase() == 'POST' ) {
      ajax.onreadystatechange = function() {
         if ( ajax.readyState==1 ) {
            capaContenedora.innerHTML=loader;
         }
         else if ( ajax.readyState == 4 ) {
                 if ( ajax.status == 200 ) {
                    docID.getElementById(capa).innerHTML=ajax.responseText;
                 }
                 else if ( ajax.status == 404 ) {
                         capaContenedora.innerHTML = "La direccion no existe";
                      }
                      else {
                         capaContenedora.innerHTML = "Error: ".ajax.status;
                      }
              }
      }
      ajax.open( 'POST', url, sincronizado );

      ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      ajax.send(valores);
      return true;
   }

   /* Creamos y ejecutamos la instancia si el metodo elegido es GET */
   if ( metodo.toUpperCase() == 'GET' ) {
      ajax.open ('GET', url, sincronizado);
      ajax.onreadystatechange = function() {
         if (ajax.readyState==1) {
            capaContenedora.innerHTML=loader;
         }
         else if ( ajax.readyState == 4 ) {
                 if ( ajax.status == 200 ) {
                    docID.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 true;
   }
}
