// JavaScript Document

//Verifica o navegador
function verNav(event){
  if(window.event) {// IE   
    return true;
  }
  // Netscape/Firefox/Opera
  return false;
}

//Valida o preenchimento dos testes
function validar(){	
  var node_list = document.getElementsByTagName('input');
  var marcado = false;
  var j=0;
  var validacao = new Array();
  for (var i = 0; i < node_list.length; i++) {
    var node = node_list[i];
    if (node.getAttribute('type') == 'radio') {
      if(node.checked){
        marcado = true;
      }
      j++;
    }
    if(j==3){
      validacao.push(marcado);
      j=0;
      marcado = false;
    }
  }
  for (var i = 0; i < validacao.length; i++) {
    if(validacao[i] == false){
      alert('Para passar tem que marcar todas as alternativas!');
      return false;
    }
  }
  return true;
}

function limpaFiltroProduto() {
  document.form1.cp_produto.value = "";
  document.form1.submit();
}

// função para tratamento do navegador
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init == true) with (navigator) {
    if ((appName=="Netscape") && (parseInt(appVersion)==4)) {
      document.MM_pgW=innerWidth;
      document.MM_pgH=innerHeight;
      onresize=MM_reloadPage;
    }
    }
  else if (innerWidth != document.MM_pgW || innerHeight!=document.MM_pgH)
    location.reload();
}

// função para excluir os não-numéricos
function EnxugaCampo(sValor,iBase){
  var tam = sValor.length
  var saida = new String
  for (i=0;i<tam;i++)
    if (!isNaN(parseInt(sValor.substr(i,1),iBase)))
      saida = saida + String(sValor.substr(i,1));
  return (saida);
}

// função para validar data
function ValidaDATA(cData) {
  var data;
  data = EnxugaCampo(cData.value.substring(0,10),10);
  var tam = data.length;
  if (tam == 0) {
    return(false);
  }
  if (tam != 8) {
    alert('O tamanho da data está incorreto. ');
    //  cData.value = "";
    cData.focus();
    return(false);
  }
  var dia = data.substr(0,2)
  var mes = data.substr(2,2)
  var ano = data.substr(4,4)
  var retorno = true;
  switch (mes) {
    case '01': case '03': case '05': case '07': case '08': case '10': case '12':
      if (dia > 31) {
        alert('O dia não pode ser maior que 31.');
        retorno=false;
        cData.focus();
      }
      break;
    case '02':
      if (dia > 29) {
        alert('O dia não pode ser maior que 29, para o mês de fevereiro.');
        retorno=false;
        cData.focus();
      }
      break;
    case '04': case '06': case '09': case '11':
      if (dia > 30) {
        alert('O dia não pode ser maior que 30.');
        retorno=false;
        cData.focus();
      }
      break;
    default: {
      alert('O mês está incorreto.');
      retorno = false;
      cData.focus();
    }

  }
  if(!retorno){ 
    cData.value = "";
  }
  return retorno;
}

// função para formatar data
function FormataDATA(Campo, teclapres) {
  if(Campo.setado!=1){
    Campo.onkeyup = new Function("corrigeDATA(this)");
    Campo.onblur = new Function("ValidaDATA(this)");
    Campo.setado=1;
  }
  FormataCampo(Campo, teclapres, "00/00/0000#" );
}

// função para formatar o CPF
function FormataCPF(Campo, teclapres){
  var chave = String.fromCharCode(teclapres.keyCode); // caracter digitado
  var tecla = teclapres.keyCode;
  var numeros = "1234567890";

  if ( (numeros.indexOf (chave, 0) == -1) &&
    (tecla != 8) && (tecla != 9) && (tecla != 35) && (tecla != 36) && (tecla != 37) && (tecla != 39) &&
    ((tecla < 96) || (tecla > 105)) ) {
    teclapres.returnValue = false;
  }

  var vr = new String(Campo.value);
  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace("-", "");

  tam = vr.length + 1;

  if (tecla != 9 && tecla != 8){
    if (tam > 3 && tam < 7)
      Campo.value = vr.substr(0,3) + '.' + vr.substr(3, tam);
    if (tam >= 7 && tam <10)
      Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,tam-6);
    if (tam >= 10 && tam < 12)
      Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,3) + '-' + vr.substr(9,tam-9);
  }
}

