/*********************************************************************************************************************/
var caracterFormatador = '/-.,:()';

function getElement(nmElement, parentDocument) { 
    var element = undefined;
    if (parentDocument == undefined) {
        parentDocument = document
    }
    if(parentDocument.all) {
        element = parentDocument.all[nmElement]; 
    } else {
        element = parentDocument.getElementById(nmElement); 
        if (element == null || element == undefined || element == "") {
            element = parentDocument.getElementsByName(nmElement)[0]; 
        }
    } 
    return element;
}

function getElementIndex(pObject) {
	// Descricao:  Retorna o indice do objeto, varrendo o formulario ate que se encontre o objeto informado
	var lElementIndex;
   
	//Retorna a quantidade de objetos do formulario
	var lCountElements = pObject.form.length - 1;

	for (i = 0; i <= lCountElements; i++) {
		if (pObject.form[i].name == pObject.name) {
			return (i);
		}
	}
}

function acceptFocus(pObject) {
	// Descricao:  verifica se o objeto aceita foco

	var onFocus = "'" + pObject.onfocus + "'";
	var nmClasse = pObject.className;
	nmClasse = nmClasse.toLowerCase();
	
	if (pObject.type == undefined || pObject.type == "hidden" || pObject.disabled || pObject.style.display == "none" || pObject.readOnly || nmClasse.indexOf('readonly') >= 0 || onFocus.indexOf('blur()') >= 0) {
		return false;
	} else {
		return true;
	}
}


function trocaCaracter(valor, caracterDe, caracterPor) {
    var retorno = valor;

    if (caracterDe != caracterPor) {
        while (retorno.indexOf(caracterDe) >= 0) {
            retorno = retorno.replace(caracterDe, caracterPor);
        }
    }
    
    return retorno;
}

function limpaCampo(valor) {
    var s = "";
    
    for (var i = 0; i < valor.length; i++) {
        if (caracterFormatador.indexOf(valor.substring(i, i + 1)) < 0) {
            s += valor.substring(i, i + 1);
        }
    }
    return (s);
}

function formatText(valor, mascara, tipo) {
    var tamMascara    = mascara.length;
    var valorOriginal = valor;
    var i             = 0;
    var retorno;


    if (tamMascara == 0) {
        return (valorOriginal);
    }
    if (tipo.toUpperCase() != "VALOR" && tipo.toUpperCase() != "TEXTO") {
        alert("Tipo invalido, a função somente aceita os tipo VALOR ou TEXTO");
        return (valorOriginal);
    }
    if (valor.length == 0 || tamMascara == 0 || valor.length > (limpaCampo(mascara)).length) {
        return (valorOriginal);
    }

    valor = limpaCampo(valor);
    retorno = "";
    if (tipo.toUpperCase() == "TEXTO") {
        i = 0;
        while (i < tamMascara) {
            if (caracterFormatador.indexOf(mascara.substring(i, i + 1)) > 0) {
                retorno += mascara.substring(i, i + 1);
                valor = "b" + valor;
            } else {
                if (i >= valor.length) {
                    if (mascara.substring(i, i + 1) != "#") {
                        retorno += mascara.substring(i, i + 1);
                    } 
                } else {
                    retorno += valor.substring(i, i + 1);
                }
            }
            i ++;
        }

        tamMascara = retorno.length;
        for (i = tamMascara - 1; i >= 0; i--) {
            if (caracterFormatador.indexOf(retorno.substring(i, i + 1)) > 0) {
                retorno = retorno.substring(0, i);
            } else {
                break;
            }
        }
    } else {
        // VALOR
        i = valor.length - 1;
        tamMascara --;
        while (i >= 0) {
            if (caracterFormatador.indexOf(mascara.substring(tamMascara, tamMascara + 1)) > 0) {
                retorno = mascara.substring(tamMascara, tamMascara + 1) + retorno;
                valor += "b";
                i++;
            } else {
                if (valor.substring(i, i + 1) == "b") {
                    if (mascara.substring(tamMascara, tamMascara + 1) != "#") {
                        retorno = mascara.substring(tamMascara, tamMascara + 1) + retorno;
                    } else {
                        retorno = "b" + retorno;
                    }
                } else {
                    retorno = valor.substring(i, i + 1) + retorno;
                }
            }
            i --;
            tamMascara --;
        }
        for (i = tamMascara; i >= 0; i--) {
            if (mascara.substring(i, i + 1) != "#") {
                retorno = mascara.substring(i, i + 1) + retorno;
            }
        }

        i = 0;
        while (i < retorno.length) {
            if (caracterFormatador.indexOf(retorno.substring(i, i + 1)) > 0) {
                retorno = retorno.substring(i + 1, retorno.length);
                i--;
            } else {
                break;
            }
            i ++;
        }
    } 

    return (retorno);
}

function isNumber(valor, mensagem) {
    if (isNaN(valor) || valor.indexOf(' ') >= 0) {
        if (mensagem != undefined && mensagem != '') {
            alert (mensagem);
        }
        return ('');
    } else {
        return (valor)
    }
}

function processandoAcao(value) {
    if (value == true) {
        habilitaTag ('DIV', 'divProcessando');
    } else {
        desabilitaTag ('DIV', 'divProcessando');
    }
}

function habilitaTag(nmTag, id) {
   if (document.getElementsByTagName)
      var x = document.getElementsByTagName(nmTag);
   else if (document.all)
      var x = document.all.tags(nmTag);
   else{
      alert('O Script habilitaTag não é suportado pelo seu browser');
      return;
   }

   for (var i=0;i<x.length;i++){
      if (x[i].id == id) {
         x[i].style.display = "";
      }
   }
}

function desabilitaTag(nmTag, id) {
   if (document.getElementsByTagName)
      var x = document.getElementsByTagName(nmTag);
   else if (document.all)
      var x = document.all.tags(nmTag);
   else{
      alert('O Script desabilitaTag não é suportado pelo seu browser');
      return;
   }
    
   for (var i=0;i<x.length;i++){
      if (x[i].id == id) {
         x[i].style.display = "none";
      }
   }
}

function limpaDropDown(NmDropDown) {
    eval ('getElement("' + NmDropDown + '").options.length = 0');
}

function Trim(text) {
	return text.replace(/^\s+|\s+$/g,"");
}


function getWindowOpen(url, name, param, modal) {
    if (modal == undefined || modal == "") {
        modal = false;
    }
    if (name == undefined || name == "") {
        name = "w_pesquisa";
    }
    if (param == undefined || param == "") {
        if (modal == false) {
            param = "toolbar=no, location=no, directories=no, scrollbars=yes, status=yes, top=0, left=0, width=750, height=500";
        } else {
            param = "dialogHeight: 500px; dialogWidth: 750px; center: Yes; help: No; resizable: No; status: Yes;";
        }
    }
    if (modal == false) {
        return (window.open (url, name, param));
    } else {
        return (window.showModalDialog (url, name, param));
    }
}

function trataWhereForLike(value) {
    if (value != "") {
        value = trocaCaracter(value, "+", "%");
        value = trocaCaracter(value, "*", "%");
        value = "'" + value + "'";
    }
    return value;
}


/*********************************************************************************************************************/


