/** 
*返回:XMLHTTP,不成功返回NULL 
*功能说明:创建XMLHTTP对象 
**/ 
function create_xmlhttp(){ 
try { 
  if (window.ActiveXObject){ // IE 
   return new ActiveXObject("Microsoft.XMLHTTP"); 
  } 
  if (window.XMLHttpRequest){ // Mozilla, Safari, Other 
   return new XMLHttpRequest(); 
  } 
}catch (e){ 
  alert("对不起，您的浏览器不支持此系统的某些特性。"); 
} 
return null; 
} 
/** 
*功能说明:初始化创建XMLHTTP对象池 
*[number为初使的个数,不能超过5个] 
**/ 
function request_init(number){ 
if(parseInt(number)>5||isNaN(number)){ 
  number=5;//一般浏览器开了5个线程后就会很慢 
    } 
var pool = new Array(); 
for(var i=0;i<number;i++){ 
  var xmlhttp = create_xmlhttp(); 
        pool[i]=xmlhttp; 
} 
window.pool=pool; 
} 
/** 
*功能说明:返回以Text方式的处理XMLHTTP进程 
**/ 
function requestText(request, url, data, callback){ 
if (!request) return null; 
var method = !data ? "GET" : "POST"; 
request.onreadystatechange = function(){ 
  try{ 
   if ((4 == request.readyState) &&(200 == request.status || 304 == request.status)){ 
    callback(request.responseText, url, data); 
   } 
  }catch(e){ 
   ; 
  } 
}; 
request.open(method, url, true); 
request.setRequestHeader("Connection","Keep-Alive"); 
request.setRequestHeader("Content-Type","text/html; charset=UTF8"); 
if(method == "POST"){ 
  request.setRequestHeader("Content-Length",data.length) 
  request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
} 
request.send(data); 
return null; 
} 
/** 
*功能说明:返回以XML方式的处理XMLHTTP进程 
**/ 
function requestXML(request, url, data, callback){ 
if (!request) return null; 
var method = !data ? "GET" : "POST"; 
request.onreadystatechange = function(){ 
  try{ 
   if ((4 == request.readyState) &&(200 == request.status || 304 == request.status)){ 
    callback(request.responseXML, url, data); 
   } 
  }catch(e){ 
   ; 
  } 
}; 
request.open(method, url, true); 
request.setRequestHeader("Connection","Keep-Alive"); 
request.setRequestHeader("Content-Type","text/html; charset=UTF8"); 
if(method == "POST"){ 
  request.setRequestHeader("Content-Length",data.length) 
  request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
} 
request.send(data); 
return null; 
} 
/** 
*功能说明:不使用线程池调用xmlhttp 
*[如果flag=1为返回Text方式,如果flag=2返回XML方式] 
**/ 
function request(flag,url,data,callback){ 
    var request=create_xmlhttp(); 
if(null==request)return null; 
if(flag!=null&&flag.toLowerCase()=="xml"){ 
       requestXML(request, url, data, callback); 
} 
if(flag!=null&&flag.toLowerCase()=="text"){ 
       requestText(request, url, data, callback); 
} 
return null; 
} 
/** 
*功能说明:使用线程池,不过之前一定要初始化,一般用于单例模式 
**/ 
function request_pool(flag, url, data, callback){ 
var request=null; 
var pool=window.pool; 
for (var i=0; i<pool.length; i++){ 
  if ((0 == pool[i].readyState) || (4 == pool[i].readyState)){ 
   request=pool[i]; 
   break; 
  } 
} 
if(request==null){ 
  request=create_xmlhttp(); 
} 
if(flag!=null&&flag.toLowerCase()=="xml"){ 
       requestXML(request, url, data, callback); 
} 
if(flag!=null&&flag.toLowerCase()=="text"){ 
       requestText(request, url, data, callback); 
} 
}

var ajax={
	request:function(flag,url,data,callback){
		return request(flag,url,data,callback);
	}
}
