var baseIcon = new GIcon();

baseIcon.iconSize = new GSize(38, 24);
baseIcon.iconAnchor = new GPoint(37, 23);
baseIcon.infoWindowAnchor = new GPoint(20, 2);

var markers = [];

var map=null;

$(document).ready(function(){
	var map = new GMap2(document.getElementById('gmaps'));
	// add location markers
	map.addControl(new GSmallMapControl());
	
	
	map.addOverlay(createMarker(new GLatLng(52.6011,1.7236), 0, "<p><b>Richards Dry Dock and Engineering</b><br />Southtown Road<br />Great Yarmouth<br />Norfolk<br />NR31 OJJ</p>"));
	
	map.setCenter(new GLatLng(54.567391,-2.362061), 5);
  	//map.setCenter(marker1, 5);
	
	$('.contentblock a').click(function (){
		//alert('clicked' + markers[0]);
		
		map.panTo(markers[$(this).attr('id')].getLatLng());
		
		map.setCenter(markers[$(this).attr('id')].getLatLng(), 10);
		
	});
	
	$(markers).each(function(i,marker){
      GEvent.addListener(marker, "click", function(){
      map.panTo(marker.getLatLng());
	});
	});

	
 });


function createMarker(point, index, content) {
          
          var letteredIcon = new GIcon(baseIcon);
          letteredIcon.image = "/images/gmaps-marker.png";

          // Set up our GMarkerOptions object
          markerOptions = { icon:letteredIcon };
          var marker = new GMarker(point, markerOptions);
		   markers[index] = marker;

          GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(content);
          });
          return marker;
}
    
	






function centerMap(map) {
	/* if an infoWindow is open, do not center map (return / do nothing) */
	var iW = map.getInfoWindow();
	if(iW.getContentContainers().length> 0 && !iW.isHidden())
		return;
	for(var i in markers) {
		var this_lat = markers[i].getLatLng().lat() || null;
		var this_lng = markers[i].getLatLng().lng() || null;
		if(
			(this_lat && !isNaN(this_lat)) &&
			(this_lng && !isNaN(this_lng))
		) {
			var minLat = minLat || this_lat;
			var maxLat = maxLat || this_lat;
			var minLng = minLng || this_lng;
			var maxLng = maxLng || this_lng;
			//get min and max markers and save in variables
			minLat = Math.min(minLat, this_lat);
			maxLat = Math.max(maxLat, this_lat);
			minLng = Math.min(minLng, this_lng);
			maxLng = Math.max(maxLng, this_lng);
		}
	}
	//avg of the coordinates
	var centerLat = minLat + ((maxLat - minLat) / 2);
	var centerLng = minLng + ((maxLng - minLng) / 2);
	//what's the distance of our coordinates? (in kilometers)
	var dist = (6371 *
					Math.acos(
						Math.sin(minLat / 57.2958) *
						Math.sin(maxLat / 57.2958) + (
							Math.cos(minLat / 57.2958) *
							Math.cos(maxLat / 57.2958) *
							Math.cos(maxLng / 57.2958 - minLng / 57.2958)
						)
					)
				);
	//default zoom level
	var zoomLvl = 4;
	//determine the zoom level out of the calculated distance
	if(dist <24576)
		zoomLvl = 1;
	if(dist <12288)
		zoomLvl = 2;
	if(dist <6144)
		zoomLvl = 3;
	if(dist <3072)
		zoomLvl = 4;
	if(dist <1536)
		zoomLvl = 5;
	if(dist <768)
		zoomLvl = 6;
	if(dist <384)
		zoomLvl = 7;
	if(dist <192)
		zoomLvl = 8;
	if(dist <96)
		zoomLvl = 9;
	if(dist <48)
		zoomLvl = 10;
	if(dist <24)
		zoomLvl = 11;
	if(dist <11)
		zoomLvl = 12;
	if(dist <4.8)
		zoomLvl = 13;
	if(dist <3.2)
		zoomLvl = 14;
	if(dist <1.6)
		zoomLvl = 15;
	if(dist <0.8)
		zoomLvl = 16;
	if(dist <0.3)
		zoomLvl = 17;
	//center map and set zoomLvl
	var point = new GLatLng(centerLat, centerLng);
	map.setCenter(53.383328,-1.889648, zoomLvl);
};

