function Ajax()
{
	this.ajax=null;
	try{
		this.ajax=new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			this.ajax=new ActiveXObject("Microsoft.XMLHTTP"); 
		}catch(e){
			this.ajax=null;
		}
	}
	
	if (this.ajax==null && typeof XMLHttpRequest!='undefined') {
  		this.ajax = new XMLHttpRequest();
	}
	this.params=new Array();
};

//根据id取页面对象
function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  element = document.getElementById(element);
  return element;
}

var _aj = Ajax.prototype;


_aj.setServer = function (server){
	this.server=server;
	//this.server='index.php';
};


_aj.setParam = function (name,value){
	var obj = new Array();
	obj[0]=name;
	obj[1]=encodeURIComponent(value);
	this.params.push(obj);
};


_aj.getPostString = function (){
	var str = "";
	for(var i=0;i<this.params.length;i++){
		var param = this.params[i];
		str+=param[0]+"="+param[1];
		if(i!=this.params.length-1){
			str+="&";
		}
	}
	//str+="&"+Math.random();
	str+="&"
	return str;
};


_aj.getGetString = function (){
	var str = this.getPostString();
	if(str.length>0){
		return this.server+"&"+str;
	}else{
		return this.server;
	}
};


_aj.sendByGet = function (returnType,asyn){
	this.returnType = returnType;
	var req = this.getGetString();
	this.ajax.open("GET",req,asyn);
	if(asyn){
		this.ajax.onreadystatechange = this.stateChange.bind(this);
	}
	try{
		this.ajax.send(null);
	}catch(e){
		alert("connect failed");
	}
};

_aj.setCallback = function (cb){
	this.cb=cb;
}

_aj.sendByPost = function (returnType,asyn){
	this.returnType = returnType;
	var req = this.server;
	var param = this.getPostString();
	this.ajax.open("POST",req,asyn);
	this.ajax.setRequestHeader("content-length",param.length); 
	this.ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");

	if(asyn){
		this.ajax.onreadystatechange = this.stateChange.bind(this);
	}
	
	try{
		this.ajax.send(param);
		
	}catch(e){
		alert("connect failed");
	}
};


_aj.stateChange = function (){
	var state = this.ajax.readyState;

	if(state==4){
		var rType = this.returnType;
		//0：ajax.responseText
		//1：ajax.responseXML
		if(rType==0){
			if(this.cb!=null)
				this.cb(this.ajax.responseText);
		}else if(rType==1){
			if(this.cb!=null)
				this.cb(this.ajax.responseXML);
		}
	}	
};