var zoomArray = new Array(2,4,6,10,12,13,16,16,17);
var zoomLevel = 12;
var xml;


function center(lat, lng, zoom) {
  if (GBrowserIsCompatible()) { map.setCenter(new GLatLng(lat, lng), zoom); }
}

function addPoint(pt) {
  var marker = new GMarker(pt);
  map.addOverlay(marker);
}

function addGMarker(lat, lng, info) {
  var pt = new GMarker(new GLatLng(lat,lng));
  GEvent.addListener(pt, "click", function() { pt.openInfoWindowHtml(info); });
  map.addOverlay(pt);
} 


function geocode(address, cityId, zip, centerOn) {
  var geocoder = new GClientGeocoder();
  var location = null;
  
  if (geocoder) {
    geocoder.getLocations(address, 
                   function(response) { 
                       if(response.Status.code != 200){ alert('"' + address + '" not found'); } 
                       else { 
                          location = response.Placemark[0]; 

                          zoomLevel = zoomArray[location.AddressDetails.Accuracy];
                          var lat = location.Point.coordinates[1];
                          var lng = location.Point.coordinates[0];
                          
  	                      if (cityId != -1) { addCityLatLng(cityId, lat, lng); }
  	                      if (zip != -1) { addZipLatLng(zip, lat, lng); }

  	                      if (centerOn == 1) { center(lat, lng, zoomLevel); }
                       }
                   });
  }
}


function addCityLatLng(cityId, lat, lng) {
  $.ajax({
	url : "../ajax/updatePlaceLL?cityId="+cityId+"&lat="+lat+"&lng="+lng,
	success: function(data) {}
  });
}


function addZipLatLng(zip, lat, lng) {
  $.ajax({
	url : "../ajax/updatePlaceLL?zip="+zip+"&lat="+lat+"&lng="+lng,
	success: function(data) {}
  });
}


function showAddress(address, type, id) {
  var geocoder = new GClientGeocoder();
  if (geocoder) {
    geocoder.getLatLng(address,
      function(pt) {
        var url = "../ajax/updatePlaceLL?"+type+"&id="+id+
                  "&lng=" + pt.lng() + "&lat=" + pt.lat();
        sendLocationUpdate(url, 0);
        
        map.setCenter(pt, 16);
        var marker = new GMarker(pt);
        map.addOverlay(marker);
        return marker;
      }
    );
  }
}
