//<!--- ====================================== --->
//     initialise la carte google
//<!--- ====================================== --->
var lieuxGoogleMap = null;
var quartierLieuxContour = null;
var marker = null;
var repmarker = null;
var geocoder;
var baseIcon;
var LieuxbaseIcon;
var isInit = 1;

				
function initialize() {   
		 if (GBrowserIsCompatible()) {		
		 	baseIcon = new GIcon();
        	baseIcon.iconSize = new GSize(lrepereIconelargeur, lrepereIconeHauteur);
        	baseIcon.shadowSize = new GSize(lrepereIconelargeur, lrepereIconeHauteur);
        	baseIcon.iconAnchor = new GPoint(11, 13);
			
			
			LieuxbaseIcon = new GIcon();
			LieuxbaseIcon.iconSize = new GSize(lmarkerIconelargeur, lmarkerIconeHauteur);
        	LieuxbaseIcon.shadowSize = new GSize(lmarkerIconelargeur, lmarkerIconeHauteur);
        	LieuxbaseIcon.iconAnchor = new GPoint(0,lmarkerIconeHauteur);
			
			geocoder = new GClientGeocoder();
			var divmap = findObj('CarteDesLieux');
			lieuxGoogleMap = new GMap2(divmap);
			lieuxGoogleMap.addControl(new GSmallMapControl());
			lieuxGoogleMap.addControl(new GMapTypeControl());	
			var center = new GLatLng(centerlatitude,centerlongitude);
			lieuxGoogleMap.setCenter(center, gmapZoomLevel);// default france, Paris
			drawContour();
			// ajouter le marquer servant de repere central

			var iconrep = new GIcon(baseIcon);
			iconrep.image =iconRepereURL;	
			markerOptions = { icon:iconrep, draggable: true };
			repmarker = new GMarker(center,markerOptions );
						GEvent.addListener(repmarker, "dragend", 
								function() {  
											centerlatitude = repmarker.getLatLng().lat();
											centerlongitude = repmarker.getLatLng().lng();
											AffichernewMarker(findObj('distance').value);
								}
						);
			lieuxGoogleMap.addOverlay(repmarker);
			initafficherBien();	
			isInit = 0;
		}
		else {
			alert('Votre navigateur ne permet pas d utiliser la geolocalisation.');
		}
}
function drawContour() {
		if (GBrowserIsCompatible()) {
			if (quartierLieuxContour!= null)	{
					lieuxGoogleMap.removeOverlay(quartierLieuxContour);
			}
			var ctt = contourlist.split(';'); // retourne array de paire lattitude/longitude
			if (ctt.length > 1) { // au moins 2 points dans un polygone
				var points = new Array();
				// crée l'array d'objet GLatLng en utilisant les données de ctt
				for (var i=0; i < ctt.length; i++){
					coordx = ctt[i];
					var ptArr = coordx.split(',');
	 				if (ptArr.length > 0)	{
						var pointp = new GLatLng(ptArr[0],ptArr[1]);
						points.push(pointp);
					}
				 }
				 // referme le polygone sur le premier point
				 coordx = ctt[0];	
				 ptArr = coordx.split(',');
				 if (ptArr.length > 0)	{ var pointp = new GLatLng(ptArr[0],ptArr[1]);	points.push(pointp); }
				 /*GPolygon(points, strokeColor?, strokeWeight?, strokeOpacity?, fillColor?, fillOpacity?, opts?)*/
				quartierLieuxContour = new GPolygon(points, couleurPolygone, 1, 0.9, couleurPolygone, OpacitePolygone);
				lieuxGoogleMap.addOverlay(quartierLieuxContour);
				if (lieuxGoogleMap.getBounds().contains( quartierLieuxContour.getBounds().getSouthWest())  == false) {
					// zoom out
					lieuxGoogleMap.zoomOut();
				}
			}
		}
}

