
function initInputListeners(){
	
	document.addEventListener('keydown', function(e)
	{
		keys[e.keyCode] = true;                
	},
	false);

	document.addEventListener('keyup', function(e)
	{		
		if( keyMapper.keys[e.keyCode] != undefined ){
			var pid = "player" + keyMapper.keys[e.keyCode].player;		// Get the player ID from the keymapper keys hash object		
			var act = keyMapper.keys[e.keyCode].action;				// Get the action we're coming out of
		
			window[pid].setCurrentAnimationSequence( window[pid].getDefaultAnimationSequence() );	// Set the current animation to the default
		}
		keys[e.keyCode] = false;
	},
	false);
	
	document.addEventListener('keypress', function(e)
	{
		// TODO: the keycode values are completely nonstandard - is
		// there a more reliable way of handling them?

		var handled = true;
		
		switch (e.keyCode){
			
			case DOM_VK[ keyMapper.player1.left.label ] :
			case DOM_VK[ keyMapper.player1.right.label ] :
			case DOM_VK[ keyMapper.player1.up.label ] :
			case DOM_VK[ keyMapper.player1.down.label ] :
			
			case DOM_VK[ keyMapper.player2.left.label ] :
			case DOM_VK[ keyMapper.player2.right.label ] :
			case DOM_VK[ keyMapper.player2.up.label ] :
			case DOM_VK[ keyMapper.player2.down.label ] :
				
			/*	
			case DOM_VK.LEFT:
			case DOM_VK.RIGHT:
			case DOM_VK.UP:
			case DOM_VK.DOWN:
			*/
			case DOM_VK.PAGE_UP:
			case DOM_VK.PAGE_DOWN:
			case DOM_VK.COMMA:
			case DOM_VK.PERIOD:
			case DOM_VK.DELETE:
				// Browsers might want to do something with these keys
				// (especially Opera) - but we want to use them instead,
				// so prevent the default action
				handled = false; // don't want to stop propagation to game's key handlers
				e.preventDefault(); // do want to stop the browser's default
				break;
		    
			case DOM_VK.PAUSE:
				toggle_paused();
				break;
	
			case DOM_VK.HOME: case DOM_VK.END:
				player.dh = 0;
				break;
	
			default:
				switch (e.which)
				{
				case 116: // T
					if (e.ctrlKey)
					{
						// let people do ctrl+t to open tabs
						handled = false;
					}
					else
					{
						fpsgraph_enable(true);
					}
					break;
	
				case 32: // SPACE
				case 44: case 46: // comma, period
				case 120: case 99: // x, c
					handled = false;
					e.preventDefault();
					break;
	
				default:
					handled = false;
					break;
				}
		}

		if (handled)
		{                        
			e.preventDefault();
			e.stopPropagation();
		}
	},
	false);
}
    
    
function process_input(keys){
   var speed = 3;
   var p1x = 0;
   var p1y = 0;
   var p2x = 0;
   var p2y = 0;

   if( keys[ DOM_VK[ keyMapper.player1.left.label ] ] ){ p1x -= player1.getSpeed(); }   // P1 Left
   if( keys[ DOM_VK[ keyMapper.player1.right.label ] ] ){ p1x += player1.getSpeed(); }   // P1
   if( keys[ DOM_VK[ keyMapper.player1.up.label ] ] ){ p1y -= player1.getSpeed(); }
   if( keys[ DOM_VK[ keyMapper.player1.down.label ] ] ){ p1y += player1.getSpeed(); }
    
   if( p1x != 0 || p1y != 0 ){	
	player1.move( p1x, p1y );	
   } 
    
   if (keys[ DOM_VK[ keyMapper.player2.left.label  ] ] )  {  p2x -= player2.getSpeed();  } 
   if (keys[ DOM_VK[ keyMapper.player2.right.label ] ] ) { p2x += player2.getSpeed(); }     
   if (keys[ DOM_VK[ keyMapper.player2.up.label ] ] ){ p2y -= player2.getSpeed();  }
   if (keys[ DOM_VK[ keyMapper.player2.down.label ] ] ) { p2y += player2.getSpeed(); }
        
   if( p2x || p2y ){
	player2.move( p2x, p2y );
    }
    
}


