Index: /FCKeditor/trunk/editor/_source/classes/fcktoolbarbuttonui.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fcktoolbarbuttonui.js	(revision 743)
+++ /FCKeditor/trunk/editor/_source/classes/fcktoolbarbuttonui.js	(revision 744)
@@ -69,4 +69,24 @@
 	if ( FCKBrowserInfo.IsGecko )
 		 oMainElement.onmousedown	= FCKTools.CancelEvent ;
+
+	oMainElement.onmouseover = function()
+	{
+		if ( this._FCKState == FCK_TRISTATE_OFF )
+			this.className = 'TB_Button_Off_Over' ;
+		else if ( this._FCKState == FCK_TRISTATE_ON )
+			this.className = 'TB_Button_On_Over' ;
+	}
+	oMainElement.onmouseout = function()
+	{
+		if ( this._FCKState == FCK_TRISTATE_OFF )
+			this.className = 'TB_Button_Off' ;
+		else if ( this._FCKState == FCK_TRISTATE_ON )
+			this.className = 'TB_Button_On' ;
+	}
+	oMainElement.onclick = function()
+	{
+		if ( this._FCKButton.OnClick && this._FCKState != FCK_TRISTATE_DISABLED )
+			this._FCKButton.OnClick( this._FCKButton ) ;
+	}
 
 	this.ChangeState( this.State, true ) ;
@@ -140,28 +160,16 @@
 		case FCK_TRISTATE_OFF :
 			e.className		= 'TB_Button_Off' ;
-			e.onmouseover	= FCKToolbarButton_OnMouseOverOff ;
-			e.onmouseout	= FCKToolbarButton_OnMouseOutOff ;
-			e.onclick		= FCKToolbarButton_OnClick ;
-
 			break ;
 
 		case FCK_TRISTATE_ON :
 			e.className		= 'TB_Button_On' ;
-			e.onmouseover	= FCKToolbarButton_OnMouseOverOn ;
-			e.onmouseout	= FCKToolbarButton_OnMouseOutOn ;
-			e.onclick		= FCKToolbarButton_OnClick ;
-
 			break ;
 
 		case FCK_TRISTATE_DISABLED :
 			e.className		= 'TB_Button_Disabled' ;
-			e.onmouseover	= null ;
-			e.onmouseout	= null ;
-			e.onclick		= null ;
-
 			break ;
 	}
 
-	this.State = newState ;
+	this.State = e._FCKState = newState ;
 }
 
@@ -173,32 +181,4 @@
 		this.MainElement = null ;
 	}
-}
-
-// Event Handlers.
-
-function FCKToolbarButton_OnMouseOverOn()
-{
-	this.className = 'TB_Button_On_Over' ;
-}
-
-function FCKToolbarButton_OnMouseOutOn()
-{
-	this.className = 'TB_Button_On' ;
-}
-
-function FCKToolbarButton_OnMouseOverOff()
-{
-	this.className = 'TB_Button_Off_Over' ;
-}
-
-function FCKToolbarButton_OnMouseOutOff()
-{
-	this.className = 'TB_Button_Off' ;
-}
-
-function FCKToolbarButton_OnClick( e )
-{
-	if ( this._FCKButton.OnClick )
-		this._FCKButton.OnClick( this._FCKButton ) ;
 }
 