// valida CPF
function ValidaCPF(campo) {
  sCampo = campo.value;
  if(sCampo.length==0){
    return true;
  }
  
  if (sCampo.length != 14 && sCampo.length!=11  ) {
    alert('O número do CPF informado está incompleto');
    return(false);
  }

  sCampo = sCampo.replace(".", "");
  sCampo = sCampo.replace(".", "");
  sCampo = sCampo.replace("-", "");

  if (sCampo.substr(9,2) != CalcularDV(sCampo.substr(0,9), 11)) {
    alert('O número do CPF informado é inválido');
    campo.value='';
    return(false);
  }
  return true;
}

// calcula d�gito verificador (iPeso do CPF = 11; iPeso do CNPJ = 9)

function CalcularDV(sCampo, iPeso){
  var iTamCampo;
  var iPosicao, iDigito;
  var iSoma1 = 0;
  var iSoma2=0;
  var iDV1, iDV2;

  iTamCampo = sCampo.length;
  for (iPosicao=1; iPosicao<=iTamCampo; iPosicao++) {
    iDigito = sCampo.substr(iPosicao-1, 1);
    iSoma1 = parseInt(iSoma1,10) + parseInt((iDigito * Calcular_Peso(iTamCampo - iPosicao, iPeso)),10);
    iSoma2 = parseInt(iSoma2,10) + parseInt((iDigito * Calcular_Peso(iTamCampo - iPosicao + 1, iPeso)),10);
  }

  iDV1 = 11 - (iSoma1 % 11);
  if (iDV1 > 9)
    iDV1 = 0;

  iSoma2 = iSoma2 + (iDV1 * 2);
  iDV2 = 11 - (iSoma2 % 11);
  if (iDV2 > 9)
    iDV2 = 0;

  Ret = (parseInt(iDV1 * 10,10) + parseInt(iDV2));

  Ret = "0" + Ret;
  Ret = Ret.substr(Ret.length - 2,Ret.length);
  return(Ret);
}

// função auxiliar da função CalcularDV
function Calcular_Peso(iPosicao, iPeso){
  //Pesos  CPF 11  CNPJ 9
  return (iPosicao % (iPeso - 1)) + 2;
}

// função para limpar um campo
function LimpaCampo(campo) {
  campo.value = '';
}

// função que exige uma quantidade m�nima de caracteres para o 'campo'
function ValidaMinimo(campo, minimo) {
  if (campo.value.length < minimo) {
    alert("Digite pelo menos " + minimo + " caracteres");
    campo.focus();
    return (false);
  } else
    return (true);
}

// função para atribuir um 'valor' a um 'campo'
function AtualizarCampo(valor, campo) {
  var form1 = opener.document.form1;
  form1.elements[campo].value = valor;
  close();
}

// função para atribuir valores aos campos
function AtualizarCampos(valores, campos) {
  var vCampos  = new Array();
  var vValores = new Array();

  vCampos  = campos.split(";");
  vValores = valores.split(";");

  var form1 = opener.document.form1;
  for (var j=0; j < vCampos.length; j++){
    form1.elements[vCampos[j]].value = vValores[j];
  }
  close();
}

// função para validar uma campo do tipo m�dia
function FormataMedia ( campo ) {
  ValidaCampo ( campo, "0000" );
  valor = campo.value;
  if ( (campo.value > 1) && (valor.indexOf(",") == -1) ){
    campo.value = valor + ",";
  }
}

// função utilizada para preencher a nota no formato #,0 ao sair do campo
function ExitNota(campo){
  var vr = new String(campo.value);
  vr = vr.replace(".",",");
  campo.value = vr;
  var tam = vr.length;
  var i  = vr.indexOf(',');
  if (tam > 0) {
    if ( i == -1 ){
      campo.value = vr + ',0';
    }else{
      if (i == tam-1)
        campo.value = vr + '0';
    }
  }
}

// função depreciada usar a próxima,
// permanece no javascript para não gerar erro no c�digo existente
function ValidaCampo ( campo, mascara ) {
  FormataCampo(campo, event, mascara);
}

function corrigeDATA( campo ){
  if(campo.value.length>10){
    campo.value = campo.value.substring(0,campo.value.length-1);
  }
}

