Index: /CKEditor/trunk/_source/core/env.js
===================================================================
--- /CKEditor/trunk/_source/core/env.js	(revision 3207)
+++ /CKEditor/trunk/_source/core/env.js	(revision 3208)
@@ -32,4 +32,5 @@
 			 */
 			ie		: /*@cc_on!@*/false,
+
 			/**
 			 * Indicates that CKEditor is running on Opera.
@@ -40,4 +41,5 @@
 			 */
 			opera	: ( !!opera && opera.version ),
+
 			/**
 			 * Indicates that CKEditor is running on a WebKit based browser, like
@@ -49,4 +51,5 @@
 			 */
 			webkit	: ( agent.indexOf( ' applewebkit/' ) > -1 ),
+
 			/**
 			 * Indicates that CKEditor is running on Adobe AIR.
@@ -57,4 +60,5 @@
 			 */
 			air		: ( agent.indexOf( ' adobeair/' ) > -1 ),
+
 			/**
 			 * Indicates that CKEditor is running on Macintosh.
@@ -64,5 +68,7 @@
 			 *     alert( "I love apples!" );
 			 */
-			mac	: ( agent.indexOf( 'macintosh' ) > -1 )
+			mac	: ( agent.indexOf( 'macintosh' ) > -1 ),
+
+			quirks : ( document.compatMode == 'BackCompat' )
 		};
 
@@ -93,5 +99,5 @@
 			 *     alert( "I'm on IE6 or quirks mode!" );
 			 */
-			env.ie6Compat = ( version < 7 || document.compatMode == 'BackCompat' );
+			env.ie6Compat = ( version < 7 || env.quirks );
 		}
 
Index: /CKEditor/trunk/_source/core/focusmanager.js
===================================================================
--- /CKEditor/trunk/_source/core/focusmanager.js	(revision 3207)
+++ /CKEditor/trunk/_source/core/focusmanager.js	(revision 3208)
@@ -67,6 +67,10 @@
 				CKEDITOR.currentInstance.focusManager.forceBlur();
 
+			var editor = this._.editor;
+
+			editor.container.getFirst().addClass( 'cke_focus' );
+
 			this.hasFocus = true;
-			this._.editor.fire( 'focus' );
+			editor.fire( 'focus' );
 		}
 	},
@@ -109,6 +113,10 @@
 		if ( this.hasFocus )
 		{
+			var editor = this._.editor;
+
+			editor.container.getFirst().removeClass( 'cke_focus' );
+
 			this.hasFocus = false;
-			this._.editor.fire( 'blur' );
+			editor.fire( 'blur' );
 		}
 	}
Index: /CKEditor/trunk/_source/plugins/button/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/button/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/button/plugin.js	(revision 3208)
@@ -35,6 +35,4 @@
 	 */
 	this.label = definition.label;
-	if ( CKEDITOR.env.ie )
-		this.label += '\ufeff';
 
 	/**
@@ -123,5 +121,5 @@
 		var index = CKEDITOR.ui.button._.instances.push( instance ) - 1;
 		
-		var classes = 'cke_button';
+		var classes = '';
 		
 		// Get the command name.
@@ -151,6 +149,7 @@
 
 		output.push(
+			'<span class="cke_button">',
 			'<a id="', id, '"' +
-				' class="', classes, '" href="javascript:void(\'', ( this.label || '' ).replace( "'", '' ), '\')"' +
+				' class="', classes, '" href="javascript:void(\'', ( this.title || '' ).replace( "'", '' ), '\')"' +
 				' title="', this.title, '"' +
 				' tabindex="-1"' +
@@ -186,5 +185,6 @@
 					'></span>' +
 					'<span class="cke_label">', this.label, '</span>' +
-			'</a>' );
+			'</a>',
+			'</span>' );
 
 		return instance;
Index: /CKEditor/trunk/_source/plugins/colorbutton/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/colorbutton/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/colorbutton/plugin.js	(revision 3208)
@@ -29,6 +29,5 @@
 					panel :
 					{
-						css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-						className : 'cke_skin_default'
+						css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
 					},
 
Index: /CKEditor/trunk/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 3208)
@@ -13,5 +13,5 @@
 	var panels = {};
 
-	function getPanel( doc, parentElement, definition, level )
+	function getPanel( editor, doc, parentElement, definition, level )
 	{
 		// Generates the panel key: docId-eleId-CSSs
@@ -19,4 +19,5 @@
 			doc.getUniqueId() +
 			'-' + parentElement.getUniqueId() +
+			'-' + editor.skinName +
 			( ( definition.css && ( '-' + definition.css ) ) || '' ) +
 			( ( level && ( '-' + level ) ) || '' );
@@ -27,5 +28,5 @@
 		{
 			panel = panels[ key ] = new CKEDITOR.ui.panel( doc, definition );
-			panel.element = parentElement.append( CKEDITOR.dom.element.createFromHtml( panel.renderHtml(), doc ) );
+			panel.element = parentElement.append( CKEDITOR.dom.element.createFromHtml( panel.renderHtml( editor ), doc ) );
 
 			panel.element.setStyles(
@@ -41,12 +42,12 @@
 	CKEDITOR.ui.floatPanel = CKEDITOR.tools.createClass(
 	{
-		$ : function( parentElement, definition, level )
+		$ : function( editor, parentElement, definition, level )
 		{
 			definition.forceIFrame = true;
 
 			var doc = parentElement.getDocument(),
-				panel = getPanel( doc, parentElement, definition, level || 0 ),
+				panel = getPanel( editor, doc, parentElement, definition, level || 0 ),
 				element = panel.element,
-				iframe = element.getFirst();
+				iframe = element.getFirst().getFirst();
 
 			this.element = element;
@@ -110,5 +111,5 @@
 					function setHeight()
 					{
-						element.setStyle( 'height', block.element.$.scrollHeight + 'px' );
+						element.getFirst().setStyle( 'height', block.element.$.scrollHeight + 'px' );
 					}
 
@@ -119,5 +120,5 @@
 				}
 				else
-					element.removeStyle( 'height' );
+					element.getFirst().removeStyle( 'height' );
 
 				// Configure the IFrame blur event. Do that only once.
Index: /CKEditor/trunk/_source/plugins/font/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/font/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/font/plugin.js	(revision 3208)
@@ -37,6 +37,5 @@
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-					className : 'cke_skin_default'
+					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
 				},
 
Index: /CKEditor/trunk/_source/plugins/format/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/format/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/format/plugin.js	(revision 3208)
@@ -35,6 +35,5 @@
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-					className : 'cke_skin_default'
+					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
 				},
 
Index: /CKEditor/trunk/_source/plugins/menu/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 3208)
@@ -118,5 +118,5 @@
 				if ( !panel )
 				{
-					panel = this._.panel = new CKEDITOR.ui.floatPanel( CKEDITOR.document.getBody(),
+					panel = this._.panel = new CKEDITOR.ui.floatPanel( this.editor, CKEDITOR.document.getBody(),
 						{
 							css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
@@ -238,8 +238,7 @@
 		{
 			var id = menu.id + String( index ),
-				classes = 'cke_menuitem',
 				state = this.state || CKEDITOR.TRISTATE_OFF;
 
-			classes += ' cke_' + (
+			var classes = ' cke_' + (
 				state == CKEDITOR.TRISTATE_ON ? 'on' :
 				state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' :
@@ -250,4 +249,5 @@
 
 			output.push(
+				'<span class="cke_menuitem">' +
 				'<a id="', id, '"' +
 					' class="', classes, '" href="javascript:void(\'', ( this.label || '' ).replace( "'", '' ), '\')"' +
@@ -293,5 +293,6 @@
 							this.label,
 						 '</span>' +
-				'</a>' );
+				'</a>' +
+				'</span>' );
 		}
 	}
Index: /CKEditor/trunk/_source/plugins/panel/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/panel/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/panel/plugin.js	(revision 3208)
@@ -57,8 +57,8 @@
 CKEDITOR.ui.panel.prototype =
 {
-	renderHtml : function()
+	renderHtml : function( editor )
 	{
 		var output = [];
-		this.render( output );
+		this.render( editor, output );
 		return output.join( '' );
 	},
@@ -72,28 +72,29 @@
 	 * @example
 	 */
