// JavaScript Document

// Variável Global bolValidaForm
// Utilizada para retornar para o formulário o resultado da validação dos campos.
// se todas as condições tiverem sido satisfeitas, retornará true.
	var bolValidaForm = true;
	
//***********************************************************************************************************************************
//Função: fnSetFocus
//Parâmetros: parFormName(Nome do Formulário)
				//parIndPos(Posição do campo a receber o foco na coleção de elementos(elements) do formulário.)
				
//Retorna: seta o foco do formulário no campo (posição) especificado

	function fnSetFocus(parFormName,parIndPos) {
		//Verifica se o elemento está visível, se estiver, seta o foco. Caso contrário ocorreria um erro.
		if(document.all[parFormName].elements[parIndPos].style.display!="none") {
			objFocus = document.all[parFormName].elements[parIndPos].focus();
		}
	}

//***********************************************************************************************************************************
//Função: fnTextField
//Parâmetros: parFormName(Nome do Formulário)
				//parFieldName(Nome do Campo)
				//parErrorMessage(Mensagem de Erro)
				
//Retorna: modifica a variável Global bolValidaForm. 
			 //Essa função avalia se o usuário preencheu o campo texto ou área de texto (text,textarea)

function fnTextField(parFormName, parFieldName, parErrorMessage) {
	
	Campo_Vazio(parFormName, parFieldName); //verifica se o campo tem algum preenchimento
	//remove os espaços desnecessários do campo
	(document[parFormName][parFieldName].value) = trim(document[parFormName][parFieldName].value); 
	valor_campo = (document[parFormName][parFieldName].value);

	if(valor_campo == '') {
	alert(parErrorMessage);
		if(document[parFormName][parFieldName].type!='hidden') {
		document[parFormName][parFieldName].focus();
		}
	bolValidaForm = false;
	}
	else {
	bolValidaForm = true;
	}
}
	
//***********************************************************************************************************************************
//Função: fnSelectBox
//Parâmetros: parFormName(Nome do Formulário)
				//parFieldName(Nome do Campo)
				//parErrorMessage(Mensagem de Erro)
				
//Retorna: modifica a variável Global bolValidaForm. 
			 //Essa função avalia se o usuário escolheu ao menos uma opção na caixa de seleção

	function fnSelectBox(parFormName, parFieldName, parErrorMessage) {
		var intOptionsCount
		var intI
		var bolSelected
		
		intOptionsCount = (document.all[parFormName][parFieldName].length);
		
		for(intI=0;intI<intOptionsCount;intI++) {
			if(document.all[parFormName][parFieldName].options[intI].selected == true) {
				bolSelected = true;		
			}
		}
		
		if(bolSelected==true) {
			bolValidaForm = true;
		} else {
				bolValidaForm = false;
				document.all[parFormName][parFieldName].focus();
				alert(parErrorMessage);
		}
	}
	
//============================= FORMATA DECIMAL ============================
function Formata_Decimal(numero) {
	return Math.round(numero*100)/100;
}
//============================== FIM FORMATA DECIMAL =======================
//============================= CURRENCY ===================================
//Formata campos numéricos para apresentarem duas casas decimais
function FormatCurrency(num) { 
	var sign, cents; 
	num = num.toString().replace(/\$|\,/g,''); 
if(isNaN(num)) 
	num = "0"; 
	sign = (num == (num = Math.abs(num))); 
	num = Math.floor(num*100+0.50000000001); 
	cents = num%100; 
	num = Math.floor(num/100).toString(); 
if(cents<10) 
	cents = "0" + cents; 
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
	num = num.substring(0,num.length-(4*i+3))+','+ 
	num.substring(num.length-(4*i+3)); 
return (((sign)?'':'-') + num + '.' + cents); 
}
//============================= FIM CURRENCY ================================

// ====================== INICIO RETIRA VÍRGULAS ============================
function RetiraVirgulas(string) {
	padrao = [,]
	for (i=0;i<=string.length;i++) {
		if(string.charAt(i)==",") {
			string=string.replace(padrao, "")
		}
	}
	return(string);
}
// ====================== FIM RETIRA VÍRGULAS ===============================

