function SetHelp(txt) {
  help.innerText = txt
}
// função incluída em 20/09/2001
function main(campofoco) 
	{ 
	var i;
	if (document.form.elements.length != 0)
		for (i = 0; i < document.form.elements.length; i++){
		   	if (campofoco == document.form[i].name)
				document.form[campofoco].focus();  }
	}

// Sergio em 05/11/01
function vocacao(coMuni) {
	window.open('GRVocacao.asp?coMunicipio='+coMuni,'Vocação',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=400,height=300");
}
// fim 05/11/01

function objetivo(coMuni,coPri) 
	{
	window.open('GRObjetivo.asp?coMunicipio='+coMuni+'&coPrioridade='+coPri,'Objetivo',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=400,height=300");
	}

function resumo(coMuni,coPri) 
	{
	window.open('GRResumo.asp?coMunicipio='+coMuni+'&coPrioridade='+coPri,'Resumo',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=400,height=300");
	}

//Função para redimensionar o tamanho da janela
function OpenBrWindow(theURL,winName,features, myWidth, myHeight, isCenter) { 
  if(window.screen)if(isCenter)if(isCenter=="true"){
    var myLeft = (screen.width-myWidth)/2;
    var myTop = (screen.height-myHeight)/2;
    features+=(features!='')?',':'';
    features+=',left='+myLeft+',top='+myTop;
  }
  window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
}

// fim da função incluída em 20/09/2001

function atualizador(coOpcao, coParm1, coParm2, coParm3,coParm4) {
  var parm = "coOpcao=" + coOpcao + "&coParm1=" + coParm1 + "&coParm2=" + coParm2 + "&coParm3=" + coParm3
  window.open('GRAtualizador.asp?' + parm ,'Atualizador',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=no,resizable=no,copyhistory=no,width=550,height=270")
}

function contato(coOpcao, coParm1, coParm2, Contato) {
  var parm = "coOpcao=" + coOpcao + "&coParm1=" + coParm1 + "&coParm2=" + coParm2 + "&Contato=" + Contato
  window.open('GRContato.asp?' + parm ,'Contato',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=no,copyhistory=no,width=550,height=300")
}

function funcao() {
  window.open('Funcao.htm','Função',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=no,resizable=no,copyhistory=no,width=500,height=350")
}

function avaliacao() {
  window.open('Avaliacao.htm','Avaliacao',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=no,resizable=no,copyhistory=no,width=500,height=320")
}

function avaliacaoInstituicao() {
  window.open('AvaliacaoInstituicao.htm','Avaliacao',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=no,resizable=no,copyhistory=no,width=500,height=320")
}

function SaltaCampo (campo,prox,tammax,teclapres)
	{
	var tecla = teclapres.keyCode;
	vr = document.form[campo].value;
	if( tecla == 109 || tecla == 189 || tecla == 188 || tecla == 110 || tecla == 111 || tecla == 223 || tecla == 108 ){
		document.form[campo].value = vr.substr( 0, vr.length - 1 ); }
	else{
	 	vr = vr.replace( "-", "" );
	 	vr = vr.replace( "/", "" );
	 	vr = vr.replace( "/", "" );
	 	vr = vr.replace( ",", "" );
	 	vr = vr.replace( ".", "" );
	 	vr = vr.replace( ".", "" );
	 	vr = vr.replace( ".", "" );
	 	vr = vr.replace( ".", "" );
	 	tam = vr.length;	

	 	if (tecla != 0 && tecla != 9 && tecla != 16 )
			if ( tam == tammax )	
				document.form[prox].focus() ;	}
	}


function Ajuda(Campo) {

	if (Campo == 'tx_palavra_chave')   window.open('Ajuda_tx_palavra_chave.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=200,height=180")

	if (Campo == 'txOcupacao')   window.open('Ajuda_tx_ocupacao_pessoa.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=250,height=180")

	if (Campo == 'tx_palavra_chave') {window.open('Ajuda_tx_palavra_chave.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=200,height=180");}

	if (Campo == 'tx_ocupacao_pessoa') {window.open('Ajuda_tx_ocupacao_pessoa.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=250,height=180");}

	if (Campo == 'no_prioridade') {window.open('Ajuda_no_prioridade.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=450,height=200");}

	if (Campo == 'tx_objetivo_prioridade') {window.open('Ajuda_tx_objetivo_prioridade.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=450,height=280");}

	if (Campo == 'tx_resumo_prioridade') {window.open('Ajuda_tx_resumo_prioridade.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=600,height=380");}

	if (Campo == 'no_acao') {window.open('Ajuda_no_acao.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=700,height=490");}

	if (Campo == 'tx_unidade_acao') {window.open('Ajuda_tx_unidade_acao.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=450,height=250");}

	if (Campo == 'qt_meta_acao') {window.open('Ajuda_qt_meta_acao.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=450,height=200");}

	if (Campo == 'no_responsavel_acao') {window.open('Ajuda_no_responsavel_acao.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=450,height=300");}

	if (Campo == 'in_funcao_acao') {window.open('Ajuda_in_funcao_acao.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=450,height=230");}
	// incluído em 02-10-2001 para página de capacitação

    if (Campo == 'tx_inst_executora') {window.open('Ajuda_tx_inst_executora.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=400,height=180");}
	
	if (Campo == 'in_inst_patrocinador') {window.open('Ajuda_in_inst_patrocinador.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=400,height=200");}
	
	if (Campo == 'btn_incluir_acao') {window.open('Ajuda_btn_incluir_acao.htm','Ajuda',"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=200,height=200");}

}

function buscacep() {
  window.open('GRCep.asp','CEP',"toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=no,resizable=no,copyhistory=no,width=400,height=170")
}

function PulaCampo()
{
  if (event.keyCode == 9) return
  var objCampo = event.srcElement
  if (objCampo.value == null) return
  if (objCampo.value.length == objCampo.maxLength) {
    for(var i=0; i < objCampo.form.elements.length; i++)
      if (objCampo.name == objCampo.form.elements[i].name)
        break
    if (i != objCampo.form.elements.length)
      objCampo.form.elements[i+1].focus()
    else
      objCampo.form.elements[0].focus()
  }
}


function PulaCampo2()
{
  if (event.keyCode == 9) return
  var objCampo = event.srcElement
  if (objCampo.value == null) return
  if (objCampo.value.length == objCampo.maxLength) {
    for(var i=0; i < objCampo.form.elements.length; i++)
      if (objCampo.name == objCampo.form.elements[i].name)
        break
    if (i != objCampo.form.elements.length)
      objCampo.form.elements[i+2].focus()
    else
      objCampo.form.elements[0].focus()
  }
}

function DataInv(pData) {
  var aData = pData.split("/")
  return aData[2] + aData[1] + aData[0]
}

function FormataCep() {
  var key = event.keyCode
  if (key == 9 || key == 13)
    return
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey
  if (numKeys) {
    var objCep = event.srcElement
    var objRegExp = /(\.|\-)/g
    var valor = objCep.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 8)
      tam++
    if (tam <= 3)
      objCep.value = valor
    if (tam > 3 && tam <= 6)
	  objCep.value = valor.substr(0, tam-3) + '-' + valor.substr(tam-3, tam)
    if (tam >= 7 && tam <= 8)
      objCep.value = valor.substr(0, tam-6) + '.' + valor.substr(tam-6, 3) + '-' + valor.substr(tam-3, tam)
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataAssunto() {
  var key = event.keyCode;
  
  if (key == 9 || key == 13)
    return;
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey;
  if (numKeys) {
    var objAssunto = event.srcElement
    var objRegExp = /\-/g
    var valor = objAssunto.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 6)
      tam++
	if (tam <= 1)
	  objAssunto.value = valor
	if (tam > 1 && tam <= 6)
	  objAssunto.value = valor.substr(0, tam-1) + '-' + valor.substr(tam-1, tam)
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataOrgao() {
  var key = event.keyCode;
  
  if (key == 9 || key == 13)
    return;
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey;
  if (numKeys) {
    var objOrgao = event.srcElement
    var objRegExp = /(\.|\-)/g
    var valor = objOrgao.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 8)
      tam++
	if (tam <= 1)
	  objOrgao.value = valor
	if (tam > 1 && tam <= 6)
	  objOrgao.value = valor.substr(0, tam-1) + '-' + valor.substr(tam-1, tam)
	if (tam >= 6 && tam <= 8)
	  objOrgao.value = valor.substr(0, tam-6) + '.' + valor.substr(tam-6, 5) + '-' + valor.substr(tam-1, tam)
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataCpf() {
  var key = event.keyCode;
  
  
  if (key == 9 || key == 13)
    return;
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey;
  if (numKeys) {
    var objCpf = event.srcElement
    var objRegExp = /(\.|\-)/g
    var valor = objCpf.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 11)
      tam++
	if (tam <= 2)
	  objCpf.value = valor
	if (tam > 2 && tam <= 5)
	  objCpf.value = valor.substr(0, tam-2) + '-' + valor.substr(tam-2, tam)
	if (tam >= 6 && tam <= 8)
	  objCpf.value = valor.substr(0, tam-5) + '.' + valor.substr(tam-5, 3) + '-' + valor.substr(tam-2, tam)
	if (tam >= 9 && tam <= 11)
	  objCpf.value = valor.substr(0, tam-8) + '.' + valor.substr(tam-8, 3) + '.' + valor.substr(tam-5, 3) + '-' + valor.substr(tam-2, tam)		
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataCNPJ() {
  var key = event.keyCode;
  if (key == 9 || key == 13)
    return;
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey;
  if (numKeys) {
    var objCNPJ = event.srcElement
    var objRegExp = /(\.|\/|\-)/g  
    var valor = objCNPJ.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 14)
      tam++
	if (tam <= 2)
	  objCNPJ.value = valor
	if (tam > 2 && tam <= 5)
	  objCNPJ.value = valor.substr(0, tam-2) + '-' + valor.substr(tam-2, tam)
	if (tam >= 6 && tam <= 9)
	  objCNPJ.value = valor.substr(0, tam-6) + '/' + valor.substr(tam-6, 4) + '-' + valor.substr(tam-2, tam)
	if (tam >= 9 && tam <= 12)
	  objCNPJ.value = valor.substr(0, tam-9) + '.' + valor.substr(tam-9, 3) + '/' + valor.substr(tam-6, 4) + '-' + valor.substr(tam-2, tam)		
	if (tam >= 12 && tam <= 14)
	  objCNPJ.value = valor.substr(0, tam-12) + '.' + valor.substr(tam-12, 3) + '.' + valor.substr(tam-9, 3) + '/' + valor.substr(tam-6, 4) + '-' + valor.substr(tam-2, tam)		
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataData() {
  var key = event.keyCode;
  if (key == 9 || key == 13)
    return;
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey;
  if (numKeys) {
    var objData = event.srcElement
    var objRegExp = /\//g
    var valor = objData.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 8)
      tam++
    if (tam <= 2)
      objData.value = valor
    if (tam > 2 && tam < 5)
	  objData.value = valor.substr(0, tam-2) + '/' + valor.substr(tam-2, tam)
	if (tam >= 5 && tam <= 10)
	  objData.value = valor.substr(0, 2) + '/' + valor.substr(2, 2) + '/' + valor.substr(4, 4)
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataHora() {
  var key = event.keyCode
  if (key == 9 || key == 13)
    return
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey
  if (numKeys) {
    var objHora = event.srcElement
    var objRegExp = /\:/g
    var valor = objHora.value.replace(objRegExp,"")
    var tam = valor.length
    if (tam < 4)
      tam++
    if (tam <= 2)
      objHora.value = valor
	if (tam > 2 && tam <= 4)
	  objHora.value = valor.substr(0, tam-2) + ':' + valor.substr(tam-2, tam)
    return
  }
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!sysKeys)
    event.returnValue = false
}

function FormataNumero() {
  var key = event.keyCode
  if (key == 9 || key == 13)
    return
  var numKeys = ((key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !event.shiftKey && !event.altKey
  var sysKeys = (key == 8 || key == 9 || (key >= 35 && key <= 46))
  if (!numKeys && !sysKeys)
    event.returnValue = false
}

function ValidaBairro(pBairro, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if ((inObri || pBairro.value.length != 0) && pBairro.value.length <= 2) {
    alert('ATENÇÃO !\n\nBairro deve conter mais de 3 caracteres.')
	pBairro.focus()
    return false
  }
  return true
}

function ValidaCargo(pCargo, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if ((inObri || pCargo.value.length != 0) && pCargo.value.length <= 2) {
    alert('ATENÇÃO !\n\nCargo deve conter mais de 3 caracteres.')
	pCargo.focus()
    return false
  }
  return true
}

function ValidaCep(pCep, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if (inObri || pCep.value.length != 0) {
    var objRegExp = /^\d{2}\.\d{3}\-\d{3}$/
    if (!objRegExp.test(pCep.value)) {
      alert ("ATENÇÃO !\n\nCEP deve ter 8 dígitos, no formato nn.nnn-nnn")
	  pCep.focus()
      return false
    }
  }
  return true
}

function ValidaCpf(pCpf, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if (inObri || pCpf.value.length != 0) {
    var objRegExp = /^\d{3}.\d{3}.\d{3}-\d{2}$/
    if (!objRegExp.test(pCpf.value)) {
      alert ("ATENÇÃO !\n\nInforme o cpf no formato nnn.nnn.nnn-nn")
	  pCpf.focus()
      return false
    }
    // separa os dígitos
    objRegExp = /(\.|\-)/g
    var nuCpf = pCpf.value.replace(objRegExp,"")
    // verifica dv
    if (DvCpf(nuCpf.substr(0,9)) != nuCpf.charAt(9) || DvCpf(nuCpf.substr(0,10)) != nuCpf.charAt(10)) {
      alert ("ATENÇÃO !\n\nCpf com dv incorreto.")
	  pCpf.focus()
      return false
    }
  }
  return true
}

function DvCpf(nuCpf) {
  var tam  = nuCpf.length
  var soma = 0
  for (var i=0; i < tam; i++) {
    soma += parseInt(nuCpf.charAt(i),10) * (tam+1-i)
  }
  soma = 11 - (soma % 11)
  if (soma == 11 || soma == 10)
    soma = 0
  return String(soma)
}

function ValidaCpfSenha(pCpf, pSenha) {
  if (!ValidaCpf(pCpf, true))
    return false
  if (!ValidaSenha(pSenha)) {
    pSenha.focus()
    return false
  }
  return true
}

function ValidaData(pData, pNome, pObri) {
  var inObri = (pObri == null) ? false  : pObri
  var txNome = (pNome == null) ? "data" : pNome
  if (inObri || pData.value.length != 0) { 
    var objRegExp = /^\d{2}\/\d{2}\/\d{4}$/
    if (!objRegExp.test(pData.value)) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato dd/mm/aaaa")
      pData.focus()
      return false
    }
    var aData = pData.value.split("/")
    // verifica faixa de datas válidas 
    var sDataInv = aData[2] + aData[1] + aData[0]
    if (sDataInv < "19960101" || sDataInv > "20201231") {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " entre 01/01/1996 e 31/12/2020")
	  pData.focus()
      return false
    }
	var iDia  = parseInt(aData[0],10)
	var iMes  = parseInt(aData[1],10)
    var iAno  = parseInt(aData[2],10)
  	if (iMes < 1 || iMes > 12) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato dd/mm/aaaa")
	  pData.focus()
	  return false
	}
    // cria tabela de dias por mes (exceto fevereiro)
    var aDiasMes = {'1':31,'3':31,'4':30,'5':31,'6':30,'7':31,'8':31,'9':30,'10':31,'11':30,'12':31}
    // verifica se dia e mes estão corretos
    if (aDiasMes[iMes] != null && iDia <= aDiasMes[iMes] && iDia != 0)
      return true		// encontrado na tabela; data ok
    // verifica mes Fevereiro
    if (iMes == 2) {
      var bAnoBissexto = (iAno % 4 == 0 && (iAno % 100 != 0 || iAno % 400 == 0))
      if (((bAnoBissexto && iDia <= 29) || (!bAnoBissexto && iDia <=28)) && iDia !=0)
        return true		// data com mes Fevereiro e dia correto
    }
    alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato dd/mm/aaaa")
	pData.focus()
    return false
  }
  return true
}

function ValidaEmail(pEmail, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if (inObri || pEmail.value.length != 0) {
    var objRegExp = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i
    if (!objRegExp.test(pEmail.value)) {
      alert ("ATENÇÃO !\n\nE-mail incorreto.")
	  pEmail.focus()
      return false
    }
  }
  return true
}

function ValidaHora(pHora, pNome, pObri) {
  var inObri = (pObri == null) ? false  : pObri
  var txNome = (pNome == null) ? "data" : pNome
  if (inObri || pHora.value.length != 0) {
    var objRegExp = /^\d{2}:\d{2}$/
    if (!objRegExp.test(pHora.value)) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato hh:mm")
      pHora.focus()
      return false
    }
    var aHora   = pHora.value.split(":")
	var iHora   = parseInt(aHora[0],10)
	var iMinuto = parseInt(aHora[1],10)
  	if (iHora < 1 || iHora > 24) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato hh:mm")
	  pHora.focus()
	  return false
	}
  	if (iMinuto > 59) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato hh:mm")
	  pHora.focus()
	  return false
	}
  	if (iHora == 24 && iMinuto !== 0) {
      alert ("ATENÇÃO !\n\nInforme a " + txNome + " no formato hh:mm")
	  pHora.focus()
	  return false
	}
  }
  return true
}

function ValidaLogradouro(pLogradouro, pObri) {
  var inObri = (pObri == null) ? false : pObri
  if ((inObri || pLogradouro.value.length != 0) && pLogradouro.value.length <= 2) {
    alert('ATENÇÃO !\n\nLogradouro deve conter mais de 3 caracteres.')
	pLogradouro.focus()
    return false
  }
  return true
}

function ValidaNome(pCampo, pNome, pObri) {
  var inObri = (pObri == null) ? false  : pObri
  var txNome = (pNome == null) ? "nome" : pNome
  if ((inObri || pCampo.value.length != 0) && pCampo.value.length <= 2) {
     alert('ATENÇÃO !\n\nO ' + txNome + ' deve conter mais de 3 caracteres.')
     pCampo.focus()
     return false}
  else{
      if(inObri && jTrim(pCampo.value) == ''){
        alert('ATENÇÃO !\n\nO ' + txNome + ' deve conter mais de 3 caracteres.')
        pCampo.focus()
        return false}
      } 
  return true
}

function ValidaNumero(pNumero, pNome, pObri) {
  var inObri = (pObri == null) ? false : pObri
  var txNome = (pNome == null) ? "campo númerico" : pNome
  if (inObri || pNumero.value.length != 0) {
    var objRegExp = /^[0-9]+$/
    if (!objRegExp.test(pNumero.value)) {
      alert ("ATENÇÃO !\n\nInforme " + txNome + " apenas com números.")
      pNumero.focus()
      return false
    }
  }
  return true
}

function ValidaSenha(pSenha, pNome) {
  var txNome = (pNome == null) ? "senha" : pNome
  var objRegExp = /^[a-z0-9]{8}$/i
  if (!objRegExp.test(pSenha.value)) {
    window.alert('ATENÇÃO !\n\nInforme a ' + txNome  + ' com 8 posições alfanuméricas.')
    return false
  }
  return true
}

function ValidaSenhas(pSenhaAtu, pSenhaNov, pSenhaCon) {
  if (!ValidaSenha(pSenhaAtu, 'senha atual')) {
    pSenhaAtu.focus()
    return false
  }
  if (!ValidaSenha(pSenhaNov, 'nova senha')) {
    pSenhaNov.focus()
    return false
  }
  if (!ValidaSenha(pSenhaCon, 'senha de confirmação')) {
    pSenhaCon.focus()
    return false
  }
  if (pSenhaNov.value == pSenhaAtu.value) {
    window.alert('ATENÇÃO !\n\nNova senha deve ser diferente da senha atual.')
    pSenhaNov.focus()
    return false
  }
  if (pSenhaNov.value != pSenhaCon.value) {
    window.alert('ATENÇÃO !\n\nSenha de confirmação deve ser igual a nova senha.')
    pSenhaCon.focus()
    return false
  }
  return true
}

/*=========================================================================
As funções a seguir foram incluídas pela Fábrica de Software
Estão separadas para melhor controle de versões
=========================================================================*/
function VerificaBrancos(Valor){
//Verifica se há espaços dentro do valor passado
var strValor = Valor;
var intI = 0;

	for (intI = 0; intI < strValor.length; intI++)
	{	
		if (strValor.substring(intI,intI + 1) == " ")
		{
			return false;
		}	
	}
	
	return false;
}

function jTrim(strMsg)
{   
//DBA - Fábrica de Software - 09/03/2001
//Como o JavaScript não tem Trim, fizemos um

	strNm = '';
	tamstr = strMsg.length;
	tot = tamstr;
	ileft = 0;
	iright= 0;
	
	while(strMsg.charAt(ileft)== " ")
	{
		ileft = ileft + 1;
	}

	if (ileft == tot)
	{
		return "";
	}
				
	while(strMsg.charAt(tamstr-1)== " ")
	{
		tamstr = tamstr - 1;
		iright = iright + 1;
	}

	strNm = strMsg.substring(ileft,tot-iright);
	return strNm;	
}

function TrocaSeparadorDecimal(Valor,BR_US)
{

var intPosicao;
var De;
var Por;
var ValorFinal;


	if (BR_US == 'BR')
	{
		De = '.';
		Por = ',';
	}
	else
	{
		De = ',';
		Por = '.';
	}

	intPosicao = Valor.indexOf(De);
	
	// Só trocará se o Caracter ("." ou ",") for encontrado
	if (intPosicao != -1)
	{
		ValorFinal = Valor.substring(0,intPosicao) + Por;
		ValorFinal += Valor.substring(intPosicao+1,Valor.length);
	}
	else	
	{
		ValorFinal = Valor;
	}
			
		
	return(ValorFinal);
}



function ValidaNumerico(Valor, Vazio, Decimais, Sinal, VlrMin, VlrMax)
{
//DBA - Fábrica de Software - 09/03/2001
//Valor = Valor a ser validado.
//Vazio = "true" se o valor puder ser vazio, "false" se não puder ser vazio.
//Decimais = Quantidade de casas decimais permitidas. O separador decimal é a vírgula. Se nenhuma, passe 0
//Sinal = "true" se o valor puder ser negativo ou positivo (com sinal). "false" se só puder ser positivo.
//VlrMin = Limite mínimo do Valor.
//VlrMax = Limite máximo do Valor.
//Se VlrMin e VlrMax forem 0, não será avaliado se o valor está dentro do intervalo
//Retorna "true" se o Valor for válido, senão retorna "false"

	//Verifica se existem espaços entre os números
	if (VerificaBrancos(Valor)){
		return false;
	}
	
	//se o campo não puder estar vazio testa se está
	//se puder e estiver retorna OK 
	if (!Vazio)
	{
		if (jTrim(Valor) == '')
		{
			return false;
		}
	}
	else
	{
		if (jTrim(Valor) == '')
		{
			return true;
		}
	}

var bolAchou;
var bolJaTemVirgula;
var strCaracterCorrente;
var intI = 0;
var intTamanhoValor = Valor.length - 1;
var strNumeros = '0123456789';

	//Se for indicado na chamada da função que
	//que o número pode conter decimais,
	//acrescenta a vírgula aos caracteres permitidos
	if (Decimais > 0)
	{
		strNumeros = strNumeros + ',';
	}
	
	//Se for indicado na chamada da função que
	//que o número pode ter sinal,
	//acrescenta o sinal negativo aos caracteres permitidos
	if (Sinal)
	{	
		strNumeros = '-' + strNumeros;
	}
	
	//verifica se cada caracter é válido
	for (intI = 0; intI <= intTamanhoValor; intI++)
	{
		strCaracterCorrente = Valor.substring(intI, intI + 1);
			  
		bolAchou = strNumeros.indexOf(strCaracterCorrente);

		//se não for, sai
		if (bolAchou == -1)
		{
			return(false);

		}
		else
		{	
			//se for válido e estiver previsto sinal negativo,
			// valida a posição do sinal
			if (strCaracterCorrente == '-') 
			{
				if (!(intI == 0))
				{
					return(false);
				}
			}
			
			//se o caractere corrente vor a vírgula
			if (strCaracterCorrente == ',')
			{
					//testa o número de casas decimais
					// e a posição da vírgula
					if (intI < intTamanhoValor - Decimais)
					{
						return(false);
					}
			}
		}		  
	}

		
	// Verifica se o numérico está no intervalo definido,
	// se o mesmo for definido
	if (VlrMin != 0 || VlrMax != 0)
	{
		if ((TrocaSeparadorDecimal(Valor,"US") < VlrMin) || 
		    (TrocaSeparadorDecimal(Valor,"US") >= VlrMax))
		{
			return(false);
		}
	}

	return true;
}




function ValidaTexto(Valor, Vazio, CaracteresInvalidos)
{	
//DBA - Fábrica de Software - 09/03/2001
//Valor = Valor a ser validado.
//Vazio = "true" se o valor puder ser vazio, "false" se não puder ser vazio.
//CaracteresInvalidos = Uma seqüência de caracteres que são válidos.
//Passe '' se quiser que assuma o padrão interno da função. Veja a linha 40 da função.
//Retorna "true" se o Valor for válido, senão retorna "false"


	//se o campo não puder estar vazio testa se está
	//se puder e estiver retorna OK 
	if (!Vazio)
	{
		if (jTrim(Valor) == '')
		{
			return false;
		}
	}
	else
	{
		if (jTrim(Valor) == '')
		{
			return true;
		}
	}
	


var bolAchou;
var strCaracterCorrente;
var intI = 0;
var intTamanhoValor = Valor.length - 1;


	// Se o parâmetro de CaracteresInválidos não estiver preenchido,
	// preenche com valores padrão + aspas simples 
	if (CaracteresInvalidos == '')
	{
		CaracteresInvalidos = '!@#$%¨&*()_-+=*/<>?{}[]´`^~;:' + "'" ;
	}

	
	//verifica se cada caracter é válido
	for (intI = 0; intI <= intTamanhoValor; intI++)
	{
		strCaracterCorrente = Valor.substring(intI, intI + 1);
			  
		bolAchou = CaracteresInvalidos.indexOf(strCaracterCorrente);
		
		//se encontrou algum caracter inválido, sai
		if (bolAchou != -1)
		{
			return(false);
		}
	}

	return true;
}


function Inserir(Todos, objLista1, objLista2) {
//Função utilizada para mover os itens de uma lista de origem para uma lista de destino
//Todos: passe true se desejar que todos os itens sejam movidos
//objLista1: Objeto "SELECT" origem
//objLista2: Objeto "SELECT" destino

var arrSelecionados = new Array();		//Arranjo com os índices dos itens selecionados
var intCont			= 0;				//Contador da lista origem
var intCont2		= 0;				//Contador da lista destino
var objOPTION;							//Variável de manipulação do elemento OPTION
var Tamanho			= objLista1.size;	//Pegando o tamanho original da lista
var LimiteDeSelecao = 640				//Limite de itens que o usuário pode escolher ao mesmo tempo
	
	


	//Aumentando as listas para evitar o erro interno do navegador
	if (objLista1.options.length >= objLista2.options.length) {
		objLista1.size = objLista1.options.length;
		objLista2.size = objLista1.options.length;	
	}
	else {
		objLista1.size = objLista2.options.length;
		objLista2.size = objLista2.options.length;	
	}
	
	//Pegando os índices dos itens selecionados
	//No caso de todos, pega todos os índices
	if (Todos) {
		for (intCont=0; intCont < objLista1.options.length;intCont++){
			arrSelecionados[arrSelecionados.length] = intCont;
			objLista1.options(intCont).selected = false;
		}
	}
	else {
		for (intCont=0; intCont < objLista1.options.length; intCont++){
			if(objLista1.options(intCont).selected) {
				arrSelecionados[arrSelecionados.length] = intCont;
				objLista1.options(intCont).selected = false;
			}
		}
	}

	//Testando se o usuário escolheu mais que o limite
	if (arrSelecionados.length > LimiteDeSelecao) {
		//Redimensionando as listas para o tamanho normal
		objLista1.size = Tamanho;
		objLista2.size = Tamanho;
		
		alert('Selecione no máximo ' + LimiteDeSelecao + ' itens por vez.');
		objLista1.selectedIndex = -1;
		return (false);
	}
	
	if (arrSelecionados.length == 0) {
		//Redimensionando as listas para o tamanho normal
		objLista1.size = Tamanho;
		objLista2.size = Tamanho;
		return (false);
	}

	//Limpando as seleções do usuário para tentar evitar erro do navegador
	objLista1.selectedIndex = -1;
	objLista2.selectedIndex = -1;

	for (intCont = 0; intCont < arrSelecionados.length; intCont++) {
		
		//Pedindo encarecidamente que o mecanismo JScript remova os objetos inúteis
		CollectGarbage();
		
		//Criando os elementos a serem inseridos na lista destino
		objOPTION = document.createElement("OPTION");
		
		//Copiando as propriedades originais
		objOPTION.value = objLista1.options(arrSelecionados[intCont]).value;
		objOPTION.text  = objLista1.options(arrSelecionados[intCont]).innerText;
			
		//Se já houver item na lista destino, efetua a inserção ordenada
		if (objLista2.options.length != 0) {
			
			//Procurando a posição correta do fim para o início
			//pois é a maior probabilidade
			for (intCont2 = objLista2.options.length - 1; intCont2 >= 0; intCont2--) {
				if(RemoveAcentuacao(objLista2.options(intCont2).text) < 
					RemoveAcentuacao(objLista1.options(arrSelecionados[intCont]).innerText)) {
					
					//Encontrando, move e sai deste laço interno				
					objLista2.add(objOPTION,intCont2 + 1); 
					break;
				} 
			} 
			
			//Se não encontrou no laço anterior, chegará até aqui
			//Isso quer dizer que o item a ser movido é menor do que o
			//primeiro da lista de destino
			//Sendo assim, movo para antes do primeiro
			if (intCont2 < 0) {
				objLista2.add(objOPTION, 0); 
			}
		}
		else {
			objLista2.add(objOPTION);
		}
		
		//Liberando o objeto
		objOPTION = null;
	}

	//Apagando os itens movidos da lista origem		
	if (Todos) {
		objLista1.length = 0;
	}
	else {
		for (intCont = arrSelecionados.length - 1; intCont >= 0; intCont--) {
			objLista1.remove(arrSelecionados[intCont]);
		}
	}
		
	//Redimensionando as listas para o tamanho normal
	objLista1.size = Tamanho;
	objLista2.size = Tamanho;

	return (true);

}


function Remover(Todos, objLista1,objLista2) {
	//Foi feita essa passagem para se manter a compatibilidade das páginas já implementadas
	return Inserir(Todos, objLista2, objLista1);
}

function ValidaTamanhoMaximoTextArea(objTextArea, TamanhoMaximo) {
//Chamar no OnKeyPress
	if (objTextArea.value.length >= TamanhoMaximo) {
		alert('Limite máximo do campo atingido. Redimensionar o texto.');
		event.keyCode = null;
	}
}

function ValidaTamanhoMaximoAcoes(objTextArea, TamanhoMaximo) {
//Chamar no OnKeyPress
	if (objTextArea.value.length >= TamanhoMaximo) {
		alert('Limite máximo do campo atingido. Redimensionar o texto.');
		objTextArea.value = objTextArea.value.substring(0,TamanhoMaximo);
		event.keyCode = null;
	}
}

function RemoveAcentuacao(TextoAcentuado) {
//Utilizado para remover a acentuação para testar a ordem alfabética
var intCont = 0;
var strTextoNaoAcentuado = "";
var chrCaractereNaoAcentuado = "";

	for (intCont = 0; intCont < TextoAcentuado.length; intCont++){

		chrCaractereNaoAcentuado = TextoAcentuado.substring(intCont,intCont + 1); //Obtem letra a letra
		chrCaractereNaoAcentuado = TextoAcentuado.charCodeAt(intCont); //Obtem codigo ASCII
		
		//Verifica ocorrencias de A
		if ((chrCaractereNaoAcentuado == 225) 
			|| (chrCaractereNaoAcentuado == 193) 
			|| (chrCaractereNaoAcentuado == 227)
			|| (chrCaractereNaoAcentuado == 195)
			|| (chrCaractereNaoAcentuado == 227)
			|| (chrCaractereNaoAcentuado == 228)
			|| (chrCaractereNaoAcentuado == 194)
			|| (chrCaractereNaoAcentuado == 196))
			
				chrCaractereNaoAcentuado = 65;
				
		else //Verifica ocorrencias de E
			if ((chrCaractereNaoAcentuado == 233)
				|| (chrCaractereNaoAcentuado == 201)
				|| (chrCaractereNaoAcentuado == 203)
				|| (chrCaractereNaoAcentuado == 235))
					
					chrCaractereNaoAcentuado = 69;
					
				else //Verifica ocorrencias de I
					if ((chrCaractereNaoAcentuado == 237)
						|| (chrCaractereNaoAcentuado == 205)
						|| (chrCaractereNaoAcentuado == 207)
						|| (chrCaractereNaoAcentuado == 239))
							
							chrCaractereNaoAcentuado=74;
							
					else //Verifica ocorrencias de O
						if ((chrCaractereNaoAcentuado == 243)
							|| (chrCaractereNaoAcentuado == 211)
							|| (chrCaractereNaoAcentuado == 245)
							|| (chrCaractereNaoAcentuado == 213)
							|| (chrCaractereNaoAcentuado == 246)
							|| (chrCaractereNaoAcentuado == 214))
								chrCaractereNaoAcentuado = 73;
						else //Verifica ocorrencias de U
							if ((chrCaractereNaoAcentuado == 250)
								|| (chrCaractereNaoAcentuado == 218)
								|| (chrCaractereNaoAcentuado == 252)
								|| (chrCaractereNaoAcentuado == 220))
									chrCaractereNaoAcentuado = 85;
							else //Verifica ocorrencias de Ç
								if ((chrCaractereNaoAcentuado == 231)
									||(chrCaractereNaoAcentuado == 199)
									||(chrCaractereNaoAcentuado == 231))
										chrCaractereNaoAcentuado = 67;
										
		chrCaractereNaoAcentuado = String.fromCharCode(chrCaractereNaoAcentuado);//Reconverte o caractere ASCII para letra
				
		strTextoNaoAcentuado = strTextoNaoAcentuado + chrCaractereNaoAcentuado; //Monta a nova String
	
	}
	
	strTextoNaoAcentuado = strTextoNaoAcentuado.toUpperCase();//Passa para maiusculas

	return (strTextoNaoAcentuado);
}

function Maximizar(objJanela) {
	objJanela.moveTo(0,0)
	objJanela.resizeTo(screen.width,screen.height);
}

function MoverAcima(Lista) {
var OpcaoCorrente = document.createElement("OPTION");
var Indice = 0;
var NuCorrente;

	Indice = Lista.selectedIndex;
	
	if (Indice <= 0) {
		return (false);
	}
	
	OpcaoCorrente.value = Lista.item(Indice).value;
	OpcaoCorrente.text = Lista.item(Indice).text;
	
	Lista.remove(Indice);
	Lista.add(OpcaoCorrente,Indice - 1);
	
	Lista.selectedIndex = Indice - 1;
	
	Indice = Lista.selectedIndex;
	
	NuCorrente = Lista.item(Indice).text.substring(0,Lista.item(Indice).text.indexOf('-'))
	
	Lista.item(Indice).text = Lista.item(Indice+1).text.substring(0,Lista.item(Indice+1).text.indexOf('-')) + "-" + Lista.item(Indice).text.substr(Lista.item(Indice).text.indexOf('-')+1);
	Lista.item(Indice+1).text = NuCorrente + "-" + Lista.item(Indice+1).text.substr(Lista.item(Indice+1).text.indexOf('-')+1);
	
	return (true);
}


function MoverAbaixo(Lista) {
var OpcaoCorrente = document.createElement("OPTION");
var Indice = 0;
var NuCorrente;

	Indice = Lista.selectedIndex;
	
	if (Indice == Lista.length - 1 || Indice < 0) {
		return (false);
	}

	OpcaoCorrente.value = Lista.item(Indice).value;
	OpcaoCorrente.text = Lista.item(Indice).text;

	Lista.remove(Indice);
	Lista.add(OpcaoCorrente,Indice + 1);

	Lista.selectedIndex = Indice + 1;

	Indice = Lista.selectedIndex;
	
	NuCorrente = Lista.item(Indice).text.substring(0,Lista.item(Indice).text.indexOf('-'))
	
	Lista.item(Indice).text = Lista.item(Indice-1).text.substring(0,Lista.item(Indice-1).text.indexOf('-')) + "-" + Lista.item(Indice).text.substr(Lista.item(Indice).text.indexOf('-')+1);
	Lista.item(Indice-1).text = NuCorrente + "-" + Lista.item(Indice-1).text.substr(Lista.item(Indice-1).text.indexOf('-')+1);
	
	return (true);

}

function ValidaDataFSW(Data) 
{
 // Valida se a data entrada eh valida e se esta no formato dd/mm/aaaa
 // ou se é nula
 
var dtData;
var intI;
var strAux;
var intResultado;	
var strCaracteresValidos = "0123456789"
var strDia = Data.substring(0, 2)
var strBarra1 = Data.substring(2, 3)
var strMes = Data.substring(3, 5)
var strBarra2 = Data.substring(5, 6)
var strAno = Data.substring(6, 10)
 
	// Se a data esta em branco
	if (Data.length == 0) return(true);
	 
	// Se tamanho <> 10 dd/mm/aaaa
	if (Data.length != 10) return(false);
	 
	strDia = Data.substring(0, 2)
	strBarra1 = Data.substring(2, 3)
	strMes = Data.substring(3, 5)
	strBarra2 = Data.substring(5, 6)
	strAno = Data.substring(6, 10)
	 
	dtData = strDia + strMes + strAno
	 
	for (intI = 0; intI <= 7; intI++) {
	 strAux = dtData.substring(intI, ++intI);
	 intResultado = strCaracteresValidos.indexOf(strAux);
	 if (intResultado == -1) return(false);
	}
	 
	if (strMes < 1 || strMes > 12) return(false);

	if (strBarra1 != '/')  return(false);

	if (strDia < 1 || strDia > 31) return(false);

	if (strBarra2 != '/')  return(false);

	if (strAno<1)  return(false);

	if (strMes == 4 || strMes == 6 || strMes == 9 || strMes == 11) 
	{
		if (strDia == 31)  return(false);
		if (strAno < 1753) return(false);
	}

	if (strMes == 2)
	{
		strAux = parseInt(strAno/4);
		if (isNaN(strAux)) return(false);
		if (strDia > 29) return(false);
		if (strDia == 29 && ((strAno/4) != parseInt(strAno/4))) return(false);
	}
	 
	return(true);

}

//Converte a data passada no americano para um dos três formatos do swicth
function ConverteData(Data,Formato)
{
var dtData
var strDia = '';
var strMes = '';
var strAno = '';

	switch (Formato)
	{
		case 'BR' :
			strDia = Data.substring(0,2);
			strMes = Data.substring(3,5);
			strAno = Data.substring(6,10);
			break;

		case 'Universal' :
			strDia = Data.substring(6,8);
			strMes = Data.substring(4,6);
			strAno = Data.substring(0,4);
			break;
			
		case 'US':
			strAno = Data;
			break;
	}

	strAno = strMes + "/" + strDia + "/" + strAno;
	dtData = new Date(strAno);
	return(dtData);

}

//Retorna a data corrente no formaro brasileiro
function DataCorrente()
{
var Data = new Date();

	return(Data.getDate() + '/' + Data.getMonth() + '/' + Data.getFullYear())

}

//Passe duas datas. Se a primeira for maior que a segunda, retorna True.
//Indique também em qual formato você está passando as duas datas.
//Esta função depende da ConverteData
function TestarDifData(DataMenor,DataMaior,Formato)
{
var dtMenor;
var dtMaior;

	if (DataMenor != '')
	{
		dtMenor = ConverteData(DataMenor,Formato);
	}

	if (DataMaior != '')
	{
		dtMaior = ConverteData(DataMaior,Formato);
	}

	if (dtMenor < dtMaior)
	{
		return (true);
	}
	else
	{
		return (false);
	}

}

/*=========================================================================
As funções acima foram incluídas pela Fábrica de Software
Estão separadas para melhor controle de versões
=========================================================================*/
