function validaCPF ( val ) {
	
	var regex = /^(\d{3}\.?\d{3}\.?\d{3}-?\d{2})$/i;
	var res;
	var valido = { valido: true, msg: "" };
	
	if( val != null && val != '' ) {
		
		res = val.match( regex );
		
		if( res == null ) {
			
			valido.valido = false
			valido.msg = "Formato de CPF inválido.";
			
		} else {
			
			var cpf_calc = val.replace( /\./g, "" ).replace( /-/g, '' );
			
			var c = cpf_calc.split('');
			var y = 10;
			var s = 0;
			
			for ( x = 0; x < 9; x++ ) {
				
				s += c[x] * y;
				
				y--;
				
			}
			
			j = ( ( s % 11 == 0 ) || ( s % 11 == 1 ) ) ? 0 : ( 11 - ( s % 11 ) );
			
			y = 11;
			s = 0;
			cpf_remontado = "";
			
			for ( x = 0; x < 9; x++ ) {
				
				cpf_remontado += c[x];
				
				s += c[x] * y;
				
				y--;
				
			}
			
			s += 2 * j;
			
			k = ( ( s % 11 == 0 ) || ( s % 11 == 1 ) ) ? 0 : ( 11 - ( s % 11 ) );
			
			cpf_remontado += j.toString() + k.toString();
			
			if( cpf_calc != cpf_remontado ) {
				
				valido.valido = false
				valido.msg = "O CPF informado não é válido ou contém um erro de digitação. Por favor, tente novamente.";
				
			}
			
		}
	} else {
		
		valido.valido = false;
		valido.msg = "Campo obrigatório";
	}
	
	return valido;
	
}

function validaEmail( email ) {
	
	// Verifica Email
	var regex = /^(([a-zA-Z0-9]+[\s\._-]*)*[a-zA-Z0-9]@([a-zA-Z0-9]+[\.-]+[a-zA-Z0-9]+)+)$/i;
	var val = email;
	var res;
	var valido = { valido: true, msg: "" };
	
	if( val != null && val != '' ) {
		
		res = val.match( regex );
		
		if( res == null ) {
			
			valido.valido = false;
			valido.msg = 'Valor fornecido deve ser um email válido.';
			
		}
	} else {
		
		valido.valido = false;
		valido.msg = 'Campo obrigatório.';
	}
	
	return valido;
	
}

function validaVazio( val ) {
	
	var teste = { valido:true, msg: "" };
	
	if( val == null || val == "" || val.toLowerCase().indexOf('escolha um') > -1 ) {
		
		teste.valido = false;
		teste.msg = "Campo obrigatório";
	}
	
	return teste;

}
