/*
  - valida um cpf passado por parâmetro, pelo cálculo padrão de validação
  - retorna true ou false
*/
function validaCPF(numCpf){
    var retorno = true;
    var digitos_iguais = true;
	numCpf = leftStrip(numCpf, "0");

    if (numCpf.length < 3 || numCpf.length > 11) {
        retorno = false;
    }
    else {
        for (var i = 0; i < numCpf.length - 1; i++) {
            if (numCpf.charAt(i) != numCpf.charAt(0)) {
                digitos_iguais = false;
                break;
            }
        }

        if (!digitos_iguais) {

			var soma = 0;
            for (i = numCpf.length - 3 , j = 2; i >= 0; i--, j++) {
                    soma += parseInt(numCpf.charAt(i)) * j;
			}
			soma = 11 - (soma % 11);
			soma = soma > 9 ? 0 : soma;

			if (parseInt(numCpf.charAt(numCpf.length - 2)) != soma) {
                    retorno = false;
            }
            else {
                soma = 0;

                for (i = numCpf.length - 2 , j=2; i >= 0; i--, j++) {
                         soma += parseInt(numCpf.charAt(i)) * j;
				}
				soma = 11 - (soma % 11);
				soma = soma > 9 ? 0 : soma;

                if (parseInt(numCpf.charAt(numCpf.length - 1)) != soma) {
                        retorno = false;
                }
            }
        }
        else retorno = false;
    }
    return retorno;
}


/*
  - valida um cnpj passado por parâmetro, pelo cálculo padrão de validação
  - retorna true ou false
*/
function validaCNPJ(numCNPJ) {
    var retorno = true;
    var digitos_iguais = true;

    if (numCNPJ.length < 7 || numCNPJ.length > 14) {
        retorno = false;
    }
    else {
        for (i = 0; i < numCNPJ.length - 1; i++) {
            if (numCNPJ.charAt(i) != numCNPJ.charAt(0)) {
                digitos_iguais = false;
                break;
            }
        }

        if (!digitos_iguais) {
            var soma = 0;

            for (i = numCNPJ.length - 3, j = 2; i >= 0; i--, j = (j != 9 ? j + 1 : 2))
				soma += parseInt(numCNPJ.charAt(i)) * j;

            soma = 11 - (soma % 11);
			soma = soma > 9 ? 0 : soma;

            if (parseInt(numCNPJ.charAt(numCNPJ.length - 2)) != soma) {
                retorno = false;
			}
            else {
                soma = 0;

                for (i = numCNPJ.length - 2, j = 2; i >= 0; i--, j = (j != 9 ? j + 1 : 2))
                    soma += parseInt(numCNPJ.charAt(i)) * j;

                soma = 11 - (soma % 11);
				soma = soma > 9 ? 0 : soma;

                if (parseInt(numCNPJ.charAt(numCNPJ.length - 1)) != soma) {
                	retorno = false;
            	}
            }
        }
        else retorno = false;
    }
    return retorno;
}


/*-- valida se CPF/CNPF informado são válidos --*/
function validaCpfCnpj(objForm){
    var strErro = "";

    /* valida cpf ou cnpj */
    if (objForm.cpfCnpj.value != "") {
        if (validaCPF(objForm.cpfCnpj.value) == false) {
            if (validaCNPJ(objForm.cpfCnpj.value) == false) {
                strErro = "O CPF/CNPJ informado é inválido!";
                objForm.cpfCnpj.focus();
            }
        }
    }
    else {
        strErro = "Informe o CPF/CNPJ!";
        objForm.cpfCnpj.focus();
    }

    if(strErro != ""){
        alert(strErro);
    }
    else {
        objForm.submit();
    }
}

/*
  - verifica se usuário informou o número do cartão
*/
function validaNumeroCartao(objForm) {

    if(objForm.numeroCartao.value == "")
    {
      alert("Informe o número do cartão Zaffari/Bourbon");
      objForm.numeroCartao.focus();
    }
    else
    {
      objForm.submit();
    }
}