// função para validar um campo através da máscara, reescrita para ser compatível com firefox
// '9' para números obrigat�rios e '0' para n�meros optativos;
// '#' para caracteres e '!' para números e caracteres;
// qualquer outro caracter passa a exigir ele pr�pri
function FormataCampo ( campo, event, mascara ) {
  var keynum;
  var internetExplorer = verNav(event); //Verifica o navegador
  if(internetExplorer) {
    keynum = event.keyCode;
  }
  else{
    keynum = event.which;
  }

  var chave = String.fromCharCode(keynum);// chave é o caracter digitado
  var LenStr = campo.value.length + 1; // comprimento do campo digitado
  var CampoMask = mascara;
  var StrMask = CampoMask.substring(LenStr-1, LenStr); // recupera a máscara equivalente
  var LenMask = mascara.length;

  if (!keynum || keynum <= 31 || keynum > 144) //se for enter, backspace, etc
    return true;

  // não permite digitar além da máscara
  if ( LenStr > LenMask ) {
    if (internetExplorer)
      event.returnValue = false;
    else
      event.preventDefault();
  }

  if ( ( StrMask == "0" ) || ( StrMask == "#" ) ) {
    Referencia = "1234567890";
  } else if ( StrMask == "U" ) {
    Referencia = "AÂÃÁÀBCÇDEÊÉÈFGHIÎÍÌJKLMNOÔÕÓÒPQRSTUÛÚÙVWYXZ";
  } else if ( StrMask == "L" ) {
    Referencia = "aâãáàbcçdeéèêfghiîíìjklmnoôõóòpqrstuûúùvwyxz";
  } else if ( StrMask == "?" ) {
    Referencia = "aâãáàbcçdeéèêfghiîíìjklmnoôõóòpqrstuûúùvwyxzAÂÃÁÀBCÇDEÊÉÈFGHIÎÍÌJKLMNOÔÕÓÒPQRSTUÛÚÙVWYXZ";
  } else if ( StrMask == "A" ) {
    Referencia = "1234567890aâãáàbcçdeéèêfghiîíìjklmnoôõóòpqrstuûúùvwyxzAÂÃÁÀBCÇDEÊÉÈFGHIÎÍÌJKLMNOÔÕÓÒPQRSTUÛÚÙVWYXZ";
  } else {
    Referencia = StrMask;
  }

  ver = true;
  if (Referencia.indexOf (chave, 0) == -1) {
    if (internetExplorer)
      event.returnValue = false;
    else
      event.preventDefault();
    ver = false;
  }

  if ( ver == true ) {
    do {
      Referencia = "X";
      // incrementa o tamanho do campo digitado
      LenStr = LenStr + 1;
      // recupera a máscara seguinte
      StrMask = CampoMask.substring(LenStr-1, LenStr);
      if ( ( StrMask != "0" ) && ( StrMask != "#" ) && ( StrMask != "U" ) && ( StrMask != "L" ) &&
        ( StrMask != "?" ) && ( StrMask != "A" ) && ( StrMask != "" ) ) {
        Referencia = StrMask;
      }

      if ( Referencia == StrMask ) {
        campo.value = campo.value + chave + StrMask;
        chave = "";
        if (internetExplorer)
          event.returnValue = false;
        else
          event.preventDefault();
      }
    } while ( Referencia == StrMask );
  }
  return false;
}

 function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}

function site(v){
    //Esse sem comentarios para que você entenda sozinho ;-)
    v=v.replace(/^http:\/\/?/,"")
    dominio=v
    caminho=""
    if(v.indexOf("/")>-1)
        dominio=v.split("/")[0]
        caminho=v.replace(/[^\/]*/,"")
    dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
    caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    caminho=caminho.replace(/([\?&])=/,"$1")
    if(caminho!="")dominio=dominio.replace(/\.+$/,"")
    v="http://"+dominio+caminho
    return v
}

function moeda(v) {
	v=v.replace(/\D/g,"");                //Remove tudo o que não é dígito
  while(v.length>0 && v.length<3){      //Coloca os zeros na frente
    v='0'+v;
  }
  if(v.length>3 && v.indexOf('0')==0){
    v=v.substring(1);                   //Remove 0 do início
  }
  v=v.replace(/^(\d*)(\d{2})/,"$1,$2"); //Coloca vírgula antes dos dois últimos dígitos
  return v;
}

function validaTam(campo, tam){
    valor = campo.value;
    if(valor.length!=tam && valor.length>0){
        alert('Dados inválidos.');
        campo.value='';
        return false;
    }
    return true;
}

