function ajaxRequest(method, url, async, data, endFunc)
{
	var xhr = null;
    if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); }
    else if(window.ActiveXObject)
    { // Internet Explorer
        try
        { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
    }
    else
    { // XMLHttpRequest non supporté par le navigateur
        alert('XMLHttpRequest non supporté par le navigateur');//ERREUR AJAX (UNSUPPORTED)
        xhr = false;
    }
	if(xhr == false) { return(null); }
	
	xhr.open(method, URL, async);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xhr.send(data);
	
	if(async)
	{
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4 && xhr.status == 200)
			{
				endFunc(xhr);
			}
		};
	}
	else if(xhr.readyState == 4 && xhr.status == 200)
	{
		endFunc(xhr);
	}
}

function inArray(aArray, aValue)
{
    for(var tour in aArray)
    {
        if(aArray[tour] == aValue) { return(true); }
    }
    return(false);
}

function triBulle(aArray, compare)
{
	var final = new Array();
	var changement = true;
	var temp1; var temp2;

	while(changement == true)
	{
		changement = false;

		for(var tour=0; tour<aArray.length-1; tour++)
		{
			if(compare(aArray[tour], aArray[tour+1]) == true)
			{
				var temp1 = aArray[tour];
				var temp2 = aArray[tour+1];
				aArray[tour+1] = temp1;
				aArray[tour] = temp2;
				changement = true;
			}
		}
	} 
	return(aArray);
}

function compareAsc(elm1, elm2)
{
	return(parseInt(elm1) > parseInt(elm2));
}

function compareDsc(elm1, elm2)
{
	return(parseInt(elm1) < parseInt(elm2));
}

/* Fonction DOM : removeAllChildren+nodeFromString */
function removeAllChildren(element) {
	while (element.firstChild) {
		element.removeChild(element.firstChild);
	}
}

function nodeFromString(text) {
	var tempNode = document.createElement('temp');
	if(navigator.userAgent.indexOf('AppleWebKit/') > -1)//Safari
	{
			tempNode.innerHTML = text;
	}
	else if(navigator.userAgent.indexOf('Gecko') > -1)//FF
	{
		var Parser = new DOMParser();

		var elm = Parser.parseFromString(text, "text/xml").firstChild;
		tempNode.appendChild(elm);
	}
	else
	{
		var doc=new ActiveXObject('Microsoft.XMLDOM');
		doc.async='false';
		doc.loadXML(text);
		tempNode.appendChild(doc.firstChild);
	}

	return(tempNode.firstChild.cloneNode(true));
}
