$('document').ready(function(){
		
	$('.data').live('keyup', function(event){
        formata('DATA', this, 10, event);
	})
	
	$('.numero').live('keydown', function(event){
        return somenteNumero(event);
	})
		
	$('.telefone').live('keyup', function(event){
        return formata('TELEFONE', this, 12, event);
	})

	$('.cpf').live('keyup', function(event) {
        return formata('CPF', this, 9, event);
	})
	$('.cpf').live('blur', function(event) {
        if (!validarCPF(this.value))
        	this.value = "";
	})
	
});

function formata(tipo,campo,tammax, teclapres) {
    var tecla=(window.event)?event.keyCode:teclapres.which;
    vr = campo.value;

    switch(tipo)
	{
    	case 'CPF':
	        vr = vr.replace( ".", "" );
	        vr = vr.replace( ".", "" );
	        vr = vr.replace( "-", "" );
	        tam = vr.length ;
	        if (tam > 3) {
	            vr = vr.substr( 0, 3 ) + '.' +  vr.substr( 3, tam );
	        }
	        if (tam > 6) {
	            vr = vr.substr( 0, 7 ) + '.' +  vr.substr( 7, tam );
	        }
	        if (tam > 9) {
	            vr = vr.substr( 0, 11 ) + '-' +  vr.substr( 11, tam );
	        }
	
	        if (tam == 3) {
	            vr = vr.substr( 0, 3 ) + '.' +  vr.substr( 3, tam );
	        }
	        if (tam == 6) {
	            vr = vr.substr( 0, 7 ) + '.' +  vr.substr( 7, tam );
	        }
	        if (tam == 9) {
	            vr = vr.substr( 0, 11 ) + '-' +  vr.substr( 11, tam );
	        }
	        campo.value = vr;
			break;
			
    	case 'CEP':
	    	
			vr = vr.replace( "-", "" );
			tam = vr.length ;
			if (tam > 5) {
				vr = vr.substr( 0, 5 ) + '-' +  vr.substr( 5, tam );
			}
	        campo.value = vr;
			
			break;
    	
		case 'DATA':
	        vr = vr.replace( "/", "" );
	        vr = vr.replace( "/", "" );
	        tam = vr.length ;
	        if (tam > 2) {
	            vr = vr.substr( 0, 2 ) + '/' +  vr.substr( 2, tam );
	        }
	        if (tam > 4) {
	            vr = vr.substr( 0, 5 ) + '/' +  vr.substr( 5, tam );
	        }
            if (vr.substr( 0, 2 ) > 31 ) {
				alert('O limite para os dias é 31.');
				vr.value = "";
				vr.focus();
			}
			if (vr.substr( 3, 4 ) > 12 ) {
				alert('O limite para os meses é 12.');
				vr.value = "";
				vr.focus();
			}

	        campo.value = vr;
     	break;       
	    
		case 'TELEFONE':
			vr = campo.value;
			vr = vr.replace( " ", "" );
			vr = vr.replace( ".", "" );
			tam = vr.length;
			if (tam > 2) {
				vr = vr.substr( 0 , 2 ) + ' ' +  vr.substr( 2, tam );
			}
			if (tam > 7) {
			  	vr = vr.substr( 0 , 7 ) + '.' +  vr.substr( 7, tam );
			}
			campo.value = vr;
			break;

	    case 'VALOR':
	    
			while (vr.indexOf(".") > -1)
				vr = vr.replace('.','');
			while (vr.indexOf(" ") > -1)
				vr = vr.replace(' ','');

			vr = vr.replace( "R$", "" );
			vr = vr.replace( ",", "" );
			var centavos = vr.substring(vr.length-2)
			centavos = (centavos.length > 0)?','+centavos:centavos;
			vr = vr.substring(0,vr.length-2)

			var sinal = (vr < 0)?"-":'';
			if (sinal == '-')
				vr.replace('-','');
			for (var i = 0; i < Math.floor((vr.length-(1+i))/3); i++) {
				if (vr.substring(0,vr.length-(4*i+3)) != '-')
					vr = vr.substring(0,vr.length-(4*i+3))+'.'+vr.substring(vr.length-(4*i+3));
			}
			if (vr.indexOf('-') > -1)
				sinal = '';
			vr = sinal + vr + centavos;
			campo.value = vr;
			break;


	}
}

function somenteNumero(e){
    var tecla=(window.event)?event.keyCode:e.which;
    if((tecla > 47 && tecla < 58) || (tecla > 94 && tecla < 106) || tecla == 0 || tecla == 8 || tecla == 9) 
		return true;
    else 
		return false;
}


function validarCPF(cpf) {
	// Verifica se o campo é nulo
	if (cpf != '') {
		cpf = cpf.replace(".","");
		cpf = cpf.replace(".","");
		cpf = cpf.replace("-","");
		if (cpf != "11111111111" && cpf != "22222222222" && cpf != "33333333333" && cpf != "44444444444" && cpf != "55555555555" && cpf != "66666666666" && cpf != "77777777777" && cpf != "88888888888" && cpf != "99999999999" && cpf != "00000000000"){
			// 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
			
			// Desmembra 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) {
			      alert('CPF inválido');
			      return false;
			   } else {
					return true;	
			   }
		} else {
			alert("CPF inválido");
			return false;
		}
	}
}
