function MultiChar(strCharPass,intVezes)
{
      var i = 1;
      var strChars = "";

      for (i = 1; i <= intVezes; i++)
            strChars = strChars + strCharPass;
      return strChars;
}

//-------------------------------------------------
//	Retorna dígito da seqüência passada (Mod 11a).
//-------------------------------------------------
function DV(theNumber)
{
	var i = theNumber.length;
	theNumber = "000000000000000000".concat(theNumber).substring(i);

	var Sum = 0;		//- soma.
	var Weight = 2;		//- peso.
	var MaxWeight = 7;  //- peso maximo

	for (i = 17; i >= 0; i--)  {
		Sum += (theNumber.charAt(i) - '0') * Weight;
		if (Weight == MaxWeight)
        {
           Weight = 1;
		}
		Weight++;
	}

	i = Sum % 11;

	if (i == 0)
	{
       i = 10;
	}
    else
	{
	   if (i == 1)
	   {
		   i = 11;
       }
    }

	return (11 - i);
}

//-------------------------------------------------
//	verifica se dígito da seqüência passada con-
//	fere, utilizando do Módulo 11a.
//-------------------------------------------------
function DigitoValido(theNumber)
{
	var i = theNumber.length;
	theNumber = "000000000000000000".concat(theNumber).substring(i);

	var theDigit = theNumber.charAt(17);	//- 18a. pos.
	theNumber = theNumber.substring(0, 17);	//- 17 bytes

	var Sum = 0;		//- soma.
	var Weight = 2;		//- peso.
	var MaxWeight = 7;  //- peso maximo

	for (i = 16; i >= 0; i--)  {
		Sum += (theNumber.charAt(i) - '0') * Weight;
		if (Weight == MaxWeight)
        {
           Weight = 1;
		}
		Weight++;
	}

	i = Sum % 11;

	if (i == 0)
	{
       i = 10;
	}
    else
	{
	   if (i == 1)
	   {
		   i = 11;
       }
    }

	return (String(11 - i) == theDigit);
}

//-------------------------------------------------
//	verifica se dígito da seqüência passada con-
//	fere, utilizando do Módulo 10.
//-------------------------------------------------
function CalculaDVMod10(strCampo)
{
	var DVMod10 = 0;
	var Peso = 1;

	var i = strCampo.length;
	var ByteAtual = "";

	var Soma = 0, SomaTotal = 0;

	//== Aplicação do peso em cada um dos dígitos do
	//	 campo do código de barras passado, da direita
	//	 para a esquerda, aplicando o peso 1 e 2
	//	 sucessivamente (começando pelo "1").
	for (i = strCampo.length; i >= 1; i--)
	{
		//-- pega o número corrente, da direita para a esquerda.
		ByteAtual = strCampo.substring(i-1, i);
		//-- aplica o peso em cada um dos dígitos do campo.
		Soma = parseInt(ByteAtual) * Peso;

		//-- quando "Soma" > 9, nove fora (subtrai 9 da soma).
		if (Soma > 9) Soma -= 9;

		//-- adiciona a soma ao total.
		SomaTotal += Soma;

		//-- alterna peso entre 1 e 2, começando por 1.
		if (Peso == 1) Peso = 2;
		else Peso = 1;
	}

	DVMod10 = SomaTotal / 10;	//-- DV = Somatória / 10 (Módulo 10!).
	if ((SomaTotal % 10) == 0)	//-- Se resto = 0, ótimo! Bateu o DV!
		return true;
	else
		return false;
}

//-------------------------------------------------
//	verifica se dígito da seqüência passada con-
//	fere, utilizando do Módulo 11b.
//-------------------------------------------------
function CalculaDVMod11(strCampo, strDVMod11)
{
	var DVMod11 = 0;
	var Peso = 2;

	var i = strCampo.length;
	var ByteAtual = "";

	var Soma = 0, SomaTotal = 0;

	//== Aplicação do peso em cada um dos dígitos do
	//	 campo do código de barras passado, da direita
	//	 para a esquerda, aplicando o peso 2 a 9
	//	 sucessivamente (começando pelo "2").
	for (i = strCampo.length; i >= 1; i--)
	{
		//-- pega o número corrente, da direita para a esquerda.
		ByteAtual = strCampo.substring(i-1, i);
		//-- aplica o peso em cada um dos dígitos do campo.
		Soma = parseInt(ByteAtual) * Peso;

		//-- adiciona a soma ao total.
		SomaTotal += Soma;

		//-- acerta o peso (de 2 a 9).
		if (Peso == 9) Peso = 2;
		else Peso++;

	}

	DVMod11 = SomaTotal % 11;

	if ((DVMod11 == 0) ||
		(DVMod11 == 1) ||
		(DVMod11 == 10))		//-- Se Resto = 0, 1 ou 10, DV = 1;
		DVMod11 = 1;
	else						//-- DV = 11 - Resto.
		DVMod11 = 11 - DVMod11;

	if (strDVMod11 == String(DVMod11))
		return true;
	else
		return false;
}

    // Verifica se o digito do número passado é válido, usando o módulo
    // passado ciclando o peso até o peso máximo, se o digito for maior 
    // ou igual à 10 ele é convertido para 0
	function VerificaDigA(numero, modulo, PesoMax, onze)
		{
		var soma, tamanho, algarismo, peso, digito;
		tamanho = numero.length - 2; // menos o digito e ajusta para primeiro elemento em 0
		
		soma = 0;
		peso = 2;
		
		while(tamanho >= 0)
			{
			algarismo = numero.substr(tamanho, 1);
			soma += algarismo * peso;
			peso++;
			if(peso > PesoMax)
				{ peso = 2; }
				
			tamanho--;
			}
		
		digito = modulo - (soma % modulo)
		
		if(onze == 0)
			{
			if( digito >= 10 )
				{
				digito = 0;
				}
			}
		else
			{
			if( digito >= 10 )
				{
				digito = digito % 10;
				}
			}

		if(digito == parseInt(numero.substr(numero.length - 1, 1), 10) )
			{
			return true;
			}
		return false;
		}
	
	// Usa a função VerificaDigA para verificar se o primeiro e o segundo
	// digito são válidos.
	function VerificaDigB(numero, modulo)
		{
		if( VerificaDigA(numero, modulo, numero.length, 1) )
			{
			if( VerificaDigA(numero.substr(0, numero.length - 1), modulo, (numero.length - 1), 1) )
				{
				return true;
				}
			}
		return false;
		}

	// Verifica o digito do SQL para pagamento de IPTU
	// segundo a regra. Peso de 2 à 10 volta para 1
	// se resto = 0 dv = 0, se resto = 1 dv = 1
	
	function DACIPTU(numero)
		{
		var soma, tamanho, algarismo, peso, digito;
		tamanho = numero.length - 2; // menos o digito e ajusta para primeiro elemento em 0
		
		soma = 0;
		peso = 2;
		
		while(tamanho >= 0)
			{
			algarismo = numero.substr(tamanho, 1);
			soma += algarismo * peso;
			peso++;
			if(peso > 10)
				{ peso = 1; }
				
			tamanho--;
			}
		
		digito = 11 - (soma % 11)
		
		if( digito >= 10 )
			{
			digito = 1 - (digito % 10);
			}

		if(digito == parseInt(numero.substr(numero.length - 1, 1), 10) )
			{
			return true;
			}
		return false;
		}