Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 7585)
+++ wp-includes/script-loader.php	(working copy)
@@ -131,7 +131,7 @@
 				'pending' => __('%i% pending') // must look like: "# blah blah"
 			) );
 			$this->add( 'admin-users', '/wp-admin/js/users.js', array('wp-lists'), '20070823' );
-			$this->add( 'admin-forms', '/wp-admin/js/forms.js', false, '20080317' );
+			$this->add( 'admin-forms', '/wp-admin/js/forms.js', false, '20080401');
 			$this->add( 'xfn', '/wp-admin/js/xfn.js', false, '3517' );
 			$this->add( 'upload', '/wp-admin/js/upload.js', array('jquery'), '20070518' );
 			$this->add( 'postbox', '/wp-admin/js/postbox.js', array('jquery'), '20080128' );
Index: wp-admin/users.php
===================================================================
--- wp-admin/users.php	(revision 7585)
+++ wp-admin/users.php	(working copy)
@@ -330,7 +330,7 @@
 <table class="widefat">
 <thead>
 <tr class="thead">
-	<th scope="col" class="check-column"><input type="checkbox" onclick="checkAll(document.getElementById('posts-filter'));" /> </th>
+	<th scope="col" class="check-column"><input type="checkbox" /></th>
 	<th><?php _e('Username') ?></th>
 	<th><?php _e('Name') ?></th>
 	<th><?php _e('E-mail') ?></th>
Index: wp-admin/edit-link-categories.php
===================================================================
--- wp-admin/edit-link-categories.php	(revision 7585)
+++ wp-admin/edit-link-categories.php	(working copy)
@@ -101,7 +101,7 @@
 <table class="widefat">
 	<thead>
 	<tr>
-        <th scope="col" class="check-column"><input type="checkbox" onclick="checkAll(document.getElementById('posts-filter'));" /></th>
+        <th scope="col" class="check-column"><input type="checkbox" /></th>
         <th scope="col"><?php _e('Name') ?></th>
         <th scope="col"><?php _e('Description') ?></th>
         <th scope="col" class="num" style="width: 90px;"><?php _e('Links') ?></th>
Index: wp-admin/edit-comments.php
===================================================================
--- wp-admin/edit-comments.php	(revision 7585)
+++ wp-admin/edit-comments.php	(working copy)
@@ -186,7 +186,7 @@
 <table class="widefat">
 <thead>
   <tr>
