    var map = null;
    var lat_min=0;
    var lat_max=0;
    var lng_min=0;
    var lng_max=0;
    
    function ginitialize() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));        
        map.addControl(new GSmallMapControl());
      }
    }
    
    function createMarker(point, text) {
        var marker = new GMarker(point, {});
        GEvent.addListener(marker, "click", function() {
        	marker.openInfoWindowHtml(text);
        });
        return marker;
    }
    
    function computeZoom(ltmi,ltma,lnmi,lnma){
    	var zoom;
    	var diff = 0;
    	var lat_diff = ltma - ltmi;
    	var lng_diff = lnma - lnmi;
    	
    	if( lat_diff > lng_diff ){
    		diff = lat_diff;
    	}else{
    		diff = lng_diff;
    	}
    	if( diff < 0.05 ){
    		zoom = 13;
    	}else if( diff < 0.1 ){
    		zoom = 12;
    	}else if( diff < 0.2 ){
    		zoom = 11;
    	}else if( diff < 0.4 ){
    		zoom = 10;
    	}else if( diff < 0.8 ){
    		zoom = 9;
    	}else if( diff < 1.6 ){
    		zoom = 8;
    	}else if( diff < 3.2 ){
    		zoom = 7;
    	}else if( diff < 6.4 ){
    		zoom = 6;
    	}else{
    		zoom = 6;
    	}
    	
    	return zoom;
    }
    
    function computeCenter(ltmi,ltma,lnmi,lnma){
    	var center;
    	lat = ltmi + (ltma-ltmi)/2;
    	lng = lnmi + (lnma-lnmi)/2;
    	center = new GLatLng(lat,lng);
    	return center;
    }
    
    function showAddress(lat,lng,text,multi) {
    	var latlng = new GLatLng(lat,lng);
    	
    	if(multi){
    		if( lat_min == 0 ){
    			lat_min = lat;
    			lat_max = lat;
    			lng_min = lng;
    			lng_max = lng;
    			map.setCenter(latlng, 13);
    		}else{
    			if( lat < lat_min){
    				lat_min = lat;
    			}
    			if( lat > lat_max){
    				lat_max = lat;
    			}
    			if( lng < lng_min){
    				lng_min = lng;
    			}
    			if( lng > lng_max){
    				lng_max = lng;
    			}
    			zoom = computeZoom(lat_min,lat_max,lng_min,lng_max);
    			center = computeCenter(lat_min,lat_max,lng_min,lng_max);
    			map.setCenter(center, zoom);
    		}
    	}else{
    		map.setCenter(latlng, 13);
    	}
	    
	    marker = createMarker(latlng, text);
        map.addOverlay(marker);

    }


function showManyAddresses(addresses)
{
    var bounds = new GLatLngBounds();
    for (var i=0; i<addresses.length; i++)
    {
        var addr = addresses[i];
        var latlng = new GLatLng(addr.lat,addr.lng);
        var marker = createMarker(latlng, addr.text);
        map.addOverlay(marker);
        bounds.extend(latlng);
    }
    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));    
}   

