Index: _source/core/env.js
===================================================================
--- _source/core/env.js	(revision 3200)
+++ _source/core/env.js	(working copy)
@@ -31,6 +31,7 @@
 			 *     alert( "I'm on IE!" );
 			 */
 			ie		: /*@cc_on!@*/false,
+
 			/**
 			 * Indicates that CKEditor is running on Opera.
 			 * @type Boolean
@@ -39,6 +40,7 @@
 			 *     alert( "I'm on Opera!" );
 			 */
 			opera	: ( !!opera && opera.version ),
+
 			/**
 			 * Indicates that CKEditor is running on a WebKit based browser, like
 			 * Safari.
@@ -48,6 +50,7 @@
 			 *     alert( "I'm on WebKit!" );
 			 */
 			webkit	: ( agent.indexOf( ' applewebkit/' ) > -1 ),
+
 			/**
 			 * Indicates that CKEditor is running on Adobe AIR.
 			 * @type Boolean
@@ -56,6 +59,7 @@
 			 *     alert( "I'm on AIR!" );
 			 */
 			air		: ( agent.indexOf( ' adobeair/' ) > -1 ),
+
 			/**
 			 * Indicates that CKEditor is running on Macintosh.
 			 * @type Boolean
@@ -63,7 +67,9 @@
 			 * if ( CKEDITOR.env.mac )
 			 *     alert( "I love apples!" );
 			 */
-			mac	: ( agent.indexOf( 'macintosh' ) > -1 )
+			mac	: ( agent.indexOf( 'macintosh' ) > -1 ),
+
+			quirks : ( document.compatMode == 'BackCompat' )
 		};
 
 		/**
@@ -92,7 +98,7 @@
 			 * if ( CKEDITOR.env.ie6Compat )
 			 *     alert( "I'm on IE6 or quirks mode!" );
 			 */
-			env.ie6Compat = ( version < 7 || document.compatMode == 'BackCompat' );
+			env.ie6Compat = ( version < 7 || env.quirks );
 		}
 
 		// Gecko.
Index: _source/core/focusmanager.js
===================================================================
--- _source/core/focusmanager.js	(revision 3200)
+++ _source/core/focusmanager.js	(working copy)
@@ -65,9 +65,13 @@
 			//		"focus 1" > "focus 2" > "blur 1"
 			if ( CKEDITOR.currentInstance )
 				CKEDITOR.currentInstance.focusManager.forceBlur();
+			
+			var editor = this._.editor;
 
+			editor.container.getFirst().addClass( 'cke_focus' );
+
 			this.hasFocus = true;
-			this._.editor.fire( 'focus' );
+			editor.fire( 'focus' );
 		}
 	},
 
@@ -108,8 +112,12 @@
 	{
 		if ( this.hasFocus )
 		{
+			var editor = this._.editor;
+
+			editor.container.getFirst().removeClass( 'cke_focus' );
+
 			this.hasFocus = false;
-			this._.editor.fire( 'blur' );
+			editor.fire( 'blur' );
 		}
 	}
 };
Index: _source/plugins/button/plugin.js
===================================================================
--- _source/plugins/button/plugin.js	(revision 3200)
+++ _source/plugins/button/plugin.js	(working copy)
@@ -34,8 +34,6 @@
 	 * @example
 	 */
 	this.label = definition.label;
