function validarCPF(cpf) {
	if (cpf.length != 11)
		return false;
	else if (cpf == "11111111111")
		return true;
	else if (parseInt(cpf.substring(0,9), 10) % 111111111 != 0 && cpf != "12345678909") {
		// Verifica 1º digito
		var soma=0, i;
		var peso = new Array(10,9,8,7,6,5,4,3,2);
		var tam = peso.length;
		for (i=0; i<tam; i++)
			soma += cpf.charAt(i) * peso[i];
		if ((11-soma%11) > 9)
			var d1 = 0;
		else
			var d1 = 11 - soma%11;
		if (cpf.charAt(tam) != d1)
			return false;
		// Verifica 2º digito
		soma=0;
		peso.unshift(11);
		tam = peso.length;
		for (i=0; i<tam; i++)
			soma += cpf.charAt(i) * peso[i];
		if ((11-soma%11) > 9)
			var d2 = 0;
		else
			var d2 = 11 - soma%11;
		if (cpf.charAt(tam) != d2)
			return false;
		else
			return true;
	}
	else
		return false;
}

function validarCNPJ(cnpj) {
	if (cnpj.length != 14 || cnpj=="00000000000000")
		return false;
	else {
		var soma=0, i;
		var peso = new Array(5,4,3,2,9,8,7,6,5,4,3,2);
		var tam = peso.length;
		for (i=0; i<tam; i++)
			soma += cnpj.charAt(i) * peso[i];
		if ((11-soma%11) > 9)
			var d1 = 0;
		else
			var d1 = 11 - soma%11;
		if (cnpj.charAt(tam) != d1)
			return false;
		// Verifica 2º digito
		soma=0;
		peso.unshift(6);
		tam = peso.length;
		for (i=0; i<tam; i++)
			soma += cnpj.charAt(i) * peso[i];
		if ((11-soma%11) > 9)
			var d2 = 0;
		else
			var d2 = 11 - soma%11;
		if (cnpj.charAt(tam) != d2)
			return false;
		else
			return true;
	}
}

function validarCPFCNPJ(num) {
	if (num.length == 11)
		return validarCPF(num);
	else if (num.length == 14)
		return validarCNPJ(num);
	else
		return false;
}

