// variavies utilizadas para destacar o foco do controle em edicao
var corAnterior;
var corFonteAnterior;
var corfoco  = "#F8F8F8";//"lightyellow";
var corfoco  = "#FFFFF2";
var corfonte = "blue";//"blue";
var isNS4 = (navigator.appName=="Netscape")?1:0;
var isIE  = (navigator.appName=="Netscape")?0:1;
var nomeAbaAnterior="";
var abaAnterior=0;
var calendarioCampoAtual="";
var iframeConsultaAberto="";
var nj;
var wtemp;
var intervalo;
// criar objeto browser
var nav = new browser();

/*
Exemplo:
nav = new browser();
 if(nav.ns4){
		document.write('<input name="password" type="password" size="12">');
} else if (nav.ns6) {
		document.write('<input name="password" type="password" size="20">');
} else if (nav.ie){
		document.write('<input name="password" type="password" size="20">');
} else if (nav.opera){
		document.write('<input name="password" type="password" size="20">');
 }
*/
function browser ()
{
		 var b = navigator.appName;
		 var v = this.version = navigator.appVersion;
		 var ua = navigator.userAgent.toLowerCase();
		 this.v = parseInt(v);
		 this.safari = ua.indexOf("safari")>-1; // always check for safari & opera
		 this.opera = ua.indexOf("opera")>-1; // before ns or ie
		 this.ns = !this.opera && !this.safari && (b=="Netscape");
		 this.ie = !this.opera && (b=="Microsoft Internet Explorer");
	   this.gecko = ua.indexOf('gecko')>-1; // check for gecko engine
	   if (this.ns) {
			   this.ns4 = (this.v==4);
			   this.ns6 = (this.v>=5);
			   this.b = "Netscape";
	  }else if (this.ie) {
			   this.ie4 = this.ie5 = this.ie55 = this.ie6 = false;
			   if (v.indexOf('MSIE 4')>0) {this.ie4 = true; this.v = 4;}
			   else if (v.indexOf('MSIE 5')>0) {this.ie5 = true; this.v = 5;}
			   else if (v.indexOf('MSIE 5.5')>0) {this.ie55 = true; this.v = 5.5;}
			   else if (v.indexOf('MSIE 6')>0) {this.ie6 = true; this.v = 6;}
			   this.b = "MSIE";
	   }else if (this.opera) {
			   this.v=parseInt(ua.substr(ua.indexOf("opera")+6,1)); // set opera version
			   this.opera6=(this.v>=6);
			   this.opera7=(this.v>=7);
			   this.b = "Opera";
	   }else if (this.safari) {
			   this.ns6 = (this.v>=5); // ns6 compatible correct?
			   this.b = "Safari";
	   }
		this.dom = (document.createElement && document.appendChild && document.getElementsByTagName)? true : false;
		this.def = (this.ie||this.dom);
		this.win32 = ua.indexOf("win")>-1;
		this.mac = ua.indexOf("mac")>-1;
		this.other = (!this.win32 && !this.mac);
		this.supported = (this.def||this.ns4||this.ns6||this.opera)? true:false;
 };
// NS6 = (document.getElementById&&!document.all)
// IE = (document.all)
// NS = (navigator.appName=="Netscape" && navigator.appVersion.charAt(0)=="4")
// var isIE  = document.getElementById ? 1:0;

//---------------------------------------------------------------------------------------------
//function fnSupressError(sMessage, sURL, sLine){ return true; }
//window.onerror = fnSupressError ;
//---------------------------------------------------------------------------------------------

function FiltraCampo(codigo) {
	var s = "";
	tam = codigo.length;
	for (i = 0; i < tam ; i++) {
		if (codigo.substring(i,i + 1) == "0" ||
			codigo.substring(i,i + 1) == "1" ||
			codigo.substring(i,i + 1) == "2" ||
			codigo.substring(i,i + 1) == "3" ||
			codigo.substring(i,i + 1) == "4" ||
			codigo.substring(i,i + 1) == "5" ||
			codigo.substring(i,i + 1) == "6" ||
			codigo.substring(i,i + 1) == "7" ||
			codigo.substring(i,i + 1) == "8" ||
			codigo.substring(i,i + 1) == "9"  )
			s = s + codigo.substring(i,i + 1);
	}
	return s;
}

function DvCnpjOk(e) {
	var dv = false;

	controle = "";
	s = FiltraCampo(e.value);
	tam = s.length
	if ( tam  == 14 ) {
		dv_cnpj = s.substring(tam-2,tam);
		for ( i = 0; i < 2; i++ ) {
			soma = 0;
			for ( j = 0; j < 12; j++ ) {
				soma += s.substring(j,j+1)*((11+i-j)%8+2);
			}
			if ( i == 1 ) { soma += digito * 2; }
			digito = 11 - soma  % 11;
			if ( digito > 9 ) { digito = 0; }
			controle += digito;
		}
		if ( controle == dv_cnpj ) {
			dv = true;
		}

		if ( ! dv && tam > 0) {
			mensagem = "           Erro de digitação:\n";
			mensagem+= "          ===============\n\n";
			mensagem+= " O CNPJ: " + e.value + " não existe!!\n";
			//mensagem+= " CONTROLE " +controle +"\n"; //Não mostrar o DV p/ o usuário.
			alert(mensagem);
			e.focus();
		}
	 } else  {
		 e.value = '';
	 }
	 return dv;
}

function DvCpfOk(e,evento ) {
	var dv = false;

	controle = "";
	s = FiltraCampo(e.value);
	tam = s.length;
	if ( tam == 11 && !s.match(/(\d)\1{10}/) ) {
		dv_cpf = s.substring(tam-2,tam);
		for ( i = 0; i < 2; i++ ) {
			soma = 0;
			for ( j = 0; j < 9; j++ ) {
				soma += s.substring(j,j+1)*(10+i-j);
			}
			if ( i == 1 ) { soma += digito * 2; }
			digito = (soma * 10) % 11;
			if ( digito == 10 ) { digito = 0; }
			controle += digito;
		}
		if ( controle == dv_cpf ) {
			dv = true;
		}

		if ( ! dv && tam > 0) {
			mensagem = "           Erro de digitação:\n";
			mensagem+= "          ===============\n\n";
			mensagem+= " O CPF: " + e.value + " não existe!!\n";
			//mensagem+= " O DV: " + controle + "\n"; //Não mostrar o DV p/ o usuário.
			alert(mensagem);
			e.focus();
		}
	 } else  {
		 e.value = '';
	 }
	return dv;
}

function DvCpfCnpjOk(e,numPessoa) {
	var s = "";
	var tam="";
	s = FiltraCampo( e.value );
	tam = s.length;
	if ( tam < 12 ) {
		if ( tam == 11 || !numPessoa )
			return DvCpfOk(e);
	} else
		return DvCnpjOk(e);
}


function FormataCpf(e,cpf) {
	var s = "";
	if(e)
	   s = FiltraCampo(e.value);
	else
	  s = FiltraCampo(cpf );

	tam =  s.length;
	r = s.substring(0,3) + "." + s.substring(3,6) + "." + s.substring(6,9)
	r += "-" + s.substring(9,11);
	if ( tam < 4 )
		s = r.substring(0,tam);
	else if ( tam < 7 )
		s = r.substring(0,tam+1);
	else if ( tam < 10 )
		s = r.substring(0,tam+2);
	else
		s = r.substring(0,tam+3);
	if( e ) {
		e.value = s;
	}
	return s;
}

function FormataCnpj(e) {
	var s = "";
	var r = "";

	s = FiltraCampo(e.value);
	tam =  s.length;
	r = s.substring(0,2) + "." + s.substring(2,5) + "." + s.substring(5,8)
	r += "/" + s.substring(8,12) + "-" + s.substring(12,14);
	if ( tam < 3 )
		s = r.substring(0,tam);
	else if ( tam < 6 )
		s = r.substring(0,tam+1);
	else if ( tam < 9 )
		s = r.substring(0,tam+2);
	else if ( tam < 13 )
		s = r.substring(0,tam+3);
	else
		s = r.substring(0,tam+4);
	e.value = s;
	return s;
}


function FormataCpfCnpj(e) {
   var s = "";
	s = FiltraCampo(e.value);
	tam =  s.length;
	if (tam < 12 ) {
	   FormataCpf(e)
	   }
	else
	   {
	   FormataCnpj(e);
	   }
}


function DataOk(e,mascara) {
var strDia="";
var strMes="";
var strAno="";
var Dia=0;
var Mes=0;
var Ano=0;
var Texto=""; //VALOR A SER TESTADO
var Msg=""; // MENSAGEM A SER EXIBIDA NA TELA SE HOUVER ERRO
var Erro = false;

Texto = FormataData(e,mascara); // COLOCAR AS BARRAS

if (Texto!="") {
   //EXISTE VALOR
   switch (mascara) {
	case 'dm':
		Texto +='/2000';
	break;
	case 'my':
		Texto ='01/' + Texto;
	break;
   }
   //window.status = Texto;
   // DATA ESTÁ DIGITADA INCOMPLETA
   if ( Texto.length < 10 && Texto.length != 8 ) {
	  e.value = '';
	  return true;
	  }



   strDia = Texto.substring(0,2);
   strMes = Texto.substring(3,5);
   strAno = Texto.substring(6);


   Dia=parseInt(strDia,10);
   Mes=parseInt(strMes,10);
   Ano=parseInt(strAno,10);

   // colocar o ano com 4 digitos se o usuario informar com 2
   if ( Ano < 100 ) {
	  if (Ano > 40 )
		  Ano += 1900
	  else
		 Ano += 2000;
   }

   switch (mascara) {
	case 'dm':
		e.value = strDia+'/'+strMes;
		exemplo = 'Informe o dia e o mês. Ex. 01/10 01/08 20/05...';
	break;
	case 'my':
	   e.value = strMes+'/'+Ano;
		exemplo = 'Informe o mês e ano. Ex. 10/2004 05/2002 01/2004...';
	break;
	default:
		exemplo = 'Informe a data no formato DD/MM/YYYY. Ex. 01/01/2004 ou 01/01/04.';
	   e.value = strDia+'/'+strMes+'/'+Ano;
   }




   if ((Dia<1) || (Dia>31) || isNaN(Dia)) {
	  Msg = Msg + 'Dia '+Dia+' inválido\n';
	  Erro = true;
	  }
   if ((Mes<1) || (Mes>12) || isNaN(Mes)) {
	  Msg = Msg + 'Mês '+Mes+' inválido\n';
	  Erro = true;
	  }
   if (isNaN(Ano)) {
	  Msg = Msg + 'Ano '+Ano+' inválido\n';
	  Erro = true;
	  }
   if ((Dia>=31) && ((Mes==4) || (Mes==6) || (Mes==9) || (Mes==11))) {
	  Msg = Msg + 'Dia inválido para este mês\n';
	  Erro = true;
	  }
   if (Mes==2) {
	  //MES DE FEVEREIRO
	  if (Dia>=30) {
		 Msg = Msg + 'Dia inválido para fevereiro\n';
		 Erro = true;
		}
	  if ((Dia==29) && (((Ano % 4) != 0) || (((Ano % 100) == 0) && ((Ano % 400) != 0)))) {           Msg = Msg + 'Dia inválido para fevereiro. '+ Ano +' não é bisexto\n';
		 Erro = true;
		 }
	  }
   }
  if ( Erro ) {
	alert(Msg + exemplo);
	e.focus();
	}
  return true;
}

function FormataData(e,mascara) {
	var s = "";

	s = FiltraCampo(e.value);
	tam =  s.length;
	if(mascara=='my')
	  r = s.substring(0,2) + "/" + s.substring(2,6);
	else
	  r = s.substring(0,2) + "/" + s.substring(2,4) + "/"+s.substring(4,8);
	if ( tam < 3 )
		s = r.substring(0,tam);
	else if ( tam < 5 )
		s = r.substring(0,tam+1);
	else
		s = r.substring(0,tam+2);
	e.value = s;
	return s;
}

