<HTML>
<HEAD>
<TITLE>Sorted table</TITLE>
</HEAD>
<BODY>
<P> </P>
<script language="javascript">
var gOrder, gRow, gRowMax
// Step 1: Set up the columns
var colName = 0, colPhone = 1, colMax = 2
// Step 2: Constructor
function Row (sName, sPhone)
{
this.info = Array (colMax)
this.info[colName] = sName
this.info[colPhone] = sPhone
}
// Step 3: Set up the comparison routine
function RowCompare (lrow, rrow)
{
var lhs, rhs
lhs = gRow[lrow]
rhs = gRow[rrow]
// Names ascending
if (lhs.info[colName] < rhs.info[colName])
return 1
if (lhs.info[colName] > rhs.info[colName])
return 0
// Phones descending
if (lhs.info[colPhone] > rhs.info[colPhone])
return 1
return 0
}
// Step 4: fill in the data and that's it
function TableCreate ()
{
gRow = Array (10)
gRowMax = 0
gRow[gRowMax++] = new Row ("Mum", "1234")
gRow[gRowMax++] = new Row ("Dad", "5678")
gRow[gRowMax++] = new Row ("Aunt Sam", "9012")
gRow[gRowMax++] = new Row ("Uncle Luck", "3456")
gRow[gRowMax++] = new Row ("Uncle David", "7890")
gRow[gRowMax++] = new Row ("Dad", "5778")
gRow[gRowMax++] = new Row ("Dad", "5578")
}
// Display the table - don't touch
function TableDisp ()
{
var i, c, cell
document.writeln ("<table>")
for (i = 0; i < gRowMax; i++)
{
document.write ("<tr>")
cell = gOrder[i]
for (c = 0; c < colMax; c++)
document.write ("<td>" + gRow[cell].info[c] + "</td>")
document.write ("</tr>")
}
document.writeln ("</table>")
}
// Sort the table using selection sort - don't touch
function TableSort ()
{
var i, j, temp
gOrder = Array (gRowMax)
for (i = 0; i < gRowMax; i++)
gOrder[i] = i
for (i = 0; i < (gRowMax - 1); i++)
{
for (j = i + 1; j < gRowMax; j++)
{
if (RowCompare (gOrder[i], gOrder[j]) == 0)
{
temp = gOrder[i]
gOrder[i] = gOrder[j]
gOrder[j] = temp
}
}
}
}
// Do the works
TableCreate ()
TableSort ()
TableDisp ()
</script>
</BODY>
</HTML>