var map;
var gdir;
var geocoder = null;
var addressMarker;
var initLat = 51.869549;
var initLng = 5.321417;
var initAddr = 'Meersteeg 15, Geldermalsen, Nederland';    

function initialize() {
  if( GBrowserIsCompatible() ) {      
    map = new GMap2(document.getElementById("mapdiv"));
    map.setUIToDefault();
    
    if( $('#initLat').length > 0 )
      initLat = $('#initLat').val();  
    if( $('#initLng').length > 0 )
      initLng = $('#initLng').val();
    if( $('#initAddr').length > 0 )
      initAddr = $('#initAddr').val();      
    
    
    var point = new GLatLng( initLat, initLng);
    map.setCenter(point, 15);
    map.addOverlay(new GMarker(point));
    
    
    gdir = new GDirections(map, document.getElementById("directions"));
    GEvent.addListener(gdir, "addoverlay", onGDirectionsLoad);
    GEvent.addListener(gdir, "error", handleErrors);

    //setDirections("Palo Alto", "Mountain View", "nl_NL");
  }
}

function setDirections( fromAddress ) {
  gdir.load("from: " + fromAddress + " to: " + initAddr, { "locale": "nl_NL" } );
}

function handleErrors() {
  if( gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS )
    alertMe( "Het adres van het vertrekpunt kan niet worden gevonden. Dit kan worden veroorzaakt doordat het een relatief nieuw adres is, of omdat het adres verkeerd is ingevoerd." );
  else if( gdir.getStatus().code == G_GEO_SERVER_ERROR )
    alertMe( "Om een onbekende oorzaak kan de routebeschrijving niet worden geladen." );
  else alertMe("Er is een onbekende fout opgetreden.");
}

function alertMe( msg ) {
  $('#addressMessage').html( msg );
  $('#addressMessageRow').show();  
}

function onGDirectionsLoad(){ 
  var poly = gdir.getPolyline();

  
  var baseUrl = "http://maps.google.com/staticmap?";
  
  var params = [];
  var markersArray = [];
  markersArray.push(poly.getVertex(0).toUrlValue(5) + ",greena");
  markersArray.push(poly.getVertex(poly.getVertexCount()-1).toUrlValue(5) + ",greenb");
  params.push("markers=" + markersArray.join("|"));
  
  var polyParams = "rgba:0x0000FF80,weight:5|";
  var polyLatLngs = [];
  
  var polys = poly.getVertexCount();

  for( var j = 0; j < 40; j++) {
    polyLatLngs.push(poly.getVertex(j).lat().toFixed(5) + "," + poly.getVertex(j).lng().toFixed(5));
  }
  for( var j = ( polys - 40 ); j < polys; j++) {
    polyLatLngs.push(poly.getVertex(j).lat().toFixed(5) + "," + poly.getVertex(j).lng().toFixed(5));
  }
  
  params.push("path=" + polyParams + polyLatLngs.join("|"));
  params.push("size=245x245");
  params.push("key=ABQIAAAASe3l9rbWFlTJxSBwRLdNlhQcBdiEZ7mB5LNtz0TS04HQOzbHuhRb7IpJmfQG1usRzEZICMgkAkVBJw");
  
  baseUrl += params.join("&");
  
  /*
  var extraParams = [];
  extraParams.push("center=" + map.getCenter().lat().toFixed(6) + "," + map.getCenter().lng().toFixed(6));
  extraParams.push("zoom=" + map.getZoom());
  addImg(baseUrl + "&" + extraParams.join("&"), "staticMapOverviewIMG");
  */
  
  var extraParams = [];
  extraParams.push("center=" + poly.getVertex(0).toUrlValue(5));
  extraParams.push("zoom=" + 13);
  addImg(baseUrl + "&" + extraParams.join("&"), "staticMapStartIMG");
  
  var extraParams = [];
  extraParams.push("center=" + poly.getVertex(poly.getVertexCount()-1).toUrlValue(5));
  extraParams.push("zoom=" + 13);
  addImg(baseUrl + "&" + extraParams.join("&"), "staticMapEndIMG");
}

function addImg(url, id) {
  var img = document.createElement("img");
  img.src = url;
  document.getElementById(id).innerHTML = "";
  document.getElementById(id).appendChild(img);
}


$(document).ready( function() { initialize(); } );
