var keyActions = new Array();

function setKeyHandler(code, action, special) {
    var collection = new Array(code, action, special);
    keyActions.push(collection);
}

function keyHandler(e) {
    var evt = (e) ? e : (window.event) ? window.event : null;
    if(evt) {
        var key = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
        window.status = key;
        for(var i = 0; i < keyActions.length; i++) {
            var special = keyActions[i][2];
            if(special) {
                if(special == 'alt') {
                    if(key == keyActions[i][0] && evt.altKey) {
                        eval(keyActions[i][1]);
                    }
                }
                else if(special == 'ctrl') {
                    if(key == keyActions[i][0] && evt.ctrlKey) {
                        eval(keyActions[i][1]);
                    }
                }
                else if(special == 'shift') {
                    if(key == keyActions[i][0] && evt.shiftKey) {
                        eval(keyActions[i][1]);
                    }
                }
            }
            else {
                if(key == keyActions[i][0]) {
                    eval(keyActions[i][1]);
                }
            }
        }
    }
}

document.onkeyup = keyHandler;