-	if ( CKEDITOR.env.ie )
-		this.label += '\ufeff';
 
 	/**
 	 * The button advisory title. It is usually displayed as the button tooltip.
@@ -122,7 +120,7 @@
 
 		var index = CKEDITOR.ui.button._.instances.push( instance ) - 1;
 		
-		var classes = 'cke_button';
+		var classes = '';
 		
 		// Get the command name.
 		var command = this.command;
@@ -150,8 +148,9 @@
 			classes += ' ' + this.className;
 
 		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"' +
 				' hidefocus="true"' );
@@ -185,7 +184,8 @@
 		output.push(
 					'></span>' +
 					'<span class="cke_label">', this.label, '</span>' +
-			'</a>' );
+			'</a>',
+			'</span>' );
 
 		return instance;
 	},
Index: _source/plugins/colorbutton/plugin.js
===================================================================
--- _source/plugins/colorbutton/plugin.js	(revision 3200)
+++ _source/plugins/colorbutton/plugin.js	(working copy)
@@ -28,8 +28,7 @@
 
 					panel :
 					{
-						css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-						className : 'cke_skin_default'
+						css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
 					},
 
 					onBlock : function( panel, blockName )
Index: _source/plugins/floatpanel/plugin.js
===================================================================
--- _source/plugins/floatpanel/plugin.js	(revision 3200)
+++ _source/plugins/floatpanel/plugin.js	(working copy)
@@ -12,12 +12,13 @@
 {
 	var panels = {};
 
-	function getPanel( doc, parentElement, definition, level )
+	function getPanel( editor, doc, parentElement, definition, level )
 	{
 		// Generates the panel key: docId-eleId-CSSs
 		var key =
 			doc.getUniqueId() +
 			'-' + parentElement.getUniqueId() +
+			'-' + editor.skinName +
 			( ( definition.css && ( '-' + definition.css ) ) || '' ) +
 			( ( level && ( '-' + level ) ) || '' );
 
@@ -26,7 +27,7 @@
 		if ( !panel )
 		{
 			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(
 				{
@@ -40,14 +41,14 @@
 
 	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;
 			
@@ -109,7 +110,7 @@
 				{
 					function setHeight()
 					{
-						element.setStyle( 'height', block.element.$.scrollHeight + 'px' );
+						element.getFirst().setStyle( 'height', block.element.$.scrollHeight + 'px' );
 					}
 
 					if ( !CKEDITOR.env.gecko || panel.isLoaded )
@@ -118,7 +119,7 @@
 						panel.onLoad = setHeight;
 				}
 				else
-					element.removeStyle( 'height' );
+					element.getFirst().removeStyle( 'height' );
 
 				// Configure the IFrame blur event. Do that only once.
 				if ( !this._.blurSet )
Index: _source/plugins/font/plugin.js
===================================================================
--- _source/plugins/font/plugin.js	(revision 3200)
+++ _source/plugins/font/plugin.js	(working copy)
@@ -36,8 +36,7 @@
 
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-					className : 'cke_skin_default'
+					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
 				},
 
 				init : function()
Index: _source/plugins/format/plugin.js
===================================================================
--- _source/plugins/format/plugin.js	(revision 3200)
+++ _source/plugins/format/plugin.js	(working copy)
@@ -34,8 +34,7 @@
 
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-					className : 'cke_skin_default'
+					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
 				},
 
 				init : function()
Index: _source/plugins/menu/plugin.js
===================================================================
--- _source/plugins/menu/plugin.js	(revision 3200)
+++ _source/plugins/menu/plugin.js	(working copy)
@@ -117,7 +117,7 @@
 				// Create the floating panel for this menu.
 				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' ) ],
 							level : this._.level - 1,
@@ -237,10 +237,9 @@
 		render : function( menu, index, output )
 		{
 			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' :
 				'off' );
@@ -249,6 +248,7 @@
 				classes += ' ' + this.className;
 
 			output.push(
+				'<span class="cke_menuitem">' +
 				'<a id="', id, '"' +
 					' class="', classes, '" href="javascript:void(\'', ( this.label || '' ).replace( "'", '' ), '\')"' +
 					' title="', this.label, '"' +
@@ -292,7 +292,8 @@
 			output.push(
 							this.label,
 						 '</span>' +
-				'</a>' );
+				'</a>' +
+				'</span>' );
 		}
 	}
 });
Index: _source/plugins/panel/plugin.js
===================================================================
--- _source/plugins/panel/plugin.js	(revision 3200)
+++ _source/plugins/panel/plugin.js	(working copy)
@@ -56,10 +56,10 @@
 
 CKEDITOR.ui.panel.prototype =
 {
-	renderHtml : function()
+	renderHtml : function( editor )
 	{
 		var output = [];
-		this.render( output );
+		this.render( editor, output );
 		return output.join( '' );
 	},
 
@@ -71,30 +71,31 @@
 	 *		to this button.
 	 * @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>' );
 
 		return id;
@@ -110,7 +111,7 @@
 			{
 				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();
 				doc.$.write(
@@ -123,7 +124,7 @@
 						'</body>' +
 					'<\/html>' );
 				doc.$.close();
-				
+
 				var win = doc.getWindow();
 
 				// Register the CKEDITOR global.
@@ -175,7 +176,7 @@
 		this._.currentBlock = block;
 
 		block.show();
-		
+
 		return block;
 	}
 };
Index: _source/plugins/panelbutton/plugin.js
===================================================================
--- _source/plugins/panelbutton/plugin.js	(revision 3200)
+++ _source/plugins/panelbutton/plugin.js	(working copy)
@@ -79,7 +79,7 @@
 				{
 					var _ = this._;
 
-					this.createPanel();
+					this.createPanel( editor );
 
 					if ( _.on )
 					{
@@ -111,17 +111,15 @@
 
 			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"' +
 					' hidefocus="true"' );
@@ -147,14 +145,15 @@
 					' onkeydown="CKEDITOR.tools.callFunction( ', keyDownFn, ', event, this );"' +
 					' 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._;
 
@@ -163,15 +162,15 @@
 			
 			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;			
 
 			panel.onShow = function()
 				{
 					if ( me.className )
-						this.element.addClass( me.className );
+						this.element.getFirst().addClass( me.className + '_panel' );
 
-					me.document.getById( _.id ).addClass( 'cke_on');
+					me.setState( CKEDITOR.TRISTATE_ON );
 
 					_.on = 1;
 
@@ -182,9 +181,9 @@
 			panel.onHide = function()
 				{
 					if ( me.className )
-						this.element.removeClass( me.className );
+						this.element.getFirst().removeClass( me.className + '_panel' );
 
-					me.document.getById( _.id ).removeClass( 'cke_on');
+					me.setState( CKEDITOR.TRISTATE_OFF );
 
 					_.on = 0;
 
Index: _source/plugins/richcombo/plugin.js
===================================================================
--- _source/plugins/richcombo/plugin.js	(revision 3200)
+++ _source/plugins/richcombo/plugin.js	(working copy)
@@ -86,7 +86,7 @@
 				{
 					var _ = this._;
 
-					this.createPanel();
+					this.createPanel( editor );
 
 					if ( _.on )
 					{
@@ -142,13 +142,14 @@
 			});
 			
 			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, '\')"' );
 
@@ -175,6 +176,7 @@
 						'<span id="', id, '_text" class=cke_text>&nbsp;</span>' +
 						'<span class=cke_openbutton></span>' +
 					'</a>' +
+				'</span>' +
 				'</span>' );
 
 			if ( this.onRender )
@@ -183,21 +185,21 @@
 			return instance;
 		},
 
-		createPanel : function()
+		createPanel : function( editor )
 		{
 			if ( this._.panel )
 				return;
 
 			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;
 
 			panel.onShow = function()
 				{
 					if ( me.className )
-						this.element.addClass( me.className );
+						this.element.getFirst().addClass( me.className + '_panel' );
 
 					me.document.getById( 'cke_' + me.id ).addClass( 'cke_on');
 
@@ -210,7 +212,7 @@
 			panel.onHide = function()
 				{
 					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: _source/plugins/stylescombo/plugin.js
===================================================================
--- _source/plugins/stylescombo/plugin.js	(revision 3200)
+++ _source/plugins/stylescombo/plugin.js	(working copy)
@@ -26,8 +26,7 @@
 
 					panel :
 					{
-						css : [ config.contentsCss, editor.skinPath + 'editor.css' ],
-						className : 'cke_skin_default'
+						css : [ config.contentsCss, editor.skinPath + 'editor.css' ]
 					},
 
 					init : function()
Index: _source/skins/default/editor.css
===================================================================
--- _source/skins/default/editor.css	(revision 3200)
+++ _source/skins/default/editor.css	(working copy)
@@ -14,7 +14,7 @@
 @import url("presets.css");
 
 /* Restore the container visibility */
