

 
/*****************************************************************************
/*	Fonction générique permettant de communiquer avec AJAX
/*		url : fichier que Ajax va appeler
/*		methode : 'post' ou 'get'
/*		params : les parametres à envoyer ('p1=v1&p2=v2' par exemple)
/*		type_reponse : à 'xml' si on veut un résultat xml, autre chose sinon
/*		fct_oncomplete : fonction a appelé quand ajax recoit le résultat
*/
function sendToAjax(url, methode, params, type_reponse, fct_oncomplete){
	if (type_reponse.toLowerCase() == 'xml') {
		var myAjax = new Request({
			url: url,
			method: methode,
			onComplete: fct_oncomplete
		}).send(params);
	}
}
	
	
/*****************************************************************************
/*	Retourne la valeur du premier noeud xml du tableau  t_elts
/*	Renvoie '' si il ya qlqch qui cloche
*/
function getNodeValue(t_elts){

	if(t_elts.length > 0 && t_elts[0].hasChildNodes() && t_elts[0].firstChild.nodeValue != '')
		return t_elts[0].firstChild.nodeValue;

	return '';
}


/*****************************************************************************
/*	Appelée pour mettre à jour un SELECT, après une requête Ajax
/*	Le XML récupéré doit être du genre:
/*		<donnees>
/*			<select>id_du_select</select>
/*			<selected_value>valeur_a_selectionner</selected_value>
/*			<mess1>message1</mess1>
/*			<mess2>message2</mess2>
/*			<options>
/*				<option>
/*					<value>valeur1</value>
/*					<text>texte1</text>
/*				</option>
/*				...
/*			</options>
/*		</donnees>
*/
function remplirSelectWithAjax(obj,xml){
		
		
	remplirSelectWithXML(
		getNodeValue(xml.getElementsByTagName('select')),
		getNodeValue(xml.getElementsByTagName('selected_value')),
		getNodeValue(xml.getElementsByTagName('mess1')),
		getNodeValue(xml.getElementsByTagName('mess2')),
		xml
	);
}
 
/**
 * Cette fonction remplit des éléments SELECT
 * Le fichier XML récupéré doit être du type:
 * <options>	--> noeud root
 * 		<option>
 * 			<value>valeur1</value>
 * 			<text>texte1</text>
 * 		</option>
 * 		...
 * </options>
 * 
 * id_select : ID de l'element SELECT à remplir
 * selected_value : valeur de l'option à sélectionner
 * mess1 : message affiché en position 0 s'il y a au moins 1 résultat
 * mess2 : message affiché en position 0 s'il n'y a aucun résultat
 */	
function remplirSelectWithXML(id_select, selected_value, mess1, mess2, xml){


	var t_option = xml.getElementsByTagName('option');
	var oSelect = $(id_select);
	var elt, stop, i;

	
	//	Je vide ma liste
	stop = oSelect.options.length;
	for(i=0; i<stop; i++)
		oSelect.options[0] = null;

	
	//	Insertion d'un texte "d'accueil"
	if (mess1!="") {
		elt = document.createElement('option');
		elt.text = (t_option.length == 0 ? mess2 : mess1);
		elt.value = '';
		elt.selected = true;
		oSelect.options[0] = elt;
	}

	//	Je remplis la liste si je peux
	if( t_option.length != 0 ){
		
		i = 1;	//	compteur dans l'élément SELECT: à 0 j'ai le texte d'accueil donc je commence à 1.
		while( i <= t_option.length ){
			elt = document.createElement('option');
			elt.text  = getNodeValue(t_option[i-1].getElementsByTagName('text')).replace(/&euro;/, '€');
			elt.value = getNodeValue(t_option[i-1].getElementsByTagName('value'));
			if( elt.value == selected_value )
				elt.selected = true;

			if (mess1 != "") {
				oSelect.options[i] = elt;
			}else{
				oSelect.options[i-1] = elt;				
			}
			i++;
		}
	}
}