// iPAC JavaScript - Versão Alpha 20040305 - http://codigolivre.org.br/projects/libjs/



function LIMP(c)					
	{
	// Função que retorna como resultado um valor sem símbolos auxiliares, como a barra
	var pos;
	var s = new Array();			// define uma matriz com os símbolos que serão eliminados
	s[0] = "-";
	s[1] = "/";
	s[2] = ",";
	s[3] = ".";
	s[4] = "(";
	s[5] = ")";
	s[6] = " ";
	for(var x=0; x < s.length ; x++)
		{
		while((pos=c.indexOf(s[x])) != -1)
			{
			c = c.substring(0, pos) + c.substring(pos+1);
			}
		}
	return(c);			// retorna o valor sem os símbolos
	}



function isNULL(c)	
	{
	// Função para verifição se o valor é vazio ou só contenha espaços
	if(c == "")
		{
		return(1);			// retorna 1 (true) se for vazio
		}
	else
		{
		var pos=0;
		while(c.charAt(pos) == " ")
			{
			if(pos == c.length-1)
				{
				return(1);			// retorna 1 (true) se apenas tiver espaços em branco
				}
			pos++;
			}
		return(0);			// retorna 0 (false) se for um valor não vazio (ou não nulo)
		}
	}



function isNUMB(c)
	{
	// Função para verificação de um valor numérico válido
	if((pos=c.indexOf(",")) != -1)
		{		
		c = c.substring(0,pos)+"."+c.substring(pos+1);
		}
	if((parseFloat(c) / c != 1))
		{
		if(parseFloat(c) * c == 0)
			{
			return(1);
			}
		else
			{
			return(0);			// retorna 0 (false) se não for um valor numérico válido
			}
		}
	else
		{
		return(1);			// retorna 1 (true) se for um valor numérico válido
		}
	}



function toNUMB(c)
	{
	// Função que converte um número com sinal decimal ponto para vírgula
	if(isNUMB(c) != 1)
		{
		return(0);			// retorna 0 se não for um valor numérico válido
		}
	if((pos=c.indexOf(","))!=-1)
		{		
		c = c.substring(0,pos)+"."+c.substring(pos+1);
		}
	c = parseFloat(c);
	return(c);			// retorna o valor convertido
	}



function isMAIL(c)
	{
	// Função para verificação de um endereço de e-mail válido
	pos = c.indexOf("\@");				// procura pela presença da arroba
	if(pos == -1)
		{
		return(0);			// se não tiver a arroba retorna como e-mail inválido
		}
	else
		{
		if(c.indexOf("\@", pos+1) != -1)
			{
			return(0);		// se tiver mais de uma arroba retorna como e-mail inválido
			}
		else
			{
			if(c.indexOf("\@") > c.length-3 || c.indexOf("\@") == 0)			// verifica a posição da arroba
				{
				return(0);			// se o campo não for um e-mail válido, retorna como 0 (false)
				}
			else
				{
				return(1);			// se o campo for um e-mail válido, retorna como 1 (true)
				}
			}
		}
	}



function isCNPJ(CNPJ)
	{
	// Função que verifica se é um código de CNPJ, antigo CGC, válido
	CNPJ = LIMP(CNPJ);		// limpa o valor
	if(CNPJ.length != 14)
		{
		return(0);			// retorna como um código de CNPJ inválido
		}
	if(isNUMB(CNPJ) == -1)		// verifica se o que sobrou é um valor numérico
		{
		return(0);			// retorna como um código de CNPJ inválido
		}
	else
		{
		if(CNPJ == 0)			// verifica se for um valor numérico vazio
			{
			return(0);
			}
		else
			{
			pos=CNPJ.length-2;
			if(isCNPJ2(CNPJ,pos) == 1)			// desmembra o código e verifica se este é válido
				{
				pos=CNPJ.length-1;
				if(isCNPJ2(CNPJ,pos) == 1)
					{	
					return(1);			// retorna 1 (true) indicando que o CNPJ é válido
					}
				else
					{
					return(0);			// retorna 0 (false) indicando que o CNPJ é inválido
					}
				}
			else
				{
				return(0);			// retorna 0 (false) indicando que o CNPJ é inválido
				}
			}
		}
	}
