<!--

function extraiScript(texto){
//Maravilhosa função feita pelo SkyWalker.TO do imasters/forum
    var ini = 0;
    // loop enquanto achar um script
    while (ini!=-1){
        // procura uma tag de script
        ini = texto.indexOf('inilc', ini);
        // se encontrar
        if (ini >=0){
            // define o inicio para depois do fechamento dessa tag
            ini = texto.indexOf('c', ini) + 1;
            // procura o final do script
            var fim = texto.indexOf('clcend', ini);
            // extrai apenas o script
            //codigo = texto;
			return codigo = texto.substring(ini,fim);

        }
    }
}



function openAbout(unidadeId){
	var xmlhttp = getXMLHttp();
	url="componentes/polos_parceiros.php?mode=unidade_detalhe&ui="+unidadeId;
	document.getElementById("detalhe_unidade").innerHTML = "<div id='carrega' align='center'>carregando...</div>";
	//alert(url);
	xmlhttp.open("GET",url,true);
	xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4) {//se a requisicao do arquivo estiver completa//tempo de resposta
				if (xmlhttp.status==200 || window.location.href.indexOf("http")==-1){//se a requisicao ocorrer com sucesso ou o scrip estiver rodando localmente
						
						var texto = xmlhttp.responseText;
						//Desfaz o urlencode, para ajustar bug do acento
						texto=texto.replace(/\+/g," ");						
						texto=unescape(texto);
						//alert(texto);				
						
						//document.getElementById("mapa_escolha").className="barraExibir";
						document.getElementById("detalhe_unidade").innerHTML = texto;
						
						End_certo = extraiScript(texto);
						//alert(End_certo);
						inicializa();
						realizaConsulta(End_certo);
					}//fim do if
				}//fim do if
			}//fim da function interna
		xmlhttp.send(null);

}//end function




// Função chamada ao carregar a página HTML --------------------------------------------------------
function inicializa() {
    // Cria o objeto principal referenciando a div 'mapa'
    mapaobj = new GMap2(document.getElementById("mapa"));
	mapaobj.addControl(new GLargeMapControl());
    // Centraliza o mapa na coordenada (34, 0) com nível de zoom 3
    mapaobj.setCenter(new GLatLng(34, 0), 2);
    // Cria o objeto que resolverá as consultas de endereço
    geocoder = new GClientGeocoder();
}

// Função chamada quando o usuário envia a consulta----------------------------------------------------------
function realizaConsulta(endereco) {
	//inicializa();
    // Recebe o endereço digitado no campo 'consulta' do form
   // var endereco = document.forms[0].consulta.value;
	
	
    // Realiza a consulta. resolverEnderecos é a função callback
    // Javascript que será chamada quando o método getLocations do 
    // objeto geocoder retornar uma resposta.
    geocoder.getLocations(endereco, resolverEnderecos);
}

// Callback para tratar o retorno de uma chamada ao método----------------------------------------------------
// getLocations() do objeto geocoder. O parâmetro resposta será
// usado para acessar os dados retornados. resolverEnderecos também faz 
// uso da função listarLocais que será explicada adiante.
function resolverEnderecos(resposta) {

    // Retira todos os marcadores existentes no mapa.
    mapaobj.clearOverlays(); 
        
    // Verifica o status da resposta
    if (!resposta || resposta.Status.code != G_GEO_SUCCESS) {

        // Caso a resposta seja inválida, exibe o motivo.
        alert("Nao foi possivel localizar o endereco solicitado");
        // Os códigos de erro são úteis para procurer o motivo
        // exato da falha na consulta de endereços na documentação
        // do GoogleMaps API
        //alert("Código de erro: " +  resposta.Status.code);

    } else {

        // Caso o status da resposta seja G_GEO_SUCCESS,
        // iremos navegar em todos os resultados retornados,
        // que podem ser vários em caso de uma consulta ambígüa

        // Extrai o número de resultados retornados. O atributo
        // Placemark matém toda a informação de que precisamos
        // acerca das localidades encontradas.
        var num_resultados = resposta.Placemark.length;
        // Obtemos a referência DOM à div na qual os locais encontrados
        // serão listados através do Javascript
        var alvo = document.getElementById("locais");

        // Invoca a função listarLocais, explicada posteriormente
        listarLocais(alvo, resposta.Placemark);           

        // Caso haja múltiplos resultados, informa o fato ao usuário
        if (num_resultados > 1) {
              
              alert('A sua consulta retornou resultados ambígüos.' +
                    '\nEscolha a localidade mais adequada à consulta.');

        } else {

          // Caso haja um único resultado, 

          // Obtém uma referência ao endereço retornado
          var local = resposta.Placemark[0];

          // Extrai o um objeto GLatLng representando as coordenadas
          // do endereço solicitado
          var ponto = local.Point.coordinates;

          // Extrai a precisão do endereço. Accuracy é um número que
          // indica se o endereço retornado corresponde a um país, 
          // provincial, estado, cidade, bairro, rua, etc. Depende da
          // consulta que foi realizada. Com essa informação em mãos,
          // podemos decidir qual o nível de zoom mais adequado
          var acc = resposta.Placemark[0].AddressDetails.Accuracy;

          // Chama a função centralizaMapa passando como argumento
          // as coordenadas do ponto (posição 1 para latitude, 0 para
          // longitude); O endereço completo do ponto encontrado; a 
          // precisão do endereço para controlar o nível de zoom
          centralizaMapa(ponto[1],ponto[0],resposta.Placemark[0].address, acc);
         
       }
    }
}

