function load() {

	if (GBrowserIsCompatible())
	{
		//Se o div google_maps nao existir, a tela é detalhes do imovel, chama a função exibeMapa
		if(!document.getElementById('google_maps'))
		{
			exibeMapa();
			return false;
		}

		//Instancia o GMap e seta o centro para qualquer lugar de inicio
		map = new GMap2(document.getElementById('google_maps'));
		map.setCenter(new GLatLng(37.4419, -122.1419), 17);
		map.disableDoubleClickZoom();

		//seta altuns controladores
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());

		//Cria o obj geocoder para pegar o endereço a partir do cep
		geocoder = new GClientGeocoder();
		showAddress(address);

		//Seta o evento onclick para pegar as coordenadas
		GEvent.addListener(map,"click", function(overlay,point) {
			map.setCenter(point, 17);
			var myHtml = "Seu imóvel. <br />Para alterar a posição, arraste o ícone do imóvel<br />ou clique na nova posição.";
		
			//instancia o marcador
			map.clearOverlays();
			marker.setPoint(point);
			map.addOverlay(marker);
			
			dragMarker(marker);
					
			//Procura marcadores de referencia
			var ms = marcadores();
			for(i=0;i<ms.length;i++)
				map.addOverlay(ms[i]);

			//Seta os hidden field com latitude e longitude
			setLatLong(point.lat().toString(), point.lng().toString());
			
			marker.openInfoWindow(myHtml);
		});
	}
}

function dragMarker(marker)
{
	GEvent.addListener(marker, "dragstart", function() {
		map.closeInfoWindow();
	});	
	
	GEvent.addListener(marker, "dragend", function() {
		this.openInfoWindowHtml("Seu imóvel. <br />Para alterar a posição, arraste o ícone do imóvel<br />ou clique na nova posição.");
		setLatLong(this.getLatLng().lat().toString(), this.getLatLng().lng().toString());
	});
}

function showAddress(addr)
{
	if(latitude != '')
	{
		var point = new GLatLng(latitude, longitude);
		map.setCenter(new GLatLng(latitude, longitude), 17);

		//Altera o icone
		var icone = setIcon();

		marker = new GMarker(point, {icon:icone, draggable: true});
		map.addOverlay(marker);
		marker.openInfoWindowHtml('Seu imóvel. <br />Para alterar a posição, arraste o ícone do imóvel<br />ou clique na nova posição.');
		dragMarker(marker);
		return;
	}
	if (geocoder) {
		geocoder.getLatLng(
			addr,
			function(point) {
				if (!point) {
					showAddress('Ponta Grossa, PR');
				} else {
					map.setCenter(point, 17);
					map.openInfoWindowHtml(map.getCenter(), "<strong>Clique</strong> na localização exata<br /> do seu imóvel no mapa.");

					//Altera o icone
					var icone = setIcon();
	
					//instancia o marcador
					marker = new GMarker(point, {icon:icone, draggable: true});
				}
			}
		);
	}
}
function setLatLong(lat, lng)
{
	document.getElementById('ed_latitude').value = lat;
	document.getElementById('ed_longitude').value = lng;
}

function exibeMapa()
{
	//Instancia o GMap e seta o centro para qualquer lugar de inicio
	map = new GMap2(document.getElementById('mapa_imovel'));
	map.setCenter(new GLatLng(latitude, longitude), 17);

	//Cria um ponto para definir o marcador
	var point = new GLatLng(latitude, longitude);

	//Altera o icone
	var icone = setIcon();

	var marker = new GMarker(point, {icon:icone});
	map.addOverlay(marker);

	//Procura marcadores de referencia
	var ms = marcadores();
	for(i=0;i<ms.length;i++)
		map.addOverlay(ms[i]);

	//seta altuns controladores
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());

	GEvent.addListener(marker, "mouseover", function() {
		marker.openInfoWindowHtml(endereco);
	});

	GEvent.addListener(marker, "mouseout", function() {
		marker.closeInfoWindow();
	});
}

function setIcon()
{
	var icone = new GIcon();
	icone.image = "http://baseforteimoveis.tempsite.ws/public/images/ico_google_maps.png";
	//icone.shadow = "";
	icone.iconSize = new GSize(37, 37);
	//icone.shadowSize = new GSize(0, 0);
	icone.iconAnchor = new GPoint(18, 36);
	icone.infoWindowAnchor = new GPoint(13, 5);

	return icone;
}
$(document).ready(load);
$(window).unload(GUnload);