﻿<!--
function ajax(args){
	// 是否为IE
	this.IsIE		= false;
	// 信息显示对像ID
	this.msgboxid		= "MsgBox_";
	this.msgboxidopacity	= 100;
	// 错误字符串
	this.errors 		= null;
	// 错误事件驱动,当发生错误时触发
	this.interror 		= null;
	// 状态事件驱动,当状态改变时触发
	this.stateinfo 		= null;
	// 完成事件驱动,当类操作完成时触发
	this.succecshow 	= null;

	// 错误显示容器
	this.objerror		= null;
	// 状态显示容器
	this.objstat 	= null;
	// 完成显示容器
	this.objsuccecshow 	= null;

	// XMLHTTP 发送数据类型 GET 或 POST
	this.method		= "GET";
	// 将要获取的URL地址
	this.targeturl		= null;
	// 指定同步或异步读取方式(true 为异步,false 为同步)
	this.actiontype		= true;
	// 当method 为 POST 时 所要发送的数据
	this.postdatas		= null;
	// 页面编码
	this.charset		= "utf-8";
	// 返回读取完成后的数据
	this.RetData 		= null;

	// 创建XMLHTTP对像
	this.HttpObj 		= this.createXMLHttpRequest();
	if(this.HttpObj == null){
		// 对像创建失败时中止运行
		return;
	}

	if(navigator.userAgent.indexOf('MSIE')!==-1){
		this.IsIE = true;
	}

	// 获取参数
	if(args){
		var iargs = eval(args);
		// 获取事件与事件容器
		if(iargs.Events){
			
			// 获取OnError事件
			if(iargs.Events[0].interror){
				this.interror		= iargs.Events[0].interror;
			}
			// 获取OnState事件
			if(iargs.Events[0].stateinfo){
				this.stateinfo		= iargs.Events[0].stateinfo;
			}
			// 获取OnDownloadEnd事件
			if(iargs.Events[0].succecshow){
				this.succecshow	= iargs.Events[0].succecshow;
			}
		}

		// 获取容器
		if(iargs.Vessels){			
			// 获取Error容器
			if(document.getElementById(iargs.Vessels[0].objerror)){
				this.objerror 	= document.getElementById(iargs.Vessels[0].objerror);
			}
			// 获取State容器
			if(document.getElementById(iargs.Vessels[0].objstat)){
				this.objstat 	= document.getElementById(iargs.Vessels[0].objstat);
			}
			// 获取DownloadEnd容器
			if(document.getElementById(iargs.Vessels[0].objsuccecshow)){
				this.objsuccecshow	= document.getElementById(iargs.Vessels[0].objsuccecshow);
			}
		}


		// 获取请求参数
		if(iargs.Sender){
			if(iargs.Sender[0].Method){
				this.method	= iargs.Sender[0].Method;
			}

			if(iargs.Sender[0].targeturl){
				this.targeturl	= iargs.Sender[0].targeturl;
			}

			if(iargs.Sender[0].actiontype){
				this.actiontype	= iargs.Sender[0].actiontype;
			}

				
			if(iargs.Sender[0].postdatas){
				this.postdatas	= iargs.Sender[0].postdatas;
			}

			if(iargs.Sender[0].charset){
				this.charset	= iargs.Sender[0].charset;
			}

			var RxURL = /^http:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?$/;
			if(RxURL.test(this.targeturl)){
				this.send();
			}
		}

	}

	var Obj = this;
	// 调用事件检测
	this.HttpObj.onreadystatechange = function(){
		ajax.handleStateChange(Obj);
	}
}

// 信息显示
ajax.prototype.MsgBox = function(strMsg){
	var Msg = "<table id=\""+ this.msgboxid +"\" style=\"width: 100%;height: 100%;background-color: #ffffff;border: 0px solid #a9a9a9;color: #c0c0c0;font-size:12px;text-align: center;filter:alpha(opacity=100);\">";
	    Msg+= "<tr><td align=\"center\">"+ strMsg + "</td></tr>";
		Msg+= "</table>";
	return Msg;
}


