function janela(pagina,TW,TH) {
        window.open(pagina, 'cliente', "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes"+",width="+TW+",height="+TH);
}

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 FormataLi(e) {
    var r = "";

    s = FiltraCampo(e.value);
    tam =  s.length;
    
    r = s.substring(0,2) + "/" + s.substring(2,9) + "-" + s.substring(9,10);
	e.value = r;
    return r;
}

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";
         alert(mensagem);
     }
     return dv;
}

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 DvMod11Ok(e) {
    var res =false;

    s = FiltraCampo(e.value);
    tam = s.length;
    soma=0;
    dv = s.substring(tam-1,tam);
    for ( i = 0; i <tam-1; i++ ) {
	soma += s.substring(i,i+1)*(11-tam+i);
    }
    digito = soma  % 11;
    if ( digito == 10 ) digito = 0;
    if ( digito == dv )
        res = true;
    else {
         mensagem = "           Erro de digita\347\343o:\n";
         mensagem+= "          ===============\n\n";
         mensagem+= "   Dígito verificador incorreto!!\n";
         alert(mensagem);
     }
    return res;
}

function DvCpfOk(e) {
    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";
         alert(mensagem);
     }
    return dv;
}

function FormataCpf(e) {
    var s = "";
    
    s = FiltraCampo(e.value);
    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);
    e.value = s;
    return s;
}

function DvProcessoOk(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;
    }
    if ( ! dv && tam > 0 ) {
        mensagem = "           Erro de digitação:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= " O Processo: " + e.value + " não existe!!\n";
        alert(mensagem);
    }
    return dv;
}

