// JScript source code
var map = null;

// Lat and Long of Sunset Coop
var LA = new VELatLong(47.51867159929949, -122.2021508216858);

var pinPoint = null;
var pinPixel = null;

function GetMap() {
    map = new VEMap('myMap');
    map.LoadMap(LA, 14, VEMapStyle.Road, false, VEMapMode.Mode2D, true, 1);

    AddPin();
}

function AddPin() {
    // Add a new pushpin to the center of the map.
    pinPoint = map.GetCenter();
    pinPixel = map.LatLongToPixel(pinPoint);
    map.AddPushpin(pinPoint);
}

function GetRouteMap(start) {
    var locations;
    
    locations = new Array(start, LA);

    var options = new VERouteOptions;

    // Otherwise what's the point?
    options.DrawRoute = true;

    // So the map doesn't change:
    options.SetBestMapView = false;

    // Call this function when map route is determined:
    options.RouteCallback = ShowTurns;

    // Show as miles
    options.DistanceUnit = VERouteDistanceUnit.Mile;

    // Show the disambiguation dialog
    options.ShowDisambiguation = true;

    map.GetDirections(locations, options);
}

function ShowTurns(route) {
    var turns = "<h3>Turn-by-Turn Directions</h3><h4>Zoom out to see more or the route map.</h4>";

    turns += "<p><b>Distance:</b> " + route.Distance.toFixed(1) + " miles";

    turns += "<br/><b>Time:</b> " + GetTime(route.Time) + "</p>";

    
    // Unroll route and populate DIV
    var legs = route.RouteLegs;
    var leg = null;
    var turnNum = 0;  // The turn #

    // Get intermediate legs
    for (var i = 0; i < legs.length; i++) {
        // Get this leg so we don't have to derefernce multiple times
        leg = legs[i];  // Leg is a VERouteLeg object

		//var legNum = i + 1;
        //turns += "<br/><b>Distance for leg " + legNum + ":</b> " + leg.Distance.toFixed(1) + " miles" +
          //             "<br/><b>Time for leg " + legNum + ":</b> " + GetTime(leg.Time) + "<br/><br/>";

        // Unroll each intermediate leg
        var turn = null;  // The itinerary leg
        var legDistance = null;  // The distance for this leg

        for (var j = 0; j < leg.Itinerary.Items.length; j++) {
            turnNum++;

            turn = leg.Itinerary.Items[j];  // turn is a VERouteItineraryItem object

            turns += "<b>" + turnNum + "</b>\t" + turn.Text;

            legDistance = turn.Distance;

            // So we don't show 0.0 for the arrival
            if (legDistance > 0) {
                // Round distances to 1/10ths
                turns += " (" + legDistance.toFixed(1) + " miles";

                // Append time if found
                if (turn.Time != null) {
                    turns += "; " + GetTime(turn.Time);
                }

                turns += ")<br/>";
            }
        }

        turns += "<br/>";
    }

    // Populate DIV with directions
    SetDirections(turns);
}

function SetDirections(s) {
    var d = document.getElementById("directions");
    d.innerHTML = s;
}

// time is an integer representing seconds
// returns a formatted string
function GetTime(time) {
    if (time == null) {
        return ("");
    }

    if (time > 60) {                                 // if time == 100
        var seconds = time % 60;       // seconds == 40
        var minutes = time - seconds;  // minutes == 60
        minutes = minutes / 60;    // minutes == 1


        if (minutes > 60) {                                     // if minutes == 100
            var minLeft = minutes % 60;        // minLeft    == 40
            var hours = minutes - minLeft;   // hours      == 60
            hours = hours / 60;          // hours      == 1

            return (hours + " hour(s), " + minLeft + " minute(s), " + seconds + " second(s)");
        }
        else {
            return (minutes + " minutes, " + seconds + " seconds");
        }
    }
    else {
        return (time + " seconds");
    }
}

function ClearAll() {
    map.DeleteRoute();
    SetDirections("");
    map.LoadMap(SeattleEastside, 8);
}

function PrintMap() {
    //Enable printing
    var printOpt = new VEPrintOptions(true);
    map.SetPrintOptions(printOpt);

    // Print the map 
    window.print();

}



