var ajax ={};
ajax.xhr ={};

ajax.xhr.Request =function(url,params,callback,method){
	this.url =url;
	this.params =params;
	this.callback =callback;
	this.method =method;
	this.send();
}

ajax.xhr.Request.prototype ={
	getXMLHttpRequest:function(){
		if(window.ActiveXObject){
			try{
				return new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					return new ActiveXObject("Microsoft.XMLHTTP");
				}catch(e1){
					return null;
				}
			}
		}else if(window.XMLHttpRequest){
			return new XMLHttpRequest();
		}else{
			return null;
		}
	},
	send:function(){
		this.req =this.getXMLHttpRequest();

		var httpMethod =this.method?this.method:'GET';
		if(httpMethod !='GET' && httpMethod !='POST'){
			httpMethod ='GET';
		}
		var httpParams =(this.params ==null || this.params =='') ? null : this.params;
		var httpUrl =this.url;
		if(httpMethod =='GET' && httpParams != null){
			httpUrl =httpUrl + "?" + httpParams
		}
		this.req.open(httpMethod,httpUrl,true);
		this.req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		var request =this;
		this.req.onreadystatechange =function(){
			request.onStateChange.call(request);
		}
		this.req.send(httpMethod =='POST' ? httpParams : null);
	},
	onStateChange:function(){
		this.callback(this.req);
	},
	ajaxError:function(errstatus){
		alert("¿¡·¯ : " +errstatus);
	}
}
