<!--
var shTree = {};
shTree.oCache = {};
shTree.hData = {};
shTree.hNodeStates = {};
shTree.sActTbl = null;
shTree.getData = function(sFld){
  if (typeof(shTree.hData[shTree.sActTbl]) == 'undefined'){
    shTree.hData[shTree.sActTbl] = {};
  }
  if (typeof(shTree.hData[shTree.sActTbl][sFld]) == 'undefined'){
    shTree.hData[shTree.sActTbl][sFld] = null;
  }
  return shTree.hData[shTree.sActTbl][sFld];
}
shTree.setData = function(sFld,xVal){
  if (typeof(shTree.hData[shTree.sActTbl]) == 'undefined'){
    shTree.hData[shTree.sActTbl] = {};
  }
  shTree.hData[shTree.sActTbl][sFld] = xVal;
}
shTree.issetCache = function(oTgt,sFld,iSubFld){
  var bRet = 0;
  if (oTgt && oTgt.tagName != 'TBODY'){
    if (!shTree.sActTbl){
      shTree.sActTbl = jsHelper.getTable(oTgt).id;
    }
    var sTbl = shTree.sActTbl;
    if (typeof(shTree.oCache[sTbl]) != 'undefined'){
      var sId = oTgt.id;
      if (typeof(shTree.oCache[sTbl][sId]) != 'undefined' && typeof(shTree.oCache[sTbl][sId][sFld]) != 'undefined'){
        if (typeof(iSubFld) != 'undefined' && typeof(shTree.oCache[sTbl][sId][sFld][iSubFld]) != 'undefined' && shTree.oCache[sTbl][sId][sFld][iSubFld] !== 0){
          bRet = 1;
        }else if (typeof(iSubFld) == 'undefined' && shTree.oCache[sTbl][sId][sFld] !== 0){
          bRet = 1;
        }
      }
    }
  }
  return bRet;
}
shTree.setCache = function(oTgt,sFld,xCache,iSubFld){
  if (oTgt && oTgt.tagName != 'TBODY'){
    if (!shTree.sActTbl){
      shTree.sActTbl = jsHelper.getTable(oTgt).id;
    }
    if (typeof(shTree.oCache[shTree.sActTbl]) == 'undefined'){
      shTree.oCache[shTree.sActTbl] = {};
    }
    var sId = oTgt.id;
    if (typeof(shTree.oCache[shTree.sActTbl][sId]) == 'undefined'){
      shTree.oCache[shTree.sActTbl][sId] = {
        'oPrt':     0,
        'aoChilds': {0: 0, 1: 0},
        'oNxt':     {0: 0, 1: 0},
        'oPrv':     0,
        'sFctLoadChilds': 0
      };
    }
    if (typeof(iSubFld) != 'undefined'){
      shTree.oCache[shTree.sActTbl][sId][sFld][iSubFld] = xCache;
    }else{
      shTree.oCache[shTree.sActTbl][sId][sFld] = xCache;
    }
  }
}
shTree.getCache = function(oTgt,sFld,iSubFld){
  var xRet = 0;
  if (oTgt && oTgt.tagName != 'TBODY'){
    if (!shTree.sActTbl){
      shTree.sActTbl = jsHelper.getTable(oTgt).id;
    }
    var sTbl = shTree.sActTbl;
    if (typeof(shTree.oCache[sTbl]) == 'undefined'){
      shTree.oCache[sTbl] = {};
    }
    var sId = oTgt.id;
    if (typeof(shTree.oCache[sTbl][sId]) != 'undefined' && typeof(shTree.oCache[sTbl][sId][sFld]) != 'undefined'){
      if (typeof(iSubFld) != 'undefined' && typeof(shTree.oCache[sTbl][sId][sFld][iSubFld]) != 'undefined'){
        xRet = shTree.oCache[sTbl][sId][sFld][iSubFld];
      }else if (typeof(iSubFld) == 'undefined'){
        xRet = shTree.oCache[sTbl][sId][sFld];
      }
    }
  }
  return xRet;
}
shTree.appendCache = function(oTgt,sFld,sAppend,iSubFld,bTop){
  var oCache = shTree.getCache(oTgt,sFld,iSubFld);
  if (!oCache || oCache == 0){
    shTree.setCache(oTgt,sFld,[sAppend],iSubFld);
  }else{
    if (bTop){
      oCache.unshift(sAppend);
    }else{
      oCache.push(sAppend);
    }
  }
}
shTree.appendCacheAsc = function(oTgt,sFld,oAppend,iSubFld,bTop){
  if (oTgt){
    if (shTree.issetCache(oTgt,'aoChilds',iSubFld)){
      shTree.appendCache(oTgt,sFld,oAppend.id,iSubFld,bTop);
    }else{
      shTree.getChilds(oTgt,iSubFld);
    }
    var oPrev = shTree.getPrev(oAppend);
    var sPrevId = (oPrev) ? oPrev.id : oTgt.id;
    var oPrt = oTgt;
    while (oPrt = shTree.getParent(oPrt)){
      var bAppend = (shTree.issetCache(oPrt,'aoChilds',iSubFld)) ? 1 : 0;
      var asChilds = shTree.getChilds(oPrt,iSubFld);
      if (bAppend){
        for (var i=0; i<asChilds.length; i++){
          if (asChilds[i] == sPrevId){
            if (i == asChilds.length - 1){
              asChilds.push(oAppend.id);
            }else{
              asChilds.splice(i+1,0,oAppend.id);
            }
            break;
          }
        }
        shTree.setCache(oPrt,sFld,asChilds,iSubFld);
      }
    }
  }
}
shTree.spliceCache = function(oTgt,sFld,sSplice,iSubFld){
  var aoCache;
  if ((aoCache = shTree.getCache(oTgt,sFld,iSubFld)) != 0 && aoCache){
    for (var i=0; i<aoCache.length; i++){
      if (aoCache[i] == sSplice){
        break;
      }
    }
    aoCache.splice(i,1);
    shTree.setCache(oTgt,sFld,aoCache,iSubFld);
  }
}
shTree.resetCache = function(sTbl){
  if (typeof(sTbl) == 'undefined'){
    shTree.oCache = {};
  }else{
    shTree.oCache[sTbl] = {};
  }
}
shTree.setIcoLoading = function(oNode,bOn){
  var oExp = shTree.getExpander(oNode);
  jsHelper.setClass(oExp,bOn,'ico_loading');
}
shTree.switchNode = function(oCaller,bNoRecycle,bNoSession){
  var sTreeId = jsHelper.getTable(oCaller).id;
  if (sTreeId.indexOf('autocut_') == 0){
    sTreeId = sTreeId.replace(/^autocut_/,'');
    oCaller = jsHelper.getTr(jsHelper.getTable(oCaller));
  }
  if (oCaller.nodeName == 'TR'){
    var oRoot = oCaller;
    oCaller = shTree.getExpander(oRoot);
  }else{
    var oRoot = jsHelper.getTr(oCaller);
  }
  shTree.sActTbl = sTreeId;
  if (typeof(bNoSession) == 'undefined'){
    var bNoSession = shTree.getData('bNoSession');
  }
  if (shTree.getData('bNoRecycle') !== null){
    var bNoRecycle = shTree.getData('bNoRecycle');
  }else{
    var bNoRecycle = bNoRecycle || 0;
  }
  var sFctLoadChilds;
  if ((sFctLoadChilds = shTree.getCache(oRoot,'sFctLoadChilds')) !== 0 && !shTree.hasChilds(oRoot)){
    eval(sFctLoadChilds.replace(/this/g,'oCaller'));
    return;
  }
  bOn   = (oRoot.lang == '1')  ? 0 : 1;
  aHide = new Array;
  oRoot.lang = bOn.toString();
  if (!bNoSession){
    var hArgs = {};
    hArgs[_mod+'[node]['+oRoot.id+']'] = bOn;
    shRpc.setSessionVal(hArgs);
  }
  var sOld = bOn?'ico_tree_open':'ico_tree_close';
  var sNew = bOn?'ico_tree_close':'ico_tree_open';
  oCaller.className = oCaller.className.replace(sOld,sNew);
  bLast = 0
  oNode = oRoot.nextSibling
  while (oNode != null ){
    if (oNode.tagName == 'TR' && !oNode.id.match(/\/hide\/$/)){
      if (oNode.id.substr(0,oRoot.id.length) != oRoot.id){
        oNode = null;
      }else{
        isNode = 0;
        aDivs = oNode.getElementsByTagName('div');
        for (var i=0; i<aDivs.length && !isNode; i++){
          if (aDivs[i].title == 'expander'){
            isNode = 1;
            break;
          }
        }
        if (isNode){
         // alert(oNode.lang);
         // oNode.lang = (oNode.lang == '') ? 1 : oNode.lang;
        }
        if (bOn && isNode && oNode.lang == '0'){
          aHide[aHide.length] = oNode.id;
        }
        bHide = 0;
        for (var x=0;x<aHide.length;x++){
          if (oNode.id != aHide[x] && oNode.id.substr(0,aHide[x].length) == aHide[x]){
            bHide = 1;
            break;
          }
        }
        if (!bHide){
          var bDisplay = (bOn && shTree.isExpandet(oNode)) ? 1 : 0;
          //ie7 hack: +/- symbols are displayed
          var oExp = shTree.getExpander(oNode);
          if (oExp){
            oExp.style.visibility = (bDisplay) ? '' : 'hidden';
          }
          //eo hack
          oNode.style.display = (bDisplay) ? '' : 'none';
        }
      }
    }
    if (oNode != null){
      oNode = oNode.nextSibling;
    }
  }
  if (typeof(sTreeId) != 'undefined' && sTreeId.length > 0 && !bNoRecycle){
    jsHelper.tblReCycle(sTreeId);
  }
}
shTree.refreshTreeIco = function(oTr,bLast){
  var bChanged = 0;
  if (oTr){
    var aoDiv = oTr.getElementsByTagName('div');
    for (var i=0;i<aoDiv.length;i++){
      if (!bLast && aoDiv[i].className.indexOf('ico_tree_last') >= 0){
        aoDiv[i].className = aoDiv[i].className.replace(/ico_tree_last/,'ico_tree_sub');
        bChanged = 1;
      }
      if (bLast && aoDiv[i].className.indexOf('ico_tree_sub') >= 0){
        aoDiv[i].className = aoDiv[i].className.replace(/ico_tree_sub/,'ico_tree_last');
        bChanged = 1;
      }
    }
  }
  return bChanged;
}
shTree.hasChilds = function(oTr){
  if (!oTr){
    return 0;
  }
  if (oTr.nodeName == 'TBODY'){
    var oChk = (oTr.getElementsByTagName('tr').length > 0) ? oTr.getElementsByTagName('tr')[0] : null;
    var sId = '/';
  }else{
    var oChk = oTr.nextSibling;
    var sId = oTr.id;

  }
  while (oChk && (!oChk.nodeName || oChk.nodeName != 'TR' || typeof(oChk.id) == 'undefined' || oChk.id.match(/\/(__header__|hide)\/$/))){
    oChk = oChk.nextSibling;
  }
  return (oChk && oChk.id && oChk.id.indexOf(sId) >= 0 && oChk.id != sId) ? 1 : 0;
}
shTree.delChilds = function(oTr){
  shTree.sActTbl = jsHelper.getTable(oTr).id;
  if (shTree.hasChilds(oTr)){
    var asDel = shTree.getChilds(oTr);
    for (var i=0;i<asDel.length;i++){
      var oDel = document.getElementById(asDel[i]);
      oDel.parentNode.removeChild(oDel);
    }
    oTr.lang = '0';
    shTree.setCache(oTr,'aoChilds',0,0);
    shTree.setCache(oTr,'aoChilds',0,1);
    var oPrt = oTr;
    while (oPrt = shTree.getParent(oPrt)){
      shTree.setCache(oPrt,'aoChilds',0,0);
    }
    shTree.setCache(oTr.parentNode,'aoChilds',0,0);
  }
}
shTree.moveChild = function(oTr,oTgt,iSrcIdLength){
  if (typeof(iSrcIdLength) == 'undefined'){
    //Aufruf von aussen; iSrcIdLength nur gesetzt, wenn rekursiv aufgerufen
    shTree.sActTbl = jsHelper.getTable(oTr).id;
  }
  var oPrt = shTree.getParent(oTr);
  if (oPrt != oTgt){
    var asTmp = shTree.getChilds(oTr,1);
    var asChilds = [];
    for (var i=0; i<asTmp.length; i++){
      asChilds.push(asTmp[i]);
    }
    if (oPrt){
      var bClosePrt = shTree.isExpandet(oTr);
      shTree.setLine(oTr,0);
      var oTmp = shTree.getNext(oTr);
      var sId = (oTmp) ? oTmp.id : 0;
      shTree.setCache(shTree.getPrev(oTr),'oNxt',sId,0);
      var oTmp = shTree.getPrev(oTr);
      var sId = (oTmp) ? oTmp.id : 0;
      shTree.setCache(shTree.getNext(oTr),'oPrv',sId);
      shTree.spliceCache(oPrt,'aoChilds',oTr.id,0);
      shTree.spliceCache(oPrt,'aoChilds',oTr.id,1);
      var oTmp = oPrt;
      while (oTmp = shTree.getParent(oTmp)){
        shTree.spliceCache(oTmp,'aoChilds',oTr.id,0);
      }
      shTree.spliceCache(oTr.parentNode,'aoChilds',oTr.id,0);
      var asAllChilds = shTree.getChilds(oTr);
      for (var i=0; i<asAllChilds.length; i++){
        shTree.spliceCache(oTr,'aoChilds',asAllChilds[i],0);
        shTree.spliceCache(oTr,'aoChilds',asAllChilds[i],1);
        var oTmp = oTr;
        while (oTmp = shTree.getParent(oTmp)){
          shTree.spliceCache(oTmp,'aoChilds',asAllChilds[i],0);
        }
        shTree.spliceCache(oTr.parentNode,'aoChilds',asAllChilds[i],0);
      }
    }
    shTree.setCache(oTr,'oNxt',0,0);
    shTree.setCache(oTr,'oNxt',0,1);
    shTree.setCache(oTr,'oPrv',0);
    shTree.setCache(oTr,'aoChilds',0,0);
    shTree.setCache(oTr,'aoChilds',0,1);
    var iIdLength = oTr.id.length;
    oTr.id = oTgt.id + oTr.id.substr(((oPrt) ? oPrt.id.length : iSrcIdLength));
    shTree.rowInsertCmpl(oTr,oTr.parentNode,oTgt.id);
    shTree.setLine(oTr);
    oTr.style.display = (shTree.isExpandet(oTr)) ? '' : 'none';
    if (oPrt && !shTree.hasChilds(oPrt)){
      if (bClosePrt){
        shTree.switchNode(shTree.getExpander(oPrt));
      }
      shTree.enableExpander(oPrt,0);
    }else if (oPrt){
      var asPrtChilds = shTree.getChilds(oPrt,1);
      shTree.refreshTreeIco(document.getElementById(asPrtChilds[asPrtChilds.length-1]),1);
    }
    for (var i=0;i<asChilds.length;i++){
      shTree.moveChild(document.getElementById(asChilds[i]),oTr,iIdLength);
    }
  }
}
shTree.moveChilds = function(oSrc,oTgt){
  var asMove = shTree.getChilds(oSrc,1);
  for (var i=0;i<asMove.length;i++){
    shTree.moveChild(document.getElementById(asMove[i]),oTgt);
  }
}
shTree.trIsExpandet = function(oTr){
  return ((oTr.lang == 'undefined' || oTr.lang != '1') ? 0 : 1);
}
shTree.isExpandet = function(oTr){ // funktioniert nicht auf das eigentliche element
  while (oTr = shTree.getParent(oTr)){
    if (typeof(oTr.lang) == 'undefined' || oTr.lang != '1'){
      return 0;
    }
  }
  return 1;
}
shTree.addExpander = function(oCell,oBefore,bEnabled,bFloat){
  if (typeof(bEnabled) == 'undefined') var bEnabled = 1;
  if (typeof(bFloat) == 'undefined')   var bFloat   = 1;
  var oExp = bfPage.createElement('div',{
    'className': 'ico16 ico_tree_open'+((bEnabled) ? ' hand' : '_off')+((bFloat) ? ' ico_move_left float_left' : ''),
    'title': 'expander'
  });
  if (bEnabled){
    jsHelper.setEvent(oExp,'onmousedown','shTree.switchNode(this);');
  }
  var oImg = bfPage.createElement('img',{'className':'ico16','src':_iconset+'main/blank.gif'});
  oExp.appendChild(oImg);
  oCell.insertBefore(oExp,oBefore);
}
shTree.hideExpander = function(oTr){
  var oExp = shTree.getExpander(oTr);
  if (oExp){
    oExp.style.display = 'none';
  }
}
shTree.showExpander = function(oTr){
  var oExp = shTree.getExpander(oTr);
  if (oExp){
    oExp.style.display = '';
  }
}
shTree.enableExpander = function(oTr,bOn){
  if (typeof(bOn) == 'undefined'){
    bOn = 1;
  }
  var oExp = shTree.getExpander(oTr);
  if (!oExp){
    var aoDiv = oTr.getElementsByTagName('div');
    var iCell = null;
    for (var iDiv=0;iDiv<aoDiv.length;iDiv++){
      if (aoDiv[iDiv].className.match(/ico_tree_(sub|last)/)){
        iCell = aoDiv[iDiv].parentNode.cellIndex;
        break;
      }
    }
    var oDiv = (iDiv == aoDiv.length-1) ? null : aoDiv[iDiv+1];
    if (iCell != null){
      shTree.addExpander(oTr.cells[iCell],oDiv);
      oExp = shTree.getExpander(oTr);
    }
  }
  if (oExp){
    if (bOn && oExp.className.indexOf('ico_tree_open_off') >= 0){
      jsHelper.setClass(oExp,0,'ico_tree_open_off');
      jsHelper.setClass(oExp,0,'ico_tree_close');
      jsHelper.setClass(oExp,1,'ico_tree_open');
      jsHelper.setClass(oExp,1,'hand');
      jsHelper.setEvent(oExp,'onmousedown','shTree.switchNode(this);');
    }else if (!bOn && oExp.className.indexOf('ico_tree_open_off') < 0){
      jsHelper.setClass(oExp,0,'ico_tree_open');
      jsHelper.setClass(oExp,0,'ico_tree_close');
      jsHelper.setClass(oExp,1,'ico_tree_open_off');
      jsHelper.setClass(oExp,0,'hand');
      jsHelper.setEvent(oExp,'onmousedown','');
      oTr.lang = '0';
    }
  }
}
shTree.buildTreeRow = function(oTgtCntr,iStartLvl,xIco,sLabel,oResetBefore,sFctOnclick){
  //xIco: string/array von strings. (indexOf('/')>=0)?Img-Pfad:Div-Klasse
  var bFixed;
  var oLbl = null;
  if ((bFixed = shTree.getData('tblFixedLayout')) == null){
    if (typeof(bfCss) == 'undefined' && document.getElementById(shTree.sActTbl).style.tableLayout == 'fixed'){
      shStatus.add('err','bfCss wird benötigt, um autocut richtig zu berechnen!');
    }
    bFixed = (typeof(bfCss) != 'undefined' && document.getElementById(shTree.sActTbl).style.tableLayout == 'fixed') ? 1 : 0;
    shTree.setData('tblFixedLayout', bFixed);
  }
  if (!xIco || typeof(xIco) == 'undefined' || xIco.length == 0){
    var asIco = [];
  }else{
    var asIco = (typeof(xIco) == 'string') ? [xIco] : xIco;
  }
  if (!sLabel || typeof(sLabel) == 'undefined' || sLabel == ''){
    var sLabel = null;
  }
  var oTr = jsHelper.getTr(oTgtCntr);
  if (typeof(oResetBefore) == 'undefined'){
    var oFirst = null;
  }else{
    if (!oResetBefore){
      var oFirst = null;
      oTgtCntr.innerHTML = '';
    }else{
      var oTmp = oResetBefore.previousSibling;
      var oFirst = oResetBefore;
      while (oTmp){
        oDel = oTmp;
        oTmp = oTmp.previousSibling;
        oDel.parentNode.removeChild(oDel);
      }
    }
  }
  if (typeof(this.oSpacer) == 'undefined'){
    this.oSpacer = bfPage.createElement('div',{'className': 'ico16 float_left smallfont'});
    this.oLine   = bfPage.createElement('div',{'className': 'ico16 float_left ico_tree_line smallfont'});
    this.oSub    = bfPage.createElement('div',{'className': 'ico16 float_left ico_tree_sub smallfont'});
    this.oLast   = bfPage.createElement('div',{'className': 'ico16 float_left ico_tree_last smallfont'});
    this.oLabel  = bfPage.createElement('div',{'className': 'td_left_padding float_left'});
    this.oIco    = bfPage.createElement('img',{'className': 'ico16 smallfont'});
  }
  if (sLabel){
    oLbl = this.oLabel.cloneNode(true);
    if (typeof(sFctOnclick) == 'string' && sFctOnclick.length){
      jsHelper.setEvent(oLbl,'onclick',sFctOnclick);
      jsHelper.setClass(oLbl,1,'hand');
    }
    if (bFixed){
      oLbl.style.display = 'none';
    }
    oLbl.innerHTML = sLabel;
    oTgtCntr.insertBefore(oLbl,oFirst);
    oFirst = oLbl;
  }
  for (var i=asIco.length-1; i>=0; i--){
    var oSymbol = this.oSpacer.cloneNode(true);
    if (asIco[i].indexOf('/') < 0){
      jsHelper.setClass(oSymbol,1,asIco[i]);
    }else{
      var oTmp = this.oIco.cloneNode(true);
      oTmp.src = ((asIco[i].split('/').length <= 2) ? _iconset : '')+asIco[i];
      if (i == 0 && typeof(sFctOnclick) == 'string' && sFctOnclick.length){
        jsHelper.setEvent(oTmp,'onclick',sFctOnclick);
        jsHelper.setClass(oTmp,1,'hand');
      }
      oSymbol.appendChild(oTmp);
    }
    oTgtCntr.insertBefore(oSymbol,oFirst);
    oFirst = oSymbol;
  }
  var oPrt = oTr;
  var iLvl = shTree.getLvl(oTr);
  for (var i=iLvl; i>=iStartLvl; i--){
    if (i == iLvl){
      var oNext = (shTree.getNext(oTr)) ? this.oSub.cloneNode(true) : this.oLast.cloneNode(true);
//    }else if (i == 0){
//      var oNext = this.oSpacer.cloneNode(true);
    }else{
      var oNext = (shTree.getNext(oPrt)) ? this.oLine.cloneNode(true) : this.oSpacer.cloneNode(true);
    }
    oTgtCntr.insertBefore(oNext,oFirst);
    oFirst = oNext;
    var oPrt = shTree.getParent(oPrt);
  }
  if (bFixed && oLbl){
    var iIcoWidth;
    var iIcoHeight;
    if ((iIcoWidth = shTree.getData('icoWidth')) == null || (iIcoHeight = shTree.getData('icoHeight')) == null){
      iIcoWidth  = bfCss.getCss('.ico16','width',1);
      iIcoHeight = bfCss.getCss('.ico16','height',1);
      shTree.setData('icoWidth',iIcoWidth);
      shTree.setData('icoHeight',iIcoHeight);
    }
    var iColWidth;
    var hColWidth;
    var sCSpan = ((typeof(oTgtCntr.colSpan) != 'undefined' && oTgtCntr.colSpan != null) ? oTgtCntr.colSpan : 0).toString();
    if ((hColWidth = shTree.getData('colWidth')) == null || typeof(iColWidth = hColWidth[sCSpan]) == 'undefined'){
      hColWidth = (hColWidth == null) ? {} : hColWidth;
      var oTbl = document.getElementById(shTree.sActTbl);
      var oTmpTbl = oTbl.cloneNode(false);
      oTmpTbl.id = '';
      oTmpTbl.style.position = 'absolute';
      oTmpTbl.style.top      = '2000px';
      oTmpTbl.style.display  = '';
      document.body.appendChild(oTmpTbl);
      if (oTbl.offsetWidth != 0 && oTbl.offsetWidth != oTmpTbl.offsetWidth){
        oTmpTbl.style.width = oTbl.offsetWidth+'px';
      }
      oTmpTbl.appendChild(oTbl.getElementsByTagName('colgroup')[0].cloneNode(true));
      oTmpTbl.appendChild(oTbl.tHead.cloneNode(true));
      var oTBdy = bfPage.createElement('tbody');
      oTmpTbl.appendChild(oTBdy);
      oTBdy.appendChild(jsHelper.getTr(oTgtCntr).cloneNode(true));
      oTBdy.rows[0].style.display = '';
      var iTdWidth = oTBdy.rows[0].cells[oTgtCntr.cellIndex].clientWidth;
      document.body.removeChild(oTmpTbl);
      iColWidth = (iTdWidth - 1) - jsHelper.getRealStyle(oTgtCntr,'padding-left',1) - jsHelper.getRealStyle(oTgtCntr,'padding-right',1);
      hColWidth[sCSpan] = iColWidth;
      shTree.setData('colWidth',hColWidth);
    }
    var iLblPad;
    if ((iLblPad = shTree.getData('lblPad')) == null){
      iLblPad = jsHelper.getRealStyle(oLbl,'padding-left',1);
      shTree.setData('lblPad',iLblPad);
    }
    oLbl.style.width = (iColWidth - iLblPad - ((oTgtCntr.getElementsByTagName('div').length - 1) * iIcoWidth))+'px';
    oLbl.style.height = iIcoHeight+'px';
    oLbl.style.lineHeight = iIcoHeight+'px';
    jsHelper.setClass(oLbl,1,'autocut');
    oLbl.style.display = '';
  }
}
shTree.resetColWidth = function(sTblId,iWidthDiff){
  shTree.sActTbl = sTblId;
  if (shTree.getData('tblFixedLayout') && iWidthDiff != 0){
    var asChilds = shTree.getChilds(jsHelper.getTBody(document.getElementById(sTblId)));
    for (var i=0;i<asChilds.length;i++){
      var oNode = document.getElementById(asChilds[i]);
      var oLbl;
      if ((oLbl = shTree.getLabelObj(oNode)) && typeof(oLbl.style) != 'undefined' && typeof(oLbl.style.width) != 'undefined'){
        oLbl.style.width = (parseInt(oLbl.style.width)-iWidthDiff)+'px';
      }
    }
  }
  var hColWidth = shTree.getData('colWidth') || {};
  for (var sKey in hColWidth){
    hColWidth[sKey] = hColWidth[sKey]-iWidthDiff;
  }
  shTree.setData('colWidth',hColWidth);
}
shTree.setLine = function(oTr,bSet,bSelf){
  if (typeof(bSet) == 'undefined'){
    var bSet = 1;
  }
  if (typeof(bSelf) == 'undefined'){
    var bSelf = 0;
  }
  if (bSelf){
    if (((bSet && shTree.getNext(oTr)) || (!bSet && !shTree.getNext(oTr))) && shTree.hasChilds(oTr)){
      var aoDiv = oTr.getElementsByTagName('div');
      var iCell = null;
      for (var iDiv=0;iDiv<aoDiv.length;iDiv++){
        if (aoDiv[iDiv].className.match(/ico_tree_(sub|last)/)){
          iCell = aoDiv[iDiv].parentNode.cellIndex;
          break;
        }
      }
      if (iCell != null){
        var asChilds = shTree.getChilds(oTr);
        for (var i=0; i<asChilds.length; i++){
          jsHelper.setClass(document.getElementById(asChilds[i]).cells[iCell].getElementsByTagName('div')[iDiv],bSet,'ico_tree_line');
        }
      }
    }
  }else{
    var oPrev;
    if (!shTree.getNext(oTr) && (oPrev = shTree.getPrev(oTr)) && shTree.hasChilds(oPrev)){
      var aoDiv = oPrev.getElementsByTagName('div');
      var iCell = null;
      for (var iDiv=0;iDiv<aoDiv.length;iDiv++){
        if (aoDiv[iDiv].className.match(/ico_tree_(sub|last)/)){
          iCell = aoDiv[iDiv].parentNode.cellIndex;
          break;
        }
      }
      if (iCell != null){
        var asChilds = shTree.getChilds(oPrev);
        for (var i=0; i<asChilds.length; i++){
          jsHelper.setClass(document.getElementById(asChilds[i]).cells[iCell].getElementsByTagName('div')[iDiv],bSet,'ico_tree_line');
        }
      }
    }
  }
}
shTree.rowDelete = function(oTr){
  shTree.sActTbl = jsHelper.getTable(oTr).id;
  if (shTree.hasChilds(oTr)){
    var asChilds = shTree.getChilds(oTr);
    for (var i=0;i<asChilds.length;i++){
      shTree.rowDelete(document.getElementById(asChilds[i]));
    }
  }
  shTree.setLine(oTr,0);
  var oPrt = shTree.getParent(oTr);
  var oNxt = shTree.getNext(oTr);
  var oPrev = shTree.getPrev(oTr);
  var sId = (oNxt) ? oNxt.id : 0;
  shTree.setCache(oPrev,'oNxt',sId,0);
  var sId = (oPrev) ? oPrev.id : 0;
  shTree.setCache(oNxt,'oPrv',sId);
  shTree.spliceCache(oPrt,'aoChilds',oTr.id,0);
  shTree.spliceCache(oPrt,'aoChilds',oTr.id,1);
  var oTmp = oPrt;
  while (oTmp = shTree.getParent(oTmp)){
    shTree.spliceCache(oTmp,'aoChilds',oTr.id,0);
  }
  shTree.spliceCache(oTr.parentNode,'aoChilds',oTr.id,0);
  oTr.parentNode.removeChild(oTr);
  if (oPrt && !shTree.hasChilds(oPrt)){
    if (oPrt.innerHTML.indexOf('tree_close') >= 0){
      shTree.switchNode(shTree.getExpander(oPrt));
    }
    shTree.enableExpander(oPrt,0);
  }else if (oPrev && !oNxt){
    shTree.refreshTreeIco(oPrev,1);
  }
}
shTree.setLabel = function(oNode,sText){
  var aoDivs = shTree.getDivCntr(oNode).getElementsByTagName('div');
  if (aoDivs.length > 0){
    var oLabel = aoDivs[aoDivs.length - 1];
    oLabel.innerHTML = sText;
  }
}
shTree.getLabelObj = function(oTr){
  var oLabel = null;
  var aoDivs = shTree.getDivCntr(oTr).getElementsByTagName('div');
  if (aoDivs.length > 0){
    oLabel = aoDivs[aoDivs.length - 1];
  }
  return oLabel;
}

