function KeyboardHandling()
{
    this.KeyDown = new Array();
    this.KeyPress = new Array();
    // not available
    this.iNa = -1;
   
    this.InitializeKeys();
}

KeyboardHandling.prototype.KeyEvent = function(event)
{
//handle your own events as you wish
//    try
//    {
//        if( !event ) event = window.event;
//        if( !event ) return false;
//        
//        var iKeyCode = String(event.keyCode ? event.keyCode : event.which);
//        
//        var commandType = Command.None;
//        var commandArgs = new Array();
//        if( parseInt(iKeyCode, 10) == keyboardHandling.KeyDown["ARROW_UP"] )
//        {
//        }
//        else if( parseInt(iKeyCode, 10) == keyboardHandling.KeyDown["ARROW_LEFT"] )
//        {
//        }
//        else if( parseInt(iKeyCode, 10) == keyboardHandling.KeyDown["ARROW_RIGHT"] )
//        {
//        }
//        else if( parseInt(iKeyCode, 10) == keyboardHandling.KeyDown["SPACE"] )
//        {
//        }
//        else if( parseInt(iKeyCode, 10) == keyboardHandling.KeyDown["ESC"] )
//        {
//        }
//   }
//   catch(ex)
//   {
//       debugHelper.Exception("keyEvent " + ex.message, document.URL, document.lastModified, document.referrer);
//   }
}

KeyboardHandling.prototype.Key = function(psKey, event)
{
   if( !event ) event = window.event;

   if( event.type == 'keydown' )
   {
      return this.KeyDown[psKey];
   }
   else if( event.type == 'keypress' )
   {
      return this.KeyPress[psKey];
   }
}