function markerTypes(lieux_code,lieux_famille, lieux_libelle, lieux_picto, lieux_famille_picto, lieux_picto_map, lieux_act, lieux_texte, lieux_adr, lieux_contact, lieux_photo){
		this.lieux_code=lieux_code;
		this.lieux_famille=lieux_famille;
		this.lieux_libelle=lieux_libelle;
		this.lieux_picto=lieux_picto;
		this.lieux_famille_picto=lieux_famille_picto;
		this.lieux_picto_map=lieux_picto_map;
		this.lieux_act=lieux_act;
		this.lieux_texte=lieux_texte;
		this.lieux_adr=lieux_adr;
		this.lieux_contact=lieux_contact;
		this.lieux_photo=lieux_photo;
		this.isloaded = 0;
		this.isvisible = 0;
		this.descListe ='';
		this.distance = distanceSet;
		this.nbrElem = 0;
}
	

/* ====================================== 
     initialise le tableau contenant les 
		details des type de lieux            
  ====================================== */
	var markerTypeListe = new Array();	
	var tableauBien = new Array();// utilise pour afficher les bien en mode geoloc
	var premiereAnnonce = 0;
	function initafficherBien() {		
		if ( premiereAnnonce> 0) {
			for	(var g = 0 ; g < tableauBien.length; g++ ) {
				if (tableauBien[g].annonceids.indexOf(premiereAnnonce) >= 0 )	{
					lieuxGoogleMap.addOverlay(tableauBien[g].MARKERON);
				}
					else {
					lieuxGoogleMap.addOverlay(tableauBien[g].MARKER);	
				}		
			}
		}
		else {
			for	(var g = 0 ; g < tableauBien.length; g++ ) {
				if (g == 0 )	
				lieuxGoogleMap.addOverlay(tableauBien[g].MARKERON);
				else
				lieuxGoogleMap.addOverlay(tableauBien[g].MARKER);			
			}
		}	
	}

function getMarkerTypeElem(code){
	for (var i=0; i< markerTypeListe.length; i++ ) {
		if (markerTypeListe[i].lieux_code == code) {
			return markerTypeListe[i];
		}
	}
	return null;
}

function HideMarketDetails(ind,markerLieu) {
		var mktxtObj = findObj('markertext' + markerLieu.lieu_code + '_' + ind);
		if (mktxtObj) mktxtObj.className='lieuxTexte';
}	

function HideMarkers(tableauDeMarker,markerTypeElem) {
		if (tableauDeMarker) {
			for (var t=0; t < tableauDeMarker.length; t++ ) {
				lieuxGoogleMap.removeOverlay(tableauDeMarker[t].MARKER);
			}
			
		}
		markerTypeElem.isvisible = 0 ;
		afficherMarkerListetexte();	
		lieuxGoogleMap.removeOverlay(repmarker);
		lieuxGoogleMap.addOverlay(repmarker);
}
var afficherLesBiens = 0;
function AffichernewMarker(dist){	
		findObj('distance').value=dist;		
		var distanceSelectionnee = findObj('distance').value;
		var lieux_code_liste ='';
		for (var f=0 ; f < markerTypeListe.length; f++ ) {
			var markerTypeElem = markerTypeListe[f];
			/* **********************************************************************************************
				Les markers  exist et on été stockés dans le tableau *'markersCode' + markerTypeElem.lieux_code*
				Verifier si la distance a changée entre le moment ou le tableau d'élément a été créé et maintenant.
				si la distance est la même, simple show/hide, sinon, il faut regénérer le tableau et y 
				ajouter ou effacer les elements.
				Pour cela, on génére une liste des lieux_code a reloader
			*************************************************************************************************/
			if (markerTypeElem.isloaded == 1) {
				if (lieux_code_liste.length > 0) lieux_code_liste = lieux_code_liste + ',';
				lieux_code_liste = lieux_code_liste + markerTypeElem.lieux_code;				
			}			
			markerTypeElem.distance = distanceSelectionnee; 
		}
		if (lieux_code_liste.length > 0)  {
				/* **********************************************************************************************
					 des listes de lieux étaient loadées, ==> reload fonction d'appel Ajax
				*************************************************************************************************/
				getMarkers_values(lieux_code_liste);	

		}		
		else
			{
				if (afficherLesBiens == 1 ){/***** Afficher aussi les bien prés de ce point******/
					loaderBien();
					lieuxGoogleMap.removeOverlay(repmarker);
					lieuxGoogleMap.addOverlay(repmarker);
					
				}
			}
}	

