function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, true);
		return true;
	}
	else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+ evType, fn);
		return r;
	}
	else {
		return false;
	}
}
function viewLoc(map, point, zLevel) {
	var cpoint = map.getCenter();

	if (Math.round(point.y) != Math.round(cpoint.y) || Math.round(point.x) != Math.round(cpoint.x)) {
		map.panTo(new GLatLng(point.y, point.x));
		window.setTimeout(function() {
			map.setCenter(new GLatLng(point.y, point.x));
			map.setZoom(15);
		}, 1000);
	}
	else {
			map.setCenter(new GLatLng(point.y, point.x));
			map.setZoom(15);
	}
}

function loadMap() {
	if (GBrowserIsCompatible()) {
		//var baseIcon = new GIcon(G_DEFAULT_ICON);
		//baseIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		//baseIcon.iconSize = new GSize(12, 20);
		//baseIcon.shadowSize = new GSize(22, 20);
		//baseIcon.iconAnchor = new GLatLng(6, 20);
		//baseIcon.infoWindowAnchor = new GLatLng(9, 2);
		//baseIcon.infoShadowAnchor = new GLatLng(18, 25);

		var map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.setCenter(new GLatLng(53.380666,-6.072006), 13);

		function createMarkerMM(point, html) {
			var markerMM = new GMarker(point);

			GEvent.addListener(markerMM, "click", function() {
				map.closeInfoWindow();
				viewLoc(map, point, 15);
			});

			return markerMM;
		}

		function createMarker(i, point, html) {
			//var icon = new GIcon(baseIcon);
			//icon.image = "/_images/googlemap/icon-green.png";
			//var marker = new GMarker(point,icon);
			var marker = new GMarker(point);

			GEvent.addListener(marker, "click", function() {
				if (map.getZoom() >= 15) {
					marker.openInfoWindowHtml(html);
				}
				else {
					var infoTabs = [
						new GInfoWindowTab("Details", html)
						//new GInfoWindowTab("Close-up", "<div style='padding: 5px; text-align: center'><div id='mMap"+ i +"' style='width: 230px; height: 120px'></div></div>")
					];
					marker.openInfoWindowTabsHtml(infoTabs);

					var mMap = new GMap2(document.getElementById("mMap"+ i));
					mMap.addControl(new GSmallZoomControl());
					mMap.setCenter(point, 15);

					mMap.addOverlay(createMarkerMM(point, html));
				}
			});

			return marker;
		}

		GDownloadUrl("/_includes/map.xml", function(data, responseCode) {
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
				var html = "<div class='mapDetails'>";
				html = html +"<div><b style='text-transform: uppercase'>"+ markers[i].getAttribute("nme") +"</b></div>";
				html = html +"<div>"+ markers[i].getAttribute("addr") +"<br />"+ markers[i].getAttribute("addr2") +"</div>";
				html = html +"<div><b class='blue'>Ph</b>: "+ markers[i].getAttribute("ph") +"</div>";
				//html = html +"<div><b class='blue'>Fax</b>: "+ markers[i].getAttribute("fax") +"</div>";
				html = html +"<div><b class='blue'>Email</b>: <a href='mailto:"+ markers[i].getAttribute("eml") +"' class='lgrey'>"+ markers[i].getAttribute("eml") +"</a></div>";
				html = html +"</div>";

				map.addOverlay(createMarker(i, point, html));
			}
		});
	}
}

addEvent(window, "load", loadMap);
