/*
 * Object: oKeyboard
 *
 * Purpose: Provide keyboard related functionality.
 *
 * @author Boniface Lau
 */
var oKeyboard = (function() {

    var bShiftPressed = false;
    var bCtrlPressed = false;

    function getKeyCode(oEvt) {
        return (oEvt
                ? // Mozilla
                 oEvt.which
                : // IE
                 event.keyCode);
    }

    /*
     * Export public properties and methods.
     */
    return {
        'bShiftPressed': bShiftPressed,
        'bCtrlPressed': bCtrlPressed,
        'getKeyCode': getKeyCode
    }
})();

    if (document.captureEvents) {
        document.captureEvents(Event.KEYDOWN | Event.KEYUP);
    }

    document.onkeydown = function(oEvt) {
        var iKeyCode = oKeyboard.getKeyCode(oEvt);
        if (iKeyCode == 16) {
            oKeyboard.bShiftPressed = true;
        } else if (iKeyCode = 17) {
            oKeyboard.bCtrlPressed = true;
        }
    }

    document.onkeyup = function(oEvt) {
        var iKeyCode = oKeyboard.getKeyCode(oEvt);
        if (iKeyCode == 16) {
            oKeyboard.bShiftPressed = false;
        } else if (iKeyCode = 17) {
            oKeyboard.bCtrlPressed = false;
        }
    }
