var map = null;
var markers = [];
var htmls = [];
var bounds = null;
var address = null;
var i = null;
var point = null;

function addMarker(point, i, address){
	markers[i] = new GMarker(point);
			
	htmls[i] = address.html();
	
	GEvent.addListener(markers[i], 'click', function () {
		map.panTo(markers[i].getLatLng());
		markers[i].openInfoWindowHtml(htmls[i]);
	});
	
	bounds.extend(point);
	map.addOverlay(markers[i]);
	map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	
	return true;
}

function mapsLoaded() {
	map = new GMap2(jQuery("#map").get(0));
	var northbayON = new GLatLng(46.312893818290675, -79.44284677505493);
	map.setCenter(northbayON, 13);
	map.addControl(new GSmallMapControl());
	bounds = map.getBounds();
	
	jQuery('.listing').each(function(i) {
		var address = jQuery('p.address', this);
		var lat = parseFloat(jQuery(this).find('.lat').text()); 
		var lng = parseFloat(jQuery(this).find('.lng').text());
		
		if(lat > 0){
			point = new GLatLng(lat, lng);
			addMarker(point, i, address);
		}else{
			var geo = new GClientGeocoder();
			geo.getLatLng(address.text(), function(point) {
				if (point) {
					addMarker(point, i, address);
				}
			});
		}
		
		map.setCenter(point, map.getBoundsZoomLevel(bounds));
	});
}

jQuery(document).ready(function () {	
	jQuery('#content').prepend( jQuery('<div />').attr('id', 'map') );							 
	google.load("maps", "2", {"callback" : mapsLoaded});
});
