// JavaScript Document
<!-- Driving Directions-->
var map;
var gdir;
var geocoder
var marker

var displayAddress = "<img src='../images/nhi_logo.png'><br>270 North ave.&nbsp;&nbsp;&bull;&nbsp;&nbsp;New Rochelle&nbsp;&nbsp;&bull;&nbsp;&nbsp; NY&nbsp;&nbsp;&bull;&nbsp;&nbsp;10801<br>phone: (914) 636 8455&nbsp;&nbsp;&bull;&nbsp;&nbsp;fax: (914) 712 2788<br><a href='mailto:info@nhiagency.com'>info@nhiagency.com</a><br><a href='../requestaquote/RequestAQuote.html'>Get A Quote<img src='../images/arrow_blue.png' /></a>";

var displayAddressB = "<b>nhi agency</b><br>270 North ave.<br>New Rochelle, NY 10801<br>phone: (914) 636 8455<br>fax: (914) 712 2788<br><a href='mailto:info@nhiagency.com'>info@nhiagency.com</a>";

var clientAddress = "270 North ave. New Rochelle NY, 10801";
var clientPhone = "(914) 636 8455";
var clientEmail = "<a href='mailto:info@nhiagency.com'>info@nhiagency.com</a>";






function initialize() {
  if (GBrowserIsCompatible()) {  
  	mapDiv = document.getElementById("map_canvas");
	mapDiv.style.color = "#0077bf";
	mapDiv.style.fontSize = "8px";
    map = new GMap2(mapDiv);
	directionsDiv = document.getElementById("directions");
	directionsDiv.style.color = "#0077bf";
	directionsDiv.style.backgroundColor="#f6f7f7";
    gdir = new GDirections(map, directionsDiv);
    GEvent.addListener(gdir, "error", handleErrors);
    GEvent.addListener(gdir, "addoverlay", onGDirectionsAddOverlay);
    map.setCenter(new GLatLng(0,0),0);
	var customUI = map.getDefaultUI();
    customUI.maptypes.hybrid = false;
    map.setUI(customUI);
	document.getElementById("directions").innerHTML = displayAddressB;
	geocoder = new GClientGeocoder();
	if (geocoder) {
        geocoder.getLatLng(clientAddress, function(point) {
            if (!point) {
              alert(clientAddress + " not found");
            } else {
              map.setCenter(point, 13);
              marker = new GMarker(point, {draggable: true,  title: 'My Location'});
              map.addOverlay(marker);
              marker.openInfoWindowHtml(displayAddress);
            }
          }
        );
      }
  }
}

function getDirections(){
	marker.closeInfoWindow();
	document.getElementById("directions").innerHTML = "";
	document.getElementById('warningTXT').innerHTML = "";
	document.getElementById('fromAddress').style.borderColor = "";
	var fromAdr 			=	document.getElementById('fromAddress').value;
	var toAdr 				=	clientAddress;
	var localeLang 			=	document.getElementById('locale').value;
	setDirections(fromAdr, toAdr, localeLang);
}

function setDirections(fromAddress, toAddress, locale) {
	gdir.load("from: " + fromAddress + " to: " + toAddress, { "locale": locale , "getSteps":true});
}
var errorImage = "<img src='../images/error.png'>";
function handleErrors(){
  if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS){
   document.getElementById('warningTXT').innerHTML = "<table cellpadding='0' cellspacing='0' border='0'><tr><td>" + errorImage+"</td><td valign='middle' class='warningTXT'>No corresponding geographic location could be found for the specified address.</td></tr></table>";
   //document.getElementById('fromAddress').style.borderColor = "#fe0410";
  }else if (gdir.getStatus().code == G_GEO_SERVER_ERROR){
    document.getElementById('warningTXT').innerHTML = "<table cellpadding='0' cellspacing='0' border='0'><tr><td>" + errorImage+"</td><td valign='middle' class='warningTXT'>Direction request could not be successfully processed.</td></tr></table>";
	//document.getElementById('fromAddress').style.borderColor = "#fe0410";
  }else if (gdir.getStatus().code == G_GEO_MISSING_QUERY){
    document.getElementById('warningTXT').innerHTML = "<table cellpadding='0' cellspacing='0' border='0'><tr><td>" + errorImage+"</td><td valign='middle' class='warningTXT'>The address was either missing or had no value.</td></tr></table>";
	//document.getElementById('fromAddress').style.borderColor = "#fe0410";
  }else if (gdir.getStatus().code == G_GEO_BAD_KEY){
    document.getElementById('warningTXT').innerHTML = "<table cellpadding='0' cellspacing='0' border='0'><tr><td>" + errorImage+"</td><td valign='middle' class='warningTXT'>The given key is either invalid or does not match the domain for which it was given.</td></tr></table>";
	//document.getElementById('fromAddress').style.borderColor = "#fe0410";
  }else if (gdir.getStatus().code == G_GEO_BAD_REQUEST){
    document.getElementById('warningTXT').innerHTML = "<table cellpadding='0' cellspacing='0' border='0'><tr><td>" + errorImage+"</td><td valign='middle' class='warningTXT'>A direction request could not be successfully parsed.</td></tr></table>";
   //document.getElementById('fromAddress').style.borderColor = "#fe0410";
  }else document.getElementById('warningTXT').innerHTML = "<table cellpadding='0' cellspacing='0' border='0'><tr><td>" + errorImage+"</td><td valign='middle' class='warningTXT'>An unknown error occurred.</td></tr></table>";
  // document.getElementById('fromAddress').style.borderColor = "#fe0410";
}
  
///////////////////////////////////////////////////////////////////////

/**
* The add-on code for draggable markers
* @author Esa 2008
*/
var newMarkers = [];
var latLngs = [];
var icons = [];

// Note the 'addoverlay' GEvent listener inside initialize() function of the original code (above).
// 'load' event cannot be used

function onGDirectionsAddOverlay(){ 
  // Remove the draggable markers from previous function call.
  for (var i=0; i<newMarkers.length; i++){
    map.removeOverlay(newMarkers[i]);
  }

  // Loop through the markers and create draggable copies
  for (var i=0; i<=gdir.getNumRoutes(); i++){
    var originalMarker = gdir.getMarker(i);
    latLngs[i] = originalMarker.getLatLng();
    icons[i] = originalMarker.getIcon();
    newMarkers[i] = new GMarker(latLngs[i],{icon:icons[i], draggable:true, title:'Draggable'});
    map.addOverlay(newMarkers[i]);

    // Get the new waypoints from the newMarkers array and call loadFromWaypoints by dragend
    GEvent.addListener(newMarkers[i], "dragend", function(){
      var points = [];
      for (var i=0; i<newMarkers.length; i++){
        points[i]= newMarkers[i].getLatLng();
      }
      gdir.loadFromWaypoints(points);
    });

    //Bind 'click' event to original markers 'click' event
    copyClick(newMarkers[i],originalMarker);

    // Now we can remove the original marker safely
    map.removeOverlay(originalMarker);
  }

  function copyClick(newMarker,oldMarker){
    GEvent.addListener(newMarker, 'click', function(){
      GEvent.trigger(oldMarker,'click');
    });
  }
}

