//Ajax组件
//杨弥龙版权所有




var RequestXmlHttpObjs=[];
function GetPageInfoByPost(Obj,PageUrl,Params) 
	{
		try
		{
			Obj.open("POST", PageUrl, true);
			Obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			Obj.onreadystatechange =RequestComplete;
			Obj.send(Params);
		}
		catch(e)
		{
			alert(e.description)
			return false;
		}
	}
	
function GetPageByGetWithSynchronous(PageUrl)//同步Get加载
	{
		var Obj=CreateXMLHttpRequest();
			if(!Obj){return false;}
			
		try
		{
			Obj.open("GET", PageUrl, false);
			Obj.send();
			if(Obj.readyState == 4)
			{
				var RText=Obj.responseText;
				delete(Obj);
				return(RText);
			}
			else
			{
				if(!Obj.status)
				{
					delete(Obj);
					alert('无法连接指定的地址，您访问的文件可能不存在或文件中包含错误代码');
				}
				return false;
			}
		}
		catch(e)
		{
			alert(e.description)
			return false;
		}
	}

function GetPageByPostWithSynchronous(PageUrl,Params)//同步Post加载
	{
		var Obj=CreateXMLHttpRequest();
			if(!Obj){return false;}
		try
		{
			Obj.open("POST", PageUrl, false);
			Obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			Obj.send(Params);
			
			if(Obj.readyState == 4)
			{
				var RText=Obj.responseText;
				delete(Obj);
				return(RText);
			}
			else
			{
				if(!Obj.status)
				{
					delete(Obj);
					alert('无法连接指定的地址，您访问的文件可能不存在或文件中包含错误代码');
				}
				return false;
			}
		}
		catch(e)
		{
			alert(e.description)
			return false;
		}
	}


function GetPageInfoByGet(Obj,PageUrl,Params) 
	{
	try
		{
			Obj.open("GET", PageUrl, true);
			Obj.onreadystatechange =RequestComplete;
			Obj.send();
		}
	catch(e)
		{
			alert(e.description)
			return false;
		}
	}


function CreateXMLHttpRequest()
	{
		var Requestxmlhttp=false;
		try 
			{
			Requestxmlhttp = new XMLHttpRequest();
			} 
		catch (trymicrosoft)
			{
				try {
						Requestxmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
					} 
				catch(othermicrosoft)
					{
						try 
						{
						Requestxmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
						} 
						catch (failed) 
						{
						Requestxmlhttp = false;
						}
					}
			}
	if (!Requestxmlhttp){alert('初始化XMLHTTP对象失败。');return false;}
	return Requestxmlhttp;
}


function GetPage(CallBackFun,URL,Parmas,Method)
	{
	var XmlRequestObjId =Rand(new Date().getTime())
	if(!RequestXmlHttpObjs){RequestXmlHttpObjs=[]}
	RequestXmlHttpObjs[RequestXmlHttpObjs.length] = new Object();
	RequestXmlHttpObjs[RequestXmlHttpObjs.length-1].Obj=CreateXMLHttpRequest();
	if(!RequestXmlHttpObjs[RequestXmlHttpObjs.length-1].Obj){return false;}
	RequestXmlHttpObjs[RequestXmlHttpObjs.length-1].CallBackFun=CallBackFun;
	XmlRequestObjId=XmlRequestObjId+RequestXmlHttpObjs.length;
	RequestXmlHttpObjs[RequestXmlHttpObjs.length-1].Id=XmlRequestObjId;
	Method=="GET" ? GetPageInfoByGet(RequestXmlHttpObjs[RequestXmlHttpObjs.length-1].Obj,URL,Parmas):GetPageInfoByPost(RequestXmlHttpObjs[RequestXmlHttpObjs.length-1].Obj,URL,Parmas);
	return XmlRequestObjId;
	}

function RequestComplete()
	{
		var ReturnText="";
		for(var i in RequestXmlHttpObjs)
			{
				if (RequestXmlHttpObjs[i].Obj.readyState == 4)
					{
						if (RequestXmlHttpObjs[i].Obj.status == 200)
							{
								var Response =new Object();
									Response=RequestXmlHttpObjs[i].Obj.responseText;
									var Id=RequestXmlHttpObjs[i].Id;
									var CallBackFun=RequestXmlHttpObjs[i].CallBackFun
									RemoveXMLHttpObj(RequestXmlHttpObjs[i].Id)
									CallBackFun(Id,Response)
									Response=null;
									return true;
							}
						else
							if(RequestXmlHttpObjs[i].status == 404)
								{
									RemoveXMLHttpObj(RequestXmlHttpObjs[i].Id)	
									alert ("无法连接指定的地址，您访问的文件中包含错误代码。");
								}
							else if(RequestXmlHttpObjs[i].status == 403)
								{
									RemoveXMLHttpObj(RequestXmlHttpObjs[i].Id)
									alert("Ajax 运行出错,数据已经丢失");
								}

								else 
									{
										if(!RequestXmlHttpObjs[i].status)
											{
												ReturnText="无法连接指定的地址，您访问的文件可能不存在或文件中包含错误代码。"
											}
										else
											{
												ReturnText="您访问的地址中包含错误代码。"	
											}
										RemoveXMLHttpObj(RequestXmlHttpObjs[i].Id)
										alert(ReturnText);
									}
								}				
							}
		return false;
	}

function RemoveXMLHttpObj(Id)
	{
		for(var i in RequestXmlHttpObjs)
			{
				if(RequestXmlHttpObjs[i].Id==Id)
				{
					delete(RequestXmlHttpObjs[i].Obj)
					
					RequestXmlHttpObjs[i].Id=null;
					RequestXmlHttpObjs[i].CallBackFun=null;
					RequestXmlHttpObjs.splice(i,1);
				}
			}
		return true;
	}

