Index: _source/skins/office2003/toolbar.css
===================================================================
--- _source/skins/office2003/toolbar.css	(revision 3497)
+++ _source/skins/office2003/toolbar.css	(working copy)
@@ -134,6 +134,13 @@
 	_margin: 3px 1px 1px 1px;
 }
 
+.cke_skin_office2003 .cke_highcontrast .cke_button a,
+.cke_skin_office2003 .cke_highcontrast .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_highcontrast .cke_button a.cke_on .cke_label
+{
+	font-weight: bolder;
+	text-decoration: underline;
+}
+
 .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_highcontrast .cke_button a.cke_disabled,
+.cke_skin_office2003 .cke_browser_ie.cke_highcontrast 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 */
@@ -196,6 +216,22 @@
 	_background-repeat: repeat-x;
 }
 
+.cke_skin_office2003 .cke_highcontrast .cke_button .cke_label
+{
+	display: inline-block;
+}
+
+.cke_skin_office2003 .cke_highcontrast .cke_button .cke_icon
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_accessibility
+{
+	position: absolute;
+	top: -1000000px;
+}
+
 .cke_skin_office2003 .cke_button a:hover .cke_label
 {
 	_background-color: #dff1ff;
@@ -287,6 +323,11 @@
 	float: left;
 }
 
+.cke_skin_office2003 .cke_browser_gecko.cke_highcontrast .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/office2003/richcombo.css
===================================================================
--- _source/skins/office2003/richcombo.css	(revision 3497)
+++ _source/skins/office2003/richcombo.css	(working copy)
@@ -23,6 +23,12 @@
 	opacity: 0.70; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_office2003 .cke_highcontrast .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_highcontrast .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_highcontrast .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_highcontrast .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_office2003 .cke_highcontrast .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/v2/toolbar.css
===================================================================
--- _source/skins/v2/toolbar.css	(revision 3497)
+++ _source/skins/v2/toolbar.css	(working copy)
@@ -110,6 +110,13 @@
 	height: 18px;
 }
 
+.cke_skin_v2 .cke_highcontrast .cke_button a,
+.cke_skin_v2 .cke_highcontrast .cke_button a.cke_off
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+}
+
 .cke_skin_v2 .cke_button a.cke_on
 {
 	border: solid 1px #316ac5;
@@ -118,6 +125,12 @@
 	opacity: 1; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_v2 .cke_highcontrast .cke_button a.cke_on .cke_label
+{
+	font-weight: bolder;
+	text-decoration: underline;
+}
+
 .cke_skin_v2 .cke_button a.cke_disabled,
 .cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled
 {
@@ -127,6 +140,13 @@
 	opacity : 0.3; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_v2 .cke_highcontrast .cke_button a.cke_disabled,
+.cke_skin_v2 .cke_browser_ie.cke_highcontrast 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 */
@@ -158,6 +178,16 @@
 	vertical-align: 3px;
 }
 
+.cke_skin_v2 .cke_highcontrast .cke_button .cke_label
+{
+	display: inline-block;
+}
+
+.cke_skin_v2 .cke_highcontrast .cke_button .cke_icon
+{
+	display: none;
+}
+
 .cke_skin_v2 .cke_accessibility
 {
 	position: absolute;
@@ -242,6 +272,11 @@
 	float: left;
 }
 
+.cke_skin_v2 .cke_browser_gecko.cke_highcontrast .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/skins/v2/richcombo.css
===================================================================
--- _source/skins/v2/richcombo.css	(revision 3497)
+++ _source/skins/v2/richcombo.css	(working copy)
@@ -21,6 +21,12 @@
 	opacity: 0.70; /* Safari, Opera and Mozilla */
 }
 
+.cke_skin_v2 .cke_highcontrast .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_highcontrast .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_highcontrast .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_highcontrast .cke_rcombo .cke_disabled .cke_text,
+.cke_skin_v2 .cke_highcontrast .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/core/editor.js
===================================================================
--- _source/core/editor.js	(revision 3497)
+++ _source/core/editor.js	(working copy)
@@ -270,6 +270,9 @@
 
 				if ( editor.config.autoUpdateElement )
 					attachToForm( editor );
+
+				if ( typeof( CKEDITOR.highContrast ) == 'function' && CKEDITOR.highContrast() )
+					editor.container.getFirst().$.className = CKEDITOR.env.cssClass;
 			});
 	};
 
Index: _source/core/loader.js
===================================================================
--- _source/core/loader.js	(revision 3497)
+++ _source/core/loader.js	(working copy)
@@ -50,6 +50,7 @@
 			'core/env'				: [],
 			'core/event'			: [],
 			'core/focusmanager'		: [],
+			'core/highcontrast' 	: [ 'core/dom/element' ],
 			'core/htmlparser'		: [],
 			'core/htmlparser/comment'	: [ 'core/htmlparser' ],
 			'core/htmlparser/element'	: [ 'core/htmlparser', 'core/htmlparser/fragment' ],
@@ -64,7 +65,7 @@
 			'core/resourcemanager'	: [ 'core/scriptloader', 'core/tools' ],
 			'core/scriptloader'		: [ 'core/dom/element', 'core/env' ],
 			'core/skins'			: [ 'core/imagecacher', 'core/scriptloader' ],
-			'core/themes'			: [ 'core/resourcemanager' ],
+			'core/themes'			: [ 'core/resourcemanager', 'core/highcontrast' ],
 			'core/tools'			: [ 'core/env' ],
 			'core/ui'				: [],
 			'core/xml'				: [ 'core/env' ]
Index: _source/core/highcontrast.js
===================================================================
--- _source/core/highcontrast.js	(revision 0)
+++ _source/core/highcontrast.js	(revision 0)
@@ -0,0 +1,32 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Detects whether the editor is in high contrast mode.
+ */
+
+(function()
+{
+	var imagePath = CKEDITOR.basePath + 'images/spacer.gif';
+	var hcDetect;
+
+	CKEDITOR.highContrast = function()
+	{
+		if ( !hcDetect )
+		{
+			hcDetect = CKEDITOR.dom.element.createFromHtml( '<div style="width:0px;height:0px'
+				+ ';position:absolute;top:-1000000px;left:-1000000px'
+				+ ';background-image:url(' + imagePath + ')"></div>', CKEDITOR.document );
+			hcDetect.appendTo( CKEDITOR.document.getBody() );
+		}
+
+		var retval = ( hcDetect.getComputedStyle( 'background-image' ) == 'none' );
+
+		if ( retval )
+			CKEDITOR.env.cssClass += ' cke_highcontrast';
+
+		return ( CKEDITOR.highContrast = retval );
+	};
+})();

