var tableobj = null;
var items = null;
var desc;
var col;
var col0asc = true;
var col1asc = true;
var col2asc = true;
var col4asc = true;

function lt_or_eq(obj1, obj2)
{
   var val1;
   var val2;
   var cell1 = obj1.getElementsByTagName("TD")[col].firstChild;
   var cell2 = obj2.getElementsByTagName("TD")[col].firstChild;

   if (col == 0)
   {
      val1 = cell1.firstChild.nodeValue;
      val2 = cell2.firstChild.nodeValue;
   }
   else if (col == 1)
   {
      val1 = cell1.nodeValue;
      val2 = cell2.nodeValue;
   }
   else if (col == 2)
   {
      val1 = parseInt(cell1.nodeValue);
      val2 = parseInt(cell2.nodeValue);
   }
   else if (col == 4)
   {
      val1 = parseInt(cell1.nodeValue.replace(/,/g, ''));
      val2 = parseInt(cell2.nodeValue.replace(/,/g, ''));
   }

   return (desc) ? val1 >= val2 : val1 <= val2;
}

function mergesort(arr)
{
   var left = new Array();
   var right = new Array();
   var len = arr.length;

   if (len <= 1) return arr;

   var middle = Math.floor(len / 2);
   for (var i = 0; i < middle; i++) left.push(arr[i]);
   for (var i = middle; i < len; i++) right.push(arr[i]);

   left = mergesort(left);
   right = mergesort(right);

   return merge(left, right);
}

function merge(left, right)
{
   var retval = new Array();
   while(left.length > 0 && right.length > 0)
   {
      if (lt_or_eq(left[0], right[0])) retval.push(left.shift());
      else retval.push(right.shift());
   }

   if (left.length > 0) return retval.concat(left);
   if (right.length > 0) return retval.concat(right);

   return retval;
}

function sortTable(tableid, colpar)
{
   tableobj = document.getElementById(tableid);

   col = colpar;
   if (colpar == 0) desc = col0asc = !col0asc;
   else if (colpar==1) desc = col1asc = !col1asc;
   else if (colpar==2) desc = col2asc = !col2asc;
   else if (colpar==4) desc = col4asc = !col4asc;
   else return false;

   if(tableobj.nodeName != "TBODY")
      tableobj = tableobj.getElementsByTagName("TBODY")[0];
   if(tableobj.nodeName != "TBODY")
      return false;

   items = tableobj.getElementsByTagName("TR");

   items = mergesort(items);

   for (var i = 0; i < items.length; i++) tableobj.appendChild(items[i]);
}

