Index: /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/tool/Compatibility.java
===================================================================
--- /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/tool/Compatibility.java	(revision 2132)
+++ /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/tool/Compatibility.java	(revision 2133)
@@ -35,9 +35,6 @@
 	/**
 	 * Checks if a browser's user agent string is compatible for the FCKeditor.
-	 * <br />
-	 * Adapted from:
-	 * http://dev.fckeditor.net/browser/FCKeditor/releases/stable/fckeditor.php
 	 * 
-	 * @param userAgentString
+	 * @param userAgentStr
 	 * @return <code>true</code> if compatible otherwise <code>false</code>
 	 */
@@ -45,31 +42,25 @@
 		if (Utils.isEmpty(userAgentString))
 			return false;
-
-		float version;
+		
+		String userAgentStr = userAgentString.toLowerCase();
 
 		// IE 5.5+, check special keys like 'Opera' and 'mac', because there are some
 		// other browsers, containing 'MSIE' in there agent string!
-		if (userAgentString.indexOf("Opera") < 0 && userAgentString.indexOf("mac") < 0) {
-			version = getBrowserVersion(userAgentString, ".*MSIE ([\\d]+.[\\d]+).*");
-			if (version != -1f && version >= 5.5f)
+		if (userAgentStr.indexOf("opera") < 0 && userAgentStr.indexOf("mac") < 0) {
+			if (getBrowserVersion(userAgentStr, ".*msie ([\\d]+.[\\d]+).*") >= 5.5f)
 				return true;
 		}
-
-		// for mozilla only, because all firefox versions are supported
-		version = getBrowserVersion(userAgentString, ".*Gecko/([\\d]+).*");
-		if (version != -1f && version >= 20030210f)
+		
+		// for all gecko based browsers
+		if (getBrowserVersion(userAgentStr, ".*rv:([\\d]+.[\\d]+).*") > 1.7f)
 			return true;
-
+		
 		// Opera 9.5+
-		version = getBrowserVersion(userAgentString, "Opera/([\\d]+.[\\d]+).*");
-		if (version != -1f && version >= 9.5f)
-			return true;
-		version = getBrowserVersion(userAgentString, ".*Opera ([\\d]+.[\\d]+)");
-		if (version != -1f && version >= 9.5f)
+		if (getBrowserVersion(userAgentStr, "opera/([\\d]+.[\\d]+).*") >= 9.5f
+				|| getBrowserVersion(userAgentStr, ".*opera ([\\d]+.[\\d]+)") >= 9.5f)
 			return true;
 
 		// Safari 3+
-		version = getBrowserVersion(userAgentString, ".*AppleWebKit/([\\d]+).*");
-		if (version != -1f && version >= 522f)
+		if (getBrowserVersion(userAgentStr, ".*applewebkit/([\\d]+).*") >= 522f)
 			return true;
 
Index: /FCKeditor.Java/trunk/java-core/src/test/java/net/fckeditor/tool/CompatibilityTest.java
===================================================================
--- /FCKeditor.Java/trunk/java-core/src/test/java/net/fckeditor/tool/CompatibilityTest.java	(revision 2132)
+++ /FCKeditor.Java/trunk/java-core/src/test/java/net/fckeditor/tool/CompatibilityTest.java	(revision 2133)
@@ -86,4 +86,9 @@
 	    assertTrue(Compatibility.check("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12"));
     }
+	
+	@Test
+	public void testFirefox30Linux() throws Exception {
+		assertTrue(Compatibility.check("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008040318 Firefox/3.0pre (Swiftfox)"));
+	}
 
 	@Test
@@ -111,3 +116,8 @@
 		assertTrue(Compatibility.check("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 9.50"));   
     }
+	
+	@Test
+	public void testEpaphany220Linux() throws Exception {
+		assertTrue(Compatibility.check("Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b3) Gecko Epiphany/2.20"));
+	}
 }