function FormataHora(e) {
	var s = "";

	s = FiltraCampo(e.value);
	tam =  s.length;
	 size = s.maxlength;
	r = s.substring(0,2) + ":" + s.substring(2,4) + ":";
	r+= s.substring(4,6);
	if ( tam < 3 )
		s = r.substring(0,tam);
	else if ( tam < 5 )
		s = r.substring(0,tam+1);
	else
		s = r.substring(0,tam+2);
	e.value = s
	return s
}

function HoraOk(e) {
	var Hor=0;
	var Min=0;
	var Seg=0;
	var Texto=""; //VALOR A SER TESTADO
	var Msg=""; // MENSAGEM A SER EXIBIDA NA TELA SE HOUVER ERRO
	var Erro = false;
	var s = "";

	Texto = FormataHora(e);

	if (Texto.length < 5){
		e.value = '';
		return true;
	}
	if (Texto!="") {
		Hor = Texto.substring(0,2);
		Min = Texto.substring(3,5);
		Seg = Texto.substring(6,8);

		Msg = "Informe ";
		if (Hor>24) {
			Msg = Msg + 'Hora menor que 25\n';
			Erro = true;
		}
		if (Min>59) {
			Msg = Msg + 'Minuto menor que 60\n';
			Erro = true;
		}
		if (Seg>59) {
			Msg = Msg + 'Segundo menor que 60\n';
			Erro = true;
		}
		if ( Seg.length < 2) {
			e.value = Texto.substr(0,5);
			if (Texto.length == 5) {
			   e.value += ':00';}
		}
		e.value = e.value.substring(0,e.maxLength);
}
	if ( Erro ) {
		alert(Msg);
		e.focus();
		}
	return true;
}

/*
function FormataDecimal_old(e) {

	s = e.value;
	if ( s == '0,00-'){
	  s = '- ';
	  }
	negativo = (s.indexOf('-') > -1) && ( s.indexOf('+') == -1 );

	// retirar os caractes inválidos
	s = FiltraCampo(e.value);
	// completar com zeros quando o valor for menor que  1,00
	if (s.length == 0) s = "000" + s
	  else if (s.length == 1) s = "00" + s
		 else if (s.length == 2) s = "0" + s;
	// numero de caracteres digitados
	tam =  s.length;
	if ( tam > 2 ) {
		// a posição da vírgula será sempre o tamanho meno 2
		posvirg = tam - 2;
		// retirar os zeros da esquerda da parte inteira e colocar a virgula na parte decimal
		s = eval(s.substring(0,posvirg)) + "," + s.substring(posvirg);
		// colocar pontos de 3 em 3 digitos se a parte inteira ja tiver tamanho > 3
		parteInteira = s.substring(0,posvirg);
		if ( parteInteira.length > 3 )  {
		   j = 0;
		   //
		   r = '';
		   // ler a parte inteira de traz para frente colocando os pontos e guardando em r
		   for( i = parteInteira.length; i > 0 ; i-- ) {
			  j++;
			  if (j == 4) {
				 j = 1;
				 r = '.' + r;
				}
			  r = parteInteira.substring(i-1,i) + r;
			  }
		   // devolver para o resultado a parte inteira formatada concatenada com a parte decimal
		   s = r + s.substring(posvirg);
		 }
		}
	if ( negativo ) {
		 e.value = ' -'+e.value+'';
		 s = ' -'+s+'';
		 }
	e.value = s;
	return s;
}
*/
function FormataDecimal(e,casas) {
	if (e.value.length == 0) {
		return null;
	}
	var zeros = '00000000000000000';
	if( casas==null)
	   casas=2;
	//alert( zeros.substr(0,casas));
	zeros = zeros.substr(0,casas);
	s = e.value;
	if ( s == '0,'+zeros+'-'){
	  s = '- ';
	  }
	negativo = ( s.substring(0,1) == '-');

	// retirar os caractes inválidos
	s = FiltraCampo(e.value);
	// completar com zeros quando o valor for menor que  1,00
	// completar com zeros quando o valor for menor que  1,00
	if (s.length == 0)
		s = "0"+zeros.substr(0,casas)
	else if (s.length == 1)
		s = "00"+zeros.substr(0,casas-1) + s
	else if (s.length == 2)
		s = "0" +zeros.substr(0,casas-2)+ s;

//	if (s.length == 0) s = "000" + s
//      else if (s.length == 1) s = "00" + s
//         else if (s.length == 2) s = "0" + s;
	// numero de caracteres digitados
	tam =  s.length;
	if ( tam > casas ) {
		// a posição da vírgula + casaa será sempre descontada do tamanho
		posvirg = tam - casas;
		// retirar os zeros da esquerda da parte inteira e colocar a virgula na parte decimal
		s = eval(s.substring(0,posvirg)) + "," + s.substring(posvirg);
		// colocar pontos de 3 em 3 digitos se a parte inteira ja tiver tamanho > 3
		parteInteira = s.substring(0,posvirg);
		if ( parteInteira.length > 3 )  {
		   j = 0;
		   //
		   r = '';
		   // ler a parte inteira de traz para frente colocando os pontos e guardando em r
		   for( i = parteInteira.length; i > 0 ; i-- ) {
			  j++;
			  if (j == 4) {
				 j = 1;
				 r = '.' + r;
				}
			  r = parteInteira.substring(i-1,i) + r;
			  }
		   // devolver para o resultado a parte inteira formatada concatenada com a parte decimal
		   s = r + s.substring(posvirg);
		 }
		}
	if ( negativo ) {
		 e.value = '-'+e.value+'';
		 s = '-'+s+'';
		 }
	e.value = s;
	return s;
}

function FormataInteiro(e,formatar) {
	if (e.value.length == 0) {
		return null;
	}
	s = e.value;
	// window.status = s;
	if ( s == '0-')
	  s = '- ';
	negativo = (s.indexOf('-') > -1) && ( s.indexOf('+') == -1 );

	s = FiltraCampo(e.value); // retirar os caractes inválidos
	if (formatar=='N') {
		if (negativo)
		 e.value = ' -'+s ;
	   else
		 e.value = s;
	   return e.value;
	}
	tam =  s.length; // numero de caracteres digitados
	if ( tam > 0  )
		// retirar os zeros da esquerda
		s = eval(s.substring(0))+'';
	if ( tam > 3 ) {
		// retirar os zeros da esquerda
		//s = eval(s.substring(0))+'';
		j = 0;
		r = '';
		// ler os digitos de traz para frente colocando os pontos e guardando em r
		for( i = tam; i > 0 ; i-- ) {
		   j++;
		   if ( j == 4 ) {
			  j = 1;
			  r = '.' + r;
			 }
		   r = s.substring(i-1,i) + r;
		   }
	   // devolver para o resultado a parte inteira formatada
	   s = r;
	  }
	e.value =  s;
	if ( negativo ) {
		 e.value = ' -'+e.value+'';
		 s = ' -'+s+'';
		 }
	if ( e.value.length == 0 )
	   e.value = '';
	return s;
}


function formDinConfirmar( texto,novaAcao,submeter,formulario, campoFoco ) {
if (formulario == null)
	formulario = document.formdin;
if ( confirm(texto) ) {
	if (novaAcao != null ) {
		formulario.formDinAcao.value=novaAcao;
		}
	if (campoFoco != null ) {
		formulario.campoFoco.focus();
		}
	if ( submeter != null && submeter==true) {
		formulario.submit();
		return false;
		}
	return true;
  } else {
	 return false;
  }
}


function formDinFazer( acao,formulario ){
	if (formulario == null)
		formulario = document.formdin;
        if( !formulario)
        {
	        formulario = document.formDin;
        }
	try{
	// carregar as posicoes de scroll atual do formulario nos campos ocultos
	if( !document.getElementById('divFormDinMsgRodapeErros') ) {
		formulario.formDinPosVScroll.value = document.body.scrollTop+30;
		formulario.formDinPosHScroll.value = document.body.scrollLeft;
	}
	} catch(e){}
	try{
		acao=acao==null?'#':acao;
		formulario.formDinAcao.value=acao;
		formulario.submit();
	} catch(e){
		alert('coloque um campo hidden com id=formdinAcao no formulário\npara qua a acao '+acao+' possa ser submetida!');
	}
}

function autotab(origem,destino,evento) {
	ok=1;
	if (isNS4) {
		ok=!( evento.which == 16 || evento.which == 9 || evento.which == 8 || evento.which == 37 || evento.which == 38 || evento.which == 39 || evento.which == 40 ||evento.which == 36 || evento.which == 35 || evento.which == 45 || evento.which == 17 || evento.which == 18);
	} else {
		ok=!( evento.keyCode == 16 || evento.keyCode == 9 || evento.keyCode == 8 || evento.keyCode == 37 || evento.keyCode == 38 || evento.keyCode == 39 || evento.keyCode == 40 || evento.keyCode == 36 || evento.keyCode == 35 || evento.keyCode == 45 || evento.keyCode == 17 || evento.keyCode == 18);
	}
	if ( ok && origem.getAttribute && origem.value.length == origem.getAttribute("maxlength") )
	{
		setFocus(destino);
	}
}

function mudaCor(controle,cor,corFonte)
{
	if ( !cor ) {
		controle.style.backgroundColor = corAnterior;
		controle.style.color = corFonteAnterior;
	}
	else {
		corAnterior = controle.style.backgroundColor;
		corFonteAnterior = controle.style.color;
		controle.style.backgroundColor = cor;
		controle.style.color = corFonte;
		}
}

function formDinOpcaoDinamicaSelecionar(obj,campo,valor,campoFocar){
	objFrm=isNS4 ? document.getElementById(obj):document.all[obj]
	if( valor != '') {
	   objcampo=isNS4 ? document.getElementById(campo):document.all[campo]
	   if( objcampo ) {
		  objcampo.value = valor;
		  objcampo.focus();
		}
	   if(campoFocar) {
			objcampo=isNS4 ? document.getElementById(campoFocar):document.all[campoFocar];
			if( objcampo ) {
			   objcampo.focus();
				}
	   }
	}
  objFrm.style.visibility="hidden";
}

function formDinOpcaoDinamicaMostrar(event,iframe,centralizado,campoAtual,campoIframe,camposBvar,src)
{
	if( campoAtual && iframe && campoIframe )
	{
		try {
			//objFrm.document.getElementById(campoIframe).value = document.getElementById(campoAtual).value;
			try{
				 var valor = getObj(campoIframe.toLowerCase()).value;
			}
			catch(e)
			{
				 var valor = getObj(campoIframe).value;
			}
		} catch(e) {}
		if(valor)
		{
			src+='&valorCampoIframe='+valor;
		}
	}
	objFrm=getObj(iframe);
	if( iframeConsultaAberto != "" && iframeConsultaAberto != iframe)
	{
		f=isNS4 ? document.getElementById(iframeConsultaAberto) : document.all[iframeConsultaAberto];
		f.style.visibility="hidden";
		iframeConsultaAberto='';
	}
	iframeConsultaAberto=iframe;
	objFrm.src=src;
	if(centralizado==null)
	   centralizado=false;
	if ( objFrm.style.visibility=="visible")
	{
		objFrm.style.visibility="hidden";
		iframeConsultaAberto='';
	}
	else
	{
		if( centralizado==false ) {
			objFrm.style.top=event.clientY-18;
			objFrm.style.left=event.clientX-15;
		}
		if( campoAtual )
		{
			centralizarObjeto( objFrm);
			//window.frames[obj].centralizar(event);
		}

		objFrm.style.visibility="visible";
		if( campoAtual && iframe && campoIframe )
		{
			try {
			//objFrm.document.getElementById(campoIframe).value = document.getElementById(campoAtual).value;
			} catch(e) {}
		}
	}
}
function formDinImprimirTela(){
	if (window.print) {
		window.print() ;
	} else {
		var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
	document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
	WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";
	}
}