function isCNPJ2(CNPJ, pos)
	{
	// Segunda parte da função que verifica se o código do CNPJ é válido
	var v = 0;
	var ind = 2;
	var tam;
	for(var f=pos; f > 0; f--)
		{
		v += parseInt(CNPJ.charAt(f-1))*ind;
		if(ind > 8)
			{
			ind = 2;
			}
		else
			{
			ind++;
			}
		}
		v %= 11;
		if(v == 0 || v == 1)
			{
			v = 0;
			}
		else
			{
			v = 11 - v;
			}
	if(v != parseInt(CNPJ.charAt(pos)))
		{
		return(0);			// retorna 0 (false) indicando que o trecho do CNPJ é inválido
		}
	else
		{
		return(1);			// retorna 1 (true) indicando que o trecho do CNPJ é válido
		}
	}



function isCPF(CPF)
	{
	// Função que verifica se o código do CPF é válido;
	CPF = LIMP(CPF);			// limpa o valor
	if(isNUMB(CPF) == 0)		// verifica se o que sobrou é um valor numérico
		{
		return(0);			// retorna como um código de CPF inválido
		}
	else
		{
		if(CPF == 0 || CPF == "11111111111" || CPF == "66666666666")
			{
			return(0);			// retorna 0 (falso) se for um valor vazio ou se é uma excessão
			}
		else
			{
			var POSICAO, I, SOMA, DV, DV_INFORMADO;
			var DIGITO = new Array(10);
			DV_INFORMADO = CPF.substr(9, 2);			// retira os dois últimos dígitos
			// 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(0);			// retorna 0 (falso) indicando que o CPF inválido
				} 
			}
		}
	return(1);			// retorna 1 (true) indicando que o CPF válido
	}



function isHOUR(HORA, MIN)
	{
	// Função que verifica se é um valor de hora válido
	if(isNUMB(HORA) != 1)
		{
		return(-1);			// retorna -1 indicando que a hora não é um número
		}
	else
		{
		if(HORA < 0 || HORA > 23)
			{
			return(-1);			// retorna -1 indicando que a hora não está no intervalo de tempo correto
			}
		}
	if(isNUMB(MIN) != 1)
		{
		return(-2);			// retorna -2 indicando que o minuto não é um número
		}
	else
		{
		if(MIN < 0 || MIN > 59)
			{
			return(-2);			// retorna -2 indicando que o minuto não está no intervalo de tempo correto
			}
		}
	return(1);			// retorna 1 (true) indicando que o valor é uma hora válida
	}



function isDATE(DIA, MES, ANO)
	{
	// Função que verifica se é um valor de data válida
	if(isNUMB(DIA) != 1)
		{
		return(-2);			// retorna -2 indicando que o dia do mês não é um número
		}
	else
		{
		if(DIA < 1 || DIA > 31)
			{
			return(-2);			// retorna -2 indicando que o dia não está no intervalo de tempo correto
			}
		}
	if(isNUMB(MES) != 1)
		{
		return(-3);			// retorna -3 indicando que o mês não é um número válido
		}
	else
		{
		if(MES < 1 || MES > 12)
			{
			return(-3);			// retorna -3 indicando que o mês é inválido
			}
		}
	if(isNUMB(ANO) != 1)
		{
		return(-4);			// retorna -4 indicando que o ano não é um número válido
		}
	else
		{
		if(ANO < 0)
			{
			return(-4);			// retorna -4 indicando que o ano não é um número inteiro
			}
		}
	var c = new Date(toNUMB(ANO), (toNUMB(MES)-1), toNUMB(DIA));
	if(c.getDate() == DIA)
		{
		return(1);			// retorna 1 (true) indicando que é uma data válida
		}
	else
		{
		return(-1);			// retorna -1 indicando que é data inválida
		}
	}



function toMoney(c)
	{
	// Função que converte um número para o formato de moeda
	c += "";
	if(isNUMB(c) == 1)
		{
		if(c.indexOf(".") != -1)
			{
			cv=c.substring(0,c.indexOf("."))+","+c.substring(c.indexOf(".")+1);
			c=cv;
			}
		else
			{
			c+=",00";
			}
		if(c.indexOf(",") == c.length-2)
			{
			c+="0";
			}
		else
			{
			c = c.substring(0,c.indexOf(",")+3);
			}
		return(c);
		}
	else
		{
		return("0,00");
		}
	}

