<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"  xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>DataTables (jQuery plug-in)</title>
		<link>http://www.datatables.net/</link>
		<language>en-us</language>
		<description>Release information and other updates about DataTables</description>
		<atom:link href="http://www.datatables.net/rss.xml" rel="self" type="application/rss+xml" />
	
<item>
	<title>TableTools 2.1.5 released</title>
	<description><![CDATA[<p>Maintenance release of TableTools, addressing a XSS security issue in the Flash component for local file saving, and small changes for full compatibility with jQuery 1.9. A few small minor issues have also been addressed here.</p><p>Release notes for TableTools 2.1.5:</p><ul>
	<li>Update: Pass the event to the fnClick function so we can detect other mouse buttons.</li>
</ul>
<ul>
	<li>Fix: Use `off` rather than `die` - 14044</li>
	<li>Fix: CSS styles for the button images were using the wrong tag</li>
	<li>Fix: XSS issue in Flash - More information can be found here: https://github.com/jonrohan/ZeroClipboard/issues/14</li>
	<li>Fix: jQuery 1.9 removes $().live(), so need to update to using $().on()</li>
	<li>Fix:CSS - jQuery ThemeRoller CSS for print info had incorrect positioning - 13422</li>
	<li>Fix: Destroy method wasn't correctly unbinding the row selection events - 12520</li>
</ul>    <p><a href="/releases/TableTools-2.1.5.zip">Download TableTools 2.1.5</a></p>  ]]></description>
	<pubDate>Mon, 04 Mar 2013 07:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#134</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>Editor 1.2.3 released</title>
	<description><![CDATA[<p>A relatively small number of changes in this release, with focus primarily on addressing all known issues and adding two new features to enhance the capabilities of Editor. The first of these two is for most of the built in field types to accept a new configuration parameter - `attr` which is an object of key/value pairs which will be applied to the input element. This allows easy addition of attributes such as `maxlength`, `required` etc.</p><p>The second new feature is to relax the constraint of requiring a row ID to be set in the DataTable (typically this was done with `DT_RowId`). Now it is possible to read any object property as the unique identifier for a row with the new `srcId` option. `DT_RowId` is is still used as the default.</p><p>Release notes for Editor 1.2.3:</p><ul>
    <li>New: The readonly, text, password, textarea, select, and date built in form field types now accept an <code>attr</code> option which is an object of attribute name / value pairs which are applied to the input element for the field. This allows any attribute such as <code>maxlength</code> to be added easily to fields.</li>
    <li>New: New configuration option option - <code>srcId</code> can now be used to read the row id from the data source object rather than the DOM row's ID property, effectively making the DT_RowId option in the JSON data source optional. This is handy for cases where you might not want to modify the JSON data source to include DT_RowId, or if the id is already included and need not be included again as redundant information.</li>
</ul>
<ul>
    <li>Update: Update Date example to use jQuery 1.10.0</li>
    <li>Update: Bootstrap integration example updated to latest DataTables integration code</li>
</ul>
<ul>
    <li>Fix: api:clear - Fix ordering issue, where ordering wasn't updated on a clear - 13566</li>
    <li>Fix: api:clear - Fix clearing field <code>0</code> - 13566</li>
    <li>Fix: api:documentation - Example for <code>fields</code> didn't actually use the method  that it was supposed to be showing!</li>
    <li>Fix: PHP - When submitting an empty array (i.e. a checkbox array with no items set) the HTTP parameter isn't sent to the server, resulting in an error being reported - 12820.</li>
    <li>Fix: examples - Missing the 'title' field from the formOnlyData example so the title input was completely ignored - 12644</li>
    <li>Fix: integration:bootstrap - If the user exited the Bootstrap modal using the esc key, the Editor for could not be brought back onto screen as it thought it was still open.</li>
    <li>Fix: Add type="text" to the text input fields.</li>
    <li>Fix: When multiple instances of Editor were used, the display controllers were both attaching multiple events (one for each instance) rather than just using events for the instance that was being worked with. This would result in display events (such as close) being fired multiple times. The fix is to attach events, not at init time as was done before, but rather the events are attached, for a single instance on each display, and removed on close ensuring that the events only apply to the active instance. It is worth noting that the display controller DOM elements are still shared between the instances to help keep memory usage to a minimum - this works here as the two built in display controllers can only show one instance at a time, but if a display controller were to provide the ability to interact with multiple tables at the same time (a modal for example) it would need to use an individual DOM element for each instance. See thread 12563 for the original bug report.</li>
</ul>    <p><a href="http://editor.datatables.net/download">Download Editor 1.2.3</a></p>  ]]></description>
	<pubDate>Sat, 02 Feb 2013 15:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#133</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>Editor 1.2.2 released</title>
	<description><![CDATA[<p>This latest update for Editor focuses on addressing issues that have cropped up in the 1.2.x series and smaller new features. The new features include the <code>node</code> and <code>order</code> method which, respectively, will give you the field node (so it can be used else where such as inline editing) and get/set the field order. Also in this release is an enhancement to the PHP libraries which will automatically detect and respond as required to server-side processing requests from Editor, allowing Editor to work with massive data sets very easily.</p><p>Release notes for Editor 1.2.2:</p><ul>
    <li>New - API: <code>node</code> method - get the input container node for a particular field. This means you can potentially use the node else where in the document (inline editing for example).    </li>
    <li>New - API: <code>order</code> method - get and set the order of the fields, based on field names, in the form.</li>
    <li>New - init: Editor field containers can now have a custom class applied to them by using the 'className' property for field definitions.</li>
    <li>New - init: <code>seperator</code> option for the <code>checkbox</code> field type which allows the checkbox values selected to be submitted to the server as a string rather than an array (if given)</li>
    <li>New - Example: Example showing server-side processing and Editor in action.</li>
    <li>New - PHP: Database 'where' conditions can now be nested by passing in the first parameter as a function which is then called, with the action of the function being to add additional 'where' conditions to the query. The conditions added inside the closure, are wrapped by parentheses, giving the database layer now the ability to preform complex 'where' conditions.</li>
    <li>New - PHP: The <code>Editor</code> class will automatically detect and act upon server-side processing requests from DataTables. This means that in order to switch to using server-side processing with DataTables, when using the Editor classes, you simply need to add <code>"bServerSide": true, "sServerMethod": 'POST'</code> to your DataTables initialisation. The PHP classes will take care of the server-side processing implementation, allowing DataTables and Editor to work with massive databases (many millions of rows).</li>
</ul>
<ul>
    <li>Update - core: Fields are always inserted on display, in order. This allows ordering to occur, and also nodes to be used else where (see the above two new features).</li>
    <li>Update - core: Updating version numbering to semver - this only has an impact on development builds - no changes to releases</li>
    <li>Update - examples: Update all examples to use DataTables 1.9.4's mData rather than mDataProp</li>
    <li>Update - examples: All examples now have the new layout with tabs and extra information</li>
    <li>Update - examples: Adding more information about each demo such as displaying the PHP used, but also making the information more accessible by showing it in tabs.</li>
    <li>Update - docs: Small improvements to the requirements text</li>
    <li>Update - docs: Improve internal referencing in the documentation and make changes needed for the latest DataTables JSDoc template which now uses markdown.</li>
    <li>Update - PHP: Add <code>implode</code> and <code>explode</code> methods to the Format class which can be used with checkbox arrays that are submitted by the client-side.</li>
</ul>
<ul>
    <li>Fix: IE8- had a display layout problem with fields which could cause them to stack incorrectly.</li>
    <li>Fix: If there is a field reported in error but there is no error status message we now simply show "Error". This shouldn't occur - it is an error on the server, but this at least avoids breaking the UI for the end user if it does happen now.</li>
    <li>Fix: The 'scroll to error' on submit error was broken due to an incorrect variable reference.</li>
    <li>Fix: The example given in the Editor class used the wrong variables for the TableTools initialisation</li>
    <li>Fix: If the first input element was disabled, IE8 would throw an error (12395). We now focus on the first visible, enabled input,select or textarea control in the form.</li>
    <li>Fix: Message and error API methods incorrectly were treating empty strings in the second parameter as form level messages, rather than the field level that they should have been (so it was impossible to clear errors).</li>
    <li>Fix: Don't throw errors on scroll to field error if the field is not displayed</li>
    <li>Fix - PHP: Required validation was broken unless the required type string length matched the required flag.</li>
</ul>
<ul>
    <li>Web-site: Correct links to the self-referencing documentation</li>
</ul>    <p><a href="http://editor.datatables.net/download">Download Editor 1.2.2</a></p>  ]]></description>
	<pubDate>Thu, 01 Nov 2012 16:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#132</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.9.4 released</title>
	<description><![CDATA[<p>This update of DataTables sees a number of performance improvements and bug fixes, paving the way for development of DataTables 1.10 to now get underway. In general use you should see no change in this update (other than the bug fixes and general performance improvements!), but please be aware that fnRender has now been fully deprecated and will be removed in DataTables 1.10. It is strongly recommended that you use mRender to manipulate the data for display.</p><p>Release notes for DataTables 1.9.4:</p><ul>
	<li>New: component.json file for Bower ( http://twitter.github.com/bower/ ) support. Both component.json and package.json are generated with the correct version number in them.</li>
	<li>New: Add support for AMD-based module loaders (such as requirejs).</li>
</ul>
<ul>
	<li>Update: Fully deprecate fnRender - it will be removed from the next major version of DataTables and it is strongly advised that you do not use it!</li>
	<li>Update: Examples - remove all reference of fnRender, instead granting preference to mRender.</li>
	<li>Update: Updating to jQuery 1.8.2</li>
</ul>
<ul>
	<li>Performance: Large improvement in scrolling performance due to rearranging the way that column widths are read and applied to the target table. Rather than merging reading and writing together, we now separate the reading and writing phases, allowing the browser's rendering engine to optimise the reflow. Props to jlabanca for this modification - 11541</li>
	<li>Performance: Number of improvements in DOM node iteration through use of nextSibling</li>
</ul>
<ul>
	<li>Examples: update - bind the 'xhr' event to the table without calling DataTables - no need for that call to be made.</li>
	<li>Examples: Add <code> CSS markup for examples.</li>
</ul>
<ul>
	<li>Fix: Only restore hidden columns if table is not being removed from DOM</li>
	<li>Fix: Added fix for memory leak because of potential circular reference</li>
	<li>Fix: Header TD elements need an outline of none to stop of focus flicker (matching TH elements which already have this)</li>
	<li>Fix: A header made of only TD elements wasn't being correctly detected - 11705</li>
	<li>Fix: If the user is currently focused on the filtering input element, don't overwrite the value that is already shown as this will effect the cursor position.</li>
	<li>Fix: State saving deletion of cookies was somewhat broken. It would delete cookies out of order, which is not what we want. Rewrite how the 'overage' of cookies (4K limit) is handled</li>
	<li>Fix: Remove irrelevant and broken bSortable check for the column options - fix issue #101</li>
	<li>Fix: mRender and mData now work in the same way for DOM sourced tables as they do for JS sourced table data. Generally we wouldn't really expect them to be used as much for DOM sourced tables (if you want your table formatted differently, you'd just create the HTML differently!), but it can sometimes be useful to use these options. This also brings mRender to full 'pace' ready to be used in complete preference to fnRender (alongside the other methods for cell rendering such an fnCellCreated etc).</li>
	<li>Fix: Use greedy match regex for replacements. Otherwise, you could have: "_START_ of _TOTAL_, showing _START_ to _END_" replaced as: "1 of 5, showing _START_ to 3"</li>
	<li>Fix: Allow for adding / removing an arbitrary number of stripe rows</li>
	<li>Fix: Firefox Windows (not Mac) had an error when calculating if scrolling over sizing was needed or not (_fnBrowserDetect). The result was that the table did not fill the space when y-scrolling was enabled and Firefox Windows was used. Fix is to remove the height on the DT_BrowserTest parent as suggested by `randomuser` - 11406</li>
	<li>Fix - docs: sNext and sPrevious referenced to full_numbers pagination type, but they can be used for any pagination control: 9192</li>
	<li>Fix - docs: Documentation error for fnGetPosition - missing one of the return indexes - 11708</li>
</ul>
    <p><a href="/releases/DataTables-1.9.4.zip">Download DataTables 1.9.4</a></p>  ]]></description>
	<pubDate>Sun, 23 Sep 2012 14:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#131</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.8 released</title>
	<description><![CDATA[<p>A quick turn around for this latest ColReorder release. A compatibility issue was found with jQuery 1.8.1, which is fixed in this release.</p><p>Release notes for ColReorder 1.0.8:</p><ul>
<li>Fix: jQuery 1.8.1 comp ability issue with selector</li>
</ul>    <p><a href="/releases/ColReorder-1.0.8.zip">Download ColReorder 1.0.8</a></p>  ]]></description>
	<pubDate>Sun, 23 Sep 2012 13:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#130</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.1.4 released</title>
	<description><![CDATA[<p>This latest release for TableTools is primarily a bug fix release that focuses on improvements to the selection API, and specific how the pre and post select callbacks operate. They are no provided with a lot more information about what rows are being selected / deselected. There are also other bug fixes such as an issue with exporting data which has HTML entities in it and print view with scrolling and server-side processing enabled.</p><p>Release notes for TableTools 2.1.4:</p><ul>
	<li>New: Updates for the pre-select and post-select methods. The pre-select now gets three parameters: 1. event that triggered the select (can be undefined!), 2. nodes to be selected or unselected, 3. boolean flag to indicate if selection (true) or deselection (false). The post-select now gets two parameters: 1. nodes that were selected or unselected, 2. boolean flag to indicate if selection (true) or deselection (false)</li>
</ul>
<ul>
	<li>Update: Add an additional parameter to the 'select' callback to tell the callback if the row was selected or not.</li>
</ul>
<ul>
	<li>Fix: If the table was redrawn when in print view (for example with server-side processing enabled) the DataTables scrolling method would cause the header to be hidden. Need to add the header back in when that happens.</li>
	<li>Fix: Make the deselection less agressive for select none. Only currently selected nodes are now deselected.</li>
	<li>Fix: Selected and Deselected rows should be passed to the callback / events as arrays of the collection of rows that were selected, deselected - 11674.</li>
	<li>Fix: Performance improvements in _fnHtmlDecode - 11584 - courtesy of randomuser.</li>
	<li>Fix: When an HTML entity was in the last 8 characters, it got chopped off because we didn't do anything with `sInner` in the _fnHtmlDecode loop - 11584</li>
</ul>
    <p><a href="/releases/TableTools-2.1.4.zip">Download TableTools 2.1.4</a></p>  ]]></description>
	<pubDate>Sun, 16 Sep 2012 14:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#129</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.7 released</title>
	<description><![CDATA[<p>A bug fix update for ColReorder which addresses a compatibility issue with DataTables 1.9.3+ and introduces a destroy method (which listened for the destruction of the host DataTable) to clean up events etc.</p><p>Release notes for ColReorder 1.0.7:</p><ul>
	<li>Fix: Added destroy method to clean up memory references and event handlers</li>
	<li>Fix: Correct description for ColReorder</li>
	<li>Fix: DataTables 1.9.3 internally renamed mDataProp to mData, breaking the reordering. This fix addresses that.</li>
	<li>Fix: Update requirements to DataTables 1.9.3</li>
</ul>    <p><a href="/releases/ColReorder-1.0.7.zip">Download ColReorder 1.0.7</a></p>  ]]></description>
	<pubDate>Sun, 16 Sep 2012 11:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#128</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>Editor 1.2.1 released</title>
	<description><![CDATA[<p>Editor 1.2.1 is now available, with a number of API refinements and bugs addressed. The PHP server implementation now has the ability to do self-referencing joins, and the client-side has a few new API methods and events.</p><p>Release notes for Editor 1.2.1:</p><ul>
    <li>New - API: <code>get</code> method now allows no parameters to be passed to it. If that is done, then the values of all fields are returned as an object.</li>
    <li>New - API: <code>fields</code> method - new method which will get a list of all the field names that the instance has been configured with.</li>
    <li>New - Events: onPreOpen and onPreClose events which allow the open / close action to be cancelled.</li>
    <li>New - example: Close confirmation on unsaved changes using the new features in 1.2.1.</li>
    <li>New - PHP: <code>get</code> and <code>set</code> methods for the Join class. <code>set(false)</code> will tell the Join instance not to perform any write operations on the join table, while <code>get(false)</code> will not perform any read operations (the former is probably significantly more useful!). This is easier than setting all of the fields in the join table to <code>set(false)</code> (for example) if you don't want the child join table to be updated.</li>
    <li>New - PHP: <code>aliasParentTable</code> method for the <code>Join</code> class. This allows the parent table to be aliased thus allowing self referencing Join queries.</li>
    <li>New - PHP: <code>where</code> method for the Editor class which can be used to apply a condition to the database being queried. Conditions such as <code>where( 'name', 'A%', 'like')</code> or <code>where( 'amount', '50', '<' )</code> can be used. Multiple conditions can be added by calling the method multiple times. Caution is very much advices when using this method - please do not include the conditional field(s) in the fields which can be edited by the end user - they could remove the row from the condition which will result in undefined behaviour.</li>
    <li>New - PHP: Ability to perform self referencing joins, with example (joinSelf). This is done through the use of the aliasParentTable method.</li>
    <li>New - PHP: Aliasing fields to read columns from the parent table is now possible, using standard SQL notation - there are a few conditions though - the field must be read-only, and it must be given a name that doesn't include a dot (so DataTables doesn't attempt to use Javascript object notation to read it!). This is designed to compliment the aliasParentTable option so that fields from the parent table can be read (aliasParentTable isn't required - you can read options for the original name if needed!).</li>
    <li>New - PHP: Provide an <code>sql</code> method for the Database class which allows SQL statements to be passed straight through to the driver and executed against the database. This can be useful to set system variables - for example character sets for the connection.</li>
</ul>
<ul>
    <li>Update - examples: Update table only data example text to take account of the new 'row' return parameter from 1.2</li>
    <li>Update - examples: Bootstrap integration: Update to Bootstrap 2.1</li>
    <li>Update - examples: Update jQuery UI to v1.8.23</li>
    <li>Update - PHP: Renaming the Join internal method 'get' to 'data' so we can make 'get' and 'set' public methods indicating if a get/set should be performed on the join. Note that this has no external effect - the Join class's 'get' method was internal only before and used only by the Editor class which has been updated.</li>
</ul>
<ul>
    <li>Fix - Core: Using Editor without loading TableTools would result in a Javascript error, due to setting the language preferences without checking for the existence of TableTools first.</li>
    <li>Fix - PHP: Validation of required fields was a little broken due to an incorrect string length calculation.</li>
    <li>Fix - PHP: ORDERY BY (<code>order</code> method) had a couple of issues which caused it to work incorrectly, which are now fixed.</li>
    <li>Fix - PHP: Query prototype was out of date - also needs port passed in (i.e. 5 parameters)</li>
    <li>Fix - PHP: Check that the joining field has been included in the Editor field list - otherwise it won't work and it is fairly obscure as to why not.</li>
    <li>Fix - PHP: When joining tables, before we assumed that the primary key that is defined in the Editor class would be used for the join, but this isn't always true - its likely to be usually true, but not always. Instead, the parent field from the join statement is now used. As noted, this will usually be the pkey of the parent, but doesn't need to be any more. Also worth noting that the field that is used for the join must be in the Field list for the Editor instance - since the pkey is by default, this isn't normally a problem.</li>
</ul>
    <p><a href="http://editor.datatables.net/download">Download Editor 1.2.1</a></p>  ]]></description>
	<pubDate>Sun, 02 Sep 2012 18:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#127</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.9.3 released</title>
	<description><![CDATA[<p>I'm excited to announce that DataTables 1.9.3 is now available. Although this is a minor release of DataTables it is none-the-less important for the bug fixes that it includes and also one important new feature - mRender .</p><p>mRender is the compliment of the mData option (renamed in this release from mDataProp - this is a backwards compatible change! You can still use mDataProp, the reason for the renaming is for naming consistency and flexibility). mRender will be the subject of a blog post shortly, so I'll only summarise its abilities here, but basically it can replace fnRender with something that has far more ability.</p><p>mData, as described in this blog post, http://datatables.net/blog/Orthogonal_data , can be used to provide DataTables with different data for each cell data type, however, it has the added complication of needed to work with setting the data value - sometimes this can be useful, but often it just requires extra code. mRender does not need to consider the setting of data, just returning the data required for each type. This can take the form of a string or a function, just like mData and will use the value pointed to by mData and its base value (although it does have access to the full data source object if needed).</p><p>In addition to this the mData / mRender syntax as been expanded to include array notation for dealing with nested arrays.</p><p>For more information see <a href="http://datatables.net/forums/discussion/11251/datatables-1.9.3">this form post</a>.</p><p>Release notes for DataTables 1.9.3:</p>
<ul>
	<li>New: xhr event now has the json returned from the server as the third parameter.</li>
	<li>New: mRender option for columns - this is effectively a simpler version of mDataProp for reading data only (while mDataProp also sets data), and much more comprehensive than fnRender (as such fnRender is now officially deprecated). See the documentation comments in model.defaults.columns.js for further information on how to use mRender.</li>
	<li>New: Renaming mDataProp to mData for naming consistency and to show its flexibility. Please note that this is a backwards compatible change! DataTables will automatically check for mDataProp on a column and use that if required (if both mData and mDataProp are given then the new mData is used in preference).</li>
	<li>New: When making an Ajax call for data (fnServerData) and the server responds with the JSON parameter "sError" set, DataTables will alert this out. Typically end users should never see this - it is useful for error reporting from the server though.</li>
</ul>
<ul>
	<li>Updated: Tidy up _fnColumnIndexToVisible and _fnVisibleToColumnIndex to use the new _fnGetColumns method.</li>
	<li>Updated: Remove use of $.browser since this is depreciated in jQuery 1.8 and will be completely removed in jQuery 1.9. Instead we now use feature detection to determine if there is a browser bug with the width calculation of scrolling elements that needs to be worked around. This does unfortunately increase the code size a bit - it is either this or using user agent string detection (which is exactly what is being removed from jQuery).</li>
	<li>Updated: mDataProp syntax now has the ability to accept array syntax (for example "access[].name" would get an array of the 'name' properties from the access property of the data source). This is exceptionally useful for manipulating arrays - however, you are very _strongly_ advised not to use in in mDataProp itself, since when setting arrays, you will overwrite the old array (thus destroying any other properties that it already has!). Instead, see the new mRender property if you want to make use of this syntax for drawing the table.</li>
	<li>Updated: Unit test updated for the mData name change from mDataProp. Note that a number of tests to test the backwards compatibility of mDataProp!</li>
	<li>Updated: Unit tests for set functions</li>
	<li>Updated - examples: Witht he change in name from mDataProp to mData, this change is now reflected in the examples to encourage mData usage (do remember that mDataProp will still work, but use of mData is encouraged).</li>
</ul>
<ul>
	<li>Performance: Alter how _fnBuildSearchRow works to be much faster. For this a new method call _fnGetColumns is introduced which will pluck the column indexes that we want into an array that can then be iterated over (rather than spinning over the full aoColumns array twice, we now do it only the once for columns which are actually marked as searchable). Also use array join rather than string concatenation to keep the number of operations down as much as possible. The callers of _fnBuildSearchRow must now pass in the data to be searched, limited by the searchable flag (i.e. call _fnGetRowData with the column indexes from _fnGetColumns).</li>
</ul>
<ul>
	<li>Fix: Remove dud CSS from themeroller file - 10794</li>
	<li>Fix: Remove duplicate CSS lines - 10663</li>
	<li>Fix: Use jQuery html() and text() for HTML data to search method. Much tidier and copes with strict XHTML - downside is that it is a little slower if & is in a data string.</li>
	<li>Fix: When fnUpdate is called with a column index given, assume that the update is for an individual cell (which the API call has specified, so this is the correct thing to do). This also lets us tidy up some of the code in fnUpate, particularly when regarding deeply nested options.</li>
	<li>Fix: #39 - null values should also be considered like undefined values when working with nested data and have properties created as needed.</li>
	<li>Fix: null values that were applied to extended object properties were not being correctly applied since typeof null === 'object' - 11180</li>
	<li>Fix - examples: typos in examples/api/multi_filter_select.html</li>
	<li>Fix - documentation: Two syntax errors in the examples, one for fnStateSaveParams and the other mDataProp - 11083</li>
	<li>Fix - documentation: Typos in documentation comments and source comments - 11083</li>
</ul>


<ul>
	<li>New: fnSelectAll and fnSelectNone now have a single (optional) parameter that can be given to limit the [de]selection to only the rows which match the current filtering.</li>
</ul>
<ul>
	<li>Update - examples: Update the plug-in button example to use the new TableTools.buttonBase object, extending that.</li>
</ul>
<ul>
	<li>Fix: Typos in documentation comments and general code comments.</li>
	<li>Fix: Collections were broken due to positioning misalignment - the new structure means that we can actually simplify the positioning a lot - simply make the buttons position:relative and then the flash container, since it is now inside those elements, position:absolute top:0 left:0 and only the height and width need be changed - 10721</li>
	<li>Fix - examples: The DataTables web-site needs the formatting of the CSS includes to be @import rather than <link> in order to add its own styling.</li>
</ul>

    <p><a href="/releases/DataTables-1.9.3.zip">Download DataTables 1.9.3</a></p>  ]]></description>
	<pubDate>Thu, 09 Aug 2012 10:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#126</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.1.3 released</title>
	<description><![CDATA[<p>This is a bug fix release of TableTools that primarily addresses issues with the button collections which were broken in 2.1.2. There are other minor changes as well, but there is one new feature worth noting - fnSelectAll and fnSelect none can now optionally take an argument to indicate if they should consider all rows or only filtered rows (i.e. it is now super easy to have a "Select all filtered rows" button). This compliments the ability of fnSelect and fnDeselect to take a node, array or jQuery object for which rows to select / deselect.</p><p>Release notes for TableTools 2.1.3:</p><ul>
	<li>New: fnSelectAll and fnSelectNone now have a single (optional) parameter that can be given to limit the [de]selection to only the rows which match the current filtering.</li>
</ul>
<ul>
	<li>Update - examples: Update the plug-in button example to use the new TableTools.buttonBase object, extending that.</li>
</ul>
<ul>
	<li>Fix: Typos in documentation comments and general code comments.</li>
	<li>Fix: Collections were broken due to positioning misalignment - the new structure means that we can actually simplify the positioning a lot - simply make the buttons position:relative and then the flash container, since it is now inside those elements, position:absolute top:0 left:0 and only the height and width need be changed - 10721</li>
	<li>Fix - examples: The DataTables web-site needs the formatting of the CSS includes to be @import rather than <link> in order to add its own styling.</li>
</ul>
    <p><a href="/releases/TableTools-2.1.3.zip">Download TableTools 2.1.3</a></p>  ]]></description>
	<pubDate>Thu, 09 Aug 2012 08:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#125</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.9.2 released</title>
	<description><![CDATA[<p>It has been a little over two months since the last DataTables release, and this latest update includes a number of bug fixes for issues that have been found over this period. Also included in this release are updated versions of TableTools, Scroller, ColVis and ColReorder. There are no new features in this version of DataTables, instead focusing on addressing knowing issues and paving the way for 1.10 development to begin.</p><p>Release notes for DataTables 1.9.2:</p><ul>
	<li>Updated: Allow custom JUI header and footer classes to be customised using oClasses.sJUIHeader and oClasses.sJUIFooter</li>
	<li>Update - examples: Use $ and fnUpdate in the index column example - 9840</li>
	<li>Update - examples: Update XRegExp to 1.5.1 with IE8 fix</li>
</ul>
<ul>
	<li>Fix: Regex filter escaping wasn't escaping the dash ('-') character believe it or not. That's been there since very early DataTables!</li>
	<li>Fix: When setting deeply nested object properties, where the parent object doesn't yet exist, don't just silently fail. Since we are setting a value, we are at liberty to create the parent object and then set the value - this now does so.</li>
	<li>Fix: fnDeleteRow could cause the page to drop back by one - 9505</li>
	<li>Fix: Calling fnClose in fnPreDrawCallback would result in an error - 9702</li>
	<li>Fix - API: $ method, when used with defered rendering, when all rows have not been rendered, results in jQUery trying to perform a selector on 'null' which throws an error. Now check for the tr having being created before adding it to the array to pass to jQuery - 8862</li>
	<li>Fix - docs: Add jqXHR saving to fnServerData example</li>
	<li>Fix - docs: JSDoc syntax errors which were picked up by JSDoc Toolkit</li>
	<li>Fix - docs: fnStateLoad example has a spare parameter (although not in the parameters list). Removed</li>
	<li>Fix - docs: sDom default had an error in it for the closing bracket</li>
	<li>Fix - examples: Security updates to the server-side processing demo scripts from Chris Wright - specifically no MySQL error strings are shown to the end user.</li>
	<li>Fix - examples: The global filter in the example PHP scripts wasn't taking into account the bSearchable_{i} flag - it was only being checked on individual column filtering - 8949</li>
	<li>Fix - examples: Remove debug code</li>
</ul>
    <p><a href="/releases/DataTables-1.9.2.zip">Download DataTables 1.9.2</a></p>  ]]></description>
	<pubDate>Fri, 22 Jun 2012 09:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#124</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.6 released</title>
	<description><![CDATA[<p>A maintenance release for ColReorder that addresses a number of bugs that were present in the previous release.</p><p>Release notes for ColReorder 1.0.6:</p><ul>
	<li>Update: Pass the iFrom and iTo parameters in the 'column-reorder' event so the handler has all the information about the reshuffle</li>
</ul>
<ul>
	<li>Fix: Allow mousedown events to bubble - 9604</li>
	<li>Fix: Add column-reorder event which is fired to tell other plug-ins what is going on. This update, if used with ColVis requires ColVis 1.0.8.dev or newer.</li>
	<li>Fix: Debug message for column reorder on init was wrong - 8948</li>
	<li>Fix examples: Col reorder demo now required 1.8+</li>
	<li>Fix examples: After DataTables 1.8, bSortCellsTop is required to use the top cell</li>
	<li>Fix examples: sDom in sample code was incorrect - 8402</li>
</ul>
    <p><a href="/releases/ColReorder-1.0.6.zip">Download ColReorder 1.0.6</a></p>  ]]></description>
	<pubDate>Thu, 21 Jun 2012 17:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#123</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColVis 1.0.8 released</title>
	<description><![CDATA[<p>A minor maintenance release for ColVis that addresses a few bugs, specifically when interesting with ColReorder and the restore button.</p><p>Release notes for ColVis 1.0.8:</p><ul>
	<li>Fix: Restore button, show all and scrolling show/hide weren't allowing DataTables to recalculate the column widths</li>
	<li>Fix: The restore column indexes need to be updated when working with ColReorder</li>
	<li>Fix: ColReorder interaction - update to use the new ColReorder column-reorder event. Using this we update the exclude list (which is the motivation for ad</li>
</ul>    <p><a href="/releases/ColVis-1.0.8.zip">Download ColVis 1.0.8</a></p>  ]]></description>
	<pubDate>Thu, 21 Jun 2012 17:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#122</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>Scroller 1.1.0 released</title>
	<description><![CDATA[<p>Since its introduction, Scroller has proven to be very useful for rendering large data sets with the minimum of overhead on the client-side due to its virtual scrolling implementation. This v1.1 release of Scroller focuses on improving the experience for the end user, as well as addressing a number of bugs found in the 1.0.x series. Specifically Scroller now pre-buffers a much larger number of rows for scrolling, reducing the number of redraws required - and you can control this explicitly with the new "displayBuffer" parameter. Also in v1.1 is better support for iOS devices, in particular showing a "Loading" message if the user scrolls past the current buffer - which can also be useful when using Scroller with server-side processing.</p><p>Release notes for Scroller 1.1.0:</p><ul>
	<li>New - init option: displayBuffer - Allows the developer to specify the amount of row buffering that is used by Scroller. THe old default was 3, but this can now be dynamically set and is now defult 9 giving a smoother display on mobile devices.</li>
	<li>New - init option: boundaryScale - Inform Scroller where it should go and get new records when it passes the fetch boundary points (the default is 0.5, and you probably just want to keep it as this, but it is available if needed!).</li>
	<li>New - init option: loadingIndicator - Tell Scroller if it should show the loading text in the background or not</li>
	<li>New: Scroller will show a "Loading..." element behind the table, telling the end user what is going on, if they are using, for example, a mobile device</li>
</ul>
<ul>
	<li>Updated: Requirement on DataTables 1.9</li>
	<li>Updated: Change Scroller.js name to dataTables.scroller.js to be consistent with other DataTables extras</li>
	<li>Updated: Attached Scroller to $.fn.dataTable.Scroller - again to be consistent with other DataTables extras</li>
</ul>
<ul>
	<li>Fix: Based on pull request #5 this change makes the automatic row height calculation a better approximation of the row height that is used in DataTables, since we apply more closely aligned markup - specifically adding the scrolling div elements, incase they have styles attached to them. Also using outerHeight rather than the inner-height (height()) to account for padding etc.</li>
	<li>Fix: use sScrollBody class name from options rather than hard-coding. From pull request #7.</li>
	<li>Fix: Manually passed in row heights were not being correctly used due to a settings variable being incorrectly set - 10131</li>
	<li>Fix: Scroller would redraw the table incorrectly after a sort or a filter has reset the paging display - use the bFiltered and bSorted flags to stop that from occuring</li>
	<li>Fix: Update state saving for DataTables 1.9</li>
	<li>Fix - docs: Examples had error in the initialisation - missing comma</li>
	<li>Fix - docs: Documentation was somewhat broken - 9549</li>
	<li>Fix - docs: Documentaiton should refer to 1.9 rather than 1.8 due to the requirement change</li>
</ul>    <p><a href="/releases/Scroller-1.1.0.zip">Download Scroller 1.1.0</a></p>  ]]></description>
	<pubDate>Thu, 21 Jun 2012 16:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#121</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.1.2 released</title>
	<description><![CDATA[<p>TableTools 2.1.1 had a problem with the buttons that were used and how they combined with the Flash buttons - specifically the click event was being swallowed by the button tag, and thus Flash export / copy commands were not working. This is resolved in this release by making use of the TableTools option to change the button tag to an A (link) tag. This allows the Flash element to be correctly embedded in the link and used as required, while still allowing all of the features of TableTools 2.1. It is worth nothing however that you may need to update your CSS to take account of this change since A tags are used rather than BUTTONs.</p><p>Release notes for TableTools 2.1.2:</p><ul>
	<li>New: fnCellRender now passed the TR element and the data index for the row.</li>
</ul>
<ul>
	<li>Updated: <A> tags also now included in the button CSS, so these tags can readily be used.</li>
	<li>Updated: Update the ThemeRoller support CSS file to take account of the fact that we are using A tags now</li>
</ul>
<ul>
	<li>Fix: Issues with flash buttons and IE due to the change in 2.1.0 which updated the flash element to be inside the button tags. In IE this results in the mouse[up|down] and click events being ignored (although double click does appear to get through), but the mouse[over|out] events do get registered - most frustrating. This is only a problem in IE with buttons, no other browser appears to have this issue, nor does IE show it using divs - however, buttons are the right tags to use here, so I've gone for a middle ground - in IE (user agent detected - sorry :-( - can't see a better way of doing it) the buttons are actually <div>s while in other browsers <button>s are used. This allows everything to work as expected - and the new abilities to set a default button tag make this very easy - 5038.</li>
	<li>Fix: Firefox also has the same problem with an embed element in BUTTONs as IE - changing the default tag to be an A tag (div might be better for backwards compatibility with old TableTools CSS, but it is semantically meaningless).</li>
	<li>Fix: When deselecting rows, check that the row exists still when passing it back to the select event dispatcher (can happen when deleting the rows).</li>
	<li>Fix: bSelectedOnly was failing after the update to how the selection is done - this addresses the issue and tidies the logic up a good bit. It also allows this option to work correctly with deferred rendering, as the rest of the selection options do now.</li>
	<li>Fix: Remove Flash border in Firefox</li>
	<li>Fix: Correct number of arguments for event callback functions 'addCallbacks' - merge pull request 14.</li>
</ul>
    <p><a href="/releases/TableTools-2.1.2.zip">Download TableTools 2.1.2</a></p>  ]]></description>
	<pubDate>Wed, 20 Jun 2012 16:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#120</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.1.1 released</title>
	<description><![CDATA[<p>Hot on the heals of v2.1.0 of TableTools, this update includes an important fix for the selection button options, which could cause an error in 2.1.0. However, of even more interest is that the update sees a significant change to the internals of how row selection works - it is now much cleaner, smaller and faster! With the update row selection will fully work with deferred rendering now, and also fnSelect and fnDeselect can take jQuery objects of TR nodes to select, not just single nodes.</p><p>Release notes for TableTools 2.1.1:</p><ul>
	<li>New: Rewrite how selection of rows is handled - rather than TableTools keeping an array of nodes, it adds the _DTTT_selected attribute to the DataTables aoData array. This means that TableTools row selection will now work correctly with deferred rendering in DataTables. The resulting code is smaller, faster and easier to maintain :-).</li>
	<li>New: fnSelect and fnDeselect now accept jQuery objects with TR nodes and arrays of TR nodes as well as individual TR nodes.</li>
	<li>New: bOpenRows option for buttons - effects any command which exports the table as data (i.e. the file saving options) and allows the "details" rows (from fnOpen) to be included in the export. This is disabled by default, but can readily be enabled using the new option.</li>
	<li>Fix: class reference in the buttons had a missing 's' resulting in an error</li>
</ul>    <p><a href="/releases/TableTools-2.1.1.zip">Download TableTools 2.1.1</a></p>  ]]></description>
	<pubDate>Tue, 12 Jun 2012 15:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#119</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.1.0 released</title>
	<description><![CDATA[<p>It has been a while since the last significant update to TableTools - but TableTools is playing and increasingly important part in the DataTables suite, and that role will become increasingly important in future. This is effectively an interim release, including new goodies such as complete control of the tags and classes used by TableTools, smaller code size and a Twitter Bootstrap integration example (along with a few fixes and other minor improvements). v3 of TableTools is on the roadmap and will be focusing on improving the TableTools code base further and ensure the file size is as small as possible.</p><p>Release notes for TableTools 2.1.0:</p>

<ul>
	<li>New: GitHub issue #2 - Add nicer styling on copy. The print view message has been generalised into fnInfo which will let any message be shown</li>
	<li>New: The HTML tags that TableTools uses for buttons can now be specified using the oTags[...] options - the container, button and button liner elements can all be customised, allowing complete control over hte HTML. This is really useful for using UL/LI lists for the buttons if required by your styling.</li>
	<li>New: Twitter bootstrap integration example</li>
	<li>New: Full support for the :hover pseudo class, rather than using the postfixed "_hover" string. This makes hover styling much more intuative to web-developers. The downside to this (and why it wasn't done before) is that the :hover state doesn't propagate under the Flash movie in IE6/7. IE8+ and other browsers are file, and I think its time to move on from 6/7 - since the interface needed for them is so uninutative. TableTools will still work just fine in IE6/7, but the hover styling will not be shown.</li>
	<li>New: fnPrint API method - programmatically control the print view. fnPrint accepts two optional parameters - the first, a boolean, tells the funciton if it show show or hide the print view, and the second is a configuration object for the print view - matching the button.</li>
	<li>New: Classes override - all classes that are used by TableTools are now contained in the TableTools.classes object and thus can be overriden as required. The jQuery UI support is continued by having a classes_themeroller object which contains the required overrides - very much like how DataTables works.</li>
<ul>
</ul>
	<li>Update: Drop the 'print' button type, replacing it with a text button where the print function is called from fnClick - this uses the new API method since it is public.</li>
	<li>Update: Tidy up the end event handler for the print function</li>
	<li>Update: Add the Bootstrap example link into the examples</li>
	<li>Update: Smaller code size - use a base button defination and extend that for each button, allowing TableTools to be a good bit smaller</li>
	<li>Update: The Flash movie is now a child of the button element - again moving on from IE6/7 allows this change, and makes everything much more sensible.</li>
	<li>Update: Use instanceof to check that new instance is created</li>
	<li>Update: Styling improvements for the button collections</li>
<ul>
</ul>
	<li>Fix: Flash buttons weren't sized correctly in the collections due to a change in 2.0.3 - 9503</li>
	<li>Fix: Collection button shouldn't have a border on it</li>
	<li>Fix - examples: Code change for the path as well</li>
	<li>Fix - examples: SWF path was wrong on include</li>
</ul>    <p><a href="/releases/TableTools-2.1.0.zip">Download TableTools 2.1.0</a></p>  ]]></description>
	<pubDate>Wed, 06 Jun 2012 16:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#118</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.9.1 released</title>
	<description><![CDATA[<p>It has now been over two months since the release of DataTables 1.9.0 and its now time for an update to address the issues that have been shaken out since that major release, and also introduce a couple of new features and updates to round the distribution off. In terms on new features, the most visible are three new static API methods (fnTables, fnIsDataTable and fnVersionCheck), which can be access through $.fn.dataTable.{function}, and provide the ability to get the DataTables initialised on the page, check is a table is available and perform a compatibility check. Also new in this release is the ability to specify if you want TD or TH cells to be created for cells in a column, which can be useful for accessibility. There are also a good few updates and bug fixes, all of which are in the release notes below.</p><p>This package also includes updates for the extras: TableTools 2.0.3, Scroller 1.0.2, FixedHeader 2.0.6 and FixedColumns 2.0.3</p><p>Release notes for DataTables 1.9.1:</p><ul>
	<li>New - API: Static API method - fnVersionCheck same as the version check that is already available as an instance method, but here available as a static API method attached to $.fn.dataTable</li>
	<li>New - API: Static API method - fnIsDataTable - check if a TABLE node is a DataTable or not</li>
	<li>New - API: Static API method - fnTables - get the DataTables that are initialised on the table (optionally limit to just the visible tables)</li>
	<li>New - Initialisation: Column option "sCellType" - allows you to create TD (default) or TH cells for a column. Useful for creating row headings in the TBODY.</li>
	<li>New - Initialisation: The _START_, _END_, _MAX_ and _TOTAL_ macros for the information language strings can now be used in any info string, rather than being limited to just the ones noted in the documentation - a new internal function called _fnInfoMacros is introduced to allow this to work - 9211</li>
	<li>New - Initialisation: iDeferLoading can now also be an array allowing the developer to specify the number of records before and after filtering for the information display - 7936</li>
	<li>New - Core: "destroy" event - when the table is destroyed the destroy event is now triggered. This is very similar to how aoDestroyCallback worked before, but this brings the implementation into line with the newer callback/events mechanism used in DataTable</li>
</ul>
<ul>
	<li>Update - API: Bring the mDataProp as a function functionality to parity for Ajax / JS sourced data and DOM sourced data. Previously DOM sourced data would call the 'set' option for the mDataProp function but Ajax/JS sourced data would not, resulting in the set option never being called for those table types, which is a total bummer when you want to do some formatting in the set option. So now it is called. I was slightly conerned about the performance hit since this means a couple of extra function calls for each cell, but its all in JS, no DOM and I can see virtally no difference with about 50'000 rows and 5 columns of data, so acceptable for the benefits.</li>
	<li>Update - Docs: Add documentation note on the fact that mDataProp as a function can get a 'type' of undefined when raw data is expected to be returned</li>
	<li>Update - CSS: Add -webkit-overflow-scrolling: touch; to the scrolling container to provide much improved scrolling interaction in browsers that support that (iOS5, and possibly new Android?)</li>
	<li>Update - examples: Update the text for the two jEditable examples</li>
	<li>Update - Examples: Tabs and scrolling updated to use the new static fnTables method</li>
	<li>Update - Examples: When the node to show the XHR return is not available, don't try to use it</li>
	<li>Update - Examples: Update demo SSP PHP code</li>
	<li>Update - Examples: Scrolling paging plug-in now uses A tags (based on the updated two button paging for 1.9), has full accessibility and jQuery UI support</li>
	<li>Update - Examples: Update the JSONP and pipelining examples to store the returned jqXHR object in the settings object. Helpful for the debugger so we can see what the sever says</li>
	<li>Update - Core: When throwing an error, throw a "new Error()" so we can get a bit more information about the error</li>
	<li>Update - Core: When using custom sort data types, if the returned array is not of the required length (aoData.length), then an error is thrown</li>
	<li>Update - Core: Remove unused variables from fnUpdate</li>
	<li>Update - Core: Remove unused variables from fnSetColumnVis</li>
</ul>
<ul>
	<li>Fix - API: The parameter for fnDraw was inverted by mistake in the 1.9.0 release - 7825</li>
	<li>Fix - Performance: Don't extend the passed in data a second time - its a waste of time</li>
	<li>Fix - Examples: Remove link to custom column ordering - now recommended mDataProp</li>
	<li>Fix - Examples: Single row selection could have a JS error if deleting a row when no rows selected</li>
	<li>Fix - Docs: Link to sDom from bFilter was incorrect</li>
	<li>Fix - Docs: fnStateLoad documentation referred to fnStateSave instead of itself</li>
	<li>Fix - Docs: Parameter for filtering options in state saving examples should be oSearch, not oFilter - 8408</li>
	<li>Fix - Docs: fnStateSaveParams referred to fnStateLoadParams in the example code - 8408</li>
	<li>Fix - Docs: 8400 - mDataProp when null incorrectly suggested that sDefaultContent was an empty string. It is in fact null. Also typo fixes.</li>
	<li>Fix - Docs: Show oSettings parameter in fnDrawCallback example - 9067</li>
	<li>Fix - Docs: Typos</li>
	<li>Fix - Docs: fnSort documentation updated to indicate column sorting - 9094</li>
	<li>Fix - Unit test: With the change to allow info macros in any of the strings the unit tests need updating to reflect this</li>
	<li>Fix - Unit test: Number of errors in this test</li>
	<li>Fix - Unit test: Async behaviour could cause test to fail since the init might not have been complete (amazing that it was passing all this time - faster computers and faster JS engines now causing it to fail!)</li>
	<li>Fix - Core: IE8 bug where an empty string read from a DOM input element is JSON encoded as '"null"' - absolutely mental! See this blog post for more information http://blogs.msdn.com/b/jscript/archive/2009/06/23/serializing-the-value-of-empty-dom-elements-using-native-json-in-ie8.aspx .</li>
	<li>Fix - Core: When mDataProp is given as a function, an error in getting the data would be rather ugly - 8400</li>
	<li>Fix - Core: Settings object model was missing the nScrollHead and nScrollFoot properties from the documentation</li>
	<li>Fix - Core: Captions which were positioned using caption-side:bottom (CSS) would be positioned incorrectly if using a scrolling table. Need to work around webkit bug 83867 to address this and add an empty tfoot element if one is not given - 2022</li>
	<li>Fix - Core: When scrolling and row height collapse was enabled, it was possible that the table column width applied would be too small due to the fact that a scrollbar would be shown for a fraction of a second, due to the height of the scroll body container enforced by the scroll collapse. Fix is to take into account the header height before the width calculation is done</li>
	<li>Fix - Core: Scrollbody height in IE7- - use offsetHeight consistently - 9424</li>
	<li>Fix - Core: IE6/7 return an empty string for getAttribute('id') when there is no ID attribute, rather than null. As such tables were not automatically being given an ID when they didn't have one, which created a situation where the settings object for a table could be 'lost' in IE6/7. Now check for empty string when checking the table ID.</li>
	<li>Fix - Core: IE6/7 when scrolling is enabled could loose the sorting event due to the way cloned nodes work in those browsers. Note that this was introduced after 1.9.0. Related - jQuery bug 10437 - http://bugs.jquery.com/ticket/10437</li>
	<li>Fix - Core: Language backwards compatibility could override developer defined defaults - 9267</li>
	<li>Fix - Core: When -1 is selected for the display length (show all) the full numbers paging control didn't show page '1' - 9170</li>
	<li>Fix - Core: afnSortData functions were not being executed with the DataTables instance's scope</li>
	<li>Fix - Core: If sType for a column is html and the data is null, then _fnDataToSearch could throw an error - 8987</li>
	<li>Fix - Core: Strip HTML from the aria-label tag for the sorting headers</li>
	<li>Fix - Core: Use border collapse in JUI stylesheet - 8931</li>
	<li>Fix - Core: The fnServerData error function can use the internal logging function now a days - make it do so - 8763</li>
	<li>Fix - Core: The sStripeOdd / sStripeEven options for the class objects were not being applied to the table. The fix is to set the default for asStripeClasses to be null, and then if null is found there, then the user hasn't applied a default, nor have they overridden the default, therefore we can use the classes from the class objects - 8770.</li>
	<li>Fix - Core: When scrolling is enabled the initial width of the header was being set to 150% which was a bit random and could result in the header flashing its display in the wrong place when loading. The fix is to use 100% unless x-scrolling is being forced, at which point it needs to match the inner table - 8332</li>
	<li>Fix - Core: Feature match the server-side sorting to the client-side sorting for what information is sent to the server for sorting. Previously aDataSort was not honoured - https://twitter.com/#!/naomiaro/status/172397914239414272</li>
	<li>Fix - Core: When sorting non-string data as a string (type to type detection) then DataTables 1.9 would automatically convert the non-string data to an empty string so it can be sorted. This can result in unexpected ordering in the table. The fix is to check for a toString() function that is available for the data and if it is there, then use it (great for numeric data, dates etc), otherwise the empty string is used (null, methods without toString). This brings 1.9 back into line with how 1.8 behaved - 8549</li>
	<li>Fix - Core: When updating the filtering input control, we would just match on INPUT elements, so if the developer had appended an input button to the filter wrapper, that value would also be changed - 8537. Now a reference to the input element is stored and used to update the input value (this method means we don't need to add another class option, and developers can change to 'type=search' if they wish).</li>
	<li>Fix - Core: IE8 doesn't like the console check in logging - make it object based on window - 8517</li>
	<li>Fix - Core: When scrolling the column matching would remove any nested THEAD and TFOOT elements in the table - 8423</li>
	<li>Fix - Core: x-scrolling to the end of a table would cause the header and the columns to go out of alignment due to the header not being able to scroll as far as was needed (this was caused by the changes in 876a75f) - 8332.</li>
	<li>Fix - Core: Table could continually expand when x-scrolling was enabled. This was partly addressed in 6776, but the fix was incomplete as it would still occur on Safari Mac (possibly other browsers as well). This fix is very closely related to 8332 (hence committing together as they are interdependent). Now use padding right on the header/footer wrapper to provide the overflow scroll ability, but only add it when a scrollbar is present - otherwise the width gets added on and we get the forever expanding table.</li>
	<li>Fix - Core: Unit tests - New tests for scrolling to ensure 6776 and 8332 don't occur again</li>
	<li>Fix - Core: When fnPreDrawCallback is used to cancel a draw the processing display would remain active - this should not be the case as DataTables is now finished with its processing - 8371</li>
	<li>Fix - Core: asStripClasses if given was being overruled by the default given for asStripeClasses - 8332</li>
	<li>Fix - Core: The extend function was only extending properties that existed on the original source object, not properties that only existed on the extender</li>
	<li>Fix - Core: When using full numbers pagination in IE and clicking upon one of the numbers in the paging control, a Javascript error would occur due to trying to blur an element that was no longer in the DOM</li>
</ul>    <p><a href="/releases/DataTables-1.9.1.zip">Download DataTables 1.9.1</a></p>  ]]></description>
	<pubDate>Sun, 15 Apr 2012 19:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#117</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.0.3 released</title>
	<description><![CDATA[<p>Although this is a minor release of TableTools, you will notice a visible change - the button styles have been updated to look a lot cleaner! By default now the export buttons do not have icons assigned to them, but the CSS required for this is in the CSS source file and simply needs to be commented back in if you do want them. The CSS as a whole has been reworked to be more readable and easier to modify (adding an 'inset' to the box-shadow used, for example, can provide a great effect).</p><p>The other major change is the file name change from 'cvs' to 'csv' in the SWF file names - this was a typo in previous released :-(.</p><p>Release notes for TableTools 2.0.3:</p><ul>
	<li>Update: Update the styling of the default buttons to be a good deal more attractive. The images from the export buttons are gone, but can easily be commented back in.</li>
</ul>
<ul>
	<li>Fix: SWF file name should be csv not cvs - 9150</li>
	<li>Fix: It is possible that a table could be destroyed before the Flash is ready for attachment - so need to take that into account - 8800</li>
	<li>Fix: When Using TableTools on a page which already has ZeroClipboard on it we need to make sure we use our TableTools version - so the ZeroClipboard object here is now called ZeroClipboard_TableTools</li>
	<li>Fix: Update the row select styles to use the new table.dataTable selector to give them priority over the odd/even classes</li>
	<li>Fix: When a collection is created insert the submenu into the DOM. When the menu is hidden it is just set to display none, but before clicking the collection we'd have no way of getting the collection menu.</li>
	<li>Fix: When there is no footer present TableTools tried to include it in the output anyway. No JS error, just incorrect row count</li>
	<li>Fix: Use arrays to gather the data from the table rather than string concatenation - massively faster in IE6/7</li>
	<li>Fix: When bSelectedOnly was false (as it is by default), then no rows were copied - it should be all of them - 8357</li>
</ul>
    <p><a href="/releases/TableTools-2.0.3.zip">Download TableTools 2.0.3</a></p>  ]]></description>
	<pubDate>Sun, 15 Apr 2012 19:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#116</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>Scroller 1.0.2 released</title>
	<description><![CDATA[<p>A small update to Scroller, but brings a couple of important fixes for when working with Ajax and other DataTables plug-ins such as FixedColumns.</p><p>Release notes for Scroller 1.0.2:</p><ul>
	<li>Fix: Allow the table to complete its initialisation before we activate Scroller</li>
	<li>Fix: Scroller instance VERSION was being written to the wrong property...</li>
	<li>Fix: Don't redraw the table when initialised as the table is going to be drawn anyway. This error was most visible with server-side processing where it fired off two XHRs - 8367</li>
</ul>    <p><a href="/releases/Scroller-1.0.2.zip">Download Scroller 1.0.2</a></p>  ]]></description>
	<pubDate>Sun, 15 Apr 2012 18:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#115</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 2.0.6 released</title>
	<description><![CDATA[<p>A minor update to FixedHeader, but brings with it two new features: 1. the ability to specify a top offset for where the fixed header should become fixed - useful for when working with position:fixed elements, a la Twitter Bootstrap, and 2. the ability to work with multiple TBODY elements (note that this applied to FixedHeader's use without DataTables, since DataTables doesn't not itself currently support multiple TBODY elements.</p><p>Release notes for FixedHeader 2.0.6:</p><ul>
	<li>New: offsetTop initialisation option that will cause the fixed header to be locked into position by the number of pixels given by this option. Useful for working with Bootstrap where the toolbar is always floating at the top of the page</li>
	<li>New: Handle tables with multiple tbody elements</li>
</ul>
<ul>
	<li>Fix: Calculating the scrolling position termination logic was inverted - corrected here</li>
	<li>Fix: When working with multiple row headers FixedHeaders was removing TH cells where it shouldn't have been resulting in column misalignment</li>
	<li>Fix: Like all other DataTables plug-ins FixedHeader should carry a version string</li>
	<li>Fix - examples: for some bonkers reason the examples were all trying to pull in the TableTools stylesheet, which really isn't needed...</li>
</ul>    <p><a href="/releases/FixedHeader.2.0.6.zip">Download FixedHeader 2.0.6</a></p>  ]]></description>
	<pubDate>Sun, 15 Apr 2012 18:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#114</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedColumns 2.0.3 released</title>
	<description><![CDATA[<p>Bug fix release for FixedColumns, nothing too exiting, unless you had hit one of the bugs noted in the release notes below!</p><p>Release notes for FixedColumns 2.0.3:</p><ul>
	<li>Fix: Change to how the column widths are matched - apply the width from the DataTable calculation equally to both the header and body. Overcomes cross browser issues with width and outerWidth</li>
	<li>Fix: Column width matching should use outerWidth</li>
	<li>Fix: the column width could be applied incorrectly when using multiple fixed columns - the problem was that although the clone had a thead element in it, there were no cells in it - hence the browser was getting confused that the body had two columns while the header had none and it would pick to spread the column widths equally. The fix is to put the header cells in, just like how DataTables does it</li>
	<li>Fix: When the header (or footer) has multiple rows in it, or col/rowspan, the class copy could copy to the wrong cell - 2815 - the fix is to use the DataTables detect header function and get a layout array with 1:1 mapping between the fixed column and the real DataTable and the copy the classes across.</li>
	<li>Example - fix: Column indexes were updating the visible column in the table, where as we only want to update the first column data index (i.e. the hidden column that is it he fixed column) - 8499</li>
</ul>    <p><a href="/releases/FixedColumns-2.0.3.zip">Download FixedColumns 2.0.3</a></p>  ]]></description>
	<pubDate>Sun, 15 Apr 2012 18:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#113</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.9.0 released</title>
	<description><![CDATA[<p>I'm absolutely delighted to release DataTables 1.9.0! This is a very significant step forward for the library as a whole over the previous releases with a huge range of improvements, new features and development options. Please see the upgrade notes for full information: <a href="http://datatables.net/new/1.9">http://datatables.net/new/1.9</a>.</p><p>In terms of differences from 1.9.0 beta 3, the biggest change is the new underscore function, which is very similar to the $ function, but used for getting data from the table based on the given selector. There are a number of fixes as well, mainly documentation related, but a few other important bug fixes for the 1.9.0 release (see the release notes below).</p><p>Release notes for DataTables 1.9.0:</p><ul>
	<li>New: API: fnGetData now also allows TD/TH nodes to be passed in and DataTables will figure out the data for the cell, returning that - easier than calculating the column index yourself. So you can now get the whole table's data, a row's data or an individual cell's data from the fnGetData function (you could get the cell data before, but you would need to use fnGetPosition).</li>
	<li>New: API: Underscore function updated to use fnGetData rather than its internal function calls. Although slightly more expensive in computation terms, it extends the capacibabites of the underscore function greatly, allowing TD nodes to be the result of the selector as well as TR nodes. So now you can get a column of data with something like: $('#example').dataTable()._('td:nth-child(4)') . Cool :-)</li>
</ul>
<ul>
	<li>Fix: Docs: oSearch should be a namespace</li>
	<li>Fix: Docs: fnVersion check should be marked with @type function</li>
	<li>Fix: Docs: Typo</li>
	<li>Fix: When mDataProp was used to get a nested object, but a parent object didn't exist it would throw an unrecoverable error. With this change the behaviour matches that of single level data whereby if data cannot be found, at any level, then undefined is returned from the data get object. This means that if sDefaultContent is defined then that will be used instead, and if not defined an error will still be given (although this one under DataTables' control).</li>
	<li>Fix: Remove characters 0x80-0xFF. I had a new non-ASCII characters in by mistake and the PHP JSON processor objects to these characters when parsing the output from the JSDoc debug output.</li>
	<li>Fix: With scrolling enabled, adding the scrollbar width to the header / footer inner container elements could cause the table to resize incorrectly on the following draw (and this error was cumulative). Fix is not to adjust the inner element for the scrollbar width - makes no difference to the table draw. It is possible that if you've styled this element you might need to take this change into account, but by default DataTables will style the parent (scrollHead) so no change is required (regardless of jQuery UI theming enablement) - 6776.</li>
	<li>Fix: The calculation to detect if the scroll bar would be shown in IE6/7 was incorrect - it was calculating the height of the entire table, rather than just the body of the table (i.e. body + header + footer) which caused the "correct" for the scrollbar to be incorrectly applied to small tables.</li>
	<li>Fix: Multiple tables were going haywire on initialisation due to the self reference - 8233</li>
</ul>
<ul>
	<li>Docs: The options (properties) for the DataTables initialisation object that have a default function need an @member tag otherwise they are documented as methods, which they are not.</li>
	<li>Docs: Add a "dtopt" tag to options that should be documented on the DataTables main site. This allows that documentation to be automatically generated from the source as well as the auto gen developer documentation.</li>
	<li>Docs: Fix a few small issues with some of the documentation comments</li>
	<li>Docs: API: Underscore function documentation updated to take account of allowing TH/TD cells in the selector</li>
</ul>
<ul>
	<li>Examples: Fix: SyntaxHighlighter was having problems with copy and paste in webkit browsers - fix pushed to syntax highlighter here: https://github.com/alexgorbatchev/SyntaxHighlighter/pull/86 - this is the commit of that fix to the local copy</li>
</ul>
<ul>
	<li>Dev: Code size - also in fnSetColumnVis reduce code size with aoData references in the same way as we do for aoColumns. Smaller size and more consistency. All good.</li>
	<li>Dev: Get the library size back under the target 70000 bytes. Its a bit of a cheap shoot this one, but every little helps!</li>
	<li>Dev: Remove the oSettings 'get' in _ - don't need it anymore with the call to fnGetData</li>
	<li>Dev: New internal function called _fnNodeToColumnIndex, adapted from fnGetPosition for reuse.</li>
	<li>Dev: Removed the "fast lookup" function for data get and set as they weren't really that useful in terms of speed and would require more code to be added to copy with the above change to the error handling for missing objects. Smaller code and virtually no difference in speed. Sold.</li>
	<li>Dev: Trivial modification to bring 1.9.0 back under the target size of 70000 btyes (was only 4 out). Simply reference the previous search object to a local variable so the compressor can compress more</li>
</ul>
    <p><a href="/releases/DataTables-1.9.0.zip">Download DataTables 1.9.0</a></p>  ]]></description>
	<pubDate>Wed, 01 Feb 2012 15:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#112</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.9.0 beta 3 released</title>
	<description><![CDATA[<p>This is likely the last beta before 1.9.0 final is released. It really sees a rounding off of the features that 1.9 introduces, rather than anything hugely new. Along side a few small fixes and documentation tidy ups, the two main changes in this new beta are the new underscore function (_) which is the compliment of the $ function - rather than returning a jQuery object from the selector, the underscore function returns the data for the rows that were selected b the selector. The function takes the same options as the $ function.</p><p>The other significant change is in using mDataProp as a function. This is now a huge amount more flexible, and will be the topic of a blog post in the near future.</p><p>Release notes for DataTables 1.9.0 beta 3:</p><ul>
	<li>New: API method: _ - the underscore function is the compliment to the $ function introduced early in the 1.9 development cycle. While working with DataTables and the $ I've often wanted the data for the nodes that I'm working with, which means a call to fnGetData and an inner look - not itself bad, but it means an area loop in the external code - so this underscore function is basically the same as $, but rathe rhtan returning an jQuery object of nodes it will return an array of the data source objects for the matched TR elements (important to note that - the selector should resolve TR elements only, other elements don't have DataTables controlled data, and thus will be null in the returned array)</li>
</ul>
<ul>
	<li>Update: mDataProp update to make it more versitile as a function and fix the settings of data with mDataProp. When mDataProp is given as a function, the function is now called with a 'type' of 'set', which the developer using mDataProp must used to store the value that if given (otherwise DOM read values would not be stored!).</li>
	<li>Update: mDataProp documentation - example of using mDataProp as a function and clearer information about the options for mDataProp</li>
</ul>
<ul>
	<li>Fix: aoPreSearchCols can be given as null if you want to deinfe multiple columns - doing so would have resulted in an error. Fixed (unit test)</li>
	<li>Fix: The last change for fnAddData was incorrect - it would mean that objects couldn't be added...</li>
	<li>Fix: Documentation - noted that there were three parameters passed to mDataProp as a function, but only documented two. Add documentation for the third...</li>
</ul>
<ul>
	<li>Dev: New: _DT_RowIndex is a private parameter that is attached to all TR elements in the table now. This allows fast reverse mapping from the row index to the aoData entry (typically this will be used for getting _aData). Before we would have to loop over all rows which could be very slow, but this reverse mapping allows several new options for optimisations and future enhancements.</li>
	<li>Dev: Updated: _fnNodeToDataIndex can be made _so_ much faster with the new _DT_RowIndex prviate parameter - so this commit does so :-)</li>
	<li>Dev: Updated: All fnRender calls have been put into a single point - code reuse...</li>
</ul>
<ul>
	<li>Removed: Column reordering example using sName - it is much better to use mDataProp for this kind of thing now and column reordering is depricated in the 1.9 release of DataTables, so remove the example showing how it might be done to stop new users using it.</li>
</ul>
    <p><a href="/releases/DataTables-1.9.0.beta.3.zip">Download DataTables 1.9.0 beta 3</a></p>  ]]></description>
	<pubDate>Wed, 25 Jan 2012 16:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#111</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.0.2 released</title>
	<description><![CDATA[<p>It has been a long time in coming this TableTools release, but it is now finally here! TableTools has been lagging a little bit behind the main DataTables releases, but this version sees full compatibility with DataTables 1.8 and newer (specifically for mDataProp). A number of bug fixes, including addressing a memory leak in IE are the main items of interest with this release, but there are also some welcome new features, mainly to do with providing more control over selected rows through the API and also data that is read front he table can now be pre-processed before export, to provide more control over what is exported (fnCellRender).</p><p>Release notes for TableTools 2.0.2:</p><ul>
	<li>New: New API method called fnGetSelectedData - this is basically the same as fnGetSelected except rather than giving an array of nodes, this function will give an array of the data source that DataTables uses for the selected rows. Save a few lines of code in the calling function :-)</li>
	<li>New: fnSelect and fnDeselect API methods which will select or deselect an individual row given to the method as the first parameter</li>
	<li>New: When hovering over a button, the default class (sButtonClass) is no longer removed from the button and then replaced with sButtonClassHover. This was proving to be a bit of a pain since you had to specify both the hover and non-hover classes everytime you wanted to assign a custom class. Instead the new behaviour is to append the hover class and leave the base class in place.</li>
	<li>New: TableTools now has a 'div' option for the buttons that are created, which will create a div rather than a 'button' tag. This is intended for use as a label or presentation spacer, although it does have the standard range of options (the same as a text button, so fnClick etc) which can be used if required.</li>
	<li>New: Add 'sortable' target for mColumns - 4637</li>
	<li>New: nContent property for the new DIV non-button elements, which is a node that will be appended to the element that is created.</li>
	<li>New: fnCellRender function for buttons which can be used to modify the data that has been read from the table. This allows pre-processing of the data before exporting it - for example stripping certain parts of the HTML or postfixing other stuff.</li>
</ul>
<ul>
	<li>Updated: When clicking on a row, check that the row is controlled by DataTables first - this can be useful for when dealing with a table which has dynamic rows inserted by callbacks - and replaces the anOpen check</li>
	<li>Updated: Now require DataTables 1.8.2 or newer</li>
	<li>Updated: The row selected and row deselected callbacks are now fired when select all and select none are used. The second parameter passed to the callback in these cases is 'null' (rather than the node of the row that was selected as is done in the single row select case)</li>
	<li>Updated: Use the same copyright license as DataTables - changing from LGPL to GPLv2 and/or BSD 3 point style. Add links to the license files - 3481</li>
</ul>
<ul>
	<li>Fix: A proper file for IE losing the callbacks when the table is initialised in a hidden element - this time without a memory leak! Its actually very simple (as it usually is when you know how...) - the Event.ACTIVATE event is called on the stage when it is made visible agian, allowing us to reattach the event listeners.</li>
	<li>Fix: Comma escaping was wrong - apparently in CSV files you don't use a backslash to esacpe the fild boundary, what you do is double up the character to escape it: http://en.wikipedia.org/wiki/Comma-separated_values</li>
	<li>Fix: When the height / width of a Flash movie is found to be 0, don't try to set the height / width, as IE will throw a JS error about the div's child nodes not existing</li>
	<li>Fix: Trim Header Column.</li>
	<li>Fix: Due to a recent change the data collection was not working if there was no row selection active.</li>
	<li>Fix: bSelectedOnly wasn't copying all rows when no rows were selected - 5249</li>
	<li>Fix: Add a destroy function for TableTools which will clean out the DOM when the host DataTable is destroyed. This stops an error occuring in IE7/8, whereby before the Flash movie was removed, but still running (not collected by the garbage collector...).</li>
	<li>Fix: CSV field boundary is now a double quote (") as per rfc4180 - 1401</li>
	<li>Fix: When using DataTables 1.8 and mDataProp TableTools would not correctly read the data source - 5346</li>
	<li>Fix: The CSS position value attached to the DTTT_container should be 'soft' CSS and not applied using Javascript to the element (which would result in being unable to override)</li>
	<li>Fix: Bit of a mix of spaces and tabs...</li>
	<li>Fix: Tooltip wasn't being added to print button</li>
	<li>Fix: fnGetMasters was returning an array of the setting objects not the instances as it should have been</li>
</ul>
<ul>
	<li>Dev: Combination of tabs and spaces in the header :-(. Fixed</li>
	<li>Dev fix: Need a hover class to be defined for the new div target</li>
	<li>Dev fix: The change to call postDeselected on deselect all has a performance hit since it was run on every row - not good. So only do it for the 'all'</li>
	<li>Dev fix: Fix a couple of daft little errors in the new fnSelect and</li>
</ul>
    <p><a href="/releases/TableTools-2.0.2.zip">Download TableTools 2.0.2</a></p>  ]]></description>
	<pubDate>Wed, 25 Jan 2012 06:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#110</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.9.0 beta 2 released</title>
	<description><![CDATA[<p>DataTables 1.9 is building up to be a really exciting release! This latest beta sees a significant change to state saving in DataTables, vastly simplifying the API for manipulating the state as you would wish or storing it where you want. There is also two new style sheets 'jquery.dataTables.css' (and it's theme roller equivalent) which provide the base framework for styling a DataTable without all the extra CSS needed for my demos. There are a number of smaller changes, bug fixes and tidy ups as well.</p><p>Release notes for DataTables 1.9.0 beta 2:</p><ul>
	<li>API: New init option: fnStateLoad.</li>
	<li>API: New init option: fnStateLoaded</li>
	<li>API: New init option: fnStateLoadParams</li>
	<li>API: New init option: fnStateSave</li>
	<li>API: New init option: fnStateSaveParams</li>
	<li>API: New init option: New init option fnCreatedRow - very similar to fnCreatedCell but in this case used for TR elements</li>
	<li>API: fnCreatedCell: now also gets the column index passed in</li>
	<li>API: fnRender: data object now also contains mDataProp along with the other information from before. There is also a second parameter passed to the function - the current value of the cell (was possible to get it from the data array, but this makes life a little easier if you want to get just that, which is the most common usage here).</li>
	<li>API: fnRowCallback: no need to return the TR element - it was a fairly pointless thing to do - if you want to replace the element then you need to do it with fnDrawCallback</li>
<ul>
</ul>
	<li>Removed: Init option: fnStateLoadCallback</li>
	<li>Removed: Init option: fnStateSaveCallback</li>
<ul>
</ul>
	<li>New: Add "cdn" "target" to the build script to create a 'cdn' directory which is suitable for CDN distribution</li>
	<li>New: Add "processing" event</li>
	<li>New: Add unit tests for fnCreatedCell and fnCreatedRow</li>
	<li>New: Allow state loading to be cancelled from the aoStateLoadParams callbacks by returning false (matches the capabilities of the old state loading methods)</li>
	<li>New: Base CSS for ThemeRoller</li>
	<li>New: Base demos using the two new stylesheets</li>
	<li>New: Basic CSS for creating a DataTable - similar to what is in the demo_table.css file but doesn't have all the bits and bobs needed for the demos (which could conflict with other elements on the page or are just wasted bandwidth). This file is suitable for distibution on a CDN. Ultimatly this should replace the majority of what is in demo_table.css (that should basically become "examples.css") and become the main file in the distribution for CSS. Will probably need a JUI version as well.</li>
	<li>New: Event - stateLoaded</li>
	<li>New: Event - stateLoadParams</li>
	<li>New: Event - stateSaveParams</li>
	<li>New: Events demo</li>
<ul>
</ul>
	<li>Performance: MUCH faster removing of DOM elements in the header and body of the table - 8060 - performance testing: http://jsperf.com/remove-detach/11</li>
	<li>Performance: there can only be 1 open row per parent TR, so quit out the loop when found - 8060</li>
<ul>
</ul>
	<li>Update: examples list with new custom events demo link</li>
	<li>Update: Initial work on updating state saving code to use objects rather than constructing a JSON string. Note that this has involved removing fnStateLoadCallback and fnStateSaveCallback which are now replaced with a much more effective setup using fnStateSaveParams, fnStateLoadParams and fnStateLoaded (blog post to come about this). Code documentation and tidy up yet required</li>
	<li>Update: Remove the title attribute from the 2 button pagination - its totally redundant now</li>
	<li>Update: Small tidy ups in the new css files</li>
	<li>Update: Update the sorting icon images. The old PNGs were really rather poor with what looked like 1bit transparency.</li>
	<li>Update: Documentation and code tidy up of the updated state saving methods.</li>
	<li>Update: Initial pass at tidying up callbacks and events in DataTables - adding _fnCallbackReg and _fnCallbackFire to provide a single point for registering and firing callbacks in a unified way. Not all callbacks yet use these methods and some callbacks need to be converted to the array method (useful for plug-in developers)</li>
	<li>Update: Minor change to fnOpen to be more flexible for jQuery input - 2488</li>
	<li>Update: Nearly all callbacks now use an array and fire an event using the use DataTables standard method for dealing with callbacks. row, header, footer, init and pre-draw callback have been added to this new method. Only aoStateSave does not use method yet. fnCookieCallback and fnInfoCallback will not use the new methods.</li>
	<li>Update: Remove the min-height on the table wrapper - it is a lot more hassle than it is worth now and just keeps getting in the way - 7971</li>
	<li>Update: Remove the sanity check for cols x rows === cells - we can't get to this code anymore due to the fnSetCellData check (that throws an error first), so this is dead code.</li>
	<li>Update: The call to _fnFilterCustom doesn't need to check if there are filters since the loop will effectively do that anyway.</li>
<ul>
</ul>
	<li>Fix: _fnGetTdNodes would error if trying to get only the first row</li>
	<li>Fix: A stored display start (iInitDisplayStart) of 0 would cause an undesired effect</li>
	<li>Fix: Backwards compatibly for fnGetData and fnGetNodes when the row (as an integer) is not available</li>
	<li>Fix: Couple of trivial optimisations for speed and size</li>
	<li>Fix: Documentation for fnStateLoad</li>
	<li>Fix: fnAddData ignoring default value of bRedraw parameter</li>
	<li>Fix: fnGetData returning all rows when trying to get row 0</li>
	<li>Fix: fnOpen - when passed a TR element (or indeed any other element) that is not part of the master table (i.e. under control of DataTables), DatTables would try to "open" the row anyway - which was wrong. So now check that the node given is a TR element under control of DataTables, otherwise silently return. This is useful for using fnOpen when bound to all TR elements in the TBODY with a live event handler (i.e the click would also occur on the opened row).</li>
	<li>Fix: fnRender unit tests need to be updated for the change to the second argument being passed</li>
	<li>Fix: IE7 issue with xregexp</li>
	<li>Fix: Ignore the CDN directory</li>
	<li>Fix: In browsers that don't define JSON then there woudl be an error thrown</li>
	<li>Fix: jEditable calculated width could cause column to resize - just force width to be 100% of the cell, rather than calculated</li>
	<li>Fix: Made a mistake when updating the conditionals for fnFilter and fnGetData when considering rows. if ( 0 ) is of course false - so passing in an integer isn't valid - need to check for undefined - 7997</li>
	<li>Fix: Modify the filtering such that client-side filtering is not done when server-side processing is enabled - its just a waste of time since hte server will do it all - 7825</li>
	<li>Fix: Remove DS_Store files</li>
	<li>Fix: Remove sorting classes from TD elements as well as TH - 7836</li>
	<li>Fix: Tabs and spaced mixed in the custom vars example</li>
	<li>Fix: The settings finder from node should really use === rather than ==...</li>
	<li>Fix: Typo in pipelining example</li>
	<li>Fix: Unable to set an sDom default if bJQueryUI:true is used</li>
	<li>Fix: When a previous search column details is defined for column 0, it would fail incorrectly. Now fixed</li>
<ul>
</ul>
	<li>Dev: For jQuery convention, call the DataTables CSS file jquery.dataTables.css (and similar for themeroller compatible file)</li>
	<li>Dev: Remove the 'row' event. On experimenting with CellCreated I've found that I'm getting around 4'500 triggers / sec with Safari 5.1, which really isn't close to fast enough (about two orders of magnitude out from what I would like) which means that a table with 2000 rows and 9 columns would see an additional overhead of about 4 seconds on initialisation - ouch!!! As such I've removed the 'row' event here and it would seriously impact larger tables. events are still extremely useful, however, I would suggest that plug-ins should use the callback arrays rather than events since it is much faster. These arrays might be developed further into DataTables' own triggering methods in future. Something to to be aware of certainly going into 1.10.</li>
<ul>
</ul>
	<li>Examples: Add the localstorage example to the links list</li>
	<li>Examples: Update row details examples to use fnIsOpen - 7758</li>
	<li>Examples: Add localstorage example</li>
<ul>    <p><a href="/releases/DataTables-1.9.0.beta.2.zip">Download DataTables 1.9.0 beta 2</a></p>  ]]></description>
	<pubDate>Mon, 16 Jan 2012 15:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#109</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>KeyTable 1.1.7 released</title>
	<description><![CDATA[<p>It has been a long time since the last KeyTable update (well over a year!) and this release brings a number of welcome bug fixes. No major new features (just adding a class to the focused cell), the main focus on stability.</p><p>Release notes for KeyTable 1.1.7:</p><ul>
	<li>New: Add the focus class to the TR element as well as the TD to allow quick visual identification of the row the focused cell is on. Use tr.focus {...} to do this. Thanks to Paul Hickman for this new feature.</li>
</ul>
<ul>
	<li>Updated: Use the same copyright license as DataTables - changing from LGPL to GPLv2 and/or BSD 3 point style. Add links to the license files - 3481</li>
	<li>Updated: jEditable code handling for jEditable 1.7.1 - 3724</li>
</ul>
<ul>
	<li>Fix: When we focus we want to capture the key events again - otherwise we can blur, then set focus and not get key movement</li>
	<li>Fix: esc events could throw an error since x/y coordinates weren't being set.</li>
	<li>Fix: Use live events for cell click-to-focus</li>
	<li>Fix: DataTables y-scrolling wasn't being correctly picked up due to a typo - thanks Brent!</li>
	<li>Fix: DataTables 1.7 scrolling could cause the page to scroll incorrectly, due to a calculation not taking into account the scrolling offset that is introduced by DataTables.</li>
	<li>Fix: Add KeyTable class automatically if a table node is given without the class</li>
</ul>
    <p><a href="/releases/KeyTable.1.1.7.zip">Download KeyTable 1.1.7</a></p>  ]]></description>
	<pubDate>Mon, 16 Jan 2012 11:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#108</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 2.0.5 released</title>
	<description><![CDATA[<p>Small update to FixedHeader - this release introduces a new API method called fnPosition, which is very similar to the existing fnUpdate, but it will only reposition the fixed elements, rather than recloning them. Great for when moving the table about in the DOM. Also a few small bug fixes and the license updated to the same as DataTables.</p><p>Release notes for FixedHeader 2.0.5:</p><ul>
	<li>New: Store the instance of FixedHeader into the variable '_oPluginFixedHeader' on the DataTables object instance for access by other plug-ins (specifically ColReorder).</li>
	<li>New: fnPosition API method which allows the fixed elements to have their position updated, without needing to update all elements as fnUpdate does</li>
</ul>
<ul>
	<li>Updated: Use the same copyright license as DataTables - changing from LGPL to GPLv2 and/or BSD 3 point style. Add links to the license files - 3481</li>
</ul>
<ul>
	<li>Fix: Allow the header width calculations to resize more than just one TR - do all of them. The indexes match so no problem</li>
	<li>Fix: Remove any margin applied to the table since we are going to position absolutely anyway</li>
	<li>Fix: Mix between DOM and jQuery methods for setting the width of the table elements - just use jQuery like the other parts.</li>
	<li>Fix: Left and right columns had an incorrect reference to 'that.dom' which was causing a Javascript error</li>
	<li>Fix: Remove the ID attribute from cloned tables</li>
</ul>    <p><a href="/releases/FixedHeader.2.0.5.zip">Download FixedHeader 2.0.5</a></p>  ]]></description>
	<pubDate>Mon, 16 Jan 2012 11:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#107</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedColumns 2.0.1 released</title>
	<description><![CDATA[<p>Couple of small bug fixes for FixedColumns, mainly browser compatibility issues.</p><p>Release notes for FixedColumns 2.0.1:</p><ul>
	<li>Fix: Fix function call typo</li>
	<li>Fix: Row height matching should be applied to the thead and tfoot, regardless of what the sHeightMatch parameter is - otherwise we don't stand a chance of getting rowspan thead cells to match</li>
	<li>Fix: Same issue with heights in IE8...</li>
	<li>Fix: IE9 wasn't correctly aligning fixed columns - apparently it need to work the same way as all the old browsers. Its a bit messy this (trial and error really) with the high matching, but it seems to be working...</li>
</ul>    <p><a href="/releases/FixedColumns-2.0.2.zip">Download FixedColumns 2.0.1</a></p>  ]]></description>
	<pubDate>Mon, 16 Jan 2012 11:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#106</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColVis 1.0.7 released</title>
	<description><![CDATA[<p>A couple of bug fixes and small new features for ColVis, including a "show all" button option and working correctly with DataTable's fnOpen API method.</p><p>Release notes for ColVis 1.0.7:</p><ul>
	<li>New: bCssPosition option - allow CSS to position the column list - can be used to show the columns list like a lightbox</li>
	<li>New: "Show All" button. Can be added by passing bShowAll: true as an initialization parameter. sShowAll can define the text displayed for the button.</li>
</ul>
<ul>
	<li>Fix: Optimisation for using ColVis with server-side processing. Don't require a full redraw as it can be fairly ugly. Instead whent he condition is met, just call the required callback functions to make everything work - that's all we really need anyway. This could be applied to other options in future.</li>
	<li>Fix: Cope with DataTables' open/close details row and column visibility changes. We do this by looping of the DataTables internal array with the open rows and changing the colSpan attribute of these rows as needed.</li>
	<li>Fix: XHTML for the input checkbox - 7966</li>
	<li>Fix: for missing sSize user configuration.</li>
	<li>Fix: Formatting updates for code and return to 1.0.6.dev</li>
</ul>    <p><a href="/releases/ColVis-1.0.7.zip">Download ColVis 1.0.7</a></p>  ]]></description>
	<pubDate>Mon, 16 Jan 2012 11:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#105</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.5 released</title>
	<description><![CDATA[<p>Update for ColReorder to support DataTables 1.9. Note that this release of ColReorder requires DataTables 1.9 now sure to the use of the new state saving methods and data sorting internals in DataTables. No other changes in this release.</p><p>Release notes for ColReorder 1.0.5:</p><ul>
<li>Update: DataTables 1.9 uses an array for the sorting column indexes (aDataSort) rather than an integer (iDataSort as it was) - need to take this into account or sorting will go "wonky"</li>
<li>Update: Update state saving for DataTables 1.9</li>
</ul>    <p><a href="/releases/ColReorder-1.0.5.zip">Download ColReorder 1.0.5</a></p>  ]]></description>
	<pubDate>Mon, 16 Jan 2012 11:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#104</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>AutoFill 1.1.2 released</title>
	<description><![CDATA[<p>It has been a good while since the last AutoFill release with the plug-in proving to be very stable! Just two fixes in this maintenance release to keep the packages up-to-date - license update and the ability for AutoFill to cope with other HTML elements in a TD cell.</p><p>Release notes for AutoFill 1.1.2:</p><ul>
<li>Fix: When child elements were present in the table cells, AutoFill could get rather confused about what it should be using as its target! Now check to see that the event traget is a TD element and if not then look back up the DOM to find which element is the TD in question - 3138</li>
<li>Updated: Use the same copyright license as DataTables - changing from LGPL to GPLv2 and/or BSD 3 point style. Add links to the license files - 3481</li>
</ul>    <p><a href="/releases/AutoFill-1.1.2.zip">Download AutoFill 1.1.2</a></p>  ]]></description>
	<pubDate>Mon, 16 Jan 2012 11:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#103</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.9.0 beta 1 released</title>
	<description><![CDATA[<p>It is with great pleasure that I announce the release of DataTables 1.9 beta 1. After two weeks of intensive work on DataTables 1.9 (and a good deal of planning beforehand), I'm really pleased with the results, and I hope you will be as well! There is no magical leaps forward here, it is all evolutionary, but there is a lot that will make DataTables a lot easier to work with.</p><p>As you will be able to see from the release notes this is a big release of DataTables, with a lot of improvements. More details about what is new in 1.9 are available in <a href="http://datatables.net/forums/discussion/7758/datatables-1.9-beta-1">the forum</a>.</p><p>Release notes for DataTables 1.9.0 beta 1:</p><ul>
	<li>API: New API method '$' which will perform a jQuery selector action on the TR elements from the table's TBODY, regardless of paging. For example: oTable.$('#allan').css('background-color', 'red') will find the element (TR, TD or anything else) which has an ID of 'allan' and perform the css action on it. This is potentially a much nicer interface than needing to use fnGetNodes. Still more to be done, such as options to take column visibility, ordering and filtering into account, but this might be the tipping point for calling it 1.9 :-)</li>
	<li>API: New API method: fnIsOpen - to work with fnOpen and fnClose, allowing a quick check to see if the row is currently open or not.</li>
	<li>API: New init option: Add "sServerMethod" initialisation option to make it easy to change from GET to POST for server-side requests. Needing to supply a custom fnServerData just to get POST was a bit of a pain - this is now no longer needed. In theory fnServerData should generally not be needed now (with fnServerParams, mDataProp and this new parameter making set up much more flexible).</li>
	<li>API: New init option: fnCreatedCell - Fired whenever a TD cell is created (or read from the DOM). Very similar to fnRender, but called when the cell is available allowing actions to be taken on the element</li>
	<li>API: New init option: oLanguage.oAira.sSortAscending and oLanguage.oAria.sSortDescending language strings which are attached to the label for a column header when it can be sorted. Basically the same as before, but now customisable.</li>
	<li>API: New Init option: iTabIndex initialisaiton option - allow the developer to decide what tab index could be given to the table.</li>
	<li>API: fnFormatNumber: Now also called for the full numbers pagination elements where a number is displayed. This now means that all numbers displayed by DataTables go through fnFormatNumber - 7441</li>
	<li>API: fnPageChange: Will now accept integers as well as the four current strings. The integer given represents the page that the table should jump to. Also update the internal calls to use this new ability as it is cleaner.</li>
	<li>API: mDataProp: Pass the cell read 'specific' type to mDataProp if it is given as a function. This might seem like a really simple change, but it greatly expands the flexibility of DataTables. It means that for a column, if you define this function and switch between the four 'get' data types for the cell ('display', 'type', 'filter' or 'sort') you can use different data for each one. So for example you could display a formatted number but do sorting on the numeric version of the number, and filtering on both types (so the user can type either version). The "type" option is for DataTables' type detection. Most of the framework for this was in 1.8.0 - I had thought to include options such as mFilterData (and might in future), but this is the first step to do that without introducing much overhead.</li>
	<li>API: fnDestroy: Add an optional parameter to fnDestroy that will cause the table to be completely removed from the DOM, as well as unbinding events etc (the default is the original behaviour, which is to reinsert the table into the DOM where it was originally located) - 7523</li>
	<li>API: fnFilter: Filtering now has a case insenstive option - this is bCaseInsensitive in oSearch, or the 6th parameter for fnFilter</li>
<ul>
</ul>
	<li>New: Accessability change - use A tags rather than DIV/SPAN for the pagination buttons. This is a backwards incompatible change, but a sensible one</li>
	<li>New: aDataSort parameter for columns - this allows a column's sorting to take multiple columns into account when doing a sort. For example first name / last name columns make sense to do a multi-column sort. Previously in DataTables you would need to have the user do a multi-column sort themselves (with shift), but now you can define aDataSort (for example aDataSort: [ 0, 1 ]) to do effectively a multi column sort. Note that this is not shown to the end user that this was a multi-column sort in the same way that iDataSort wouldn't indicate that it could sort on a different column (if that was configured). Also note that iDataSort is still available for use and has not been modified externally, but if aDataSort is defined it will be given priority over any iDataSort parameter.</li>
	<li>New: Add a 'compress' "target" to the build script (still needs a bit of tidy up). Going to continue using Closure Compiler for DataTables. Tried UglifyJS as well, but found that added about 11K to the size of the library when compressed, relative to Closure:</li>
	<li>New: Add a class to the table to identify it as a DataTable</li>
	<li>New: Add detailed JSDoc comments for the initialisation options for DataTables</li>
	<li>New: Add examples to API methods and tidy up the way oApi is generated a little</li>
	<li>New: Add JSDoc comments for the DataTables column object</li>
	<li>New: Add JSDoc comments for the DataTables settings object</li>
	<li>New: Add my unit test manipulation script. Had it knocking around my own file system forever, but this is the first time I've pulled it into git. Makes sense to have it in given the new build sctruture and the need for a build script now.</li>
	<li>New: Add unit test for filtering on non-string input</li>
	<li>New: Always add an ID to a table if it doesn't already have one</li>
	<li>New: ARIA supoprt for the full numebrs pagination style</li>
	<li>New: Big change to how DataTables constructed in the file system - breaking the various parts of DataTables seperate files. This is probably the biggest individual change to DataTables since it was first written, but the code itself is more or less the same - just split out into different files. The one big change to the code thus far is to change the function classSettings into an object that is extended. More work is required on this to complete the alteration, but for now DataTables is building into the same workable form as before using the new make.sh file.</li>
	<li>New: Example showing how to set defaults</li>
	<li>New: Experiment with tabindex on the sorting headers and the pagination buttons. More to follow...</li>
	<li>New: First effort at ARIA support - the table control widgets link themselves to the table now ('controls') and the column headers say what they do. The table is also described by the information control. Note that an ID on the table is needed for most of this, since ARIA can reiference elements.</li>
	<li>New: Flexible width example</li>
	<li>New: For plug-in authors, the internal function _fnApplyColumnDefs has been created and made available to make it much easier to present aoColumns and aoColumnDefs options for plug-ins (the names of the parameters can be whatever you want). Basically the function will take each of the two arrays (or null if not available) and figure out what definations should be applied to what columns - and then callback to a function that will apply the configuration (specific to the plug-in). This is now also used for the DataTables aoColumns and aoColumnDefs.</li>
	<li>New: Internal and API methods now use JSDoc comments rather than my old system</li>
	<li>New: jQuery plug-ins package file</li>
	<li>New: One thing that has bugged me a little since I first wrote DataTables was that for some mental reason I picked $.fn.dataTable rather than $.fn.DataTable as the jQuery access function. This commit now allows either approach.</li>
	<li>New: Optimisation for sorting - when the sorting runs it will execute the sorting function a lot, particularly for large tables, so we want these functions to be as fast as possible. As it stood, each time the function ran it would prep the data and then do the required comparison - and it would do that data prep every time. This is pointless since toLowerCase (for example) is always going to give the same result when using the same input - so now introduced a third sorting function type (in addition to 'asc' and 'desc') called 'pre', which will pre-format the data to be sorted, only once for each item to be sorted, allowing the sorting comparison function itself to be really fast (simply just the comparison). This is also backwards compatible, if the sorting type doesn't have a 'pre'-formatting method then it will just use the two sorting functions as normal.</li>
	<li>New: Update SyntaxHighlighter to include a submit button to run the example directly in JSBin (live.datables.net)</li>
	<li>New: Update the styling of the default pagination to make it more attractive. Also remove the previous change to use A tags - concerned about backwards compatibility and developers needing to update styles. Impact on accessibility to be evaluated, when ARIA button roles are added.</li>
<ul>
</ul>
	<li>Update: Add a parseInt to the two integer values that come back from server-side processing. The question about why it doesn't work when strings are returned (or rather, why is it broken) keep cropping up in the forum.</li>
	<li>Update: Add and document the extension object for DataTables. The extension object (ext) allows plug-ins to be added to DataTables (and is also used for this internally as well).</li>
	<li>Update: Change how the state loading callback functions operate - previously it would require that a cookie be available before the state loading callback is called. Now is state loading occurs at all the callback function will be fired - allowing easer integration with server-side state storage. I don't actually see a downside to this and it should be perfectly backwards compatible.</li>
	<li>Update: Complete ARIA support for column headers so we now consider bSortable</li>
	<li>Update: Copy the column options on top of the column settings object</li>
	<li>Update: Correct link for initialisation options</li>
	<li>Update: Documentation - note that DataTable is not a global object, but give variables for how it can be accessed</li>
	<li>Update: Documentation changes, suggested by Michael Mathews (author of JSDoc). Generated documentation for DataTables should now be more or less complete.</li>
	<li>Update: documentation links to add defaults example and remove fnGetNodes from post-init description</li>
	<li>Update: Documentation update for fnDrawCallback - it does actually get a parameter - the settings object</li>
	<li>Update: highlight example to use $ API method</li>
	<li>Update: jQuery 1.7 time - DataTables passing all unit tests with the new jQuery</li>
	<li>Update: Language options always get extended with the initalisation object now - this allows you to use both a file source and the local script if you wanted. It also allows backwards compatiablity with language files that don't have the oAria namespace.</li>
	<li>Update: Little bit of info in the build script</li>
	<li>Update: Make warning message smaller - too much payload for something that is virtual never seen</li>
	<li>Update: Modification to the way table width is handled - if the 'width' attribute is on the table tag, then we use that to size the table. This makes having a table width of 100% much easier than before. The reason we need to do this is that there just doesn't appear to be a good way to get the relative width from stylesheets across browsers.</li>
	<li>Update: modify the api_in_init.html example to use the $ API method</li>
	<li>Update: Modify the form example to use the new $ API method</li>
	<li>Update: Performance changing sorting / filtering</li>
	<li>Update: readme for v1.9 and note that the license can be either/or for the GPLv2 or BSD</li>
	<li>Update: Remove trailing commas!</li>
	<li>Update: The 'i' counter that was in the sort loop was outside the function scope, so the JS engine would need to go back up a level in its scope chain. Not a big thing, but any speed in the sorting function is welcome</li>
	<li>Update: The A tag for the pagination causes the A tag colour to show through - add a colour to stop that</li>
	<li>Update: the select row examples to use the $ API method</li>
	<li>Update: Tidy up the initialisation code a bit for creating the settings object and integrate the language compatibility fully</li>
	<li>Update: Tidy up the pagination functions a bit - lass code and easier to understand</li>
	<li>Update: Tidy up the way events are added to the pagination and headers to reduce code.</li>
	<li>Update: Tidy up use of typeof and undefined in DataTables - the main goal is to reduce code size under 70K here, but its a good opertunity to get this area sorted out. Note that the unit test update for fnInitComplete is because 'json' is now always passed through, although it will be undefined in anything but Ajax sourced client-side processing.</li>
	<li>Update: Trivial change to the full numbers conditional logic. Its the same logic as before, just more sensibly laid out.</li>
	<li>Update: Update ARIA attributes based on feedback from Vinnie Young ( http://groups.google.com/group/free-aria/browse_thread/thread/96156d857f35e10d#msg_e451dd817dfe01b1 ). Label for column header now states the column title and the next sort. TBODY has a role of alert and TR elements in THEAD have a role of 'row'</li>
	<li>Update: Update documentation for column defaults name change</li>
	<li>Update: Update internal variable names - rather than using the local private variables _aoSettings and _oExt, these are now attached to the DataTable object as static parameters. Cleaner and will document easier as well.</li>
	<li>Update: Update package version</li>
	<li>Update: Update path given new location for the build script</li>
	<li>Update: Update setAttribute to use id - works just as well and slightly smaller</li>
	<li>Update: Update to jQuery 1.7.1</li>
	<li>Update: Update unit tests to take account of the change to the pagination elements now being A tags, rather than SPANs/DIVs. Good that the change broke the unit tests since it is backwards incompatible</li>
	<li>Update: Updates for hte build script - to do a test build now do "./make.sh debug", otherwise docs, jshint and compiler will all run</li>
	<li>Update: Use the oSearch model for the default initialisation and column initialisation</li>
<ul>
</ul>
	<li>Removed: _fnArrayCmp is not used anywhere these days - ditch it</li>
	<li>Removed: Drop "_iId" from the row model - its not used anywhere in DataTables these days. An old legacy property from the 1.3 days I think - can't imagine any third party plug-ins use this property either - its more or less useless these days.</li>
	<li>Removed: iNextId can go the same way as _iId since that is all it was needed for</li>
<ul>
</ul>
	<li>Fix: Add a default unit test set for the mDataProp test set - objects</li>
	<li>Fix: Add copyright header to the min file</li>
	<li>Fix: Add field quotes (`) to the main server-side processing script. For most cases this will make no difference, but some columns might have a special character in them (- for example) and need this quoting.</li>
	<li>Fix: Alter how the selector for the $ API method works so that it works on the TR elements and their decendants</li>
	<li>Fix: Alter the extending of the initialisation parameter with the defaults a little such that objects are deep copied and arrays are not (code needs tidied a little - want to get it passing all unit tests first). The thing here is that we can't use jQuery's $.extend for a full deep copy since we don't want to deep copy arrays (for example aaSorting, where the default sort would always be applied), but we do want to deep copy objects (and not just take a reference to the default object). Thus we can't use $.extend :-(.</li>
	<li>Fix: Apply default column options - the column defaults weren't actually being included, nevermind applied. Now put them in DataTable.defaults.columns and have them work!</li>
	<li>Fix: Apply some DRY to pagination extension code</li>
	<li>Fix: bAutoWidth wasn't documented</li>
	<li>Fix: Calculating the width of a table can be incorrect when the calculation table is hidden due to an issue with jQuery's  width/outerWidth calculation (http://bugs.jquery.com/ticket/9945). This is a bit of a work around to get the css value and check if it is a percentage - this is not perfect (since other relative values aren't checked - although they are generally unlikely to be used), but it is effective for most cases.</li>
	<li>Fix: Can't extend null on the classes - make the default an object for the settings classes holder</li>
	<li>Fix: Cast fnFilter input to a string always - since we are always going to treat it as a string</li>
	<li>Fix: DRY for the four event handlers</li>
	<li>Fix: Filtering doesn't deal with carriage returns - 6313 - thanks to Jonathan Camp for this fix.</li>
	<li>Fix: Fix numeric sorting pre-formatting method typo, picked up by the unit tests</li>
	<li>Fix: Fix typo 'destory' -> 'destroy'.</li>
	<li>Fix: Fix various comment spelling mistakes</li>
	<li>Fix: Fixes from JSHint and JSHint configuration. Note that I'm using a slightly modified JSHint to remove checking of mixed spaces/tabs and trailing white space due to issue 21 against JSHint (https://github.com/jshint/jshint/issues/21) - specifically it objects to my comment styling for the JSDoc comments, which I've got _everywhere_!</li>
	<li>Fix: fnDestroy does not remove all jQuery UI markup</li>
	<li>Fix: fnInfoCallback was not being executed in the DataTables' instance scope</li>
	<li>Fix: fnUpdate recursion would cause an error if dealing with nested arrays - 7292. Fix is to let the function know, with a private variable, that it is being called recursively.</li>
	<li>Fix: Function name in comment for fnSetColumnVis was wrong</li>
	<li>Fix: If there is an sClass defined for a column, and a footer element for the column, apply the sClass to it, just as we do to the header.</li>
	<li>Fix: Ignore MacOS .DS_Store files</li>
	<li>Fix: Ignore min file in git</li>
	<li>Fix: It appears that the latest Webkit browsers have changed their scrolling behaviour slightly, which is causing the unit tests to fail. Basically the 'scroll' event is being fired when the infinite scrolling table is having data written to it (i.e the scroll changes - so its kind of fair enough!), so add a check to only load the first set of data when there is no scrolling applied.</li>
	<li>Fix: Limit the span modification for the sort classes - from pull request 40 (https://github.com/DataTables/DataTables/pull/40).</li>
	<li>Fix: No hover underline or active outline for full numbers pagination</li>
	<li>Fix: Only the constructor should be referring to oJUIClasses - also in the constructor copy the class object rather than referencing</li>
	<li>Fix: Rolling back the change to starting that used localeCompare - it was causing incorrect sorting in IE9 (unit test failures)</li>
	<li>Fix: Same thing for two button pagination control</li>
	<li>Fix: Small documentation update for fnGetNodes to suggest that $ should be used</li>
	<li>Fix: Unit tests were using asStripClasses which was an old legacy typo... It should be asStripeClasses and I've removed the alias in 1.9, thus the unit tests need to be updated.</li>
	<li>Fix: Was only binding xhr event where there was more than one table! Doh!</li>
<ul>
</ul>
	<li>Examples: Update editable example to use $ API method</li>
	<li>Examples: Update post init events example to use $ API method - easlier than fnGetNodes</li>
	<li>Examples: Add JSONP examples for the 'id's and 'objects' sever-side scripts. Might make all JSONP compatible at some point...</li>
	<li>Examples: Don't initialise the xhr listener if there is no DataTable on the page</li>
	<li>Examples: Simplify select row code</li>
	<li>Examples: Update example links with new flexible width example</li>
	<li>Examples: Need element scope to calculate TD index! - 6647</li>
<ul>
</ul>
	<li>Dev: Add defaults for aDataSort and sServerMethod (the two new parameters that have been introduced since the last release)</li>
	<li>Dev: Add the Ajax core JS file (forgot to commit it before!)</li>
	<li>Dev: Change the defaults object from attaching to DataTable.models to just the top level DataTable as DataTable.defaults - makes it much easier to access it when trying to set a default.</li>
	<li>Dev: Document the row model and update the data methods to extend this model as the base for aoData</li>
	<li>Dev: Don't include duplicate classes - just extend the base for the jQuery UI version</li>
	<li>Dev: First pass are using $.extend for the settings and initialsation objects.</li>
	<li>Dev: Had broken API extension methods... There was a bit of confusion between oApi as an internal variable and as an external variable. This commit effectively brings them together - you can access the internal functions as regular API methods now - although that might not be a particularly good idea just yet - not to be documented until I'm happy with this.</li>
	<li>Dev: Override the default sDom when using jQuery UI</li>
	<li>Dev: Pull the Ajax functions into their own file</li>
	<li>Dev: Rearrange the 'ext' option and make the base object a model so it can be readily documented. More documentation required for the model to explain what each of the options does</li>
	<li>Dev: Reduce code size slightly (not much in fairness - but every little helps...)</li>
	<li>Dev: Remove pointless duplication of code - it was doing the same thing, just with different pointers</li>
	<li>Dev: Remove redundant information in the message</li>
	<li>Dev: Slight modification of style for the inner functions in the pagination controls</li>
	<li>Dev: Slight modification of the code for getting the Ajax source property for Ajax sourced data and server-side processing to save a few more bytes :-)</li>
	<li>Dev: Small tidy up of how the column filter state is saved</li>
	<li>Dev: Tidy up the constructor to take account of the fact that we now have every possible property in the initalisation objects, since it is being extended from the details - i.e. no need to check for 'undefined' any more.</li>
	<li>Dev: Tidy up the settings object - a lot of the settings should have null as the default since they are set by the initialisation.</li>
	<li>Dev: Two button navigation using A tags again - important for if there is no CSS</li>
	<li>Dev: oLanguage is a namespace, not a member</li>
<ul>    <p><a href="/releases/DataTables-1.9.0.beta.1.zip">Download DataTables 1.9.0 beta 1</a></p>  ]]></description>
	<pubDate>Thu, 15 Dec 2011 17:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#102</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>Scroller 1.0.1 released</title>
	<description><![CDATA[<p>Its about time we had a Scroller release! There have been a number of little issues fixed in the 1.0.1 version that had been causing a couple of small problems in the first release. So this release is mainly a bug fix version, but there are two significant changes with mentioning - firstly the Scroller object is now attached to the DataTables' settings object as "oScroller", so you can access it by doing fnSettings().oScroller, for easier access and consistency with other plug-ins. Also there is now an fnMeasure API method which will cause Scroller to redo its calculations and redraw the table based on these new calculations.</p><p>Release notes for Scroller 1.0.1:</p>
<ul>
	<li>New: Add fnMeasure API method which can be used to cause Scroller to recalculate the sizes it uses for drawing calculations. This is useful if the table is created in a hidden element (such as a tab) which can throw off the sizes. Simply call this new method when the table is made visible to have it recalculate the sizes and redraw the table correctly. Also useful if changing the y-scroll size dynamically.</li>
</ul>

<ul>
	<li>Fix: Without the if the plugin assumes that info part of the table has been enabled. If info is disabled n will be undefined and referencing n.length will throw an error.</li>
	<li>Fix: There was a mix of tabs and spaces in some of the jsdoc comments...</li>
	<li>Fix: Improve row height calculation</li>
	<li>Fix: Use wrapper div in _fnCalcRowHeight()</li>
	<li>Fix: Don't try to update the information element if the info feature is disabled in DataTables.</li>
	<li>Fix: Wrong row count display if fewer rows than the display can hold</li>
	<li>Fix: If the number of rows currently being displayed is fewer than the current area could display, then display the count as the total displayed.</li>
	<li>Fix: The top row can't be less than 0. Add a check to enforce this - 5311</li>
	<li>Fix: Attach the Scroller instance to the table's settings object, and not the jQuery object. Doing it the old way meant that you could initalise only one table at a time and not use the object retreival options of DataTables. Get the settings using fnSettings as normal. Examples updated. NOTE - this is an API change to fix this bug - the method of getting the Scroller instance has changed.</li>
</ul>
    <p><a href="/releases/Scroller-1.0.1.zip">Download Scroller 1.0.1</a></p>  ]]></description>
	<pubDate>Fri, 18 Nov 2011 15:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#101</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.4 released</title>
	<description><![CDATA[<p>This is a minor, but welcome, update to ColReorder being greater compatibility with DataTables 1.8's deferred rendering and also now a custom callback function for when the draw is moved.</p><p>Release notes for ColReorder 1.0.4:</p><ul>
	<li>New: fnReorderCallback init option - a callback function which is fired when the mouse button is released after a column reordering - 5798</li>
</ul>
<ul>
	<li>Fix: Remove caption elements fromt he cloned table when starting the drag - 6127</li>
	<li>Fix: Consider deferred rendering with DataTables 1.8 - can't reposition DOM nodes which having been created yet!</li>
</ul>    <p><a href="/releases/ColReorder-1.0.4.zip">Download ColReorder 1.0.4</a></p>  ]]></description>
	<pubDate>Sat, 10 Sep 2011 11:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#100</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.8.2 released</title>
	<description><![CDATA[<p>It has been two months since the last DataTables release, so this is a reasonably big one in terms of a number of nice (albeit it small) new features being added and bug fixed. The major new features include a new callback function called fnServerParams which makes it trivial to send additional parameters to the server when making an Ajax request (so you no longer need to write a custom fnServerData method). Also included is the ability to set the thousands separator using the oLanguage.sInfoThousands option rather than needing to write a custom number formatting function. In terms of bug fixes a few issues with the table width when scrolling have been addressed as well as a number of other small issues.</p><p>One other point of note is that the examples now all have syntax highlighting on the code example, and any example which uses Ajax shows the latest response from the server, so it is easy to see what is going on!</p><p>Enjoy!</p><p>Release notes for DataTables 1.8.2:</p><ul>
	<li>New: fnServerParams callback function - this allows additional parameters to be added to the XHR for server-side processing or Ajax sourced, client-side processed data, with ease. Previously it was required to override the fnServerData method just to add a couple of parameters, but the built in fnServerData method is quite comperhensive and you don't want to have to reproduce all of that unless you need to. Now you don't need to :-). fnServerParams is called on each request, so it is ideal for adding extra parameters such as search parameters which can be updated by users.</li>
	<li>New: Add a thousands separator option to the language options. As a displayed string in DataTables this should be configurable, and now is with the oLanguage.sInfoThousands options ( "oLanguage": { "sInfoThousands": "'" } for example).</li>
	<li>New: If a data source is found to be a function, then the function is executed and the return used for the cell display (+sorting, filtering etc). This is useful for integration with knockout.js and backbone.js etc.</li>
	<li>New: All examples which show Ajax requests now show the JSON response from the server (highlighted to be readable JSON formatting) and the responses shown will update with each additional request. The idea is to make the formatting that DataTables expects / can cope with more obvious</li>
	<li>New: Syntax highlighting for the examples and provide a link for DataTables initialisation options to the reference page</li>
	<li>New: In the syntax highlighting also pick out DataTables' API methods and link them to the reference page</li>
	<li>New: experimental: Add custom events into DataTables - the events available are "draw", "filter", "sort", "page" and "xhr". These are very useful for knowing when these actions happen and binding an action to them. Useful for plugin developers and developers using DataTables both. Note that it would be possible to put in a _LOT_ more custom events ("predraw" etc) which is why this feature is currently considered experimental. It will not be documented in the DataTables documentation until this has stabilised (likely 1.9 or 2.0) and a scheme has been fully confirmed for these events, but I want to include them now to see if and how they are used by developers to see them or talk to me (as this has been asked for a few times). I'm also slightly concerned about the overhead that would be generated if there were custom events for everything.</li>
</ul>
<ul>
	<li>Update: Use $.extend for the language options - its quicker and easier! The init options should be done like this as well, but that will likely be 2.0 due to the way it is currently implemented...</li>
	<li>Update: to latest jQuery - 1.6.3</li>
	<li>Update: Split the Ajax parameter building into it's own function (_fnAjaxParameters) so it can be called through the oApi parameter. The intention is that external programs such as TableTools can build up the same parameter set as TableTools uses.</li>
	<li>Update: correct "stripe" spelling (strip is still backwards compatible though)</li>
</ul>
<ul>
	<li>Fix: Unit test compatibility fix for IE7</li>
	<li>Fix: HTML column type could sometimes be overridden by the string sorting type. If a cell was found to have just a string and no HTML in it then the whole column would be treated as a string column, even if other cells had HTML. Now put a check in place to ensure that string can't overrule html type. Unit test added.</li>
	<li>Fix: In webkit browsers the cursor in the active filter would always jump to the end of the input string due to an incorrectly matching elements (after the introduction of the label tag for the filter). Use a jQuery selector to make this more robust.</li>
	<li>Fix: Due to the jQuery $('>...') selector syntax being deprecated, change the format to use the 'children' option instead</li>
	<li>Fix: Nested tables in the the main table's header wold cause an error due to too many TR elements being selected by the header detection method. We want to pick up only the child elements of the header - 6485</li>
	<li>Fix: Array detection for input data was dodgy - an object with a paramater that has a name of 'length' would mess things up - 6271</li>
	<li>Fix: Table width issues with y-scrolling enabled. Some of the caluclations which were introduced into 1.8.1 to stop the table getting smaller than it can be were wrong under certain conditions. This changes should address this but further testing is required due to the number of variations.</li>
	<li>Fix: IE6/7 when y-scrolling was filtered to a list without y-scrolling would lose the width of the scrollbar (i.e. not expand to fill the empty space). The IE6/7 specific calcuation needs to be done only when the element is overflowing.</li>
	<li>Fix: Don't rebuild the client-side search array when using server-side processing since it isn't used! - 5742</li>
	<li>Fix: Fix typo in internal variable name - "asDestoryStrips" should have been "asDestroyStrips"</li>
	<li>Fix: Examples - Typo for aaData reference - 6096</li>
	<li>Fix: The scrollbar width calculation could sometimes be wrong when trying to calculate the size of the bar due to CSS styles. The inner P element could be given padding for example which would result in the scrollbar width being wrong and thus any calculations later on witht he scrollbar width would be incorrect.</li>
	<li>Fix: typo in example code</li>
	<li>Fix: IE7 doesn't like setAttribute('rowspan') (and colspan) so we need to do it the old fashioned way... - 6012</li>
	<li>Fix: typeof null is an object, which causes issues in fnUpdate when checking if a value passed in is an object or not to fail if null is given as the value. Need to check for null values - 5987</li>
	<li>Fix: Add a method for plug-ins to have a destructor for when DataTables is destroyed - allowing clean up of events and anything else the plug-in has done. Plug-ins should add an object to aoDestroyCallback with 'sName' (to identify the plug-in) and 'fn' as the plug-ins destroy function.</li>
	<li>Fix: When applying the sanity width for y-scrolling only we need to know if the scrolling element has scroll bars visible or not. Previously we checked if the element was bigger than the visible area, but this isn't good enough of overflow:scroll is set. Need to check that parameter as well - 5658</li>
	<li>Fix: Only include jQuery once in examples...</li>
	<li>Fix: Spelling fixes</li>
	<li>Fix: Correct spelling for the internal function _fnAdjustColumnSizing (was _fnAjustColumnSizing) - from pull request 11.</li>
	<li>Fix: When filtering is applied to a table which has y-scrolling, and the filter was sufficient to make the scrolling disappear, the table width would increase by the scrollbar width. This was of course incorrect and the result of a change for 1.8.1 - we need to test is the scrollbar is present or not for the fix to be correct, which it now does. Unit test added.</li>
	<li>Fix: As with the fix in 1.8.1 for the x-scrolling appearing when disabled the footer needs the same consideration as the header, otherwise it can be cut off visually.</li>
</ul>    <p><a href="/releases/DataTables-1.8.2.zip">Download DataTables 1.8.2</a></p>  ]]></description>
	<pubDate>Sat, 10 Sep 2011 11:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#99</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.3 released</title>
	<description><![CDATA[<p>A very fast turn around for 1.0.3 of ColReorder - there was a bug in 1.0.2 which basically stopped sorting from working on the client-side after reordering columns with DataTables 1.8... This release addresses that.</p><p>Release notes for ColReorder 1.0.3:</p><ul>
<li>Fix: When using an indexed data source mDataProp and the get/set functions need to be updated when the columns are reordered - otherwise they will read data from the wrong columns!</li>
</ul>    <p><a href="/releases/ColReorder-1.0.3.zip">Download ColReorder 1.0.3</a></p>  ]]></description>
	<pubDate>Tue, 28 Jun 2011 19:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#98</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.8.1 released</title>
	<description><![CDATA[<p>This first maintenance release of DataTables 1.8 sees a couple of new features in the area of accessibility as well as fixing a number of bugs which have come to light since the 1.8.0 release.</p><p>In terms of accessibility the two form elements that DataTables uses (the page length menu and filtering input) are now wrapped in "label" elements - this means that when you click on the text the element becomes focused - it's also easier for a screen reader to interpret what text belongs to the form fields. The filter language option also has the option of using the magic macro "_INPUT_" now, which will be replaced with the input element - similar to how the information display works. For server-side processing the mDataProp value used for each column is now sent to the server, which can make it easier to figure out the order of columns on the client-side.</p><p>In terms of bug fixes, the big change is in scrolling with x-scrolling disabled - previously DataTables would try to draw a table smaller that it was possible for it to be, which could result in column misalignment (although DataTables would give an error). Now DataTables will not enter that error state and will not draw the table smaller than it can be (which will likely result in the window scrolling should this state be entered).</p><p>Release notes for DataTables 1.8.1:</p><ul>
	<li>New: Accessibility features - the length changing control and filtering control are now wrapped in <label> tags (an explicit relationship to their input elements) to aid accessibility. You can see this immediately by simply clicking on the "Search:" text now - it will focus the input of the text box, while for screen readers it will give the label text from the label.</li>
	<li>New: The filtering input language string (oLanguage.sSearch) now has the "macro" _INPUT_ in it to allow the input element to be positioned anywhere in the string. For example if you gave "sSearch": "Data_INPUT_Tables" the output for the filter would be "Data<input.../>Tables". This is optional - if _INPUT_ is not given, then as before will will tack the input element on to the end of the given (or default) text string.</li>
	<li>New: Send mDataProp to the server for server-side processing. This is very similar to the sNames parameter, but more convenient when already using mDataProp</li>
<ul>
</ul>
	<li>Updated: For objects, consider mDataProp which is sent from DataTables for sorting and filtering to get the correct order of the rows. This is useful for ColReorder and more generally it increases the flexibility of the whole table</li>
	<li>Updated: Update to latest jQuery - 1.6.1</li>
<ul>
</ul>
	<li>Fix: Row alignment with x-scrolling disabled and the table too small to draw fully. Previously DataTables would emit an error about the columns not aligning in this case, and then try its best to draw the table, but this would end up looking quite bad. The fix is to not allow the table to draw smaller than it can possibly be when x-scrolling is disabled. This effects dynamically resizable tables - 5232</li>
	<li>Fix: Columns which are sortable but hidden have events attached to them for sorting, but this event handler is not removed when the column is made visible again for fnDestroy. Simply need to change the order of how the destroy is done - i.e. remove events just after the columns are made visible, not before - 5497</li>
	<li>Fix: When complex expressions are built up with aoColumnDefs, resulting in the ability for a column to be turned "on and off" during initialisation, it would result in the column classes possibly not being correct for the sorting - 5472 - kudos to rups for this fix</li>
	<li>Fix: The ability to use complex data structures in 1.8 means that arrays which are passed into to fnUpdate need not strictly be the same length as the number of columns in the table - therefore the warning that is given if you do this is wrong... no other code changes needed - just no need to generate the warning! Unit test added - 5396</li>
	<li>Fix: The table width is not set when auto width is disabled so we should not set it when destroying the table - 5220</li>
	<li>Fix: A couple of typos in the examples</li>
	<li>Fix: Details table example has one extra column in it at the start, so this needs to be taken into account when sorting - 5422</li>
</ul>
    <p><a href="/releases/DataTables-1.8.1.zip">Download DataTables 1.8.1</a></p>  ]]></description>
	<pubDate>Sun, 26 Jun 2011 10:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#97</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedColumns 2.0.1 released</title>
	<description><![CDATA[<p>This first maintenance release of FixedColumns 2 includes a number of important bug fixes and new features to round off the capabilities introduced with FixedColumns 2. Note that this new version requires DataTables 1.8+.</p><p>New features include a new API method fnRedrawLayout which will redraw the 3x3 grid that FixedColumns uses based on current sizing information. Also the FixedColumns instance is now attached to the DataTables settings object as the property "oFixedColumns" to allow easy access if initialised with sDom in DataTables. There are also a number of new examples.</p><p>Bug fixes include updates for jQuery UI themes and support for server-side processing in DataTables.</p><p>Release notes for FixedColumns 2.0.1:</p><ul>
	<li>New: Two new examples - one to show server-side processing and the other to show jQuery UI theming</li>
	<li>New: Requires DataTables 1.8.0.dev or newer</li>
	<li>New: New API method called "fnRedrawLayout" which will have FixedColumns recalculate the layout grid (using the internal function _fnGridLayout - this basically just makes it a public interface)</li>
	<li>New: Attach the FixedColumns instance to the DataTables object instance as "oFixedColumns" so it can be quickly and easily accessed. Follows the pattern of Scroller and will be extended to other plug-ins...</li>
	<li>New: Make use of the new complex header support in DataTables 1.8 when considering hidden columns, to allow complex headers with a fixed column</li>
<ul>
</ul>
	<li>Fix: Server-side processing with FixedColumns didn't work due to an array index count offset in aoData. Need to take account of server-side processing in the same way that _fnDraw does in DataTables - i.e. reset the counter</li>
	<li>Fix: jQuery UI themed tables weren't having the sorting classes updated on the header of the table when the user clicked to alter the sorting of the table - 5149</li>
	<li>Fix: With using right aligned columns, the change implemented for the new complex headers was incorrect - need to continue counting rather than breaking</li>
	<li>Fix: MSIE is the only browser which seems to need the extra work in the height equalisation</li>
</ul>    <p><a href="/releases/FixedColumns-2.0.1.zip">Download FixedColumns 2.0.1</a></p>  ]]></description>
	<pubDate>Sun, 26 Jun 2011 10:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#96</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColVis 1.0.5 released</title>
	<description><![CDATA[<p>A minor release of ColVis but this new version includes a number of new features to extend the capabilities and usefulness of ColVis and a couple of fixes making it a welcome update!</p><p>New features include the ability to customise the labels used for the buttons through the use of a callback function (fnLabel), automatic sizing of the buttons for the list (rather than hardcoding CSS) and the ability to control the animation duration for the display of the button (iOverlay).</p><p>Bug fixes include full compatibility with jQuery 1.6+.</p><p>Release notes for ColVis 1.0.5:</p><ul>
	<li>New: ColVis will now automatically calculate the width to use for the buttons based on the contents of each button. You can still use CSS to force the width, but if so you must set "sSize" to "css" now.</li>
	<li>New: fnLabel callback initialisation parameter for ColVis which allows customisation of the labels used for the buttons (useful for stripping HTML for example).</li>
	<li>New: Example of how to control two tables with a single ColVis control</li>
	<li>New: Added option 'iOverlay' for adjusting the timing on the overlay animation.</li>
<ul>
</ul>
	<li>Updated: Call the iOverlay parameter iOverlayFade to be a bit more descriptive.</li>
	<li>Updated: Use the same copyright license as DataTables - changing from LGPL to GPLv2 and/or BSD 3 point style. Add links to the license files - 3481</li>
<ul>
</ul>
	<li>Fix: Remove auto position correct code for the y-axis - this was just the wrong thing to do - 4838</li>
	<li>Fix: Incompatibility with jQuery 1.6.x - 5496</li>
</ul>    <p><a href="/releases/ColVis-1.0.5.zip">Download ColVis 1.0.5</a></p>  ]]></description>
	<pubDate>Sun, 26 Jun 2011 10:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#95</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.2 released</title>
	<description><![CDATA[<p>A maintenance release for ColReorder which brings this plug-in up to par with support for the new features in DataTables 1.8. This new release requires DataTables 1.8+ due to the handling of data, and as a few fixes in it.</p><p>Release notes for ColReorder 1.0.2:</p><ul>
	<li>Updated: Use mDataProp for ColReorder with server-side processing example as this is much more flexible than sNames. Note that DataTables 1.8.1 is required for this now (to get mDataProp_{i} on the server-side)</li>
	<li>Updated: Now require DataTables 1.8+</li>
<ul>
</ul>
	<li>Fix: Add links to the license files</li>
	<li>Fix: Update for DataTables 1.8 when using objects for the data source - don't try to reorder them as we do with arrays!</li>
	<li>Fix: ColReorder with ColVis was broken with DataTables 1.8 due to the new header layout method used in 1.8. The fix is to rearrange the layout as needed in the reorder method. Note that complex headers are still not supported in ColReorder.</li>
	<li>Fix: Use the same copyright license as DataTables - changing from LGPL to GPLv2 and/or BSD 3 point style - 3481</li>
</ul>    <p><a href="/releases/ColReorder-1.0.2.zip">Download ColReorder 1.0.2</a></p>  ]]></description>
	<pubDate>Sun, 26 Jun 2011 10:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#94</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.8.0 released</title>
	<description><![CDATA[<p>I'm absolutely delighted to be able to release DataTables 1.8.0! This update provides a significant number of <a href="http://datatables.net/new/1.8">enhancements to DataTables</a> while striving to keep <a href="http://datatables.net/upgrade/1.8">full backwards compatibility</a> with 1.7.x and before. The major new feature is the advanced data source options provided by the new mDataProp option for columns. Other big new features include deferred rendering for speed and support for hidden columns with complex headers.</p><p>Release notes for DataTables 1.8.0:</p><ul><li>No changes from 1.8.0 beta 4 other than the version number.</li></ol>    <p><a href="/releases/DataTables-1.8.0.zip">Download DataTables 1.8.0</a></p>  ]]></description>
	<pubDate>Sat, 04 Jun 2011 14:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#93</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.8.0 beta 4 released</title>
	<description><![CDATA[<p>Time for another beta of DataTables 1.8 :-). This release should be the last beta in before 1.8.0, which will be released next week baring any major mishap! Please do test your applications with this latest beta and let me know about any upgrade issues in the forum. This beta 4 release tidies up a couple of little bugs that have appears in the new features and a few older bugs, and rounds off the new features for 1.8 (see the release notes below).</p><p>Release notes for DataTables 1.8.0 beta 4:</p><ul>
	<li>New: The object returned by $.ajax is assigned to jqXHR in the table's settings object now. This means that you can access the XHR in fnDrawCallback (or any of the other callback functions, or anything with access to the settings object!) to do further data manipulation if you wish.</li>
	<li>New: sLoadingRecords tests added for Ajax source loading</li>
	<li>New: mDataProp can now be a function as well as either a string or an integer. This allows dynamic reading of information from the source object (for example getting the length of an array in the data source object) as well as the deep object reading and array index reading already available. The function is called with a single argument (the data object) when being read and two arguments (the data object, new value) when being set. This can be seen as an alternative to fnRender but it makes sense to include this functionality here as an option.</li>
</ul>
<ul>
	<li>Update: Unit tests which text the argument count for fnServerData updated to include oSettings being passed as fourth argument</li>
</ul>
<ul>
	<li>Fix: When using server-side processing the new sLoadingRecords message is not used since the draw doesn't progress that far. As a result the same issue as was fixed in commit cc1908baaff6df0efb65088a41522af4ad91a5fb could occur and needs to be addressed here by checking for server-side processing. Regression picked up by unit tests</li>
	<li>Fix: Treat null the same as an empty string for type detection - i.e. don't try to detect a type on it. Regression picked up by unit tests</li>
	<li>Fix: Couple of little jslint found issues</li>
	<li>Fix: The check against sAjaxSource for the 'loading...' message should be null rather than an empty string since null is the default for sAjaxSource. This error would result in the loading message being shown if the table has no results initially</li>
	<li>Fix: The return false in the click handler for the full numbers pagination numbers was somewhat too harsh and stopped other events from being attached to those elements if the developer wanted. Just use preventDefault instead - 5105</li>
	<li>Fix: If there was a nested table in the thead of our target table, then the getElementsByTagName was getting the wrong element - so use a more specific jQuery selector.</li>
	<li>Fix: The automatic type detection algorithm can incorrect give precedence to numeric sorting when an empty cell is found. This means that a column of dates with a single empty cell would be sorted as a string. The fix is to skip type detection on empty cells. This also means that the sorting algorithm needs to be updated since sType might not be defined for a column when it is sorted on now (if the data in the column is empty).</li>
	<li>Fix: iDataSort, sDataType in the sort function should be declared as local parameters - should give a tiny bit more speed to the sort</li>
</ul>    <p><a href="/releases/DataTables-1.8.0.beta.4.zip">Download DataTables 1.8.0 beta 4</a></p>  ]]></description>
	<pubDate>Mon, 30 May 2011 17:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#92</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.8.0 beta 3 released</title>
	<description><![CDATA[<p>This latest beta of DataTables 1.8 focuses on stabilising the new features that are being introduced as part of the 1.8 series, and includes a number of bug fixes particularly around the areas of deferred rendering and TH elements in the table body. Also of note is that I've rewritten the algorithm used for calculating column widths when x-scrolling is enabled, and more general improvements in column width calculation when scrolling is not enabled.</p><p>In addition to the bug fixes, there are a couple of low impact new features which are introduced in this beta, including the ability to have default content for a column (an edit image is an option for example), which is used when mDataProp is null. There is also a new callback function called fnPreDrawCallback which can be used to cancel a draw and a new language option called 'sLoadingRecords' which is used when Ajax sourced data is being loaded.</p><p>Enjoy!</p><p>Release notes for DataTables 1.8.0 beta 3:</p><ul>
	<li>New: sDefaultContent property for aoColumns / aoColumDefs. This new property allows a default value to be given for a column's data, and will be used whenever a null data source is encountered (this can be because mDataProp is set to null, or because the data source itself is null). In addition to this, when set if the mDataProp value is undefined, the default will be used instead (and no error given). If sDefaultContent is not set (default is null), and the mDataProp value is undefined, an error will be given as it currently is.</li>
	<li>New: New callback function fnPreDrawCallback which is called at the very start of each table draw (so rather like fnDrawCallback, just before the draw!). This function is, like all other DataTables callbacks, executed with the DataTables instance scope, and also takes a single parameter - the DataTables settings object. The attached function can cancel the draw by returning false, any other return (including undefined) results in the full draw occurring).</li>
	<li>New: New language option sLoadingRecords which is used when the table's data is Ajax sourced, and at the first draw only. This provides an indication that the data is currently being sourced from the server (i.e. Loading...) rather than showing 'No data available in table' - which is not particularly friendly. Note that for server-side processing, DataTables will leave whatever is in TBODY when it makes the first Ajax request, so with server-side processing you would need to put in a TR/TD into the static HTML table.</li>
	<li>New: fnUpdate has been updated (oh the irony) to accept either an individual value, an array or an object as the first parameter passed to it. The individual and array options behave exactly as they did before this change - the new option is the object being passed in. This allows fnupdate to be given a data object which is identical to data objects used by the table when using complex objects and mDataProp. How fnUpdate itself actually operates has also changed to be self calling, which makes the multiple column updates for arrays and objects much easier.</li>
	<li>New: New column option - sContentPadding. What this option does is tag on an extra string to the content of the columns in the width calculation table, in order to take account of the fact that 'iii' is actually less wide than 'mm', but DataTables will pick 'iii' as the longer due to the string width. With sContentPadding you can add an extra string to any column to force DataTables to take account of this during the width calculation - the string in sContentPadding is not used anywhere else and is empty by default. This option will remain undocumented for the moment, since I suspect it will confuse more than help, but it is very useful to have around when x-scrolling.</li>
</ul>
<ul>
	<li>Fix: Tidy up the fnGetPosition API method and allow it to cope with getting a TH cell's position in the table as well as TR and TD elements. The input and output options for the function have not changed - just it's internal operation.</li>
	<li>Fix: fnUpdate now works with TH elements in the body as well as TD elements</li>
	<li>Fix: fnSetColumnVis didn't cope with TH elements in the body due to the use of a 'td' selector. The fix for this is to use _fnGetTdNodes() (since that can get an array of TD</li>
	<li>Fix: fnSetColumnVis was broken when used with deferred rendering due to the offset calculation done with the huge flat array of TD nodes. The fix is to simplify this somewhat and get an array for each row (when it is available) and process that using the optional parameter for _fnGetTdNodes. This doesn't result any any extra computation time, other than the additional time to call the function (but not to execute it), since it is just moving where the loop is.</li>
	<li>Fix: A couple of little jslint tidy ups</li>
	<li>Fix: New algorithm for calculating the column widths for a table when x-scrolling is enabled. Basically browsers need a bit of a hand when a width is assigned to any columns when x-scrolling as they tend to collapse the table to the min-width, even if we sent the column widths. So we need to keep track of what the table width should be by summing the user given values, and the automatic values</li>
	<li>Fix: Passing an integer for sWidth would cause the column width calculations to go completely off since they weren't actually used by the browser. Make use of the _fnStringToCss helper function for exactly this kind of thing.</li>
	<li>Fix: When calculating the string width for column sizes, we know that we are going to be using strings for the display - so cast as a string, which means that we can take the length of any primitive (particularly numbers).</li>
	<li>Fix: The max string width calculation was including HTML, which is just plain wrong since the HTML will be hidden. This is still not perfect since "iiii" takes less space than "mmm" in the browser display, but addressing that would take some serious clocks cycles, and this is good enough for now.</li>
	<li>Fix: _fnGetTdNodes works on a column data array basis, not visible columns, so _fnGetWidestNode need only deal with column indexes. It was possible before that the width calculation would be done in the wrong column if using hidden columns</li>
	<li>Fix: fnGetData should give the original data object, rather than the array that DataTables uses for rendering the actual table. This was part of the original commit for the 1.8 object handling, but in retrospect, the original data is much more useful.</li>
	<li>Fix: When calculating the column widths, we should get the data to display, otherwise a null element (particularly when using a null mDataProp) can cause issues with columns being skipped (due to the null return)</li>
	<li>Fix: When using fnRender with a null mDataProp, although the rendering function was called, it wasn't actually saved anywhere. This meant that when the cell was actually created and the data source attempted to be read, the rendered string wasn't available - thus you got an empty cell (4943). This fix is to add a condition to the rendering call to delay until the node is created. Note that there is still a quirk here, in that the rendered data cannot be used for sorting or filtering, since again it isn't stored anywhere when the data source is null.</li>
	<li>Fix: null data should be returned as an empty string for HTML display</li>
	<li>Fix: fnUpdate needs to consider null nTr rows for deferred rendering</li>
	<li>Fix: When using bDeferRender HTML in the target cell would be used as text rather than HTML when doing the width calculations - making them completely wrong - 4879</li>
</ul>
    <p><a href="/releases/DataTables-1.8.0.beta.3.zip">Download DataTables 1.8.0 beta 3</a></p>  ]]></description>
	<pubDate>Sat, 14 May 2011 11:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#91</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.8.0 beta 2 released</title>
	<description><![CDATA[<p>This updated beta of DataTables 1.8 sees a number of bug fixes, but also one really nice new feature - the ability to use TH elements in the table body as well as in the header and footer. TH elements can be used just like TD elements in the body now and further improve DataTables ability to progressively enhance well marked up tables. A TH element in the body can be very useful to have as a row header, which in addition to having semantic meaning, also allows easy CSS visual styling of the row headers.</p><p>Enjoy!</p><p>Release notes for DataTables 1.8.0 beta 2:</p><ul>
	<li>New: Support TH elements in the table's TBODY. TH elements are now treated just like TDs in the body. This will work only with DOM sourced data out of the box - any body cell elements that DataTables creates are still TD.</li>
	<li>New: Add paginate_button_disabled to buttons which cannot be clicked on in full_buttons pagination, when not using jQuery UI themeing to make styling easier</li>
</ul>
<ul>
	<li>Fix: The change in commit 537e3e9595b4b641f333c43d2d8d575217b1d234 (https://github.com/DataTables/DataTables/commit/537e3e9595b4b641f333c43d2d8d575217b1d234 ) was incorrect - the column widths should be calculated with width() rather than outerWidth(). This can be seen by the misalignment in the tmp table if it is made visible.</li>
	<li>Fix: When calculating the width for tables, need to consider TH elements as well as TD in the body. Also correctly consider complex headers</li>
	<li>Fix: When a column of only TH elements is used in the table it would cause indexing problems for the width calculation due to a getElementsByTagName('td'). Now use the _fnGetTdNodes (slightly modified) to do this.</li>
	<li>Fix: When deferred rendering was on and sort classes off, the header sorting classes weren't being applied - 4927</li>
	<li>Fix: Allow non string and numeric data types in the data source (including null and boolean etc). Add suitable unit tests to sanity check this.</li>
	<li>Fix: Update Ajax data source demo with new location for the data source file</li>
	<li>Fix: The construct <tfoot><tr></tr></tfoot> would break the new table header/footer draw. While strictly this isn't valid HTML, 1.7 and before allowed it - so adding a condition here to allow it in 1.8 as well</li>
	<li>Fix: Call fnRender only once when using using bUseRendered (don't need to call it twice since our internal data cache already has the rendered value stored) since this can cause some confusion with re-writing the data source value - 4871</li>
</ul>    <p><a href="/releases/DataTables-1.8.0.beta.2.zip">Download DataTables 1.8.0 beta 2</a></p>  ]]></description>
	<pubDate>Sun, 08 May 2011 19:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#90</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.8.0 beta 1 released</title>
	<description><![CDATA[<p>I'm very pleased to be able to release the first beta of DataTables 1.8! This update to DataTables brings a wealth of new features, including the ability to consume complex JSON objects as a data source and enhanced flexibility when working with complex headers. A full discussion of new the features is <a href="http://datatables.net/new/1.8">available on the DataTables web-site</a>. Enjoy!</p><p>Release notes for DataTables 1.8.0 beta 1:</p><ul>
	<li>New: Span elements in the header when using JUI themes, now have the class of DataTables_sort_icon applied to them automatically</li>
	<li>New: JSONP example to show how it might be done - 4746</li>
	<li>New: Add deferred loading example</li>
	<li>New: fnOpen will now take either a node, a jQuery object or a string (which was previously the only option) as it's second parameter, for what to enter into the 'details' row that is created - 2488.</li>
	<li>New: Add unit tests for deferred loading with server-side processing</li>
	<li>New: Creation of TR/TD elements when using an Ajax or JS source for the table can be deferred until draw time, when the rows are actually needed now - 4739. This is enabled by setting bDeferRender to true at initialisation time. It provides major benefits for speed in IE when dealing with large tables. However do note that if you are using fnGetNodes() with this enabled, then you will only get nodes which have been rendered.</li>
	<li>New: Unit tests for delayed rendering. Now up to 2500+ unit tests :-)</li>
	<li>New: The ability to customise the property that is read when obtaining Ajax information from the server, for the data to insert into the table. The new initialisation parameter is sAjaxDataProp. It can be used with Ajax sourced data or server-side processing. When Ajax sourced data is used, it can be an empty string in which case it is assumed that an array has been passed into DataTables directly. Note also that it uses the same object data processor as mDataSource, so you can use dot notation to read from nested information (e.g. 'my.data').</li>
	<li>New: Unit tests for mDataSource of various types. Run sanity checks on five possible variations</li>
	<li>New: Unit tests for column visibility with complex headers and fnSetColumnVis</li>
	<li>New: fnGetData now has a second parameter (optionally) to get the column data used by DataTables based on mDataSource</li>
	<li>New: Significant change to how data is handled by DataTables. DataTables now has the ability to deal with complex objects as data sourced, which is particularly useful for dealing with Ajax data, and other data which doesn't belong in the visible table (db IDs for example). See the examples/ajax/ files that are in this commit for examples on how this works. More unit tests and further tidy up to come. Detailed examples will also be added in future - the current examples are mainly for testing</li>
	<li>New: Extend the new deferred loading option to consider Ajax sourced data without server-side processing.</li>
	<li>New: Deferred loading feature for server-side processing. With this feature enabled (controlled by the new initialisation parameter iDeferLoading) DataTables will not make a request to the server for the first page draw - rather it will use the data already on the page (no sorting etc will be applied to it). iDeferLoading is used to indicate that deferred loading is required, but it is also used to tell DataTables how many records there are in the full table (allowing the information element and pagination to be displayed correctly). The intention of this feature is to improve the progressive enhancement foundation and accessibility of DataTables.</li>
	<li>New: Column visibility will now work great with rowspan / colspan in the header and footer! The way this is done is by creating a stored grid of the header/footer information - a grid of rows x columns - which contains information about the cell that should be at each point - regardless of rowspan / colspan. From that information it is then possible to draw the header / footer, minus any column (or row, although that is not used here) as needed. The initialisation and column visibility functions have been updated to account for this. This allows ColVis and the other plug-ins to 'just work' with complex headers.</li>
	<li>New: Initialisation parameter: bSortCellsTop. This parameter allows control over whether DataTables should use the top (true) unique cell that is found for a single column, or the bottom (false - default). This is useful when using complex headers.</li>
	<li>New: Complex headers will now work as would be expected when giving a custom width (sWidth) to a specific column.</li>
	<li>New: New examples for the various features of DataTables 1.8</li>
</ul>
<ul>
	<li>Fix: fnDestory would put the table back into the DOM in the wrong place if the table wasn't the the only (or last) element in the parent (i.e. it was just doing an append) - 4751</li>
	<li>Fix: Sort wrapper on the header wasn't being removed on fnDestroy - 4617</li>
	<li>Fix: Column defs with a string would incorrectly match on a substring class - 4793</li>
	<li>Fix: Tidy up spaces where there should be tabs</li>
	<li>Fix: State saving when using in combination with Ajax sourced data, wasn't restoring the paging state - 4490</li>
	<li>Fix: Remove trailing comma from example for IE6/7</li>
	<li>Fix: When using infinite scrolling and state saving, the saving of the draw start point is wrong, resulting in missed rows. When infinite scrolling is enabled the state should be saved as starting at 0 always. Thanks to Jan (di4bl0s) for picking this up - 4388</li>
	<li>Fix: Commit c01dda2a600571f7c98c introduced a global variable to DataTables in fnGetData and fnGetNodes. This commit fixes that while keeping the introduced feature.</li>
	<li>Fix: Small typo in deferred variable comment</li>
</ul>
<ul>
	<li>Updated: Update the links on all examples to include the new examples for 1.8 and general tidy up of examples</li>
	<li>Updated: Move the various server-side example support scripts into the server_side/scripts directory</li>
	<li>Updated: Complex header behaviour has changed slightly to make the bottom unique TH element the one which has the sorting listener attached. Updated unit test</li>
	<li>Updated: Add support for the complex headers with a scrolling table</li>
</ul>
<ul>
	<li>Removed: From the column definitions array (aoColumns) there is now no longer any need for anThExtra, anTfExtra or nTf. These have now been removed and will cause compatibility issues for any plug-ins which use them.</li>
	<li>Removed: Deferred loading for Ajax sourced data - was incomplete and would be messy to fully implement</li>
</ul>
    <p><a href="/releases/DataTables-1.8.0.beta.1.zip">Download DataTables 1.8.0 beta 1</a></p>  ]]></description>
	<pubDate>Thu, 28 Apr 2011 16:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#89</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedColumns 2.0.0 released</title>
	<description><![CDATA[<p>I'm very pleased to be able to release a big upgrade to FixedColumns - now version 2.0! This is a very exciting release for two reasons - firstly it is a very significant upgrade to FixedColumns itself, with many enhancements and improvements, but also because of the documentation! Perhaps not the most exciting thing in the world for many, but for developers good and accessible documentation is paramount to making software integration easier. As such I've sent a good bit of time creating the documentation for FixedColumns 2, and I plan to use it as a future template for all DataTables related software. Feedback is very welcome! <a href="http://datatables.net/docs/FixedColumns">http://datatables.net/docs/FixedColumns</a></p><p>With regard to FixedColumns itself, this is effectively a rewrite of how it works with focus on speed and flexibility. It will no longer 'stutter' in some bowers due to the new layout method used. It is also now possible to set the row height matching method, which can greatly effect the speed of the draw (using CSS height for example is _very_ fast) and there is more control over the fixed column widths - particularly when resizing the browser window.</p><p>Enjoy!</p><p>Release notes for FixedColumns 2.0.0:</p><ul>
<li>New: FixedColumns 2.0</li>
<li>New: Uses 3x3 grid layout for smooth scrolling</li>
<li>New: Much faster row height matching by default</li>
<li>New: Must improved documentation</li>
<li>New: iLeftWidth (and its right counterpart) can be used to set the width of the columns explicitly</li>
<li>New: Ability to set the row height matching method using sHeightMatch.</li>
<li>New: Callback function is available to let you know when FixedColumns has redrawn, so the DOM can be manipulated: fnDrawCallback</li>
</ul>    <p><a href="/releases/FixedColumns-2.0.0.zip">Download FixedColumns 2.0.0</a></p>  ]]></description>
	<pubDate>Wed, 06 Apr 2011 20:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#88</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7.6 released</title>
	<description><![CDATA[<p>This is a bug fix release of DataTables, which will likely draw the 1.7.x series of releases to a close (unless anything really serious is found!). DataTables 1.7 has proven itself in terms of stability, and this release increases that standing by fixing a number of small bugs and little niggles. I've been taking DataTables to its limits recently (and enjoying it immensely!) and found a few little things which needed to be tidied up along the way. This release includes those fixes and a few other little changes. Enjoy!</p><p>Release notes for DataTables 1.7.6:</p><ul>
	<li>Updated: Bring jQuery bundled with DataTables to current release - 1.5.1</li>
	<li>Updated: jEditable source to v1.7.1</li>
	<li>Updated: Server-side example scripts brought up-to-date</li>
</ul>
<ul>
	<li>Fix: The instance that is stored (oSettings.oInstance) could contain muliple tables in a single instance, when tables are created with a selector that includes multiple tables. This could make API access a bit more tricky (3963) so now store a unique instance of the DataTables object for each individual instance.</li>
	<li>Fix: fnGetData and fnGetNodes to return null when a row number is passed in that is out of the table's range.</li>
	<li>Fix: fnUpdate wasn't updating cells which were hidden by fnSetColumnVis or bVisible. It does now.</li>
	<li>Fix: The scrolling header container should really be width:100% rather than a fixed width. The pixel width was trying to do width:100% and succeeding, but needing to be calculated rather than done natively.</li>
	<li>Fix: Remove all added events in fnDestroy, otherwise DataTables will leak memory like crazy when the destroy function is called</li>
	<li>Fix: Namespace all events added via jQuery (using the 'DT' namespace) to make events easy to remove in fnDestroy.</li>
	<li>Fix: When unbinding DT namespaced events in fnDestroy, also unbind anything attached to the wrapper element</li>
	<li>Fix: Internal footer height for scrolling table should be set to 0, just like the header is</li>
	<li>Fix: JUI CSS styles were using only JPG images rather than PNG for standard paging</li>
	<li>Fix: Table width calculations need to be done on the outerWidth, rather than 'inner', otherwise things simply don't add up (and IE get's a bit confused - fair enough).</li>
	<li>Fix: With all warnings enabled in PHP, there were certain DataTables initialisations which could trigger warnings in the example server porecessing script.</li>
	<li>Fix: Modify unit tests for all warnings enabled in PHP and remove depreciated function calls</li>
	<li>Fix: Fix: When removing stripe classes, look only at the direct tbody tag, not nested which could remove classes you want to keep!</li>
</ul>    <p><a href="/releases/DataTables-1.7.6.zip">Download DataTables 1.7.6</a></p>  ]]></description>
	<pubDate>Wed, 02 Mar 2011 22:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#87</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColVis 1.0.4 released</title>
	<description><![CDATA[<p>This new release of ColVis sees a couple of new features, new examples and a number of bug fixes. The biggest new feature is the addition of a 'restore to original state' button (bRestore). There is also now a callback function for ColVis to let you know when a column's state has changed, which can be useful for controlling multiple tables with the same columns, as shown in one of the new examples.</p><p>Release notes for ColVis 1.0.4:</p><ul>
	<li>New: bRestore - Option to show a restore button in the drop down which will restore the original column visibility settings from when the table was initialisated</li>
	<li>New: sRestore - Button text for the restore button</li>
	<li>New: Example showing how fnStateChange can be used with a single instance of ColVis to control multiple tables with identical column structure.</li>
	<li>New: Initialisation option fnStateChange. Provides two parameters when called - 1. the column integer being changed, 2. the visibility state it is going to</li>
	<li>New: Alternative styling example - position the element above the DataTables' scroll bar</li>
</ul>
<ul>
	<li>Updated: Initialisation will now automatically store a global instance of the object</li>
</ul>
<ul>
	<li>Fixed: Match the mouseover visible code to what is actually being used - 3402</li>
	<li>Fixed: When using excluded columns, ColVis would try to remove a 'null' element from the DOM (JS error), when fnRebuild is called - 3218</li>
</ul>    <p><a href="/releases/ColVis-1.0.4.zip">Download ColVis 1.0.4</a></p>  ]]></description>
	<pubDate>Wed, 02 Mar 2011 22:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#86</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.1 released</title>
	<description><![CDATA[<p>ColReorder has been on version 1.0.0 since October last year now, and this release fixes a couple of little bugs which have cropped up since then. The main one is that ColReorder now works correctly with jQuery UI theming in DataTables. This release also includes a couple of new demos showing ColReorder in action.</p><p>Release notes for ColReorder 1.0.1:</p><ul>
	<li>New: Example showing individual column filtering with column reorder and also ColVis</li>
	<li>New: Demo of multi-column filtering with ColVis and ColReorder, showing use of multiple TR lines in THEAD</li>
</ul>
<ul>
	<li>Fixed: Added clarification of the use of the sColumns parameter on the server-side</li>
	<li>Fixed: Use 'parents' rather than 'parent' to traverse up the DOM tree to get the element needed for the sorting. An error could occur when using jQuery theming and clicking on the span element to sort - 3218</li>
	<li>Fixed: ColReorder will now move around multiple rows in the THEAD and TFOOT, where the child elements are TH or TD. Note that this DOES NOT take into account COLSPAN and ROWSPAN! The number of cells MUST be COLUMNS * ROWS (in the header) in order for this to work - otherwise the behaviour is undefined.</li>
	<li>Fixed: jQuery UI themes did not work with ColReorder due to the extra markup which was not taken into consideration. Extra markup is now considered in the TH cells and a new jQuery UI theme example has been added.</li>
	<li>Fixed: Update FixedHeader plug-in which it is attached to a DataTable</li>
</ul>    <p><a href="/releases/ColReorder-1.0.1.zip">Download ColReorder 1.0.1</a></p>  ]]></description>
	<pubDate>Wed, 02 Mar 2011 22:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#85</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.0.1 released</title>
	<description><![CDATA[<p>This release of TableTools 2.0.1 brings a number of important bug fixes and minor new features to the suite, making this quite an exciting update. New features include the ability to customise the selection class used for the row selecting options in TableTools, the ability to customise saved PDFs a bit more (title, message, page size and orientation. There is also a new API method (fnResizeButtons and it's companion fnResizeRequired) which will resize Flash buttons if needed (for example if initialised in a hidden element - i.e. a tab). Finally for the new features there is 'bSelectedOnly' for the copy, and save buttons which allows the output to be limited to only selected rows if set to true.</p><p>In terms of bug fixes, there are two important fixes: firstly collections could suffer from not being able to save a file more than once in IE, the second fix addresses the use of save buttons in collections which could under certain circumstances cause some browsers to freeze.</p><p>There are a number of other smaller changes as well - see the release notes below.</p><p>Release notes for TableTools 2.0.1:</p><ul>
	<li>New: Added sSelectedClass to the initialisation options and defaults to allow customisation of the class</li>
	<li>New: Added bSelectedOnly option for buttons which make use of fnGetTableData - with this you can limit the data collection to only selected rows</li>
	<li>New: API method (fnResizeButtons) to re-calculate the size of flash buttons. This is useful for when initialising TableTools when it is hidden (display:none) since sizes can't be calculated at that time.</li>
	<li>New: Add new options for PDF export: "sPdfOrientation" which can be 'portrait' or 'landscape' to alter the orientation of the output PDF, "sPdfSize" which can be 'A[3-4]', 'letter', 'legal' or 'tabloid', and "sPdfMessage" which is a free text input that will show at the top of the table.</li>
	<li>New: New example showing how to add customised text to the output PDF and also how to change the PDF's orientation</li>
	<li>New example: Showing multiple table initialisation with a single call to $().dataTable() - 3963</li>
</ul>
<ul>
	<li>Changed: A warning is now given if you try to use the version of ZeroClipboard which came with TableTools 1, with TableTools 2 - as they are incompatiable, and odd things happen in Firefox and IE. Please ensure that you use the version of ZeroClipboard which comes with TableTools 2, with TableTools 2!</li>
	<li>Changed: ZeroClipboard version to make it clear it is a TableTools 2 script and also remove the default moviePath since this is a source of possible confusion and is always set by TableTools.</li>
	<li>Changed: By default the footer is no longer included in the PDF export</li>
	<li>Changed: Background colour for the header is now a light grey rather than light blue</li>
	<li>Changed: Added padding around the header text to make it standout more</li>
</ul>
<ul>
	<li>Fix: Visible sample code was out of date - the running code was correct - updated.</li>
	<li>Fix: Missing the 'sNewline' option from the ajax button type.</li>
	<li>Fix: When copying text the number of rows copied calculation needs to depend on if there is a footer present or not (otherwise the number of rows TableTools says it has copied can be off by one).</li>
	<li>Fix: Alert stating the number of rows copied was off by one</li>
	<li>Fix: Comment updated for the correct file name with the compile command</li>
	<li>Fix: Save file using FileReference is non-blocking - need to use an event listener to know when it is done. This could lock up browsers and cause some real confusion when using collections</li>
	<li>Fix: Use Unix LF rather than Mac Classic for new lines!</li>
	<li>Fix: Workaround for AS / JS bridge callbacks being unassigned when a Flash movie (or one of its parents) is hidden by display:none. I'm far from proud of this, however, when a Flash movie is hidden in IE (i.e. display:none) then all callbacks are removed, and there is no way to tell that this has happened! Javascript can't tell us since there are no callbacks - so we need to add them again and again... Fortunatly Flash doesn't allow multiple callback functions to be used with each callback name, it just uses the provided function, so the only thing we use for this workaround is a couple of clock cycles.</li>
	<li>Fix: PDF title wasn't being shown - it is now.</li>
	<li>Fix: Remove the Javascript error for is the SWF isn't detected. Nice idea, but didn't really work in practice due to inconsistencies in browsers and handling the collection buttons</li>
</ul>    <p><a href="/releases/TableTools-2.0.1.zip">Download TableTools 2.0.1</a></p>  ]]></description>
	<pubDate>Sat, 26 Feb 2011 15:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#84</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedColumns 1.1.0 released</title>
	<description><![CDATA[<p>This is a fairly large update to FixedColumns with a number of new options and enhancements. The first to look at is the ability to fix in place columns on the right hand side of the table (for example this might be used for CRUD controls). One or more right hand columns can now be fixed in place, and this can be used in tandem with the existing left hand fixing. The other major change is the the scrolling is now much smoother when using only one of x or y scrolling (work is progressing an improvements for using both together!).  A number of new examples are also available and lots more! Full release notes below.</p><p>Release notes for FixedColumns 1.1.0:</p><ul>
	<li>New: Support rowspan for FixedColumns. Added example showing this running</li>
	<li>New: When Y-scrolling is not used in DataTables (i.e. X scrolling only) then we can position the floating columns differently, meaning their position doesn't need to be updated while scrolling. The upshot of this is that scrolling is smooth in Firefox and IE.</li>
	<li>New: Ability to fix right hand columns in place (using the iRightColumns parameter). Like the left hand columns parameter, you can fix one or more columns to the right handside of the table, giving the ability to give some fairly cool tables!</li>
	<li>New: fnUpdate method which can be used to update the table headers and footers - this is no longer done automatically on every draw.</li>
	<li>New: Example (col_filter.html) showing individual column filtering</li>
	<li>New: Support for multiple rows in the THEAD and TFOOT elements. Like ColReorder and DataTables, this option does NOT support COLSPAN and ROWSPAN, however, can give some very nice effects, like that showing in the column filter example.</li>
</ul>
<ul>
	<li>Optimisation: Much faster drawing by making the assumption that height is the only part of outerHeight which will vary for row heights (i.e. the margin and padding on elements is all the same).</li>
	<li>Optimisation: When drawing both left and right columns only calculate the height of the row once</li>
</ul>
<ul>
	<li>Updated: The initialisation parameter 'columns' is changed to 'iColumns' for consistency with the rest of hte DataTables suite. Note that 'columns' is still accepted for backwards compatibility and will continue to work as before.</li>
	<li>Updated: New examples for the right hand column fixing</li>
	<li>Updated: Target release version now 1.1.0</li>
	<li>Updated: In order to preserve information that might be shown in a header is not needlessly "killed". A good example is event handlers which are attached to the elements in the cloned elements. The sizes are still correctly set on every draw, and fnUpdate is provided for if you do want to reclone the header.</li>
</ul>
<ul>
	<li>Fix: Copy classes from the original element to the new when not doing a full clone on the header / footer</li>
	<li>Fix: Visible code match running code</li>
	<li>Fix: Height was not being correctly copied to the cloned header / footer as a result of the change to allow multiple TR elements in these nodes. It is now.</li>
</ul>
    <p><a href="/releases/FixedColumns-1.1.0.zip">Download FixedColumns 1.1.0</a></p>  ]]></description>
	<pubDate>Sun, 20 Feb 2011 08:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#83</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 2.0.0 released</title>
	<description><![CDATA[<p>I'm absolutely delighted to be able to release TableTools 2! It's been quite a while in coming, but the code is now complete, the documentation is online and the download is primed and ready for you to hit it!</p><p>TableTools 2 is a complete rewrite of the original v1 software providing <i>much</i> greater flexibility of the buttons TableTools can set up and including a couple of great new features. The first of those features is user row selection - when initialising TableTools you can now select a 'single' or 'multi' (the default is 'none') row selection, allowing easy interaction with the table. The other major new feature is PDF export. While the visual appearance of the file is quite basic, it can be modified as you need using the TableTools source.</p><p>Despise these new features, the real "meat" in TableTools 2 is it's super configurable buttons. TableTools 2 is now a real toolbar for DataTables which can be extended to provide custom buttons beyond the default ones so easily now. There are also a lot of built-in button types which can be readily extended to do exactly what you want.</p><p>Possibly the best part of this release is that TableTools now has <a href="http://datatables.net/extras/tabletools/">detailed documentation</a>! Actually, with this release all first-class plug-ins for DataTables enjoy the same level of documentation as DataTables itself!</p><p>Enjoy!</p><p>Release notes for TableTools 2.0.0:</p><ul>
<li>New release - TableTools 2!</li>
<li>New: PDF export</li>
<li>New: Row selection (none, single or multi)</li>
<li>New: Text buttons</li>
<li>New: Ajax buttons</li>
<li>New: Super configurable buttons which can be easily modifed</li>
<li>New: 12 examples detailing how TableTools can be used</li>
<li>New: A comprehensive API for dealing with row selection and other operations</li>
<li>New: Detailed documentation</li>
<li>New: Initialisation through the DataTables initialisation object</li>
<li>New: Button collections - group buttons into a drop down list</li>
<li>New: jQuery UI theme integration</li>
<li>New: Ability to alter the default settings, make multiple instance initialisation trivial</li>
<li>New: Support for multiple toolbar instances for a single DataTable</li>
<li>New: So much more! Check out the documentation and examples :-)</li>
</ul>    <p><a href="/releases/TableTools-2.0.0.zip">Download TableTools 2.0.0</a></p>  ]]></description>
	<pubDate>Tue, 04 Jan 2011 18:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#82</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7.5 released</title>
	<description><![CDATA[<p>It has been a little while in coming this release of DataTables, but it is, I hope you will agree, a nice little upgrade to the 1.7 series. The primary change in this release is a rewrite of the sorting algorithm used by DataTables to be much more efficient (particularly in IE). No longer are there two sorting methods (one for AIR and one for everything else), there is just one method which provides everything DataTables needs - multiple column, alternative column, plug-in support, stable sorting etc etc.</p><p>Other improvements include a number of bug fixes and tidy up points, as well as the introduction of a new initialisation parameter bScrollAutoCss - this allows you to control the scrolling styles via CSS rather than having DataTables do it automatically. Also of note is that the column visibility options will now take into account multiple rows in the header and footer.</p><p>Enjoy!</p><p>Release notes for DataTables 1.7.5:</p><ul>
	<li>New: Add bScrollAutoCss option (default true). This allows you to control the scrolling styles with CSS, where as normally DataTables will set (and override) the styles itself. This is useful for if you want to have a scroll bar showing at all times (normally auto).</li>
	<li>New: Column visibility options in DataTables (bVisible and fnSetColumnVis) now take into account more than one row in THEAD and TFOOT. Please note that colspan and rowspan are NOT supported when using column visibility options in the header and footer, and will very likely have effects which are not at all desirable. As such there are conditions on this use (note that if you only have one row in the header / footer, then this has no impact), specifically the number of cells in the header / footer much be equal to the columns * rows (in each one). This way DataTables can accurately add and remove the cells as needed. The cells may be either TH or TD elements, but DataTables still requires at least one TH element for each column.</li>
</ul>
<ul>
	<li>Performance: Re-written the sorting implementation so it doesn't use either eval() of $.inArray(). inArray was found to have a serious negative effect on IE which counts operations to give the 'script is running slow' error message - the new implemention uses a value / key reverse mapping to make the look up as fast as a single object parameter retreival. Furthermore, I've done some optimisation and feature completeness work on the non-eval version of the sorting (previously the AIR sorting method) and I've found this to be at least as good (faster in some cases) than the old eval() sort, so this is now the default and only sorting method DataTables provides - 2922</li>
</ul>
<ul>
	<li>Updated: fnAdjustColumnSizing when called with 'false' as the first (and only) parameter will now apply the calculated column sizes to the table when scrolling is being used. This allows a non-Ajax update to occur if using server-side processing. Thanks to Cat Weismann for this patch.</li>
	<li>Updated - now using jQuery 1.4.4 as the copy of jQuery included in the DataTables distribution. Passes all unit tests</li>
	<li>Updated: Previously when multiple cells were detected as unique to a column the last one would be given priority (i.e. sorting event handler etc). This is now no longer the case and the first will take priority.</li>
	<li>Updated: Reliability of unit tests for infinite scrolling with server-side processing in non-webkit browsers</li>
</ul>
<ul>
	<li>Fixed: fnInitComplete was not the last thing to be executed when using DOM source. IT was possible that you could set sAjaxSource in fnInitComplete which would then trigger DataTables to do an Ajax call incorrectly.</li>
	<li>Fixed: fnDrawCallback was actually the first of the draw callback functions that was called (the internal callbacks were called later). This was incorrect and we now loop over the array to get the order we want. At some point in future it might be required to have an ordering if these draw callbacks become interdependant.</li>
	<li>Fixed: The behaviour for complex headers has been altered slightly for complex headers in that only the first of non-unique TH elements will be click to sort-able. Unit test update needed as this is different behaviour from before when all elements belonging to a column were click to sort.</li>
	<li>Fixed: When using server-side processing and having called fnDestroy, don't make another XHR to the server as the data won't be used - 3375</li>
	<li>Fixed: Correctly add the sClass to the TH elements in the header</li>
	<li>Fixed: Remove bold styling when using JUI as it looks out of place in the table controls</li>
	<li>Fixed: Remove the 'sNames' parameter that was introduced for server-side processing in 1.7.4. The parameter 'sColumns' actually performs exactly this task already. Doh. Also update the example PHP to take this into account - 3218</li>
</ul>    <p><a href="/releases/DataTables-1.7.5.zip">Download DataTables 1.7.5</a></p>  ]]></description>
	<pubDate>Wed, 15 Dec 2010 22:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#81</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7.4 released</title>
	<description><![CDATA[<p>This latest release of DataTables seems a number of improvements across the board. Along with a number of bug fixes, there are also a few performance improvements and and couple of minor new features. All thought the list of changes is fairly long, each individual change is fairly small, and this is a cumulation of a lot of work on DataTables and it's first class plug-ins over the last month. Enjoy this latest and greatest version of DataTables!</p><p>Release notes for DataTables 1.7.4:</p><ul>
	<li>New: Column names, if defined, are submitted to the server-side for server-side processing. This is useful for the column ordering information, since it is possible for the server to be expecting a different column order from what DataTables is using - specifically with the column indexes such as sSearch_{i}.</li>
	<li>New: Additional ability to control state saving through two new initialisation parameters "fnStateLoadCallback" and "fnStateSaveCallback". Documentation to be updated on datatables.net at 1.7.4 release time. Basically now you can add parameters to be save, and override parameters whic have been saved. Also useful for plug-ins which need to save state.</li>
	<li>New: fnSetColumnVis now has the option to cancel the redraw by passing the third parameter to the function as false (default is true).</li>
</ul>
<ul>
	<li>Updated: From the previous commit sNames sent from the client to server is now a comma seperated list of sNames and is always sent regardless of if names are given or not. This matches the sName formatting for the server-to-client return.</li>
	<li>Updated: A warning is now given if you pass in aTargets (for aoColumnDefs) as something other than an array (since this is not valid).</li>
	<li>Updated: Remove unused settings class variable iDefaultSortIndex (the was long ago replaced with aaSorting</li>
	<li>Updated: Store a complete representation of the column visibility state in aoData[]._anHidden (i.e. put in nulls for elements which are visible) to make manipulation much easier.</li>
	<li>Updated: Slightly faster code for _fnStringToCss - thanks to sd_zuo, 3036</li>
	<li>Updated: Upgrade to jQuery 1.4.3</li>
	<li>Updated: Optimisation on fnDeleteRow to simply remove the search array entry, rather than rebuilding the whole array, also on fnUpdate to only rebuild the single row, rather than the entire thing, and finally fnAddData - allow the redraw to update the search array.</li>
	<li>Updated: Trivial change to update hte favicon used by the DataTables examples from the SpryMedia icon to DataTables</li>
	<li>Updated: server-side processing example script updated to use json_encode, so this version will now require PHP 5.2 or newer. A version for older PHP versions can be found here: http://datatables.net/development/server-side/php_mysql4</li>
	<li>Updated: Server-side processing script for column re-ordering has been updated to take account of sNames parameter which is sent in from DataTables, and also brought up to date with the main server-side processing script.</li>
</ul>
<ul>
	<li>Fixed: Couple of minor jsLint highlighted errors - nothing funcational, just tidy code.</li>
	<li>Fixed: When state saving, it was possible to have a situation where by a table would contain 'n' columns, the user would sort on the last column and then the html is modifed to only have 'n-1' columns. This resulted in a JS error when DataTables tried to restore sorting on the removed column. Now do a sanity check to ensure the sorting column is present, and if not add sorting on column 0.</li>
	<li>Fixed: When pressing a meta key (i.e. an arrow key) in the search box and the search value didn't change, this was casuing a redraw to occur where one was not needed - 2933</li>
	<li>Fixed: IE6 and IE7 were having issues with scroll X and jQuery UI theming - specifically the elements which should have been hidden by the header scrolling were visible. This is fixed with a position: relative - 3180</li>
	<li>Fixed: Highlight via CSS example had incorrect documentation - 3155</li>
	<li>Fixed: jQuery 1.4.3 seems a lot more keen to call the $.ajax error handler, which was causing the unit tests to alert errors a lot when dealing with Ajax calls, since it can make multiple calls at the same time. I've altered the check in the default error handler to look for a prase error before alerting now.</li>
	<li>Fixed: Unit test 4_server-side "Filter 'nothinghere' - info" was failing as the information element of the table was incorrectly reporting that "1" record was being shown (start) when the filter applies ensured that no records were actually being shown. This was due to a strong type check against a string/number returned from the server-side processing script and a number/0. Fix is to parseInt().</li>
	<li>Fixed: Unit tests could fail due to interaction between state saving cookies. Now when tests which state save end, they must call fnCookieDestroy.</li>
	<li>Fixed: Processing indicator wasn't being shown during initialisation for non-Ajax sourced data, if it was enabled</li>
	<li>Fixed: Check also for pt units as well as the other CSS options</li>
	<li>Fixed: Sorting disabled classes were not being correctly applied if sorting was disabled. This was particularly obvious with jQuery UI theming - 3064</li>
	<li>Fixed: server-side processing demo script now takes account of strings which new line characters</li>
	<li>Fixed: Table could expand on each draw, incorrectly, due to a rather convoluted mixture of the table width being 100% and the outer header not having a width set (so when the table was cloned into the header, it would expand to take up the width of the inner header element, which was the outer + the scrollbar width).</li>
</ul>    <p><a href="/releases/DataTables-1.7.4.zip">Download DataTables 1.7.4</a></p>  ]]></description>
	<pubDate>Sat, 30 Oct 2010 07:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#80</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColReorder 1.0.0 released</title>
	<description><![CDATA[<p>Presenting a new first class plug-in for DataTables - ColReorder. This plug-in allows the end user to modify the column order of a table by drop and drag of column headers. It interfaces well with other DataTables plug-ins such as FixedColumns, FixedHeader and ColVis and also state saving (and all other features) in DataTables. Please note that ColReorder requires DataTables 1.7.4. Enjoy!</p><p>Release notes for ColReorder 1.0.0:</p><ul>
	<li>New first class plug-in for DataTables allowing the user to reorder columns as they require</li>
</ul>    <p><a href="/releases/ColReorder-1.0.0.zip">Download ColReorder 1.0.0</a></p>  ]]></description>
	<pubDate>Sat, 30 Oct 2010 07:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#79</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 2.0.4 released</title>
	<description><![CDATA[<p>A small up welcome update to FixedHeader. This release has two bug fixes in it, the first preventing a JS error that could occur under certain circumstances, and the second a port of the row height code from ColVis, such that fixed columns now have their height matches as well as width.</p><p>Release notes for FixedHeader 2.0.4:</p><ul>
	<li>Fixed: Row heights are now also copied across when showing a fixed column (left and right), rather than a misalignment - 3151</li>
	<li>Fixed: Fixing the left or right column for a table without a footer would cause a Javascript error due to the reference of that element without a check for it's existence - 2663.</li>
</ul>
    <p><a href="/releases/FixedHeader.2.0.4.zip">Download FixedHeader 2.0.4</a></p>  ]]></description>
	<pubDate>Sat, 30 Oct 2010 07:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#78</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColVis 1.0.3 released</title>
	<description><![CDATA[<p>Just a single new feature in this release of ColVis - an API function (fnRebuild) which when called will called will rebuild the ColVis menu based on the information in the table header at the time of being called. useful for updating table headers and reordering columns.</p><p>Release notes for ColVis 1.0.3:</p><ul>
	<li>New: Add API function (and basic infrastructure to allow API methods to be added) which will rebuild the buttons in the collection (for example if you modify the title of a column). The API method is "fnRebuild" and accepts one parameter (optinally) - the DataTables object instance. If no instance is given, all tables which are using ColVis will be rebuilt.</li>
</ul>    <p><a href="/releases/ColVis-1.0.3.zip">Download ColVis 1.0.3</a></p>  ]]></description>
	<pubDate>Sat, 30 Oct 2010 07:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#77</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedColumns 1.0.1 released</title>
	<description><![CDATA[<p>Single the original release of FixedColumns, there has been a lot of discussions in the forums about a few issues with it, and how it could be improved. This release is a result of those discussions, bug fixes and new features - thanks to everyone for their contributions! A minor version update, but it represents a good step forward for the ColVis plug-in. Enjoy.</p><p>Release notes for FixedColumns 1.0.1:</p><ul>
	<li>New: Support for more complex headers. The fixed columns must still be unique (i.e. no colspan), but it is now possible to have multiple rows in the header (again, the fixed columns must rowspan the header. Also aplies to the footer. For example the following HTML is valid:<thead><tr><th rowspan="2">Rendering engine</th><th rowspan="2">Browser</th><th colspan="2">Machine</th><th rowspan="2">CSS grade</th></tr><tr><th>Platform(s)</th><th>Engine version</th></tr></thead></li>
</ul>
<ul>
	<li>Fixed: When the table has no records in it, don't put in a fixed body column</li>
	<li>Fixed: Issue with IE and the height of the header / footer elements (noted when using rowspan - 2815). Need to apply the height of the table to the TR element, and not the cell or the table.</li>
	<li>Fixed: Issue with IE not being able to get the border width from jQuery's css query. Now use jQuery to get the inner and outer hight and substract the two.</li>
	<li>Fixed: Border width wasn't being included in the box model "fix" needed for some browsers, which could result in misalignment.</li>
	<li>Fixed: Firefox was having issues with the header and footer heights. Apply the height to the table rather than the cell now.</li>
	<li>Fixed: Table rows which have a height greater than that of the fixed column are now copied across to the fixed table in order to maintain the presentation. This needs to take into account the behaviour of the various browsers, so appologies for the browser detection code.</li>
	<li>Fixed: Oops - accidentally committed debug html</li>
	<li>Fixed: Same IE6 issue as before, just on the footer this time. The scolling element would overflow.</li>
	<li>Fixed: Issue with IE6 where having overflow: hidden and position: relative appears to not work. Fortunatly we can just apply the position relative to the parent. Also in this commit is comments out code for setting the height of the cells - although this doesn't work in Firefox at the moment - hence the commented out...</li>
</ul>    <p><a href="/releases/FixedColumns-1.0.1.zip">Download FixedColumns 1.0.1</a></p>  ]]></description>
	<pubDate>Mon, 18 Oct 2010 09:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#76</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColVis 1.0.2 released</title>
	<description><![CDATA[<p>A small but welcome update to CosVis which addresses a couple of issues which have been brought to light. Specifically IE6 is now correctly supported and a Javascript error which some were encountering is fixed.</p><p>Release notes for ColVis 1.0.2:</p><ul>
	<li>Fixed: It was possible to get a Javascript error (nButton undefined) due to an incorrect variable being used.</li>
	<li>Fixed: When DataTables initialised two or more tables with a single call, ColVis will incorrectly operating on the first table all the time, thought the fnSetColumnVis DataTables API function. The fix is to find and set the API index needed for DataTables to operate on the correct table.</li>
	<li>Fixed: Wasn't working in IE6 due to the fact that it is not possible to set the checked attribute of a hidden checkbox IE6 (well it is, it just isn't visually shown). So now call the draw function when visible for IE6.</li>
</ul>    <p><a href="/releases/ColVis-1.0.2.zip">Download ColVis 1.0.2</a></p>  ]]></description>
	<pubDate>Mon, 18 Oct 2010 09:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#75</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7.3 released</title>
	<description><![CDATA[<p>As time rolls on it's time for another DataTables release :-). Version 1.7.3 here focuses mainly of fixing a few bugs which have come to light and making a few of the examples more accessible. Also included in this new distribution are the ColVis and FixedColumns plug-ins. Enjoy.</p><p>Release notes for DataTables 1.7.3:</p><ul>
	<li>New: Added FixedColumns plug-in to the 'extras' in the distribution.</li>
	<li>New: Added ColVis plug-in to the 'extras' in the distribution.</li>
</ul>
<ul>
	<li>Updated: server_side/row_details.html and api/row_details.html both now used live events to make life easier.</li>
	<li>Updated: Added link to Marko's post in the forum for the input multi filter example, giving the code for how to restore the values when state saving is enabled. Thanks Marko - 2864</li>
	<li>Updated: Modify the editable example to give the column information as well as row to the server</li>
	<li>Updated: Build system has been significantly improved to aid packaging (only really effects me since the build system isn't currently public - although it might be soon given that it's much cleaner now!)</li>
</ul>
<ul>
	<li>Fixed: When infinite scrolling, DataTables would clear it's internal cache of rows on every draw, when server-side processing was being used. This could result in fnGetNodes giving only a subset of the nodes which are visible, rather than the full set (which it now does).</li>
	<li>Fixed: When initialising multiple tables it was possible (no aoColumns given, and different number of columns) for DataTables to get confused and think one table's columns belong to another (due to a non-unique array in the initialisation object which was being wrongly used).</li>
	<li>Fixed: Stable sorting algorithm was slightly wrong when dealing with values which match each other. The idea for the stable sort is that the position shouldn't change so it should do a numeric sort of the row's current positions (the comment reflected this...) but it was in fact doing the sort on the value (aoData index), thus the "stable sort" position would reflect the original starting positions of the data, rather than the current position. The fix is to correctly look up the position of the index in the array and sort on that position (note the array is cloned, so it doesn't try to sort the dynamically sorted positions, which would make the sort unstable) - 2746</li>
	<li>Fixed: Add a sanity check to ensure that the node given to DataTables is in fact a table - 2343</li>
	<li>Fixed: State saving when there were no column being sorted was broken - 2914</li>
	<li>Fixed: If a TR height was specified via css globally (for example tr{height:20px}) this would cause the hidden header and footer in scrolling tables to be shown. Added override by CSS style for this - 2765</li>
	<li>Fixed: Now restore the width of the original table on fnDestory. This is needed for when using sScrollXInner, and on other occasions where using DataTables will force the table to be wider than it otherwise would be - 2840</li>
</ul>    <p><a href="/releases/DataTables-1.7.3.zip">Download DataTables 1.7.3</a></p>  ]]></description>
	<pubDate>Thu, 30 Sep 2010 21:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#74</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColVis 1.0.1 released</title>
	<description><![CDATA[<p>There were a couple of small issues with ColVis and IE, which are addressed in this release.</p><p>Release notes for ColVis 1.0.1:</p><ul>
<li>Fixed: IE was having problems dealing with innerHTML and an input element</li>
<li>Fixed: IE having trouble with window width</li>
<li>Fixed: IE having issues with a transparent png and animating the opacity</li>
</ul>    <p><a href="/releases/ColVis-1.0.1.zip">Download ColVis 1.0.1</a></p>  ]]></description>
	<pubDate>Wed, 22 Sep 2010 08:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#73</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedColumns 1.0.0 released</title>
	<description><![CDATA[<p>When presenting your end-users with a table which makes use of the scrolling options in DataTables, it can be very useful to fix (freeze) the left most column in place. This ability is now provided by this new plug-in (for non-scrolling tables, FixedHeader is still supported, and will continue to be so). <a href="http://datatables.net/release-datatables/extras/FixedColumns/">See an example here</a>.</p><p>Release notes for FixedColumns 1.0.0:</p><ul>
<li>Initial release of FixedColumns</li>
</ul>    <p><a href="/releases/FixedColumns-1.0.0.zip">Download FixedColumns 1.0.0</a></p>  ]]></description>
	<pubDate>Mon, 20 Sep 2010 08:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#71</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>ColVis 1.0.0 released</title>
	<description><![CDATA[<p>ColVis is a new "first class" plug-in for DataTables which presents the end user with options of enabling and disabling visibility of columns in a given table. Presenting a button, and then a list when activated (either click or mouse over) the list and be positioned and styled exactly as you need. Columns can also be excluded from the list if you wish one or more columns to always be shown or hidden. <a href="http://datatables.net/release-datatables/extras/ColVis/">See an example here</a>.</p><p>Release notes for ColVis 1.0.0:</p><ul>
<li>Initialise release of ColVis</li>
</ul>    <p><a href="/releases/ColVis-1.0.0.zip">Download ColVis 1.0.0</a></p>  ]]></description>
	<pubDate>Mon, 20 Sep 2010 08:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#70</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7.2 released</title>
	<description><![CDATA[<p>This latest version of DataTables sees a number of bug fixes, but possibly of more interest to many is the new infinite scrolling feature. With infinite scrolling, DataTables will load data on-the-fly as the user scrolls the table. This will work for server-side and client-side processing, without any modification of your scripts! Simply set the new initialisation parameter bScrollInfinite to true.</p><p>Other goodies include the ability to set an ID on elements created by sDom and much more control over jQuery UI themed sorting icons.</p><p>Release notes for DataTables 1.7.2:</p><ul>
	<li>New: Infinite scrolling! Building on the scrolling feature set that was introduced with 1.7, you can now have DataTables do infinite scrolling (bScrollInfinite: true), where data is loaded dynamically as and when needed by the user's interaction with scrolling. Infinite scrolling can be used by all DataTables' supported data sources without modification.</li>
	<li>New: The distance from the end of the current scrolling container before new data is added (with infinite scrolling) can be controlled with iScrollLoadGap (which is a numeric value in pixels).</li>
	<li>New: Example (basic_init/scrolling_y_infinite.html) to show how infinite scrolling can be used.</li>
	<li>New: When using jQuery UI theme option, DataTables will wrap the contents of sortable TH element in a DIV which can then be used to position the sorting arrow accurately across all columns. The required CSS has been added to the CSS files to show this effect.</li>
	<li>New: It is now possible to have elements created by sDom have an ID assigned to them as well as a class. An extension of the previous class only syntax you can now do something like "#id.class", "#id" or "class" - 2666</li>
</ul>
<ul>
	<li>Fixed: iDraw was not being incremented for a draw that did not use server-side processing.</li>
	<li>Fixed: Column width calculations are now done after DataTables has done it's required DOM manipulation. This means that column width calculations are more accurate and take account of dynamic data.</li>
	<li>Fixed: DataTables would unnecessarily add mousedown and selectstart event handlers to TH elements which aren't used for sorting. This is used on sorting columns to prevent text selection when clicking the element to perform sorting - 2668</li>
	<li>Fixed: fnInitComplete was being called too early for server-side processing. It is now called after the first draw is complete, like the other data sources.</li>
	<li>Fixed: Destroying a scrolling table was not correctly reassembling the table from it's component parts which are split up for scrolling.</li>
	<li>Fixed: Incorrect reference for state saving cookie data string which would cause an error in jQuery 1.3 and before</li>
	<li>Fixed: When destroying a table which had been filtered to no results, the 'No results' row was not automatically removed, returning in the table being unable to be re-initialised (since it has a colspan).</li>
	<li>Fixed: Now use en/decodeURIComponent() for state saving cookie with the filtering strings - 2608</li>
	<li>Fixed: Column visibility was not being saved when calling fnSetColumnVis. It would require another draw to save the state before - 2635.</li>
	<li>Fixed: Column visibility was not be restored from the state saving cookie. A small tidy up of the column creation code as well - 2635.</li>
	<li>Fixed: Data casting is now done after fnRender is called. This means that if you pass fnAddData a number, you'll get a number, and not the number cast as a string - 2611.</li>
	<li>Fixed: The 'rewind' of the display start point wasn't being calculated in the same way for server-side processing and client-side. This was due to a bug in the calculation of fnDisplayEnd for server-side - 2600.</li>
</ul>    <p><a href="/releases/DataTables-1.7.2.zip">Download DataTables 1.7.2</a></p>  ]]></description>
	<pubDate>Tue, 14 Sep 2010 20:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#69</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>AutoFill 1.1.0 released</title>
	<description><![CDATA[<p>A quick turn around for AutoFill 1.1, which adds a couple of cool new features. Firstly, AutoFill will now automatically scroll the window, or the DataTables (if being used with DataTables' scrolling option) as you drag a fill handler. Secondly, there are now four callback functions which can be used to control the interaction and actions of AutoFill. They can also be used to update a server database after a fill. Thirdly, aiColumns as an option has gone and been replaced with aoColumns and aoColumnDefs which work exactly the same way as DataTables. Enjoy!</p><p>Release notes for AutoFill 1.1.0:</p><ul>
<li>New: aoColumns and aoColumnDefs support for the options.</li>
<li>New: Callback functions added for each column</li>
<li>New: A couple of new examples for scrolling and callbacks</li>
</ul>    <p><a href="/releases/AutoFill-1.1.0.zip">Download AutoFill 1.1.0</a></p>  ]]></description>
	<pubDate>Fri, 10 Sep 2010 16:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#68</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>AutoFill 1.0.0 released</title>
	<description><![CDATA[<p>A new first class plug-in for DataTables! AutoFill gives an Excel like option to a DataTable to click and drag over multiple cells, filling in information over the selected cells and incrementing numbers as needed. This currently works on columns only, with the obvious enhancement to expand it to do columns as well.</p><p>Thanks to <a href="http://www.phoniax.no/">Phoniax AS</a> for their sponsorship of this plug-in for DataTables!
			</p><p>Release notes for AutoFill 1.0.0:</p><ul>
<li>Initial release</li>
<li>To get the right paths for the include files, put the extracted directory into the "extras" folder in the DataTables distribution.</li>
</ul>    <p><a href="/releases/AutoFill-1.0.0.zip">Download AutoFill 1.0.0</a></p>  ]]></description>
	<pubDate>Tue, 07 Sep 2010 16:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#67</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7.1 released</title>
	<description><![CDATA[<p>Now that the dust has settled from the 1.7.0 release, I've been able to take stock and address a few issues which have come to light. Moving forwards with the 1.7 series of DataTables, this release sees a number of bugs addressed, and also a couple of new features. The two new features are both callback functions: fnCookieCallback allows customisation of the state saving cookie, while fnInfoCallback allows details customisation on the information element's text.</p><p>Hope you enjoy!</p><p>Release notes for DataTables 1.7.1:</p><ul>
	<li>New: Language callback function for the information element. This can be used to customise the language shown in the information element beyond what is possible with the built in language string options (for example plurals). The arguments are fnInfoCallback( oSettings, iStart, iEnd, iMax /*no filter*/, iTotal /*after filter*/, sOut /*DT rendered string*/ ) - 2520</li>
	<li>New: Cookie callback function (can be passed as an initialisation parameter) called fnCookieCallback, which allows the developer to modify the information stored in the cookie. Takes four arguments (sName, oData, sExpires, sPath) and expects a complete cookie string to be returned (with name, value, expires and path correctly formatted). - 2510</li>
</ul>
<ul>
	<li>Updated: Complex headers have been relaxed such that TH elements no longer need to be unique. There does need to be the correct TH elements with colspans and rowspans which add up, and each column requires at least one TH element for itself, but it is now possible to have two (or more) TH elements for each column.</li>
	<li>Updated: Warning when adding a new row when the length doesn't match the known number of columns has been updated to indicate the known columns and what was added. Thanks to Adam Sah for this.</li>
	<li>Updated: Now use jQuery's JSON parse function (in jQuery 1.4) rather than JSON.js</li>
	<li>Updated: Altered fnClearTable to clear the data arrays in a cleaner manner - 2476</li>
</ul>
<ul>
	<li>Fixed: State saving cookie used single quote strings in places (in correct JSON). This has now been addressed, and a work around in place (replace) until a sufficient period has passed</li>
	<li>Fixed: Removed unnecessary white space from state saving cookies</li>
	<li>Fixed: When displaying full data set with server-side processing (_iDisplayLength = -1), this would incorrectly be shown in the table information - 2440</li>
	<li>Fixed: Rows with HTML entities and BR tags in them could break filtering in IE and Opera - 2512</li>
	<li>Fixed: Columns with zero length strings only in them and with a given width would be missed from the width calculations - 2530</li>
	<li>Fixed: Typo for tfoot, should be tbody - "Sanity check that there is a thead and tfoot. If not let's just create them"</li>
	<li>Fixed: Setting a negative width in IE results in an error (fair enough) - so stop this from happening - 2544</li>
	<li>Fixed: The second parameter for fnServerData was being passed as null when used without server-side processing. It makes much more sense to pass an empty array - 2553</li>
	<li>Fixed: The width of the table is now not fixed to the width of the container when scrolling is not applied (this is the same behaviour as 1.6-) - 2530</li>
	<li>Fixed: fnDestroy didn't restore columns which had been hidden by DataTables, resulting in these columns being completely lost - 2569</li>
	<li>Fixed: Sorting classes weren't being removed in Firefox 3.0 (3.1+ were fine) - 2449</li>
	<li>Fixed: Themeroller 1.8 introduced a few changes from 1.7 (main fg-button* > ui-button) which was causing 1.8 themes to not show correctly. This release updates DataTables to use ThemeRoller 1.8 themes by default, but retains 1.7 backwards compatibility for now (to be removed in future) - 1559</li>
</ul>    <p><a href="/releases/DataTables-1.7.1.zip">Download DataTables 1.7.1</a></p>  ]]></description>
	<pubDate>Sun, 22 Aug 2010 15:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#65</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7.0 released</title>
	<description><![CDATA[<p>DataTables 1.7 has been in planning almost as soon as 1.6.0 was available, and under active development for the last three months. It has been slightly longer in coming that originally planned, but I am delighted to now be able to release DataTables 1.7.0.</p><p>After a beta cycle which saw eight releases, I wish to offer a huge thank you to everyone who has been testing it and reporting issues back to me. DataTables 1.7 boasts a number of enhancements for both the end user's final view of the table, and for you, the developer, to make your life easier.</p><p>I hope you enjoy this release!</p><p>Release notes for DataTables 1.7.0:</p><ul>
	<li>No changes from 1.7 beta 8. As a recap of the new features in the 1.7 series:</li>
	<li>New: X and Y scrolling! A table can now be constrained in both height and width, allowing scrolling to view hidden content. This works with or without pagination, and all other DataTables functions as would be expected. To accommodate this new feature the initialisation parameters iScrollX and iScrollY have been added which will take the height and width of the table (they are fully independent, you do not need to define both). Note that this feature is off by default but is there if you want to use it.</li>
	<li>New: aoColumnDefs - it is now possible to use this initialisation option to give column specific information (sClass etc) for one or more columns, by targeting a column using it's position or a class name (on the TH element), or all columns, and no longer need to specific aoColumns which had to match the exact column length, and could be very annoying for dynamic width tables.</li>
	<li>New: Big overhaul to the filtering interface - it is no longer a pain in the neck to work with!
		<ul>
			<li>bEscapeRegex has now been replaced with bRegex (which is basically a NOT of the old var)</li>
			<li>Can now enable and disable smart filtering (where DataTables tries to be smart with user input)</li>
			<li>Smart filtering is available on individual column filtering now</li>
			<li>When entering a global filter using fnFilter, the search text will now be displayed in the table's filter input (unless you overrule this by passing false as the 5th parameter to fnFilter)</li>
		</ul>
	</li>
	<li>New: fnDestory API function which will delete a DataTable, restoring the table to it's original 'unenhanced' state.</li>
	<li>New: Now using Closure compiler, rather than YUIcompressor. This results a saving of 1/3 file size in the minified version!</li>
	<li>New: null can be given to DataTables for display (as part of JSON data). When null is found in supplied data, DataTables will now treat it as if it were an empty string.</li>
	<li>Mew: aLengthMenu - initialisation option to specify the lengths that you want to be visible in the user selectable length menu. This is backwards compatible with the old way of replacing _MENU_ with whatever you want, but this behaviour is now recommended if you want to change only the length display options. Can be a 1D array, or 2D array (for separate language and value options).</li>
	<li>New: The scope of execution (this) for all of the callback functions (fnDrawCallback, fnHeaderCallback, fnFooterCallback, fnInitComplete, fnRowCallback and fnServerData) is now the DataTables object - as such you do not need to use 'oTable' (or whatever you call it) inside the callback functions - just use 'this'. The change also makes it possible to use API functions in the callback during initialisation.</li>
	<li>New: The built in date and numeric sorting both now allow blank values for the input. For example you could have a column of dates, with some being empty strings, which will still be sorted by date, rather then by string as would have been prior to 1.7.</li>
	<li>New: Automatic type detection of HTML content (for sorting a filtering). No longer need to specify sType:html for these columns</li>
	<li>New: Data is trimmed (be it from the DOM or a Javascript based array source) which allows data with white-space around it to be correctly sorted and dealt with (2230).</li>
</ul>    <p><a href="/releases/dataTables-1.7.0.zip">Download DataTables 1.7.0</a></p>  ]]></description>
	<pubDate>Sun, 01 Aug 2010 18:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#64</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7 beta 8 released</title>
	<description><![CDATA[<p>A final storm to the finishing line with this beta - very likely now to be the last in the beta series (1.7.0 should be released in the next few days). A couple of small bugs fixed in this release.</p><p>Release notes for DataTables 1.7 beta 8:</p><ul>
	<li>Fixed: When dealing which hidden column, the wrong calculate column width could be applied, resulting in odd looking tables (specifically seen in IE8) - 2398</li>
	<li>Fixed: IE7 would show an x-scroll bar when only y-scrolling was enabled</li>
	<li>Fixed: bDestroy would cause a Javascript error in beta 7. Bug was introduced in beta 6 ("potential memory leak")</li>
</ul>    <p><a href="/releases/dataTables-1.7.beta.8.zip">Download DataTables 1.7 beta 8</a></p>  ]]></description>
	<pubDate>Fri, 30 Jul 2010 07:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#63</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7 beta 7 released</title>
	<description><![CDATA[<p>A few minor tweaks and adjustments, which I'd like to have beta tested just to make sure I've not missed anything before the 1.7.0 release.</p><p>Release notes for DataTables 1.7 beta 7:</p><ul>
	<li>Updated: Examples - new scrolling tables example with jQuery UI tabs</li>
	<li>Updated: fnAdjustColumnSizing will now automatically redraw the table when called. This can be stopped by passing 'false' to the function</li>
	<li>Updated: oSettings.iScrollWidth has been moved to oSettings.oScroll.iBarWidth for consistency</li>
	<li>Updated: The alert "Added data does not match known number of columns" will now only be shown once every draw rather than once for every row</li>
</ul>
<ul>
	<li>Fixed: iDisplayStart would "rewind" incorrectly when server-side processing can change the page length from a longer length to a shorter one - 2071</li>
	<li>Fixed: The column parameter passed to fnSetColumnVis had to be a number of type Number, now it can be a string (containing a number!)</li>
	<li>Fixed: Any setting of style.height or style.width is now passed through _fnStringToCss to sanity check the setting (i.e. don't try and set "nullpx", which was possible when dealing with hidden tables)</li>
</ul>    <p><a href="/releases/dataTables-1.7.beta.7.zip">Download DataTables 1.7 beta 7</a></p>  ]]></description>
	<pubDate>Thu, 29 Jul 2010 07:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#62</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7 beta 6 released</title>
	<description><![CDATA[<p>This new beta of DataTables 1.7 sees focus of continued stabilisation, with a view towards the 1.7.0 release. A number of bugs have been addressed in this release, and one new feature introduced: using the variable $.fn.dataTableExt.sErrMode (set to 'throw') DataTables will throw critical errors rather than 'alert()'ing them.</p><p>Release notes for DataTables 1.7 beta 6:</p><ul>
	<li>New: You can now tell DataTables to throw an exception rather than show an alert() when it hits a "level 0" log entry (i.e. it has encountered a critical error). To do this set $.fn.dataTableExt.sErrMode = "throw". This is useful for automated testing, where an alert would interrupt the flow.</li>
</ul>
<ul>
	<li>Fixed: sScrollXInner did not have the correct unit applied, depending on the user input</li>
	<li>Fixed: The sizing table could be appended to a node which was not it's direct parent, which could result in incorrect sizing</li>
	<li>Fixed: If using custom DOM or some complex CSS, it is possible that the table width is more constrained that when it originally measured. This would result in horizontal scroll bars appearing incorrectly. We now check for this and take corrective action at the end of initialisation.</li>
	<li>Fixed: Typo for bDestroy - I had bDestory being checked for in the code. Sorry!</li>
	<li>Fixed: If y-scrolling (without x-scrolling) and the table has only a few records in it (few enough to fit into the visible area) the table didn't take up as much width as it should do - space was left for the scroll bar, which wasn't needed). This could look some visual displays look slightly odd with a gap down the right.</li>
	<li>Fixed: When scroll collapsed was enabled, and x-scrolling enable but not actively required (i.e. no scrollbar) there would be a gap between the table body and the footer to allow the scrollbar to be placed</li>
	<li>Fixed: Clicking to sort could selected the text which looks fairly ugly. DataTables had code to not do this, but it was only applied when the shift key was pressed. Removed this check. Thanks to OuT.</li>
	<li>Fixed: Backwards compatibility issue with sZeroRecords and sEmptyTable. Now if sEmptyTable is not given (as it is generally not, since it wasn't support in pre 1.7), then sZeroRecords will be used instead (assuming it is given).</li>
	<li>Fixed: When x-scrolling, if the scroll needed more than 50% extra above the width of the container element, then the table header would stop scrolling before the body did.</li>
	<li>Fixed: Column sizes are now recalculated when the fnSetColumnVis API function is used</li>
	<li>Fixed: When setting x-scroll to 100% and the table fits into the given viewport, it would still xscroll due to the y scroll bar</li>
	<li>Fixed: It was possible to have 'nullpx' assigned to a column's sWidth property - possibly caused by checking width on hidden elements or not using $(document).ready(). Added checks to stop this.</li>
	<li>Fixed: Potential memory leak when another 'process' is adding and removing tables from the DOM and DataTables is being used on these tables. If the element we are initialising has the same ID as a table which was previously initialised, but the table nodes don't match (from before) then we destory the old instance by simply deleting it.</li>
	<li>Fixed: When using a tfoot element with multiple TR elements in it, DataTables will now effectively ignore the extra rows, rather than breaking on them!</li>
</ul>    <p><a href="/releases/dataTables-1.7.beta.6.zip">Download DataTables 1.7 beta 6</a></p>  ]]></description>
	<pubDate>Sun, 25 Jul 2010 16:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#61</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 2.0.3 released</title>
	<description><![CDATA[<p>A trivial change to FixedHeader in this release, but non-the-less important. FixedHeader will now give you a warning when trying to use it in combination with scrolling in DataTables 1.7, which is not currently supported. FixedHeader will continue work great with DataTables, but just not when scrolling is enabled!</p><p>Release notes for FixedHeader 2.0.3:</p><ul>
	<li>Fixed: FixedHeader is not supported with scrolling enabled in DataTables 1.7. An alert() warning is now created when trying this to make it clear that this will not currently work.</li>
</ul>    <p><a href="/releases/FixedHeader.2.0.3.zip">Download FixedHeader 2.0.3</a></p>  ]]></description>
	<pubDate>Sun, 25 Jul 2010 15:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#60</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>KeyTable 1.1.6 released</title>
	<description><![CDATA[<p>This update to KeyTable sees just one change - support for scrolling in DataTables 1.7. As the "focused" cell moves into parts which are hidden by DataTables' new scrolling feature, the scrolling will be adjusted automatically to make the cell visible. This is backwards compatible will older versions of DataTables and non-DataTables tables.</p><p>Release notes for KeyTable 1.1.6:</p><ul>
	<li>New: KeyTable now supports scrolling in DataTables 1.7. No extra initialisation is required for this, it just works.</li>
</ul>    <p><a href="/releases/KeyTable.1.1.6.zip">Download KeyTable 1.1.6</a></p>  ]]></description>
	<pubDate>Sun, 25 Jul 2010 15:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#59</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7 beta 5 released</title>
	<description><![CDATA[<p>Following on from the release of 1.7 beta 4 a few days ago, an issue with column alignment was brought to light, which this update will hopefully address. This is the only change in this release - but it is worth noting that as part of this change, DataTables will now show a warning (console.log - only if it's available) if the requirements aren't met for the scrolling to occur correctly (i.e. column will be misaligned).</p><p>Release notes for DataTables 1.7 beta 5:</p><ul>
	<li>New: console.log warnings are generated if the requirements aren't met to align the table columns correctly when scrolling</li>
</ul>
<ul>
	<li>Fixed: Fixed alignment of column where column width is constrained</li>
</ul>    <p><a href="/releases/dataTables-1.7.beta.5.zip">Download DataTables 1.7 beta 5</a></p>  ]]></description>
	<pubDate>Wed, 14 Jul 2010 20:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#58</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7 beta 4 released</title>
	<description><![CDATA[<p>After a lot of beta testing (thank you to everyone who has taken part are reported issues back to me!) and a lot of work on this new release, the next beta version of DataTables 1.7 is now available. This release focuses on stabilising the alignment of scrolling table columns, and a number of bug fixes. There are also a couple of significant new features in the automatic detection of HTML column types and the stripping of white-space to make type detection more robust. Enjoy!</p><p>Release notes for DataTables 1.7 beta 4:</p><ul>
	<li>New: Automatic type detection of HTML content (for sorting a filtering). No longer need to specify sType:html for these columns</li>
	<li>New: Data is trimmed (be it from the DOM or a Javascript based array source) which allows data with white-space around it to be correctly sorted and dealt with (2230).</li>
	<li>New: Functions for afnSortData now get three parameters, the (new) third one is the visible column index</li>
	<li>New: sScrollXInner is a new initialisation property which allows you to specify the width of the table inside the scroller (this in instead of setting the width of the table to be too width)</li>
</ul>
<ul>
	<li>Fixed: Removed erroneous comment in fnOpen about old server-side specific code</li>
	<li>Fixed: Row strip removal (prior to DataTables adding it's own) was operating on child tables as well as the DataTable - 2182</li>
	<li>Fixed: Scrolling collapse could add a little extra height if x scrolling is not enabled</li>
	<li>Fixed: Slight optimisation on the code which removes row striping classes if the table already has one - 2182</li>
	<li>Fixed: When a column target in aoColumnDefs[].aTarget is given as 0+ and there is no matching column - then columns are added as needed. This allows aoColumnDefs to completely replace aoColumns.</li>
	<li>Fixed: Now use the first row in the body </li>
	<li>Fixed: An check for IE was incorrect in the scrolling (jQuery bug 6777) so now use a different check. This was causing Firefox issues</li>
	<li>Fixed: When adding a number to a column to a column which has been detected as a string you could get an error. The answer is to ensure all data held internally in a string and treat it accordingly (2249)</li>
	<li>Fixed: Optimisation of _fnNodeToDataIndex. When looking for a node, we now search through the visible part of aiDisplay and try match the given node to the elements on the page before battering through the whole aoData array. This will typically make look ups much faster since they tend to come from the visible information (events, selectors) (2261)</li>
	<li>Fixed: fnDestroy will now restore the odd/even classes of the original table (note this is not 100% fool proof, see the code, but it optimised to the majority of cases)</li>
	<li>Fixed: When autowidth is disabled _fnAjustColumnSizing now takes no action</li>
</ul>    <p><a href="/releases/dataTables-1.7.beta.4.zip">Download DataTables 1.7 beta 4</a></p>  ]]></description>
	<pubDate>Mon, 12 Jul 2010 20:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#57</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7 beta 3 released</title>
	<description><![CDATA[<p>This latest beta of DataTables 1.7 sees further work on stabilising the new scrolling feature, which is proving to be a fairly difficult implementation because of how flexible DataTables is! I believe that it should now be working as expected, and there have been a lot of improvements in the code surrounding it. Please try this latest beta out and let me know if you find any bugs! There are also a number of other bug fixes in this new beta, to tidy things up.</p><p>Release notes for DataTables 1.7 beta 3:</p><ul>
	<li>New: A 'static' function $.fn.dataTableExt.fnVersionCheck is now provided to allow version checking without a DataTables instance</li>
	<li>New: API function called fnAdjustColumnSizing(). Which would most likely be used with a scrolling table whose content has changed and the table needs updating to keep the header, footer and body all insync size wise. You will typically want to do a draw after this function is called to keep everything in-sync.</li>
	<li>New: Feature variable for scrolling tables "bScrollCollapse" - this will cause the table container height to shrink to that of the table if the result set shown is "shorter" than the height used for y-scrolling</li>
	<li>New: fnUpdate has been given a 5th parameter (bAction) to indicate if pre-draw actions (column size calculation and filter array building) should occur or not. Can be disabled to improve performance when adding many rows, but remember to perform these actions once all data has been updated!</li>
	<li>New: DataTables will detect when a given table will not fit into a specific area (when y-scrolling is enabled) and give a warning that you should be aware that this will likely cause the columns to be misaligned. This is because the scroll bar takes 15-18px to be displayed.</li>
</ul>
<ul>
	<li>Fixed: The algorithm used to calculate column widths has been completely reworked (this was probably the old code in DataTables, and well due for an update!). It is a lot more accurate, as needed by scrolling, but a little bit slower. The slower method is only used if you specify an 'sWidth' for a column.</li>
	<li>Fixed: HTML entities in text could cause filtering to return incorrect results</li>
	<li>Fixed: TD elements are now correctly dealt with in the thead when doing scrolling</li>
	<li>Fixed: Multiple TR rows are now accepted in thead when doing scrolling</li>
	<li>Fixed: When filtering is disabled fnFilter will now not do anything - just a straight return.</li>
</ul>    <p><a href="/releases/dataTables-1.7.beta.3.zip">Download DataTables 1.7 beta 3</a></p>  ]]></description>
	<pubDate>Sat, 12 Jun 2010 17:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#56</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7 beta 2 released</title>
	<description><![CDATA[<p>This new beta of DataTables 1.7 primarily focuses on the new scrolling feature. There were a number is issues with the previous implementation that this release should address. This is why beta releases are so helpful :-). Thanks to all those who has tested 1.7 so far, please do continue to do so.</p><p>Release notes for DataTables 1.7 beta 2:</p><ul>
	<li>New: Footer TH elements can be given a class using sFooterTH (is the classes object). This is useful for jQuery UI theming where the default is to give a suitable class for the background.</li>
	<li>New: Example showing how a type detection plug-in can be used for HTML columns</li>
	<li>New: Scrolling tables can now have a tfoot in them as well</li>
</ul>
<ul>
	<li>Fixed: Table alignment when using scrolling could go a bit bonkers.</li>
	<li>Fixed: Before a table is fully loaded, if you click on a link, you would most likely get an alert saying that the columns and rows don't match. This is due to browser behaviour, see WebKit bug 39683 and Mozilla bug 568050. As a work around, DataTables will now send this message to console.log if available, otherwise it will simply ignore the error.</li>
	<li>Fixed: Table captions using &lt;caption&gt; tag are now moved into the table used for the header. (thread: 2022).</li>
	<li>Fixed: Scrolling tables could get their alignment wrong at times. This should now be addressed.</li>
	<li>Fixed: The ID from clone nodes for scrolling header wasn't removed, which could result in a table being incorrectly re-initialised.</li>
	<li>Fixed: Changing column visibility with fnSetColumnVis was broken when using scrolling.</li>
</ul>    <p><a href="/releases/dataTables-1.7.beta.2.zip">Download DataTables 1.7 beta 2</a></p>  ]]></description>
	<pubDate>Sun, 30 May 2010 10:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#55</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.7 beta released</title>
	<description><![CDATA[<p>It is with great pleasure that I can release DataTables 1.7 beta! A lot of work has gone into this release to make DataTables easier to use for you the developer, and add new features which are visible to the end user.</p><ul><li><a href="http://datatables.net/new/1.7">New features in DataTables 1.7</li><li><a href="http://datatables.net/upgrade/1.7">Upgrading from 1.6</a></li></ul><p>While this is a first beta release, it should perform well and prove to be very stable. There may of course be bugs found - if you do spot any, please post a message in the forums.</p><p>Release notes for DataTables 1.7 beta:</p><ul>
	<li>New: Now using Closure compiler, rather than YUIcompressor. This results a saving of 1/3 file size in the minified version!</li>
	<li>New: fnDestory API function which will delete a DataTable, restoring the table to it's original 'unenhanced' state.</li>
	<li>New: null can be given to DataTables for display (as part of JSON data). When null is found in supplied data, DataTables will now treat it as if it were an empty string.</li>
	<li>New: DataTables will now send a random number to the server when making an Ajax call for data (either Ajax sourced or server-side process) in order to defeat caching of XHR requests in IE6-7.</li>
	<li>New: fnDeleteRow now as an option to not redraw the table on call like most of the other API functions (useful for deleting large numbers of rows) - thanks to 'kalakudu' in the forum.</li>
	<li>Mew: aLengthMenu - initialisation option to specify the lengths that you want to be visible in the user selectable length menu. This is backwards compatible with the old way of replacing _MENU_ with whatever you want, but this behaviour is now recommended if you want to change only the length display options. Can be a 1D array, or 2D array (for separate language and value options).</li>
	<li>New: aoColumnDefs - it is now possible to use this initialisation option to give column specific information (sClass etc) for one or more columns, by targeting a column using it's position or a class name (on the TH element), or all columns, and no longer need to specific aoColumns which had to match the exact column length, and could be very annoying for dynamic width tables.</li>
	<li>New: DataTables will display an 'alert()' error when JSON from the server-side (Ajax source, or server-side processing) is incorrectly formatted.</li>
	<li>New: Ability to format numbers in the 'information' display into an easily readable format, using the new initialisation function fnFormatNumber. The default function is to format numbers using commas for every third order of magnitude (i.e. "1,000,000").</li>
	<li>New: Can now specify the prefix of the cookie using the initialisation parameter "sCookiePrefix".</li>
	<li>New: It is now possible to retrieve table objects which have already been created using the jQuery selector, so you don't need to store a variable reference to the table object to use the API functions. For example "$('#example').dataTable(); $('#example').dataTable().fnDraw();" will now work, where as before it would throw an error. Note that the object is returned if no arguments are passed to dataTable(), or bRetrieve has been set. Alternatively you can fully reinitialise the table by setting bDestory to true, which will destroy the old table and initialise the new one (there are usually more optimal ways to modify the table).</li>
	<li>New: Big overhaul to the filtering interface - it is no longer a pain in the neck to work with!
		<ul>
			<li>bEscapeRegex has now been replaced with bRegex (which is basically a NOT of the old var)</li>
			<li>Can now enable and disable smart filtering (where DataTables tries to be smart with user input)</li>
			<li>Smart filtering is available on individual column filtering now</li>
			<li>When entering a global filter using fnFilter, the search text will now be displayed in the table's filter input (unless you overrule this by passing false as the 5th parameter to fnFilter)</li>
		</ul>
	</li>
	<li>New: The scope of execution (this) for all of the callback functions (fnDrawCallback, fnHeaderCallback, fnFooterCallback, fnInitComplete, fnRowCallback and fnServerData) is now the DataTables object - as such you do not need to use 'oTable' (or whatever you call it) inside the callback functions - just use 'this'. The change also makes it possible to use API functions in the callback during initialisation.</li>
	<li>New: New language variable called sEmptyTable which is shown when the table is truly empty (not just filtered to the point of being empty - where sZeroRecords is shown).</li>
	<li>New: The built in date and numeric sorting both now allow blank values for the input. For example you could have a column of dates, with some being empty strings, which will still be sorted by date, rather then by string as would have been prior to 1.7.</li>
	<li>New: X and Y scrolling! A table can now be constrained in both height and width, allowing scrolling to view hidden content. This works with or without pagination, and all other DataTables functions as would be expected. To accommodate this new feature the initialisation parameters iScrollX and iScrollY have been added which will take the height and width of the table (they are fully independent, you do not need to define both). Note that this feature is off by default but is there if you want to use it.</li>
</ul>
<ul>
	<li>Updated: fnDeleteRow no-longer has a 'null' option - it will actually remove the data from DataTables permanently now.</li>
	<li>Updated: aoData can no longer accept null as a value. fnDeleteRow was the only function which could cause this to occur, and that function has now been updated to not just null data. This may have a knock on effect if you have a plug-in which clones the display arrays (I'm not aware of any public ones).</li>
	<li>Updated: Single logging function for all alerts / warnings</li>
	<li>Updated: fnServerData default is no longer $.getJSON. It is now a call to $.ajax with some more suitable options for DataTables. fnServerData parameters and returns still function exactly as they did before.</li>
	<li>Updated: Calling the $.dataTable function on an already initialised table will now not return the settings object, but rather than DataTables object itself.</li>
	<li>Updated: Performance - improved the draw time when attaching nodes by using a document fragment. Thanks to hkdennis2k for this tip.</li>
	<li>Updated: sZeroRecords can now have the _MAX_ replacement macro used in it to indicate how many rows the filtering has been applied on, and no results found if you wish.</li>
	<li>Updated: Performance - improved the draw time by moving the body to a document fragment before removing nodes</li>
	<li>Updated: Unit tests modified to take account of changes</li>
</ul>
<ul>
	<li>Fixed: The TD element created when there are zero records to display could have the wrong colspan when there were hidden columns in the table. Thanks to Anthony Smith.</li>
	<li>Fixed: fnUpdate was not redrawing the table due to an incorrect check on bRedraw: 1741</li>
	<li>Fixed: Quote escaping in some server processing scripts was wrong</li>
	<li>Fixed: sDom handing for 'H' and 'F' wasn't very smart, just blindly replacing those two characters. As such something like '<"myHeader">t<"myFooter">' would fall apart. This is now handled correctly.</li>
	<li>Fixed: A no-cache variable is now sent to the server-side when loading data. IE could cache GET requests incorrectly, resulting in failed data loading - this should no longer happen.</li>
	<li>Fixed: iDisplayStart was broken when being used with server-side processing</li>
	<li>Fixed: It was possible to get into a situation where if the table had 'odd' and 'even' classes on the TR elements before the table was initialised, then you could get both classes applied to the table at the same time - resulting in no stripes.</li>
	<li>Fixed: fnClose will now work with server-side processing as well as client-side</li>
	<li>Fixed: Cookies now use the path a little more cleverly, which will mean that tables won't hit the 4KiB cookie upper limit quiet so quickly. Thanks to vex for this patch.</li>
	<li>Fixed: State saving in a cookie is now a bit smarter - DataTables will look for and delete an old (the oldest) cookie created by DataTables in the current path (due to the above fix) if it is about to exceed the 4KiB limit. This does have the effect of losing old data (approximately 8 pages can be stored without this cookie deletion being enacted), but means that the server won't run into a 500 error situation.</li>
	<li>Fixed: For some unknown reason IE would on rare occasions throw an error when inserting the information text. Thank you jQuery.html() for providing a fallback :-)</li>
	<li>Fixed: nodeName is case sensitive in XML documents, but always upper case in HTML. This could cause issues due to the use of nodeName checking in DataTables. toUppoerCase() is now used</li>
	<li>Fixed: When sorting on an empty array, there could be a reference to a javascript array element which didn't exist</li>
</ul>
<ul>
	<li>Known issue: If a link is clicked on before document loading is complete, an alert about the number of cell appears. This is due to the fact that the DOMContentReady event is fired before the DOM is actually ready. On going discussion in Webkit bug 39683 and Mozilla bug 568050.</li>
</ul>    <p><a href="/releases/dataTables-1.7.beta.zip">Download DataTables 1.7 beta</a></p>  ]]></description>
	<pubDate>Wed, 26 May 2010 07:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#54</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>KeyTable 1.1.5 released</title>
	<description><![CDATA[<p>A small update to KeyTable with the addition of a useful new API function, thanks to Rohan Daxini. The function fnSetPosition allows you to set the position of the 'focused' cell by passing in either coordinates (x,y) or a cell node.</p><p>Release notes for KeyTable 1.1.5:</p><ul>
	<li>New: Added fnSetPosition function - takes ether (int,int) as coordinates, or (node) and will set the currently focused cell based on that.</li>
</ul>    <p><a href="/releases/KeyTable.1.1.5.zip">Download KeyTable 1.1.5</a></p>  ]]></description>
	<pubDate>Mon, 10 May 2010 08:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#53</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>KeyTable 1.1.4 released</title>
	<description><![CDATA[<p>A small but important update for KeyTable with just one fix - addresses an issue when integrating with a DataTable which has hidden columns.</p><p>Release notes for KeyTable 1.1.4:</p><ul>
	<li>Fixed: Hidden columns in a DataTable caused a JS error due to incorrect counting</li>
</ul>    <p><a href="/releases/KeyTable.1.1.4.zip">Download KeyTable 1.1.4</a></p>  ]]></description>
	<pubDate>Mon, 12 Apr 2010 17:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#52</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 2.0.2 released</title>
	<description><![CDATA[<p>Another small update to FixedHeader, with a couple of minor fixes. The biggest new thing here, is support for using a table with a fixed header inside a scrolling element (other than the page) - so you can now have the table within a DIV which is set to overflow:scroll.</p><p>Release notes for FixedHeader 2.0.2:</p><ul>
	<li>Fixed: Scrolling within a scrolling element is now supported</li>
	<li>Fixed: version check wasn't great for older versions of DataTables</li>
	<li>Fixed: Sorting on a column was causing a JS error to pop up (although after the sort had completed)</li>
</ul>    <p><a href="/releases/FixedHeader.2.0.2.zip">Download FixedHeader 2.0.2</a></p>  ]]></description>
	<pubDate>Sat, 20 Mar 2010 10:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#51</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 1.1.4 released</title>
	<description><![CDATA[<p>A small but important change in this release. There was a trailing comma in the default initialisation object in TableTools 1.1.3, which stops initialisation in IE (all versions). This change addresses that.</p><p>Release notes for TableTools 1.1.4:</p><ul>
	<li>Fixed: Remove comma from init object that stops initialisation in IE</li>
</ul>    <p><a href="/releases/TableTools.1.1.4.zip">Download TableTools 1.1.4</a></p>  ]]></description>
	<pubDate>Thu, 11 Mar 2010 07:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#50</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.6.2 released</title>
	<description><![CDATA[<p>A good bug fix version of DataTables this update, and is recommended for anyone using DataTables. Many of the fixes are in obscure places, but there are a few important ones in there. Also worth noting that unless there are any more critical bugs found in this stabilisation release, this will mark the end of the 1.6 series as we start to look towards v1.7.</p><p>Release notes for DataTables 1.6.2:</p><ul>
	<li>Updated: Now comes with jQuery 1.4.2</li>
</ul>
<ul>
	<li>Fixed: Warning message about number of TD elements got the information in the message the wrong way around!</li>
	<li>Fixed: State saving was missing 'desc' sorting, due to a bug introduced with the new handling of sorting (aaSorting and asSorting)</li>
	<li>Fixed: When using full_numbers pagination and jQuery UI, the 'Next' and 'Previous' button had the wrong classes assigned to them, making them look active.</li>
	<li>Fixed: fnPageChange more or less didn't work as advertised... It does now!</li>
	<li>Fixed: _fnAddData (internal function used by fnAddData as well as Ajax sourced data) had type detection algorithm wrong (like the fix in 1.6.1)</li>
	<li>Fixed: fnSetColumnVis now supports nested tables in a DataTable. Could probably do with a rewrite to be more flexible at some point...</li>
	<li>Fixed: When state saving, and the new table is longer than the old one, DataTables would show an empty table. Now it will roll back to the start</li>
	<li>Fixed: Auto calculation of column width could be dodgy when considering padding etc. Thanks to 'scottsb' in the forum for this fix (discussion id 1316)</li>
	<li>Fixed: Sorting classes (in the tbody) could be applied incorrectly when the cell has nested table(s) (forum discussion 1332)</li>
	<li>Fixed: A small performance increase in the adding of sorting classes due to algorithm change</li>
	<li>Fixed: Set a default of 'sorting_disabled' for sSortableNone (where sorting has been disabled on a column)</li>
	<li>Fixed: When attempting to use the pagination buttons which were disabled, DataTables would redraw the table (particularly noticeable with server-side processing). It now won't</li>
</ul>    <p><a href="/releases/dataTables-1.6.2.zip">Download DataTables 1.6.2</a></p>  ]]></description>
	<pubDate>Tue, 02 Mar 2010 18:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#49</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 2.0.1 released</title>
	<description><![CDATA[<p>A very small update to FixedHeader, which just fixes an issue when using fixed left and right columns.</p><p>Release notes for FixedHeader 2.0.1:</p><ul>
	<li>Fixed: Left and right fixed columns incorrectly referenced this.nTable, and it should have been s.nTable. Only noticeable if you had two or more tables 'fixed'.</li>
</ul>    <p><a href="/releases/FixedHeader.2.0.1.zip">Download FixedHeader 2.0.1</a></p>  ]]></description>
	<pubDate>Tue, 02 Mar 2010 17:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#48</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>KeyTable 1.1.3 released</title>
	<description><![CDATA[<p>A trivial update to KeyTable - but important if you are using it within a form.</p><p>Release notes for KeyTable 1.1.3:</p><ul>
	<li>Fixed: Assign tab index to hidden input correctly, for 'form tables'</li>
</ul>    <p><a href="/releases/KeyTable.1.1.3.zip">Download KeyTable 1.1.3</a></p>  ]]></description>
	<pubDate>Tue, 02 Mar 2010 17:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#47</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 1.1.3 released</title>
	<description><![CDATA[<p>A small, but very welcome, update to TableTools this. Two bugs (including a very obvious calculation error in the alert() for the number of rows copied to clipboard!) and a few new features. You now have the ability to enable or disabled inclusion of the Byte Order Mark (BOM for both the CSV and XLS files created by TableTools (TableToolsInit.oBom.bCsv and TableToolsInit.oBom.bXsl). Also IMG tags are now replaced with their ALT tags, rather than simply being removed, thanks to a patch by Loic Bistuer.</p><p>Release notes for TableTools 1.1.3:</p><ul>
	<li>New: Ability to set if the BOM should be included for XLS and / or CSV export</li>
	<li>New: IMG tags are now replaced by their ALT attribute rather than just stripping them out. Thanks to Loic Bistuer for this feature</li>
	<li>New: Now compiled with the free mxmlc compiler (don't need a Flash license now :-) )</li>
</ul>
<ul>
	<li>Fixed: The alert which notes the number of rows copied was always one less than it should have been.</li>
	<li>Fixed: Printing feature didn't interact well with DataTables pagination. Would start are current page start, rather than table start</li>
</ul>    <p><a href="/releases/TableTools.1.1.3.zip">Download TableTools 1.1.3</a></p>  ]]></description>
	<pubDate>Tue, 02 Mar 2010 17:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#46</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 1.1.2 released</title>
	<description><![CDATA[<p>A quick update for TableTools here - there was a bug which effected data export in IE. This release is now confirmed to worth across browsers, with large files, UTF-8 characters and HTML entities.</p><p>Release notes for TableTools 1.1.2:</p><ul>
	<li>Fixed: Data export was broken in IE due to the nodeValue stripping \n\t.</li>
</ul>    <p><a href="/releases/TableTools.1.1.2.zip">Download TableTools 1.1.2</a></p>  ]]></description>
	<pubDate>Tue, 02 Feb 2010 08:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#45</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 1.1.1 released</title>
	<description><![CDATA[<p>A small update to TableTools, including two new features (ability to customise the fading print message, and ability to, optionally, export the table footer), and two bug fixes. With this release large files can be saved (>700KiB for example) with the limiting factor now appearing to be the Flash engine for dealing with UTF8/16LE conversion.</p><p>Release notes for TableTools 1.1.1:</p><ul>
	<li>New: TableToolsInit.sPrintInfo option added to the settings object. You can now customise the message about the print view (i.e. press escape to return to normal) using this parameter</li>
	<li>New: TableTools will now export the table footers as well as the header. This can be disabled using TableToolsInit.bIncFooter=false.
</ul>
<ul>
	<li>Fixed: Large data sets can now be exported due to a work around of a browser limiting feature in nodeValue</li>
	<li>Fixed: Removed 'KeyTable' events information from the HTML table which was left over from copy/paste</li>
</ul>    <p><a href="/releases/TableTools.1.1.1.zip">Download TableTools 1.1.1</a></p>  ]]></description>
	<pubDate>Mon, 01 Feb 2010 07:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#44</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.6.1 released</title>
	<description><![CDATA[<p>Building on the ground work set out in the 1.6.0 release, as promised I've focused this release on performance - and it's good news :-). The results of this work will be most noticeable if you are using using large data set (particularly those read from the DOM) - but the benefits can be seen through thanks to improvements in some of the key functions in DataTables.</p><p>It is worth noting that I've put in new algorithms for parts of DataTables, so there is the potential that things might break (as with all new software releases). 1.6.1 passes clean through my unit tests, but if you do spot anything, please do jump into the forum and let me know!</p><p>Release notes for DataTables 1.6.1:</p><ul>
	<li>Updated: fnOpen now returns the TR node that was created</li>
</ul>
<ul>
	<li>Fixed: Cookie contents were not escaped. As a return ';' and other characters could cause issues.</li>
	<li>Fixed: Type detection was incorrectly only looking at the first row (under certain circumstances).</li>
	<li>Fixed: Type detection could get confused if a column contained (only) date and numeric information.</li>
	<li>Fixed: If asSorting was defined (but not aaSorting) then we should use the first sorting option for a column in asSorting rather than the default.</li>
	<li>Fixed: The examples index in the distribution had a few wrong links in it</li>
</ul>
<ul>
	<li>
		Optimisation: Sorting classes (bSortClasses) was very slow when removing previously assigned classes. An optimisation for this as reduced initialisation time for large data sets by up to 90%!
		<ul>
			<li> 	- Test set, 500 rows with 9 columns</li>
			<li>	- Safari 4 - 4500mS to 400mS</li>
			<li>	- Firefox 3.5 - 2500mS to 600mS</li>
			<li>	- IE 8 - 'Unresponsive script' to 1500mS</li>
		</ul>
	</li>
	<li>
	Optimisation 2: Not quite happy with the sorting classes still, so removed the use of jQuery's removeClass and selector to do direct DOM manipulation. We can do this here since we directly control the table and "know" it's structure ahead of time.
		<ul>
			<li>	- Test set, 2000 rows with 9 columns</li>
			<li>	- Safari 4 - 1500mS to 300mS</li>
			<li>	- Firefox 3.5 - 1100mS to 370mS</li>
			<li>	- IE8 - 'Unresponsive script' to 600mS</li>
		</ul>
	</li>
	<li>
	Optimisation: Sorting classes (bSortClasses) was slow when adding the required sorting classes. Using direct DOM manipulation the draw has be substantially improved:
		<ul>
			<li>	- Test set, 2000 rows with 9 columns</li>
			<li>	- Safari 4 - 2200mS to 1100mS</li>
			<li>	- Firefox 3.5 - 2800mS to 2100mS</li>
			<li>	- IE8 - 'Unresponsive script' to 10300mS</li>
		</ul>
	</li>
	<li>
		Optimisation: Fixed table width (required so pagination doesn't have a chance to cause the table width to 'jump') is now done at the end of the first draw. The advantage of this is that the browser need only 'size' the table with the initial number of DataTables rows (10 by default) rather than the unenhanced table (2000 rows in this test)
		<ul>
			<li>	- Test set, 2000 rows with 9 columns</li>
			<li>	- Safari 4 - 1100mS to 660mS</li>
			<li>	- Firefox 3.5 - 2100mS to 1500mS</li>
			<li>	- IE8 - 10300mS to 3100mS</li>
		</ul>
	</li>
	<li>
		Optimisation: Very minor (but welcome all the same) draw time speed up by altering the algorithm for removing and then adding rows
		<ul>
			<li>	- Test set, 57 rows with 5 columns, draw 100 rows and then 10, looped 1000 times</li>
			<li>	- Safari 4 - 2000mS to 1800mS</li>
			<li>	- Firefox 3.5 - 11000mS to 9600mS</li>
			<li>	- IE8 - not tested</li>
		</ul>
	</li>
	<li>
		Optimisation: Change method for reading in the data from the DOM for _fnGatherData.
		<ul>
			<li>	- Test set, 2000 rows with 9 columns</li>
			<li>	- Safari 4 - 550mS to 440mS</li>
			<li>	- Firefox 3.5 - 1300mS to 1000mS</li>
			<li>	- IE8 - 4100mS to 3500mS</li>
		</ul>
	</li>
</ul>    <p><a href="/releases/dataTables-1.6.1.zip">Download DataTables 1.6.1</a></p>  ]]></description>
	<pubDate>Sat, 30 Jan 2010 12:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#43</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.6.0 released</title>
	<description><![CDATA[<p>It is with great pleasure that I can release DataTables 1.6.0! After just one beta, I've decided to go ahead and make this release, as it continues a wide range of improvements over the 1.5.x series, and includes an update to each of the three major plug-ins (FixedHeader, KeyTables and TableTools). The documentation on the site has all been updated, and while the migration from 1.5.x should be almost pain free, there are a few things to be aware of, which are detailed on the <a href="http://www.datatables.net/upgrade/1.6">1.5 to 1.6 migration page</a>.</p><p>Enjoy!</p><p>Release notes for DataTables 1.6.0:</p><ul>
	<li>New: fnVersionCheck API function which can be used by plug-ins to check if DataTables is at a suitable version for them to be supported</li>
	<li>New: fnPageChange API function. This is to simplify paging, both internally and externally.</li>
	<li>New: Now ships with jQuery 1.4 in the package</li>
	<li>New: A warning is alert()ed when you try to re-initialise a table now as this is unsupported behaviour. Use the API to make any required changes. This is basically a sanity check</li>
	<li>New: KeyTable is now included in the DataTables distribution (under the extras directory)</li>
	<li>New: ReadMe in the extra directory explaining the various plug-ins</li>
	<li>New: fnDeleteRow, fnUpdate and fnGetData now accept either an aoData index, or the TR element as the target parameter (aoData index was required before, which required looking up the position before calling either of these functions).</li>
</ul>
<ul>
	<li>Fixed: The 'alert' errors that DataTables gives have been modified to clearly indicate that they come from DataTables</li>
	<li>Fixed: DataTables and it's content could "disappear" in IE7/8 due to the position:relative on .dataTables_wrapper. Adding zoom:1 fixes this. With special thanks to Tobias Bathge for his kind assistance with this!</li>
	<li>Fixed: api/row_details.html, api/select_single_row.html, server_side/row_details.html example shows the new use of fnGetData with a TR element being passed. Clear and easier to understand.</li>
	<li>Fixed: server_side/select_rows.html had a memory leak in it. Now uses $.live() event handler and the updated syntax for fnGetData</li>
	<li>Fixed: The sorting icons are now png8 files, with transparent backgrounds. Suitable for easier integration. The source psd is also included</li>
	<li>Fixed: Paging plug-in example updated for the new pagination API in DataTables 1.6</li>
	<li>Fixed: Initialisation of aaSorting, could result in poor interaction behaviour if not used in combination with aoColumns.asSorting (e.g. double click required to reverse sorting). Now automatically initialised to the correct sorting interaction order.</li>
	<li>Fixed: There was an extraneous call to _fnSortingClasses (which is quite a heavy function) in _fnInitalise</li>
	<li>Fixed: Removed instances of iSortDir_ in the code examples to match the API change</li>
	<li>Fixed: Plug-ins are given their own section in the 'examples'</li>
</ul>    <p><a href="/releases/dataTables-1.6.0.zip">Download DataTables 1.6.0</a></p>  ]]></description>
	<pubDate>Thu, 21 Jan 2010 09:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#42</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 2.0.0 released</title>
	<description><![CDATA[<p>A complete re-write of FixedHeader which gives not only new features, but also a significant performance boast. You can now 'fix' the header, the footer, the left most column and the right most column (each independently)! Have a look at this example <a href="http://datatables.net/release-datatables/extras/FixedHeader/top_bottom_left_right.html">all fixed sides</a> for what this update can do. Also of note is that FixedHeader will now work as a standalone piece of software, as well as integrating with DataTables. A number of other improvements have gone in as well, see the release notes for details.</p><p>Release notes for FixedHeader 2.0.0:</p><ul>
	<li>New: Massive changes - basically a complete re-write</li>
	<li>New: Ability to fix the header, the footer, the left most column and right most column! Each can be enabled or disabled independently</li>
	<li>New: Five more examples to show how FixedHeader can be customised now</li>
	<li>New: Much more efficient in terms of Javascript processing == smoother display</li>
	<li>New: Multiple tables can have FixedHeader applied to them</li>
	<li>New: FixedHeader can be applied to standard HTML tables as well as DataTables (i.e. DataTables is optional)</li>
	<li>New: Now requires DataTables 1.6.x</li>
	<li>New: Support multi-column sorting (shift-click)</li>
</ul>    <p><a href="/releases/FixedHeader.2.0.0.zip">Download FixedHeader 2.0.0</a></p>  ]]></description>
	<pubDate>Thu, 21 Jan 2010 09:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#41</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>TableTools 1.1.0 released</title>
	<description><![CDATA[<p>The big news in this release of TableTools is the support for Unicode when exporting to Excel or CSV. The Excel files are now written in UTF-16LE, while the CSV files are UTF-8. Also of note is the removal of the (approximately) 64K limit to saving data - a work around for the limitations of the Javascript / Flash bridge has been implemented to address this. Other than that, it's mainly bug fixes.</p><p>Release notes for TableTools 1.1.0:</p><ul>
	<li>New: Unicode support!</li>
	<li>New: Excel output is now saved as UTF-16LE, which allows unicode to work. CSV output is saved as UTF-8. The BOM is included in both cases.</li>
	<li>New: Information in hidden columns (bVisible:false) can now be included in the exported data by setting the TableToolsInit.bIncHiddenColumns parameter</li>
	<li>New: Data is automatically trimmed when exported (csv, xsl or clipboard). This is done to account for white space which is often present in HTML tables</li>
	<li>New: Ability to save files larger than 64KiB. There is a limitation in the Javascript / Flash bridge, which has been worked around in this release for large data sets.</li>
</ul>
<ul>
	<li>Fixed: Demo now notes that TableToolsInit.sSwfPath might need to be set by the developer</li>
	<li>Fixed: Type issue when used with server-side processing, Ajax or aaData sources.</li>
	<li>Fixed: Strip invalid characters from the titles. Note it's fairly brutal when detailing with ACSII characters. This is the ensure maximum compatibility.</li>
	<li>Fixed: The csv export doesn't account for existing commas in the table cells. Now use a field boundary for CSV (default is a single quote '), which is read from TableToolsInit.sCsvBoundary</li>
	<li>Fixed: Passes JSLint</li>
	<li>Fixed: HTML entities are now decoded (for example '&' will come out as '&' in the exported file and clipboard now)</li>
	<li>Known limitation: Note that due to limitations in Javascript engines it would appear that this support is limited to the "Basic Multilingual Plane"</li>
</ul>    <p><a href="/releases/TableTools.1.1.0.zip">Download TableTools 1.1.0</a></p>  ]]></description>
	<pubDate>Thu, 21 Jan 2010 09:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#40</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>KeyTable 1.1.2 released</title>
	<description><![CDATA[<p>A minor update for KeyTable here, after it's major update of introducing column and row events in v1.1. This will address a few bugs that have cropped up here and there.</p><p>Release notes for KeyTable 1.1.2:</p><ul>
	<li>Fixed: The return key needed to 'stopPropagation()' etc</li>
	<li>Fixed: There was a console.log debug statement left in which of course broke IE and other browsers</li>
	<li>Fixed: Editable example is updated to use the new event attaching syntax - much more efficient</li>
	<li>Fixed: Passes JS Lint (replacing some questionable scripting...)</li>
</ul>    <p><a href="/releases/KeyTable.1.1.2.zip">Download KeyTable 1.1.2</a></p>  ]]></description>
	<pubDate>Thu, 21 Jan 2010 09:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#39</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.6 beta 1 released</title>
	<description><![CDATA[<p>I am very pleased to release a beta of DataTables 1.6. It has been almost a year with DataTables 1.5 (which followed on very quickly from 1.4) and the community has been growing steadily. The number of visits to datatables.net continues to go up, as does the forum post count. Hopefully 1.6 will be as well received as the earlier versions.</p>

<p>So what are the major features you expect in 1.6? Nothing revolutionary, but certainly evolutionary:

<ul>
	<li>Support for multiple instances of sDom elements. What this means is that you can have two (or more!) filter boxes, pagination elements or any other table control!v
	<li>Stable sorting. Particularly important in Google Chrome, the table will retain it's original sorting order if items match value.</li>
	<li>A bit more speed :-)</li>
</ul>

<p>Note that there have been a few API changes so you will have to make changes to use DataTables 1.6 if you use:</p>

<ul>
	<li>Server-side processing: iSortDir_{x} has been renamed to sSortDir_{x} to reflect that it's a string</li>
	<li>A custom pagination plug-in: The fnInit function now takes three arguments. Please see the release notes.</li>
</ul>

<p>Also note that the current releases of TableTools and FixedHeader are not currently compatible with 1.6.beta. New versions will be available soon.</p>

<p>As always, feedback is most welcome - please post any bugs and comments in the forum. Also, please remember to make a donation if you are using and enjoying DataTables :-)</p>

<p><a href="http://www.datatables.net/1.6-beta/examples">1.6.beta examples</a></p><p>Release notes for DataTables 1.6 beta 1:</p><ul>
	<li>API Change: Server-side processing, iSortDir_{x} changed to sSortDir_{x}</li>
	<li>API Change: Pagination plug-ins: fnInit now takes three arguments: 1. settings object, 2. container node, 3, draw callback function. The insertion of 2. is new.</li>
	<li>API Change: Plug-ins are no longer required to return a node (using sDom features). Features can now be added in this way for Javascript only functions as well.</li>
	<li>API Change: oSettings.fnDrawCallback has been renamed oSettings.aoDrawCallback and is now an array of objects with parameters 'fn' and 'sName'. No external change needed unless you are developing plug-ins</li>
	<li>New: Stable sorting - the original order is maintained when rows match (when the value is checked for sorting). This is particularly noticeable in Google Chrome)</li>
	<li>New: fnServerData can now be used to modify the Ajax data pull, in exactly the same way as it can be for server-side processing</li>
	<li>Fixed: Now fully pass jslint - no warnings</li>
	<li>Fixed: Column sorting classes would be applied on the server-side when bSortClasses was false</li>
	<li>Fixed: fnAddData will simply ignore an empty array that is passed into it</li>
	<li>Changed: Code ordering - now grouped into features</li>
	<li>Changed: Draw speed is increased through improved row striping. aoData._sRowStripe is a new internal variable for tracking this</li>
	<li>Changed: Due to the option of multiple instances of a 'feature' in sDom, the ID attributes are applied only to the first instance of a new element (for example the information div). It is recommended that classes are used for styling.</li>
	<li>To do: The beta will break TableTools and FixedHeader</li>
</ul>    <p><a href="/releases/dataTables-1.6.beta.1.zip">Download DataTables 1.6 beta 1</a></p>  ]]></description>
	<pubDate>Sat, 09 Jan 2010 12:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#38</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>KeyTable 1.1.1 released</title>
	<description><![CDATA[<p>A minor update for a bug which has been spotted by dvilaverde in the forum.</p><p>Release notes for KeyTable 1.1.1:</p><ul>
	<li>Fixed: Event handler positioning was incorrect when used with DataTables paging</li>
</ul>    <p><a href="http://sprymedia.co.uk/software/KeyTable/KeyTable.1.1.1.zip">Download KeyTable 1.1.1</a></p>  ]]></description>
	<pubDate>Tue, 22 Dec 2009 20:30:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#37</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>KeyTable 1.1.0 released</title>
	<description><![CDATA[<p>Quite an exciting update for KeyTable this, as I think it greatly enhances the usability (from you, the developer's, perspective). The events model in 1.0.x was limited to targeting individual cells, but new in 1.1.0 you can target rows, columns or the entire table with a single callback function simply by passing 'null' for the x or y coordinate (i.e. x=1 and y=null would target the second column).</p><p>Hand-in-hand with this leap forward in development usability is the new inclusion of three API functions which will give you the position of the currently focused cell (fnGetCurrentPosition), the data from the currently focused cell (fnGetCurrentData) and the TD node that is currently focused (fnGetCurrentTD).</p><p>Enjoy!</p><p>Release notes for KeyTable 1.1.0:</p><ul>
	<li>New: "Live" events. You can now pass either null for either (or both) the x or y coordinates for an event handler to mean "all" of the that row or column. This means that you can now have a single event handler for an entire row, column or every cell, rather than doing it individually.</li>
	<li>New: The callback function for the event handler now passes in three parameters: 1. The node in question (as before), 2. the node's x coordinate and 3. the node's y coordinate.</li>
	<li>New: Added API function fnGetCurrentPosition() to get the current position of the focus (array [x,y] is returned)</li>
	<li>New: Added API function fnGetCurrentData() to get the data from the currently focused cell</li>
	<li>New: Added API function fnGetCurrentTD() to get the currently focused TD element</li>
	<li>New: Updated DataTables distribution to 1.5.6. Might integrate into the DataTables 'extra' directory in future</li>
</ul>
<ul>
	<li>Fixed: Only worked with two_button paging type previously. Now works with all paging types</li>
	<li>Fixed: Use 'jQuery' variable rather than '$' to avoid conflict with other libraries</li>
	<li>Fixed: When attempting to add events using incorrect formatting, an alert is now given</li>
</ul>    <p><a href="http://sprymedia.co.uk/software/KeyTable/KeyTable.zip">Download KeyTable 1.1.0</a></p>  ]]></description>
	<pubDate>Fri, 18 Dec 2009 18:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#36</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.5.6 released</title>
	<description><![CDATA[<p>A quick turn around from 1.5.5 to this release which fixes a bug introduced in 1.5.5 that could cause problems in IE. This is the only change between 1.5.6 and 1.5.5.</p><p>Release notes for DataTables 1.5.6:</p><ul>
	<li>Fixed: sDom issues in IE</li>
</ul>    <p><a href="/releases/dataTables-1.5.6.zip">Download DataTables 1.5.6</a></p>  ]]></description>
	<pubDate>Tue, 15 Dec 2009 12:15:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#35</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.5.5 released</title>
	<description><![CDATA[<p>Bit of a tidy up release this one, cleaning up sDom when using jQuery UI (the standard classes how have H and F macros, rather than requiring the long class strings which can make things confusing), and also passing sorting and filtering enablement information (on a per column basis) to the server are the new features here. Everything else is just minor bug fixes. Enjoy!</p><p>Release notes for DataTables 1.5.5:</p><ul>
	<li>New: Two new sDom constants: H and F for jQuery UI theme header and footer (a long string of classes). Done like this to allow easier accessibility of sDom when used with jQueryUI theming</li>
	<li>New: bSortable_{i} and bSearchable_{i} have been added as parameters sent to the server-side (when server-side processing is used). This allows for the client and server-sides to be more flexible</li>
</ul>
<ul>
	<li>Updated: jEditable demo now has IDs in the TD elements which are also submitted.</li>
</ul>
<ul>
	<li>Fixed: iCookieDuration was missing from the initialisation parameters</li>
	<li>Fixed: State saving did not restore pagination state when bFilter was false</li>
	<li>Fixed: When sorting disabled (either by an individual column, or globally with bSort) classes were not applied to the table header cells, resulting in a poor visual effect, particularly with jQuery UI themeing enabled</li>
	<li>Fixed: When sName defined for the column but sColumns not returned by the server, there would be a Javascript error</li>
</ul>    <p><a href="/releases/dataTables-1.5.5.zip">Download DataTables 1.5.5</a></p>  ]]></description>
	<pubDate>Tue, 08 Dec 2009 19:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#34</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.5.4 released</title>
	<description><![CDATA[<p>A much quicker turn around for this release of DataTables, which includes only one bug fix (but an important one as it could effect the look and feel of the table when using jQuery UI themes), and also a couple of exciting new features.</p><p>Of these new features, the biggest is a new API for sorting, which allows a table to be sorted based on live information in the DOM - <a href="http://datatables.net/examples/api/dom_sort.html">an example is worth a thousand words</a>. Also two flags have been added to the DataTables settings object which are used to indicate if either filtering or sorting have been applied in the latest redraw, allowing you to take appropriate actions: <a href="http://datatables.net/examples/api/counter_column.html">for example updating an index column</a>.</p><p>Release notes for DataTables 1.5.4:</p><ul>
	<li>New: New API for sorting data (specifically indented for DOM variable data such as form elements)</li>
	<li>New: Filtering and sorting are now (individually) flagged has having occurred, when appropriate, such that fnDrawCallback can be used as a hook when sorting and/or filtering has occurred. The new parameters are in oSettings as bSorted and bFiltered.</li>
	<li>New: Example - api/counter_column.html</li>
	<li>New: Example - api/dom_sorting.html</li>
</ul>
<ul>
	<li>Updated: Documentation updated for new sorting API and example data source sorting functions added to plug-ins page.</li>
</ul>
<ul>
	<li>Fixed: jQuery classes were not applied to thead elements which had sorting disabled on them</li>
</ul>    <p><a href="/releases/dataTables-1.5.4.zip">Download DataTables 1.5.4</a></p>  ]]></description>
	<pubDate>Sun, 25 Oct 2009 19:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#33</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.5.3 released</title>
	<description><![CDATA[<p>It's taken a little while to get to this release, but now 1.5.3 is here, and it brings with it a raft of bug fixes, and a few nice little feature additions - mainly the ability to control the default sorting direction of columns, and limiting the sorting to just ascending or descending.</p><p>Release notes for DataTables 1.5.3:</p><ul>
	<li>New: Default sorting direction is now controllable</li>
	<li>New: You can limit sorting to a single direction, or add complex behaviour as required</li>
	<li>New: fnRender object now also included oSettings</li>
	<li>New: fnDraw API function now accepts a single argument (boolean) to indicate if the redraw should be complete (i.e. re-sort and re-filter), which has the side effect of resetting the pagination, or just update the display as it is.</li>
</ul>
<ul>
	<li>Updated: The jQuery UI classes for sorting have been updated to take account of the new sorting direction control feature. This involves the use of a mix of triangle and chevron icons to make it clear what sorting can be controlled.</li>
</ul>
<ul>
	<li>Fixed: If the auto width calculation has found a table width of 0, it is not applied to the table. The reason being is that this can occur when the table is not in the documents, display flow.</li>
	<li>Fixed: Pressing return in the search box could cause a form to be submitted</li>
	<li>Fixed: JUI themes: insert span for the sorting direction in the header as the first element in the TH - makes it suitable for display:block styling. Thanks to TomC for this fix</li>
	<li>Fixed: fnOpen() will now work for elements which are not on the current page.</li>
	<li>Fixed: Child-tables could cause issues with the width calculation were to many TD elements were being selected</li>
	<li>Fixed: Selectors checked and improved for dealing with child-tables</li>
	<li>Fixed: When changing the number of columns in a table, and having bStateSave enabled, this could cause DataTables to expect the wrong number of columns. Now it will expect what is in the data source, and throw away the state information if it is out of date.</li>
	<li>Fixed: When showing all records (-1 length) the 'Next' and 'Previous' buttons weren't being disabled</li>
	<li>Fixed: When showing all records (-1 length) some of the buttons could cause 'odd' behaviour when clicked, even although nothing should have happened</li>
	<li>Fixed: _fnReDraw was missing from oApi</li>
	<li>Fixed: Adding a column to an empty table element with the column initially hidden and then shown would result in the column title failing to be to displayed (the cell would be)</li>
</ul>    <p><a href="/releases/dataTables-1.5.3.zip">Download DataTables 1.5.3</a></p>  ]]></description>
	<pubDate>Sun, 18 Oct 2009 18:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#32</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 1.0.1 released</title>
	<description><![CDATA[<p>I've done a bit of work on FixedHeaders in order to make the display of the header as smooth as possible - and it's generally been very successful. There is a massive improvement in display speed in Firefox and IE8 specifically (Webkit was already smooth), but all browsers should see a big improvement due to the reduced DOM queries and updates.

One thing to note is that IE6 and IE7 do not benefit much from this update (there are some small optimisations), due to lack of position:fixed support in IE6 and a bug in IE7. As such, these two browsers use the old method.</p><p>Release notes for FixedHeader 1.0.1:</p><ul>
<li>Updated: Much improved speed of rendering</li>
<li>Updated: The fnUpdate() function will update cached DOM information now</li>
</ul>    <p><a href="/forums/comments.php?DiscussionID=696">Download FixedHeader 1.0.1</a></p>  ]]></description>
	<pubDate>Fri, 02 Oct 2009 17:45:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#31</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>FixedHeader 1.0.0 released</title>
	<description><![CDATA[<p>Being able to "Freeze" the table's column titles at the top of the table, to have the header floating above the table when an end user scrolls a web-page is a commonly requested feature in DataTables. This is now provided through the new FixedHeader plug-in.</p><p>Release notes for FixedHeader 1.0.0:</p><ul>
<li>Initial release</li>
</ul>    <p><a href="/forums/comments.php?DiscussionID=625">Download FixedHeader 1.0.0</a></p>  ]]></description>
	<pubDate>Wed, 16 Sep 2009 23:13:02 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#30</guid>
	<link>http://www.datatables.net/</link>
</item>

<item>
	<title>DataTables 1.5.2 released</title>
	<description><![CDATA[<p>I'm very pleased to be able to release DataTables 1.5.2 which includes the exciting new feature of full ThemeRoller support (enabled through the 'bJQueryUI' initialisation parameter). This makes it trivial to integrate DataTables into your web-site's look and feel, matching the other jQuery UI widgets, or just to add professional looking styling to your tables. There is also a couple of bug fixes to improve stabilisation.</p><p>Release notes for DataTables 1.5.2:</p><ul>
	<li>New: Full support for jQuery UI's Theme Roller (using the bJQueryUI initialisation parameter)</li>
	<li>New: Custom classes names for all elements can now be defined</li>
	<li>New: In full numbers paging, the 'permanent' buttons (first, next etc) now have their classes updated to be 'active' when they can be clicked on.</li>
</ul>
<ul>
	<li>Fixed: When using sAjaxSource with state saving, the paginging number was not retained</li>
	<li>Fixed: Internal naming for 'first' span for full_numbers paging was incorrect</li>
	<li>Fixed: _fnGetTrNodes, _fnGetDataMaster and fnGetPosition did not consider nulls in aoData (as a result of fnDelete)</li>
	<li>Fixed: Column detection did not take account of TD elements mixed in with the THs</li>
</ul>    <p><a href="/releases/dataTables-1.5.2.zip">Download DataTables 1.5.2</a></p>  ]]></description>
	<pubDate>Sat, 05 Sep 2009 23:00:00 GMT</pubDate>
	<guid isPermaLink="true">http://www.datatables.net/#29</guid>
	<link>http://www.datatables.net/</link>
</item>


	</channel>
</rss>