function formDinCheckUpload(campo,extensoes,campoOculto){
	var f=campo.value.toLowerCase().split('.');
	extensoes=trim(extensoes);
	if ( campo.value=='' || extensoes=='')
		return true;
	extensoes=extensoes.toLowerCase();
	if ( f.length < 2 && extensoes != null ) {
		alert('Nome de Arquivo Inválido!');
		return false;
		}
	else if ( extensoes != null && extensoes.indexOf( f[ f.length-1] ) == -1) {
		alert('Tipo de arquivo nao permitido!\nSelecione arquivo do tipo:'+extensoes);
		return false;
		}
	if (campoOculto != null){
		campoOculto.value=campo.value;
	}
return true;
}

function formDinLimitaTamanho(maximo,campo,contador,campoRotulo) {
	var dif, valor;
	total   = eval(maximo)
	if( campo.type == undefined )
		campo = getObj(campo);

   var st = campo.scrollTop;
	var sh = campo.scrollHeight;

	// tirar os chr(13)
	//campo.value = campo.value.replace(/\?/g,'');
	valor = campo.value.replace(/\?/g,'');
	tamanho = eval(valor.length);
	valor = valor.substring(0, total);
	faltam  = eval(total - tamanho);
	if (faltam <= "-1") {
		valor = valor.substr(0,maximo);
		campo.value = valor;
		if( (faltam*-1)>2)
		{
			if( campoRotulo!=null)
			{
				alert('O limite do campo '+campoRotulo.replace(':','')+' é de '+total+' caracteres. Foram excluídos '+(faltam*-1)+' caractesres do final do texto.');
			}
		}
		faltam='0';
	}
	if( st )
	{
		campo.scrollTop = st;
	}
	if(isNS4)
		contador = document.getElementById(contador);
	else
		contador = document.all[contador];

	if( contador ){
		contador.innerHTML=faltam+'/'+maximo;
//      if (faltam != maximo )
//          contador.innerHTML=faltam+'/'+maximo;
//      else
//          contador.innerHTML=faltam;
	}
}


function formDinMudarAba(nomeAbaClicada) {
	//alert( 'aqui..');
	//alert('Aba AbaAnterior:'+nomeAbaAnterior+'\n Nome abaClicada:' + nomeAbaClicada);

	if ( nomeAbaClicada != nomeAbaAnterior) {
		if (nomeAbaAnterior=="")
		   nomeAbaAnterior=nomeAbaClicada;
		if( isNS4 ){
		  document.getElementById('frmDinBtAba_'+nomeAbaAnterior).className='formDinAba';
		  document.getElementById('frmDinBtAba_'+nomeAbaClicada).className='formDinAbaAtual';
		  document.getElementById('formDinAba').value=nomeAbaClicada;
		  document.getElementById('formDinAbaDados'+nomeAbaAnterior).style.display='none';
		  document.getElementById('formDinAbaDados'+nomeAbaClicada).style.display='';
		}
		else{
		  document.all['frmDinBtAba_'+nomeAbaAnterior].className='formDinAba';
		  document.all['frmDinBtAba_'+nomeAbaClicada ].className='formDinAbaAtual';
		  document.all['formDinAba'].value=nomeAbaClicada;
		  document.all['formDinAbaDados'+nomeAbaAnterior].style.display='none';
		  document.all['formDinAbaDados'+nomeAbaClicada].style.display='';
		}
	nomeAbaAnterior=nomeAbaClicada;
	}
}

function formDinMostraEsconderCampoOutro(obj,textoAtual,textoMostrar){
	divNome = obj.name+'_outro';
	if (textoAtual == textoMostrar)
		disp='';
	 else
		disp='none';

	if( isNS4 )
		document.getElementById(divNome).style.display=disp;
	else
		document.all[divNome].style.display=disp;
	// focar o campo outro
	if (disp=='') {
		eval('document.'+obj.form.name+'.'+obj.name+'outro.focus();');
		}
}

function arredondar(val)
	{
		tval = Math.floor(val);
		fraction = Math.round(val*100)%100;
		if(fraction<10){
			fraction = "0" + fraction
		}
		val=tval+"."+fraction
		return val;
	}

function formataCampoMascara(object, evento, mascara ) {
	var tecla;
	var valor, temp, temp2;

	if (isNS4) {
		tecla=evento.which;
	} else {
		tecla=evento.keyCode;
	}

	valor = object.value;
	//window.status = tecla + '->'+valor;
	//Permitindo apenas numérico
	if( tecla < 96 || tecla >105 ) {
		evento.returnValue = false;
		if ( tecla==8 )
			valor=valor+ '';
		if ( tecla != 37 && tecla != 39 && tecla != 35 && tecla != 36 && tecla != 46 )
			tecla=8;
	}
	temp  = "";
	temp2 = "";
	if ( tecla ==8 || tecla == 88 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105) {
		if ( tecla==8 )
		   valor = valor.substring(0, valor.length-1 );
		for (i=0;i<valor.length;i++){
		  if ( valor.substring(i,i+1) != "." && valor.substring(i,i+1) != "," && valor.substring(i,i+1) != "-" && valor.substring(i,i+1) != "/" && valor.substring(i,i+1) != "(" && valor.substring(i,i+1) != ")" && valor.substring(i,i+1) != ":"  && valor.substring(i,i+1) != "º" && valor.substring(i,i+1) != "\"" && valor.substring(i,i+1) != "M" && valor.substring(i,i+1) != "S")
			temp = temp + valor.substring(i,i+1);
		}
		temp2 = "";
		j = 0;
		for (i=0; i<temp.length;i++){
		  if (mascara.substring(j,j+1)=="#"){
			temp2 = temp2 + temp.substring(i,i+1);
			j = j + 1;
		  }
		  else{
			temp2 = temp2 + mascara.substring(j,j+1) + temp.substring(i,i+1);
			j = j + 2;
		  }
		}

	  object.value = temp2;
	}
}

//-------------------------------------------------------------------------------------------------------------------------
function emailOk(obj) {
  // verificar se existe suporte para expressao regular;
  var supported = 0;
  var str=obj.value;
  if (str=='')
	 return true;
  if (window.RegExp) {
	var tempStr = "a";
	var tempReg = new RegExp(tempStr);
	if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) {
	alert('nao suportado');
	return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);

  }
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  var r = !r1.test(str) && r2.test(str);
  if (!r) {
	alert('Email inválido!');
  }
  return r;
}

//-------------------------------------------------------------------------------------------------------------------------
function formDinCepOk(e){
	var s = "";
	s = FiltraCampo(e.value);
	tam =  s.length;
	if(tam!=8 ) {
		e.value=''
	}
	return true;
}
//------------------------------------------------------------------------------------------------------------------------
function formDinFormataCep(e) {
	var s = "";
	s = FiltraCampo(e.value);
	tam =  s.length;
	if(tam>2 && tam<6 ) {
		s = s.substring(0,2)+'.'+s.substring(2,5);
	} else if ( tam > 5 ) {
		s = s.substring(0,2)+'.'+s.substring(2,5)+'-'+s.substring(5,8);
	}
	e.value = s;
	return s;
}

function formDinFormataFoneFax(e) {
	var s = "";
	var res = "";
	if (e.value.length == 18)
	{
		e.value = e.value.substring(0,17);
	}
	s = FiltraCampo(e.value);
	while ( s.substring(0,1) == "0" )
	{
		s1 = s.substring(1,s.length);
		s = s1;
	}
	if ( s.length == 14 || s.length == 12 )
		s = s.substring(s.length-10,s.length);
	if ( s.length == 13 || s.length == 11 )
		s = s.substring(s.length-9,s.length);

	res = s.substring(s.length-4,s.length);
	if ( s.length > 4  && s.length < 9 )
		res = s.substring(0,s.length-4)+"-"+res;
	if ( s.length > 8  )
		res = "(0xx" + s.substring(0,2) + ") " +
	s.substring(2,s.length-4) + "-" + res;
	e.value = res;
	return res;
}

function CalendarioMostrar(event,campo){
	//calendarioCampoAtual = eval(campo);
	if (isNS4){
		calendarioCampoAtual=document.getElementById(campo);
		document.getElementById('iframeCalendario').style.display='';
		document.getElementById('iframeCalendario').style.left=event.clientX + document.body.scrollLeft;
		document.getElementById('iframeCalendario').style.top =event.clientY + document.body.scrollTop;
	} else {
		calendarioCampoAtual=document.all[campo];
		document.all.iframeCalendario.style.display='';
		document.all.iframeCalendario.style.left=event.clientX + document.body.scrollLeft;
		document.all.iframeCalendario.style.top=event.clientY + document.body.scrollTop;
	}
}
function calendarioEscolher(data){
	if ( data != 'fecha' )
		calendarioCampoAtual.value = data;
	calendarioCampoAtual.focus();
	if (isNS4)
		document.getElementById('iframeCalendario').style.display='none';
	else
		document.all.iframeCalendario.style.display='none';
}

//-------------------------------------------------------------------------------------------------------------------------
function formDinAtualizarCampoIframe( campoFormDin,
								valorFiltro,
								nomePacote,
								nomePacoteParametro,
								valorInicial,
								arquivo,
								campoOutroTamanho,
								campoOutroRotulo,
								campoOutroValorMostrar,
								campoOutroCampoAtualizar,
								campoOutroValorInicial,
								executarFuncao ) {
	eval( 'iframe_'+campoFormDin
	+'.location.href="'+arquivo
	+ '?valorFiltro=' + valorFiltro
	+ '&nomePacote=' + nomePacote
	+ '&nomePacoteParametro=' + nomePacoteParametro
	+ '&valorInicial='+valorInicial
	+ '&campoFormDin='+campoFormDin
	+ '&campoOutroTamanho='+campoOutroTamanho
	+ '&campoOutroRotulo='+campoOutroRotulo
	+ '&campoOutroValorMostrar='+campoOutroValorMostrar
	+ '&campoOutroCampoAtualizar='+campoOutroCampoAtualizar
	+ '&campoOutroValorInicial='+campoOutroValorInicial
	+ '&executarFuncao='+executarFuncao+'"');
}
//-------------------------------------------------------------------------------------------------------------------------

// javascript utilizado para trocar o rotulo de um campo sem submeter o formulario
// campo        -> Nome do campo do formulario dinamico
// novoValor    -> valor para o qual deverá ser trocado
// valorTestar  -> [opcional] é um valor que deverá ser comparado com o valorVerdadeiro, se forem iguais
// o rotulo será trocado para o novoValor senao para o valorFalso;
function formDinSetValorRotulo(campo,novoValor,valorTestar,valorVerdadeiro,valorFalso){
	if ( valorTestar !='' ){
		if( valorTestar != valorVerdadeiro )
			novoValor=valorFalso;
	}
document.getElementById(campo+'Rotulo').innerHTML = novoValor;
}

//-------------------------------------------------------------------------------------------------------------------------
function formDinEsconderMostrarDiv(nomeDiv,esconder) {
	try {
		if( isNS4 ){
			if( esconder )
				 document.getElementById(nomeDiv).style.display='none';
			else
				 document.getElementById(nomeDiv).style.display='';
		} else {
			if (esconder)
				document.all[nomeDiv].style.display='none';
			else
				document.all[nomeDiv].style.display='';
		}
	} catch(e) {}
}

function grideSelecionar(acao,campoFormulario, valor){
	if (acao.toLowerCase().indexOf('excluir')> -1 && !confirm("Confirma exclusão ?" ))
		return;
	if (acao.toLowerCase().indexOf('cancelar')> -1 && !confirm("Confirma ?" ))
		return;
	if( campoFormulario ) {
		atualizarCampos(campoFormulario,valor);
	}
	if( acao ){
		formDinFazer( acao );
		}
}

