Browse Source

Merge pull request #400 from suvjunmd/datatables

Updated DataTables to 1.10.7
Abdullah Almsaeed 9 years ago
parent
commit
d9cc6e3d37
30 changed files with 1108 additions and 308 deletions
  1. 24 4
      plugins/datatables/dataTables.bootstrap.js
  2. 4 4
      plugins/datatables/dataTables.bootstrap.min.js
  3. 1 0
      plugins/datatables/extensions/Responsive/examples/child-rows/column-control.html
  4. 1 0
      plugins/datatables/extensions/Responsive/examples/child-rows/custom-renderer.html
  5. 1 0
      plugins/datatables/extensions/Responsive/examples/child-rows/disable-child-rows.html
  6. 1 0
      plugins/datatables/extensions/Responsive/examples/child-rows/right-column.html
  7. 1 0
      plugins/datatables/extensions/Responsive/examples/child-rows/whole-row-control.html
  8. 1 0
      plugins/datatables/extensions/Responsive/examples/display-control/auto.html
  9. 1 0
      plugins/datatables/extensions/Responsive/examples/display-control/classes.html
  10. 708 0
      plugins/datatables/extensions/Responsive/examples/display-control/complexHeader.html
  11. 1 0
      plugins/datatables/extensions/Responsive/examples/display-control/fixedHeader.html
  12. 1 0
      plugins/datatables/extensions/Responsive/examples/display-control/index.html
  13. 1 0
      plugins/datatables/extensions/Responsive/examples/display-control/init-classes.html
  14. 1 0
      plugins/datatables/extensions/Responsive/examples/index.html
  15. 1 0
      plugins/datatables/extensions/Responsive/examples/initialisation/ajax.html
  16. 1 0
      plugins/datatables/extensions/Responsive/examples/initialisation/className.html
  17. 1 0
      plugins/datatables/extensions/Responsive/examples/initialisation/default.html
  18. 1 0
      plugins/datatables/extensions/Responsive/examples/initialisation/new.html
  19. 1 0
      plugins/datatables/extensions/Responsive/examples/initialisation/option.html
  20. 1 0
      plugins/datatables/extensions/Responsive/examples/styling/bootstrap.html
  21. 1 0
      plugins/datatables/extensions/Responsive/examples/styling/compact.html
  22. 1 0
      plugins/datatables/extensions/Responsive/examples/styling/foundation.html
  23. 1 0
      plugins/datatables/extensions/Responsive/examples/styling/scrolling.html
  24. 16 7
      plugins/datatables/extensions/Responsive/js/dataTables.responsive.js
  25. 9 8
      plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js
  26. 34 66
      plugins/datatables/jquery.dataTables.css
  27. 134 62
      plugins/datatables/jquery.dataTables.js
  28. 1 1
      plugins/datatables/jquery.dataTables.min.css
  29. 150 148
      plugins/datatables/jquery.dataTables.min.js
  30. 8 8
      plugins/datatables/jquery.dataTables_themeroller.css

+ 24 - 4
plugins/datatables/dataTables.bootstrap.js

@@ -39,7 +39,7 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
 	var api     = new DataTable.Api( settings );
 	var classes = settings.oClasses;
 	var lang    = settings.oLanguage.oPaginate;
-	var btnDisplay, btnClass;
+	var btnDisplay, btnClass, counter=0;
 
 	var attach = function( container, buttons ) {
 		var i, ien, node, button;
@@ -100,14 +100,15 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
 				if ( btnDisplay ) {
 					node = $('<li>', {
 							'class': classes.sPageButton+' '+btnClass,
-							'aria-controls': settings.sTableId,
-							'tabindex': settings.iTabIndex,
 							'id': idx === 0 && typeof button === 'string' ?
 								settings.sTableId +'_'+ button :
 								null
 						} )
 						.append( $('<a>', {
-								'href': '#'
+								'href': '#',
+								'aria-controls': settings.sTableId,
+								'data-dt-idx': counter,
+								'tabindex': settings.iTabIndex
 							} )
 							.html( btnDisplay )
 						)
@@ -116,15 +117,34 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
 					settings.oApi._fnBindAction(
 						node, {action: button}, clickHandler
 					);
+
+					counter++;
 				}
 			}
 		}
 	};
 
+	// IE9 throws an 'unknown error' if document.activeElement is used
+	// inside an iframe or frame. 
+	var activeEl;
+
+	try {
+		// Because this approach is destroying and recreating the paging
+		// elements, focus is lost on the select button which is bad for
+		// accessibility. So we want to restore focus once the draw has
+		// completed
+		activeEl = $(document.activeElement).data('dt-idx');
+	}
+	catch (e) {}
+
 	attach(
 		$(host).empty().html('<ul class="pagination"/>').children('ul'),
 		buttons
 	);
+
+	if ( activeEl ) {
+		$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+	}
 };
 
 

File diff suppressed because it is too large
+ 4 - 4
plugins/datatables/dataTables.bootstrap.min.js


+ 1 - 0
plugins/datatables/extensions/Responsive/examples/child-rows/column-control.html

@@ -823,6 +823,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/child-rows/custom-renderer.html

@@ -832,6 +832,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/child-rows/disable-child-rows.html

@@ -788,6 +788,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/child-rows/right-column.html

@@ -819,6 +819,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/child-rows/whole-row-control.html

@@ -822,6 +822,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/display-control/auto.html

