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 += ' <a href="#" class="sortheader" onclick="ts_resortTable(this);return false;"><span class="sortarrow"><img src="'+ ts_image_path + ts_image_none + '" alt="↓"/></span></a>'; --- > var cellClass = " " + cell.className + " "; > if (cellClass.indexOf(" unsortable ") == -1) { > if (cellClass.indexOf(" sortreverse ") == -1) > cell.innerHTML += ' <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 += ' <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="↓"/>'; --- > 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="↑"/>'; --- > 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="↓"/>'; --- > 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