diff --git a/sites/all/modules/datatables/datatables.module b/sites/all/modules/datatables/datatables.module
index bdc62e3..11148e3 100644
--- a/sites/all/modules/datatables/datatables.module
+++ b/sites/all/modules/datatables/datatables.module
@@ -45,6 +45,22 @@ function datatables_library() {
         $lib_path . '/media/css/demo_table.css' => array(),
       ),
     );
+    
+    $libraries['datatables-tabletools'] = array(
+      'title' => 'Tabletools plugin for DataTables',
+      'website' => 'http://www.datatables.net/extras/tabletools/',
+      'version' => '1.1.4',
+      'js' => array(
+        drupal_get_path('module', 'datatables') . '/dataTables/extras/TableTools/media/js/ZeroClipboard.js' => array(),
+        drupal_get_path('module', 'datatables') . '/dataTables/extras/TableTools/media/js/TableTools.js' => array(),
+      ),
+      'css' => array(
+        drupal_get_path('module', 'datatables') . '/dataTables/extras/TableTools/media/css/TableTools.css' => array(),
+      ),
+      'dependencies' => array(
+        array('datatables', 'datatables'),
+      ),
+    );
   }
 
   return $libraries;
@@ -250,6 +266,7 @@ function template_preprocess_datatables_view(&$vars) {
   }
 
   // Enable table info display, if necessary.
+  $datatable_options['bTableTools'] = TRUE;
   $datatable_options['bInfo'] = $options['elements']['table_info'];
   $datatable_options['bFilter'] = $options['elements']['search_box'];
   $datatable_options['bStateSave'] = $options['elements']['save_state'];
@@ -286,6 +303,16 @@ function template_preprocess_datatables_view(&$vars) {
 
   $vars['id'] = _datatables_get_id();
 
+  $is_table_tools_enabled = (isset($datatable_options['bTableTools'])) ? $datatable_options['bTableTools'] : FALSE;
+  
+  if ($is_table_tools_enabled) {
+    $datatable_options['oTableTools'] = array(
+      'sSwfPath' => base_path() . drupal_get_path('module', 'datatables') . '/dataTables/extras/TableTools/media/swf/copy_csv_xls_pdf.swf',
+    );
+    $datatable_options['sDom'] = 'T<"clear">lfrtip';
+    drupal_add_library('datatables', 'datatables-tabletools');
+  }
+  
   drupal_add_library('datatables', 'datatables');
   drupal_add_js(array('datatables' => array('#' . $vars['id'] => $datatable_options)), array('type' => 'setting', 'scope' => JS_DEFAULT));
 }
diff --git a/sites/all/modules/datatables/js/datatables.js b/sites/all/modules/datatables/js/datatables.js
index c622a3b..187bba9 100644
--- a/sites/all/modules/datatables/js/datatables.js
+++ b/sites/all/modules/datatables/js/datatables.js
@@ -21,7 +21,13 @@
 
             settings.aoColumns.unshift({"bSortable": false});
           }
-
+          
+          if (this.oTableTools) {
+            jQuery.each(this.oTableTools, function (key, value) {
+              TableToolsInit[key] = value;
+            });
+          }
+          
           var datatable = $(selector).dataTable(settings);
 
           if (settings.bExpandable) {
