
//Ajax组件
//杨弥龙版权所有

function CreateXmlHttpRequestObj()
{
	var XmlHttpRequestObj=false;
	try 
	{
		XmlHttpRequestObj=new ActiveXObject("Msxml2.XMLHTTP.6.0");
	} 
	catch (trymicrosoft)
	{
		XmlHttpRequestObj = new XMLHttpRequest();
	}
	return XmlHttpRequestObj;
}

function Ajax(CallbackFun)
{
		var AjaxObj={};
			AjaxObj.Id=Rand(new Date().getTime());
			//AjaxObj.XmlHttpObj;
			AjaxObj.CallbackFun=CallbackFun;
			AjaxObj.ReturnbeforOK=false;
			AjaxObj.Post=function(Url,Params)
			{
				if(!AjaxObj.CallbackFun)
				return false;
				if(AjaxObj.XmlHttpObj){return false;}
				AjaxObj.Refresh();
				if(!AjaxObj.XmlHttpObj){return false;}
				try
				{
					AjaxObj.XmlHttpObj.open("POST",Url, true);
					AjaxObj.XmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
					AjaxObj.XmlHttpObj.onreadystatechange =AjaxObj.RequestComplete;
					AjaxObj.XmlHttpObj.send(Params);
				}
				catch(e)
				{
					AjaxObj.Delete();
					return false;
				}
			}
			AjaxObj.Get=function (Url) 
			{
				if(!AjaxObj.CallbackFun)
				return false;
				if(AjaxObj.XmlHttpObj){return false;}
				AjaxObj.Refresh();
				if(!AjaxObj.XmlHttpObj){return false;}
				try
				{
					AjaxObj.XmlHttpObj.open("GET",Url, true);
					AjaxObj.XmlHttpObj.onreadystatechange =AjaxObj.RequestComplete;
					AjaxObj.XmlHttpObj.send();
					}
				catch(e)
					{
						AjaxObj.Delete();
						return false;
					}
			}
			AjaxObj.SynchronousPost=function(Url,Params)
			{
				if(AjaxObj.XmlHttpObj){return false;}
				AjaxObj.Refresh();
				if(!AjaxObj.XmlHttpObj){return false;}
				try
				{
					AjaxObj.XmlHttpObj.open("POST", Url, false);
					AjaxObj.XmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
					AjaxObj.XmlHttpObj.send(Params);
					if (AjaxObj.XmlHttpObj.readyState == 4)
					{
						if(AjaxObj.ReturnbeforOK||AjaxObj.XmlHttpObj.status==200)
						{
							var Response={};
							AjaxObj.ResponseText=AjaxObj.XmlHttpObj.responseText;
							Response.Text=AjaxObj.XmlHttpObj.responseText;
							Response.Status=AjaxObj.XmlHttpObj.status;
							Response.ReadyState=AjaxObj.XmlHttpObj.readyState;
							Response.AjaxObjId=AjaxObj.Id;
							AjaxObj.Delete();
							return (Response)
							
						}
						else
						{
							//alert(AjaxObj.XmlHttpObj.status);
							if(typeof(AjaxObj.XmlHttpObj.status)=="undefined")
							{
								AjaxObj.Delete();
								return false;
							}
						}
					}
				}
				catch(e)
				{
					AjaxObj.Delete();
					return false;
				}
			}
			
			AjaxObj.SynchronousGet=function(Url)
			{
				if(AjaxObj.XmlHttpObj){return false;}
				AjaxObj.Refresh();
				if(!AjaxObj.XmlHttpObj){return false;}
				
				try
				{
					AjaxObj.XmlHttpObj.open("GET",Url, false);
					AjaxObj.XmlHttpObj.send();
					if (AjaxObj.XmlHttpObj.readyState == 4)
					{
						if(AjaxObj.ReturnbeforOK||AjaxObj.XmlHttpObj.status==200)
						{
							var Response={};
							
							Response.Text=AjaxObj.XmlHttpObj.responseText;
							Response.Status=AjaxObj.XmlHttpObj.status;
							Response.ReadyState=AjaxObj.XmlHttpObj.readyState;
							Response.AjaxObjId=AjaxObj.Id;
							AjaxObj.Delete();
							return (Response)
							
						}
						else
						{
							if(typeof(AjaxObj.XmlHttpObj.status)=="undefined")
							{
								AjaxObj.Delete();
								return false;
							}
						}
					}
				}
				catch(e)
				{
					AjaxObj.Delete();
					return false;
				}
			}
			
			AjaxObj.RequestComplete=function()
			{
				
				
				if (AjaxObj.XmlHttpObj.readyState == 4&&AjaxObj.CallbackFun)
				{
					if(AjaxObj.ReturnbeforOK||AjaxObj.XmlHttpObj.status==200)
					{	
						var Response={};
						AjaxObj.ResponseText=AjaxObj.XmlHttpObj.responseText;
						Response.Text=AjaxObj.XmlHttpObj.responseText;
						Response.Status=AjaxObj.XmlHttpObj.status;
						Response.ReadyState=AjaxObj.XmlHttpObj.readyState;
						Response.AjaxObjId=AjaxObj.Id;
						AjaxObj.CallbackFun(Response)
						AjaxObj.Delete();
					}
					else
					{
						if(typeof(AjaxObj.XmlHttpObj.status)=="undefined")
						{
							AjaxObj.Delete();
							return false;
						}
					}
				}
			}
			AjaxObj.Delete=function()
			{
				delete(AjaxObj.XmlHttpObj);
				
			}
			AjaxObj.Refresh=function()
			{
				AjaxObj.XmlHttpObj=CreateXmlHttpRequestObj();
				if(!AjaxObj.XmlHttpObj)
				return false;
			}
	return AjaxObj;
}
