function _fnBrowserDetect( settings )
	{
		// We don't need to do this every time DataTables is constructed, the values
		// calculated are specific to the browser and OS configuration which we
		// don't expect to change between initialisations
		if ( ! DataTable.__browser ) {
			var browser = {};
			DataTable.__browser = browser;
	
			// Scrolling feature / quirks detection
			var n = $('<div/>')
				.css( {
					position: 'fixed',
					top: 0,
					left: 0,
					height: 1,
					width: 1,
					overflow: 'hidden'
				} )
				.append(
					$('<div/>')
						.css( {
							position: 'absolute',
							top: 1,
							left: 1,
							width: 100,
							overflow: 'scroll'
						} )
						.append(
							$('<div/>')
								.css( {
									width: '100%',
									height: 10
								} )
						)
				)
				.appendTo( 'body' );
	
			var outer = n.children();
			var inner = outer.children();
	
			// Numbers below, in order, are:
			// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth
			//
			// IE6 XP:                           100 100 100  83
			// IE7 Vista:                        100 100 100  83
			// IE 8+ Windows:                     83  83 100  83
			// Evergreen Windows:                 83  83 100  83
			// Evergreen Mac with scrollbars:     85  85 100  85
			// Evergreen Mac without scrollbars: 100 100 100 100
	
			// Get scrollbar width
			browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;
	
			// IE6/7 will oversize a width 100% element inside a scrolling element, to
			// include the width of the scrollbar, while other browsers ensure the inner
			// element is contained without forcing scrolling
			//console.log( inner.offsetWidth );
			browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;
	
			// In rtl text layout, some browsers (most, but not all) will place the
			// scrollbar on the left, rather than the right.
			browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;
	
			// IE8- don't provide height and width for getBoundingClientRect
			browser.bBounding = n[0].getBoundingClientRect().width ? true : false;
	
			n.remove();
		}
	
		$.extend( settings.oBrowser, DataTable.__browser );
		settings.oScroll.iBarWidth = DataTable.__browser.barWidth;
	}
/**
	 * Browser feature detection for capabilities, quirks
	 *  @param {object} settings dataTables settings object
	 *  @memberof DataTable#oApi
	 */
Browser feature detection for capabilities, quirks
@param {object} settings dataTables settings object
@memberof DataTable#oApi
Browser feature detection for capabilities quirks @param { object } settings dataTables settings object @memberof DataTable#oApi
function _fnBrowserDetect( settings )
	{
		if ( ! DataTable.__browser ) {
			var browser = {};
			DataTable.__browser = browser;
			var n = $('<div/>')
				.css( {
					position: 'fixed',
					top: 0,
					left: 0,
					height: 1,
					width: 1,
					overflow: 'hidden'
				} )
				.append(
					$('<div/>')
						.css( {
							position: 'absolute',
							top: 1,
							left: 1,
							width: 100,
							overflow: 'scroll'
						} )
						.append(
							$('<div/>')
								.css( {
									width: '100%',
									height: 10
								} )
						)
				)
				.appendTo( 'body' );
			var outer = n.children();
			var inner = outer.children();
			 IE6 XP:                           100 100 100  83
			 IE7 Vista:                        100 100 100  83
			 IE 8+ Windows:                     83  83 100  83
			 Evergreen Windows:                 83  83 100  83
			 Evergreen Mac with scrollbars:     85  85 100  85
			 Evergreen Mac without scrollbars: 100 100 100 100
			 Get scrollbar width
			browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;
			 IE6/7 will oversize a width 100% element inside a scrolling element, to
			 include the width of the scrollbar, while other browsers ensure the inner
			 element is contained without forcing scrolling
			console.log( inner.offsetWidth );
			browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;
			 In rtl text layout, some browsers (most, but not all) will place the
			 scrollbar on the left, rather than the right.
			browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;
			 IE8- don't provide height and width for getBoundingClientRect
			browser.bBounding = n[0].getBoundingClientRect().width ? true : false;
			n.remove();
		}
		$.extend( settings.oBrowser, DataTable.__browser );
		settings.oScroll.iBarWidth = DataTable.__browser.barWidth;
	}
function _fnBrowserDetect ( settings ) { if ( ! DataTable . __browser ) { var browser = { } ; DataTable . __browser = browser ; var n = $ ( '<div/>' ) . css ( { position : 'fixed' , top : 0 , left : 0 , height : 1 , width : 1 , overflow : 'hidden' } ) . append ( $ ( '<div/>' ) . css ( { position : 'absolute' , top : 1 , left : 1 , width : 100 , overflow : 'scroll' } ) . append ( $ ( '<div/>' ) . css ( { width : '100%' , height : 10 } ) ) ) . appendTo ( 'body' ) ; var outer = n . children ( ) ; var inner = outer . children ( ) ; browser . barWidth = outer [ 0 ] . offsetWidth - outer [ 0 ] . clientWidth ; browser . bScrollOversize = inner [ 0 ] . offsetWidth === 100 && outer [ 0 ] . clientWidth !== 100 ; browser . bScrollbarLeft = Math . round ( inner . offset ( ) . left ) !== 1 ; browser . bBounding = n [ 0 ] . getBoundingClientRect ( ) . width ? true : false ; n . remove ( ) ; } $ . extend ( settings . oBrowser , DataTable . __browser ) ; settings . oScroll . iBarWidth = DataTable . __browser . barWidth ; }
Browser feature detection for capabilities, quirks
  @param {object} settings dataTables settings object
  @memberof DataTable#oApi
Browser feature detection for capabilities quirks @param { object } settings dataTables settings object @memberof DataTable#oApi
// We don't need to do this every time DataTables is constructed, the values // calculated are specific to the browser and OS configuration which we // don't expect to change between initialisations // Scrolling feature / quirks detection // Numbers below, in order, are: // inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth // // IE6 XP:                           100 100 100  83 // IE7 Vista:                        100 100 100  83 // IE 8+ Windows:                     83  83 100  83 // Evergreen Windows:                 83  83 100  83 // Evergreen Mac with scrollbars:     85  85 100  85 // Evergreen Mac without scrollbars: 100 100 100 100 // Get scrollbar width // IE6/7 will oversize a width 100% element inside a scrolling element, to // include the width of the scrollbar, while other browsers ensure the inner // element is contained without forcing scrolling //console.log( inner.offsetWidth ); // In rtl text layout, some browsers (most, but not all) will place the // scrollbar on the left, rather than the right. // IE8- don't provide height and width for getBoundingClientRect