--- wikibits.js.r44879	2008-12-22 10:42:26.000000000 +0100
+++ wikibits.js	2008-12-22 10:48:40.000000000 +0100
@@ -637,13 +637,16 @@
 	var reverse = (span.getAttribute("sortdir") == 'down');
 
 	var newRows = new Array();
+	var staticRows = new Array();
 	for (var j = rowStart; j < table.rows.length; j++) {
 		var row = table.rows[j];
-		var keyText = ts_getInnerText(row.cells[column]);
-		var oldIndex = (reverse ? -j : j);
-		var preprocessed = preprocessor( keyText );
+		if((" "+row.className+" ").indexOf(" unsortable ") < 0) {
+			var keyText = ts_getInnerText(row.cells[column]);
+			var oldIndex = (reverse ? -j : j);
+			var preprocessed = preprocessor( keyText );
 
-		newRows[newRows.length] = new Array(row, preprocessed, oldIndex);
+			newRows[newRows.length] = new Array(row, preprocessed, oldIndex);
+		} else staticRows[staticRows.length] = new Array(row, false, j-rowStart);
 	}
 
 	newRows.sort(sortfn);
@@ -658,6 +661,11 @@
 		span.setAttribute('sortdir','down');
 	}
 
+	for(var i in staticRows) {
+		var row = staticRows[i];
+		newRows.splice(row[2], 0, row);
+	}
+
 	// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
 	// don't do sortbottom rows
 	for (var i = 0; i < newRows.length; i++) {
