|
|
@@ -36,9 +36,9 @@ var thead = false;
|
|
36
|
36
|
function sortables_init() {
|
|
37
|
37
|
// Find all tables with class sortable and make them sortable
|
|
38
|
38
|
if (!document.getElementsByTagName) return;
|
|
39
|
|
- tbls = document.getElementsByTagName("table");
|
|
40
|
|
- for (ti=0;ti<tbls.length;ti++) {
|
|
41
|
|
- thisTbl = tbls[ti];
|
|
|
39
|
+ var tbls = document.getElementsByTagName("table");
|
|
|
40
|
+ for (var ti=0;ti<tbls.length;ti++) {
|
|
|
41
|
+ var thisTbl = tbls[ti];
|
|
42
|
42
|
if (((' '+thisTbl.className+' ').indexOf("sortable") != -1) && (thisTbl.id)) {
|
|
43
|
43
|
ts_makeSortable(thisTbl);
|
|
44
|
44
|
}
|
|
|
@@ -104,7 +104,7 @@ function ts_resortTable(lnk, clid) {
|
|
104
|
104
|
var itm = "";
|
|
105
|
105
|
var i = 1;
|
|
106
|
106
|
while (itm == "" && i < t.tBodies[0].rows.length) {
|
|
107
|
|
- var itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]);
|
|
|
107
|
+ itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]);
|
|
108
|
108
|
itm = trim(itm);
|
|
109
|
109
|
if (itm.substr(0,4) == "<!--" || itm.length == 0) {
|
|
110
|
110
|
itm = "";
|
|
|
@@ -112,7 +112,7 @@ function ts_resortTable(lnk, clid) {
|
|
112
|
112
|
i++;
|
|
113
|
113
|
}
|
|
114
|
114
|
if (itm == "") return;
|
|
115
|
|
- sortfn = ts_sort_caseinsensitive;
|
|
|
115
|
+ var sortfn = ts_sort_caseinsensitive;
|
|
116
|
116
|
if (itm.match(/^\d\d[\/\.-][a-zA-Z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn = ts_sort_date;
|
|
117
|
117
|
if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn = ts_sort_date;
|
|
118
|
118
|
if (itm.match(/^-?[£$€Û¢´]\d/)) sortfn = ts_sort_numeric;
|
|
|
@@ -121,25 +121,26 @@ function ts_resortTable(lnk, clid) {
|
|
121
|
121
|
SORT_COLUMN_INDEX = column;
|
|
122
|
122
|
var firstRow = new Array();
|
|
123
|
123
|
var newRows = new Array();
|
|
124
|
|
- for (k=0;k<t.tBodies.length;k++) {
|
|
125
|
|
- for (i=0;i<t.tBodies[k].rows[0].length;i++) {
|
|
|
124
|
+ for (var k=0;k<t.tBodies.length;k++) {
|
|
|
125
|
+ for (var i=0;i<t.tBodies[k].rows[0].length;i++) {
|
|
126
|
126
|
firstRow[i] = t.tBodies[k].rows[0][i];
|
|
127
|
127
|
}
|
|
128
|
128
|
}
|
|
129
|
|
- for (k=0;k<t.tBodies.length;k++) {
|
|
|
129
|
+ for (var k=0;k<t.tBodies.length;k++) {
|
|
130
|
130
|
if (!thead) {
|
|
131
|
131
|
// Skip the first row
|
|
132
|
|
- for (j=1;j<t.tBodies[k].rows.length;j++) {
|
|
|
132
|
+ for (var j=1;j<t.tBodies[k].rows.length;j++) {
|
|
133
|
133
|
newRows[j-1] = t.tBodies[k].rows[j];
|
|
134
|
134
|
}
|
|
135
|
135
|
} else {
|
|
136
|
136
|
// Do NOT skip the first row
|
|
137
|
|
- for (j=0;j<t.tBodies[k].rows.length;j++) {
|
|
|
137
|
+ for (var j=0;j<t.tBodies[k].rows.length;j++) {
|
|
138
|
138
|
newRows[j] = t.tBodies[k].rows[j];
|
|
139
|
139
|
}
|
|
140
|
140
|
}
|
|
141
|
141
|
}
|
|
142
|
142
|
newRows.sort(sortfn);
|
|
|
143
|
+ var ARROW;
|
|
143
|
144
|
if (span.getAttribute("sortdir") == 'down') {
|
|
144
|
145
|
ARROW = ' <img src="'+ image_path + image_down + '" alt="↓"/>';
|
|
145
|
146
|
newRows.reverse();
|
|
|
@@ -150,7 +151,7 @@ function ts_resortTable(lnk, clid) {
|
|
150
|
151
|
}
|
|
151
|
152
|
// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
|
|
152
|
153
|
// don't do sortbottom rows
|
|
153
|
|
- for (i=0; i<newRows.length; i++) {
|
|
|
154
|
+ for (var i=0; i<newRows.length; i++) {
|
|
154
|
155
|
if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) {
|
|
155
|
156
|
t.tBodies[0].appendChild(newRows[i]);
|
|
156
|
157
|
}
|
|
|
@@ -185,24 +186,25 @@ function getParent(el, pTagName) {
|
|
185
|
186
|
|
|
186
|
187
|
function sort_date(date) {
|
|
187
|
188
|
// y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
|
|
188
|
|
- dt = "00000000";
|
|
|
189
|
+ var dt = "00000000";
|
|
189
|
190
|
if (date.length == 11) {
|
|
190
|
|
- mtstr = date.substr(3,3);
|
|
|
191
|
+ var mtstr = date.substr(3,3);
|
|
191
|
192
|
mtstr = mtstr.toLowerCase();
|
|
|
193
|
+ var mt;
|
|
192
|
194
|
switch(mtstr) {
|
|
193
|
|
- case "jan": var mt = "01"; break;
|
|
194
|
|
- case "feb": var mt = "02"; break;
|
|
195
|
|
- case "mar": var mt = "03"; break;
|
|
196
|
|
- case "apr": var mt = "04"; break;
|
|
197
|
|
- case "may": var mt = "05"; break;
|
|
198
|
|
- case "jun": var mt = "06"; break;
|
|
199
|
|
- case "jul": var mt = "07"; break;
|
|
200
|
|
- case "aug": var mt = "08"; break;
|
|
201
|
|
- case "sep": var mt = "09"; break;
|
|
202
|
|
- case "oct": var mt = "10"; break;
|
|
203
|
|
- case "nov": var mt = "11"; break;
|
|
204
|
|
- case "dec": var mt = "12"; break;
|
|
205
|
|
- // default: var mt = "00";
|
|
|
195
|
+ case "jan": mt = "01"; break;
|
|
|
196
|
+ case "feb": mt = "02"; break;
|
|
|
197
|
+ case "mar": mt = "03"; break;
|
|
|
198
|
+ case "apr": mt = "04"; break;
|
|
|
199
|
+ case "may": mt = "05"; break;
|
|
|
200
|
+ case "jun": mt = "06"; break;
|
|
|
201
|
+ case "jul": mt = "07"; break;
|
|
|
202
|
+ case "aug": mt = "08"; break;
|
|
|
203
|
+ case "sep": mt = "09"; break;
|
|
|
204
|
+ case "oct": mt = "10"; break;
|
|
|
205
|
+ case "nov": mt = "11"; break;
|
|
|
206
|
+ case "dec": mt = "12"; break;
|
|
|
207
|
+ default: mt = "00"; break;
|
|
206
|
208
|
}
|
|
207
|
209
|
dt = date.substr(7,4)+mt+date.substr(0,2);
|
|
208
|
210
|
return dt;
|
|
|
@@ -215,7 +217,7 @@ function sort_date(date) {
|
|
215
|
217
|
return dt;
|
|
216
|
218
|
}
|
|
217
|
219
|
} else if (date.length == 8) {
|
|
218
|
|
- yr = date.substr(6,2);
|
|
|
220
|
+ var yr = date.substr(6,2);
|
|
219
|
221
|
if (parseInt(yr) < 50) {
|
|
220
|
222
|
yr = '20'+yr;
|
|
221
|
223
|
} else {
|
|
|
@@ -233,8 +235,8 @@ function sort_date(date) {
|
|
233
|
235
|
}
|
|
234
|
236
|
|
|
235
|
237
|
function ts_sort_date(a,b) {
|
|
236
|
|
- dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
|
|
237
|
|
- dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
|
|
|
238
|
+ var dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
|
|
|
239
|
+ var dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
|
|
238
|
240
|
|
|
239
|
241
|
if (dt1==dt2) {
|
|
240
|
242
|
return 0;
|
|
|
@@ -252,15 +254,15 @@ function ts_sort_numeric(a,b) {
|
|
252
|
254
|
return compare_numeric(aa,bb);
|
|
253
|
255
|
}
|
|
254
|
256
|
function compare_numeric(a,b) {
|
|
255
|
|
- var a = parseFloat(a);
|
|
256
|
|
- a = (isNaN(a) ? 0 : a);
|
|
257
|
|
- var b = parseFloat(b);
|
|
258
|
|
- b = (isNaN(b) ? 0 : b);
|
|
259
|
|
- return a - b;
|
|
|
257
|
+ var numA = parseFloat(a);
|
|
|
258
|
+ numA = (isNaN(numA) ? 0 : numA);
|
|
|
259
|
+ var numB = parseFloat(b);
|
|
|
260
|
+ numB = (isNaN(numB) ? 0 : numB);
|
|
|
261
|
+ return numA - numB;
|
|
260
|
262
|
}
|
|
261
|
263
|
function ts_sort_caseinsensitive(a,b) {
|
|
262
|
|
- aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();
|
|
263
|
|
- bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase();
|
|
|
264
|
+ var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();
|
|
|
265
|
+ var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase();
|
|
264
|
266
|
if (aa==bb) {
|
|
265
|
267
|
return 0;
|
|
266
|
268
|
}
|
|
|
@@ -270,8 +272,8 @@ function ts_sort_caseinsensitive(a,b) {
|
|
270
|
272
|
return 1;
|
|
271
|
273
|
}
|
|
272
|
274
|
function ts_sort_default(a,b) {
|
|
273
|
|
- aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
|
|
274
|
|
- bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
|
|
|
275
|
+ var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
|
|
|
276
|
+ var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
|
|
275
|
277
|
if (aa==bb) {
|
|
276
|
278
|
return 0;
|
|
277
|
279
|
}
|