var enProceso = false; // lo usamos para ver si hay un proceso activo
var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest
var layerDestino;

// Corta os espaços nas caixas de texto
function trim(str)
{
    while (str.charAt(0) == " ")
        str = str.substr(1,str.length -1);

    while (str.charAt(str.length-1) == " ")
        str = str.substr(0,str.length-1);

    return str;
}

function handleHttpResponse() {
      var conteudo = document.getElementById(layerDestino)
      conteudo.innerHTML='<div id="carregando" class="carregando"><p>carregando...</p></div>'
      if (http.readyState == 4) {
         if (http.status == 200) {
          if (http.responseText.indexOf('invalid') == -1) {

              //Lê o texto
            var resultado = http.responseText

            //Desfaz o urlencode
            resultado = resultado.replace(/\+/g," ")
            resultado = unescape(resultado)
            conteudo.innerHTML = resultado;
            enProceso = false;
          }
       }
    }
}



function carregaDestino(origem, data) {
    if (origem == "0")
       document.getElementById('form_horarios').origem.value = "0";

       if (!enProceso && http) {
       origem = escape(origem);
       data =  escape(data);
       var url = "hor_destino.asp?origem=" + origem + "&data=" + data ;
       http.open("GET", url, true);
       layerDestino = "combo_destino";
       http.onreadystatechange = handleHttpResponse;
       enProceso = true;
       http.send(null);
       return true;
   }

}

function verificaItinerario(horario, linha, codOrigem, codDestino, dia_semana, data, sentido, pos_horario) {
    if (!enProceso && http) {
       horario = escape(horario);
       linha = escape(linha);
       codOrigem = escape(codOrigem);
       codDestino = escape(codDestino);
       dia_semana = escape(dia_semana);
       sentido =  escape(sentido);
       pos_horario = escape(pos_horario);
       var url = "itinerario.asp?hor=" + horario + "&linha=" + linha + "&ori=" + codOrigem + "&dest=" + codDestino + "&dia=" + dia_semana + "&data=" + data + "&sentido=" + sentido + "&pos=" + pos_horario;
       http.open("GET", url, true);
       layerDestino = "itinerario";
       http.onreadystatechange = handleHttpResponse;
       enProceso = true;
       http.send(null);
    }
}

function carregaFoto(galeria, foto) {
    if (!enProceso && http) {
       galeria = escape(galeria);
       foto = escape(foto);
       var url = "ret_galeria.asp?gal=" + galeria + "&foto=" + foto;
       http.open("GET", url, true);
       layerDestino = "ampliado";
       http.onreadystatechange = handleHttpResponse;
       enProceso = true;
       http.send(null);
    }

}

function getHTTPObject() {
    var xmlhttp;

    try
    {
     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
                 try
                 {
                  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                 } catch (E) { xmlhttp = false; }
                }

    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
       try {
          xmlhttp = new XMLHttpRequest();
       } catch (e) { xmlhttp = false; }
    }

    return xmlhttp;

}

function confereContato(nform)
{

  // Valida se o remetente selecionou o destino
  vAssunto = document.getElementById(nform).assunto;
  if (trim(vAssunto.value) == "")
  {
   alert("Por favor, informe um assunto para sua mensagem!");
   vAssunto.focus();
   vAssunto.select();
   return false;
  }

  // Valida o nome do remetente
  vNome = document.getElementById(nform).nome;
  vNomeStr = trim(vNome.value);
  if (vNomeStr.length < 3)
  {
   alert("Informe seu nome contendo no mínimo 3 caracteres, por favor...")
   vNome.focus();
   vNome.select();
   return false;
  }

  // Valida o e-mail do contato
  if (!validaEmail(nform))
      return false;

  vMensagem = document.getElementById(nform).mensagem;
  vMensagemStr = trim(vMensagem.value);
  if (vMensagemStr.length < 15)
  {
    alert("Por favor, digite sua mensagem com no mínimo 15 caracteres...")
    vMensagem.focus();
    vMensagem.select();
    return false;

    }
}

function validaEmail(nform_veio) {
  vEmail = document.getElementById(nform_veio).email;
  if (vEmail.value == "") {
		alert("Informe seu e-mail.");
		vEmail.focus();
		vEmail.select();
		return false;
	} else {
		prim = vEmail.value.indexOf("@")
		if(prim < 2) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("@",prim + 1) != -1) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf(".") < 1) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf(" ") != -1) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("zipmeil.com") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("hotmeil.com") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf(".@") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("@.") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf(".com.br.") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("/") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("[") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("]") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("(") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf(")") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
		if(vEmail.value.indexOf("..") > 0) {
			alert("O e-mail informado parece não estar correto.");
			vEmail.focus();
			vEmail.select();
			return false;
		}
	}
    return true;
}


