/*
*	Map functions
*/

var map = null;
var geocoder = null;

//define our namespace for the map object
var NOWGMap = NOWGMap || {};
NOWGMap.zoomLevel = 16;
NOWGMap.canvasID = 'map_canvas';
NOWGMap.centerLat = -37.767628;
NOWGMap.centerLon = 144.925075;

//initialise the google map function GMap2
NOWGMap.init = function() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById(NOWGMap.canvasID));
		map.setCenter(new GLatLng(NOWGMap.centerLat, NOWGMap.centerLon), NOWGMap.zoomLevel);
		geocoder = new GClientGeocoder();
	}
}

//locate map coordinates using an address string
NOWGMap.showAddress = function(address) {
	if (geocoder) {
		geocoder.getLatLng(
	  address,
	  function(point) {
	  	if (!point) {
	  		document.getElementById(NOWGMap.canvasID).innerHTML = "Map not found."
	  	} else {
	  		map.setCenter(point, NOWGMap.zoomLevel);
	  		var marker = new GMarker(point);
	  		map.addOverlay(marker);
	  		//marker.openInfoWindowHtml(); // this line displays the overlay window
	  	}
	  }
	);
	}
}

//show a KML file
// NOTE: KML file must be a URL to a PUBLIC location (i.e. localhost or staging servers behind passwords will not work)
// e.g. http://www.mvcc.vic.gov.au/kml/Libraries.KML is okay
NOWGMap.showKML = function(kml) {
	if (map) {
		if (kml) {
			var gx = new GGeoXml(kml);
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.addOverlay(gx);
		}
	}
}

//set the center and zoom points
NOWGMap.setCenter = function(lat, lng) {
	NOWGMap.setCenterAndZoom(lat, lng, NOWGMap.zoomLevel);
}

//set the center and zoom points
NOWGMap.setCenterAndZoom = function(lat, lng, zoom) {
	var point = new GLatLng(lat, lng);
	if (point) {
		// store
		NOWGMap.centerLat = lat;
		NOWGMap.centerLon = lng;
		NOWGMap.zoomLevel = zoom;
		if (map) {
			// set center
			map.setCenter(point, NOWGMap.zoomLevel);
		}
	}
}

//locate map coordinates using lat/lng
NOWGMap.showMap = function(lat, lng) {
	if (map) {
		var point = new GLatLng(lat, lng);
		map.setCenter(point, NOWGMap.zoomLevel);
		var marker = new GMarker(point);
		map.addOverlay(marker);
	}
}
