var sMap;
var sLocalSearch 	= new GlocalSearch();
var sIcon 			= new GIcon(G_DEFAULT_ICON);
var aIcon 			= new GIcon(); 
var sMarker;
var sArrow;

aIcon.iconSize = new GSize(24, 24);
aIcon.shadowSize = new GSize(1, 1);
aIcon.iconAnchor = new GPoint(12, 12);
aIcon.infoWindowAnchor = new GPoint(0, 0);
aIcon.image = "http://www.google.com/intl/en_ALL/mapfiles/dir_0.png"; 

function gsLoad(m, s) {
	if (GBrowserIsCompatible()) {
    	sMap 	= new GMap2(document.getElementById(m));
    	sStreet = new GStreetviewPanorama(document.getElementById(s));    	
		sMap.addControl(new GLargeMapControl3D());
		sMap.addControl(new GMapTypeControl());
		sMap.checkResize();
		gsUsePointFromPostcode(gPostcode);
	}
	GEvent.addListener(sMap,"click", function(overlay,latlng) {
  		sStreet.setLocationAndPOV(latlng);
  		sArrow.setLatLng(latlng); 
	});
	GEvent.addListener(sStreet, "yawchanged", function(yaw) {
		var dir = Math.round(yaw / 3) * 3;
		while (dir >= 120) { dir -= 120; }
			sArrow.setImage("http://www.google.com/intl/en_ALL/mapfiles/dir_" + dir + ".png");
	});
	GEvent.addListener(sStreet, "initialized", function(a) {
		sArrow.setLatLng(a.latlng);
	}); 
	return true;
}
function gsUsePointFromPostcode(postcode) {
	sLocalSearch.setSearchCompleteCallback(null, 
	function() {			
		if (sLocalSearch.results[0]) {		
			var resultLat = sLocalSearch.results[0].lat;
			var resultLng = sLocalSearch.results[0].lng;
			var point = new GLatLng(resultLat,resultLng);
			gsSetCenterToPoint(point);
			gsPlaceMarkerAtPoint(point);
			gsPlaceMapMarkerAtPoint(point);
		} else {
			showMapError();
		}
	});			
	sLocalSearch.execute(postcode + ", UK");
}
function gsPlaceMapMarkerAtPoint(point) {
	sMarker 	= new GMarker(point, sIcon);
	sMap.addOverlay(sMarker);
	sMarker.openInfoWindowHtml(gAddress);

	sMap.addOverlay(new GStreetviewOverlay());

	sArrow 	= new GMarker(point, { icon: aIcon }); 
	sMap.addOverlay(sArrow);
}
function gsPlaceMarkerAtPoint(point) {
	sStreet.setLocationAndPOV(point, {yaw:370.64659986187695,pitch:-20})
}
function gsSetCenterToPoint(point) {
	sMap.setCenter(point, 17);
}
