var KeyStatus=new Array(256),KeyboardBufferSize=20,KeyboardBuffer=new FIFO(KeyboardBufferSize),KeyboardInitialRepeatDelay=200,KeyboardRepeatDelay=50,KeyboardBlockKeys=0;if(is_ie)window.attachEvent("onload",InitKeyboardHandler);else{window.addEventListener("load",InitKeyboardHandler,false);window.captureEvents(Event.KEYUP);window.captureEvents(Event.KEYDOWN)}document.onkeydown=KeydownHandler;document.onkeyup=KeyupHandler;
function KeyRepeater(a,b){KeyboardBuffer.Write(a);KeyStatus[a]=setTimeout("KeyRepeater("+a+","+KeyboardRepeatDelay+");",b)}function FindKeyCode(a){if(!a)if(window.event)a=window.event;else return;if(typeof a.which=="number")a=a.which;else if(typeof a.keyCode=="number")a=a.keyCode;else if(typeof a.charCode=="number")a=a.charCode;else return;return a}function KeyupHandler(a){a=FindKeyCode(a);clearTimeout(KeyStatus[a]);KeyStatus[a]=0}
function KeydownHandler(a){a=FindKeyCode(a);KeyStatus[a]||(KeyStatus[a]=setTimeout("KeyRepeater("+a+","+KeyboardInitialRepeatDelay+");",0));if(KeyboardBlockKeys)return false}function InitKeyboardHandler(){var a;for(a=0;a<256;a++)KeyStatus[a]=0}function kbhit(){return KeyboardBuffer.length}function getch(){return KeyboardBuffer.Read()};
