﻿var map = null;
var geocoder = null;
var mapHtml = null;
var bounds = null;

function load() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(mapHtml);
		map.addControl(new GLargeMapControl());
		map.setCenter(new GLatLng(48.55, 13.9), 10);
		geocoder = new GClientGeocoder();
	}
}

function enableMaps() {
	mapHtml = document.getElementById("map");
	mapHtml.style.display = "block";
	load();
}

function setMarker(address, name, latitude, longitude) {
	if (!mapHtml) {
		enableMaps();
	}

	if (latitude && longitude) {
	    var point = new GLatLng(latitude, longitude);
	    bounds.extend(point);

	    var markerOptions = { title: name.replace('<br />', '\n') };
	    var marker = new GMarker(point, markerOptions);
	    GEvent.addListener(marker, "click", function() {
	        marker.openInfoWindowHtml(name + '<br/>' + address);
	    });
	    map.addOverlay(marker);
	    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	}
	else {
	    if (geocoder) {
	        geocoder.getLatLng(address, function(point) {
	            if (point) {
	                bounds.extend(point);
	                var markerOptions = { title: name.replace('<br />', '\n') };
	                var marker = new GMarker(point, markerOptions);
	                GEvent.addListener(marker, "click", function() {
	                    marker.openInfoWindowHtml(name + '<br/>' + address);
	                });
	                map.addOverlay(marker);
	                map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	            }
	        });
	    }
	}
}

function showAddress(address, name) {
	if (!mapHtml) {
		enableMaps();
	}

	if (geocoder) {
		geocoder.getLatLng(
			  address,
			  function(point) {
 		  		map.setCenter(point, 13);
			  }
			);
	}
}

function showAddressPoint(latitude, longitude) {
    if (!mapHtml) {
        enableMaps();
    }

    var point = new GLatLng(latitude, longitude);
    map.setCenter(point, 13);
}