// função para validar um campo através da máscara
// '9' para números e '!' para números e letras;
function ValidaCaracter ( campo, mascara ) {
  chave = String.fromCharCode(event.keyCode);// chave é o caracter digitado
  if ( mascara == "9" ) {
    Referencia = "1234567890";
  } else if ( mascara == "!" ) {
    Referencia = "1234567890aâãáàbcçdeéèêfghiîíìjklmnoôõóòpqrstuûúùvwyxzAÂÃÁÀBCÇDEÊÉÈFGHIÎÍÌJKLMNOÔÕÓÒPQRSTUÛÚÙVWYXZ";
  }

  if (Referencia.indexOf (chave, 0) == -1) {
    event.returnValue = false;
  }
}

// função que retorna a string sem os espa�os em branco
function trim(texto){
  var valor = "";

  if(texto.length == 1){
    valor = texto;
    if(texto.charAt(0) == " ")
      valor = "";
  }
  else	 {
    for (var j=0; j < texto.length-1 && texto.charAt(j) == " "; j++){
    }

    valor = texto.substr(j, texto.length);
    for (var j=valor.length-1; j > 0 && valor.charAt(j) == " "; j--){
    }

    if(j > 0 )
      j++

    valor = valor.substr(0, j);
  }

  return valor
}

// função para validar um campo requerido
// na tag form deve ter o evento onSubmit=" return Fields(baseWindow, formIndex) "
function validateFields(baseWindow, formIndex){
  // Inicializa��o de vari�veis
  var errorDetected = false;
  var valor = "";
  var alt = "";
  var requerido = false;

  // Verifica os campos a serem validados, ou seja, se o formul�rio da pr�pria janela ou o da janela que o chamou (popup)
  if ( baseWindow && opener != null ) {
    var form1 = opener.document.forms[formIndex];
  } else {
    var form1 = document.forms[formIndex];
  }

  // Efetua a validação de cada campo do formul�rio
  for (var j=0; j < form1.elements.length && !errorDetected; j++){
    alt = form1.elements[j].alt;
    valor = form1.elements[j].value;
    disable = form1.elements[j].disabled;
    fReadOnly = form1.elements[j].readOnly;
    valor = trim(valor);
    if ( alt == "requerido" && valor == "" && !disable && !fReadOnly) {
      alert("O campo '" + form1.elements[j].title + "' deve ser preenchido.");
      form1.elements[j].focus();
      errorDetected = true;
    }
  }

  return !errorDetected
}

// função para validar um campo requerido passando um form
// na tag form deve ter o evento onSubmit=" return Fields(document.form1)
function validateFieldsForm(form){
  // Inicializa��o de vari�veis
  var errorDetected = false;
  var valor = "";
  var alt = "";
  var requerido = false;
  var form1 = form;

  // Efetua a validação de cada campo do formul�rio
  for (var j=0; j < form1.elements.length && !errorDetected; j++){
    alt = form1.elements[j].alt;
    valor = form1.elements[j].value;
    valor = trim(valor);
    if ( alt == "requerido" && valor == "" ) {
      alert("O campo '" + form1.elements[j].title + "' deve ser preenchido.");
      form1.elements[j].focus();
      errorDetected = true;
    }
  }

  return !errorDetected
}

//Validacao da senha e campos obrigat�rios
function validateWithPassword(senha, confirmacao){
  var erroDetected = false;
  if (senha.value != confirmacao.value){
    alert('A senha e a confirma��o est�o diferentes!');
    senha.focus();
    erroDetected = true;
  }

  if(!erroDetected)
    erroDetected = !validateFields(false, 0);

  return !erroDetected;
}

//Abre janela de popup
function openWindow(pagina, largura, altura){
  var tamLargura = largura;
  var posLeft = (screen.width-tamLargura)/2;
  var tamAltura = altura;
  var posTop = (screen.height-tamAltura)/2;
  window.open(pagina, '_blank', 'top='+posTop+'px, left='+posLeft+'px, width=' + largura + ', height=' + altura + ', scrollbars=yes,resizable=no,toolbar=no,menubar=no')
}

///validar tamanho
function validarTamanho(campo, max){
  var valor = campo.value;
  if (valor.length > max){
    campo.value = campo.value.substr(0, max);
  }
}