function atualizarCampos(campos,valores){
	var aCampo = campos.split('|');
	var aValor = valores.split('|');
	var i;
	for(i=0;i<aCampo.length;i++){
		try {
			if (isNS4) {
				campo = document.getElementById(aCampo[i]);
			} else {
				campo=document.all[aCampo[i]];
			}
			// se nao encontrou o campo, converter para minuscula e tentar de novo
			if(!campo) {
				if (isNS4) {
					campo = document.getElementById(aCampo[i].toLowerCase());
				} else {
					campo = document.all[aCampo[i].toLowerCase()];
				}
			}
			if( campo ) {
				//campo.value=aValor[i].replace('“','"');
				// se for campo cpf, formatar.
				if( aCampo[i].toLowerCase().indexOf('cpf')>-1 && aValor[i].length==11 )
					aValor[i] = FormataCpf(null,aValor[i]);
				if( campo.type == undefined )
					campo.innerHTML= decodeURI(aValor[i]); // para campos label que não possuem value;
				else
					campo.value=decodeURI(aValor[i]);
			}
		} catch(e){}
	}
}

function hightab(what,e,edge){
	if ( document.getElementById ) {
//      color = (e.type.toLowerCase()=="mouseover") ? "#B5BED6" : '';
		color = (e.type.toLowerCase()=="mouseover") ? "#ffffff" : '';
		what.style.backgroundColor =color;

		//what.bgColor=document.getElementById("rightedge"+edge).bgColor=color;
	}
}
function formDinAbaClick(obj, abaNumero ) {
	if ( abaNumero != abaAnterior ) {
		if ( abaAnterior == 0 )
		   abaAnterior = abaNumero;
		if(obj==null)
		{
			obj = document.getElementById('frmDinBtAba'+abaNumero);
		}
		if(obj==null)
		{
			return;
		}
		obj.className='formDinAbaAtual';
		try {getObj('frmDinBtAba'+abaAnterior).className = 'formDinAba';} catch(e){}
		getObj('formDinAba').value=abaNumero;
		for ( i=1;i<10;i++ ) {
			if (!getObj('formDinAbaDados'+i)) {
				break;
			}
			if (i != abaNumero) {
				getObj('formDinAbaDados'+i).style.display='none';
			}
		}
		getObj('formDinAbaDados'+abaNumero).style.display='';
		abaAnterior=abaNumero;
	}
}

function formDinMostrarErros(erros){
	aErros = erros.split('|');
	if( aErros.length > 1 )
		saida=aErros.length+' erros encontrados!\n'
	else
		saida=aErros.length+' erro encontrado!\n'

	for(i=0 ; i < aErros.length ; i++){
		saida += aErros[i]+'.\n';
	}
	alert(saida);
}

function formDinLimparCampos(campos,iframe,url){
	aCampo = campos.split(',');
	for(i=0;i<aCampo.length;i++){
		try {
		document.getElementById(aCampo[i]).value='';
		} catch(e){}
	}
	if(iframe!=null && url!=null) {
		try {eval( iframe+'.location.href="'+url+'"');} catch(e) {};
	}
}

function travaTeclaF5(e) {
	var tecla;
	var src =  e.srcElement || e.target;

	if( window.location.href.indexOf('10.1') > -1 )
	{
		 return;
	}
	if (isNS4) {
		tecla = e.which;
	} else {
		tecla = window.event.keyCode;
	}
	if (tecla==116 || ( tecla==13 && src.type =='text' ) ) {
		if (isNS4){
			e.stopPropagation();
			e.cancelBubble=true;
			e.preventDefault();
			return false;
		}
		else {
			window.event.keyCode=0;
			window.event.cancelBubble=true;
			window.event.returnValue=false;
			return false;
		}
	}
	return true;
}

function formDinProcessoOk(e) {
	var dv = false;

	s = FiltraCampo(e.value);
	tam = s.length
	if ( tam == 15 || tam == 17 ) {
		if ( tam == 15 && s.substring(11,13) < 60 ) {
		   s = s.substring(0,tam-4) + "20" + s.substring(tam-4);
		   tam = 17;
		}
		num = s.substring(0,tam-2);
		for ( i = 0; i < 2; i++ ) {
			soma = 0;
			mult = num.length + 1;
			for ( k = 0; k < num.length ; k++ )
				soma += num.substring(k,k+1)*(mult-k);
			mod11 = 11 - (soma % 11);
			if ( mod11 < 10 )  dv_proc="0"+mod11;
			else  dv_proc = mod11 + "";
			dv_proc = dv_proc.substring(1,2);
			num+= dv_proc;
		}
		if ( num == s )
			dv = true;
	}
	if ( ! dv && tam > 0 ) {
		if( !formDinProcessoOk_SISPROT(e) ) {
			mensagem = "           Erro de digitação:\n";
			mensagem+= "          ===============\n\n";
			mensagem+= " DV para o processo " + e.value + " não confere!!\n";

			alert(mensagem);
			e.focus();
		}
	}
	return dv;
}

function formDinProcessoOk_SISPROT(e) {
	var dv = false;

	s = FiltraCampo(e.value);
	tam = s.length
	if ( tam == 15 || tam == 17 ) {
		num = s.substring(0,tam-2);
		for ( i = 0; i < 2; i++ ) {
			soma = 0;
			mult = num.length + 1;
			for ( k = 0; k < num.length ; k++ )
				soma += num.substring(k,k+1)*(mult-k);
			mod11 = 11 - (soma % 11);
			if ( mod11 < 10 )  dv_proc="0"+mod11;
			else  dv_proc = mod11 + "";
			dv_proc = dv_proc.substring(1,2);
			num+= dv_proc;
		}
		if ( num == s )
			dv = true;
	}
	return dv;
}


function formDinFormataProcesso(e) {
	var s = "";
	s = FiltraCampo(e.value);
	tam =  s.length;
	if ( tam >15 ) // && s.substring(0,5) == "02000" && s.substring(11,13) == "20" )
		ano_dig = 4;
	else
		ano_dig = 2;

	r = s.substring(0,5) + "." + s.substring(5,11) + "/";
	r+= s.substring(11,11+ano_dig)  + "-" + s.substring(11+ano_dig,13+ano_dig);
	//window.status = r + 'tam:'+tam;
	if ( tam < 6 )
		s = r.substring(0,tam);
	else if ( tam < 12 )
		s = r.substring(0,tam+1);
	else if ( tam < 12 + ano_dig )
		s = r.substring(0,tam+2);
	else
		s = r.substring(0,tam+3);

	e.value = s;
	return s;
}

function formDinMostrarImagem(e,iframe,abrirJanela) {
	var ext, v = urlencode(e.value);
	var e=v.toLowerCase().split('.');
	ext = e[ e.length-1]
	while ( v.indexOf('%5C') > -1 ) {
		v=v.replace('%5C','//');
	}
	if (!v)
	   return;
	v='file://'+v;
	if ( abrirJanela ) {
		if (isNS4 )
			nj=window.open('iframe_imagem.php?valor='+v+'&extensao='+ext,'nj','toolbar=no,location=no,scrollbars=yes,resizable=yes,width=400,height=400,top=100,left=180,alwaysRaised=yes,dependent=yes');
		else {
			if( nj ) {
			   //nj.navigate('iframe_imagem.php?valor='+v+'&extensao='+ext);
				//nj.location.href="iframe_imagem.php?valor="+v+"&extensao="'+ext;
				nj.close();
				nj=null;
			}
		   else
				nj = window.showModelessDialog('iframe_imagem.php?valor='+v+'&extensao='+ext,'nj','status:no;resizable:yes;scrollbars:yes;width:400;height:400;top:100;left:180;');
		}
	} else
	  eval( iframe+'.location.href="iframe_imagem.php?valor='+v+'&extensao='+ext+'"');
}


