
var map = null;
var geocoder = null;
var directions = null;
var marker = null;
var mapOverview = null;
var address = 'Ebnatstrasse 65, 8200 Schaffhausen, Schweiz';
var addressText = '<b>Genubau AG</b><br />ebnat.65<br />8200 Schaffhausen';


function initialize() {
    if (GBrowserIsCompatible()) {
        // disable scrolling on map (-> zoom instead)
        GEvent.addDomListener(document.getElementById("map"), "DOMMouseScroll", wheelevent); 
        document.getElementById("map").onmousewheel = wheelevent;
        // create map
        map = new GMap2(document.getElementById("map"));
        // map.addControl(new GSmallZoomControl());
        map.addControl(new GSmallMapControl());
        map.addControl(new GScaleControl());
        map.addControl(new GMapTypeControl());
        mapOverview = new GOverviewMapControl();
        map.addControl(mapOverview);
        map.enableScrollWheelZoom();
        map.enableContinuousZoom();
        //map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        // create directions
        directions = new GDirections(map, document.getElementById("directions"));
        // create geocoder
        geocoder = new GClientGeocoder();
        geocoder.setBaseCountryCode('ch');
        // add listeneres
        GEvent.addListener(directions, "error", handleDirectionsErrors);
        // search address
        searchAddress(address);
    }
}

function searchAddress(address) {
    geocoder.getLatLng(
        address,
        function(point) {
            if (!point) {
                alert(address + " nicht gefunden.");
            } else {
                map.setCenter(point, 14);
                marker = new GMarker(point);
                map.addOverlay(marker);
                // marker.openInfoWindowHtml(addressText);
            }
        }
    );
}

function handleDirectionsErrors(){
    if (directions.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
        alert("Die Adresse konnte nicht gefunden werden.");
    else if (directions.getStatus().code == G_GEO_SERVER_ERROR)
        alert("Unbekannter Fehler. Bitte versuchen Sie es später nochmals.");
    else if (directions.getStatus().code == G_GEO_MISSING_QUERY)
        alert("Bitte geben Sie eine Adresse ein.");
    else if (directions.getStatus().code == G_GEO_BAD_KEY)
        alert("Ungültier Google Maps Key. Bitte kontaktieren Sie den Server-Administrator.");
    else if (directions.getStatus().code == G_GEO_BAD_REQUEST)
        alert("Die Adresse konnte nicht gelesen werden.");
    else
        alert("Unbekannter Fehler. Bitte versuchen Sie es später nochmals.");
}

//----- Stop page scrolling if wheel over map ---- 
function wheelevent(e) 
{ 
    if (!e) e = window.event; 
    if (e.preventDefault) e.preventDefault(); 
    e.returnValue = false; 
}

addLoadEvent(initialize);
addUnLoadEvent(GUnload);