function f_LeContaContabil(ContaContabil, Parte ) {
    // PARTE -> 1=Grupo  2=SubGrupo1  3=SubGrupo2  4=Conta  Ex:( 1.2.3.4)

   FimGrupo    = 0;
   FimSub1     = 0;
   CdGrupo     = '';
   CdSubGrupo1 = '';
   CdSubGrupo2 = '';
   CdConta     = '';
   FimSub2     = 1000;
   FimGrupo    = 1000; 
   FimSub1     = 1000;
   
   if ( ContaContabil != null && ContaContabil !='' ) {
   
       FimGrupo = ContaContabil.indexOf('.',0);

       if ( FimGrupo != -1 ) {
          CdGrupo  = ContaContabil.substring(0,FimGrupo);
       }
       else {
          FimGrupo = 1000; 
          CdGrupo  = ContaContabil.substring(0,ContaContabil.length);
       }
       
       if (Parte == 1 ) {
         return(CdGrupo);
       }
       if ( FimGrupo !=1000) {
          FimSub1     = ContaContabil.indexOf('.',FimGrupo+1);
          if ( FimSub1 != -1 ) {
             CdSubGrupo1 = ContaContabil.substring(FimGrupo+1,FimSub1);
          }
          else {
             FimSub1 = 1000
             CdSubGrupo1 = ContaContabil.substring(FimGrupo+1,ContaContabil.length);
          }
       }
       if (Parte == 2 ) {
         return(CdSubGrupo1);
       }

       if ( FimSub1  !=1000) {
          FimSub2     = ContaContabil.indexOf('.',FimSub1+1);
          if ( FimSub2 != -1 ) {
             CdSubGrupo2 = ContaContabil.substring(FimSub1+1,FimSub2);
          }
          else {
             FimSub2 = 1000
             CdSubGrupo2 = ContaContabil.substring(FimSub1+1,ContaContabil.length);
          }
       }
       if (Parte == 3 ) {
         return(CdSubGrupo2);
       }

       if ( FimSub2  !=1000) {
          FimConta     = ContaContabil.indexOf('.',FimSub2+1);
          if ( FimConta != -1 ) {
             CdSubGrupo2 = ContaContabil.substring(FimSub2+1,FimConta);
          }
          else {
             CdConta = ContaContabil.substring(FimSub2+1,ContaContabil.length);
          }
       }
       if (Parte == 4 ) {
         return(CdConta);
       }
   }                    
}


function f_SemestreAtual () {
   var DtHoje        = new Date();
   var Mes           = DtHoje.getMonth() + 1;
   var SemestreAtual = '1';

   if (Mes >= 7) {
      SemestreAtual = '2'; 
   }
   else {
      SemestreAtual = '1'; 
   }

   return (SemestreAtual);
}


function f_DataHoje (IdTipo, IdSemestralAnual, form, cb_InstituicaoEnsino) {
   var DtHoje           = new Date();
   var Dia              = DtHoje.getDate();
   var Semana           = DtHoje.getDay() + 1;
   var Mes              = DtHoje.getMonth() + 1;
   var Ano              = DtHoje.getYear();
   var Hora             = DtHoje.getHours();
   var Minuto           = DtHoje.getMinutes();
   var Segundo          = DtHoje.getSeconds();


   if (navigator.appVersion.indexOf('MSIE') < 0) {
      Ano += 1900;
   }
   
   if (IdSemestralAnual == null) {
      // transforma em anual
      IdSemestralAnual = 1;
   }

   if (IdTipo == 1) {
      // somente o ano
      DataHoje = Ano;
   }
   else {
      if (IdTipo == 2 || IdTipo == 5 || IdTipo == 6) {
         if (IdTipo == 5) {
            if (Mes >= 10) {
//               Ano ++;
            }
            
            if (form != null && cb_InstituicaoEnsino != null) {
               var AnoAux = Ano;
               var txt_CdAnoExercicioMatricula = 'txt_CdAnoExercicioMatricula' + eval('form.' + cb_InstituicaoEnsino + '.value');
               try {AnoAux = eval ('form.' + txt_CdAnoExercicioMatricula + '.value')} catch (e) {AnoAux = Ano};
               Ano = AnoAux;
            }
            
            DataHoje = Ano;
            if (IdSemestralAnual == 2) {
               if ( Ano > DtHoje.getYear()) {
                     DataHoje += '1';
               } else {
                 DataHoje += f_SemestreAtual ();
               }
            }
            
         }
         else {
            if (Dia <= 9) {
               Dia = '0' + Dia;               
            }
            if (Mes <= 9) {
               Mes = '0' + Mes;               
            }
            
            DataHoje = Dia + '/' + Mes + '/' + Ano;
            if (IdTipo == 6) {
               if (Hora <= 9) {
                  Hora = '0' + Hora;               
               }
               if (Minuto <= 9) {
                  Minuto = '0' + Minuto;               
               }
               if (Segundo <= 9) {
                  Segundo = '0' + Segundo;               
               }
            
               DataHoje += ' ' + Hora + ":" + Minuto + ":" + Segundo;
            }
         }
      }
      else {
         if (IdTipo == 3) {
            if (Hora <= 9) {
               Hora = '0' + Hora;               
            }
            if (Minuto <= 9) {
               Minuto = '0' + Minuto;               
            }
               
            DataHoje = Hora + ":" + Minuto;
         }
         else {
            if (IdTipo == 4) {
               DataHoje = Semana;
            }
            else {
               DataHoje = "";
            }
         }
      }
   }

   return (DataHoje);
}


function f_SetaCookie (NmCookie, Valor) {
    document.cookie =  NmCookie + "=" + Valor;
}

function f_LeCookie (NmCookie) {
   if (document.cookie == '') {
      return (null);
   }
   
   VetCookie = document.cookie.split ("; ");
   for (var i = 0; i <= (VetCookie.length - 1); i++) {
      if (NmCookie == VetCookie[i].split("=")[0]) {
         return (VetCookie[i].split("=")[1]);
      }
   }

   return (null);
}

function round(number, X) {
    // arredonda number para X casas decimais, o defaults é para 2
    X = ((!X && X != 0) ? 2 : X);
    return (Math.round(number*Math.pow(10,X))/Math.pow(10,X));
}


function f_MarcarLinha (form, NrLinha, TodosCampos){
    if (TodosCampos == true) {
        for (var i = 0; i <= form.elements.length - 1; i++) {
            form.elements[i].style.backgroundColor="#eeeaff";
        }
    }
    else {
        // achar o primeiro campo da primeira linha
        NrCampoIni = -1;
        for (var i = 0; i <= form.elements.length - 1; i++) {
            if (!isNaN ((form.elements[i].name.substring (form.elements[i].name.length - 1, form.elements[i].name.length))) && (form.elements[i].type != "hidden" || form.elements[i].className != '')) {
                NrCampoIni = i;
                break;
            }
        }
        if (NrCampoIni != -1 ) {
            //pega o número da linha 
            DsNrLinhaCampoAux = '';
            for (var j = form.elements[NrCampoIni].name.length - 1; j >= 0; j--) {
                if (!isNaN ((form.elements[NrCampoIni].name.substring (j, j + 1)))) {
                    DsNrLinhaCampoAux = form.elements[NrCampoIni].name.substring (j, j + 1) + DsNrLinhaCampoAux;
                }
                else {
                    break;
                }
            }
            
            if (DsNrLinhaCampoAux != '') {
                //verifica quantos campos tem esta linha
                NrCampoLinha = 0
                
                for (var i = NrCampoIni; i <= form.elements.length - 1; i++) {
                    DsNrLinha = '';
                    for (var j = form.elements[i].name.length - 1; j >= 0; j--) {
                        if (!isNaN ((form.elements[i].name.substring (j, j + 1)))) {
                            DsNrLinha = form.elements[i].name.substring (j, j + 1) + DsNrLinha;
                        }
                        else {
                            break;
                        }
                    }
                    
                    if (DsNrLinha == DsNrLinhaCampoAux || (form.elements[i].name.substring (0, 3) == 'rb_' && form.elements[i].name.substring (form.elements[i].name.length - 1, form.elements[i].name.length) == '0')) {
                        NrCampoLinha ++;
                    }
                    else {
                        break;
                    }
                }
                
                if (NrCampoLinha > 0) {
                    //com a quantidade de campos de uma linha, pular até
                    //chagar na linha em questão
                    NrCampoIni = NrCampoIni + ((NrLinha - 1) * NrCampoLinha)
                    NrCampoFim = NrCampoIni + NrCampoLinha - 1; 

                    for (var i = NrCampoIni; i <= NrCampoFim; i++) {
                        form.elements[i].style.backgroundColor = "#eeeaff";
                    }
                }
            }
        }
    }
}


