var map, manager;
var centerLatitude = 43.6656364721523, centerLongitude = -79.35373306274414, startZoom = 13;


function createMarkerClickHandler(marker, text, link) {
	return function() {
		marker.openInfoWindowHtml(
			'<h3>' + text + '</h3>'
		);
		return false;
	};
}


function createMarker(pointData) {
	var latlng = new GLatLng(pointData.latitude, pointData.longitude);
	var icon = new GIcon();
	icon.image = 'red-marker.png';
	icon.iconSize = new GSize(32, 32);
	icon.iconAnchor = new GPoint(16, 16);
	icon.infoWindowAnchor = new GPoint(25, 7);

	opts = {
		"icon": icon,
		"clickable": true,
		"labelText": pointData.abbr,
		"labelOffset": new GSize(-16, -16)
	};
	var marker = new LabeledMarker(latlng, opts);
	var handler = createMarkerClickHandler(marker, pointData.name, pointData.wp);
	
	GEvent.addListener(marker, "click", handler);

	var listItem = document.createElement('li');
	listItem.innerHTML = '<div class="label">'+pointData.abbr+'</div><a href="' + pointData.wp + '">' + pointData.name + '</a>';
	listItem.getElementsByTagName('a')[0].onclick = handler;

	document.getElementById('sidebar-list').appendChild(listItem);

	return marker;
}

function windowHeight() {
	// Standard browsers (Mozilla, Safari, etc.)
	if (self.innerHeight)
		return self.innerHeight;
	// IE 6
	if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
	// IE 5
	if (document.body)
		return document.body.clientHeight;
	// Just in case. 
	return 0;
}

function handleResize() {
	var height = windowHeight() - document.getElementById('toolbar').offsetHeight - 30;
	document.getElementById('map').style.height = height + 'px';
	document.getElementById('sidebar').style.height = height + 'px';
}

function init() {
	handleResize();
	
	map = new GMap(document.getElementById("map"));
	map.addControl(new GSmallMapControl());
	map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
	map.addControl(new GMapTypeControl());

	manager = new GMarkerManager(map);
	
	// This is a sorting trick, don't worry too much about it.
	markers.sort(function(a, b) { return (a.abbr > b.abbr) ? +1 : -1; }); 
	
	batch = [];
	for(id in markers) {
		batch.push(createMarker(markers[id]));
	}
	manager.addMarkers(batch, 11);
	manager.refresh();



// TORONTO EAST

 	// Danforth Village
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#836FFF",
    weight: 10,
    points: "_uqiG`qjcNnIwBywA}hLcIfBrxAxgL",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});

map.addOverlay(encodedPolyline);

	// Beaches
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#D02090",
    weight: 10,
    points: "sepiGfh`cNm^iqCnU{I~d@brC_YrI",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});

map.addOverlay(encodedPolyline);

	// Little India
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#FF1493",
    weight: 10,
    points: "copiGvadcN_FyYoCbArEjZfDuA",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);


	// Leslieville
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#2F4F4F",
    weight: 10,
    points: "ezmiG|ufcNm}@lW_Zub@ob@mzA~lAk^pm@xdC",
    levels: "BBBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);



	// Queen Street East
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#8B4513",
    weight: 10,
    points: "icpiGjq`cN~EgB`dBjeMyCr@ieBocM",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);



	// Riverdale
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#8B0000",
    weight: 10,
    points: "s_siGb~ecNdXfjBoInThC|L`WlEpXdAlRoM`q@}Lnh@}ZmKq{@m}@~UgQaO{Ps]qLya@qt@nU",
    levels: "BBBBBBBBBBBBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);


	// Upper Beaches
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#4EEE94",
    weight: 10,
    points: "{qsiGr}|bN`j@leEthA_]{o@giEucAt_@",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);




// TORONTO WEST



	// Queen West
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#151B8D",
    weight: 10,
    points: "eijiGts{cN|EuEojAmfJmCpC`fAbeJ",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);


	// King West
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#8B008B",
    weight: 10,
    points: "_kkiG`|qcNeFtApv@fwGpF{Div@_sG",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);



	// Chinatown
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#8B7500",
    weight: 10,
    points: "wgmiGrsocNnPzmAzN{D`DdQq{@bW_DiTvYgJyKimAlKcG",
    levels: "BBBBBBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);



	// Entertainment District
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#00C5CD",
    weight: 10,
    points: "ualiGhxqcNsf@_wDh~@eWjn@~nDwcAr^",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);



	// Kensington Market
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#FF3030",
    weight: 10,
    points: "ctmiGtgtcNiH{i@r]aNpGt_@wApM{UtI",
    levels: "BBBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);



	// Distillery District
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#00008B",
    weight: 10,
    points: "mmliGlnkcNuFi`@rKiDbHh`@uLhD",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);



	// Little Italy
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#008B00",
    weight: 10,
    points: "qtmiGpmtcNh]aKxPh{Amd@dLeFg]nC_RqGgi@",
    levels: "BBBBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);


	// Annex
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#EE6AA7",
    weight: 10,
    points: "ucoiGx`ucNaWsiBi{@rWtU`kBn|@iY",
    levels: "BBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);


	// Yorkville
var encodedPolyline = new GPolyline.fromEncoded({
    color: "#25587E",
    weight: 10,
    points: "egqiGrcrcNxe@sNcIil@oOlEeEdVwFlLbApO",
    levels: "BBBBBBB",
    zoomFactor: 32,
    numLevels: 4
});
map.addOverlay(encodedPolyline);














     }

window.onresize = handleResize;
window.onload = init;
window.onunload = GUnload;

