Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 19976)
+++ wp-includes/script-loader.php	(working copy)
@@ -262,6 +262,8 @@
 
 	$scripts->add( 'user-search', "/wp-admin/js/user-search$suffix.js", array( 'jquery-ui-autocomplete' ), false, 1 );
 
+	$scripts->add( 'site-search', "/wp-admin/js/site-search$suffix.js", array( 'jquery-ui-autocomplete' ), false, 1 );
+
 	$scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", array(), false, 1 );
 
 	$scripts->add( 'wplink', "/wp-includes/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), false, 1 );
Index: wp-admin/users.php
===================================================================
--- wp-admin/users.php	(revision 19976)
+++ wp-admin/users.php	(working copy)
@@ -338,6 +338,15 @@
 		wp_redirect( add_query_arg( 'paged', $total_pages ) );
 		exit;
 	}
+
+	if ( is_multisite()
+		&& current_user_can( 'promote_users' )
+		&& ! wp_is_large_network( 'users' )
+		&& ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
+	) {
+		wp_enqueue_script( 'user-search' );
+	}
+
 	include('./admin-header.php');
 
 	$messages = array();
Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 19976)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -34,7 +34,7 @@
 
 do_action( 'admin_init' );
 
-$core_actions_get = array( 'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache', 'autocomplete-user' );
+$core_actions_get = array( 'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache', 'autocomplete-user', 'autocomplete-site' );
 
 $core_actions_post = array(
 	'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link',
Index: wp-admin/includes/ajax-actions.php
===================================================================
--- wp-admin/includes/ajax-actions.php	(revision 19976)
+++ wp-admin/includes/ajax-actions.php	(working copy)
@@ -160,25 +160,32 @@
 	
 	$return = array();
 
+	// Check the type of request
+	if ( isset( $_REQUEST['autocomplete_type'] ) )
+		$type = $_REQUEST['autocomplete_type'];
+	else
+		$type = 'add';
+
 	// Exclude current users of this blog
 	if ( isset( $_REQUEST['site_id'] ) )
 		$id = absint( $_REQUEST['site_id'] );
 	else
 		$id = get_current_blog_id();
 
-	$this_blog_users = get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) );
+	$include_blog_users = ( $type == 'search' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
+	$exclude_blog_users = ( $type == 'add' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
 
 	$users = get_users( array(
 		'blog_id' => false,
 		'search'  => '*' . $_REQUEST['term'] . '*',
-		'exclude' => $this_blog_users,
+		'include' => $include_blog_users,
+		'exclude' => $exclude_blog_users,
 		'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ),
-	) );	
+	) );
 
 	foreach ( $users as $user ) {
 		$return[] = array(
-			/* translators: 1: user_login, 2: user_email */
-			'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ),
+			'label' => sprintf( '%1$s (%2$s)', $user->user_login, $user->user_email ),
 			'value' => $user->user_login,
 		);
 	}
@@ -186,6 +193,34 @@
 	wp_die( json_encode( $return ) );
 }
 
+function wp_ajax_autocomplete_site() {
+	if ( ! is_multisite()
+		|| ! current_user_can( 'manage_sites' )
+		|| wp_is_large_network( 'sites' )
+		|| ! is_super_admin()
+	) {
+		wp_die( -1 );
+	}
+
+	$return = array();
+
+	global $wpdb;
+	$sites = $wpdb->get_results( $wpdb->prepare( "SELECT blog_id, domain FROM $wpdb->blogs WHERE domain LIKE %s AND public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted = '0' ORDER BY registered DESC", '%' . like_escape( stripslashes( $_REQUEST['term'] ) ) . '%' ), ARRAY_A );
+
+	if ( empty( $sites ) )
+		wp_die( -1 );
+
+	foreach ( (array) $sites as $details ) {
+		$blogname = get_blog_option( $details['blog_id'], 'blogname' );
+		$return[] = array(
+			'label' => sprintf( '%1$s (%2$s)', $blogname, $details['domain'] ),
+			'value' => $details['domain']
+		);
+	}
+
+	wp_die( json_encode( $return ) );
+}
+
 /*
  * Ajax helper.
  */
Index: wp-admin/includes/dashboard.php
===================================================================
--- wp-admin/includes/dashboard.php	(revision 19976)
+++ wp-admin/includes/dashboard.php	(working copy)
@@ -439,6 +439,23 @@
 	if ( current_user_can('create_users') )
 		$actions['create-user'] = '<a href="' . network_admin_url('user-new.php') . '">' . __( 'Create a New User' ) . '</a>';
 
+	if ( is_multisite()
+		&& current_user_can( 'promote_users' )
+		&& ! wp_is_large_network( 'users' )
+		&& is_super_admin()
+		&& is_network_admin()
+	) {
+		wp_enqueue_script( 'user-search' );
+	}
+	if ( is_multisite()
+		&& current_user_can( 'manage_sites' )
+		&& ! wp_is_large_network( 'sites' )
+		&& is_super_admin()
+		&& is_network_admin()
+	) {
+		wp_enqueue_script( 'site-search' );
+	}
+
 	$c_users = get_user_count();
 	$c_blogs = get_blog_count();
 
