var mapaobj;
var geocoder; 
var nivelZoom = [];
    nivelZoom[0] = 2;
    nivelZoom[1] = 8;
    nivelZoom[2] = 9;
    nivelZoom[3] = 10;
    nivelZoom[4] = 12;
    nivelZoom[5] = 13;
    nivelZoom[6] = 14;
    nivelZoom[7] = 15;
    nivelZoom[8] = 16;

function inicializa() {
    mapaobj = new GMap2(document.getElementById("mapa"));
    //mapaobj.setCenter(new GLatLng(-23.5878,-46.792728), 8);
    geocoder = new GClientGeocoder();
	//marcaABB();
}

function realizaConsulta() {
    var endereco = document.fMapa.consulta.value;
    geocoder.getLocations(endereco, resolverEnderecos);
}

function resolverEnderecos(resposta) {
    mapaobj.clearOverlays(); 
	marcaABB();
    if (!resposta || resposta.Status.code != G_GEO_SUCCESS) {
        alert("Nao foi possivel localizar o endereco solicitado");
        alert("Código de erro: " +  resposta.Status.code);
    } else {
        var num_resultados = resposta.Placemark.length;
        var alvo = document.getElementById("locais");
        listarLocais(alvo, resposta.Placemark);           
        if (num_resultados > 1) {
              //alert('A sua consulta retornou resultados ambígüos.\nEscolha a localidade mais adequada à consulta.');
        } else {
          var local = resposta.Placemark[0];
          var ponto = local.Point.coordinates;
          var acc = resposta.Placemark[0].AddressDetails.Accuracy;
          centralizaMapa(ponto[1],ponto[0],resposta.Placemark[0].address, acc);
       }
    }
}

function listarLocais(alvo, placemark) {
    if(placemark.length>1) {
		alvo.innerHTML = "<p><b>A pesquisa retornou " + placemark.length + " resultado(s):</b></p>";
		for (var i=0; i<placemark.length; ++i) {
			var uf = placemark[i].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;	
			var acc = placemark[i].AddressDetails.Accuracy;
			var p = placemark[i].Point.coordinates;
			var info = placemark[i].address;
			alvo.innerHTML +="<a href='javascript:centralizaMapa(" + p[1] + "," + p[0] + ",\"" + info + "\", " + acc +");'>" + placemark[i].address +"</a><br />";
		  }
	}
  } 

function centralizaMapa(x, y, info, acc) {
    var p = new GLatLng(x,y);
    var zoom = nivelZoom[acc];
    mapaobj.setCenter(p,zoom);
    marcador = new GMarker(p);
    mapaobj.addOverlay(marcador);
    marcador.openInfoWindowHtml("<b> " + info + "</b>");    
	window.document.fMapa.consulta.value=info;
  }
  
function marcaABB() {
    /*var p = new GLatLng(-23.5878,-46.792728);
    marcador = new GMarker(p);
	mapaobj.addOverlay(marcador);
	marcador.openInfoWindowHtml("<b>ABB Loja 01</b>");  */
}
