/*
	Créer un objet XMLHTTPREQUEST en fonction du navigateur
*/
function ajaxGetXMLHTTP()
{
	var xhr = null;
	
	if(window.XMLHttpRequest)
	{
		xhr = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		try 
		{
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) 
		{
			try 
			{
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e1) 
			{
				xhr = null;
			}
		}
	}
	else 
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	}
	
	return xhr;
}
/*
	Effectuer une requête AJAX et écrire le résultat dans le div avec pour id le param div
*/
function ajaxQuery(query, div, data)
{
	var xhr_object = ajaxGetXMLHTTP(); 

	xhr_object.open("POST", query, true); 
	 
	xhr_object.onreadystatechange = function() 
	{ 
		if(xhr_object.readyState == 4) 
		{
			$(div).innerHTML = xhr_object.responseText;
		}
	} 

	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr_object.send(data); 
}

/*
	Effectuer une requête AJAX et ne pas attendre de résultat
*/
function ajaxQuerySend(query, data)
{
	var xhr_object = ajaxGetXMLHTTP(); 

	xhr_object.open("POST", query, true);
	
	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr_object.send(data); 
}

/*
	Effectuer une requête AJAX et appeler un fonction avec comme argument le résultat
*/
function ajaxQueryCallback(query, callback, data)
{
	var xhr_object = ajaxGetXMLHTTP(); 

	xhr_object.open("POST", query, true); 
	 
	xhr_object.onreadystatechange = function() 
	{ 
		if(xhr_object.readyState == 4) 
		{
			eval(callback+'("'+xhr_object.responseText+'")');
		}
	} 

	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr_object.send(data); 
}

/*
	Formater les donnés d'un formulaire en chaîne d'url pour les envoyer par AJAX
*/
function ajaxFormData(form)
{
	var data = "";
	
	for(i=0; i<form.elements.length; i++)
	{
		switch(form.elements[i].type)
		{
			case "checkbox":
				if(form.elements[i].checked == true)
					data += form.elements[i].name+"=true&";
				break;
				
			case "submit":
				break;
				
			case "button":
				break;
				
			case "radio":
				if(form.elements[i].checked == true)
					data += form.elements[i].name+"="+form.elements[i].value+"&";
					break;
				
			default:
				data += form.elements[i].name+"="+form.elements[i].value+"&";
				break;
		}
	}
	
	return data;
}