function f_DesmarcarLinha (form, NrLinha, TodosCampos){
    if (TodosCampos == true) {
        for (var i = 0; i <= form.elements.length - 1; i++) {
            CorFundoOriginal = form.elements[i].className;
            CorFundoOriginal = CorFundoOriginal.toLowerCase();
            if (CorFundoOriginal.indexOf ('readonly') >= 0) {
                CorFundoOriginal = '#cccccc';
            }
            else {
                CorFundoOriginal = '#FFFFFF';
            }
            form.elements[i].style.backgroundColor = CorFundoOriginal;
        }
    }
    else {
        // achar o primeiro campo da primeira linha
        NrCampoIni = -1;
        for (var i = 0; i <= form.elements.length - 1; i++) {
            if (!isNaN ((form.elements[i].name.substring (form.elements[i].name.length - 1, form.elements[i].name.length))) && (form.elements[i].type != "hidden" || form.elements[i].className != '')) {
                NrCampoIni = i;
                break;
            }
        }
        if (NrCampoIni != -1 ) {
            //pega o número da linha 
            DsNrLinhaCampoAux = '';
            for (var j = form.elements[NrCampoIni].name.length - 1; j >= 0; j--) {
                if (!isNaN ((form.elements[NrCampoIni].name.substring (j, j + 1)))) {
                    DsNrLinhaCampoAux = form.elements[NrCampoIni].name.substring (j, j + 1) + DsNrLinhaCampoAux;
                }
                else {
                    break;
                }
            }
            
            if (DsNrLinhaCampoAux != '') {
                //verifica quantos campos tem esta linha
                NrCampoLinha = 0
                for (var i = NrCampoIni; i <= form.elements.length - 1; i++) {
                    DsNrLinha = '';
                    for (var j = form.elements[i].name.length - 1; j >= 0; j--) {
                        if (!isNaN ((form.elements[i].name.substring (j, j + 1)))) {
                            DsNrLinha = form.elements[i].name.substring (j, j + 1) + DsNrLinha;
                        }
                        else {
                            break;
                        }
                    }
                    
                    if (DsNrLinha == DsNrLinhaCampoAux || (form.elements[i].name.substring (0, 3) == 'rb_' && form.elements[i].name.substring (form.elements[i].name.length - 1, form.elements[i].name.length) == '0')) {
                        NrCampoLinha ++;
                    }
                    else {
                        break;
                    }
                }
                
                if (NrCampoLinha > 0) {
                    //com a quantidade de campos de uma linha, pular até
                    //chagar na linha em questão
                    NrCampoIni = NrCampoIni + ((NrLinha - 1) * NrCampoLinha)
                    NrCampoFim = NrCampoIni + NrCampoLinha - 1; 

                    for (var i = NrCampoIni; i <= NrCampoFim; i++) {
                        CorFundoOriginal = form.elements[i].className;
                        CorFundoOriginal = CorFundoOriginal.toLowerCase();
                        if (CorFundoOriginal.indexOf ('readonly') >= 0) {
                            CorFundoOriginal = '#cccccc';
                        }
                        else {
                            CorFundoOriginal = '#FFFFFF';
                        }
                        form.elements[i].style.backgroundColor = CorFundoOriginal;
                    }
                }
            }
        }
    }
}


function f_TornaInvisivelCampo (form, campo, TodosCampos){
   if (TodosCampos == true) {
      for (var i = 0; i <= form.elements.length - 1; i++) {
         form.elements[i].style.visibility="hidden";
      }
   }
   else {
        eval('document.' + form.name+'.'+campo+'.style.visibility="hidden"');
   }
}


function f_TornaVisivelCampo (form, campo, TodosCampos){
   if (TodosCampos == true) {
      for (var i = 0; i <= form.elements.length - 1; i++) {
         form.elements[i].style.visibility="visible";
      }
   }
   else {
        eval('document.' + form.name+'.'+campo+'.style.visibility="visible"');
   }
}


function f_HabilitaCampo (form, campo, TodosCampos){
   if (TodosCampos == true) {
      for (var i = 0; i <= form.elements.length - 1; i++) {
         if (form.elements[i].type != "hidden" && form.elements[i].type != "button") {
             form.elements[i].disabled = false;
             form.elements[i].style.backgroundColor = "#FFFFFF";
         }
      }
   }
   else {
        eval('document.'+form.name+'.'+campo+'.disabled = false');
        eval('document.'+form.name+'.'+campo+'.style.backgroundColor = "#FFFFFF"');   
   }
}


function f_DesabilitaCampo (form, campo, TodosCampos){
   if (TodosCampos == true) {
      for (var i = 0; i <= form.elements.length - 1; i++) {
         if (form.elements[i].type != "hidden" && form.elements[i].type != "button") {
             form.elements[i].disabled = true;
             form.elements[i].style.backgroundColor = "#CCCCCC";
         }
      }
   } else {
        eval('document.'+form.name+'.'+campo+'.disabled = true');
        eval('document.'+form.name+'.'+campo+'.style.backgroundColor = "#CCCCCC"');   
   }
}


function f_HabilitaTag(nmTag, id) {
    habilitaTag(nmTag, id);
}


function f_DesabilitaTag(nmTag, id){
    desabilitaTag(nmTag, id);
}


function f_Maiusculo (param){
    param = param.toUpperCase();
    return (param);
}


function f_IsNumber(valor){
  return (isNumber(valor, "Valor Inválido - Só é permitido NÚMEROS"));
}


function f_IsCaracterValido(valor){
  if (valor.indexOf('>', 0) >= 0) {
    alert ("O Caracter '>' (sinal de maior) é Inválido");
    return ('');
  } if (valor.indexOf('<', 0) >= 0) {
    alert ("O Caracter '<' (sinal de menor) é Inválido");
    return ('');
  } if (valor.indexOf('"', 0) >= 0) {
    alert ('O Caracter " (aspas duplas) é Inválido');
    return ('');
  } if (valor.indexOf("'", 0) >= 0) {
    alert ("O Caracter ' (aspas simples) é Inválido");
    return ('');
  }
  else {
    return (valor)
  }
}


