docs: function _fnLoadState ( oSettings, oInit )
  		{
  			if ( !oSettings.oFeatures.bStateSave )
  			{
  				return;
  			}
  		
  			var oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );
  			if ( !oData )
  			{
  				return;
  			}
  			
  			/* Allow custom and plug-in manipulation functions to alter the saved data set and
  			 * cancelling of loading by returning false
  			 */
  			var abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );
  			if ( $.inArray( false, abStateLoad ) !== -1 )
  			{
  				return;
  			}
  			
  			/* Store the saved state so it might be accessed at any time */
  			oSettings.oLoadedState = $.extend( true, {}, oData );
  			
  			/* Restore key features */
  			oSettings._iDisplayStart    = oData.iStart;
  			oSettings.iInitDisplayStart = oData.iStart;
  			oSettings._iDisplayEnd      = oData.iEnd;
  			oSettings._iDisplayLength   = oData.iLength;
  			oSettings.aaSorting         = oData.aaSorting.slice();
  			oSettings.saved_aaSorting   = oData.aaSorting.slice();
  			
  			/* Search filtering  */
  			$.extend( oSettings.oPreviousSearch, oData.oSearch );
  			$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );
  			
  			/* Column visibility state
  			 * Pass back visibiliy settings to the init handler, but to do not here override
  			 * the init object that the user might have passed in
  			 */
  			oInit.saved_aoColumns = [];
  			for ( var i=0 ; i<oData.abVisCols.length ; i++ )
  			{
  				oInit.saved_aoColumns[i] = {};
  				oInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];
  			}
  		
  			_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );
  		}