var theEchelle = 0; var zoomLevel=1; var zoomLevel2=1;
var openDivID = '' ;

printDirInPopup = function(divID, addresses) {
	var gdir = new GDirections(null, document.getElementById(divID)) ;
	gdir.loadFromWaypoints(addresses) ;
}

favouriteBrowser = function(title, url) {
	var msg_other = "Votre navigateur ne supporte pas cette fonction. Vous devez ajouter manuellement le site aux favoris";
	var agt = navigator.userAgent.toLowerCase();

	if (agt.indexOf("firefox") != -1) window.sidebar.addPanel(title,url,"");
	else if ((agt.indexOf("msie") != -1) && (parseInt(navigator.appVersion) >=4)) window.external.AddFavorite(url,title);
	else if (agt.indexOf("netscape") != -1) window.sidebar.addPanel(title,url,"");
	else if (window.sidebar && window.sidebar.addPanel) window.sidebar.addPanel(title,url,"");
	else alert(msg_other); 
}

function createAjaxHTTPREQUEST() {
	
	var xhr = null; 
 
	if(window.XMLHttpRequest) // Firefox et autres
  		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("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
   		xhr = false; 
	}
	
	return xhr;
}

/**
 * Fonction permettant d'avoir la hauteur d'un objet
 */
function getObjectHeight(obj)
{
	var divHeight = 0;

	if (obj.offsetHeight) divHeight=obj.offsetHeight ;
	else if (obj.style.pixelHeight) divHeight=obj.style.pixelHeight ;

	return divHeight;
}

/**
 * Fonctions permettant d'appliquer des effets visuels sur un objet pour n'importe quel contenu
 */
function processExpandOnHeight(targetDivId)
{
	var obj	= document.getElementById(targetDivId);
	obj.style.height = 'auto';
	var height = getObjectHeight(obj);
	obj.style.height = '0px' ;

	var myEffects 	= new Fx.Morph(targetDivId, {duration: 2000, onComplete: function(){
        obj.style.height = 'auto';
    }});

	myEffects.start({
		height: [0, height]
	});

}

function processCollapseOnHeight(targetDivId, onComplete, instant)
{
	var duration = 2000 ;
	if (instant) duration = 0 ;
	var height 	= getObjectHeight(document.getElementById(targetDivId));

	var myEffects 	= new Fx.Morph(targetDivId, {duration: duration, onComplete: onComplete});

	myEffects.start({
		height: [height, 0]
	});

}

addLocation = function(id) {
	var xhr = createAjaxHTTPREQUEST() ;
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && xhr.status == 200) {
			var text = document.createElement("span") ;
			text.innerHTML = "L'&eacute;tape a bien &eacute;t&eacute; ajout&eacute;e &agrave; l'itin&eacute;raire courant" ;
			alert(text.innerHTML) ;
		}
	}
	xhr.open("post","actions_ajax.php",true) ;
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded') ;
	xhr.send("action=addLocationToRoute&location_id="+id) ;
}

switchButton = function(divID, buttonID, instant) {
	var button = document.getElementById(buttonID) ;
	if (!button.toExpand) {
		if (instant)
			processCollapseOnHeight(divID, null, true) ;
		else
			processCollapseOnHeight(divID, null, false) ;
		button.src = "images/search_down.png" ;
		button.toExpand = true ;
	} else {
		processExpandOnHeight(divID) ;
		button.src = "images/search_up.png" ;
		button.toExpand = false ;
	}
}

/**
 * Coche/décoche la case mère d'une case
 * id : id de la liste
 * idCheck : id de la case mère
 */
searchLevel2CheckBoxChange = function(id, idCheck) {
	var div = document.getElementById(id) ;
	var check = document.getElementById(idCheck) ;
	if (div) {
		var inputs = div.getElementsByTagName("input") ;
		var one = false ;
		var i = 0 ;
		while (!one && i < inputs.length) {
			one = inputs[i].checked ;
			i++ ;
		}
		check.checked = one ;
	}
}

/**
 * Coche/décoche toutes les cases filles d'une case
 * self : case
 * id : id de la liste
 */
searchLevel1CheckBoxChange = function(self, id) {
	var div = document.getElementById(id) ;
	if (div) {
		var inputs = div.getElementsByTagName("input") ;
		for (var i = 0 ; i < inputs.length ; ++i)
			inputs[i].checked = self.checked ;
	}
}

/**
 * Coche/décoche toutes les cases à cocher d'une zone
 * checked : coché
 * id : id zone
 */
searchCheckAll	= function(checked, id) {
	var div = document.getElementById("div"+id) ;
	var inputs = div.getElementsByTagName("input") ;
	for (var i = 0 ; i < inputs.length ; ++i)
		inputs[i].checked = checked ;
}

/* fonction permettant d'inserer les inputs des champs "à proximité" */
insertProximityInput = function(divId, name, value) {
	document.getElementById(divId).innerHTML = "<input type='text' name='"+name+"' id='"+name+"' onkeyup='suggestProximity(this.value, \"div_"+name+"\")' value='"+value+"' /><br /><div class='suggest-proximity' id='div_"+name+"'></div>";
}

/* fonction permettant de suggérer une liste de commune pour le champ "à proximité" */
suggestProximity = function(currentValue, divSuggest) {
	window.onclick = function(){document.getElementById(divSuggest).innerHTML = "";};
	if (currentValue.length==0) {
		document.getElementById(divSuggest).innerHTML = "";
		return;
	}
	
	var req = createAjaxHTTPREQUEST() ;
	req.onreadystatechange = function() {
		if (req.readyState == 4 && req.status == 200) {
			var arrCommunePart;
			var arrCommunes = req.responseText.split('|');
			
			if (req.responseText.length>0) {
			
				var selectHTML 	= "<select onchange='document.getElementById(\""+divSuggest.substr(4, divSuggest.length-4)+"\").value=this.value; document.getElementById(\""+divSuggest+"\").innerHTML=\"\"' size='5'>";
				
				for (i=0; i<arrCommunes.length; i++) {
					arrCommunePart = arrCommunes[i].split(',');
					// arrCommunePart[0] représente le code postal
					selectHTML += "<option value='"+arrCommunePart[1]+"'>"+arrCommunePart[1]+"</option>";
				}
				selectHTML += "</select>";
				
				document.getElementById(divSuggest).innerHTML = selectHTML;
			}
			else {
				document.getElementById(divSuggest).innerHTML = "";
			}
		}
	}
	req.open("post","actions_ajax.php",true) ;
	req.setRequestHeader('Content-Type','application/x-www-form-urlencoded') ;
	req.send("action=ajaxGetProximityList&nom="+currentValue) ;
}