function AfficherMarker(code) {
		var arrayName = 'markersCode' + code;
		var arraySet = -1;
		var arrayInd = -1;
		/* **********************************************************************************************
			recherche dans le tableau de type de marker, la ligne correspondant a ce type de marker
		*************************************************************************************************/
		for (var i=0; i< markerTypeListe.length; i++ ) {
			if (markerTypeListe[i].lieux_code == code) {
				arrayInd = i;
				if(markerTypeListe[i].isloaded == 1)
					arraySet = 1;
			}
		}
		/* **********************************************************************************************
			arraySet > 0 ==> un match a été trouvé
		*************************************************************************************************/	
		if(arraySet > 0) {
				/* ****************************************************************
				si les élément sont visible (isvisible == 1) , effacer element 
				********************************************************************/
				if (markerTypeListe[arrayInd].isvisible == 1 ) {
						var tableauDeMarker = eval(arrayName);	
						HideMarkers(tableauDeMarker,markerTypeListe[arrayInd]);
						markerTypeListe[arrayInd].isvisible = 0;
				}
				else
				{
				/* ****************************************************************
						si les élément sont hidden ( isvisible = 0) , afficher elements
				********************************************************************/							
					var tableauDeMarker = eval(arrayName);	
					showMarkers(tableauDeMarker,markerTypeListe[arrayInd]);
					markerTypeListe[arrayInd].isvisible = 1;
				}
		}
		else {
			/* **********************************************************************************************
				premier appel de visualisation de ces marker, ils faut aller chercher la liste sur la base 
				pour remplir le tableau local et créé les markers
			*************************************************************************************************/
			if (arrayInd > -1 ) {
				/* **********************************************************************************************
					fonction d'appel Ajax avec fonction a appeler:imprimerMarker(eval(arrayName),code,afficher) ou afficher=  1
				*************************************************************************************************/
				markerTypeListe[arrayInd].isvisible = 1 ;
				getMarkers_values(code);
			}
			
		}
	}       
function imprimerMarker(codes,afficher) {	
	/**************************************************************************
	code est une liste de code, la convertir en tableau et parcourir le tableau 
	pour afficher les lieux correspondant à chaque code
	**************************************************************************/
	var codesIn = new Array();
	codesIn = codes.split(',');
	for (var c= 0 ; c < codesIn.length; c ++) {
		var code = codesIn[c];
		var mkTypeElem = getMarkerTypeElem(code);
	
		
		var arrayName = 'markersCode' + code;
		var Tableau = new Array();
		try{eval('Tableau=' + arrayName );}
		catch(e) {	Tableau= new Array();}	
		// crée la liste de markers
		setMarkerIcon(Tableau,code);
		//crée le code html affichant la liste des lieux
		setMarkerListetexte(Tableau,code);
		
		// afficher les marker juste créés
		if (mkTypeElem.isvisible == 1) {
			showMarkers(Tableau,mkTypeElem) ;
			
		}		
	}		
}
function setMarkerListetexte(markerTableau,code) {
		var mkTypeElem = getMarkerTypeElem(code);
		var tableauTxt = '<table><tr><td><h2>'  + mkTypeElem.lieux_libelle + ' : ' + markerTableau.length  + '</h2></td></tr>';	
		for (var e=0; e < markerTableau.length ; e++ ) {
			tableauTxt = tableauTxt + getMarkerTR(markerTableau[e],e,mkTypeElem);
		}
		tableauTxt = tableauTxt + '</table>';
		mkTypeElem.descListe=tableauTxt;	
}
function setMarkerIcon(markerTableau,code) {
		var mkTypeElem = getMarkerTypeElem(code);
		for (var e=0; e < markerTableau.length ; e++ ) {
			var mkIcon = getcustomMarker(markerTableau[e],e);		
			markerTableau[e].MARKER = mkIcon;
		}
		mkTypeElem.nbrElem = markerTableau.length;
}

function markerListeABV(indexDansmarkerTypeListe,nbrtotalElem) {
		this.indexDansmarkerTypeListe = indexDansmarkerTypeListe;
		this.nbrtotalElem =nbrtotalElem ;	
}	
function sortMarkerList(tableauMarkerListABV) {
		var tpMarkerList= null;
		for (x=0; x < tableauMarkerListABV.length ; x++) {
			var markerListElemen = tableauMarkerListABV[x];
			for (var y= x + 1 ; y < tableauMarkerListABV.length ; y++){
				if (tableauMarkerListABV[x].nbrtotalElem > tableauMarkerListABV[y].nbrtotalElem) {
					tpMarkerList = tableauMarkerListABV[x];
					tableauMarkerListABV[x] = tableauMarkerListABV[y];
					tableauMarkerListABV[y] = tpMarkerList;				
				}
			}
		}
		return tableauMarkerListABV;
}


