

 function ajaxRequest(){
	var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
	if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
	 for (var i=0; i<activexmodes.length; i++){
	  try{
	   return new ActiveXObject(activexmodes[i])
	  }
	  catch(e){
	   //suppress error
	  }
	 }
	}
	else if (window.XMLHttpRequest) // if Mozilla, Safari etc
	 return new XMLHttpRequest()
	else
  return false
}
 
function ajax_state_change(fnc_complete){
	var myrequest=new ajaxRequest()
	myrequest.onreadystatechange=function(){
	 if (myrequest.readyState==4){
	  if (myrequest.status==200 || window.location.href.indexOf("http")==-1){
	   xml = myrequest.responseText;
	   fnc_complete(null, xml);
	   //document.getElementById("result").innerHTML=myrequest.responseText
	  }else{
	   alert("An error has occured making the request")
	  }
	 }
	}
	return myrequest;
}
 
function ajax_get_request(url, params, fnc_complete){
	var mygetrequest = ajax_state_change(fnc_complete);
	
	mygetrequest.open("GET", url+"?"+params, true)
	mygetrequest.send(null)
	
}
 

function ajax_post_request(url, params, fnc_complete){
	
	mypostrequest = ajax_state_change(fnc_complete);
	
	//var namevalue=encodeURIComponent(document.getElementById("name").value)
	//var agevalue=encodeURIComponent(document.getElementById("age").value)
	
	//var parameters="name="+namevalue+"&age="+agevalue
	mypostrequest.open("POST", url, true)
	mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
	mypostrequest.send(params)

} 

/*****************************************************************************
/*	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(methode=="get"){
		ajax_get_request(url, params, fct_oncomplete);
	}else if(methode=="post"){
		ajax_post_request(url, params, 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++;
		}
	}

	oSelect.disabled = false;
}


function ajouteBienFavoris(link,idbien,label,label_remove){
	sendToAjax('ajax/requetes.php', 'post', 'action=bienFavorisListing&idbien='+idbien, 'xml',function(obj, xml){
				link.innerHTML = 'Retirer des favoris&nbsp;<img align="absmiddle" src="images/coeur_gris.png" alt="" />&nbsp;';
				link.onclick = function () {retireBienFavoris(link,idbien,label_remove,label)};
			} )
}
function retireBienFavoris(link,idbien,label,label_add){
	sendToAjax('ajax/requetes.php', 'post', 'action=bienFavorisListingRemove&idbien='+idbien, 'xml',function(obj, xml){
				link.innerHTML = 'Ajouter aux favoris&nbsp;<img align="absmiddle" src="images/coeur_gris.png" alt="" />&nbsp;';
				link.onclick = function () {ajouteBienFavoris(link,idbien,label,label_add)};
				document.getElementById('vignette_'+idbien).style.display = "none";
			} )
}
