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

function addMarker(point, i, address, a_tag){
	markers[i] = new GMarker(point);
			
	htmls[i] = address + '<br /><a href="' + a_tag + '" title="click for property details">property details</a>';
	
	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(this).find('.address').text();
		var street = jQuery(this).find('.street').text();
		var postal = jQuery(this).find('.postal').text();
		
		var lat = parseFloat(jQuery(this).find('.lat').text()); 
		var lng = parseFloat(jQuery(this).find('.lng').text());
		var a_tag = jQuery(this).find('.image a').attr('href');
		
		
		if(lat > 0){
			point = new GLatLng(lat,lng);
			//alert(point);
			addMarker(point, i, address, a_tag);
		}else{
			var geo = new GClientGeocoder();
			geo.getLatLng(address + ', Ontario', function(point){
				if (!point) {
					//alert(address + " not found");
				}else{
					addMarker(point, i, address, a_tag);
				}
			});
		}
		
		jQuery(this).find('.address').css("cursor", "pointer")
			.css("text-decoration", "underline")
			.click(function(){
				markers[i].openInfoWindowHtml(htmls[i]);
			});
		if (jQuery('.listing').length <= 1) {
			map.setCenter(point, map.getBoundsZoomLevel(bounds));
		}
	});
}

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