var lat = "";
var lon = "";
var center;
var map;
var geocoder;
var address;
var marker;


function initialize() 
{
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById("map_canvas"));		
		map.enableScrollWheelZoom();
		map.addControl(new GLargeMapControl);
		map.addControl(new GMapTypeControl);		
	
		if(lat == "" || lon == "" || lat == 0 || lon == 0)
		{
			center = new GLatLng(37.0625,-95.677068);
			map.setCenter(center, 2);			
		}
		else
		{
			center = new GLatLng(lat, lon);
			map.setCenter(center, 12);			
		}
		geocoder = new GClientGeocoder();
		getAddress(this, center);
		if(movable == true)
		{
			GEvent.addListener(map, "click", getAddress);
		}
		marker = new GMarker(center, {draggable: false});
		map.addOverlay(marker);
	}
}

//function getAddress(overlay, latlng) 
function getAddress(obj) 
{
	alert(obj.value);
	geocoder = new GClientGeocoder();
  if (obj != null) 
  {
//	address = latlng;
//	geocoder.getLocations(latlng, showAddress);
	geocoder.getLatLng(obj.value, function(point)
	{
		$('latlon').value 	= point.lat() + "," + point.lon();
	});
  }
}
function showAddress2(address) {
  if (geocoder) {
	geocoder.getLatLng(
	  address,
	  function(point) 
	  {
//		  map.setCenter(point, 13);
//		  var marker = new GMarker(point);
//		  map.addOverlay(marker);
		$('latlon').value 	= place.Point.coordinates[1] + "," + place.Point.coordinates[0];
	  }
	);
  }
}

function showAddress(response) 
{
  map.clearOverlays();
  if (response && response.Status.code == 200)
  {
	place = response.Placemark[0];
	point = new GLatLng(place.Point.coordinates[1],
						place.Point.coordinates[0]);
	
	marker = new GMarker(point);
	map.addOverlay(marker);
	
	var country = "", adminarea = "", subadminarea = "", locality = "", city = "";
	
	try
	{country = place.AddressDetails.Country.CountryNameCode;}
	catch(err)
	{country = "";}
	
	try
	{adminarea = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;}
	catch(err)
	{adminarea = "";}
	
	try
	{subadminarea = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;}
	catch(err)
	{subadminarea = "";}
	
	try
	{locality = place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName;}
	catch(err)
	{locality = "";}

	if(locality != "" && subadminarea == "")
	{
		city = locality;
	}
	else if(locality == "" && subadminarea != "")
	{
		//country does not use states - just country name and subadministrative area
		city = subadminarea;
		adminarea = "";
	}
	else
	{
		//place is in the middle of nowhere
		city = "";
		adminarea = "";
	}

	if(country != "")
		$("country").value = country;
	else
		$("country").value = "";

	if(adminarea != "")
		$("state").value = adminarea;
	else
		$("state").value = "";

	if(city != "")
		$("city").value = city;
	else
		$("city").value = "";

	$('latlon').value 	= place.Point.coordinates[1] + "," + place.Point.coordinates[0];
	$('address').value 	= place.address;	
  }
}
