/*----------------------------------------------------------------------------------------------------------------------

:: Copyright Notice ::

The following code is the intellectual property and copyright of Ayrmer Software, 2007.  All Rights Reserved.
All code in whole or part is protected under international copryright legislation and will ber enforced within 
the United Kingdom Courts.

:: website :: http://www.ayrmer.co.uk :: email :: sales@ayrmer.co.uk :: telephone (uk) :: 0845 003 1356 ::

------------------------------------------------------------------------------------------------------------------------*/

function Requester() {
	this.action = null;
	this.XML = null;
	this.commInterface = null;
	this.targetId = null
	// Initialise XMLHttpRequest object
	this.resetXMLHR();
	return true;
}



//Check if the XMLHttpRequest object is available 
Requester.prototype.isAvailable = function() {
	return (this.commInterface == null) ? false : true;
}

// Execute the action which has been associated with the completion of this object
Requester.prototype.executeAction = function() {
	// If XMLHR object has finished retrieving the data

	if (this.commInterface.readyState == 4)	{
		// If the data was retrieved successfully
		try	{
			if (this.commInterface.status == 200)	{
				this.responseText = this.commInterface.requestXML;
				this.action();
					
			}
			// IE returns status = 0 on some occasions, so ignore
			else if (this.commInterface.status != 0){
				alert("There was an error while retrieving the URL: " + this.commInterface.statusText);
			}
		}
		catch (error){}
	}
	return true;
}

// Return responseText 
Requester.prototype.getText = function() {
	return this.commInterface.responseText;
}


// Return responseXML 
Requester.prototype.getXML = function() {
	return this.commInterface.responseXML;
}

/**
 * Initialise XMLHR object and load URL 
 * @param string url 			= the page to request
 * @param string params			= any get parameters to be appended to the url
 */
Requester.prototype.loadURL = function(URL, params) {
	this.resetXMLHR();
	this.commInterface.open("GET", URL + "?" + params);
	this.commInterface.setRequestHeader("Content-Type", "text/html; charset=ISO-8859-1");
	this.commInterface.setRequestHeader('Accept-Charset','ISO-8859-1')
	this.commInterface.send(null);
	return true;
}

// Turn off existing connections and create a new XMLHR object 
Requester.prototype.resetXMLHR = function() {
	var self = this;

	if (this.commInterface != null && this.commInterface.readyState != 0 && this.commInterface.readyState != 4)	{
		this.commInterface.abort();
	}

	try	{
		this.commInterface = new XMLHttpRequest();
	}
	catch (error) {
		try {
			this.commInterface = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (error) {
			return false;
		}
	}

	this.commInterface.onreadystatechange = function()	{
		self.executeAction();
		return true;
	};
	return true;
}

// Assign the function which will be executed once the XMLHR object finishes retrieving data 
Requester.prototype.setAction = function(actionFunction,part) {
	this.action = actionFunction;
	return true;
}


