var SortedRow=2;
var SortedOrder="Increment";
var IsGC = false;
//-----------------------------------------------------------------------------
function __hasClass(obj, cls)
{
  return (obj.className.indexOf(cls, 0) >= 0 );
}
function __OnSlideAll()
{
  var Table1 = document.getElementById("ctl00_MainContent_ParamTableFrame_tbl");
  if( Table1 == null ) Table1 = document.getElementById("ctl00_MainContent_OutConFrame_ParamTableFrame_tbl");

  IsGC = !IsGC;
  var i;
  for(i=1;i<Table1.tBodies[0].rows.length;i++)
  {
    if (__hasClass(Table1.tBodies[0].rows[i],"efCg1"))
      if (IsGC ^ __hasClass(Table1.tBodies[0].rows[i],"closed")) __OnSlide(i, 1);
    if (__hasClass(Table1.tBodies[0].rows[i],"efCg2"))
      if (IsGC ^ __hasClass(Table1.tBodies[0].rows[i],"closed")) __OnSlide(i, 2);
    if (__hasClass(Table1.tBodies[0].rows[i],"efCg3")) //На будущее
      if (IsGC ^ __hasClass(Table1.tBodies[0].rows[i],"closed")) __OnSlide(i, 3);
  }
}
function __OnSlide(RowN, lev)
{
    var Table1 = document.getElementById("ctl00_MainContent_ParamTableFrame_tbl");
    if( Table1 == null ) Table1 = document.getElementById("ctl00_MainContent_OutConFrame_ParamTableFrame_tbl");

    if( __hasClass(Table1.tBodies[0].rows[RowN],"closed") )
    {
      for(i=RowN+1; i<Table1.tBodies[0].rows.length; i++)
      {
        p = 0;
        if( __hasClass(Table1.tBodies[0].rows[i],"efCg"+(lev)) ) break;
        if( (lev>1) && (__hasClass(Table1.tBodies[0].rows[i],"efCg"+(lev-1))) ) break;
        if( __hasClass(Table1.tBodies[0].rows[i],"closed") )
          while (i+p+1<Table1.tBodies[0].rows.length)
          {
            if( __hasClass(Table1.tBodies[0].rows[i+p+1],"efCg"+(lev+1)) ) break;
            if( __hasClass(Table1.tBodies[0].rows[i+p+1],"efCg"+(lev)) ) break;
            p++;
          }
        Table1.tBodies[0].rows[i].style.display = "";
        i+=p;
      }
      Table1.tBodies[0].rows[RowN].className = Table1.tBodies[0].rows[RowN].className.replace(" closed", "");
    }
    else
    {
      for(i=RowN+1; i<Table1.tBodies[0].rows.length; i++)
      {
        if( __hasClass(Table1.tBodies[0].rows[i],"efCg"+(lev)) ) break;
        if( (lev>1) && (__hasClass(Table1.tBodies[0].rows[i],"efCg"+(lev-1))) ) break;
        Table1.tBodies[0].rows[i].style.display = 'none';
      }
      Table1.tBodies[0].rows[RowN].className += " closed";
    }
    for(i=0; i<Table1.tBodies[0].rows[RowN].cells[0].childNodes.length; i++)
      if (Table1.tBodies[0].rows[RowN].cells[0].childNodes.item(i).tagName == "IMG")
      {
        if ( __hasClass(Table1.tBodies[0].rows[RowN],"closed") )
          Table1.tBodies[0].rows[RowN].cells[0].childNodes.item(i).src = 'images/MYArrowP.gif';
        else
          Table1.tBodies[0].rows[RowN].cells[0].childNodes.item(i).src = 'images/MYArrowM.gif';
        break;
      }
}
//-----------------------------------------------------------------------------
function __OnDblClick()
{
    document.selection.empty();
    return false;
}
//-----------------------------------------------------------------------------
function __OnClick(RowN)
{
    var i=0;
    var Table1 = document.getElementById("ctl00_MainContent_ParamTableFrame_tbl");
    if( Table1 == null ) Table1 = document.getElementById("ctl00_MainContent_OutConFrame_ParamTableFrame_tbl");
    
    if ( SortedRow == RowN )
    {
      if (SortedOrder == "Increment")
        SortedOrder = "Decriment";
      else
        SortedOrder = "Increment";
    }
    else
    {
      for(i=0; i<Table1.tBodies[0].rows[RowN].cells[0].childNodes.length; i++)
        if (Table1.tBodies[0].rows[RowN].cells[0].childNodes.item(i).tagName == "IMG"){
          Table1.tBodies[0].rows[SortedRow].cells[0].childNodes.item(i).src = 'images/Arrow-Null.gif';
          break;
        }
      SortedRow  = RowN;
    }
    for(i=0; i<Table1.tBodies[0].rows[RowN].cells[0].childNodes.length; i++)
      if (Table1.tBodies[0].rows[RowN].cells[0].childNodes.item(i).tagName == "IMG"){
        if (SortedOrder == "Increment")
            Table1.tBodies[0].rows[RowN].cells[0].childNodes.item(i).src = 'images/MYArrowR.gif';
        else
            Table1.tBodies[0].rows[RowN].cells[0].childNodes.item(i).src = 'images/MYArrowL.gif';
        break;
      }
    SortTableFunction(Table1,RowN,SortedOrder);
}
//-----------------------------------------------------------------------------
function SortTableFunction(tbl, RowN, SortOrder){

//TableId         - id сортируемой таблицы
//SortRowNumber   - номер ряда, по которому производится соритровка
//SortOrder       - порядок сортировки "Increment", "Decriment"
    
    var TableArray = new Array();
    var i=0, j=0, k=0;
    var BodyCount = 0, RowCount = 0, ColCount = 0;
    //Чтение из таблицы в массив массивом содержимого таблицы    
    //  Считаем размерность массива
    BodyCount = tbl.tBodies.length;
    ColCount  = tbl.tBodies[0].rows[RowN].cells.length;
   
    //  Выделяем память под массив
    for(k=0; k<ColCount; k++){
        TableArray[k] = new Array();
        for (i=0; i<BodyCount; i++){
            TableArray[k][i] = new Array();
        }
    }

    for(k=1; k<ColCount; k++){
        for (i=0; i<BodyCount; i++){
            RowCount = tbl.tBodies[i].rows.length;
            for (j=0; j<RowCount; j++){
                if( tbl.tBodies[i].rows[j].cells.length > k ) TableArray[k][i][j] = tbl.tBodies[i].rows[j].cells[k].innerHTML;
            }            
        }
    }
    
    //Перестановка
    var FlagExch=false;
    var FlagExchExecuted=false;
    var a=0.0, b=0.0;
    var tmp;
    
    do{
        FlagExchExecuted = false;
        
        for (k=1; k<TableArray.length-1; k++){
            FlagExch=false;
            a = parseFloat(TableArray[k][0][RowN]);
            b = parseFloat(TableArray[k+1][0][RowN]);
            if ( isNaN(a)||isNaN(b) ){//Cортируются строки
                switch(SortOrder){ 
                    case "Increment":
                        if ( TableArray[k][0][RowN] > TableArray[k+1][0][RowN] ){
                            FlagExch = true;
                        }
                    break;
                    case "Decriment":
                        if ( TableArray[k][0][RowN] < TableArray[k+1][0][RowN] ){
                            FlagExch = true;
                        }
                    break;
                }
            }else{
                switch(SortOrder){ 
                    case "Increment":
                        if ( a > b ){
                            FlagExch = true;
                        }
                    break;
                    case "Decriment":
                        if ( a < b ){
                            FlagExch = true;
                        }
                    break;
                }
            }
            
            if (FlagExch){
                tmp = TableArray[k];
                TableArray[k] = TableArray[k+1];
                TableArray[k+1] = tmp;
                
                FlagExchExecuted = true;
            }
        }
    }while(FlagExchExecuted);

    //Вывод
    for(k=1; k<ColCount; k++){        
        for (i=0; i<BodyCount; i++){
            RowCount  = tbl.tBodies[i].rows.length;
            for (j=0; j<RowCount; j++){
                if( tbl.tBodies[i].rows[j].cells.length > k )
                    tbl.tBodies[i].rows[j].cells[k].innerHTML = TableArray[k][i][j];
            }
        }
    }
}

