function JumpField(fields, total) {
if (fields.value.length == total) {
  for (var i = 0; i < fields.form.length; i++) {
   if (fields.form[i] == fields && fields.form[(i + 1)] && fields.form[(i + 1)].type != "hidden") {
    fields.form[(i + 1)].focus();
    break;
   }
  }
}
}


function enable(componente){
   componente.className = 'formmaior1';
    
}
function disable(componente){
   componente.className = 'formmaior';
}

function abre(url,janela,larg,alt,scroll,pos1,pos2){
window.open(url,janela,'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars='+scroll+',resizable=no,copyhistory=no,top='+pos1+',left='+pos2+',screenY='+pos1+',screenX='+pos2+',width='+larg+',height='+alt);
}

function mascaraInteiro(){
    if (event.keyCode < 48 || event.keyCode > 57){
        event.returnValue = false;
        return false;
    }
    return true;
}

function formataCampo(campo, Mascara, evento) { 
    var boleanoMascara; 
    
    var Digitato = evento.keyCode;
    exp = /\-|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace( exp, "" ); 
   
    var posicaoCampo = 0;     
    var NovoValorCampo="";
    var TamanhoMascara = campoSoNumeros.length;; 
    
    if (Digitato != 8) { // backspace 
        for(i=0; i<= TamanhoMascara; i++) { 
            boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                || (Mascara.charAt(i) == "/")) 
            boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(") 
                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")) 
            if (boleanoMascara) { 
                NovoValorCampo += Mascara.charAt(i); 
                  TamanhoMascara++;
            }else { 
                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo); 
                posicaoCampo++; 
              }            
          }     
        campo.value = NovoValorCampo;
          return true; 
    }else { 
        return true; 
    }
}

function MascaraCep(cep){
        if(mascaraInteiro(cep)==false){
        event.returnValue = false;
    }    
    return formataCampo(cep, '00000-000', event);
}

