
// Our todd map controller object
var mymap;

// Last bounds (prevent requesting overlays twice)
var lastbounds;

// Move handler timeout
var movetimeout = null;

var mapCanvas;

function LoadMap(StartCoord, StartZoom)
{
  mapCanvas = document.getElementById("mapcanvas");

  mymap = toddGM_Initialize("mapcanvas", { maptype: "map"
                                         , center: StartCoord
                                         , zoom: StartZoom
                                         , moveable: true
                                         , iconsize: 30
                                         , OnInitialized: MapInitialized
                                         , OnOverlayClick: OverlayClicked
                                         //, OnMoveStart: CloseInfoWindow
                                         //, OnMoveEnd: CloseInfoWindow
                                         //, CloseInfoWindow: CloseInfoWindow
                                         });

  mymap.map.disableScrollWheelZoom();
}

function UnloadMap()
{
  toddGM_DeInit(mymap);
}

function MapInitialized()
{
  mymap.map.addControl(new nmk_ZoomControl());
}

function OverlayClicked(overlay)
{
  var latLng = overlay.marker.getLatLng();

  var directionsLink = '<a class="gmaplink" href="http://maps.google.nl/maps?daddr=' + overlay.address + '">Routebeschrijving</a>';

  mymap.map.openInfoWindowHtml(latLng
                             , '<div class="markertext"><b>' + overlay.title + '</b><br />'
                             + overlay.description + "<br />"
                             + "<br />"
                             + directionsLink
                             + "</div>");
}

///////////////////////////////////////////////////////////////////////////////
// Zoom control

function nmk_ZoomControl()
{
  this.buttons = new Object;
}
nmk_ZoomControl.prototype = new google.maps.Control();

// Called by google.maps.Map2.addControl()
nmk_ZoomControl.prototype.initialize = function nmk_ZoomControl_initialize(map)
{
  this.map = map;

  // Create a container for our buttons
  this.node = document.createElement("div");
  this.node.style.textAlign = "center";

  var self = this;
  // Create our buttons buttons and add them to the container
  this.buttons.zoomin = this.CreateButton("zoomin", function(e) { self.ZoomIn(e); }, this.node);
  this.buttons.zoomout = this.CreateButton("zoomout", function(e) { self.ZoomOut(e); }, this.node);

  // Insert our button container in the map controls container
  this.map.getContainer().appendChild(this.node);
  return this.node;
}

// Called by google.maps.Map2.addControl()
nmk_ZoomControl.prototype.getDefaultPosition = function nmk_ZoomControl_getDefaultPosition()
{
  // Position this control at the top left corner, at 8 pixels from the map's edge
  return new google.maps.ControlPosition(G_ANCHOR_TOP_LEFT, new google.maps.Size(8, 6));
}

nmk_ZoomControl.prototype.DeInit = function nmk_ZoomControl_DeInit()
{
  for (var b in this.buttons)
    if (this.buttons[b])
      google.maps.Event.clearInstanceListeners(this.buttons[b]);
}

nmk_ZoomControl.prototype.CreateButton = function nmk_ZoomControl_CreateButton(buttonimage, callback, parent)
{
  var button = document.createElement("img");
  button.src = "/design/images/" + buttonimage + ".png";
  button.width = 30;
  button.height = 32;

  button.map = this.map;
  button.style.cursor = "pointer";
  google.maps.Event.addDomListener(button, "click", callback);
  parent.appendChild(button);
  return button;
}

nmk_ZoomControl.prototype.ZoomIn = function nmk_ZoomControl_ZoomIn()
{
  this.map.zoomIn();
}

nmk_ZoomControl.prototype.ZoomOut = function nmk_ZoomControl_ZoomOut()
{
  this.map.zoomOut();
}

