
/*clase Ajax, permite trabajar en ajax como un objeto
Metodos: 
	procesar(string data, obj funcion,string url,string type);  envia una peticion al servidor y retorna un xml a la funcion enviada como parametro
	Parametros: 
		data: formulario serializado en urlencode
		funcion: funcion encargada de procesar la respuesta del servidor
		url: url del archivo a consultar en el servidor
		type = xml o text, la respuesta que devuelve
	*/
		
function Ajax(){
	this.procesar = procesar;
	this.procSync = procSync;
	this._showLoading = _showLoading;
	this._delLoading = _delLoading;
	
	
	}

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 procSync(data,url,type){
	_this = this;
	//alert("arregla lo de post");
	_this._showLoading();
	ajax = _creaAjax();
	// Preparamos la petición con parametros
	ajax.open("post",url, false);
	ajax.onreadystatechange = function(){}
	// Realizamos la petición
	ajax.setRequestHeader('Content-Type',  'application/x-www-form-urlencoded');
	ajax.send(data);
	_this._delLoading();
	// Devolvemos el resultado
	if(type=="XML")
		return ajax.responseXML;
	else 
		return ajax.responseText;

}

function procesar(data,url,obj,funcion,type){
	//realizo la peticion de la semana
	var ajax = _creaAjax();

	ajax.open("POST",url,true);
	_this = this;
	ajax.onreadystatechange = function(){
		if(ajax.readyState==1){
			
			_this._showLoading();
		}
		else if(ajax.readyState==4){
			if(ajax.status==200){
				
				_this._delLoading();
			//aki veo ke hago, llamar a una funcion especialista
				var exec;
				//alert(ajax.responseText);
				if(type=="XML")
					exec = "obj."+ funcion + "(ajax.responseXML)";
				else 
					exec ="obj." + funcion + "(ajax.responseText)";
				eval(exec);
			}
			else if(ajax.status==404){
			//crear algo ek diga 404
			}
			}
	}

	ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	ajax.send(data);
}

function _showLoading(){
	if(document.getElementById("td_ajax")!=null){
	var div = document.createElement("div");
	var img = document.createElement("img");
	div.setAttribute("id","ajaxLoading");
	img.setAttribute("src","../images/ajax-loader.gif");//ruta de la imagen	
	img.setAttribute("border","0");
	div.appendChild(img);
	document.getElementById("td_ajax").appendChild(div);
	}
}

function _delLoading(){
	if(document.getElementById("ajaxLoading")!=null)
	Element.remove("ajaxLoading");
}
