/* **********************************************************************************
 *                                                                  FUNCIONES AJAX
 * PROYECTO:
 *           TODOS
 *	  
 * Desarrollado por: 
 *           FORMATIA - Formación, Consulta y Desarrollo PEFER, S.L.
 *                   - C/ Capitán Gallarza, 1 entlo. - 26001 - Logroño - La Rioja
 *                    - 941 202 596 - 941 214 304 - desarrollo@formatia.net
 *
 * Fecha de inicio del proyecto: 07/11/2007
 * **********************************************************************************
 * Fichero JavaScript: js/ajax_index.js
 * Archivos asociados:
 *    Cualquiera
 *
 * Fecha de creación del fichero:  20/07/2007
 * Desarrollador: Luis Fernández
 * Modificaciones:
 *
 * ******************************************************************************* */
/* **********************************************************************************
 * function ajax_create_obj()
 *    Entrada:
 *
 *    Salida:
 *       Devuelve un objeto Ajax acorde con el navegador cliente:
 *                      XMLHttpRequest || Msxml2.XMLHTTP || Microsoft.XMLHTTP
 * ******************************************************************************* */
function ajax_create_obj(){
	var httprequest = false;
	if (window.XMLHttpRequest){ // if Mozilla, Safari etc
		httprequest = new XMLHttpRequest();
		if (httprequest.overrideMimeType) httprequest.overrideMimeType('text/xml');
	}
	else if (window.ActiveXObject){ // if IE
		try {
			httprequest = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e){
			try{
				httprequest = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e){}
		}
	}
	return httprequest;
}
/* **********************************************************************************
 * function ajax_get_request_text(url,valores,metodo,asincrono,preload_show,preload_hide,funcion)
 *    Entrada:
 *       url: URL a la que se realiza la petición http. Si se usa GET hay que pasar
 *            los valores en la cadena de consulta.
 *       valores: Valores post que deben añadirse a la petición. Si se usa GET
 *                este parámetro debe ser null o una cadena vacía.
 *       metodo: GET/POST
 *       asincrono: true/false
 *       preload_show: Id de la capa con el preload. Acepta null.
 *       preload_hide: Id de la capa que hay que ocultar con el preload.
 *                     Acepta null.
 *       funcion: Nombre de la función a ejecutar en modo asincrono. Sin parámetros.
 *
 *    Salida:
 *       Devuelve la respuesta que a su vez devuelve la url pasada.
 *       Si preload_show es distinto de null hace visible esa capa y la vuelve
 *       a ocultar al finalizar el request.
 *       Si preload_hide es distinto de null oculta esa capa y la vuelve a hacer
 *       visible al finalizar el request.
 * ******************************************************************************* */
function ajax_get_request_text(url,valores,metodo,asincrono,preload_show,preload_hide,funcion){
   var http_request = false;
   http_request = ajax_create_obj();
   if (!http_request) return null;
   if (valores == null || valores.length == 0) valores = null;
   http_request.onreadystatechange = function(){
      if (preload_show != null && http_request.readyState == 1){
         mostrarCapa(preload_show);
         if (preload_hide != null) ocultarCapa(preload_hide);
      }else if (http_request.readyState == 4){
         if (preload_show != null) ocultarCapa(preload_show);
         if (preload_hide != null) mostrarCapa(preload_hide);
         if (http_request.status != 200){
            alert('Error:' + http_request.status);
         }else if (asincrono){
            eval(funcion + '(http_request.responseText)');
		 }
		 return;
      }
   }
   http_request.open(metodo.toUpperCase(), url, asincrono);
   http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
   http_request.setRequestHeader("Referer", document.location);
   //http_request.setRequestHeader("Connection", "close");
   http_request.send(valores);
   if (!asincrono) return http_request.responseText;
}
