﻿var WAQOO=function(){if(typeof arguments[0]=='function'){window.onload=arguments[0]}};
WAQOO.Ajax={
	ajaxPool:new Array,
	Create:function(){
			var ajaxObj = null;
			if (window.XMLHttpRequest){ ajaxObj = new XMLHttpRequest();}
			else{
				var MSXML = ['MSXML2.XMLHTTP.6.0', '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{ajaxObj = new ActiveXObject(MSXML[n]);break;}catch(e){}
				}
			}	
			return ajaxObj;
		},
		
	Init:function(){				
			for(var i = 0 ; i < this.ajaxPool.length; i++){
				if(this.ajaxPool[i].readyState == 0 || this.ajaxPool.readyState==4){return this.ajaxPool[i];}					
			}			
			this.ajaxPool[this.ajaxPool.length] = this.Create();
			return this.ajaxPool[this.ajaxPool.length-1];
		},
		
	setMet:function(arg){
			var met=arg.length==1?"GET":"POST";
			var type = typeof arg[1];//undefined
			if(type=='undefined')return met;
			if(typeof arg[arg.length-1]=='boolean'){this.async=arg[arg.length-1];}
			if(arg.length==2){
				if(type=='function'){met="GET";this.backCall=arg[1];}
				else{if(type=='string'){met=arg[1].toUpperCase();}}
			}else if(arg.length>2){
				if(type=='function'){met="GET";this.backCall=arg[1];}					
				else{met=arg[1].toUpperCase();if(typeof arg[2]=='function'){this.backCall=arg[2]};}
			}
			return met;
		},
	async:true,	
	backCall:function(ajax){alert('请求成功,未设置回调函数！')},
	errCall:function(ajax){alert('请求资源失败,服务器错误[error:'+ajax.status+']')},
/**
 * load(url,post,backCall,true)
 */		
	load:function(url){	
			var ajaxObj = this.Init();
			if (url.indexOf("?") > 0){url += "&randnum=" + Math.random();}							
			else{url += "?randnum=" + Math.random();}
			if(this.sendData!=''){url+='&'+this.sendData}		
			var met = this.setMet(arguments);
			try{
				with(ajaxObj){
					open(met, url, this.async);
					//setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
					setRequestHeader("Content-Type","application/x-www-form-urlencoded");					
					onreadystatechange = function(){	
						if(ajaxObj.readyState == 4 ){
							if(ajaxObj.status == 200 || ajaxObj.status == 304){
								WAQOO.Ajax.backCall(ajaxObj);
							}else{
								WAQOO.Ajax.errCall(ajaxObj);
							}
						}
					}
					if(met=="POST"){
						send(this.sendData);
					}else{
						send(null);
						this.sendData='';
					}
				}
			}catch(e){alert("发送数据出错:"+e);}
		},
	
	sendData:'',
	addData:function(key,val){
		if(this.sendData==''){this.sendData=key+'='+escape(val);}
		else{this.sendData+='&'+key+'='+escape(val);}
	},	
/**
 * Post(url,backCall,errFun,true)
 */		
	Post:function(url,backCall,errFun){
		var ajaxObj = this.Init();
			if (url.indexOf("?") > 0){url += "&randnum=" + Math.random();}							
			else{url += "?randnum=" + Math.random();}
			this.async = typeof(arguments[arguments.length-1])=='boolean'?arguments[arguments.length-1]:this.async;
			var data=this.sendData==''?null:this.sendData;
			try{
				with(ajaxObj){
					open("POST", url, this.async);
					setRequestHeader("Content-Type","application/x-www-form-urlencoded");					
					onreadystatechange = function(){	
						if(ajaxObj.readyState == 4 ){
							if(ajaxObj.status == 200 || ajaxObj.status == 304){
								if(typeof backCall=='function'){backCall(ajaxObj);}else{
									WAQOO.Ajax.backCall(ajaxObj);
								}
							}else{
								if(typeof errFun=='function'){errFun(ajaxObj);}
								else{WAQOO.Ajax.errCall(ajaxObj);}
							}
						}
					}
					send(data);
					this.sendData='';
				}
			}catch(e){alert("发送数据出错:"+e);}
	},
/**
 * Get(url,backCall,errFun,true)
 */		
	Get:function(url,backCall,errFun){
		var ajaxObj = this.Init();
			if (url.indexOf("?") > 0){url += "&randnum=" + Math.random();}							
			else{url += "?randnum=" + Math.random();}
			if(this.sendData!=''){url+='&'+this.sendData}
			this.async = typeof(arguments[arguments.length-1])=='boolean'?arguments[arguments.length-1]:this.async;
			try{
				with(ajaxObj){
					open("GET", url, this.async);
					setRequestHeader("Content-Type","application/x-www-form-urlencoded");					
					onreadystatechange = function(){	
						if(ajaxObj.readyState == 4 ){
							if(ajaxObj.status == 200 || ajaxObj.status == 304){
								if(typeof backCall=='function'){backCall(ajaxObj);}else{
									WAQOO.Ajax.backCall(ajaxObj);
								}
							}else{
								if(typeof errFun=='function'){errFun(ajaxObj);}
								else{WAQOO.Ajax.errCall(ajaxObj);}
							}
						}
					}
					send(this.sendData);
					this.sendData='';
				}
			}catch(e){alert("发送数据出错:"+e);}
	}

}

