Index: js/tinymce/plugins/inlinepopups/editor_plugin.js
===================================================================
--- js/tinymce/plugins/inlinepopups/editor_plugin.js	(revision 3702)
+++ js/tinymce/plugins/inlinepopups/editor_plugin.js	(working copy)
@@ -74,6 +74,8 @@
 	pos.absLeft += Math.round((elm.firstChild.clientWidth / 2) - (width / 2));
 	pos.absTop += Math.round((elm.firstChild.clientHeight / 2) - (height / 2));
 
+	url += tinyMCE.settings['imp_version'] ? (url.indexOf('?')==-1?'?':'&') + 'ver=' + tinyMCE.settings['imp_version'] : '';
+
 	mcWindows.open(url, mcWindows.idCounter++, "modal=yes,width=" + width+ ",height=" + height + ",resizable=" + resizable + ",scrollbars=" + scrollbars + ",statusbar=" + resizable + ",left=" + pos.absLeft + ",top=" + pos.absTop);
 };
 
Index: js/tinymce/tiny_mce_config.php
===================================================================
--- js/tinymce/tiny_mce_config.php	(revision 3702)
+++ js/tinymce/tiny_mce_config.php	(working copy)
@@ -72,6 +72,7 @@
 	content_css : "<?php echo $mce_css; ?>",
 	valid_elements : "<?php echo $valid_elements; ?>",
 	save_callback : 'TinyMCE_wordpressPlugin.saveCallback',
+	imp_version : "<?php echo intval($_GET['ver']); ?>",
 <?php do_action('mce_options'); ?>
 	plugins : "<?php echo $plugins; ?>"
 };
Index: js/tinymce/tiny_mce_gzip.php
===================================================================
--- js/tinymce/tiny_mce_gzip.php	(revision 3702)
+++ js/tinymce/tiny_mce_gzip.php	(working copy)
@@ -4,9 +4,9 @@
  * $Revision: $
  * $Date: $
  *
- * @version 1.07
+ * @version 1.08
  * @author Moxiecode
- * @copyright Copyright © 20052006, Moxiecode Systems AB, All rights reserved.
+ * @copyright Copyright © 2005-2006, Moxiecode Systems AB, All rights reserved.
  *
  * This file compresses the TinyMCE JavaScript using GZip and
  * enables the browser to do two requests instead of one for each .js file.
@@ -15,7 +15,7 @@
 
 @require_once('../../../wp-config.php');
 
-gzip_compression();
+// gzip_compression();
 
 function wp_tinymce_lang($path) {
 	global $language;
@@ -119,7 +119,7 @@
 	else
 		echo $str;
 }
-/* WP
+
 // Only gzip the contents if clients and server support it
 $encodings = array();
 
@@ -127,10 +127,12 @@
 	$encodings = explode(',', strtolower(preg_replace("/\s+/", "", $_SERVER['HTTP_ACCEPT_ENCODING'])));
 
 // Check for gzip header or northon internet securities
-if ((in_array('gzip', $encodings) || isset($_SERVER['---------------'])) && function_exists('ob_gzhandler') && !ini_get('zlib.output_compression')) {
+if ((in_array('gzip', $encodings) || in_array('x-gzip', $encodings) || isset($_SERVER['---------------'])) && function_exists('ob_gzhandler') && !ini_get('zlib.output_compression')) {
+	$enc = in_array('x-gzip', $encodings) ? "x-gzip" : "gzip";
+
 	// Use cached file if it exists but not in debug mode
 	if (file_exists($cacheFile) && !$debug) {
-		header("Content-Encoding: gzip");
+		header("Content-Encoding: " . $enc);
 		echo file_get_contents($cacheFile);
 		die;
 	}
@@ -139,11 +141,12 @@
 		ob_start("ob_gzhandler");
 } else
 	$diskCache = false;
-WP */
+
 if ($index > -1) {
 	// Write main script and patch some things
 	if ($index == 0) {
 		TinyMCE_echo(wp_compact_tinymce_js(file_get_contents(realpath("tiny_mce" . $suffix . ".js")))); // WP
+		TinyMCE_echo('TinyMCE.prototype.orgLoadScript = TinyMCE.prototype.loadScript;');
 		TinyMCE_echo('TinyMCE.prototype.loadScript = function() {};var realTinyMCE = tinyMCE;');
 	} else
 		TinyMCE_echo('tinyMCE = realTinyMCE;');
@@ -151,14 +154,18 @@
 	// Do init based on index
 	TinyMCE_echo("tinyMCE.init(tinyMCECompressed.configs[" . $index . "]);");
 
+	// Load external plugins
+	if ($index == 0)
+		TinyMCE_echo("tinyMCECompressed.loadPlugins();");
+
 	// Load theme, language pack and theme language packs
 	if ($theme) {
-		TinyMCE_echo(wp_compact_tinymce_js(file_get_contents(realpath("themes/" . $theme . "/editor_template" . $suffix . ".js"))));
+		TinyMCE_echo(wp_compact_tinymce_js(file_get_contents(realpath("themes/" . $theme . "/editor_template" . $suffix . ".js")))); // WP
 		TinyMCE_echo(wp_tinymce_lang("themes/" . $theme . "/langs/%s.js")); // WP
 	}
 
 	/* WP if ($language) WP */
-		TinyMCE_echo(wp_tinymce_lang("langs/%s.js"));
+		TinyMCE_echo(wp_tinymce_lang("langs/%s.js")); // WP
 
 	// Load all plugins and their language packs
 	$plugins = explode(",", $plugins);
@@ -194,7 +201,7 @@
 		}
 
 		// Output
