code: function ( a )
  	{
  		if ( a.length != this.s.dt.aoColumns.length )
  		{
  			this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "ColReorder - array reorder does not "+
  				"match known number of columns. Skipping." );
  			return;
  		}
  
  		for ( var i=0, iLen=a.length ; i<iLen ; i++ )
  		{
  			var currIndex = $.inArray( i, a );
  			if ( i != currIndex )
  			{
  				/* Reorder our switching array */
  				fnArraySwitch( a, currIndex, i );
  
  				/* Do the column reorder in the table */
  				this.s.dt.oInstance.fnColReorder( currIndex, i );
  			}
  		}
  
  		/* When scrolling we need to recalculate the column sizes to allow for the shift */
  		if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
  		{
  			this.s.dt.oInstance.fnAdjustColumnSizing( false );
  		}
  
  		/* Save the state */
  		this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
  
  		this._fnSetColumnIndexes();
  		
  		if ( this.s.reorderCallback !== null )
  		{
  			this.s.reorderCallback.call( this );
  		}
  	}
docs: Set the column order from an array
  @method  _fnOrderColumns
  @param   array a An array of integers which dictate the column order that should be applied
  @returns void
  @private