PageSourceSearch

https://www.gulfcoasthomingclub.com/upload/js/js_table_sort.js

js gulfcoasthomingclub.com collected 2026-10-02 00:30:27 UTC 8,996 bytes, 324 lines download raw bytes

1/*
2
3js_table_sort.js
4
5Modified version of the table-sorting script by Joost de Valk, downloaded from:
6
7	http://yoast.com/articles/sortable-table/
8
9and marked with this copyright notice:
10
11	Copyright (c) 1997-2007 Stuart Langridge, Joost de Valk
12
13and licensed under the MIT License:
14
15	http://www.opensource.org/licenses/mit-license.php
16
17This modified version is also licensed under the MIT License, and is copyright:
18
19	Copyright (c) 1997-2010 Stuart Langridge, Joost de Valk, Anthony DiSante
20
21The modifications consist of removing the arrow images from the sort headers,
22and adjusting some of the classnames.
23
24*/
25
26/* You can change these values */
27var europeandate = false;
28var alternate_row_colors = true;
29
30/* Don't change anything below this unless you know what you're doing */
31addEvent(window, "load", sortables_init);
32
33var SORT_COLUMN_INDEX;
34var thead = false;
35
36function sortables_init() {
37	// Find all tables with class enc_sortable and make them sortable
38	if (!document.getElementsByTagName) return;
39	tbls = document.getElementsByTagName("table");
40	for (ti=0;ti<tbls.length;ti++) {
41		thisTbl = tbls[ti];
42		if (((' '+thisTbl.className+' ').indexOf("enc_sortable") != -1) && (thisTbl.id)) {
43			ts_makeSortable(thisTbl);
44		}
45	}
46}
47
48function ts_makeSortable(t) {
49	if (t.rows && t.rows.length > 0) {
50		if (t.tHead && t.tHead.rows.length > 0) {
51			var firstRow = t.tHead.rows[t.tHead.rows.length-1];
52			thead = true;
53		} else {
54			var firstRow = t.rows[0];
55		}
56	}
57	if (!firstRow) return;
58	
59	// We have a first row: assume it's the header, and make its contents clickable links
60	for (var i=0;i<firstRow.cells.length;i++) {
61		var cell = firstRow.cells[i];
62		var txt = ts_getInnerText(cell);
63		if (cell.className != "enc_unsortable" && cell.className.indexOf("enc_unsortable") == -1) {
64			cell.innerHTML = '<a href="#" class="sortheader" onclick="ts_resortTable(this, '+i+');return false;">'+txt+'<span class="sortarrow"></span></a>';
65		}
66	}
67	if (alternate_row_colors) {
68		alternate(t);
69	}
70}
71
72function ts_getInnerText(el) {
73	if (typeof el == "string") return el;
74	if (typeof el == "undefined") { return el };
75	if (el.innerText) return el.innerText;	//Not needed but it is faster
76	var str = "";
77	
78	var cs = el.childNodes;
79	var l = cs.length;
80	for (var i = 0; i < l; i++) {
81		switch (cs[i].nodeType) {
82			case 1: //ELEMENT_NODE
83				str += ts_getInnerText(cs[i]);
84				break;
85			case 3:	//TEXT_NODE
86				str += cs[i].nodeValue;
87				break;
88		}
89	}
90	return str;
91}
92
93function ts_resortTable(lnk, clid) {
94	var span;
95	for (var ci=0;ci<lnk.childNodes.length;ci++) {
96		if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci];
97	}
98	var td = lnk.parentNode;
99	var column = clid || td.cellIndex;
100	var t = getParent(td,'TABLE');
101	// Work out a type for the column
102	if (t.rows.length <= 1) return;
103	var itm = "";
104	var i = 0;
105	while (itm == "" && i < t.tBodies[0].rows.length) {
106		var itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]);
107		itm = trim(itm);
108		if (itm.substr(0,4) == "<!--" || itm.length == 0) {
109			itm = "";
110		}
111		i++;
112	}
113	if (itm == "") return; 
114	sortfn = ts_sort_caseinsensitive;
115	if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn = ts_sort_date;
116	if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn = ts_sort_date;
117	if (itm.match(/^-?[£$€Û¢´]\d/)) sortfn = ts_sort_numeric;
118	if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) sortfn = ts_sort_numeric;
119	SORT_COLUMN_INDEX = column;
120	var firstRow = new Array();
121	var newRows = new Array();
122	for (k=0;k<t.tBodies.length;k++) {
123		for (i=0;i<t.tBodies[k].rows[0].length;i++) { 
124			firstRow[i] = t.tBodies[k].rows[0][i]; 
125		}
126	}
127	for (k=0;k<t.tBodies.length;k++) {
128		if (!thead) {
129			// Skip the first row
130			for (j=1;j<t.tBodies[k].rows.length;j++) { 
131				newRows[j-1] = t.tBodies[k].rows[j];
132			}
133		} else {
134			// Do NOT skip the first row
135			for (j=0;j<t.tBodies[k].rows.length;j++) { 
136				newRows[j] = t.tBodies[k].rows[j];
137			}
138		}
139	}
140	newRows.sort(sortfn);
141	if (span.getAttribute("sortdir") == 'down') {
142			newRows.reverse();
143			span.setAttribute('sortdir','up');
144	} else {
145			span.setAttribute('sortdir','down');
146	}
147
148	// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
149	// don't do sortbottom rows
150	for (i=0; i<newRows.length; i++) { 
151		if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('enc_sortbottom') == -1))) {
152			t.tBodies[0].appendChild(newRows[i]);
153		}
154	}
155	// do sortbottom rows only
156	for (i=0; i<newRows.length; i++) {
157		if (newRows[i].className && (newRows[i].className.indexOf('enc_sortbottom') != -1)) 
158			t.tBodies[0].appendChild(newRows[i]);
159	}
160	alternate(t);
161}
162
163function getParent(el, pTagName) {
164	if (el == null) {
165		return null;
166	}
166 else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) {
167		return el;
168	} else {
169		return getParent(el.parentNode, pTagName);
170	}
171}
172
173function sort_date(date) {	
174	// y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
175	dt = "00000000";
176	if (date.length == 11) {
177		mtstr = date.substr(3,3);
178		mtstr = mtstr.toLowerCase();
179		switch(mtstr) {
180			case "jan": var mt = "01"; break;
181			case "feb": var mt = "02"; break;
182			case "mar": var mt = "03"; break;
183			case "apr": var mt = "04"; break;
184			case "may": var mt = "05"; break;
185			case "jun": var mt = "06"; break;
186			case "jul": var mt = "07"; break;
187			case "aug": var mt = "08"; break;
188			case "sep": var mt = "09"; break;
189			case "oct": var mt = "10"; break;
190			case "nov": var mt = "11"; break;
191			case "dec": var mt = "12"; break;
192			// default: var mt = "00";
193		}
194		dt = date.substr(7,4)+mt+date.substr(0,2);
195		return dt;
196	} else if (date.length == 10) {
197		if (europeandate == false) {
198			dt = date.substr(6,4)+date.substr(0,2)+date.substr(3,2);
199			return dt;
200		} else {
201			dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
202			return dt;
203		}
204	} else if (date.length == 8) {
205		yr = date.substr(6,2);
206		if (parseInt(yr) < 50) { 
207			yr = '20'+yr; 
208		} else { 
209			yr = '19'+yr; 
210		}
211		if (europeandate == true) {
212			dt = yr+date.substr(3,2)+date.substr(0,2);
213			return dt;
214		} else {
215			dt = yr+date.substr(0,2)+date.substr(3,2);
216			return dt;
217		}
218	}
219	return dt;
220}
221
222function ts_sort_date(a,b) {
223	dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
224	dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
225	
226	if (dt1==dt2) {
227		return 0;
228	}
229	if (dt1<dt2) { 
230		return -1;
231	}
232	return 1;
233}
234function ts_sort_numeric(a,b) {
235	var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
236	aa = clean_num(aa);
237	var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
238	bb = clean_num(bb);
239	return compare_numeric(aa,bb);
240}
241function compare_numeric(a,b) {
242	var a = parseFloat(a);
243	a = (isNaN(a) ? 0 : a);
244	var b = parseFloat(b);
245	b = (isNaN(b) ? 0 : b);
246	return a - b;
247}
248function ts_sort_caseinsensitive(a,b) {
249	aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
250	bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
251	aa = aa ? aa.toLowerCase() : "";
252	bb = bb ? bb.toLowerCase() : "";
253	if (aa==bb) {
254		return 0;
255	}
256	if (aa<bb) {
257		return -1;
258	}
259	return 1;
260}
261function ts_sort_default(a,b) {
262	aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
263	bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
264	if (aa==bb) {
265		return 0;
266	}
267	if (aa<bb) {
268		return -1;
269	}
270	return 1;
271}
272function addEvent(elm, evType, fn, useCapture)
273// addEvent and removeEvent
274// cross-browser event handling for IE5+, NS6 and Mozilla
275// By Scott Andrew
276{
277	if (elm.addEventListener){
278		elm.addEventListener(evType, fn, useCapture);
279		return true;
280	} else if (elm.attachEvent){
281		var r = elm.attachEvent("on"+evType, fn);
282		return r;
283	} else {
284		alert("Handler could not be removed");
285	}
286}
287function clean_num(str) {
288	str = str.replace(new RegExp(/[^-?0-9.]/g),"");
289	return str;
290}
291function trim(s) {
292	return s.replace(/^\s+|\s+$/g, "");
293}
294function alternate(table) {
295	// Take object table and get all it's tbodies.
296	var tableBodies = table.getElementsByTagName("tbody");
297	// Loop through these tbodies
298	for (var i = 0; i < tableBodies.length; i++) {
299		// Take the tbody, and get all it's rows
300		var tableRows = tableBodies[i].getElementsByTagName("tr");
301		// Loop through these rows
302		// Start at 1 because we want to leave the heading row untouched
303		for (var j = 0; j < tableRows.length; j++) {
304			// Check if j is even, and apply classes for both possible results
305			if ( (j % 2) == 0  ) {
306				if ( !(tableRows[j].className.indexOf('odd') == -1) ) {
307					tableRows[j].className = tableRows[j].className.replace('odd', 'even');
308				} else {
309					if ( tableRows[j].className.indexOf('even') == -1 ) {
310						tableRows[j].className += " even";
311					}
312				}
313			} else {
314				if ( !(tableRows[j].className.indexOf('even') == -1) ) {
315					tableRows[j].className = tableRows[j].className.replace('even', 'odd');
316				} else {
317					if ( tableRows[j].className.indexOf('odd') == -1 ) {
318						tableRows[j].className += " odd";
319					}
320				}
321			} 
322		}
323	}
324}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.