// Google Maps based locator.
// Script URL
var url = window.location.protocol + '//' + window.location.host + window.location.pathname;
// Google Map
var map;
// Default center of map
if (typeof lon === 'undefined' && typeof lat === 'undefined') {
	var center = new GLatLng(51.727028,10.327148);
} else {
	var center = new GLatLng(lat, lon);
}
var zoom = 2;

var mapIcons = new Array();
mapIcons['shop'] = new GIcon();
mapIcons['shop'].image = '/skin/gmap_marker.png';
mapIcons['shop'].shadow = '/skin/gmap_shadow.png';
mapIcons['shop'].iconSize = new GSize(22, 30);
mapIcons['shop'].shadowSize = new GSize(37, 30);
mapIcons['shop'].iconAnchor = new GPoint(11, 30);
mapIcons['shop'].infoWindowAnchor = new GPoint(5, 1);

function createMarker(type, name, point, address, description) {
	var marker = new GMarker(point, { icon: mapIcons[type] });
	var html = '<strong>'+name+'</strong><br />'+address+'<br />'+description;
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

// Display Google Map
function loadMap() {
	map = new GMap2($('map_canvas'));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.setCenter(center, zoom);
	map.enableScrollWheelZoom();
	getXml('/scripts/mapdata.php?country='+map_country+'&region='+map_region+'&city='+map_city);
}

function getXml(xml_url) {
	GDownloadUrl(xml_url, function(data) {
		map.clearOverlays();
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
		//var mm = new MarkerManager(map);
		for (var i = 0; i < markers.length; i++) {
			var type = markers[i].getAttribute('type');
			var name = markers[i].getAttribute('name');
			var point = new GLatLng(
				parseFloat(markers[i].getAttribute('lat')),
				parseFloat(markers[i].getAttribute('lon'))
			);
			var address = markers[i].getAttribute('address');
			var description = markers[i].getAttribute('description');
			var marker = createMarker(type, name, point, address, description);
			map.addOverlay(marker);
			//if (type == 'object') {
			//	mm.addMarker(marker,15,17);
			//} else {
			//	mm.addMarker(marker,0,14);
			//}
		}
	});
}

// Set up event listeners.
window.addEvent('unload', GUnload);
// Update location after dragging.
//GEvent.addListener(marker, 'dragend', putMarker);
loadMap();