////Verifica o tamanho de textarea
function checkLength(campo, tamanho) {
  var txt;
  txt = campo.value;
  if (txt.length > tamanho){ //i is the maxlength of textarea which we have set to 80
    alert('O campo "' + campo.title + '" excedeu o tamanho de ' + tamanho + ' caracteres. \n Voc� deve apagar algumas palavras.');
    campo.focus();
    return false;
  }
  return true;
}

/////desabilita o bot�o de submit ap�s o click;
function Desabilitar(botao, objForm){
  botao.disabled = true;
  objForm.submit();
}

////retorna um elemento com base no nome passado como par�metro
function obterElementoNome(nome, form){
  var achou = false;
  for (var j=0; j < form.elements.length && !achou; j++){
    if ( form.elements[j].name == nome ) {
      achou = true;
      return form.elements[j];
    }
  }

  if (!achou)
    return null;
}

////// validação utilizada para campos tipo filtro do protocolo
function validaFiltro(campos){
  var vCampos  = new Array();
  var camposExistentes = "";

  // a função split retorna um vetor com os elementos separados pelo delimitador ";"
  vCampos  = campos.split(";");
  var form1 = document.form1;

  var camposRet = "";
  for (var j=0; j < vCampos.length; j++){
    var idx = camposExistentes.indexOf(vCampos[j]);
    if (camposExistentes.indexOf(vCampos[j]) < 0 ) {
      camposExistentes += vCampos[j];
      var obj = obterElementoNome(vCampos[j], document.form1);
      //var obj = document.getElementById(vCampos[j]);
      if (obj != null && obj.value == "") {
        camposRet += obj.title + ", ";
      }
    }
  }

  var error = false;
  if (camposRet != "") {
    error = true;
    alert("� necess�rio que o(s) campo(s), " + camposRet + "seja(m) preenchido(s) para que essa pesquisa possa ser efetuada.");
  }

  return !error;
}

//////////redimenciona a janela com base na largura passada como par�metro sendo que o tamanho do cont�udo servir� de base do topo
function redimensionarReposicionar(largura){
  //redimensionando
  var distanciaFim = 40;
  var distanciaAltura = 80;
  var tamAltura = 0;

  var altura = document.body.scrollHeight + distanciaFim;
  if (altura > (screen.height-distanciaAltura)) {
    altura  = screen.height-distanciaAltura;
    tamAltura = distanciaAltura;
  }
  self.resizeTo(largura,altura);

  //Movendo para o centro
  var tamLargura = largura;
  var posLeft = (screen.width-tamLargura)/2;
  tamAltura += altura;
  var posTop = (screen.height-tamAltura)/2;
  self.moveTo(posLeft, posTop);
}

///m�todo a ser utilizado no onKeyPress para validar o tratamento n�merico
function tratamentoNumerico(evt, campo, permitirVirgula) {
  var charCode = (evt.which) ? evt.which : event.keyCode;
  if (charCode > 31 && (charCode < 48 || charCode > 57)) {
    return (charCode == 44 && permitirVirgula && campo.value.indexOf(',') < 0);
  }
  return true;
}

///preenche uma determinada quantidade de zeros para casas decimais
function tratamentoRealOnExit(campo, casasDecimais){
  var valor = campo.value;
  if (valor.length > 0) {
    //verifica se possui a virgula
    var virgula = valor.indexOf(',');
    var tamPos = 0;
    if (virgula < 0) {
      //como n�o tem a virgula n�o tem os zeros decimais
      valor = valor + ',';
    }
    else
      tamPos = valor.substr(virgula+1, valor.length).length;


    while (tamPos < casasDecimais) {
      valor = valor + '0';
      tamPos++;
    }
    campo.value = valor;
  }
}

////função para selecionar todos os itens de select com v�rias linhas
function selectAll(select){
  select.multiple = true;
  for (var i = 0; i < select.length; i++) {
    select.options[i].selected = true;
  }
  return true;
}


/// função que retorna um array com os checkbox seleecionados do form
function obterCkeckSelecionados(form){
  var selecionados = new Array();
  for (var i=0; i < form.elements.length; i++){
    if ((form.elements[i].type == 'checkbox') && (form.elements[i].checked)) {
      selecionados.length++;
      selecionados[selecionados.length-1] = form.elements[i].value;
    }
  }
  return selecionados;
}

////fun�ao que remove um item de um select
function removeItemSelect(select, msgErro, msgConfirma){
  if (select.selectedIndex < 0 || (select.length == 1 && select.options[0].value == ""))
    alert(msgErro);
  else
  if (confirm(msgConfirma)) {
    for (var i = 0; i < select.length; i++) {
      if (select.options[i].selected) {
        select.options[i] = null;
        i--;
      }
    }
    select.selectedIndex = -1;
  }
}