function f_IsPercentualValido(valor, tipo){
  var vr = FiltraCampo(valor);

  if (f_IsNumber(vr) == "") {
     return ('');
  }

  if (tipo == null) {
     tipo = 1;
  }
 
  valor = f_FormataValor(valor);
  if (valor != "") {
     vr = f_TrocaCaracter(valor, ",", "");
     vr = f_TrocaCaracter(vr, "-", "");
     vr = new Number (vr);

     if (vr > 100.00) {
        alert ('O Percentual não pode ser maior do que 100.00%');
        return ('');
     }

     if (tipo == 1) {
        // só permite valores positivos
        if (valor.indexOf('-', 0) >= 0) {
           alert ('Somente é permitido Percentual positivo');
           return ('');
        }
     }
     else {
         if (tipo == 2) {
            // só permite valores negativos
            if (valor.indexOf('-', 0) < 0) {
               alert ('Somente é permitido Percentual negativo');
               return ('');
            }
         }
     }
  }

  return (valor); 
}


function f_IsAnoValido(valor){
  var vr = FiltraCampo(valor);

  if (f_IsNumber(vr) == "") {
     return ('');
  }

  if (vr.length > 5) {
    alert ("Ano Inválido, somente é permitido anos entre 1960 e 2050");
    return ('');
  }
  else {
     if (vr.length == 5) {
        var NrSemestre = vr.substring (4, 5);
        if (NrSemestre != "1" && NrSemestre != "2") {
            alert ("Semestre Inválido, somente é permito semestre 1 ou 2");
            return ('');
        }
     }
     vr = vr.substring (0, 4);
  }

  vr = new Number (vr);
  if (vr < 1960 || vr > 2050) {
    alert ("Ano Inválido, somente é permitido anos entre 1960 e 2050");
    return ('');
  }

  return (valor);
}


function f_FormataIP(NrIP, ComPontos){
   var NrIpRetorno = "";
   var NrIpParte   = "";
   var NrInicio    = 0;
   var NrFim       = 0;
   
   NrFim = NrIP.indexOf(".", 0);
   if (NrFim < 0) {
       if (ComPontos == true) {
           NrIP = f_FormataValorMascara(NrIP, "000.000.000.000", "NUMERIC");
       }

       return (NrIP);
   }
   
   while (NrFim >= 0) {
       NrIpParte    = NrIP.substring (NrInicio, NrFim);
       NrIpRetorno += f_FormataValorMascara(NrIpParte, "000", "NUMERIC");

       NrInicio = NrFim + 1;
       NrFim    = NrIP.indexOf(".", NrInicio);
   }

   NrIpParte    = NrIP.substring (NrInicio, NrIP.length);
   NrIpRetorno += f_FormataValorMascara(NrIpParte, "000", "NUMERIC");

   if (ComPontos == true) {
       NrIpRetorno = f_FormataValorMascara(NrIpRetorno, "000.000.000.000", "NUMERIC");
   }
   
   return (NrIpRetorno);
}


function f_FormataValorMascara(Campo, Mascara, Tipo){
      Campo      = FiltraCampo(Campo);
  var TamCampo   = Campo.length;  
  var TamMascara = Mascara.length;
  

  if (TamCampo == 0) {
      return (Campo);
  }
  
  if (TamMascara <= 0) {
    alert ("É obrigatório o campo possuir uma máscara");
    retorno = "" ;
    return (retorno);
  }
  
  if (isNaN(Campo)) {
    alert ("Valor Inválido - Só é permitido NÚMEROS");
    Retorno = "" ;
    return (Retorno);
  }

  Retorno = '';
  for (i = 0; i < (TamMascara - TamCampo); i++) {
      Retorno += 'b';
  }
  
  if (Tipo.toUpperCase() == 'STRING') {
      Campo    = Campo + Retorno;
      TamCampo = Campo.length;
      
      k = 0;
      i = 0;
      while (i < TamCampo) {
          Caracter = Campo.substring(i, i + 1);
          if (Mascara.substring(k, k + 1) == "/" || Mascara.substring(k, k + 1) == "-" || Mascara.substring(k, k + 1) == "."  || Mascara.substring(k, k + 1) == ","  || Mascara.substring(k, k + 1) == ":" ){
             k ++;
          }
          else {
             if (Caracter == 'b') {
                if (Mascara.substring(k, k + 1) != '#') {
                   Caracter = Mascara.substring(k, k + 1);
                }
             }

             Parte1 = Mascara.substring(0, k);
             if (Parte1 == null) {
                Parte1 = '';
             }

             Parte2 = Mascara.substring(k + 1, Mascara.length);
             if (Parte2 == null) {
                Parte2 = '';
             }

             if (Caracter == null) {
                Caracter = '';
             }
  
             if (Parte1 != '' || Caracter != '' || Parte2 != '') {
                Mascara = Parte1 + Caracter + Parte2;
             }

             i ++;
             k ++;
          }
      }
      
      TamMascara = Mascara.length;
      Retorno    = '';
      for (var i = 0; i < TamMascara; i++) {
          if (Mascara.substring(i, i + 1) != 'b') {
              if (Mascara.substring(i, i + 1) == "/" || Mascara.substring(i, i + 1) == "-" || Mascara.substring(i, i + 1) == "." || Mascara.substring(i, i + 1) == "," || Mascara.substring(i, i + 1) == ":"){
                  if (Mascara.substring(i + 1, i + 2) != 'b') {
                      Retorno += Mascara.substring(i, i + 1);
                  }
              }
              else {
                  Retorno += Mascara.substring(i, i + 1);
              }
          }    
      }  
  }
  else {
      Campo    = Retorno + Campo;
      TamCampo = Campo.length;
      
      k = TamCampo - 1;
      i = TamCampo - 1;

      while (i >= 0) {
          Caracter = Campo.substring(i, i + 1);

          if (Mascara.substring(k, k + 1) == "/" || Mascara.substring(k, k + 1) == "-" || Mascara.substring(k, k + 1) == "." || Mascara.substring(k, k + 1) == "," || Mascara.substring(k, k + 1) == ":"){
             k --;
          }
          else {
             if (Caracter == 'b') {
                if (Mascara.substring(k, k + 1) != '#') {
                   Caracter = Mascara.substring(k, k + 1);
                }
             }

             Parte1 = Mascara.substring(0, k);
             if (Parte1 == null) {
                Parte1 = '';
             }

             Parte2 = Mascara.substring(k + 1, Mascara.length);
             if (Parte2 == null) {
                Parte2 = '';
             }

             if (Caracter == null) {
                Caracter = '';
             }
  
             if (Parte1 != '' || Caracter != '' || Parte2 != '') {
                Mascara = Parte1 + Caracter + Parte2;
             }

             i --;
             k --;
          }
      }

      TamMascara = Mascara.length;
      Retorno    = '';
      for (var i = 0; i < TamMascara; i++) {
          if (Mascara.substring(i, i + 1) != 'b') {
              if (Mascara.substring(i, i + 1) == "/" || Mascara.substring(i, i + 1) == "-" || Mascara.substring(i, i + 1) == "." || Mascara.substring(i, i + 1) == "," || Mascara.substring(i, i + 1) == ":"){
                  if (Mascara.substring(i - 1, i) != 'b') {
                      Retorno += Mascara.substring(i, i + 1);
                  }
              }
              else {
                  Retorno += Mascara.substring(i, i + 1);
              }
          }    
      }  
  }     
  return (Retorno);
}

function f_ColocaCasasDecimais(Campo, NumCasas) {
  CasaDecimal = 0;
  Posicao     = Campo.indexOf(',', 0);
  if (Posicao < 0) {
     Posicao = Campo.indexOf('.', 0);  
  }
  if (Posicao >= 0) {
     CasaDecimal = Campo.length - Posicao - 1;
  }

  if (NumCasas == CasaDecimal) {
     return (Campo);
  }
  else {
     if (CasaDecimal < NumCasas) {
        for (var i = 1; i <= (NumCasas - CasaDecimal); i++) {
           Campo += '0';
        }
     }
     else {
        Campo = Campo.substring (0, Campo.length - (CasaDecimal - NumCasas));
     }
  }
  return (Campo);
}

