Xajax=function(){this._xmlHttpRequest = null;this._parametros = null;this._errores = null;this._isText = true;this._isJson = false;this._isAjaj = false;this._AjajResponse=null;this._charset = null;this.__initialize();}
Xajax.prototype = {
PreRequest : function(){},
Error : function(){},
Callback : function(){},
__initialize : function(){
this._parametros = new Array();
this._charset = String("UTF-8");
this._xmlHttpRequest = this.__xmlHttpRequestInit();
if(this._xmlHttpRequest == null) return(false);
if(this._xmlHttpRequest.overrideMimeType) this._xmlHttpRequest.overrideMimeType('text/xml');return(true);},
__xmlHttpRequestInit : function(){var xmlHttpRequest = null;try{xmlHttpRequest = new XMLHttpRequest();}catch(seraMicrosoft){try{xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");}catch(seraViejoMicrosoft){try{xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");}catch(error){}}}return xmlHttpRequest;},
__ControlStateChange : function(){
if(this._xmlHttpRequest.readyState == 4){
if(this._xmlHttpRequest.status >= 400 && this._xmlHttpRequest.status < 500){
this.__setErrors("Error del Request / Sintaxis Incorrecta");}else if(this._xmlHttpRequest.status >= 500 && this._xmlHttpRequest.status < 600){
this.__setErrors("Error del Servidor");}
if(!this.hayError()){this.Callback();if(this._isAjaj && this._AjajResponse!=null){document.getElementById(this._AjajResponse).innerHTML=this.getRespuesta();}
}}},__Request : function(method, url, asincrono){var args="",cant;method=String(method).toUpperCase();url=String(url);this.PreRequest();if(this._parametros!=null){args = this.__ParametrosTraer();cant=this._parametros.length;}if(method == 'GET'){if(url.indexOf('?') == -1){url += '?' + args;}else if(url.indexOf('?')==url.length-1){url += args;}else if(url.indexOf('&')==url.length-1){url += args;}else{url += '&' + args;}args=null;}else if(method == 'POST'){}else{this.__setErrors("Methods soportados: GET y POST.");return;}
this._xmlHttpRequest.open(method, url, asincrono);
if(method == 'POST'){this._xmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");this._xmlHttpRequest.setRequestHeader("Content-length", cant);}var self = this;
this._xmlHttpRequest.onreadystatechange = function(){self.__ControlStateChange();}
this._xmlHttpRequest.send(args);},SendGet : function(url, asincrono){this.__Request("GET",url, asincrono);},
SendPost : function(url, asincrono){this.__Request("POST",url, asincrono);},
SendForm : function(form, url, asincrono){for(var i=0; i < form.elements.length ; i++){if(form.elements[i].name && String(form.elements[i].name)!=''){this.setParameter(form.elements[i].name,form.elements[i].value);}}this.__Request(form.method, url, asincrono);},
getRespuesta : function(){if(this.hayError()){return(this._xmlHttpRequest.status + ": " + this._errores);}else{if(this._isText || this._isAjaj){return(this._xmlHttpRequest.responseText);}else if(this._isJson){eval("var obj=" + this._xmlHttpRequest.responseText + ";");return(obj);}}},
Abort : function(){this._xmlHttpRequest.abort();},
isText : function(){this._isText = true;this._isJson = false;this._isAjaj = false;},
isJson : function(){this._isText = false;this._isJson = true;this._isAjaj = false;},
isAjaj : function(){this._isText = false;this._isJson = false;this._isAjaj = true;},
AjajResponse : function(domObjId){this._AjajResponse=domObjId;},
__ParametrosTraer : function(){var a = "";for(var i in this._parametros){if(a != "") a += "&";a += this._parametros[i].name + "=" + escape(this._parametros[i].value);}return a;},
__createParameter : function(n,v){
return({name:String(n),value:String(v)});},
setParameter : function(n,v){var pos=this._parametros.length;n=String(n);
for(var i=0;i<this._parametros.length;i++){if(this._parametros[i].name.toLowerCase()==n.toLowerCase()) pos=i;}
this._parametros[pos] = this.__createParameter(n,v);},getParameter : function(n){
for(var i=0;i<this._parametros.length;i++){if(this._parametros[i].name.toLowerCase()==n.toLowerCase()) return(this._parametros[i].value);}return(null);},
dropParameter : function(n){
for(var i=0;i<this._parametros.length;i++){
if(this._parametros[i].name.toLowerCase()==n.toLowerCase()){
var val=this._parametros[i].value;
this._parametros.splice(i,1);
return(val);}}return(null);},
clearParameters : function(){this._parametros = new Array();},
__setErrors : function(e){if(this._errores==null){this._errores=e;}else{this._errores+=e;}this.Error();},
hayError : function(){if(this._errores != null){return true;}else{return false;}},
getError : function(){return this._errores;},
clearError : function(){this._errores=null;}
}

