

function makeMap(){
    var map;
    var mapAttributes;
    this.load = function(mapBluePrint) {
        this.mapAttributes = mapBluePrint;
        if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map"));
            this.AddMapControls();
            this.SetMapCenter();
            this.setMarker();        
            map.setMapType(G_SATELLITE_MAP);
            map.enableScrollWheelZoom();
        }        
    }
    
    this.AddMapControls = function() {
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
    }
    
    this.SetMapCenter = function () {
        point = new GLatLng(this.mapAttributes.mapCenter.lat, this.mapAttributes.mapCenter.lng);
	    map.setCenter(point, this.mapAttributes.zoom);
    }
    
    this.setMarker = function() {
        var markers = this.mapAttributes.markers;
        var builder = new InterfaceBuilder;
	    for (var marker in markers) {
	        point = this.makePoint(markers[marker].point);            
            domObject = builder.setUpRoot(markers[marker]);
	        marker = this.makeMarker(point, domObject);
	        this.makeListener(marker, point);
	    }    
    }
    
    this.makeMarker = function(point, domObject){
        marker = new GMarker(point);
        marker.domObject = domObject;
	    map.addOverlay(marker);
	    return marker;
    }
    
    this.makeListener = function(marker, point){
        GEvent.addListener(
	        map, 
	        "click", 
	        function(marker, point) {
                marker.openInfoWindow(marker.domObject);
            }
        );
    }
    
    this.makePoint = function (mapPoint){
        newPoint = new GLatLng(mapPoint.lat, mapPoint.lng);
        return newPoint;
    }
}