@@ -463,14 +480,14 @@
 
 	<form name="searchform" action="<?php echo network_admin_url('users.php'); ?>" method="get">
 		<p>
-			<input type="text" name="s" value="" size="17" />
+			<input type="text" name="s" value="" size="17" id="user-search-input" />
 			<?php submit_button( __( 'Search Users' ), 'button', 'submit', false, array( 'id' => 'submit_users' ) ); ?>
 		</p>
 	</form>
 
 	<form name="searchform" action="<?php echo network_admin_url('sites.php'); ?>" method="get">
 		<p>
-			<input type="text" name="s" value="" size="17" />
+			<input type="text" name="s" value="" size="17" id="site-search-input" />
 			<?php submit_button( __( 'Search Sites' ), 'button', 'submit', false, array( 'id' => 'submit_sites' ) ); ?>
 		</p>
 	</form>
Index: wp-admin/js/user-search.dev.js
===================================================================
--- wp-admin/js/user-search.dev.js	(revision 19976)
+++ wp-admin/js/user-search.dev.js	(working copy)
@@ -2,8 +2,14 @@
 	var id = typeof( current_site_id ) != 'undefined' ? '&site_id=' + current_site_id : '';
 
 	$( '#adduser-email, #newuser' ).autocomplete({
-		source:   ajaxurl + '?action=autocomplete-user' + id,
+		source:   ajaxurl + '?action=autocomplete-user&autocomplete_type=add' + id,
 		delay:    500,
 		minLength: 2
 	});
-});
\ No newline at end of file
+
+	$( '#user-search-input' ).autocomplete({
+		source:   ajaxurl + '?action=autocomplete-user&autocomplete_type=search' + id,
+		delay:    500,
+		minLength: 2
+	});
+});
Index: wp-admin/js/site-search.dev.js
===================================================================
--- wp-admin/js/site-search.dev.js	(revision 0)
+++ wp-admin/js/site-search.dev.js	(revision 0)
@@ -0,0 +1,7 @@
+jQuery( function($) {
+	$( '#site-search-input' ).autocomplete({
+		source:   ajaxurl + '?action=autocomplete-site',
+		delay:    500,
+		minLength: 2
+	});
+});
Index: wp-admin/index.php
===================================================================
--- wp-admin/index.php	(revision 19976)
+++ wp-admin/index.php	(working copy)
@@ -88,7 +88,7 @@
 	'<p>' . __( '<a href="http://codex.wordpress.org/Dashboard_Screen" target="_blank">Documentation on Dashboard</a>' ) . '</p>' .
 	'<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
 );
-
+	
 include (ABSPATH . 'wp-admin/admin-header.php');
 
 $today = current_time('mysql', 1);
Index: wp-admin/network/users.php
===================================================================
--- wp-admin/network/users.php	(revision 19976)
+++ wp-admin/network/users.php	(working copy)
@@ -247,6 +247,14 @@
 	'<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+if ( is_multisite()
+	&& current_user_can( 'promote_users' )
+	&& ! wp_is_large_network( 'users' )
+	&& is_super_admin()
+) {
+	wp_enqueue_script( 'user-search' );
+}
+
 require_once( '../admin-header.php' );
 
 if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) {
Index: wp-admin/network/site-users.php
===================================================================
--- wp-admin/network/site-users.php	(revision 19976)
+++ wp-admin/network/site-users.php	(working copy)
@@ -171,8 +171,14 @@
 $parent_file = 'sites.php';
 $submenu_file = 'sites.php';
 
-if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) && !wp_is_large_network( 'users' ) )
+if ( is_multisite()
+	&& current_user_can( 'promote_users' )
+	&& ! wp_is_large_network( 'users' )
+	&& apply_filters( 'show_network_site_users_add_existing_form', true )
+	&& ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
+) {
 	wp_enqueue_script( 'user-search' );
+}
 
 require('../admin-header.php'); ?>
 
Index: wp-admin/network/sites.php
===================================================================
--- wp-admin/network/sites.php	(revision 19976)
+++ wp-admin/network/sites.php	(working copy)
@@ -284,6 +284,14 @@
 
 $wp_list_table->prepare_items();
 
+if ( is_multisite()
+	&& current_user_can( 'manage_sites' )
+	&& ! wp_is_large_network( 'sites' )
+	&& is_super_admin()
+) {
+	wp_enqueue_script( 'site-search' );
+}
+
 require_once( '../admin-header.php' );
 ?>
 
Index: wp-admin/css/wp-admin.dev.css
===================================================================
--- wp-admin/css/wp-admin.dev.css	(revision 19976)
+++ wp-admin/css/wp-admin.dev.css	(working copy)
@@ -930,6 +930,7 @@
 
 .ui-autocomplete li a.ui-state-hover {
 	background-color: #f0f0b8;
+	cursor: pointer;
 }
 
 /*------------------------------------------------------------------------------
