/*** Ajax Toolbox par Fabien Viry (FHF) 2007 ***/

/* Fonction qui r�cup�re l'ordre de l'�l�ment dans son formulaire et vide
les champs select suivant le champ select courant */

function getElementOrder(element,next)
{
	var formulaire  = element.form; // formulaire en cours
	var nom         = element.name; // nom de l'�l�ment

	for(i=0;i<formulaire.length;i++){
		if(formulaire.elements[i].name==nom){
			var order=i;
		}
	}
	
	var clean = order+next;
	
	// Vidage du champ select suivant le champ courant
	if(formulaire.elements[clean].type=="select-one"){
			formulaire.elements[clean].options.length=0;
	}
	
	return (order);

}

/* Fonction qui cr�e des options dans un champ select � partir d'une cha�ne
formatt�e avec des ";" et des "/" */

function display_options(chaine,sel)
{ 
	var options=chaine.split(";");

	sel.options.length=0;
	for(i=0;i<options.length;i++){
		var opt=options[i].split("/");
		if(opt[0]!=""){
			sel.options[sel.options.length] = new Option(opt[0],opt[1]);
		}
	}

}

// Fonction qui appelle une requete Php/MySQL en Ajax

function ajax_request(selecteur,requete,next)
{
	if(typeof(next)=="undefined"){
		next=1;
	}
	var form    = selecteur.form; // formulaire en cours
	var nomSel  = selecteur.name;
	var index   = selecteur.options[selecteur.selectedIndex].value; // item s�lectionn�
	var order   = getElementOrder(selecteur,next);
	var nextSel = form.elements[order+next];

	// appel du fichier de requ�te selon la m�thode ajax
	if(window.XMLHttpRequest){ // Firefox
		xhr_object = new XMLHttpRequest();
	}else if(window.ActiveXObject){ // Internet Explorer
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	}else{  // XMLHttpRequest non support� par le navigateur
		alert("Votre navigateur ne supporte pas cette fonction.");
		return;
	}

	xhr_object.open("GET", "/out/commun/ajax/ajax_request.php?sql="+requete+"&index="+index, false);
	xhr_object.send(null);

	// Renvoi des informations
	xhr_object.onreadystatechange = function() {
		if(xhr_object.readyState == 4){
			return(xhr_object.responseText);
		}
	}

	// Appel de la fonction d'affichage des options
	display_options(xhr_object.responseText,nextSel);
}