function validarIEAC(ie) {
	// 01.###.###/###-##
	//Os primeiros dois dígitos são sempre 01
	//01.004.823/001-12
	if (ie.length==0)
		return false;
	if (ie.length<13)
		ie = completarPrefixo(ie, 13);
	if (ie.length != 13 || ie.substr(0,2) != "01")
		return false;
	var peso = new Array(4,3,2,9,8,7,6,5,4,3,2);
	var soma = 0, i;
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;

	soma = 0;
	peso.unshift(5);
	tam = peso.length;
	for (i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if ((11-soma%11) > 9)
		var d2 = 0;
	else
		var d2 = 11 - soma%11;
	if (ie.charAt(tam) != d2)
		return false;
	else
		return true;
}

function validarIEAL(ie) {
	// 24XNNNNND
	//24 – Código do Estado
	//X – Tipo de empresa (0-Normal, 3-Produtor Rural,5-Substituta, 7- Micro-Empresa Ambulante, 8-Micro-Empresa)
	//NNNNN – Número da empresa
	//D – Dígito de verificação calculado pelo Módulo11,pêsos 2 à 9 da direita para a esquerda, exceto D
	//2 4 0 0 0 0 0 4 8
	if (ie.length==0)
		return false;
	if (ie.length != 9 || ie.substr(0,2) != "24")
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	soma *= 10;
	var d1 = (soma - Math.floor(soma/11)*11)%10;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}

function validarIEAP(ie) {
	//03######-#
	//2 dígitos constantes(03)+6 dígitos (empresa)+1 dígito verificador
	//030123459   035331470
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9 || ie.substr(0,2) != "03")
		return false;
	var dig8 = ie.substr(0,8);
	if (dig8 <= 3017000) {
		var p = 5;
		var d = 0;
	}
	else if (dig8 <= 3019023) {
		var p = 9;
		var d = 1;
	}
	else {
		var p = 0;
		var d = 0;
	}
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	soma += p;

	if (11-soma%11 > 9) {
		if (11-soma%11 == 10)
			var d1 = 0;
		else
			var d1 = d;
	}
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEAM(ie) {
	// ##.###.###-# 020707967  062005197
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if (soma < 11)
		var d1 = 11 - soma;
	else {
		if ((11-soma%11) > 9)
			var d1 = 0;
		else
			var d1 = 11-(soma%11);
	}
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;

}
function validarIEBA(ie) {
	// ###.###-##
	//1 2 3 4 5 6 - 6 3  30807480
	if (ie.length==0)
		return false;
	if (ie.length<8)
		ie = completarPrefixo(ie, 8);
	if (ie.length != 8)
		return false;
	var modulo = (ie.charAt(0) <=5 || ie.charAt(0) == 8)?10:11;
	var soma = 0, i;
	var peso = new Array(7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	var d2 = (modulo - soma%modulo);
	if (d2 > 9)
		d2=0;
	if (ie.charAt(7) != d2)
		return false;

	var ie2 = ie.substr(0, 6) + d2;
	soma = 0;
	peso.unshift(8);
	tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie2.charAt(i) * peso[i];
	var d1 = (modulo - soma%modulo);
	if (d1 > 9)
		d1=0;
	if (ie.charAt(6) != d1)
		return false;
	else
		return true;
}
function validarIECE(ie) {
	//8 dígitos+1 dígito verificador
	//06000001-5
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEDF(ie) {
	// 07.######.###-##
	//0734511900120     07437135/001-13
	if (ie.length==0)
		return false;
	if (ie.length<13)
		ie = completarPrefixo(ie, 13);
	if (ie.length != 13 || ie.substr(0,2) != "07")
		return false;
	var soma = 0, i;
	var peso = new Array(4,3,2,9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;

	soma = 0;
	peso.unshift(5);
	tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d2 = 0;
	else
		var d2 = 11 - soma%11;
	if (ie.charAt(tam) != d2)
		return false;
	else
		return true;

}
function validarIEES(ie) {
	// ##.###.###-#     081.001.649     082022755
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEGO(ie) {
	// ##.###.###-#
	//AB.CDE.FGH-I
	//onde AB pode ser igual a 10 ou 11 ou 15.
	//10.987.654-7  10.115.326-0
	if (ie.length==0)
		return false;
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];

	var CCE = ie.substr(0,8);
	if (CCE == 11094402) {
		if (ie.charAt(tam) == 0 || ie.charAt(tam) == 1 )
			return true;
		else
			return false;
	}
	else if (soma%11 == 0) {
		var d1 = 0;
	}
	else if (soma%11 == 1) {
		if (CCE >= 10103105 && CCE <= 10119997)
			var d1 = 1;
		else
			var d1 = 0;
	}
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEMA(ie) {
	// 12.###.###-#
	//120000385
	if (ie.length==0)
		return false;
	if (ie.length != 9 || ie.substr(0,2) != "12")
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEMT(ie) {
	// #.###.###.###-#
	//0013000001-9
	if (ie.length==0)
		return false;
	if (ie.length<11)
		ie = completarPrefixo(ie, 11);
	if (ie.length != 11) {
		return false;
	}
	var soma = 0, i;
	var peso = new Array(3,2,9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEMS(ie) {
	// 28.###.###-#     283302925
	if (ie.length==0)
		return false;
	if (ie.length != 9 || ie.substr(0,2) != "28")
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEMG(ie) {
	// ###.######.##-##
	//AAABBBBBBCCDD
	//Onde: A= Código do Município
	//B= Número da inscrição
	//C= Número de ordem do estabelecimento
	//D= Dígitos de controle
	//062.307.904/0081      1861325140077   5182440230035
	if (ie.length==0)
		return false;
	if (ie.length<13)
		ie = completarPrefixo(ie, 13);
	if (ie.length != 13)
		return false;
	var ie2 = ie.substr(0, 3) + "0" + ie.substr(3,8);
	var soma = 0, temp=0, i;
	var peso = new Array(1,2,1,2,1,2,1,2,1,2,1,2);
	var tam = peso.length;
	for(i=0; i<tam; i++) {
		temp = ie2.charAt(i) * peso[i];
		soma += parseInt(temp/10) + temp%10;
	}
	var d1 = (10-soma%10)%10;
	if (ie.charAt(tam-1) != d1)
		return false;

	soma = 0;
	var peso = new Array(3,2,11,10,9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d2 = 0;
	else
		var d2 = 11 - soma%11;
	if (ie.charAt(tam) != d2)
		return false;
	else
		return true;
}
function validarIEPA(ie) {
	// 15.###.###-#
	//15-999999-5   15.245.902-2
	if (ie.length==0)
		return false;
	if (ie.length != 9 || ie.substr(0,2) != "15")
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEPB(ie) {
	// ##.###.###-#
	//06000001-5
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEPR(ie) {
	// ##.###.###-##
	//123.45678-50  90229077-08
	if (ie.length==0)
		return false;
	if (ie.length<10)
		ie = completarPrefixo(ie, 10);
	if (ie.length != 10)
		return false;
	var soma = 0, i;
	var peso = new Array(3,2,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;

	soma = 0;
	peso.unshift(4);
	tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d2 = 0;
	else
		var d2 = 11 - soma%11;
	if (ie.charAt(tam) != d2)
		return false;
	else
		return true;
}
function validarIEPE(ie) {
	// #.###.###-##          novo       0321418-40
	// ##.#.###.#######-#    antigo     18.1.001.0000004-9
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length == 9)
		return validarIEPENovo(ie);

	if (ie.length<14)
		ie = completarPrefixo(ie, 14);
	if (ie.length == 14)
		return validarIEPEAntigo(ie);
	else
		return false;
}
function validarIEPENovo(ie) {
	// #.###.###-##
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;

	soma = 0;
	peso.unshift(9);
	tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d2 = 0;
	else
		var d2 = 11 - soma%11;
	if (ie.charAt(tam) != d2)
		return false;
	else
		return true;
}
function validarIEPEAntigo(ie) {
	// ##.#.###.#######-#
	if (ie.length==0)
		return false;
	if (ie.length<14)
		ie = completarPrefixo(ie, 14);
	if (ie.length != 14)
		return false;
	var soma = 0, i;
	var peso = new Array(5,4,3,2,1,9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	var d1 = (11 - soma%11)%10;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIEPI(ie) {
	// ##.###.###-#
	//012345679
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIERJ(ie) {
	// ##.###.##-#     820.74.023     81589542
	if (ie.length==0)
		return false;
	if (ie.length<8)
		ie = completarPrefixo(ie, 8);
	if (ie.length != 8)
		return false;
	var soma = 0, i;
	var peso = new Array(2,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIERN(ie) {
	// 20.###.###-#     20.040.040-1
	// 20.#.###.###-#   20.0.040.040-0
	if (ie.length==0)
		return false;
	if ((ie.length != 9 && ie.length != 10) || ie.substr(0,2) != "20")
		return false;

	var soma = 0, i;
	if (ie.length == 9)
		var peso = new Array(9,8,7,6,5,4,3,2);
	else
		var peso = new Array(10,9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	soma *= 10;
	var d1 = (soma%11)%10;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIERS(ie) {
	// ###/###.###-#
	// 3(município)+6(empresa)+1 verificador
	//224/3658792   096/2596566
	if (ie.length==0)
		return false;
	if (ie.length<10)
		ie = completarPrefixo(ie, 10);
	if (ie.length != 10)
		return false;
	var soma = 0, i;
	var peso = new Array(2,9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIERO(ie) {
	// ###.#####-#          101.62521-3
	// #.###.###.###.###-#  0000000062521-3
	if (ie.length==0)
		return false;
	if (ie.length == 9)
		ie = "00000000" + ie.substr(ie.length-6);
	if (ie.length<14)
		ie = completarPrefixo(ie, 14);
	if (ie.length != 14)
		return false;
	var soma = 0, i;
	var peso = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	var d1 = (11 - soma%11)%10;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIERR(ie) {
	// 24.###.###-#
	// 24006628-1       24001755-6    24003429-0    24001360-3     24008266-8    24006153-6
	// 24007356-2     24005467-4     24004145-5     24001340-7     24006153-6
	if (ie.length==0)
		return false;
	if (ie.length != 9 || ie.substr(0,2) != "24")
		return false;
	var soma = 0, i;
	var peso = new Array(1,2,3,4,5,6,7,8);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	var d1 = soma%9;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIESC(ie) {
	// ##.###.###-#
	//251.040.852   252.496.078
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIESP(ie, Produtor) {
	// ###.###.##-#.##-#    110.042.490.114     669.352.212.110
	//P0MMMSSSSD000         P-01100424.3/002
	if (ie.length==0)
		return false;
	if (ie.length<12)
		ie = completarPrefixo(ie, 12);
	if (ie.length != 12)
		return false;
	if(!Produtor)
		Produtor="";
	var soma = 0, i;
	var peso = new Array(1,3,4,5,6,7,8,10);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	var d1 = (soma%11)%10;
	if (ie.charAt(tam) != d1)
		return false;
	else if (Produtor.toUpperCase()=="P") // Produtor Rural so preicisa 1 digito.
		return true;
	// continua para 2 digito
	soma = 0;
	var peso = new Array(3,2,10,9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	var d2 = (soma%11)%10;
	if (ie.charAt(tam) != d2)
		return false;
	else
		return true;
}
function validarIESE(ie) {
	// ##.###.###-#
	//27123456-3    27.111.556-4
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	if (ie.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
function validarIETO(ie) {
	// ##.##.###.###-#
	//29 01 022783 6
	if (ie.length==0)
		return false;
	if (ie.length<9)
		ie = completarPrefixo(ie, 9);
	else if (ie.length>9 && ie.length<11) //ou ie.length==10
		ie = completarPrefixo(ie, 11);

	if (ie.length != 9 && ie.length != 11)
		return false;
	var soma = 0, i;
	if (ie.length==9)
		var peso = new Array(9,8,7,6,5,4,3,2);
	else
		var peso = new Array(9,8,0,0,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += ie.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (ie.charAt(tam) != d1)
		return false;
	else
		return true;
}
//receber IE bruto em maiusculo(ALFANUMERICO) e UF
function validarIE(ie, uf) {
	if (uf=="UF" || !uf)
		return false;
	if (ie.match(/^ISENT[AO]/i))
		return true;

	// pegar so numero
	var num_ie = extrairNumero(ie);
	switch (uf) {
		case "AC" :
			return validarIEAC(num_ie); break;
		case "AL" :
			return validarIEAL(num_ie); break;
		case "AP" :
			return validarIEAP(num_ie); break;
		case "AM" :
			return validarIEAM(num_ie); break;
		case "BA" :
			return validarIEBA(num_ie); break;
		case "CE" :
			return validarIECE(num_ie); break;
		case "DF" :
			return validarIEDF(num_ie); break;
		case "ES" :
			return validarIEES(num_ie); break;
		case "GO" :
			return validarIEGO(num_ie); break;
		case "MA" :
			return validarIEMA(num_ie); break;
		case "MT" :
			return validarIEMT(num_ie); break;
		case "MS" :
			return validarIEMS(num_ie); break;
		case "MG" :
			return validarIEMG(num_ie); break;
		case "PA" :
			return validarIEPA(num_ie); break;
		case "PB" :
			return validarIEPB(num_ie); break;
		case "PR" :
			return validarIEPR(num_ie); break;
		case "PE" :
			return validarIEPE(num_ie); break;
		case "PI" :
			return validarIEPI(num_ie); break;
		case "RJ" :
			return validarIERJ(num_ie); break;
		case "RN" :
			return validarIERN(num_ie); break;
		case "RS" :
			return validarIERS(num_ie); break;
		case "RO" :
			return validarIERO(num_ie); break;
		case "RR" :
			return validarIERR(num_ie); break;
		case "SC" :
			return validarIESC(num_ie); break;
		case "SP" :
			return validarIESP(num_ie, ie.charAt(0)); break;
		case "SE" :
			return validarIESE(num_ie); break;
		case "TO" :
			return validarIETO(num_ie); break;
		default:
			return false;
	}
	return false;
}

// funcao valida CFOP da nota
//CFOP sem ponto, UF emitente, UF destinatario, operacao(venda, compra, importacao, exportacao)
function validarCFOP(cfop, uf_e, uf_d, ope) {
	if (uf_e=="UF" || uf_d=="UF")
		return false;
	else if (!cfop || cfop.length!=4)
		return false;
	else if (ope.match(/^ven/i) && uf_e==uf_d && uf_d!="EX" && cfop.charAt(0) =="5")
		return true;
	else if (ope.match(/^ven/i) && uf_e!=uf_d && uf_d!="EX" && cfop.charAt(0) =="6")
		return true;
	else if (ope.match(/^com/i) && uf_e==uf_d && uf_e!="EX" && cfop.charAt(0) =="1")
		return true;
	else if (ope.match(/^com/i) && uf_e!=uf_d && uf_e!="EX" && cfop.charAt(0) =="2")
		return true;
	else if (ope.match(/^imp/i) && uf_e!=uf_d && uf_d=="EX" && cfop.charAt(0) =="3")
		return true;
	else if (ope.match(/^exp/i) && uf_e!=uf_d && uf_d=="EX" && cfop.charAt(0) =="7")
		return true;
	else
		return false;
}

function completarPrefixo(txt, tam, prefix) {
	if (!prefix)
		prefix = "0";
	while(txt.length < tam) {
		txt = "" + prefix + txt;
	}
	return txt;
}

function validarChaveAcessoNFe(chave) {
	if (chave.length==0)
		return false;
	if (chave.length<44)
		chave = completarPrefixo(chave, 44);
	if (chave.length != 44)
		return false;
	var soma = 0, i;
	var peso = new Array(4,3,2, 9,8,7,6,5,4,3,2, 9,8,7,6,5,4,3,2, 9,8,7,6,5,4,3,2, 9,8,7,6,5,4,3,2, 9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += chave.charAt(i) * peso[i];
	if((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	if (chave.charAt(tam) != d1)
		return false;
	else
		return true;
}

function isRegiaoSul(uf) {
	if (uf==null) uf = "UF";
	switch (uf) {
		case "RS":
		case "SC":
		case "PR":
			return true; break;
		default:
			return false;
	}
	return false;
}
function isRegiaoSudeste(uf) {
	if (uf==null) uf = "UF";
	switch (uf) {
		case "SP":
		case "RJ":
		case "MG":
		case "ES":
			return true; break;
		default:
			return false;
	}
	return false;
}
function isRegiaoCentroOeste(uf) {
	if (uf==null) uf = "UF";
	switch (uf) {
		case "MT":
		case "MS":
		case "GO":
			return true; break;
		default:
			return false;
	}
	return false;
}
function isRegiaoNorte(uf) {
	if (uf==null) uf = "UF";
	switch (uf) {
		case "AC":
		case "AM":
		case "RO":
		case "RR":
		case "AP":
		case "PA":
		case "TO":
			return true; break;
		default:
			return false;
	}
	return false;
}
function isRegiaoNordeste(uf) {
	if (uf==null) uf = "UF";
	switch (uf) {
		case "BA":
		case "PI":
		case "CE":
		case "RN":
		case "PB":
		case "PE":
		case "AL":
		case "SE":
		case "MA":
			return true; break;
		default:
			return false;
	}
	return false;
}
function isRegiaoSuframa(uf) {
	if (uf==null) uf = "UF";
	switch (uf) {
		case "AC":
		case "AM":
		case "RO":
		case "RR":
		case "AP":
			return true; break;
		default:
			return false;
	}
	return false;
}

function validarSuframa(num) {
	if (num.length==0)
		return false;
	if (num.length<9)
		num = completarPrefixo(num, 9);
	if (num.length != 9)
		return false;
	var soma = 0, i;
	var peso = new Array(9,8,7,6,5,4,3,2);
	var tam = peso.length;
	for(i=0; i<tam; i++)
		soma += num.charAt(i) * peso[i];
	if ((11-soma%11) > 9)
		var d1 = 0;
	else
		var d1 = 11 - soma%11;
	//alert("Soma: "+soma+"  Resto: "+(soma%11)+"  Verificador:"+d1);
	if (num.charAt(tam) != d1)
		return false;
	else
		return true;
}



//import@ fluxo_pt.js;
