// Load XML
function loadXml(url) 
{
	if (window.XMLHttpRequest) 
	{
	  var xmlDoc=new window.XMLHttpRequest();
	  xmlDoc.open("GET",url,false);	 
	  xmlDoc.send("");
	  return xmlDoc.responseXML;
	} 
	
	else if (ActiveXObject("Microsoft.XMLDOM")) 
	{		
	  var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	  xmlDoc.async=false;
	  xmlDoc.ignoreWhite=true;
	  xmlDoc.load(url);
	  return xmlDoc;
	} 
	
	else 
	  return false;	
} 

// Sting to XML
function stringToXml(XML) 
{
	if (window.ActiveXObject) 
	{
		var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(XML);
		return xmlDoc;
	} 
	
	else if (window.XMLHttpRequest) 
	{
		var parser=new DOMParser();
		var xmlDoc=parser.parseFromString(XML,"text/xml");
		return xmlDoc;
	} 
	
	else
		return false;
}

// HTTP request
function httpRequest() {
	
	// Post
	this.post = function () 
	{	
		if (window.XMLHttpRequest) 
		{
			httpObject = new XMLHttpRequest();
			if (httpObject.overrideMimeType)
				httpObject.overrideMimeType('text/html');			
		} 
		
		else if (window.ActiveXObject) 
		{			
			try {
				httpObject = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					httpObject = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		 
		if (!httpObject)
		{
			if (typeof this.Error == "function" )
				this.Error('HTTP Request Error');
		}		  
			  
		httpObject.onreadystatechange = requestParser;
		httpObject.open('POST', this.url, true);
		httpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		httpObject.setRequestHeader("Content-length", this.parameters.length);
		httpObject.setRequestHeader("Connection", "close");
		httpObject.send(this.parameters);		
	}	
	
	// Get call
	this.get = function () 
	{	
		if (window.XMLHttpRequest) 
		{
			httpObject = new XMLHttpRequest();
			if (httpObject.overrideMimeType) 
				httpObject.overrideMimeType('text/html');			
		} 
		
		else if (window.ActiveXObject) 
		{
			try {
				httpObject = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
				   httpObject = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			 }
		}
		
		if (!httpObject) 
		{
			if (typeof this.Error == "function")
				this.Error('HTTP Request Error');			
		}
				
		httpObject.onreadystatechange = requestParser;
		httpObject.open('GET', this.url+'?'+this.parameters, true);
		httpObject.send (null);	
	}
	
	// Request parser on response
	function requestParser () 
	{	
		if (httpObject.readyState == 4) 
		{
			 if (httpObject.status == 200)
			 {
				var data = httpObject.responseText;
				
				if (instanceObject.dataType == 'xml') 
				{	
					if (typeof instanceObject.success == "function")
						instanceObject.success(stringToXml(data));				
				} 
				
				else if (instanceObject.dataType == 'json') 
				{	
					if (typeof instanceObject.success == "function")
						instanceObject.success(eval('('+data+')'));				
				}
				
				else 
				{
					if (typeof instanceObject.success == "function")
						instanceObject.success(data);					
				}
				
			} 
			
			else 
			{
				if (typeof instanceObject.error == "function")
					instanceObject.error('HTTP Response Error');				
			}
		 }
	}	
	
	// Veriables
	var instanceObject = this;
	var httpObject = false;	
	var url = '';
	var parameters = '';
	var dataType = 'text';		
} 
