Index: wp-admin/list-manipulation.js
===================================================================
--- wp-admin/list-manipulation.js	(revision 2977)
+++ wp-admin/list-manipulation.js	(working copy)
@@ -1,9 +1,76 @@
 var listItems;
 var reg_color = '#FFFFFF';
 var alt_color = '#F1F1F1';
+var multidelete = new Array();
 
 addLoadEvent(getListItems);
 
+function deleteMultiSelect( what, name, message ) {
+	if (multidelete.length > 0) {
+		// Could we disable the button here?
+		message('Slow down cowboy. Multiselect delete in progress!');
+	}
+	
+	inputs = document.getElementsByName(name);
+	if (confirm(message)) {
+		// Find our work
+		for (var i = 0; i < inputs.length ; i++) {
+			if (inputs[i].checked) {
+				multidelete.push(inputs[i].value);
+			}
+		}
+
+		if (multidelete.length > 0 ) {
+			multidelete_what = what;
+			deleteMultiSelectCallback(false);
+		}
+	} else {
+		return false;
+	}
+	return false;
+}
+
+function deleteMultiSelectCallback(iscallback)
+{
+	if (iscallback)
+	{
+		id = multidelete_what + '-' + multidelete.pop();
+		
+		var response = ajaxMultiDel.response;
+		if ( isNaN(response) ) { alert(response); }
+		response = parseInt(response, 10);
+		if ( -1 == response ) {
+			ajaxMultiDel.myResponseElement.innerHTML = "You don't have permission to do that."; 
+			return false;
+		} else if ( 0 == response ) { 
+			ajaxMultiDel.myResponseElement.interHTML = "Something odd happened.  Try refreshing the page? Either that or what you tried to delete never existed in the first place."; 
+			return false;
+		} else if ( 1 == response ) {
+			Fat.fade_element(id,null,700,'#FF3333');
+			setTimeout("document.getElementById('"+id+"').parentNode.removeChild(document.getElementById('"+id+"'))", 1000)
+			var pos = getListPos(id);
+			listItems.splice(pos,1);
+			ajaxMultiDel.myResponseElement.parentNode.removeChild(ajaxMultiDel.myResponseElement);
+		}
+	}
+
+	if (multidelete.length > 0) {
+		ajaxMultiDel = new sack('list-manipulation.php');
+		if ( ajaxMultiDel.failed ) return true;
+		ajaxMultiDel.myResponseElement = getResponseElement();
+		ajaxMultiDel.method = 'POST';
+		ajaxMultiDel.onLoading = function() { ajaxMultiDel.myResponseElement.innerHTML = 'Sending Data...'; };
+		ajaxMultiDel.onLoaded = function() { ajaxMultiDel.myResponseElement.innerHTML = 'Data Sent...'; };
+		ajaxMultiDel.onInteractive = function() { ajaxMultiDel.myResponseElement.innerHTML = 'Processing Data...'; };
+		ajaxMultiDel.onCompletion = function() { deleteMultiSelectCallback(true); };
+		ajaxMultiDel.runAJAX('action=delete-' + multidelete_what + '&id=' + multidelete[multidelete.length -1 ]);
+	} else {
+		//Last time through so recolour the list
+		recolorList();
+	}
+	return false;
+}
+
 function deleteSomething( what, id, message ) {
 	what.replace('-', ' ');
 	if (!message) message = 'Are you sure you want to delete this ' + what + '?';
Index: wp-admin/link-manager.php
===================================================================
--- wp-admin/link-manager.php	(revision 2977)
+++ wp-admin/link-manager.php	(working copy)
@@ -33,6 +33,7 @@
 if ('' != $_POST['assign']) $action = 'assign';
 if ('' != $_POST['visibility']) $action = 'visibility';
 if ('' != $_POST['move']) $action = 'move';
+if ('' != $_POST['bulkdelete']) $action = 'bulkdelete';
 if ('' != $_POST['linkcheck']) $linkcheck = $_POST[linkcheck];
 
 switch ($action) {
@@ -177,6 +178,24 @@
     wp_redirect($this_file);
     break;
   } // end Delete
+  
+  case 'bulkdelete': {
+	check_admin_referer();
+	  
+    if ( !current_user_can('manage_links') )
+      die (__("Cheatin' uh ?"));
+	
+	// Iterate through and delete each specified link 
+	if (isset($_POST['linkcheck'])) {
+		foreach($_POST['linkcheck'] as $link_id) {
+			wp_delete_link((int) $link_id);
+		}
+	}
+	
+	wp_redirect($this_file);
+	
+	break;
+  } // end bulkdelete
 
   case 'linkedit': {
 	$xfn = true;
@@ -422,6 +441,9 @@
         <td>
           <?php _e('Move to category:'); link_category_dropdown('category'); ?> <input name="move" type="submit" id="move" value="<?php _e('Go') ?>" />
         </td>
+        <td>
+          <input name="bulkdelete" type="submit" id="bulkdelete" value="<?php _e('Delete Selected') ?>" onclick="return deleteMultiSelect('link','linkcheck[]','You are about to delete all selected links.\n  \'Cancel\' to stop, \'OK\' to delete.');"/>
+        </td>
         <td align="right">
           <a href="#" onclick="checkAll(document.getElementById('links')); return false; "><?php _e('Toggle Checkboxes') ?></a>
         </td>

