/* Table sorting script by Joost de Valk, check it out at http://www.joostdevalk.nl/code/sortable-table/. Based on a script from http://www.kryogenix.org/code/browser/sorttable/. Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html . Copyright (c) 1997-2007 Stuart Langridge, Joost de Valk. Version 1.5.7 -- modified for PmWiki Attachtable by Eemeli Aro */ var arrow_up = ' ▴'; var arrow_down = ' ▾'; var arrow_none = '  '; var SORT_COLUMN_INDEX; var thead = false; if (window.addEventListener) window.addEventListener( 'load', sortables_init, false ); else if (window.attachEvent) window.attachEvent( 'onload', sortables_init ); function sortables_init() { if (!document.getElementsByTagName) return; tbls = document.getElementsByTagName("table"); for (ti=0;ti 0) { if (t.tHead && t.tHead.rows.length > 0) { var firstRow = t.tHead.rows[t.tHead.rows.length-1]; thead = true; } else { var firstRow = t.rows[0]; } } if (!firstRow) return; for (var i=0;i'+txt+''+ arrow_none + ''; } } } function ts_getInnerText(el) { if (typeof el == "string") return el; if (typeof el == "undefined") { return el }; if (el.getAttribute('sortval')) return el.getAttribute('sortval'); if (el.innerText) return el.innerText; //Not needed but it is faster var str = ""; var cs = el.childNodes; var l = cs.length; for (var i = 0; i < l; i++) switch (cs[i].nodeType) { case 1: //ELEMENT_NODE str += ts_getInnerText(cs[i]); break; case 3: //TEXT_NODE str += cs[i].nodeValue; break; } return str; } function ts_resortTable(lnk, clid) { var span; for (var ci=0;ci