diff --git a/data/js/alphabetSearch.js b/data/js/alphabetSearch.js
new file mode 100644
index 00000000..381da889
--- /dev/null
+++ b/data/js/alphabetSearch.js
@@ -0,0 +1,176 @@
+/*! AlphabetSearch for DataTables v1.0.0
+ * 2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary AlphabetSearch
+ * @description Show an alphabet aloneside a table providing search input options
+ * See http://datatables.net/blog/2014-09-22 for details
+ * @version 1.0.0
+ * @file dataTables.alphabetSearch.js
+ * @author SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact www.sprymedia.co.uk/contact
+ * @copyright Copyright 2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ * MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+(function(){
+
+
+// Search function
+$.fn.dataTable.Api.register( 'alphabetSearch()', function ( searchTerm ) {
+ this.iterator( 'table', function ( context ) {
+ context.alphabetSearch = searchTerm;
+ } );
+
+ return this;
+} );
+
+// Recalculate the alphabet display for updated data
+$.fn.dataTable.Api.register( 'alphabetSearch.recalc()', function ( searchTerm ) {
+ this.iterator( 'table', function ( context ) {
+ draw(
+ new $.fn.dataTable.Api( context ),
+ $('div.alphabet', this.table().container())
+ );
+ } );
+
+ return this;
+} );
+
+
+// Search plug-in
+$.fn.dataTable.ext.search.push( function ( context, searchData ) {
+ // Ensure that there is a search applied to this table before running it
+ if ( ! context.alphabetSearch ) {
+ return true;
+ }
+ if ( context.alphabetSearch.match('nonalpha') && !(searchData[1].charAt(0).match(/^[a-zA-Z]/
+ return true;
+ }
+ if ( searchData[1].charAt(0) === context.alphabetSearch ) {
+ return true;
+ }
+
+ return false;
+} );
+
+
+// Private support methods
+function bin ( data ) {
+ var letter, bins = {};
+ var nonalpha = 0;
+ bins['nonalpha'] = 0;
+ for ( var i=0, ien=data.length ; i