/*
    Onload
*/

var oMap;
var oGeocoder;
var oMarkerManager;
var oDirections;
var oSwisMarker;
var oSwisMarkerOptions;
$(document).ready( function () {

    if (!GBrowserIsCompatible()) {
        return false;
    }

    //maak map aan
    oMap = new GMap2(document.getElementById("map_canvas_klein"), {backgroundColor: '#f1f1f1'});
    oMap.setMapType(G_NORMAL_MAP);
    oMap.setUIToDefault();
    oGeocoder = new GClientGeocoder();
    oDirections = new GDirections(oMap, document.getElementById("columnDubbel"));

    //swis marker
    var oSwisMarkerIcon = new GIcon();
    oSwisMarkerIcon.image = 'images/marker/image.png';
    oSwisMarkerIcon.printImage = 'images/marker/printImage.gif';
    oSwisMarkerIcon.mozPrintImage = 'images/marker/mozPrintImage.gif';
    oSwisMarkerIcon.iconSize = new GSize(61,38);
    oSwisMarkerIcon.shadow = 'images/marker/shadow.png';
    oSwisMarkerIcon.transparent = 'images/marker/transparent.png';
    oSwisMarkerIcon.shadowSize = new GSize(80,38);
    oSwisMarkerIcon.printShadow = 'images/marker/printShadow.gif';
    oSwisMarkerIcon.iconAnchor = new GPoint(31,38);
    oSwisMarkerIcon.infoWindowAnchor = new GPoint(31,0);
    oSwisMarkerIcon.imageMap = [55,1,57,2,58,3,58,4,59,5,59,6,59,7,59,8,59,9,59,10,59,11,59,12,59,13,59,14,59,15,59,16,59,17,59,18,59,19,59,20,59,21,58,22,58,23,57,24,55,25,32,26,31,27,31,28,31,29,31,30,31,31,31,32,31,33,30,34,29,35,28,36,26,36,25,35,24,34,24,33,24,32,24,31,24,30,24,29,23,28,23,27,22,26,5,25,3,24,2,23,1,22,1,21,1,20,1,19,1,18,1,17,1,16,1,15,1,14,1,13,1,12,1,11,1,10,1,9,1,8,1,7,1,6,1,5,2,4,2,3,3,2,5,1];

    //swis marker options
    oSwisMarkerOptions = { title: 'SWIS kantoor', icon:oSwisMarkerIcon, clickable: false }

    //zet swis marker
    //center map
    point = new GLatLng(52.164358,4.491404);
    oSwisMarker = new GMarker(point, oSwisMarkerOptions);
    oMap.addOverlay(oSwisMarker);
    oMap.setCenter(point, 15);

    //als er een adres en plaats zijn ingevuld, berekend dan meteen de route
     var sDestAdres = $("input[name='adres']").val();
     var sDestPlaats = $("input[name='plaats']").val();

     if ((sDestAdres != '') && (sDestPlaats != '')) {

         $(document).delay(1000,function(){
             makeRoute();
         });

     }

} );


/*
    Routebeschrijving
*/

function makeRoute() {

    //clear map and directions
    oMap.clearOverlays();
    $("#columnDubbel").html('');

    //maak destination
    var destination = $("input[name='swis_straat']").val() + ", " +
                      $("input[name='swis_postcode']").val() + ", " +
                      $("input[name='swis_plaats']").val() + ", Nederland";
    destination = destination.replace(/ /g, "+");

    //maak start
    var start = $("input[name='adres']").val() + ", " +
                $("input[name='plaats']").val();
    start = start.replace(/ /g, "+");

    query = 'from: ' + start + ' to: ' + destination;
    
    GEvent.addListener(oDirections,"error", function() {
        //alert("GDirections Failed: "+dirn.getStatus().code);
        displayError(oDirections.getStatus().code);
    });

    oDirections.load(query, {locale: 'nl_NL'});

    GEvent.addListener(oDirections,"load", function() {
        setTimeout(function() {

            //laat een swis marker bij het einde van de route zien
            var markerA = oDirections.getMarker(0);
            oMap.removeOverlay(markerA);
            var newMarkerA = new GMarker(markerA.getLatLng(), {icon: G_START_ICON, clickable: false});
            oMap.addOverlay(newMarkerA);

            //laat een swis marker bij het einde van de route zien
            var markerB = oDirections.getMarker(1);
            oMap.removeOverlay(markerB);
            var newMarkerB = new GMarker(markerB.getLatLng(), oSwisMarkerOptions);
            oMap.addOverlay(newMarkerB);

        },0);
    });

    //oDirections.getMarker(oDirections.getNumGeocodes()-1).getIcon().image = "./images/marker/image.png";

    return false;

}

function makeOvRoute() {

    //clear map and directions
    oMap.clearOverlays();
    $("#columnDubbel").html('');

    var aRoute = [
                     new GLatLng(52.16558, 4.48316),
                     new GLatLng(52.16657, 4.48446),
                     new GLatLng(52.16594, 4.48594),
                     new GLatLng(52.16585, 4.48605),
                     new GLatLng(52.16577, 4.48613),
                     new GLatLng(52.16538, 4.48627),
                     new GLatLng(52.16533, 4.48635),
                     new GLatLng(52.16498, 4.48647),
                     new GLatLng(52.16502, 4.48673),
                     new GLatLng(52.16457, 4.48779),
                     new GLatLng(52.16453, 4.48802),
                     new GLatLng(52.16438, 4.48915),
                     new GLatLng(52.16428, 4.48933),
                     new GLatLng(52.16428, 4.48968),
                     new GLatLng(52.16415, 4.48967),
                     new GLatLng(52.16411, 4.49069),
                     new GLatLng(52.16411, 4.491238),
                     new GLatLng(52.164083, 4.491877)
                 ];

    //voeg polyline toe
    var oPolyline = new GPolyline(aRoute);
    oMap.addOverlay(oPolyline);

    //voeg start marker toe
    oStationMarker = new GMarker(new GLatLng(52.16558, 4.48316), {icon: G_START_ICON, clickable: false});
    oMap.addOverlay(oStationMarker);

    //voeg swis (destination) marker toe
    oMap.addOverlay(oSwisMarker);

    //center de map
    oMap.setCenter(oPolyline.getBounds().getCenter(), oMap.getBoundsZoomLevel(oPolyline.getBounds()));

    // toon route in tekst
    $("#columnDubbel").load("../templates/routebeschrijving.html");

    return false;

}

function displayError(errorCode) {

    mapErrors=[];
    mapErrors[200]   = "Success";
    mapErrors[400]   = "Kan geen route ophalen.";
    mapErrors[601]   = "Het adres mist.";
    mapErrors[602]   = "Onbekend adres:  Controleer het ingevulde adres.";
    mapErrors[603]   = "Onmogelijk adres:  Helaas kan om contractuele redenen het adres niet worden weergegeven.";
    mapErrors[604]   = "Onmogelijk adres: Geen route mogelijk tussen de adressen of geen route beschikbaar.";
    mapErrors[610]   = "Foute Key: Neem contact op met de systeem beheerder.";
    mapErrors[620]   = "Het maximum aantal aanvragen is overschreden.";
    mapErrors[500]   = "Server fout: De aanvraag kan op dit moment niet worden behandeld. Probeer het later nog eens.";

    $("#columnDubbel").html('<b>' + mapErrors[errorCode] + '</b>');

    //zet swis marker
    //center map
    point = new GLatLng(52.164358, 4.491404);
    var oSwisMarker = new GMarker(point, oSwisMarkerOptions);
    oMap.addOverlay(oSwisMarker);
    oMap.setCenter(point, 15);

}