<?php
	/**
	 * $RCSfile: tiny_mce_gzip.php,v $
	 * $Revision: 1.1 $
	 * $Date: 2005/06/14 18:55:34 $
	 *
	 * @author Moxiecode
	 * @copyright Copyright © 2004, 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.
	 * Notice: This script defaults the button_tile_map option to true for extra performance.
	 *
	 * Todo:
	 *  - Add local file cache for the GZip:ed version.
	 */

	// General options
	$suffix = "";							// Set to "_src" to use source version
	$expiresOffset = 3600 * 24 * 10;		// 10 days util client cache expires

	// Get data to load
	$theme = isset($_REQUEST['theme']) ? $_REQUEST['theme'] : "";
	$language = isset($_REQUEST['language']) ? $_REQUEST['language'] : "";
	$plugins = isset($_REQUEST['plugins']) ? $_REQUEST['plugins'] : "";

	// GZip compress and cache it for 10 days
	ob_start ("ob_gzhandler");
	header("Content-type: text/javascript; charset: UTF-8");
	header("Cache-Control: must-revalidate");
	header("Expires: " . gmdate("D, d M Y H:i:s", time() + $expiresOffset) . " GMT");

	if ($theme) {
		// Write main script and patch some things
		echo file_get_contents(realpath("tiny_mce" . $suffix . ".js"));
		echo 'TinyMCE.prototype.loadScript = function() {};';
		echo "tinyMCE.init(TinyMCECompressed_settings);";

		// Load theme, language pack and theme language packs
		echo file_get_contents(realpath("themes/" . $theme . "/editor_template" . $suffix . ".js"));
		echo file_get_contents(realpath("themes/" . $theme . "/langs/" . $language . ".js"));
		echo file_get_contents(realpath("langs/" . $language . ".js"));

		// Load all plugins and their language packs
		$plugins = explode(",", $plugins);
		foreach ($plugins as $plugin) {
			$pluginFile = realpath("plugins/" . $plugin . "/editor_plugin" . $suffix . ".js");
			$languageFile = realpath("plugins/" . $plugin . "/langs/" . $language . ".js");

			if ($pluginFile)
				echo file_get_contents($pluginFile);

			if ($languageFile)
				echo file_get_contents($languageFile);
		}

		die;
	}
?>

var TinyMCECompressed_settings = null;

function TinyMCECompressed() {
}

TinyMCECompressed.prototype.init = function(settings) {
	var elements = document.getElementsByTagName('script');
	var scriptURL = "";

	for (var i=0; i<elements.length; i++) {
		if (elements[i].src && elements[i].src.indexOf("tiny_mce_gzip.php") != -1) {
			scriptURL = elements[i].src;
			break;
		}
	}

	settings["theme"] = typeof(settings["theme"]) != "undefined" ? settings["theme"] : "default";
	settings["plugins"] = typeof(settings["plugins"]) != "undefined" ? settings["plugins"] : "";
	settings["language"] = typeof(settings["language"]) != "undefined" ? settings["language"] : "en";
	settings["button_tile_map"] = typeof(settings["button_tile_map"]) != "undefined" ? settings["button_tile_map"] : true;

	scriptURL += "?theme=" + escape(settings["theme"]) + "&language=" + escape(settings["language"]) + "&plugins=" + escape(settings["plugins"]);
	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + scriptURL + '"></script>');

	TinyMCECompressed_settings = settings;
}

var tinyMCE = new TinyMCECompressed();
