//<![CDATA[

var map;
var mapelement;
var geocoder;
var coordlng=[];
var coordlat=[];

// chargement de la carte google map
// dans le div passé en paramètre
function init_map(carte) 
{
  mapelement = document.getElementById(carte);
  if (GBrowserIsCompatible()) 
  {
    map = new GMap2(mapelement);
		
		// ajout des différents composants à la carte
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
    
    // gestion de la molette sur la carte		
		function mouseWheel(event) {
  		if (event.cancelable) event.preventDefault();
  		(event.detail ||- event.wheelDelta) < 0 ? map.zoomIn() : map.zoomOut();
  		return false;
		};
		
		// ajout des évenements permettant de gérer la molette
		GEvent.addDomListener(mapelement, "DOMMouseScroll", mouseWheel);
		GEvent.addDomListener(mapelement, "mousewheel", mouseWheel);
		
		// on centre la carte sur Manosque avec un facteur de zoom de 14
    map.setCenter(new GLatLng(43.827097,5.787199), 14);
    
    // initialisation geocoder pour recherche
    geocoder = new GClientGeocoder();
  }
}

// fonction de création d'un marqueur
function create_marker(point,icone,display1,display2,display3) 
{
  var marker = new GMarker(point,icone);
	
  var infoTabs = [
    new GInfoWindowTab("Infos", display1),
    new GInfoWindowTab("Adresse", display2)
  ];
  if (display3)
    infoTabs.push(new GInfoWindowTab("Photo", display3))
  
  GEvent.addListener(marker, "click", function() {
     marker.openInfoWindowTabsHtml(infoTabs);
  }); 

  return marker;
}

// charge un xml et affiche les données sur la carte
// on passe en paramètre la commune concernée et le nom de la carte à afficher
// la commune indique le nom du répertoire à utiliser
// la carte indique le fichier à utiliser
function affiche_carte(commune, carte)
{
  if (GBrowserIsCompatible()) 
  {
    // nettoyage
    map.clearOverlays();
  
    // lecture du fichier xml
    var request = GXmlHttp.create();
    var path="http://www.lecentre.net/ccldv/xml/"+commune+"/"+carte+".xml";
    request.open("GET", path, true);
    request.setRequestHeader("ContentType", "text/xml");
    request.onreadystatechange = function()
    {
      if (request.readyState == 4) 
      {
        var xmlDoc = request.responseXML;
        // récupération du tableau de marqueurs
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) 
        {
          // récupération des attributs de chaque marqueur
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          // stockage des coordonnées pour une recherche ultérieure
          coordlat.push(lat);
          coordlng.push(lng);
          var point = new GLatLng(lat,lng);
          var photo = markers[i].getAttribute("photo");
          var icone = markers[i].getAttribute("icone");
          var x = markers[i].getAttribute("x");
          var y = markers[i].getAttribute("y");
          var info = markers[i].getAttribute("info");
          if (info.length == 0) info = "";
          var adresse = markers[i].getAttribute("adresse");
          
          // chargement de l'icone
          // si la position n'est pas spécifiée
          // on fait un décalage par défaut de (0,20)
          if (x==null || y==null)
          {
            x=0;
            y=40;
          }
          
          var icon = new GIcon();
      		icon.image = "http://www.lecentre.net/ccldv/img/tri/icones/"+icone;
      		icon.shadow = "http://www.lecentre.net/ccldv/img/tri/icones/"+icone;
      		icon.iconAnchor = new GPoint(x, y);
      		icon.infoWindowAnchor = new GPoint(0, 0);
      		icon.infoShadowAnchor = new GPoint(0, 0);
          
          // onglet informations
          // la taille en dur est importante 
          // pour pouvoir supporter 3 onglets
          info = info.replace(/\\n/g,'<br/>');
          var html1 = '<div style="width:275px">'+info+'</div>';
          
          // onglet adresse
          adresse = adresse.replace(/\\n/g,'<br/>');
          var html2 = adresse + '<br/>';
          
          // onglet photo  
					var html3 = null;
          if (photo != null) {
            html3 = '<center><img src="http://www.lecentre.net/ccldv/img/tri/photos/' + photo + '" border="0"></center>';
          }
          
          // création du marqueur
          marker=create_marker(point,icon,html1,html2,html3);
          map.addOverlay(marker);
        }
      }
    }
    request.send(null);

  }

}

// fonction de recherche
// centre la vue sur le marker le plus proche du résultat
function recherche(commune, search)
{
  search+=','+commune;
  geocoder.getLatLng(search, 
  function(point){
    if (!point)
    {
      // recherche infructueuse
      alert("aucun résultat pour la recherche demandée");
    }
    else
    {
      // recherche du marker le plus pres
      var index=-1;
      var d2=9999999;
      for (var i = 0; i < coordlat.length; i++) 
      {
          var dx=(coordlat[i]-point.lat());
          var dy=(coordlng[i]-point.lng());
          var newd2=dx*dx+dy*dy;
          if (newd2<d2)
          {
            d2=newd2;
            index=i;
          }
      }
      // si la recherche a été fructueuse
      // on centrera sur le marker concerné
      if (index!=-1)
        point=new GLatLng(coordlat[index], coordlng[index]);
      
      // centrage sur ce marqueur
      map.setCenter(point, 16);
    }
  }
  )
}

//]]>

