// Les variables suivantes doivent être définies: 
// storistes_1
// storistes_2
// carte_niveau_1
// carte_niveau_2
// server_medias
// txt_navigateur_incompatible

var selected_marker;

function get_markers(niveau) {
  var markers = new Array();
  switch(niveau) {
    case 1 :
      var storistes = storistes_1;
      var icon = redIcon;
      break;
    case 2 :
      var storistes = storistes_2;
      var icon = blueIcon;
      break;
  }
  var storiste;
  for (i in storistes) {
    var latlng = new GLatLng(storistes[i][1], storistes[i][2]);
    var marker = new GMarker(latlng, {icon: icon, title: storistes[i][0]});
    GEvent.addListener(marker, "click", function() {
      selected_marker = this;
      var id = this.getTitle();
      $.get(server_medias + "pages/ajax/annuaire-infos.php", {id: id, niveau: niveau}, function(html) {
        selected_marker.openInfoWindowHtml(html);
      }, "HTML");
    });
    markers.push(marker);
  }
  return markers;
}

var redIcon = new GIcon();
redIcon.image = server_medias + "medias/images/mm_20_red.png";
redIcon.shadow = server_medias + "medias/images/mm_20_shadow.png";
redIcon.iconSize = new GSize(12, 20);
redIcon.shadowSize = new GSize(22, 20);
redIcon.iconAnchor = new GPoint(6, 20);
redIcon.infoWindowAnchor = new GPoint(5, 1);

var blueIcon = new GIcon();
blueIcon.image = server_medias + "medias/images/mm_20_blue.png";
blueIcon.shadow = server_medias + "medias/images/mm_20_shadow.png";
blueIcon.iconSize = new GSize(12, 20);
blueIcon.shadowSize = new GSize(22, 20);
blueIcon.iconAnchor = new GPoint(6, 20);
blueIcon.infoWindowAnchor = new GPoint(5, 1);

var map = null;
var mgr = null;
var default_lat = null;
var default_lng = null;
var default_zoom = null;
var adresse = null;
var geocoder = null;

function load_map(lat, lng, zoom) {
  if ($("#map_annuaire").attr('id') == 'map_annuaire') {
    default_lat = lat;
    default_lng = lng;
    default_zoom = zoom;
    if (GBrowserIsCompatible()) {
      map = new GMap2(document.getElementById("map_annuaire"));
      map.addControl(new GLargeMapControl());
      GEvent.addListener(map, "moveend", function() {
        var center = map.getCenter();
        $.get(server_medias + "pages/ajax/annuaire-map-save.php", {zoom: map.getZoom(), lat: center.lat(), lng: center.lng()});
			});
      reset_map();
      map.setMapType(G_NORMAL_MAP);
      mgr = new MarkerManager(map);
      var markers = get_markers(1);
      mgr.addMarkers(markers, carte_niveau_1);
      var markers = get_markers(2);
      mgr.addMarkers(markers, carte_niveau_2);
      mgr.refresh();
    }
    else {
      alert(txt_navigateur_incompatible);
    }
  }
}

function reset_map() {
  map.setCenter(new GLatLng(default_lat, default_lng), default_zoom);
}

function localize() {
  adresse = "";
  if ($('#adresse').attr('value')) {
    adresse += $('#adresse').attr('value');
  }
  else {
    return false;
  }
  if ($('#pays').attr('value')) {
    adresse += " " + $('#pays').attr('value');
  }
  if (geocoder == null) {
    geocoder = new GClientGeocoder();
  }
  geocoder.getLatLng(
    adresse,
    function(point) {
      if (!point) {
        alert( adresse + " not found");
      } else {
        map.setCenter(point, 9);
      }
    }
  );
}

$(document).ready(function() {
  $('#adresse').keypress(function (e) {
    if (e.which == 13) {
      localize();
    }
  });
  $('#adresse').change(function () {
    if (adresse != $('#adresse').attr('value')) {
      localize();
    }
  });
  $('#pays').keypress(function (e) {
    if (e.which == 13) {
      localize();
    }
  });
  $('#pays').change(function () {
    if (adresse != $('#adresse').attr('value')) {
      localize();
    }
  });
});