
if("undefined"===typeof ajaxObjects){var ajaxObjects=[];function Ajax()
{this.callback=this.request=null;this.timerId=0;this.id=ajaxObjects.length;ajaxObjects[this.id]=this;}
Ajax.prototype.isActive=function()
{return this.timerId!=0;}
Ajax.prototype.makeGetRequest=function(url,callback,timeout)
{return this.makeRequest("GET",url,null,callback,timeout);}
Ajax.prototype.makePostRequest=function(url,parameters,callback,timeout)
{var data="";for(var name in parameters){var value=parameters[name];if(data)data+="&";data+=name+"="+encodeURIComponent(value);}
return this.makeRequest("POST",url,data,callback,timeout);}
Ajax.prototype.stop=function()
{if(this.timerId){window.clearTimeout(this.timerId);this.timerId=0;}
if(this.request){this.request.onreadystatechange=function(){};}}
Ajax.prototype.timeout=function()
{this.timerId=0;this.finished(new Error("Timeout"));}
Ajax.prototype.finished=function(error)
{this.stop();if(this.callback)this.callback(this,this.request,error);}
Ajax.prototype.makeRequest=function(type,url,parameters,callback,timeout)
{var ret=false;try{this.stop();if(null===this.request){this.request=this.createRequest();if(null===this.request){throw new Error("No se pudo crear el objeto");}}
var request=this.request;request.open(type,url,true);if(type==="GET"){request.setRequestHeader("If-Modified-Since",new Date(0));}else{request.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");request.setRequestHeader("Content-length",parameters.length);request.setRequestHeader("Connection","close");}
var $this=this;request.onreadystatechange=function(){try{if((request===$this.request)&&($this.timerId)&&(request.readyState==4)){$this.finished();}}catch(e){$this.finished(e);}};this.callback=callback;this.timerId=window.setTimeout("ajaxTimer(ajaxObjects["+this.id+"])",timeout);ret=request.send(parameters);}catch(e){this.finished(e);}
return ret;}
Ajax.prototype.createRequest=function(){var request=null;if(window.XMLHttpRequest){request=new XMLHttpRequest();if(request.overrideMimeType){request.overrideMimeType('text/html');}}else if(window.ActiveXObject){try{request=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{request=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){request=null;}}}
return request;}}