﻿/**
 * @name ajaxTools
 * @author sundongguo
 * @version 20080606
 */
function encode(value)
{
	return value.replace(/#/g,"#35;").replace(/%/g,"#37;").replace(/&/g,"#38;").replace(/\+/g,"#43;");
}

function getTextString(string)
{
	return string.replace(/#10;/g,"\n").replace(/#39;/g,"'").replace(/#92;/g,"\\");
}

function getXHTMLString(string)
{
	return string.replace(/`/g,"&#96;").replace(/&/g,"&#38;").replace(/</g,"&#60;").replace(/>/g,"&#62;").replace(/"/g,"&#34;").replace(/#39;/g,"&#39;").replace(/#92;/g,"&#92;").replace(/ /g,"&#160;").replace(/\t/g,"&#160;&#160;&#160;&#160;").replace(/#10;/g,"<br/>");
}

var loading=
{
	show:function()
	{
		var elLoading=document.getElementById("loading_0");
		togglePopup("loading_0");
		setMaskBehind(elLoading);
	},
	hide:function()
	{
		var elLoading=document.getElementById("loading_0");
		togglePopup("loading_0");
		setMaskBehind();
	}
};

var proxy=
{
	run:function(target,requestURI,parameter)
	{
		try
		{
			target.messenger=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
			error.show("运行时错误-proxy","XMLHttpRequest对象创建失败，系统无法正常运行！#10;提示：请检查浏览器设置。",target.$error==null?$null:target.$error,null);
			return;
		}
		target.messenger.onreadystatechange=function()
		{
			function dataReady()
			{
				if(responseData.error)
				{
					if(responseData.error=="401")
					{
						togglePopup("pop1_4");
						return;
					}
					if(typeof target.onError=="function")target.onError(responseData.error);
				}
				else
				{
					target.onDataReady(responseData);
				}
			}
			var responseData="";
			if(target.messenger.readyState==4)
			{
				try
				{
					switch(target.messenger.status)
					{
						case 0:
							throw new Error();
							break;
						case 200:
							try
							{
								responseData=eval("("+target.messenger.responseText+")");
							}
							catch(e)
							{
								responseData={error:"无法解析返回数据！#10;返回数据：#10;#10;"+target.messenger.responseText};
							}
							break;
						case 400:
							responseData={error:"请求被拒绝！"};
							break;
						case 401:
							responseData={error:"401"};
							break;
						case 404:
							responseData={error:"找不到该服务！"};
							break;
						case 500:
							responseData={error:"服务器内部错误！"};
							break;
						case 12029:
							responseData={error:"无法连接到服务器！#10;可能服务器正在重启，请稍后再试。"};
							break;
						default:
							responseData={error:"请求失败！#10;代码："+target.messenger.status};
					}
				}
				catch(exception)
				{
					responseData={error:"请求被取消！"};
				}
				delete target.messenger;
				dataReady();
			}
		};
		if(parameter==null)
		{
			target.messenger.open("get",requestURI,true);
			target.messenger.send(null);
		}
		else
		{
			target.messenger.open("post","/services"+requestURI,true);
			target.messenger.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
			target.messenger.send(parameter);
		}
	},
	abort:function(target)
	{
		if(target.messenger!=null)target.messenger.abort();
	}
};

