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;
				}
			}
		}
// cache), or from a sort formatter
cache), or from a sort formatter
cache ) or from a sort formatter
function _fnSortData( settings, idx )
		{
			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 )
				);
			}
			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] : 
						_fnGetCellData( settings, i, idx, 'sort' );
					row._aSortData[ idx ] = formatter ?
						formatter( cellData ) :
						cellData;
				}
			}
		}
function _fnSortData ( settings , idx ) { 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 ) ) ; } 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 ] : _fnGetCellData ( settings , i , idx , 'sort' ) ; row . _aSortData [ idx ] = formatter ? formatter ( cellData ) : cellData ; } } }
cache), or from a sort formatter
cache ) or from a sort formatter
// Custom sorting function - provided by the sort data type // Use / populate cache // If there was a custom sort function, use data from there