/**
 * XML Request handling, with support for multiple connections
 * (c) 2008 pLAN8 Consultancy & Development
 * http://www.viviancms.nl/
 * Tested with:
 *  Firefox 2. (win)
 */


/**
* Assign keylistener function to this document
**/
document.onkeypress = handleKeyEvent;

var keyListenerFunctionArray = new Array();
var keyListenerLastKey = -1;

/**
* Handles a key event by calling all the keylisteners
**/
function handleKeyEvent(event) {
	for(var i = 0; i < keyListenerFunctionArray.length; i++) {
		var functionString = keyListenerFunctionArray[i]+"(event);";
		eval(functionString);
	}
	keyListenerLastKey = getKeyCode(event);
	setTimeout("clearKeyListenerLastKey()", 500);
}

function clearKeyListenerLastKey() {
	keyListenerLastKey = -1;
}

function getKeyListenerLastKey() {
	return keyListenerLastKey;
}

/**
* Adds a function to the list of keylisterens
**/
function addKeyListenerFunction(functionName) {
	var valid = true;
	
	// Check if function already excists
	for(var i = 0; i < keyListenerFunctionArray.length; i++) {
		if(keyListenerFunctionArray[i] == functionName) valid = false;
	}
	
	if(valid) keyListenerFunctionArray[keyListenerFunctionArray.length] = functionName;
}

/*function getKeyCode(event) {
	return 	document.layers ? event.which :
			document.all ? event.keyCode :
			document.getElementById ? event.keyCode : 0;	
}*/


function getKeyCode(e){
	var intKey = 0;
	e = getRealKeyBoardEvent(e);
	intKey = (e.keyCode)? e.keyCode: e.charCode;
	return intKey;
}

function getRealKeyBoardEvent(e) {
	return (window.event)? event : e;
}

function hasDoubleKeyCode(firstKey, secondKey, event) {
	var result = false;
	var currentKeyCode = getKeyCode(event);
	if(getKeyListenerLastKey() == -1) return; // no second key
	if(getKeyCode(event) == firstKey && secondKey == getKeyListenerLastKey()) result = true;
	if(getKeyCode(event) == secondKey && firstKey == getKeyListenerLastKey()) result = true;
	return result;
}