function urlencode(plaintext)
{
   var SAFECHARS = "0123456789" + // Numeric
   "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
   "abcdefghijklmnopqrstuvwxyz" +
   "-_.!~*'()"; // RFC2396 Mark characters
   var HEX = "0123456789ABCDEF";
   var encoded = "";
   for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
		if (ch == " ") {
			encoded += "+"; // x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
			encoded += ch;
		} else {
			var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
				alert( "Caractere unicode '" + ch + "' não pode ser codificado utilizando o padrão de codificaçao de URL.\n" + "(Codificaçao URL suporta somente caracteres de 8-bit.)\n" + "Será colocado um (+) no lugar." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

return encoded;
}
//-----------------------------------------------------------------------------------------------------------------------------
function abrirJanela(url,altura,largura,posicaoX,posicaoY) {
	var conf;
	try{
	   if (wTemp!=null) {
			wtemp.close();
		}
	} catch(e){}
	if( !altura )
		altura = 0;
	if(!largura )
		largura = 0;
	if(!posicaoX )
		posicaoX=0;
	if(!posicaoY)
	   posicaoY=0;
	if(!url)
	   url='about:blank';
	if ( isNS4 ) {
		altura	= (altura==0)?600:altura;
		largura	= (largura==0)?800:largura;
	  var conf = 'toolbar=no,location=no,scrollbars=yes,resizable=yes,width='+largura+',height='+altura+',top='+posicaoY+',left='+posicaoX+',alwaysRaised=yes,dependent=yes';
	  wtemp=window.open(url,null,conf);
	   wtemp.focus();
	} else {
		// internet explorer
		if(altura==0)
		{
		 conf = 'fullscreen:yes;center:no;status:no;resizable:yes;scrollbars:yes;top:0;left:0;';
		}
		else
		{
		conf = 'center:yes;status:no;resizable:yes;scrollbars:yes;width:'+largura+';height:'+altura+';top:'+posicaoY+';left:'+posicaoX+';'
		}
	  var wtemp=window.open(url,null,conf);
	  wtemp.focus();
	}
}

function formDinExibirAjuda(arquivo,iframe,largura){
	var hTotal = document.body.clientHeight;
	largura = (largura || 500);
	var t = parseInt( hTotal - document.body.scrollTop,10 );
	t = t-15;
	if( iframe ) {
		if(isNS4)
			obj=document.getElementById('iframe_ajuda_online');
		else
		   obj =documen.all['iframe_ajuda_online'];
		if(obj) {
			if (obj.style.display == '') {
				obj.style.display='none';
			} else {
				// posicionar o iframe ocupando toda a area da esquerda do formulario
				obj.style.top = 5;
				obj.style.left= 5;
				obj.style.height=t;
				obj.style.display='';
				try {eval( 'iframe_ajuda_online.location.href="'+arquivo+'"');
				} catch( e ) {
					alert('Não foi possível exibir o arquivo de ajuda:'+arquivo);
				 };
			}
		} else {
			alert('iframe: iframe_ajuda_online, não localizado no formulario!');
		}
	} else {
		abrirJanela('ajuda/'+arquivo,t,largura,10,30);
	}
}
//---------------------------------------------------------------------------------------
function retirarMascara(val) {
	var strCheck = "'[](){}<>=+-*/_|\~`!?@#$%^&:;,.";
	var aux="";
	var i;

	for(i=0; i<val.length; i++) {
		if(strCheck.indexOf(val.charAt(i))==-1) {
			aux+=val.charAt(i);
		}
	}
	return aux;
}
//-----------------------------------------------------------------------------------------
function colocarMascara(field, _mascara, event) {
	var key ='';
	var aux='';
	var len=0;
	var i=0;
	var strCheck = '0123456789';
	var rcode = (window.Event) ? event.which : event.keyCode;
	// se trocar o evento onKeypress por onKeyUp, tem que diminuir 48 para achar o codigo certo.
	rcode-=48;
	aux=field.value;
	aux=retirarMascara(aux);
	aux=mascara(_mascara,aux);
	if( (rcode < 1 ) || ( field.value.length >= _mascara.length )  ) {
		if( rcode < 0 ) {
			return false;
		}
	}
	key=String.fromCharCode(rcode);
	if(strCheck.indexOf(key)==-1) {
		key=String.fromCharCode(rcode+48);
		if(strCheck.indexOf(key)==-1) {
			i = field.value.toUpperCase().indexOf(key);
			aux = field.value.substr(0,i) + field.value.substr(i+1,1000);
			aux=mascara(_mascara,aux);
			field.value=aux;
			return false;
		}
	}
	field.value=aux;
	field.value = aux.substr(0,_mascara.length);
	return false;
}
//-----------------------------------------------------------------------------------------
function mascara(_mascara, val) {
	var i, mki;
	var aux="";

	for(i=mki=0; i<val.length; i++, mki++) {
		if(_mascara.charAt(mki)=='' || _mascara.charAt(mki)=='#' || _mascara.charAt(i)==val.charAt(i)) {
			aux+=val.charAt(i);
		} else {
			aux+=_mascara.charAt(mki)+val.charAt(i);
			mki++;
		}
	}
	return aux;
}
//-----------------------------------------------------------------------------------------------
function formDinAlterarBotao(nomeBotao, novoValor){
	var obj;
	if(isNS4)
		obj=document.getElementById(nomeBotao);
	else
		obj=document.all[nomeBotao];

	if( !obj ) {
		if(isNS4)
			obj=document.getElementById('btn'+nomeBotao);
		else
			obj=document.all['btn'+nomeBotao];
		if( !obj ) {
			alert('função formDinAlterarBotao: Nome do botão '+nomeBotao+' não existe no formulário.');
		}
	}
	if ( obj ) {
		obj.value=novoValor;
		}
	}
//-------------------------------------------------------------------------------------------
function formDinDesabilitarBotao(botao,form,rotulo){
	var obj=getObj(botao);
	var acao;
	if(!obj)
		var obj=getObj('btn'+botao);
	if(obj) {
		acao=obj.value;
		if(rotulo!=null)
			obj.value = rotulo;
		obj.disabled=true;
		if( form != null ){
			//var acao = botao.substring(0,3);
			//if( acao=='btn' ) {
			 //   acao=botao.substring(3,100);
			formDinFazer(acao);
			}
		}
}
//---------------------------------------------------------------------------------------------
function grideMarcarColunaCheck(campo){
	var i,obj;
	var marcar = null;
	for(i=1;i<2000;i++) {
		obj = document.getElementById(campo+'_'+i);
		if (!obj)
			obj = document.getElementById(campo+'_'+i+'_temp');
		if ( obj ) {
			if (!obj.disabled) {
				if(marcar==null){
					marcar = !obj.checked;
					}
				obj.checked = marcar;
			}
		} else
		   break;
	}
}
//-------------------------------------------------------------------------------------------------------
function preencherSelect(selectPai, selectFilho, colFiltroPacote, colChavePacote, colListarPacote, nomePacote, valorNulo, opcaoSelecione, valorOpcaoSelecione,bvars,pastaBase,tempoCache,selectMaster,valorPai) {
   var fr = document.getElementById('iframeGeral');

   valorNulo           = valorNulo           == null ? '' : valorNulo;
   opcaoSelecione      = opcaoSelecione      == null ? '' : opcaoSelecione;
   valorOpcaoSelecione = valorOpcaoSelecione == null ? '' : valorOpcaoSelecione;
   tempoCache          = tempoCache          == null ? '' : tempoCache;
   pastaBase           = pastaBase           == null ? 'base/includes/' : pastaBase
   if( selectMaster != null) {
	   try { valorMaster=document.getElementById(selectMaster).value;
	   //alert( valorPai);
	   //   valorPai=valorMaster;
	   //alert( valorPai);
	   } catch(e) {

	   }
   }
   fr.src = pastaBase+'preencherSelect.php?selectPai='+selectPai+
   '&selectFilho='+selectFilho+
   '&colFiltroPacote='+colFiltroPacote+
   '&colChavePacote='+colChavePacote+
   '&colListarPacote='+colListarPacote+
   '&nomePacote='+nomePacote+
   '&valorPai='+valorPai+
   '&valorNulo='+valorNulo+
   '&opcaoSelecione='+opcaoSelecione+
   '&valorOpcaoSelecione='+valorOpcaoSelecione+
   '&tempoCache='+tempoCache+
   '&selectMaster='+selectMaster+
   '&bvars='+bvars;
}
//-----------------------------------------------------------------------------------------------------------------
function limparOpcoesSelect(sel) {
	if(sel)
	{
	   while (sel.options.length > 0 )
	   {
		  sel.options[sel.options.length-1] = null;
	   }
	}
}
//------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
/*
Esta função conta a quantidade checkbox selecionados no gride
*/
function numChecks(campo,msg){
	var i,qtd,obj;
	var marcar = true;
	qtd=0;
	for(i=1;i<1000;i++) {
		obj = document.getElementById(campo+'_'+i);
		if ( obj ) {
			if( obj.checked) {
				qtd++;
			}
		} else {
		  break;
		}
	}
	if (!qtd && msg)
		alert( msg );
	return qtd;
}
//-----------------------------------------------------------------------------------------
function formDinValidarUnidadeArrecadacao(e) {
	var dv = false;
	var s = FiltraCampo(e.value);
	var soma=0;
	if ( s.length == 7 ) {
		soma=0;
		soma = soma + s.substring(0,1)*7;
		soma = soma + s.substring(1,2)*6;
		soma = soma + s.substring(2,3)*5;
		soma = soma + s.substring(3,4)*4;
		soma = soma + s.substring(4,5)*3;
		soma = soma + s.substring(5,6)*2;
		resto = soma % 11;
		if ( resto == 0 || resto==1 )
		  dv=resto;
		else
		  dv = 11-resto;
		if ( dv == s.substring(6,7) )
		  dv=true
		else{
			alert('Código da Unidade Arrecadação inválido\nDígito:'+dv);
		 dv=false;
		}
	} else
		e.value='';
	return dv;
}
//--------------------------------------------------------------------------------------------------------------
function getCookie (name) {
var dcookie = document.cookie;
var cname = name + "=";
var clen = dcookie.length;
var cbegin = 0;
   while (cbegin < clen) {
	 var vbegin = cbegin + cname.length;
	 if (dcookie.substring(cbegin, vbegin) == cname) {
		var vend = dcookie.indexOf (";", vbegin);
	   if (vend == -1) vend = clen;
		   return unescape(dcookie.substring(vbegin, vend));
		}
	cbegin = dcookie.indexOf(" ", cbegin) + 1;
	if (cbegin == 0) break;
	}
return null;
}
//--------------------------------------------------------------------------------------------------------------
function setCookie (name, value, expires) {
 if (!expires) {
	expires = new Date();
	expires.setTime(expires.getTime() +  (24 * 60 * 60 * 1000 * 365));
	}
 document.cookie = name + "=" + escape (value) + "; expires=" + expires.toGMTString() +  "; path=/";
}
//--------------------------------------------------------------------------------------------------------------
function delCookie (name) {
  var expireNow = new Date();
  document.cookie = name + "=" +"; expires=Thu, 01-Jan-70 00:00:01 GMT" +  "; path=/";
}
//--------------------------------------------------------------------------------------------------------------
function campo2cookie( idCampo ){
   var expdate = new Date();
   expdate.setTime(expdate.getTime() +  (24 * 60 * 60 * 1000 * 365));
   if ( idCampo && document.getElementById( idCampo) )
		setCookie(idCampo,document.getElementById( idCampo).value,expdate);
}
//--------------------------------------------------------------------------------------------------------------
function cookie2campo( idCampo ){
   if ( idCampo && document.getElementById( idCampo) )
		document.getElementById(idCampo).value= getCookie(idCampo);
}
//--------------------------------------------------------------------------------------------------------------
function setFocus( destino ){
  obj = document.getElementById(destino);
  if ( obj )
	try {
	 obj.focus();
	} catch(e){}
}
//--------------------------------------------------------------------------------------------------------------
function centralizarObjeto(obj)
{
	var wTotal = document.body.clientWidth;
	var hTotal = document.body.clientHeight;
	var wIframe = parseInt( obj.style.width,10);
	var hIframe = parseInt( obj.style.height,10);
	var t,l;
	t = parseInt( ( hTotal - hIframe)/2,10);
	l = parseInt( ( wTotal - wIframe)/2,10);
	t= t + document.body.scrollTop;
	l= l + document.body.scrollLeft;
	obj.style.top = t;
	obj.style.left= l;
}
//--------------------------------------------------------------------------------------------------------------
function exibirAjuda(strTexto,largura, altura,corFundo, corFonte, strArquivo, pastaBase, pacoteOracle, colunaChave, valorChave, colunaAjuda,titulo)
{
	// definir a largura e algura padrão se não forem informadas
	largura = largura || 400;
	altura  = altura || 200;
	titulo  = titulo || 'AJUDA AO USUÁRIO';
	pastaBase = pastaBase || 'base/';
	pacoteOracle = pacoteOracle ||'';
	corFundo = corFundo || '#FFFFE4'; // amarelo claro
	corFonte = corFonte || '#0000FF'; // azul
	//	alert( corFundo+' - ' + corFonte+' ' + largura + ' ' +altura);
	var obj = document.getElementById('div_ajuda_formdin_titulo');
	if( obj)
	{
		obj.innerHTML=titulo;
	}
	var obj = document.getElementById('div_ajuda_formdin');
	if( !obj)
	{
		alert('Objeto div_ajuda_formdin não encontrado');
		return;
	}
	obj.style.width   	= largura;
	obj.style.height  	= altura;
	obj.style.background = corFundo;
	var objAltura 			= parseInt(obj.style.height,10);
	obj.style.display		=''; // mostrar
	centralizarObjeto(obj);
	var obj = document.getElementById('div_ajuda_formdin_texto');
	if( !obj)
	{
		alert('Objeto div_ajuda_formdin_texto não encontrado');
		return;
	}
	obj.style.color=corFonte;
	obj.style.height= (objAltura-35)+'px';
	if( strArquivo||pacoteOracle )
	{
		var ajax = new Ajax();
		ajax.doGet(pastaBase+'includes/ler_ajuda.php?arquivo='+strArquivo+'&pacoteOracle='+pacoteOracle+'&colunaChave='+colunaChave+'&valorChave='+valorChave+'&colunaAjuda='+colunaAjuda,null,'text','div_ajuda_formdin_texto','Carregando ajuda...','div_ajuda_formdin_texto');
	}
	else
	{
		obj.innerHTML=strTexto;
	}
}
//------------------------------------------------------------------
function teclaEnterAcao(e,acao) {
	if (isNS4) {
		tecla = e.which;
	} else {
		tecla = window.event.keyCode;
	}
	if (tecla==13){
		if(acao)
		{
			formDinFazer(acao);
		return false;
		}
		return true;
	}
}
//-----------------------------------------------------------------
function getTecla(evento)
{
	var tecla;
	if (isNS4) {
		return evento.which;
	} else {
		return evento.keyCode;
	}
   return 0;
}
//------------------------------------------------------------------
function setOpcoesSelect(dados)
{
	var aCmbFilhos = dados.split(';');
	var i, opt;
	for(i=0;i<aCmbFilhos.length;i++)
	{
		eval('var obj='+aCmbFilhos[i]);
		comboPai = document.getElementById(obj['selectPai']);
		var indiceComboPai 		= comboPai.selectedIndex;
		var valorComboPai  		= comboPai.value;
		comboFilho = document.getElementById(obj['selectFilho']);
		if(!comboFilho)
		{
			alert( 'Função: setOpçõesSelect(), o campo:'+obj['selectFilho']+' não existe no formulário.');
			return;
		}
		else
		{
			limparOpcoesSelect(comboFilho);
			if (indiceComboPai == -1 || valorComboPai==''  )
			{
				// desabiltar o select filho
				comboFilho.disabled = true;
				if(obj['descNenhumaOpcao'])
				{
					opt = new Option(obj['descNenhumaOpcao'],'');
		        		comboFilho.options[comboFilho.options.length] = opt;
				}
				if( comboFilho.onchange)
				{
					//alert( 'x:'+obj['selectFilho'] );
					comboFilho.onchange();
				}
			}
			else
			{
				//alert( 'y:'+comboFilho.id );
				opt = new Option('Carregando...','');
				comboFilho.disabled=true;
	        	comboFilho.options[comboFilho.options.length] = opt;
				preencherSelectAjax(obj);
			}
		}
	}
}
//------------------------------------------------------------------------
function preencherSelectAjax(obj)
{
   var valorFiltro   = document.getElementById(obj['selectPai']).value;
   var acao;
   if( obj['acaoExecutar'] )
   {
   	acao=obj['acaoExecutar'];
   }
   if( !acao && !obj['pacoteOracle'])
   {
     alert('Necessário definir uma acao ou o nome do pacote oracle na função conbinarSelect()');
     return;
   }
   var arquivoInclude = 'includes/acoes_ajax.php';
   if( obj['arquivoInclude'] )
   {
   	arquivoInclude = obj['arquivoInclude'];
   }
   // campos do form que entrarão no filtro
   var campoFormFiltroValor='';
   var campoBvars='';
   if(obj['campoFormFiltro'])
   {
   	var aCampos=obj['campoFormFiltro'].split(',');
   	var aSubCampo;
   	for(i=0;i<aCampos.length;i++)
   	{
   		aSubCampo = aCampos[i].split('|');
   		if(!aSubCampo[1])
   		{
   			aSubCampo[1]=aSubCampo[0].toUpperCase();
   		}
   		if(campoFormFiltroValor!='')
   		{
   			campoFormFiltroValor+='|';
   			campoBvars+=aSubCampo[1]+'|';
   		}
   		campoBvars+=aSubCampo[1];
   		campoFormFiltroValor+=getObj(aSubCampo[0]).value;
   	}
   }
	var postData = 'campoSelect='+obj['selectFilho']+
	'&pacoteOracle='+obj['pacoteOracle']+
	'&colunaFiltro='+obj['colunaFiltro']+
	'&valorFiltro='+valorFiltro+
	'&selectFilhoStatus='+obj['selectFilhoStatus']+
	'&colunaCodigo='+obj['colunaCodigo']+
	'&colunaDescricao='+obj['colunaDescricao']+
	'&valorInicial='+obj['valorInicial']+
	'&descPrimeiraOpcao='+obj['descPrimeiraOpcao']+
	'&valorPrimeiraOpcao='+obj['valorPrimeiraOpcao']+
	'&descNenhumaOpcao='+obj['descNenhumaOpcao']+
	'&campoFormFiltro='+campoBvars+
	'&campoFormFiltroValor='+campoFormFiltroValor+
	'&acao='+acao;
	var ajax = new Ajax();
	ajax.doPost(arquivoInclude,postData,retornoPreencherSelectAjax,'text');
	return true;
}
//------------------------------------------------------------------------
var retornoPreencherSelectAjax = function(xhr)
{

	if( xhr == '' )
	{
		return;
	}
	eval('aDados='+xhr);
	if(!aDados)
	{
		return;
	}
	var objCombo	= document.getElementById(aDados['campo']);
	if( !objCombo)
	{
		alert('campo select ' + aDados['campo']+' não encontrado no formulário');
		return;
	}
	if( !aDados['dados'])
	{
		// pacote retornou vazio
	   limparOpcoesSelect(objCombo);
	   if (aDados['descNenhumaOpcao'])
	   {
		var opt = new Option(aDados['descNenhumaOpcao'],'');
    	  	objCombo.options[objCombo.options.length] = opt;
	   }
  		objCombo.disabled=true;
		if( objCombo.onchange )
		{
			objCombo.onchange();
		}
		return;
	}
	limparOpcoesSelect(objCombo);
	if(aDados['descPrimeiraOpcao'])
	{
		var opt = new Option(aDados['descPrimeiraOpcao'],aDados['valorPrimeiraOpcao']);
  	  	objCombo.options[objCombo.options.length] = opt;
	}
	for (key in aDados['dados'])
	{
		var opt = new Option(aDados['dados'][key],key);
		if(key==aDados['valorInicial'])
		{
			opt.selected=true;
		}
     	objCombo.options[objCombo.options.length] = opt;
   }
	// preencher select filho se existir
	if( objCombo.onchange)
	{
		objCombo.onchange();
	}
	objCombo.disabled= ( aDados['selectFilhoStatus']=='desabilitado');

}
//----------------------------------------------------------------
function adicionarOnLoad(funcao) {
 if (window.addEventListener)
	window.addEventListener("load", funcao, false);
 else if (window.attachEvent)
	window.attachEvent("onload",funcao);
 else
   alert('Este browser não permite anexar eventos.'+"\na função:\n"+funcao+"\nnão foi executada");
}
//----------------------------------------------------------------
 function adicionarEvento(nomeEvento,funcao) {
  if (window.addEventListener)
		 window.addEventListener(nomeEvento, funcao, false);
  else if (window.attachEvent)
		 window.attachEvent("on"+nomeEvento,funcao);
  else
	alert('Este browser não permite anexar eventos.'+"\na função:\n"+funcao+"\nnão foi executada");
 }
 //----------------------------------------------------------------
 function mostrarAnexo(params,pastaBase)
 {
	// parametros devem ser no formato json sendo:
	//nome do pacote,coluna chave, coluna lob, valor chave, nome do arquivo
	// ex:"{\"pacote\":\"SIGER.PKG_UNIDADE_IBAMA_ACORDO.SEL_LOB\",\"colunaChave\":\"SEQ_UNIDADE_IBAMA_ACORDO\",\"colunaLOB\":\"LOB\",\"valorChave\":'.$frm->get('seq_unidade_ibama_acordo').',\"nomeArquivo\":\"'.$frm->get('nom_arquivo').'\"}";
	if(!pastaBase)
	{
		pastaBase='base/';
	}
	var winDoc = abrirJanela(pastaBase+'includes/mostrarAnexo.php?dados='+params+'&browser='+nav.b+'&versao='+nav.v,0,0);
	return false;
 }
 //----------------------------------------------------------------
// Definir o estilo de um componente utilizando javascript
// o parametro dados deve estar no formato json ex: {color:'red',backgroundColor:'blue'}
function setEstilo(dados)
{
	eval('var oDados='+dados);
	var id = oDados['id'];
	if( !id )
	{
		alert("Para utilizar a função setEstilo, é necessário o parametro id. Ex: {id='div1'}");
		return;
	}
	var obj = document.getElementById(id);
	if (obj!=null)
	{
		for (key in oDados)
		{
			if(key!='id')
			{
				try{eval('obj.style.'+key+'="'+oDados[key]+'"');}catch(e){}
			}
		}
	}
}
//----------------------------------------------------------------
function viewSource() {
	window.location = "view-source:" + window.location.href
}
//----------------------------------------------------------------
//----------------------------------------------------------------
function doBlink(intervalo){
	if(isIE){
		if(intervalo==null)
		{
			intervalo=450;
		}
		if(intervalo>0)
		{
			intervalo=setInterval('doBlink(-1)',intervalo);
			return;
		}
	  obj = document.getElementsByTagName('BLINK');
	  for(i=0;i<obj.length;i++){
		  tag=obj[i];
		  tag.style.visibility=(tag.style.visibility=='hidden')?'visible':'hidden';
	  }
	}
}
//-----------------------------------------------------------------------------------------
// Função para substituir a document.getElementById()
function getObj(nomeObjeto){
	var obj;
	if(isNS4)
	{
		try {obj=document.getElementById(nomeObjeto);} catch(e){}
		if(!obj)
		{
			try{obj=document.getElementById(nomeObjeto+'disabled');} catch(e){}
		}
	}
	else
	{
			try{obj=document.all[nomeObjeto];} catch(e){}
			if(!obj)
			{
				try{obj=document.all[nomeObjeto+'disabled'];} catch(e){}
			}

	}
	return obj;
}
function getValue(nomeObjeto){
	if ( getObj(nomeObjeto) ){
		if ( getObj(nomeObjeto).type == 'select-one' ) {
			return getObj(nomeObjeto).options[getObj(nomeObjeto).selectedIndex].value;
		} else {
			return getObj(nomeObjeto).value;
		}
	} else {
		return null;
	}
}
function getText(nomeObjeto){
	if ( getObj(nomeObjeto) ){
		if ( getObj(nomeObjeto).type == 'select-one' ) {
			return getObj(nomeObjeto).options[getObj(nomeObjeto).selectedIndex].text;
		} else {
			return getObj(nomeObjeto).value;
		}
	} else {
		alert(nomeObjeto+' não encontrado');
		return null;
	}
}
//----------------------------------------------------------------------------------
// função para limpar todos os campos do formulário recebendo como parametros opcionalmente:
// 1)os nomes dos campos separados por "," que não devem ser limpos. Ex: campo1,campo2,campo3
// 2)o nome do formulario que será processado
function limparFormulario(excetoCampos,nomeFormulario)
{
	nomeFormulario = nomeFormulario==null?'formdin':nomeFormulario;
	var objForm = document.forms[nomeFormulario];
	if(!objForm) // se não encontrar, pegar o primeiro da lista
	{
		objForm=document.forms[0];
	}
	if(!objForm)
	{
		alert('função: limparFormulario(). Formulário '+nomeFormulario+' não existe');
	}
	excetoCampos=',modulo,moduloID,'+excetoCampos+',';
	excetoCampos=excetoCampos.replace(';',',');
	for (var i=0;i< objForm.elements.length;i++)
	{
		obj = objForm.elements[i];
		if( excetoCampos.indexOf(','+obj.name+',')==-1)
		{

			switch (obj.type) {
				// Text fields, hidden form elements
				case 'text':
				case 'hidden':
				case 'password':
				case 'textarea':
				case 'select-one':
					obj.value = '';
					break;
				case 'select-multiple':
					for( var j=0;j<obj.options.length;j++)
					{
						obj.options[j].selected=false;
					}
					break;
				case 'radio':
					if (obj.checked)
					{
						obj.checked=false;
					}
					break;
				case 'checkbox':
					if (obj.checked)
					{
						obj.checked=false;
					}
					break;
			}
		}
	}
	return null;
}
//---------------------------------------------------------
var formDinAutoSugestao = {
	bufferText: false,
	bufferTime: 1000,
	modified : function(textId,divSelect,IDRetorno,Pacote,campoTexto,campoCodigo,pastaBase,minimoCaracteres,funcaoRetorno)
	{
		if (typeof funcaoRetorno == "undefined") {
			funcaoRetorno = "";
		}
		var arrTextId = textId.split(',');
		var pos = encontrarPosicao(arrTextId[0]);
		getObj(divSelect).style.pixelLeft = pos[0];
		getObj(divSelect).style.pixelTop = pos[1];
		minimoCaracteres = minimoCaracteres || 1;
		IDRetornoLimpar = IDRetorno;
		for ( i=1; i<arrTextId.length; i++)
		{
			IDRetornoLimpar = IDRetornoLimpar.replace(','+arrTextId[i],'');
		}
		formDinLimparCampos(IDRetornoLimpar);
		setEstilo('{"id":"'+arrTextId[0]+'","backgroundImage":"","backgroundRepeat":"no-repeat","backgroundPosition":"center right"}');
		if( getObj(arrTextId[0]).value.length<minimoCaracteres)
		{
			return;
		}
		setTimeout('formDinAutoSugestao.compareBuffer("'+textId+'","'+xajax.$(arrTextId[0]).value+'","'+divSelect+'","'+IDRetorno+'","'+Pacote+'","'+campoTexto+'","'+campoCodigo+'","'+pastaBase+'","'+funcaoRetorno+'");', this.bufferTime);
	},
	compareBuffer : function(textId, strText,divSelect,IDRetorno,Pacote,campoTexto,campoCodigo,pastaBase,funcaoRetorno)
	{
		var arrTextId = textId.split(',');
		if (strText == xajax.$(arrTextId[0]).value && strText != this.bufferText) {
			this.bufferText = strText;
			IDRetornoLimpar = IDRetorno;
			for ( i=1; i<arrTextId.length; i++)
			{
				IDRetornoLimpar = IDRetornoLimpar.replace(','+arrTextId[i],'');
			}
			formDinLimparCampos(IDRetornoLimpar);
			pastaBase = pastaBase==null?'base/':pastaBase;
			setEstilo('{"id":"'+arrTextId[0]+'","backgroundImage":"url(\''+pastaBase+'imagens/carregando.gif\')","backgroundRepeat":"no-repeat","backgroundPosition":"center right"}');
			formDinAutoSugestao.makeRequest(textId,divSelect,IDRetorno,Pacote,campoTexto,campoCodigo,funcaoRetorno);
		}
	},
	makeRequest : function(textId,divSelect,IDRetorno,Pacote,campoTexto,campoCodigo,funcaoRetorno)
	{
		var arrTextId = textId.split(',');
		tam = arrTextId.length;
		var valores = '[';
		for ( var i=0; i<arrTextId.length ; i++)
		{
			idvar = arrTextId[i];
			valores += i==0?'':',';
			valores += '"'+xajax.$(idvar).value+'"';
		}
		valores += ']';
		xajax_autoCompletar(valores,textId,divSelect,IDRetorno,Pacote,campoTexto,campoCodigo,funcaoRetorno);
	},
	clearBuffer : function()
	{
		this.bufferText = false;
	}
}
//-----------------------------------------------------------------------------
function setImagemFundoCampo(campo,imagem)
{
   setEstilo('{"id":"'+campo+'","backgroundImage":"url(\''+imagem+'\')","backgroundRepeat":"no-repeat","backgroundPosition":"center right"}');
}
//-----------------------------------------------------------------------------
var ajaxExecutarJsRetorno =  function(html) {
	var posInicial = html.indexOf('<script>');
	if( posInicial>=0)
	{
		var posFinal   = html.indexOf('<\/script>');
		var js   = html.substr(posInicial,(posFinal-posInicial)+9);
		var html = html.substr(0,posInicial)+html.substr(posFinal+9)
		re = /<script>/gi;
		js = js.replace(re, 'eval("');
		js = js.replace('<\/script>', '");',"gi");
		try{
		eval(js);
		} catch(e){}
	}
   if(contadorRequisicoesAjax==0)
   {
		try {getObj('div_mensagem_ajax').innerHTML=html}
		catch(e){};
   }
}
//----------------------------------------------------------------------------
// Remover espaços do inicio
function RTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}
//----------------------------------------------------------------------------
// Remover espaços do final
function LTrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}
//----------------------------------------------------------------------------
// Remover espacos do inicio e fim
function trim( value ) {
	return LTrim(RTrim(value));
}
//----------------------------------------------------------------------------
//  Returns entity-encoded string by it's decoded equivalent:
String.prototype.normalize =
	function() {
		return this.replace(/&#([0-9]{4});/,
							function (str, p1, p2, offset, s) {
								return String.fromCharCode(p1);
							}
							);
}
//----------------------------------------------------------------------------
// esse função converte htmlentities númericos em entidades html
function htmlentities(texto)
{
	var i,carac,letra,novo='';
	for(i=0;i<texto.length;i++){
		carac = texto.substr(i,1).charCodeAt(0);
		if( (carac > 47 && carac < 58) || (carac > 62 && carac < 127) ){
			//se for numero ou letra normal
			novo += texto.substr(i,1);
		}else{
			novo += "&#" + carac + ";";
		}
	}
	return novo;
}
//----------------------------------------------------------------------------
// esse função converte htmlentities não númericos em carateres
String.prototype.htmlEntitieDecode = function()
{
	var entities = new Array ('&amp;','&agrave;','&aacute;','&acirc;','&atilde;','&auml;','&aring;',
							'&aelig;','&ccedil;','&egrave;','&eacute;','&ecirc;','&euml;','&igrave;',
							'&iacute;','&icirc;','&iuml;','&eth;','&ntilde;','&ograve;','&oacute;',
							'&ocirc;','&otilde;','&ouml;','&oslash;','&ugrave;','&uacute;','&ucirc;',
							'&uuml;','&yacute;','&thorn;','&yuml;','&Agrave;','&Aacute;','&Acirc;',
							'&Atilde;','&Auml;','&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;',
							'&Ecirc;','&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;',
							'&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;','&Oslash;','&Ugrave;',
							'&Uacute;','&Ucirc;','&Uuml;','&Yacute;','&THORN;','&euro;','&quot;','szlig;',
							'&lt;','&gt;','&cent;','&pound;','&curren;','&yen;','&brvbar;','&sect;','&uml;',
							'&copy;','&ordf;','&laquo;','&not;','&shy;','&reg;','&macr;','&deg;','&plusmn;',
							'&sup2;','&sup3;','&acute;','&micro;','&para;','&middot;','cedil;','&sup1;',
							'&ordm;','&raquo;','&frac14;','&frac12;','&frac34');

	var chars = new Array ('&#0038;','&#0224;','&#0225;','&#0226;','&#0227;','&#0228;','&#0229;','&#0230;','&#0231;','&#0232;','&#0233;',
						 '&#0234;','&#0234;','&#0236;','&#0237;','&#0238;','&#0239;','&#0240;','&#0241;','&#0242;','&#0243;','&#0244;',
						 '&#0245;','&#0246;','&#0248;','&#0249;','&#0250;','&#0251;','&#0252;','&#0253;','&#0254;','&#0255;','&#0192;',
						 '&#0193;','&#0194;','&#0195;','&#0196;','&#0197;','&#0198;','&#0199;','&#0200;','&#0200;','&#0200;','&#0200;',
						 '&#0204;','&#0205;','&#0206;','&#0207;','&#0208;','&#0209;','&#0210;','&#0211;','&#0212;','&#0213;','&#0214;',
						 '&#0216;','&#0217;','&#0218;','&#0219;','&#0220;','&#0221;','&#0222;','&#0128;','&#0148;','&#0223;','&#0060;',
						 '&#0062;','&#0162;','&#0163;','&#0164;','&#0165;','&#0166;','&#0167;','&#0168;','&#0169;','&#0170;','&#0171;',
						 '&#0172;','&#0173;','&#0174;','&#0175;','&#0176;','&#0177;','&#0178;','&#0179;','&#0180;','&#0181;','&#0182;',
						 '&#0183;','&#0184;','&#0185;','&#0186;','&#0187;','&#0188;','&#0189;','&#0190;')

	newString = this;
	for (var i = 0; i < chars.length; i++)
	{
		myRegExp = new RegExp();
		myRegExp.compile(entities[i],'g')
		newString = newString.replace (myRegExp, chars[i]);
	}
	return newString.normalize();
}
//----------------------------------------------------------------------------
// função javascript para recuperar os parametros recebidos via get, equivalente ao $_GET do php. Ex: a=jsRequest('num_pessoa');
function jsRequest( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
	return "";
  else
	return results[1];
}
//----------------------------------------------------------------------------

