function handleKey(field, event)
{
	if (event.type == "keyup")
    {
		return false;
    }
	
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;	
    
    if ((keyCode != 37) && (keyCode != 38) && (keyCode != 39) && (keyCode != 40) &&
		(keyCode != 46) && (keyCode != 8))
		return true;
	
	var currentName;
	var newName;
	
    for (var i = 0; i < field.form.elements.length; i++)
		if (field == field.form.elements[i])
		{
			currentName = field.form.elements[i].name;
			break;
		}
			
			var col = currentName.charAt(3);
    var row = currentName.substring(4, currentName.length);
    row = parseInt(row);	
    var colNum = col.charCodeAt(0);
    
    if (keyCode == 40) // Down
    {
		for (var newRow=row+1; newRow<=20; newRow++)
		{
			newName = "row" + col + newRow;
			if (field.form.elements[newName])
			{
				field.form.elements[newName].focus();
				break;
			}
        }
    }
    else if (keyCode == 38) // Up
    {
		for (var newRow=row-1; newRow>=0; newRow--)
		{
			newName = "row" + col + newRow;
			if (field.form.elements[newName])
			{
				field.form.elements[newName].focus();
				break;
			}
        }
    }
    else if (keyCode == 37) // Left
    {
		for (var newColNum=colNum-1; newColNum>="a".charCodeAt(0); newColNum--)
		{
			var newCol = String.fromCharCode(newColNum);
			newName = "row" + newCol + row;
			if (field.form.elements[newName])
			{
				field.form.elements[newName].focus();
				break;
			}
        }
    }
    else if (keyCode == 39) // Right
    {
		for (var newColNum=colNum+1; newColNum<="u".charCodeAt(0); newColNum++)
		{
			var newCol = String.fromCharCode(newColNum);
			newName = "row" + newCol + row;
			if (field.form.elements[newName])
			{
				field.form.elements[newName].focus();
				break;
			}
        }
    }
    else if ((keyCode == 46) || (keyCode == 8)) // Delete/backspace
    {
		field.form.elements[currentName].value = "";
		return;
    }
	
    return false;
} 
