var g_map = null;
var g_marker = null;
var g_geocoder = null;

function mapClick( marker, clickedPt )
{
  mapSetLocation( clickedPt );
}

function mapAddClickListener()
{
  if ( g_map != null )
  {
    GEvent.addListener( g_map, 'click', mapClick);
  }
}

function mapSetLocation( pt )
{
  if ( g_marker == null )
  {
    g_marker = new GMarker( pt );
  }

  if ( g_map != null && g_marker != null )
  {
    g_marker.setPoint( pt );
    g_map.setCenter( pt, 13 );
    g_map.addOverlay( g_marker );    

    // set the hidden input values
    document.forms.locData.lat.value = pt.lat();
    document.forms.locData.lng.value = pt.lng();
	/*var ptLat = pt.lat();
	var ptLong = pt.lng();
	eval("document.forms.locData.lat"+form_index+".value = ptLat;");
	eval("document.forms.locData.lng"+form_index+".value = ptLong;");
	//alert(form_index);
	//alert(eval("document.forms.locData.lat"+form_index+".value"));
	//alert(eval("document.forms.locData.lng"+form_index+".value"));*/
  }
}
var form_index = "";
function mapInitialise(div_id) 
{
  var lat = document.forms.locData.lat.value;
  var lng = document.forms.locData.lng.value;
  var addr = document.forms.locData.addr.value;

  if ( GBrowserIsCompatible() ) 
  {
    var point = new GLatLng( lat, lng );
    g_map = new GMap2( document.getElementById(div_id) );
	
	
    
    if ( g_map!=null )
    {
      g_map.addControl( new GSmallMapControl() );
    }

    if ( point.lat()!=0 && point.lng()!=0)
    {
      mapSetLocation( point );
    }
    else
    {
      // geocode -- async
	  //alert(addr);
      g_geocoder = new GClientGeocoder();
      if ( g_geocoder != null )
      {
        g_geocoder.getLocations( addr, geoLocCallback );
      }
    }
  }
}

function geoLocCallback( a_resp )
{
  place = a_resp.Placemark[0];
  mapSetLocation( new GLatLng( place.Point.coordinates[1],
                               place.Point.coordinates[0] ) );
  g_geocoder = null;
}
