/*  
	File : Ajax.js
	Class: Ajax
	Desc : 封装XMLHttpRequest
	Date : 2007/08/21
	By   : zhangping
	
	完整用法示例:	
		var url = '/myservlet.jsp'; 
		var options = {
			method:'post', 						//请求方法	default: post
			params:'p1=abc&p2=def',				//请求体	default: null
			asyn: true,							//是否异步	default: true
			container: 'myDivId', 				//更新内容的html容器id名
			onComplete: function(transport){	//回调函数
				alert(transport.responseText);
			}, 						
			onException: function (e){			//异常处理函数
				throw(e);
			}
		};			
		Ajax.dispatch(url, options);			//发送请求
		
	简单用法示例:	
		//更新html容器的内容，即将请求返回的文本直接填充到指定容器
		Ajax.dispatch('/myservlet.jsp', {params:'p1=abc&p2=def',container: 'myDivId'});
		 
		//使用回调函数处理返回结果
		Ajax.dispatch('/myservlet.jsp', {params:'p1=abc&p2=def',onComplete: myCallbackFunction});
		function myCallbackFunction(transport){ alert(transport.responseText); };

*/

var Ajax = new Object();
//function Ajax(){};
Ajax.dispatch = function(url, options){
	var self = this;
	self.asyn = options.asyn || true;
	self.method = options.method || 'post';
	self.params = options.params || null;
	self.container = options.container || null;
	self.onComplete = options.onComplete || null;
	self.onException = options.onException || null;
	
		
	
	
	self.getTransport = function(){
		if (window.ActiveXObject) return new ActiveXObject('Microsoft.XMLHTTP');
		else if (window.XMLHttpRequest) return new XMLHttpRequest();
		else return false;
	}
	
	self.dispatch1 = function(){
		self.transport.open(self.method, url, self.asyn);
		self.transport.onreadystatechange = self.onStateChange;
		if (self.method == 'post') {
			self.transport.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
			if (self.transport.overrideMimeType) self.transport.setRequestHeader('Connection', 'close');
		}
		
		self.transport.send(self.params);	
		
	}
	
	self.onStateChange = function(){		
		if (self.transport.readyState == 4 && self.transport.status == 200) {			
			if (self.onComplete) setTimeout(function(){self.onComplete(self.transport);}, 10);
			if (self.container)  setTimeout(function(){document.getElementById(self.container).innerHTML = self.transport.responseText;}, 10);
			self.transport.onreadystatechange = function(){};
		}
		
	}
			
	try { 
		self.transport = self.getTransport(); 
		self.dispatch1(); 
		
	}catch(e) { 
		if(self.onException) self.onException(e); 
	}	
};


