/**
 * De onderstaande variabelen worden in contact.tpl gedefinieerd:
 *
 * bHasLatLng
 * fLat
 * fLng
 * sInfoWindow
 * sDestStraat
 * sDestPlaats
 */

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.";

var map;

function initGoogleMaps(){
    map = new google.maps.Map2(document.getElementById("map"));

    var center = new google.maps.LatLng(52.4, 4.3);
    map.setCenter(center, 15);

    cleanMap(fLat,fLng);
    map.addControl(new google.maps.SmallMapControl());
    map.openInfoWindow(map.getCenter(), sInfoWindow);


    var auto = $('route_auto');

    auto.onsubmit = function(){


        // Melding voor de gebruiker
        $('directions').innerHTML = 'Bezig met inladen route.';

        // kaart "resetten"
        cleanMap(fLat,fLng);

        var straat = $('vertrek_straat');
        var plaats = $('vertrek_plaats');

        // controleren of er een vertrekpunt is ingevuld
        if (straat.value == '' || plaats.value == ''){
            if (plaats.value == ''){
                plaats.focus();
                plaats.addClass('error');
                plaats.onkeyup = function(){
                    if (this.value != ''){
                        this.removeClass('error');
                    }
                }
            }
            if (straat.value == ''){
                straat.focus();
                straat.addClass('error');
                straat.onkeyup = function(){
                    if (this.value != ''){
                        this.removeClass('error');
                    }
                }
            }
            return false;
        }


        // auto directions
        oDirections = new GDirections(map, null);

        google.maps.Event.addListener(oDirections, 'error', function(){
            var error = "<strong>Fout: " + mapErrors[parseInt(oDirections.getStatus().code)] + '</strong>';
            $('directions').innerHTML = error;
        });

        google.maps.Event.addListener(oDirections, 'load', function(){


            var oRoute = oDirections.getRoute(0);

            var i = oRoute.getNumSteps();

            var aHtml = ['<ol>'];

            for (var j=0; j<i; j++) {
                aHtml.push('<li style="cursor:pointer" onclick="map.showMapBlowup(oDirections.getRoute(0).getStep('+j+').getLatLng())"><span>' + oRoute.getStep(j).getDistance().html + '</span>' + oRoute.getStep(j).getDescriptionHtml() +'</li>');
            }

            aHtml.push('</ol>');

            var sHeenUrl = 'maps.google.com/maps?f=d&saddr=' + escape(straat.value) + ', ' + escape(plaats.value) + ',+Netherlands&daddr=' + escape(sDestStraat)+ ',+' + escape(sDestPlaats) + ',+Netherlands&hl=nl&geocode=&mra=ls&sll=' + fLat + ',' + fLng +'&sspn=0.006502,0.019312&ie=UTF8&z=10&pw=2';
            var sTerugUrl = 'maps.google.com/maps?f=d&saddr=' + escape(sDestStraat) + ', ' + escape(sDestPlaats) + ',+Netherlands&daddr=' + escape(straat.value)+ ',+' + escape(plaats.value) + ',+Netherlands&hl=nl&geocode=&mra=ls&sll=' + fLat + ',' + fLng +'&sspn=0.006502,0.019312&ie=UTF8&z=10&pw=2';
            //$('#directions').html('<div style="padding:5px;overflow:auto;height:250px;">' + aHtml.join('\n') + '</div><span style="cursor:pointer;font-weight:bold;" onclick="window.open(\'http://' + sUrl + '\');"><img style="margin:10px 10px 0 0; float: right;" src="images/btn-printroute.gif" alt="Print route"></span>&nbsp;<br>&nbsp;');

            sHtml = '<div style="padding:5px;overflow:auto;height:250px;">' + aHtml.join('\n') + '</div>';
            sHtml += '<div style="margin:10px 10px 0 0; text-align: right;">';
            sHtml += '<a href="http://' + sHeenUrl + '" target="_blank" class="aanvraag" style="margin-right: 20px;">Print heenroute</a> ';
            sHtml += '<a href="http://' + sTerugUrl + '" target="_blank" class="aanvraag">Print terugroute</a> ';
            //sHtml += '<span style="cursor:pointer;font-weight:bold;" onclick="window.open(\'http://' + sTerugUrl + '\');">Print terugroute</span>';
            sHtml += '</div><br>';

            $('directions').innerHTML = sHtml;

            setTimeout('oDirections.getMarker(1).hide()', 1);

        });

        oDirections.load('from: ' + straat.value + ', ' + plaats.value + ', Nederland to: ' + sDestStraat + ', ' + sDestPlaats + ', Nederland', {getSteps: true});

        document.location.hash = 'map';
        return false;
   }
}

/* Done */
function cleanMap(fLat,fLng){

    map.clearOverlays();

    /*
    var icon = new google.maps.Icon();
    icon.image = '/images/arrow8.gif';
    icon.iconSize = new GSize(14, 14);
    icon.shadowSize = new GSize(18, 21);
    icon.iconAnchor = new GPoint(7, 14);
    icon.infoWindowAnchor = new GPoint(10, 10);
    */

    var center = new google.maps.LatLng(parseFloat(fLat), parseFloat(fLng));
    map.setCenter(center, 15);
    //map.addOverlay(new google.maps.Marker(center, icon));
    map.addOverlay(new google.maps.Marker(center));
}

/* Done */
function showMarker(iMarker, oLi){
    map.panTo(aMapPoints[iMarker]);
    map.openInfoWindowHtml(aMapPoints[iMarker], '<span style="display:block;width:180px">' +  oLi.innerHTML + '</span>');
}

/* Done */
if(bHasLatLng){
    google.load("maps", "2");
    google.setOnLoadCallback(initGoogleMaps);
}

