function TreeControl()

{

  this.data = new Array();

  this.Width = 0;

  this.Height = 0;

  this.Theme = 1;

  this.container;

  this.ImagePath="../Bilder/";



  this.SetData = SetData;   

  this.GenControl = GenControl;

}



function GenControl()

{

  this.container.style.width  = this.Width;

  this.container.style.height = this.Height;

  this.container.className = 'theme' + this.Theme;



  var sumArray  = new Array();

  var TableObj;

  var prevLevel = 0;

  var ctr       = 0;

  var className;



  for( var i=0; i < this.data.length ; i++)

  {



    if ( this.data[i][0] != prevLevel )

    {

      sumArray[ctr]    = new Array();

      sumArray[ctr][0] = prevLevel;

      sumArray[ctr][1] = TableObj;



      ctr++;



      if ( this.data[i][0] == 1 )

        prevLevel = 0;

      else

      {  prevLevel = this.data[i][0];

      }

    

      className = 'theme_'+ this.Theme + prevLevel;

      TableObj = document.createElement("TABLE");

      TableObj.border = 0;

      TableObj.style.width = '100%';

      TableObj.cellSpacing = 0;

      TableObj.cellPadding = 0;

 

      var myRow        = TableObj.insertRow();

      var myCell       = myRow.insertCell();

      myCell.className = className;

      myCell.style.width = '14';

      myCell.noWrap = true;

      if ( i < this.data.length-1 && this.data[i][0] < this.data[i+1][0])

        myCell.innerHTML = '<img src=' + this.ImagePath + 'node.gif onclick="expand()"></img>';



      var myCell       = myRow.insertCell();

      myCell.className = className;

      myCell.noWrap = true;

      myCell.innerHTML = treeObj.data[i][1];



    }

    else

    {

      var myRow        = TableObj.insertRow();

      var myCell       = myRow.insertCell();

      myCell.className = className;

      myCell.noWrap = true;

      myCell.style.width = '14';

      if ( i < this.data.length-1 && this.data[i][0] < this.data[i+1][0])

        myCell.innerHTML = '<img src=' + this.ImagePath + 'node.gif onclick="expand()"></img>';



      var myCell       = myRow.insertCell();

      myCell.className = className;

      myCell.noWrap = true;

      myCell.innerHTML = treeObj.data[i][1];

    }



  }



// last element



  sumArray[ctr]    = new Array();

  sumArray[ctr][0] = prevLevel;

  sumArray[ctr][1] = TableObj;



  var nextElement=0;

  var flag = false;

  var unique = new Array();

  ctr = 0;





  for(i=1; i < sumArray.length; i++)

  {

    flag = false;

    for (j=0; j < unique.length; j++)

    {

      if( sumArray[i][0] == unique[j] )

      { flag = true; break;        }

    }

    if ( flag == false )

    {

      unique[ctr] = sumArray[i][0];

      ctr = ctr + 1;

    }

  }





  unique.sort(compareNo);

  

  for(i=0; i < unique.length; i++)

  {

    for(j=1; j < sumArray.length; j++)

    {



      if(sumArray[j][0] == unique[i] && sumArray[j][0] != 0)

      {

      

        var tbl = sumArray[j-1][1];

        var myRow = tbl.insertRow();

        myRow.className = "hide";

        var myCell = myRow.insertCell();

        var myCell = myRow.insertCell();

        myCell.noWrap = true;

        var myHTML = sumArray[j][1].innerHTML

        myHTML = "<TABLE border=0 cellspacing=0 cellpadding=0 width=100%>" + myHTML + "</TABLE>";



        myCell.innerHTML = myHTML;

        sumArray[j-1][1] = tbl;

        

        sumArray[j][0] = -1;



      }

    }



    var tmpArray = new Array();

    var mergeLevel = unique[i] - 1;

    var mergeFlag  = false;



    ctr = 1;

    for(j=1; j < sumArray.length; j++)

    {

      if(sumArray[j][0] >= 0 )

      {



        tmpArray[ctr]    = new Array();

        tmpArray[ctr][0] = sumArray[j][0];

        tmpArray[ctr][1] = sumArray[j][1];

        ctr++;

      }

    }    



    sumArray.length = 0;

    ctr = 1;

    for(j=1; j < tmpArray.length; j++)

    {

        sumArray[ctr]    = new Array();

        sumArray[ctr][0] = tmpArray[j][0];

        sumArray[ctr][1] = tmpArray[j][1];

        ctr++;

    }



    tmpArray.length = 0;



    while ( mergeFlag == false )

    {

      mergeFlag = true;

      for(j=1; j < sumArray.length ; j++)

      {

        if ( j != sumArray.length-1 )

        {

          if((sumArray[j][0] == sumArray[j+1][0]) && (sumArray[j][0] == mergeLevel))

          { 

            mergeFlag = false;

            

            sumArray[j+1][0] = -1;



            tbl = sumArray[j][1]; 



            tbl.appendChild(sumArray[j+1][1]);



            sumArray[j][1] = tbl;



          }

        }

      }



      ctr = 1;

      for(j=1; j < sumArray.length; j++)

      {

        if(sumArray[j][0] >= 0 )

        {



          tmpArray[ctr]    = new Array();

          tmpArray[ctr][0] = sumArray[j][0];

          tmpArray[ctr][1] = sumArray[j][1];

          ctr++;

        }

      }    



      sumArray.length = 0;

      ctr = 1;

      for(j=1; j < tmpArray.length; j++)

      {

          sumArray[ctr]    = new Array();

          sumArray[ctr][0] = tmpArray[j][0];

          sumArray[ctr][1] = tmpArray[j][1];

          ctr++;

      }



      tmpArray.length = 0;



    }





  }



  var ContDiv = document.createElement("DIV");

  TableObj = document.createElement("TABLE");

  TableObj.border = 1;

  TableObj.style.width = '100%';

  TableObj.cellSpacing = 0;

  TableObj.cellPadding = 0;

 

  for(j=1; j < sumArray.length; j++)

  {

    if(sumArray[j][0] == 0 )

    {

//      this.container.insertBefore(sumArray[j][1]);

//      ContDiv.insertBefore(sumArray[j][1].innerHTML);

//      ContDiv.innerHTML = ContDiv.innerHTML + '<table width=100%>' + sumArray[j][1].innerHTML + '</Table>';

        var myRow        = TableObj.insertRow();

        var myCell       = myRow.insertCell();

        myCell.innerHTML = '<table width=100%>' + sumArray[j][1].innerHTML + '</Table>';



    }

  } 



  ContDiv.insertBefore(TableObj);

  this.container.insertBefore(ContDiv);





}



