treeview.prototype.onkeydown = function(e){
	if(!e){e=event};

	switch(e.keyCode){
		// arrow left
		case 37:
		this.selectedNode.collapse();
		break;
		// arrow up	
		case 38:
			if(this.selectedNode.getPreviousSibling() != null){
				// indien previous sibling expanded is, laatste node selecteren
				if(this.selectedNode.getPreviousSibling().obj.opened){
					this.selectedNode.getPreviousSibling().obj.getLastChild().select();
				}else{
					this.selectedNode.selectPrevious();	
				}
			}else{
				if(this.selectedNode.parentNode.constructor != treeview){
					this.selectedNode.parentNode.select();	
				}
			}
		break;
		// arrow right
		case 39:
		this.selectedNode.expand();
		break;
		// arrow down
		case 40:
		
			if(this.selectedNode.opened){
				this.selectedNode.getFirstChild().select();	
			}else if(!this.selectedNode.selectNext()){
				// recursively try jumping to parentNodes, until a next sibling is found
				
				var parentNode = this.selectedNode.parentNode;
				
				while(parentNode != null && !parentNode.selectNext()){
					if(parentNode.parentNode != null && parentNode.parentNode.constructor != treeview){
						parentNode = parentNode.parentNode;
					}else{
						break;	
					}
				}
			}
		break;
		//enter & spacebar
		case 13: case 32:
		this.selectedNode.toggle();
		break;
		// home
		case 36:
		this.getFirstChild().select();
		break;
		// end
		case 35:
		//this.getLastChild().select();
		break;
	}
	

}
