jQuery.fn.dataTableExt.oApi.fnSetFilteringDelay = function ( oSettings, iDelay ) {

 /*
  * Type:        Plugin for DataTables (www.datatables.net) JQuery plugin.
  * Name:        dataTableExt.oApi.fnSetFilteringDelay
  * Version:     1.0.0
  * Description: Enables filtration delay for keeping the browser more
  *              responsive while searching for a longer keyword.
  * Inputs:      object:oSettings - dataTables settings object
  *              integer:iDelay - delay in miliseconds
  * Returns:     JQuery
  * Usage:       $('#example').dataTable().fnSetFilteringDelay(250);
  *
  * Author:      Zygimantas Berziunas (www.zygimantas.com)
  * Created:     7/3/2009
  * Language:    Javascript
  * License:     GPL v2 or BSD 3 point style
  * Contact:     zygimantas.berziunas@hotmail.com
  */

  iDelay  = (iDelay && (/^[0-9]+$/.test(iDelay))) ? iDelay : 250; 

  var $this = this, oTimerId;

  // Unfortunately there is no nFilter inside oSettings.
  var anControl = $( 'input:text' );

  anControl.unbind( 'keyup' ).bind( 'keyup', function() {

    var $$this = $this;
    window.clearTimeout(oTimerId);

    oTimerId = window.setTimeout(function() {

      $$this.fnFilter( anControl.val() );
    }, iDelay);
  });

  return this;
}
jQuery.fn.dataTableExt.oApi.fnSetFilteringDelay = function ( oSettings, iDelay ) {
    /*
     * Inputs:      object:oSettings - dataTables settings object - automatically given
     *              integer:iDelay - delay in milliseconds
     * Usage:       $('#example').dataTable().fnSetFilteringDelay(250);
     * Author:      Zygimantas Berziunas (www.zygimantas.com) and Allan Jardine
     * License:     GPL v2 or BSD 3 point style
     * Contact:     zygimantas.berziunas /AT\ hotmail.com
     */
    var
        _that = this,
        iDelay = (typeof iDelay == 'undefined') ? 250 : iDelay;
     
    this.each( function ( i ) {
        $.fn.dataTableExt.iApiIndex = i;
        var
            $this = this, 
            oTimerId = null, 
            sPreviousSearch = null,
            anControl = $( 'input', _that.fnSettings().aanFeatures.f );
         
            anControl.unbind( 'keyup' ).bind( 'keyup', function() {
            var $$this = $this;
 
            if (sPreviousSearch === null || sPreviousSearch != anControl.val()) {
                window.clearTimeout(oTimerId);
                sPreviousSearch = anControl.val();  
                oTimerId = window.setTimeout(function() {
                    $.fn.dataTableExt.iApiIndex = i;
                    _that.fnFilter( anControl.val() );
                }, iDelay);
            }
        });
         
        return this;
    } );
    return this;
};
update filtering delay