// JavaScript Document

// JavaScript Document

// ------------------------------
// Função: MASCARA
// Definir máscaras de digitação.
// Ex.: onkeypress="return txtBoxFormat(this.form, this.name, '999.999.999-99', event);"
// ------------------------------
function Mascara(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;
	} else {
    nTecla = evtKeyPress.which;
    if (nTecla == 8) {
        return true;
   	}
	}
	sValue = objForm[strField].value;
	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) == ".") || (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;
	}
}

var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
    var keyCode = (isNN) ? e.which : e.keyCode;
    var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
    if(input.value.length >= len && !containsElement(filter,keyCode)) {
        input.value = input.value.slice(0, len);
        input.form[(getIndex(input)+1) % input.form.length].focus();
    }

function containsElement(arr, ele) {
    var found = false, index = 0;
    while(!found && index < arr.length)
    if(arr[index] == ele)
        found = true;
    else
        index++;
        return found;
    }

function getIndex(input) {
    var index = -1, i = 0, found = false;
    while (i < input.form.length && index == -1)
        if (input.form[i] == input)index = i;
        else i++;
        return index;
    }
    return true;
}
// --------------------------


// Faz limpeza de strings. Utilizada pela função de validação    de campos obrigatorios
function limparstring(s) {
   while (s.search(" ")!=-1){
   s=s.replace(" ","");
   }
   return(s);
}
// ***


//Funcao de validacao de campos obrigatorios
function validarcampos(form) {
	
   	var a;
   	var s=new String;
   	var resp;

	resp = true;
	
	//Faz um laço através dos Inputs contidos no FORM. (coleção    Elements) 
   	for (a = 0; a < form.elements.length; a++)
   	{ 
   		//Verifica se o INPUT é obrigatório. Observe o acesso a um parâmetro    criado por nós
   		if (form.elements[a].Required == 1)
   		{	
   			if (form.elements[a].tagName != "SELECT") {
  				s = form.elements[a].value;
				s = limparstring(s);
	   			if (s.length == 0) {
				 	alert('O campo ' + form.elements[a].Descricao.toUpperCase() + ' é de preenchimento obrigatório!');
					form.elements[a].focus();					
   					resp = false;
					break;
   				}
   			} else
   			{ 
				if (form.elements[a].item(form.elements[a].selectedIndex).value == -99) {
   					alert('O campo ' + form.elements[a].Descricao.toUpperCase + ' é de preenchimento obrigatório!');
					form.elements[a].focus();					
   					resp = false;
					break;
   				}
   			}
   		}
   	} 
	return(resp);

}
// ***


// Função que converte Maiúscula/Minúscula
function maimin( campo, tipo ) {
	
	if ( tipo == 'M') campo.value = campo.value.toUpperCase()
	else campo.value = campo.value.toLowerCase();

}
// ***


/***
* FUNÇÃO FORMATAR CAMPO COM MÁSCARA
* Mascaras(objForm, strField, sMask, evKeyPress);
*
* 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 mascara(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;
}
}
// Fim da Função Mascaras()

// ***


/***
* ACEITAR SOMENTE NÚMEROS
* SomenteNumero();
* Ex.: onkeypress="SomenteNumero(this, event);"
***/
function somentenumero( campo, event ) { 
	var key; 
	var tecla; 
	var strValidos = "0123456789" 	
 
	if ( navigator.appName.indexOf( "Netscape" ) != -1 ) tecla= event.which; 
	else tecla = event.keyCode; 
  	key = String.fromCharCode( tecla ); 
	if ( tecla == 13 ) return false; 
	if ( tecla == 8 ) return true; 
  	if ( strValidos.indexOf( key ) == -1 ) return false; 
  	return true; 
	
}
//***


// Validar CPF
function valida_CPF(s)	{
	var i;
	s = limparstring(s);
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(10-i);
	}
        if (d1 == 0) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(11-i);
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
        return true;
}
// ***


// Validar CNPJ
function valida_CNPJ(s)
{
	var i;
	s = limparstring(s);
	var c = s.substr(0,12);
	var dv = s.substr(12,2);
	var d1 = 0;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+(i % 8));
	}
        if (d1 == 0) return false;
        d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		alert('CNPJ inválido!');
		return false;
	}
	return true;
}
// ***








