var map = null;
var geocoder = null;
var baseIcon = new GIcon();
var bounds = new GLatLngBounds();

baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

var map_latitude = -122.1419;
var map_longtitude = 37.4419;

function load() 
{
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(map_latitude, map_longtitude), 13);
		geocoder = new GClientGeocoder();
	}
}

function createMarker(point, number, index, address) 
{
	var letter = index;
	var icon = new GIcon(baseIcon);
	icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
	var marker = new GMarker(point, icon);
	var infoTabs = [ new GInfoWindowTab("Address", address)];
	GEvent.addListener(marker, "mouseover", function() {  marker.openInfoWindowTabsHtml(infoTabs); });
	return marker;
}

function showAddresses(addresses, ids, customer_addresses, chars) 
{
	if (geocoder) 
	{
		var i;
		var k=0;
		for (i = 0; i < addresses.length; i++)
		{
			geocoder.getLatLng(addresses[i], function(point) 
			{
				//console.log(point);
				//console.log(k);
				if (!point) 
				{
					//console.log(addresses[k] + " not found");
				}
				else 
				{
					map.setCenter(point, 14);
					map.addOverlay(createMarker(point, ids[k], chars[k], customer_addresses[k]));
					bounds.extend(point);
					map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
				}
				k++;
			});
		}
	}
}

$(function()
{
	load();
	showAddresses(zips, ids, addresses, chars.reverse());
});