function f_FormataData(campo, Ano, EmiteMsg){
  if (campo == '') {
    return ('');
  }
  
  if (Ano != null) {
    campo += '/' + Ano;
  }
  if (EmiteMsg == null) {
    EmiteMsg = true;
  }


  posicao = campo.indexOf("/", 0);
  if (posicao == 1) {
     campo = '0' + campo;
  }
  
  posicao = campo.indexOf("/", posicao + 2);
  if (posicao == 4) {
     campo = campo.substring (0, 3) + '0' + campo.substring (3, campo.length);
  }
  
  vr = FiltraCampo(campo);
  tam = vr.length;

  if (tam == 0) {
    retorno = "" ;
    return (retorno);
  }

  if (isNaN(vr)) {
    if (EmiteMsg == true) {
        alert ("Data Inválida - Só é permitido NÚMEROS");
    }
    retorno = "" ;
    return (retorno);
  }
  
  if ( tam > 2 && tam < 5 )
      retorno = vr.substring( 0, tam - 2  ) + '/' + vr.substring( tam - 2, tam );
  if ( tam >= 5 && tam <= 10 ) 
      retorno = vr.substring( 0, 2 ) + '/' + vr.substring( 2, 4 ) + '/' + vr.substring( 4, 10 ); 

  if (!f_ValidaData (retorno)) {
     if (EmiteMsg == true) {
        alert ('Data Inválida');
     }
     retorno = "";
  }
  
  if (Ano != null && retorno != '') {
    retorno = retorno.substring (0, retorno.length - 5);
  }
  
  return (retorno);
}

function f_ValidaData(data) {
   if (data.length != 10) {
      return (false);
   }

   pos0 = data.indexOf("/");
   if (pos0 == -1) {
      return (false);
   }

   pos1 = data.indexOf("/", pos0 + 1);
   if (pos1 == -1) {
      return (false);
   }
   if (data.indexOf("/", pos1 + 1) != -1) {
      return (false);
   }

   dia = data.substring(0,pos0);
   dia = (dia.charAt(0) == "0")?dia.charAt(dia.length - 1):dia
   mes = data.substring(pos0 + 1, pos1);
   mes = (mes.charAt(0) == "0")?mes.charAt(mes.length - 1):mes
   ano = data.substring(pos1 + 1, data.length);
   ano = (ano.charAt(0) == "0")?ano.charAt(ano.length - 1):ano
   
   if (isNaN(dia) || isNaN(mes) || isNaN(ano)) {
      return (false);
   }

   if (mes <= 0 || mes >= 13) {
      return (false);
   }

   numero = (parseInt(ano) % 4);
   
   if (numero == 0) {
      dias = "312931303130313130313031";
   }
   else {
      dias = "312831303130313130313031";
   }

   diamax = parseInt(dias.substring((mes-1)*2,((mes-1)*2)+2));
   if(parseInt(dia) < 1 || parseInt(dia) > diamax) {
      return (false);
   }
   
   return (true);
}

function f_FormataHora(campo){
  posicao = campo.indexOf(":", 0);
  if (posicao == 1) {
     campo = '0' + campo;
  }
  
  posicao = campo.indexOf(":", posicao + 2);
  if (posicao == 4) {
     campo = campo.substring (0, 3) + '0' + campo.substring (3, campo.length);
  }
  
    vr = FiltraCampo(campo);
    tam = vr.length;

  if (tam == 0) {
    retorno = "" ;
    return (retorno);
  }

  if (tam != 6) {
    alert ("Hora Inválida");
    retorno = "" ;
    return (retorno);
  }
  
  if (isNaN(vr)) {
    alert ("Hora Inválida - Só é permitido NÚMEROS");
    retorno = "" ;
    return (retorno);
  }

  Hora    = vr.substring( 0, 2 );
  Minuto  = vr.substring( 2, 2 );
  Segundo = vr.substring( 4, 2 ); 
  
  if (parseInt(Hora) < 0 || parseInt(Hora) > 24) {
    alert ("Hora Inválida");
    retorno = "" ;
    return (retorno);
  }
  if (parseInt(Minuto) < 0 || parseInt(Minuto) > 59) {
    alert ("Minuto Inválida");
    retorno = "" ;
    return (retorno);
  }
  if (parseInt(Segundo) < 0 || parseInt(Segundo) > 59) {
    alert ("Segundo Inválida");
    retorno = "" ;
    return (retorno);
  }
  
    retorno = Hora + ':' + Minuto + ':' + Segundo;
  
  return (retorno);
}

function f_FormataValor(campo, NrCasas) {
    if ( campo == '' ) {
       return(campo);
    }
    
    casadecimal = 0;
    if ( NrCasas == 0 || NrCasas == undefined) {
        NrCasas  = 2 ;
    }
    
    // tirar os zeros da frente dos números, ex.: 089.79
    for (var i = 0; i <= campo.length - 2; i ++) {
       if (campo.substring (i, i + 1) != "0" || campo.substring (i + 1, i + 2) == "." || campo.substring (i + 1, i + 2) == ",") {
          break;
       }
    }
    campo = campo.substring (i, campo.length);

    posicao     = campo.indexOf('.', 0);
    PosNeg      = campo.indexOf('-', 0);

    if (posicao < 0) {
        if ((campo.length - 1) - campo.indexOf(',', 0) <= 2) {
            posicao = campo.indexOf(',', 0);
        }
    }

    if (posicao >= 0) {
        casadecimal = campo.length - posicao - 1;
    }
    
    if (casadecimal > NrCasas) {
        campo = campo.substring (0, posicao + NrCasas + 1);
    }
    
    // completando  com zeros a direita, para o NRo decasas decimais ficar de acordo com o parametro 
    if ( casadecimal == 0 && NrCasas > 0 )  {
        campo = campo + '.'
    }

    for (var i = (casadecimal+1); i <= NrCasas; i ++) {
       campo = campo + '0';
    }
    vr  = FiltraCampo(campo);
    tam = vr.length;  
    
    if (isNaN(vr)) {
        alert ("Valor Inválido - Só é permitido NÚMEROS");
        retorno = "" ;
        return (retorno);
    }

    if (tam == 0) {
        retorno = vr; 
    } 
    else {
        vrAux = vr;
        // retira os zeros da frente, pois 089 (ref. ao número digitado 0.89) o parseInt transforma para 0
        for (var i = 0; i <= vr.length - 1; i ++) {
           if (vr.substring (i, i + 1) != "0") {
              vrAux = vr.substring (i, vr.length);
              break;
           }
        }
        if (parseInt (vrAux) == 0) {
            return ('0.00');
        }
    }

    VrAux = "";
    Contador = 1;

    for (var i = vr.length ; i > 0; i --) {
        VrAux = vr.substring( i-1, i )+VrAux ;

        if ( Contador == 103 && i > 1) { 
           VrAux = ","+VrAux;
           Contador = 100;
        }

        if (Contador == NrCasas) { 
           VrAux = "."+VrAux;
           Contador = 100;
        }
        Contador++;
    }
    retorno = VrAux;
     
    if (PosNeg == 0) {
        // é um número negativo, portanto deverá ser acrescido o '-'
        retorno = '-' + retorno;
    }

    return (retorno);
}



