24,26c24,27
< 	for (var ti = 0; ti < tables.length ; ti++) {
< 		if (!tables[ti].id) {
< 			tables[ti].setAttribute('id','sortable_table_id_'+idnum);
---
> 	for (var ti = 0, n = tables.length; ti < n ; ti++) {
> 		var thisTable = tables[ti];
> 		if (!thisTable.id) {
> 			thisTable.setAttribute('id','sortable_table_id_'+idnum);
29c30
< 		ts_makeSortable(tables[ti]);
---
> 		ts_makeSortable(thisTable);
34d34
< 	var firstRow;
36,40c36,39
< 		if (table.tHead && table.tHead.rows.length > 0) {
< 			firstRow = table.tHead.rows[table.tHead.rows.length-1];
< 		} else {
< 			firstRow = table.rows[0];
< 		}
---
> 		if (table.tHead && table.tHead.rows.length > 0)
> 			var firstRow = table.tHead.rows[table.tHead.rows.length-1];
> 		else
> 			var firstRow = table.rows[0];
45c44
< 	for (var i = 0; i < firstRow.cells.length; i++) {
---
> 	for (var i = 0, n = firstRow.cells.length; i < n; i++) {
47,48c46,51
< 		if ((" "+cell.className+" ").indexOf(" unsortable ") == -1) {
< 			cell.innerHTML += '&nbsp;&nbsp;<a href="#" class="sortheader" onclick="ts_resortTable(this);return false;"><span class="sortarrow"><img src="'+ ts_image_path + ts_image_none + '" alt="&darr;"/></span></a>';
---
> 		var cellClass = " " + cell.className + " ";
> 		if (cellClass.indexOf(" unsortable ") == -1) {
> 			if (cellClass.indexOf(" sortreverse ") == -1)
> 				cell.innerHTML += '&nbsp;&nbsp;<a href="#" class="sortheader" onclick="ts_resortTable(this);return false;"><span class="sortarrow" sortdir="up"><img src="'+ ts_image_path + ts_image_none + '" alt="Sort in ascending order."/></span></a>';
> 			else
> 				cell.innerHTML += '&nbsp;&nbsp;<a href="#" class="sortheader" onclick="ts_resortTable(this);return false;"><span class="sortarrow" sortdir="down"><img src="'+ ts_image_path + ts_image_none + '" alt="Sort in descending order."/></span></a>';
51c54
< 	if (ts_alternate_row_colors) {
---
> 	if (ts_alternate_row_colors)
53d55
< 	}
61d62
< 	var str = "";
62a64
> 	var str = "";
64,65c66
< 	var l = cs.length;
< 	for (var i = 0; i < l; i++) {
---
> 	for (var i = 0, n = cs.length; i < n; i++) {
91,92c92,93
< 	// Work out a type for the column
< 	if (table.rows.length <= 1) return;
---
> 	// Work out a type for the column.
> 	if (table.rows.length <= 2) return;
94c95,96
< 	// Skip the first row if that's where the headings are
---
> 	// Skip the first row if that's where the headings are.
> 	// Note: the THEAD element is not supported on Wikipedia.
96a99
> 	// Remove leading and trailing spaces
98c101
< 	for (var i = rowStart; i < table.rows.length; i++) {
---
> 	for (var i = rowStart, n = table.rows.length; i < n; i++) {
106d108
< 	sortfn = ts_sort_caseinsensitive;
108,116c110,120
< 		sortfn = ts_sort_date;
< 	if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/))
< 		sortfn = ts_sort_date;
< 	if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d$/))
< 		sortfn = ts_sort_date;
< 	if (itm.match(/^[\u00a3$\u20ac]/)) // pound dollar euro
< 		sortfn = ts_sort_currency;
< 	if (itm.match(/^[\d.,]+\%?$/))
< 		sortfn = ts_sort_numeric;
---
> 		var sortfn = ts_sort_date;
> 	else if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/))
> 		var sortfn = ts_sort_date;
> 	else if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d$/))
> 		var sortfn = ts_sort_date;
> 	else if (itm.match(/^[\u00a3$\u20ac]/)) // pound dollar euro
> 		var sortfn = ts_sort_currency;
> 	else if (itm.match(/^[\d.,]+\%?$/))
> 		var sortfn = ts_sort_numeric;
> 	else
> 		var sortfn = ts_sort_caseinsensitive;
118c122
< 	var reverse = (span.getAttribute("sortdir") == 'down');
---
> 	var reverse = (span.getAttribute("sortdir") == "down");
120,121c124,125
< 	var newRows = new Array();
< 	for (var j = rowStart; j < table.rows.length; j++) {
---
> 	var newRows = [];
> 	for (var j = rowStart, n = table.rows.length; j < n; j++) {
126c130
< 		newRows[newRows.length] = new Array(row, keyText, oldIndex);
---
> 		newRows[newRows.length] = [row, keyText, oldIndex];
131d134
< 	var arrowHTML;
133c136
< 			arrowHTML = '<img src="'+ ts_image_path + ts_image_down + '" alt="&darr;"/>';
---
> 			span.innerHTML = '<img src="' + ts_image_path + ts_image_down + '" alt="Sort in ascending order."/>';
137c140
< 			arrowHTML = '<img src="'+ ts_image_path + ts_image_up + '" alt="&uarr;"/>';
---
> 			span.innerHTML = '<img src="' + ts_image_path + ts_image_up + '" alt="Sort in descending order."/>';
143,144c146,147
< 	for (var i = 0; i < newRows.length; i++) {
< 		if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") == -1)
---
> 	for (var i = 0, n = newRows.length; i < n; i++) {
> 		if ((" " + newRows[i][0].className + " ").indexOf(" sortbottom ") == -1)
148,149c151,152
< 	for (var i = 0; i < newRows.length; i++) {
< 		if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") != -1)
---
> 	for (var i = 0, n = newRows.length; i < n; i++) {
> 		if ((" " + newRows[i][0].className + " ").indexOf(" sortbottom ") != -1)
155,156c158,169
< 	for (var i = 0; i < spans.length; i++) {
< 		spans[i].innerHTML = '<img src="'+ ts_image_path + ts_image_none + '" alt="&darr;"/>';
---
> 	for (var i = 0, n = spans.length; i < n; i++) {
> 		var thisSpan = spans[i];
> 		if (thisSpan != span) {
> 			var cellClass = " " + thisSpan.parentNode.parentNode.className + " ";
> 			if (cellClass.indexOf(" sortreverse ") == -1) {
> 				thisSpan.setAttribute("sortdir","up");
> 				thisSpan.innerHTML = '<img src="' + ts_image_path + ts_image_none + '" alt="Sort in ascending order."/>';
> 			} else {
> 				thisSpan.setAttribute("sortdir","down");
> 				thisSpan.innerHTML = '<img src="' + ts_image_path + ts_image_none + '" alt="Sort in descending order."/>';
> 			}
> 		}
158d170
< 	span.innerHTML = arrowHTML;
183c195
< 		if (ts_europeandate == false) {
---
> 		if (ts_europeandate == false)
185c197
< 		} else {
---
> 		else
187d198
< 		}
190c201
< 		if (parseInt(yr) < 50) { 
---
> 		if (parseInt(yr) < 50) 
192c203
< 		} else { 
---
> 		else
194,195c205
< 		}
< 		if (ts_europeandate == true) {
---
> 		if (ts_europeandate == true)
197c207
< 		} else {
---
> 		else
199d208
< 		}
242c251
< 	for (var i = 0; i < tableBodies.length; i++) {
---
> 	for (var i = 0, n = tableBodies.length; i < n; i++) {
247c256
< 		for (var j = 0; j < tableRows.length; j++) {
---
> 		for (var j = 0, o = tableRows.length; j < o; j++) {
251,253c260,263
< 			for (var k = 0; k < oldClasses.length; k++) {
< 				if (oldClasses[k] != "" && oldClasses[k] != "even" && oldClasses[k] != "odd")
< 					newClassName += oldClasses[k] + " ";
---
> 			for (var k = 0, p = oldClasses.length; k < p; k++) {
> 				var thisClass = oldClasses[k];
> 				if (thisClass != "" && thisClass != "even" && thisClass != "odd")
> 					newClassName += thisClass + " ";
262c272
<  */
---
>  */
\ No newline at end of file