docs: function _fnSaveState ( oSettings )
  		{
  			if ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )
  			{
  				return;
  			}
  		
  			/* Store the interesting variables */
  			var i, iLen, bInfinite=oSettings.oScroll.bInfinite;
  			var oState = {
  				"iCreate":      new Date().getTime(),
  				"iStart":       (bInfinite ? 0 : oSettings._iDisplayStart),
  				"iEnd":         (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),
  				"iLength":      oSettings._iDisplayLength,
  				"aaSorting":    $.extend( true, [], oSettings.aaSorting ),
  				"oSearch":      $.extend( true, {}, oSettings.oPreviousSearch ),
  				"aoSearchCols": $.extend( true, [], oSettings.aoPreSearchCols ),
  				"abVisCols":    []
  			};
  		
  			for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
  			{
  				oState.abVisCols.push( oSettings.aoColumns[i].bVisible );
  			}
  		
  			_fnCallbackFire( oSettings, "aoStateSaveParams", 'stateSaveParams', [oSettings, oState] );
  			
  			oSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );
  		}