// ====================== INICIO VALIDA EMAIL ===============================
	function fnCheckEmail(nome_form, nome_campo, mensagem) {
		
		var x = (document[nome_form][nome_campo].value)
		var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		
		if (filter.test(x)) {
			bolValidaForm = true;
		}
		else {
			alert(mensagem);
			document[nome_form][nome_campo].focus();
			bolValidaForm = false;
		}
	}
// ====================== FIM VALIDA EMAIL ===============================
	
// ====================== INICIO VALIDA CPF/CNPJ ===============================

function pfValidaCPF_CGC(msCPF_CGC, msMSG){
				if (!(checa(msCPF_CGC.value, msMSG))){
					msCPF_CGC.focus();
					bolValidaForm = false;
				}
				else{ 
					bolValidaForm = true; 
					}
			}

			function checa(msCPF_CGC, msMSG){
				if ((msCPF_CGC.length != 14) && (msCPF_CGC.length !=11)){
					alert(msMSG);
					return false;
				}
			  
				if ((!(modulo(msCPF_CGC.substring(0,msCPF_CGC.length - 2)).toString()+modulo(msCPF_CGC.substring(0,msCPF_CGC.length - 1)).toString() == msCPF_CGC.substring(msCPF_CGC.length - 2,msCPF_CGC.length))) && (modulo_cic(msCPF_CGC.substring(0,msCPF_CGC.length - 2)) + "" + modulo_cic(msCPF_CGC.substring(0,msCPF_CGC.length - 1)) != msCPF_CGC.substring(msCPF_CGC.length - 2,msCPF_CGC.length))){
						if (msCPF_CGC.length == 11) {
						alert("CPF inválido!");
						}
						if (msCPF_CGC.length == 14) {
						alert("CNPJ inválido!");
						}
					
					return false;
				}
				return true;
			}

			function modulo(msCPF_CGC){
				soma=0;
				ind=2;
				
				for(pos=msCPF_CGC.length-1;pos>-1;pos=pos-1){
					soma = soma + (parseInt(msCPF_CGC.charAt(pos)) * ind);
					ind++;
			      
					if(msCPF_CGC.length>11){ 
						if(ind>9) ind=2; 
			        }
				}
				
				resto = soma - (Math.floor(soma / 11) * 11);
					 
				if(resto < 2){ 
					return 0; 
				}
				else{ 
					return (11 - resto); 
				}
			}

			function modulo_cic(msCPF_CGC){
			   	soma=0;
				ind=2;

				for(pos=msCPF_CGC.length-1;pos>-1;pos=pos-1){
					 soma = soma + (parseInt(msCPF_CGC.charAt(pos)) * ind);
					 ind++;
					 
					 if(msCPF_CGC.length>11){	
					    if(ind>9) ind=2; 
					 }
				}				
				
				resto = soma - (Math.floor(soma / 11) * 11);
					  
				if(resto < 2){	
					return 0; 
				}
				else{ 
					return 11 - resto;
				}
			}

// ======================== FIM VALIDA CPF/CNPJ ==================================

//======================= INICIO VALIDA DATA =============================

