/*
Title: JS to load the Google map and pin-point Astec House with a marker
Author: etalented.co.uk
Updated: May, 2006
*/

var mapMaker = {
	on: false,
	/* constructor - sets events */
	init: function(){
		//ensure single pass-thru
		if (mapMaker.on == false ) {
			if (GBrowserIsCompatible()) {
				var map = new GMap2(document.getElementById("map"));
				map.addControl(new GSmallMapControl());
				map.addControl(new GMapTypeControl());
				map.setCenter(new GLatLng(51.453940, -0.956960), 12);
				
				var icon = new GIcon();
				icon.image = "/images/icons/map_pointer.png";
				icon.shadow = "/images/icons/map_pointer_shadow.png";
				icon.iconSize = new GSize(25, 34);
				icon.shadowSize = new GSize(44, 34);
				icon.iconAnchor = new GPoint(9, 34);
				icon.infoWindowAnchor = new GPoint(9, 2);
				icon.infoShadowAnchor = new GPoint(18, 25); 
				
				var point = new GLatLng(51.453940, -0.956960);
				var marker = new GMarker(point, icon);
				GEvent.addListener(marker, "click", function() {
					marker.openInfoWindowHtml(document.getElementById("address").innerHTML);
				});
				map.addOverlay(marker);
			};
			mapMaker.on = true;
		};
	},
	addEvt: function(element, type, handler) {
		// assign each event handler a unique ID
		if (!handler.$$guid) handler.$$guid = mapMaker.addEvt.guid++;
		// create a hash table of event types for the element
		if (!element.events) element.events = {};
		// create a hash table of event handlers for each element/event pair
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			// store the existing event handler (if there is one)
			if (element["on" + type]) {
				handlers[0] = element["on" + type];
			};
		};
		// store the event handler in the hash table
		handlers[handler.$$guid] = handler;
		// assign a global event handler to do all the work
		element["on" + type] = mapMaker.handleEvent;
	},
	handleEvent: function(event) {
		var returnValue = true;
		// grab the event object (IE uses a global event object)
		event = event || mapMaker.fixEvent(window.event);
		// get a reference to the hash table of event handlers
		var handlers = this.events[event.type];
		// execute each event handler
		for (var i in handlers) {
			this.$$handleEvent = handlers[i];
			if (this.$$handleEvent(event) === false) {
				returnValue = false;
			};
		};
		return returnValue;
	},
	fixEvent: function(event) {
		// add W3C standard event methods
		event.preventDefault = mapMaker.fixEvent.preventDefault;
		event.stopPropagation = mapMaker.fixEvent.stopPropagation;
		return event;
	}
};


/* LOAD SCRIPT */
/* for Mozilla */
if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", mapMaker.init, null);
};

/* for other browsers */
mapMaker.addEvt(window, 'load', mapMaker.init);
