Index: _source/core/_bootstrap.js
===================================================================
--- _source/core/_bootstrap.js	(revision 3503)
+++ _source/core/_bootstrap.js	(working copy)
@@ -7,6 +7,27 @@
  * @fileOverview API initialization code.
  */
 
+(function()
+{
+	// Check is High Contrast is active by creating a temporary element with a
+	// background image.
+
+	var testImage = ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 ) ? ( CKEDITOR.basePath + 'images/spacer.gif' ) : 'about:blank';
+
+	var hcDetect = CKEDITOR.dom.element.createFromHtml( 
+		'<div style="width:0px;height:0px;' +
+			'position:absolute;left:-10000px;' +
+			'background-image:url(' + testImage + ')"></div>', CKEDITOR.document );
+
+	hcDetect.appendTo( CKEDITOR.document.getHead() );
+
+	// Update CKEDITOR.env.
+	if ( CKEDITOR.env.hc = ( hcDetect.getComputedStyle( 'background-image' ) == 'none' ) )
+		CKEDITOR.env.cssClass += ' cke_hc';
+
+	hcDetect.remove();
+})();
+
 // Load core plugins.
 CKEDITOR.plugins.load( CKEDITOR.config.corePlugins.split( ',' ), function()
 	{
Index: _source/plugins/colorbutton/plugin.js
===================================================================
--- _source/plugins/colorbutton/plugin.js	(revision 3503)
+++ _source/plugins/colorbutton/plugin.js	(working copy)
@@ -21,7 +21,7 @@
 		{
 			editor.ui.add( name, CKEDITOR.UI_PANELBUTTON,
 				{
-					label : lang.label,
+					label : title,
 					title : title,
 					className : 'cke_button_' + name.toLowerCase(),
 
Index: _source/skins/office2003/dialog.css
===================================================================
--- _source/skins/office2003/dialog.css	(revision 3503)
+++ _source/skins/office2003/dialog.css	(working copy)
@@ -418,6 +418,7 @@
 	background-position: -20px -655px;
 	position: absolute;
 	cursor: pointer;
+	text-align: center;
 	height: 21px;
 	width: 21px;
 	top: 4px;
@@ -426,6 +427,11 @@
 	_background-image: url(images/sprites_ie6.png);
 }
 
+.cke_skin_office2003 .cke_dialog_close_button span
+{
+	display: none;
+}
+
 .cke_skin_office2003 .cke_ltr .cke_dialog_close_button
 {
 	right: 10px;
@@ -592,3 +598,33 @@
 {
 	color: #a0a0a0;
 }
+
+/* High Contrast Mode */
+.cke_skin_office2003 .cke_hc .cke_dialog_title,
+.cke_skin_office2003 .cke_hc .cke_dialog_tabs,
+.cke_skin_office2003 .cke_hc .cke_dialog_contents,
+.cke_skin_office2003 .cke_hc .cke_dialog_footer
+{
+	border-left: 1px solid;
+	border-right: 1px solid;
+}
+
+.cke_skin_office2003 .cke_hc .cke_dialog_title
+{
+	border-top: 1px solid;
+}
+
+.cke_skin_office2003 .cke_hc .cke_dialog_footer
+{
+	border-bottom: 1px solid;
+}
+
+.cke_skin_office2003 .cke_hc .cke_dialog_close_button span
+{
+	display: inline;
+	cursor: pointer;
+	cursor: hand;
+	font-weight: bold;
+	position: relative;
+	top: 3px;
+}
Index: _source/skins/office2003/richcombo.css
===================================================================
--- _source/skins/office2003/richcombo.css	(revision 3503)
+++ _source/skins/office2003/richcombo.css	(working copy)
@@ -23,6 +23,12 @@
 	opacity: 0.70; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_office2003 .cke_hc .cke_rcombo a
+{
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1.0; /* Safari, Opera and Mozilla */
+}
+
 .cke_skin_office2003 .cke_rcombo .cke_label
 {
 	display: inline-block;
@@ -38,6 +44,12 @@
 	_background-repeat: repeat-x;
 }
 
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_label
+{
+	filter: alpha(opacity=100);
+	opacity: 1.0;
+}
+
 .cke_skin_office2003 .cke_rtl .cke_rcombo .cke_label
 {
 	padding-right: 4px;
@@ -171,6 +183,12 @@
 	opacity: 0.3; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_label
+{
+	filter: alpha(opacity=70);
+	opacity: 0.7;
+}
+
 .cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text,
 .cke_skin_office2003 .cke_rcombo .cke_disabled .cke_openbutton
 {
@@ -178,6 +196,13 @@
 	opacity: 0.5; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=80);
+	opacity: 0.8;
+}
+
 .cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text
 {
 	color: #fff;
Index: _source/skins/office2003/toolbar.css
===================================================================
--- _source/skins/office2003/toolbar.css	(revision 3503)
+++ _source/skins/office2003/toolbar.css	(working copy)
@@ -134,6 +134,13 @@
 	_margin: 3px 1px 1px 1px;
 }
 
+.cke_skin_office2003 .cke_hc .cke_button a,
+.cke_skin_office2003 .cke_hc .cke_button a.cke_off
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+}
+
 .cke_skin_office2003 .cke_button a.cke_on
 {
 	border: solid 1px #316ac5;
@@ -144,6 +151,12 @@
 	_margin: 2px 0 0 0;
 }
 
+.cke_skin_office2003 .cke_hc .cke_button a.cke_on
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
 .cke_skin_office2003 .cke_button a.cke_disabled,
 .cke_skin_office2003 .cke_button a:hover.cke_disabled,
 .cke_skin_office2003 .cke_button a:focus.cke_disabled,
@@ -158,6 +171,13 @@
 	_margin: 3px 1px 1px 1px;
 }
 
+.cke_skin_office2003 .cke_hc .cke_button a.cke_disabled,
+.cke_skin_office2003 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled
+{
+	filter: alpha(opacity=60);
+	opacity: 0.6;
+}
+
 .cke_skin_office2003 .cke_button a:hover.cke_on,
 .cke_skin_office2003 .cke_button a:focus.cke_on,
 .cke_skin_office2003 .cke_button a:active.cke_on,	/* IE */
@@ -172,8 +192,20 @@
 	vertical-align: top;
 
 	_margin: 2px 0 0 0;
+	padding: 2px 4px;
 }
 
+.cke_skin_office2003 .cke_hc .cke_button a:hover.cke_on,
+.cke_skin_office2003 .cke_hc .cke_button a:focus.cke_on,
+.cke_skin_office2003 .cke_hc .cke_button a:active.cke_on,	/* IE */
+.cke_skin_office2003 .cke_hc .cke_button a:hover.cke_off,
+.cke_skin_office2003 .cke_hc .cke_button a:focus.cke_off,
+.cke_skin_office2003 .cke_hc .cke_button a:active.cke_off	/* IE */
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
 .cke_skin_office2003 .cke_button .cke_icon
 {
 	background-image: url(icons.png);
@@ -208,6 +240,22 @@
 	_background-image: none;
 }
 
+.cke_skin_office2003 .cke_hc .cke_button .cke_label
+{
+	display: inline-block;
+}
+
+.cke_skin_office2003 .cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_accessibility
+{
+	position: absolute;
+	top: -1000000px;
+}
+
 .cke_skin_office2003 .cke_button .cke_buttonarrow
 {
 	display: inline-block;
@@ -287,6 +335,11 @@
 	float: left;
 }
 
+.cke_skin_office2003 .cke_browser_gecko.cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
 .cke_skin_office2003 .cke_rtl.cke_browser_gecko .cke_toolbar,
 .cke_skin_office2003 .cke_rtl.cke_browser_gecko .cke_button a,
 .cke_skin_office2003 .cke_rtl.cke_browser_gecko .cke_button a.cke_off,
Index: _source/skins/v2/dialog.css
===================================================================
--- _source/skins/v2/dialog.css	(revision 3503)
+++ _source/skins/v2/dialog.css	(working copy)
@@ -412,6 +412,7 @@
 	background-position: -16px -651px;
 	position: absolute;
 	cursor: pointer;
+	text-align: center;
 	height: 20px;
 	width: 20px;
 	top: 5px;
@@ -420,6 +421,11 @@
 	_background-image: url(images/sprites_ie6.png);
 }
 
+.cke_skin_v2 .cke_dialog_close_button span
+{
+	display: none;
+}
+
 .cke_skin_v2 .cke_dialog_close_button:hover
 {
 	background-position: -16px -687px;
@@ -591,3 +597,33 @@
 {
 	color: #a0a0a0;
 }
+
+/* High Contrast Mode */
+.cke_skin_v2 .cke_hc .cke_dialog_title,
+.cke_skin_v2 .cke_hc .cke_dialog_tabs,
+.cke_skin_v2 .cke_hc .cke_dialog_contents,
+.cke_skin_v2 .cke_hc .cke_dialog_footer
+{
+	border-left: 1px solid;
+	border-right: 1px solid;
+}
+
+.cke_skin_v2 .cke_hc .cke_dialog_title
+{
+	border-top: 1px solid;
+}
+
+.cke_skin_v2 .cke_hc .cke_dialog_footer
+{
+	border-bottom: 1px solid;
+}
+
+.cke_skin_v2 .cke_hc .cke_dialog_close_button span
+{
+	display: inline;
+	cursor: pointer;
+	cursor: hand;
+	font-weight: bold;
+	position: relative;
+	top: 3px;
+}
Index: _source/skins/v2/richcombo.css
===================================================================
--- _source/skins/v2/richcombo.css	(revision 3503)
+++ _source/skins/v2/richcombo.css	(working copy)
@@ -21,6 +21,12 @@
 	opacity: 0.70; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_v2 .cke_hc .cke_rcombo a
+{
+	filter: alpha(opacity=100); /* IE */
+	opacity: 1.0; /* Safari, Opera and Mozilla */
+}
+
 .cke_skin_v2 .cke_rcombo .cke_label
 {
 	display: inline-block;
@@ -33,6 +39,12 @@
 	background-color: #f1f1e3;	/* Because of IE6+ClearType */
 }
 
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_label
+{
+	filter: alpha(opacity=100);
+	opacity: 1.0;
+}
+
 .cke_skin_v2 .cke_rtl .cke_rcombo .cke_label
 {
 	padding-right: 4px;
@@ -166,6 +178,12 @@
 	opacity: 0.3; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_label
+{
+	filter: alpha(opacity=70);
+	opacity: 0.7;
+}
+
 .cke_skin_v2 .cke_rcombo .cke_disabled .cke_text,
 .cke_skin_v2 .cke_rcombo .cke_disabled .cke_openbutton
 {
@@ -173,6 +191,13 @@
 	opacity: 0.5; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=80);
+	opacity: 0.8;
+}
+
 .cke_skin_v2 .cke_rcombo .cke_disabled .cke_text
 {
 	color: #fff;
Index: _source/skins/v2/toolbar.css
===================================================================
--- _source/skins/v2/toolbar.css	(revision 3503)
+++ _source/skins/v2/toolbar.css	(working copy)
@@ -110,14 +110,28 @@
 	height: 18px;
 }
 
+.cke_skin_v2 .cke_hc .cke_button a,
+.cke_skin_v2 .cke_hc .cke_button a.cke_off
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+}
+
 .cke_skin_v2 .cke_button a.cke_on
 {
 	border: solid 1px #316ac5;
 	background-color: #a3d7ff;
 	filter: alpha(opacity=100); /* IE */
 	opacity: 1; /* Safari, Opera and Mozilla */
+	padding: 2px 4px;
 }
 
+.cke_skin_v2 .cke_hc .cke_button a.cke_on
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
 .cke_skin_v2 .cke_button a.cke_disabled,
 .cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled
 {
@@ -127,6 +141,13 @@
 	opacity : 0.3; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_v2 .cke_hc .cke_button a.cke_disabled,
+.cke_skin_v2 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled
+{
+	filter: alpha(opacity=60);
+	opacity: 0.6;
+}
+
 .cke_skin_v2 .cke_button a:hover.cke_on,
 .cke_skin_v2 .cke_button a:focus.cke_on,
 .cke_skin_v2 .cke_button a:active.cke_on,	/* IE */
@@ -138,8 +159,20 @@
 	background-color: #dff1ff;
 	filter: alpha(opacity=100); /* IE */
 	opacity: 1; /* Safari, Opera and Mozilla */
+	padding: 2px 4px;
 }
 
+.cke_skin_v2 .cke_hc .cke_button a:hover.cke_on,
+.cke_skin_v2 .cke_hc .cke_button a:focus.cke_on,
+.cke_skin_v2 .cke_hc .cke_button a:active.cke_on,	/* IE */
+.cke_skin_v2 .cke_hc .cke_button a:hover.cke_off,
+.cke_skin_v2 .cke_hc .cke_button a:focus.cke_off,
+.cke_skin_v2 .cke_hc .cke_button a:active.cke_off	/* IE */
+{
+	padding: 0 2px !important;
+	border-width: 3px;
+}
+
 .cke_skin_v2 .cke_button .cke_icon
 {
 	background-image: url(icons.png);
@@ -158,6 +191,16 @@
 	vertical-align: 3px;
 }
 
+.cke_skin_v2 .cke_hc .cke_button .cke_label
+{
+	display: inline-block;
+}
+
+.cke_skin_v2 .cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
 .cke_skin_v2 .cke_accessibility
 {
 	position: absolute;
@@ -242,6 +285,11 @@
 	float: left;
 }
 
+.cke_skin_v2 .cke_browser_gecko.cke_hc .cke_button .cke_icon
+{
+	display: none;
+}
+
 .cke_skin_v2 .cke_rtl.cke_browser_gecko .cke_toolbar,
 .cke_skin_v2 .cke_rtl.cke_browser_gecko .cke_button a,
 .cke_skin_v2 .cke_rtl.cke_browser_gecko .cke_button a.cke_off,
Index: _source/themes/default/theme.js
===================================================================
--- _source/themes/default/theme.js	(revision 3503)
+++ _source/themes/default/theme.js	(working copy)
@@ -99,7 +99,9 @@
 							' cke_', editor.lang.dir, '" style="position:absolute">' +
 							'<div class="%body">' +
 								'<div id="%title#" class="%title"></div>' +
-								'<div id="%close_button#" class="%close_button"></div>' +
+								'<div id="%close_button#" class="%close_button">' +
+									'<span>X</span>' +
+								'</div>' +
 								'<div id="%tabs#" class="%tabs"></div>' +
 								'<div id="%contents#" class="%contents"></div>' +
 								'<div id="%footer#" class="%footer"></div>' +
@@ -124,8 +126,9 @@
 
 			var body = element.getChild( [ 0, 0 ] );
 
-			// Make the Title unselectable.
+			// Make the Title and Close Button unselectable.
 			body.getChild( 0 ).unselectable();
+			body.getChild( 1 ).unselectable();
 
 
 			return {

