﻿// JScript File

//<![CDATA[

var map;

function PlaceMap(settings)  // On page load
{

    //alert('begin eerste functio');
    // settings:  coordinaten_van_center_map|location_search_string|zoom|intShowCoordinates
    // als coordinaten_van_center_map niet gevuld is, dan wordt de locatie opgezocht middels location_search_string

    settings = settings.split('|');
    var strLatLng = settings[0];
    var strSearch = settings[1];
    var intZoomFactor = settings[2] - 1 + 1;
    var intShowCoordinates = settings[3] - 1 + 1; // 1 = coordinaten tonen in div "msgLatLong" (let op; plaats die div!!)
    var mapdiv = document.getElementById("map");

    map = new GMap2(mapdiv); // Create new map object

    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    //map.getContainer().style.overflow="hidden";

    GEvent.addDomListener(mapdiv, "mousewheel", wheelZoom); // IE
    GEvent.addDomListener(map, "load", function (e) { setMarkers(); });

    if (strLatLng.length < 2) {
        var geocoder = new GClientGeocoder();
        geocoder.getLocations(strSearch, function (response) {
            if (!response || response.Status.code != 200) {
                alert("Google maps: \"" + strSearch + "\" was not found. Please add the coordinates into the WUWM database manually.");
                return;
            } else {
                place = response.Placemark[0];
                point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
                map.setCenter(point, intZoomFactor);
            }
        }
				)
    } else {
        strLatLng = strLatLng.split(',');
        var point = new GLatLng(strLatLng[0], strLatLng[1]);
        map.setCenter(point, intZoomFactor);
        //map.setCenter(new GLatLng(52.080073, 4.306962), 13);
        //map.setCenter(new GLatLng(strLatLng[0], strLatLng[1]), 13);
    }

    //return false;

    if (intShowCoordinates == 1) { // Toon coordinaten:
        document.getElementById("msgLatLong").innerHTML = point; //Toon coordinaten in div "msgLatLong"
        GEvent.addListener(map, "moveend", function () { //Toon coordinaten in div "msgLatLong" nadat er met de map gesleept is door user.
            var center = map.getCenter();
            document.getElementById("msgLatLong").innerHTML = center.toString();
        });
    }

    // Copyright tekst valt ver buiten de map. Het mag wel niet, maar toch breken we die tekst af:
    map.getContainer().style.overflow = "hidden";
    // hoewel, hier wordt het ook geadviseerd door een google medewerker:
    // http://groups.google.com/group/Google-Maps-API/browse_thread/thread/3360a82deb471cd3

    // volgende in database opnemen, ooit:
    //map.setMapType(G_HYBRID_MAP);
    //map.setMapType(G_SATELLITE_MAP);

}

function AddMarker(settings)  // On page load, After PlaceMap()
{
    // settings:  coordinaten_if_in_db|SearchString|Title|intShowinfoWindow|InfoWindowText|InfoWindowUrl

    settings = settings.split('|');
    var strLatLng = settings[0];
    if (strLatLng.length > 2) { strLatLng = strLatLng.split(','); }
    var strAddress = settings[1];
    var strTitle = settings[2];
    var intShowinfoWindow = settings[3] - 1 + 1; // 1 = info window aan marker hangen
    var InfoWindowText = settings[4];
    var InfoWindowUrl = settings[5];

    setTimeout("var xy='y';", 10000);

    if (strLatLng.length < 2) {  //Er zijn geen coordinaten in de db. Zoek ze dus via adres op bij google
        var geocoder = new GClientGeocoder(); // Create new geocoding object
        geocoder.getLocations(strAddress, function (response) { //info ophalen
            //if(!response || response.Status.code != 200){
            //	alert("Google maps: \"" + strAddress + "\" was not found. Please add the coordinates into the WUWM database manually.");
            //	return;
            //}
            place = response.Placemark[0]; // Retrieve the object
            point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); // Retrieve the latitude and longitude
            var marker = new GMarker(point, { draggable: false, title: strTitle }); // Create a marker
            map.addOverlay(marker); // Add the marker to map
            if (intShowinfoWindow == 1) { AddInfoWindow(marker, InfoWindowUrl, InfoWindowText); }
        });

    } else {
        point = new GLatLng(strLatLng[0], strLatLng[1]); // hier moet per se een komma staan. Vandaar de coordinaten gesplit.
        var marker = new GMarker(point, { draggable: false, title: strTitle }); // Create a marker
        map.addOverlay(marker);
        if (intShowinfoWindow == 1) { AddInfoWindow(marker, InfoWindowUrl, InfoWindowText); }
    }
}

function AddInfoWindow(Marker, InfoWindowUrl, strAddress) {
    GEvent.addListener(Marker, "click", function () {
        if (InfoWindowUrl.length > 0) {
            Marker.openInfoWindowHtml("<div class='GoogleinfoWindow'><center><a href='" + InfoWindowUrl + "'>Zoom into " + strAddress + "</a></center></div>");
        } else {
            Marker.openInfoWindowHtml("<center>" + strAddress + "</center>");
        }
    });
}

function wheelZoom(event) {
    // Prevent from scrolling the page when zooming the map
    if (window.event) { event.returnValue = false; } // IE
    if (event.cancelable) { event.preventDefault(); } // DOM-Standard
    if ((event.detail || -event.wheelDelta) < 0) {
        map.zoomIn();
    } else {
        map.zoomOut();
    }
}
//]]>