-	render : function( output )
+	render : function( editor, output )
 	{
 		var id = 'cke_' + this.id;
 
 		output.push(
-			'<div id=', id,
-				' class="cke_panel' );
+			'<div class="', editor.skinClass ,'">' +
+				'<div id=', id, ' class="cke_panel' );
 
 		if ( this.className )
-			output.push( ' ', this.className);
+			output.push( ' ', this.className );
 
 		output.push(
-			 '">');
+				'">' );
 
 		if ( this.forceIFrame || this.css.length )
 		{
 			output.push(
-				'<iframe id="', id, '_frame"' +
-					' frameborder="0"' +
-					' src="javascript:void(0)"' +
-				'></iframe>' );
+						'<iframe id="', id, '_frame"' +
+							' frameborder="0"' +
+							' src="javascript:void(0)"' +
+						'></iframe>' );
 		}
 
 		output.push(
+				'</div>' +
 			'</div>' );
 
@@ -111,5 +112,5 @@
 				var iframe = this.document.getById( 'cke_' + this.id + '_frame' );
 				var doc = new CKEDITOR.dom.document( iframe.$.contentWindow.document );
-				
+
 				// Initialize the IFRAME document body.
 				doc.$.open();
@@ -124,5 +125,5 @@
 					'<\/html>' );
 				doc.$.close();
-				
+
 				var win = doc.getWindow();
 
@@ -176,5 +177,5 @@
 
 		block.show();
-		
+
 		return block;
 	}
Index: /CKEditor/trunk/_source/plugins/panelbutton/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/panelbutton/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/panelbutton/plugin.js	(revision 3208)
@@ -80,5 +80,5 @@
 					var _ = this._;
 
-					this.createPanel();
+					this.createPanel( editor );
 
 					if ( _.on )
@@ -112,15 +112,13 @@
 			var label = this.label || '';
 
-			var classes = 'cke_button cke_off';
+			var classes = 'cke_off';
 
 			if ( this.className )
 				classes += ' ' + this.className;
 
-			if ( CKEDITOR.env.ie )
-				label += '\ufeff';
-
 			output.push(
+				'<span class="cke_button">',
 				'<a id="', id, '"' +
-					' class="', classes, '" href="javascript:void(\'', ( this.label || '' ).replace( "'", '' ), '\')"' +
+					' class="', classes, '" href="javascript:void(\'', ( this.title || '' ).replace( "'", '' ), '\')"' +
 					' title="', this.title, '"' +
 					' tabindex="-1"' +
@@ -148,12 +146,13 @@
 					' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this);">' +
 						'<span class="cke_icon"></span>' +
-						'<span class="cke_label">', label, '</span>' +
+						'<span class="cke_label">', this.label, '</span>' +
 						'<span class="cke_buttonarrow"></span>' +
-				'</a>' );
+				'</a>' +
+				'</span>' );
 
 			return instance;
 		},
 		
