
	function loadGoogleMaps(divId, strEndereco, strLabel, x, y)
	{
		$('divGoogleMaps_'+divId).style.display = 'block';
		$('divGoogleMapsTrace_'+divId).style.display = 'block';

		if ($('divGoogleMaps_'+divId).getAttribute('googleMaps') != 'true')
		{
			if (GBrowserIsCompatible()) 
			{
				var map = new GMap2(document.getElementById('divGoogleMaps_'+divId));
	
				// Passagem do posicionamento inicial: centro de Barão Geraldo
				map.setCenter(new GLatLng(-22.826108, -47.083712), 14);

				// Inclui controles de zoom e rotação no mapa
				map.addControl(new GSmallMapControl());
				//map.addControl(new GMapTypeControl());
	
				/*Início GeoCoder — localização pelo endereço*/
				var address = strEndereco;

				if (x && y)
				{
					point = new GLatLng(x, y);
					map.addOverlay(new GMarker(point));
					map.setCenter(point, 14);

					strHtml = 	'<b>'+strLabel+'</b>';
					strHtml += '<br>'+strEndereco;
					//strHtml += '<br><a href="javascript:void(0)" onclick="traceGoogleMaps(\''+divId+'\', \''+strEndereco+'\')">Teste</a>';

					// Adiciona o balão de informações
					map.openInfoWindowHtml(map.getCenter(), strHtml);
				}
				else
				{
					var geocoder = new GClientGeocoder;
					geocoder.getLatLng(address, function(point) 
					{
						if (point) 
						{
							//map.clearOverlays();
							map.addOverlay(new GMarker(point));
							map.setCenter(point, 14);
		
							strHtml = 	'<b>'+strLabel+'</b>';
							strHtml += '<br>'+strEndereco;
							//strHtml += '<br><a href="javascript:void(0)" onclick="traceGoogleMaps(\''+divId+'\', \''+strEndereco+'\')">Teste</a>';
		
							// Adiciona o balão de informações
							map.openInfoWindowHtml(map.getCenter(), strHtml);
		
						}
					});
				}
				
				$('divGoogleMaps_'+divId).setAttribute('googleMaps', 'true');
			}
		}
		else
		{
			GUnload();
			$('divGoogleMaps_'+divId).innerHTML = '';
			$('divGoogleMaps_'+divId).style.display = 'none';
			$('divGoogleMaps_'+divId).setAttribute('googleMaps', 'false');
			$('divGoogleMapsTrace_'+divId).style.display = 'none';
		}
	}
	
	function traceGoogleMaps(divId, localId, strEndereco)
	{
		if (GBrowserIsCompatible()) 
		{
			map = new GMap2(document.getElementById('divGoogleMaps_'+divId));
			gdir = new GDirections(map);

			map.addControl(new GSmallMapControl());

			strAddressTo = strEndereco;
			strAddressFrom = document.getElementById('txtGoogleMaps_'+localId).value;
			strAddressFromName = document.getElementById('txtGoogleMaps_'+localId).name;
			//gdir = new GDirections(map, document.getElementById("directions"));
			//GEvent.addListener(gdir, "load", onGDirectionsLoad);
			//GEvent.addListener(gdir, "error", handleErrors);

			gdir.load(
				"from: " + strAddressFrom + 
				" to: " + strAddressTo,
				{ "locale": "pt" }
			);

		}
	}

function handleErrors(){
    var error = document.getElementById("error");
    switch(gdir.getStatus().code){
        case G_GEO_UNKNOWN_ADDRESS:
            error.innerHTML = 'Nenhuma posição geográfica correspondente pode ser encontrada para um dos endereços especificado.Isto pode ser devido ao fato que o endereço é relativamente novo, ou pode estar incorreto.Código de erro:' + gdir.getStatus().code;
        break;
        case G_GEO_SERVER_ERROR:
            error.innerHTML = 'A solicitação não foi processado com sucesso, contudo a razão exata para a falha não é conhecida. Código de erro:' + gdir.getStatus().code;
        break;
        case G_GEO_MISSING_QUERY:
            error.innerHTML = 'O parâmetro de pesquisa (endereço) não foi informado. Não é possível processar o pedido sem esta informação.Código de erro:' + gdir.getStatus().code;
        break;
        case G_GEO_BAD_KEY:
            error.innerHTML = 'A chave informada não é válida ou não combina o domínio para que foi informado.Código de erro:' + gdir.getStatus().code;
        break;
        case G_GEO_BAD_REQUEST:
            error.innerHTML = 'A solicitação não foi processada com sucesso.Código de erro:' + gdir.getStatus().code;
        break;
        default:
            error.innerHTML = 'Erro desconhecido.';
        break;
    }
}