function getMarkerTR(marker,ind, mkTypeElem) {
		var mkId = 'markertext' + marker.lieu_code + '_' + ind;
		var trMarkertexte 	= '';		
		/*if (mkTypeElem.lieux_photo == 1 && marker.lieu_photo && marker.lieu_photo.length > 0 ){ 	
			trMarkertexte =trMarkertexte  + '<img align=#chr(34)#left#chr(34)# src=#chr(34)#'+v_lieuxPhotoURL +  marker.lieu_photo+ '.jpg#chr(34)#border=#chr(34)#0#chr(34)# alt=#chr(34)#' + marker.lieu_nom + '#chr(34)#>';
		}
		*/
		trMarkertexte =trMarkertexte  + '<span class="nomDeLieu">'	+ marker.lieu_nom + '</span><br>'
		if (mkTypeElem.lieux_adr == 1 ) {
			var txtadr ='';
			if (marker.lieu_adr.length > 0 )	txtadr = txtadr  +	decodeURI(marker.lieu_adr) + '<br>';
			if (marker.lieu_cdp.length > 0 )	txtadr = txtadr  +	marker.lieu_cdp;
			if (marker.lieu_ville.length > 0 )	txtadr = txtadr  + ' ' +	decodeURI(marker.lieu_ville)+ '<br>';
			if (txtadr.length > 0 )trMarkertexte =trMarkertexte  + txtadr;
		}
		if (mkTypeElem.lieux_contact == 1 ) {
			if (marker.lieu_tel.length > 0 )	trMarkertexte =trMarkertexte  + 'Téléphone : ' +  marker.lieu_tel + '<br>';
			if (marker.lieu_fax.length > 0 )trMarkertexte =trMarkertexte   + 'Fax : ' +   marker.lieu_fax + '<br>';
			if (marker.lieu_email.length > 0 )trMarkertexte =trMarkertexte  + 'Email :<a href="mailto:' + marker.lieu_email + '">' +  marker.lieu_email + '</a><br>';
			if (marker.lieu_web.length > 0 ){
				trMarkertexte =trMarkertexte  + 'Site Internet : <a href="';
				if (marker.lieu_web.indexOf('http:') < 0 ) 
					trMarkertexte = trMarkertexte  + 'http://';
				trMarkertexte =trMarkertexte   + marker.lieu_web + '" target=_blank>' + marker.lieu_web + '</a><br>';
				
			}
		}
		if (mkTypeElem.lieux_texte == 1 ) {
			if (marker.lieu_descriptif.length > 0 )trMarkertexte =trMarkertexte  + marker.lieu_descriptif ;
		}
		trMarkertexte ='<tr><td class="lieuxTexte"><li><div id=' + mkId + '>' + trMarkertexte  + '</div></li></td></tr>';
		return trMarkertexte;
}

