// JavaScript Document
/*
 * Usage:
 * create Object:
 * myAjax = new Ajax("url.xml", "var1=value1");
 * 
 * définir ces events handlers:
 * myAjax.handleResponse = function()
 * {
 *  	alert(this.response);
 * }
 * myAjax.onError = function()
 * {
 * 		alert("Ajax Error!");
 * }
 * 
 * lancer la requête:
 * myAjax.getResults()
*/
function Ajax(xmlFile, vars)
{
	this.response = false;
	this.xhr = false;
	this.xmlFile = xmlFile;
	this.vars = vars;
	this.getResults = getResults;
	this.setVars = setVars;
	this.setXmlFile = setXmlFile;
	this.handleResponse = handleResponse;
	this.onError = onError;
	
	if(window.ActiveXObject)
	{
		this.xhr = new ActiveXObject("Microsoft.XMLHTTP");	
	}
	else if(window.XMLHttpRequest)
	{
		this.xhr = new XMLHttpRequest();
		this.xhr.overrideMimeType('text/xml');
	}
}

function getResults()
{
	var xhr = this.xhr;
	var ajax = this;
	if(xhr)
	{
		xhr.open("POST", this.xmlFile, true);
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.setRequestHeader("Content-length", this.vars.length);
		xhr.setRequestHeader("Connection", "close");
		xhr.send(this.vars);
		xhr.onreadystatechange = function()
		{
			if(xhr.readyState == 4 && xhr.status == 200)
			{
				ajax.response = xhr.responseXML;
				ajax.handleResponse();
			}
			else if(xhr.readyState == 4 && xhr.status != 200)
			{
				ajax.onError();
			}
		}
	}
}
function setVars(vars)
{
	this.vars = vars;	
}
function setXmlFile(url)
{
	this.xmlFile = url;	
}
function handleResponse(){}
function onError(){}