/*
Google map API here
*/

var map;

var icon = new GIcon();
icon.image = "http://www.google.com/mapfiles/marker.png";
icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
icon.iconSize = new GSize(20, 34);
icon.shadowSize = new GSize(37, 34);
icon.iconAnchor = new GPoint(10, 34);


function createMap(targetId) {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById(targetId));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		//map.setCenter(new GLatLng(57,-3), 8, G_HYBRID_MAP);
		map.setCenter(new GLatLng(57.177947,-3.746338), 6, G_HYBRID_MAP);
	}
}

var pointLatLngStack = [];
var bounds = new GLatLngBounds();

function addPostcodeMarker(postcode, balloonHTML, index) {
	var localSearch = new GlocalSearch();
	localSearch.setSearchCompleteCallback( null, 
		function( balloonHTML, index ) {
			if (localSearch.results[0])
			{
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				var letter = -1;
				if( index >= 0 ) {
					letter = String.fromCharCode( parseInt("A".charCodeAt(0)) + parseInt(index) );
				}
				placeMarkerAtPoint(point, balloonHTML, map, letter);
				//map.panTo(point);
				//map.setZoom(15);
				
				pointLatLngStack.push({
					lat : resultLat,
					lng : resultLng
				});
			}
		}, [ balloonHTML, index ] );
	localSearch.execute( postcode + ", UK");
}


function placeMarkerAtPoint(point, balloonHTML, map, letter) {
	var marker = null;
	if( letter == -1 ) {
	  	marker = new GMarker(point, icon);
  	} else {
		var letteredIcon = new GIcon( icon );
		letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";		
	  	marker = new GMarker(point,letteredIcon);
  	}
	bounds.extend(point);
	map.addOverlay(marker);
	GEvent.addListener(marker, "click", function() {
      map.openInfoWindowHtml(point, balloonHTML);
    });
}


function autoCentre() {
	var zoom = map.getBoundsZoomLevel(bounds);
	if( zoom > 10 )
		map.setZoom(10);
	else
		map.setZoom(map.getBoundsZoomLevel(bounds));
	map.setCenter(bounds.getCenter());

/*	var zoom = map.getBoundsZoomLevel(bounds);
	if( zoom > 10 )
		map.setZoom(10);
	else
		map.setZoom(map.getBoundsZoomLevel(bounds));
	map.setCenter(bounds.getCenter());

	var latSum = 0;
	var lngSum = 0;
	var count = 0;
	for(var i=0; i<pointLatLngStack.length; i++) {
		var latLng = pointLatLngStack[i];
		count++;
		latSum = latSum + parseFloat(latLng.lat);
		lngSum = lngSum + parseFloat(latLng.lng);
	}
	var latMean = latSum/count;
	var lngMean = lngSum/count;
	
	var point = new GLatLng(latMean, lngMean);
	map.panTo(point);
	map.setZoom(7);*/
}