var http_request = false;

function openAJAX( Url, Method, FunctionAfterReq )
{
   http_request = false;

   if ( window.XMLHttpRequest) { // Mozilla, Safari,...
      http_request = new XMLHttpRequest();
      // 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);
   http_request.send(null);

   return true;
}


function stateAJAX()
{
   if ( http_request.readyState == 4 ) {
      if (  http_request.status == 200 )
         return true;
      else
         return false;
   }

   return true;
}


function creaAjax()
{
   var objetoAjax=false;
   try {
      /*Para navegadores distintos a internet explorer*/
      objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
        try {
           /*Para explorer*/
           objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E) {
           objetoAjax = false;
        }
     }

   if (!objetoAjax && typeof XMLHttpRequest!='undefined') {
      objetoAjax = new XMLHttpRequest();
   }

   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="Cargando.......";
         }
         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="Cargando.......";
         }
         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;
   }
} 