// Código para o gride dinámico
function gride_linha_editar(campo) {
	var linha = campo.parentNode.parentNode;
	var grideId = linha.parentNode.parentNode.parentNode.id;
	var numLinha = linha.rowIndex
	var celas = linha.cells;
	var valChave = false;
	var c;
	if ( !getObj('chave_'+grideId) ) {
		alert('Não foi encontrado o campo oculto "chave_'+grideId+'"');
	}
	for ( var i=0; i<celas.length; i++) {
		if ( celas[i].firstChild && celas[i].firstChild.type == 'hidden' && celas[i].firstChild.id.match(/^text_/) != null ) {
			if ( getObj('chave_'+grideId) && !valChave ) {
				valChave = parseInt(celas[i].firstChild.name.match(/\[(-?\d*)\]/)[1],10);
				if ( isNaN(valChave) ) {
					getObj('chave_'+grideId).value = numLinha;
				} else {
					getObj('chave_'+grideId).value = valChave;
				}
			}
			c = celas[i].firstChild.id.replace(/(^text_|_\d+$)/g,'');
			if ( !getObj(c) ) {
				alert('Não foi encontrado o campo "'+c+'"');
			}
			if ( getObj(c).type == 'select-one' ) {
				for ( var j=0; j<getObj(c).length;j++ ){
					if ( getObj(c).options[j].value == getObj('text_'+c+'_'+(numLinha-1)).value ) {
						getObj(c).selectedIndex = j;
					}
				}
			} else {
				getObj(c).value = getObj('text_'+c+'_'+(numLinha-1)).value;
			}
		}
	}
	getObj('btn_'+grideId).value = 'Alterar';
	eval(grideId+'_estrutura[\'numeroLinhaEdicao\']=numLinha;');

	var j=0;
	for(i=0;i<linha.cells.length;i++){
		if ( linha.cells[i].className == 'formDinGrideOperacao'
			|| linha.cells[i].className == 'formDinGrideBotaoDesabilitado' ) {
			eval(grideId+'_estrutura[\'botoesLinhaEdicao\'][j++]=linha.cells[i].innerHTML;');
		}
	}
	return false;
}

