Index: typo3/sysext/rtehtmlarea/htmlarea/htmlarea.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/htmlarea.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/htmlarea.js	(copie de travail)
@@ -2087,8 +2087,14 @@
 		}
 	}
 	if (newClasses.length == 0) {
-		if (!HTMLArea.is_opera) el.removeAttribute(HTMLArea.is_gecko ? "class" : "className");
-			else el.className = '';
+		if (!HTMLArea.is_opera) {
+			el.removeAttribute("class");
+			if (HTMLArea.is_ie) {
+				el.removeAttribute("className");
+			}
+		} else {
+			el.className = '';
+		}
 	} else {
 		el.className = newClasses.join(" ");
 	}
Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/BlockElements/block-elements.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/plugins/BlockElements/block-elements.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/plugins/BlockElements/block-elements.js	(copie de travail)
@@ -69,7 +69,10 @@
 				}
 			}
 		}
-		this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", (HTMLArea.is_gecko?"class":"className"));
+		this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", "class");
+		if (HTMLArea.is_ie) {
+			this.addAllowedAttribute("className");
+		}
 		this.indentedList = null;
 		
 		/*
@@ -191,7 +194,7 @@
 	},
 	
 	/*
-	 * This function adds an attribute to the array of allowed attributes on inline elements
+	 * This function adds an attribute to the array of attributes allowed on block elements
 	 *
 	 * @param	string	attribute: the name of the attribute to be added to the array
 	 *
Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/DefinitionList/definition-list.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/plugins/DefinitionList/definition-list.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/plugins/DefinitionList/definition-list.js	(copie de travail)
@@ -169,8 +169,13 @@
 				newNode.style.cssText = node.style.cssText;
 			}
 			if (node.className) {
-				newNode.setAttribute("className", node.className);
+				newNode.setAttribute("class", node.className);
+				if (!newNode.className) {
+						// IE before IE8
+					newNode.setAttribute("className", node.className);
+				}
 			} else {
+				newNode.removeAttribute("class");
 				newNode.removeAttribute("className");
 			}
 		}
Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/InlineElements/inline-elements.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/plugins/InlineElements/inline-elements.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/plugins/InlineElements/inline-elements.js	(copie de travail)
@@ -49,7 +49,10 @@
 		if (this.editor.plugins.TextStyle && this.editor.plugins.TextStyle.instance) {
 			this.allowedAttributes = this.editor.plugins.TextStyle.instance.allowedAttributes;
 		} else {
-			this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", (HTMLArea.is_gecko?"class":"className"));
+			this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", "class");
+			if (HTMLArea.is_ie) {
+				this.addAllowedAttribute("className");
+			}
 		}
 			// Getting tags configuration for inline elements
 		if (this.editorConfiguration.buttons.textstyle) {
@@ -336,6 +339,23 @@
 				newElement.setAttribute(this.allowedAttributes[i], attributeValue);
 			}
 		}
+			// In IE, the above fails to update the class and style attributes.
+		if (HTMLArea.is_ie) {
+			if (element.style.cssText) {
+				newElement.style.cssText = element.style.cssText;
+			}
+			if (element.className) {
+				newElement.setAttribute("class", element.className);
+				if (!newElement.className) {
+						// IE before IE8
+					newElement.setAttribute("className", element.className);
+				}
+			} else {
+				newElement.removeAttribute("class");
+					// IE before IE8
+				newElement.removeAttribute("className");
+			}
+		}
 		
 		if (this.tags && this.tags[tagName] && this.tags[tagName].allowedClasses) {
 			if (newElement.className && /\S/.test(newElement.className)) {
Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/Language/language.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/plugins/Language/language.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/plugins/Language/language.js	(copie de travail)
@@ -62,7 +62,10 @@
 			this.allowedAttributes = this.editor.getPluginInstance("BlockElements").allowedAttributes;
 		}
 		if (!this.allowedAttributes) {
-			this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", (HTMLArea.is_gecko?"class":"className"));
+			this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", "class");
+			if (HTMLArea.is_ie) {
+				this.allowedAttributes.push("className");
+			}
 		}
 
 		/*
Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/SelectFont/select-font.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/plugins/SelectFont/select-font.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/plugins/SelectFont/select-font.js	(copie de travail)
@@ -71,7 +71,10 @@
 			this.editor.getPluginInstance("BlockElements").addAllowedAttribute("style");
 		}
 		if (!this.allowedAttributes) {
-			this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", (HTMLArea.is_gecko?"class":"className"), "style");
+			this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", "class", "style");
+			if (HTMLArea.is_ie) {
+				this.allowedAttributes.push("className");
+			}
 		}
 
 		/*
Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/TableOperations/table-operations.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/plugins/TableOperations/table-operations.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/plugins/TableOperations/table-operations.js	(copie de travail)
@@ -1391,8 +1391,14 @@
 				newCell.style.cssText = element.style.cssText;
 			}
 			if (element.className) {
-				newCell.setAttribute("className", element.className);
+				newCell.setAttribute("class", element.className);
+				if (!newCell.className) {
+						// IE before IE8
+					newCell.setAttribute("className", element.className);
+				}
 			} else {
+				newCell.removeAttribute("class");
+					// IE before IE8
 				newCell.removeAttribute("className");
 			}
 		}
Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/TextStyle/text-style.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/plugins/TextStyle/text-style.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/plugins/TextStyle/text-style.js	(copie de travail)
@@ -90,7 +90,10 @@
 		this.REInlineTags = /^(abbr|acronym|b|bdo|big|cite|code|del|dfn|em|i|ins|kbd|q|samp|small|span|strike|strong|sub|sup|tt|u|var)$/;
 		
 			// Allowed attributes on inline elements
-		this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", (HTMLArea.is_gecko?"class":"className"));
+		this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", "class");
+		if (HTMLArea.is_ie) {
+			this.addAllowedAttribute("className");
+		}
 		
 		/*
 		 * Registering plugin "About" information
Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/TYPO3Color/typo3color.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/plugins/TYPO3Color/typo3color.js	(révision 5258)
+++ typo3/sysext/rtehtmlarea/htmlarea/plugins/TYPO3Color/typo3color.js	(copie de travail)
@@ -59,7 +59,10 @@
 			this.editor.plugins.BlockElements.instance.addAllowedAttribute("style");
 		}
 		if (!this.allowedAttributes) {
-			this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", (HTMLArea.is_gecko?"class":"className"), "style");
+			this.allowedAttributes = new Array("id", "title", "lang", "xml:lang", "dir", "class", "style");
+			if (HTMLArea.is_ie) {
+				this.allowedAttributes.push("className");
+			}
 		}
 
 		/*
