docs: function _repaint_on_callback(response, manager){
  	
  	//ll('draw live_pager at: ' + interface_id);
  
  	///
  	/// Section 1: the numbers display.
  	///
  
  	// Collect numbers for display.
  	var total_c = response.total_documents();
  	var first_d = response.start_document();
  	var last_d = response.end_document();
  
  	// Draw meta; the current numbers and page--the same for
  	// every type of return.
  	jQuery('#' + interface_id).empty();
  	if( total_c == 0 ){
  	    jQuery('#' + interface_id).append('No results found.');
  	}else{
  
  	    // A top-level div to contain the literal meta results, and the count
  	    // selector next to them.
  	    var mdiv_attrs = {
  		'class': 'row',
  		'generate_id': true
  	    };
  	    var mdiv = new bbop.html.tag('div', mdiv_attrs);
  
  	    // The literal return metadata.
  	    var dmeta_attrs = {
  		//'class': 'bbop-js-search-pane-meta'
  		'generate_id': true,
  		'class': 'col-xs-6 col-sm-6 col-md-4 col-lg-4'
  	    };
  	    var dmeta = new bbop.html.tag('div', dmeta_attrs);
  	    dmeta.add_to('<div>Total: ' + total_c +
  			 '; showing: ' + first_d +
  			 '-' + last_d + '</div>');
  	    mdiv.add_to(dmeta);
  
  	    ///
  	    /// Section 2: results count control.
  	    ///
  
  	    // Create a text label.
  	    var sel_label_attrs = {
  		//'for': ui_count_control_div_id,
  		// 'generate_id': true,
  		//'class': 'control-label'
  	    };
  	    var sel_label = new bbop.html.tag('span', sel_label_attrs,
  					      'Results&nbsp;count&nbsp;&nbsp;');
  	    
  	    // Create inputs (the current order is important for proper
  	    // for/id creation).
  	    var cinputs = [];
  	    each(selection_counts,
  		 function(num, cindex){
  		     // Create and store the option.
  		     var sel_input_attrs = {
  			 'generate_id': true,
  			 'value': num
  		     };
  		     var sel_input =
  			     new bbop.html.tag('option', sel_input_attrs, num);
  		     var sel_input_id = sel_input.get_id();
  		     cinputs.push(sel_input);
  		 });
  	    // Option container div.
  	    var sel_attrs = {
  		'id': ui_count_control_div_id,
  		//'class': 'form-control',
  		'style': 'width: 5em;'
  	    };
  	    var sel = new bbop.html.tag('select', sel_attrs, cinputs);
  	    
  	    // Container div.
  	    var sel_div_attrs = {
  	    	'generate_id': true
  		//'class': 'col-xs-6 col-sm-6 col-md-3 col-lg-3'
  	    	//'class': 'form-group'
  	    	//'style': 'width: 7em;'
  	    };
  	    var sel_div = new bbop.html.tag('div', sel_div_attrs);
  	    
  	    // Assemble these elements into the UI.
  	    sel_div.add_to(sel_label);
  	    sel_div.add_to(sel);
  	    //mdiv.add_to(sel_div);
  	    dmeta.add_to(sel_div);
  
  	    // Render out the last two sections.
  	    jQuery('#' + interface_id).append(mdiv.to_string());
  	    
  	    ///
  	    /// Section 3: results count activity, setting.
  	    ///
  
  	    // First, unbind so we don't accidentally trigger with any
  	    // changes and don't pile up event handlers.
  	    jQuery('#' + ui_count_control_div_id).unbind('change');
  
  	    // Next, pull out the number of rows requested.
  	    var step = response.row_step();
  	    
  	    // Set the value to the number.
  	    jQuery('#' + ui_count_control_div_id).val(step);
  	    
  	    // Finally, reactivate the event handler on the select.
  	    jQuery('#' + ui_count_control_div_id).change(
  		function(event, ui){
  		    var sv = jQuery('#' + ui_count_control_div_id).val();
  		    if( bbop.core.is_defined(sv) ){
  			// Convert to a number.
  			var si = parseInt(sv);
  			
  			// Set manager and to the search.
  			manager.set_results_count(si);
  			manager.search();
  			// We are now searching--show it.
  			//_spin_up();
  		    }
  		});
  
  	    ///
  	    /// Section 4: the paging buttons.
  	    ///
  	    
  	    var bdiv_attrs = {
   		'class': 'col-xs-12 col-sm-12 col-md-8 col-lg-8',
  	    	'generate_id': true
  	    };
  	    var bdiv = new bbop.html.tag('div', bdiv_attrs);
  	    //jQuery('#' + interface_id).append(bdiv.to_string());
  	    jQuery('#' + mdiv.get_id()).append(bdiv.to_string());
  	    var bdiv_id = bdiv.get_id();
  
  	    // Now add the raw buttons to the interface, and after this,
  	    // activation and adding events.
  	    var bopts = {
  		'generate_id': true,
  		'class': 'btn btn-primary'
  	    };
  	    var b_first = new bbop.html.button('&laquo;First', bopts);
  	    //jQuery('#' + interface_id).append(b_first.to_string());
  	    jQuery('#' + bdiv_id).append(b_first.to_string());
  	    var b_back = new bbop.html.button('&lt;Prev', bopts);
  	    //jQuery('#' + interface_id).append(b_back.to_string());
  	    jQuery('#' + bdiv_id).append(b_back.to_string());
  	    var b_forward = new bbop.html.button('Next&gt;', bopts);
  	    //jQuery('#' + interface_id).append(b_forward.to_string());
  	    jQuery('#' + bdiv_id).append(b_forward.to_string());
  	    var b_last = new bbop.html.button('Last&raquo;', bopts);
  	    //jQuery('#' + interface_id).append(b_last.to_string());
  	    jQuery('#' + bdiv_id).append(b_last.to_string());
  
  	    // Do the math about what buttons to activate.
  	    var b_first_disabled_p = false;
  	    var b_back_disabled_p = false;
  	    var b_forward_disabled_p = false;
  	    var b_last_disabled_p = false;
  	    
  	    // Only activate paging if it is necessary to the returns.
  	    if( ! response.paging_p() ){
  		b_first_disabled_p = true;
  		b_back_disabled_p = true;
  		b_forward_disabled_p = true;
  		b_last_disabled_p = true;
  	    }
  	    
  	    // Don't activate back on the first page.
  	    if( ! response.paging_previous_p() ){
  		b_first_disabled_p = true;
  		b_back_disabled_p = true;
  	    }
  	    
  	    // Don't activate next on the last page.
  	    if( ! response.paging_next_p() ){
  		b_forward_disabled_p = true;
  		b_last_disabled_p = true;
  	    }
  
  	    // First page button.
  	    _disable_if(b_first, b_first_disabled_p);
  	    jQuery('#' + b_first.get_id()).click(function(){
  		// Cheat and trust reset by proxy to work.
  		manager.page_first(); 
  		// We are now searching--show it.
  		//_spin_up();
  	    });
  	    
  	    // Previous page button.
  	    _disable_if(b_back, b_back_disabled_p);
  	    jQuery('#' + b_back.get_id()).click(function(){
  		manager.page_previous();
  		// We are now searching--show it.
  		//_spin_up();
  	    });
  	    
  	    // Next page button.
  	    _disable_if(b_forward, b_forward_disabled_p);
  	    jQuery('#' + b_forward.get_id()).click(function(){
  		manager.page_next();
  		// We are now searching--show it.
  		//_spin_up();
  	    });
  	    
  	    // Last page button.
  	    _disable_if(b_last, b_last_disabled_p);
  	    jQuery('#' + b_last.get_id()).click(function(){
  		// A little trickier.
  		manager.page_last(total_c);
  		// We are now searching--show it.
  		//_spin_up();
  	    });
  
  	    ///
  	    /// Section 5: make a place for external buttons.
  	    ///
  
  	    var holder_attrs = {
  		'id': external_button_location_id
  	    };
  	    var holder = new bbop.html.tag('span', holder_attrs);
  	    jQuery('#' + bdiv_id).append('&nbsp;' + holder.to_string());
  	}
      }