﻿var map;
var directionsPanel;
var directions;


function getDirections(lat, lon, start, end) 
{
  document.getElementById("directionsMapText").innerHTML= "";
  map = new VEMap("map");
  map.LoadMap();
  var options = new VERouteOptions;
  options.DrawRoute = true;
  options.SetBestMapView = false;
  options.RouteCallback = BingShowTurnsCallback;
  map.GetDirections([start, end], options);
}

function BingShowTurnsCallback(route) {
    var turns = "<table style='width: 579px;'><tbody><tr><td colspan='3' align='right'>";
    turns += route.Distance.toFixed(1) + " mi" + " (about " + BingGetTime(route.Time) + ")</td></tr>";

    var legs = route.RouteLegs;
    var leg = null;
    var turnNum = 0;

    for (var i = 0; i < legs.length; i++) {
        leg = legs[i];
        var legNum = i + 1;
        var turn = null;
        var legDistance = null;

        for (var j = 0; j < leg.Itinerary.Items.length; j++) {
            turnNum++;
            turn = leg.Itinerary.Items[j]; 
            turns += "<tr style='border-top: 1px solid rgb(205, 205, 205);'><td align='right'><b>" + turnNum + ".</b></td><td style='width: 100%; padding: 0.3em 3px;'>" + turn.Text + "</td><td style='padding: 0.3em 3px;'><nobr>";
            legDistance = turn.Distance;
            if (legDistance > 0) {
                turns += legDistance.toFixed(1) + " mi";
            }
        }
        turns += "</nobr></td></tr>";
    }
    turns += "</tbody></table>";
    document.getElementById("directionsMapText").innerHTML = turns;
}

function BingGetTime(time) {
    if (time == null) {
        return ("");
    }

    if (time > 60) {
        var seconds = time % 60;
        var minutes = time - seconds;
        minutes = minutes / 60;

        if (minutes > 60) {
            var minLeft = minutes % 60;
            var hours = minutes - minLeft;
            hours = hours / 60;
            return (hours + " hour(s), " + minLeft + " minutes");
        }
        else {
            return (minutes + " minutes");
        }
    }
    else {
        return (time + " seconds");
    }
}

function LoadMap(lat, lon, address) {
    var isLatLonPresent = (lat != 0 || lon != 0);   
    if (isLatLonPresent)
    {
        var map = new VEMap("mapContainer");
        map.LoadMap(new VELatLong(lat, lon), 17, VEMapStyle.Aerial, false);
    }
}

function GUnload() {
}