/* fonction permettant de developper une partie du moteur de recherche et de replier toutes les autres parties */
switchSearchEngineButtons = function (divID, buttonID, instant) {

	var imgObj = new Array() ;

	for (var i = 0 ; i < genres.length ; ++i) {
		imgObj.push(document.getElementById('img'+genres[i])) ;
	}

	var imgScrPathPart = new Array();
	for (var i=0; i<imgObj.length; i++) {
		if (imgObj[i].id!=buttonID) {
			imgScrPathPart = imgObj[i].src.split('/');
			
			if (imgScrPathPart[imgScrPathPart.length-1]=="search_up.png"){
				switchButton('div'+genres[i], 'img'+genres[i], false);
			}
		}
	}
	
	switchButton(divID, buttonID, instant);
}

/**
 * Affiche/cache une liste
 * id : id de référence
 */
showTheme = function(id) {
	var ul = document.getElementById("ul"+id) ;
	var img = document.getElementById("pm"+id) ;

	if (ul.style.display == "none") {
		ul.style.display = "block" ;
		img.src = "interface/minus.gif" ;
	} else {
		ul.style.display = "none" ;
		img.src = "interface/plus.gif" ;
	}
}

getLocationInformations = function(id, inCurrent) {
	/*var req = createAjaxHTTPREQUEST() ;
	req.onreadystatechange = function() {
		if (req.readyState == 4 && req.status == 200) {
			var win = window.open('about:blank','Informations','width=640,height=480') ;
			win.document.write('<html><head></head><body><div id="details_'+id+'">') ;
			win.document.write(req.responseText) ;
			win.document.write('</div></body></html>') ;
			win.document.close() ;
		}
	}
	req.open("post","actions_ajax.php",true) ;
	req.setRequestHeader('Content-Type','application/x-www-form-urlencoded') ;
	req.send("action=ajaxGetLieu&carto=true&id_lieu="+id) ;*/
	if (inCurrent == 'true') window.location = 'actions_ajax.php?action=ajaxGetLieu&carto=true&id_lieu='+id ;
	else window.open('actions_ajax.php?action=ajaxGetLieu&carto=true&id_lieu='+id,'Informations','width=640,height=480') ;
}

confirmCustom = function() {
	var text = document.createElement("span") ;
	text.innerHTML = "Votre itin&eacute;raire en cours sera perdu si vous ne l&apos;avez pas sauvegard&eacute;.\nVoulez-vous continuer ?" ;
	var maybe = confirm(text.innerHTML) ;
	return maybe ;	
}

/**
 * Propose l'impression de la feuille de route
 */
printDirections = function(id) {
	/*var win = window.open('about:blank', 'Directions', "width=640,height=480,location=no,menubar=no,scrollbars=yes") ;
	win.document.write('<html><head><script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAAl2zRKfzLkITriFH4ps47xRXqlxn2cYvPndsYX4Tu0Tm0tO99xQLGOL3TuXsgFULwe9jhezA7kcdHg" type="text/javascript"></script><script src="http://www.google.com/uds/api?file=uds.js&v=1.0&amp;key=ABQIAAAAAl2zRKfzLkITriFH4ps47xRXqlxn2cYvPndsYX4Tu0Tm0tO99xQLGOL3TuXsgFULwe9jhezA7kcdHg" type="text/javascript"></script></head><body><div style="text-align: right; width: 100%"><a href="javascript: window.print()"><span>'+I18N.print[gis.lg]+'</span></a></div>') ;
	win.document.write(document.getElementById(gis.route.directionsID).innerHTML) ;
	win.document.write('</body></html>') ;
	win.document.close() ;*/

	window.open('actions_ajax.php?action=printDirections&route_id='+id, 'Directions', "width=640,height=480,location=no,menubar=no,scrollbars=yes") ;
}

/**
* Fonction permettant d'obtenir le formulaire d'envoi d'une page à un ami
*/
function AjaxGetSendFriend (scriptParams){

    /*var xhr = createAjaxHTTPREQUEST() ;
    
    xhr.onreadystatechange = function() {
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if (xhr.readyState == 4 && xhr.status == 200) {
            var win = window.open ('', 'SendFriend',"menubar=no, status=no, scrollbars=yes, menubar=no, width=500, height=500");
            win.document.write(xhr.responseText);
            win.document.close();
        }
        
    }
    
    xhr.open("post","actions_ajax.php",true) ;
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded') ;
    xhr.send(scriptParams) ;*/
    
    var win = window.open("actions_ajax.php?"+scriptParams, "SendFriend", "menubar=no, status=no, scrollbars=yes, menubar=no, width=500, height=500");

}

getLocationsList = function(id, targetDivId) {
	var xhr = createAjaxHTTPREQUEST() ;
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && xhr.status == 200) {
			document.getElementById(targetDivId).innerHTML = xhr.responseText ;
			var div = openDivID ;
			if (openDivID != targetDivId) {
				if (openDivID.length != 0) processCollapseOnHeight(openDivID, function() {document.getElementById(div).innerHTML = '';}) ;
				processExpandOnHeight(targetDivId) ;
				openDivID = targetDivId ;
			} else {
				processCollapseOnHeight(openDivID, function() {document.getElementById(div).innerHTML = '';}) ;
				openDivID = '';
			}
		}
	}
	xhr.open("post","actions_ajax.php",true) ;
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded') ;
	xhr.send("action=getLocationsList&route_id="+id) ;
}

