View difference between Paste ID: ukGBB7YY and q9hBqNxy
SHOW: | | - or go back to the newest paste.
1
javascript: function toArray(c) {
2
 var a, k;
3
 a = new Array;
4
 for (k = 0; k < c.length; ++k) a[k] = c[k];
5
 return a;
6
}
7
8
function insAtTop(par, child) {
9
 if (par.childNodes.length) par.insertBefore(child, par.childNodes[0]);
10
 else par.appendChild(child);
11
}
12
13
function countCols(tab) {
14
 var nCols, i;
15
 nCols = 0;
16
 for (i = 0; i < tab.rows.length; ++i)
17
  if (tab.rows[i].cells.length > nCols) nCols = tab.rows[i].cells.length;
18
 return nCols;
19
}
20
21
function makeHeaderLink(tableNo, colNo, ord) {
22
 var link;
23
 link = document.createElement('a');
24
 link.href = 'javascript:sortTable(' + tableNo + ',' + colNo + ',' + ord + ');';
25
 link.appendChild(document.createTextNode((ord > 0) ? 'a' : 'd'));
26
 return link;
27
}
28
29
function makeHeader(tableNo, nCols) {
30
 var header, headerCell, i;
31
 header = document.createElement('tr');
32
 for (i = 0; i < nCols; ++i) {
33
  headerCell = document.createElement('td');
34
  headerCell.appendChild(makeHeaderLink(tableNo, i, 1));
35
  headerCell.appendChild(document.createTextNode('/'));
36
  headerCell.appendChild(makeHeaderLink(tableNo, i, -1));
37
  header.appendChild(headerCell);
38
 }
39
 return header;
40
}
41
g_tables = toArray(document.getElementsByTagName('table'));
42
if (!g_tables.length) alert("This page doesn't contain any tables.");
43
(function() {
44
 var j, thead;
45
 for (j = 0; j < g_tables.length; ++j) {
46
  thead = g_tables[j].createTHead();
47
  insAtTop(thead, makeHeader(j, countCols(g_tables[j])))
48
 }
49
})();
50
51
function compareRows(a, b) {
52
 if (a.sortKey == b.sortKey) return 0;
53
 return (a.sortKey < b.sortKey) ? g_order : -g_order;
54
}
55
56
function sortTable(tableNo, colNo, ord) {
57
 var table, rows, nR, bs, i, j, temp;
58
 g_order = ord;
59
 g_colNo = colNo;
60
 table = g_tables[tableNo];
61
 rows = new Array();
62
 nR = 0;
63
 bs = table.tBodies;
64
 for (i = 0; i < bs.length; ++i)
65
  for (j = 0; j < bs[i].rows.length; ++j) {
66
   rows[nR] = bs[i].rows[j];
67
   temp = rows[nR].cells[g_colNo];
68
   if (temp) rows[nR].sortKey = temp.innerHTML;
69
   else rows[nR].sortKey = "";
70
   ++nR;
71
  }
72
 rows.sort(compareRows);
73
 for (i = 0; i < rows.length; ++i) insAtTop(table.tBodies[0], rows[i]);
74
}