function afficherMarkerListetexte() {		
		/***************************************************************
			1) chercher combien d'adresses doivent être présentées.
			2) diviser ce total par le nombre de colonne sur lesquelles elles doivent être présenter
			3) construire le texte du tableau en esseyant de se rapprocher de ce nombre
		***************************************************************/
		/*************************
		 1 )Calcul total elements
		*************************/
		var nbrTotElem = 0;
		var tableauDemarkerListeABV = new Array();
		for ( h=0; h < markerTypeListe.length; h++ ) {						
			if (markerTypeListe[h].nbrElem > 0 && markerTypeListe[h].isvisible == 1 ) {
				nbrTotElem = nbrTotElem + markerTypeListe[h].nbrElem;	
				var markerListeAbrege =  new markerListeABV(h, markerTypeListe[h].nbrElem);
				tableauDemarkerListeABV.push(markerListeAbrege);	
			}	
		}
		// class les descriptions de la plus courte a la plus longue
		// afin de faciliter la mise en page
		tableauDemarkerListeABV = sortMarkerList(tableauDemarkerListeABV);
		var nbrElementafficheMoyen = nbrTotElem / nbrColDescription;
		var divDescription = findObj('DescLieux');		
		var nbrElementAffiche = 0;
		var tableDesDescriptionHTML = '<table><tr><td valign=top ><table>';
		
		for (i=0; i < tableauDemarkerListeABV.length; i++ ) {
			nbrElementAffiche = nbrElementAffiche + tableauDemarkerListeABV[i].nbrtotalElem;
			if (	
					(nbrElementAffiche > ( nbrElementafficheMoyen + tableauDemarkerListeABV[i].nbrtotalElem) )
					|| 
					( nbrElementAffiche  >  nbrElementafficheMoyen + (nbrElementafficheMoyen * 0.2) )
					) 
				{
					nbrElementAffiche = 0;
					tableDesDescriptionHTML = tableDesDescriptionHTML +'</table></td><td valign=top ><table>';
				}
			
				var indmarkerTypeListe = tableauDemarkerListeABV[i].indexDansmarkerTypeListe;				
				var txt = markerTypeListe[indmarkerTypeListe].descListe;		
					
				if (txt.length > 0)	{
					tableDesDescriptionHTML = tableDesDescriptionHTML + '<tr><td align=top >' + txt+ '</td></tr>';		
				}			
		}		
		tableDesDescriptionHTML = tableDesDescriptionHTML + '</tr></table>';				
		divDescription.innerHTML = tableDesDescriptionHTML;
}	
function getcustomMarker(markerLieu,ind) {		
		//debug('line 471: '+  markerLieu);
		var iconM = new GIcon(LieuxbaseIcon);
		iconM.image = markerLieu.markerImg;	
		//debug('line 124 : ind  = ' + ind);
		markerOptions = { icon:iconM, draggable: false };
		lmarker = new GMarker(new GLatLng(markerLieu.lieu_latitude,markerLieu.lieu_longitude),markerOptions );		
		GEvent.addListener(lmarker, "click", function() {  showMarketDetails(ind,markerLieu);}	);		
		/*GEvent.addListener(lmarker, #chr(34)#mouseout#chr(34)#, function() {  HideMarketDetails(ind,markerLieu);}	);	*/
		return lmarker;
}
	

function loadXMLdansTableau(xmldoc) {
	var root_node = xmldoc.getElementsByTagName('root').item(0);
	if (root_node.hasChildNodes()){
		var docnodes = root_node.childNodes;
		for (var i =0 ; i< docnodes.length; i++){  
				var lieu_code= '';var lieu_nom= ''; var lieu_descriptif= ''; var lieu_adr= '';var lieu_cdp= '';
				var lieu_ville= '';var lieu_tel= ''; var lieu_fax= ''; var lieu_email= '';var lieu_web= '';
				var lieu_photo= '';var lieu_latitude= ''; var lieu_longitude= '';
				if (docnodes[i].hasChildNodes()){
					for (var d=0; d < docnodes[i].childNodes.length; d++) {		
						if (docnodes[i].childNodes[d].nodeName == 'lieu_code'){	
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_code = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_code = decodeURIComponent(lieu_code);	}
						}
						if (docnodes[i].childNodes[d].nodeName == 'lieu_nom'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_nom = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_nom = decodeURIComponent(lieu_nom);	}
						}
						if (docnodes[i].childNodes[d].nodeName == 'lieu_descriptif'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_descriptif = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_descriptif = decodeURIComponent(lieu_descriptif);	}
						}
						if (docnodes[i].childNodes[d].nodeName == 'lieu_adr'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_adr = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_adr = decodeURIComponent(lieu_adr);}
						}
						if (docnodes[i].childNodes[d].nodeName == 'lieu_cdp'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_cdp = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_cdp = decodeURIComponent(lieu_cdp);	}
						}
						if (docnodes[i].childNodes[d].nodeName == 'lieu_ville'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_ville = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_ville = decodeURIComponent(lieu_ville);	}
						}
						if (docnodes[i].childNodes[d].nodeName == 'lieu_tel'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_tel = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_tel = decodeURIComponent(lieu_tel);	}
						}
						if (docnodes[i].childNodes[d].nodeName == 'lieu_fax'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_fax = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_fax = decodeURIComponent(lieu_fax);	}
						}
						if (docnodes[i].childNodes[d].nodeName == 'lieu_email'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_email = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_email = decodeURIComponent(lieu_email); }
						}
						if (docnodes[i].childNodes[d].nodeName == 'web'){
							// atteindre le text node contenant le texte
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_web = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_web = decodeURIComponent(lieu_web);}
						}
						if (docnodes[i].childNodes[d].nodeName == 'photo'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_photo = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_photo = decodeURIComponent(lieu_photo);}
						}
						if (docnodes[i].childNodes[d].nodeName == 'latitude'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_latitude = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_latitude = decodeURIComponent(lieu_latitude);}									
						}
						if (docnodes[i].childNodes[d].nodeName == 'longitude'){
							if (docnodes[i].childNodes[d].hasChildNodes()) {var lieu_longitude = docnodes[i].childNodes[d].childNodes[0].nodeValue;lieu_longitude = decodeURI(lieu_longitude);}									
						}
					}	
					var mkTypeElem = getMarkerTypeElem(lieu_code);
					var markerimg =  lieuxPictoMarkerURL + mkTypeElem.lieux_picto_map; ;
					var lieuxElem = new  markerLieu (lieu_code,lieu_nom, lieu_descriptif, lieu_adr, lieu_cdp, lieu_ville, lieu_tel, lieu_fax, lieu_email, lieu_web, lieu_photo, lieu_latitude, lieu_longitude,markerimg) ;
					var arrayName = 'markersCode' + lieu_code;
					try{
						eval(arrayName).push(lieuxElem);	
					}
					catch(e) {
						eval(arrayName + '= new Array();');
						eval(arrayName).push(lieuxElem);	
		 			}			
				}
		  }
	}
}


