--- wikibits_original.js	2008-11-25 18:54:22.000000000 +0100
+++ wikibits.js	2008-11-25 19:06:03.000000000 +0100
@@ -433,8 +433,21 @@
 	From http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
 */
 function getElementsByClassName(oElm, strTagName, oClassNames){
-	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
 	var arrReturnElements = new Array();
+	if( typeof(oElm.getElementsByClassName)  == "function" )
+	{
+		/* Use a native implementation where possible FF3, Saf3.2, Opera 9.5 */
+		var arrNativeReturn = oElm.getElementsByClassName( oClassNames );
+		if( strTagName == "*" )
+			return arrNativeReturn;
+		for( var h=0; h<arrNativeReturn.length; h++ )
+		{
+			if( arrNativeReturn[h].tagName.toLowerCase() == strTagName.toLowerCase() )
+				arrReturnElements[arrReturnElements.length] = arrNativeReturn[h];
+		}
+		return arrReturnElements;
+	}
+	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
 	var arrRegExpClassNames = new Array();
 	if(typeof oClassNames == "object"){
 		for(var i=0; i<oClassNames.length; i++){
