/*
www.moinho.net
Verifica se um número de CPF ou CNPJ é válido
Função  : isCPFCNPJ
Retorno : true se o número for válido
e-mail  : celso.goya@moinho.net
Author  : Desconhecido
Customizado: Celso Goya
*/
// ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_
// ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_
// ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_
// ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_
// ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_ININIO_CFP_CNPJ_
String.prototype.lpad = function(pSize, pCharPad)
{
	var str = this;
	var dif = pSize - str.length;
	var ch = String(pCharPad).charAt(0);
	for (; dif>0; dif--) str = ch + str;
	return (str);
} //String.lpad
function unformatNumber(pNum)
{
	return String(pNum).replace(/\D/g, "").replace(/^0+/, "");
} //unformatNumber
function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	if (pUseSepar==null) pUseSepar = true;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var numero = unformatNumber(pCpfCnpj);

	numero = numero.lpad(maxDigitos, '0');
	if (!pUseSepar) return numero;

	if (pIsCnpj)
	{
		reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;
		numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5");
	}
	else
	{
		reCpf  = /(\d{3})(\d{3})(\d{3})(\d{2})$/;
		numero = numero.replace(reCpf, "$1.$2.$3-$4");
	}
	return numero;
} //formatCpfCnpj

var NUM_DIGITOS_CPF  = 11;
var NUM_DIGITOS_CNPJ = 14;
var NUM_DGT_CNPJ_BASE = 8;
function dvCpfCnpj(pEfetivo, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	var i, j, k, soma, dv;
	var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	//var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj);
	var calculado = pEfetivo;
	//calculado = "76676352000123";
	calculado = pEfetivo;
	calculado = calculado.substring(0,(maxDigitos-2));	
	var result = "";
	for(j = 1; j <= 2; j++)
	{
		k = 2;
		soma = 0;
		for (i = calculado.length-1; i >= 0; i--)
		{
			soma += (calculado.charAt(i) - '0') * k;
			k = (k-1) % cicloPeso + 2;
		}
		dv = 11 - soma % 11;
		if (dv > 9) dv = 0;
		calculado += dv;
		result += dv
	}
	//document.getElementById("2").innerHTML = "<br>Result: " + result + " Num: " + NUM_DIGITOS_CNPJ + cicloPeso + " pEfetivo: " + pEfetivo;
	return result;
	
} //dvCpfCnpj


function checkCNPJ(vCNPJ){
	var mControle = "";
	var aTabCNPJ = new Array(5,4,3,2,9,8,7,6,5,4,3,2);
	for (i = 1 ; i <= 2 ; i++){
		mSoma = 0;
		for (j = 0 ; j < vCNPJ.length ; j++)
		 	mSoma = mSoma + (vCNPJ.substring(j,j+1) * aTabCNPJ[j]);
			if (i == 2 ) mSoma = mSoma + ( 2 * mDigito );
			mDigito = ( mSoma * 10 ) % 11;
			if (mDigito == 10 ) mDigito = 0;
			mControle1 = mControle ;
			mControle = mDigito;
			aTabCNPJ = new Array(6,5,4,3,2,9,8,7,6,5,4,3);
		}
	return((mControle1 * 10) + mControle );
}

function checkCPF(vCPF){
	var mControle = ""
	var mContIni = 2, mContFim = 10, mDigito = 0;
	for (j = 1 ; j <= 2 ; j++){
		mSoma = 0;
		for (i = mContIni ; i <= mContFim ; i++)
		mSoma = mSoma + (vCPF.substring((i-j-1),(i-j)) * (mContFim + 1 + j - i));
		if (j == 2 ) mSoma = mSoma + ( 2 * mDigito );
		mDigito = ( mSoma * 10 ) % 11;
		if (mDigito == 10) mDigito = 0;
		mControle1 = mControle;
		mControle = mDigito;
		mContIni = 3;
		mContFim = 11;
	}
	return((mControle1 * 10) + mControle );
   
}



