void CPageAccess::InsertAt( int insert_index )
{
	Test_Spec *spec;
	int inserted_count = 0;
	int global_index = m_LGlobalAccess.GetNextItem( FIND_FIRST, LVNI_SELECTED );

	// find out who is selected: All managers, a manager, or a worker.
	Manager *manager = theApp.pView->m_pWorkerView->GetSelectedManager();
	Worker *worker = theApp.pView->m_pWorkerView->GetSelectedWorker();

	LockWindowUpdate();
	// Loop through all the selected list items from the global list
	// and add them to the assigned list.
	while ( global_index != NOTHING )
	{
		spec = (Test_Spec*)m_LGlobalAccess.GetItemData( global_index );
		switch ( theApp.pView->m_pWorkerView->GetSelectedType() )
		{
		case ALL_MANAGERS:
			// Insert access spec to all managers
			if ( !theApp.manager_list.InsertAccessSpec( spec, 
				insert_index + inserted_count++ ) )
			{
				UnlockWindowUpdate();
				ErrorMessage( "Failed to add the selected access spec to all managers in CPageAccess::Insert()." );
				return;
			}
			break;
		case MANAGER:
			// Insert access spec to a manager
			if ( !manager->InsertAccessSpec( spec,
				insert_index + inserted_count++ ) )
			{
				UnlockWindowUpdate();
				ErrorMessage( "Failed to add the selected access spec to the selected managers in CPageAccess::Insert()." );
				return;
			}
			break;
		case WORKER:
			// Insert acces spec to a worker
			if ( !worker->InsertAccessSpec( spec,
				insert_index + inserted_count++ ) )
			{
				UnlockWindowUpdate();
				ErrorMessage( "Failed to add the selected access spec to the selected worker in CPageAccess::Insert()." );
				return;
			}
			break;
		}
		global_index = m_LGlobalAccess.GetNextItem( global_index, LVNI_SELECTED );
	}
	ShowAssignedAccess();
	UnlockWindowUpdate();
	global_dragging = FALSE;	// Reset global dragging flag.
}