Index: /FCKeditor/trunk/fckeditor.cfc
===================================================================
--- /FCKeditor/trunk/fckeditor.cfc	(revision 889)
+++ /FCKeditor/trunk/fckeditor.cfc	(revision 890)
@@ -121,4 +121,22 @@
 			sBrowserVersion = mid( sAgent, stResult.pos[2], stResult.len[2] );
 			return ( sBrowserVersion GTE 20030210 );
+		}
+	}
+	else if( find( "opera/", sAgent ) )
+	{
+		// try to extract Opera version
+		stResult = reFind( "opera/([0-9]+\.[0-9]+)", sAgent, 1, true );
+		if( arrayLen( stResult.pos ) eq 2 )
+		{
+			return ( mid( sAgent, stResult.pos[2], stResult.len[2] ) gte 9.5);
+		}
+	}
+	else if( find( "applewebkit", sAgent ) )
+	{
+		// try to extract Gecko version date
+		stResult = reFind( "applewebkit/([0-9]+)", sAgent, 1, true );
+		if( arrayLen( stResult.pos ) eq 2 )
+		{
+			return ( mid( sAgent, stResult.pos[2], stResult.len[2] ) gte 522 );
 		}
 	}
Index: /FCKeditor/trunk/fckeditor.cfm
===================================================================
--- /FCKeditor/trunk/fckeditor.cfm	(revision 889)
+++ /FCKeditor/trunk/fckeditor.cfm	(revision 890)
@@ -80,4 +80,24 @@
 			sBrowserVersion = mid( sAgent, stResult.pos[2], stResult.len[2] );
 			if( sBrowserVersion GTE 20030210 )
+				isCompatibleBrowser = true;
+		}
+	}
+	else if( find( "opera/", sAgent ) )
+	{
+		// try to extract Opera version
+		stResult = reFind( "opera/([0-9]+\.[0-9]+)", sAgent, 1, true );
+		if( arrayLen( stResult.pos ) eq 2 )
+		{
+			if ( mid( sAgent, stResult.pos[2], stResult.len[2] ) gte 9.5)
+				isCompatibleBrowser = true;
+		}
+	}
+	else if( find( "applewebkit", sAgent ) )
+	{
+		// try to extract Gecko version date
+		stResult = reFind( "applewebkit/([0-9]+)", sAgent, 1, true );
+		if( arrayLen( stResult.pos ) eq 2 )
+		{
+			if( mid( sAgent, stResult.pos[2], stResult.len[2] ) gte 522 )
 				isCompatibleBrowser = true;
 		}
