if (window.addEventListener) {
	window.addEventListener('load',initJSMap,false)
} else if (!window.addEventListener && window.attachEvent) {
	window.attachEvent('onload', initJSMap);
}

var mgr;
var map;

function initJSMap() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GOverviewMapControl());
		map.setCenter(new GLatLng(46, -53), 2);
		map.enableDoubleClickZoom();
		mgr = new MarkerManager(map, {trackMarkers:true});
	} else {
		alert("Map could not be displayed");
	}

	createCityMarkers(cityData);
	createReviewMarkers(reviewData);
	mgr.refresh();
}

function mapZoomToPoint(lat, lng) {
	map.closeInfoWindow();	
	map.setCenter(new GLatLng(lat, lng), 12);
}
function createCityMarker(city) {
	var marker = new GMarker(new GLatLng(city[0], city[1]));
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(city[2] + "<br />" + city[3] + " reviews" + '<br /><a href="javascript:mapZoomToPoint(' + city[0] + ', ' + city[1] + ')">Zoom Here</a>');
	});
	return marker;
}
function createReviewMarker(data) {
	var marker = new GMarker(new GLatLng(data['lat'], data['lng']));
	GEvent.addListener(marker, "click", function() {
		html = "<b>" + data['name'] + ', ' + data['placeName'] + '</b> - <a href="' + data['url']  + '">Go To Review</a><br />';
		if (data['imgURL'].toString().length > 0) {
			html += '<div class="mapReviewPopupImg"><img border=0 src="' + data['imgURL'] + '" /></div>';
		}
		html += '<div>' + data['firstP'] + ' <a href="' + data['url']  + '">Show Review</a></div>';
		if (data['imgURL'].toString().length > 0) {
			html += '<div class="clear">&nbsp;</div>';
		}
		marker.openInfoWindowHtml(html);
	});
	return marker;
}
function createReviewMarkers(data) {
	var markers = [];
	for (x=0; x < data.length; x++) {
		var marker = createReviewMarker(data[x]);
		markers.push(marker);
	}
	mgr.addMarkers(markers,11,17);
}
function createCityMarkers(data) {
	var markers = [];
	for (x=0; x < data.length; x++) {
		var city = data[x];
		var marker = createCityMarker(city);
		markers.push(marker);
	}

	mgr.addMarkers(markers,0,10);
}
function mapGoToCity(lat, lng) {
	map.setCenter(new GLatLng(lat,lng), 11);
}

