// various function used by google maps class
function map_marker(map, lat, lon, contents)
	{
	var point = new GLatLng(lat, lon);
	var marker = new GMarker(point);
	map.addOverlay(marker);
	if (contents)
		{
		GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(contents); } );
		}
		
	}

function map_link(map, lat, lon, url)
	{
	var point = new GLatLng(lat, lon);
	var marker = new GMarker(point);
	map.addOverlay(marker);
	if (url)
		{
		GEvent.addListener(marker, "click", function() { location.href = url; } );
		}
	}

function map_showinfo(map, lat, lon, contents)
	{
	map.closeInfoWindow();
	var point = new GLatLng(lat, lon);
	if (contents)
		{
		map.openInfoWindowHtml(point, contents, new GSize(0, -30));
		}
	}


// following three functions come from http://gmaps-samples.googlecode.com/svn/trunk/streetview/angletowardsbuilding.html
function showPanoData(panoData)
	{
	if (panoData.code != 200)
		{
		// GLog.write('showPanoData: Server rejected with code: ' + panoData.code);
		return;
		}
	
	var angle = computeAngle(svpoint, panoData.location.latlng);
	svpano.setLocationAndPOV(panoData.location.latlng, {yaw: angle});
	
	// pano loaded, show streetview link element
	if (svlink)
		{
		svlink.style.display = '';
		}
	}

function computeAngle(endLatLng, startLatLng)
	{
	var DEGREE_PER_RADIAN = 57.2957795;
	var RADIAN_PER_DEGREE = 0.017453;
	
	var dlat = endLatLng.lat() - startLatLng.lat();
	var dlng = endLatLng.lng() - startLatLng.lng();

	// We multiply dlng with cos(endLat), since the two points are very closeby,
	// so we assume their cos values are approximately equal.
	var yaw = Math.atan2(dlng * Math.cos(endLatLng.lat() * RADIAN_PER_DEGREE), dlat)
		* DEGREE_PER_RADIAN;

	return wrapAngle(yaw);
	}

function wrapAngle(angle)
	{
	if (angle >= 360)
		{
		angle -= 360;
		}

	else if (angle < 0)
		{
		angle += 360;
		}

	return angle;
	}

