var jsRegExpMaskClass = new Class({
	
	field: '',
	
	initialize: function(field){
		if(typeof field == 'string'){
			this.field = $(field);
		}else{
			this.field = field;
		}
	},
	
	addMask: function(e, type){
		this.field.addEvent(e, (function(event){
			var rtn = '';
			switch(type){
				case 'l2n':	//
					rtn = this.l2n(event.target.getProperty('value'));
				break;
				case 'numeros':
					rtn = this.numeros(event.target.getProperty('value'));
				break;
				case 'telefone':
					rtn = this.telefone(event.target.getProperty('value'));
				break;
				case 'cpf':
					rtn = this.cpf(event.target.getProperty('value'));
				break;
				case 'cep':
					rtn = this.cep(event.target.getProperty('value'));
				break;
				case 'cnpj':
					rtn = this.cnpj(event.target.getProperty('value'));
				break;
				case 'romanos':
					rtn = this.romanos(event.target.getProperty('value'));
				break;
				case 'site':
					rtn = this.site(event.target.getProperty('value'));
				break;
			}
			event.target.setProperty('value', rtn);
		}).bind(this));
	},
	
	l2n: function(value){
		value = value.replace(/o/gi,"0");
		value = value.replace(/i/gi,"1");
		value = value.replace(/z/gi,"2");
		value = value.replace(/e/gi,"3");
		value = value.replace(/a/gi,"4");
		value = value.replace(/s/gi,"5");
		value = value.replace(/t/gi,"7");
		return value;
	},
	
	numeros: function(value){
		return value.replace(/[^\d]/g,"");
	},
	
	telefone: function(value){
		value = value.replace(/[^\d]/g,"");
		value = value.replace(/^(\d\d)(\d)/g,"($1) $2");
		value = value.replace(/(\d{4})(\d)/,"$1-$2");
		return value;
	},
	
	cpf: function(value){
		value = value.replace(/[^\d]/g,"");
		value = value.replace(/(\d{3})(\d)/,"$1.$2");
		value = value.replace(/(\d{3})(\d)/,"$1.$2");
		value = value.replace(/(\d{3})(\d{1,2})$/,"$1-$2");
		return value;
	},
	
	cep: function(value){
		value = value.replace(/[^\d]/g,"");
		value = value.replace(/^(\d{5})(\d)/,"$1-$2");
		return value;
	}
	
});