/**
 * Fonction permettant d'obtenir les détails sur un lieu
 */
function AjaxGetDetails(detailCommand, targetDivId)
{
	var obj = document.getElementById(targetDivId) ;
	var xhr = createAjaxHTTPREQUEST() ;

	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function() {
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if (xhr.readyState == 4 && xhr.status == 200) {
			document.getElementById(targetDivId).innerHTML = xhr.responseText ;
			if (openDivID != targetDivId) {
				var div = openDivID ;
				if (openDivID.length != 0) processCollapseOnHeight(openDivID, function() {document.getElementById(div).innerHTML = '';}) ;
				processExpandOnHeight(targetDivId) ;
				openDivID = targetDivId ;
			}
		}
	}

	xhr.open("post","actions_ajax.php",true) ;
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded') ;
	xhr.send("action=ajaxGetLieu&id_lieu="+detailCommand) ;
}

/** 
 * Fonctions de rechargement simple (sans modifications en base de données) des différentes zones
 */
	
//Fonction qui recharge la zone des routes
function AjaxReloadRoutes(parametres, facultatif_poursuivrereload) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
	
	xhr = createAjaxHTTPREQUEST();
	
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			zone_gestion.innerHTML = result;
			
			//Redéfinition du nombre de routes et de l'offset
			var valeurs = document.getElementById('new_vals_routes').innerHTML.split("-");
			nb_elements_routes = parseInt(valeurs[0]);
			offset_routes = parseInt(valeurs[1]);

			var params = parametres.split("=");
			current_route = (params[1].split("&"))[0];
   
   //On recharge les éléments dépendants de cette zone
			if (facultatif_poursuivrereload  == 1) {
				//Si le reload de la suite est demandé cela veut dire qu'une nouvelle route a été sélectionnée
				route_dupliquee = 0;
				AjaxReloadEtapes(parametres,facultatif_poursuivrereload);
			} else if (facultatif_poursuivrereload <0) {
				//cas de la duplication d'une route
				AjaxReloadEtapes(parametres,-1);
			
			//a partir d'ici le paramètre est utilisé afin d'éviter un bug ajax à étudier : lorsque l'on enchaîne les requête XMLHTTPRequest
			// sans attendre la fin de la précédente, le résultat retourné dans une zone peut être celui d'une autre zone.
			} else if (facultatif_poursuivrereload == 2) {
				AjaxReloadMedias("");
				AjaxReloadCarto(parametres);
			} else if (facultatif_poursuivrereload == 3) { 
				AjaxReloadCarto(parametres);
			} else {
				opacite('attente','masque');
			}
		}
	}
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	
	//Demande de sauvegarde si changement de route et modifs d'une route
	if (route_dupliquee != 0 && facultatif_poursuivrereload == 1) {
//		if (modifs) {
//			param_msgbox = "&"+parametres;
//			opacite('zone_msgbox','affiche');
//		} else {
//			getAjaxResultManageRoutes("method=recordRoute&"+parametres+"&route_a_voir="+current_route);
//		}
	} else {
	
		//affichage du message d'attente :
		if (facultatif_poursuivrereload)
			opacite('attente','affiche');
	}
	// 4 : l'appel provient d'un rename route, il faut donc passer un paramètre supplémentaire pour l'actiongroup.
	if (facultatif_poursuivrereload == 4 || facultatif_poursuivrereload == -1 ) {
		xhr.send("action=reloadRoute&"+parametres+"&offset_routes="+offset_routes+"&affiche_routes="+nb_affiches_routes+"&rename=1&route_typeid="+route_typeid);
	} else {
		xhr.send("action=reloadRoute&"+parametres+"&offset_routes="+offset_routes+"&affiche_routes="+nb_affiches_routes+"&route_typeid="+route_typeid);
	}
}
	
//Fonction qui recharge la zone des étapes
function AjaxReloadEtapes(parametres, facultatif_poursuivrereload) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
	
	xhr = createAjaxHTTPREQUEST();
	
	//affichage du message d'attente :
	if (facultatif_poursuivrereload && zone_attente.style.display != 'block')
		opacite('attente','affiche');
	
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			zone_etape.innerHTML = result;
			
			//Redéfinition du nombre d'étapes et de l'offset
			var valeurs = document.getElementById('new_vals_etapes').innerHTML.split("-");
			nb_elements_etapes = parseInt(valeurs[0]);
			offset_etapes = parseInt(valeurs[1]);
			
			//On recharge les éléments dépendants de cette zone
			if (facultatif_poursuivrereload >0) {
				AjaxReloadMedias(parametres);
				AjaxReloadCarto(parametres);
			} else if (facultatif_poursuivrereload <0) {
				AjaxReloadCarto(parametres);
			} else {
				//on masque la zone d'attente
				opacite('attente','masque');
			}
		}
	}
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("action=reloadEtapes&"+parametres+"&offset_etapes="+offset_etapes+"&affiche_etapes="+nb_affiches_etapes);
}	
	
//Fonction qui recharge les  zones des médias
function AjaxReloadMedias(parametres, retro_reload) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
	
	//Gestion de la petite zone de description de l'étape
	xhr_petit = createAjaxHTTPREQUEST();

	// On défini ce qu'on va faire quand on aura la réponse
	xhr_petit.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr_petit.readyState == 4 && xhr_petit.status == 200){
			
			var result = xhr_petit.responseText;
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			//document.getElementById('zonemedia').innerHTML = result;
		}
	}
	xhr_petit.open("post","actions_ajax.php",true);
	xhr_petit.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr_petit.send("action=reloadDescEtape&"+parametres);

	//Gestion de la grande zone de description de l'étape
	xhr_grand = createAjaxHTTPREQUEST();

	// On défini ce qu'on va faire quand on aura la réponse
	xhr_grand.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr_grand.readyState == 4 && xhr_grand.status == 200){
			
			var result = xhr_grand.responseText;
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			//document.getElementById('zonemedia_tmp').innerHTML = result;
			
			if (retro_reload) {
				AjaxReloadEtapes(parametres);
			}
			
		}
	}
	xhr_grand.open("post","actions_ajax.php",true);
	xhr_grand.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr_grand.send("action=reloadMedias&"+parametres);
}
	
