// JavaScript 2005 Peter Jones, PixelDevelopment.com

var map;
var pointTitle = [];
var pointDetail = [];
var pointInfo = [];
var pointLat = [];
var pointLon = [];

pointTitle[0]= 'Kitsilano Beach';
pointDetail[0]= '';
pointInfo[0]= '';
pointLat[0]= 49.275;
pointLon[0]= -123.15321922302246;
pointTitle[1]= 'Third Beach';
pointDetail[1]= '<a href="showmap.asp?gallery=stanleypark2004&amp;caller=pdmarker.asp">Third Beach<\/a><br\/><img src="photo/pmj_july_28_2004_0009_thumb.jpg" width="100" height="100" \/>';
pointInfo[1]= '';
pointLat[1]= 49.307;
pointLon[1]= -123.15630912780762;
pointTitle[2] = '';
pointDetail[2]= 'Third Beach<br\/>Concession Stand';
pointInfo[2] = '';
pointLat[2] = 49.302;
pointLon[2] = -123.15593898296356;
pointTitle[3]= 'Canada Place';
pointDetail[3]= '';
pointInfo[3]= '';
pointLat[3]= 49.289866220776666;
pointLon[3]= -123.1139087677002;
pointTitle[4]= '';
pointDetail[4]= '';
pointInfo[4]= '';
pointLat[4]= 49.289866220776666;
pointLon[4]= -123.18;

var baseIcon = new GIcon();
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

function getTheTime() {
	var curtime = new Date();
	var curhour = curtime.getHours();
	var curmin = curtime.getMinutes();
	var cursec = curtime.getSeconds();
	var time = "";

	if (curhour == 0)
		curhour = 12;
	time = (curhour > 12 ? curhour - 12 : curhour) + ":" +
		(curmin < 10 ? "0" : "") + curmin + ":" +
		(cursec < 10 ? "0" : "") + cursec + " " +
		(curhour > 12 ? "PM" : "AM");
	return time;
}

function createMarker(i, point, html) {
	var marker;
	var icon = new GIcon(baseIcon);
	var letter = String.fromCharCode("A".charCodeAt(0) + i);
	icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";

	if (false) // i == 0)
		marker = new PdMarker(point);
	else
		marker = new PdMarker(point, icon);

	if (pointTitle[i].length > 0)
		marker.setTooltip(pointTitle[i]);

	if (i == 0) // marker A. standard window tooltip
	{
		marker.setHoverImage("http://www.google.com/mapfiles/dd-start.png");
		marker.setCursor("help"); // http://www.quirksmode.org/css/cursor.html
		marker.setTitle(pointTitle[i]);
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(html);
		});
	}
	else if (i == 4) // marker E. random position
	{
		GEvent.addListener(marker, "mouseover", function() {
			var lat = pointLat[4] + (Math.random() - .5) / 25;
			var lon = pointLon[4] + (Math.random() - .5) / 25;
			marker.setPoint(new GLatLng(lat,lon));
		}); 
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml("Caught it!");
		});
	}
	else
	{
		if (pointDetail[i].length > 0)
			marker.setDetailWinHTML(pointDetail[i]);
		marker.setHoverImage("images/markeryellow.png");

		if (i == 3) // marker D. show time, switch class on click
		{
			GEvent.addListener(marker, "mouseover", function() {
				marker.setTooltip(getTheTime());
			}); 

			GEvent.addListener(marker, "click", function() {
				if (marker.getTooltipHiding())
				{
					marker.setTooltipHiding(false);
					marker.setOpacity(100);
					marker.setTooltipClass("markerTooltipAlternate");
				}
				else
				{
					marker.setTooltipHiding(true);
					marker.setOpacity(70);
					marker.resetTooltipClass();

					// mouseout disabled when switching classes
					marker.restoreImage();
					marker.hideTooltip();
				}
			});
		}
	}
	return marker;
}

function onPageLoad() {
	map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(49.300,-123.160), 17-5);
//	map.setMapType(map.getMapTypes()[0]);
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());

	for (i=0; i<pointTitle.length; i++)
	{
		var marker = createMarker(i, new GPoint(pointLon[i],pointLat[i]), pointTitle[i] + '<br/>' + pointInfo[i]);
		map.addOverlay(marker);
	}

	map.zoomToMarkers();
	
	insertVersionIntoPage();
}

function insertVersionIntoPage() {
	var obj = document.getElementById("pdmarkerrevisions");
	if (obj)
		obj.innerHTML = getPdMarkerRevisionInfo();

	obj = document.getElementById("pdmarkerversion");
	if (obj)
		obj.innerHTML = getPdMarkerVersion() + " (Google Maps JS version: " + getGoogleMapsVersion() + ")";
}

function loadLotsOfMarkers(count, isPd) {
	var bounds = map.getBoundsLatLng();
	var width = bounds.maxX - bounds.minX;
	var height = bounds.maxY - bounds.minY;
	for (var i = 0; i < count; i++)
	{
		var point = new GPoint(bounds.minX + width * Math.random(),
						bounds.minY + height * Math.random());
		var marker;
		if (isPd)
			marker = new PdMarker(point);
		else
			marker = new GMarker(point);
		map.addOverlay(marker);
	}
}

function removeMarkers() {
	map.clearOverlays();
}