/*
  - valida um campo senha passado por parâmetro, pelas regras de formação de senha do zaffari
  - verifica se campo senha possui de 6 a 8 caracteres e se possui ao menos uma letra
  - retorna true ou false
  - o nome do Campo é passado por parâmetro p/ formatar as mensagens de erro
*/
function validaSenha(campo, nomeCampo) {
    var strErro = "";
    var filter=/[a-zA-Z]{1}/;
	  var retorno = true;

    if (campo.value == "") {
        alert("Informe a " + nomeCampo + "!");
        campo.focus();
        retorno = false;
    }
    else if (validaQtdCaracter(campo.value, 6, 8) == false) {
        alert("A " + nomeCampo + " deve ter de 6 a 8 letras e números.");
        campo.focus();
        retorno = false;
    }
    else if (!filter.test(campo.value)) {
        alert("A " + nomeCampo + " deve ter no mínimo uma letra!");
        campo.focus();
        retorno = false;
    }
	  return retorno;
}

/*
  - valida formato email.
*/
function validaEmail(campo) {
    var filter=/^(\w+)([\._](\w+))*@(\w+)([\._-](\w+))*[\.](\w){2}(\w)?$/;
    var email = trim(campo.value);
    var retorno = true;

		if (!filter.test(email) && email != "") {
        retorno = false;
    }
    return retorno;
}

/*
  - verifica se o mesmo informou um cpf/cnpj válido, ou se informou um número de cartão
  - verifica se a senha informada é uma senha válida
*/
function validaLogin(objForm) {
    var strErro = "";

        /* valida cpf ou cnpj */
        if ((objForm.cpfCnpj && objForm.cpfCnpj.value != "") && (objForm.numeroCartao && objForm.numeroCartao.value != ""))
        {
            strErro = "Informe o CPF/CNPJ ou o número do cartão Zaffari/Bourbon.";
            objForm.cpfCnpj.focus();
        }
        else if (objForm.cpfCnpj && objForm.cpfCnpj.value != "")
        {
            if (validaCPF(objForm.cpfCnpj.value) == false)
            {
                if (validaCNPJ(objForm.cpfCnpj.value) == false)
                {
                    strErro = "O CPF/CNPJ informado é inválido!";
                    objForm.cpfCnpj.focus();
                }
            }
        }
        else if (objForm.numeroCartao && objForm.numeroCartao.value == "")
        {
            strErro = "Informe o CPF/CNPJ ou o número do cartão Zaffari/Bourbon.";
            objForm.cpfCnpj.focus();
        }

         if(strErro == ""){
            if(validaSenha(objForm.senhaInternet, "senha internet")==false)
              return;
         }

         if(strErro != ""){
            alert(strErro);
         }
         else {
            objForm.submit();
        }
}

/*
  - verifica se o cliente informou o cpf/cnpj p/ complementar o cadastro, e valida o e-mail caso ele tenha informado
*/

function validaComplementoCadastro(objForm) {

  var strErro = "";

  /* valida cpf ou cnpj */
  if (objForm.cpfCnpj && objForm.cpfCnpj.value == "")
  {
      strErro = "Informe o CPF/CNPJ!";
      objForm.cpfCnpj.focus();
  }
  else if (validaCPF(objForm.cpfCnpj.value) == false)
  {
      if (validaCNPJ(objForm.cpfCnpj.value) == false)
      {
          strErro = "O CPF/CNPJ informado é inválido!";
          objForm.cpfCnpj.focus();
      }
  }

  if (leftTrim(objForm.email.value) == "" && leftTrim(objForm.telefone.value) == "")
  {
      strErro = "Informe o e-mail e/ou telefone para contato!";
      objForm.email.focus();
  }
  else
  {
      if (leftTrim(objForm.email.value) != "")
      {
          if(validaEmail(objForm.email) == false)
          {
              strErro = "E-mail inválido!";
              objForm.email.focus();
          }
      }
  }

  if(strErro != "")
  {
    alert(strErro);
  }
  else
  {
    objForm.submit();
  }
}


/*
  - verifica se o cliente informou um cpf/cnpj válido, ou se informou um número de cartão
*/
function verificaLembreteSenha(objForm) {
    var strErro = "";

        /* valida cpf ou cnpj */
        if ((objForm.cpfCnpj && objForm.cpfCnpj.value != "") && (objForm.numeroCartao && objForm.numeroCartao.value != ""))
        {
            strErro = "Informe o CPF/CNPJ ou o número do cartão Zaffari/Bourbon.";
            objForm.cpfCnpj.focus();
        }
        else if (objForm.cpfCnpj && objForm.cpfCnpj.value != "")
        {
            if (validaCPF(objForm.cpfCnpj.value) == false)
            {
                if (validaCNPJ(objForm.cpfCnpj.value) == false)
                {
                    strErro = "O CPF/CNPJ informado é inválido!";
                    objForm.cpfCnpj.focus();
                }
            }
        }
        else if (objForm.numeroCartao && objForm.numeroCartao.value == "")
        {
          strErro = "Informe o CPF/CNPJ ou o número do cartão Zaffari/Bourbon.";
          objForm.cpfCnpj.focus();
        }

        if(strErro != ""){
            alert(strErro);
         }
         else {
            objForm.submit();
        }
}

