// Copyright © 2002 i4 engineering GmbH, All Rights Reserved

var cE=1;
var lastLevel=1
var lastNoIndex=0
var doAlter=false;
var nextFrameTree="navTree.html";
var nofE=0;
var tLevel=new Array (); // 1, 2, 3, ..., not 0
var tE=new Array ();     // entry text
var tEis=new Array ();   // array of sorted indices
var tHREF=new Array ();
var tIcon=new Array ();
var tContainer=new Array ();
var tOpen=new Array ();

function toHover(icon_s){
frameTree.document.images[icon_s].src=frameTree.document.images[icon_s].src.replace("normal","hover");
}

function toNormal(icon_s){
frameTree.document.images[icon_s].src=frameTree.document.images[icon_s].src.replace("hover","normal");
}

function nextEntry(level,entry,pageName,iconName){
var i=tE.length; // i>0, but javascript array index starts at 0
if (i<1){i=1};
tLevel[i]=level;
tE[i]=entry;
if (level!=0){tHREF[i]=pageName};
tIcon[i]=iconName;
tOpen[i]=false;
if (lastNoIndex>0){tContainer[lastNoIndex]=(level>lastLevel)}
if (level>0) {
  lastLevel=level;
  lastNoIndex=i;
};
nofE=i;
}


function writeContainer(mf,i_start){
var i=i_start;
var done=false;
var level=tLevel[i];
var iconName;
var isOpen;
//
mf.writeln('<table border="0" cellspacing="0" cellpadding="0">');
while (true) { // create tree entries
  while (true){ // skip index-only entries
    if (i>nofE){break};
    if (tLevel[i]>0){break};
    i++;
  } // skip index-only
  //
  if (i>nofE){break};
  if (tLevel[i]<level){break}
  if (tLevel[i]>level){ // write subtree
    if (isOpen) {
      mf.writeln('<tr><td></td><td class="tree">');
      //bb mf.writeln('<tr><td></td><td></td><td>');
      i=writeContainer(mf,i);
      mf.writeln('</td></tr>');
    }
    else {i++};
  }
  else { // write tree entry
    isOpen=tOpen[i];
    iconName='icon/'+tIcon[i].replace("hover","normal");
    if (isOpen) {iconName=iconName.replace("plus","minus")}
    else {iconName=iconName.replace("minus","plus")}
    mf.write('<tr ');
	if(i==cE){mf.write(' bgcolor="'+cE_bgColor+'"')}
    mf.write('><td class="tree">');
    if (tContainer[i]) {mf.write('<a href="javascript:parent.changeTree('+i+',true)">')}
	else               {mf.write('<a href="javascript:parent.doPage('+i+')">')};
    mf.writeln('<img src="'+iconName+'" border="0" name="icon'+i+'" alt="" align="absmiddle" onmouseover="parent.toHover(\'icon'+i+'\')" onmouseout="parent.toNormal(\'icon'+i+'\')"></a>');
    // bb mf.write('</td><td>&nbsp;</td><td');
    mf.write('</td><td class="tree"');
    mf.writeln('>');
    mf.writeln('<a name="entry'+i+'" href="javascript:parent.doPage('+i+')">'+tE[i]+'</a>');
    mf.writeln('</td></tr>');
    i++;
  }
} // while (true) // create tree entries
mf.writeln('</table>');
return i;
} // function writeContainer


function rewriteTree(){
//
// check input
if((cE>0)&&(cE<=nofE)){
  if (doAlter){tOpen[cE]=!tOpen[cE]};
}
else {
  if (cE<1){cE=1}
  else {cE=nofE}
}
//
// skip index-only entries
while (true){
  if (cE==1){break};
  if (tLevel[cE]>0){break};
  cE--;
} // skip index-only
//
// open entries where needed
var i=cE;
var level=tLevel[i];
while (true) {
  i--;
  // skip index-only entries
  while (true){
    if (i<1){break};
    if (tLevel[i]>0){break};
    i--;
  } // skip index-only
  if (i<1){break}
  if (tLevel[i]<level){
    tOpen[i]=true;
    level=tLevel[i]; 
  } // if
  if (level==1){break}
}
//
// rewrite document
var mf=frameTree.document;
writeContainer(mf,1);
} // function rewriteTree

function changeTree(entry,alter){
  var fwd=(entry>cE);
  doAlter=alter;
  cE=entry;
  if (cE<1){cE=1;doAlter=false};
  if (cE>nofE){cE=nofE;doAlter=false}
  //
  while (true){ // skip index-only entries
    if (cE==1){break};
    if (tLevel[cE]>0){break};
    if (cE==nofE){fwd=false};
    if (fwd){cE++} else {cE--};
  } // skip index-only
  //
  frameTree.location.href=nextFrameTree+"#entry"+cE;
} // function changeTree

function buildIndex(){
var i=1;
var j=0;
var nofSame=1;
var s;
if (tEis.length==0){
  var sep="::";
  var tE_sorted=new Array ();
  var splitResult=new Array ();
  var nofSame=1;
  while (true) { // fill array to be sorted
    if (i>nofE){break};
    s=tE[i].toLowerCase();
    if (i<10){tE_sorted[i-1]=s+"  "+sep+i}
    else {
      if (i<100){tE_sorted[i-1]=s+" "+sep+i}
      else {tE_sorted[i-1]=s+sep+i};
    };
    i++;
  }
  tE_sorted.sort();
  i=1;
  while (true) { // create array of indices
    if (i>nofE){break};
    splitResult=tE_sorted[i-1].split(sep);
    tEis[i]=splitResult[1];
    i++;
  }
}
i=1;
var pf=framePage.document;
pf.writeln('<table>');
while (true) { // create index entries
  if (i>nofE){break};
  if (tLevel[tEis[i]]<0){ // sitemap-only entry
    pf.writeln('<a class="sitemap" href="'+tHREF[tEis[i]]+'">'+tE[tEis[i]]);
  }
  else { // entry related to the navigation tree
    j=0;
	while (tLevel[tEis[i]-j]==0) {j++}; // find last no-index entry
    pf.writeln('<a class="sitemap" href="javascript:parent.doIndex('+(tEis[i]-j)+')">'+tE[tEis[i]]);
  }
  if (i<nofE){
    if (tE[tEis[i]]==tE[tEis[i+1]]){
      pf.writeln(' ('+nofSame+')');
      nofSame++;    
    }
    else{
      if (nofSame>1){pf.writeln(' ('+nofSame+')')};
      nofSame=1;
    }
  }
  else{
    if (nofSame>1){pf.writeln(' ('+nofSame+')')}
  }
  pf.writeln('</a><br>');
  i++;
} // while (true) // create index entries
pf.writeln('</table>');
} // function buildIndex

