<!--
/*

Validador de Formulário
Elder Pimenta
Criação: 25/02/2003

USO:
No botão SUBMIT use o seguinte parâmetro
onClick = "ValidaForm(campo1,alias1,teste1,campo2,alias2,teste2,campoN,aliasN,testeN);return document.returnValue"
campo = campos do formulário. Ex: nome, email, numero
alias = nome que aparecerá na mensagem. Ex: Nome, E-Mail, Número
teste = começando com "R" é requerido. Ex: RisNum, RisCPF, RisCPF
	    começando com "N" não é requerido. Ex: NisNum, NisCPF, NisCPF
		isNum = tem que ser numérioco
		isEmail  = tem que ser um e-mail
		isCPF = tem que ser um valor válido de CPF
		isCNPJ = tem que ser um valor válido de CNPJ

EXEMPLO:
<input name="Submit" type="submit" onClick="ValidaForm('nome','Nome','R','cpf','CPF','RisCPF','cnpj','CNPJ','RisCNPJ','email','E-mail','RisEmail','numero','Número','RisNum');return document.returnValue" value="Submit">

*/

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 ValidaForm () {
	//alert(document.getElementById('nome').value)
	
	var errors='', p, nm, alias, test, args=ValidaForm.arguments
	for (i=0; i<=(args.length-3); i+=3) {
		nm = args[i]; 
		alias = args[i+1]; 
		test = args[i+2];
		val=MM_findObj(args[i])
		if (val) { 
			nm=val.name;
			if ((val=val.value)!="") {
				if (test.indexOf('isEmail')!=-1) {
					p=val.indexOf('@');
        			if (p<1 || p==(val.length-1)) errors+='- "'+alias+'" contém um e-mail inválido.\n';
				} else if (test.indexOf('isNum')!=-1) {
					if (isNaN(val)) errors+='- "'+alias+'" deve conter um valor numérico.\n';
				} else if (test.indexOf('isCPF')!=-1) {
					if (validCPF(val)==false) errors+='- "'+alias+'" não é um CPF válido.\n';
				} else if (test.indexOf('isCNPJ')!=-1) {
					if (validCNPJ(val)==false) errors+='- "'+alias+'" não é um CNPJ válido.\n';
				}
			} else if (test.charAt(0) == 'R') errors += '- "'+alias+'" não foi preenchido.\n'; 
		}
	}
if (errors) alert('Os seguintes erros ocorreram:\n'+errors);
document.returnValue = (errors == '');
}






//VALIDA CPF

function validCPF(campo) {
var CPF = LIMP(campo); // Recebe o valor digitado no campo

// Aqui começa a checagem do CPF
var posicao, I, soma, dv, dv_informado;
var digito = new Array(10);
dv_informado = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado

// Desemembra o número do CPF na array digito
for (I=0; I<=8; I++) {
  digito[I] = CPF.substr( I, 1);
}

// Calcula o valor do 10º dígito da verificação
posicao = 10;
soma = 0;
   for (I=0; I<=8; I++) {
      soma = soma + digito[I] * posicao;
      posicao = posicao - 1;
   }
digito[9] = soma % 11;
   if (digito[9] < 2) {
        digito[9] = 0;
}
   else{
       digito[9] = 11 - digito[9];
}

// Calcula o valor do 11º dígito da verificação
posicao = 11;
soma = 0;
   for (I=0; I<=9; I++) {
      soma = soma + digito[I] * posicao;
      posicao = posicao - 1;
   }
digito[10] = soma % 11;
   if (digito[10] < 2) {
        digito[10] = 0;
   }
   else {
        digito[10] = 11 - digito[10];
   }

// Verifica se os valores dos dígitos verificadores conferem
dv = digito[9] * 10 + digito[10];
   if (dv != dv_informado) {
      return false;
   } 
}











// VALIDA CNPJ
function validCNPJ(campo)
	{
	if(VerifyCNPJ(campo) != 1 && campo!="")
		{
		return false
		}
	return true;
	}

// Aqui inicia as funções de teste do CNPJ


function isNUMB(c)
	{
	if((cx=c.indexOf(","))!=-1)
		{		
		c = c.substring(0,cx)+"."+c.substring(cx+1);
		}
	if((parseFloat(c) / c != 1))
		{
		if(parseFloat(c) * c == 0)
			{
			return(1);
			}
		else
			{
			return(0);
			}
		}
	else
		{
		return(1);
		}
	}

function LIMP(c)
	{
	while((cx=c.indexOf("-"))!=-1)
		{		
		c = c.substring(0,cx)+c.substring(cx+1);
		}
	while((cx=c.indexOf("/"))!=-1)
		{		
		c = c.substring(0,cx)+c.substring(cx+1);
		}
	while((cx=c.indexOf(","))!=-1)
		{		
		c = c.substring(0,cx)+c.substring(cx+1);
		}
	while((cx=c.indexOf("."))!=-1)
		{		
		c = c.substring(0,cx)+c.substring(cx+1);
		}
	while((cx=c.indexOf("("))!=-1)
		{		
		c = c.substring(0,cx)+c.substring(cx+1);
		}
	while((cx=c.indexOf(")"))!=-1)
		{		
		c = c.substring(0,cx)+c.substring(cx+1);
		}
	while((cx=c.indexOf(" "))!=-1)
		{		
		c = c.substring(0,cx)+c.substring(cx+1);
		}
	return(c);
	}

