/**
 * Métodos de uso:
 * PERSONALIZADO:
 * 		$("#str_usuario").regfilter({expressao: "[0-9]"});
 * 		$("#str_usuario").regfilter({expressao: "[a-f]"});
 * PADRÃO: 
 * 		$("#str_usuario").regfilter();
 */
// função anonima para evitar conflitos
(function($){
	
	// adiciona ao jquery
	$.fn.extend({
		
		// o nome do plugin/addon a ser criado
		regfilter: function(opcoes) {
			
			// valores padrões aqui
			var padroes = {
				// a expressão regular a ser utilizada, só letras, números e ponto.
				expressao: "[a-zA-Z0-9.]"
			};
			
			// atribui as opções aos padrões
			var atribuicao = $.extend(padroes, opcoes);
			
			// repetir sobre o grupo atual de elementos correspondentes
			return this.each(function() {
				// código aqui.
				
				// carrega os parâmetros para acessar (ex: parametros.expressao)
				var parametros = atribuicao;
				
				// associa o elemento utilizado a uma variável, facilita o código
				var objeto = $(this);
				
				// adiciona o evento ao objeto
				objeto.keypress(function(codigo) {
					
					// tecla pressionada (recupera do código)
					var tecla = String.fromCharCode(codigo.which);
					
					// cria a expressão regular
					var valido = new RegExp(parametros.expressao, 'g');
					
					// se for o código de uma tecla especial
					if ((codigo.which == 8)
						|| (codigo.which == 13)
						|| (codigo.which == 0)) {
						// aceita o código
					}
					// se a tecla não for permitida pela expressão
					else if (! valido.test(tecla)) {
						
						// previne o uso
						codigo.preventDefault();
					}
				});
			});
		}
	});
// passa o jQuery para a função
})(jQuery);

