// Função que retorna um elemento radioButton selecionado
// de um determinado vetor de radioButton passado como parâmetro
function pegaRadioSelecionado(vRadio) {
  for (i = 0; i < vRadio.length; i++) {
    if (vRadio[i].checked) {
      return vRadio[i];
    }
  }
}

// Funcao que retorna uma string passada como parametro sem
// os espacos do inicio e do final
function trim(sTexto) {
  // Tira os espacos do inicio
  expReg1 = /^(\s*)/;
  sTexto = sTexto.replace(expReg1, "");

  // Tira os espacos do final
  expReg2 = /(\s*)$/;
  sTexto = sTexto.replace(expReg2, "");

  return sTexto;
}

// Função que recebe como parâmetro uma string de data no format dd/mm/yyyy
// e retorna um objeto do tipo Date.
// Se o formato da string não for o esperado (dd/mm/yyyy) a função retorna falso.
function pegaObjData(strData) {
  expReg = /^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;

  // Faz a validacao do formato da data passada como parametro,
  // utilizando a expressao regular acima.
  if (!expReg.exec(strData)) {
    return false;
  }

  // Pega as partes da data passada como parametro
  nAno = RegExp.$3 * 1;
  nMes = RegExp.$2 * 1;
  nDia = RegExp.$1 * 1;

  // Os meses no JavaScript sao contados a partir do zero, por
  // isso precisamos subtrair de um(1) o mes da data passada
  // como parametro.
  nMes = nMes - 1;

  // Cria um objeto Date do JavaScript, a partir das partes da
  // data passada como parametro. Se a data passada para o
  // construtor do objeto Date for invalida, o JavaScript cria
  // um objeto Date com o mes alterado.
  dDataTeste = new Date(nAno, nMes, nDia);

  return dDataTeste;
}


/**
 * Funcao
 *   validaData
 *
 * Descricao
 *   Funcao para validacao de datas no formato dd/mm/aaaa.
 *
 * Parametros
 *   sData: String que representa a data a ser validada.
 *
 * Retorno
 *   Verdadeiro se a data for valida e falso, caso contrario.
 *
 * PRODAP/2001
 */
function validaData(sData) {
  // Expressao regular para validar strings no formato
  // 00/00/0000.
  expReg = /^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;

  // Faz a validacao do formato da data passada como parametro,
  // utilizando a expressao regular acima.
  if (!expReg.exec(sData)) {
    return false;
  }

  // Pega as partes da data passada como parametro
  nAno = RegExp.$3 * 1;
  nMes = RegExp.$2 * 1;
  nDia = RegExp.$1 * 1;

  // Os meses no JavaScript sao contados a partir do zero, por
  // isso precisamos subtrair de um(1) o mes da data passada
  // como parametro.
  nMes = nMes - 1;

  // Cria um objeto Date do JavaScript, a partir das partes da
  // data passada como parametro. Se a data passada para o
  // construtor do objeto Date for invalida, o JavaScript cria
  // um objeto Date com o mes alterado.
  dDataTeste = new Date(nAno, nMes, nDia);

  // Pega o mes do objeto data que foi criado acima
  nMesTeste = dDataTeste.getMonth();

  // Compara o mes da data passada como parametro com o mes do
  // objeto data que foi criado
  if (nMes != nMesTeste) {
    return false;
  }
  return true;
}

function validaSenha(sSenha) {
  // Expressão Regular para validação da senha
  sExpReg = /^[a-zA-Z0-9]+$/;
  return sExpReg.test(sSenha);
}

function validaEmail(sEmail) {
  // Expressao regular para validacao de enderecos de e-mail
  sExpReg = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/;
  return sExpReg.test(sEmail);
}

function validaCPF (CPF) {
  if (CPF.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||
      CPF == "22222222222" || CPF == "33333333333" || CPF == "44444444444" ||
      CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||
      CPF == "88888888888" || CPF == "99999999999") {
    return false;
  }
  soma = 0;
  for (i=0; i < 9; i ++) {
    soma += parseInt(CPF.charAt(i)) * (10 - i);
  }
  resto = 11 - (soma % 11);
  if (resto == 10 || resto == 11) {
    resto = 0;
  }
  if (resto != parseInt(CPF.charAt(9))) {
    return false;
  }
  soma = 0;
  for (i = 0; i < 10; i ++) {
    soma += parseInt(CPF.charAt(i)) * (11 - i);
  }
  resto = 11 - (soma % 11);
  if (resto == 10 || resto == 11) {
    resto = 0;
  }
  if (resto != parseInt(CPF.charAt(10))) {
    return false;
  }
  return true;
}

function validaIP(str) {
  expReg = /^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/;
  if (!expReg.exec(str)) {
    return false;
  }
  classeA = RegExp.$1 * 1;
  classeB = RegExp.$2 * 1;
  classeC = RegExp.$3 * 1;
  classeD = RegExp.$4 * 1;
  if (classeA > 255 || classeB > 255 || classeC > 255 || classeD > 255 ||
      classeA == 0  || classeD == 0) {
    return false;
  }
  return true;
}

function validaDominio(str) {
  expReg = /^[a-z0-9-]+(\.[a-z0-9-]+)+$/;
  return expReg.test(str);
}

/**
 * Funcao
 *   pegaOpcoesSelecionadas
 *
 * Descricao
 *   Funcao que retorna ó rótulo das opções selecionadas de um listBox
 *   em uma string, com os elementos separados por vírgula
 *
 * Parametros
 *   list: Elemento SELECT que se deseja obter as opçoes selecionadas
 *
 * Retorno
 *   Uma String com os elementos selecionados
 *
 * PRODAP/2001
 */
function pegaOpcoesSelecionadas(list) {
  vOpcoes = list.options;
  vSelecionados = new Array();
  cont = 0;
  var strRetorno = "";
  for (i = 0; i < vOpcoes.length; i++) {
    if (vOpcoes[i].selected) {
      strRetorno += vOpcoes[i].text + ", ";
      //vSelecionados[cont++] = vOpcoes[i].text;
    }
  }
  strRetorno = strRetorno.replace(/,\s$/, "");
  return strRetorno;
  //return vSelecionados.join(", ");
}

// Funcao para fazer a validacao de horas, no formato HH:mm:ss.
// A hora deve estar no formato de 24H.
// Os segundos são opcionais.
// Retorna falso se a hora não estiver no formato correto ou se
// for inválida, e verdadeiro caso seja válida.
function validaHora(strHora) {
  // Expressao regular para validar as horas no formato HH:mm:ss
  // onde os segundos sao opcionais
  sPadraoHora = /^([0-9]{1,2}):([0-9]{1,2})(:[0-9]{1,2})?$/;
  if (!sPadraoHora.exec(strHora)) {
    return false;
  }
  // Pega as partes da hora
  hora = RegExp.$1 * 1;
  minuto = RegExp.$2 * 1;
  segundo = RegExp.$3;
  // Verifica se foram passados os segundos
  if (/^:([0-9]{1,2})$/.exec(segundo)) {
    segundo = RegExp.$1 * 1;
  } else {
    segundo = "";
  }
  // Verifica se a hora está dentro do limite permitido
  if (hora < 0 || hora > 23) {
    return false;
  }
  // Verifica se os minutos estão dentro do limite permitido
  if (minuto < 0 || minuto > 59) {
    return false;
  }
  if (segundo != "") {
    // Se for informado os segundos, verifica se os
    // mesmos estão dentro do limite permitido.
    if (segundo < 0 || segundo > 59) {
      return false;
    }
  }
  return true;
}