function VerifyCNPJ(CNPJ)
	{
	CNPJ = LIMP(CNPJ);
	if(isNUMB(CNPJ) != 1)
		{
		return(0);
		}
	else
		{
		if(CNPJ == 0)
			{
			return(0);
			}
		else
			{
			g=CNPJ.length-2;
			if(RealTestaCNPJ(CNPJ,g) == 1)
				{
				g=CNPJ.length-1;
				if(RealTestaCNPJ(CNPJ,g) == 1)
					{	
					return(1);
					}
				else
					{
					return(0);
					}
				}
			else
				{
				return(0);
				}
			}
		}
	}
function RealTestaCNPJ(CNPJ,g)
	{
	var VerCNPJ=0;
	var ind=2;
	var tam;
	for(f=g;f>0;f--)
		{
		VerCNPJ+=parseInt(CNPJ.charAt(f-1))*ind;
		if(ind>8)
			{
			ind=2;
			}
		else
			{
			ind++;
			}
		}
		VerCNPJ%=11;
		if(VerCNPJ==0 || VerCNPJ==1)
			{
			VerCNPJ=0;
			}
		else
			{
			VerCNPJ=11-VerCNPJ;
			}
	if(VerCNPJ!=parseInt(CNPJ.charAt(g)))
		{
		return(0);
		}
	else
		{
		return(1);
		}
	}

function mascara_cpf(cpf)
{
    var mycpf = '';
    mycpf = mycpf + cpf.value;
    if (mycpf.length == 3) {
        mycpf = mycpf + '.';
        cpf.value = mycpf;
    }
    if (mycpf.length == 7) {
        mycpf = mycpf + '.';
        cpf.value = mycpf;
    }
    if (mycpf.length == 11) {
        mycpf = mycpf + '-';
        cpf.value = mycpf;
    }
    if (mycpf.length == 14) {
    }
}

function mascara_cnpj(cnpj)
{
    var mycnpj = '';
    mycnpj = mycnpj + cnpj.value;
    if (mycnpj.length == 2) {
        mycnpj = mycnpj + '.';
        cnpj.value = mycnpj;
    }
    if (mycnpj.length == 6) {
        mycnpj = mycnpj + '.';
        cnpj.value = mycnpj;
    }
    if (mycnpj.length == 10) {
        mycnpj = mycnpj + '/';
        cnpj.value = mycnpj;
    }
    if (mycnpj.length == 15) {
        mycnpj = mycnpj + '-';
        cnpj.value = mycnpj;
    }	
    if (mycnpj.length == 18) {
    }
}

function mascara_cep(nvar)
{
    var myvar = '';
    myvar = myvar + nvar.value;
    if (myvar.length == 2) {
        myvar = myvar + '.';
        nvar.value = myvar;
    }
    if (myvar.length == 6) {
        myvar = myvar + '-';
        nvar.value = myvar;
    }
    if (myvar.length == 10) {
    }
}

function formataNumero(num, casas, antes, zeros) { 

	num = num.toString().replace(/R$|\./g,'');
	num = num.replace(',','.');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	cs = Math.pow(10,casas)
	num = Math.floor(num*cs+0.50000000001);
	cents = num%cs;
	
	num = Math.floor(num/cs).toString();
	cents = cents.toString()
	qcasas = cents.length
	if (qcasas < casas) { 
		for (a=1;a<=casas-qcasas;a++) {cents = "0" + cents;}
	}
	if (zeros == "N") {
		for (a=1;a<=casas;a++) {
			if (cents.substring(cents.length,cents.length-1) == "0") {
				cents = cents.substring(0,cents.length-1)
			} else { break ; }
		}
	}
	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));
	num = num.toString().replace(/,/g,'.');
	if (cents == "") { virgula='' } else {virgula = ','}
	return (((sign)?'':'-') + antes + num + virgula + cents);
} 

function mascara_numero(nvar, casas, antes, elem, zeros)
{
	if (nvar.value != '') 
	nvar.value = formataNumero(nvar.value,casas,antes,zeros);
	nnvar = nvar.value.replace(antes,'');
	nnvar = nnvar.replace(/\./g,'');
	nnvar = nnvar.replace(',','.');
	document.getElementById(elem).value = nnvar
}

function mascara_numero2(nvar, casas, antes)
{
	nnvar = nvar.value.replace(antes,'');
	nnvar = nnvar.replace(/\./g,'');
	casa = ""
	for (a=1;a<=casas;a++) {casa = casa + "0";}
	if (casa!="") {nnvar = nnvar.replace(','+casa,'');}
	nvar.value = nnvar
	nvar.select();
}

