﻿// JScript 文件

// ============ ajaxClass ( XMLHttp Object Pool and XMLHttp chunnel Pool ) ============

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,extra,chunnel,isasync)
{
   var objXMLHttp = this.getXMLHttp(chunnel) ;
 
   if(typeof(objXMLHttp) != "object")
   {
      return false ;
   }

   if(isasync==null)
        isasync=true;
  
   if(data == "")
   {
      objXMLHttp.open('GET' , url, isasync);
	  objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache
      objXMLHttp.send('');
   }
   else 
   { 
      objXMLHttp.open('POST' , url, isasync);
	  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(isasync){
       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("Error loading page\n" + objXMLHttp.status + ":" + objXMLHttp.statusText);
    //          }
             }
          }
       }
    }else{
       if(typeof(callback) == "function" )
       {
                if(objXMLHttp.status == 200 || objXMLHttp.status == 304)
                {
                   if(extra != null)
			       {
			          callback(objXMLHttp,extra) ;
    			      
			       }
			       else
			       {
			          callback(objXMLHttp) ;
    			     
			       }
                }
    //            else
    //          {
    //             alert("Error loading page\n" + objXMLHttp.status + ":" + objXMLHttp.statusText);
    //          }
       }  
    }

}

}