//Fonction qui recharge les  zones de cartographie
function AjaxReloadCarto(parametres,facutatif_reloadmedia) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
		
	xhr = createAjaxHTTPREQUEST();
	
	//affichage du message d'attente :
	if (zone_attente.style.display != 'block')
		opacite('attente','affiche');
	
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			zone_carto.innerHTML = result;
			
			//on reload les medias si nécessaire
			if (facutatif_reloadmedia && document.getElementById('new_vals_carto')) {
				//récupération de l'étape courante dans le code de la carto
				var valeurs = document.getElementById('new_vals_carto').innerHTML.split("-");
				
				var etape_selected = parseInt(valeurs[1]);
				AjaxReloadMedias("route_selected="+parseInt(valeurs[0])+"&etape_selected="+etape_selected,1);
			} else {
				//on masque la zone d'attente
				opacite('attente','masque');
			}
			
			//Modification du bouton plus si nécessaire
			if (zone_carto.style.width >= width_grand_carto+"px") {
					document.getElementById("redimcarto").src="images/boutonredimmoins_"+site_id+".gif";
			}
			initial();
		}
	}
	
	//SAUVEGARDE DE LA RECHERCHE
	// Construction de la liste des catégories sélectionnées
	var motclesearch = '';
	if ( bool_recherche_text == 1) {
		motclesearch = document.recherche.recherche_etape.value;
	}

		if (bool_recherche != 0) {
			var all = 1; //variable permettant de savoir si toute la liste a été sélectionnée.
			motclesearch = urlencode(motclesearch);
		}
//	if (bool_recherche != 0) {
		var checkboxes = document.getElementById("recherche_categories").childNodes;
		var checked_list = "(-1";
		var i = 0;
		for (i=0;i<checkboxes.length;i++) {
			if (checkboxes[i].tagName == "INPUT") {
				if (checkboxes[i].checked) {
					nom_checkbox = checkboxes[i].getAttributeNode("name").value;
					checked_list += ","+nom_checkbox.substring(5,nom_checkbox.length);
				} else {
					all = 0;
				};
			}
		}
		checked_list += ")";
//	}
	
	// Filtre Objets Secondaires
	var checkboxes2 = document.getElementById("img_legend").childNodes;
	var checked_list2 = '';
	var i = 0;
	for (i=0;i<checkboxes2.length;i++) {
		if (checkboxes2[i].tagName == "INPUT") {
			if (checkboxes2[i].checked) {
				nom_checkbox = checkboxes2[i].getAttributeNode("name").value;
				if(checked_list2 == '') {
					checked_list2 += nom_checkbox.substring(5,nom_checkbox.length);
				} else {
					checked_list2 += ","+nom_checkbox.substring(5,nom_checkbox.length);
				}
			} 
		}
	}

	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	
	var ajaxurl = "action=reloadCarto&"+parametres+"&refresh="+modifs+"&width="+zone_carto.style.width+"&bool_recherche="+bool_recherche+"&services="+checked_list2+"&bool_recherche_text="+bool_recherche_text+"&route_typeid="+route_typeid;
	if(bool_recherche_text != 0) {
		ajaxurl += "&mots_cles="+motclesearch;
	}
	if (all == 1) {
		ajaxurl += "&all=yes";
	} else {
		ajaxurl += "&category_list="+checked_list;
	}
	xhr.send(ajaxurl);
}


//Fonction qui met a jour le contenu de la div des médias (utilisée seulement lorsque cette div est en position agrandie)
function getAjaxResultMedia(parametres) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
	
	xhr = createAjaxHTTPREQUEST();

	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			document.getElementById('zonemedia_tmp').innerHTML = result;
		}
	}
	xhr.open("post","actions_ajax.php",true);
	
	//Utilisé pour le type POST
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	
	xhr.send(parametres);

}

/** 
	Fonctions d'application d'une action (avec traitement en base de données)
 **/
//Lecture des coordonnées du clique souris
var posX = 0;
var posY = 0;

function getMouseXY(event) {
	
	//Les coordonnées sont à des endroits différents selon le navigateur
	//Le test se fait par rapport au window.Event disponible seulement pour les navigateurs utilisant Gecko
	if (!event) event = window.event;
      
	if (window.event) {
		posX = event.offsetX;
		posY = event.offsetY;
	} else {
		posX = event.layerX;
		posY = event.layerY;
	}
   
	if (posX < 0){posX = 0;}
	if (posY < 0){posY = 0;}

	return true;

 }

function AjaxZoomCenter() {
	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	// fin récupération du mode
			
	formulaire = document.getElementById('carte');
	
	if (formulaire.route_selected.value != "") {
		if (formulaire.etape_selected.value != "") {
			parametres = "route_selected="+formulaire.route_selected.value+"&etape_selected="+formulaire.etape_selected.value;
		} else {
			parametres = "route_selected="+formulaire.route_selected.value;
		}
		parametres += "&firstview=true";
	} else {
		if (formulaire.etape_selected.value != "") {
			parametres = "etape_selected="+formulaire.etape_selected.value;
			parametres += "&firstview=true";
		} else {
			parametres = "&firstview=true";
		}
	}
	
	AjaxReloadCarto(parametres,1);
 }
 
function zoommap(event){
	var delta = 0;
	if (!event) event = window.event;
	if (event.wheelDelta) {
		delta = event.wheelDelta/120; 
		if (window.opera) delta = -delta;
	} else if (event.detail) {
		delta = -event.detail/3;
	}
	if (delta){
	delta=delta*2;
	
	if (window.Event) {
		posX = event.layerX;
		posY = event.layerY;
	} else {
		posX = event.offsetX;
		posY = event.offsetY;
	}
	
	delta='zoom='+delta+'&x='+posX+'&y='+posY;
		//AjaxZoomMap(delta);
	}
}
 
 function dowheel(){

  // scroll listener hinzufügen
  if (window.addEventListener){
    // mozilla
    window.addEventListener('DOMMouseScroll', zoommap, false);
  }

  // ie opera
  window.onmousewheel = document.onmousewheel = zoommap;
}

