      *  The recycled renderers are stored here.
      *  The table is a Dictionary where the entries are Arrays indexed
      *  by the actual DataGridColumn (not the column's dataField or other
-     *  properties), and each array is a stack of currently unused renderers
+     *  properties), and each array is a stack of currently unused renderers.
      */
     protected var freeItemRenderersTable:Dictionary;
 


            case Keyboard.PAGE_UP:
            {
            	if (caretIndex > lockedRowCount)
                {       
	                // if the caret is on-screen, but not at the top row
	                // just move the caret to the top row
	                if (caretIndex > verticalScrollPosition + lockedRowCount &&
	                    caretIndex < verticalScrollPosition + lockedRowCount + onscreenRowCount)
	                {
	                    caretIndex = verticalScrollPosition + lockedRowCount;
	                }
	                else
	                {
	                    // paging up is really hard because we don't know how many
	                    // rows to move because of variable row height.  We would have
	                    // to double-buffer a previous screen in order to get this exact
	                    // so we just guess for now based on current rowCount
	                    caretIndex = Math.max(caretIndex - Math.max(onscreenRowCount - partialRow, 1), lockedRowCount);
	                    newVerticalScrollPosition = Math.max(caretIndex, lockedRowCount) - lockedRowCount;
	                }
	                bSelectItem = true;
                }
                else
                {
                	caretIndex = 0;
                	bSelectItem = true;
                }
                break;
            }

            case Keyboard.PAGE_DOWN:
            {
            	// if the caret is on-screen, but not at the bottom row
                // just move the caret to the bottom row (not partial row)
                if (caretIndex >= verticalScrollPosition + lockedRowCount &&
                    caretIndex < verticalScrollPosition + lockedRowCount + onscreenRowCount - partialRow - 1)

    mx_internal var visibleLockedColumns:Array;

    /**
     *  The header sub-component.
     */
    protected var header:DataGridHeaderBase;

    /**
     *  The class to use as the DGHeader.
     */
    mx_internal var headerClass:Class = DataGridHeader;

    /**
     *  @private
     */
    protected var headerMask:Shape;

    /**
     *  The header sub-component for locked columns.
     */
    protected var lockedColumnHeader:DataGridHeaderBase;

    private var lockedColumnHeaderMask:Shape;

    /**
     *  The sub-component that contains locked rows.
     */
    protected var lockedRowContent:DataGridLockedRowContentHolder;

    private var lockedRowMask:Shape;

    /**
     *  The sub-component that contains locked rows for locked columns.
     */
    protected var lockedColumnAndRowContent:DataGridLockedRowContentHolder;

    private var lockedColumnAndRowMask:Shape;

    /**
     *  The sub-component that contains locked columns.
     */
    protected var lockedColumnContent:ListBaseContentHolder;

