
function SingleMapLoader(longitude,latitude) 
{
    if (GBrowserIsCompatible()) 
    {
        var map = new GMap(document.getElementById("google_map"));
        
        var center = new GPoint(longitude,latitude);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
        map.centerAndZoom(center,2);
        map.addOverlay(new GMarker(center));


        var marker = new GMarker(center);
        map.addOverlay(new GMarker(center));
    }
}

function CenterThisMap(mapName,bounds)
{

    var span = new GSize(bounds.maxX - bounds.minX, bounds.maxY - bounds.minY);
    var center = new GPoint(bounds.minX + span.width / 2., bounds.minY + span.height / 2.);
    
    //mapName.centerAtLatLng(span);
    //mapName.recenterOrPanToLatLng(center);
    mapName.centerAndZoom(center,best_zoom(bounds));
}
            
// Creates a marker at the given point with the given number label
function createMarker(point, number) {
    var marker = new GMarker(point);
    GEvent.addListener(marker, "click", function() {
         marker.openInfoWindowHtml(positionArray[number][2]);
     });
   return marker;
}            

function MapLoader(positionArray_) 
{
    //create an array of longitude and latitudes for the map centers, and any additional text
    positionArray = new Array();
    positionArray = positionArray_;

    if (GBrowserIsCompatible()) 
    {
        var map = new GMap(document.getElementById("google_map"));
     
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());

        var bounds = new GBounds(); 

         for (var i = 0 ;i < positionArray.length; i++){
                     
            var center2 = new GPoint(positionArray[i][0],positionArray[i][1]);
            map.centerAndZoom(center2,4);
            map.addOverlay(new GMarker(center2));
            bounds.extend(new GPoint(positionArray[i][0],positionArray[i][1])); 
            
            map.addOverlay(createMarker(center2, i));

          }
       
        CenterThisMap(map,bounds);
        
        
    }
}

function best_zoom(bounds) { 
    var width = 478; 
    var height = 400;
    width = 378; 
    height = 300;  


    var dlat = Math.abs(bounds.maxY - bounds.minY); 
    var dlon = Math.abs(bounds.maxX - bounds.minX); 
    if(dlat == 0 && dlon == 0) 
        return 4; 


    // Center latitude in radians 
    var clat = Math.PI*(bounds.minY + bounds.maxY)/360.; 


    var C = 0.0000107288; 
    var z0 = Math.ceil(Math.log(dlat/(C*height))/Math.LN2); 
    var z1 = Math.ceil(Math.log(dlon/(C*width*Math.cos(clat)))/Math.LN2); 

    return (z1 > z0) ? z1 : z0; 
}
