var map = null;
var geocoder = null;
var changed = false;
var mgr = null;

window.setTimeout(dispResults,100);

//-- Création d'un marqueur d'après les infos de la base de données
function createMarker(lat, lon, nom, items) {
  var point = new GLatLng(lat, lon);
  var marker = new GMarker(point);
   GEvent.addListener(marker,"click",function() {
    var out = "<b>"+nom+"</b><br/>";
    for(var i in items) {
      out = out + " - "+items[i]["desc"]+
          " (<a href='/details.php?id="+
          items[i]["num"]+"'>Details</a>)<br/>";
    }
     marker.openInfoWindowHtml(out);
   });
  return marker;
}

//-- Affichage des marqueurs d'après un résultat xml
function getmarkers(data) {
}

//-- affichage de l'adresse selon la position sur la carte
function showAdresse(adresse) {
  geocoder.getLatLng(
    adresse,
    function(point) {
      if(!point) {
        alert(adresse+" : adresse inconnue...\n vous pouvez essayer une recherche plus large\n (uniquement CP et ville, par exemple)");
      } else {
        map.setCenter(point,12);
      }
    }
  );
}

//-- mise à jour de l'affichage des catégories
function showCateg(cat) {
  remote.catSelect(cat);
  changed = true;
}

function parseFFloat(s) {
  return s.split(',').join('.');
}

function dispMapResults(d) {
  if(mgr == null)
    mgr = new MarkerManager(map);
  mgr.clearMarkers();
  var mlist = [];
  for(var m in d["lst"]) {
    mlist.push(createMarker(
      parseFFloat(d["lst"][m]["lat"]),
      parseFFloat(d["lst"][m]["lon"]),
      d["lst"][m]["nom"],
      d["lst"][m]["items"])
    );
  }
  mgr.addMarkers(mlist,1);
  mgr.refresh();
}

function dispTextResults(d) {
  document.getElementById("results").innerHTML = d.txt;

}


function dispResults() {
  window.setTimeout(dispResults,100);
  if(changed) {
    changed = false;
    var d = remote.getResults();
    dispTextResults(d);
    dispMapResults(d);
 }
}




function setUnsetCat(categid) {
  remote.catSelect(categid);
  changed = true;
}

$(document).unload(GUnload);
$(document).ready(function() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    geocoder = new GClientGeocoder();
    map.setCenter(new GLatLng(46.8000, 2.59277), 5);
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());

    GEvent.addListener(map, "moveend",function() {
      var sw = map.getBounds().getSouthWest();
      var ne = map.getBounds().getNorthEast();
      remote.setPosition(sw.lat(), sw.lng(), ne.lat(),ne.lng());
      //changed = true;
    });

    GEvent.addDomListener(map.getContainer(), "DOMMouseScroll",
    function(oEvent) { if (oEvent.preventDefault)
      oEvent.preventDefault(); });
    map.enableScrollWheelZoom();

    /* fix link */
    $('#catlist a').each(function (elem) {
      this.href = '#';
    });

    changed = true;
  }
});


