function resort(sortType) {
  with (document.forms[0]){
       if (SORTBY.value == sortType) {
       	  if (ORDER.value == "asc") ORDER.value = "desc";
       	  else ORDER.value = "asc";
       } else {
		   SORTBY.value = sortType;
		   ORDER.value = "desc";
	   }    	 
       submit();
  }
}

function reverseSort(a, b) 
{ 
	   if(a > b) 
    	  return -1 
	   if(a < b) 
    	  return 1 
	   return 0 
} 

function reverseSortNumber(a, b) 
{ 
	   if(a - b > 0) 
    	  return -1 
	   if(a - b < 0) 
    	  return 1 
	   return 0 
} 

function sortNumber(a, b) 
{ 
	   if(a - b < 0) 
    	  return -1 
	   if(a - b > 0) 
    	  return 1 
	   return 0 
} 

function sortTable(col, tableToSort, isNumber)
  {
    var iCurCell = col + tableToSort.cols;
    var totalRows = tableToSort.rows.length;
    var bSort = 0;
    var colArray = new Array();
    var oldIndex = new Array();
    var indexArray = new Array();
    var bArray = new Array();
    var newRow;
    var newCell;
    var i;
    var c;
    var j;
    // ** POPULATE THE ARRAY colArray WITH CONTENTS OF THE COLUMN SELECTED
    for (i=1; i < tableToSort.rows.length; i++)
      {
        colArray[i - 1] = tableToSort.cells(iCurCell).innerText;
        iCurCell = iCurCell + tableToSort.cols;
      }
    // ** COPY ARRAY FOR COMPARISON AFTER SORT
    for (i=0; i < colArray.length; i++)
      {
        bArray[i] = colArray[i];
      }
    // ** SORT THE COLUMN ITEMS

	if (tableToSort.justSorted == col) { //already sorted
		if (tableToSort.sortOrder > 0) { //already reverse sorted
			if (isNumber == 0)
				colArray.sort();
			else colArray.sort(sortNumber);
			tableToSort.sortOrder = 0;
		} else { //already asc sorted
			if (isNumber == 0)
				colArray.sort(reverseSort);
			else colArray.sort(reverseSortNumber);
			tableToSort.sortOrder = 1;
		}
	} else { //new sort
		if (isNumber == 0)
    		colArray.sort();
		else colArray.sort(sortNumber);
		tableToSort.justSorted = col;
		tableToSort.sortOrder = 0;
	}
    //alert ( colArray );
    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] == bArray[j])
              {  // 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;
                        }
          }
    }
  // ** SORTING COMPLETE, ADD NEW ROWS TO BASE OF TABLE ....
  for (i=0; i<oldIndex.length; i++)
    {
      newRow = tableToSort.insertRow();
      for (c=0; c<tableToSort.cols; c++)
        {
          newCell = newRow.insertCell();
          newCell.innerHTML = tableToSort.rows(oldIndex[i]).cells(c).innerHTML;
        }
      }
  //MOVE NEW ROWS TO TOP OF TABLE ....
  for (i=1; i<totalRows; i++)
    {
      tableToSort.moveRow((tableToSort.rows.length -1),1);
    }
  //DELETE THE OLD ROWS FROM THE BOTTOM OF THE TABLE ....
  for (i=1; i<totalRows; i++)
    {
      tableToSort.deleteRow();
    }
  }