-		createPanel : function()
+		createPanel : function( editor )
 		{
 			var _ = this._;
@@ -164,5 +163,5 @@
 			var panelDefinition = this._.panelDefinition || {},
 				panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
-				panel = this._.panel = new CKEDITOR.ui.floatPanel( panelParentElement, panelDefinition ),
+				panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
 				me = this;			
 
@@ -170,7 +169,7 @@
 				{
 					if ( me.className )
-						this.element.addClass( me.className );
-
-					me.document.getById( _.id ).addClass( 'cke_on');
+						this.element.getFirst().addClass( me.className + '_panel' );
+
+					me.setState( CKEDITOR.TRISTATE_ON );
 
 					_.on = 1;
@@ -183,7 +182,7 @@
 				{
 					if ( me.className )
-						this.element.removeClass( me.className );
-
-					me.document.getById( _.id ).removeClass( 'cke_on');
+						this.element.getFirst().removeClass( me.className + '_panel' );
+
+					me.setState( CKEDITOR.TRISTATE_OFF );
 
 					_.on = 0;
Index: /CKEditor/trunk/_source/plugins/richcombo/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/richcombo/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/richcombo/plugin.js	(revision 3208)
@@ -87,5 +87,5 @@
 					var _ = this._;
 
-					this.createPanel();
+					this.createPanel( editor );
 
 					if ( _.on )
@@ -143,11 +143,12 @@
 			
 			output.push(
-				'<span id=', id, ' class="cke_rcombo' );
+				'<span class="cke_rcombo">',
+				'<span id=', id );
 
 			if ( this.className )
-				output.push( ' ', this.className);
+				output.push( ' class="', this.className, '"');
 
 			output.push(
-				'">' +
+				'>' +
 					'<span class=cke_label>', this.label, '</span>' +
 					'<a hidefocus=true title="', this.title, '" tabindex="-1" href="javascript:void(\'', this.label, '\')"' );
@@ -176,4 +177,5 @@
 						'<span class=cke_openbutton></span>' +
 					'</a>' +
+				'</span>' +
 				'</span>' );
 
@@ -184,5 +186,5 @@
 		},
 
