// JavaScript Document
function retiraEspaco(str)
{ 
	return str.replace(/^\s+|\s+$/g, "");
};
function validaFormulario(formulario)
{
	for(i=0 ; i < document.forms[formulario].elements.length ; i++)
	{
		if(!document.forms[formulario].elements[i].getAttribute("validacao")) continue;
		if(document.forms[formulario].elements[i].getAttribute("validacao") == "" || document.forms[formulario].elements[i].getAttribute("validacao") == "undefined") continue;		
		validacaoFormulario = document.forms[formulario].elements[i].getAttribute("validacao").split(";");
		
		for(j=0 ; j<validacaoFormulario.length ; j++)
		{
			if(validaParametro(document.forms[formulario].elements[i],validacaoFormulario[j]) == false) return false;
		}
	}
	return true;
}
function validaParametro(elemento,parametro)
{
	var dadosRecebidos = parametro.split(":");
	dadosRecebidos[1]  = String(dadosRecebidos[1]);
	switch(dadosRecebidos[0].toLowerCase())
	{
		case "requirido":
			if(retiraEspaco(elemento.value) == "")
			{
				if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
					window.alert(dadosRecebidos[1]);
				else
					window.alert("O campo "+elemento.name+" é obrigatório.");
				elemento.focus();
				return false;
			}
		break;
		case "numerico":
			if(retiraEspaco(elemento.value) != "")
			{
				if(isNaN(retiraEspaco(elemento.value)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' deve ser numérico.');
					elemento.focus();
					return false;
				}
			}
		break;
		
		case "dinheiro":
			if(retiraEspaco(elemento.value) != "")
			{				
				if(isNaN(retiraEspaco(elemento.value).replace(/,/gi,".")))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+" não é um valor numérico. \n Por favor use ponto(.) ou virgula(,), para seperar somente centavos.");
					elemento.focus();
					return false;
				}
			}
		break;
		
		case "email":
			if(retiraEspaco(elemento.value) != "")
			{
				if (elemento.value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1)
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' deve ser um e-mail válido.');
					elemento.focus();
					return false;
				}
			}
		break;
		
		case "cpf":
			if(retiraEspaco(elemento.value) != "")
			{
				if(!verifyCPF(retiraEspaco(elemento.value)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' deve ser um CPF válido.');
					elemento.focus();
					return false;
				}
			}
		break;
		
		case "cnpj":
			if(retiraEspaco(elemento.value) != "")
			{
				if(!verifyCNPJ(retiraEspaco(elemento.value)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' deve ser um CNPJ válido.');
					elemento.focus();
					return false;
				}
			}
		break;
		
		case "cpfcnpj":
			if(retiraEspaco(elemento.value) != "")
			{
				if(!verifyCPF(retiraEspaco(elemento.value)))
				{
					if(!verifyCNPJ(retiraEspaco(elemento.value)))
					{
						if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
							window.alert(dadosRecebidos[1]);
						else
							window.alert("O campo "+elemento.name+' deve ser um CPF ou CNPJ válido.');
						elemento.focus();
						return false;
					}
				}
			}
		break;
		case "ano4":
			if(retiraEspaco(elemento.value) != "")
			{
				if(retiraEspaco(elemento.value).length != 4)
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' deve possuir 4 digitos.');
					elemento.focus();
					return false;
				}
				if(isNaN(retiraEspaco(elemento.value)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' deve ser numérico.');
					elemento.focus();
					return false;
				}
			}
		break;
		
		
		
		
		case "data":
			if(retiraEspaco(elemento.value) != "")
			{
				var dia = elemento.value.charAt(0)+""+elemento.value.charAt(1);
				var mes = elemento.value.charAt(3)+""+elemento.value.charAt(4);
				var ano = elemento.value.charAt(6)+""+elemento.value.charAt(7)+""+elemento.value.charAt(8)+""+elemento.value.charAt(9);
				if(Number(dia)>31 || isNaN(retiraEspaco(dia)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' está com o dia inválido.');
					elemento.focus();
					return false;
				}
				if(Number(mes)>12 || isNaN(retiraEspaco(mes)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' está com o mês inválido.');
					elemento.focus();
					return false;
				}				
				if(Number(ano)<=1900 || isNaN(retiraEspaco(ano)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' está com o ano inválido.');
					elemento.focus();
					return false;
				}				
			}
		break;
		case "hora":
			if(retiraEspaco(elemento.value) != "")
			{
				var hora = elemento.value.charAt(0)+""+elemento.value.charAt(1);
				var minu = elemento.value.charAt(3)+""+elemento.value.charAt(4);
				if(Number(hora)>23 || isNaN(retiraEspaco(hora)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' está com a hora inválida.');
					elemento.focus();
					return false;
				}
				if(Number(minu)>59 || isNaN(retiraEspaco(minu)))
				{
					if(dadosRecebidos[1] != "" && dadosRecebidos[1] != "undefined")
						window.alert(dadosRecebidos[1]);
					else
						window.alert("O campo "+elemento.name+' está com o minuto inválido.');
					elemento.focus();
					return false;
				}				
			}
		break;
	}
	return true;
}
function verifyCPF(cpfK)
{
	    
		s = cpfK;
				
		s = s.replace(/[.]+/g,'');
		s = s.replace(/[-]+/g,'');
		if((s == "11111111111") || (s == "22222222222") || (s == "33333333333") || (s == "44444444444") ||
		(s == "55555555555") || (s == "66666666666") ||	(s == "77777777777") || (s == "88888888888") ||
	    (s == "99999999999") || (s == "00000000000") || (s.length != 11)) 
		{
   			return false;
	    }	
		
		var i; 
        var c = s.substr(0,9); 
        var dv = s.substr(9,2); 
        var d1 = 0; 
        for (i = 0; i < 9; i++) 
        { 
            d1 += c.charAt(i)*(10-i); 
        } 
            if (d1 == 0) 
               return false; 
             
        d1 = 11 - (d1 % 11); 
        if (d1 > 9) d1 = 0; 
        if (dv.charAt(0) != d1) 
            return false; 
        
        d1 *= 2; 
        for (i = 0; i < 9; i++) 
        { 
            d1 += c.charAt(i)*(11-i); 
        } 
        d1 = 11 - (d1 % 11); 
        if (d1 > 9) d1 = 0; 
        if (dv.charAt(1) != d1) 
            return false; 
return true;
}