var isWhat,campo_filtrado,formatado,campo;
function isCPFCNPJ(field_name,campo,pType){	
	//if(isEmpty(campo)) {return false;}
	if(campo.length == 0) {return false;}
	var campo_filtrado = "", valor_1 = " ", valor_2 = " ", ch = "", x = "";
	var valido = false;
	for (i = 0; i < campo.length; i++){
		ch = campo.substring(i, i + 1);
		if (ch >= "0" && ch <= "9"){
			campo_filtrado = campo_filtrado.toString() + ch.toString()
			valor_1 = valor_2;
			valor_2 = ch;
		}
      	if ((valor_1 != " ") && (!valido)) valido = !(valor_1 == valor_2);
	}
	if (!valido) campo_filtrado = "12345678912";
	if (campo_filtrado.length < 11){ //Acrescenta zeros até formar 11 dígitos.
      	for (i = 1; i <= (11 - campo_filtrado.length); i++){campo_filtrado = "0" + campo_filtrado;}
	}
	isWhat = 0;
	if(pType <= 1){
	//if ((campo_filtrado.substring(9,11) == checkCPF(campo_filtrado.substring(0,9))) && ( campo_filtrado.substring(11,12)=="") ){
		if ((campo_filtrado.substring(campo_filtrado.length-2,campo_filtrado.length) == dvCpfCnpj(campo_filtrado,0)) && ( campo_filtrado.substring(11,12)=="") ){
			isWhat = 1;
			formatado = formatCpfCnpj(campo_filtrado, 1, 0);
			//document.getElementById("1").innerHTML = "Formatado: " + formatado;
			//return true;
		}
	}
	if((pType == 2) || (pType == 0)){
		if (campo_filtrado.length >= 14){
			if (campo_filtrado.substring(0,2) == "00") {
				campo_filtrado = campo_filtrado.substring(1,campo_filtrado.length);
			}							     
			//if (campo_filtrado.substring(0,campo_filtrado.length-2) == checkCNPJ(campo_filtrado.substring(0,12))){
			if (campo_filtrado.substring(campo_filtrado.length-2,campo_filtrado.length) == dvCpfCnpj(campo_filtrado,1)){
				/////document.getElementById("1").innerHTML = "True - CNPJ: " + campo_filtrado + " - " + 
				//////campo_filtrado.substring(12,14) + " CNPJ: " +
				checkCNPJ(campo_filtrado.substring(0,campo_filtrado.length-2));
				isWhat = 2;
				formatado = formatCpfCnpj(campo_filtrado, 1, 1);
				//return true;
			}
		}
	}
	if (isWhat) {
		evalstr = "document.form1." + field_name + ".value = formatado";
		eval(evalstr);
	}
	if (!isWhat) {
		alert("Por favor informe um CPF/CNPJ válido.");
		evalstr = "document.form1." + field_name + ".focus()";
		eval(evalstr);
	}
	return false;
}
// FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_
// FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_
// FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_
// FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_
// FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_FIM_CPF_CNPJ_

// isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_
//isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_isEmpty_
function isEmpty(pStrText,field_Name){
	var len = pStrText.length;
	var pos;
	var vStrnewtext = "";
	for (pos=0; pos<len; pos++){
		if (pStrText.substring(pos, (pos+1)) != " "){
			vStrnewtext = vStrnewtext + pStrText.substring(pos, (pos+1));
		}
	}
	if (vStrnewtext.length <= 0) {
		alert("Por favor, preencha o campo " + field_Name + ".");	
		//evalstr = "document.form1.field_Name.focus()";
		evalstr = "document.form1." + field_Name + ".focus()";
		eval(evalstr);
		return false;
	} else {
		return true;
	}
}

// isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_
// isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_isEmpty_End_

// isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_
// isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_isEmail_
function isEmail(text) {	
   var arroba = "@",
       ponto = ".",
	 posponto = 0,
	 posarroba = 0,
	 result = true;	
	 for (var indice = 0; indice < text.length; indice++){
	 	if (text.charAt(indice) == arroba) {
	 		posarroba = indice;
	      	break;
		 }
	 }
	for (var indice = posarroba; indice < text.length; indice++){
		if (text.charAt(indice) == ponto) {
			posponto = indice;
	     	break;
		}
	}

	if (posponto == 0 || posarroba == 0) result = false;
	if (posponto == (posarroba + 1)) result = false;
	if ((posponto + 1) == text.length) result = false;
	if (text =="") result = true;
	if (!result) {
		alert("Por favor informe um e-mail válido.");		
		document.form1.Email.focus();		
	} else {
		result = true;
	}
	return result;
}
// isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_
// isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_isEmail_End_
// isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_
// isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_isNumber_
function isNumber(numero,field_Name) {
   //var CaractereInvalido = false;
   	var CaractereInvalido;	
	if(numero.length == 0) {return true;}
	for (i=0; i < numero.length; i++){
		var Caractere = numero.charAt(i);
		if(Caractere != "." && Caractere != "," && Caractere != "-"){
		   	if (isNaN(parseInt(Caractere))) {
				CaractereInvalido = true;
			}
		}
	}
	if (CaractereInvalido) {
		alert("Por favor, digite apenas números, virgulas, pontos ou traços.");		
		evalstr = "document.form1." + field_Name + ".focus()";
		eval(evalstr);
		return false;
	} else {
		return true;
	}
   //return !CaractereInvalido;
}
// isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_
// isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_isNumber_End_

// isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_
// isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_isPhone_
function isPhone(numero,field_Name) {
   //var CaractereInvalido = false;
   	var CaractereInvalido;	
	if(numero.length == 0) {return true;}
	for (i=0; i < numero.length; i++){
		var Caractere = numero.charAt(i);
		if(Caractere != "(" && Caractere != ")" && Caractere != "-" && Caractere != " "){
		   	if (isNaN(parseInt(Caractere))) {
				CaractereInvalido = true;
			}
		}
	}
	if (CaractereInvalido) {
		alert("Por favor, digite apenas números, couchetes ou traços.");		
		evalstr = "document.form1." + field_Name + ".focus()";
		eval(evalstr);
		return false;
	} else {
		return true;
	}
   //return !CaractereInvalido;
}
// isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_
// isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_isPhone_End_


function isInt(numero,field_Name) {
   //var CaractereInvalido = false;
   	var CaractereInvalido;	
	if(numero.length == 0) {CaractereInvalido = true;}
	for (i=0; i < numero.length; i++){
		var Caractere = numero.charAt(i);
		//if(Caractere != "(" && Caractere != ")" && Caractere != "-"){
		   	if (isNaN(parseInt(Caractere))) {
				CaractereInvalido = true;
			}
		//}
	}
	if (CaractereInvalido) {
		alert("Por favor, digite apenas números.");		
		evalstr = "document.form1." + field_Name + ".focus()";
		eval(evalstr);
		return false;
	} else {
		return true;
	}
   //return !CaractereInvalido;
}



function isZero(value,field_Name) {
   //var CaractereInvalido = false;
   var zero;
	if(value.length == 0) {return true;}
	if (value==0 || value=="0") {
		//if (!(value=="")){
			alert("Por favor, escolha um valor para " + field_Name + ".");		
			evalstr = "document.form1." + field_Name + ".focus()";
			eval(evalstr);
			return false;
		//}
	} else {
		return true;
	}
	
   //return !CaractereInvalido;
}

function formatadata(data) {
  var tecla = event.keyCode;
  var tipo = event.type;
  if (tipo == "keypress" && (tecla<48 || tecla>57) && tecla!="0" && tecla!=8) {
     event.keyCode=0; return;
  }
  if (tipo == "keyup" && tecla<96 || tecla>105) {
     event.keyCode=0; return;
  }
  vr  = data.value;
  if (vr=="") return false;
  vr  = vr.replace(".", "");
  vr  = vr.replace("/", "");
  vr  = vr.replace("/", "");
  tam = vr.length+1;
  if (tecla!=9 && tecla!=8) {
     if (tam>2 && tam<5)
        data.value = vr.substr(0, tam-2)+'/'+vr.substr(tam-2, tam);
     if (tam>=5)
        data.value = vr.substr(0, 2)+'/'+vr.substr(2, 2)+'/'+vr.substr(4, 4);
  }
}