Responsive = function ( settings, opts ) {
	// Sanity check that we are using DataTables 1.10 or newer
	if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.10' ) ) {
		throw 'DataTables Responsive requires DataTables 1.10.10 or newer';
	}

	this.s = {
		dt: new DataTable.Api( settings ),
		columns: [],
		current: []
	};

	// Check if responsive has already been initialised on this table
	if ( this.s.dt.settings()[0].responsive ) {
		return;
	}

	// details is an object, but for simplicity the user can give it as a string
	// or a boolean
	if ( opts && typeof opts.details === 'string' ) {
		opts.details = { type: opts.details };
	}
	else if ( opts && opts.details === false ) {
		opts.details = { type: false };
	}
	else if ( opts && opts.details === true ) {
		opts.details = { type: 'inline' };
	}

	this.c = $.extend( true, {}, Responsive.defaults, DataTable.defaults.responsive, opts );
	settings.responsive = this;
	this._constructor();
}
Responsive is a plug-in for the DataTables library that makes use of
DataTables' ability to change the visibility of columns, changing the
visibility of columns so the displayed columns fit into the table container.
The end result is that complex tables will be dynamically adjusted to fit
into the viewport, be it on a desktop, tablet or mobile browser.

Responsive for DataTables has two modes of operation, which can used
individually or combined:

* Class name based control - columns assigned class names that match the
  breakpoint logic can be shown / hidden as required for each breakpoint.
* Automatic control - columns are automatically hidden when there is no
  room left to display them. Columns removed from the right.

In additional to column visibility control, Responsive also has built into
options to use DataTables' child row display to show / hide the information
from the table that has been hidden. There are also two modes of operation
for this child row display:

* Inline - when the control element that the user can use to show / hide
  child rows is displayed inside the first column of the table.
* Column - where a whole column is dedicated to be the show / hide control.

Initialisation of Responsive is performed by:

* Adding the class `responsive` or `dt-responsive` to the table. In this case
  Responsive will automatically be initialised with the default configuration
  options when the DataTable is created.
* Using the `responsive` option in the DataTables configuration options. This
  can also be used to specify the configuration options, or simply set to
  `true` to use the defaults.

 @class
 @param {object} settings DataTables settings object for the host table
 @param {object} [opts] Configuration options
 @requires jQuery 1.7+
 @requires DataTables 1.10.3+

 @example
     $('#example').DataTable( {
       responsive: true
     } );
   } );