function stopwheel(){
  // scroll listener hinzufügen
  if (window.removeEventListener){
    // mozilla
    window.removeEventListener('DOMMouseScroll', zoommap, false);
  }

  // ie opera
  window.onmousewheel = document.onmousewheel = '';
}
 
 function getArrowXY(arrow) {
	
	posX=740/2;
	posY=380/2;
	
	if(arrow == "top"){
		posX = posX;
		posY = posY-200;
	}
	if(arrow == "right"){
		posX = posX+200;
		posY = posY;
	}
	if(arrow == "bottom"){
		posX = posX;
		posY = posY+200;
	}
	if(arrow == "left"){
		posX = posX-200;
		posY = posY;
	}   

	if (posX < 0){posX = 0;}
	if (posY < 0){posY = 0;}
	
	return true;
 }
 
 
//Clique pour center la carte
function AjaxManageMap() {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	// fin récupération du mode
			
	formulaire = document.getElementById('carte');
	
	if (formulaire.route_selected.value != "") {
		if (formulaire.etape_selected.value != "") {
			parametres = "route_selected="+formulaire.route_selected.value+"&etape_selected="+formulaire.etape_selected.value;
		} else {
			parametres = "route_selected="+formulaire.route_selected.value;
		}
		parametres += "&extent="+formulaire.extent.value+"&x="+posX+"&y="+posY;
	} else {
		if (formulaire.etape_selected.value != "") {
			parametres = "etape_selected="+formulaire.etape_selected.value;
			parametres += "&extent="+formulaire.extent.value+"&x="+posX+"&y="+posY;
		} else {
			parametres = "extent="+formulaire.extent.value+"&x="+posX+"&y="+posY;
		}
	}
	
	AjaxReloadCarto(parametres,1);

}

//Fonction de zoom pour la carte
function AjaxZoomMap(parametres,facultatif_reloadsuite) {

	//if((parametres=="zoom=2" && zoomLevel>1) || (parametres=="zoom=-2" && zoomLevel<=9)){
	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
			
	formulaire = document.getElementById('carte');	
	
	params = parametres+"&";
		
	if (formulaire.route_selected.value != "") {
		if (formulaire.etape_selected.value != "") {
			params += "route_selected="+formulaire.route_selected.value+"&etape_selected="+formulaire.etape_selected.value+"&extent="+formulaire.extent.value;
		} else {
			params += "route_selected="+formulaire.route_selected.value+"&extent="+formulaire.extent.value;
		}
	} else {
		if (formulaire.etape_selected.value != "") {
			params += "etape_selected="+formulaire.etape_selected.value+"&extent="+formulaire.extent.value;;
		} else {
			params += "extent="+formulaire.extent.value;
		}
	}
	
	if (facultatif_reloadsuite) {
		AjaxReloadCarto(params,1);
	} else {
		AjaxReloadCarto(params);
	}
	//}
}
 
// Fonction d'action sur les étapes (déplacement, suppression)
function getAjaxResultEtapes(parametres) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode

		xhr = createAjaxHTTPREQUEST();

		// On défini ce qu'on va faire quand on aura la réponse
		xhr.onreadystatechange = function(){
			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
			if(xhr.readyState == 4 && xhr.status == 200){
				
				var result = xhr.responseText;
				//On n'affiche que ce qu'il y a à l'intérieur de la div principale
				zone_etape.innerHTML = result;
			
				//Modification du bouton plus si nécessaire
				if (zone_etape.style.height >= height_grand_etapes+"px") {
					document.getElementById("redimetapes").src="images/boutonredimmoins_"+site_id+".gif";
				}
			
				//Récupération de l'action afin de recharger les différentes zones dépendantes
				modifs++;
				var params = parametres.split("=");
				var action = (params[1].split("&"))[0];
				switch(action) {
					case "deleteEtape":
						//affichage du message d'attente :
						opacite('attente','affiche');
						//Redéfinition du nombre d'étapes et de l'offset
						var valeurs = document.getElementById('new_vals_etapes').innerHTML.split("-");
						nb_elements_etapes = parseInt(valeurs[0]);
						offset_etapes = parseInt(valeurs[1]);
						//Rechargement des zones
						AjaxReloadRoutes("route_selected="+(params[2].split("&"))[0]+"&etape_selected="+(params[3].split("&"))[0]+"&order="+document.getElementById("ordered").className+"&mode="+mode, 2);
						break;
					case "addEtape":
					case "upEtape":
					case "downEtape":
						//affichage du message d'attente :
						opacite('attente','affiche');
					
						//Rechargement des zones
						AjaxReloadRoutes("route_selected="+(params[2].split("&"))[0]+"&etape_selected="+(params[3].split("&"))[0]+"&order="+document.getElementById("ordered").className+"&mode="+mode, 3);
						break;
				}
			}	
		}
	
		xhr.open("post","actions_ajax.php",true);
	
		//Utilisé pour le type POST
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xhr.send(parametres+"&offset_etapes="+offset_etapes+"&affiche_etapes="+nb_affiches_etapes+"&mode="+mode);
}

//Fonction qui duplique une route
//Si poursuite = 1 cela veut dire qu'on veut dupliquer une route perso sinon c'est une route pré-def
function getAjaxResultDuplicRoutes(parametres,facultatif_poursuivrereload) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
	
	xhr = createAjaxHTTPREQUEST();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			var valeurs = result.split("-");
			var route_selected = parseInt(valeurs[0]);
			
				window.location="carto.php?mode=cdv";
				
			}
		}
	
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send(parametres+"&mode="+mode);
}	

