Index: wikibits.js =================================================================== --- wikibits.js (revision 40285) +++ wikibits.js (working copy) @@ -598,27 +598,50 @@ // Skip the first row if that's where the headings are var rowStart = (table.tHead && table.tHead.rows.length > 0 ? 0 : 1); - var itm = ""; - for (var i = rowStart; i < table.rows.length; i++) { - if (table.rows[i].cells.length > column) { - itm = ts_getInnerText(table.rows[i].cells[column]); - itm = itm.replace(/^[\s\xa0]+/, "").replace(/[\s\xa0]+$/, ""); - if (itm != "") break; + var sortfn = ts_sort_caseinsensitive; + var sortClass = ('' + td.className + '').match(/(sort\-\w+)/); + if (sortClass) { + var sortOrder = sortClass[0].replace('sort-', ''); + switch (sortOrder) { + case ('numeric'): + sortfn = ts_sort_numeric; + break; + case ('alphanum'): + sortfn = ts_sort_caseinsensitive; + break; + case ('datelong'): + sortfn = ts_sort_date; + break; + case ('dateshort'): + sortfn = ts_sort_date; + break; + case ('currency'): + sortfn = ts_sort_currency; + break; } + } else { + var itm = ""; + for (var i = rowStart; i < table.rows.length; i++) { + if (table.rows[i].cells.length > column) { + itm = ts_getInnerText(table.rows[i].cells[column]); + itm = itm.replace(/^[\s\xa0]+/, "").replace(/[\s\xa0]+$/, ""); + if (itm != "") break; + } + } + + 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; } - 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 reverse = (span.getAttribute("sortdir") == 'down'); var newRows = new Array();