
var INITIAL_ZOOM_LEVEL = 2;
var ADDRESS_ZOOM_LEVEL = 13;

var map = null;
var geocoder = null;
var mgr = null;
var selection = null;


function load() {
	if( GBrowserIsCompatible() ) {
		map = new GMap2(document.getElementById("map"));
		map.enableScrollWheelZoom();
		map.enableDoubleClickZoom();
		var lat = parseFloat(getURLParam("lat"));
		var lng = parseFloat(getURLParam("lng"));
		var zoom = parseInt(getURLParam("zoom"));
		if( !(lat && lng && zoom) ) {
			lat = 0.0;
			lng = 0.0;
			zoom = INITIAL_ZOOM_LEVEL;
		}
		map.setCenter(new GLatLng(lat, lng), zoom, G_SATELLITE_MAP);
		geocoder = new GClientGeocoder();
		var mgrOptions = { borderPadding: 0, maxZoom: 15, trackMarkers: true };
		mgr = new GMarkerManager(map, mgrOptions);
		GDownloadUrl("Data/data.xml", loadMarkers);
		GEvent.addListener(map, "click", onClick);
	}
}


function showAddressLocation(address) {
	if( geocoder ) {
		geocoder.getLatLng(
			address,
			function(point) {
				alert(point);
			}
		);
	}
}


function gotoAddress(address) {
	if( geocoder ) {
		geocoder.getLatLng(
			address,
			function(point) {
				if( point ) {
					map.setCenter(point, ADDRESS_ZOOM_LEVEL);
				}
			}
		);
	}
}


function createMarker(pos, name, description, type) {
	var marker = new GMarker(pos);
	GEvent.addListener(marker, "click",
		function() {
			selection = marker;
			var html = "";
			if( type ) {
				if( type == "picture" ) {
					if( name.indexOf("http://") == 0 )
						html += ('<img src="' + name + '" border="0" width="320" height="240">');
					else
						html += ('<img src="Pictures/' + name + '" border="0" width="320" height="240">');
				}
			}
			else {
				html = name;
			}
			if( description ) {
				html += '<br>';
				html += description;
			}
			selection.openInfoWindowHtml(html);
		}
	);
	return marker;
}


function loadMarkers(data, responseCode) {
	var xml = GXml.parse(data);
	var markers = xml.documentElement.getElementsByTagName("marker");
	for(var i = 0; i < markers.length; i++) {
		var pos = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
		mgr.addMarker(createMarker(pos, markers[i].getAttribute("name"), markers[i].getAttribute("description"), markers[i].getAttribute("type")),
			parseInt(markers[i].getAttribute("zoomMin")),
			parseInt(markers[i].getAttribute("zoomMax"))
		);
	}
}


function onClick(marker, point) {
}


function getURLParam(strParamName){
	var strReturn = "";
	var strHref = window.location.href;
	if( strHref.indexOf("?") > -1 ) {
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		for(var iParam = 0; iParam < aQueryString.length; iParam++ ) {
			if(	aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ) {
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return unescape(strReturn);
}
