Index: wp-includes/default-widgets.php
===================================================================
--- wp-includes/default-widgets.php	(revision 31266)
+++ wp-includes/default-widgets.php	(working copy)
@@ -285,8 +285,10 @@
 		}
 
 		if ( $d ) {
+			echo '<label class="screen-reader-text archives-label" for="' . $this->id_base . '-dropdown-' . $this->number . '">' . $title . '</label>';
+
 ?>
-		<select name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'>
+		<select id="<?php echo $this->id_base . '-dropdown-' . $this->number; ?>" name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'>
 			<?php
 			/**
 			 * Filter the arguments for the Archives widget drop-down.
@@ -322,7 +324,7 @@
 			}
 			?>
 
-			<option value=""><?php echo esc_attr( $label ); ?></option>
+			<option value=""><?php esc_attr_e( $label ); ?></option>
 			<?php wp_get_archives( $dropdown_args ); ?>
 
 		</select>
@@ -563,7 +565,7 @@
 	}
 
 	public function widget( $args, $instance ) {
-
+	
 		/** This filter is documented in wp-includes/default-widgets.php */
 		$title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $instance, $this->id_base );
 
@@ -576,11 +578,16 @@
 			echo $args['before_title'] . $title . $args['after_title'];
 		}
 
-		$cat_args = array('orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h);
+		$cat_args = array( 'orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h );
 
 		if ( $d ) {
+			static $first;
+			$id = isset( $first ) ? 'cat' : $args['widget_id'] . '-select';
+			$first = false;
+			
+			echo '<label class="screen-reader-text categories-label" for="' . $id . '">' . $title . '</label>'; 
 			$cat_args['show_option_none'] = __('Select Category');
-
+			$cat_args['id'] = $id;
 			/**
 			 * Filter the arguments for the Categories widget drop-down.
 			 *
@@ -595,7 +602,8 @@
 
 <script type='text/javascript'>
 /* <![CDATA[ */
-	var dropdown = document.getElementById("cat");
+(function() {
+	var dropdown = document.getElementById("<?php echo $id; ?>");
 	function onCatChange() {
 		if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
 			location.href = "<?php echo home_url(); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value;
@@ -602,6 +610,7 @@
 		}
 	}
 	dropdown.onchange = onCatChange;
+})();
 /* ]]> */
 </script>
 