function FormataProcesso(e) {
    var s = "";
    
    s = FiltraCampo(e.value);
    tam =  s.length;
    if ( tam == 17 && 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);
    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 DvProcessoJFOk(e) {
    var dv = false;

    s = FiltraCampo(e.value);
    tam = s.length
    dv_orig = parseInt(s.substring(tam-1,tam));
    if ( tam == 11 ) { s = s.substring(0,4) + s.substring(5,11); tam=10; }
    if ( tam == 15 || tam == 10 ) {
        soma = 0;
        if ( tam == 15 ) {
            ano = parseInt(s.substring(0,4));
            secao = parseInt(s.substring(4,6));
        }
        if ( tam == 10 ||
             ( secao >= 30 && secao <= 43 && ano < 2002 ) ||
             ( secao == 1 && ano == 1997 ) ) {
            for ( k = 0; k < s.length-1 ; k++ )
                soma += parseInt(s.substring(k,k+1))*(k+1);
        } else if ( ( secao >= 30 && secao <= 43 && ano >= 2002 ) ||
                    ( secao == 1 && ano == 1997 ) ) {
            for ( k = 0; k < s.length-1 ; k++ )
                soma += parseInt(s.substring(k,k+1))*(k%10+1);
        } else {
            for ( k = 0; k < s.length-1 ; k++ )
                soma += parseInt(s.substring(k,k+1))*((13-k)%8+2);
        }
        mod11 = soma % 11;
        if ( mod11 > 9 )  mod11=0;
        if ( dv_orig == mod11 )
            dv = true;
    }
    if ( ! dv && tam > 0 ) {
        mensagem = "           Erro de digita\347\343o:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= " O Processo: " + e.value + " n\343o existe!!\n";
        alert(mensagem);
    }
    return dv;
}

function FormataProcessoJF(e) {
    var r = "";

    s = FiltraCampo(e.value);
    tam =  s.length;
    if ( tam == 15  ) {
        r = s.substring(0,4) + "." + s.substring(4,6) + ".";
        r+= s.substring(6,8) + "." + s.substring(8,14) + "-";
        r+= s.substring(14,15);
    } else if ( tam ==  10 && s.substring(1,3) == "00" ) {
        r = s.substring(0,2) + "." + s.substring(2,9) + "-";
        r+= s.substring(9,10);
    } else if ( tam == 10 ) {
        r = s.substring(0,2) + "." + s.substring(2,4) + ".";
        r+= s.substring(4,9) + "." + s.substring(9,10) + "-";
    } else if ( tam == 11 ) {
        r = s.substring(0,2) + "." + s.substring(2,4) + ".";
        r+= s.substring(4,10) + "." + s.substring(10,11) + "-";
    } else r=s;
	e.value = r;
    return r;
}

function DataOk(e) {
    var dv = false;

    s = FiltraCampo(e.value);
    tam = s.length
    if ( tam == 8 ) {
        dia = parseInt(s.substring(0,2),10);
        mes = parseInt(s.substring(2,4),10);
        ano = parseInt(s.substring(4,8),10);
        if ( dia > 0 && dia < 32 &&
             mes > 0 && mes < 13 &&
             ano > 1900 && ano < 2100 ) dv=true;
    }
    if ( ! dv && tam > 0 ) {
         mensagem = "           Erro de digitação:\n";
         mensagem+= "          ===============\n\n";
         mensagem+= " A data tem a seguinte formatação: DD/MM/AAAA!!\n";
         mensagem+= "        onde DD é Dia do mês,\n";
         mensagem+= "             MM é o número do mês,e \n";
         mensagem+= "             AAAA é o Ano com 4 dígitos.\n\n";
         mensagem+= " Exemplo: 15/04/2001\n";
	alert(mensagem);
    }
    return dv;
}

function FormataData(e) {
    var s = "";
    
    s = FiltraCampo(e.value);
    tam =  s.length;

    r = s.substring(0,2) + "/" + s.substring(2,4) + "/";
    r+= 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 CepOk(e) {
    var dv = false;

    s = FiltraCampo(e.value);
    tam = s.length
    if ( tam == 8 ) {
        dv=true;
    }
    if ( ! dv && tam > 0 ) {
        mensagem = "           Erro de digitação:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= " O Cep: " + e.value + " não existe!!\n\n\n";
	mensagem+= " Use o seguinte formato: ddddd-ddd\n\n";
        mensagem+= " Exemplo: 70800-200\n";
        alert(mensagem);
    }
    return dv;
}
function FormataCep(e) {
    var s = "";
    
    s = FiltraCampo(e.value);
    tam =  s.length;

    r = s.substring(0,5) + "-" + s.substring(5,8);
    if ( tam < 6 ) 
        s = r.substring(0,tam);
    else  
        s = r.substring(0,tam+1);
    e.value = s;
    return s;
}
 
function FormataFoneFax(e) {
    var s = "";
    var res = "";

    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 FormataCpfCnpj(e) {
    var s = "";
    s = FiltraCampo(e.value);
    if ( s.length == 11 ) {
        DvCpfOk(e);
        s=FormataCpf(e);
    }
    else if ( s.length == 14 ) {
        DvCnpjOk(e);
        s=FormataCnpj(e);
    }
    else {
         mensagem = "           Erro de digita\347\343o:\n";
         mensagem+= "          ===============\n\n";
         mensagem+= " O CNPJ ou CPF: " + e.value + " n\343o existe!!\n";
         alert(mensagem);
     }
    return s;
}

function FormataCpfCnpjCadastro(e) {
    var s = "";
    s = FiltraCampo(e.value);
    if ( s.length == 11 ) {
        DvCpfOk(e);
        s=FormataCpf(e);
    }
    else if ( s.length == 14 ) {
        DvCnpjOk(e);
        s=FormataCnpj(e);
    }
    else if ( s.length == 8 ) {
	DvMod11Ok(e);
        e.value = s.substring(0,7) + "-" + s.substring(7,8);
	s = e.value;
    }
    else if ( s.length > 7 || s.length <= 0 ) {
        mensagem = "           Erro de digita\347\343o:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= " Némero de cadastro: " + e.value + " n\343o existe!!\n";
        alert(mensagem);
    }
    return s;
}

function IntOk(e,min,max) {
    var v = parseInt(e.value,10);
    var v2 = parseFloat(e.value);
    if ( ( v < min || v > max ) && e.value.length > 0 ) {
        mensagem = "           Erro de digita\347\343o:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= e.value + " não é um valor entre ";
        mensagem+= min + " e " + max + "!!\n";
        alert(mensagem);
        return false;
    }
    if ( v != v2 ) {
        mensagem = "           Erro de digita\347\343o:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= e.value + " não é é um número inteiro!!\n ";
        alert(mensagem);
        return false;
    }
    if ( e.value.length > 0 && v >= min && v <= max && v == v2 ) {
        e.value = parseInt(e.value,10);
	return true;
    }
    else {
        mensagem = "           Erro de digita\347\343o:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= e.value + " não é é um número!!\n ";
        alert(mensagem);
        return false;
    }
    e.value = parseInt(e.value,10);
}

function FloatOk(e,min,max) {
    var v = parseFloat(e.value);
    if ( ( v < min || v > max ) && e.value.length > 0 ) {
        mensagem = "           Erro de digita\347\343o:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= e.value + " não é um valor entre ";
        mensagem+= min + " e " + max + "!!\n";
        alert(mensagem);
        return false;
    }
    if ( e.value.length > 0 && v >= min && v <= max  ) { 
    	e.value = parseFloat(e.value);
	return true;
    }
    else {
        mensagem = "           Erro de digita\347\343o:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= e.value + " não é é um número!!\n ";
        alert(mensagem);
        return false;
    }
}

function PreencherOk(e,min) {
    var j=0;
    for (var i=0; i<e.value.length; i++) {
        var c=e.value.charAt(i);
        if ((c!=' ') && (c != '\n') && (c != '\t')) j++;
    }
    if ( j < min ) {
        mensagem = "           Erro de digita\347\343o:\n";
        mensagem+= "          ===============\n\n";
        mensagem+= e.value + " não contém o número mínimo de  ";
        mensagem+= "carateres!!\n";
        alert(mensagem);
        return false;
    }
    else return true;
}

function VerificarForm(f) {
    for (var i=0; i<f.length; i++) {
        var e = f.elements[i];
        var sbmt = true;
        if (((e.type == "text") || (e.type == "textarea")) && !e.optional) {
            if ((e.value == null) || (e.value == "") || ( !PreencherOk(e,1))) {
                sbmt = false;
            }
        }
        if ((e.type == "select-one")  && !e.optional 
               && e.selectedIndex == 0 ) {
            sbmt = false;
        }
    }
    alert("Type: " + e.type);
    if ( ! sbmt ) {
        mensagem = "           Falta preencher dados\n";
        mensagem+= "          ===============\n\n";
        mensagem+= "Este formulário tem campos obrigatórios que";
        mensagem+= " não foram preenchidos!!\n";
        alert(mensagem);
        return false;
    }
    else return true;
}

function getRefToDiv(divID) {
        if( document.getElementById ) { //DOM; IE5, NS6, Mozilla, Opera
                return document.getElementById(divID); }
        if( document.layers ) { //Netscape layers
                return document.layers[divID]; }
        if( document.all ) { //Proprietary DOM; IE4
                return document.all[divID]; }
        if( document[divID] ) { //Netscape alternative
                return document[divID]; }
        return false;
}

function ShowItem(e) {
        e.style.visibility = "visible";
}

function HideItem(e) {
        e.style.visibility = "hidden";
}

function EsconderSelects(f) {
	for (i=0; i<f.length; i++) {
		if ( f.elements[i].type == "select-one" ) {
			var nome=f.elements[i].name;
			HideItem(f.elements[i]);
			ShowItem(getRefToDiv(nome + "div"));
		}
	}
}

function MostrarSelects(f) {
	for (i=0; i<f.length; i++) {
		if ( f.elements[i].type == "select-one" ) {
			var nome=f.elements[i].name;
			HideItem(getRefToDiv(nome + "div"));
			ShowItem(f.elements[i]);
		}
	}
}

/*** 
 * Descrição.: Permite que o usuário digite apenas números para o campo.
 * Uso.......: <input type="textbox" name="xxx" onkeypress="return soNumero();"> 
 ***/
function soNumero() { 
  // if((event.keyCode < 48 && event.keyCode != 46) || (event.keyCode > 57)) { 
  if((event.keyCode < 48) || (event.keyCode > 57)) { 
     event.returnValue = false; 
  } 
}

/*** 
* Descrição.: formata um campo do formulário de 
* acordo com a máscara informada... 
* Parâmetros: - objForm (o Objeto Form) 
* - strField (string contendo o nome 
* do textbox) 
* - sMask (mascara que define o 
* formato que o dado será apresentado, 
* usando o algarismo "9" para 
* definir números e o símbolo "!" para 
* qualquer caracter... 
* - evtKeyPress (evento) 
* Uso.......: <input type="textbox" 
* name="xxx"..... 
* onkeypress="return txtBoxFormat(document.rcfDownload, 'str_cep', '99999-999', event);"> 
* Observação: As máscaras podem ser representadas como os exemplos abaixo: 
* CEP -> 99.999-999 
* CPF -> 999.999.999-99 
* CNPJ -> 99.999.999/9999-99 
* Data -> 99/99/9999 
* Tel Resid -> (99) 999-9999 
* Tel Cel -> (99) 9999-9999 
* Processo -> 99.999999999/999-99 
* C/C -> 999999-! 
* E por aí vai... 
***/

function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

	if(document.all) { // Internet Explorer
		nTecla = evtKeyPress.keyCode; 
	} else if(document.layers) { // Nestcape
		nTecla = evtKeyPress.which;
	}

	sValue = objForm[strField].value;

	// Limpa todos os caracteres de formatação que
	// já estiverem no campo.
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;

	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;

	while (i <= mskLen) {
		bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

		if (bolMask) {
			sCod += sMask.charAt(i);
			mskLen++; 
		} else {
			sCod += sValue.charAt(nCount);
			nCount++;
		}

		i++;
	}

	objForm[strField].value = sCod;

	if (nTecla != 8) { // backspace
		if (sMask.charAt(i-1) == "9") { // apenas números...
			return ((nTecla > 47) && (nTecla < 58)); // números de 0 a 9
		} else { // qualquer caracter...
			return true;
		} 
	} else {
		return true;
	}
}

/*
 * fld    - Objeto com o valor.
 * milSep - Separador de milhar.
 * decSep - Separador de decimal.
 * e      - Evento.
 *
 * <form>
 *     Defina o Valor em Reais : 
 *     <input type=text name=test length=15 onKeyPress="return(currencyFormat(this,',','.',event))"> 
 * </form> 
 */

function currencyFormat(fld, milSep, decSep, e) { 
	var sep = 0; 
	var key = ''; 
	var i = j = 0; 
	var len = len2 = 0; 
	var strCheck = '0123456789'; 
	var aux = aux2 = ''; 
	var whichCode = (window.Event) ? e.which : e.keyCode; 
	
	var ie = ( document .all) ? true : false
	
	if (whichCode == 13) return true; // Enter 

	if (!ie) {
		if (whichCode == 8) return true; // Backspace
		if (whichCode == 0) return true; // Delete
	}
	
	key = String.fromCharCode(whichCode); // Get key value from key code 

	if (strCheck.indexOf(key) == -1) return false; // Not a valid key 
	
	len = fld.value.length; 
	
	for(i = 0; i < len; i++) 
		if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break; 
		
	aux = ''; 
	for(; i < len; i++) 
		if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i); 
		
	aux += key; 
	len = aux.length; 
	if (len == 0) fld.value = ''; 
	if (len == 1) fld.value = '0'+ decSep + '0' + aux; 
	if (len == 2) fld.value = '0'+ decSep + aux; 
	if (len > 2) { 
		aux2 = ''; 
		for (j = 0, i = len - 3; i >= 0; i--) { 
			if (j == 3) { 
				aux2 += milSep; 
				j = 0; 
			} 
			aux2 += aux.charAt(i); 
			j++; 
		} 
		fld.value = ''; 
		len2 = aux2.length; 
		for (i = len2 - 1; i >= 0; i--) 
			fld.value += aux2.charAt(i); 
		fld.value += decSep + aux.substr(len - 2, len); 
	} 
	return false; 
} 

