// JavaScript Document

function XMLProxy()
{
	this.request	= null;
	
	this.load = function(url, onComplete, postData)
	{
		var self		= this;
		var method;
		this.onComplete	= onComplete;
		this.request	= null;
		
		method = (postData)? 'POST' : 'GET';
		
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			this.request = new XMLHttpRequest();
		}
		else if (window.ActiveXObject) { // IE
			try {
				this.request = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e) {
				try {
					this.request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e) {}
			}
		}
		if (!this.request) {
			return false;
		}
		
		if(method == 'POST')
		{
			this.request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		}
	
		this.request.onreadystatechange = function() { self.onReadyStateHandler(); };
		this.request.open(method, url, true);
		this.request.setRequestHeader('User-Agent', 'XMLHTTP/1.0');
		this.request.send(postData);
	}
	
	this.onReadyStateHandler = function()
	{
		var xml;
		
		try
		{
			if(this.request.status == 200)
			{
				switch(this.request.readyState)
				{
					case 0:	//uninitialized
						break;
					case 1:	//loading
						break;
					case 2:	//loaded
						break;
					case 3:	//interactive
						break;
					case 4:	//complete
						if(typeof(this.onComplete) == 'function')
						{
							if (window.ActiveXObject) {
								xml = new ActiveXObject("Microsoft.XMLDOM");
								xml.loadXML(this.request.responseText);
							}
							else
							{
								xml = this.request.responseXML;
							}
							
							this.onComplete(xml);
							this.request = null;
						}
						break;
					default: break;
				}
			}
		}
		catch(e) {}
	}
}
