/*var geo = google.gears.factory.create('beta.geolocation');


function updatePosition(position) {
	$('map').innerHTML = Json.toString(position);
    map.setCenter(new GLatLng(position.latitude, position.longitude), 10);

	var marker = new GMarker(point);
	map.addOverlay(marker);
		marker.openInfoWindowHtml('You are here.');
}

function handleError(positionError) {
  $('map').innerHTML = 'Attempt to get location failed: ' + positionError.message;
}*/


var map = undefined;
var geocoder;
var center_lat = 0;
var center_long = 0;
var points_found = -1;
var points_count = 0;
var minx, maxx, miny, maxy;
/*
function $(n)
{
	return document.getElementById(n);
}
*/

function map_center(x,y,z)
{
	map.setCenter(new GLatLng(x,y), z);
}

function run_map1()
{
	if (!GBrowserIsCompatible()) {
	    alert('Your browser sucks.');
		return;
    }
    
	$('map').innerHTML = 'Querying the address '+gg_address;
	
	geocoder = new GClientGeocoder();
	geocoder.getLocations(
      gg_address,
      function(response ) {
        if (!response || response.Status.code != 200) {
          $('map').innerHTML = gg_address + " not found by Google Map.";
        } else {
            $('map').innerHTML = '';
			$('gmap').style.display = '';

            map = new GMap2($("gmap"));
            map.addControl(new GLargeMapControl());
            map.addControl(new GMapTypeControl());
            place = response.Placemark[0];
			point = new GLatLng(place.Point.coordinates[1],
                       place.Point.coordinates[0]);
			
			map.setCenter(point, 15);
			var marker = new GMarker(point);
   			map.addOverlay(marker);
			marker.openInfoWindowHtml('<img style="float:left;margin-right:10px;" src="'+gg_img+'"><br>'+place.address);

			// now get my own location
			// geo.getCurrentPosition(updatePosition, handleError);
        }
      }
    );
}


function run_map()
{
	if (!GBrowserIsCompatible()) {
	    alert('Your browser does not support Google Map.');
		return;
    }
    
    if (gg_address==undefined || typeof gg_address == Array) { return; }
    
    points_found = -1;
    points_count = 0;
    minx = 9999; maxx = -9999;
    miny = 9999; maxy = -9999;
    
	if (map!=undefined) map.clearOverlays();
    
    for (i=0;i<gg_address.length;i++)
    {
		geocoder = new GClientGeocoder();
		geocoder.getLocations(gg_address[i], getloc_callback);
    }
}

function getloc_callback(response)
{
	if (!response || response.Status.code != 200) {
	   // $('map').innerHTML += response.name + " not found by Google Map.<br>";
	} else {
		points_found++; 
		if (map==undefined)	// create the map if not yet
		{
		    $('gmap').style.display = '';
		    
			map = new GMap2($("gmap"));
		    map.addControl(new GLargeMapControl());
		    map.addControl(new GMapTypeControl());
		}
		
		var letter = String.fromCharCode(65 + points_found);
		icon = "http://www.google.com/mapfiles/marker" + letter + ".png";
	
	    place = response.Placemark[0];
	    
	    $('map').innerHTML += '<img height=20 align=absmiddle src="'+icon+'"> <a href="javascript:void(map_center('+place.Point.coordinates[1]+','+place.Point.coordinates[0]+',15))">'+place.address+'</a><br>';
	
		if (minx > place.Point.coordinates[0]) minx = place.Point.coordinates[0];
		if (maxx < place.Point.coordinates[0]) maxx = place.Point.coordinates[0];
		if (miny > place.Point.coordinates[1]) miny = place.Point.coordinates[1];
		if (maxy < place.Point.coordinates[1]) maxy = place.Point.coordinates[1];
	
	    center_lat = ((center_lat * points_found) +  place.Point.coordinates[1] ) / (points_found+1);
		center_long = ((center_long * points_found) +  place.Point.coordinates[0] ) / (points_found+1);
		
		new_center = new GLatLng(center_lat,center_long);
		map.setCenter(new_center, 13);
		
		point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
		var marker = new GMarker(point);
		map.addOverlay(createMarker(point,place.address,points_found));
	
		// marker.openInfoWindowHtml('<img style="float:left;margin-right:10px;" src="'+gg_img+'"><br>'+place.address);
	
		// now get my own location
		// geo.getCurrentPosition(updatePosition, handleError);
	}
	points_count++;
	if (points_count==gg_address.length)
	{
		var zoomlevel = fzoom(zoomlevel);
	//	$('map').innerHTML += '('+minx+','+miny+') - ('+maxx+','+maxy+') : '+zoomlevel;
		map.setCenter(new_center, fzoom(zoomlevel));
	}
}

// magic zoom factor
function fzoom(val)
{
	return map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(minx,miny),new GLatLng(maxx,maxy)))-2;
}
// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
/*
var baseIcon = new GIcon(G_DEFAULT_ICON);
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);*/

// Creates a marker whose info window displays the letter corresponding
// to the given index.
function createMarker(point, html, index) {
  // Create a lettered icon for this point using our icon class
  var letter = String.fromCharCode("A".charCodeAt(0) + index);
  var letteredIcon = new GIcon(G_DEFAULT_ICON);
  letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";

  // Set up our GMarkerOptions object
  markerOptions = { icon:letteredIcon };
  var marker = new GMarker(point, markerOptions);

  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
  return marker;
}

// window.addEvent('domready', run_map);

