
// Initial setup
var restaurantList = [];
var storeList = [];
var bankList = [];
var historicalList = [];
var stadiumList = [];
var residentialList = [];
var listOfMarkerLists = [ restaurantList, storeList, bankList, historicalList, stadiumList, residentialList];
				

var mydefaultIcon = new GIcon(G_DEFAULT_ICON);
mydefaultIcon.shadow = "http://www.batterywharf.com/location/images/sign_shadow.png";
mydefaultIcon.iconSize = new GSize(28, 28);
mydefaultIcon.shadowSize = new GSize(40, 28);
mydefaultIcon.iconAnchor = new GPoint(9, 25);


var stadiumIcon = new GIcon(mydefaultIcon);
stadiumIcon.image = "http://www.batterywharf.com/location/images/pennant.png";

var restaurantIcon = new GIcon(mydefaultIcon);
restaurantIcon.image = "http://www.batterywharf.com/location/images/fork.png";

var hotelIcon = new GIcon(mydefaultIcon);
hotelIcon.image = "http://www.batterywharf.com/location/images/house.png";

var storeIcon = new GIcon(mydefaultIcon);
storeIcon.image = "http://www.batterywharf.com/location/images/shoppingbag3.png";

var bankIcon = new GIcon(mydefaultIcon);
bankIcon.image = "http://www.batterywharf.com/location/images/bank.png";

var historicalIcon = new GIcon(mydefaultIcon);
historicalIcon.image = "http://www.batterywharf.com/location/images/camera.png";

var residentialIcon = new GIcon(mydefaultIcon);
residentialIcon.image = "http://www.batterywharf.com/location/images/house.png";


var map;
var mainMarker;
var mainMarkerHtml;
function scrollToBW() {
	map.panTo(mainMarker.getLatLng());
	mainMarker.openInfoWindowHtml(mainMarkerHtml);
}

var BWBuilding;


// When the BODY tag has loaded:
function initialize() {
  if (GBrowserIsCompatible()) {
  
	map = new GMap2(document.getElementById("map_canvas"));
	
	
	// large map control
	//	var mapControl = new GLargeMapControl();
	// small map control
	var mapControl = new GSmallMapControl();
	map.addControl(mapControl);

	// position the map type control
	var mapTypeControl = new GMapTypeControl();

	var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
	map.addControl(mapTypeControl, bottomRight);

	var mapCenter = new GLatLng(42.365294,-71.053455);
	var zoomlevel=17;	
	map.setCenter( mapCenter, zoomlevel);

	//showinitialmarker
	//var map = new GMap2(document.getElementById('map_canvas'));

	mainMarker = new GMarker(new GLatLng(42.366888,-71.050824));
	mainMarkerHtml = '<div style="font-size: 10px; line-height: 175%;">'+
		'<img src="http://www.batterywharf.com/images/bw_map_popup_photo.jpg" width="176" height="90"><br />'+
		'4 Battery Wharf, Suite 4307<br />'+
		'Boston, MA 02109<br />'+
		'617.994.9090 <br />'+
		'</div>';
	
	map.addOverlay(mainMarker);
	

	
	setTimeout("scrollToBW()", 2000);
	
	GEvent.addListener(mainMarker, "click", function() {
	  mainMarker.openInfoWindowHtml(mainMarkerHtml);
	});
	

	
	// ground overlay
	// http://code.google.com/apis/maps/documentation/overlays.html#Ground_Overlays
	
	var bottomLeftBW = new GLatLng(42.366475,-71.051685);
	var topRightBW = new GLatLng(42.367835,-71.049281);
		
	//var boundaries = new GLatLngBounds(new GLatLng(42.367173,-71.050934), new GLatLng(42.366953,-71.052921));
	var boundaries = new GLatLngBounds(bottomLeftBW, topRightBW);
	BWBuilding = new GGroundOverlay("http://www.batterywharf.com/location/images/geomap-overlay.png", boundaries);
	//map.addControl(new GMapTypeControl());
	map.addOverlay(BWBuilding);
	
	
	GEvent.addListener(map, 'maptypechanged', function() {
		if (map.getCurrentMapType().getName() == 'Map') {
			BWBuilding.show();
		} else {
			BWBuilding.hide();	
		}
	});
	

	function createMarkers(markerData, markerIcon, markerArray) {
		$.each( markerData, function(i, info) {
			var marker = new GMarker(new GLatLng( info.positionLat, info.positionLong), {icon: markerIcon}); 
			map.addOverlay(marker);
			
			GEvent.addListener(marker, "click", function() {
			  marker.openInfoWindowHtml('<h2>' + info.name + '</h2> ' + info.html);
			});
			
			markerArray.push(marker);
		});	
	}

	//createMarkers(bars, barIcon, barList);
	createMarkers(Restaurant, restaurantIcon, restaurantList);
	//createMarkers(hotels, hotelIcon, hotelList);
	
	createMarkers(Retail, storeIcon, storeList);
	createMarkers(Bank, bankIcon, bankList);
	createMarkers(Historical, historicalIcon, historicalList);
	createMarkers(Residential, residentialIcon, residentialList);
	createMarkers(Stadium, stadiumIcon, stadiumList);

  }
}



/***************************************
 *
 * Add functionality for hide/show links.
 *
 ***************************************/
function hideAllMarkers() {
	$.each(listOfMarkerLists, function(i, markerList) {
		$.each(markerList, function(i, marker) {
				marker.hide();
		});
	});
}

function showAllMarkers() {
	$.each(listOfMarkerLists, function(i, markerList) {
		$.each(markerList, function(i, marker) {
				marker.show();
		});
	});
	
	return false; // stop default link behavior
}

function showMarkers(listToShow) {
	
	map.getInfoWindow().hide();
	
	hideAllMarkers();
	
	$.each(listToShow, function(i, marker) {
			marker.show();
	});
}

$( function() {
	// DOM is ready:

	
	$('#stadium-link').click( function() {
		showMarkers(stadiumList);				
		return false;
	});
	
	$('#restaurant-link').click( function() {
		showMarkers(restaurantList);				
		return false;
	});
	
	$('#historical-link').click( function() {
		showMarkers(historicalList);				
		return false;
	});
	
	$('#bank-link').click( function() {
		showMarkers(bankList);				
		return false;
	});

	$('#store-link').click( function() {
		showMarkers(storeList);				
		return false;
	});
	
	$('#residential-link').click( function() {
		showMarkers(residentialList);				
		return false;
	});

	$('#all-link').click(showAllMarkers);	

	$('#map-categories a').click(function() {
		var that = $(this).blur();
		
		if (that.hasClass('selected')) {
			return;
		}
										  
		$('#map-categories a.selected').removeClass('selected');
		that.addClass('selected');	
		
	});

});