/*
  - valida o campo senha no cadastramento de clientes, de acordo com as regras de formação de senha do zaffari
  - verifica se cliente informou a mesma senha na confirmação de senha
  - verifica se cliente informou lembrete de senha
  - retorna true ou false
*/
function cadastroSenha(objForm) {
    var retorno = true;

    if(validaSenha(objForm.senhaInternet, "senha internet")==false){
        retorno = false;
    }
    else if (validaSenha(objForm.confirmacaoSenhaInternet, "confirmação de senha")==false) {
        retorno = false;
    }
    else if (objForm.confirmacaoSenhaInternet.value != objForm.senhaInternet.value) {
        alert("A confirmação de senha deve ser igual a senha!");
        objForm.confirmacaoSenhaInternet.focus();
        retorno = false;
    }
    else if (objForm.lembreteSenhaInternet.value == "") {
        alert("Informe o lembrete para a senha!");
        objForm.lembreteSenhaInternet.focus();
        retorno = false;
    }

    return retorno;
}


/*
  - valida o campo senha atual, na alteração de senha, de acordo com as regras de formação de senha do zaffari
  - valida o campo nova senha, de acordo com as regras de formação de senha do zaffari
  - verifica se cliente informou a mesma senha na confirmação da nova senha
  - verifica se cliente informou lembrete de nova senha
*/
function alterarSenha(objForm) {
    var strErro = "";

    if(validaSenha(objForm.senhaInternetAtual, "senha atual")==false){
        return;
    }
    else if (validaSenha(objForm.senhaInternetNova, "nova senha")==false) {
        return;
    }
    else if (validaSenha(objForm.confirmacaoSenhaInternetNova, "confirmação da nova senha")==false) {
        return;
    }
    else if (objForm.confirmacaoSenhaInternetNova.value != objForm.senhaInternetNova.value) {
        strErro = "A confirmação da nova senha deve ser igual a nova senha!";
        objForm.confirmacaoSenhaInternetNova.focus();
    }
    else if (objForm.lembreteSenhaInternetNova.value == "") {
        strErro = "Informe o lembrete para a nova senha!";
        objForm.lembreteSenhaInternetNova.focus();
    }

    if(strErro != ""){
        alert(strErro);
    }
    else {
        objForm.submit();
    }
}

/*
  - cadastra a senha internet de uma pessoa jurídica
*/
function cadastrarSenhaPessoaJuridica(objForm) {
    if(cadastroSenha(objForm) == false)
        return;
    else
      objForm.submit();
}

/*
-
*/
function cadastrarSenhaPessoaFisicaCartao(objForm) {
  var resposta;
  var i = 0;

  while(true) {
    resposta = document.getElementById("questoes[" + i + "].resposta");

    if(!resposta)
        break;

    if(leftTrim(resposta.value) == "") {
        alert("Você deve preencher todas as questões.");
        return;
    }
    i++;
  }

  if(cadastroSenha(objForm) == false)
      return;

  objForm.submit();
}

