// globals
var map;
var markers = new Array();
var marker_count = 0;
var need_update = false;

function initialize()
{
	var latlng = new google.maps.LatLng(0, 0);
	var myOptions =
	{
		zoom:1, 
		center:latlng, 
		disableDefaultUI:false,
		mapTypeControl: true,
		mapTypeId:google.maps.MapTypeId.ROADMAP // SATELLITE
	};
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	//setTimeout(step2, 1000);
	//setMarkers(stations);
	google.maps.event.addListener(map, "bounds_changed", boundsChanged);
//	google.maps.event.addListener(map, "bounds_changed", function() {setTimeout(step2, 1);});
	
	// set up a timer to handle updates
	updateHandler();
	setInterval(updateHandler, 1000);
	
}

function boundsChanged()
{
	need_update = true;
}

function updateHandler()
{
	if (need_update)
	{
		need_update = false;
		// get the width and height of the map
		var bounds = map.getBounds();
		var center = bounds.getCenter();
		var span = bounds.toSpan();
		var xmlHttp = new BWXmlHttp();
		var url = "worldTidesLocationXml.php?centerlat=" + center.lat() + "&centerlng=" + center.lng() + "&spanlat=" + span.lat() + "&spanlng=" + span.lng();
		xmlHttp.request(url, "", handleXmlResponse);
	}
}

function handleXmlResponse(responseText)
{
	var xmlDoc = BWXml.parse(responseText);
	var stationTag = xmlDoc.getElementsByTagName("stations");
	var stations = stationTag[0].getElementsByTagName("station");
	var locations = new Array();
	for (var i=0; i<stations.length; i++)
	{
		var station = stations[i];
		var name = station.getAttribute("name");
		var lat = station.getAttribute("lat");
		var lng = station.getAttribute("lng");
		var count = station.getAttribute("count");
		locations[i] = new Array(name, lat, lng, i, count);
//		alert(name+"  ("+lat+", "+lng+")");
	}
//	alert(locations.length);
	setMarkers(locations);
}

function reloadMarkers()
{
	// redefine stations
	// setMarkers(stations);
}

function setMarkers(locations)
{
	// clear existing markers
	for (var i=0; i<marker_count; i++)
		markers[i].setMap(null);
	marker_count = 0;
	markers.length = 0;
	
	var image1 = new google.maps.MarkerImage
		(
			"images/marker-station.png",
			new google.maps.Size(20, 34),
			new google.maps.Point(0,0)
		);
	var image2 = new google.maps.MarkerImage
		(
			"images/marker-multiple.png",
			new google.maps.Size(24, 36),
			new google.maps.Point(0,0)
		);
	for (var i = 0; i < locations.length; i++)
	{
		var station = locations[i];
		var myLatLng = new google.maps.LatLng(station[1], station[2]);
		var image = image1;
		if (station[4] > 1)
			image = image2;
		
		markers[marker_count++] = new google.maps.Marker(
			{
				 position: myLatLng,
				 map: map,
				 icon: image,
				 title: station[0],
				 zIndex: station[3]
			}
		);
	}
}