// 创建XMLHTTP对像
ajax.prototype.createXMLHttpRequest = function()
{
	if (window.XMLHttpRequest) 	{ 
		//Mozilla 浏览器
		return new XMLHttpRequest();
	}else if (window.ActiveXObject)	{
        	var msxmls = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');
        	for (var i = 0; i < msxmls.length; i++){
                	try{
                      return new ActiveXObject(msxmls[i]);
                	}catch (e){}

		}
	}
    	return null;
}

// 发送HTTP请求
ajax.prototype.send = function(){

	this.msgboxid = this.msgboxid + ((new Date()).getTime()).toString();

	if(this.HttpObj == null)	{
		// 对像创建失败时中止运行
		this.errors = ajaxtips['norequest'];
		// 响应到错误事件
		if(this.interror){
			this.interror(this.errors);
		}
		// 响应到错误容器
		if(this.objerror){
			this.objerror.innerHTML = this.MsgBox(this.errors);
		}
		return;
	}

	if (this.HttpObj !== null)	{
		if(this.targeturl.indexOf("?") != -1){
			this.targeturl = this.targeturl + "&t=" + new Date().getTime();
		}else{
			this.targeturl = this.targeturl + "?t=" + new Date().getTime();
		}
		this.HttpObj.open(this.method, this.targeturl, this.actiontype);
		if(this.HttpObj.overrideMimeType){
			this.HttpObj.overrideMimeType("text/html;charset=" + this.charset + ";");
		}
		if(this.method.toLocaleUpperCase() == "GET"){
			this.HttpObj.send(null);
		}else if(this.method.toLocaleUpperCase() == "POST"){
			this.HttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			this.HttpObj.send(this.postdatas);
		}else{
			this.errors = ajaxtips['methoderror'];
			// 响应到错误事件
			if(this.interror){
				this.interror(this.errors);
			}
			// 响应到错误容器
			if(this.objerror){
				this.objerror.style.display = "block";
				this.objerror.innerHTML = this.MsgBox(this.errors);
			}
			return;
		}

	}

}

// 取得状态
ajax.prototype.GetState = function(State){
	var StateValue = null;
	switch (State)	{
   		case 0:
		StateValue = ajaxtips['initing'];
		break;
   		case 3:
		StateValue = ajaxtips['reading'];
		break;

   		case 4:
		StateValue = ajaxtips['readok'];
		break;

   		default: 
		StateValue = ajaxtips['notinitialized'];
		break;
	}
	return (StateValue);
}

// 事件检测
ajax.handleStateChange = function(Obj){
	var StateStr = Obj.GetState(Obj.HttpObj.readyState);
	// 响应到状态事件
	if(Obj.stateinfo){
		Obj.stateinfo(StateStr);
	}
	// 响应到状态容器
	if(Obj.objstat){
		Obj.objstat.style.display = "block";
		Obj.objstat.innerHTML = Obj.MsgBox(StateStr);
	}

	if (Obj.HttpObj.readyState == 4)	{
		// 判断对象状态
           if (Obj.HttpObj.status == 200){ 

				Obj.RetData = Obj.HttpObj.responseText;
		
			// 响应到DownloadEnd事件
			if(Obj.succecshow){
				Obj.succecshow(Obj.RetData);
			}
			// 响应到DownloadEnd容器
			if(Obj.objsuccecshow){

				Obj.objerror.style.display = "none";
				Obj.objstat.style.display = "none";
				Obj.objsuccecshow.style.display = "block";
				Obj.objsuccecshow.innerHTML = Obj.RetData;
			}
                        return;
                }else{ 
			Obj.errors = ajaxtips['pageerror'];
			// 响应到错误事件
			if(Obj.interror){
				Obj.interror(Obj.errors);
			}
			// 响应到错误容器
			if(Obj.objerror){
				Obj.objerror.style.display = "block";
				Obj.objerror.innerHTML = Obj.MsgBox(Obj.errors);
			}
			return;
		}
	}
}
//-->