    //<![CDATA[
	function addLoadEvent(laFonction) { 
        var oldonload = window.onload; 
        if (typeof window.onload != 'function'){ 
                window.onload = laFonction ;
        } else { 
                window.onload = function() { 
                        oldonload(); 
                        laFonction(); 
                } 
        } 
	} 
	
	addLoadEvent(loadMap);  //chargement de la carte sur le onload de la page
			   
	function decodeStr(chaine) {
		chaine = chaine.replace(/&#128;/g, '€');		
		chaine = chaine.replace(/&#139;/g, '<');
		chaine = chaine.replace(/&#155;/g, '>');
		return chaine;
	}

    var iconBlue = new GIcon(); 
    iconBlue.image = 'images/icon_1.png';
    iconBlue.shadow = 'images/ombre_1.png';
   	iconBlue.iconSize = new GSize(19, 29);
   	iconBlue.shadowSize = new GSize(34, 30);
  	iconBlue.iconAnchor = new GPoint(10, 29);
   	iconBlue.infoWindowAnchor = new GPoint(10, 10);
	
	var iconOrange = new GIcon(); 
    iconOrange.image = 'images/icon_2.png';
    iconOrange.shadow = 'images/ombre_1.png';
   	iconOrange.iconSize = new GSize(19, 29);
   	iconOrange.shadowSize = new GSize(34, 30);
  	iconOrange.iconAnchor = new GPoint(10, 29);
   	iconOrange.infoWindowAnchor = new GPoint(10, 10);
	
	var customIcons = [];
    customIcons["1"] = iconBlue;
    customIcons["3"] = iconOrange;
	var markerGroups = { "1": [], "3": []};
	
	// arrays to hold copies of the markers and html used by the side_bar
	// because the function closure trick doesnt work there
	var gmarkers = [];
	var k = 0;	
	
	function toggleGroup(type) {
      for (var i = 0; i < markerGroups[type].length; i++) {
        var marker = markerGroups[type][i];
        if (marker.isHidden()) {
          marker.show();
        } else {
          marker.hide();
        }
      } 
    }
		
    function loadMap() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
       
	    // Read the data from location.xml 
        var request = GXmlHttp.create(); 
        request.open("GET", "genMarkersExpo.php", true); 
        request.onreadystatechange = function() { 
        if (request.readyState == 4) { 
		  document.getElementById('waitImage').innerHTML = "";  //on cache l'image d'attente
		  document.getElementById('map').style.visibility="visible";	//et on affiche la carte
		  
		  map.addControl(new GSmallMapControl());
          // map.addControl(new GMapTypeControl());
		
		  //carte centrée de la Bretagne
		  map.setCenter(new GLatLng(48.09275716032735, -3.087158203125), 8);
		
		  // Autorise le double click permettant de zoomer
		  map.enableDoubleClickZoom() ;
		  //Zoom progressif 
	      map.enableContinuousZoom(); 
		
          var xmlDoc = request.responseXML; 
          // obtain the array of markers and loop through it 
          var markers = xmlDoc.documentElement.getElementsByTagName("marker"); 
          for (var i = 0; i < markers.length; i++) {
            var expo = markers[i].getAttribute("expo");
			var etat = markers[i].getAttribute("etat");
            var lieu = markers[i].getAttribute("lieu");
			var affiche = markers[i].getAttribute("affiche");
			var dateExpo = markers[i].getAttribute("date");
			var description = decodeStr(markers[i].getAttribute("description"));
			var url = markers[i].getAttribute("url");
			var details = decodeStr(markers[i].getAttribute("details"));
			var vernissage = decodeStr(markers[i].getAttribute("vernissage"));
			var payant_txt = "";
			if(markers[i].getAttribute("payant") == "0") {
				payant_txt = "non";
			}else{
				if(markers[i].getAttribute("payant") == "1") { payant_txt = "oui (" + decodeStr(markers[i].getAttribute("payant_detail")) + ")"; }
				if(markers[i].getAttribute("payant") == "2") { payant_txt = "selon (" + decodeStr(markers[i].getAttribute("payant_detail")) + ")"; }
			}
			var auteur = markers[i].getAttribute("auteur");
			var auteur_email = markers[i].getAttribute("auteur_email");	
			var photos = markers[i].getAttribute("photos");	
			var docs = decodeStr(markers[i].getAttribute("documents"));
            var point = new GLatLng(parseFloat(markers[i].getAttribute("latitude")),
                                    parseFloat(markers[i].getAttribute("longitude")));
			var nomMarker =  markers[i].getAttribute("expo"); 
            var marker = createMarker(point, expo, lieu, affiche, dateExpo, description, details, vernissage, url, payant_txt, photos, docs, auteur, auteur_email, nomMarker, etat);
            map.addOverlay(marker);
          }
        //});
	 
	 		//décodage des paramètres passés en url pour afficher une info-bulle particulière
			var query = window.location.search.substring(1); 
			var pairs = query.split(","); 
			for (var i=0; i<pairs.length; i++) { 
			  var pos = pairs[i].indexOf("="); 
			  var argname = pairs[i].substring(0,pos); 
			  var value = pairs[i].substring(pos+1); 
			  if (argname == "expo_id") { 
				var mymarker = parseInt(unescape(value)); 
				myclick(mymarker); 
			  } 
			} 
			
        } else{
			document.getElementById('waitImage').innerHTML = "<br/><br/><span class='titreBleu'><b>Veuillez patienter pendant le chargement de la carte ...</b><br/><br/><img src='images/ajax-loader.gif'>";
			document.getElementById('map').style.visibility="hidden";
		}
      } 
      request.send(null); 
     }
    }

    function createMarker(point, expo, lieu, affiche, dateExpo, description, details, vernissage, url, payant_txt, photos, docs,  auteur, auteur_email, nomMarker, etat) {
		var marker = new GMarker(point, customIcons[etat]);
      	markerGroups[etat].push(marker);

		var strExpo1 = "<table width='350' border=0 cellspacing=0 cellpadding=0>";
		strExpo1 += "<tr><td colspan=3 align='left'><span class='linkretour'>"+expo+"</span></td></tr>";
		if(affiche != '') {
			strExpo1 += "<tr><td width='100' valign='top'><img align='left' src='documents/affiches/expos/"+affiche+"' border=0 class=imgInfoWindow></td>";
			strExpo1 += "<td width='5'><img src='images/blank.gif' width='5'></td>";
			strExpo1 += "<td width='250' align='left' class='description'><b>"+lieu+"</b><br>"+dateExpo+"<br><br>";
		}else{
			strExpo1 += "<tr>";
			strExpo1 += "<td width='5'><img src='images/blank.gif' width='5'></td>";
			strExpo1 += "<td width='295' align='left' class='description'><b>"+lieu+"</b><br>"+dateExpo+"<br><br>";
		}
		strExpo1 += description;
		if(auteur != '' && auteur != 'vero') {
			strExpo1 += "<br><br>(<i>proposé par <b><a href='mailto:" + auteur_email + "'>" + auteur + "</a></b></i>)";
		}
		strExpo1 += "</td></tr>";
		strExpo1 += "</table>";	  
	  
		var strExpo2 = "<table width=350 border=0 cellspacing=0 cellpadding=0><td colspan='3' class='linkretour' align='left'>" + expo + "</td></tr>";
		strExpo2 += "<tr><td colspan='3'><hr size=1 width=350 align=left></td></tr>";
		if(photos != '') {
			strExpo2 += "<tr>";
			var temp = new Array();
			temp = photos.split('#');
			var cpt = 0;
			for (var i=0; i < temp.length; i++) {
				cpt += 1;
				if(cpt > 3) {
					strExpo2 += "</tr><tr><td colspan='3'><img src='images/blank.gif' height='5'></td></tr><tr>";
					cpt = 0;
				} 
				strExpo2 += "<td align='center' valign='middle' width='110'><a href='http://www.atraverslobjectif.com/photos/" + temp[i] + "_gde.jpg' class='highslide' onclick='return hs.expand(this);'><img src='http://www.atraverslobjectif.com/photos/" + temp[i] + ".jpg' border='0' valign='middle'></a>";
				strExpo2 += "</td>";
			}
			if(temp.length=1) {
				strExpo2 += "<td align='center' valign='middle' width='110'><img src='images/blank.gif' height='5'></td>"
			}
			strExpo2 += "</tr>";
		}	
		strExpo2 += "</table>";	
	
		var strExpo3 = "<table width=350 border=0 cellspacing=0 cellpadding=0><td class='linkretour' align='left'>" + expo + "</td></tr>";
		strExpo3 += "<tr><td><hr size=1 width=350 align=left></td></tr>";
		strExpo3 += "<tr><td align='left' class='descriptionBulle'><a class='liensrubrique'>D&eacute;tails</a> : " + details + "</td></tr>";
		strExpo3 += "<tr><td><img src='images/blank.gif' height=5></td></tr>";
		if(vernissage != '') {
			strExpo3 += "<tr><td align='left' class='descriptionBulle'><a class='liensrubrique'>Vernissage</a> : " + vernissage + "</td></tr>";
			strExpo3 += "<tr><td><img src='images/blank.gif' height=5></td></tr>";
		}
		strExpo3 += "<tr><td align='left' class='descriptionBulle'><a class='liensrubrique'>Payant</a> : " + payant_txt + "</td></tr>";
		strExpo3 += "<tr><td><img src='images/blank.gif' height=5></td></tr>";
		if(docs != '') {
			strExpo3 += "<tr><td align='left' class='descriptionBulle'><a class='liensrubrique'>Documents</a> : ";
			var temp = new Array();
			temp = docs.split('#');
			var cpt = 0;
			for (var i=0; i < temp.length; i++) {
				var doc = temp[i].split('$')[0];
				var titre = temp[i].split('$')[1];
				strExpo3 +=  "<a href='documents/docs/" + doc + "' target='_blank'>"+ titre + "</a><img src='images/espace.gif' width=5 height=1>&nbsp;&nbsp;&nbsp;";
			}		
			strExpo3 += "</td></tr>";
		}
		if(url != '') {
			strExpo3 += "<tr><td align='left' class='descriptionBulle'><a class='liensrubrique'>Plus d'infos</a> : <a  href='" + url + "' target=\"_blank\">" + url + "</a></td></tr>";
		}
		strExpo3 += "</table>";	
		
	  
      GEvent.addListener(marker, 'click', function() {
	   	if(photos == '') {
	  		var infoTabs = [new GInfoWindowTab("Expo",strExpo1),new GInfoWindowTab("Infos", strExpo3)];
		}else{
			var infoTabs = [new GInfoWindowTab("Expo",strExpo1),new GInfoWindowTab("Photos", strExpo2),new GInfoWindowTab("Infos", strExpo3)];
		}
		marker.openInfoWindowTabsHtml(infoTabs);
		
      });
	  
	  // save the info we need to use later for the side_bar
      gmarkers[k] = marker;
      // add a line to the side_bar html
      //side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
      k++;
		
      return marker;
    }


    // This function picks up the click and opens the corresponding info window
    function myclick(k) {
		if(gmarkers[k]) {
	  		GEvent.trigger(gmarkers[k], 'click');
		}
    }		
    //]]>

