code: function _fnGetRowElements( settings, row )
  	{
  		var
  			d = [],
  			tds = [],
  			td = row.firstChild,
  			name, col, o, i=0, contents,
  			columns = settings.aoColumns;
  	
  		var attr = function ( str, data, td  ) {
  			if ( typeof str === 'string' ) {
  				var idx = str.indexOf('@');
  	
  				if ( idx !== -1 ) {
  					var src = str.substring( idx+1 );
  					o[ '@'+src ] = td.getAttribute( src );
  				}
  			}
  		};
  	
  		while ( td ) {
  			name = td.nodeName.toUpperCase();
  	
  			if ( name == "TD" || name == "TH" ) {
  				col = columns[i];
  				contents = $.trim(td.innerHTML);
  	
  				if ( col && col._bAttrSrc ) {
  					o = {
  						display: contents
  					};
  	
  					attr( col.mData.sort, o, td );
  					attr( col.mData.type, o, td );
  					attr( col.mData.filter, o, td );
  	
  					d.push( o );
  				}
  				else {
  					d.push( contents );
  				}
  	
  				tds.push( td );
  				i++;
  			}
  	
  			td = td.nextSibling;
  		}
  	
  		return {
  			data: d,
  			cells: tds
  		};
  	}
docs: Build a data source object from an HTML row, reading the contents of the
  cells that are in the row.
  
  @param {object} settings DataTables settings object
  @param {node} TR element from which to read data
  @returns {object} Object with two parameters: `data` the data read, in
  document order, and `cells` and array of nodes (they can be useful to the
  caller, so rather than needing a second traversal to get them, just return
  them from here).
  @memberof DataTable#oApi