﻿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 ()
{
 
 if(window.XMLHttpRequest)
 {
  var xmlObj = new XMLHttpRequest();  
 } 
 else 
 {
  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]);        
    break;
   }
   catch(e)
   {
   }
  }
 } 
 
 return xmlObj;

}


this.reSend = function (url,data,callback,chunnel)
{
 var objXMLHttp = this.getXMLHttp(chunnel)
 if(typeof(objXMLHttp) != "object")
 {
   return ;
 }
 
 url += (url.indexOf("?") >= 0) ? "&nowtime=" + new Date().getTime() : "?nowtime=" + new Date().getTime();
 if(data == "")
 {
  objXMLHttp.open('GET' , url, true);
  objXMLHttp.send();
 }
 else 
 { 
  objXMLHttp.open('POST', url, true);
  objXMLHttp.setRequestHeader("Content-Length",data.length); 
  objXMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  objXMLHttp.setRequestHeader("charset","gb2312");
  objXMLHttp.send(data);  
 }

 if(typeof(callback) == "function" )
 {
  objXMLHttp.onreadystatechange = function ()
  {
   if (objXMLHttp.readyState == 4)
   {
    if(objXMLHttp.status == 200 || objXMLHttp.status == 304)
    {
     callback(objXMLHttp);
     
    }
    else
    {
     //alert("Error loading page\n"+ objXMLHttp.status +":"+ objXMLHttp.statusText);
    }
   }
  }
 }
}

}