function compareNo(a,b)

{ return b - a; }



function SetData(level, htmltext)

{

   var curRow = this.data.length;

   this.data[curRow] = new Array();

   this.data[curRow][0] = level;

   this.data[curRow][1] = htmltext;

}



function expand()

{

  var obj_tbody = event.srcElement.parentElement.parentElement.parentElement;

  var ws_currentRow = event.srcElement.parentElement.parentElement.rowIndex;



  var ws_nextRow = ws_currentRow + 1;

  var ws_totRow = obj_tbody.rows.length;



  if (ws_nextRow < ws_totRow)

  {

    

    if ( obj_tbody.rows(ws_nextRow).className != "unhide" )

    {

	obj_tbody.rows(ws_nextRow).className = "unhide";



	ws_nextRow = ws_nextRow + 1;

        for(; ws_nextRow < ws_totRow && obj_tbody.rows(ws_nextRow).className == "hide" ; ws_nextRow++)

	{

		obj_tbody.rows(ws_nextRow).className = "unhide";

	}



    }

    else if ( obj_tbody.rows(ws_nextRow).className != "hide" )

    {

	obj_tbody.rows(ws_nextRow).className = "hide";



	ws_nextRow = ws_nextRow + 1;

        for(; ws_nextRow < ws_totRow && obj_tbody.rows(ws_nextRow).className == "unhide" ; ws_nextRow++)

	{

		obj_tbody.rows(ws_nextRow).className = "hide";

	}



    }	

  }

	

 		

}
