/*
	Funciones para Ajax
    ===================
	
	Manuel Serrano Rojas 2010
*/

var _obj; //objeto XMLHttpRequest
var _swAjax=false;  //switch que indica si está en proceso una petición Ajax
var _elementId=''; //Id del elemento que se modificará con la respuesta del servidor
var _asyncAjax=true; //Indica si usamos comunicación asíncrona o no.


//Devuelve objeto XMLHttpRequest
function getHTTPObject() {
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
}


/*
   Enviar petición
   url - Archivo php que procesará la petición
   data - Datos a enviar
   elementId - Id del elemento HTML a modificar
   
*/

function sendRequest(url,datos, elementId) {

if(!_swAjax)
	{
	_swAjax=true;
	_elementId=elementId;
	_obj=getHTTPObject();
	_obj.open("POST", url, _asyncAjax);
	_obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
	_obj.onreadystatechange = procesarRespuesta;
	_obj.send(datos);
	}
}


//Limpiar el principio de cadena de espacios y caracteres de control.
function xltrim(cadena){
	
		while ((cadena.length>0) && (cadena.charAt(0)==" " || cadena.charAt(0)=="\r" || cadena.charAt(0)=="\n" || cadena.charAt(0)=="\t" || cadena.charAt(0)=="\b" || cadena.charAt(0)=="\f"))
		{
			cadena=cadena.substring(1);
		}
	return cadena
}

function xtrim(str){
	if(str!=null) return str.replace(/^\s*|\s*$/g,"");
	else return "";
}
/*

  Procesar respuesta

  Los dos primeros caracteres indican el resultado de la petición para el servidor

	'-1' -> Operación no completada. A continuación se especifica el motivo con un mensaje.
	'00' -> Resultado OK - Se usa el método innerHTML
	'01' -> Código Javascript para ejecutar en el cliente.

*/
function procesarRespuesta(){
	var respuesta="";
	var codigo="";

	if (_obj.readyState==4)
	{
		respuesta=xltrim(_obj.responseText);
		//alert(respuesta);

		codigo=respuesta.substring(0,2);
		respuesta=respuesta.substring(2);

		switch(codigo)
		{
			case '00':
				if(_elementId!='') 
				{
					document.getElementById(_elementId).innerHTML = respuesta;
					_elementId='';
				}
				break;
			
			case '01':
				eval(respuesta);
				break;
				
			case '-1':
				alert(respuesta);
				break;
			
		}
	}

	_swAjax=false;
}


/*
   Cargar Página - Nos permite cargar una página en un div y simular Frames.
   url - Archivo php que procesará la petición
   elementId - Id del elemento HTML a modificar
   
*/

function cargarPagina(url, elementId) {

if(!_swAjax)
	{
	_swAjax=true;
	_elementId=elementId;
	_obj=getHTTPObject();
	_obj.open("POST", url, _asyncAjax);
	_obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
	_obj.onreadystatechange = recibirPagina;
	_obj.send(null); //No enviamos datos
	}
}

/*

  Recibir Pagina - Recibe la página solicitada por Ajax y la incluye en el Div


*/
function recibirPagina(){
	var respuesta="";

	if (_obj.readyState==4)
	{
		respuesta=_obj.responseText;
		//alert(respuesta);

		if(_elementId!='') 
		{
			document.getElementById(_elementId).innerHTML = respuesta;
			_elementId='';
		}
	}

	_swAjax=false;
}