function f_FormataNumero(ConteudoCampo){
   if (((event.keyCode) > 47) && ((event.keyCode) < 58)){
      NumDig   = ConteudoCampo.value;
      TamDig   = NumDig.length;
      Contador = 0;
      
      if (TamDig > 1) {
         numer = "";
         for (i = TamDig; (i >= 0); i--){
            if ((parseInt(NumDig.substring(i,1)) >=0 ) && (parseInt(NumDig.substring(i, 1)) <= 9)) {
               Contador++;
               if ((Contador == 2) && ((TamDig -i) < 4)) {
                  numer    = "," + numer;
                  Contador = 0;
               }
               else {
                  if (Contador == 3) {
                     numer    = "." + numer;
                     Contador = 0;
                  }
                  numer = NumDig.substring(i, 1)+numer;
               }
            }
         }
         ConteudoCampo.value = numer;
      }     
      return(true)
   }
   else  {
       return(false)
   }
}

function FiltraCampo(campo){
    var s = "";
    var cp = "";
    vr = campo;
    tam = vr.length;
    for (var i = 0; i < tam ; i++) {  
        if (vr.substring(i, i + 1) != "/" && vr.substring(i, i + 1) != "-" && vr.substring(i, i + 1) != "." && vr.substring(i, i + 1) != "," && vr.substring(i, i + 1) != ":"){
            s = s + vr.substring(i,i + 1);}
    }
    ;
  retorno = s;
  return (retorno);
}


function f_FormataCep(campo){
    vr = FiltraCampo(campo);
    tam = vr.length;
  if (isNaN(vr)) {
    alert ("CEP Inválido - Só é permitido NÚMEROS");
    retorno = "" ;
    return (retorno);
  }

  if (vr.length == 0) {
    return ""
  }

  if (tam > 8){
    alert ("CEP Inválido");
    retorno = "";
  }
    if ( tam >= 1 && tam <= 8 ) 
      vr = '00000000'+vr;
        tam = vr.length;
      vr = vr.substring((tam-8),tam);
        retorno = vr.substring( 0, 5 ) + '-' + vr.substring( 5, vr.length ) ;
    return (retorno);
}

function f_TrocaCaracter(Campo, CaracterDe, CaracterPor){
   var Retorno = '';
   var Tamanho = Campo.length;
   
   for (var i = 0; i < Tamanho ; i++) {  
      if (Campo.substring(i, i + 1) == CaracterDe){
         Retorno = Retorno + CaracterPor;
      }
      else {
         Retorno = Retorno + Campo.substring(i, i + 1);
      }
   }

  return (Retorno);
}

function f_ChecaCNPJ(CNPJ) {

    var dig1=0;
    var dig2=0;
    var x;
    var Mult1 = '543298765432';
    var Mult2 = '6543298765432';
    
    for(x=0; x<=11; x++) {
        dig1 = dig1 +(parseInt(CNPJ.slice(x,x+1)) * parseInt(Mult1.slice(x,x+1)));
    }
    for(x=0; x<=12; x++) {
        dig2 = dig2 + (parseInt(CNPJ.slice(x, x+1)) * parseInt(Mult2.slice(x,x+1)));
        }   
    
    dig1 = (dig1 * 10)%11;
    dig2 = (dig2 * 10)%11;
    
    if (dig1 == 10) {dig1 = 0;}
    if (dig2 == 10) {dig2 = 0;}
    
    if (dig1 != parseInt(CNPJ.slice(12, 13))) {
        alert("CNPJ Invalido");
        return (false);
    } else {
        if (dig2 != parseInt(CNPJ.slice(13, 14))) {
            alert("CNPJ Invalido");
            return (false);
        } else {
            return (true);
        }
    }
}

function f_ChecaCPF (CPF) {
   CPF = FiltraCampo(CPF);
   if (CPF == '') {
      return (true);
   }
   
   if (CPF.length != 11            || CPF == "00000000000" || CPF == "11111111111" ||
       CPF        == "22222222222" || CPF == "33333333333" || CPF == "44444444444" ||
       CPF        == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||
       CPF        == "88888888888" || CPF == "99999999999") {

      alert ("CPF inválido");
      return (false);
   }

   soma = 0;
   for (var 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))) {
      alert ("CPF inválido");
      return (false);
   }
   soma = 0;
   for (var 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))) {
      alert ("CPF inválido");
      return (false);
   }

   return (true);
 }
function f_ChecaCPFCNPJ(CPFCNPJ) {

    if (CPFCNPJ.length == 14) {
        return f_ChecaCNPJ(CPFCNPJ);
    } else {
        return f_ChecaCPF(CPFCNPJ); 
    }
}
function f_TrocaString(Campo, CaracterDe, CaracterPor){
   var Retorno = '';
   var Tamanho = Campo.length;
   var Conteudo = Campo
   var Posicao = 0
   var TamanhoCaracterDe = CaracterDe.length

   Posicao = Conteudo.indexOf(CaracterDe, 0)

   var Anterior = Conteudo.substring(0,Posicao)
   var Posterior = Conteudo.substring((Posicao+TamanhoCaracterDe),Conteudo.length)
   Retorno = Anterior + CaracterPor + Posterior
  return (Retorno);
}


function f_LimpaDropDown(form, NmDropDown) {
   for (var i = eval ('form.' + NmDropDown + '.options.length') - 1; i >= 0; i--) {
      eval ('form.' + NmDropDown + '.options[i] = null');
   }
}

function f_CopiaItemDropDown(DropDownOrigem, DropDownDestino, IdSelecionada) {
  // IdSelecionada = 1 - Copiar apenas a linha selecionada / 0 - Copiar todas as linhas
   var i         = 0;
   var k         = DropDownDestino.length;
   var NovaOpcao = "";

   // fazendo de baixo para cima para que a ultima fique selecionada como default
   i = 0;
   while ((DropDownOrigem.length - 1) >= i) {
      if ( IdSelecionada == 1 ) {      
          if (DropDownOrigem.options[i].selected) {
             NovaOpcao = new Option(DropDownOrigem.options[i].text, DropDownOrigem.options[i].value);
             DropDownDestino.options[k] = NovaOpcao;
             k ++;
          }
     } 
     else {
         NovaOpcao = new Option(DropDownOrigem.options[i].text, DropDownOrigem.options[i].value);
         DropDownDestino.options[k] = NovaOpcao;
         k ++;

     }

      i++;
   }
}

function f_moveItemDropDown(DropDownOrigem, DropDownDestino) {
   var i         = 0;
   var k         = DropDownDestino.length;
   var NovaOpcao = "";


   i = DropDownOrigem.length - 1;
   while (i >= 0) {
      if (DropDownOrigem.options[i].selected) {
         NovaOpcao = new Option(DropDownOrigem.options[i].text, DropDownOrigem.options[i].value);
         DropDownDestino.options[k] = NovaOpcao;
         DropDownOrigem.remove(i);
         k ++;
      }

      i --;
   }
}


