var KeyBoard = Class.create();

var CMD_CTRL		= 'CTRL';
var CMD_ALT			= 'ALT';
var CMD_SHIFT		= 'SHIFT';
var CMD_META		= 'META';

var KEY_MAX_TOP	   	= 33;
var KEY_MAX_BOTTOM	= 34;
var KEY_TOP	   		= 38;
var KEY_RIGHT  		= 39;
var KEY_BOTTOM 		= 40;
var KEY_LEFT   		= 37;
var KEY_MORE   		= 107;
var KEY_LESS   		= 109;
var KEY_SPACE  		= 32;
var KEY_ESCAPE 		= 27;
var KEY_TAB	   		= 9;
var KEY_DEL	   		= 8;
var KEY_SUPPR	   	= 46;
var KEY_ENTER  		= 13;

KeyBoard.prototype = { 
	info_key: false,
	
	initialize: function() 
	{
		if (this.info_key) Event.observe(window, "keydown", this.infoKey.bind(this), false);
	},
	
	getTarget: function(e)
	{
		e = e || window.event;
		return e && e.target ? e.target : e.srcElement;
	},
	
	keyCode: function(e)
	{
		return document.layers ? e.which : document.all ? event.keyCode : document.getElementById ? e.keyCode : 0;
	},
	
	cmdCode: function(e)
	{
		var cmd = this.cmdIdentify(e);
		return cmd ? cmd : null;
	},
	
	infoKey: function(e)
	{
		var key = this.keyCode(e);
		var cmd = this.cmdCode(e);
		this.info_key ? console.info("KEY ::: "+key) : null;
		this.info_key ? console.info("CMD ::: "+cmd) : null;
	},
	
	cmdIdentify: function(e)
	{
		if (e.ctrlKey) return 'CTRL';
		if (e.shiftKey) return 'SHIFT';
		if (e.altKey) return 'ALT';
		if (e.metaKey) return 'META';
		return false;
	},
	
	keyIs: function(key, e)
	{
		var cmd = this.cmdIdentify(e);
		if (key == cmd) return true;
		if (key == this.keyCode(e)) return true;
		return false;
	}
	
};

Keyboard = new KeyBoard();