function validaOrcFrete(nform) {
    vNome = trim(document.getElementById(nform).nome.value);
    vCampo = document.getElementById(nform).nome;
    if (vNome == "") {
      alert ("Preencha seu nome por favor!");
      vCampo.focus();
      return false;
    }

    if (!validaEmail(nform))
        return false;

    vCampo = document.getElementById(nform).endereco;
    vEndereco = trim(vCampo.value);
    if (vEndereco.length < 5) {
        alert ("Informe um endereço com no mínimo 5 caracteres!");
        vCampo.focus();
        vCampo.select();
        return false;
    }

    vCampo = document.getElementById(nform).cidade;
    vCidade = trim(vCampo.value);
    if (vCidade.length < 2) {
        alert ("Informe uma cidade com no mínimo 2 caracteres!");
        vCampo.focus();
        vCampo.select();
        return false;
    }

    vCampo = document.getElementById(nform).uf;
    if (vCampo.selectedIndex == 0) {
        alert ("Informe um estado!");
        vCampo.focus();
        return false;
    }

    //valida inicio da viagem
    vCampo = document.getElementById(nform).data_ini;
    vDataIni = trim(vCampo.value)
    if (vDataIni == "") {
        alert("Informe uma data de início da viagem!");
        vCampo.focus();
        return false;
    }
    else {
        if (!doDate(nform, 'data_ini', 5))
            return false;
    }

    if (!doTime(nform, 'hora_ini', 2))
        return false;


    vCampo = document.getElementById(nform).cidade_ini;
    vCidade = trim(vCampo.value);
    if (vCidade.length < 2) {
        alert ("Informe uma cidade com no mínimo 2 caracteres!");
        vCampo.focus();
        vCampo.select();
        return false;
    }

    vCampo = document.getElementById(nform).uf_ini;
    if (vCampo.selectedIndex == 0) {
        alert ("Informe um estado!");
        vCampo.focus();
        return false;
    }

    // valida termino da viagem
    vCampo = document.getElementById(nform).data_fim;
    vDataFim = trim(vCampo.value)
    if (vDataFim == "") {
        alert("Informe uma data de término da viagem!");
        vCampo.focus();
        return false;
    }
    else {
        if (!doDate(nform, 'data_fim', 5))
            return false;
    }

    vetor_data = vDataIni.split("/");
    vDia = vetor_data[0];
    vMes = vetor_data[1] - 1;
    vAno = vetor_data[2];
    var dt_inicial = new Date(vAno, vMes, vDia);
    vetor_data = null;
    vetor_data = vDataFim.split("/");
    vDia = vetor_data[0];
    vMes = vetor_data[1] - 1;
    vAno = vetor_data[2];

    var dt_final = new Date(vAno, vMes, vDia);
    vetor_data = null;
    dt_hoje = new Date();
    dt_hoje.setHours(0,0,0,0,0);
    dt_inicial.setHours(0,0,0,0,0);
    dt_final.setHours(0,0,0,0,0);

    if (dt_inicial < dt_hoje && dt_inicial != dt_hoje) {
        alert ("Data de início da viagem deve ser maior ou igual que a data de hoje!");
        document.getElementById(nform).data_ini.focus();
        document.getElementById(nform).data_ini.select();
        return false
    }


    if (dt_inicial > dt_final){
        alert ("Data de início da viagem deve ser menor que a data do término da viagem!");
        document.getElementById(nform).data_fim.focus();
        document.getElementById(nform).data_fim.select();
        return false
    }

    if (!doTime(nform, 'hora_fim', 2))
        return false;

    vCampo = document.getElementById(nform).cidade_fim;
    vCidade = trim(vCampo.value);
    if (vCidade.length < 2) {
        alert ("Informe uma cidade com no mínimo 2 caracteres!");
        vCampo.focus();
        vCampo.select();
        return false;
    }

    vCampo = document.getElementById(nform).uf_fim;
    if (vCampo.selectedIndex == 0) {
        alert ("Informe um estado!");
        vCampo.focus();
        return false;
    }

    vCampo = document.getElementById(nform).roteiro;
    vRoteiro = trim(vCampo.value);
    if (vRoteiro.length < 10) {
        alert ("Informe um roteiro com no mínimo 10 caracteres!");
        vCampo.focus();
        vCampo.select();
        return false;
    }

    vCampo = document.getElementById(nform).cat_servico;
    if (vCampo.selectedIndex == 0) {
        alert ("Informe uma categoria de serviço!");
        vCampo.focus();
        return false;
    }

    vCampo = document.getElementById(nform).pos_onibus;
    if (vCampo.selectedIndex == 0) {
        alert ("Informe o posicionamento do ônibus!");
        vCampo.focus();
        return false;
    }



}


function doDate(nForm, campo, pFmt)
{
    var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/;
    var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/;
    var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/;
    var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
    var reDate5 = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
    var reDate = reDate4;
    pStr = trim(document.getElementById(nForm)[campo].value);

    document.getElementById('form_horarios').hor_sel.value='';
    document.getElementById('form_horarios').linha.value='';

    eval("reDate = reDate" + pFmt);
    if (reDate.test(pStr)) {
        return true;
	} else if (pStr != null && pStr != "") {
		alert(pStr + " NÃO é uma data válida. Lembre-se, a data deve estar no formato dd/mm/aaaa. Ex: 01/01/2005");
        document.getElementById(nForm)[campo].focus();
        document.getElementById(nForm)[campo].select();
        return false;
    }
    return true;
} // doDate


var reTime1 = /^\d{2}:\d{2}$/;
var reTime2 = /^([0-1]\d|2[0-3]):[0-5]\d$/;
var reTime3 = /^(0[1-9]|1[0-2]):[0-5]\d$/;
var reTime4 = /^\d+:[0-5]\d:[0-5]\d$/;
var reTime5 = /^\d+:[0-5]\d:[0-5]\.\d{3}\d$/;

function doTime(nForm, campo, pFmt)
{

    pStrTime = trim(document.getElementById(nForm)[campo].value);

    eval("reTime = reTime" + pFmt);
	if (reTime.test(pStrTime)) {
       return true;
	} else if (pStrTime != null && pStrTime != "") {
	   alert(pStrTime + " NÃO é um horário válido.");
       document.getElementById(nForm)[campo].focus();
       document.getElementById(nForm)[campo].select();
       return false
    }
    return true;
} // doTime