function _fnColumnTypes ( settings )
		{
			var columns = settings.aoColumns;
			var data = settings.aoData;
			var types = DataTable.ext.type.detect;
			var i, ien, j, jen, k, ken;
			var col, detectedType, cache;
		
			// For each column, spin over the 
			for ( i=0, ien=columns.length ; i<ien ; i++ ) {
				col = columns[i];
				cache = [];
		
				if ( ! col.sType && col._sManualType ) {
					col.sType = col._sManualType;
				}
				else if ( ! col.sType ) {
					for ( j=0, jen=types.length ; j<jen ; j++ ) {
						for ( k=0, ken=data.length ; k<ken ; k++ ) {
							// Use a cache array so we only need to get the type data
							// from the formatter once (when using multiple detectors)
							if ( cache[k] === undefined$1 ) {
								cache[k] = _fnGetCellData( settings, k, i, 'type' );
							}
		
							detectedType = types[j]( cache[k], settings );
		
							// If null, then this type can't apply to this column, so
							// rather than testing all cells, break out. There is an
							// exception for the last type which is `html`. We need to
							// scan all rows since it is possible to mix string and HTML
							// types
							if ( ! detectedType && j !== types.length-1 ) {
								break;
							}
		
							// Only a single match is needed for html type since it is
							// bottom of the pile and very similar to string - but it
							// must not be empty
							if ( detectedType === 'html' && ! _empty(cache[k]) ) {
								break;
							}
						}
		
						// Type is valid for all data points in the column - use this
						// type
						if ( detectedType ) {
							col.sType = detectedType;
							break;
						}
					}
		
					// Fall back - if no type was detected, always use string
					if ( ! col.sType ) {
						col.sType = 'string';
					}
				}
			}
		}
/**
		 * Calculate the 'type' of a column
		 *  @param {object} settings dataTables settings object
		 *  @memberof DataTable#oApi
		 */
Calculate the 'type' of a column
@param {object} settings dataTables settings object
@memberof DataTable#oApi
Calculate the ' type ' of a column @param { object } settings dataTables settings object @memberof DataTable#oApi
function _fnColumnTypes ( settings )
		{
			var columns = settings.aoColumns;
			var data = settings.aoData;
			var types = DataTable.ext.type.detect;
			var i, ien, j, jen, k, ken;
			var col, detectedType, cache;
			for ( i=0, ien=columns.length ; i<ien ; i++ ) {
				col = columns[i];
				cache = [];
				if ( ! col.sType && col._sManualType ) {
					col.sType = col._sManualType;
				}
				else if ( ! col.sType ) {
					for ( j=0, jen=types.length ; j<jen ; j++ ) {
						for ( k=0, ken=data.length ; k<ken ; k++ ) {
							if ( cache[k] === undefined$1 ) {
								cache[k] = _fnGetCellData( settings, k, i, 'type' );
							}
							detectedType = types[j]( cache[k], settings );
							if ( ! detectedType && j !== types.length-1 ) {
								break;
							}
							if ( detectedType === 'html' && ! _empty(cache[k]) ) {
								break;
							}
						}
						if ( detectedType ) {
							col.sType = detectedType;
							break;
						}
					}
					if ( ! col.sType ) {
						col.sType = 'string';
					}
				}
			}
		}
function _fnColumnTypes ( settings ) { var columns = settings . aoColumns ; var data = settings . aoData ; var types = DataTable . ext . type . detect ; var i , ien , j , jen , k , ken ; var col , detectedType , cache ; for ( i = 0 , ien = columns . length ; i < ien ; i ++ ) { col = columns [ i ] ; cache = [ ] ; if ( ! col . sType && col . _sManualType ) { col . sType = col . _sManualType ; } else if ( ! col . sType ) { for ( j = 0 , jen = types . length ; j < jen ; j ++ ) { for ( k = 0 , ken = data . length ; k < ken ; k ++ ) { if ( cache [ k ] === undefined$1 ) { cache [ k ] = _fnGetCellData ( settings , k , i , 'type' ) ; } detectedType = types [ j ] ( cache [ k ] , settings ) ; if ( ! detectedType && j !== types . length - 1 ) { break ; } if ( detectedType === 'html' && ! _empty ( cache [ k ] ) ) { break ; } } if ( detectedType ) { col . sType = detectedType ; break ; } } if ( ! col . sType ) { col . sType = 'string' ; } } } }
Calculate the 'type' of a column
  @param {object} settings dataTables settings object
  @memberof DataTable#oApi
Calculate the ' type ' of a column @param { object } settings dataTables settings object @memberof DataTable#oApi
// For each column, spin over the  // Use a cache array so we only need to get the type data // from the formatter once (when using multiple detectors) // If null, then this type can't apply to this column, so // rather than testing all cells, break out. There is an // exception for the last type which is `html`. We need to // scan all rows since it is possible to mix string and HTML // types // Only a single match is needed for html type since it is // bottom of the pile and very similar to string - but it // must not be empty // Type is valid for all data points in the column - use this // type // Fall back - if no type was detected, always use string