window.onload = function()
{
 if (GBrowserIsCompatible()) {// A function to create the marker and set up the event window
      function createMarker(type, point, name, html) {
        // FF 1.5 fix
        html = '<div style="white-space:nowrap;white-space:normal;width:300px;">' + html + '</div>';
        //style="white-space:nowrap;white-space:normal;width:300px;"
        // Création de l'icone
        var icon = new GIcon();
        icon.image = "images/"+type+".png";
        icon.shadow = "images/mm_20_shadow.png";
        icon.iconSize = new GSize(12, 20);
        icon.shadowSize = new GSize(22, 20);
        icon.iconAnchor = new GPoint(6, 20);
        icon.infoWindowAnchor = new GPoint(5, 1);
        
        
        var marker = new GMarker(point, icon);
        GEvent.addListener(marker, "click", function() {
          //majslidebarre(point);
          marker.openInfoWindowHtml(html);
        });
        
        return marker;
       }//dimension
       
      var m = document.getElementById("map");
      m.style.height = "40em";
      m.style.width = "55em";

      // create the map
      var map = new GMap(document.getElementById("map"));
      //map.setMapType(_HYBRID_TYPE);
      map.addControl(new GLargeMapControl());
      //map.addControl(new GMapTypeControl());
      //map.setCenter(new GPoint(1, 46.75), 11);
      map.setCenter(new GLatLng(46.75,1), 6);
      // Read the data from fic.xml
/*      var request = GXmlHttp.create();
      request.open("GET", "xml.php", true);
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          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++) {
            // obtain the attribues of each marker
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = new GLatLng(lat,lng);
            var html = markers[i].getAttribute("html");
            var label = markers[i].getAttribute("label");
            //style du marqueur

            // create the marker
            var marker = createMarker(point, label, html);
            map.addOverlay(marker);
          }      
        }
      }
      request.send(null);*/
  
  //recupere les coordonnÃ©es du click
  GEvent.addListener(map, "click", function(overlay, point) {
       //map.setMapType(G_HYBRID_MAP);
       map.setCenter(point, 6);
       
       currentZoom = map.getZoom();
       majslidebarre(point);
       //newzoom = currentZoom + 1;
       
       //majMarker(point)
       map.clearOverlays();
       var marker = createMarker('flag_orange', point, 'point', '');
       map.addOverlay(marker);
       getMarkerAnnonce(map, point.lng(), point.lat(), '20', '100');
       //map.setCenter(point, (currentZoom - 1));
       
  });
  
  /*
  GEvent.addListener(map, 'click', function(overlay, point) {
  if (overlay) {
	map.removeOverlay(overlay);
  }
});*/
  
  
  
  //met a jour les liens de recherche
  function majslidebarre(point) {

    getVillesProche(point.lng(), point.lat(), '20', '100');
    getAnnonces(point.lng(), point.lat(), '20', '100');
    //document.getElementById("lien-recherche").innerHTML = "lon: "+point.x+" lat: "+point.y+"<br>zoom:"+currentZoom;
   };
  
 function getAnnonces(lon, lat, nbr, km)
 {
 
    //envoi des données
    return !sendData(
       'liste_annonce',
       'GET',
       'geoannonce.api.php',
       'xmlhttp=1&'+
       'nom=annonce&lon='+lon+'&lat='+lat+'&nbr='+nbr+'&km='+km);
 }

 function getMarkerAnnonce(map, lon, lat, nbr, km)
 {
 
 
// Read the data from fic.xml
     var request = GXmlHttp.create();
      request.open("GET", "geoannonce.api.php?nom=markerannonce&lon="+lon+"&lat="+lat+"&nbr="+nbr+"&km="+km, true);
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          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++) {
            // obtain the attribues of each marker
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = new GLatLng(lat,lng);
            var html = markers[i].getAttribute("html");
            var label = markers[i].getAttribute("label");
            //style du marqueur

            // create the marker
            var marker = createMarker('house', point, label, html);
            map.addOverlay(marker);
          }      
        }
      }
      request.send(null);
 } 

 function getVillesProche(lon, lat, nbr, km)
 {
 
    //envoi des données
    return !sendData(
       'lien_recherche',
       'GET',
       'geoannonce.api.php',
       'xmlhttp=1&'+
       'nom=ville&lon='+lon+'&lat='+lat+'&nbr='+nbr+'&km='+km);
 }
   
  
  } else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    } 
}


 
 
 
 function getHTTPObject(type)
 {
 
 
  var xmlhttp = false;

  /* Compilation conditionnelle d'IE */
  /*@cc_on
  @if (@_jscript_version >= 5)
     try
     {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
     catch (e)
     {
        try
        {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
           xmlhttp = false;
        }
     }
  @else
     xmlhttp = false;
  @end @*/

  /* on essaie de créer l'objet si ce n'est pas déjà fait */
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
  {
     try
     {
        xmlhttp = new XMLHttpRequest();
     }
     catch (e)
     {
        xmlhttp = false;
     }
  }

  if (xmlhttp)
  {
  
     /* on définit ce qui doit se passer quand la page répondra */
     xmlhttp.onreadystatechange=function()
     {
        
        if (xmlhttp.readyState == 4) /* 4 : état "complete" */
        {
        
           if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
           {
              /*
              Traitement de la réponse.
              Ici on affiche la réponse dans une boîte de dialogue.
              */
           var liste = xmlhttp.responseText;

           if(type=="liste_annonce")
           {
            document.getElementById("liste_annonce").innerHTML = liste;
           }
           if(type=="lien_recherche")
           {
            document.getElementById("lien_recherche").innerHTML = liste;
           }
          }
        }
     }
  }
  return xmlhttp;
 }


 /**
  * Envoie des données à l'aide d'XmlHttpRequest?
  * @param string methode d'envoi ['GET'|'POST']
  * @param string url
  * @param string données à envoyer sous la forme var1=value1&var2=value2...
  */
 function sendData(type, method, url, data)
 {
    var xmlhttp = getHTTPObject(type);

    if (!xmlhttp)
    {
        return false;
    }

    if(method == "GET")
     {
     if(data == 'null')
     {
            xmlhttp.open("GET", url, true); //ouverture asynchrone
     }
     else
     {
            xmlhttp.open("GET", url+"?"+data, true);
     }
        xmlhttp.send(null);
     }
     else if(method == "POST")
     {
        xmlhttp.open("POST", url, true); //ouverture asynchrone
        xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     xmlhttp.send(data);
     
     }
    return true;
 }
 
