var route = null;

function humanizeStatusCode(code)
{
    switch(code)
    {
        case 200: return "Success";
        case 400: return "Bad request";
        case 500: return "Server error";
        case 601: return "Missing address";
        case 602: return "Unknown address";
        case 603: return "Unavailable address";
        case 604: return "Unknown route";
    }
}

function showDirections(targetAddress)
{
    var r = route.getRoute(0);
    var container = $('#directions');
    container.html('');
    container.append($('<h3>').addClass('bordered').addClass('lower').text('Ergebnis'))
    container.append($('<p>').text('Route nach ' + targetAddress));
    container.append($('<p>').html(r.getSummaryHtml()));
    container.append($('<h4>').addClass('padding_t5').addClass('padding_0').addClass('bold').text("Start"));
    container.append($('<h4>').addClass('padding_0').addClass('bold').html(r.getStartGeocode().address));

    var table = $('<table>').addClass("directions");

    var i = 0;

    for (i=0; i < r.getNumSteps(); ++i)
    {
        var row = $('<tr>');
        row.append($('<td>').addClass('first').html((i + 1) + '.'));
        row.append($('<td>').addClass('second').html(r.getStep(i).getDescriptionHtml()));
        row.append($('<td>').addClass('third').html(r.getStep(i).getDistance().html));
        table.append(row);
    }
    container.append(table);
    container.append($('<h4>').addClass('clear').addClass('padding_0').addClass('bold').html("Ziel"));
    container.append($('<h4>').addClass('padding_b10').addClass('padding_0').addClass('bold').html(targetAddress))
}

function getDirections(destination, targetAddress)
{
    if (route == null)
    {
        route = new GDirections(map);
        GEvent.addListener(route, 'error', function(obj) { alert(humanizeStatusCode(route.getStatus().code)); });
        GEvent.addListener(route, 'load', function(obj) { map.clearOverlays(); $('#directions').html(''); showDirections(targetAddress); });
    }
    from = $('#route_street').val() + ' ' + $('#route_number').val() + ', ' + $('#route_city').val();
    route.loadFromWaypoints([from, destination], {
        getSteps: true
      });
}

