window.addEvent('domready', function() {

    function restrictNumbers(field, num) {
        // Catch keypress in textbox and prevent illegal input
        field.addEvent('keydown', function(e){

            var maxSize = num;

            var fieldValue = field.get('value');

            // Set allowed keys
            var allowedKeys = [];
            for (var i = 48; i <= 57; i++) // Regular number keys
                allowedKeys.push(i);
            for (var i = 96; i <= 105; i++) // Numpad keys
                allowedKeys.push(i);

            var allowedControlKeys = [8, 46, 37, 39, 9]; // Backspace, Left, Right, Delete, Tab
            
            // Get text selection range ({start: x1, end: x2})
            var selection = field.getSelectedRange();

            // Block illegal input
            if(!allowedControlKeys.contains(e.code)) {
                if(selection.start == selection.end) {
                    if(fieldValue.length >= maxSize || !allowedKeys.contains(e.code))
                        e.stop();
                } else {
                    if (!allowedKeys.contains(e.code))
                        e.stop();
                }
            }

        });
    }

    restrictNumbers($('y'), 4);

});