function _fnFilterComplete ( oSettings, oInput, iForce )
		{
			var oPrevSearch = oSettings.oPreviousSearch;
			var aoPrevSearch = oSettings.aoPreSearchCols;
			var fnSaveFilter = function ( oFilter ) {
				/* Save the filtering values */
				oPrevSearch.sSearch = oFilter.sSearch;
				oPrevSearch.bRegex = oFilter.bRegex;
				oPrevSearch.bSmart = oFilter.bSmart;
				oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
				oPrevSearch.return = oFilter.return;
			};
			var fnRegex = function ( o ) {
				// Backwards compatibility with the bEscapeRegex option
				return o.bEscapeRegex !== undefined$1 ? !o.bEscapeRegex : o.bRegex;
			};
		
			// Resolve any column types that are unknown due to addition or invalidation
			// @todo As per sort - can this be moved into an event handler?
			_fnColumnTypes( oSettings );
		
			/* In server-side processing all filtering is done by the server, so no point hanging around here */
			if ( _fnDataSource( oSettings ) != 'ssp' )
			{
				/* Global filter */
				_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive, oInput.return );
				fnSaveFilter( oInput );
		
				/* Now do the individual column filter */
				for ( var i=0 ; i<aoPrevSearch.length ; i++ )
				{
					_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),
						aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
				}
		
				/* Custom filtering */
				_fnFilterCustom( oSettings );
			}
			else
			{
				fnSaveFilter( oInput );
			}
		
			/* Tell the draw function we have been filtering */
			oSettings.bFiltered = true;
			_fnCallbackFire( oSettings, null, 'search', [oSettings] );
		}
/**
		 * Filter the table using both the global filter and column based filtering
		 *  @param {object} oSettings dataTables settings object
		 *  @param {object} oSearch search information
		 *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
		 *  @memberof DataTable#oApi
		 */
Filter the table using both the global filter and column based filtering
@param {object} oSettings dataTables settings object
@param {object} oSearch search information
@param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
@memberof DataTable#oApi
Filter the table using both the global filter and column based filtering @param { object } oSettings dataTables settings object @param { object } oSearch search information @param { int } [ iForce ] force a research of the master array ( 1 ) or not ( undefined or 0 ) @memberof DataTable#oApi
function _fnFilterComplete ( oSettings, oInput, iForce )
		{
			var oPrevSearch = oSettings.oPreviousSearch;
			var aoPrevSearch = oSettings.aoPreSearchCols;
			var fnSaveFilter = function ( oFilter ) {
				oPrevSearch.sSearch = oFilter.sSearch;
				oPrevSearch.bRegex = oFilter.bRegex;
				oPrevSearch.bSmart = oFilter.bSmart;
				oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
				oPrevSearch.return = oFilter.return;
			};
			var fnRegex = function ( o ) {
				return o.bEscapeRegex !== undefined$1 ? !o.bEscapeRegex : o.bRegex;
			};
			_fnColumnTypes( oSettings );
			if ( _fnDataSource( oSettings ) != 'ssp' )
			{
				_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive, oInput.return );
				fnSaveFilter( oInput );
				for ( var i=0 ; i<aoPrevSearch.length ; i++ )
				{
					_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),
						aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
				}
				_fnFilterCustom( oSettings );
			}
			else
			{
				fnSaveFilter( oInput );
			}
			oSettings.bFiltered = true;
			_fnCallbackFire( oSettings, null, 'search', [oSettings] );
		}
function _fnFilterComplete ( oSettings , oInput , iForce ) { var oPrevSearch = oSettings . oPreviousSearch ; var aoPrevSearch = oSettings . aoPreSearchCols ; var fnSaveFilter = function ( oFilter ) { oPrevSearch . sSearch = oFilter . sSearch ; oPrevSearch . bRegex = oFilter . bRegex ; oPrevSearch . bSmart = oFilter . bSmart ; oPrevSearch . bCaseInsensitive = oFilter . bCaseInsensitive ; oPrevSearch . return = oFilter . return ; } ; var fnRegex = function ( o ) { return o . bEscapeRegex !== undefined$1 ? ! o . bEscapeRegex : o . bRegex ; } ; _fnColumnTypes ( oSettings ) ; if ( _fnDataSource ( oSettings ) != 'ssp' ) { _fnFilter ( oSettings , oInput . sSearch , iForce , fnRegex ( oInput ) , oInput . bSmart , oInput . bCaseInsensitive , oInput . return ) ; fnSaveFilter ( oInput ) ; for ( var i = 0 ; i < aoPrevSearch . length ; i ++ ) { _fnFilterColumn ( oSettings , aoPrevSearch [ i ] . sSearch , i , fnRegex ( aoPrevSearch [ i ] ) , aoPrevSearch [ i ] . bSmart , aoPrevSearch [ i ] . bCaseInsensitive ) ; } _fnFilterCustom ( oSettings ) ; } else { fnSaveFilter ( oInput ) ; } oSettings . bFiltered = true ; _fnCallbackFire ( oSettings , null , 'search' , [ oSettings ] ) ; }
Filter the table using both the global filter and column based filtering
  @param {object} oSettings dataTables settings object
  @param {object} oSearch search information
  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
  @memberof DataTable#oApi
Filter the table using both the global filter and column based filtering @param { object } oSettings dataTables settings object @param { object } oSearch search information @param { int } [ iForce ] force a research of the master array ( 1 ) or not ( undefined or 0 ) @memberof DataTable#oApi
/* Save the filtering values */ // Backwards compatibility with the bEscapeRegex option // Resolve any column types that are unknown due to addition or invalidation // @todo As per sort - can this be moved into an event handler? /* In server-side processing all filtering is done by the server, so no point hanging around here */ /* Global filter */ /* Now do the individual column filter */ /* Custom filtering */ /* Tell the draw function we have been filtering */