/*
  - consulta na base de dados do zaffari se o cep informado pelo cliente existe
*/
function busca_cep(form)
{
  var cep = leftTrim(form.cep.value);

  if(cep == '')
  {
    alert('Informe um CEP!');
    form.cep.focus();
    return;
  }

  var http = getHTTPObject();
	http.open("GET", "consultaCep.action?cep=" + cep, true);

	http.onreadystatechange = function handleHttpResponseCep()
  {
    var results = new Array(5);

    if (http.readyState == 4)
    {
      form.logradouro.value = "";

      if(http.status == 200)
      {
        results = http.responseText.split(",");

        if(leftTrim(results[3]).length > 2)
        {
          form.logradouro.value = results[0];
          form.bairro.value = leftTrim(results[1]);
          form.cidade.value = leftTrim(results[2]);

          // seleciona o uf que retornou da consulta
          var numeroUf = form.uf.options.length;
          for (ib = 1; ib < numeroUf; ib++)
          {
            if (leftTrim(results[3]).substr(0,2) == leftTrim(form.uf.options[ib].value))
            {
              form.uf.options[ib].selected = true;
            }
            else
            {
              form.uf.options[ib].selected = false;
            }
          }
        }
        else
        {
          alert("CEP não cadastrado, verifique. Se estiver correto, favor informar os demais dados.");
        }
      }
      else
      {
        alert("Erro ao consultar CEP!");
      }
    }
    else
    {
      form.logradouro.value = "Consultando CEP...";
      form.bairro.value = "";
      form.cidade.value = "";
      form.uf.value = "";
    }
  }
	http.send(null);
}

/*
  - Cria objeto para ajax, utilizado no busca_cep
*/
function getHTTPObject()
{
	var req;

	try
	{
		if (window.XMLHttpRequest)
		{
	  		req = new XMLHttpRequest();

			if (req.readyState == null)
			{
				req.readyState = 1;
				req.addEventListener("load", function () {req.readyState = 4;
				if (typeof req.onReadyStateChange == "function") req.onReadyStateChange(); }, false);
			}
		return req;
	}

	if (window.ActiveXObject)
	{
		var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];


		for (var i = 0; i < prefixes.length; i++)
		{
			try
			{
				req = new ActiveXObject(prefixes[i] + ".XMLHTTP");
			  if(req)
  		    return req;
			}
			catch (ex) {}
    }
	}
}
catch (ex) {}

alert("XmlHttp Objects not supported by client browser");
}


/*
  - valida se o dia, mês e ano, recebidos por parâmetros são válidos
*/
function validaData(numDia, numMes, numAno) {
        var retorno = true;
        var arrayDia = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        var arrayMes = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
        var filter=/^[0-9]{4}$/;

        if (numMes.length == 1)
                numMes = "0" + numMes;

        /* verifica ano */
        if (!filter.test(numAno)) {
                alert("O ano deve possuir 4 dígitos!")
                retorno = false;
        }
        else {
                /* validando mes */
                filter=/01|02|03|04|05|06|07|08|09|10|11|12/;
                if (!filter.test(numMes)) {
                        alert("O mês deve estar entre o valor 1 e 12!")
                        retorno = false;
                }
                else {
                        /* checa o ano bissexto */
                        var N = Number(numAno);
                        if ((N%4==0 && N%100 !=0) || (N%400==0)) {
                                arrayDia[1]=29;
                        }

                        /* checando o dia valido para o mes */
                        for(var i=0; i <= 11; i++)
                        {
                                if (arrayMes[i]==numMes) {
                                        if (numDia <= arrayDia[i] && numDia > 0) {
                                                retorno = true;
                                        }
                                        else {
                                                alert("O dia deve estar entre o valor 1 e " + arrayDia[i] + "!");
                                                retorno = false;
                                        }
                                }
                        }
                }
        }
        return retorno;
}


/*
  - posiciona o foco no próximo campo informado
*/
function proxCampo(campo, prox, tammax, teclapres){
        var tecla = teclapres.keyCode;
        vr = campo.value;
        tam = vr.length;

        if (tecla != 0 && tecla != 9 && tecla != 16 && tecla != 144 ){
                if ( tam == tammax ){
                        prox.focus();
                }
        }
}

