	function _getXmlHttp()
	{
		var xmlhttp;

		/*@cc_on
		@if (@_jscript_version >= 5)
		try{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			try{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				xmlhttp = false;
			}
		}
		@else
			xmlhttp = false;
		@end @*/

		if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
		{
			try{
				xmlhttp = new XMLHttpRequest();
			}
			catch(e){
				xmlhttp = false;
			}
		}

		return xmlhttp;
	}

	ReadyState = {
		Uninitialized: 0,
		Loading: 1,
		Loaded:2,
		Interactive:3,
		Complete: 4
	}

	HttpStatus = {
		OK: 200,
		NotFound: 404
	}

	function Request() 
	{
		this.Get = Request_get;
		this.GetNoCache = Request_get_no_cache;
		this.GetSendXml = Request_send;

		this.Use = function(){ return this._get != null }
		this.Cancel = function(){ if (this._get) this._get.abort(); }

		this._get = _getXmlHttp();
		if (this._get == null) return;
	}

	function Request_get_no_cache(url, f_change, method)
	{
		var sep = (-1 < url.indexOf("?")) ? "&" : "?";
		var newurl = url + sep + "__=" + encodeURIComponent((new Date()).toString());
		return this.Get(newurl, f_change, method);
	}

	function Request_get(url, f_change, method) 
	{
		if (!this._get) return;

		if (method == null) method = "GET";

		if (this._get.readyState != ReadyState.Uninitialized)
			this._get.abort();

		this._get.open(method, url, (f_change != null));

		if (f_change != null) {
			var _get = this._get;
			this._get.onreadystatechange = function(){f_change(_get);}
		}
		this._get.send(null);
	}

	function Request_send(url, f_change, xml, method)
	{
		if (!this._get) return;

		if ( method == null ) method = "GET";

		if (this._get.readyState != ReadyState.Uninitialized)
			this._get.abort();

		this._get.open(method, url, true);

		if (f_change != null)
		{
			var _get = this._get;
			this._get.onreadystatechange = function(){f_change(_get);}
		}
		this._get.send(xml);
	}