/* This script and many more are available free online at The JavaScript Source :: http://javascript.internet.com Created by: Joost de Valk :: http://www.joostdevalk.nl/ */ /* Table sorting script, taken from http://www.kryogenix.org/code/browser/sorttable/ . Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html . Adaptation by Joost de Valk (http://www.joostdevalk.nl/) to add alternating row classes as well. Copyright (c) 1997-2006 Stuart Langridge, Joost de Valk. */ /* Change these values */ var image_path = "/"; // var image_path = "/code/sortable_table/"; var image_up = "arrow-up.gif"; var image_down = "arrow-down.gif"; var image_none = "arrow-none.gif"; /* Don't change anything below this unless you know what you're doing */ addEvent(window, "load", sortables_init); var SORT_COLUMN_INDEX; function sortables_init() { // Find all tables with class sortable and make them sortable if (!document.getElementsByTagName) return; tbls = document.getElementsByTagName("table"); for (ti=0;ti 0) { var firstRow = table.rows[0]; } if (!firstRow) return; // We have a first row: assume it's the header, and make its contents clickable links for (var i=0;i ?'; } } alternate(table); } function ts_getInnerText(el) { if (typeof el == "string") return el; if (typeof el == "undefined") { return el }; 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) { // get the span var span; for (var ci=0;ci'; newRows.reverse(); span.setAttribute('sortdir','up'); } else { ARROW = ' ?'; span.setAttribute('sortdir','down'); } // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones // don't do sortbottom rows for (i=0; i'; } } } span.innerHTML = ARROW; alternate(table); } function getParent(el, pTagName) { if (el == null) { return null; } else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) { // Gecko bug, supposed to be uppercase return el; } else { return getParent(el.parentNode, pTagName); } } function ts_sort_date(a,b) { aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]); bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]); if (aa.length == 10) { dt1 = aa.substr(6,4)+aa.substr(3,2)+aa.substr(0,2); } else { yr = aa.substr(6,2); if (parseInt(yr) < 50) { yr = '20'+yr; } else { yr = '19'+yr; } dt1 = yr+aa.substr(3,2)+aa.substr(0,2); } if (bb.length == 10) { dt2 = bb.substr(6,4)+bb.substr(3,2)+bb.substr(0,2); } else { yr = bb.substr(6,2); if (parseInt(yr) < 50) { yr = '20'+yr; } else { yr = '19'+yr; } dt2 = yr+bb.substr(3,2)+bb.substr(0,2); } if (dt1==dt2) { return 0; } if (dt1