////função que verifica se o item já está no select
function contemItemSelect(select, valor){
  var achou = false;
  for (var i = 0; i < select.length && !achou; i++) {
    achou = select.options[i].value == valor;
  }
  return achou;
}

///função que adiciona um item em um select
function addItemSelect(select, texto, valor){
  if (contemItemSelect(select, valor)) {
    alert('O item j� cont�m na lista.');
    return false;
  }
  else {
    var idx = select.length;
    if ( select.length == 1 && select.options[0].value == "")
      idx = 0;
    else
      select.length += 1;

    select.options[idx].text  = texto;
    select.options[idx].value = valor;
    return true;
  }
}

///// função para converter um valor do campo para mai�sculo
function convertUpperCase(campo){
  campo.value = campo.value.toUpperCase();
}

///// função para selecionar todos checkbox's de um formulário
function selecionarTodosCheckBox(form){
  var elementos = form.elements;
  for(i=0; i < elementos.length; i++){
    if ((elementos[i].type == 'checkbox') && (elementos[i].name != 'checkboxdes')) {
      elementos[i].checked = true;
    }
  }
}

///// função para desmarcar todos checkbox's de um formul�rio
function deselecionarTodosCheckBox(form){
  var elementos = form.elements;
  for(i=0; i < elementos.length; i++){
    if ((elementos[i].type == 'checkbox') && (elementos[i].name != 'checkboxdes')) {
      elementos[i].checked = false;
    }
  }
}

///// função para verificar se existe algum checkbox selecionado no form
//// caso não exista, será exibida uma mensagem de acordo com o parâmetro passado
function existeCheckBoxSelecionado(form, msgErro){
  var elementos = form.elements;
  var achou = false;
  for(i=0; i < elementos.length && !achou; i++){
    achou = (elementos[i].type == 'checkbox') && (elementos[i].checked);
  }

  if (!achou)
    alert(msgErro);

  return achou;

}

///// função para limpar um componente do tipo radio
function limparRadioButton(form, questao) {
  var elementos = form.elements;
  for(var i = 0; i < elementos.length; i++ ) {
    if ( (elementos[i].name == questao) &&
      (elementos[i].type == 'radio') ) {
      elementos[i].checked = false;
    }
  }
}


///// função para verificar se a hora est� entre 0 e 23
function validaHora(campo){
  if (campo.value != "" && (parseInt(campo.value) < 0 || parseInt(campo.value) > 23)) {
    alert('Hora inválida. A hora deve estar entre 0 e 23');
    campo.focus();
    return false;
  }

  return true;
}

///// função para verificar se o minuto est� entre 0 e 59
function validaMinuto(campo){
  if (campo.value != "" && (parseInt(campo.value) < 0 || parseInt(campo.value) > 59)) {
    alert('Minuto inválido. O minuto deve estar entre 0 e 59');
    campo.focus();
    return false;
  }

  return true;
}

///// função para colocar o foco no próximo campo do formul�rio
/////  quando o campo atual tiver o tamanho máximo
function proximoCampo(campoAtual, tamanho, campoProx) {
  if (campoAtual.value.length == tamanho)
    campoProx.focus();
}

//Move todos os itens de uma lista de destino para a de origem
function MoverSelecionados(selOrigem, selDestino){
  for (var i = 0; i < selOrigem.length; i++) {
    if (selOrigem.options[i].selected &&
      addItemSelect(selDestino, selOrigem.options[i].text, selOrigem.options[i].value)){
      selOrigem.options[i] = null;
      i--;
    }
  }
}

//Move todos os itens de uma lista de origem para o destino
function MoverTodos(selOrigem, selDestino){
  for (var i = 0; i < selOrigem.length; i++) {
    if (addItemSelect(selDestino, selOrigem.options[i].text, selOrigem.options[i].value)){
      selOrigem.options[i] = null;
      i--;
    }
  }
}

//Verifica CK e altera a classe de acordo com array passado
function checarBox(campo, idObj){
  valores = new Array("exibir","oculto");
  objeto = this.document.getElementById(idObj);
  if(campo.checked){
    objeto.className = valores[0];
  }else{
    objeto.className = valores[1];
  }
}