  function tb_sort(tb_id, col, tp) {
 // sdf.df
    var tb = document.getElementById(tb_id);
    if(tb) {
      var i, j;
      var r1 = tb.getAttribute("row_s");
      if(!r1) r1 = 1;
      var st = 1;
      if(tp!=2) {
        var s_c = tb.getAttribute("sort_col");
        if(col==s_c) {
          var st = tb.getAttribute("sort_type");
          st = (st=="1"?2:1);
        }
      }
      var arr = new Array();
      for(i=r1; i<tb.rows.length; i++) {
        arr.push(new Array(getValue(tb.rows[i].cells[col], tp), i));
      }
      if(st==1)
        arr.sort(sort_1);
      else
        arr.sort(sort_2);
      for(i=1; i<arr.length; i++) {
        tb.tBodies[0].appendChild(tb.rows[arr[i][1]]);
        for(j=i+1; j<arr.length; j++)
          if(arr[j][1]>arr[i][1]) arr[j][1]--;
      }
      if(tp!=2) {
        tb.setAttribute("sort_col", col);
        tb.setAttribute("sort_type", st);
      }

      /*
      if(typeof(s_c)!="undefined" && s_c!=null) {
        tb.rows[0].cells[s_c].className = "";
        for(i=r1; i<tb.rows.length; i++) {
          tb.rows[i].cells[s_c].style.backgroundColor = "";
        }
      }

      var cc = 220;
      var cl = 80/tb.rows.length;
      if(st==2) {
        cc = 140;
        cl = -cl;
      }
      tb.rows[0].cells[col].className = "selected";
      */for(i=r1; i<tb.rows.length; i++) {
        //tb.rows[i].cells[col].style.backgroundColor = getColor(parseInt(cc-cl*i));
        tb.rows[i].className = (i%2?"alt":"");
      }
    }
  }

  function getValue(e, t) {
    var v = e.innerText;
    if(typeof(v)=="undefined") v = e.textContent;
    if(t!=1 && t!=2 && v!="") {
      if(v.indexOf(' ')>0) v = v.substring(0, v.indexOf(' '));
      v = Number(v);
    }
    return v;
  }

  function getColor(v) {
    var c = (v<16?"0":"") + v.toString(16);
    var cc = "#ff"+c+c
    return cc;
  }

  function sort_1(x, y) {
    if(x[0]==y[0])
      return 0;
    else if(x[0]=="")
      return 1;
    else if(y[0]=="")
      return -1;
    else if(x[0]>y[0])
      return 1;
    else if(x[0]<y[0])
      return -1;
    else
      return 0;
  }

  function sort_2(x, y) {
    if(x[0]==y[0])
      return 0;
    else if(x[0]=="")
      return 1;
    else if(y[0]=="")
      return -1;
    else if(x[0]>y[0])
      return -1;
    else if(x[0]<y[0])
      return 1;
    else
      return 0;
  }
