docs: function _fnGetTdNodes ( oSettings, iIndividualRow )
  		{
  			var anReturn = [];
  			var iCorrector;
  			var anTds;
  			var iRow, iRows=oSettings.aoData.length,
  				iColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;
  			
  			/* Allow the collection to be limited to just one row */
  			if ( iIndividualRow !== undefined )
  			{
  				iStart = iIndividualRow;
  				iEnd = iIndividualRow+1;
  			}
  		
  			for ( iRow=iStart ; iRow<iEnd ; iRow++ )
  			{
  				oData = oSettings.aoData[iRow];
  				if ( oData.nTr !== null )
  				{
  					/* get the TD child nodes - taking into account text etc nodes */
  					anTds = [];
  					for ( iColumn=0, iColumns=oData.nTr.childNodes.length ; iColumn<iColumns ; iColumn++ )
  					{
  						sNodeName = oData.nTr.childNodes[iColumn].nodeName.toLowerCase();
  						if ( sNodeName == 'td' || sNodeName == 'th' )
  						{
  							anTds.push( oData.nTr.childNodes[iColumn] );
  						}
  					}
  		
  					iCorrector = 0;
  					for ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )
  					{
  						if ( oSettings.aoColumns[iColumn].bVisible )
  						{
  							anReturn.push( anTds[iColumn-iCorrector] );
  						}
  						else
  						{
  							anReturn.push( oData._anHidden[iColumn] );
  							iCorrector++;
  						}
  					}
  				}
  			}
  		
  			return anReturn;
  		}