-body .cke_container
+body .cke_skin_default
 {
 	visibility: visible;
 }
Index: _source/skins/default/icons.css
===================================================================
--- _source/skins/default/icons.css	(revision 3200)
+++ _source/skins/default/icons.css	(working copy)
@@ -3,279 +3,279 @@
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
 
-.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: _source/skins/default/mainui.css
===================================================================
--- _source/skins/default/mainui.css	(revision 3200)
+++ _source/skins/default/mainui.css	(working copy)
@@ -36,7 +36,7 @@
 	border: solid 1px #696969;
 }
 
-.cke_skin_default.cke_focus
+.cke_skin_default .cke_focus
 {
 	outline: auto 5px -webkit-focus-ring-color;
 }
Index: _source/skins/default/menu.css
===================================================================
--- _source/skins/default/menu.css	(revision 3200)
+++ _source/skins/default/menu.css	(working copy)
@@ -3,30 +3,30 @@
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
 
-.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;
 	display:block;
 }
 
-.cke_skin_default a.cke_menuitem.cke_disabled
+.cke_skin_default .cke_menuitem a.cke_disabled
 {
 	filter: alpha(opacity=30); /* IE */
 	opacity : 0.3; /* Safari, Opera and Mozilla */
 }
 
-.cke_skin_default a.cke_menuitem .cke_icon
+.cke_skin_default .cke_menuitem .cke_icon
 {
 	background-image: url(icons.gif);
 	background-position: 100px;
@@ -40,8 +40,8 @@
 	opacity: 0.70; /* Safari, Opera and Mozilla */
 }
 