/**********************************************************************/ 
/*Function name :isDigit(theDigit) */ 
/*Usage of this function :test for an digit */ 
/*Input parameter required:thedata=string for test whether is digit */ 
/*Return value :if is digit,return true */ 
/* else return false */ 
/**********************************************************************/ 
function isDigit(theDigit) 
{ 
var digitArray = new Array('0','1','2','3','4','5','6','7','8','9'),j; 

for (j = 0; j < digitArray.length; j++) 
{if (theDigit == digitArray[j]) 
return true 
} 
return false 

} 
/*************************************************************************/ 
/*Function name :isPositiveInteger(theString) */ 
/*Usage of this function :test for an +ve integer */ 
/*Input parameter required:thedata=string for test whether is +ve integer*/ 
/*Return value :if is +ve integer,return true */ 
/* else return false */ 
/*function require :isDigit */ 
/*************************************************************************/ 
function isPositiveInteger(theString) 
{ 
var theData = new String(theString) 

if (!isDigit(theData.charAt(0))) 
if (!(theData.charAt(0)== '+')) 
return false 

for (var i = 1; i < theData.length; i++) 
if (!isDigit(theData.charAt(i))) 
return false 
return true 
} 
/**********************************************************************/ 
/*Function name :isDate(s,f) */ 
/*Usage of this function :To check s is a valid format */ 
/*Input parameter required:s=input string */ 
/* f=input string format */ 
/* =1,in mm/dd/yyyy format */ 
/* else in dd/mm/yyyy */ 
/*Return value :if is a valid date return 1 */ 
/* else return 0 */ 
/*Function required :isPositiveInteger() */ 
/**********************************************************************/ 
function isDate(s,f) 
{var a1=s.split("/"); 
var a2=s.split("-"); 
var e=true; 
if ((a1.length!=3) && (a2.length!=3)) 
{ 
e=false; 
} 
else 
{if (a1.length==3) 
var na=a1; 
if (a2.length==3) 
var na=a2; 
if (isPositiveInteger(na[0]) && isPositiveInteger(na[1]) && isPositiveInteger(na[2])) 
{ if (f==1) 
{var d=na[1],m=na[0]; 
} 
else 
{var d=na[0],m=na[1]; 
} 
var y=na[2]; 
if ((e) && (y<1000)) 
e=false 
if (e) 
{ 
v=new Date(m+"/"+d+"/"+y); 
if (v.getMonth()!=m-1) 
e=false; 
} 
} 
else 
{ 
e=false; 
} 
} 
return e 
} 
function fnCheckDate(nome_form, nome_campo, mensagem) 
{ 
var s=document[nome_form][nome_campo].value; 
	if (isDate(s,0)) { //dd/mm/yyyy format
	bolValidaForm = true;
	}
	else {
	alert(mensagem);
	document[nome_form][nome_campo].focus();
	bolValidaForm = false;
	}
} 
//======================= FIM VALIDA DATA =============================

//======================== INICIO REMOVE ESPAÇOS BRANCOS =================
//remove espaços lado esquerdo
function ltrim(argvalue) {

  while (1) {
    if (argvalue.substring(0, 1) != " ")
      break;
    argvalue = argvalue.substring(1, argvalue.length);
  }

  return argvalue;
}

//remove espaços lado direito
function rtrim(argvalue) {

  while (1) {
    if (argvalue.substring(argvalue.length - 1, argvalue.length) != " ")
      break;
    argvalue = argvalue.substring(0, argvalue.length - 1);
  }

  return argvalue;
}

//remove espaços em branco lados direito e esquerdo
function trim(argvalue) {
  var tmpstr = ltrim(argvalue);
  tmpstr = rtrim (tmpstr);
  return (tmpstr);
}
//======================== FIM REMOVE ESPAÇOS BRANCOS =================

//======================== INICIO CHECA SE É NÚMERO =====================
//Verifica se o campo contém apenas números
function Valida_Campo_Numero(nome_form, nome_campo, mensagem) {
(document[nome_form][nome_campo].value) = trim(document[nome_form][nome_campo].value);
	
	valor_campo = (document[nome_form][nome_campo].value)
	valor_campo = RetiraVirgulas(valor_campo)
	teste_campo = isNaN(valor_campo)
	
	if (teste_campo==true) {
		alert(mensagem);
		document[nome_form][nome_campo].focus();
		bolValidaForm = false;
	}
	else {
		bolValidaForm = true;
	}
}      

//Verifica se o campo contém apenas números (campos múltiplos - vetor)
function Valida_Campo_Numero_Vetor(nome_form, nome_campo, vetor, mensagem) {
(document[nome_form][nome_campo][vetor].value) = trim(document[nome_form][nome_campo][vetor].value);
	
	valor_campo = document[nome_form][nome_campo][vetor].value
	valor_campo = RetiraVirgulas(valor_campo)
	teste_campo = isNaN(valor_campo)

	if (teste_campo==true) {
		alert(mensagem);
		document[nome_form][nome_campo][vetor].focus();
		bolValidaForm = false;
		}
		else {
		bolValidaForm = true;
	}
}   
//======================== FIM CHECA SE É NÚMERO =====================

