// xBroswer event subscription
function addListener(a,b,c,d){if(a.addEventListener){a.addEventListener(b,c,d);return true;}else if(a.attachEvent){var e=a.attachEvent("on"+b,c);return e;}else{alert("Handler could not be attached");}}
function bind(a,b,c,d){return window.addListener(a,b,function(){d.apply(c,arguments)});}
//

// Generic dispatcher for keystrokes
function handleKeystroke(evt) 
{              
	evt = getEvent(evt);
	var asc = getKeyCode(evt);
	var chr = getCharacter(asc);

	for (var i in this)
	{
		if (asc == i)
		{
			this[i](evt);
			break;
		}
	}
}
//

// xBrowser event utilities
function cancelEvent(evt)
{
	evt.cancelBubble = true;
	evt.returnValue = false;
	if (evt.preventDefault) evt.preventDefault();
	if (evt.stopPropagation) evt.stopPropagation();
	return false;
}
function getEvent(evt)
{
	if( !evt ) evt = window.event;
	return evt;
}
function getTarget(evt)
{
	var target = evt.srcElement ? evt.srcElement : evt.target;
	return target;
}
function getKeyCode(evt)
{
	var asc = !evt.keyCode ? (!evt.which ? evt.charCode : evt.which) : evt.keyCode;
	return asc;
}
function getCharacter(asc)
{
	var chr = String.fromCharCode(asc).toLowerCase();
	return chr;
}
//

function handleT(evt)
{       
	toggleTOC();
}

// Setup our Key Commands
var keyMap    = new Array();
var ENTER     = 13; // ASCII code
//keyMap[ENTER] = handleEnterKey;
keyMap[116] = handleT;

// Add the keypress listner to the document object for global capture
bind(document, 'keypress', keyMap, handleKeystroke);
