﻿    var varTxtEndIni = 'txtEndIni';
    var varTxtEndFim = 'txtEndFim';
    var varDivDirecoes = 'divDirecoes';
    var varDivSugestoes = 'divSugestoes';
    var varDivMapa = 'map';
	var creditosGoogle = '';
	var endOriOK = false;
	var endDestOK = false;
	


    function criarMapa()
    {
        var geocode = null;
        
        if(document.getElementById(varTxtEndFim) == null)
        {
            return;
        }
        
        geocode = new GClientGeocoder();
		
        geocode.getLocations(document.getElementById(varTxtEndIni).value, analisarRespostaGeocoder);
    }
	
	function CriarMapaEndOri(endereco)
    {
        var geocode = null;
        
        geocode = new GClientGeocoder();
		
        geocode.getLocations(endereco, analisarRespostaGeocoderEndOrigem);
    }
	
	function CriarMapaEndDest(endereco)
    {
        var geocode = null;
		
        geocode = new GClientGeocoder();
        geocode.getLocations(endereco, analisarRespostaGeocoderEndDestino);
    }

function LimparHiddens()
	{
		document.getElementById('hddEndOriOK').value = '0';
		document.getElementById('hddEndDestOK').value = '0';
	}
	
	function ValidarEnderecos()
	{
		var res = false;
		var endOrigem = document.getElementById(varTxtEndIni).value;
		var endDestino = document.getElementById(varTxtEndFim).value;
		var divSugestoes = document.getElementById(varDivSugestoes);
		
		if(endOrigem == null || endOrigem == '')
		{
			alert('digite o endereço inicial do trajeto');
			document.getElementById(varTxtEndIni).focus();
			
			return false;
		}
		
		if(endDestino == null || endDestino == '')
		{
			alert('digite o endereço final do trajeto ');
			document.getElementById(varTxtEndFim).focus();
			
			return false;
		}
		
		CriarMapaEndOri(endOrigem);
	}
	
	function DefinirEnderecoOrigem(endereco)
	{
		document.getElementById(varTxtEndIni).value = endereco;
		var divSugestoes = document.getElementById(varDivSugestoes);
		var endDestino = null;
		
		switch(RetornarOptionSelecionada())
		{
			case "sesc":
				endDestino = document.getElementById('cmbEnderecosSesc').value;
				break;
				
			case "outros":
				endDestino = document.getElementById(varTxtEndFim).value;						
				break;
		}
		
		divSugestoes.innerHTML = '';
		
		document.getElementById('hddEndOriOK').value = '1';
		document.getElementById('btnPesquisar').click();
	}

	function DefinirEnderecoDestino(endereco)
	{
		document.getElementById(varTxtEndFim).value = endereco;
		
		var divSugestoes = document.getElementById(varDivSugestoes);
		var endOrigem = document.getElementById(varTxtEndIni).value;
		
		divSugestoes.innerHTML = '';
		
		document.getElementById('hddEndDestOK').value = '1';
		document.getElementById('btnPesquisar').click();
	}
	
	function analisarRespostaGeocoderEndOrigem(resposta) 
    {
        var divDirecoes = document.getElementById(varDivDirecoes);
        var divSugestoes = document.getElementById(varDivSugestoes);
        var texto = '';
		var erro = 0;
		var enderecoFinal = '';
		var retorno = true;
		
        divDirecoes.innerHTML = '';
		
		switch(resposta.Status.code)
		{
			case 601:
			case 602:
			case 603:
			case 604:
				divSugestoes.innerHTML = '<p class=msgsug>API gmaps: endere&ccedil;o inicial n&atilde;o encontrado</p><div id=divSugestoesList>exemplos:<br /><br />Rua Bela Cintra, 278<br />R. Heitor Dias, 11 - Salvador - BA<br />Rios Santos Lima, 11<br /> Rio de Janeiro</div>';
				document.getElementById(varTxtEndIni).focus();
				erro = 1;
				
				break;
				
			case 620:
				divSugestoes.innerHTML = '<p class=msgsug>Limite de consultas di·rias excedido</p>';
				erro = 1;
				
				break;
		}
		
		if(erro != 0)
		{
			retorno = false;
			
			return false;
		}
		
		if(resposta.Placemark == null || erro == 1)
		{
			divSugestoes.innerHTML = '<p class=msgsug>API gmaps: endere&ccedil;o inicial n&atilde;o encontrado</p>';
			document.getElementById(varTxtEndIni).focus();
			document.getElementById(varTxtEndIni).value = '';
			retorno = false;
			
			return false;
		}
		
		if(document.getElementById('hddEndOriOK').value == '0')
		{
			if(resposta.Placemark.length == 1)
			{
				//document.getElementById(varTxtEndIni).value = resposta.Placemark[0].address;
				//document.getElementById('hddEndOriOK').value = '1';
				//document.getElementById('btnPesquisar').click();
				
				if(document.getElementById(varTxtEndIni).value.toString().toLowerCase() == resposta.Placemark[0].address.toString().toLowerCase())
				{
					DefinirEnderecoOrigem(resposta.Placemark[0].address);
				}
				else
				{
					texto = '<p class=msgsug>API gmaps: endere&ccedil;o inicial n&atilde;o encontrado<br />escolha abaixo a op&ccedil;&atilde;o correta ou tente novamente</p>';
					texto += "<div id=divSugestoesList>";
					
					texto += "-> <a href=\"javascript:DefinirEnderecoOrigem('";
					texto += resposta.Placemark[0].address;
					texto += "');\"";
					texto += ">";
					texto += resposta.Placemark[0].address;
					texto += "</a><br />";
					
					texto += "</div>";
					
					divSugestoes.innerHTML = texto + "<div id=style2>" + creditosGoogle + "</div>";
				}
			}
			else
			{
				texto = '<p class=msgsug>API gmaps: endere&ccedil;o inicial n&atilde;o encontrado<br />escolha abaixo a op&ccedil;&atilde;o correta ou tente novamente</p>';
				texto += "<div id=divSugestoesList>";
				
				for (var i = 0; i < resposta.Placemark.length; i++)
				{
					texto += "-> <a href=\"javascript:DefinirEnderecoOrigem('";
					texto += resposta.Placemark[i].address;
					texto += "');\"";
					texto += ">";
					texto += resposta.Placemark[i].address;
					texto += "</a><br />";
				}
				
				texto += "</div>";
				
				divSugestoes.innerHTML = texto + "<div id=style2>" + creditosGoogle + "</div>";
			}
			
			return false;
		}
		
		
		switch(RetornarOptionSelecionada())
		{
			case "sesc":
				endereco = document.getElementById('cmbEnderecosSesc').value;
				break;
				
			case "outros":
				endereco = document.getElementById(varTxtEndFim).value;
				break;
		}
		
		CriarMapaEndDest(endereco);
		
		return retorno;
    }
	
	function analisarRespostaGeocoderEndDestino(resposta) 
    {
        var divDirecoes = document.getElementById(varDivDirecoes);
        var divSugestoes = document.getElementById(varDivSugestoes);
        var texto = '';
		var erro = 0;
		var enderecoFinal = '';
		var retorno = true;
		
        divDirecoes.innerHTML = '';
		
		switch(resposta.Status.code)
		{
			case 601:
			case 602:
			case 603:
			case 604:
				divSugestoes.innerHTML = '<p class=msgsug>API gmaps: endere&ccedil;o final n&atilde;o encontrado </p><div id=divSugestoesList>exemplos:<br /><br />Rua Bela Cintra, 278<br />R. Heitor Dias, 11 - Salvador - BA<br />Rios Santos Lima, 11, Rio de Janeiro</div>';
				document.getElementById(varTxtEndFim).focus();
				erro = 1;
				break;
				
			case 620:
				divSugestoes.innerHTML = '<p class=msgsug>Limite de consultas di·rias excedido</p>';
				erro = 1;
				break;
		}
		
		if(erro != 0)
		{
			retorno = false;
		}

		if(resposta.Placemark == null)
		{
			divSugestoes.innerHTML = '<p class=msgsug>API gmaps: endere&ccedil;o final n&atilde;o encontrado </p><div id=divSugestoesList>exemplos:<br /><br />Rua Bela Cintra, 278<br />R. Heitor Dias, 11 - Salvador - BA<br />Rios Santos Lima, 11, Rio de Janeiro</div>';
			document.getElementById(varTxtEndFim).focus();
			retorno = false;
			
			return false
		}
		
		if(RetornarOptionSelecionada() == 'sesc')
		{
			enderecoFinal = document.getElementById('cmbEnderecosSesc').value;
			
			exibirEnderecoMapa(document.getElementById(varTxtEndIni).value, enderecoFinal);
			
			return false;
		}
		
		if(document.getElementById('hddEndDestOK').value == '0')
		{
			if(resposta.Placemark.length == 1)
			{
				var divSugestoes = document.getElementById(varDivSugestoes);
				var endOrigem = document.getElementById(varTxtEndIni).value;
				
				/*divSugestoes.innerHTML = '';
				
				document.getElementById(varTxtEndFim).value = resposta.Placemark[0].address;
				
				document.getElementById('hddEndDestOK').value = '1';
				document.getElementById('btnPesquisar').click();*/
				
				if(document.getElementById(varTxtEndFim).value.toString().toLowerCase() == resposta.Placemark[0].address.toString().toLowerCase())
				{
					DefinirEnderecoDestino(resposta.Placemark[0].address);
				}
				else
				{
					texto = '<p class=msgsug>API gmaps: endere&ccedil;o final n&atilde;o encontrado<br />escolha abaixo a op&ccedil;&atilde;o correta ou tente novamente</p>';		   
					texto += "<div id=divSugestoesList>";
					
					texto += "-> <a href=\"javascript:DefinirEnderecoDestino('";
					texto += resposta.Placemark[0].address;
					texto += "');\"";
					texto += ">";
					texto += resposta.Placemark[0].address;
					texto += "</a><br />";
					
					texto += "</div>";
					
					divSugestoes.innerHTML = texto + "<div id=style2>" + creditosGoogle + "</div>";
				}
			}
			else
			{
				texto = '<p class=msgsug>API gmaps: endere&ccedil;o final n&atilde;o encontrado<br />escolha abaixo a op&ccedil;&atilde;o correta ou tente novamente</p>';		   
				texto += "<div id=divSugestoesList>";
				
				for (var i = 0; i < resposta.Placemark.length; i++)
				{
					texto += "-> <a href=\"javascript:DefinirEnderecoDestino('";
					texto += resposta.Placemark[i].address;
					texto += "');\"";
					texto += ">";
					texto += resposta.Placemark[i].address;
					texto += "</a><br />";
				}
				
				texto += "</div>";
				
				divSugestoes.innerHTML = texto + "<div id=style2>" + creditosGoogle + "</div>";
			}
			
			return false;
		}
        
		if(RetornarOptionSelecionada() == 'outros')
		{
			enderecoFinal = document.getElementById(varTxtEndFim).value;
			
			exibirEnderecoMapa(document.getElementById(varTxtEndIni).value, enderecoFinal);
			
			return false;
		}
		
		return retorno;
    }
	
	function RetornarOptionSelecionada()
	{
		var res = null;
		for(i=0; i < document.forms[0].radTipo.length; i++)
		{
			if(document.forms[0].radTipo[i].checked)
			{
				res = document.forms[0].radTipo[i].value;
				
				break;
			}
		}
		
		return res;
	}
	
	
    function analisarRespostaGeocoder(resposta) 
    {
        var divDirecoes = document.getElementById(varDivDirecoes);
        var divSugestoes = document.getElementById(varDivSugestoes);
        var texto = '';
		var erro = 0;
		var enderecoFinal = '';
		var retorno = false;
		
        divDirecoes.innerHTML = '';
		
		switch(resposta.Status.code)
		{
			case 602:
			case 603:
			case 604:
				divSugestoes.innerHTML = '<p class=msgsug>EndereÁo n„o encontrado</p>';
				erro = 1;
				break;
				
			case 620:
				divSugestoes.innerHTML = '<p class=msgsug>Limite de consultas di·rias excedido</p>';
				erro = 1;
				break;
		}
		
		if(erro != 0)
		{
			return false;
		}
		
		switch(RetornarOptionSelecionada())
		{
			case "sesc":
				enderecoFinal = document.getElementById('cmbEnderecosSesc').value;
				break;
				
			case "outros":
				enderecoFinal = document.getElementById(varTxtEndFim).value;						
				break;
		}
		
        if (resposta.Placemark.length == 1) 
        {
            divSugestoes.innerHTML = '';
			
            retorno = true;
        }
        else if (resposta.Placemark.length > 1)
        {
           // texto = 'Foram encontrado(s) ' + resposta.Placemark.length + ' sugestıes para o endereÁo digitado. Selecione a sugest„o correta:<br><br> ';
           texto = '<p class=msgsug>n&atilde;o foi poss&iacute;vel encontrar o endere&ccedil;o digitado. <br />por favor, <b> selecione a sugest&otilde;es </b> mais correta ou tente novamente.</p>';
		   
		   	texto += "<div id=divSugestoesList>";
            
			for (var i = 0; i < resposta.Placemark.length; i++)
            {
                texto += "-> <a href=\"javascript:exibirEnderecoMapa('";

                texto += resposta.Placemark[i].address;

                texto += "','";
                texto += enderecoFinal;
                texto += "');\"";
                texto += ">";

                texto += resposta.Placemark[i].address;
                
                texto += "</a><br />";
            }
			
			texto += "</div>";
            
			divSugestoes.innerHTML = texto + "<div id=style2>" + creditosGoogle + "</div>";
			retorno = false;
        }
		
		return retorno;
    }
    
    function exibirEnderecoMapa(endInicial, endFinal)
    {
        var mapa = new GMap2(document.getElementById(varDivMapa));
        var directions = new GDirections(mapa, document.getElementById(varDivDirecoes));
		var divSugestoes = document.getElementById(varDivSugestoes);
		var strRotas = '';
        
		directions.load("from: " + endInicial + " to: " + endFinal, {locale:"pt-BR"});
		
        document.getElementById(varDivMapa).style.display = 'none';
        document.getElementById(varDivSugestoes).innerHTML = '';
        document.getElementById(varDivDirecoes).style.display = 'none';
        document.getElementById(varTxtEndIni).value = endInicial;
		
		document.getElementById(varDivSugestoes).innerHTML = '<img src=../img/timer.gif width=550 height=10>';
						
        window.setTimeout(function()
        {
			try
			{				
				for (var i = 0; i < directions.getRoute(0).getNumSteps(); i++) 
				{
					strRotas += "latitude=" + directions.getRoute(0).getStep(i).getLatLng().lat() + ";longitude=" + directions.getRoute(0).getStep(i).getLatLng().lng() + ";";
					strRotas += "metros=" + directions.getRoute(0).getStep(i).getDistance().meters + ";tempo=" + directions.getRoute(0).getStep(i).getDuration().seconds + ";";
					strRotas += "descricao=" + directions.getRoute(0).getStep(i).getDescriptionHtml() + " ";
					
					strRotas += " | ";
				}
				document.getElementById('hddXML').value = strRotas + '*' + endInicial + '*' + endFinal;
				document.getElementById('hddIdSesc').value = '<?php echo $_GET["idSesc"]; ?>';
				document.getElementById('hddDireitos').value = directions.getCopyrightsHtml();
				document.forms[0].submit();
			}
			catch(ex)
			{				 
				//divSugestoes.innerHTML = '<p class=msgsug>N„o foi possÌvel criar a rota</p>';
				window.location.href = 'straight.php?endInicial=' + endInicial + '&endFinal=' + endFinal;
				//throw ex;
			}
        }, 2000);
    }
	
	function AlterarTipoBusca()
	{
		var divSugestoes = document.getElementById(varDivSugestoes);
		
		switch(RetornarOptionSelecionada())
		{
			case "sesc":
				document.getElementById('cmbEnderecosSesc').style.display = 'inline';
				document.getElementById(varTxtEndFim).style.display = 'none';
				break;
				
			case "outros":
				document.getElementById('cmbEnderecosSesc').style.display = 'none';
				document.getElementById(varTxtEndFim).style.display = 'inline';
				break;
		}
		
		divSugestoes.innerHTML = '';
	}
	
	function CaixaEndKeyPress()
	{
		var divSugestoes = document.getElementById(varDivSugestoes);
		
		divSugestoes.innerHTML = '';
	}

