// -----------------------------------------------------------------------------
//  Funcion AJAX - Interface para la conexión XMLHTTP - 10-03-2006      
//  Code licensed under Creative Commons Attribution-ShareAlike License
//  http://creativecommons.org/licenses/by-sa/2.0/
// -----------------------------------------------------------------------------
function ajax(sFile, params, container, sMethod, codeDone) {
// -----------------------------------------------------------------------------
// Separamos el php de la id de la capa donde se introducira el texto devuelto
// sFile <=> "script.php#id_capa"
// -----------------------------------------------------------------------------
	var sFile = sFile.split('#');
	var myConn = new XHConn();	// Objeto de la conexión
	// -----------------------------------------------------------------------------
	// Campo opcional con código que se ejecutará cuando la petición ajax finalice.
	// -----------------------------------------------------------------------------
	if(codeDone) {
		var code = codeDone;
	}
	// -----------------------------------------------------------------------------
	if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");
	// -----------------------------------------------------------------------------
	// Funcion que se ejecutará cuando XHConn finalize la conexión.
	// Puede añadir delate('^') del codigo de la capa, detras('+') o sustituirlo.
	// -----------------------------------------------------------------------------
	var fnDone = function (oXML) {
		if(container) {
			switch(container.charAt(0)) {
			case '^':
				container = container.replace(/^\^/,'');
				if(!document.getElementById(container)) return false;
				var update = document.getElementById(container).innerHTML;
				document.getElementById(container).innerHTML = oXML.responseText + update;
				break;
			case '+': 
				container = container.replace(/^\+/,'');
				if(!document.getElementById(container)) return false;
				document.getElementById(container).innerHTML += oXML.responseText;
				break;
			default:
				if(!document.getElementById(container)) return false;
				document.getElementById(container).innerHTML = oXML.responseText;
			break;
			}
		}
		// Ejecución de codigo javascript al terminar la conexion AJAX.
		if(code) { eval(code) }
	};
	myConn.connect(sFile, sMethod, params, fnDone);
}
// -----------------------------------------------------------------------------
//  XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08      
//  Code licensed under Creative Commons Attribution-ShareAlike License
//  http://creativecommons.org/licenses/by-sa/2.0/
// -----------------------------------------------------------------------------
function XHConn() {

  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone) {
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();
    try {
      if (sMethod == "GET") {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      } else {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
		//xmlhttp.setRequestHeader("Content-Type",
		//						 "text/html; charset=iso-8859-1");
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && !bComplete) {
          bComplete = true;
          fnDone(xmlhttp);
        }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
}
