code: function _fnFeatureHtmlPaginate ( settings )
  	{
  		var
  			type   = settings.sPaginationType,
  			plugin = DataTable.ext.pager[ type ],
  			modern = typeof plugin === 'function',
  			redraw = function( settings ) {
  				_fnDraw( settings );
  			},
  			node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],
  			features = settings.aanFeatures;
  	
  		if ( ! modern ) {
  			plugin.fnInit( settings, node, redraw );
  		}
  	
  		/* Add a draw callback for the pagination on first instance, to update the paging display */
  		if ( ! features.p )
  		{
  			node.id = settings.sTableId+'_paginate';
  	
  			settings.aoDrawCallback.push( {
  				"fn": function( settings ) {
  					if ( modern ) {
  						var
  							start      = settings._iDisplayStart,
  							len        = settings._iDisplayLength,
  							visRecords = settings.fnRecordsDisplay(),
  							all        = len === -1,
  							page = all ? 0 : Math.ceil( start / len ),
  							pages = all ? 1 : Math.ceil( visRecords / len ),
  							buttons = plugin(page, pages),
  							i, ien;
  	
  						for ( i=0, ien=features.p.length ; i<ien ; i++ ) {
  							_fnRenderer( settings, 'pageButton' )(
  								settings, features.p[i], i, buttons, page, pages
  							);
  						}
  					}
  					else {
  						plugin.fnUpdate( settings, redraw );
  					}
  				},
  				"sName": "pagination"
  			} );
  		}
  	
  		return node;
  	}
docs: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  Note that most of the paging logic is done in
  DataTable.ext.pager
   
  Generate the node required for default pagination
  @param {object} oSettings dataTables settings object
  @returns {node} Pagination feature node
  @memberof DataTable#oApi