Index: wp-admin/js/nav-menu.dev.js
===================================================================
--- wp-admin/js/nav-menu.dev.js	(revision 14422)
+++ wp-admin/js/nav-menu.dev.js	(working copy)
@@ -340,13 +340,87 @@
 				that.setupQuickSearchEventListeners(el);
 			});
 
-			$(formEL).bind('submit', function(e) {
-				return that.eventSubmitMetaForm.call(that, this, e);
+			// If a "Add to Menu" button was clicked, submit that metabox ajax style.
+			$(formEL).click(function(e) {
+				// based on the input, call that function
+				var divcontainer = $(e.target).parent().parent().parent();
+			
+				if ( $(e.target).is('input') && $(e.target).hasClass('button-secondary') && !$(e.target).hasClass('quick-search-submit') ) {
+					if ( $(divcontainer).hasClass('customlinkdiv') ) {
+						that.addCustomLink();
+					} else if ( $(divcontainer).hasClass('posttypediv') || $(divcontainer).hasClass('taxonomydiv') ) {
+						that.addItemsToMenu( $(divcontainer).attr('id') );
+					};
+					return false;
+				} else if ( $(e.target).is('input') && $(e.target).hasClass('quick-search-submit') ) {
+					that.quickSearch( $(divcontainer).attr('id') );
+					return false;
+				};
 			});
-			$(formEL).find('input:submit').click(function() {
-				$(this).siblings('img.waiting').show();
+		},
+		
+		quickSearch : function(id) {
+			var type = $('#' + id + ' .quick-search').attr('name'),
+			q = $('#' + id + ' .quick-search').val(),
+			menu = $('#menu').val(),
+			nonce = $('#menu-settings-column-nonce').val(),
+			params = {},
+			that = this,
+			processMethod = function(){};
+
+			processMethod = that.processQuickSearchQueryResponse;
+
+			params = {
+				'action': 'menu-quick-search',
+				'response-format': 'markup',
+				'menu': menu,
+				'menu-settings-column-nonce': nonce,
+				'q': q,
+				'type': type
+			};
+
+			$.post( ajaxurl, params, function(menuMarkup) {
+				processMethod.call(that, menuMarkup, params);
 			});
 		},
+		
+		addCustomLink : function() {
+			var url = $('#custom-menu-item-url').val(),
+			label = $('#custom-menu-item-name').val(),
+			menu = $('#menu').val(),
+			nonce = $('#menu-settings-column-nonce').val(),
+			params = {},
+			that = this,
+			processMethod = function(){};
+			
+			if ( '' == url || 'http://' == url )
+				return false;
+			
+			// Show the ajax spinner
+			$('.customlinkdiv img.waiting').show();
+			
+			params = {
+				'action': 'add-menu-item',
+				'menu': menu,
+				'menu-settings-column-nonce': nonce,
+				'menu-item': {
+					'-1': {
+						'menu-item-type': 'custom',
+						'menu-item-url': url,
+						'menu-item-title': label
+					}
+				}
+			};
+			
+			processMethod = that.eventAddMenuItem;
+			
+			$.post( ajaxurl, params, function(menuMarkup) {
+				processMethod.call(that, menuMarkup, params);
+				
+				// Remove the ajax spinner
+				$('.customlinkdiv img.waiting').hide();
+			});
+		},
 
 		attachTabsPanelListeners : function() {
 			$('#menu-settings-column').bind('click', function(e) {
@@ -598,6 +672,7 @@
 		 * @param object e The event object.
 		 */
 		eventSubmitMetaForm : function(thisForm, e) {
+			
 			var inputs = thisForm.getElementsByTagName('input'),
 			i = inputs.length,
 			j,
@@ -624,7 +699,7 @@
 					)
 				) {
 					params['action'] = 'add-menu-item';
-					processMethod = that.processAddMenuItemResponse;
+					processMethod = that.eventAddMenuItem;
 
 					listItemDBIDMatch = re.exec(inputs[i].name);
 					listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
@@ -652,7 +727,7 @@
 			}
 			params['menu'] = thisForm.elements['menu'].value;
 			params['menu-settings-column-nonce'] = thisForm.elements['menu-settings-column-nonce'].value;
-
+console.log(params);
 			$.post( ajaxurl, params, function(menuMarkup) {
 				processMethod.call(that, menuMarkup, params);
 				$(thisForm).find('img.waiting').hide();
@@ -660,19 +735,65 @@
 
 			return false;
 		},
+		
+		/**
+		 * Adds menu items to the menu.
+		 *
+		 * @param string id The id of the metabox
+		 */
+		addItemsToMenu : function(id) {
+			var items = $( '.tabs-panel-active .categorychecklist li input:checked', '#' + id),
+			menu = $('#menu').val(),
+			nonce = $('#menu-settings-column-nonce').val(),
+			params = {},
+			that = this,
+			processMethod = function(){},
+			re = new RegExp('menu-item\\[(\[^\\]\]*)');
+			
+			processMethod = that.eventAddMenuItem;
+			
+			// If no items are checked, bail.
+			if ( !items.length )
+				return false;
+			
+			// Show the ajax spinner
+			$('#' + id + ' img.waiting').show();
 
+			// do stuff
+			$(items).each(function(){
+				listItemDBIDMatch = re.exec( $(this).attr('name') );
+				listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
+				listItemData = getListDataFromID(listItemDBID);
+
+				params = {
+					'action': 'add-menu-item',
+					'menu': menu,
+					'menu-settings-column-nonce': nonce,
+					'menu-item': {}
+				};
+
+				params['menu-item'][listItemDBID] = listItemData;
+
+				$.post( ajaxurl, params, function(menuMarkup) {
+					processMethod.call(that, menuMarkup, params);
+				});
+
+				// Uncheck the item
+				$(this).attr('checked', false);
+			});
+
+			// Remove the ajax spinner
+			$('#' + id + ' img.waiting').hide();
+		},
+		
 		/**
 		 * Process the add menu item request response into menu list item.
 		 *
 		 * @param string menuMarkup The text server response of menu item markup.
 		 * @param object req The request arguments.
 		 */
-		processAddMenuItemResponse : function( menuMarkup, req ) {
+		eventAddMenuItem : function( menuMarkup, req ) {
 			$(menuMarkup).hideAdvancedMenuItemFields().appendTo( menuList );
-
-			/* set custom link form back to defaults */
-			$('#custom-menu-item-name').val('').blur();
-			$('#custom-menu-item-url').val('http://');
 		},
 
 		/**
@@ -752,4 +873,4 @@
 
 jQuery(function() {
 	wpNavMenu.init();
-});
+});
\ No newline at end of file
