// JavaScript Document
function Verifica_campo_CPF(campo) {
	var CPF = campo.value; // Recebe o valor digitado no campo

	// Aqui começa a checagem do CPF
	var POSICAO, I, SOMA, DV, DV_INFORMADO;
	var DIGITO = new Array(10);
	
	DV_INFORMADO = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado

	// Desemembra o número do CPF na array DIGITO
	for (I=0; I<=8; I++) {
  		DIGITO[I] = CPF.substr( I, 1);
	}
	
	for (i=0; i<=8; i++){
		if (!parseInt(DIGITO[I])){
			campo.focus();
			return false;					 
		}
	}

	// 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) {
		alert('CPF inválido');
		campo.value = '';
		campo.focus();
		return false;
	}
	
	if (campo.value == "00000000000" || campo.value == "11111111111" || campo.value == "22222222222" || campo.value == "33333333333" || campo.value == "44444444444" || campo.value == "55555555555" || campo.value == "66666666666" || campo.value == "77777777777" || campo.value == "88888888888" || campo.value == "99999999999") {	
		alert('CPF inválido');
		campo.value = '';
		campo.focus();
		return false;
	}
}

function check_date(DATA) {
	
	var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
	var msgErro = 'Formato inválido de data.';
	var vdt = new Date();
	var vdia = vdt.getDay();
	var vmes = vdt.getMonth();
	var vano = vdt.getYear();

	if ((DATA.value.match(expReg)) && (DATA.value!='')){
		
		var dia = DATA.value.substring(0,2);
		var mes = DATA.value.substring(3,5);
		var ano = DATA.value.substring(6,10);
		
		if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30)){
			alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias.");
			DATA.value = '';
			DATA.focus();
			return false;
		} 
		else{ //1
			if(ano%4!=0 && mes==2 && dia>28){
				alert("Data incorreta!! O mês especificado contém no máximo 28 dias.");
				DATA.value = '';
				DATA.focus();
				return false;
			} 
			else{ //2
				if(ano%4==0 && mes==2 && dia>29){
					alert("Data incorreta!! O mês especificado contém no máximo 29 dias.");
					DATA.value = '';
					DATA.focus();
					return false;
				} 
				else{ //3
					bname=navigator.appName;
					if (bname=="Microsoft Internet Explorer"){
						if (ano > vano) {
							alert("Data incorreta!! Ano informado maior que ano atual.");
							DATA.value = '';
							DATA.focus();
							return false;
						}
					}
					else{ //4
					//alert ("Data correta!");
						return true;
					} //4-else
				} //3-else
			}//2-else
		}//1-else
	} 
	else { //5
		//alert(msgErro);
		DATA.value = '';
		//DATA.focus();
		return false;
	} //5-else
}
//VALIDAÇÃO DA DATA

function VerificaData(digData)
{
    var bissexto = 0;
    var data = digData;
    var tam = data.length;
    if (tam == 10)
    {
        var dia = data.substr(0,2)
        var mes = data.substr(3,2)
        var ano = data.substr(6,4)
        if ((ano > 1900)||(ano < 2100))
        {
            switch (mes)
            {
                case '01':
                case '03':
                case '05':
                case '07':
                case '08':
                case '10':
                case '12':
                    if  (dia <= 31)
                    {
                        return true;
                    }
                    break
                
                case '04':        
                case '06':
                case '09':
                case '11':
                    if  (dia <= 30)
                    {
                        return true;
                    }
                    break
                case '02':
                    /* Validando ano Bissexto / fevereiro / dia */
                    if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0))
                    {
                        bissexto = 1;
                    }
                    if ((bissexto == 1) && (dia <= 29))
                    {
                        return true;                
                    }
                    if ((bissexto != 1) && (dia <= 28))
                    {
                        return true;
                    }            
                    break                        
            }
        }
    }    
    alert("A Data "+data+" é inválida!");
    return false;
}