/* **********************************************************************************************
		Fonction exécutant l'appel AJAX et remplissant le tableau d'éléments
*************************************************************************************************/
	function getMarkers_values(code) {
		/*
		var ptSud =  quartierLieuxContour.getBounds().getSouthWest().lat() ; 
		var ptOuset =   quartierLieuxContour.getBounds().getSouthWest().lng() ; 
		var ptNord =  quartierLieuxContour.getBounds().getNorthEast().lat() ; 
		var ptEst =  quartierLieuxContour.getBounds().getNorthEast().lng() ; 
		*/				
		var distance =  findObj('distance').value;
		var qtringURL = '?distance=' + distance + '&latitude=' + centerlatitude + ' &longitude=' + centerlongitude+ '&lieu_code=' + code; // + '&sud=' + ptSud + '&nord=' + ptNord + '&est=' + ptEst + '&ouest=' + ptOuset ;
		// récupère une réference à l'array concernant les champs affecté et réinitialise celle-ci
		var moduleURL = AjaxFileURL + qtringURL;	
		//debug (moduleURL);			
		// instantiation de l'objet XMLHttpRequest
		if (window.XMLHttpRequest) { /* Mozilla, Safari, ...*/
		  httpRequest = new XMLHttpRequest();	if (!document.all)	httpRequest.overrideMimeType('text/xml');	
		}
		else if (window.ActiveXObject) { /* IE */
		  httpRequest = new ActiveXObject("MSXML2.XMLHTTP.3.0");
		}
		// appel de la fonction de traitement de réponse à l'appel XMLHttpRequest
		httpRequest.onreadystatechange = function (){
			if (httpRequest.readyState == 4) {
				// récupére le document xml
		  		var xmldoc = httpRequest.responseXML;
				
				/****************************************************************
				 pour chaque elemnt de la liste code
				 chercher voir si le tableau a déjà été rempli, si oui, cela veut dire que la 
				distance a changer et qu'il faut la mettre à jour
				****************************************************************/
				// tester pour chaque code fourni
				var codesIn = new Array();
				codesIn = code.split(',');
				for (var c= 0 ; c < codesIn.length; c ++) {
					var lecode = codesIn[c];
					var arrayName = 'markersCode' + lecode;
					var mkTypeElem = getMarkerTypeElem(lecode);
					if (mkTypeElem.isloaded == 1) {
						if (mkTypeElem.isvisible == 1 ) {
							//debug('line 423: effacé  appelé');
							HideMarkers(eval(arrayName),getMarkerTypeElem(lecode));
							mkTypeElem.isvisible =1 ;
						}
						eval(arrayName + '= new Array;');	
						//debug(' line 427: longueur nouveau tableau = ' + eval(arrayName + '.length') );			
					}
					else {
						// array jamais loadé, créer un nouveau tableau
						eval(arrayName + '= new Array();');
					}
					mkTypeElem.isloaded = 1;
				}	
				/****************************************************************
				Lire les donnés retournées en xml et les stoquer 
				dans le(s) tableaux approprié
				**************************************************************/
				loadXMLdansTableau(xmldoc) ;		
				imprimerMarker(code);
				if (afficherLesBiens == 1 ){/***** Afficher aussi les bien prés de ce point******/
					loaderBien();
				}
				
			}					
		};
  		httpRequest.open('GET', moduleURL, true);
		httpRequest.send(null) ;	
}