-		createPanel : function()
+		createPanel : function( editor )
 		{
 			if ( this._.panel )
@@ -191,5 +193,5 @@
 			var panelDefinition = this._.panelDefinition,
 				panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
-				panel = new CKEDITOR.ui.floatPanel( panelParentElement, panelDefinition ),
+				panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
 				list = panel.addListBlock( this.id, this.multiSelect ),
 				me = this;
@@ -198,5 +200,5 @@
 				{
 					if ( me.className )
-						this.element.addClass( me.className );
+						this.element.getFirst().addClass( me.className + '_panel' );
 
 					me.document.getById( 'cke_' + me.id ).addClass( 'cke_on');
@@ -211,5 +213,5 @@
 				{
 					if ( me.className )
-						this.element.removeClass( me.className );
+						this.element.getFirst().removeClass( me.className + '_panel' );
 
 					me.document.getById( 'cke_' + me.id ).removeClass( 'cke_on');
Index: /CKEditor/trunk/_source/plugins/stylescombo/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/stylescombo/plugin.js	(revision 3207)
+++ /CKEditor/trunk/_source/plugins/stylescombo/plugin.js	(revision 3208)
@@ -27,6 +27,5 @@
 					panel :
 					{
-						css : [ config.contentsCss, editor.skinPath + 'editor.css' ],
-						className : 'cke_skin_default'
+						css : [ config.contentsCss, editor.skinPath + 'editor.css' ]
 					},
 
Index: /CKEditor/trunk/_source/skins/default/editor.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/editor.css	(revision 3207)
+++ /CKEditor/trunk/_source/skins/default/editor.css	(revision 3208)
@@ -15,5 +15,5 @@
 
 /* Restore the container visibility */
-body .cke_container
+body .cke_skin_default
 {
 	visibility: visible;
Index: /CKEditor/trunk/_source/skins/default/icons.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/icons.css	(revision 3207)
+++ /CKEditor/trunk/_source/skins/default/icons.css	(revision 3208)
@@ -4,277 +4,277 @@
 */
 
-.cke_skin_default a.cke_button_source .cke_icon
+.cke_skin_default .cke_button_source .cke_icon
 {
 	background-position: 0 0;
 }
 
-.cke_skin_default a.cke_button_newpage .cke_icon
+.cke_skin_default .cke_button_newpage .cke_icon
 {
 	background-position: 0 -48px;
 }
 
-.cke_skin_default a.cke_button_preview .cke_icon
+.cke_skin_default .cke_button_preview .cke_icon
 {
 	background-position: 0 -64px;
 }
 
-.cke_skin_default a.cke_button_cut .cke_icon
+.cke_skin_default .cke_button_cut .cke_icon
 {
 	background-position: 0 -96px;
 }
 
-.cke_skin_default a.cke_button_copy .cke_icon
+.cke_skin_default .cke_button_copy .cke_icon
 {
 	background-position: 0 -112px;
 }
 
-.cke_skin_default a.cke_button_paste .cke_icon
+.cke_skin_default .cke_button_paste .cke_icon
 {
 	background-position: 0 -128px;
 }
 
-.cke_skin_default a.cke_button_pastetext .cke_icon
+.cke_skin_default .cke_button_pastetext .cke_icon
 {
 	background-position: 0 -144px;
 }
 
-.cke_skin_default a.cke_button_find .cke_icon
+.cke_skin_default .cke_button_find .cke_icon
 {
 	background-position: 0 -240px;
 }
 
-.cke_skin_default a.cke_button_replace .cke_icon
+.cke_skin_default .cke_button_replace .cke_icon
 {
 	background-position: 0 -256px;
 }
 
-.cke_skin_default a.cke_button_selectAll .cke_icon
+.cke_skin_default .cke_button_selectAll .cke_icon
 {
 	background-position: 0 -272px;
 }
 
-.cke_skin_default a.cke_button_removeFormat .cke_icon
+.cke_skin_default .cke_button_removeFormat .cke_icon
 {
 	background-position: 0 -288px;
 }
 
-.cke_skin_default a.cke_button_bold .cke_icon
+.cke_skin_default .cke_button_bold .cke_icon
 {
 	background-position: 0 -304px;
 }
 
-.cke_skin_default a.cke_button_italic .cke_icon
+.cke_skin_default .cke_button_italic .cke_icon
 {
 	background-position: 0 -320px;
 }
 
-.cke_skin_default a.cke_button_underline .cke_icon
+.cke_skin_default .cke_button_underline .cke_icon
 {
 	background-position: 0 -336px;
 }
 
-.cke_skin_default a.cke_button_strike .cke_icon
+.cke_skin_default .cke_button_strike .cke_icon
 {
 	background-position: 0 -352px;
 }
 
-.cke_skin_default a.cke_button_subscript .cke_icon
+.cke_skin_default .cke_button_subscript .cke_icon
 {
 	background-position: 0 -368px;
 }
 
-.cke_skin_default a.cke_button_superscript .cke_icon
+.cke_skin_default .cke_button_superscript .cke_icon
 {
 	background-position: 0 -384px;
 }
 
-.cke_skin_default a.cke_button_table .cke_icon
+.cke_skin_default .cke_button_table .cke_icon
 {
 	background-position: 0 -608px;
 }
 
-.cke_skin_default a.cke_button_horizontalrule .cke_icon
+.cke_skin_default .cke_button_horizontalrule .cke_icon
 {
 	background-position: 0 -624px;
 }
 
-.cke_skin_default a.cke_button_smiley .cke_icon
+.cke_skin_default .cke_button_smiley .cke_icon
 {
 	background-position: 0 -640px;
 }
 
-.cke_skin_default a.cke_button_link .cke_icon
+.cke_skin_default .cke_button_link .cke_icon
 {
 	background-position: 0 -528px;
 }
 
-.cke_skin_default a.cke_button_unlink .cke_icon
+.cke_skin_default .cke_button_unlink .cke_icon
 {
 	background-position: 0 -544px;
 }
 
-.cke_skin_default a.cke_button_anchor .cke_icon
+.cke_skin_default .cke_button_anchor .cke_icon
 {
 	background-position: 0 -560px;
 }
 
-.cke_skin_default a.cke_button_image .cke_icon
+.cke_skin_default .cke_button_image .cke_icon
 {
 	background-position: 0 -576px;
 }
 
-.cke_skin_default a.cke_button_flash .cke_icon
+.cke_skin_default .cke_button_flash .cke_icon
 {
 	background-position: 0 -592px;
 }
 
-.cke_skin_default a.cke_button_specialchar .cke_icon
+.cke_skin_default .cke_button_specialchar .cke_icon
 {
 	background-position: 0 -656px;
 }
 
-.cke_skin_default a.cke_button_pagebreak .cke_icon
+.cke_skin_default .cke_button_pagebreak .cke_icon
 {
 	background-position: 0 -672px;
 }
 
-.cke_skin_default a.cke_button_print .cke_icon
+.cke_skin_default .cke_button_print .cke_icon
 {
 	background-position: 0 -176px;
 }
 
-.cke_skin_default a.cke_button_checkspell .cke_icon
+.cke_skin_default .cke_button_checkspell .cke_icon
 {
 	background-position: 0 -192px;
 }
 
-.cke_skin_default a.cke_button_pagebreak .cke_icon
+.cke_skin_default .cke_button_pagebreak .cke_icon
 {
 	background-position: 0 -672px;
 }
 
-.cke_skin_default a.cke_button_textcolor .cke_icon
+.cke_skin_default .cke_button_textcolor .cke_icon
 {
 	background-position: 0 -704px;
 }
 
-.cke_skin_default a.cke_button_bgcolor .cke_icon
+.cke_skin_default .cke_button_bgcolor .cke_icon
 {
 	background-position: 0 -720px;
 }
 
-.cke_skin_default a.cke_button_form .cke_icon
+.cke_skin_default .cke_button_form .cke_icon
 {
 	background-position: 0 -752px;
 }
 
-.cke_skin_default a.cke_button_checkbox .cke_icon
+.cke_skin_default .cke_button_checkbox .cke_icon
 {
 	background-position: 0 -768px;
 }
 
-.cke_skin_default a.cke_button_radio .cke_icon
+.cke_skin_default .cke_button_radio .cke_icon
 {
 	background-position: 0 -784px;
 }
 
-.cke_skin_default a.cke_button_textfield .cke_icon
+.cke_skin_default .cke_button_textfield .cke_icon
 {
 	background-position: 0 -800px;
 }
 
-.cke_skin_default a.cke_button_textarea .cke_icon
+.cke_skin_default .cke_button_textarea .cke_icon
 {
 	background-position: 0 -816px;
 }
-.cke_skin_default a.cke_button_showblocks .cke_icon
+.cke_skin_default .cke_button_showblocks .cke_icon
 {
 	background-position: 0 -1136px;
 }
 
-.cke_skin_default a.cke_button_select .cke_icon
+.cke_skin_default .cke_button_select .cke_icon
 {
 	background-position: 0 -832px;
 }
 
-.cke_skin_default a.cke_button_button .cke_icon
+.cke_skin_default .cke_button_button .cke_icon
 {
 	background-position: 0 -848px;
 }
 
-.cke_skin_default a.cke_button_imagebutton .cke_icon
+.cke_skin_default .cke_button_imagebutton .cke_icon
 {
 	background-position: 0 -864px;
 }
 
-.cke_skin_default a.cke_button_hiddenfield .cke_icon
+.cke_skin_default .cke_button_hiddenfield .cke_icon
 {
 	background-position: 0 -880px;
 }
-.cke_skin_default a.cke_button_undo .cke_icon
+.cke_skin_default .cke_button_undo .cke_icon
 {
 	background-position: 0 -208px;
 }
-.cke_skin_default a.cke_button_redo .cke_icon
+.cke_skin_default .cke_button_redo .cke_icon
 {
 	background-position: 0 -224px;
 }
 
-.cke_skin_default a.cke_button_templates .cke_icon
+.cke_skin_default .cke_button_templates .cke_icon
 {
 	background-position: 0 -80px;
 }
 
-.cke_skin_default a.cke_button_numberedlist .cke_icon
+.cke_skin_default .cke_button_numberedlist .cke_icon
 {
 	background-position: 0 -400px;
 }
 
-.cke_skin_default a.cke_button_bulletedlist .cke_icon
+.cke_skin_default .cke_button_bulletedlist .cke_icon
 {
 	background-position: 0 -416px;
 }
 
-.cke_skin_default a.cke_button_outdent .cke_icon
+.cke_skin_default .cke_button_outdent .cke_icon
 {
 	background-position: 0 -432px;
 }
 
-.cke_skin_default a.cke_button_indent .cke_icon
+.cke_skin_default .cke_button_indent .cke_icon
 {
 	background-position: 0 -448px;
 }
 
-.cke_skin_default a.cke_button_justifyleft .cke_icon
+.cke_skin_default .cke_button_justifyleft .cke_icon
 {
 	background-position: 0 -464px;
 }
 
-.cke_skin_default a.cke_button_justifycenter .cke_icon
+.cke_skin_default .cke_button_justifycenter .cke_icon
 {
 	background-position: 0 -480px;
 }
 
-.cke_skin_default a.cke_button_justifyright .cke_icon
+.cke_skin_default .cke_button_justifyright .cke_icon
 {
 	background-position: 0 -496px;
 }
 
-.cke_skin_default a.cke_button_justifyblock .cke_icon
+.cke_skin_default .cke_button_justifyblock .cke_icon
 {
 	background-position: 0 -512px;
 }
 
-.cke_skin_default a.cke_button_blockquote .cke_icon
+.cke_skin_default .cke_button_blockquote .cke_icon
 {
 	background-position: 0 -1152px;
 }
 
-.cke_skin_default a.cke_button_flash .cke_icon
+.cke_skin_default .cke_button_flash .cke_icon
 {
 	background-position: 0 -592px;
 }
 
-.cke_skin_default a.cke_button_pastefromword .cke_icon
+.cke_skin_default .cke_button_pastefromword .cke_icon
 {
 	background-position: 0 -160px;
Index: /CKEditor/trunk/_source/skins/default/mainui.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/mainui.css	(revision 3207)
+++ /CKEditor/trunk/_source/skins/default/mainui.css	(revision 3208)
@@ -37,5 +37,5 @@
 }
 
-.cke_skin_default.cke_focus
+.cke_skin_default .cke_focus
 {
 	outline: auto 5px -webkit-focus-ring-color;
Index: /CKEditor/trunk/_source/skins/default/menu.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/menu.css	(revision 3207)
+++ /CKEditor/trunk/_source/skins/default/menu.css	(revision 3208)
@@ -4,16 +4,16 @@
 */
 
-.cke_skin_default.cke_contextmenu
+.cke_skin_default .cke_contextmenu
 {
     padding: 2px;
 }
 
-.cke_skin_default a.cke_menuitem
+.cke_skin_default .cke_menuitem a
 {
 	display:block;
 }
 
-.cke_skin_default a:hover.cke_menuitem,
-.cke_skin_default a:focus.cke_menuitem
+.cke_skin_default .cke_menuitem a:hover,
+.cke_skin_default .cke_menuitem a:focus
 {
 	background-color: #8f8f73;
@@ -21,5 +21,5 @@
 }
 
-.cke_skin_default a.cke_menuitem.cke_disabled
+.cke_skin_default .cke_menuitem a.cke_disabled
 {
 	filter: alpha(opacity=30); /* IE */
@@ -27,5 +27,5 @@
 }
 
-.cke_skin_default a.cke_menuitem .cke_icon
+.cke_skin_default .cke_menuitem .cke_icon
 {
 	background-image: url(icons.gif);
@@ -41,6 +41,6 @@
 }
 
-.cke_skin_default a:hover.cke_menuitem .cke_icon,
-.cke_skin_default a:focus.cke_menuitem .cke_icon
+.cke_skin_default .cke_menuitem a:hover .cke_icon,
+.cke_skin_default .cke_menuitem a:focus .cke_icon
 {
 	background-color: #737357;
@@ -50,5 +50,5 @@
 }
 
-.cke_skin_default a.cke_menuitem .cke_label
+.cke_skin_default .cke_menuitem .cke_label
 {
 	display:block;
@@ -60,6 +60,6 @@
 }
 
-.cke_skin_default a:hover.cke_menuitem .cke_label,
-.cke_skin_default a:focus.cke_menuitem .cke_label
+.cke_skin_default .cke_menuitem a:hover .cke_label,
+.cke_skin_default .cke_menuitem a:focus .cke_label
 {
 	color: #fff;
Index: /CKEditor/trunk/_source/skins/default/panel.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/panel.css	(revision 3207)
+++ /CKEditor/trunk/_source/skins/default/panel.css	(revision 3208)
@@ -4,5 +4,5 @@
 */
 
-.cke_skin_default.cke_panel
+.cke_skin_default .cke_panel
 {
     border: 1px solid #8f8f73;
@@ -20,5 +20,5 @@
 
 /* Ideally we would use "inherit here"... but you know... IE :( */
-.cke_skin_default.cke_panel iframe
+.cke_skin_default .cke_panel iframe
 {
 	width: 100%;
@@ -119,6 +119,6 @@
 }
 
-.cke_skin_default.cke_panel.cke_button_textcolor,
-.cke_skin_default.cke_panel.cke_button_bgcolor
+.cke_skin_default .cke_button_textcolor_panel,
+.cke_skin_default .cke_button_bgcolor_panel
 {
 	width: 150px;
Index: /CKEditor/trunk/_source/skins/default/presets.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/presets.css	(revision 3207)
+++ /CKEditor/trunk/_source/skins/default/presets.css	(revision 3208)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -5,5 +5,5 @@
 
 /* "Source" button label */
-.cke_skin_default a.cke_button_source .cke_label
+.cke_skin_default .cke_button_source .cke_label
 {
 	display: inline;
@@ -11,5 +11,5 @@
 
 /* "Styles" panel size */
-.cke_skin_default.cke_panel.cke_styles
+.cke_skin_default .cke_styles_panel
 {
 	width: 150px;
@@ -18,5 +18,5 @@
 
 /* "Format" panel size */
-.cke_skin_default.cke_panel.cke_format
+.cke_skin_default .cke_format_panel
 {
 	width: 150px;
@@ -25,5 +25,5 @@
 
 /* "Font" panel size */
-.cke_skin_default.cke_panel.cke_font
+.cke_skin_default .cke_font_panel
 {
 	width: 150px;
@@ -32,5 +32,5 @@
 
 /* "Font Size" panel size */
-.cke_skin_default.cke_panel.cke_fontSize
+.cke_skin_default .cke_fontSize_panel
 {
 	height: 170px;
@@ -42,2 +42,8 @@
 	width: 20px;
 }
+
+/* "Font Size" combo width (IE Quirks) */
+.cke_skin_default .cke_browser_iequirks .cke_fontSize .cke_text
+{
+	width: 32px;
+}
Index: /CKEditor/trunk/_source/skins/default/richcombo.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/richcombo.css	(revision 3207)
+++ /CKEditor/trunk/_source/skins/default/richcombo.css	(revision 3208)
@@ -3,9 +3,10 @@
 .cke_skin_default .cke_rcombo
 {
-	padding-right: 4px;
 	float: left;
+	margin-left: 2px;
+	margin-right: 2px;
 }
 
-.cke_skin_default.cke_rcombopanel
+.cke_skin_default .cke_rcombopanel
 {
 	border: 1px solid #316ac5;
@@ -16,10 +17,8 @@
 
 /* IE6 only */
-/*\*/
-* html .cke_skin_default .cke_rcombo
+.cke_skin_default cke_browser_ie6 .cke_rcombo
 {
 	float: none;
 }
-/**/ 
 
 .cke_skin_default .cke_rcombo a
@@ -61,115 +60,8 @@
 }
 
-.cke_skin_default .cke_rcombo .cke_openbutton
+.cke_skin_default .cke_browser_iequirks .cke_rcombo .cke_text
 {
-    background-position: center center;
-    background-image: url(images/toolbar.buttonarrow.gif);
-    border-right: 1px solid #8f8f73;
-    border-top: 1px solid #8f8f73;
-    border-bottom: 1px solid #8f8f73;
-	display: block;
-	float: left;
-    width: 14px;
-	height: 22px;
-    background-repeat: no-repeat;
-	-moz-border-radius-topright: 3px;
-	-webkit-border-top-right-radius: 3px;
-	border-top-left-radius: 3px;
-	-moz-border-radius-bottomright: 3px;
-	-webkit-border-bottom-right-radius: 3px;
-	border-bottom-left-radius: 3px;
-}
-
-.cke_skin_default .cke_rcombo a:hover,
-.cke_skin_default .cke_rcombo a:focus,
-.cke_skin_default .cke_rcombo a:active,
-.cke_skin_default .cke_rcombo.cke_on a
-{
-	filter: alpha(opacity=100); /* IE */
-	opacity: 1; /* Safari, Opera and Mozilla */
-}
-
-.cke_skin_default .cke_rcombo a:hover .cke_text,
-.cke_skin_default .cke_rcombo a:focus .cke_text,
-.cke_skin_default .cke_rcombo a:active .cke_text,
-.cke_skin_default .cke_rcombo.cke_on .cke_text
-{
-	border-color: #316ac5;
-}
-
-.cke_skin_default .cke_rcombo a:hover .cke_openbutton,
-.cke_skin_default .cke_rcombo a:focus .cke_openbutton,
-.cke_skin_default .cke_rcombo a:active .cke_openbutton,
-.cke_skin_default .cke_rcombo.cke_on .cke_openbutton
-{
-	border-color: #316ac5;
-	background-color: #dff1ff;
-}
-
-.cke_skin_default .cke_rcombo.cke_on .cke_text
-{
-	-moz-border-radius-bottomleft: 0px;
-	-webkit-border-bottom-left-radius: 0px;
-	border-bottom-left-radius: 0px;
-}
-
-.cke_skin_default .cke_rcombo.cke_on .cke_openbutton
-{
-	-moz-border-radius-bottomright: 0px;
-	-webkit-border-bottom-right-radius: 0px;
-	border-bottom-right-radius: 0px;
-}
-/* Special Combo */
-
-.cke_skin_default .cke_rcombo
-{
-	padding-right: 4px;
-	float: left;
-}
-
-/* IE6 only */
-/*\*/
-* html .cke_skin_default .cke_rcombo
-{
-	float: none;
-}
-/**/ 
-
-.cke_skin_default .cke_rcombo a
-{
-	filter: alpha(opacity=70); /* IE */
-	opacity: 0.70; /* Safari, Opera and Mozilla */
-}
-
-.cke_skin_default .cke_rcombo .cke_label
-{
-	padding-top: 6px;
-	padding-left: 4px;
-	padding-right: 5px;
-	float: left;
-	filter: alpha(opacity=70); /* IE */
-	opacity: 0.70; /* Safari, Opera and Mozilla */
-	background-color: #f1f1e3;	/* Because of IE6+ClearType */
-}
-
-.cke_skin_default .cke_rcombo .cke_text
-{
-	border: 1px solid #8f8f73;
-	background-color: #fff;
-	float: left;
-	height: 14px;
-	width:60px;
-	padding-top: 4px;
-	padding-bottom: 4px;
-	padding-left: 5px;
-	padding-right: 5px;
-    text-overflow: ellipsis;
-    overflow: hidden;
-	-moz-border-radius-topleft: 3px;
-	-webkit-border-top-left-radius: 3px;
-	border-top-left-radius: 3px;
-	-moz-border-radius-bottomleft: 3px;
-	-webkit-border-bottom-left-radius: 3px;
-	border-bottom-left-radius: 3px;
+	height: 24px;
+	width: 72px;
 }
 
@@ -194,8 +86,14 @@
 }
 
+.cke_skin_default .cke_browser_iequirks .cke_rcombo .cke_openbutton
+{
+	height: 24px;
+    width: 15px;
+}
+
 .cke_skin_default .cke_rcombo a:hover,
 .cke_skin_default .cke_rcombo a:focus,
 .cke_skin_default .cke_rcombo a:active,
-.cke_skin_default .cke_rcombo.cke_on a
+.cke_skin_default .cke_rcombo .cke_on a
 {
 	filter: alpha(opacity=100); /* IE */
@@ -206,5 +104,5 @@
 .cke_skin_default .cke_rcombo a:focus .cke_text,
 .cke_skin_default .cke_rcombo a:active .cke_text,
-.cke_skin_default .cke_rcombo.cke_on .cke_text
+.cke_skin_default .cke_rcombo .cke_on .cke_text
 {
 	border-color: #316ac5;
@@ -214,5 +112,5 @@
 .cke_skin_default .cke_rcombo a:focus .cke_openbutton,
 .cke_skin_default .cke_rcombo a:active .cke_openbutton,
-.cke_skin_default .cke_rcombo.cke_on .cke_openbutton
+.cke_skin_default .cke_rcombo .cke_on .cke_openbutton
 {
 	border-color: #316ac5;
@@ -220,5 +118,5 @@
 }
 
-.cke_skin_default .cke_rcombo.cke_on .cke_text
+.cke_skin_default .cke_rcombo .cke_on .cke_text
 {
 	-moz-border-radius-bottomleft: 0px;
@@ -227,5 +125,5 @@
 }
 
-.cke_skin_default .cke_rcombo.cke_on .cke_openbutton
+.cke_skin_default .cke_rcombo .cke_on .cke_openbutton
 {
 	-moz-border-radius-bottomright: 0px;
Index: /CKEditor/trunk/_source/skins/default/toolbar.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/toolbar.css	(revision 3207)
+++ /CKEditor/trunk/_source/skins/default/toolbar.css	(revision 3208)
@@ -29,5 +29,5 @@
 }
 
-.cke_skin_default.cke_rtl .cke_separator
+.cke_skin_default .cke_rtl .cke_separator
 {
 	float:right;
@@ -45,5 +45,6 @@
 }
 
-.cke_skin_default a.cke_button
+.cke_skin_default .cke_button a,
+.cke_skin_default .cke_button a.cke_off
 {
 	border: solid 1px #efefde;
@@ -58,17 +59,4 @@
 	float: left;
 	height: 18px;
-}
-
-.cke_skin_default.cke_rtl a.cke_button
-{
-	float: right;
-}
-
-.cke_skin_default a.cke_button.cke_on
-{
-	background-color: #a3d7ff;
-	border: solid 1px #316ac5;
-	filter: alpha(opacity=100); /* IE */
-	opacity: 1; /* Safari, Opera and Mozilla */
 	-moz-border-radius: 3px;
 	-webkit-border-radius: 3px;
@@ -76,12 +64,41 @@
 }
 
-.cke_skin_default a.cke_button.cke_disabled
+.cke_skin_default .cke_rtl .cke_button a
 {
+	float: right;
+}
+
+.cke_skin_default .cke_button a.cke_on
+{
+	border: solid 1px #316ac5;
+	background-color: #a3d7ff;
+	padding-top: 2px;
+	padding-bottom: 2px;
+	padding-left: 4px;
+	padding-right: 4px;
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1; /* Safari, Opera and Mozilla */
+	display:block;
+	float: left;
+	height: 18px;
+}
+
+.cke_skin_default .cke_button a.cke_disabled
+{
+	border: solid 1px transparent;
+	background-color: inherit;
+	padding-top: 2px;
+	padding-bottom: 2px;
+	padding-left: 4px;
+	padding-right: 4px;
 	filter: alpha(opacity=30); /* IE */
 	opacity : 0.3; /* Safari, Opera and Mozilla */
+	display:block;
+	float: left;
+	height: 18px;
 }
 
 /* IE6 BUG: Hover removes the padding and border, for some unknown reason. */
-.cke_skin_default.cke_browser_ie a:hover.cke_button.cke_disabled
+.cke_skin_default .cke_browser_ie a:hover.cke_button .cke_disabled
 {
 	padding: 2px 4px;
@@ -89,10 +106,10 @@
 }
 
-.cke_skin_default a:hover.cke_button.cke_on,
-.cke_skin_default a:focus.cke_button.cke_on,
-.cke_skin_default a:active.cke_button.cke_on,	/* IE */
-.cke_skin_default a:hover.cke_button.cke_off,
-.cke_skin_default a:focus.cke_button.cke_off,
-.cke_skin_default a:active.cke_button.cke_off	/* IE */
+.cke_skin_default .cke_button a:hover.cke_on,
+.cke_skin_default .cke_button a:focus.cke_on,
+.cke_skin_default .cke_button a:active.cke_on,	/* IE */
+.cke_skin_default .cke_button a:hover.cke_off,
+.cke_skin_default .cke_button a:focus.cke_off,
+.cke_skin_default .cke_button a:active.cke_off	/* IE */
 {
 	border: solid 1px #316ac5;
@@ -113,11 +130,11 @@
 }
 
-.cke_skin_default.cke_rtl a:hover.cke_button.cke_on,
-.cke_skin_default.cke_rtl a:hover.cke_button.cke_off
+.cke_skin_default .cke_rtl .cke_button a:hover.cke_on,
+.cke_skin_default .cke_rtl .cke_button a:hover.cke_off
 {
 	float: right;
 }
 
-.cke_skin_default a.cke_button .cke_icon
+.cke_skin_default .cke_button .cke_icon
 {
 	background-image: url(icons.gif);
@@ -131,10 +148,10 @@
 }
 
-.cke_skin_default.cke_rtl a.cke_button .cke_icon
+.cke_skin_default .cke_rtl .cke_button .cke_icon
 {
 	float: right;
 }
 
-.cke_skin_default a.cke_button .cke_label
+.cke_skin_default .cke_button .cke_label
 {
 	display: none;
@@ -145,5 +162,5 @@
 }
 
-.cke_skin_default a.cke_button .cke_buttonarrow
+.cke_skin_default .cke_button .cke_buttonarrow
 {
 	float: left;
@@ -155,5 +172,5 @@
 }
 
-.cke_skin_default.cke_rtl a.cke_button .cke_label
+.cke_skin_default .cke_rtl .cke_button .cke_label
 {
 	float: right;
Index: /CKEditor/trunk/_source/tests/core/env.html
===================================================================
--- /CKEditor/trunk/_source/tests/core/env.html	(revision 3207)
+++ /CKEditor/trunk/_source/tests/core/env.html	(revision 3208)
@@ -37,4 +37,10 @@
 		},
 
+
+		test_quirks : function()
+		{
+			assert.isFalse( CKEDITOR.env.quirks );
+		},
+
 		name : document.title
 	};
Index: /CKEditor/trunk/_source/themes/default/theme.js
===================================================================
--- /CKEditor/trunk/_source/themes/default/theme.js	(revision 3207)
+++ /CKEditor/trunk/_source/themes/default/theme.js	(revision 3208)
@@ -16,4 +16,13 @@
 				CKEDITOR.env.webkit ? 'webkit' :
 				'unknown' );
+	
+	if ( CKEDITOR.env.ie )
+	{
+		if ( CKEDITOR.env.version < 7 )
+			browserCssClass += ' cke_browser_ie6';
+
+		if ( CKEDITOR.env.quirks )
+			browserCssClass += ' cke_browser_iequirks';
+	}
 
 	return {
@@ -57,6 +66,7 @@
 			// differently by the browsers ("semi-inline").
 			var container = CKEDITOR.dom.element.createFromHtml( [
-				'<span id="cke_', name, '" onmousedown="return false;" class="cke_container ', editor.skinClass, ' ', browserCssClass,
-					' cke_', editor.lang.dir, '" dir="', editor.lang.dir, '" title="', ( CKEDITOR.env.gecko ? ' ' : '' ), '">' +
+				'<span id="cke_', name, '" onmousedown="return false;" class="', editor.skinClass,
+					'" dir="', editor.lang.dir, '" title="', ( CKEDITOR.env.gecko ? ' ' : '' ), '">' +
+				'<span class="' , browserCssClass, ' cke_', editor.lang.dir, '">' +
 					'<table class="cke_editor" border="0" cellspacing="0" cellpadding="0" style="width:', width, ';height:', height, '"><tbody>' +
 						'<tr', topHtml		? '' : ' style="display:none"', '><td id="cke_top_'		, name, '" class="cke_top">'		, topHtml		, '</td></tr>' +
@@ -65,9 +75,10 @@
 					'</tbody></table>' +
 					//Hide the container when loading skins, later restored by skin css.
-					'<style>.cke_container{visibility:hidden;}</style>' +
+					'<style>.', editor.skinClass, '{visibility:hidden;}</style>' +
+				'</span>' +
 				'</span>' ].join( '' ) );
 
-			container.getChild( [0, 0, 0] ).unselectable();
-			container.getChild( [0, 0, 2] ).unselectable();
+			container.getChild( [0, 0, 0, 0] ).unselectable();
+			container.getChild( [0, 0, 0, 2] ).unselectable();
 
 			if ( elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