//======================== INICIO CHECA SE FOI PREENCHIDO ===============
//Verifica se o campo está vazio, ignorando espaços brancos
function Campo_Vazio(nome_form, nome_campo) {

string = document[nome_form][nome_campo].value
vazio = true;

	for (i=0; i<string.length; i++) {
	//32 (barra de espaço)
	//13 & 10 (retorno de carro)
	enter = string.charAt(i);
	enter = (enter.charCodeAt(0));
		if (enter!=13 && enter!=10 && enter!=32) {
		vazio = false;
		break;
		}
	}
	
	if(vazio==true) {
	document[nome_form][nome_campo].value = '';
	}
}

//Verifica se o campo está vazio, ignorando espaços brancos (campos múltiplos - vetor)
function Campo_Vazio_Vetor(nome_form, nome_campo, vetor) {

string = document[nome_form][nome_campo][vetor].value
vazio = true;

	for (i=0; i<string.length; i++) {
	//32 (barra de espaço)
	//13 & 10 (retorno de carro)
	enter = string.charAt(i);
	enter = (enter.charCodeAt(0));
		if (enter!=13 && enter!=10 && enter!=32) {
		vazio = false;
		break;
		}
	}
	
	if(vazio==true) {
	document[nome_form][nome_campo][vetor].value = '';
	}
}

//Verifica se o campo foi preenchido e remove espaços desnecessários (campos múltiplos - vetor)
function Valida_Campo_Texto_Vetor(nome_form, nome_campo, vetor, mensagem) {
	
	Campo_Vazio_Vetor(nome_form, nome_campo, vetor); //verifica se o campo tem algum preenchimento

	//remove os espaços desnecessários do campo
	(document[nome_form][nome_campo][vetor].value) = trim(document[nome_form][nome_campo][vetor].value); 
	valor_campo = (document[nome_form][nome_campo][vetor].value);
	
	if(valor_campo == '') {
	alert(mensagem);
	document[nome_form][nome_campo][vetor].focus();
	bolValidaForm = false;
	}
	else {
	bolValidaForm = true;
	}
}
//======================== FIM CHECA SE FOI PREENCHIDO ===============

//===================== INICIO CHECA O NÚMERO DE CARACTERES ==========

function Numero_Caracteres (nome_form, nome_campo, mensagem, numero_caracteres, aceita_vazio) {

	var num_car = document[nome_form][nome_campo].value;
		
	if(num_car.length!=numero_caracteres) {
		if(aceita_vazio==false || aceita_vazio==true && num_car.length>0) {
			alert(mensagem);
			document[nome_form][nome_campo].focus();
			bolValidaForm = false;
		}

	}
	else {
	bolValidaForm = true;
	}
}

//======================== FIM CHECA O NÚMERO DE CARACTERES ==========

//===================== INICIO CHECA O NUMERO MÁXIMO DE CARACTERES ==========

function Numero_Maximo_Caracteres (nome_form, nome_campo, mensagem, numero_caracteres) {

	var num_car = document[nome_form][nome_campo].value;
		
	if(num_car.length>numero_caracteres) {
			alert(mensagem);
			document[nome_form][nome_campo].focus();
			bolValidaForm = false;
	}
	else {
	bolValidaForm = true;
	}
}

//===================== FIM CHECA O NUMERO MÁXIMO DE CARACTERES ==========

//===================== INICIO CHECA O NUMERO MÍNIMO DE CARACTERES ==========

function Numero_Minimo_Caracteres (nome_form, nome_campo, mensagem, numero_caracteres) {

	var num_car = document[nome_form][nome_campo].value;
		
	if(num_car.length<numero_caracteres) {
			alert(mensagem);
			document[nome_form][nome_campo].focus();
			bolValidaForm = false;
	}
	else {
	bolValidaForm = true;
	}
}

//===================== FIM CHECA O NUMERO MÍNIMO DE CARACTERES ==========

// ====================== AUMENTA LINHAS NA CAIXA DE TEXTO ==================
function linhas(form,acao) {
	if(acao=='aumentar') {
		(document[form].DESCRICAO.rows) = (document[form].DESCRICAO.rows+10);
	} else {
		(document[form].DESCRICAO.rows) = 1;
	}
}
// ====================== FIM AUMENTA LINHAS NA CAIXA DE TEXTO ==============