@@ -782,6 +782,7 @@ $(document).ready(function() {
 							<li><a href="./classes.html">Class control</a></li>
 							<li><a href="./init-classes.html">Assigned class control</a></li>
 							<li><a href="./fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/display-control/classes.html

@@ -216,6 +216,7 @@ $(document).ready(function() {
 							<li class="active"><a href="./classes.html">Class control</a></li>
 							<li><a href="./init-classes.html">Assigned class control</a></li>
 							<li><a href="./fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 708 - 0
plugins/datatables/extensions/Responsive/examples/display-control/complexHeader.html

@@ -0,0 +1,708 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
+	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
+
+	<title>Responsive example - Complex headers (rowspan / colspan)</title>
+	<link rel="stylesheet" type="text/css" href="../../../../media/css/jquery.dataTables.css">
+	<link rel="stylesheet" type="text/css" href="../../css/dataTables.responsive.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/syntax/shCore.css">
+	<link rel="stylesheet" type="text/css" href="../../../../examples/resources/demo.css">
+	<style type="text/css" class="init">
+
+	th {
+		position: relative;
+		min-height: 41px;
+	} 
+	span {
+		display: block;
+		position: absolute;
+		left: 0;
+		right: 0;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+	}
+
+	</style>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../media/js/jquery.dataTables.js"></script>
+	<script type="text/javascript" language="javascript" src="../../js/dataTables.responsive.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/syntax/shCore.js"></script>
+	<script type="text/javascript" language="javascript" src="../../../../examples/resources/demo.js"></script>
+	<script type="text/javascript" language="javascript" class="init">
+
+
+
+$(document).ready(function() {
+	// jQuery update a column title from the demo table to contain a long description
+	// You would not need to do this in your own code.
+	$('#example thead tr:eq(0) th:eq(2)').html("This is a really long column title!");
+	
+	// Wrap the colspan'ing header cells with a span so they can be positioned
+	// absolutely - filling the available space, and no more.
+	$('#example thead th[colspan]').wrapInner( '<span/>' ).append( '&nbsp;' );
+
+	// Standard initialisation
+	$('#example').DataTable( {
+		responsive: true,
+		paging: false
+	} );
+} );
+
+
+
+	</script>
+</head>
+
+<body class="dt-example">
+	<div class="container">
+		<section>
+			<h1>Responsive example <span>Complex headers (rowspan / colspan)</span></h1>
+
+			<div class="info">
+				<p>This example shows how Responsive can be used with <em>complex headers</em> (i.e. headers that contain <code>colspan</code> attributes for one or more cells).
+				As Responsive will removed columns one at a time the cell with the <code>colspan</code> attribute can end up forcing the width of a column, disrupting the flow.
+				Rather than removing all columns under the <code>colspan</code> cell, we want to reduce the amount of text that is visible in that cell. This example shows how
+				that can be achieved thought a little bit of jQuery and CSS.</p>
+
+				<p>We use jQuery to find the header cells which have a <code>colspan</code> attribute and wrap their contents in a <code class="tag" title="HTML tag">span</code>
+				tag. That <code class="tag" title="HTML tag">span</code> is then set to <code>position: absolute;</code> using <code>text-overflow: ellipsis</code>. The result is
+				that the text of the <code>colspan</code> cell will reduce automatically to fit the available area based on the contents of the column cells below it.</p>
+
+				<p>This functionality is not currently built into Responsive. It likely will be for v1.1.</p>
+			</div>
+
+			<table id="example" class="display nowrap" cellspacing="0" width="100%">
+				<thead>
+					<tr>
+						<th rowspan="2">Name</th>
+						<th colspan="2">HR Information</th>
+						<th colspan="3">Contact</th>
+					</tr>
+					<tr>
+						<th>Position</th>
+						<th>Salary</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</thead>
+
+				<tfoot>
+					<tr>
+						<th>Name</th>
+						<th>Position</th>
+						<th>Salary</th>
+						<th>Office</th>
+						<th>Extn.</th>
+						<th>E-mail</th>
+					</tr>
+				</tfoot>
+
+				<tbody>
+					<tr>
+						<td>Tiger Nixon</td>
+						<td>System Architect</td>
+						<td>$320,800</td>
+						<td>Edinburgh</td>
+						<td>5421</td>
+						<td>t.nixon@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Garrett Winters</td>
+						<td>Accountant</td>
+						<td>$170,750</td>
+						<td>Tokyo</td>
+						<td>8422</td>
+						<td>g.winters@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Ashton Cox</td>
+						<td>Junior Technical Author</td>
+						<td>$86,000</td>
+						<td>San Francisco</td>
+						<td>1562</td>
+						<td>a.cox@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cedric Kelly</td>
+						<td>Senior Javascript Developer</td>
+						<td>$433,060</td>
+						<td>Edinburgh</td>
+						<td>6224</td>
+						<td>c.kelly@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Airi Satou</td>
+						<td>Accountant</td>
+						<td>$162,700</td>
+						<td>Tokyo</td>
+						<td>5407</td>
+						<td>a.satou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brielle Williamson</td>
+						<td>Integration Specialist</td>
+						<td>$372,000</td>
+						<td>New York</td>
+						<td>4804</td>
+						<td>b.williamson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Herrod Chandler</td>
+						<td>Sales Assistant</td>
+						<td>$137,500</td>
+						<td>San Francisco</td>
+						<td>9608</td>
+						<td>h.chandler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Rhona Davidson</td>
+						<td>Integration Specialist</td>
+						<td>$327,900</td>
+						<td>Tokyo</td>
+						<td>6200</td>
+						<td>r.davidson@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Colleen Hurst</td>
+						<td>Javascript Developer</td>
+						<td>$205,500</td>
+						<td>San Francisco</td>
+						<td>2360</td>
+						<td>c.hurst@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sonya Frost</td>
+						<td>Software Engineer</td>
+						<td>$103,600</td>
+						<td>Edinburgh</td>
+						<td>1667</td>
+						<td>s.frost@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jena Gaines</td>
+						<td>Office Manager</td>
+						<td>$90,560</td>
+						<td>London</td>
+						<td>3814</td>
+						<td>j.gaines@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Quinn Flynn</td>
+						<td>Support Lead</td>
+						<td>$342,000</td>
+						<td>Edinburgh</td>
+						<td>9497</td>
+						<td>q.flynn@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Charde Marshall</td>
+						<td>Regional Director</td>
+						<td>$470,600</td>
+						<td>San Francisco</td>
+						<td>6741</td>
+						<td>c.marshall@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Haley Kennedy</td>
+						<td>Senior Marketing Designer</td>
+						<td>$313,500</td>
+						<td>London</td>
+						<td>3597</td>
+						<td>h.kennedy@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Tatyana Fitzpatrick</td>
+						<td>Regional Director</td>
+						<td>$385,750</td>
+						<td>London</td>
+						<td>1965</td>
+						<td>t.fitzpatrick@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael Silva</td>
+						<td>Marketing Designer</td>
+						<td>$198,500</td>
+						<td>London</td>
+						<td>1581</td>
+						<td>m.silva@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Paul Byrd</td>
+						<td>Chief Financial Officer (CFO)</td>
+						<td>$725,000</td>
+						<td>New York</td>
+						<td>3059</td>
+						<td>p.byrd@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gloria Little</td>
+						<td>Systems Administrator</td>
+						<td>$237,500</td>
+						<td>New York</td>
+						<td>1721</td>
+						<td>g.little@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bradley Greer</td>
+						<td>Software Engineer</td>
+						<td>$132,000</td>
+						<td>London</td>
+						<td>2558</td>
+						<td>b.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Dai Rios</td>
+						<td>Personnel Lead</td>
+						<td>$217,500</td>
+						<td>Edinburgh</td>
+						<td>2290</td>
+						<td>d.rios@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jenette Caldwell</td>
+						<td>Development Lead</td>
+						<td>$345,000</td>
+						<td>New York</td>
+						<td>1937</td>
+						<td>j.caldwell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Yuri Berry</td>
+						<td>Chief Marketing Officer (CMO)</td>
+						<td>$675,000</td>
+						<td>New York</td>
+						<td>6154</td>
+						<td>y.berry@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Caesar Vance</td>
+						<td>Pre-Sales Support</td>
+						<td>$106,450</td>
+						<td>New York</td>
+						<td>8330</td>
+						<td>c.vance@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Doris Wilder</td>
+						<td>Sales Assistant</td>
+						<td>$85,600</td>
+						<td>Sidney</td>
+						<td>3023</td>
+						<td>d.wilder@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Angelica Ramos</td>
+						<td>Chief Executive Officer (CEO)</td>
+						<td>$1,200,000</td>
+						<td>London</td>
+						<td>5797</td>
+						<td>a.ramos@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin Joyce</td>
+						<td>Developer</td>
+						<td>$92,575</td>
+						<td>Edinburgh</td>
+						<td>8822</td>
+						<td>g.joyce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer Chang</td>
+						<td>Regional Director</td>
+						<td>$357,650</td>
+						<td>Singapore</td>
+						<td>9239</td>
+						<td>j.chang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Brenden Wagner</td>
+						<td>Software Engineer</td>
+						<td>$206,850</td>
+						<td>San Francisco</td>
+						<td>1314</td>
+						<td>b.wagner@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Fiona Green</td>
+						<td>Chief Operating Officer (COO)</td>
+						<td>$850,000</td>
+						<td>San Francisco</td>
+						<td>2947</td>
+						<td>f.green@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shou Itou</td>
+						<td>Regional Marketing</td>
+						<td>$163,000</td>
+						<td>Tokyo</td>
+						<td>8899</td>
+						<td>s.itou@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michelle House</td>
+						<td>Integration Specialist</td>
+						<td>$95,400</td>
+						<td>Sidney</td>
+						<td>2769</td>
+						<td>m.house@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Suki Burks</td>
+						<td>Developer</td>
+						<td>$114,500</td>
+						<td>London</td>
+						<td>6832</td>
+						<td>s.burks@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Prescott Bartlett</td>
+						<td>Technical Author</td>
+						<td>$145,000</td>
+						<td>London</td>
+						<td>3606</td>
+						<td>p.bartlett@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Gavin Cortez</td>
+						<td>Team Leader</td>
+						<td>$235,500</td>
+						<td>San Francisco</td>
+						<td>2860</td>
+						<td>g.cortez@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Martena Mccray</td>
+						<td>Post-Sales support</td>
+						<td>$324,050</td>
+						<td>Edinburgh</td>
+						<td>8240</td>
+						<td>m.mccray@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Unity Butler</td>
+						<td>Marketing Designer</td>
+						<td>$85,675</td>
+						<td>San Francisco</td>
+						<td>5384</td>
+						<td>u.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Howard Hatfield</td>
+						<td>Office Manager</td>
+						<td>$164,500</td>
+						<td>San Francisco</td>
+						<td>7031</td>
+						<td>h.hatfield@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hope Fuentes</td>
+						<td>Secretary</td>
+						<td>$109,850</td>
+						<td>San Francisco</td>
+						<td>6318</td>
+						<td>h.fuentes@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Vivian Harrell</td>
+						<td>Financial Controller</td>
+						<td>$452,500</td>
+						<td>San Francisco</td>
+						<td>9422</td>
+						<td>v.harrell@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Timothy Mooney</td>
+						<td>Office Manager</td>
+						<td>$136,200</td>
+						<td>London</td>
+						<td>7580</td>
+						<td>t.mooney@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jackson Bradshaw</td>
+						<td>Director</td>
+						<td>$645,750</td>
+						<td>New York</td>
+						<td>1042</td>
+						<td>j.bradshaw@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Olivia Liang</td>
+						<td>Support Engineer</td>
+						<td>$234,500</td>
+						<td>Singapore</td>
+						<td>2120</td>
+						<td>o.liang@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Bruno Nash</td>
+						<td>Software Engineer</td>
+						<td>$163,500</td>
+						<td>London</td>
+						<td>6222</td>
+						<td>b.nash@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Sakura Yamamoto</td>
+						<td>Support Engineer</td>
+						<td>$139,575</td>
+						<td>Tokyo</td>
+						<td>9383</td>
+						<td>s.yamamoto@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Thor Walton</td>
+						<td>Developer</td>
+						<td>$98,540</td>
+						<td>New York</td>
+						<td>8327</td>
+						<td>t.walton@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Finn Camacho</td>
+						<td>Support Engineer</td>
+						<td>$87,500</td>
+						<td>San Francisco</td>
+						<td>2927</td>
+						<td>f.camacho@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Serge Baldwin</td>
+						<td>Data Coordinator</td>
+						<td>$138,575</td>
+						<td>Singapore</td>
+						<td>8352</td>
+						<td>s.baldwin@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zenaida Frank</td>
+						<td>Software Engineer</td>
+						<td>$125,250</td>
+						<td>New York</td>
+						<td>7439</td>
+						<td>z.frank@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Zorita Serrano</td>
+						<td>Software Engineer</td>
+						<td>$115,000</td>
+						<td>San Francisco</td>
+						<td>4389</td>
+						<td>z.serrano@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jennifer Acosta</td>
+						<td>Junior Javascript Developer</td>
+						<td>$75,650</td>
+						<td>Edinburgh</td>
+						<td>3431</td>
+						<td>j.acosta@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Cara Stevens</td>
+						<td>Sales Assistant</td>
+						<td>$145,600</td>
+						<td>New York</td>
+						<td>3990</td>
+						<td>c.stevens@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Hermione Butler</td>
+						<td>Regional Director</td>
+						<td>$356,250</td>
+						<td>London</td>
+						<td>1016</td>
+						<td>h.butler@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Lael Greer</td>
+						<td>Systems Administrator</td>
+						<td>$103,500</td>
+						<td>London</td>
+						<td>6733</td>
+						<td>l.greer@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Jonas Alexander</td>
+						<td>Developer</td>
+						<td>$86,500</td>
+						<td>San Francisco</td>
+						<td>8196</td>
+						<td>j.alexander@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Shad Decker</td>
+						<td>Regional Director</td>
+						<td>$183,000</td>
+						<td>Edinburgh</td>
+						<td>6373</td>
+						<td>s.decker@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Michael Bruce</td>
+						<td>Javascript Developer</td>
+						<td>$183,000</td>
+						<td>Singapore</td>
+						<td>5384</td>
+						<td>m.bruce@datatables.net</td>
+					</tr>
+					<tr>
+						<td>Donna Snider</td>
+						<td>Customer Support</td>
+						<td>$112,000</td>
+						<td>New York</td>
+						<td>4226</td>
+						<td>d.snider@datatables.net</td>
+					</tr>
+				</tbody>
+			</table>
+
+			<ul class="tabs">
+				<li class="active">Javascript</li>
+				<li>HTML</li>
+				<li>CSS</li>
+				<li>Ajax</li>
+				<li>Server-side script</li>
+			</ul>
+
+			<div class="tabs">
+				<div class="js">
+					<p>The Javascript shown below is used to initialise the table shown in this example:</p><code class="multiline language-js">$(document).ready(function() {
+	// jQuery update a column title from the demo table to contain a long description
+	// You would not need to do this in your own code.
+	$('#example thead tr:eq(0) th:eq(2)').html(&quot;This is a really long column title!&quot;);
+	
+	// Wrap the colspan'ing header cells with a span so they can be positioned
+	// absolutely - filling the available space, and no more.
+	$('#example thead th[colspan]').wrapInner( '&lt;span/&gt;' ).append( '&amp;nbsp;' );
+
+	// Standard initialisation
+	$('#example').DataTable( {
+		responsive: true,
+		paging: false
+	} );
+} );</code>
+
+					<p>In addition to the above code, the following Javascript library files are loaded for use in this example:</p>
+
+					<ul>
+						<li><a href="../../../../media/js/jquery.js">../../../../media/js/jquery.js</a></li>
+						<li><a href="../../../../media/js/jquery.dataTables.js">../../../../media/js/jquery.dataTables.js</a></li>
+						<li><a href="../../js/dataTables.responsive.js">../../js/dataTables.responsive.js</a></li>
+					</ul>
+				</div>
+
+				<div class="table">
+					<p>The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:</p>
+				</div>
+
+				<div class="css">
+					<div>
+						<p>This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The
+						additional CSS used is shown below:</p><code class="multiline language-css">th {
+		position: relative;
+		min-height: 41px;
+	} 
+	span {
+		display: block;
+		position: absolute;
+		left: 0;
+		right: 0;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+	}</code>
+					</div>
+
+					<p>The following CSS library files are loaded for use in this example to provide the styling of the table:</p>
+
+					<ul>
+						<li><a href="../../../../media/css/jquery.dataTables.css">../../../../media/css/jquery.dataTables.css</a></li>
+						<li><a href="../../css/dataTables.responsive.css">../../css/dataTables.responsive.css</a></li>
+					</ul>
+				</div>
+
+				<div class="ajax">
+					<p>This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is
+					loaded.</p>
+				</div>
+
+				<div class="php">
+					<p>The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side
+					processing scripts can be written in any language, using <a href="//datatables.net/manual/server-side">the protocol described in the DataTables
+					documentation</a>.</p>
+				</div>
+			</div>
+		</section>
+	</div>
+
+	<section>
+		<div class="footer">
+			<div class="gradient"></div>
+
+			<div class="liner">
+				<h2>Other examples</h2>
+
+				<div class="toc">
+					<div class="toc-group">
+						<h3><a href="../initialisation/index.html">Basic initialisation</a></h3>
+						<ul class="toc">
+							<li><a href="../initialisation/className.html">Class name</a></li>
+							<li><a href="../initialisation/option.html">Configuration option</a></li>
+							<li><a href="../initialisation/new.html">`new` constructor</a></li>
+							<li><a href="../initialisation/ajax.html">Ajax data</a></li>
+							<li><a href="../initialisation/default.html">Default initialisation</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../styling/index.html">Styling</a></h3>
+						<ul class="toc">
+							<li><a href="../styling/bootstrap.html">Bootstrap styling</a></li>
+							<li><a href="../styling/foundation.html">Foundation styling</a></li>
+							<li><a href="../styling/scrolling.html">Vertical scrolling</a></li>
+							<li><a href="../styling/compact.html">Compact styling</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="./index.html">Display control</a></h3>
+						<ul class="toc active">
+							<li><a href="./auto.html">Automatic column hiding</a></li>
+							<li><a href="./classes.html">Class control</a></li>
+							<li><a href="./init-classes.html">Assigned class control</a></li>
+							<li><a href="./fixedHeader.html">With FixedHeader</a></li>
+							<li class="active"><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li>
+						</ul>
+					</div>
+
+					<div class="toc-group">
+						<h3><a href="../child-rows/index.html">Child rows</a></h3>
+						<ul class="toc">
+							<li><a href="../child-rows/disable-child-rows.html">Disable child rows</a></li>
+							<li><a href="../child-rows/column-control.html">Column controlled child rows</a></li>
+							<li><a href="../child-rows/right-column.html">Column control - right</a></li>
+							<li><a href="../child-rows/whole-row-control.html">Whole row child row control</a></li>
+							<li><a href="../child-rows/custom-renderer.html">Custom child row renderer</a></li>
+						</ul>
+					</div>
+				</div>
+
+				<div class="epilogue">
+					<p>Please refer to the <a href="http://www.datatables.net">DataTables documentation</a> for full information about its API properties and methods.<br>
+					Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a>
+					which extend the capabilities of DataTables.</p>
+
+					<p class="copyright">DataTables designed and created by <a href="http://www.sprymedia.co.uk">SpryMedia Ltd</a> &#169; 2007-2015<br>
+					DataTables is licensed under the <a href="http://www.datatables.net/mit">MIT license</a>.</p>
+				</div>
+			</div>
+		</div>
+	</section>
+</body>
+</html>

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/display-control/fixedHeader.html

@@ -794,6 +794,7 @@ $(document).ready(function() {
 							<li><a href="./classes.html">Class control</a></li>
 							<li><a href="./init-classes.html">Assigned class control</a></li>
 							<li class="active"><a href="./fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/display-control/index.html

@@ -45,6 +45,7 @@
 							<li><a href="./classes.html">Class control</a></li>
 							<li><a href="./init-classes.html">Assigned class control</a></li>
 							<li><a href="./fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 				</div>

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/display-control/init-classes.html

@@ -184,6 +184,7 @@ $(document).ready(function() {
 							<li><a href="./classes.html">Class control</a></li>
 							<li class="active"><a href="./init-classes.html">Assigned class control</a></li>
 							<li><a href="./fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="./complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/index.html

@@ -55,6 +55,7 @@
 							<li><a href="./display-control/classes.html">Class control</a></li>
 							<li><a href="./display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="./display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="./display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/initialisation/ajax.html

@@ -179,6 +179,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/initialisation/className.html

@@ -781,6 +781,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/initialisation/default.html

@@ -791,6 +791,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/initialisation/new.html

@@ -790,6 +790,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/initialisation/option.html

@@ -789,6 +789,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/styling/bootstrap.html

@@ -800,6 +800,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/styling/compact.html

@@ -785,6 +785,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/styling/foundation.html

@@ -791,6 +791,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 1 - 0
plugins/datatables/extensions/Responsive/examples/styling/scrolling.html

@@ -795,6 +795,7 @@ $(document).ready(function() {
 							<li><a href="../display-control/classes.html">Class control</a></li>
 							<li><a href="../display-control/init-classes.html">Assigned class control</a></li>
 							<li><a href="../display-control/fixedHeader.html">With FixedHeader</a></li>
+							<li><a href="../display-control/complexHeader.html">Complex headers (rowspan / colspan)</a></li>
 						</ul>
 					</div>
 

+ 16 - 7
plugins/datatables/extensions/Responsive/js/dataTables.responsive.js

@@ -1,11 +1,11 @@
-/*! Responsive 1.0.5
+/*! Responsive 1.0.6
  * 2014-2015 SpryMedia Ltd - datatables.net/license
  */
 
 /**
  * @summary     Responsive
  * @description Responsive tables plug-in for DataTables
- * @version     1.0.5
+ * @version     1.0.6
  * @file        dataTables.responsive.js
  * @author      SpryMedia Ltd (www.sprymedia.co.uk)
  * @contact     www.sprymedia.co.uk/contact
@@ -646,14 +646,25 @@ Responsive.prototype = {
 			.append( cells )
 			.appendTo( clonedHeader );
 
+		// In the inline case extra padding is applied to the first column to
+		// give space for the show / hide icon. We need to use this in the
+		// calculation
+		if ( this.c.details.type === 'inline' ) {
+			$(clonedTable).addClass( 'dtr-inline collapsed' );
+		}
+
 		var inserted = $('<div/>')
 			.css( {
 				width: 1,
 				height: 1,
 				overflow: 'hidden'
 			} )
-			.append( clonedTable )
-			.insertBefore( dt.table().node() );
+			.append( clonedTable );
+
+		// Remove columns which are not to be included
+		inserted.find('th.never, td.never').remove();
+
+		inserted.insertBefore( dt.table().node() );
 
 		// The cloned header now contains the smallest that each column can be
 		dt.columns().eq(0).each( function ( idx ) {
@@ -815,7 +826,7 @@ Api.register( 'responsive.recalc()', function () {
  * @name Responsive.version
  * @static
  */
-Responsive.version = '1.0.5';
+Responsive.version = '1.0.6';
 
 
 $.fn.dataTable.Responsive = Responsive;
@@ -833,8 +844,6 @@ $(document).on( 'init.dt.dtr', function (e, settings, json) {
 		 settings.oInit.responsive ||
 		 DataTable.defaults.responsive
 	) {
-		console.log( e.namespace );
-
 		var init = settings.oInit.responsive;
 
 		if ( init !== false ) {

File diff suppressed because it is too large
+ 9 - 8
plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js


+ 34 - 66
plugins/datatables/jquery.dataTables.css

@@ -21,7 +21,7 @@ table.dataTable tfoot th {
 table.dataTable thead th,
 table.dataTable thead td {
   padding: 10px 18px;
-  border-bottom: 1px solid #111111;
+  border-bottom: 1px solid #111;
 }
 table.dataTable thead th:active,
 table.dataTable thead td:active {
@@ -30,7 +30,7 @@ table.dataTable thead td:active {
 table.dataTable tfoot th,
 table.dataTable tfoot td {
   padding: 10px 18px 6px 18px;
-  border-top: 1px solid #111111;
+  border-top: 1px solid #111;
 }
 table.dataTable thead .sorting,
 table.dataTable thead .sorting_asc,
@@ -62,17 +62,17 @@ table.dataTable thead .sorting_desc_disabled {
   background-image: url("../images/sort_desc_disabled.png");
 }
 table.dataTable tbody tr {
-  background-color: white;
+  background-color: #ffffff;
 }
 table.dataTable tbody tr.selected {
-  background-color: #b0bed9;
+  background-color: #B0BED9;
 }
 table.dataTable tbody th,
 table.dataTable tbody td {
   padding: 8px 10px;
 }
 table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
-  border-top: 1px solid #dddddd;
+  border-top: 1px solid #ddd;
 }
 table.dataTable.row-border tbody tr:first-child th,
 table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
@@ -80,12 +80,12 @@ table.dataTable.display tbody tr:first-child td {
   border-top: none;
 }
 table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
-  border-top: 1px solid #dddddd;
-  border-right: 1px solid #dddddd;
+  border-top: 1px solid #ddd;
+  border-right: 1px solid #ddd;
 }
 table.dataTable.cell-border tbody tr th:first-child,
 table.dataTable.cell-border tbody tr td:first-child {
-  border-left: 1px solid #dddddd;
+  border-left: 1px solid #ddd;
 }
 table.dataTable.cell-border tbody tr:first-child th,
 table.dataTable.cell-border tbody tr:first-child td {
@@ -97,18 +97,10 @@ table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
 table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
   background-color: #abb9d3;
 }
-table.dataTable.hover tbody tr:hover,
-table.dataTable.hover tbody tr.odd:hover,
-table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover,
-table.dataTable.display tbody tr.odd:hover,
-table.dataTable.display tbody tr.even:hover {
+table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
   background-color: whitesmoke;
 }
-table.dataTable.hover tbody tr:hover.selected,
-table.dataTable.hover tbody tr.odd:hover.selected,
-table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected,
-table.dataTable.display tbody tr.odd:hover.selected,
-table.dataTable.display tbody tr.even:hover.selected {
+table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
   background-color: #a9b7d1;
 }
 table.dataTable.order-column tbody tr > .sorting_1,
@@ -161,50 +153,26 @@ table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.ord
 table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
   background-color: #afbdd8;
 }
-table.dataTable.display tbody tr:hover > .sorting_1,
-table.dataTable.display tbody tr.odd:hover > .sorting_1,
-table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1,
-table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1,
-table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 {
+table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
   background-color: #eaeaea;
 }
-table.dataTable.display tbody tr:hover > .sorting_2,
-table.dataTable.display tbody tr.odd:hover > .sorting_2,
-table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2,
-table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2,
-table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 {
+table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
   background-color: #ebebeb;
 }
-table.dataTable.display tbody tr:hover > .sorting_3,
-table.dataTable.display tbody tr.odd:hover > .sorting_3,
-table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3,
-table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3,
-table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 {
+table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
   background-color: #eeeeee;
 }
-table.dataTable.display tbody tr:hover.selected > .sorting_1,
-table.dataTable.display tbody tr.odd:hover.selected > .sorting_1,
-table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1,
-table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1,
-table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 {
+table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
   background-color: #a1aec7;
 }
-table.dataTable.display tbody tr:hover.selected > .sorting_2,
-table.dataTable.display tbody tr.odd:hover.selected > .sorting_2,
-table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2,
-table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2,
-table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 {
+table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
   background-color: #a2afc8;
 }
-table.dataTable.display tbody tr:hover.selected > .sorting_3,
-table.dataTable.display tbody tr.odd:hover.selected > .sorting_3,
-table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3,
-table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3,
-table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 {
+table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
   background-color: #a4b2cb;
 }
 table.dataTable.no-footer {
-  border-bottom: 1px solid #111111;
+  border-bottom: 1px solid #111;
 }
 table.dataTable.nowrap th, table.dataTable.nowrap td {
   white-space: nowrap;
@@ -340,24 +308,24 @@ table.dataTable td {
   text-decoration: none !important;
   cursor: pointer;
   *cursor: hand;
-  color: #333333 !important;
+  color: #333 !important;
   border: 1px solid transparent;
 }
 .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
-  color: #333333 !important;
+  color: #333 !important;
   border: 1px solid #cacaca;
   background-color: white;
-  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, gainsboro));
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
   /* Chrome,Safari4+ */
-  background: -webkit-linear-gradient(top, white 0%, gainsboro 100%);
+  background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
   /* Chrome10+,Safari5.1+ */
-  background: -moz-linear-gradient(top, white 0%, gainsboro 100%);
+  background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
   /* FF3.6+ */
-  background: -ms-linear-gradient(top, white 0%, gainsboro 100%);
+  background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
   /* IE10+ */
-  background: -o-linear-gradient(top, white 0%, gainsboro 100%);
+  background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
   /* Opera 11.10+ */
-  background: linear-gradient(to bottom, white 0%, gainsboro 100%);
+  background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);
   /* W3C */
 }
 .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
@@ -369,19 +337,19 @@ table.dataTable td {
 }
 .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
   color: white !important;
-  border: 1px solid #111111;
+  border: 1px solid #111;
   background-color: #585858;
-  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111111));
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
   /* Chrome,Safari4+ */
-  background: -webkit-linear-gradient(top, #585858 0%, #111111 100%);
+  background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
   /* Chrome10+,Safari5.1+ */
-  background: -moz-linear-gradient(top, #585858 0%, #111111 100%);
+  background: -moz-linear-gradient(top, #585858 0%, #111 100%);
   /* FF3.6+ */
-  background: -ms-linear-gradient(top, #585858 0%, #111111 100%);
+  background: -ms-linear-gradient(top, #585858 0%, #111 100%);
   /* IE10+ */
-  background: -o-linear-gradient(top, #585858 0%, #111111 100%);
+  background: -o-linear-gradient(top, #585858 0%, #111 100%);
   /* Opera 11.10+ */
-  background: linear-gradient(to bottom, #585858 0%, #111111 100%);
+  background: linear-gradient(to bottom, #585858 0%, #111 100%);
   /* W3C */
 }
 .dataTables_wrapper .dataTables_paginate .paginate_button:active {
@@ -434,7 +402,7 @@ table.dataTable td {
 .dataTables_wrapper .dataTables_info,
 .dataTables_wrapper .dataTables_processing,
 .dataTables_wrapper .dataTables_paginate {
-  color: #333333;
+  color: #333;
 }
 .dataTables_wrapper .dataTables_scroll {
   clear: both;
@@ -451,7 +419,7 @@ table.dataTable td {
   padding: 0 !important;
 }
 .dataTables_wrapper.no-footer .dataTables_scrollBody {
-  border-bottom: 1px solid #111111;
+  border-bottom: 1px solid #111;
 }
 .dataTables_wrapper.no-footer div.dataTables_scrollHead table,
 .dataTables_wrapper.no-footer div.dataTables_scrollBody table {

+ 134 - 62
plugins/datatables/jquery.dataTables.js

@@ -1,11 +1,11 @@
-/*! DataTables 1.10.6
+/*! DataTables 1.10.7
  * ©2008-2014 SpryMedia Ltd - datatables.net/license
  */
 
 /**
  * @summary     DataTables
  * @description Paginate, search and order HTML tables
- * @version     1.10.6
+ * @version     1.10.7
  * @file        jquery.dataTables.js
  * @author      SpryMedia Ltd (www.sprymedia.co.uk)
  * @contact     www.sprymedia.co.uk/contact
@@ -2435,7 +2435,7 @@
 		var ajax = oSettings.ajax;
 		var instance = oSettings.oInstance;
 		var callback = function ( json ) {
-			_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json] );
+			_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );
 			fn( json );
 		};
 	
@@ -2462,7 +2462,7 @@
 			"success": function (json) {
 				var error = json.error || json.sError;
 				if ( error ) {
-					oSettings.oApi._fnLog( oSettings, 0, error );
+					_fnLog( oSettings, 0, error );
 				}
 	
 				oSettings.json = json;
@@ -2472,13 +2472,15 @@
 			"cache": false,
 			"type": oSettings.sServerMethod,
 			"error": function (xhr, error, thrown) {
-				var log = oSettings.oApi._fnLog;
+				var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );
 	
-				if ( error == "parsererror" ) {
-					log( oSettings, 0, 'Invalid JSON response', 1 );
-				}
-				else if ( xhr.readyState === 4 ) {
-					log( oSettings, 0, 'Ajax error', 7 );
+				if ( $.inArray( true, ret ) === -1 ) {
+					if ( error == "parsererror" ) {
+						_fnLog( oSettings, 0, 'Invalid JSON response', 1 );
+					}
+					else if ( xhr.readyState === 4 ) {
+						_fnLog( oSettings, 0, 'Ajax error', 7 );
+					}
 				}
 	
 				_fnProcessingDisplay( oSettings, false );
@@ -3018,7 +3020,7 @@
 			 * 
 			 * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
 			 */
-			var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || '', function ( word ) {
+			var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) {
 				if ( word.charAt(0) === '"' ) {
 					var m = word.match( /^"(.*)"$/ );
 					word = m ? m[1] : word;
@@ -4139,22 +4141,21 @@
 		}
 		else
 		{
-			// Otherwise construct a single row table with the widest node in the
-			// data, assign any user defined widths, then insert it into the DOM and
-			// allow the browser to do all the hard work of calculating table widths
+			// Otherwise construct a single row, worst case, table with the widest
+			// node in the data, assign any user defined widths, then insert it into
+			// the DOM and allow the browser to do all the hard work of calculating
+			// table widths
 			var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table
-				.empty()
 				.css( 'visibility', 'hidden' )
-				.removeAttr( 'id' )
-				.append( $(oSettings.nTHead).clone( false ) )
-				.append( $(oSettings.nTFoot).clone( false ) )
-				.append( $('<tbody><tr/></tbody>') );
+				.removeAttr( 'id' );
+	
+			// Clean up the table body
+			tmpTable.find('tbody tr').remove();
+			var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
 	
 			// Remove any assigned widths from the footer (from scrolling)
 			tmpTable.find('tfoot th, tfoot td').css('width', '');
 	
-			var tr = tmpTable.find( 'tbody tr' );
-	
 			// Apply custom sizing to the cloned header
 			headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );
 	
@@ -4252,9 +4253,20 @@
 		}
 	
 		if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {
-			$(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {
-				_fnAdjustColumnSizing( oSettings );
-			} ) );
+			var bindResize = function () {
+				$(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {
+					_fnAdjustColumnSizing( oSettings );
+				} ) );
+			};
+	
+			// IE6/7 will crash if we bind a resize event handler on page load.
+			// To be removed in 1.11 which drops IE6/7 support
+			if ( oSettings.oBrowser.bScrollOversize ) {
+				setTimeout( bindResize, 1000 );
+			}
+			else {
+				bindResize();
+			}
 	
 			oSettings._reszEvt = true;
 		}
@@ -5208,13 +5220,13 @@
 	 *  @param {object} settings dataTables settings object
 	 *  @param {string} callbackArr Name of the array storage for the callbacks in
 	 *      oSettings
-	 *  @param {string} event Name of the jQuery custom event to trigger. If null no
-	 *      trigger is fired
+	 *  @param {string} eventName Name of the jQuery custom event to trigger. If
+	 *      null no trigger is fired
 	 *  @param {array} args Array of arguments to pass to the callback function /
 	 *      trigger
 	 *  @memberof DataTable#oApi
 	 */
-	function _fnCallbackFire( settings, callbackArr, e, args )
+	function _fnCallbackFire( settings, callbackArr, eventName, args )
 	{
 		var ret = [];
 	
@@ -5224,8 +5236,12 @@
 			} );
 		}
 	
-		if ( e !== null ) {
-			$(settings.nTable).trigger( e+'.dt', args );
+		if ( eventName !== null ) {
+			var e = $.Event( eventName+'.dt' );
+	
+			$(settings.nTable).trigger( e, args );
+	
+			ret.push( e.result );
 		}
 	
 		return ret;
@@ -6722,10 +6738,8 @@
 	 */
 	_Api = function ( context, data )
 	{
-		if ( ! this instanceof _Api ) {
-			throw 'DT API must be constructed as a new object';
-			// or should it do the 'new' for the caller?
-			// return new _Api.apply( this, arguments );
+		if ( ! (this instanceof _Api) ) {
+			return new _Api( context, data );
 		}
 	
 		var settings = [];
@@ -6766,18 +6780,12 @@
 	DataTable.Api = _Api;
 	
 	_Api.prototype = /** @lends DataTables.Api */{
-		/**
-		 * Return a new Api instance, comprised of the data held in the current
-		 * instance, join with the other array(s) and/or value(s).
-		 *
-		 * An alias for `Array.prototype.concat`.
-		 *
-		 * @type method
-		 * @param {*} value1 Arrays and/or values to concatenate.
-		 * @param {*} [...] Additional arrays and/or values to concatenate.
-		 * @returns {DataTables.Api} New API instance, comprising of the combined
-		 *   array.
-		 */
+		any: function ()
+		{
+			return this.flatten().length !== 0;
+		},
+	
+	
 		concat:  __arrayProto.concat,
 	
 	
@@ -6844,7 +6852,6 @@
 			return -1;
 		},
 	
-		// Note that `alwaysNew` is internal - use iteratorNew externally
 		iterator: function ( flatten, type, fn, alwaysNew ) {
 			var
 				a = [], ret,
@@ -7527,7 +7534,7 @@
 	
 	
 	
-	var _selector_run = function ( selector, select )
+	var _selector_run = function ( type, selector, selectFn, settings, opts )
 	{
 		var
 			out = [], res,
@@ -7546,7 +7553,7 @@
 				[ selector[i] ];
 	
 			for ( j=0, jen=a.length ; j<jen ; j++ ) {
-				res = select( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );
+				res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );
 	
 				if ( res && res.length ) {
 					out.push.apply( out, res );
@@ -7554,6 +7561,14 @@
 			}
 		}
 	
+		// selector extensions
+		var ext = _ext.selector[ type ];
+		if ( ext.length ) {
+			for ( i=0, ien=ext.length ; i<ien ; i++ ) {
+				out = ext[i]( settings, opts, out );
+			}
+		}
+	
 		return out;
 	};
 	
@@ -7566,15 +7581,15 @@
 	
 		// Backwards compatibility for 1.9- which used the terminology filter rather
 		// than search
-		if ( opts.filter && ! opts.search ) {
+		if ( opts.filter && opts.search === undefined ) {
 			opts.search = opts.filter;
 		}
 	
-		return {
-			search: opts.search || 'none',
-			order:  opts.order  || 'current',
-			page:   opts.page   || 'all'
-		};
+		return $.extend( {
+			search: 'none',
+			order: 'current',
+			page: 'all'
+		}, opts );
 	};
 	
 	
@@ -7586,6 +7601,7 @@
 				// Assign the first element to the first item in the instance
 				// and truncate the instance and context
 				inst[0] = inst[i];
+				inst[0].length = 1;
 				inst.length = 1;
 				inst.context = [ inst.context[i] ];
 	
@@ -7672,7 +7688,7 @@
 	
 	var __row_selector = function ( settings, selector, opts )
 	{
-		return _selector_run( selector, function ( sel ) {
+		var run = function ( sel ) {
 			var selInt = _intVal( sel );
 			var i, ien;
 	
@@ -7724,7 +7740,9 @@
 					return this._DT_RowIndex;
 				} )
 				.toArray();
-		} );
+		};
+	
+		return _selector_run( 'row', selector, run, settings, opts );
 	};
 	
 	
@@ -8154,7 +8172,7 @@
 			names = _pluck( columns, 'sName' ),
 			nodes = _pluck( columns, 'nTh' );
 	
-		return _selector_run( selector, function ( s ) {
+		var run = function ( s ) {
 			var selInt = _intVal( s );
 	
 			// Selector - all
@@ -8220,7 +8238,9 @@
 					} )
 					.toArray();
 			}
-		} );
+		};
+	
+		return _selector_run( 'column', selector, run, settings, opts );
 	};
 	
 	
@@ -8395,7 +8415,7 @@
 		var columns = settings.aoColumns.length;
 		var a, i, ien, j, o, host;
 	
-		return _selector_run( selector, function ( s ) {
+		var run = function ( s ) {
 			var fnSelector = typeof s === 'function';
 	
 			if ( s === null || s === undefined || fnSelector ) {
@@ -8415,7 +8435,7 @@
 							// Selector - function
 							host = settings.aoData[ row ];
 	
-							if ( s( o, _fnGetCellData(settings, row, j), host.anCells[j] ) ) {
+							if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {
 								a.push( o );
 							}
 						}
@@ -8446,7 +8466,9 @@
 					};
 				} )
 				.toArray();
-		} );
+		};
+	
+		return _selector_run( 'cell', selector, run, settings, opts );
 	};
 	
 	
@@ -9083,6 +9105,25 @@
 		} );
 	} );
 	
+	
+	// i18n method for extensions to be able to use the language object from the
+	// DataTable
+	_api_register( 'i18n()', function ( token, def, plural ) {
+		var ctx = this.context[0];
+		var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
+	
+		if ( resolved === undefined ) {
+			resolved = def;
+		}
+	
+		if ( plural !== undefined && $.isPlainObject( resolved ) ) {
+			resolved = resolved[ plural ] !== undefined ?
+				resolved[ plural ] :
+				resolved._;
+		}
+	
+		return resolved.replace( '%d', plural ); // nb: plural might be undefined,
+	} );
 
 	/**
 	 * Version string for plug-ins to check compatibility. Allowed format is
@@ -9092,7 +9133,7 @@
 	 *  @type string
 	 *  @default Version number
 	 */
-	DataTable.version = "1.10.6";
+	DataTable.version = "1.10.7";
 
 	/**
 	 * Private data store, containing all of the settings objects that are
@@ -13600,6 +13641,37 @@
 	
 	
 		/**
+		 * Selector extensions
+		 *
+		 * The `selector` option can be used to extend the options available for the
+		 * selector modifier options (`selector-modifier` object data type) that
+		 * each of the three built in selector types offer (row, column and cell +
+		 * their plural counterparts). For example the Select extension uses this
+		 * mechanism to provide an option to select only rows, columns and cells
+		 * that have been marked as selected by the end user (`{selected: true}`),
+		 * which can be used in conjunction with the existing built in selector
+		 * options.
+		 *
+		 * Each property is an array to which functions can be pushed. The functions
+		 * take three attributes:
+		 *
+		 * * Settings object for the host table
+		 * * Options object (`selector-modifier` object type)
+		 * * Array of selected item indexes
+		 *
+		 * The return is an array of the resulting item indexes after the custom
+		 * selector has been applied.
+		 *
+		 *  @type object
+		 */
+		selector: {
+			cell: [],
+			column: [],
+			row: []
+		},
+	
+	
+		/**
 		 * Internal functions, exposed for used in plug-ins.
 		 * 
 		 * Please note that you should not need to use the internal methods for

File diff suppressed because it is too large
+ 1 - 1
plugins/datatables/jquery.dataTables.min.css


File diff suppressed because it is too large
+ 150 - 148
plugins/datatables/jquery.dataTables.min.js


+ 8 - 8
plugins/datatables/jquery.dataTables_themeroller.css

@@ -51,10 +51,10 @@ table.dataTable thead th.ui-state-default:last-child {
   border-right-width: 1px;
 }
 table.dataTable tbody tr {
-  background-color: white;
+  background-color: #ffffff;
 }
 table.dataTable tbody tr.selected {
-  background-color: #b0bed9;
+  background-color: #B0BED9;
 }
 table.dataTable tbody th,
 table.dataTable tbody td {
@@ -70,7 +70,7 @@ table.dataTable td.right {
   text-align: right;
 }
 table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
-  border-top: 1px solid #dddddd;
+  border-top: 1px solid #ddd;
 }
 table.dataTable.row-border tbody tr:first-child th,
 table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
@@ -78,12 +78,12 @@ table.dataTable.display tbody tr:first-child td {
   border-top: none;
 }
 table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
-  border-top: 1px solid #dddddd;
-  border-right: 1px solid #dddddd;
+  border-top: 1px solid #ddd;
+  border-right: 1px solid #ddd;
 }
 table.dataTable.cell-border tbody tr th:first-child,
 table.dataTable.cell-border tbody tr td:first-child {
-  border-left: 1px solid #dddddd;
+  border-left: 1px solid #ddd;
 }
 table.dataTable.cell-border tbody tr:first-child th,
 table.dataTable.cell-border tbody tr:first-child td {
@@ -334,7 +334,7 @@ table.dataTable td {
   text-decoration: none !important;
   cursor: pointer;
   *cursor: hand;
-  color: #333333 !important;
+  color: #333 !important;
   border: 1px solid transparent;
 }
 .dataTables_wrapper .dataTables_paginate .fg-button:active {
@@ -378,7 +378,7 @@ table.dataTable td {
 .dataTables_wrapper .dataTables_info,
 .dataTables_wrapper .dataTables_processing,
 .dataTables_wrapper .dataTables_paginate {
-  color: #333333;
+  color: #333;
 }
 .dataTables_wrapper .dataTables_scroll {
   clear: both;