/*
  - verifica se cliente informou parâmetros necessários p/ pesquisar uma lista, são eles o nome de um presenteado ou a
    data do evento
  - valida se data informada é uma data válida p/ pesquisa, ou seja, se ela está no intervalo de tempo de amanhã até
    daqui a 2 anos
*/
function validaPesquisaListaPresentes() {
        var doc = document.pesquisaListaPresentes;
        var strErro = "";

        completarData(doc.dia, doc.mes, doc.ano);

        var dataHoje = doc.dataHoje.value;
        var dtConvInf = doc.ano.value + doc.mes.value + doc.dia.value;
        var dtConv = dataHoje.substr(6,4) + dataHoje.substr(3,2) + dataHoje.substr(0,2);
        var dtConvMax = parseInt(dataHoje.substr(6,4)) + 2 + dataHoje.substr(3,2) + dataHoje.substr(0,2);

        if (doc.dia.value != "" || doc.mes.value != "" || doc.ano.value != "") {
                if (doc.dia.value == "") {
                        strErro = "Informe o dia do evento!";
                        doc.dia.focus();
                }
                else if (doc.mes.value == "") {
                        strErro = "Informe o mês do evento!";
                        doc.mes.focus();
                }
                else if (doc.ano.value == "") {
                        strErro = "Informe o ano do evento!";
                        doc.ano.focus();
                }
                else if (validaData(doc.dia.value, doc.mes.value, doc.ano.value) == false) {
                        doc.dia.focus();
                        return;
                }
                else if (parseInt(dtConvInf) <= parseInt(dtConv)) {
                        strErro = "A data do evento informada deve ser maior que a data de hoje.";
                        doc.dia.focus();
                }
                else if (dtConvInf > dtConvMax) {
                        strErro = "A data do evento informada não pode ser maior que 2 anos.";
                        doc.dia.focus();
                }
        }
        else if (doc.nomeCliente.value == "") {
                strErro = "Informe o nome do presenteado ou a data do evento.";
                doc.nomeCliente.focus();
        }


        if(strErro != "") {
                alert(strErro);
        }
        else {
                doc.submit();
        }
}


/*
  - função para aceitar apenas números em campos texto
*/
function soNumeros(e){
     var key;
     var keychar;

     if (window.event) {
        key = window.event.keyCode;
     } else if (e) {
        key = e.which;
     } else {
        return true;
     }

     keychar = String.fromCharCode(key);

     // teclas de controle
     if ((key==null) || (key==0) || (key==8) ||
          (key==9) || (key==13) || (key==27) ) {
        return true;
     } else if ((("0123456789").indexOf(keychar) > -1)) {
        return true;
     } else {
        return false;
     }
}

/*
  - garantir que o campo o tenha a quantidade de caracteres entre o mínimo e máximo passados por parâmetro
*/
function validaQtdCaracter(campo, tamMim, tamMax){
        var tamanho = campo.length;
        var retorno = true;

        if (tamanho < parseInt(tamMim) || parseInt(tamanho) > tamMax){
                retorno = false;
        }

        return retorno;
}


/*
  - valida o formulário de cadastro de cliente, pessoa física ou jurídica
  - Parâmetros: objForm -> Formulário a ser validado.
                strTipoPessoa -> Tipo de pessoa 'fisica' ou 'juridica'.
                strAcao -> Tipo de ação 'cadastrar' ou 'alterar'.
*/
function validaDadosCliente(objForm, strTipoPessoa, strAcao) {
        var strErro = "";

        if (strTipoPessoa == "fisica") {
        
                completarDataNascimento(objForm.diaNascimento, objForm.mesNascimento, objForm.anoNascimento);

                if (objForm.nome.value == "") {
                        strErro = "Informe o nome!";
                        objForm.nome.focus();
                }
                else if (objForm.sexo.value == "") {
                        strErro = "Selecione o sexo!";
                        objForm.sexo.focus();
                }
                else if (objForm.diaNascimento.value == "") {
                        strErro = "Informe o dia de nascimento!";
                        objForm.diaNascimento.focus();
                }
                else if (objForm.mesNascimento.value == "") {
                        strErro = "Informe o mês de nascimento!";
                        objForm.diaNascimento.focus();
                }
                else if (objForm.anoNascimento.value == "") {
                        strErro = "Informe o ano de nascimento!";
                        objForm.diaNascimento.focus();
                }
                else if (validaData(objForm.diaNascimento.value, objForm.mesNascimento.value, objForm.anoNascimento.value) == false) {
                        objForm.diaNascimento.focus();
                        return;
                }
        }
        else if (strTipoPessoa == "juridica") {
                if (objForm.razaoSocial.value == "") {
                        strErro = "Informe a razão social!";
                        objForm.razaoSocial.focus();
                }
                else if (objForm.inscricaoEstadual.value == "") {
                            strErro = "Informe a inscrição estadual!";
                            objForm.inscricaoEstadual.focus();
                }
        }

        if (strErro == "") {
                if (objForm.cep.value == "") {
                        strErro = "Informe o cep!";
                        objForm.cep.focus();
                }
                else if (objForm.logradouro.value == "") {
                        strErro = "Informe o endereço!";
                        objForm.logradouro.focus();
                }
                else if (objForm.bairro.value == "") {
                        strErro = "Informe o bairro!";
                        objForm.bairro.focus();
                }
                else if (objForm.cidade.value == "") {
                        strErro = "Informe a cidade!";
                        objForm.cidade.focus();
                }
                else if (objForm.uf.value == "") {
                        strErro = "Selecione a UF!";
                        objForm.uf.focus();
                }
                else if (objForm.numeroTelefone.value == "" && objForm.numeroCelular.value == "") {
                        strErro = "Informe o telefone, o celular ou ambos!";
                        objForm.dddTelefone.focus();
                }
                else if (objForm.dddTelefone.value == "" && objForm.numeroTelefone.value != "") {
                        strErro = "Informe o DDD do telefone!";
                        objForm.dddTelefone.focus();
                }
                else if (objForm.dddTelefone.value != "" && objForm.numeroTelefone.value == "") {
                        strErro = "Informe o número do telefone!";
                        objForm.numeroTelefone.focus();
                }
                else if (objForm.dddCelular.value == "" && objForm.numeroCelular.value != "") {
                        strErro = "Informe o DDD do celular!";
                        objForm.dddCelular.focus();
                }
                else if (objForm.dddCelular.value != "" && objForm.numeroCelular.value == "") {
                        strErro = "Informe o número do celular!";
                        objForm.numeroCelular.focus();
                }
                else if (leftTrim(objForm.email.value) != "") {
                    if (objForm.email.length > 60)
                    {
                      strErro = "E-mail deve possuir no máximo 60 caracteres."
                      objForm.email.focus();
                    }
                    else if (validaEmail(objForm.email) == false)
                    {
                          strErro = "E-mail inválido!";
                          objForm.email.focus();
                    }
                }
                else if (strAcao == "cadastrar") {
                        if(cadastroSenha(objForm)==false) {
                                return;
                      }
                }
        }

        if(strErro != "") {
                alert(strErro);
        }
        else {
                objForm.submit();
        }
}


