﻿var map;
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var panorama;
var marker;


/*/ Moved to jQuery SCripts //
$(document).ready(function () {
    loadMapFromSelectedLocation();
    $("#routeFrom").keypress(function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13) {
            calcRoute();
            return false;
        }
    });  

});
*///

function loadMapFromSelectedLocation() {
    mapElm = $('#googleMap')[0];
    if (mapElm != null) {
        $('#directionsPanel').html('');
        $('.print-route').hide().click(function () {
            window.print();
            return false;
        });
        var values = $('select#locations option:selected').val();
        loadMap(mapElm, values);
    } 
}

function loadMap(elm, values) {
    var valueParts = values.split('|');
    var coordinates = valueParts[0].split(',');
    var mapZoom = valueParts[1];
    var heading = valueParts[2];
    var pitch = valueParts[3];
    var zoom = valueParts[4];
    var lat = coordinates[0];
    var lng = coordinates[1];
    var latlng = new google.maps.LatLng(parseFloat(lat), parseFloat(lng));
    var myOptions = {
        zoom: parseInt(mapZoom),
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        scrollwheel: false,
        streetViewControl: true
    };
    var map = new google.maps.Map(elm, myOptions);
    var image = 'http://www.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png';
    marker = new google.maps.Marker({
        position: latlng,
        map: map,
        icon: image
    });

    directionsDisplay = new google.maps.DirectionsRenderer();
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById("directionsPanel"));

    var streetView = $('#streetView')[0];
    if ($(streetView) != null) {
        var panoramaOptions = {
            position: latlng,
            pov: {
                heading: parseFloat(heading),
                pitch: parseFloat(pitch),
                zoom: parseInt(zoom)
            }
        };
        panorama = new google.maps.StreetViewPanorama($(streetView)[0], panoramaOptions);
        map.setStreetView(panorama);
    }

    google.maps.event.addListener(map, 'click', function () { activateScrollwheel(map); });
    google.maps.event.addListener(map, 'dragstart', function () { activateScrollwheel(map); });

    var qs = window.location.search.substring(1).split('=');
    if (qs.length > 1 && qs[0] == 'svinfo' && qs[1]=='1') {
        google.maps.event.addListener(panorama, 'position_changed', function () { updateStreetviewInfo(); });
        google.maps.event.addListener(panorama, 'pov_changed', function () { updateStreetviewInfo(); });
    }
}

function updateStreetviewInfo(){
$('#test').html('P:' + panorama.getPosition().toString() + '/H:' + panorama.getPov().heading + '/P:' + panorama.getPov().pitch + '/Z:' + panorama.getPov().zoom); 
}

function activateScrollwheel(map) {
    var myOptions = {
        scrollwheel: true
    };
    map.setOptions(myOptions);
    google.maps.event.removeListener(map, 'click');
    google.maps.event.removeListener(map, 'dragstart');
}


function calculateRoute() {
    hideRouteError();
    var start = document.getElementById('routeFrom').value;
    var end = marker.getPosition();
    var request = {
        origin: start,
        destination: end,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
            setTimeout(function () {
                setDirectionStepEvents();
            }, 500);
            $('.print-route').show();
        }
        else {
            showRouteError();
        }
    });
}

function hideRouteError() {
    var errorLabel = $('span#routeFromError');
    if (errorLabel != null && errorLabel.length!=0) {
        errorLabel.hide();
    }
}

function showRouteError() {
    var errorLabel = $('span#routeFromError');
    if (errorLabel == null || errorLabel.length == 0) {
        errorLabel = $('input#routeFrom').after('<span id="routeFromError" class="error">De route kan niet berekend worden. Controleer het adres.</span>');
    }
    errorLabel.show();
}

function setDirectionStepEvents(){
     $('td.adp-substep').click(function() {
     var instance =$(this).parent().attr('jsinstance');
     var directions = directionsDisplay.getDirections();
     var latLng = directions.routes[0].legs[0].steps[instance].start_location;
     panorama.setPosition(latLng);
     });
}