-    <th scope="col" class="check-column"><input type="checkbox" onclick="checkAll(document.getElementById('comments-form'));" /></th>
+    <th scope="col" class="check-column"><input type="checkbox" /></th>
     <th scope="col"><?php _e('Comment') ?></th>
     <th scope="col"><?php _e('Date') ?></th>
     <th scope="col" class="action-links"><?php _e('Actions') ?></th>
Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 7585)
+++ wp-admin/includes/template.php	(working copy)
@@ -283,7 +283,7 @@
 // define the columns to display, the syntax is 'internal name' => 'display name'
 function wp_manage_posts_columns() {
 	$posts_columns = array();
-	$posts_columns['cb'] = '<input type="checkbox" onclick="checkAll(document.getElementById(\'posts-filter\'));" />';
+	$posts_columns['cb'] = '<input type="checkbox" />';
 	if ( 'draft' === $_GET['post_status'] )
 		$posts_columns['modified'] = __('Modified');
 	elseif ( 'pending' === $_GET['post_status'] )
@@ -305,7 +305,7 @@
 // define the columns to display, the syntax is 'internal name' => 'display name'
 function wp_manage_media_columns() {
 	$posts_columns = array();
-	$posts_columns['cb'] = '<input type="checkbox" onclick="checkAll(document.getElementById(\'posts-filter\'));" />';
+	$posts_columns['cb'] = '<input type="checkbox" />';
 	$posts_columns['icon'] = '';
 	$posts_columns['media'] = _c('Media|media column header');
 	$posts_columns['desc'] = _c('Description|media column header');
@@ -320,7 +320,7 @@
 
 function wp_manage_pages_columns() {
 	$posts_columns = array();
-	$posts_columns['cb'] = '<input type="checkbox" onclick="checkAll(document.getElementById(\'posts-filter\'));" />';
+	$posts_columns['cb'] = '<input type="checkbox" />';
 	if ( 'draft' === $_GET['post_status'] )
 		$posts_columns['modified'] = __('Modified');
 	elseif ( 'pending' === $_GET['post_status'] )
Index: wp-admin/edit-tags.php
===================================================================
--- wp-admin/edit-tags.php	(revision 7585)
+++ wp-admin/edit-tags.php	(working copy)
@@ -172,7 +172,7 @@
 <table class="widefat">
 	<thead>
 	<tr>
-	<th scope="col" class="check-column"><input type="checkbox" onclick="checkAll(document.getElementById('posts-filter'));" /></th>
+	<th scope="col" class="check-column"><input type="checkbox" /></th>
         <th scope="col"><?php _e('Name') ?></th>
         <th scope="col" class="num" style="width: 90px"><?php _e('Posts') ?></th>
 	</tr>
Index: wp-admin/js/forms.js
===================================================================
--- wp-admin/js/forms.js	(revision 7585)
+++ wp-admin/js/forms.js	(working copy)
@@ -1,31 +1,26 @@
-function checkAll(form) {
-	for (i = 0, n = form.elements.length; i < n; i++) {
-		if(form.elements[i].type == "checkbox" && !(form.elements[i].getAttribute('onclick',2))) {
-			if(form.elements[i].checked == true)
-				form.elements[i].checked = false;
-			else
-				form.elements[i].checked = true;
-		}
-	}
+function checkAll(jQ) { // use attr( checked, fn )
+	jQuery(jQ).find( 'tbody :checkbox' ).attr( 'checked', function() {
+		return jQuery(this).attr( 'checked' ) ? '' : 'checked';
+	} );
 }
 
-function getNumChecked(form) {
-	var num = 0;
-	for (i = 0, n = form.elements.length; i < n; i++) {
-		if (form.elements[i].type == "checkbox") {
-			if (form.elements[i].checked == true)
-				num++;
+jQuery( function($) {
+	var lastClicked = false;
+	$( 'tbody :checkbox' ).click( function(e) {
+		if ( 'undefined' == e.shiftKey ) { return true; }
+		if ( e.shiftKey ) {
+			if ( !lastClicked ) { return true; }
+			var checks = $( lastClicked ).parents( 'form:first' ).find( ':checkbox' );
+			var first = checks.index( lastClicked );
+			var last = checks.index( this );
+			if ( 0 < first && 0 < last && first != last ) {
+				checks.slice( first, last ).attr( 'checked', $( this ).is( ':checked' ) ? 'checked' : '' );
+			}
 		}
-	}
-	return num;
-}
-
-function checkAllUsers(role) {
- var checkboxs = document.getElementsByTagName('input');
- for(var i = 0, inp; inp = checkboxs[i]; i++)
- 	if(inp.type.toLowerCase() == 'checkbox' && inp.className == role)
-		if(inp.checked == false)
-			inp.checked = true;
-		else
-			inp.checked = false;
-}
\ No newline at end of file
+		lastClicked = this;
+		return true;
+	} );
+	$( 'thead :checkbox' ).click( function() {
+		checkAll( $(this).parents( 'form:first' ) );
+	} );
+} );
\ No newline at end of file
Index: wp-admin/link-manager.php
===================================================================
--- wp-admin/link-manager.php	(revision 7585)
+++ wp-admin/link-manager.php	(working copy)
@@ -141,7 +141,7 @@
 <table class="widefat">
 	<thead>
 	<tr>
-	<th scope="col" class="check-column"><input type="checkbox" onclick="checkAll(document.getElementById('posts-filter'));" /></th>
+	<th scope="col" class="check-column"><input type="checkbox" /></th>
 <?php foreach($link_columns as $column_display_name) {
 	echo $column_display_name;
 } ?>
Index: wp-admin/categories.php
===================================================================
--- wp-admin/categories.php	(revision 7585)
+++ wp-admin/categories.php	(working copy)
@@ -147,7 +147,7 @@
 <table class="widefat">
 	<thead>
 	<tr>
-		<th scope="col" class="check-column"><input type="checkbox" onclick="checkAll(document.getElementById('posts-filter'));" /></th>
+		<th scope="col" class="check-column"><input type="checkbox" /></th>
         <th scope="col"><?php _e('Name') ?></th>
         <th scope="col"><?php _e('Description') ?></th>
         <th scope="col" class="num"><?php _e('Posts') ?></th>