function consultarDisponibilidadeReserva(form, idLocalReserva)
{
  window.close();

  if(form)
  {
    form.idLocalReserva.value = idLocalReserva;
    for(i = 0; i < form.idLocalReserva.options.length; i++)
    {
      form.idLocalReserva.options[i].selected = false;
      if(form.idLocalReserva.options[i].value == idLocalReserva)
      {
        form.idLocalReserva.options[i].selected = true;
      }
    }
    form.submit();
  }
}

function confirmarReserva()
{
  var index=0;
  var submitForm = document.getElementById('confirmarReserva');
  var sourceForm = document.getElementById('atualizarReserva');

  // Apenas um item para reserva, não é tratado como array de quantidades
  if(!sourceForm.quantidades[0])
  {
    submitForm.quantidades.value = sourceForm.quantidades.value;
  }
  else
  {
    while(sourceForm.quantidades[index])
    {
      submitForm.quantidades[index].value = sourceForm.quantidades[index].value;
      index++;
    }
  }

  submitForm.submit();
}

/*
  - ordena a lista de presentes de acordo com a ordenaçao desejada pelo cliente
*/
function ordenarListaPresentes(form, ordem)
{
  form.tipoOrdenacaoItens.value = ordem;
  form.submit();  
}


/*
  - retira o caracter passado por parametro a esquerda
  - parâmetros: str	-> A string a ser limpa.
			          c	-> O carater a ser retirado
*/
function leftStrip(str, c) {
	if (str == null || str == "")
		return str;

	for (i=0; i< str.length; i++) {
		if (str.charAt(i) != c){
			return str.substr(i);
		}
	}
}


/*
  - retira os espaços em branco a esquerda
*/
function leftTrim(str)
{
  while(str.substring(0,1) == ' ')
  {
    str = str.substring(1, str.length);
  }
  return str;
}

/*
  - retira os espaços em branco a direita
*/
function rightTrim(str)
{
  while(str.substring(str.length-1, str.length) == ' ')
  {
    str = str.substring(0,str.length-1);
  }
  return str;
}

/*
  - retira os espaços em branco a esquerda e direita
*/
function trim(str)
{
  str = leftTrim(str);
  if(str != "")
  {
    str = rightTrim(str);
  }
  return str;
}