function maskara(nvar, mascara) {
	var myvar = '';
	myvar = myvar + nvar.value;
	qtd = mascara.length
	for (i=0; i<=qtd; i++) {
	  msk = mascara.substr(i, 1);
	  if (isNaN(msk) || msk == " "){
		if (myvar.length == i) {
			myvar = myvar + msk;
			nvar.value = myvar;
		}
	  }
	}
	if (nvar.value.length >= mascara.length - 1){
		nvar.value = nvar.value.substr(0, mascara.length - 1)
	}
}

function dia_mes(nvar) {
	//função para verificar dia e mes (ex.: aniversário)

	mdia = nvar.value.substr(0, 2)
	mmes = nvar.value.substr(3, 2)
	
	if (isNaN(mdia) || isNaN(mmes)) { 
		alert("Data Inválida")
		nvar.value = ""
		nvar.focus()
	}

	mmes = parseInt(mmes)
	mdia = parseInt(mdia)

	if (mmes == 4 || mmes == 6 || mmes == 9 || mmes == 11) { 
		maxdia = 30
	} else if (mmes == 2) {
		maxdia = 29
	} else {
		maxdia = 31
	}

	if (mdia > maxdia) {
		alert("Data Inválida")
		nvar.value = ""
		nvar.focus()
	}

}

function cpf_cpnj(nvar) {

	if (nvar.value.length == 0) { 
		// se estiver vazio, nao faz nada.
	} else {
		if (nvar.value.length > 11) { 
			if (validCNPJ(nvar.value) != false) {
				//cnpj ok
				nvar.value = LimpaCPFCNPJ(nvar.value)
				mv = nvar.value
				nvar.value = mv.substr(0, 2) + "." + mv.substr(2, 3) + "." + mv.substr(5, 3) + "/" + mv.substr(8, 4) + "-" + mv.substr(12, 2);
			} else {	
				alert("CPF ou CNPJ Inválido")
				nvar.focus()
			}; 
		} else {
			if (validCPF(nvar.value) != false) {
				//cpf ok
				nvar.value = LimpaCPFCNPJ(nvar.value)
				mv = nvar.value
				nvar.value = mv.substr(0, 3) + "." + mv.substr(3, 3) + "." + mv.substr(6, 3) + "-" + mv.substr(9, 2) 				
			} else {
				alert("CPF ou CNPJ Inválido")	
				nvar.focus()
			}; 
		} 
	}

}

function LimpaCPFCNPJ(xvar) {
	mvar = xvar
	mvar = mvar.toString().replace(/-/g, "" );
	mvar = mvar.toString().replace(/\./g, "" );
	mvar = mvar.toString().replace(/\//g, "" );	
	return mvar
}


function hora_min(nvar, maxhora) {

	mhor = nvar.value.substr(0, 2)
	mmin = nvar.value.substr(3, 2)
	
	if (isNaN(mhor) || isNaN(mmin)) { 
		alert("Horário Inválido")
		nvar.value = ""
		nvar.focus()
		
	}

	mhor = parseInt(mhor)
	mmin = parseInt(mmin)

	if (mhor > maxhora) {
		alert("A hora só pode ser entre 0 a " + maxhora)
		nvar.value = ""
		nvar.focus()
	} else if (mmin > 59) {
		alert("Minutos só podem ser entre 0 e 59")
		nvar.value = ""
		nvar.focus()
	}

}

function Maximiza(largura, altura, grava) {
	
	nm_cook = document.location.pathname
	jan = document.all.minhajan;
	ico = document.all.maxi_ico;
	expir = "Thu, 1 Jan 2100 00:00:00 GMT"

	if (grava !=1 ) {
		condit = Get_Cookie(nm_cook)=='0';
	} else {
		condit = Get_Cookie(nm_cook)!='0';
	}
	if (condit) {
		jan.style.width='100%';
		jan.style.height='100%'	
		ico.src = 'images/minimizar.jpg'
		if (grava != 1) {document.cookie = nm_cook + "=" + escape('1') + "; expires=" + expir + ";null;null;"; return 0;}
	} else {
		jan.style.width=largura;
		jan.style.height=altura;
		ico.src = 'images/maximizar.jpg'
		if (grava != 1) {document.cookie = nm_cook + "=" + escape('0') + "; expires=" + expir + ";null;null;"; return 0;}
	}
}

function Get_Cookie(name) { 
	var start = document.cookie.indexOf(name+"="); 
	var len = start+name.length+1; 
	if ((!start) && (name != document.cookie.substring(0,name.length))) return null; 
	if (start == -1) return null; 
	var end = document.cookie.indexOf(";",len); 
	if (end == -1) end = document.cookie.length; 
	return unescape(document.cookie.substring(len,end)); 
}

//-->

