window.addEventListener?window.addEventListener("load",loadMap,false):window.attachEvent("onload",loadMap);
window.addEventListener?window.addEventListener("unload",GUnload,false):window.attachEvent("onunload",GUnload);

var marker;
var markers = new Array();
var map;
var from_htmls = new Array();
var to_htmls = new Array();

function createMarker(id,point,name,html) {
	var marker = new GMarker(point);

	// The info window version with the "to here" form open
	to_htmls[id] = html + '<div class="hr"><hr /></div>' +
		'<p style="font-size:85%;">Directions: <strong>To here</strong> - <a href="javascript:fromhere(' + id + ')">From here</a></p>' +
	   '<form action="http://maps.google.com/maps" method="get" target="_blank"><p style="font-size:85%;">Start address:<br />' +
	   '<input type="text" size="40" maxlength="40" name="saddr" id="saddr" value="" /><br />' +
	   '<input value="Get Directions" type="submit">' +
	   '<input type="hidden" name="daddr" value="' + point.lat() + ',' + point.lng() + 
			   "(" + name + ")" + 
	   '"/></p>';
	// The info window version with the "to here" form open
	from_htmls[id] = html + '<div class="hr"><hr /></div>' +
		'<p style="font-size:85%;">Directions: <a href="javascript:tohere(' + id + ')">To here</a> - <strong>From here</strong></p>' +
	   '<form action="http://maps.google.com/maps" method="get"" target="_blank"><p style="font-size:85%;">End address:<br />' +
	   '<input type="text" size="40" maxlength="40" name="daddr" id="daddr" value="" /><br />' +
	   '<input value="Get Directions" type="submit">' +
	   '<input type="hidden" name="saddr" value="' + point.lat() + ',' + point.lng() +
			   "(" + name + ")" + 
	   '"/></p>';
	// The inactive version of the direction info
	html = html + '<div class="hr"><hr /></div>' +
		'<p style="font-size:85%;">Directions: <a href="javascript:tohere(' + id + ')">To here</a> - <a href="javascript:fromhere(' + id + ')">From here</a></p>';
	
	map.addOverlay(marker);
	GEvent.addListener(marker, "click", function() {
	  marker.openInfoWindowHtml(html, {maxWidth:300});
	});

	return marker;
}

// functions that open the directions forms
function tohere(id) {
	markers[id].openInfoWindowHtml(to_htmls[id], {maxWidth:300});
}
function fromhere(id) {
	markers[id].openInfoWindowHtml(from_htmls[id], {maxWidth:300});
}
  
  
function loadMap() {
   if (GBrowserIsCompatible()) {
			
		map = new GMap2(document.getElementById("google-map"));
		map.addControl(new GSmallMapControl());
		
		loc = new GLatLng(42, -79);
		map.setCenter(loc, 4);
		
		for (i=0; i<markers_data.length; i++) {
			var loc = new GLatLng(markers_data[i]['gm_lat'], markers_data[i]['gm_lng']);
			markers[i] = createMarker(i,loc,markers_data[i]['gm_name'],markers_data[i]['gm_address']);
		}

	}
}
