/**
 * API GOOGLE MAPS
 * @author Vinicius Cruz
 * @since 2009
 */
var map = null; //mapa
var geocoder = new GClientGeocoder(); //geocodificador

var latitude; //posicao do marcador
var longitude; //posicao do marcador

function load()
{
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById("map")); //instancia do mapa
		map.setCenter(new GLatLng(-12.554564, -47.460937), 2);
		map.setUIToDefault();

	}else
	{
		alert("Atenção: o navegador que você está usando não tem suporte ao Google Maps.");
	}
}

/**
 * Define coordenadas em campo hidden de form
 * @param marker
 * @return
 */
function define_coordenadas(marker)
{
	latitude = marker.getLatLng().lat();
	longitude = marker.getLatLng().lng();

	jQuery("input[name=latitude]").val(latitude);
	jQuery("input[name=longitude]").val(longitude);
}

/**
 * Localiza ponto no mapa pela latitude e longitude, adicionando marcador no mapa.
 * @param lat
 * @param lng
 * @param value_draggable
 * @return
 */
function localiza_ponto(lat, lng, value_draggable)
{
	var point = new GLatLng(lat, lng);
	createMarker(point, value_draggable);
	map.setCenter(point, 16);
}

/**
 * Função encontra posição e adiciona marcador,
 * de acordo com endereço string.
 */
function mostraEndereco(endereco) 
{
	geocoder.getLatLng(endereco, function(point) 
	{
		if (!point) 
		{
			alert("Endereço não encontrado.");
		}else 
		{
			map.clearOverlays(); //limpa todos marcadores
			map.setCenter(point, 16); //centraliza mapa
			var marker = createMarker(point, true); //cria marcador
		}
	});
}

/**
 * Função para criar marcador e adicionar ao mapa.
 * O marcador torna-se arrastável, e retorna os valores da coordenada
 */
function createMarker(point, value_draggable) {
	var marker = new GMarker(point, {/*icon: icon, */draggable: value_draggable});
	map.addOverlay(marker); //adiciona marcador em mapa
	define_coordenadas(marker);
	
	//evento ao arrastar marcador
	GEvent.addListener(marker, "dragstart", function() {
		marker.closeInfoWindow(); //fecha janelinha
	});
	GEvent.addListener(marker, "dragend", function() {
		define_coordenadas(marker);
	});
	return marker;
}