shTree.getDivCntr = function(oNode){
  var oDivCntr = null;
  var aoTd = oNode.getElementsByTagName('td');
  for (var i=0; i<aoTd.length; i++){
    if (aoTd[i].innerHTML.match(/tree_(sub|last|line)/)){
      var oDivCntr = aoTd[i];
      break;
    }
  }
  return oDivCntr;
}
shTree.rowInsertCmpl = function(xArgs/*!!!oNewRow, or hash of params!!!*/,oTBdy,sParentPath,bTop,xIco,sLabel,sFctLoadChilds){
  if (typeof(xArgs.nodeName) != 'undefined' && xArgs.nodeName == 'TR'){
    var oNewRow = xArgs;
    var sFctOnclick = null;
  }else{
    var oNewRow         =         xArgs['new_row'];
    var oTBdy           =         xArgs['tbody'];
    var sParentPath     = (typeof(xArgs['parent_path']) != 'undefined')     ? xArgs['parent_path'] : oNewRow.id.replace(/[^\/]+\/$/,'');
    var bTop            = (typeof(xArgs['top']) != 'undefined')             ? xArgs['top'] : 0;
    var xIco            = (typeof(xArgs['x_ico']) != 'undefined')           ? xArgs['x_ico'] : null;
    var sLabel          = (typeof(xArgs['label']) != 'undefined')           ? xArgs['label'] : null;
    var sFctLoadChilds  = (typeof(xArgs['fct_load_childs']) != 'undefined') ? xArgs['fct_load_childs'] : 0;
    var sFctOnclick     = (typeof(xArgs['fct_onclick']) != 'undefined')     ? xArgs['fct_onclick'] : null;
  }
  shTree.rowInsert(oNewRow,oTBdy,sParentPath,bTop,sFctLoadChilds);
  var bNoSession = shTree.getData('bNoSession');
  if (bNoSession == null){
    bNoSession = (jsHelper.getTable(oTBdy).className.indexOf('_no_session') >= 0) ? 1 : 0;
    shTree.setData('bNoSession',bNoSession);
  }
  var bNoRecycle = shTree.getData('bNoRecycle');
  if (bNoRecycle == null){
    bNoRecycle = (jsHelper.getTable(oTBdy).className.indexOf('_no_recycle') >= 0) ? 1 : 0;
    shTree.setData('bNoRecycle',bNoRecycle);
  }
  var aoTd = oNewRow.getElementsByTagName('td');
  var oDivCntr = shTree.getDivCntr(oNewRow);
  var iStart = 0;
  if (!oDivCntr){
    oDivCntr = aoTd[0];
  }
  var aoDivs = oDivCntr.getElementsByTagName('div');
  var oLast = null;
  for (var i=aoDivs.length-1; i>=0; i--){
    if (i > 0 && aoDivs[i-1].className.match(/tree_(sub|last)/)){
      oLast = aoDivs[i];
      iStart = shTree.getLvl(oNewRow) - (i-1);
      break;
    } else if (i == 0 && aoDivs.length == 1){
      iStart = shTree.getLvl(oNewRow);
    }
  }
  shTree.buildTreeRow(oDivCntr,iStart,xIco,sLabel,oLast,sFctOnclick);
  if (shTree.getCache(oNewRow,'sFctLoadChilds') !== 0){
    shTree.enableExpander(oNewRow,1);
  }
}
shTree.rowInsert = function(oNewRow,oTBdy,sParentPath,bTop,sFctLoadChilds){
  if (typeof(bTop) == 'undefined'){
    bTop = 0;
  }
  if (typeof(sFctLoadChilds) == 'undefined'){
    sFctLoadChilds = 0;
  }
  shTree.sActTbl = oTBdy.parentNode.id;
  var oPrt = document.getElementById(sParentPath);
  var bPrevTreeIco = 0;
  if (!oPrt){
    if (bTop && shTree.hasChilds(oTBdy)){
      shTree.refreshTreeIco(oNewRow,0);
      var asChilds = shTree.getChilds(oTBdy,1);
      oTBdy.insertBefore(oNewRow,document.getElementById(asChilds[0]));
    }else{
      oTBdy.appendChild(oNewRow);
      if (!bTop){
        bPrevTreeIco = 1;
      }
    }
    shTree.appendCache(oTBdy,'aoChilds',oNewRow.id,1,bTop);
  }else{
    if (bTop){
      if (shTree.hasChilds(oPrt)){
        var asChilds = shTree.getChilds(oPrt,1);
        oTBdy.insertBefore(oNewRow,document.getElementById(asChilds[0]));
        shTree.refreshTreeIco(oNewRow,0);
      }else{
        var oNxt = shTree.getNext(oPrt,1);
        if (oNxt){
          var oTmp = jsHelper.getPreviousSibling(oNxt);
          while (oTmp && (typeof(oTmp.id) == 'undefined' || oTmp.id.indexOf(oPrt.id) != 0)){
            oTmp = jsHelper.getPreviousSibling(oTmp);
          }
          if (oTmp){
            oNxt = oTmp.nextSibling;
          }
        }
        oTBdy.insertBefore(oNewRow,oNxt);
      }
      shTree.appendCache(oPrt,'aoChilds',oNewRow.id,1,bTop);
    }else{
      if (shTree.hasChilds(oPrt)){
        bPrevTreeIco = 1;
      }
      var oNxt = shTree.getNext(oPrt,1);
      if (oNxt){
        var oTmp = jsHelper.getPreviousSibling(oNxt);
        while (oTmp && (typeof(oTmp.id) == 'undefined' || oTmp.id.indexOf(oPrt.id) != 0)){
          oTmp = jsHelper.getPreviousSibling(oTmp);
        }
        if (oTmp){
          oNxt = oTmp.nextSibling;
        }
      }
      oTBdy.insertBefore(oNewRow,oNxt);
      shTree.appendCache(oPrt,'aoChilds',oNewRow.id,1,bTop);
    }
  }
  var oNxt = shTree.getNext(oNewRow,0);
  var oPrv = shTree.getPrev(oNewRow);
  var sNxt = (oNxt) ? oNxt.id : null;
  var sPrv = (oPrv) ? oPrv.id : null;
  shTree.setCache(oNewRow,'oPrt',(oPrt) ? oPrt.id : null);
  shTree.setCache(oPrv,'oNxt',oNewRow.id,'0');
  shTree.setCache(oNxt,'oPrv',oNewRow.id);
  shTree.setCache(oNewRow,'oNxt',sNxt,'0');
  shTree.setCache(oNewRow,'oPrv',sPrv);
  shTree.setCache(oNewRow,'sFctLoadChilds',sFctLoadChilds);
  shTree.appendCacheAsc(shTree.getParent(oNewRow),'aoChilds',oNewRow,0,bTop);

  shTree.setLine(oNewRow);
  if (bPrevTreeIco && oPrv){
    shTree.refreshTreeIco(oPrv,0);
  }
  if (typeof(shTree.hNodeStates[oNewRow.id]) != 'undefined'){
    oNewRow.lang = shTree.hNodeStates[oNewRow.id];
  }else if (typeof(oNewRow.lang) == 'undefined' || typeof({'0':1,'1':1}[oNewRow.lang]) == 'undefined'){
    oNewRow.lang = '0';
  }
  if (oPrt){
    shTree.enableExpander(oPrt,1);
    if (!shTree.isExpandet(oNewRow)){
      oNewRow.style.display = 'none';
    }else{
      oNewRow.style.display = '';
    }
  }
}
shTree.setNodeStates = function(hNodeStates){
  if (typeof(hNodeStates) != 'undefined' && hNodeStates){
    this.hNodeStates = hNodeStates;
  }
}
shTree.reExpand = function(sId,bNoRecycle){
  if (shTree.getData('bNoRecycle') !== null){
    var bNoRecycle = shTree.getData('bNoRecycle');
  }else{
    var bNoRecycle = bNoRecycle || 0;
    shTree.setData('bNoRecycle',bNoRecycle);
  }
  var oRows = document.getElementById(sId).rows;
  var hOpen = {};
  var aTmp;
  var sTmp = '';
  var oDivs;
  var sMsg = '';
  var asLoad = [];
  for (var i=0; i<oRows.length; i++){
    if (oRows[i].id && !oRows[i].id.match(/\/hide\/$/)){
      if (oRows[i].lang == '1' && (sFctLoadChilds = shTree.getCache(oRows[i],'sFctLoadChilds')) !== 0 && !shTree.hasChilds(oRows[i])){
        asLoad.push(oRows[i].id);
      }else{
        if (oRows[i].lang == '1' && !shTree.hasChilds(oRows[i])){
          oRows[i].lang = '0';
        }
        if ((bOpen = (oRows[i].lang == '1') ? 1 : 0)){
          if ((sTmp = jsHelper.getParentId(oRows[i].id)) && hOpen[sTmp+'/'] == 1 || sTmp == ''){
            hOpen[oRows[i].id] = 1;
          }
          var oExp;
          if ((oExp = shTree.getExpander(oRows[i])) && oExp.className.indexOf('ico_tree_open_off') < 0){
            jsHelper.setClass(oExp,0,'ico_tree_open');
            jsHelper.setClass(oExp,1,'ico_tree_close');
          }
        }else{
          var oExp;
          if ((oExp = shTree.getExpander(oRows[i])) && oExp.className.indexOf('ico_tree_open_off') < 0){
            jsHelper.setClass(oExp,0,'ico_tree_close');
            jsHelper.setClass(oExp,1,'ico_tree_open');
          }
        }
        sTmp = jsHelper.getParentId(oRows[i].id)+'/';
        if (hOpen[sTmp] == 1){
          oRows[i].style.display = '';
        }else if(sTmp != '/'){
          oRows[i].style.display = 'none';
        }
      }
    }
  }
  for (var i=0;i<asLoad.length;i++){
    var oTr = document.getElementById(asLoad[i]);
    oTr.lang = '0';
    shTree.switchNode(shTree.getExpander(oTr),1);
  }
  if (!bNoRecycle){
    jsHelper.tblReCycle(sId);
  }
}
shTree.countNoCache = 0;
shTree.getChilds = function(oSrc,bNoSubs){
  shTree.sActTbl = jsHelper.getTable(oSrc).id;
  if (typeof(bNoSubs) == 'undefined'){
    bNoSubs = 0;
  }
  var asChilds;
  if ((asChilds = shTree.getCache(oSrc,'aoChilds',bNoSubs)) == 0){
    var asChilds = new Array();
    var bFirst = 0;
    if (oSrc.nodeName == 'TR'){
      var oChild = oSrc.nextSibling;
      var sPath  = oSrc.id;
    }else{
      var oChild = oSrc.firstChild;
      var sPath  = '/';
    }
    while (oChild){
      if (oChild.id){
        if (oChild.id.indexOf(sPath) == 0 && !oChild.id.match(/\/(__header__|hide)\/$/) && (!oChild.id.match(/^\/0\//) || sPath.indexOf('/0/') == 0)){
          asChilds.push(oChild.id);
          bFirst = 1;
        }else if (oChild.id.indexOf(sPath) < 0){
          break;
        }
      }
      oChild = (bNoSubs && bFirst) ? shTree.getNext(oChild) : oChild.nextSibling;
    }
    shTree.setCache(oSrc,'aoChilds',asChilds,bNoSubs);
  }
  return asChilds;
}
shTree.getPos = function(oTr){
  var oPrt;
  var asChilds = shTree.getChilds(((oPrt = shTree.getParent(oTr)) ? oPrt : oTr.parentNode),1);
  for (var i=0; i<asChilds.length; i++){
    if (oTr.id == asChilds[i]){
      return i;
    }
  }
}
shTree.getPrev = function(oTr){
  var sPrev;
  if ((sPrev = shTree.getCache(oTr,'oPrv')) != 0){
    if (sPrev){
      var oPrev = document.getElementById(sPrev);
    }else{
      var oPrev = null;
    }
  }else{
    var oPrev = oTr.previousSibling;
    var oPrt = shTree.getParent(oTr);
    var sPath = (oPrt) ? oPrt.id : '/';
    while (    oPrev
            && (    oPrev.tagName != 'TR'
                 || typeof(oPrev.id) == 'undefined'
                 || oPrev.id.match(/\/hide\/$/)
                 || oPrev.id.match(/\/__header__\//)
                 || (sPath == '/' && shTree.getParent(oPrev))
                 || (sPath != '/' && shTree.getParent(oPrev) != oPrt))){
      oPrev = oPrev.previousSibling;
    }
    shTree.setCache(oTr,'oPrv',(oPrev) ? oPrev.id : null);
  }
  return oPrev;
}
shTree.getNext = function(oTr,bForceUpper,oStart){
  if (typeof(bForceUpper) == 'undefined'){
    bForceUpper = 0;
  }
  var sNxt;
  if ((sNxt = shTree.getCache(oTr,'oNxt',0)) != 0){
    if (sNxt){
      var oNxt = document.getElementById(sNxt);
    }else{
      var oNxt = null;
      var oPrt = shTree.getParent(oTr);
      if (bForceUpper && oPrt){
        oNxt = shTree.getNext(oPrt,1,oTr);
      }
    }
  }else{
    var oNxt = (typeof(oStart) == 'undefined') ? oTr.nextSibling : oStart.nextSibling;
    var oPrt = shTree.getParent(oTr);
    var sPath = (oPrt) ? oPrt.id : '/';
    while (    oNxt
            && (    oNxt.tagName != 'TR'
                 || typeof(oNxt.id) == 'undefined'
                 || oNxt.id.indexOf('/hide/') >= 0
                 || oNxt.id.indexOf('/__header__/') >= 0
/*
                 || (sPath == '/' && shTree.getParent(oNxt))
                 || (sPath != '/' && shTree.getParent(oNxt) != oPrt))){
trying to get faster, to be tested!!! :: */
                 || (sPath != '/' && oNxt.id.substr(0,sPath.length) != sPath && oNxt.id.indexOf(oTr.id) < 0)
                 || (sPath == '/' && oNxt.id.split('/').length != 3))){
      oNxt = oNxt.nextSibling;
      if (sPath != '/' && oNxt && oNxt.tagName == 'TR' && typeof(oNxt.id) != 'undefined' && oNxt.id.indexOf('/hide/') < 0 && oNxt.id.indexOf('/__header__/') < 0 && oNxt.id.indexOf(sPath) < 0){
        oNxt = null;
        break;
      }
    }
    if (!oNxt && bForceUpper && oPrt){
      oNxt = shTree.getNext(oPrt,1,oTr);
    }
    if (!bForceUpper){
      shTree.setCache(oTr,'oNxt',(oNxt) ? oNxt.id : null,bForceUpper);
    }
  }
  return oNxt;
}
shTree.getParent = function(oTr){
  var oPrt = null;
  var sPrt;
  if (oTr){
    if ((sPrt = shTree.getCache(oTr,'oPrt')) != 0){
      if (sPrt){
        var oPrt = document.getElementById(sPrt);
      }else{
        var oPrt = null;
      }
    }else{
      var oPrt = document.getElementById(jsHelper.getParentId(oTr.id)+'/');
/*
      var oPrt = oTr.previousSibling;
      while (oPrt && (typeof(oPrt.id) == 'undefined' || oPrt.id.length == 0 || oTr.id == oPrt.id || oTr.id.indexOf(oPrt.id) != 0)){
        oPrt = oPrt.previousSibling;
      }
      if (oPrt && oTr.id.indexOf(oPrt.id) < 0){
        oPrt = null;
      }
*/
      shTree.setCache(oTr,'oPrt',(oPrt) ? oPrt.id : null);
    }
  }
  return oPrt;
}
shTree.getExpander = function(oTr){
  var aoDiv = oTr.getElementsByTagName('div');
  var oExpander = null;
  for (var i=0;i<aoDiv.length;i++){
    if (typeof(aoDiv[i].title) != 'undefined' && aoDiv[i].title == "expander"){
      oExpander = aoDiv[i];
      break;
    }
  }
  if (!oExpander){
    var aoImg = oTr.getElementsByTagName('img');
    for (var i=0;i<aoImg.length;i++){
      if (aoImg[i].src.indexOf('tree_open_off') >= 0){
        oExpander = aoImg[i];
        break;
      }
    }
  }
  return (typeof(oExpander) == 'undefined') ? null : oExpander;
}
shTree.getLvl = function(oTr){
  var i=0;
  while (oTr = shTree.getParent(oTr)){
    i++;
  }
  return i;
}
shTree.getRoot = function(oTr){
  var oRoot = oTr;
  while (oTr = shTree.getParent(oTr)){
    oRoot = oTr;
  }
  return oRoot;
}
shTree.expandAll = function(sId,oCaller){
  var bExpand = (oCaller.src.indexOf('open_all.gif') != -1) ? 1 : 0;
  var oTBdy = document.getElementById(sId).getElementsByTagName('tbody')[0];
  shTree.sActTbl = oTBdy.parentNode.id;
  function doEvents(){
    for(i=0; i<oTBdy.rows.length; i++){
      var oRow = oTBdy.rows[i];
      if ((oExpander = shTree.getExpander(oRow)) != null && (bExpand && oExpander.parentNode.parentNode.lang != '1' || !bExpand && oExpander.parentNode.parentNode.lang == '1')){
        shTree.switchNode(oExpander,1,1);
      }
    }
    jsHelper.tblReCycle(sId);
    bfDialog.showGhost(0);
  }
  oCaller.src = _iconset+'obj/tree_'+(bExpand ? 'close' : 'open')+'_all.gif';
  bfDialog.showGhost(1);
  setTimeout(doEvents,20);
}
shTree.processTbl = function(sTblId){
  // builds tree by tablerow-ids (icons/lbl taken from first col)
  shTree.sActTbl = sTblId;
  var oFrag = document.createDocumentFragment();
  var oTblTmp = bfPage.createElement('table');
  var oTBdyTmp = bfPage.createElement('tbody');
  oTblTmp.appendChild(oTBdyTmp);
  oFrag.appendChild(oTblTmp);
  var oTBdy = jsHelper.getTBody(document.getElementById(sTblId));
  while (oTBdy.rows.length > 0){
    oTBdyTmp.appendChild(oTBdy.rows[0]);
  }
  while (oTBdyTmp.rows.length > 0){
    var oTr = oTBdyTmp.rows[0];
    var aoImg = oTr.cells[0].getElementsByTagName('img');
    var asImg = [];
    for (var i=aoImg.length-1;i>=0;i--){
      asImg.push(aoImg[i].src);
      aoImg[i].parentNode.removeChild(aoImg[i]);
    }
    var sLabel = oTr.cells[0].innerHTML;
    oTr.cells[0].innerHTML = '';
    shTree.rowInsertCmpl({
      'new_row': oTr,
      'tbody':   oTBdy,
      'label':   sLabel,
      'x_ico':   asImg
    });
  }
  shTree.reExpand(sTblId);
}
-->
