code: function findNeighbourTd($target, keyCode){
  	var $tr, colIdx,
  		$td = $target.closest("td"),
  		$tdNext = null;
  
  	switch( keyCode ){
  		case KC.LEFT:
  			$tdNext = $td.prev();
  			break;
  		case KC.RIGHT:
  			$tdNext = $td.next();
  			break;
  		case KC.UP:
  		case KC.DOWN:
  			$tr = $td.parent();
  			colIdx = getColIdx($tr, $td);
  			while( true ) {
  				$tr = (keyCode === KC.UP) ? $tr.prev() : $tr.next();
  				if( !$tr.length ) {
  					break;
  				}
  				// Skip hidden rows
  				if( $tr.is(":hidden") ) {
  					continue;
  				}
  				// Find adjacent cell in the same column
  				$tdNext = findTdAtColIdx($tr, colIdx);
  				// Skip cells that don't conatain a focusable element
  				if( $tdNext && $tdNext.find(":input").length ) {
  					break;
  				}
  			}
  			break;
  	}
  	return $tdNext;
  }
docs: /* Find adjacent cell for a given direction. Skip empty cells and consider merged cells