//Fonction de création d'un itinéraire perso
function getAjaxResultCreateRoutes() {

	xhr = createAjaxHTTPREQUEST();
	
	//affichage du message d'attente :
	if (zone_attente.style.display != 'block')
		opacite('attente','affiche');
		
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			//Redéfinition de l'id de la route dupliquée
			var valeurs = result.split("-");
			var route_retournee = parseInt(valeurs[0]);
			
			if (route_retournee != 0) {
			//Demande de sauvegarde si changement de route et modifs d'une route
//			if (route_dupliquee != 0) {
//				if (modifs) {
//					param_msgbox = "&route_selected="+route_retournee;
//					opacite('zone_msgbox','affiche');
//				} else {
//					getAjaxResultManageRoutes("method=recordRoute&route_selected="+route_retournee+"&route_a_voir="+current_route);
//				}
//			}
			
			route_dupliquee = parseInt(valeurs[0]);
			AjaxReloadRoutes("route_selected="+route_dupliquee+"&order="+document.getElementById("ordered").className,-1);		
			}
			else{
			AjaxReloadRoutes("route_selected=0&firstview=true&mode=cdv",1);		
			}
		}
	}

	var nomRoute = window.prompt('Veuillez nommer votre nouvel itinéraire perso', 'nouvel itinéraire');
	nomRoute = urlencode(nomRoute);
	
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("action=createRoute&nom_route="+nomRoute+"&route_typeid="+route_typeid+"&mode=cdv");
}

function getAjaxResultCreateSpecialRoutes(etape) {

	xhr = createAjaxHTTPREQUEST();
		
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			//Redéfinition de l'id de la route dupliquée
			var valeurs = result.split("-");
			var route_retournee = parseInt(valeurs[0]);
			
			if (route_retournee != 0) {			
				route_dupliquee = parseInt(valeurs[0]);	
				getAjaxResultSpecialEtapes("action=addEtape&route_selected="+route_dupliquee+"&etape_selected="+etape+"&mode=cdv&offset_etapes=0");
			}
			else{
				AjaxReloadRoutes("route_selected=0&firstview=true&mode=cdv",1);	
			}
		}
	}

	var nomRoute = 'nouvel itinéraire';
	nomRoute = urlencode(nomRoute);
	
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("action=createRoute&nom_route="+nomRoute+"&route_typeid=19&mode=cdv");
}

// Fonction d'action sur les étapes (déplacement, suppression)
function getAjaxResultSpecialEtapes(parametres) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode

		xhr = createAjaxHTTPREQUEST();

		// On défini ce qu'on va faire quand on aura la réponse
		xhr.onreadystatechange = function(){
			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
			if(xhr.readyState == 4 && xhr.status == 200){
				
				var result = xhr.responseText;
				window.location="carto.php?mode=cdv";
			}	
		}
	
		xhr.open("post","actions_ajax.php",true);
	
		//Utilisé pour le type POST
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xhr.send(parametres+"&offset_etapes=0&affiche_etapes=5&mode="+mode);
}


//Fonction de gestion d'une route (enregistrement, suppression, ...)
function getAjaxResultManageRoutes(parametres,facultatif_poursuivrereload) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
	
	xhr = createAjaxHTTPREQUEST();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;

			//Lecture de l'id de retour d'ajax
			var valeurs = result.split("-");
			route_retournee = parseInt(valeurs[0]);
			modifs = 0;
			route_dupliquee = 0;
			
			//Récupération de l'action afin de recharger les différentes zones dépendantes
			var params = parametres.split("=");
			var methode = (params[1].split("&"))[0];
			
			//facultatif_poursuivrereload >0 : action normale sur un bouton
			//facultatif_poursuivrereload <0 : selection d'une route perso
			//facultatif_poursuivrereload non défini : selection d'une route prédef
			if (facultatif_poursuivrereload >0) {
				
				switch(methode) {
					case "deleteRoute":
						if (offset_routes > 0) {
							offset_routes = offset_routes -1;
						}
						AjaxReloadRoutes("order="+document.getElementById("ordered").className+"&mode=cdv",1);
						break;
					case "recordRoute":
					case "cancelRoute":
						getAjaxResultDuplicRoutes("route_selected="+route_retournee+"&route_type=1&order="+document.getElementById("ordered").className+"&mode=cdv",1);
						break;
				}
			} else if (facultatif_poursuivrereload <0){
				getAjaxResultDuplicRoutes(parametres,1)
			} else {
				AjaxReloadRoutes(parametres+"&order="+document.getElementById("ordered").className,-1);
			}
		}
	}
	
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("action=manageRoute&"+parametres+"&route_dupliquee="+route_dupliquee+"&mode=cdv");
}	

//Fonction de renommage d'une route perso
function getAjaxResultRenameRoutes(parametres,oldName) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
	
	xhr = createAjaxHTTPREQUEST();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){

			//On recharge la zone des routes (pour le tri)
			AjaxReloadRoutes(parametres+"&order="+document.getElementById("ordered").className, 4);
		}
	}
	var nv_nom = window.prompt('Veuillez entrer un nouveau nom pour cette route',oldName);
	if (nv_nom == null || nv_nom == '') { nv_nom = oldName; window.focus();}
	
	var champ = document.getElementById(oldName);
	champ.value = nv_nom;

	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("action=renameRoute&"+parametres+"&route_newname="+urlencode(nv_nom)+"&offset_routes="+offset_routes);
}	

//Fonction pour transformer en boucle route perso
function getAjaxResultLoopRoutes(parametres, isloop) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	parametres += "&mode="+mode;
	// fin récupération du mode
	
	xhr = createAjaxHTTPREQUEST();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){

			//On recharge la zone des routes (pour le tri)
			AjaxReloadRoutes(parametres, 1);
		}
	}

	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("action=loopRoute&"+parametres+"&route_isloop="+isloop+"&offset_routes="+offset_routes);
}

