var zoomLevels = new Array();
var markers = new Array();
var maps = new Array();

function setZoom(zoomLevel) {
    zoomLevels.push(zoomLevel);
}

function addMarker(mapNumber, latitude, longitude, image, html) {
    if (mapNumber > markers.length)
        markers.push(new Array());
    
    markers[mapNumber-1].push(new Array(latitude, longitude, image, html));
}

function showMaps() {
    if (!GBrowserIsCompatible())
        return;
    
    var baseIcon = new GIcon();
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.iconSize = new GSize(20, 34);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    baseIcon.shadowSize = new GSize(37, 34);
    
    for (mapIndex = 0; mapIndex < zoomLevels.length; mapIndex ++) {
        var map = new GMap2(document.getElementById("map_canvas_" + (mapIndex + 1)));
    	map.setCenter(new GLatLng(0, 0), 11);
    	map.addControl(new GMapTypeControl());
    	map.addControl(new GSmallMapControl());
    	maps.push(map);
        
        var nextMarkers = markers[mapIndex];
    	var bounds = new GLatLngBounds();
        
        for (markerIndex = 0; markerIndex < nextMarkers.length; markerIndex ++) {
            var nextMarker = nextMarkers[markerIndex];
            var latitude = nextMarker[0];
            
            if (latitude != null) {
                var longitude = nextMarker[1];
                var image = nextMarker[2];
                var html = nextMarker[3];
                var point = new GLatLng(latitude, longitude);
                var options = null;
                
                if (image != null) {
                    if (image == "A") {
                        var letter = String.fromCharCode("A".charCodeAt(0) + markerIndex);
                        var letterIcon = new GIcon(baseIcon);
                        letterIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
                        options = {icon:letterIcon};
                    } else {
                        var customIcon = new GIcon(baseIcon);
                        customIcon.image = image;
                        options = {icon:customIcon};
                    }
                }
                
                var marker = createMarker(point, options, html, maps[mapIndex]);
                maps[mapIndex].addOverlay(marker);
                bounds.extend(point);
            }
        }
        
        maps[mapIndex].setCenter(bounds.getCenter());
        
        if (zoomLevels[mapIndex] == 0)
            maps[mapIndex].setZoom(maps[mapIndex].getBoundsZoomLevel(bounds));
        else
            maps[mapIndex].setZoom(zoomLevels[mapIndex]);
    }
}

function createMarker(point, options, html, map) {
    var marker = new GMarker(point, options);
    
    if (html != null)
        GEvent.addListener(marker, "click", function(){map.openInfoWindowHtml(point, html);});
    
    return marker;
}

