(function ($) {
	
	var KEYS = [
			37, 38, 39, 40,		// arrows (LEFT, UP, RIGHT, DOWN)
			27,					// escape
			13					// return
	];
	
	$.fn.keys = function (callback, keys) {
		var keys = keys || KEYS;
		
		$(this).each(function () {
			var input = $(this).attr('tagName');
				input = !!(input == 'INPUT' || input == 'SELECT' || input == 'TEXTAREA');
		
			$(this).bind('keydown', function (event) {
				var target = $(event.target).attr('tagName');
				var key = event.keyCode || event.charCode || event.which;
				
				if ($.inArray(key, keys) != -1 && (input || (target != 'INPUT' && target != 'SELECT' && target != 'TEXTAREA'))) {
					callback.call(this, event);
				}
			});
		});
		return $(this);
	};
	
})(jQuery);