function gride_linha_alterar(botao,mensagem) {
	mensagem = typeof(mensagem) != 'undefined' ? mensagem : 'Dado(s) já existe(m) na lista';
	grideId = botao.id.match(/gride_[a-z_]+$/)[0];
	if ( !getObj(grideId) ) {
		alert('Não foi encontrado o gride "'+grideId+'"');
	}
	eval('var grdColunas='+grideId+'_estrutura["col"]');
	eval('var grdCabecalho='+grideId+'_estrutura["cab"]');
	eval('var grdBotoes='+grideId+'_estrutura["botoes"]');
	eval('var numLinha='+grideId+'_estrutura[\'numeroLinhaEdicao\'];');
	if ( !numLinha ) {
		numLinha = 0;
	}
	var obj;
	var retorno = false;
	var evalStr = 'for ( i=0;i<getObj(\'table_'+grideId+'\').rows.length-1; i++){ \n	if ( ';
	for ( i in grdColunas ) {
		if ( grdColunas[i]['type'] ) {
			if ( !col0 ) {
				var col0 = grdColunas[i]["name"]+'_';
			}
			obj = getObj(grdColunas[i]["name"].replace(/^text_/,''));
			if ( !obj ) {
				alert('não encontrado variavel vinculado à coluna '+grdColunas[i]["name"]);
				return;
			}
			if ( grdColunas[i]["obrigatorio"] ||  (obj && getValue(obj.id)) ) {
				if (obj.type == 'select-one' && obj.selectedIndex == 0) {
					alert(grdColunas[i]["title"] + ' sem informação!');
					return;
				} else if ( !obj.value ) {
					alert(grdColunas[i]["title"] + ' sem informação!');
					return;
				}
				evalStr += 'getValue(\''+grdColunas[i]["name"]+'_\'+i) == getValue(\''+obj.id+'\') && \n		';
			}
		}
	}
	evalStr += 'i != numLinha - 1 ) {\n';
	evalStr += '			alert(mensagem);\n';
	evalStr += '			retorno = true; \n		}\n';
	evalStr += '			if ( !retorno && getObj(\'table_\'+grideId).rows[1].cells.length > 1 && \n		';
	evalStr += 'i !=  numLinha - 1 && getValue( \'chave_\'+grideId) &&\n		';
	evalStr += 'getValue( \'chave_\'+grideId) == getObj(\''+col0+'\'+i).name.match(/\\[(-?\\d*)\\]/)[1] ) { \n';
	evalStr += '			alert(mensagem+\' (chave)\'); \n';
	evalStr += '			retorno = true; \n		} \n';
	evalStr += '		} \n';
	eval(evalStr);
	if ( retorno ) { return; }

	if  ( numLinha > 0 ) {
		var nl = numLinha-1;
	}
	else if ( !getObj(grideId+'_ln_1') || getObj(grideId+'_ln_1').cells.length == 1 ) {
		getObj('table_'+grideId).deleteRow(0);
		r= getObj('table_'+grideId).insertRow(0);
		r.id = grideId+'_ln_0';
		var c=document.createElement('th'); r.appendChild(c);
		c.className='formDinGrideTituloColunas';
		c.noWrap=true; c.innerHTML = 'Nº';
		for ( x in grdCabecalho ) {
			c=document.createElement('th'); r.appendChild(c);
			c.className='formDinGrideTituloColunas';
			c.noWrap=true; c.innerHTML = grdCabecalho[x];
		}
		c=document.createElement('th'); r.appendChild(c);
		c.className='formDinGrideTituloOperacao';
		c.colSpan=grdBotoes.length; c.rowSpan=1; c.innerHTML = 'Operação';
		getObj('table_'+grideId).rows[1].id=grideId+'_ln_1';
		if ( !getValue('chave_'+grideId) ) {
			getObj('chave_'+grideId).value = -1;
		}
		numLinha = 1;
		var nl = 0;
	} else {
		var nl = getObj('table_'+grideId).rows.length;
		var l=getObj('table_'+grideId).insertRow(getObj('table_'+grideId).rows.length);
		l.id=grideId+'_ln_'+nl;
		if ( !getValue('chave_'+grideId) ) {
			getObj('chave_'+grideId).value = -nl;
		}
		numLinha = nl;
		nl--;
	}
	var r = getObj(grideId+'_ln_'+(nl+1));
	getObj('table_'+grideId).deleteRow(nl+1);
	r= getObj('table_'+grideId).insertRow(nl+1);
	r.id = grideId+'_ln_'+(nl+1);

	var c=r.insertCell(-1);	c.className='formDinGrideTD';
	c.width=5; c.noWrap=true;
	c.innerHTML = '<span><center>('+(nl+1)+')</center></span>';
	var valCol;
	for ( i in grdColunas ) {
		c=r.insertCell(-1);	c.className='formDinGrideTD';
		if ( grdColunas[i]['style'] ) {
			for ( x in grdColunas[i]['style'] ) {
				eval('c.style.'+x+'="'+grdColunas[i]['style'][x]+'"');
			}
		}
		if ( grdColunas[i]['type'] ) {
			var col = grdColunas[i]['name'].substr(5);
			c.innerHTML = '<input type="hidden" id="text_'+col+'_'+nl+'" name="text_'+col+'['+getValue('chave_'+grideId)+']" value="'+getValue(col)+'">';
			valCol = getText(col);
			if ( getObj(col).type == 'select-one' ) {
				getObj(col).selectedIndex = 0;
				for ( var j=0; j<getObj(col).length;j++ ){
					if ( getObj(col).options[j].value == grdColunas[i]['valorInicial'] ) {
						getObj(col).selectedIndex = j;
					}
				}
			} else {
				getObj(col).value = grdColunas[i]['valorInicial'];
			}
		} else {
			c.innerHTML = valCol!=''?htmlentities(valCol):'&nbsp;';
		}
	}

	eval('var botoes='+grideId+'_estrutura[\'botoesLinhaEdicao\']');
	for ( i in grdBotoes ) {
		c=r.insertCell(-1);	c.className='formDinGrideOperacao'; c.style.width=5;
		if ( botoes.length > 0 ) {
			c.innerHTML = botoes[i];
		} else {
			c.innerHTML = '<a onClick="if(!'+grdBotoes[i]["js"]+')return;"><img align="middle" style="cursor:pointer;" alt="'+grdBotoes[i]["alt"]+'" title="'+grdBotoes[i]["title"]+'" src="'+grdBotoes[i]["srcHab"]+'"></a>';
		}
	}
	eval(grideId+'_estrutura[\'numeroLinhaEdicao\']=\'\';');
	eval(grideId+'_estrutura[\'botoesLinhaEdicao\']= new Array()');
	getObj('chave_'+grideId).value = '';
	eval('getObj(\'btn_\'+grideId).value='+grideId+'_estrutura[\'nomeBotaoAdicionar\'];');
	getObj('btn_'+grideId).value = 'Adicionar';
}

