Index: wp-includes/js/tinymce/plugins/wplink/editor_plugin.js
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/editor_plugin.js	(revision 16439)
+++ wp-includes/js/tinymce/plugins/wplink/editor_plugin.js	(working copy)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpLink",{init:function(a,b){a.addCommand("WP_Link",function(){a.windowManager.open({file:tinymce.baseURL+"/wp-mce-link.php",width:480,height:430,inline:1},{plugin_url:b})});a.addButton("link",{title:a.getLang("advanced.link_desc"),cmd:"WP_Link"});a.addShortcut("alt+shift+a",a.getLang("advanced.link_desc"),"WP_Link");a.onNodeChange.add(function(d,c,e){c.setActive("wplink",e.nodeName=="A")})},getInfo:function(){return{longname:"WordPress Link Dialog",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wplink",tinymce.plugins.wpLink)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpLink",{init:function(a,b){a.addCommand("WP_Link",function(){a.windowManager.open({id:"wp-link",width:480,height:"auto",wpDialog:true,title:a.getLang("advlink.link_desc")},{plugin_url:b})});a.addButton("link",{title:a.getLang("advanced.link_desc"),cmd:"WP_Link"});a.addShortcut("alt+shift+a",a.getLang("advanced.link_desc"),"WP_Link");a.onNodeChange.add(function(d,c,e){c.setActive("wplink",e.nodeName=="A")})},getInfo:function(){return{longname:"WordPress Link Dialog",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wplink",tinymce.plugins.wpLink)})();
\ No newline at end of file
Index: wp-includes/js/tinymce/plugins/wplink/css/wplink.dev.css
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/css/wplink.dev.css	(revision 0)
+++ wp-includes/js/tinymce/plugins/wplink/css/wplink.dev.css	(revision 0)
@@ -0,0 +1,113 @@
+#wp-link p.howto {
+	margin: 3px;
+}
+#link-options {
+	padding: 10px 0 14px;
+	border-bottom: 1px solid #dfdfdf;
+	margin: 0 6px 14px;
+}
+#wp-link label input[type="text"] {
+	width: 360px;
+	margin-top: 5px;
+}
+#wp-link label span {
+	display: inline-block;
+	width: 80px;
+	text-align: right;
+	padding-right: 5px;
+}
+#wp-link .link-search-wrapper {
+	margin: 5px 5px 9px;
+	display: block;
+	overflow: hidden;
+}
+#wp-link .link-search-wrapper span {
+	float: left;
+	margin-top: 6px;
+}
+#wp-link .link-search-wrapper input[type="text"] {
+	float: left;
+	width: 220px;
+}
+#wp-link .link-search-wrapper img.waiting {
+	margin: 8px 1px 0 4px;
+	float: left;
+	display: none;
+}
+#open-in-new-tab {
+	display: inline-block;
+	padding: 3px 0 0;
+	margin: 0 0 0 87px;
+}
+#open-in-new-tab span {
+	width: auto;
+	margin-left: 6px;
+	font-size: 11px;
+}
+.query-results {
+	border: 1px #dfdfdf solid;
+	margin: 0 5px 5px;
+	background: #fff;
+	height: 185px;
+	overflow: auto;
+}
+.query-results li {
+	margin-bottom: 0;
+	border-bottom: 1px solid #f1f1f1;
+	color: #555;
+	padding: 4px 6px;
+	cursor: pointer;
+}
+.query-results li:hover {
+	background: #eaf2fa;
+	color: #333;
+}
+#wp-link .query-results li.unselectable:hover {
+	background: #fff;
+	cursor: auto;
+	color: #555;
+}
+#wp-link .query-results li.unselectable {
+	border-bottom: 1px solid #dfdfdf;
+}
+#wp-link .query-results li.selected {
+	background: #f1f1f1;
+	color: #333;
+}
+#wp-link .query-results li.selected .item-title {
+	font-weight: bold;
+}
+#wp-link .item-info {
+	text-transform: uppercase;
+	color: #aaa;
+	font-size: 11px;
+	float: right;
+}
+#search-results {
+	display: none;
+}
+#wp-link .river-waiting {
+	display: none;
+	padding: 10px 0;
+}
+#wp-link .river-waiting img.waiting {
+	margin: 0 auto;
+	display: block;
+}
+#wp-link .submitbox {
+	padding: 5px 5px 0;
+	font-size: 11px;
+	overflow: auto;
+	height: 29px;
+}
+#wp-link-cancel {
+	line-height: 25px;
+	float: left;
+}
+#wp-link-update {
+	line-height: 23px;
+	float: right;
+}
+#wp-link-update a {
+	display: inline-block;
+}
\ No newline at end of file
Index: wp-includes/js/tinymce/plugins/wplink/css/wplink.css
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/css/wplink.css	(revision 0)
+++ wp-includes/js/tinymce/plugins/wplink/css/wplink.css	(revision 0)
@@ -0,0 +1 @@
+#wp-link p.howto{margin:3px;}#link-options{padding:10px 0 14px;border-bottom:1px solid #dfdfdf;margin:0 6px 14px;}#wp-link label input[type="text"]{width:360px;margin-top:5px;}#wp-link label span{display:inline-block;width:80px;text-align:right;padding-right:5px;}#wp-link .link-search-wrapper{margin:5px 5px 9px;display:block;overflow:hidden;}#wp-link .link-search-wrapper span{float:left;margin-top:6px;}#wp-link .link-search-wrapper input[type="text"]{float:left;width:220px;}#wp-link .link-search-wrapper img.waiting{margin:8px 1px 0 4px;float:left;display:none;}#open-in-new-tab{display:inline-block;padding:3px 0 0;margin:0 0 0 87px;}#open-in-new-tab span{width:auto;margin-left:6px;font-size:11px;}.query-results{border:1px #dfdfdf solid;margin:0 5px 5px;background:#fff;height:185px;overflow:auto;}.query-results li{margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#555;padding:4px 6px;cursor:pointer;}.query-results li:hover{background:#eaf2fa;color:#333;}#wp-link .query-results li.unselectable:hover{background:#fff;cursor:auto;color:#555;}#wp-link .query-results li.unselectable{border-bottom:1px solid #dfdfdf;}#wp-link .query-results li.selected{background:#f1f1f1;color:#333;}#wp-link .query-results li.selected .item-title{font-weight:bold;}#wp-link .item-info{text-transform:uppercase;color:#aaa;font-size:11px;float:right;}#search-results{display:none;}#wp-link .river-waiting{display:none;padding:10px 0;}#wp-link .river-waiting img.waiting{margin:0 auto;display:block;}#wp-link .submitbox{padding:5px 5px 0;font-size:11px;overflow:auto;height:29px;}#wp-link-cancel{line-height:25px;float:left;}#wp-link-update{line-height:23px;float:right;}#wp-link-update a{display:inline-block;}
\ No newline at end of file
Index: wp-includes/js/tinymce/plugins/wplink/js/wplink.js
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/js/wplink.js	(revision 16439)
+++ wp-includes/js/tinymce/plugins/wplink/js/wplink.js	(working copy)
@@ -1 +1 @@
-(function(d){var a={},c={},b,e={timeToTriggerRiver:150,minRiverAJAXDuration:200,lastSearch:"",riverDefaults:function(){return{page:2,allLoaded:false,active:false}},init:function(){var f;b=tinyMCEPopup.editor;a.url=d("#url-field");a.title=d("#link-title-field");a.openInNewTab=d("#link-target-checkbox");a.search=d("#search-field");c.search=d("#search-results");c.recent=d("#most-recent-results");c.search.data("river",e.riverDefaults());c.recent.data("river",e.riverDefaults());d("#wp-update").click(e.update);d("#wp-cancel").click(function(){tinyMCEPopup.close()});d(".query-results").delegate("li","click",e.selectInternalLink);d(".query-results").scroll(e.maybeLoadRiver);a.search.keyup(e.searchInternalLinks);if(f=b.dom.getParent(b.selection.getNode(),"A")){a.url.val(f.href);a.title.val(b.dom.getAttrib(f,"title"));if("_blank"==b.dom.getAttrib(f,"target")){a.openInNewTab.attr("checked","checked")}}a.url.focus()},update:function(){var j,g=tinyMCEPopup.editor,h={href:a.url.val(),title:a.title.val(),target:a.openInNewTab.attr("checked")?"_blank":""},k,f,i=h.title?h.title:h.href;tinyMCEPopup.restoreSelection();k=g.dom.getParent(g.selection.getNode(),"A");if(!h.href){if(g.selection.isCollapsed()){tinyMCEPopup.close();return}else{if(k){tinyMCEPopup.execCommand("mceBeginUndoLevel");f=g.selection.getBookmark();g.dom.remove(k,1);g.selection.moveToBookmark(f);tinyMCEPopup.execCommand("mceEndUndoLevel");tinyMCEPopup.close();return}}}tinyMCEPopup.execCommand("mceBeginUndoLevel");if(k==null){g.getDoc().execCommand("unlink",false,null);if(g.selection.isCollapsed()){j=g.dom.create("a",{href:"#mce_temp_url#"},i);g.selection.setNode(j)}else{tinyMCEPopup.execCommand("CreateLink",false,"#mce_temp_url#",{skip_undo:1})}tinymce.each(g.dom.select("a"),function(l){if(g.dom.getAttrib(l,"href")=="#mce_temp_url#"){k=l;g.dom.setAttribs(k,h)}})}else{g.dom.setAttribs(k,h)}if(k.childNodes.length!=1||k.firstChild.nodeName!="IMG"){g.focus();g.selection.select(k);g.selection.collapse(0);tinyMCEPopup.storeSelection()}tinyMCEPopup.execCommand("mceEndUndoLevel");tinyMCEPopup.close()},selectInternalLink:function(){var f=d(this);if(f.hasClass("unselectable")){return}f.siblings(".selected").removeClass("selected");f.addClass("selected");a.url.val(f.children(".item-permalink").val());a.title.val(f.children(".item-title").text())},maybeLoadRiver:function(){var h=d(this),g=h.children("ul"),i=h.data("river"),f=h.scrollTop()+h.height();if(f!=g.height()||i.active||i.allLoaded){return}setTimeout(function(){var j=h.scrollTop(),k=j+h.height(),l=h.find(".river-waiting");if(f!=k||k!=g.height()||i.active||i.allLoaded){return}i.active=true;l.show();h.scrollTop(j+l.outerHeight());e.linkAJAX(h,{page:i.page},function(m){i.page++;i.active=false;i.allLoaded=!m;l.hide()},{append:true,delay:e.minRiverAJAXDuration})},e.timeToTriggerRiver)},searchInternalLinks:function(){var f=d(this),h,g=f.val();if(g.length>2){c.recent.hide();c.search.show();if(e.lastSearch==g){return}e.lastSearch=g;h=f.siblings("img.waiting").show();c.search.data("river",e.riverDefaults());c.search.scrollTop(0);e.linkAJAX(c.search,{title:g},function(){h.hide()})}else{c.search.hide();c.recent.show()}},linkAJAX:function(i,h,j,g){var f;g=g||{};if(!i.hasClass("query-results")){i=i.parents(".query-results")}if(!i.length){return}f=e.delayedCallback(function(k){e.processAJAXResponse(i,k,j,g)},g.delay);d.post(ajaxurl,d.extend({action:"wp-link-ajax"},h),f,"json")},processAJAXResponse:function(i,f,j,g){var h="";if(!f){if(!g.append){h+='<li class="no-matches-found unselectable"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"}}else{d.each(f,function(){h+='<li><input type="hidden" class="item-permalink" value="'+this["permalink"]+'" />';h+='<span class="item-title">';h+=this["title"]?this["title"]:"<em>"+wpLinkL10n.untitled+"</em>";h+='</span><span class="item-info">'+this["info"]+"</span></li>"})}i.children("ul")[g.append?"append":"html"](h);if(j){j(f)}},delayedCallback:function(h,f){var k,j,i,g;if(!f){return h}setTimeout(function(){if(j){return h.apply(g,i)}k=true},f);return function(){if(k){return h.apply(this,arguments)}i=arguments;g=this;j=true}}};d(document).ready(e.init)})(jQuery);
\ No newline at end of file
+(function(d){var a={},c={},b,e={timeToTriggerRiver:150,minRiverAJAXDuration:200,lastSearch:"",riverDefaults:function(){return{page:2,allLoaded:false,active:false}},init:function(){a.dialog=d("#wp-link");a.url=d("#url-field");a.title=d("#link-title-field");a.openInNewTab=d("#link-target-checkbox");a.search=d("#search-field");c.search=d("#search-results");c.recent=d("#most-recent-results");c.search.data("river",e.riverDefaults());c.recent.data("river",e.riverDefaults());c.group=d(".query-results",a.dialog);d("#wp-link-update").click(e.update);d("#wp-link-cancel").click(function(){tinyMCEPopup.close()});c.group.delegate("li","click",e.selectInternalLink);c.group.scroll(e.maybeLoadRiver);a.search.keyup(e.searchInternalLinks);a.dialog.bind("dialogopen",e.refresh)},refresh:function(){var f;b=tinyMCEPopup.editor;if(f=b.dom.getParent(b.selection.getNode(),"A")){a.url.val(f.href);a.title.val(b.dom.getAttrib(f,"title"));if("_blank"==b.dom.getAttrib(f,"target")){a.openInNewTab.attr("checked","checked")}}c.group.find(".selected").removeClass("selected");a.url.focus()},update:function(){var j,g=tinyMCEPopup.editor,h={href:a.url.val(),title:a.title.val(),target:a.openInNewTab.attr("checked")?"_blank":""},k,f,i=h.title?h.title:h.href;tinyMCEPopup.restoreSelection();k=g.dom.getParent(g.selection.getNode(),"A");if(!h.href){if(g.selection.isCollapsed()){tinyMCEPopup.close();return}else{if(k){tinyMCEPopup.execCommand("mceBeginUndoLevel");f=g.selection.getBookmark();g.dom.remove(k,1);g.selection.moveToBookmark(f);tinyMCEPopup.execCommand("mceEndUndoLevel");tinyMCEPopup.close();return}}}tinyMCEPopup.execCommand("mceBeginUndoLevel");if(k==null){g.getDoc().execCommand("unlink",false,null);if(g.selection.isCollapsed()){j=g.dom.create("a",{href:"#mce_temp_url#"},i);g.selection.setNode(j)}else{tinyMCEPopup.execCommand("CreateLink",false,"#mce_temp_url#",{skip_undo:1})}tinymce.each(g.dom.select("a"),function(l){if(g.dom.getAttrib(l,"href")=="#mce_temp_url#"){k=l;g.dom.setAttribs(k,h)}})}else{g.dom.setAttribs(k,h)}if(k.childNodes.length!=1||k.firstChild.nodeName!="IMG"){g.focus();g.selection.select(k);g.selection.collapse(0);tinyMCEPopup.storeSelection()}tinyMCEPopup.execCommand("mceEndUndoLevel");tinyMCEPopup.close()},selectInternalLink:function(){var f=d(this);if(f.hasClass("unselectable")){return}f.siblings(".selected").removeClass("selected");f.addClass("selected");a.url.val(f.children(".item-permalink").val());a.title.val(f.children(".item-title").text())},maybeLoadRiver:function(){var h=d(this),g=h.children("ul"),i=h.data("river"),f=h.scrollTop()+h.height();if(f!=g.height()||i.active||i.allLoaded){return}setTimeout(function(){var j=h.scrollTop(),k=j+h.height(),l=h.find(".river-waiting");if(f!=k||k!=g.height()||i.active||i.allLoaded){return}i.active=true;l.show();h.scrollTop(j+l.outerHeight());e.linkAJAX(h,{page:i.page},function(m){i.page++;i.active=false;i.allLoaded=!m;l.hide()},{append:true,delay:e.minRiverAJAXDuration})},e.timeToTriggerRiver)},searchInternalLinks:function(){var f=d(this),h,g=f.val();if(g.length>2){c.recent.hide();c.search.show();if(e.lastSearch==g){return}e.lastSearch=g;h=f.siblings("img.waiting").show();c.search.data("river",e.riverDefaults());c.search.scrollTop(0);e.linkAJAX(c.search,{title:g},function(){h.hide()})}else{c.search.hide();c.recent.show()}},linkAJAX:function(i,h,j,g){var f;g=g||{};if(!i.hasClass("query-results")){i=i.parents(".query-results")}if(!i.length){return}f=e.delayedCallback(function(k){e.processAJAXResponse(i,k,j,g)},g.delay);d.post(ajaxurl,d.extend({action:"wp-link-ajax"},h),f,"json")},processAJAXResponse:function(i,f,j,g){var h="";if(!f){if(!g.append){h+='<li class="no-matches-found unselectable"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"}}else{d.each(f,function(){h+='<li><input type="hidden" class="item-permalink" value="'+this["permalink"]+'" />';h+='<span class="item-title">';h+=this["title"]?this["title"]:"<em>"+wpLinkL10n.untitled+"</em>";h+='</span><span class="item-info">'+this["info"]+"</span></li>"})}i.children("ul")[g.append?"append":"html"](h);if(j){j(f)}},delayedCallback:function(h,f){var k,j,i,g;if(!f){return h}setTimeout(function(){if(j){return h.apply(g,i)}k=true},f);return function(){if(k){return h.apply(this,arguments)}i=arguments;g=this;j=true}}};d(document).ready(e.init)})(jQuery);
\ No newline at end of file
Index: wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js	(revision 16439)
+++ wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js	(working copy)
@@ -12,11 +12,7 @@
 			};
 		},
 		init : function() {
-			var e;
-			// Init shared vars
-			ed = tinyMCEPopup.editor;
-
-
+			inputs.dialog = $('#wp-link');
 			// URL
 			inputs.url = $('#url-field');
 			// Secondary options
@@ -29,14 +25,25 @@
 			results.recent = $('#most-recent-results');
 			results.search.data('river', wpLink.riverDefaults() );
 			results.recent.data('river', wpLink.riverDefaults() );
+			results.group = $('.query-results', inputs.dialog);
 
 			// Bind event handlers
-			$('#wp-update').click( wpLink.update );
-			$('#wp-cancel').click( function() { tinyMCEPopup.close(); } );
-			$('.query-results').delegate('li', 'click', wpLink.selectInternalLink );
-			$('.query-results').scroll( wpLink.maybeLoadRiver );
+			$('#wp-link-update').click( wpLink.update );
+			$('#wp-link-cancel').click( function() { tinyMCEPopup.close(); } );
+			
+			results.group.delegate('li', 'click', wpLink.selectInternalLink )
+			results.group.scroll( wpLink.maybeLoadRiver );
+			
 			inputs.search.keyup( wpLink.searchInternalLinks );
+			
+			inputs.dialog.bind('dialogopen', wpLink.refresh);
+		},
 
+		refresh : function() {
+			var e;
+			
+			ed = tinyMCEPopup.editor;
+			
 			// If link exists, select proper values.
 			if ( e = ed.dom.getParent(ed.selection.getNode(), 'A') ) {
 				// Set URL and description.
@@ -47,6 +54,8 @@
 					inputs.openInNewTab.attr('checked','checked');
 			}
 
+			// Clear previously selected links
+			results.group.find('.selected').removeClass('selected');
 			// Focus the URL field
 			inputs.url.focus();
 		},
Index: wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js	(revision 16439)
+++ wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js	(working copy)
@@ -12,10 +12,11 @@
 			// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
 			ed.addCommand('WP_Link', function() {
 				ed.windowManager.open({
-					file : tinymce.baseURL + '/wp-mce-link.php',
+					id : 'wp-link',
 					width : 480,
-					height : 430,
-					inline : 1
+					height : "auto",
+					wpDialog : true,
+					title : ed.getLang('advlink.link_desc')
 				}, {
 					plugin_url : url // Plugin absolute URL
 				});
Index: wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.js
===================================================================
--- wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.js	(revision 0)
+++ wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.js	(revision 0)
@@ -0,0 +1 @@
+(function(b){var a=function(c){return function(){if(this.features.wpDialog){return c.apply(this,arguments)}else{return this.parent.apply(this,arguments)}}};tinymce.create("tinymce.plugins.WPDialogs",{init:function(c,d){c.onBeforeRenderUI.add(function(){c.windowManager=new tinymce.WPWindowManager(c)})},getInfo:function(){return{longname:"WPDialogs",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"0.1"}}});tinymce.create("tinymce.WPWindowManager:tinymce.InlineWindowManager",{WPWindowManager:function(c){this.parent(c)},open:function(e,g){var d=this,c;if(!e.wpDialog){return this.parent(e,g)}else{if(!e.id){return}}c=b("#"+e.id);if(!c.length){return}d.features=e;d.params=g;d.onOpen.dispatch(d,e,g);d.element=d.windows[e.id]=c;if(tinyMCEPopup){tinyMCEPopup.init()}c.dialog({title:e.title,width:e.width,height:e.height,modal:true})},close:a(function(){this.element.dialog("close")}),});tinymce.PluginManager.add("wpdialogs",tinymce.plugins.WPDialogs)})(jQuery);
\ No newline at end of file
Index: wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.dev.js
===================================================================
--- wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.dev.js	(revision 0)
+++ wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.dev.js	(revision 0)
@@ -0,0 +1,80 @@
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function($) {
+	var wpDialogFn = function( fn ) {
+		return function() {
+			if ( this.features.wpDialog )
+				return fn.apply( this, arguments );
+			else
+				return this.parent.apply( this, arguments );
+		};
+	};
+
+	tinymce.create('tinymce.plugins.WPDialogs', {
+		init : function(ed, url) {
+			// Replace window manager
+			ed.onBeforeRenderUI.add(function() {
+				ed.windowManager = new tinymce.WPWindowManager(ed);
+			});
+		},
+
+		getInfo : function() {
+			return {
+				longname : 'WPDialogs',
+				author : 'WordPress',
+				authorurl : 'http://wordpress.org',
+				infourl : 'http://wordpress.org',
+				version : '0.1'
+			};
+		}
+	});
+
+	tinymce.create('tinymce.WPWindowManager:tinymce.InlineWindowManager', {
+		WPWindowManager : function(ed) {
+			this.parent(ed);
+		},
+
+		open : function(f, p) {
+			var t = this, element;
+			// Can't use wpDialogFn here; this.features isn't set yet.
+			if ( ! f.wpDialog )
+				return this.parent( f, p );
+			else if ( ! f.id )
+				return;
+			
+			element = $('#' + f.id);
+			if ( ! element.length )
+				return;
+			
+			t.features = f;
+			t.params = p;
+			t.onOpen.dispatch(t, f, p);
+			t.element = t.windows[ f.id ] = element;
+			
+			if ( tinyMCEPopup )
+				tinyMCEPopup.init();
+			
+			element.dialog({
+				title: f.title,
+				width: f.width,
+				height: f.height,
+				modal: true
+			});
+		},
+		close : wpDialogFn(function() {
+			this.element.dialog('close');
+		}),
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('wpdialogs', tinymce.plugins.WPDialogs);
+})(jQuery);
+
Index: wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js
===================================================================
--- wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js	(revision 0)
+++ wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js	(revision 0)
@@ -0,0 +1,432 @@
+/**
+ * popup.js
+ * 
+ * An altered version of tinyMCEPopup to work in the same window as tinymce.
+ * 
+ * ------------------------------------------------------------------
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+// Some global instances
+
+/**
+ * TinyMCE popup/dialog helper class. This gives you easy access to the
+ * parent editor instance and a bunch of other things. It's higly recommended
+ * that you load this script into your dialogs.
+ *
+ * @static
+ * @class tinyMCEPopup
+ */
+var tinyMCEPopup = {
+	/**
+	 * Initializes the popup this will be called automatically.
+	 *
+	 * @method init
+	 */
+	init : function() {
+		var t = this, w, ti;
+
+		// Find window & API
+		w = t.getWin();
+		tinymce = w.tinymce;
+		tinyMCE = w.tinyMCE;
+		t.editor = tinymce.EditorManager.activeEditor;
+		t.params = t.editor.windowManager.params;
+		t.features = t.editor.windowManager.features;
+		t.dom = tinymce.dom;
+
+		// Setup on init listeners
+		t.listeners = [];
+		t.onInit = {
+			add : function(f, s) {
+				t.listeners.push({func : f, scope : s});
+			}
+		};
+
+		t.isWindow = !t.getWindowArg('mce_inline');
+		t.id = t.features.id;
+		t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
+	},
+
+	/**
+	 * Returns the reference to the parent window that opened the dialog.
+	 *
+	 * @method getWin
+	 * @return {Window} Reference to the parent window that opened the dialog.
+	 */
+	getWin : function() {
+		return window;
+	},
+
+	/**
+	 * Returns a window argument/parameter by name.
+	 *
+	 * @method getWindowArg
+	 * @param {String} n Name of the window argument to retrive.
+	 * @param {String} dv Optional default value to return.
+	 * @return {String} Argument value or default value if it wasn't found.
+	 */
+	getWindowArg : function(n, dv) {
+		var v = this.params[n];
+
+		return tinymce.is(v) ? v : dv;
+	},
+
+	/**
+	 * Returns a editor parameter/config option value.
+	 *
+	 * @method getParam
+	 * @param {String} n Name of the editor config option to retrive.
+	 * @param {String} dv Optional default value to return.
+	 * @return {String} Parameter value or default value if it wasn't found.
+	 */
+	getParam : function(n, dv) {
+		return this.editor.getParam(n, dv);
+	},
+
+	/**
+	 * Returns a language item by key.
+	 *
+	 * @method getLang
+	 * @param {String} n Language item like mydialog.something.
+	 * @param {String} dv Optional default value to return.
+	 * @return {String} Language value for the item like "my string" or the default value if it wasn't found.
+	 */
+	getLang : function(n, dv) {
+		return this.editor.getLang(n, dv);
+	},
+
+	/**
+	 * Executed a command on editor that opened the dialog/popup.
+	 *
+	 * @method execCommand
+	 * @param {String} cmd Command to execute.
+	 * @param {Boolean} ui Optional boolean value if the UI for the command should be presented or not.
+	 * @param {Object} val Optional value to pass with the comman like an URL.
+	 * @param {Object} a Optional arguments object.
+	 */
+	execCommand : function(cmd, ui, val, a) {
+		a = a || {};
+		a.skip_focus = 1;
+
+		this.restoreSelection();
+		return this.editor.execCommand(cmd, ui, val, a);
+	},
+
+	/**
+	 * Resizes the dialog to the inner size of the window. This is needed since various browsers
+	 * have different border sizes on windows.
+	 *
+	 * @method resizeToInnerSize
+	 */
+	resizeToInnerSize : function() {
+		var t = this;
+
+		// Detach it to workaround a Chrome specific bug
+		// https://sourceforge.net/tracker/?func=detail&atid=635682&aid=2926339&group_id=103281
+		setTimeout(function() {
+			var vp = t.dom.getViewPort(window);
+
+			t.editor.windowManager.resizeBy(
+				t.getWindowArg('mce_width') - vp.w,
+				t.getWindowArg('mce_height') - vp.h,
+				t.id || window
+			);
+		}, 0);
+	},
+
+	/**
+	 * Will executed the specified string when the page has been loaded. This function
+	 * was added for compatibility with the 2.x branch.
+	 *
+	 * @method executeOnLoad
+	 * @param {String} s String to evalutate on init.
+	 */
+	executeOnLoad : function(s) {
+		this.onInit.add(function() {
+			eval(s);
+		});
+	},
+
+	/**
+	 * Stores the current editor selection for later restoration. This can be useful since some browsers
+	 * looses it's selection if a control element is selected/focused inside the dialogs.
+	 *
+	 * @method storeSelection
+	 */
+	storeSelection : function() {
+		this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
+	},
+
+	/**
+	 * Restores any stored selection. This can be useful since some browsers
+	 * looses it's selection if a control element is selected/focused inside the dialogs.
+	 *
+	 * @method restoreSelection
+	 */
+	restoreSelection : function() {
+		var t = tinyMCEPopup;
+
+		if (!t.isWindow && tinymce.isIE)
+			t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
+	},
+
+	/**
+	 * Loads a specific dialog language pack. If you pass in plugin_url as a arugment
+	 * when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.
+	 *
+	 * @method requireLangPack
+	 */
+	requireLangPack : function() {
+		var t = this, u = t.getWindowArg('plugin_url') || t.getWindowArg('theme_url');
+
+		if (u && t.editor.settings.language && t.features.translate_i18n !== false) {
+			u += '/langs/' + t.editor.settings.language + '_dlg.js';
+
+			if (!tinymce.ScriptLoader.isDone(u)) {
+				document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');
+				tinymce.ScriptLoader.markDone(u);
+			}
+		}
+	},
+
+	/**
+	 * Executes a color picker on the specified element id. When the user
+	 * then selects a color it will be set as the value of the specified element.
+	 *
+	 * @method pickColor
+	 * @param {DOMEvent} e DOM event object.
+	 * @param {string} element_id Element id to be filled with the color value from the picker.
+	 */
+	pickColor : function(e, element_id) {
+		this.execCommand('mceColorPicker', true, {
+			color : document.getElementById(element_id).value,
+			func : function(c) {
+				document.getElementById(element_id).value = c;
+
+				try {
+					document.getElementById(element_id).onchange();
+				} catch (ex) {
+					// Try fire event, ignore errors
+				}
+			}
+		});
+	},
+
+	/**
+	 * Opens a filebrowser/imagebrowser this will set the output value from
+	 * the browser as a value on the specified element.
+	 *
+	 * @method openBrowser
+	 * @param {string} element_id Id of the element to set value in.
+	 * @param {string} type Type of browser to open image/file/flash.
+	 * @param {string} option Option name to get the file_broswer_callback function name from.
+	 */
+	openBrowser : function(element_id, type, option) {
+		tinyMCEPopup.restoreSelection();
+		this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
+	},
+
+	/**
+	 * Creates a confirm dialog. Please don't use the blocking behavior of this
+	 * native version use the callback method instead then it can be extended.
+	 *
+	 * @method confirm
+	 * @param {String} t Title for the new confirm dialog.
+	 * @param {function} cb Callback function to be executed after the user has selected ok or cancel.
+	 * @param {Object} s Optional scope to execute the callback in.
+	 */
+	confirm : function(t, cb, s) {
+		this.editor.windowManager.confirm(t, cb, s, window);
+	},
+
+	/**
+	 * Creates a alert dialog. Please don't use the blocking behavior of this
+	 * native version use the callback method instead then it can be extended.
+	 *
+	 * @method alert
+	 * @param {String} t Title for the new alert dialog.
+	 * @param {function} cb Callback function to be executed after the user has selected ok.
+	 * @param {Object} s Optional scope to execute the callback in.
+	 */
+	alert : function(tx, cb, s) {
+		this.editor.windowManager.alert(tx, cb, s, window);
+	},
+
+	/**
+	 * Closes the current window.
+	 *
+	 * @method close
+	 */
+	close : function() {
+		var t = this;
+
+		// To avoid domain relaxing issue in Opera
+		function close() {
+			t.editor.windowManager.close(window);
+			t.editor = null;
+		};
+
+		if (tinymce.isOpera)
+			t.getWin().setTimeout(close, 0);
+		else
+			close();
+	},
+
+	// Internal functions	
+
+	_restoreSelection : function() {
+		var e = window.event.srcElement;
+
+		if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))
+			tinyMCEPopup.restoreSelection();
+	},
+
+/*	_restoreSelection : function() {
+		var e = window.event.srcElement;
+
+		// If user focus a non text input or textarea
+		if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
+			tinyMCEPopup.restoreSelection();
+	},*/
+
+	_onDOMLoaded : function() {
+		var t = tinyMCEPopup, ti = document.title, bm, h, nv;
+
+		if (t.domLoaded)
+			return;
+
+		t.domLoaded = 1;
+
+		tinyMCEPopup.init();
+
+		// Translate page
+		if (t.features.translate_i18n !== false) {
+			h = document.body.innerHTML;
+
+			// Replace a=x with a="x" in IE
+			if (tinymce.isIE)
+				h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
+
+			document.dir = t.editor.getParam('directionality','');
+
+			if ((nv = t.editor.translate(h)) && nv != h)
+				document.body.innerHTML = nv;
+
+			if ((nv = t.editor.translate(ti)) && nv != ti)
+				document.title = ti = nv;
+		}
+
+		document.body.style.display = '';
+
+		// Restore selection in IE when focus is placed on a non textarea or input element of the type text
+		if (tinymce.isIE) {
+			document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
+
+			// Add base target element for it since it would fail with modal dialogs
+			t.dom.add(t.dom.select('head')[0], 'base', {target : '_self'});
+		}
+
+		t.restoreSelection();
+
+		// Set inline title
+		if (!t.isWindow)
+			t.editor.windowManager.setTitle(window, ti);
+		else
+			window.focus();
+
+		if (!tinymce.isIE && !t.isWindow) {
+			tinymce.dom.Event._add(document, 'focus', function() {
+				t.editor.windowManager.focus(t.id);
+			});
+		}
+
+		// Patch for accessibility
+		tinymce.each(t.dom.select('select'), function(e) {
+			e.onkeydown = tinyMCEPopup._accessHandler;
+		});
+
+		// Call onInit
+		// Init must be called before focus so the selection won't get lost by the focus call
+		tinymce.each(t.listeners, function(o) {
+			o.func.call(o.scope, t.editor);
+		});
+
+		// Move focus to window
+		if (t.getWindowArg('mce_auto_focus', true)) {
+			window.focus();
+
+			// Focus element with mceFocus class
+			tinymce.each(document.forms, function(f) {
+				tinymce.each(f.elements, function(e) {
+					if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
+						e.focus();
+						return false; // Break loop
+					}
+				});
+			});
+		}
+
+		document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
+	},
+
+	_accessHandler : function(e) {
+		e = e || window.event;
+
+		if (e.keyCode == 13 || e.keyCode == 32) {
+			e = e.target || e.srcElement;
+
+			if (e.onchange)
+				e.onchange();
+
+			return tinymce.dom.Event.cancel(e);
+		}
+	},
+
+	_closeWinKeyHandler : function(e) {
+		e = e || window.event;
+
+		if (e.keyCode == 27)
+			tinyMCEPopup.close();
+	},
+
+	_wait : function() {
+		// Use IE method
+		if (document.attachEvent) {
+			document.attachEvent("onreadystatechange", function() {
+				if (document.readyState === "complete") {
+					document.detachEvent("onreadystatechange", arguments.callee);
+					tinyMCEPopup._onDOMLoaded();
+				}
+			});
+
+			if (document.documentElement.doScroll && window == window.top) {
+				(function() {
+					if (tinyMCEPopup.domLoaded)
+						return;
+
+					try {
+						// If IE is used, use the trick by Diego Perini
+						// http://javascript.nwbox.com/IEContentLoaded/
+						document.documentElement.doScroll("left");
+					} catch (ex) {
+						setTimeout(arguments.callee, 0);
+						return;
+					}
+
+					tinyMCEPopup._onDOMLoaded();
+				})();
+			}
+
+			document.attachEvent('onload', tinyMCEPopup._onDOMLoaded);
+		} else if (document.addEventListener) {
+			window.addEventListener('DOMContentLoaded', tinyMCEPopup._onDOMLoaded, false);
+			window.addEventListener('load', tinyMCEPopup._onDOMLoaded, false);
+		}
+	}
+};
Index: wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js
===================================================================
--- wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js	(revision 0)
+++ wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js	(revision 0)
@@ -0,0 +1 @@
+var tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=tinymce.dom;b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.features.id;b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return window},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},0)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);a.editor=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;tinyMCEPopup.init();if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};
\ No newline at end of file
Index: wp-includes/js/tinymce/wp-mce-link.php
===================================================================
--- wp-includes/js/tinymce/wp-mce-link.php	(revision 16439)
+++ wp-includes/js/tinymce/wp-mce-link.php	(working copy)
@@ -1,160 +1,71 @@
 <?php
+// args expects optionally 'pagenum' and 's'
+function wp_link_query( $args = array() ) {
+	$pts = get_post_types( array( 'publicly_queryable' => true ), 'objects' );
+	$pt_names = array_keys( $pts );
 
-require_once '../../../wp-load.php';
-include './wp-mce-link-includes.php';
+	$query = array(
+		'post_type' => $pt_names,
+		'suppress_filters' => true,
+		'update_post_term_cache' => false,
+		'update_post_meta_cache' => false,
+		'post_status' => 'publish',
+		'order' => 'DESC',
+		'orderby' => 'post_date',
+		'posts_per_page' => 20,
+	);
 
-header( 'Content-Type: text/html; charset=' . get_bloginfo( 'charset' ) );
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
-<head>
-<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_bloginfo('charset'); ?>" />
-<title><?php _e( 'Insert/edit link' ); ?></title>
-<script type="text/javascript">
-//<![CDATA[
-var ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ); ?>',
-	wpLinkL10n = {
-		untitled : '<?php _e('Untitled'); ?>',
-		noMatchesFound : '<?php _e( 'No matches found.' ); ?>'
-	};
-//]]>
-</script>
-<script type="text/javascript" src="tiny_mce_popup.js?ver=3223"></script>
-<?php
-wp_print_scripts( array( 'jquery', 'jquery-ui-widget' ) );
-$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '.dev' : '';
-$src = "plugins/wplink/js/wplink$suffix.js?ver=20101116b";
-?>
-<script type="text/javascript" src="<?php echo $src; ?>"></script>
-<?php
-wp_admin_css( 'global', true );
-wp_admin_css( 'wp-admin', true );
-register_admin_color_schemes();
-wp_admin_css( 'colors', true );
-?>
-<style>
-html {
-	background: #f1f1f1;
+	$args['pagenum'] = isset( $args['pagenum'] ) ? absint( $args['pagenum'] ) : 1;
+
+	if ( isset( $args['s'] ) )
+		$query['s'] = $args['s'];
+
+	$query['offset'] = $args['pagenum'] > 1 ? $query['posts_per_page'] * ( $args['pagenum'] - 1 ) : 0;
+
+	// Do main query.
+	$get_posts = new WP_Query;
+	$posts = $get_posts->query( $query );
+	// Check if any posts were found.
+	if ( ! $get_posts->post_count )
+		return false;
+
+	// Build results.
+	$results = array();
+	foreach ( $posts as $post ) {
+		if ( 'post' == $post->post_type )
+			$info = mysql2date( __( 'Y/m/d' ), $post->post_date );
+		else
+			$info = $pts[ $post->post_type ]->labels->singular_name;
+
+		$results[] = array(
+			'ID' => $post->ID,
+			'title' => esc_html( strip_tags($post->post_title) ),
+			'permalink' => get_permalink( $post->ID ),
+			'info' => $info,
+		);
+	}
+
+	return $results;
 }
-a:link, a:visited {
-	color: #21759b;
+
+function wp_link_ajax( $request ) {
+	// Searches have a title term.
+	if ( isset( $request['title'] ) )
+		$args['s'] = stripslashes( $request['title'] );
+	$args['pagenum'] = ! empty( $request['page'] ) ? absint( $request['page'] ) : 1;
+
+	$results = wp_link_query( $args );
+
+	if ( ! isset( $results ) )
+		die( '0' );
+
+	echo json_encode( $results );
+	echo "\n";
 }
-p.howto {
-	margin: 3px;
-}
-#link-options {
-	padding: 10px 0 14px;
-	border-bottom: 1px solid #dfdfdf;
-	margin: 0 6px 14px;
-}
-label input[type="text"] {
-	width: 360px;
-	margin-top: 5px;
-}
-label span {
-	display: inline-block;
-	width: 80px;
-	text-align: right;
-	padding-right: 5px;
-}
-.link-search-wrapper {
-	margin: 5px 5px 9px;
-	display: block;
-	overflow: hidden;
-}
-.link-search-wrapper span {
-	float: left;
-	margin-top: 6px;
-}
-.link-search-wrapper input[type="text"] {
-	float: left;
-	width: 220px;
-}
-.link-search-wrapper img.waiting {
-	margin: 8px 1px 0 4px;
-	float: left;
-	display: none;
-}
-#open-in-new-tab {
-	display: inline-block;
-	padding: 3px 0 0;
-	margin: 0 0 0 87px;
-}
-#open-in-new-tab span {
-	width: auto;
-	margin-left: 6px;
-	font-size: 11px;
-}
-.query-results {
-	border: 1px #dfdfdf solid;
-	margin: 0 5px 5px;
-	background: #fff;
-	height: 185px;
-	overflow: auto;
-}
-.query-results li {
-	margin-bottom: 0;
-	border-bottom: 1px solid #f1f1f1;
-	color: #555;
-	padding: 4px 6px;
-	cursor: pointer;
-}
-.query-results li:hover {
-	background: #eaf2fa;
-	color: #333;
-}
-.query-results li.unselectable:hover {
-	background: #fff;
-	cursor: auto;
-	color: #555;
-}
-.query-results li.unselectable {
-	border-bottom: 1px solid #dfdfdf;
-}
-.query-results li.selected {
-	background: #f1f1f1;
-	color: #333;
-}
-.query-results li.selected .item-title {
-	font-weight: bold;
-}
-.item-info {
-	text-transform: uppercase;
-	color: #aaa;
-	font-size: 11px;
-	float: right;
-}
-#search-results {
-	display: none;
-}
-.river-waiting {
-	display: none;
-	padding: 10px 0;
-}
-.river-waiting img.waiting {
-	margin: 0 auto;
-	display: block;
-}
-.submitbox {
-	padding: 5px 5px 0;
-	font-size: 11px;
-	overflow: auto;
-	height: 29px;
-}
-#wp-cancel {
-	line-height: 25px;
-	float: left;
-}
-#wp-update {
-	line-height: 23px;
-	float: right;
-}
-#wp-update a {
-	display: inline-block;
-}
-</style>
-</head>
-<body id="post-body">
+
+function wp_link_dialog() {
+?>
+<div id="wp-link">
 <div id="link-selector">
 	<div id="link-options">
 		<p class="howto"><?php _e( 'Enter the destination URL:' ); ?></p>
@@ -204,12 +115,12 @@
 	</div>
 </div>
 <div class="submitbox">
-	<div id="wp-cancel">
+	<div id="wp-link-cancel">
 		<a class="submitdelete deletion"><?php _e( 'Cancel' ); ?></a>
 	</div>
-	<div id="wp-update">
+	<div id="wp-link-update">
 		<a class="button-primary"><?php _e( 'Update' ); ?></a>
 	</div>
 </div>
-</body>
-</html>
\ No newline at end of file
+</div>
+<?php } ?>
\ No newline at end of file
Index: wp-includes/js/tinymce/wp-mce-link-includes.php
===================================================================
--- wp-includes/js/tinymce/wp-mce-link-includes.php	(revision 16439)
+++ wp-includes/js/tinymce/wp-mce-link-includes.php	(working copy)
@@ -1,66 +0,0 @@
-<?php
-// args expects optionally 'pagenum' and 's'
-function wp_link_query( $args = array() ) {
-	$pts = get_post_types( array( 'publicly_queryable' => true ), 'objects' );
-	$pt_names = array_keys( $pts );
-
-	$query = array(
-		'post_type' => $pt_names,
-		'suppress_filters' => true,
-		'update_post_term_cache' => false,
-		'update_post_meta_cache' => false,
-		'post_status' => 'publish',
-		'order' => 'DESC',
-		'orderby' => 'post_date',
-		'posts_per_page' => 20,
-	);
-
-	$args['pagenum'] = isset( $args['pagenum'] ) ? absint( $args['pagenum'] ) : 1;
-
-	if ( isset( $args['s'] ) )
-		$query['s'] = $args['s'];
-
-	$query['offset'] = $args['pagenum'] > 1 ? $query['posts_per_page'] * ( $args['pagenum'] - 1 ) : 0;
-
-	// Do main query.
-	$get_posts = new WP_Query;
-	$posts = $get_posts->query( $query );
-	// Check if any posts were found.
-	if ( ! $get_posts->post_count )
-		return false;
-
-	// Build results.
-	$results = array();
-	foreach ( $posts as $post ) {
-		if ( 'post' == $post->post_type )
-			$info = mysql2date( __( 'Y/m/d' ), $post->post_date );
-		else
-			$info = $pts[ $post->post_type ]->labels->singular_name;
-
-		$results[] = array(
-			'ID' => $post->ID,
-			'title' => esc_html( strip_tags($post->post_title) ),
-			'permalink' => get_permalink( $post->ID ),
-			'info' => $info,
-		);
-	}
-
-	return $results;
-}
-
-function wp_link_ajax( $request ) {
-	// Searches have a title term.
-	if ( isset( $request['title'] ) )
-		$args['s'] = stripslashes( $request['title'] );
-	$args['pagenum'] = ! empty( $request['page'] ) ? absint( $request['page'] ) : 1;
-
-	$results = wp_link_query( $args );
-
-	if ( ! isset( $results ) )
-		die( '0' );
-
-	echo json_encode( $results );
-	echo "\n";
-}
-
-?>
\ No newline at end of file
Index: wp-includes/css/jquery-ui-dialog.dev.css
===================================================================
--- wp-includes/css/jquery-ui-dialog.dev.css	(revision 0)
+++ wp-includes/css/jquery-ui-dialog.dev.css	(revision 0)
@@ -0,0 +1,142 @@
+/*
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+/*
+ * jQuery UI Resizable
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
+
+/*
+ * jQuery UI Dialog
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { position: relative; } 
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: 0; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+
+
+
+/* WP jQuery Dialog Theme */
+.ui-dialog {
+	background: #f1f1f1;
+	border: 1px solid #999;
+	-moz-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+	-webkit-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+	box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+}
+.ui-dialog-title {
+	display: block;
+	text-align: center;
+	padding: 1px 0 2px;
+}
+.ui-dialog-titlebar {
+	padding: 0 1em;
+	background-color: #444;
+	font-weight: bold;
+	font-size: 11px;
+	color: #e5e5e5;
+}
+.ui-dialog {
+	-moz-border-radius-topleft: 4px;
+	-webkit-border-top-left-radius: 4px;
+	-khtml-border-top-left-radius: 4px;
+	border-top-left-radius: 4px;
+	-moz-border-radius-topright: 4px;
+	-webkit-border-top-right-radius: 4px;
+	-khtml-border-top-right-radius: 4px;
+	border-top-right-radius: 4px;
+}
+.ui-dialog-titlebar {
+	-moz-border-radius-topleft: 3px;
+	-webkit-border-top-left-radius: 3px;
+	-khtml-border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
+	-moz-border-radius-topright: 3px;
+	-webkit-border-top-right-radius: 3px;
+	-khtml-border-top-right-radius: 3px;
+	border-top-right-radius: 3px;
+}
+
+.ui-dialog .ui-dialog-titlebar-close {
+	position: absolute;
+	width: 29px;
+	height: 16px;
+	top: 2px;
+	right: 6px;
+	background: url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;
+	padding: 0;
+}
+.ui-dialog .ui-dialog-titlebar-close:hover,
+.ui-dialog .ui-dialog-titlebar-close:focus {
+	background-position: -87px -32px;
+}
+.ui-widget-overlay {
+	background-color: #000;
+	opacity: 0.6;
+}
\ No newline at end of file
Index: wp-includes/css/jquery-ui-dialog.css
===================================================================
--- wp-includes/css/jquery-ui-dialog.css	(revision 0)
+++ wp-includes/css/jquery-ui-dialog.css	(revision 0)
@@ -0,0 +1 @@
+.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute;left:-99999999px;}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-dialog{position:absolute;width:300px;overflow:hidden;}.ui-dialog .ui-dialog-titlebar{position:relative;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:none;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.ui-dialog{background:#f1f1f1;border:1px solid #999;-moz-box-shadow:0 0 16px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3);}.ui-dialog-title{display:block;text-align:center;padding:1px 0 2px;}.ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;color:#e5e5e5;}.ui-dialog{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;}.ui-dialog-titlebar{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0;}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px;}.ui-widget-overlay{background-color:#000;opacity:.6;}
\ No newline at end of file
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 16439)
+++ wp-includes/script-loader.php	(working copy)
@@ -268,6 +268,14 @@
 		'url' => __( 'URL:' ),
 		'noShortlink' => __( 'No shortlink available for this page.' ),
 	) );
