/**
 * 创建一个XMLHttp共享池
 */ 

function XMLHttpObj(){
	this.ajaxPool = new Array;
	this.getInstance = getInstance;
	this.createAjaxObj = createAjaxObj;
	this.sendRequest = sendRequest;
}

/**
 * getInstance()
 * 初始一个XMLHttpRequest实例
 */
function getInstance(){

	//首先检查看看有空对象
	for(var i = 0 ; i < this.ajaxPool.length; i++){
		if(this.ajaxPool[i].readyState == 0 || this.ajaxPool.readyState==4)
			return this.ajaxPool[i];//如果有空对象就返回空对象
	}

	//没有空对象就创建一个ajax对象
	this.ajaxPool[this.ajaxPool.length] = this.createAjaxObj();
	return this.ajaxPool[this.ajaxPool.length-1];
}


/**
 * createAjaxObj()
 * 用于创建一个新的XMLHttpRequest对象
 * 返回一个新一xmlHttpRequest对象
 */
function createAjaxObj(){
	var tempAjaxObj = null
	if (window.XMLHttpRequest){
		//firefox 创建对象
		tempAjaxObj = new XMLHttpRequest();
	}
	else{
		//IE创建对象
		var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
        for(var n = 0; n < MSXML.length; n ++){
            try{
                 tempAjaxObj = new ActiveXObject(MSXML[n]);
                 break;
            }
            catch(e){
            }
		}
    }
	
	// Firefox部分版本可能没有readyState属性
	if (tempAjaxObj.readyState == null){
            tempAjaxObj.readyState = 0;
            tempAjaxObj.addEventListener("load", function (){
               tempAjaxObj.readyState = 4;
               if (typeof tempAjaxObj.onreadystatechange == "function"){
                        tempAjaxObj.onreadystatechange();
               }
            },  false);
	}

	return tempAjaxObj;
}

/**
 *---------------------
 * sendRequest()
 * 用于发送数据请求
 *---------------------
 * url 请求函数
 * @method 请求方式
 * @url 请求地址
 * @postPara POST方式的参数
 * @backFun 回调函数
 *
 */
function sendRequest(method,url,postPara,backFun){
	var objXMLHttp = this.getInstance();
	if(objXMLHttp.readyState == 4 || objXMLHttp.readyState == 0){
		with(objXMLHttp){
			try{
				// 加随机数防止缓存
				if (url.indexOf("?") > 0)
					url += "&randnum=" + Math.random();
				else
				   url += "?randnum=" + Math.random();
				
				open(method, url, true);

				// 设定请求编码方式
				setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
				setRequestHeader("contentType","text/html;charset=GB2312");
				//调回设置
				onreadystatechange = function (){
					if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){
						backFun(objXMLHttp);
					}
				}
				
				//发送服务器请求
				send(null);
			}
			catch(e){
				alert("发送数据出错:"+e);
			}
		}
	}
	else{
		setTimeout("sendRequest("+method+","+url+","+postPara+","+backFun+")",1000);
	}
}


var xmlHttpObj = new XMLHttpObj();