//********************************************************//
//源码由网上搜集得来。经zzq000@gmail.com整理优化而成产品  //
//文件名：AjaxClass.js   作用：通用Ajax类                 //
//********************************************************//
var Request = new function(){
this.pool = new Array();
this.getXMLHttp = function (chunnel)
{
   if(chunnel != null)
   {
      for (var a = 0; a < this.pool.length; a++)
      {
         if(this.pool[a]["chunnel"] == chunnel)
         {
	        if(this.pool[a]["obj"].readyState == 0 || this.pool[a]["obj"].readyState == 4)
            {
               return this.pool[a]["obj"];
            }
	        else 
	        {
               return "busy";
	        }

         }
      }
      this.pool[this.pool.length] = new Array();
      this.pool[this.pool.length - 1]["obj"] = this.createXMLHttp();
      this.pool[this.pool.length - 1]["chunnel"] = chunnel;
      return this.pool[this.pool.length - 1]["obj"];
   }
   for (var i = 0; i < this.pool.length; i++)
   {
      if(this.pool[i]["obj"].readyState == 0 || this.pool[i]["obj"].readyState == 4)
      {
         return this.pool[i]["obj"];
      }
   }
   this.pool[this.pool.length] = new Array();
   this.pool[this.pool.length - 1]["obj"] = this.createXMLHttp();
   this.pool[this.pool.length - 1]["chunnel"] = "";
   return this.pool[this.pool.length - 1]["obj"];
}


this.createXMLHttp = function ()
{
   //开始初始化XMLHttpRequest 对象
   if(window.XMLHttpRequest)//Mozilla 浏览器
   {
      var xmlObj = new XMLHttpRequest();
   } 
   else // IE 浏览器
   {
      var MSXML = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
      for(var n = 0; n < MSXML.length; n++)
      {
         try
         {
            var xmlObj = new ActiveXObject(MSXML[n]);//高度兼容低版本IE
            break;
         }
         catch(e){}
      }
   } 
   return xmlObj;
}


this.reSend = function (url,data,callback,extra,chunnel)
{
   var objXMLHttp = this.getXMLHttp(chunnel) ;
 
   if(typeof(objXMLHttp) != "object")
   {
      return false ;
   }

   if(data == "")
   {
      objXMLHttp.open('GET' , url, true);
	  objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache
      objXMLHttp.send('');
   }
   else 
   { 
      objXMLHttp.open('POST' , url, true);
	  objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache
      objXMLHttp.setRequestHeader("Content-Length",data.length); 
      objXMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      objXMLHttp.send(data);
   }
 
   if(typeof(callback) == "function" )// 处理返回信息的函数
   {
      objXMLHttp.onreadystatechange = function ()
      {
         if(objXMLHttp.readyState == 4)// 判断对象状态
         {
            if(objXMLHttp.status == 200 || objXMLHttp.status == 304)// 信息已经成功返回，开始处理信息
            {
               if(extra != null)
			   {
			      callback(objXMLHttp,extra) ;
			   }
			   else
			   {
			      callback(objXMLHttp) ;
			   }
            }
          //else
          //{
          //   alert("加载页面时出错 \n" + objXMLHttp.status + ":" + objXMLHttp.statusText);//页面不正常
          //}
         }
      }
   }

}

}
