// http://javascript.internet.com/forms/sort-data-table.html

function sortTable(col, tableToSortName)
{
	var iCurCell = col + 4;
	var tableToSort = document.getElementById(tableToSortName);
	var totalRows = tableToSort.rows.length;
	var bSort = 0;
	var colArray = new Array();
	var col1Array = new Array();
	var col2Array = new Array();
	var col3Array = new Array();
	var col4Array = new Array();
	var url1Array = new Array();
	var url2Array = new Array();
	var oldIndex = new Array();
	var indexArray = new Array();
	var bArray = new Array();
	var newRow;
	var newCell;
	var i;
	var c;
	var j;
	var id;
	var cellText;
	
	var lnk = document.getElementById('lnkStory1Row1');
	var td = document.getElementById('tdStory1Row1Col2');
	
	// ** POPULATE THE ARRAY colArray WITH CONTENTS OF THE COLUMN SELECTED
	for (i=1; i < tableToSort.tBodies[0].rows.length; i++)
	{	
	
		for (c=0; c<4; c++)
		{
		    switch (c)
		    {
				case 0:
					id = tableToSortName;
					id = id.replace('tbl', 'lnk') + 'Row' + i;
					var lnk = document.getElementById(id);
					cellText = lnk.innerHTML;
					col1Array[i - 1] = cellText;
					url1Array[i - 1] = lnk.href;
					break;
					
				case 1:
					id = tableToSortName;
					id = id.replace('tblStory', 'lnkAuthor') + 'Row' + i;
					var lnk = document.getElementById(id);
					cellText = lnk.innerHTML;
					col2Array[i - 1] = cellText;
					url2Array[i - 1] = lnk.href;
					break;
					
				case 2:
					id = tableToSortName;
					id = id.replace('tbl', 'td') + 'Row' + i + 'Col' + (c + 1);
					var td = document.getElementById(id);
					cellText = trim(td.innerHTML);
					col3Array[i - 1] = cellText;
					break;
					
				case 3:
					id = tableToSortName;
					id = id.replace('tbl', 'td') + 'Row' + i + 'Col' + (c + 1);
					var td = document.getElementById(id);
					cellText = trim(td.innerHTML);
					col4Array[i - 1] = cellText;
					break;
		    }
		}
		
		switch (col)
		{
			case 0:
				colArray[i - 1] = col1Array[i - 1].toUpperCase() +
								col2Array[i - 1].toUpperCase() +
								col3Array[i - 1].toUpperCase() +
								col4Array[i - 1].toUpperCase();
				break;

			case 1:
				colArray[i - 1] = col2Array[i - 1].toUpperCase() +
								col1Array[i - 1].toUpperCase() +
								col3Array[i - 1].toUpperCase() +
								col4Array[i - 1].toUpperCase();
				break;

			case 2:
				colArray[i - 1] = col3Array[i - 1].toUpperCase() +
								col1Array[i - 1].toUpperCase() +
								col2Array[i - 1].toUpperCase() +
								col4Array[i - 1].toUpperCase();
				break;

			case 3:
				colArray[i - 1] = col4Array[i - 1].toUpperCase() +
								col1Array[i - 1].toUpperCase() +
								col2Array[i - 1].toUpperCase() +
								col3Array[i - 1].toUpperCase();
				break;			
		}
	}
	// ** COPY ARRAY FOR COMPARISON AFTER SORT
	for (i=0; i < colArray.length; i++)
	{
		bArray[i] = colArray[i];
	}
	// ** SORT THE COLUMN ITEMS
	colArray.sort();
	for (i=0; i < colArray.length; i++)
	{ // LOOP THROUGH THE NEW SORTED ARRAY
		indexArray[i] = (i+1);
		for(j=0; j < bArray.length; j++)
		{ // LOOP THROUGH THE OLD ARRAY
			if (colArray[i].toUpperCase() == bArray[j].toUpperCase())
			{  // WHEN THE ITEM IN THE OLD AND NEW MATCH, PLACE THE
				// CURRENT ROW NUMBER IN THE PROPER POSITION IN THE
				// NEW ORDER ARRAY SO ROWS CAN BE MOVED ....
				// MAKE SURE CURRENT ROW NUMBER IS NOT ALREADY IN THE
				// NEW ORDER ARRAY		        
				for (c=0; c<i; c++)
				{
					if ( oldIndex[c] == (j+1) )
					{
					bSort = 1;
					}
					}
					if (bSort == 0)
						{
						oldIndex[i] = (j+1);
						}
						bSort = 0;
						}
		}
	}
	
	for (i=0; i<oldIndex.length; i++)
	{
	    for (c=0; c<4; c++)
	    {
			id = tableToSortName;
			id = id.replace('tbl', 'td') + 'Row' + (i + 1) + 'Col' + (c + 1);
			var td = document.getElementById(id);

			switch (c)
			{
				case 0:
				case 1:
					if (c == col)
					{	
						if (i % 2 == 0)
							td.className = "altRow-a";
						else
							td.className = "altRow2-a";
					}
					else
					{
						if (i % 2 == 0)
							td.className = "altRow-b";
						else
							td.className = "altRow2-b";
					}
					break;
					
				case 2:
				case 3:
					if (c == col)
					{	
						if (i % 2 == 0)
							td.className = "altRow-c";
						else
							td.className = "altRow2-c";
					}
					else
					{
						if (i % 2 == 0)
							td.className = "altRow-b";
						else
							td.className = "altRow2-b";
					}
					break;
			}
			
			switch (c)
	        {
				case 0:
					id = tableToSortName;
					id = id.replace('tbl', 'lnk') + 'Row' + (i + 1);

					var lnk = document.getElementById(id);
					lnk.innerHTML = col1Array[oldIndex[i] - 1];
					lnk.href = url1Array[oldIndex[i] - 1];
					break;
					
				case 1:
					id = tableToSortName;
					id = id.replace('tblStory', 'lnkAuthor') + 'Row' + (i + 1);

					var lnk = document.getElementById(id);
					lnk.innerHTML = col2Array[oldIndex[i] - 1];
					lnk.href = url2Array[oldIndex[i] - 1];
					break;
					
				case 2:
					id = tableToSortName;
					id = id.replace('tbl', 'td') + 'Row' + (i + 1) + 'Col' + (c + 1);
					
					var td = document.getElementById(id);
					td.innerHTML = col3Array[oldIndex[i] - 1];
					break;
					
				case 3:
					id = tableToSortName;
					id = id.replace('tbl', 'td') + 'Row' + (i + 1) + 'Col' + (c + 1);
					
					var td = document.getElementById(id);
					    td.innerHTML = col4Array[oldIndex[i] - 1];
					break;
	        }
	    }
	}
}	
//  End -->

// http://www.somacon.com/p355.php
function trim(stringToTrim)
{
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}