+	
+	$scripts->add( 'wplink', "/wp-includes/js/tinymce/plugins/wplink/js/wplink$suffix.js", array('jquery'), '20101117' );
+	$scripts->localize( 'wplink', 'wpLinkL10n', array(
+		'untitled' => __('Untitled'),
+		'noMatchesFound' => __('No matches found.'),
+	) );
+	
+	$scripts->add( 'wpdialogsPopup', "/wp-includes/js/tinymce/plugins/wpdialogs/js/popup$suffix.js", false, '20101117' );
 
 	if ( is_admin() ) {
 		$scripts->add( 'ajaxcat', "/wp-admin/js/cat$suffix.js", array( 'wp-lists' ), '20090102' );
@@ -504,6 +512,11 @@
 
 	// Admin bar
 	$styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css", array(), '20101117' );
+	
+	// WP jQuery UI Dialog 
+	$styles->add( 'wp-jquery-ui-dialog', "/wp-includes/css/jquery-ui-dialog$suffix.css", array(), '20101117' );
+	// WPLink TinyMCE plugin
+	$styles->add( 'wplink', "/wp-includes/js/tinymce/plugins/wplink/css/wplink$suffix.css", array(), '20101117' );
 
 	foreach ( $rtl_styles as $rtl_style ) {
 		$styles->add_data( $rtl_style, 'rtl', true );
Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 16439)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -1074,7 +1074,7 @@
 	exit;
 	break;
 case 'wp-link-ajax':
-	require_once ABSPATH . WPINC . '/js/tinymce/wp-mce-link-includes.php';
+	require_once ABSPATH . WPINC . '/js/tinymce/wp-mce-link.php';
 
 	wp_link_ajax( $_POST );
 
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 16439)
+++ wp-admin/includes/post.php	(working copy)
@@ -1327,10 +1327,10 @@
 	$mce_spellchecker_languages = apply_filters('mce_spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv');
 
 	if ( $teeny ) {
-		$plugins = apply_filters( 'teeny_mce_plugins', array('inlinepopups', 'media', 'fullscreen', 'wordpress', 'wplink') );
+		$plugins = apply_filters( 'teeny_mce_plugins', array('inlinepopups', 'media', 'fullscreen', 'wordpress', 'wplink', 'wpdialogs') );
 		$ext_plugins = '';
 	} else {
-		$plugins = array( 'inlinepopups', 'spellchecker', 'paste', 'wordpress', 'media', 'fullscreen', 'wpeditimage', 'wpgallery', 'tabfocus', 'wplink' );
+		$plugins = array( 'inlinepopups', 'spellchecker', 'paste', 'wordpress', 'media', 'fullscreen', 'wpeditimage', 'wpgallery', 'tabfocus', 'wplink', 'wpdialogs' );
 
 		/*
 		The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'.
@@ -1411,8 +1411,6 @@
 		}
 	}
 
-	$plugins = implode($plugins, ',');
-
 	if ( $teeny ) {
 		$mce_buttons = apply_filters( 'teeny_mce_buttons', array('bold, italic, underline, blockquote, separator, strikethrough, bullist, numlist,justifyleft, justifycenter, justifyright, undo, redo, link, unlink, fullscreen') );
 		$mce_buttons = implode($mce_buttons, ',');
@@ -1485,7 +1483,7 @@
 		'paste_strip_class_attributes' => 'all',
 		'paste_text_use_dialog' => true,
 		'wpeditimage_disable_captions' => $no_captions,
-		'plugins' => $plugins
+		'plugins' => implode($plugins, ',')
 	);
 
 	if ( ! empty( $editor_styles ) && is_array( $editor_styles ) ) {
@@ -1608,4 +1606,21 @@
 /* ]]> */
 </script>
 <?php
+
+	// Load additional inline scripts based on active plugins.
+	if ( in_array( 'wpdialogs', $plugins ) ) {
+		wp_print_scripts( array('jquery-ui-dialog', 'wpdialogsPopup') );
+		wp_print_styles('wp-jquery-ui-dialog');
+	}
+	if ( in_array( 'wplink', $plugins ) ) {
+		require_once ABSPATH . WPINC . "/js/tinymce/wp-mce-link.php";
+		add_action('tiny_mce_preload_dialogs', 'wp_link_dialog');
+		wp_print_scripts('wplink');
+		wp_print_styles('wplink');
+	}
 }
+function wp_tiny_mce_preload_dialogs() { ?>
+	<div id="preloaded-dialogs" style="display:none;">
+<?php 	do_action('tiny_mce_preload_dialogs'); ?>
+	</div>
+<?php }
\ No newline at end of file
Index: wp-admin/admin-header.php
===================================================================
--- wp-admin/admin-header.php	(revision 16439)
+++ wp-admin/admin-header.php	(working copy)
@@ -66,6 +66,7 @@
 
 if ( in_array( $pagenow, array('post.php', 'post-new.php') ) ) {
 	add_action( 'admin_print_footer_scripts', 'wp_tiny_mce', 25 );
+	add_action( 'admin_print_footer_scripts', 'wp_tiny_mce_preload_dialogs', 30 );
 	wp_enqueue_script('quicktags');
 }
 
