/* Objet markerList - contient toutes les listes de markers */
var markerList = function(){
  this.creches = new Array();
  // this.maternelles = new Array();
  // this.ecoles = new Array();
  // this.colleges = new Array();
  this.lycees = new Array();
  this.metros = new Array();
  this.soins = new Array();
}
/* ############ */

/* Variable Globale */
window.markersList = new markerList();

var baseIcon = new GIcon();
baseIcon.iconSize = new GSize(32, 32);
// baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(16, 16);
baseIcon.infoWindowAnchor = new GPoint(16, 16);
// baseIcon.infoShadowAnchor = new GPoint(18, 25);

/* ############# */

/* Les fonctions */
function createMarker(point,html,type) {/* Créer un marker */
  var pictureIcon = new GIcon();
  pictureIcon.iconSize = new GSize(24, 24);
  // baseIcon.shadowSize = new GSize(37, 34);
  pictureIcon.iconAnchor = new GPoint(12, 12);
  pictureIcon.infoWindowAnchor = new GPoint(12, 12);
  pictureIcon.image = "http://statics.appartavenue.com/img/common/gmap/icon" + type + ".png";
  // Set up our GMarkerOptions object
  markerOptions = { icon:pictureIcon };
  var marker = new GMarker(point, markerOptions);
  // GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
  GEvent.addListener(marker, "click", function() {
    $('#testInfoTextDefault').hide();
    $('#testInfoText').show();
    document.getElementById("testInfoText").innerHTML = html;
  });
  return marker;
}
function toggleMarkers(typeMarker){/*Toggle sur l'affichage d'une liste de markers */
  if(window.document.getElementsByName(typeMarker)[0].checked){
    getMarkers(typeMarker);
  }
  else{
    removeMarkers(typeMarker);
    if(!window.document.getElementsByName("creches")[0].checked
    && !window.document.getElementsByName("lycees")[0].checked
    && !window.document.getElementsByName("soins")[0].checked
    && !window.document.getElementsByName("metros")[0].checked){
      $('#testInfoTextDefault').show();
      $('#testInfoText').hide();
    }
  }
}
function endMove(){/* Met à jour toutes les listes de markers en cours d'affichage */
  if(window.document.getElementsByName("lycees")[0].checked){
    removeMarkers("lycees");
    getMarkers("lycees");
  }
  if(window.document.getElementsByName("creches")[0].checked){
    removeMarkers("creches");
    getMarkers("creches");
  }
  if(window.document.getElementsByName("metros")[0].checked){
    removeMarkers("metros");
    getMarkers("metros");
  }
  if(window.document.getElementsByName("soins")[0].checked){
    removeMarkers("soins");
    getMarkers("soins");
  }
}
function getMarkers(typeMarker){/* Recupere les markers */
  if(map.getZoom() > 13){
    var bounds = map.getBounds();
    var southWest = bounds.getSouthWest();
    var northEast = bounds.getNorthEast();
    var lat1 = southWest.lat();
    var lng1 = southWest.lng();
    var lat2 = northEast.lat();
    var lng2 = northEast.lng();
    var request = GXmlHttp.create();
    request.open("GET", "/ajax/marks.php?typeMarker="+typeMarker+"&lat1="+lat1+"&lng1="+lng1+"&lat2="+lat2+"&lng2="+lng2+"&ajmarkggmap="+$('#ajmarkggmap').val(), true);
    request.onreadystatechange = function() {
      if (request.readyState == 4) {
        var xmlDoc = GXml.parse(request.responseText);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        
        
        for (var loop1=0;loop1<markers.length;loop1++){
          var lat = parseFloat(markers[loop1].getAttribute("lat"));
          var lng = parseFloat(markers[loop1].getAttribute("lng"));
          var point = new GLatLng(lat,lng);
          switch(typeMarker){
            case "lycees":
                var ville = markers[loop1].getAttribute("ville");
                var adresse = markers[loop1].getAttribute("adresse");
                var nom = markers[loop1].getAttribute("nom");
                var html = nom+"<br/>"+adresse+"<br/>"+ville;
                var marker = createMarker(point,html,typeMarker);
                window.markersList.lycees.push(marker);
              break;
            case "creches":
                var ville = markers[loop1].getAttribute("ville");
                var adresse = markers[loop1].getAttribute("adresse");
                var nom = markers[loop1].getAttribute("nom");
                var html = nom+"<br/>"+adresse+"<br/>"+ville;
                var marker = createMarker(point,html,typeMarker);
                window.markersList.creches.push(marker);
              break;
            case "metros":
                var nom = markers[loop1].getAttribute("nom");
                var lignes = markers[loop1].getAttribute("lignes");
                var societe = markers[loop1].getAttribute("societe");
                var html = "Station: "+nom+" - "+societe+"<br/>Lignes: "+lignes;
                var marker = createMarker(point,html,typeMarker);
                window.markersList.metros.push(marker);
              break;
            case "soins":
                var nom = markers[loop1].getAttribute("nom");
                var adresse = markers[loop1].getAttribute("adresse");
                var ville = markers[loop1].getAttribute("ville");
                var cp = markers[loop1].getAttribute("cp");
                var tel = markers[loop1].getAttribute("tel");
                var html = nom+"<br/>"+adresse+"<br/>"+cp+" "+ville+"<br/>TÃ©l: "+tel;
                var marker = createMarker(point,html,typeMarker);
                window.markersList.soins.push(marker);
              break;
            default :
              break;
          }
        }
        for(var iMark = 0; iMark < getList(typeMarker).length; iMark++){
          map.addOverlay(getList(typeMarker)[iMark]);
        }
      }
    }
    request.send(null);
  }
}
function removeMarkers(typeMarker){/* Efface les makers */
  for(var iMark = 0; iMark < getList(typeMarker).length; iMark++){
    map.removeOverlay(getList(typeMarker)[iMark]);
  }
  while(getList(typeMarker).length > 0){
    getList(typeMarker).pop();
  }
}
function getList(listMarker){/* Recupere une liste de markers */
  switch(listMarker){
    case "lycees":
      return window.markersList.lycees;
      break;
    case "creches":
      return window.markersList.creches;
      break;
    case "metros":
      return window.markersList.metros;
      break;
    case "soins":
      return window.markersList.soins;
      break;
    default :
    
      break;
  }
}
/* ############# */