-		header("Content-Encoding: gzip");
+		header("Content-Encoding: " . $enc);
 		echo $cacheData;
 	}
 
@@ -205,6 +212,7 @@
 function TinyMCECompressed() {
 	this.configs = new Array();
 	this.loadedFiles = new Array();
+	this.externalPlugins = new Array();
 	this.loadAdded = false;
 	this.isLoaded = false;
 }
@@ -227,7 +235,8 @@
 	this.configs[this.configs.length] = settings;
 	this.settings = settings;
 
-	scriptURL += "?theme=" + escape(this.getOnce(settings["theme"])) + "&language=" + escape(this.getOnce(settings["language"])) + "&plugins=" + escape(this.getOnce(settings["plugins"])) + "&lang=" + settings["language"] + "&index=" + escape(this.configs.length-1);
+	scriptURL += (scriptURL.indexOf('?') == -1) ? '?' : '&';
+	scriptURL += "theme=" + escape(this.getOnce(settings["theme"])) + "&language=" + escape(this.getOnce(settings["language"])) + "&plugins=" + escape(this.getOnce(settings["plugins"])) + "&lang=" + settings["language"] + "&index=" + escape(this.configs.length-1);
 	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + scriptURL + '"></script>');
 
 	if (!this.loadAdded) {
@@ -244,6 +253,7 @@
 	tinyMCE = realTinyMCE;
 	TinyMCE_Engine.prototype.onLoad();
 	tinyMCE._addUnloadEvents();
+
 	tinyMCE.isLoaded = true;
 }
 
@@ -255,11 +265,13 @@
 }
 
 TinyMCECompressed.prototype.getOnce = function(str) {
-	var ar = str.split(',');
+	var ar = str.replace(/\s+/g, '').split(',');
 
 	for (var i=0; i<ar.length; i++) {
-		if (ar[i] == '')
+		if (ar[i] == '' || ar[i].charAt(0) == '-') {
+			ar[i] = null;
 			continue;
+		}
 
 		// Skip load
 		for (var x=0; x<this.loadedFiles.length; x++) {
@@ -283,7 +295,35 @@
 	}
 
 	return str;
-}
+};
 
+TinyMCECompressed.prototype.loadPlugins = function() {
+	var i, ar;
+
+	TinyMCE.prototype.loadScript = TinyMCE.prototype.orgLoadScript;
+	tinyMCE = realTinyMCE;
+
+	ar = tinyMCECompressed.externalPlugins;
+	for (i=0; i<ar.length; i++)
+		tinyMCE.loadPlugin(ar[i].name, ar[i].url);
+
+	TinyMCE.prototype.loadScript = function() {};
+};
+
+TinyMCECompressed.prototype.loadPlugin = function(n, u) {
+	this.externalPlugins[this.externalPlugins.length] = {name : n, url : u};
+};
+
+TinyMCECompressed.prototype.importPluginLanguagePack = function(n, v) {
+	tinyMCE = realTinyMCE;
+	TinyMCE.prototype.loadScript = TinyMCE.prototype.orgLoadScript;
+	tinyMCE.importPluginLanguagePack(n, v);
+};
+
+TinyMCECompressed.prototype.addPlugin = function(n, p) {
+	tinyMCE = realTinyMCE;
+	tinyMCE.addPlugin(n, p);
+};
+
 var tinyMCE = new TinyMCECompressed();
 var tinyMCECompressed = tinyMCE;
Index: functions-post.php
===================================================================
--- functions-post.php	(revision 3702)
+++ functions-post.php	(working copy)
@@ -1033,8 +1033,8 @@
  * Places two script links in <head>: one to get tinyMCE (big), one to configure and start it (small)
  */
 function tinymce_include() {
-	$src1 = get_settings('siteurl') . '/wp-includes/js/tinymce/tiny_mce_gzip.php';
-	$src2 = get_settings('siteurl') . '/wp-includes/js/tinymce/tiny_mce_config.php';
+	$src1 = get_settings('siteurl') . '/wp-includes/js/tinymce/tiny_mce_gzip.php?ver=04122006';
+	$src2 = get_settings('siteurl') . '/wp-includes/js/tinymce/tiny_mce_config.php?ver=04122006';
 
 	echo "<script type='text/javascript' src='$src1'></script>\n";
 	echo "<script type='text/javascript' src='$src2'></script>\n";