function f_MontaDropDownRegional(form, cb_CdRegional, cb_InstituicaoEnsino, CdOrgaoRegulador) {
   var Tamanho        = form.txt_TamanhoLinhas.value;
   var CdOrgao        = 0;
   var CdRegional     = 0;
   var CdRegionalOld  = 0;
   var NmRegional     = '';
   var CdInstituicao  = 0;
   var Texto          = '';
   var TamCodigo      = 0;
   var Posicao        = 0;
   var k              = 0;


   f_LimpaDropDown(form, cb_CdRegional);

   NovaOpcao = new Option();
   eval ('form.' + cb_CdRegional + '.options[0]= NovaOpcao');
      
   if (cb_InstituicaoEnsino != '') {
       f_LimpaDropDown(form, cb_InstituicaoEnsino);

       NovaOpcao = new Option();
       eval ('form.' + cb_InstituicaoEnsino + '.options[0]= NovaOpcao');
   }
   
   NovaOpcao = new Option();
   eval ('form.' + cb_CdRegional + '.options[k]= NovaOpcao');
   k++;
      
   for (var i = 1; i <= Tamanho; i++) {
      Posicao       = 0;
      Texto         = eval ('form.txt_DsTexto' + i + '.value');
      TamCodigo     = Texto.indexOf('|', Posicao);
      CdOrgao       = Texto.substring (Posicao, TamCodigo);
      
      if (CdOrgaoRegulador == CdOrgao) {
         Posicao       = TamCodigo + 1;
         TamCodigo     = Texto.indexOf('|', Posicao);
         CdRegional    = Texto.substring (Posicao, TamCodigo);
            
         if (CdRegional != CdRegionalOld) {
            Posicao       = TamCodigo + 1;
            TamCodigo     = Texto.indexOf('|', Posicao);
            CdInstituicao = Texto.substring (Posicao, TamCodigo);
       
            Posicao       = TamCodigo + 1;
            TamCodigo     = Texto.indexOf('|', Posicao);
            NmRegional    = Texto.substring (Posicao, TamCodigo);
          
            NovaOpcao = new Option(NmRegional, CdRegional);
            eval ('form.' + cb_CdRegional + '.options[k]= NovaOpcao');
            k++;
               
            CdRegionalOld = CdRegional;
         }
      }
   }
}

function f_MontaDropDownInstituicao(form, cb_InstituicaoEnsino, CdOrgaoRegulador, CdRegional) {
   var Tamanho           = form.txt_TamanhoLinhas.value;
   var CdOrgao           = 0;
   var CdReg             = 0;
   var CdInstituicao     = 0;
   var CdInstituicaoOld  = 0;
   var NmInstituicao     = '';
   var NmRegional        = '';
   var Texto             = '';
   var TamCodigo         = 0;
   var Posicao           = 0;
   var k                 = 0;
      

   for (var i = eval ('form.' + cb_InstituicaoEnsino + '.options.length') - 1; i >= 0; i--) {
     eval ('form.' + cb_InstituicaoEnsino + '.options[i] = null');
   }
   NovaOpcao = new Option();
   eval ('form.' + cb_InstituicaoEnsino + '.options[0]= NovaOpcao');
   
   NovaOpcao = new Option();
   eval ('form.' + cb_InstituicaoEnsino + '.options[k]= NovaOpcao');
   k++;
      
   for (var i = 1; i <= Tamanho; i++) {
      Posicao       = 0;
      Texto         = eval ('form.txt_DsTexto' + i + '.value');
      TamCodigo     = Texto.indexOf('|', Posicao);
      CdOrgao       = Texto.substring (Posicao, TamCodigo);

      if (CdOrgaoRegulador == CdOrgao) {
         Posicao       = TamCodigo + 1;
         TamCodigo     = Texto.indexOf('|', Posicao);
         CdReg         = Texto.substring (Posicao, TamCodigo);
            
         if (CdRegional == CdReg) {
            Posicao       = TamCodigo + 1;
            TamCodigo     = Texto.indexOf('|', Posicao);
            CdInstituicao = Texto.substring (Posicao, TamCodigo);
         
            if (CdInstituicao != CdInstituicaoOld) {
               Posicao       = TamCodigo + 1;
               TamCodigo     = Texto.indexOf('|', Posicao);
               NmRegional    = Texto.substring (Posicao, TamCodigo);
            
               Posicao       = TamCodigo + 1;
               TamCodigo     = Texto.indexOf('|', Posicao);
               NmInstituicao = Texto.substring (Posicao, TamCodigo);
            
               NovaOpcao = new Option(NmInstituicao, CdInstituicao);
               eval ('form.' + cb_InstituicaoEnsino + '.options[k]= NovaOpcao');
               k++;
               
               CdInstituicaoOld = CdInstituicao;
            }
         }
      }
   }
}


function f_SetaSemestralAnualInstituicao (form, cb_CdOrgaoRegulador, cb_CdRegional, cb_InstituicaoEnsino, cb_TipoCurso, txt_Ano, IdTipoData) {
   var IdSemestralAnual  = 1;
   var Tamanho           = form.txt_TamanhoLinhas.value;
   var CdOrgao           = 0;
   var CdReg             = 0;
   var CdInstituicao     = 0;
   var NmInstituicao     = '';
   var NmRegional        = '';
   var Texto             = '';
   var TamCodigo         = 0;
   var Posicao           = 0;
   var k                 = 0;
      

   if (cb_TipoCurso != '' && cb_TipoCurso != null) {
       form.cb_TipoCurso.selectedIndex = 0;
   }
   
   for (var i = 1; i <= Tamanho; i++) {
      Posicao          = 0;
      Texto            = eval ('form.txt_DsTexto' + i + '.value');
      TamCodigo        = Texto.indexOf('|', Posicao);
      CdOrgao          = Texto.substring (Posicao, TamCodigo);

      Posicao          = TamCodigo + 1;
      TamCodigo        = Texto.indexOf('|', Posicao);
      CdReg            = Texto.substring (Posicao, TamCodigo);
            
      Posicao          = TamCodigo + 1;
      TamCodigo        = Texto.indexOf('|', Posicao);
      CdInstituicao    = Texto.substring (Posicao, TamCodigo);
         
      Posicao          = TamCodigo + 1;
      TamCodigo        = Texto.indexOf('|', Posicao);
      NmRegional       = Texto.substring (Posicao, TamCodigo);
            
      Posicao          = TamCodigo + 1;
      TamCodigo        = Texto.indexOf('|', Posicao);
      NmInstituicao    = Texto.substring (Posicao, TamCodigo);
      
      Posicao          = TamCodigo + 1;
      TamCodigo        = Texto.indexOf('|', Posicao);
      IdSemestralAnual = Texto.substring (Posicao, TamCodigo);
      
      if (cb_CdOrgaoRegulador != null && cb_CdOrgaoRegulador != '') {
         if (CdOrgao == form.cb_CdOrgaoRegulador.value && CdReg == form.cb_CdRegional.value && CdInstituicao == form.cb_InstituicaoEnsino.value) {
            i = -1;
            break;
         }
      }
      else {
         if (CdInstituicao == form.cb_InstituicaoEnsino.value) {
            i = -1;
            break;
         }
      }
   }

   if (i == -1) {
      if (IdSemestralAnual == 3) {
         IdSemestralAnual = 2;
      }
      form.txt_IdSemestralAnual.value = IdSemestralAnual;
   }
   f_SetaCampoAno(form, txt_Ano, null, IdTipoData, cb_InstituicaoEnsino);
}