function getURLParameters()
{
	var sURL = window.document.URL.toString();

	if (sURL.indexOf("?") > 0)
	{
		var arrParams = sURL.split("?");
		var arrURLParams = arrParams[1].split("=");
    abre(arrURLParams[1]);
	}	
}


/* ====================================================
  - valida caracters do nome do cliente ou fornecedor - "[ &.-9a-zA-Z]".
*/
function validaCaracterNome(campo, evento) {
        var retorno = false;
        var tecla = buscaTeclaCode(evento);

        if (tecla > 0) {
                if ((evento.shiftKey && tecla == 38) || (tecla == 46) || (tecla == 47))
                        retorno = true;
                else if (ehNumero(tecla, evento) == true)
                        retorno = true;
                else if (ehLetra(tecla) == true)
                        retorno = true;
                else if (retorno == false) {
                        alert("Atenção!\nLetras acentuadas, cedilhas e caracteres especiais não são permitidas neste campo.");
                }
        }
        else
                retorno = true;

        return retorno;
}


/* ====================================================
  - valida caracters do logradouro - "[ '-,-9a-zA-Z]".
*/
function validaCaracterEndereco(campo, evento) {
        var retorno = false;
        var tecla = buscaTeclaCode(evento);

        if (tecla > 0) {

                if ((tecla == 39) || (tecla >= 44 && tecla <= 47))
                        retorno = true;
                else if (ehNumero(tecla, evento) == true)
                        retorno = true;
                else if (ehLetra(tecla) == true)
                        retorno = true;
                else if (retorno == false) {
                        alert("Atenção!\nLetras acentuadas, cedilhas e caracteres especiais não são permitidas neste campo.");
                }
        }
        else
                retorno = true;

        return retorno;
}

/* ====================================================
  - busca tecla ASCII passa no evento.
*/
function buscaTeclaCode(evento) {
        if (navigator.userAgent.indexOf("MSIE") > 0)
                return evento.keyCode;
        else
                return evento.charCode;
}

/*
  - valida o caracter as ASCII decimal está entre 0 a 9 no teclado acima das letras e
    0 a 9 no teclado numerico.
  - Parâmetros: tecla -> caracter as ASCII decimal.
                evento -> evento da tecla.
*/
function ehNumero(tecla, evento){
        var retorno = false;

        if (!evento.shiftKey){//verifica se a tecla shift não está pressionada
                if ((tecla >= 48 && tecla <= 58) || //numeros de 0 a 9 no teclado acima das letras
                        (tecla >= 96 && tecla <= 105)){  //numeros de 0 a 9 no teclado numerico
                       retorno = true;
                }
        }

        return retorno;
}

/*
  - valida o caracter as ASCII decimal está entre o a-z, A-Z e espaço em branco.
  - Parâmetros: tecla -> caracter as ASCII decimal.
*/
function ehLetra(tecla){
        var retorno = false;

        if ((tecla >= 65 && tecla <= 90) || (tecla >= 97 && tecla <= 122) || tecla == 32){
                retorno = true;
        }

         return retorno;
}

function completarData(dia, mes, ano) {
        completarDia(dia);
        completarMes(mes);
        completarAno(ano);
}

function completarDataNascimento(dia, mes, ano) {
        completarDia(dia);
        completarMes(mes);
        completarAnoNascimento(ano);
}

function completarDia(campo) {
        var dia = leftTrim(campo.value);
        if (dia.length == 1) {
                campo.value = "0" + dia;
        }
}

function completarMes(campo) {
        var mes = leftTrim(campo.value);
        if (mes.length == 1) {
                campo.value = "0" + mes;
        }
}

function completarAno(campo) {
        if(campo.value != "") {
                var anoAtual = new String(new Date().getFullYear());
                var ano = leftTrim(campo.value);
                campo.value = anoAtual.substr(0, anoAtual.length - ano.length) + ano;
        }
}

function completarAnoNascimento(campo) {
        if(campo.value != "") {
                var anoAtual = new String(new Date().getFullYear());
                var ano = leftTrim(campo.value);
                var anoCompleto = anoAtual.substr(0, anoAtual.length - ano.length) + ano;

                if(anoAtual <= anoCompleto) {
                        var anoSeculoPassado = new String(anoAtual - 100);
                        campo.value = anoSeculoPassado.substr(0, anoAtual.length - ano.length) + ano;
                }
                else {
                  campo.value = anoCompleto;
                }
        }
}