code: function _fnSortData( settings, idx )
  	{
  		// Custom sorting function - provided by the sort data type
  		var column = settings.aoColumns[ idx ];
  		var customSort = DataTable.ext.order[ column.sSortDataType ];
  		var customData;
  	
  		if ( customSort ) {
  			customData = customSort.call( settings.oInstance, settings, idx,
  				_fnColumnIndexToVisible( settings, idx )
  			);
  		}
  	
  		// Use / populate cache
  		var row, cellData;
  		var formatter = DataTable.ext.type.order[ column.sType+"-pre" ];
  	
  		for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
  			row = settings.aoData[i];
  	
  			if ( ! row._aSortData ) {
  				row._aSortData = [];
  			}
  	
  			if ( ! row._aSortData[idx] || customSort ) {
  				cellData = customSort ?
  					customData[i] : // If there was a custom sort function, use data from there
  					_fnGetCellData( settings, i, idx, 'sort' );
  	
  				row._aSortData[ idx ] = formatter ?
  					formatter( cellData ) :
  					cellData;
  			}
  		}
  	}
docs: Get the data to sort a column, be it from cache, fresh (populating the cache), or from a sort formatter