Index: wikibits.js
===================================================================
--- wikibits.js	(revision 40285)
+++ wikibits.js	(working copy)
@@ -607,17 +607,18 @@
 		}
 	}
 
-	sortfn = ts_sort_caseinsensitive;
 	if (itm.match(/^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/))
-		sortfn = ts_sort_date;
-	if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/))
-		sortfn = ts_sort_date;
-	if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d$/))
-		sortfn = ts_sort_date;
-	if (itm.match(/^[\u00a3$\u20ac]/)) // pound dollar euro
-		sortfn = ts_sort_currency;
-	if (itm.match(/^[\d.,]+\%?$/))
-		sortfn = ts_sort_numeric;
+		var sortfn = ts_sort_date;
+	else if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/))
+		var sortfn = ts_sort_date;
+	else if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d$/))
+		var sortfn = ts_sort_date;
+	else if (itm.match(/^[\u00a3$\u20ac]/)) // pound dollar euro
+		var sortfn = ts_sort_currency;
+	else if (itm.match(/^[+-]?(?:\d{1,3}(?:\,\d{3})*)*\.?\d*(?:[eE][+-]?\d+(?:\,\d{3})*)?[%\u00b0\u00bc\u00bd\u00be]?$/) && !itm.match(/^[eE]/))
+		var sortfn = ts_sort_numeric;
+	else
+		var sortfn = ts_sort_caseinsensitive;
 
 	var reverse = (span.getAttribute("sortdir") == 'down');
 
@@ -707,8 +708,9 @@
 
 function ts_parseFloat(num) {
 	if (!num) return 0;
-	num = parseFloat(num.replace(/,/g, ""));
-	return (isNaN(num) ? 0 : num);
+	var div = /%$/.test(num) ? 100 : 1;
+	num = parseFloat(num.replace(/\u00bc/g, '.25').replace(/\u00bd/g, '.5').replace(/\u00be/g, '.75').replace(/\u00b0/g, '').replace(/%/g, '').replace(/,/g, ''));
+	return (isNaN(num) ? 0 : (num/div));
 }
 
 function ts_sort_date(a,b) {