function verifyCNPJ(cnpjK)
{
	var cnpj = cnpjK;  
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;  
	digitos_iguais = 1;  
	for (var i=0; i < cnpj.length - 1; i++)  
	{
		if (cnpj.charAt(i) != cnpj.charAt(i + 1)) 
		{  
		digitos_iguais = 0;  
		break;  
		}  
	}
	if (!digitos_iguais) 
	{  
		tamanho = cnpj.length - 2  
		numeros = cnpj.substring(0,tamanho);  
		digitos = cnpj.substring(tamanho);  
		soma = 0;  
		pos = tamanho - 7;  
		
		for (var i=tamanho; i >= 1; i--) 
		{  
			soma += numeros.charAt(tamanho - i) * pos--;  
			if (pos < 2) 
			{  
			pos = 9;  
			}  
		}  
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;  
		if (resultado != digitos.charAt(0)) 
		{  
			return false;  
		}  
		
		tamanho = tamanho + 1;  
		numeros = cnpj.substring(0,tamanho);  
		soma = 0;  
		pos = tamanho - 7;  
		
		for (i = tamanho; i >= 1; i--) 
		{  
			soma += numeros.charAt(tamanho - i) * pos--;  
			if (pos < 2)
			{  
				pos = 9;  
			}  
		}  
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;  
		if (resultado != digitos.charAt(1)) 
		{  
			return false;  
		}  
	
	return true;  
	}	
	else  
	return false;  
   
}