function gride_linha_remover(campo) {
	var linha = campo.parentNode.parentNode;
	var tabela = linha.parentNode.parentNode;
	var grideId = tabela.parentNode.id;
	var numLinha = linha.rowIndex;
	var tamGride = tabela.rows.length - 1;
	if ( tamGride <= 1 ) {
		tabela.deleteRow(0);
		var r= tabela.insertRow(0);
		tabela.deleteRow(1);
		r= tabela.insertRow(1);
		var c=r.insertCell(-1);	c.className='formDinGrideTituloOperacao'; c.colSpan=3;
		c.innerHTML = 'Nenhum registro encontrado';
	} else {
		tabela.deleteRow(numLinha);
		var r; var c;
	}
	for ( i=numLinha; i<tabela.rows.length; i++) {
		r = tabela.rows[i];
		r.id=grideId+'_ln_'+i;
		for ( j=0; j<r.cells.length; j++) {
			c = r.cells[j].innerHTML;
			r.cells[j].innerHTML = c.replace(/([\[\'])-\d+([\]\'])/g,'$1-'+i+'$2').replace(/<center>(\(?)\d+(\)?)</i,'<center>$1'+i+'$2<').replace(/id=("?)text_([a-z_]+)\d+/g,'id=$1text_$2'+(i-1));
		}
	}
	if ( getObj('chave_'+grideId) ) {
		getObj('chave_'+grideId).value = '';
	}
	getObj('btn_'+grideId).value = 'Adicionar';
	eval(grideId+'_estrutura[\'numeroLinhaEdicao\']=\'\';');
	return false;
}
//----------------------------------------------------------------
// remove todas as linhas do gride off-line passando o campo chave do gride
// ex: gride_linha_remover_todas('text_cod_municipio_operacao');
function gride_linha_remover_todas(campoChave) {
	if( !getObj(campoChave+'_0' ))
	{
		return;
	}
	for ( var i=0;i<1000;i++ )
	{
		if ( ! getObj(campoChave+'_0' ))
		{
			break;
		}
		gride_linha_remover(getObj(campoChave+'_0' ));
	}
}
//----------------------------------------------------------------
function chkMinMax(vMin, vMax, pCampo,casasDecimais)
{
	var tipoCampo='D';
	if(casasDecimais==0)
	{
		tipoCampo='I'; // inteiro ou decimal
	}
	var obj=getObj(pCampo);
	var v=obj.value;
	// tirar os pontos
	v = v.replace(/\./g,'').replace(/,/,'.');
	if( tipoCampo=='D' )
	{
		v=parseFloat(v);
		vMin =parseFloat(vMin);
		vMax =parseFloat(vMax);
	}
	else
	{
		v=parseInt(v,10);
		vMin =parseInt(vMin,10);
		vMax =parseInt(vMax,10);
	}
	if( isNaN(v) )
	{
		v=0;
	}
	if( !isNaN(vMin) || !isNaN(vMax) )
	{
		if( ( !isNaN(vMin) && v < vMin) || ( !isNaN(vMax) && v > vMax))
		{
			var msg='';
			if( !isNaN(vMin))
			{
				msg= 'Valor dever ser MAIOR ou IGUAL a '+formatarDecimal(vMin,casasDecimais);
			}
			if( !isNaN(vMax))
			{
				if ( msg !='')
				{
					msg +=' e MENOR ou IGUAL '+formatarDecimal(vMax,casasDecimais);
				}
				else
				{
					msg='Valor dever ser MENOR ou IGUAL a '+formatarDecimal(vMax,casasDecimais);
				}
			}
			if(msg!='')
			{
				alert(msg);
			}
		}
	}
}
//---------------------------------------------------------------------
function formatarDecimal(valorFloat,casasDecimais) {
	var valor = '' + valorFloat;
	var dpos = valor.indexOf('.');
	var decimais = '';
	var zeros='00000000000000000000';
	if (dpos != -1) {
		decimais = ',' + valor.substring(dpos + 1, valor.length);
		while (decimais.length <= casasDecimais){
			decimais+='0';
		}
		valor = valor.substring(0, dpos);
	} else {
		if (casasDecimais>0)
		{
		decimais = ','+zeros.substring(0,casasDecimais);
		}
	}
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(valor)) {
		valor = valor.replace(rgx, '$1' + '.' + '$2');
	}
	return valor+decimais;
}
//-----------------------------------------
function limparAreaDados(msg)
{
	if (!msg)
	{
		msg = 'Aguarde...';
	}
	msg='<span style="font-size:18px;color:blue;"><blink>'+msg+'</blink></span>';
	try
	{
	   // limpar a area dados/formulario
		  var obj = getObj('area_dados');
		  if(!obj)
	   {
			 obj=getObj('dados');
		  }
		  if (obj)
		  {
		  obj.innerHTML=msg;
		  }
	} catch(e){}
}
//------------------------------------------------------------------------------
function encontrarPosicao(objId) {
	if ( obj = getObj(objId) ) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			do {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			} while (obj = obj.offsetParent);
			return [curleft,curtop];
		}
	}
}
//------------------------------------------------------------------------------
function limitarData(dataCampo,idDataLimite,numeroDias) {
	objDataLimite = getObj(idDataLimite);
	if ( dataCampo && objDataLimite ) {
		var data1 = dataCampo.value.match(/(\d\d)[-/](\d\d)[-/](\d\d\d\d)/);
		var d1 = new Date();
		d1.setFullYear(parseInt(data1[3],10));
		d1.setMonth(parseInt(data1[2],10)-1);
		d1.setDate(parseInt(data1[1],10));
		var data2 = objDataLimite.value.match(/(\d\d)[-/](\d\d)[-/](\d\d\d\d)/);
		var d2 = new Date();
		d2.setFullYear(parseInt(data2[3],10),parseInt(data2[2],10)-1,parseInt(data2[1],10));
		d2.setMonth(parseInt(data2[2],10)-1);
		d2.setDate(parseInt(data2[1],10));
		if ( Math.abs(d2.getTime() - d1.getTime()) > Math.abs(numeroDias)*86400*1000 ) {
			d2.setTime(d1.getTime()+numeroDias*86400*1000);
			objDataLimite.value = (d2.getDate()>9?String(d2.getDate()):'0'+d2.getDate())+'/'
								+ (d2.getMonth()>8?String(d2.getMonth()+1):'0'+(d2.getMonth()+1))+'/'
								+ d2.getFullYear();
		}
	}
	return;
}
//------------------------------------------------------------------------------
function chr(AsciiNum)
{
	return String.fromCharCode(AsciiNum)
}
//-----------------------------------------------
function asc(String)
{
	return String.charCodeAt(0);
}
//---------------------------------------------------------
function limparEnter(e)
{
		try{
			e.value = trim(e.value.replace(/\?/g,''));
		}catch(e)
		{}
}
//---------------------------------------------------------
function formDinRemoverAnexo(e,anexo)
{
	var c=getObj(anexo+'_name');
	if (e)
	{
		if( confirm('Deseja remover o anexo '+c.value +' ?'))
		{
			getObj(anexo+'_size').value='';
			getObj(anexo+'_type').value='excluido';
			c.value='';
		}
	}
	else
	{
		e=getObj('btnExcluirAnexo_'+anexo);
	}
	try {e.style.display='none';} catch(e){}
}
//---------------------------------------------------------
//<div id="debug" style="overflow:auto;width:200px; height:400px;border:1px dashed red;position:absolute;top:800px;left:0px;">DEBUG</div>
function dbg(str)
{
	var obj = getObj('debug');
	obj.innerHTML = obj.innerHTML+'<BR>'+str;
}
// String.pad(length: Integer, [substring: String = " "], [type: Integer = 0]): String
// Retorna a string padificada a esquerda, direita ou ambos os lados.
// length -> quantidade de caracteres que a string deverá ter após executar a função
// substring -> string que será concatenada
// type -> especifica em o lado em que deverá ocorrer a concatenação, onde: 0 = esquerda, 1 = direita e 2 = ambos os lados
// "luis".pad(20,'*',0);
//-----------------------------------------------------------------
String.prototype.pad = function(l, s, t)
{
	return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length)
		+ 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2))
		+ this + s.substr(0, l - t) : this;
}
//-----------------------------------------------------------------------------------------