// works with and requires /js/events.js

var 			KB_SINGLE_ACTION = false;
var			KB_JS_EXISTS = true;
var			KB_INITIALIZED = false;

function kbEvent(type, data, args) 
{
	var e = args[0];
	var obj = _bsEvt.getTarget(e);

	// don't fire if target is a form element
	switch (obj.nodeName) {
	case 'INPUT':
		if (obj.getAttribute('type') == 'button') break;
	case 'TEXTAREA':
	case 'SELECT':
		return;
	}

	if (!e)
		var e = window.event;
	if (e.keyCode)
		keyCode = e.keyCode;
	else if (e.which)
		keyCode = e.which;

	if (e.repeat || KB_SINGLE_ACTION)
		return;
	if (keyCode >= 16 && keyCode <= 18)
		return;

	// return if any modifier keys present
	if (e.metaKey || e.altKey || e.ctrlKey)
		return;

	noEventBubble(e);

	kbEventExec(e, keyCode);
}

function kbEventExec(e, keyCode) 
{
	var			c = 'KB_ACTION_';
	
	try {
		switch (keyCode) {
		case 39:			// RIGHT Arrow
		case 107:			// NUM +
			c += 'RIGHT';
			break;
		case 37:			// LEFT Arrow
		case 109:			// NUM -
			c += 'LEFT';
			break;
		case 33: 			// Page UP
			c += 'UP';
			break;
		case 36:			// HOME
			c += 'HOME';
			break;
		case 35:			// END
			c += 'END';
			break;
		case 27:			// ESC
			c += 'ESC';
			break;
		// all other characters
		default:
			c += String.fromCharCode(keyCode);
		}
		
		if (e.shiftKey) c += '2';
		var func = eval(c);
		func(e);

	} catch (e) {}
}

function kbEventInit() 
{
	if (!KB_INITIALIZED) {
		_bsGlobalEvt.addCB('keydown', kbEvent);
		KB_INITIALIZED = true;
	}
}


