// Script interface avec Google Maps pour l'affichage des lieux de concerts
// Par Christophe Prunneaux pour Les Passagers, 2005

var markers = undefined;
var map = undefined;
var icon = undefined;
var iconnew = undefined;
var imarker = new Array();

var debug = undefined;

function CreateMarker(point, info, futur) {
  if (futur) {
    var marker = new GMarker(point, iconnew);
  }
  else {
    var marker = new GMarker(point, icon);
  }
  var html = info;
  GEvent.addListener(
    marker, 'click',
    function() {
      marker.openInfoWindowHtml(html);
      map.setZoom(15);
      map.setMapType( G_NORMAL_MAP );
    }
  );
  marker.OpenMarker = function() {
    GEvent.trigger(this, 'click');
  };
  return marker;
}

function AddMarker(lat, lgt, info, futur)
{   
  var point = new GPoint(lgt, lat);
  var marker = CreateMarker(point, info, futur);
  map.addOverlay(marker);
  return marker;
}	

function display_markers(disp_old_concerts) {
  // debug.innerHTML = "Adding markers...";
  map.setCenter(new GLatLng(46.95, 1.75), 6, G_HYBRID_MAP);
  map.clearOverlays();
  var nbconcerts = markers.length;
  var string = '';
  var infos = '';
  if (nbconcerts > 0) {
    var has_futurs = 0;
    for (var i = 0; i < markers.length; i++) {
      infos = '<span class="date">' + markers[i].getAttribute("date")
        + ' ' + markers[i].getAttribute("time") 
        + '</span><br /><span class="lieu">' + markers[i].getAttribute("lieu")
        + '</span><br /><em>' + markers[i].getAttribute("descr")
        + '</em><br />' + markers[i].getAttribute("details");
      if (markers[i].getAttribute("futur") == "1") {
        has_futurs = 1;
        string += '<div class="concertbox">';
        if (markers[i].getAttribute("lat") != '') {
          imarker[i] = AddMarker(
            parseFloat(markers[i].getAttribute("lat")),
            parseFloat(markers[i].getAttribute("lgt")),
            '<div class="concertbox">' + infos + '</div>', 1
          );
          string += '<a href="javascript:imarker['+i+'].OpenMarker();"><img style="display:block; float:left; border:none" src="http://labs.google.com/ridefinder/images/mm_20_yellow.png" /></a>'
        }
        string += infos + "</div>\n";
      }
      else {
        if (disp_old_concerts && markers[i].getAttribute("lat") != '') {
          AddMarker(
            parseFloat(markers[i].getAttribute("lat")),
            parseFloat(markers[i].getAttribute("lgt")),
            '<div class="concertbox">' + infos + '</div>', 0
          );
        }
      }
    }
    if (!has_futurs) {
      document.getElementById("noplanning").style.display = "block";
    }
    document.getElementById("liste").innerHTML = string;
  }
  // debug.innerHTML = "OK";
}

function auloadage() {
  
  // debug = document.getElementById("debug");
  // debug.innerHTML = "Loading icons...";
  
  if (GBrowserIsCompatible()) {
    document.getElementById("txtlist").style.display = 'none';
    document.getElementById("map").style.display = 'block';
    document.getElementById("guide").style.display = 'block';
    
    // Chargement image marqueur concert passé
    icon = new GIcon();
    // debug.innerHTML = "First icon...";
    icon.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
    icon.shadow = "http://labs.google.com/ridefinder/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);
    
    // Chargement image marqueur futur concert
    iconnew = new GIcon();
    iconnew.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
    iconnew.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
    iconnew.iconSize = new GSize(12, 20);
    iconnew.shadowSize = new GSize(22, 20);
    iconnew.iconAnchor = new GPoint(6, 20);
    iconnew.infoWindowAnchor = new GPoint(5, 1);
    
    // debug.innerHTML = "Loading map...";
    map = new GMap2(document.getElementById("map"));
    // debug.innerHTML = "adding small zoom control";
    map.addControl(new GSmallZoomControl());
    // debug.innerHTML = "adding type control";
    map.addControl(new GMapTypeControl());
    // debug.innerHTML = "adding overview control";
    map.addControl(new GOverviewMapControl());
    // debug.innerHTML = "adding scale control";
    // map.addControl(new GScaleControl());
    // debug.innerHTML = "set type";
    // map.setMapType( G_SATELLITE_MAP );
    // debug.innerHTML = "set center zoom and type";
    // map.setCenter(new GLatLng(46.95, 1.75), 6, G_HYBRID_MAP);
    
    // debug.innerHTML = "Creating XML request...";
    var request = GXmlHttp.create();
    request.open("GET", "markers.xml", true);
    request.onreadystatechange = function() {
      if (request.readyState == 4) {
        var xmlDoc = request.responseXML;
        markers = xmlDoc.documentElement.getElementsByTagName("marker");
        display_markers(0);
      }
    };
    request.send(null);
    // debug.innerHTML = "XML request sent...";
  }
  else {
    document.getElementById("nocompat").style.display = 'block';
  }
}

window.onload = auloadage;
