var map;
var gdir;
var geocoder = null;
var addressMarker;

function load() {
	if (GBrowserIsCompatible()) {      
         map = new GMap2(document.getElementById("map"));
         map.addControl(new GSmallMapControl());
         
         map.addControl(new GMapTypeControl(),
             new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 20)));         
         
         map.enableDoubleClickZoom();
         
         gdir = new GDirections(map, document.getElementById("directions"));
         GEvent.addListener(gdir, "load", onGDirectionsLoad);
         GEvent.addListener(gdir, "error", handleErrors);
         
         map.setCenter(new GLatLng(-23.106892,-45.8535), 13);
         geocoder = new GClientGeocoder();
		 map.addControl(new GSmallMapControl());
	     map.setMapType(G_NORMAL_MAP); // Vue mixte
	   //map.openInfoWindowHtml(map.getCenter(), "Flat Real Center ~ Residencial"
	}
}

function setDirections(fromAddress, toAddress, locale) {
     gdir.load("from: " + fromAddress + " to: " + toAddress, { "locale": locale });
}

function handleErrors(){
     if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)    alert("O Endereço informado é um endereço desconhecido, tente novamente.\nError code: " + gdir.getStatus().code);
     else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)  alert("Erro na comunicação com o Servidor.\n Error code: " + gdir.getStatus().code);
     else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) alert("Campo incompleto.\n Error code: " + gdir.getStatus().code);
     else if (gdir.getStatus().code == G_GEO_BAD_KEY)       alert("Código errado. \n Error code: " + gdir.getStatus().code);
     else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)   alert("A rota desejada não poderá ser concluida com sucesso..\n Error code: " + gdir.getStatus().code);
     else alert("Erro desconhecido...");
}

function onGDirectionsLoad(){ 
}
	
function showAddress(address) {
	if (geocoder) {
	geocoder.getLatLng( address, function(point) {
	if (!point) { alert(address + " not found"); } else {
	map.setCenter(point, 13);
	var marker = new GMarker(point);
	map.addOverlay(marker);
	}
   }
  );
 }
}
