// -----------------------------------------------------------------------------
//  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/
// -----------------------------------------------------------------------------
// PARAMETROS DE LA FUNCIÓN AJAX.
// -----------------------------------------------------------------------------
// • sFile		->	Dirección URL del script de servidor que va a tratar la
//					petición y nos va a devolver respuesta.
// • params		->	Parámetros pasados al script de servidor.
//					Ej: params="clave1=valor1&calve2=valor2"
// • container	->  ID del objeto al que se le insertará el código devuelto 
//					por el servidor. Ej: "capa1".
//					Con "+capa1" añadimos al contenido de 'capa1' lo devuelto
//					por el servidor.
//					Con "^capa1" añadimos por delante del contenido de 'capa1'
//					lo devuelto por el servidor.
// • sMethod	->	POST o GET
// • codeDone	->  Código javascript que se ejecutará cuando la llamada
//					ajax haya terminado.
// -----------------------------------------------------------------------------
function ajax(sFile, params, container, sMethod, codeDone) {

	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;
}