/**
	Fonction de login et logout (gérée également en ajax).
**/
function getAjaxResultLogin(url_back, default_url) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	// fin récupération du mode
  
	xhr = createAjaxHTTPREQUEST();

	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			document.getElementById('login').innerHTML = result;
			if(mode == "cdv") { 
				AjaxReloadRoutes("firstview=true&mode=cdv",1); 
			}
			/* result contient du code html 
					nous recherchons la methode 'getAjaxResultLogin' dans ce code. Si elle existe, le login a échoué, on n'effectue pas la redirection
				*/
			else if (result.indexOf('getAjaxResultLogin', 0)<0) {
				if (url_back && url_back != '') {
					window.location.href = url_back;
				}
				else if (default_url && default_url != '') {
					window.location.href = default_url;
				}
			}
		}
	}
	xhr.open("post","actions_ajax.php",true);
	
	//Utilisé pour le type POST
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	var toSend = "action=loginUser&auth_login="+document.getElementById('formLogin').auth_login.value+"&auth_password="+document.getElementById('formLogin').auth_password.value
	xhr.send(toSend);

}

function getAjaxResultLogout(url_back) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	// fin récupération du mode
  
	xhr = createAjaxHTTPREQUEST();

	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			document.getElementById('login').innerHTML = result;
			if(mode == "cdv"){ 
				AjaxReloadRoutes("firstview=true&mode=cdv",1); 
			}
			else if (url_back && url_back != '') {
				window.location.href = url_back;
			}
		}
	}
	
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("action=logoutUser");

}

/**
	Fonctions de recherche d'étapes
**/
function getAjaxResultRecherche() {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	// fin récupération du mode
				
	xhr = createAjaxHTTPREQUEST();

	//affichage du message d'attente :
	if (zone_attente.style.display != 'block')
		opacite('attente','affiche');
	
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			zone_carto.innerHTML = result;
			
			if (document.getElementById('new_vals_carto')) {
				//récupération de l'étape courante dans le code de la carto
				var valeurs = document.getElementById('new_vals_carto').innerHTML.split("-");
				var etape_selected = parseInt(valeurs[1]);
				AjaxReloadMedias("route_selected="+parseInt(valeurs[0])+"&etape_selected="+etape_selected+"&mode="+mode,1);
			} else {
				//on masque le message d'attente :
				opacite('attente','masque');
			}
			initial();
		}
	}
	
	formulaire = document.getElementById('carte');
	parametres = "&mode="+mode;
	
	if (formulaire.route_selected.value != "") {
		parametres += "&route_selected="+formulaire.route_selected.value;
	}
	if (formulaire.etape_selected.value != "") {
		parametres += "&etape_selected="+formulaire.etape_selected.value;
	}
	
	parametres += "&extent="+formulaire.extent.value;
	
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	
	// Construction de la liste des catégories sélectionnées
	var motclesearch = '';

		var all = 1; //variable permettant de savoir si toute la liste a été sélectionnée.
		var checkboxes = document.getElementById("recherche_categories").childNodes;
		var checked_list = "(-1";
		var i = 0;
		for (i=0;i<checkboxes.length;i++) {
			if (checkboxes[i].tagName == "INPUT") {
				if (checkboxes[i].checked) {
					nom_checkbox = checkboxes[i].getAttributeNode("name").value;
					checked_list += ","+nom_checkbox.substring(5,nom_checkbox.length);
				} else {
					all = 0;
				};
			}
		}
		checked_list += ")";
		
		// Filtre Objets Secondaires
		var checkboxes2 = document.getElementById("img_legend").childNodes;
		var checked_list2 = '';
		var i = 0;
		for (i=0;i<checkboxes2.length;i++) {
			if (checkboxes2[i].tagName == "INPUT") {
				if (checkboxes2[i].checked) {
					nom_checkbox = checkboxes2[i].getAttributeNode("name").value;
					if(checked_list2 == '') {
						checked_list2 += nom_checkbox.substring(5,nom_checkbox.length);
					} else {
						checked_list2 += ","+nom_checkbox.substring(5,nom_checkbox.length);
					}
				} 
			}
		}

	if(bool_recherche != 0) {
	
		motclesearch = urlencode(motclesearch);
		
		var ajaxurl = "action=rechercheEtape&width="+zone_carto.style.width+parametres+"&bool_recherche="+bool_recherche+"&services="+checked_list2+"&bool_recherche_text="+bool_recherche_text+"&mode="+mode+"&route_typeid="+route_typeid;
		if(bool_recherche_text != 0) {
			ajaxurl += "&mots_cles="+motclesearch;
		}
		if (all == 1) {
			ajaxurl += "&all=yes";
		} else {
			ajaxurl += "&category_list="+checked_list;
		}
		xhr.send(ajaxurl);
	}
	else{
		opacite('attente','affiche');
		opacite('attente','masque');
	}
}

function getAjaxResultRecherche2() {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	// fin récupération du mode
				
	xhr = createAjaxHTTPREQUEST();

	//affichage du message d'attente :
	if (zone_attente.style.display != 'block')
		opacite('attente','affiche');
	
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			
			var result = xhr.responseText;
			
			//On n'affiche que ce qu'il y a à l'intérieur de la div principale
			zone_carto.innerHTML = result;
			
			if (document.getElementById('new_vals_carto')) {
				//récupération de l'étape courante dans le code de la carto
				var valeurs = document.getElementById('new_vals_carto').innerHTML.split("-");
				var etape_selected = parseInt(valeurs[1]);
				AjaxReloadMedias("route_selected="+parseInt(valeurs[0])+"&etape_selected="+etape_selected+"&mode="+mode,1);
			} else {
				//on masque le message d'attente :
				opacite('attente','masque');
			}
			initial();
		}
	}
	
	formulaire = document.getElementById('carte');
	parametres = "&mode="+mode;
	
	if (formulaire.route_selected.value != "") {
		parametres += "&route_selected="+formulaire.route_selected.value;
	}
	if (formulaire.etape_selected.value != "") {
		parametres += "&etape_selected="+formulaire.etape_selected.value;
	}
	
	parametres += "&extent="+formulaire.extent.value;
	
	xhr.open("post","actions_ajax.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	
	// Construction de la liste des catégories sélectionnées
	var motclesearch = '';
	motclesearch = document.recherche.recherche_etape.value;

	var all = 1; //variable permettant de savoir si toute la liste a été sélectionnée.
	var checked_list2 = '';

	motclesearch = urlencode(motclesearch);
		
	var ajaxurl = "action=rechercheEtape&width="+zone_carto.style.width+parametres+"&bool_recherche="+bool_recherche+"&services="+checked_list2+"&bool_recherche_text="+bool_recherche_text+"&mode="+mode+"&route_typeid="+route_typeid;
	ajaxurl += "&mots_cles="+motclesearch;
	ajaxurl += "&all=yes";

	xhr.send(ajaxurl);
}