function MascaraCPF(cpf){
    if(mascaraInteiro(cpf)==false){
        event.returnValue = false;
    }    
    return formataCampo(cpf, '000.000.000-00', event);
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->

function erro(msg) {
	alert(msg);
	return false;
}

function erro_focus(msg, obj) {
	alert(msg);
	obj.focus();
	return false;
}

function dataValida(data) {
	// número de dias para cada mês
	dias = new Array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	d = data.split(/\//);

	if (d.length < 3) return false;
	
	// verifica o ano
	if (d[2] < 1900) return false;

	// verifica o mês
	if (d[1] < 1 || d[1] > 12) return false;

	// verifica o dia
	dm = dias[d[1] - 1];
	if (d[1] == 2) { if (d[2] % 4 == 0) dm = 29; }
	if (d[0] < 1 || d[0] > dm) return false;

	return true;
}

// verifica o email digitado.
function emailValido(mail) {
	return mail.match(/[0-9A-Za-z\.\_\-]+\@{1,1}[0-9A-Za-z\_\-]+\.{1,1}[0-9A-Za-z\_\-]+/);
}

// retorna se um campo está vazio desconsiderando espaços no início e no final
function vazio(valor) {
	s = new String(valor);
	s = s.replace(/^ +/, '');
	s = s.replace(/ +$/, '');
	return s.length == 0;
}

// retorna se um identificador contém apenas caracteres válidos
function idValido(id) {
	s = new String(id);
	validos = new String('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_');
	valido = true;
	for (i = 0; i < s.length; i++) valido = valido && validos.indexOf(s.charAt(i)) != -1;
	return valido && !vazio(id);
}

// submete os dados de um form ao servidor
function submitForm(cmd, frm) {
	if (!frm) {
		frm = document.forms[0];
	}
	frm.cmd.value = cmd;
	frm.submit();
}

// confirma um comando de exclusão e chama o submitForm
function confirmar(msg, cmd) {
	if (confirm(msg)) 
	location.href=(cmd);
}

function fillSelectFromArray(selectCtrl, itemArray, defaultItem) {
	var i, j;
	
	if (itemArray != null) {
		// prepara o select com os valores do array de sub-categorias
		for (i = selectCtrl.options.length; i >= 0; i--) {
			selectCtrl.options[i] = null;
		}
		
		// disponibiliza somente os valores relacionados a categoria
		//   escolhida.
		j = 0;
		for (i = 0; i < itemArray.length; i++) {
			selectCtrl.options[j] = new Option(itemArray[i][0]);
			if (itemArray[i][1] != null) {
				selectCtrl.options[j].value = itemArray[i][1];
				if (itemArray[i][1] == defaultItem) {
					selectCtrl.options[j].selected = true;
				}
			}
			j++;
		}
	}
}

function fillSelectFromArray1(selectCtrl, itemArray, defaultItem) {
	var i, j;
	
	if (itemArray != null) {
		// prepara o select com os valores do array de sub-categorias
		for (i = selectCtrl.options.length; i >= 0; i--) {
			selectCtrl.options[i] = null;
		}
		
		// disponibiliza somente os valores relacionados a categoria
		//   escolhida.
		j = 0;
		for (i = 0; i < itemArray.length; i++) {
			selectCtrl.options[j] = new Option(itemArray[i][0]);
			if (itemArray[i][1] != null) {
				selectCtrl.options[j].value = itemArray[i][1];
				if (itemArray[i][1] == defaultItem) {
					selectCtrl.options[j].selected = true;
				}
			}
			j++;
		}
	}
}


function valida_CGC_CPF(cgc_cpf) {
	ok = true

	if ( ( cgc_cpf.length == 14 || cgc_cpf.length == 11 ) &&
	     ( cgc_cpf != "00000000000" && cgc_cpf != "00000000000000" ) )
	{
		val_cgc_cpf = cgc_cpf.substring(0,cgc_cpf.length-2)
		val_cgc_cpf = val_cgc_cpf + dig_cgc_cpf(val_cgc_cpf)
		val_cgc_cpf = val_cgc_cpf + dig_cgc_cpf(val_cgc_cpf)
	    if (cgc_cpf != val_cgc_cpf)	{
    	    ok = false
			}
	}
	else {
		ok = false
  }

	return ok
}

function dig_cgc_cpf(cgc_cpf) {
	soma = 0
	for (var i = 0; i < cgc_cpf.length ; i++) {
		if (cgc_cpf.length >= 12)
			k = ( 2 +  i  % 8 )
		else
			k = ( i + 2 )
		soma = soma + parseInt(cgc_cpf.charAt(cgc_cpf.length - i - 1)) * k
	}	
	dig = ((10*soma)%11)%10
	digito = dig.toString() 
	return digito
}





// ------------------------------------------------------------------------------------------ //
// Acrescenta algumas propriedades aos controles:
// .Indice			: indica o índice na tela para o controle
// .IndiceAnterior	: indica o índice do controle anterior
// .IndicePosterior	: indica o índice para o controle posterior
// .Tam				: tamanho máximo para digitação
// .AutoSkip	: indica se pula para o próximo campo após completar o tamanho do campo
// .Tipo			: indica o tipo de dado
//						'D' -> só dígitos de 0(zero) a 9(nove)
//						'N' -> dígitos de 0(zero) a 9(nove), "."(ponto) e ","(vírgula)
//						'C' -> caracteres de 'a' até 'z' e de 'A' até 'Z'
//						outro -> qualquer caracter entre ascii 32 e ascii 127
// .Saltar		: (reservado) indica o momento de saltar de campo
// ------------------------------------------------------------------------------------------ //

// Carrega índices para o próximo controle e controle anterior
function InicializarIndices()
{
	if (document.CargaInicial==null)
	{
		document.CargaInicial=false;		// Seta para só fazer uma vez por documento
		var ctrlAnterior=null;
		var IndAnt=0;
		for ( var i=0; i<formcad.elements.length;i++)
		{
			var e=formcad.elements[i];
			if ( e.type!="hidden" && e.type!="image" )		
			{
				if ( ctrlAnterior != null )
					ctrlAnterior.IndicePosterior=i;
				ctrlAnterior=e;
				e.Indice=i;
				e.IndiceAnterior=IndAnt;
			}
		}
		//if ( ctrlAnterior!=null )
		//{
		//	ctrlAnterior.IndicePosterior=i-1;
		//}
	}
}

// Colocar o foco em determinado campo
function SetarFoco ( ind ) {
	InicializarIndices();
	if ( isNaN(ind) && formcad.elements[ind].type!="hidden" )
		formcad.elements[ind].focus();
	else
		for (;ind<formcad.elements.length;ind++)
			if ( formcad.elements[ind].type!="hidden" )
				break;
		if ( ind<=formcad.elements.length )
			formcad.elements[ind].focus();
}

// Limpar o conteúdo do(s) campo(s)
function LimparCampo ( ind )
	// Para -1, limpa todos os elementos
	{
	if (isNaN(ind))			// Limpa pelo nome
		formcad.elements[ind].value="";
	else if (ind != -1 )	// Limpa o elemento "ind" ( só considera "text" e "password" )
		for ( var i=ind; i < formcad.elements.length;i++ )
			if ( formcad.elements[i].type=="text" || formcad.elements[i].type=="password")		// Só limpa campo "text"
				{
				formcad.elements[i].value="";
				break;
				}
	else					// Limpa todos os elementos "text" e "password"
		for ( var i=0; i < formcad.elements.length; i++ )
			if ( formcad.elements[i].type=="text" || formcad.elements[i].type=="password" )
				formcad.elements[i].value="";
		
	}

// Verificar qual navegador
function QualNavegador() 
{
	var s = navigator.appName;
	if ( s == "Microsoft Internet Explorer" )
		return "IE";
	else if ( s == "Netscape" )
		return "NE";
	else
		return "";
}

// Verificar qual a versão do navegador
function QualVersao()
{
	var s = navigator.appVersion;
	if ( QualNavegador() == "IE" )
	{
		var i = s.search("MSIE");
		s=s.substring(i+5);
		i=s.search(".");
		return parseInt(s.substring(0,i+1));
	}
	else if ( QualNavegador() == "NE" )
		return parseInt(s.substring(0,1));
	else
		return 0;
}


// Setar o evento
function SetarEvento(ctrl, Tam, Tipo, AutoSkip )
{
	// Filtra navegadores conhecidos
	var s = QualNavegador();
	if ( s.length==0 )
		return;
	if ( s=="IE" && QualVersao()>6 )
		return;
	if ( s=="NE" && QualVersao()>4 )
		return;

	if (ctrl.onkeypress==null)
	{
		if (AutoSkip==null)
			AutoSkip=true;
		if (Tipo!=null)
			Tipo.toUpperCase();
		ctrl.Tam=Tam;
		ctrl.Tipo=Tipo;
		ctrl.AutoSkip=true;
		ctrl.Saltar=false;
		InicializarIndices();
		ctrl.onkeypress=ValidarTecla;
		if (QualNavegador()=="IE" && QualVersao()>=5)
			ctrl.onkeyup=SaltarCampo;
	}
}

function SaltarCampo(ctrl)
{
	if (ctrl==null)
		ctrl=this;
	if ( ctrl.AutoSkip && ctrl.Saltar)
		if (ctrl.Saltar)
		{
			ctrl.Saltar=false;
			if ( ctrl.IndicePosterior != null )
				SetarFoco(ctrl.IndicePosterior);
		}
}

// Fazer o salto de campo

function ValidarTecla (evnt)
{
	var tk;
  var c;
	var tkce;
	var ce;
	// Recebe a tela pressionada
	tk = ( (QualNavegador()=="IE") ? event.keyCode : evnt.which);
    c=String.fromCharCode(tk);
	c=c.toUpperCase();

	tkce = ( (QualNavegador()=="IE") ? event.keyCode : evnt.which);
    ce=String.fromCharCode(tkce);
	ce=ce.toUpperCase();
	
	// -- Este trecho faz com que o <Enter> tenha a função de <Tab>, mas acho inviável, pois não é possível
	//       colocar o foco em campos do Tipo "image", e, neste caso, nunca seria possível fazer a submissão
	//       do formcadulário
	// if ( tk == 13 )
	// {
	//	this.Saltar=true;
	//	SaltarCampo(this);
	//	return false;
	// }
	
	// Só aceita teclas alfanuméricas. Não aceita teclas de controle
    if ( tk < 32 )
		return true;
	if ( tk > 127 )
		return false;

	switch ( this.Tipo )
	{
	case "D":
		if ( c<"0" || c>"9" )
			return false;
		break;
	case "N":
		if ( (c<"0" || c>"9") && (c!="." && c!=",") )
			return false;
		if ( (c==",") && ((this.value.search(",")>-1) || (this.value.length==0)) )
			return false;
		if ( (c==".") && (this.value.length==0) )
			return false;
		break;
	case "C":
		if ( c<"A" || c>"Z" )
			return false;
		break;
	case "CE":
		if ( tkce < 33 )
			return true;
		if ( tkce > 127 )
			return false;
		if ( ce<"A" || ce>"Z" )
			return false;
		break;
	default:
		break;
	}

	this.Saltar=(this.value.length==this.Tam-1);
	if ( ((QualNavegador()=="IE") && QualVersao()<5) || (QualNavegador()!="IE") )
		SaltarCampo(this);

	return true;
}

function formcadataData(ctrl,formcadn,campo,teclapres) {
	var tecla = teclapres.keyCode;
	vr = document.formcad[formcadn][campo].value;
	vr = vr.replace( /\./gi, "" );
	vr = vr.replace( /\//gi, "" );
	vr = vr.replace( /\-/gi, "" );
	tam = vr.length;
	
	if ( tecla != 9 && tecla != 8) {
		if ( tam <= 1 ) {
			if (tecla == 109 || tecla == 111 || tecla == 189 || tecla == 191 ) {
				document.formcad[formcadn][campo].value = vr;
			}
		}
		else if ( tam >= 2 && tam <= 3)
			document.formcad[formcadn][campo].value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, tam );
		else if ( tam == 4 )
			document.formcad[formcadn][campo].value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/';
		else if ( tam > 4 )
			document.formcad[formcadn][campo].value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, tam );
	}

	// saltar para o proximo campo
	if ( tam == 8 ) {
		ctrl.Saltar=false;
		if ( ctrl.IndicePosterior != null )
			SetarFoco(ctrl.IndicePosterior);
	}
}

 function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}