// Função lista as localizações encontradas na consulta.-----------------------------------------------------
// Os parâmetros são: alvo --> a referência DOM da div que receberá os 
// endereços; placemark --> referência a um array de objetos representando as
// localidades encontradas
function listarLocais(alvo, placemark) {

    //Começa a escrita na div informando a quantidade de resultados
    // encontrados. O máximo retornado pelo geocoder são seis endereços
    alvo.innerHTML = "<p> A pesquisa retornou " +
                         placemark.length + " resultado(s): </p>";

    // Loop para escrever informações de cada endereço
    for (var i=0; i<placemark.length; ++i) {

        // Obtém a informação da Unidade Federativa, no caso de um 
        // endereço no Brasil
        var uf = placemark[i].AddressDetails.Country
                            .AdministrativeArea.AdministrativeAreaName;	

        // Obtém a informação sobre a precisão do endereço  
	var acc = placemark[i].AddressDetails.Accuracy;

        // Obtém um ponto GLatLng com as coordenadas da localidade i
        var p = placemark[i].Point.coordinates;
	  
        // Obtém o endereço textual completo
        var info = placemark[i].address;
	
        // Começa a escrita de um link para a função centralizaMapa do
        // endereço i encontrado
        alvo.innerHTML +="<a href='javascript:centralizaMapa(" + p[1] + 
                         "," + p[0] + ",\"" + info + "\", " + acc +
                         ")'>" + placemark[i].address +"</a><br />";
      }
  } 

// Função para centralizar o mapa no ponto solicitado----------------------------------------------------
// Parâmetros: x à latitude; y à longitude; info à Um texto que será
// exibido em um quadro informativo que aponta para o endereço;
// acc à a precisão do endereço para utilizar o zoom adequado
function centralizaMapa(x, y, info, acc) {
   
    // Cria um ponto GLatLng
    var p = new GLatLng(x,y);
    
    // Obtém o nível de zoom conforme a precisão do endereço
    var zoom = nivelZoom[acc];

    // Define o novo centro do mapa e o seu novo nível de zoom
    mapaobj.setCenter(p,zoom);

    // Cria um novo marcador que sera exibido no ponto p solicitado
    marcador = new GMarker(p);

    // Adiciona o marcador ao mapa
    mapaobj.addOverlay(marcador);

    // Exibe uma caixa de informação com o texto informado
    // Note que esse método aceita qualquer string com uma
    // formatação html arbitrária
    marcador.openInfoWindowHtml("<b> " + info + "</b>");    
  }
var nivelZoom = [11];
    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;
	nivelZoom[9] = 17;
	nivelZoom[10] = 18;
	nivelZoom[11] = 19;

//------------------------------------------------------------------------------------------------------------
// Variável irá referenciar o objeto que representa o mapa
var meuPrimeiroMapa = "";

// Coordenadas para o centro do mapa mundi
var centroDoMundo = new GLatLng(0,0);

// Nível de zoom inicial (vai de 0 a 17. Em modo satellite, as imagens 
// para alguns níveis mais altos podem não estar disponíveis)
//var nivelZoom = 8;
    
// Exibe o mapa em modo normal. As outras opções são
// G_NORMAL_MAP , G_SATELLITE_MAP e G_HYBRID_MAP 
var tipoDoMapa = G_NORMAL_MAP; 
//------------------------------------------------------------------------------------------------------------------------------------


//-->
