﻿function TripX(){}


TripX.Ajax = function(){}


TripX.Ajax.XmlHttp = function()
{
	var xmlHttpRequest = null;
	this.Method = "";				/*请求方式get|post*/
	this.IsSync = true;				/*是否采用异步请求，true|false*/   
	this.Url = "";					/*提交异步请求的url地址*/
	this.OnSucceed = "";			/*成功时要用函数*/
	this.OnFailed = "";				/*失败时调用函数*/
	this.Content = null;			/*send方法的参数*/   
	this.Readystate = -1;			/*请求的状态*/
	this.ResponseBody = null;		/*将回应信息正文以unsigned byte数组形式返回*/
	this.ResponseStream = null;		/*以Ado Stream对象的形式返回响应信息*/
	this.ResponseText = null;		/*将响应信息作为字符串返回*/
	this.ResponseXML = null;		/*将响应信息格式化为Xml Document对象并返回*/
	this.Status = -1;				/*请求的http状态码*/
	this.StatusText = null;			/*请求的响应行状态*/

	//创建HttpXMLRequest
	this.CreateXMLRequest = function()
	{
		if(window.XMLHttpRequest)
		{
			xmlHttpRequest = new XMLHttpRequest();

			if(xmlHttpRequest.overrideMimeType)
			{
				xmlHttpRequest.overrideMimeType("text/xml");
			}
		}
		else if(window.ActiveXObject)
		{
			try
			{
				xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	}

	//初始化
	this.Init = function()
	{
		this.Readystate = -1;
		this.Status = -1;
		this.CreateXMLRequest();
	}

	//发送请求
	this.Request = function()
	{

		this.Init();

		xmlHttpRequest.open(this.Method,this.Url,this.IsSync);
		if(this.Method.toLowerCase()=="post")
		{
			xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		}
		xmlHttpRequest.send(this.Content);

		if (this.IsSync)
		{
			this.SyncReadyStateChanging();
		}
		else
		{
			this.ReadyStateChanged();
		}
	}

	//取消请求
	this.Abort = function ()
	{
		xmlHttpRequest.abort();
	}

	//ReadyState变化时调用
	this.ReadyStateChanged = function()
	{
		this.Readystate = xmlHttpRequest.readystate;
  
		if (xmlHttpRequest.readyState == 4)
		{
			this.Status = xmlHttpRequest.status;
			this.StatusText = xmlHttpRequest.statusText;

			if (xmlHttpRequest.status == 200)
			{
				this.ResponseBody = xmlHttpRequest.responseBody;
				this.ResponseStream = xmlHttpRequest.responseStream;
				this.ResponseText = xmlHttpRequest.responseText;
				this.ResponseXML = xmlHttpRequest.responseXML;
				eval(this.OnSucceed);
			}
			else
			{
				eval(this.OnFailed);
			}
		}
	}

	//异步请求、ReadyState变化时调用
	this.SyncReadyStateChanging = function()
	{
		var owner = this;
		xmlHttpRequest.onreadystatechange = function()
		{
			owner.ReadyStateChanged.call(owner);
		}
	}
}