function f_SetaCampoAno(form, txt_Ano, CdTipoCurso, IdTipoData, cb_InstituicaoEnsino) {
   var IdSemestralAnual = 1;
   var StrAno           = '';
   
   if (CdTipoCurso != '' && CdTipoCurso != null) {
      try {IdSemestralAnual = eval ('form.txt_IdSemestralAnualTpCurso' + CdTipoCurso + '.value');} catch (e) {IdSemestralAnual = 1};
   }
   else {
      try {IdSemestralAnual = form.txt_IdSemestralAnual.value;} catch (e) {IdSemestralAnual = 1};
   }
   
   if (cb_InstituicaoEnsino != null) {
      StrAno = f_DataHoje (IdTipoData, IdSemestralAnual, form, cb_InstituicaoEnsino);
   }
   else {
      StrAno = f_DataHoje (IdTipoData, IdSemestralAnual);
   }
   eval ('form.' + txt_Ano + '.value = ' + StrAno);
}

var DsTeclouEnter = '';

function f_TeclouEnter() {
   if (DsTeclouEnter == 'enter') {
      DsTeclouEnter = '';
      return (false);
   }
   else {
      DsTeclouEnter = '';
      return (true);
   }
}

function f_TeclaEnter(pObject, pEvent) {
   // Descricao:  Altera o efeito da acao do "Enter" para a acao do "Tab"
   
   //busca o proximo objeto do formulario
   var lNextElementIndex = f_GetElementIndex(pObject) + 1;
   
   //verifica se a tecla pressionada foi o enter (keyCode = 13)
   if (pEvent.keyCode == 13) {
     //anula a acao do enter
      DsTeclouEnter = 'enter';
      if (navigator.appVersion.indexOf('MSIE') >= 0) {
         pEvent.keyCode = 0;
      }
   
      //caso o proximo elemento não aceite foco pula para o proximo objeto
      while(!f_AcceptFocus(pObject.form[lNextElementIndex]) && ((lNextElementIndex + 1) < pObject.form.length)) {
         lNextElementIndex++
      }
      
      //verifica se nao excedeu a quantidae maxima de objetos do formulario,
      //e verifica se o objeto aceita foco no caso do ultimo elemento
      if ((lNextElementIndex < pObject.form.length) && f_AcceptFocus(pObject.form[lNextElementIndex])) {
         //move o foco para o proximo objeto valido do formulario
         pObject.form[lNextElementIndex].focus();
	     if (pObject.form[lNextElementIndex].type != "select-one") {
         	pObject.form[lNextElementIndex].select();
         }	
      }
   }
}


function f_GetElementIndex(pObject) {
   // Descricao:  Retorna o indice do objeto, varrendo o formulario ate que se encontre o objeto informado
   var lElementIndex
   
   //Retorna a quantidade de objetos do formulario
   var lCountElements = pObject.form.length - 1

   for (i = 0; i <= lCountElements; i++) {
      if (pObject.form[i].name == pObject.name) {
         return (i)
      }
   }
}

function f_AcceptFocus(pObject) {
   // Descricao:  verifica se o objeto aceita foco
  
   var onFocus = "'" + pObject.onfocus + "'";	
   var NmClasse = pObject.className;
   NmClasse = NmClasse.toLowerCase();
   
   if (pObject.type == undefined || pObject.type == "hidden" || pObject.disabled || pObject.style.display == "none" || pObject.readOnly || NmClasse.indexOf ('readonly') >= 0 || onFocus.indexOf('blur()') >= 0) {
      return false
   } 
   else {
      return true
   }
}

function validaEmail(email, obrigatorio) {
    if (email.value != "") {
        var reg1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)");
        var reg2 = new RegExp("[a-zA-Z0-9\\-\\.\\_]+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
        if (reg1.test(email.value) || !(reg2.test(email.value))) {
            alert("Email inválido.");
            if (obrigatorio) {
                email.focus();
                email.select();
            } else {
                email.value = "";
            }
        }
    } else {
        if (obrigatorio) {
            alert("É obrigatório informar o email.");
            email.focus();
        }
    }
}

function f_findObj(n, d) {
     var p,i,x;
     
     if(!d) d=document;
     if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document;
        n=n.substring(0,p);
     }
     if(!(x=d[n])&&d.all) x=d.all[n];
     for(i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
     for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=f_findObj(n,d.layers[i].document);
     if(!x && d.getElementById) x=d.getElementById(n);
     return x;
}

function f_sh_lay() {
    var i
    var p
    var v
    var obj
    var args= arguments;
    for (i=0; i<(args.length-2); i+=3) {
        if ((obj=f_findObj(args[i], document))!=null){
            v=args[i+2];
            if (obj.style){
                obj=obj.style;
                v=(v=='show')?'visible':(v='hide')?'hidden':v;
            }
            obj.visibility=v;
        }
    }
}


function f_chamaManutencao (formato) {
    document.forms[0].txt_acao.value = 'pesquisar';
    document.forms[0].txt_FormatoRelatorio.value = formato;
    document.forms[0].submit();
}

function validaBancoAgenciaConta(campo) {
    var valor = campo.value;
    var reg = new RegExp("[^a-zA-Z0-9\\-\\+]");
    if (valor != '') {
        if (reg.test(valor)) {
            alert("É permitida a digitação apenas de letras números e o caractere \"-\"");
            campo.focus();
            campo.select();
        }
    }
}

function validaNumerico(campo) {
    var valor = campo.value;
    var reg = new RegExp("[^0-9]");
    if (valor != '') {
        if (reg.test(valor)) {
            alert("É permitida a digitação apenas de números.");
            campo.focus();
            campo.select();
        }
    }
}

/**
 * JSP
 * Funções para salvar os valores do form e recarega-los quando necessário  
 */
var CookiePersistence = {
	save : function(key, value, options) {
		if (typeof value == 'undefined') return;

        options = options || {};

        if (value === null) {
            value = '';
            options.expires = -1;
        }

        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString();
        }
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [key, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
	},
	
	load : function(key) {
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = this._trim(cookies[i]);
                if (cookie.substring(0, key.length + 1) == (key + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(key.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
	}, 
	
	_trim : function(text) {
		var rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g;
		return (text || "").replace(rtrim, "");
	}
};

var FormElementValueCodec = {
	getValue : function(element) {
		var elementType = element.type;
		if (elementType == 'password') return '';
		if (elementType == 'checkbox' || elementType == 'radio') return element.checked;
		if (elementType == 'select-one') return element.options.selectedIndex;
		return element.value;
	},
	
	setValue : function(element, value) {
		var elementType = element.type;
		if (elementType == 'password') return;
		else if (elementType == 'checkbox' || elementType == 'radio') element.checked = (value == "true");
		else if (elementType == 'select-one') element.options.selectedIndex = value;
		else element.value = value;
	}
};

var DocumentForms = {
	save : function() {
		this._formsElements(function(form, element) {
			var key = window.location.pathname + "." + form.name + "." + element.name;
			var value = FormElementValueCodec.getValue(element);
			CookiePersistence.save(key, value);
		});
	},
	
	load : function() {
		this._formsElements(function(form, element) {
			var key = window.location.pathname + "." + form.name + "." + element.name;
			var rawvalue = CookiePersistence.load(key);
			if (rawvalue != null) FormElementValueCodec.setValue(element, rawvalue);
		});
	},
	
	_formsElements : function(visitor) {
		if (typeof(visitor) != "function") return;
		
		var t = document.forms.length;
		for (i = 0; i < t; i++) {
			var e = document.forms[i].elements.length;
			var form = document.forms[i];
			for (j = 0; j < e; j++) {
				var element = form.elements[j];
				visitor(form, element);
			}
		}
	}
};


function setFocusElement(nmElement) {
	setTimeout("getElement('" + nmElement + "').focus()", 1);
}

