var ChaveAcessoMask = new Class({
    initialize: function() {
		this.keypress = this.keypress.bind(this);
		this.keyup = this.keyup.bind(this);
		this.focus = this.focus.bind(this);
		this.bluer = this.blur.bind(this);
    },

    isValid: function(value) {
        return value.match(/^([a-zA-Z]{2})(\d{4})$/) != null;
    },

    mask: function(value) {
        var part1 = (value > 2) ? value.substr(0, 2) : value.substr(0, value.length);
        var part2 = (value > 2) ? value.substr(2, value.length - 2) : "";
        part1 = part1.onlyAlpha();
        part2 = part2.onlyNumeric();
        return (part1.length < 2) ? part1 : part1.substr(0, 2) + part2.substr(0, 4);
    },

    verifyAlpha: function(value) {
		if (value.length > 2) {
		    return value.substr(0, 2).isAlpha();
		} else if (value.length > 0) {
			return value.substr(0, value.length).isAlpha();
		}
		return false;
    },

    verifyNumeric: function(value) {
        if (value.length > 2) {
            return value.substr(2, value.length - 2).isNumeric();
        }
        return true; 
    },

    verify: function(value) {
    	return this.verifyAlpha(value) && this.verifyNumeric(value);
    },
    
    keypress: function(event) {
        var key = event.key;
        var value = event.target.value.trim() + key;
        if (this.verify(value) || Event.Keys.has(key)) {
            return true;
        } else {
            event.stop();
            return false;
        }
    },

    keyup: function(event) {
        if (!this.verify(event.target.value)) {
        	event.target.value = this.mask(event.target.value);
        }
    },

    focus: function(event) {
    	event.target.maxLength = 6;
        event.target.select();
    },

    blur: function(event) {
        if (!this.isValid(event.target.value)) {
        	event.target.value = "";
        }
    }
});