-.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;
 	border: solid 4px #737357;
@@ -49,7 +49,7 @@
 	opacity: 1; /* Safari, Opera and Mozilla */
 }
 
-.cke_skin_default a.cke_menuitem .cke_label
+.cke_skin_default .cke_menuitem .cke_label
 {
 	display:block;
     padding-right: 3px;
@@ -59,8 +59,8 @@
     background-color: #fff;
 }
 
-.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;
 	background-color: #8f8f73;
Index: _source/skins/default/panel.css
===================================================================
--- _source/skins/default/panel.css	(revision 3200)
+++ _source/skins/default/panel.css	(working copy)
@@ -3,7 +3,7 @@
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
 
-.cke_skin_default.cke_panel
+.cke_skin_default .cke_panel
 {
     border: 1px solid #8f8f73;
 	background-color: #fff;
@@ -19,7 +19,7 @@
 }
 
 /* Ideally we would use "inherit here"... but you know... IE :( */
-.cke_skin_default.cke_panel iframe
+.cke_skin_default .cke_panel iframe
 {
 	width: 100%;
 	height: 100%;
@@ -118,8 +118,8 @@
 	margin-bottom: 3px;
 }
 
-.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;
 	height: 135px;
Index: _source/skins/default/presets.css
===================================================================
--- _source/skins/default/presets.css	(revision 3200)
+++ _source/skins/default/presets.css	(working copy)
@@ -4,34 +4,34 @@
 */
 
 /* "Source" button label */
-.cke_skin_default a.cke_button_source .cke_label
+.cke_skin_default .cke_button_source .cke_label
 {
 	display: inline;
 }
 
 /* "Styles" panel size */
-.cke_skin_default.cke_panel.cke_styles
+.cke_skin_default .cke_styles_panel
 {
 	width: 150px;
 	height: 170px;
 }
 
 /* "Format" panel size */
-.cke_skin_default.cke_panel.cke_format
+.cke_skin_default .cke_format_panel
 {
 	width: 150px;
 	height: 170px;
 }
 
 /* "Font" panel size */
-.cke_skin_default.cke_panel.cke_font
+.cke_skin_default .cke_font_panel
 {
 	width: 150px;
 	height: 170px;
 }
 
 /* "Font Size" panel size */
-.cke_skin_default.cke_panel.cke_fontSize
+.cke_skin_default .cke_fontSize_panel
 {
 	height: 170px;
 }
@@ -41,3 +41,9 @@
 {
 	width: 20px;
 }
+
+/* "Font Size" combo width */
+.cke_skin_default .cke_browser_iequirks .cke_fontSize .cke_text
+{
+	width: 32px;
+}
Index: _source/skins/default/richcombo.css
===================================================================
--- _source/skins/default/richcombo.css	(revision 3200)
+++ _source/skins/default/richcombo.css	(working copy)
@@ -2,11 +2,12 @@
 
 .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;
 	-moz-border-radius-topleft: 0;
@@ -15,12 +16,10 @@
 }
 
 /* IE6 only */
-/*\*/
-* html .cke_skin_default .cke_rcombo
+.cke_skin_default cke_browser_ie6 .cke_rcombo
 {
 	float: none;
 }
-/**/ 
 
 .cke_skin_default .cke_rcombo a
 {
@@ -60,119 +59,12 @@
 	border-bottom-left-radius: 3px;
 }
 
-.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;
+	height: 24px;
+	width: 72px;
 }
 
-.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;
-}
-
 .cke_skin_default .cke_rcombo .cke_openbutton
 {
     background-position: center center;
@@ -193,10 +85,16 @@
 	border-bottom-left-radius: 3px;
 }
 
