function _fnFilter(searchRows, settings, input, options, column) {
		if (input === '') {
			return;
		}

		var i = 0;

		// Search term can be a function, regex or string - if a string we apply our
		// smart filtering regex (assuming the options require that)
		var searchFunc = typeof input === 'function' ? input : null;
		var rpSearch = input instanceof RegExp
			? input
			: searchFunc
				? null
				: _fnFilterCreateSearch(input, options);

		// Then for each row, does the test pass. If not, lop the row from the array
		while (i < searchRows.length) {
			var row = settings.aoData[searchRows[i]];
			var data = column === undefined
				? row._sFilterRow
				: row._aFilterData[column];

			if ((searchFunc && !searchFunc(data, row._aData, searchRows[i], column)) || (rpSearch && !rpSearch.test(data))) {
				searchRows.splice(i, 1);
				i--;
			}

			i++;
		}
	}
Filter the data table based on user input and draw the table