function showMarkers(tableauDeMarker,markerTypeElem) {
		var showall = 0;
		if (tableauDeMarker) {
			if (tableauDeMarker.length > 0 ) {
				for (var t=0; t < tableauDeMarker.length; t++ ) {
	 				if (maxLieumarkers > t || affichertout == 1 ){
						lieuxGoogleMap.addOverlay(tableauDeMarker[t].MARKER);
					}					
				}				
			}
		}
		markerTypeElem.isvisible = 1 ;
		afficherMarkerListetexte();		
		lieuxGoogleMap.removeOverlay(repmarker);
		lieuxGoogleMap.addOverlay(repmarker);
}



function recentrer(lat,long) {
	var center = new GLatLng(lat,long);
	//lieuxGoogleMap.setCenter(center, #attributes.gmapZoomLevel#);// 
	lieuxGoogleMap.setCenter(center, lieuxGoogleMap.getZoom());
}
function recentrerCible() {
	recentrer(centerlatitude,centerlongitude);
}

function afficherMinimun(){
	findObj('LienAffichageMarkers').innerHTML ='Afficher les ' + maxLieumarkers + ' premiers lieux - <a href="javascript: affichertous()"  class=rouge> Afficher tous.</a>';
	affichertout = 0;
	var code = '';
	var tableauDeMarker=''	
	for (var i=0; i< markerTypeListe.length; i++ ) {
			code = markerTypeListe[i].lieux_code;			
			if(markerTypeListe[i].isloaded == 1 && markerTypeListe[i].isvisible == 1) {
				var arrayName = 'markersCode' + code;
				tableauDeMarker = eval(arrayName);
				HideMarkers(tableauDeMarker,markerTypeListe[i])
				showMarkers(tableauDeMarker,markerTypeListe[i])		
			}
	}
}
var affichertout = 0;
function affichertous(){
	findObj('LienAffichageMarkers').innerHTML ='<a href="javascript: afficherMinimun()" class=rouge>Afficher les' + maxLieumarkers + ' premiers lieux</a> - Afficher tous.';
	affichertout = 1;
	var code = '';
	var tableauDeMarker=''	
	for (var i=0; i< markerTypeListe.length; i++ ) {
			code = markerTypeListe[i].lieux_code;			
			if(markerTypeListe[i].isloaded == 1 && markerTypeListe[i].isvisible == 1) {
				var arrayName = 'markersCode' + code;
				tableauDeMarker = eval(arrayName);
				HideMarkers(tableauDeMarker,markerTypeListe[i])
				showMarkers(tableauDeMarker,markerTypeListe[i])		
			}
	}

}
function markerLieu (lieu_code,lieu_nom, lieu_descriptif, lieu_adr, lieu_cdp, lieu_ville, lieu_tel, lieu_fax, lieu_email, lieu_web, lieu_photo, lieu_latitude, lieu_longitude,markerImg) {
		 this.lieu_code =lieu_code ;
		 this.lieu_nom =lieu_nom ;
		 this.lieu_descriptif =lieu_descriptif ;
		 this.lieu_adr =lieu_adr ;
		 this.lieu_cdp =lieu_cdp ;
		 this.lieu_ville =lieu_ville ;
		 this.lieu_tel =lieu_tel ;
		 this.lieu_fax =lieu_fax ;
		 this.lieu_email =lieu_email ;
		 this.lieu_web =lieu_web ;
		 this.lieu_photo =lieu_photo ;
		 this.lieu_latitude =lieu_latitude ;
		 this.lieu_longitude = lieu_longitude;	 
		 this.markerImg = markerImg;	
		 this.MARKER = null;
	}
