addEvent(window, 'load', mapLoad);
addEvent(window, 'unload', GUnload);

function mapLoad() {
  if ((GBrowserIsCompatible()&&document.getElementById("map"))&&(GMap2)) {
    try {
      var map = new GMap2(document.getElementById("map"));
    } catch (e) {
      location.reload();
    }
    map.setCenter(new GLatLng(52.504415,13.393106),15,G_HYBRID_MAP);
    map.addControl(new GLargeMapControl);
    GDownloadUrl("/xml/entries/map", function(data, responseCode) {
      var xml = GXml.parse(data);
      markers = xml.documentElement.getElementsByTagName("marker");
      reverseMarkers=new Array();
      markerArray = new Object();
      for (var i = 0; i < markers.length; i++) {
          var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
          var id=markers[i].getAttribute("id");
          reverseMarkers[id]=i;
          var newMarker=createMarker(point,(markers[i]),map,id,1,2);
          markerArray[id]=newMarker;
          map.addOverlay(markerArray[id]);
      }
      uri=document.URL;
      elements=uri.split('/');
      id=elements[elements.length-1];
      if ((id!='map')&&(id!='karte')){
         point=markerArray[id].getPoint();
         map.setCenter(point,17,G_HYBRID_MAP);
         GEvent.trigger(markerArray[id],'click');
         var buttons=getBrowseButtons(id);
         changeButtons(buttons);
      }
      var map_explain=document.getElementById('map_explain');
      map_explain.firstChild.data="Bedienung durch Klick auf die Markierungen und die blauen Navigationspfeile rechts oberhalb der Karte und den Schieberegler links in der Karte." ; 
      mapC=map; 
    });
  }
}

function createMarker(point, content, map, i,previous,next,is_draggable) {
  var header = content.getAttribute("header");
  var number = content.getAttribute("number_shown");
  var title = number+': '+header;
  var marker = new GMarker(point, {draggable:is_draggable,title:title});
  var sub_header = content.getAttribute("sub_header");
  var id=content.getAttribute("id");
  var html="<h1 style='font-size:.8em;margin:0;padding:0;width:15em;'>";
  html+="<span class='small number'>"+number+"</span>";
  html+="<a href='/entries/view/"+id+"'>"+header+"</a></h1><h2 style='border:0;margin:0;padding:0;  font-size:.8em;font-style:italic;font-weight:normal;width:15em;'>"+sub_header+"</h2>";
    GEvent.addListener(marker, "click", function() {   
      map.setCenter(point,17,G_HYBRID_MAP);
      marker.openInfoWindowHtml(html);
      var buttons=getBrowseButtons(id);
      changeButtons(buttons);
   });
   marker.html=html;
   return marker;
}
 

function getBrowseButtons(id){
  var html="";
  i=reverseMarkers[id];
  if (i>0&&markers[i-1]){ 
     previous=markers[i-1].getAttribute("id");
     html+="<a href='javascript:mapGoto("+previous+");' class='previous' title='Vorherige Station'><img src='/img/nav/previous.gif' class='previous' alt='zurück' /></a>";
  }
  if (markers[i+1]){
     next=markers[i+1].getAttribute("id");     
     html+="<a href='javascript:mapGoto("+next+");' class='next' title='Nächste Station'><img src='/img/nav/next.gif' alt='vor' class='next' /></a>";
  }
  return html;
}
  
function changeButtons(html){
  if (!document.getElementById('browse')){
    var browse_div=document.createElement('div');
    var div_id=document.createAttribute('id');
    div_id.nodeValue='browse';
    browse_div.setAttributeNode(div_id);
    browse_div.innerHTML=html;
    document.getElementById('content-main').insertBefore(browse_div,document.getElementsByTagName('h2')[0]);
  } else {
    document.getElementById('browse').innerHTML=html;
  }
  if (typeof(rolloverInit)=='function'){
    rolloverInit();
  }
}
  
function mapGoto(id){
   mapC.setCenter(markerArray[id].getPoint());
   GEvent.trigger(markerArray[id],'click');
}

function mapOverview(){
  mapC.returnToSavedPosition();
  mapC.closeInfoWindow();
}