+.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 */
 	opacity: 1; /* Safari, Opera and Mozilla */
@@ -205,7 +103,7 @@
 .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
+.cke_skin_default .cke_rcombo .cke_on .cke_text
 {
 	border-color: #316ac5;
 }
@@ -213,22 +111,22 @@
 .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
+.cke_skin_default .cke_rcombo .cke_on .cke_openbutton
 {
 	border-color: #316ac5;
 	background-color: #dff1ff;
 }
 
-.cke_skin_default .cke_rcombo.cke_on .cke_text
+.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
+.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;
-}
+}
\ No newline at end of file
Index: _source/skins/default/toolbar.css
===================================================================
--- _source/skins/default/toolbar.css	(revision 3200)
+++ _source/skins/default/toolbar.css	(working copy)
@@ -28,7 +28,7 @@
 	height:20px;
 }
 
-.cke_skin_default.cke_rtl .cke_separator
+.cke_skin_default .cke_rtl .cke_separator
 {
 	float:right;
 }
@@ -44,7 +44,8 @@
     *height: 26px;
 }
 
-.cke_skin_default a.cke_button
+.cke_skin_default .cke_button a,
+.cke_skin_default .cke_button a.cke_off
 {
 	border: solid 1px #efefde;
 	background-color: #efefde;
@@ -57,43 +58,59 @@
 	display:block;
 	float: left;
 	height: 18px;
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
 }
 
-.cke_skin_default.cke_rtl a.cke_button
+.cke_skin_default .cke_rtl .cke_button a
 {
 	float: right;
 }
 
-.cke_skin_default a.cke_button.cke_on
+.cke_skin_default .cke_button a.cke_on
 {
+	border: solid 1px #316ac5;
 	background-color: #a3d7ff;
-	border: solid 1px #316ac5;
+	padding-top: 2px;
+	padding-bottom: 2px;
+	padding-left: 4px;
+	padding-right: 4px;
 	filter: alpha(opacity=100); /* IE */
 	opacity: 1; /* Safari, Opera and Mozilla */
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
+	display:block;
+	float: left;
+	height: 18px;
 }
 
-.cke_skin_default a.cke_button.cke_disabled
+.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;
 	border: solid 1px #efefde;
 }
 
-.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;
 	background-color: #dff1ff;
@@ -112,13 +129,13 @@
 	border-radius: 3px;
 }
 
-.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);
 	background-position: 100px;
@@ -130,12 +147,12 @@
 	float: left;
 }
 
-.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;
 	float: left;
@@ -144,7 +161,7 @@
 	padding-top:3px;
 }
 
-.cke_skin_default a.cke_button .cke_buttonarrow
+.cke_skin_default .cke_button .cke_buttonarrow
 {
 	float: left;
 	height: 18px;
@@ -154,7 +171,7 @@
 	background-repeat: no-repeat;
 }
 
-.cke_skin_default.cke_rtl a.cke_button .cke_label
+.cke_skin_default .cke_rtl .cke_button .cke_label
 {
 	float: right;
 }
Index: _source/tests/core/env.html
===================================================================
--- _source/tests/core/env.html	(revision 3200)
+++ _source/tests/core/env.html	(working copy)
@@ -36,6 +36,12 @@
 			assert.isTrue( CKEDITOR.env.isCompatible );
 		},
 
+
+		test_quirks : function()
+		{
+			assert.isFalse( CKEDITOR.env.quirks );
+		},
+
 		name : document.title
 	};
 })() );
Index: _source/themes/default/theme.js
===================================================================
--- _source/themes/default/theme.js	(revision 3200)
+++ _source/themes/default/theme.js	(working copy)
@@ -15,7 +15,16 @@
 				CKEDITOR.env.air ? 'air' :
 				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 {
 		build : function( editor, themePath )
 		{
@@ -56,19 +65,21 @@
 			// bring any evident problem as it seems that tables are treated
 			// 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>' +
 						'<tr', contentsHtml	? '' : ' style="display:none"', '><td id="cke_contents_', name, '" class="cke_contents" style="height:100%">'	, contentsHtml	, '</td></tr>' +
 						'<tr', bottomHtml	? '' : ' style="display:none"', '><td id="cke_bottom_'	, name, '" class="cke_bottom">'		, bottomHtml	, '</td></tr>' +
 					'</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 )
 				container.insertAfter( element );
