var map = null;
var geocoder = null;
var lat = null;
var lng = null;
var marker = null;
var street = null;
var city = null;


function initialize(latField,lngField,cityField,streetField)
{
  if (GBrowserIsCompatible())
  {
    lat = latField;
    lng = lngField;
    street = streetField;
    city = cityField;
    map = new GMap2(document.getElementById('map_canvas'));
    map.addControl(new GSmallMapControl());
    if(!parseFloat($(lat).value) || !parseFloat($(lng).value))
    {
      map.setCenter(new GLatLng(52.24125614966341,18.96240234375), 6);
    }
    else
    {
      map.setCenter(new GLatLng($(lat).value,$(lng).value), 15);
      marker = new GMarker(map.getCenter(), {draggable: true});
    
	    GEvent.addListener(marker, 'dragend', function() {
	      position = marker.getPoint();
	      map.setCenter(position);
	      $(lat).value = position.lat();
	      $(lng).value = position.lng();
	    });
	    map.addOverlay(marker);
    }
    
    geocoder = new GClientGeocoder();
  }
  updateAddress();
}

function showAddress(address)
{
  if (geocoder)
  {
    geocoder.getLatLng(
      address,
      function(point)
      {
        if (!point)
        {
          
        }
        else 
        {
          if(!marker)
          {
            marker = new GMarker(point, {draggable: true});
            
				    GEvent.addListener(marker, 'dragend', function() {
				      position = marker.getPoint();
				      map.setCenter(position);
				      $(lat).value = position.lat();
				      $(lng).value = position.lng();
				    });
				    map.addOverlay(marker);
				  }
				  else
				  {
            marker.setPoint(point);
          }
          
          map.setCenter(point,15);
          $(lat).value = point.lat();
          $(lng).value = point.lng();
        }
      }
    );
  }
}

function resetMap()
{
  map.removeOverlay(marker);
  map.setCenter(new GLatLng(52.24125614966341,18.96240234375), 6);
  $(lat).value = '';
  $(lng).value = '';
  marker = null;
  updateAddress();
}

function updateAddress()
{
  if($(city) != null && $(city).value != '')
  {
    if($(street) != null && $(street).value != '')
    {
      $('address').value = $(city).value + ', ' + $(street).value;
    }
    else
    {
      $('address').value = $(city).value;
    }
  }
  else if($(street) != null && $(street).value != '')
  {
    $('address').value = $(street).value;
  }
}

function showOnMap(lat,lng,id,html)
{
  if (GBrowserIsCompatible())
  {
    map = new GMap2(document.getElementById('map_canvas'+id));
    map.addControl(new GSmallMapControl());
    if(!parseInt(lat) || !parseInt(lng))
    {
      map.setCenter(new GLatLng(52.24125614966341,18.96240234375), 6);
    }
    else
    {
      map.setCenter(new GLatLng(lat,lng), 15);
      marker = new GMarker(map.getCenter(), {draggable:false});
    
      map.addOverlay(marker);
    }
  }
}