function checkAllCategories(val)
{
	var checkboxes = document.getElementById("recherche_categories").childNodes;
	var i = 0;
	for (i=0;i<checkboxes.length;i++) {
		if (checkboxes[i].tagName == "INPUT") {
			checkboxes[i].checked = val;
		}
	}
	/*
	// Filtre Objets Secondaires
	var checkboxes2 = document.getElementById("img_legend").childNodes;
	var i = 0;
	for (i=0;i<checkboxes2.length;i++) {
		if (checkboxes2[i].tagName == "INPUT") {
			checkboxes2[i].checked = val;
		}
	}*/
}

/**
	Fonctions diverses
**/

//Fonction degestion de la réponse à la message box
function launchAjaxMsgBox(reponse) {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	// fin récupération du mode
	
	//0 : oui - 1 : non - 2: annuler
	switch (reponse) {
		case 0 :
				getAjaxResultManageRoutes("method=recordRoute&route_a_voir="+current_route+"&route_dupliquee="+route_dupliquee+param_msgbox+"&mode="+mode);
				
				//on masque directement la zone (pas d'effets)
				zone_msgbox.style.display = 'none';
				zone_msgbox.style.opacity = 0;
				if (zone_msgbox.filters)
					zone_msgbox.filters.alpha.opacity = 0;
				break;
		case 1 :
				getAjaxResultManageRoutes("method=cancelRoute&route_a_voir="+current_route+"&route_dupliquee="+route_dupliquee+param_msgbox+"&mode="+mode);
				
				zone_msgbox.style.display = 'none';
				zone_msgbox.style.opacity = 0;
				if (zone_msgbox.filters)
					zone_msgbox.filters.alpha.opacity = 0;
				break;
		case 2 :
				zone_msgbox.style.display = 'none';
				zone_msgbox.style.opacity = 0;
				if (zone_msgbox.filters)
					zone_msgbox.filters.alpha.opacity = 0;
				break;
	}

} 

//Fonction de gestion des routes temporaires lors du départ de la page de carto
function ajaxQuitPage() {

	// récupération du mode
	var mode = document.getElementById('new_vals_mode').innerHTML;
	// fin récupération du mode
		
	if (route_dupliquee != 0) {
		if (modifs) {
//			if (confirm('Des modifications ont été éffectuées.\nCliquez sur OK pour enregistrer ces mofifications\n ou sur ANNULER pour annuler les changements.')) {
//				getAjaxResultManageRoutes("method=recordRoute&route_a_voir="+current_route+"&route_dupliquee="+route_dupliquee+"&mode="+mode);
//			} else {
//				getAjaxResultManageRoutes("method=cancelRoute&route_a_voir="+current_route+"&route_dupliquee="+route_dupliquee+"&mode="+mode);
//			}
			
		} else {
			getAjaxResultManageRoutes("method=recordRoute&route_a_voir="+current_route+"&route_dupliquee="+route_dupliquee+"&mode="+mode);
		}
	}
	
	return true;

}

function urlencode(ch) {
ch = ch.replace(/[ ]/g,"+")
return escape(ch)
}

function initial(){
	formulaire = document.getElementById('carte');
	theextend=formulaire.extent.value;
	theextend=theextend.split(" ");
	
	echelleX=theextend[2]-theextend[0];
	echelleY=theextend[3]-theextend[1];
	
	if(echelleX<=echelleY){ theEchelle=echelleX; } else { theEchelle=echelleY; }
	
	zoomLevel=1;
	
	if(theEchelle>=80000){ zoomLevel=10; }
	if(theEchelle>=40000 && theEchelle<80000){ zoomLevel=9; }
	if(theEchelle>=20000 && theEchelle<40000){ zoomLevel=8; }
	if(theEchelle>=10000 && theEchelle<20000){ zoomLevel=7; }
	if(theEchelle>=5000 && theEchelle<10000){ zoomLevel=6; }
	if(theEchelle>=2000 && theEchelle<5000){ zoomLevel=5; }
	if(theEchelle>=1000 && theEchelle<2000){ zoomLevel=4; }
	if(theEchelle>=500 && theEchelle<1000){ zoomLevel=3; }
	if(theEchelle>=250 && theEchelle<500){ zoomLevel=2; }
	if(theEchelle<250){ zoomLevel=1; }
	
	zoomLevel2=zoomLevel;
	
	if(zoomLevel==1){
		document.getElementById('zoom_plus').innerHTML="<img src='interface/zoom_plus2.gif' alt='' />";
	}else{
		document.getElementById('zoom_plus').innerHTML="<a href=\"javascript:AjaxZoomMap('zoom=2');\"><img src='interface/zoom_plus.gif' alt='Zoom +' /></a>";		
	}
	if(zoomLevel==10){
		document.getElementById('zoom_moins').innerHTML="<img src='interface/zoom_moins2.gif' alt='' />";		
	}else{
		document.getElementById('zoom_moins').innerHTML="<a href=\"javascript:AjaxZoomMap('zoom=-2');\"><img src='interface/zoom_moins.gif' alt='Zoom -' /></a>";	
	}
	
	var sliderLevel = new Control.Slider('zoom_niveau','zoom_barre',{onChange:function(v){ zoomLevel2=v; testZoom(); },sliderValue:zoomLevel,handleImage:'zoom_curseur',axis:'horizontal',range:$R(1,10),values:[1,2,3,4,5,6,7,8,9,10]});
}

		function testZoom(){
			if(zoomLevel2!=zoomLevel){
				delta=2*(zoomLevel-zoomLevel2);
				delta='zoom='+delta;
				AjaxZoomMap(delta);
				sliderLevel.setValue(zoomLevel);
				initial();
			}			
		}
