function drawEditor(template, settings)
{
	function removeFromArray(in_array, remove_array) {
		var outArray = new Array(), skip;
			
		for (var i=0; i<in_array.length; i++) {
			skip = false;

			for (var j=0; j<remove_array.length; j++) {
				if (in_array[i] == remove_array[j]) {
					skip = true;
				}
			}

			if (!skip) {
				outArray[outArray.length] = in_array[i];
			}
		}
		return outArray;
	}

	var resizing = tinyMCE.getParam("theme_advanced_resizing", false);
	var path = tinyMCE.getParam("theme_advanced_path", true);
	var statusbarHTML = '<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: ' + (path ? "block" : "none") + '">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: ' + (resizing ? "block" : "none") + '" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';

	template['html'] = '<div class="mceEditor" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px">';

	var deltaHeight = 0;
	var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ",");

	for(var i=0;i<containers.length;i++)
	{
		if (containers[i] == "mceEditor") //Exceptions for mceEditor and ...
			template['html'] += '<div class="mceEditor_border"><span id="{$editor_id}"></span></div>';
		else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath:
		{
			var pathClass = "mceStatusbar";

			if (i == containers.length-1)
			{
				pathClass = "mceStatusbarBottom";
			}
			else if (i == 0)
			{
				pathClass = "mceStatusbar";
			}
			else
			{
				deltaHeight-=2;
			}

			template['html'] += '<div class="' + pathClass + '" height="1">' + statusbarHTML + '</div>';
			deltaHeight -= 22;
		} else { // Render normal Container
			if(i == 0 || containers[i-1] == "mceEditor" || containers[i-1] == "mceElementpath" || containers[i-1] == "mceStatusbar")
			{
				var extraClass = ' mceToolbarContainerFirst';
			}
			else if(!containers[i+1] || containers[i+1] == "mceEditor" || containers[i+1] == "mceElementpath" || containers[i+1] == "mceStatusbar")
			{
				var extraClass = ' mceToolbarContainerLast';
			}
			else
			{
				var extraClass = '';
			}
			template['html'] += '<div class="mceToolbarContainer'+extraClass+'">';
			var curContainer = tinyMCE.getParam("theme_advanced_"+containers[i]+"_toolbars", "", true, ',');
			var curContainerHTML = "";
			for(var j=0;j<curContainer.length;j++)
			{
				var tbAlign = tinyMCE.getParam("theme_advanced_"+curContainer[j]+"_align", "left");
				if(tbAlign == "right")
				{
					var alignCSS = "position: absolute; right: 0;";
				}
				else
				{
					var alignCSS = "position: absolute; left: 0;";
				}
				template['html'] += '<div class="mceToolbar" style="'+alignCSS+'">';
				var tbButtons = tinyMCE.getParam("theme_advanced_"+curContainer[j], "", true, ',');
				tbButtons = removeFromArray(tbButtons, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
				for(var k=0;k<tbButtons.length;k++)
				{
					template['html'] += tinyMCE.getControlHTML(tbButtons[k]);
				}
				template['html'] += '</div>';
			}
			deltaHeight -= 30;
			template['html'] += '</div>';
		}
	}
	template['html'] += '</div>';
	template['delta_height'] = deltaHeight;
	template['delta_width'] = -10;
	return template;
}