KeyboardHandling.prototype.InitializeKeys = function()
{
    this.KeyDown["0"] = 48;
    this.KeyDown["1"] = 49;
    this.KeyDown["2"] = 50;
    this.KeyDown["3"] = 51;
    this.KeyDown["4"] = 52;
    this.KeyDown["5"] = 53;
    this.KeyDown["6"] = 54;
    this.KeyDown["7"] = 55;
    this.KeyDown["8"] = 56;
    this.KeyDown["9"] = 57;
    this.KeyDown["A"] = 65;
    this.KeyDown["a"] = this.iNa;
    this.KeyDown["A_ACUTE"] = this.iNa;
    this.KeyDown["a_ACUTE"] = this.iNa;
    this.KeyDown["A_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["a_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["A_GRAVE"] = this.iNa;
    this.KeyDown["a_GRAVE"] = this.iNa;
    this.KeyDown["A_RING"] = this.iNa;
    this.KeyDown["a_RING"] = this.iNa;
    this.KeyDown["A_TILDE"] = this.iNa;
    this.KeyDown["a_TILDE"] = this.iNa;
    this.KeyDown["A_UMLAUT"] = this.iNa;
    this.KeyDown["a_UMLAUT"] = this.iNa;
    this.KeyDown["AE"] = this.iNa;
    this.KeyDown["ae"] = this.iNa;
    this.KeyDown["ALT"] = 18;
    this.KeyDown["AMPERSAND"] = this.iNa;
    this.KeyDown["APOSTROPHE"] = 222;
    this.KeyDown["ARROW_DOWN"] = 40;
    this.KeyDown["ARROW_LEFT"] = 37;
    this.KeyDown["ARROW_RIGHT"] = 39;
    this.KeyDown["ARROW_UP"] = 38;
    this.KeyDown["ASTERISK"] = this.iNa;
    this.KeyDown["AT"] = this.iNa;
    this.KeyDown["B"] = 66;
    this.KeyDown["b"] = this.iNa;
    this.KeyDown["BACKSLASH"] = 226;
    this.KeyDown["BACKSLASH2"] = 220;
    this.KeyDown["BACKSPACE"] = 8;
    this.KeyDown["BAR_VERTICAL"] = this.iNa;
    this.KeyDown["BAR_VERTICAL_BROKEN"] = this.iNa;
    this.KeyDown["BIT_SHIFT_LEFT"] = this.iNa;
    this.KeyDown["BIT_SHIT_RIGHT"] = this.iNa;
    this.KeyDown["BRACKET_CURLY_LEFT"] = this.iNa;
    this.KeyDown["BRACKET_CURLY_RIGHT"] = this.iNa;
    this.KeyDown["BRACKET_SQUARE_LEFT"] = 219;
    this.KeyDown["BRACKET_SQUARE_RIGHT"] = 22;
    this.KeyDown["C"] = 67;
    this.KeyDown["c"] = this.iNa;
    this.KeyDown["C_CEDILLA"] = this.iNa;
    this.KeyDown["c_CEDILLA"] = this.iNa;
    this.KeyDown["CANCEL"] = 3;
    this.KeyDown["CAPSLOCK"] = 20;
    this.KeyDown["CARET"] = this.iNa;
    this.KeyDown["CEDILLA"] = this.iNa;
    this.KeyDown["CENT"] = this.iNa;
    this.KeyDown["CLEAR"] = 12;
    this.KeyDown["COLON"] = this.iNa;
    this.KeyDown["COMMA"] = 188;
    this.KeyDown["CONTROL"] = 17;
    this.KeyDown["COPYRIGHT"] = this.iNa;
    this.KeyDown["CURRENCY_GENERAL"] = this.iNa;
    this.KeyDown["D"] = 68;
    this.KeyDown["d"] = this.iNa;
    this.KeyDown["DEGREE"] = this.iNa;
    this.KeyDown["DELETE"] = 46;
    this.KeyDown["DIVISION"] = this.iNa;
    this.KeyDown["DOLLAR"] = this.iNa;
    this.KeyDown["DOT_MIDDLE"] = this.iNa;
    this.KeyDown["E"] = 69;
    this.KeyDown["e"] = this.iNa;
    this.KeyDown["E_ACUTE"] = this.iNa;
    this.KeyDown["e_ACUTE"] = this.iNa;
    this.KeyDown["E_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["E_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["E_GRAVE"] = this.iNa;
    this.KeyDown["e_GRAVE"] = this.iNa;
    this.KeyDown["E_UMLAUT"] = this.iNa;
    this.KeyDown["e_UMLAUT"] = this.iNa;
    this.KeyDown["EM_DASH"] = this.iNa;
    this.KeyDown["EN_DASH"] = this.iNa;
    this.KeyDown["END"] = 35;
    this.KeyDown["EQUAL"] = 187;
    this.KeyDown["ESC"] = 27;
    this.KeyDown["ETH"] = this.iNa;
    this.KeyDown["eth"] = this.iNa;
    this.KeyDown["EXCLAMATION"] = this.iNa;
    this.KeyDown["EXCLAMATION_INVERT"] = this.iNa;
    this.KeyDown["F"] = 70;
    this.KeyDown["f"] = this.iNa;
    this.KeyDown["F1"] = 112;
    this.KeyDown["F2"] = 113;
    this.KeyDown["F3"] = 114;
    this.KeyDown["F4"] = 115;
    this.KeyDown["F5"] = 116;
    this.KeyDown["F6"] = 117;
    this.KeyDown["F7"] = 118;
    this.KeyDown["F8"] = 119;
    this.KeyDown["F9"] = 120;
    this.KeyDown["F10"] = 121;
    this.KeyDown["F11"] = 122;
    this.KeyDown["F12"] = 123;
    this.KeyDown["F13"] = 124;
    this.KeyDown["F14"] = 125;
    this.KeyDown["F15"] = 126;
    this.KeyDown["F16"] = 127;
    this.KeyDown["F17"] = 128;
    this.KeyDown["F18"] = 129;
    this.KeyDown["F19"] = 130;
    this.KeyDown["F20"] = 131;
    this.KeyDown["F21"] = 132;
    this.KeyDown["F22"] = 133;
    this.KeyDown["F23"] = 134;
    this.KeyDown["F24"] = 135;
    this.KeyDown["G"] = 71;
    this.KeyDown["g"] = this.iNa;
    this.KeyDown["GRATER_THAN"] = this.iNa;
    this.KeyDown["H"] = 72;
    this.KeyDown["h"] = this.iNa;
    this.KeyDown["HOME"] = 36;
    this.KeyDown["HYPHEN"] = 189;
    this.KeyDown["HYPHEN_SOFT"] = this.iNa;
    this.KeyDown["I"] = 73;
    this.KeyDown["i"] = this.iNa;
    this.KeyDown["I_ACUTE"] = this.iNa;
    this.KeyDown["i_ACUTE"] = this.iNa;
    this.KeyDown["I_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["i_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["I_GRAVE"] = this.iNa;
    this.KeyDown["i_GRAVE"] = this.iNa;
    this.KeyDown["I_UMLAUT"] = this.iNa;
    this.KeyDown["i_UMLAUT"] = this.iNa;
    this.KeyDown["INSERT"] = 45;
    this.KeyDown["J"] = 74;
    this.KeyDown["j"] = this.iNa;
    this.KeyDown["K"] = 75;
    this.KeyDown["k"] = this.iNa;
    this.KeyDown["L"] = 76;
    this.KeyDown["l"] = this.iNa;
    this.KeyDown["LESS_THEN"] = this.iNa;
    this.KeyDown["LINE_FEED"] = this.iNa;
    this.KeyDown["M"] = 77;
    this.KeyDown["m"] = this.iNa;
    this.KeyDown["MENU_KEY"] = 93;
    this.KeyDown["MICRO"] = this.iNa;
    this.KeyDown["MULTIPLICATION"] = this.iNa;
    this.KeyDown["N"] = 78;
    this.KeyDown["n"] = this.iNa;
    this.KeyDown["N_TILDE"] = this.iNa;
    this.KeyDown["n_TILDE"] = this.iNa;
    this.KeyDown["NOT"] = this.iNa;
    this.KeyDown["NUM_0"] = 96;
    this.KeyDown["NUM_1"] = 97;
    this.KeyDown["NUM_2"] = 98;
    this.KeyDown["NUM_3"] = 99;
    this.KeyDown["NUM_4"] = 100;
    this.KeyDown["NUM_5"] = 101;
    this.KeyDown["NUM_6"] = 102;
    this.KeyDown["NUM_7"] = 103;
    this.KeyDown["NUM_8"] = 104;
    this.KeyDown["NUM_9"] = 105;
    this.KeyDown["NUM_COMMA"] = 110;
    this.KeyDown["NUM_LOCK"] = 144;
    this.KeyDown["NUM_MULTIPLY"] = 106;
    this.KeyDown["NUM_PERIOD"] = 194;
    this.KeyDown["NUM_PLUS"] = 107;
    this.KeyDown["NUM_SLASH"] = 111;
    this.KeyDown["NUM_SUBTRACT"] = 109;
    this.KeyDown["NUMBER"] = this.iNa;
    this.KeyDown["O"] = 79;
    this.KeyDown["o"] = this.iNa;
    this.KeyDown["O_ACUTE"] = this.iNa;
    this.KeyDown["o_ACUTE"] = this.iNa;
    this.KeyDown["O_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["o_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["O_GRAVE"] = this.iNa;
    this.KeyDown["o_GRAVE"] = this.iNa;
    this.KeyDown["O_SLASH"] = this.iNa;
    this.KeyDown["o_SLASH"] = this.iNa;
    this.KeyDown["O_TILDE"] = this.iNa;
    this.KeyDown["o_TILDE"] = this.iNa;
    this.KeyDown["O_UMLAUT"] = this.iNa;
    this.KeyDown["O_UMLAUT"] = this.iNa;
    this.KeyDown["ONE_FOURTH"] = this.iNa;
    this.KeyDown["ONE_HALF"] = this.iNa;
    this.KeyDown["ONE_SUPERSCIPT"] = this.iNa;
    this.KeyDown["ORDINAL_FEMININE"] = this.iNa;
    this.KeyDown["ORDINAL_MASCULINE"] = this.iNa;
    this.KeyDown["P"] = 80;
    this.KeyDown["p"] = this.iNa;
    this.KeyDown["PAGE_DOWN"] = 34;
    this.KeyDown["PAGE_UP"] = 33;
    this.KeyDown["PARAGRAPH"] = this.iNa;
    this.KeyDown["PARENTHESIS_LEFT"] = this.iNa;
    this.KeyDown["PARENTHESIS_RIGHT"] = this.iNa;
    this.KeyDown["PAUSE"] = 19;
    this.KeyDown["PERCENT"] = this.iNa;
    this.KeyDown["PERIOD"] = 190;
    this.KeyDown["PLUS"] = this.iNa;
    this.KeyDown["PLUS_OR_MINUS"] = this.iNa;
    this.KeyDown["POUND_STERLING"] = this.iNa;
    this.KeyDown["PRINT_SCREEN"] = 44;
    this.KeyDown["Q"] = 81;
    this.KeyDown["q"] = this.iNa;
    this.KeyDown["QUESTION"] = this.iNa;
    this.KeyDown["QUESTION_INVERTED"] = this.iNa;
    this.KeyDown["QUOTE_DOUBLE"] = this.iNa;
    this.KeyDown["QUOTE_SINGLE_LEFT"] = 192;
    this.KeyDown["R"] = 82;
    this.KeyDown["r"] = this.iNa;
    this.KeyDown["REGISTERED"] = this.iNa;
    this.KeyDown["RETURN"] = 13;
    this.KeyDown["S"] = 83;
    this.KeyDown["s"] = this.iNa;
    this.KeyDown["SCROLL_LOCK"] = 145;
    this.KeyDown["SECTION"] = this.iNa;
    this.KeyDown["SEMICOLON"] = 186;
    this.KeyDown["SHARPS"] = this.iNa;
    this.KeyDown["SHIFT"] = 16;
    this.KeyDown["SLASH"] = this.iNa;
    this.KeyDown["SPACE"] = 32;
    this.KeyDown["SPACE_NONBREAKING"] = this.iNa;
    this.KeyDown["T"] = 84;
    this.KeyDown["t"] = this.iNa;
    this.KeyDown["TAB"] = 9;
    this.KeyDown["THORN"] = this.iNa;
    this.KeyDown["thorn"] = this.iNa;
    this.KeyDown["THREE_FOURTH"] = this.iNa;
    this.KeyDown["THREE_SUPERSCRIPT"] = this.iNa;
    this.KeyDown["TILDE"] = this.iNa;
    this.KeyDown["TWO_SUPERSCRIPT"] = 85;
    this.KeyDown["U"] = this.iNa;
    this.KeyDown["u"] = this.iNa;
    this.KeyDown["U_ACUTE"] = this.iNa;
    this.KeyDown["u_ACUTE"] = this.iNa;
    this.KeyDown["U_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["u_CIRCUMFLEX"] = this.iNa;
    this.KeyDown["U_GRAVE"] = this.iNa;
    this.KeyDown["u_GRAVE"] = this.iNa;
    this.KeyDown["U_UMLAUT"] = this.iNa;
    this.KeyDown["u_UMLAUT"] = this.iNa;
    this.KeyDown["UNDERSCORE"] = this.iNa;
    this.KeyDown["V"] = 86;
    this.KeyDown["v"] = this.iNa;
    this.KeyDown["W"] = 87;
    this.KeyDown["w"] = this.iNa;
    this.KeyDown["WINDOWS_KEY_LEFT"] = 91;
    this.KeyDown["WINDOWS_KEY_RIGHT"] = 92;
    this.KeyDown["X"] = 88;
    this.KeyDown["x"] = this.iNa;
    this.KeyDown["Y"] = 89;
    this.KeyDown["y"] = this.iNa;
    this.KeyDown["Y_ACUTE"] = this.iNa;
    this.KeyDown["y_ACUTE"] = this.iNa;
    this.KeyDown["Y_UMLAUT"] = this.iNa;
    this.KeyDown["y_UMLAUT"] = this.iNa;
    this.KeyDown["YEN"] = this.iNa;
    this.KeyDown["Z"] = 90;
    this.KeyDown["z"] = this.iNa;

    this.KeyPress["0"] = 48;
    this.KeyPress["1"] = 49;
    this.KeyPress["2"] = 50;
    this.KeyPress["3"] = 51;
    this.KeyPress["4"] = 52;
    this.KeyPress["5"] = 53;
    this.KeyPress["6"] = 54;
    this.KeyPress["7"] = 55;
    this.KeyPress["8"] = 56;
    this.KeyPress["9"] = 57;
    this.KeyPress["A"] = 65;
    this.KeyPress["a"] = 97;
    this.KeyPress["A_ACUTE"] = 193;
    this.KeyPress["a_ACUTE"] = 225;
    this.KeyPress["A_CIRCUMFLEX"] = 194;
    this.KeyPress["a_CIRCUMFLEX"] = 226;
    this.KeyPress["A_GRAVE"] = 192;
    this.KeyPress["a_GRAVE"] = 224;
    this.KeyPress["A_RING"] = 197;
    this.KeyPress["a_RING"] = 229;
    this.KeyPress["A_TILDE"] = 195;
    this.KeyPress["a_TILDE"] = 227;
    this.KeyPress["A_UMLAUT"] = 196;
    this.KeyPress["a_UMLAUT"] = 228;
    this.KeyPress["AE"] = 198;
    this.KeyPress["ae"] = 230;
    this.KeyPress["ALT"] = this.iNa;
    this.KeyPress["AMPERSAND"] = 38;
    this.KeyPress["APOSTROPHE"] = 39;
    this.KeyPress["ARROW_DOWN"] = this.iNa;
    this.KeyPress["ARROW_LEFT"] = this.iNa;
    this.KeyPress["ARROW_RIGHT"] = this.iNa;
    this.KeyPress["ARROW_UP"] = this.iNa;
    this.KeyPress["ASTERISK"] = 42;
    this.KeyPress["AT"] = 64;
    this.KeyPress["B"] = 66;
    this.KeyPress["b"] = 98;
    this.KeyPress["BACKSLASH"] = 92;
    this.KeyPress["BACKSPACE"] = 8; // IE = iNA / Mozilla = 8
    this.KeyPress["BAR_VERTICAL"] = 124;
    this.KeyPress["BAR_VERTICAL_BROKEN"] = 166;
    this.KeyPress["BIT_SHIFT_LEFT"] = 171;
    this.KeyPress["BIT_SHIT_RIGHT"] = 187;
    this.KeyPress["BRACKET_CURLY_LEFT"] = 123;
    this.KeyPress["BRACKET_CURLY_RIGHT"] = 125;
    this.KeyPress["BRACKET_SQUARE_LEFT"] = 91;
    this.KeyPress["BRACKET_SQUARE_RIGHT"] = 93;
    this.KeyPress["C"] = 67;
    this.KeyPress["c"] = 99;
    this.KeyPress["C_CEDILLA"] = 199;
    this.KeyPress["c_CEDILLA"] = 231;
    this.KeyPress["CANCEL"] = this.iNa;
    this.KeyPress["CAPSLOCK"] = this.iNa;
    this.KeyPress["CARET"] = 94;
    this.KeyPress["CARET_SOFT"] = 136;
    this.KeyPress["CEDILLA"] = 184;
    this.KeyPress["CENT"] = 162;
    this.KeyPress["CLEAR"] = this.iNa;
    this.KeyPress["COLON"] = 58;
    this.KeyPress["COMMA"] = 44;
    this.KeyPress["COMMA2"] = 130;
    this.KeyPress["CONTROL"] = this.iNa;
    this.KeyPress["COPYRIGHT"] = 169;
    this.KeyPress["CURRENCY_GENERAL"] = 164;
    this.KeyPress["D"] = 68;
    this.KeyPress["d"] = 100;
    this.KeyPress["DEGREE"] = 176;
    this.KeyPress["DELETE"] = this.iNa;
    this.KeyPress["DIVISION"] = 247;
    this.KeyPress["DOLLAR"] = 36;
    this.KeyPress["DOT_MIDDLE"] = 183;
    this.KeyPress["E"] = 69;
    this.KeyPress["e"] = 101;
    this.KeyPress["E_ACUTE"] = 201;
    this.KeyPress["e_ACUTE"] = 233;
    this.KeyPress["E_CIRCUMFLEX"] = 202;
    this.KeyPress["E_CIRCUMFLEX"] = 234;
    this.KeyPress["E_GRAVE"] = 200;
    this.KeyPress["e_GRAVE"] = 232;
    this.KeyPress["E_UMLAUT"] = 203;
    this.KeyPress["e_UMLAUT"] = 235;
    this.KeyPress["EM_DASH"] = 151;
    this.KeyPress["EN_DASH"] = 150;
    this.KeyPress["END"] = this.iNa;
    this.KeyPress["EQUAL"] = 61;
    this.KeyPress["ESC"] = 27;
    this.KeyPress["ETH"] = 208;
    this.KeyPress["eth"] = 240;
    this.KeyPress["EXCLAMATION"] = 33;
    this.KeyPress["EXCLAMATION_INVERT"] = 161;
    this.KeyPress["F"] = 70;
    this.KeyPress["f"] = 102;
    this.KeyPress["F1"] = this.iNa;
    this.KeyPress["F2"] = this.iNa;
    this.KeyPress["F3"] = this.iNa;
    this.KeyPress["F4"] = this.iNa;
    this.KeyPress["F5"] = this.iNa;
    this.KeyPress["F6"] = this.iNa;
    this.KeyPress["F7"] = this.iNa;
    this.KeyPress["F8"] = this.iNa;
    this.KeyPress["F9"] = this.iNa;
    this.KeyPress["F10"] = this.iNa;
    this.KeyPress["F11"] = this.iNa;
    this.KeyPress["F12"] = this.iNa;
    this.KeyPress["F13"] = this.iNa;
    this.KeyPress["F14"] = this.iNa;
    this.KeyPress["F15"] = this.iNa;
    this.KeyPress["F16"] = this.iNa;
    this.KeyPress["F17"] = this.iNa;
    this.KeyPress["F18"] = this.iNa;
    this.KeyPress["F19"] = this.iNa;
    this.KeyPress["F20"] = this.iNa;
    this.KeyPress["F21"] = this.iNa;
    this.KeyPress["F22"] = this.iNa;
    this.KeyPress["F23"] = this.iNa;
    this.KeyPress["F24"] = this.iNa;
    this.KeyPress["G"] = 71;
    this.KeyPress["g"] = 103;
    this.KeyPress["GRATER_THAN"] = 62;
    this.KeyPress["H"] = 72;
    this.KeyPress["h"] = 104;
    this.KeyPress["HOME"] = this.iNa;
    this.KeyPress["HYPHEN"] = 45;
    this.KeyPress["HYPHEN_SOFT"] = 173;
    this.KeyPress["I"] = 73;
    this.KeyPress["i"] = 105;
    this.KeyPress["I_ACUTE"] = 205;
    this.KeyPress["i_ACUTE"] = 237;
    this.KeyPress["I_CIRCUMFLEX"] = 206;
    this.KeyPress["i_CIRCUMFLEX"] = 238;
    this.KeyPress["I_GRAVE"] = 204;
    this.KeyPress["i_GRAVE"] = 236;
    this.KeyPress["I_UMLAUT"] = 207;
    this.KeyPress["i_UMLAUT"] = 239;
    this.KeyPress["INSERT"] = this.iNa;
    this.KeyPress["J"] = 74;
    this.KeyPress["j"] = 106;
    this.KeyPress["K"] = 75;
    this.KeyPress["k"] = 107;
    this.KeyPress["L"] = 76;
    this.KeyPress["l"] = 108;
    this.KeyPress["LESS_THEN"] = 60;
    this.KeyPress["LINE_FEED"] = 10;
    this.KeyPress["M"] = 77;
    this.KeyPress["m"] = 109;
    this.KeyPress["MENU_KEY"] = this.iNa;
    this.KeyPress["MICRO"] = 181;
    this.KeyPress["MULTIPLICATION"] = 215;
    this.KeyPress["N"] = 78;
    this.KeyPress["n"] = 110;
    this.KeyPress["N_TILDE"] = 209;
    this.KeyPress["n_TILDE"] = 241;
    this.KeyPress["NOT"] = 172;
    this.KeyPress["NUM_0"] = this.KeyPress["0"];
    this.KeyPress["NUM_1"] = this.KeyPress["1"];
    this.KeyPress["NUM_2"] = this.KeyPress["2"];
    this.KeyPress["NUM_3"] = this.KeyPress["3"];
    this.KeyPress["NUM_4"] = this.KeyPress["4"];
    this.KeyPress["NUM_5"] = this.KeyPress["5"];
    this.KeyPress["NUM_6"] = this.KeyPress["6"];
    this.KeyPress["NUM_7"] = this.KeyPress["7"];
    this.KeyPress["NUM_8"] = this.KeyPress["8"];
    this.KeyPress["NUM_9"] = this.KeyPress["9"];
    this.KeyPress["NUM_COMMA"] = this.KeyPress["COMMA"];
    this.KeyPress["NUM_LOCK"] = this.iNa;
    this.KeyPress["NUM_MULTIPLY"] = this.KeyPress["ASTERISK"];
    this.KeyPress["NUM_PERIOD"] = this.KeyPress["PERIOD"];
    this.KeyPress["NUM_PLUS"] = this.KeyPress["PLUS"];
    this.KeyPress["NUM_SLASH"] = this.KeyPress["SLASH"];
    this.KeyPress["NUM_SUBTRACT"] = this.KeyPress["HYPHEN"];
    this.KeyPress["NUMBER"] = 35;
    this.KeyPress["O"] = 79;
    this.KeyPress["o"] = 111;
    this.KeyPress["O_ACUTE"] = 211;
    this.KeyPress["o_ACUTE"] = 243;
    this.KeyPress["O_CIRCUMFLEX"] = 212;
    this.KeyPress["o_CIRCUMFLEX"] = 244;
    this.KeyPress["O_GRAVE"] = 210;
    this.KeyPress["o_GRAVE"] = 242;
    this.KeyPress["O_SLASH"] = 216;
    this.KeyPress["o_SLASH"] = 248;
    this.KeyPress["O_TILDE"] = 213;
    this.KeyPress["o_TILDE"] = 245;
    this.KeyPress["O_UMLAUT"] = 214;
    this.KeyPress["O_UMLAUT"] = 246;
    this.KeyPress["ONE_FOURTH"] = 188;
    this.KeyPress["ONE_HALF"] = 189;
    this.KeyPress["ONE_SUPERSCIPT"] = 185;
    this.KeyPress["ORDINAL_FEMININE"] = 170;
    this.KeyPress["ORDINAL_MASCULINE"] = 186;
    this.KeyPress["P"] = 80;
    this.KeyPress["p"] = 112;
    this.KeyPress["PAGE_DOWN"] = this.iNa;
    this.KeyPress["PAGE_UP"] = this.iNa;
    this.KeyPress["PARAGRAPH"] = 182;
    this.KeyPress["PARENTHESIS_LEFT"] = 40;
    this.KeyPress["PARENTHESIS_RIGHT"] = 41;
    this.KeyPress["PAUSE"] = this.iNa;
    this.KeyPress["PERCENT"] = 37;
    this.KeyPress["PERIOD"] = 46;
    this.KeyPress["PLUS"] = 43;
    this.KeyPress["PLUS_OR_MINUS"] = 177;
    this.KeyPress["POUND_STERLING"] = 163;
    this.KeyPress["PRINT_SCREEN"] = this.iNa;
    this.KeyPress["Q"] = 81;
    this.KeyPress["q"] = 113;
    this.KeyPress["QUESTION"] = 63;
    this.KeyPress["QUESTION_INVERTED"] = 191;
    this.KeyPress["QUOTE_DOUBLE"] = 34;
    this.KeyPress["QUOTE_SINGLE_LEFT"] = 145;
    this.KeyPress["R"] = 82;
    this.KeyPress["r"] = 114;
    this.KeyPress["REGISTERED"] = 174;
    this.KeyPress["RETURN"] = 13;
    this.KeyPress["S"] = 83;
    this.KeyPress["s"] = 115;
    this.KeyPress["SCROLL_LOCK"] = this.iNa;
    this.KeyPress["SECTION"] = 167;
    this.KeyPress["SEMICOLON"] = 59;
    this.KeyPress["SHARPS"] = 223;
    this.KeyPress["SHIFT"] = this.iNa;
    this.KeyPress["SLASH"] = 47;
    this.KeyPress["SPACE"] = 32;
    this.KeyPress["SPACE_NONBREAKING"] = 160;
    this.KeyPress["T"] = 84;
    this.KeyPress["t"] = 116;
    this.KeyPress["TAB"] = 9;
    this.KeyPress["THORN"] = 222;
    this.KeyPress["thorn"] = 254;
    this.KeyPress["THREE_FOURTH"] = 190;
    this.KeyPress["THREE_SUPERSCRIPT"] = 179;
    this.KeyPress["TILDE"] = 126;
    this.KeyPress["TWO_SUPERSCRIPT"] = 178;
    this.KeyPress["U"] = 85;
    this.KeyPress["u"] = 117;
    this.KeyPress["U_ACUTE"] = 218;
    this.KeyPress["u_ACUTE"] = 250;
    this.KeyPress["U_CIRCUMFLEX"] = 219;
    this.KeyPress["u_CIRCUMFLEX"] = 251;
    this.KeyPress["U_GRAVE"] = 217;
    this.KeyPress["u_GRAVE"] = 249;
    this.KeyPress["U_UMLAUT"] = 220;
    this.KeyPress["u_UMLAUT"] = 252;
    this.KeyPress["UNDERSCORE"] = 95;
    this.KeyPress["V"] = 86;
    this.KeyPress["v"] = 118;
    this.KeyPress["W"] = 87;
    this.KeyPress["w"] = 119;
    this.KeyPress["WINDOWS_KEY_LEFT"] = this.iNa;
    this.KeyPress["WINDOWS_KEY_RIGHT"] = this.iNa;
    this.KeyPress["X"] = 88;
    this.KeyPress["x"] = 120;
    this.KeyPress["Y"] = 89;
    this.KeyPress["y"] = 121;
    this.KeyPress["Y_ACUTE"] = 221;
    this.KeyPress["y_ACUTE"] = 253;
    this.KeyPress["Y_UMLAUT"] = 159;
    this.KeyPress["y_UMLAUT"] = 255;
    this.KeyPress["YEN"] = 165;
    this.KeyPress["Z"] = 90;
    this.KeyPress["z"] = 122;
}

var keyboardHandling = new KeyboardHandling();

//document.onkeydown = keyboardHandling.KeyEvent;
//document.onkeyup = keyboardHandling.KeyEvent;

KeyboardHandling.prototype.IsNavigationKey = function(event)
{
    try
    {
       //TODO >> keypress["INSERT"]

       if( !event ) return false;

       // navigation key are not captured on IE keypress event
       if( event.type == 'keypress' && Browser.iex ) return false;

       var iKeyCode = String(event.keyCode ? event.keyCode : event.which);

       if( event.type == 'keydown' )
          m_iAllowedKeys = new Array(keyboardHandling.KeyDown["BACKSPACE"],keyboardHandling.KeyDown["TAB"],keyboardHandling.KeyDown["RETURN"],keyboardHandling.KeyDown["END"],keyboardHandling.KeyDown["HOME"],keyboardHandling.KeyDown["PAGE_UP"],keyboardHandling.KeyDown["PAGE_DOWN"],keyboardHandling.KeyDown["DELETE"],keyboardHandling.KeyDown["ARROW_LEFT"],keyboardHandling.KeyDown["ARROW_RIGHT"],keyboardHandling.KeyDown["ARROW_UP"],keyboardHandling.KeyDown["ARROW_DOWN"]);
       else if( event.type == 'keypress' )
          m_iAllowedKeys = new Array(keyboardHandling.KeyPress["BACKSPACE"],keyboardHandling.KeyPress["TAB"],keyboardHandling.KeyPress["RETURN"],keyboardHandling.KeyPress["END"],keyboardHandling.KeyPress["HOME"],keyboardHandling.KeyPress["PAGE_UP"],keyboardHandling.KeyPress["PAGE_DOWN"],keyboardHandling.KeyPress["DELETE"],keyboardHandling.KeyPress["ARROW_LEFT"],keyboardHandling.KeyPress["ARROW_RIGHT"],keyboardHandling.KeyPress["ARROW_UP"],keyboardHandling.KeyPress["ARROW_DOWN"]);

       for( var i=0; i < m_iAllowedKeys.length; i++ )
       {
          if( parseInt(iKeyCode, 10) == parseInt(m_iAllowedKeys[i]) )
          {
             return true;
          }
       }

       return false;
   }
   catch(ex)
   {
       debugHelper.Exception("IsNavigationKey " + ex.message, document.URL, document.lastModified, document.referrer);
       return false;
   }
}

KeyboardHandling.prototype.IsNumericKey = function( event )
{
    try
    {
       if( !event ) return false;
       var iKeyCode = String(event.keyCode ? event.keyCode : event.which);

       if( event.type == 'keydown' )
          m_iAllowedKeys = new Array(keyboardHandling.KeyDown["0"],keyboardHandling.KeyDown["1"],keyboardHandling.KeyDown["2"],keyboardHandling.KeyDown["3"],keyboardHandling.KeyDown["4"],keyboardHandling.KeyDown["5"],keyboardHandling.KeyDown["6"],keyboardHandling.KeyDown["7"],keyboardHandling.KeyDown["8"],keyboardHandling.KeyDown["9"],keyboardHandling.KeyDown["NUM_0"],keyboardHandling.KeyDown["NUM_1"],keyboardHandling.KeyDown["NUM_2"],keyboardHandling.KeyDown["NUM_3"],keyboardHandling.KeyDown["NUM_4"],keyboardHandling.KeyDown["NUM_5"],keyboardHandling.KeyDown["NUM_6"],keyboardHandling.KeyDown["NUM_7"],keyboardHandling.KeyDown["NUM_8"],keyboardHandling.KeyDown["NUM_9"]);
       else if( event.type == 'keypress' )
          m_iAllowedKeys = new Array(keyboardHandling.KeyPress["0"],keyboardHandling.KeyPress["1"],keyboardHandling.KeyPress["2"],keyboardHandling.KeyPress["3"],keyboardHandling.KeyPress["4"],keyboardHandling.KeyPress["5"],keyboardHandling.KeyPress["6"],keyboardHandling.KeyPress["7"],keyboardHandling.KeyPress["8"],keyboardHandling.KeyPress["9"]);

       for( var i=0; i < m_iAllowedKeys.length; i++ )
       {
          if (parseInt(iKeyCode, 10) == parseInt(m_iAllowedKeys[i]))
          {
             return true;
          }
       }

       return false;
   }
   catch(ex)
   {
       debugHelper.Exception("IsNavigationKey " + ex.message, document.URL, document.lastModified, document.referrer);
       return false;
   }
}

