﻿var sorts = new Array(); var currentSort = null; function getSortData(a, b, c, d) { var e = null; for (i = 0; i < sorts.length; i++) { if (sorts[i][0] == a) { e = sorts[i]; break } } if (e == null) { e = new Array(5); e[0] = a; e[1] = b; e[2] = -1; e[3] = c; e[4] = d; sorts.push(e) } return e } function sortTable(a, b, c, d, e) { var f = document.getElementById(a); var g = getSortData(a, b, c, d); g[3] = c; g[4] = d; if (b == g[1]) g[2] = (g[2] == 0 ? 1 : 0); else { g[2] = 0; g[1] = b } document.getElementById(e).value = "" + b + "_" + g[2]; currentSort = g; var h = f.getElementsByTagName("tbody")[0]; var j = h.getElementsByTagName("tr"); var k = new Array(j.length); for (i = 0; i < j.length; i++) { k[i] = j[i].cloneNode(true) } var l = new Array(j.length); for (i = 0; i < j.length; i++) { l[i] = new Array(2); l[i][0] = i; l[i][1] = j[i].getElementsByTagName("td")[b].innerHTML } l = l.sort(customSort); for (i = 0; i < k.length; i++) { h.removeChild(j[0]) } var m = -1; for (i = 0; i < k.length; i++) { m = l[i][0]; h.appendChild(k[m]) } var n = f.getElementsByTagName("th"); for (i = 0; i < n.length; i++) { var o = n[i]; if (o.className == "headerSortUp" || o.className == "headerSortDown") o.className = "headerUnsorted" } document.getElementById(currentSort[4]).className = (currentSort[2] == 0 ? "headerSortUp" : "headerSortDown") } function customSort(a, b) { if (currentSort[3] == "string") return compareString(a, b); else if (currentSort[3] == "integer") return compareNumeric(a, b, 1); else if (currentSort[3] == "percent") return compareNumeric(a, b, 2); else if (currentSort[3] == "float") return compareNumeric(a, b, 3); return 0 } function compareString(a, b) { var c = a[1].toLowerCase(); var d = b[1].toLowerCase(); if (currentSort[2] == 0) return ((c < d) ? -1 : ((c > d) ? 1 : 0)); else return ((d < c) ? -1 : ((d > c) ? 1 : 0)) } function compareNumeric(a, b, c) { var d = 0; var e = 0; var f = a[1]; var g = b[1]; if (f.substring(0, 4).toUpperCase() == "<IMG") f = "-1"; if (g.substring(0, 4).toUpperCase() == "<IMG") g = "-1"; if (a[1] != "") { if (c == 1) d = parseInt(f); if (c == 2) d = parseFloat(f.replace(/%/, "")); if (c == 3) d = parseFloat(f) } if (b[1] != "") { if (c == 1) e = parseInt(g); if (c == 2) e = parseFloat(g.replace(/%/, "")); if (c == 3) e = parseFloat(g) } return (currentSort[2] == 0 ? d - e : e - d) }