// // Javascript clientside sorting of table data // 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) { alert ( "cannot" ); 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' + txt + ''; } else str_HTML += '>'; str_HTML += ''; // insert new html into cell cell.innerHTML = str_HTML; } } 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,clid) { // get the span var span; for (var ci=0;ci'; newRows.reverse(); span.setAttribute('sortdir','up'); } else { //ARROW = '  ↓'; 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