var current,visited,lastStep,total;

function initTree(){
	total=1;
	db=new Array();
	fillTree();
	current=getCookie("currState");
	visited=getCookie("visiState");
	lastStep=getCookie("lastStep");
	initCookies();
	explode();
}

function dbAdd(mother,display,URL,indent,top,keyStep,show,pscore) {
	db[total]=new Object;
	db[total].mother=mother;
	db[total].display=display;
	db[total].URL=URL;
	db[total].indent=indent;
	db[total].top=top;
	db[total].keyStep=keyStep;
	if(typeof show=="undef")show=1;
	db[total].show=show;
	db[total].pscore=pscore;
	total++;
}

function toggle(n){
	if(n!=0){
		var newString="";
		var expanded=current.substring(n-1,n);
		newString+=current.substring(0,n-1);
		newString+=expanded ^ 1;
		newString+=current.substring(n,current.length);
		setCookie("currState",newString);
	}
}

function pad(n) {
	var result="";
	for (var i=1;i<=n;i++)result+="<img src='"+common+"/images/tree/leer.gif' valign='absmiddle' width='1' height='8' border='0' />";
	return result;
}

function explode(){
	current="";
	initState="";
	for(var i=1;i<db.length;i++){ 
		initState+="1";
		current+="1";
	}
	setCookie("currState",initState);
	//history.go(0);
}

function contract(){
	current="";
	initState="";
	for(var i=1;i<db.length;i++){ 
		initState+="0";
		current+="0";
	}
	setCookie("currState",initState);
	//history.go(0);
}

function puzzleVisiState(n,newScore) {
	var newString=visited.substring(0,n-1);
	var oldScore=parseInt(visited.substring(n,n-1));
	if(newScore){ //alert(newScore+"\n"+oldScore)
		switch(true){
		case(oldScore==9 && newScore>0):          newString+=newScore;break; //zuvor erfolglos bearbeitet, jetzt ok -> neuen Wert setzen
		case(oldScore!=9 && newScore<=oldScore):  newString+=oldScore;break; //zuvor schon erfolgreich bearbeitet -> alten Wert behalten
		case(newScore!=9 && newScore>oldScore):   newString+=newScore;break; //erfolgreich bearbeitet -> neuen Wert setzen
		case(newScore==9 && oldScore>0):          newString+=oldScore;break; //aktuell nicht erfolgreich, aber zuvor schon erfolgreich bearbeitet -> alten Wert behalten
		case(newScore==9 && oldScore==0):         newString+=newScore;break; //erster Versuch -> neuen Wert setzen
		default:newString+=newScore;break;	
		}
	}else{
		if(oldScore==0){
			newString+="1";
		}else{
			newString+=oldScore;
		}
	}

	newString+=visited.substring(n,visited.length);
	setCookie("visiState",newString);
	setCookie("lastStep",n);
	//document.getElementById("divpagetitle").innerHTML="<a href='javascript:void(0)' onclick='setScore()'>"+newString+"</a>";
}

function jumpTo(url,target,n){
	parent.location.href=url;
}

function resetTreeCookies(){
	initState="";
	visiState="";
	for(i=1;i<db.length;i++){initState+="0";visiState+="0"}
	current=initState;
	visited=visiState;
	setCookie("currState",initState);
	setCookie("visiState",visiState);
	setCookie("lastStep","");
}

function initCookies(){
	if(current==""||current.length!=(db.length-1)){
		initState="";
		visiState="";
		for(i=1;i<db.length;i++){ 
			initState+="0";
			visiState+="0";
		}
		current=initState;
		visited=visiState;
		setCookie("currState",initState);
		setCookie("visiState",visiState);
		setCookie("lastStep","");
	}
}



function writeTree(){
	initCookies();
	//var textCollapse=tocMinimize;
	//var textExpand=tocMaximize;
	currHighlight=parent.curPageNum;	
	while (currHighlight<db.length && currHighlight>0 && db[currHighlight].show==0)
	{
		currHighlight=currHighlight-1;		
	}
	// Suchen der Grenzen für die Pseudo-Marginalien Navigation 
	if ((db[parent.curPageNum].show==1 && (parent.curPageNum <db.length-1 && db[parent.curPageNum+1].show==0)) || currHighlight !=parent.curPageNum)
	{
		var navFirst=currHighlight;		
		var navLast=currHighlight;
		var navOutput="<table cellpadding=0 cellspacing=0 border=0><tr>";

		while (navLast<db.length && (navLast==currHighlight || (navLast!=currHighlight && db[navLast].show==0)))
		{ 
			// Seitenzahlen
			if (navLast==parent.curPageNum)
			{
				navOutput+="<td class='navtab_a'><a style='color:#004d85;'";
			}
			else	
			{
				navOutput+="<td class='navtab_i'><a style='color:#696969;'";
			}
			navOutput+="<a href='javascript:jumpTo(\""+db[navLast].URL+"\",\""+db[navLast].top+"\","+i+")' >"+(navLast-currHighlight+1)+"</a></td>";
			navLast=navLast+1;					
		}	
		navOutput=navOutput+"</tr></table>";
		navLast=navLast-1;
		parent.document.getElementById("navTab").innerHTML=navOutput;
		
	}
		
	var prevIndentDisplayed=0
	var showMyDaughter=0
	var outline="<table width='187' cellspacing='0' cellpadding='0' border='0'><tr><td></td><td height='1' bgcolor='#dbdee7' colspan='3'></td></tr><tr valign='bottom'>";
	var curScore=0;

	for (var i=1;i<db.length;i++){
		if(!db[i].show) continue;
		var currIndent=db[i].indent	;
		var expanded=current.substring(i-1,i);
		var top=db[i].top;
		if(top=="")top="content";
		if((currIndent==0||currIndent<=prevIndentDisplayed||(showMyDaughter==1&&(currIndent-prevIndentDisplayed==1)))){

		    /*if (currIndent==0)
			{
				outline+="<t><td colspan='2'><img src='"+common+"/images/tree/leer.gif' valign='absmiddle' width='1' height='1' border='0' /></td></tr>";	
			}*/
			outline+="<td valign=top ";
			if(currIndent==0) 
			{
//				if (i==parent.curPageNum) 	
				if (i==currHighlight) 	
					outline+=" class='navmain_current'"			
				else
					outline+=" class='navmain'";				
			}
			else
			{
				outline+=" class='nav'";				
				
			}
			outline+=">"+pad(currIndent);

			keyStep="";
			if(db[i].keyStep)keyStep="_key";

			if(!(db[i].mother)){
				//outline+="<img src='"+common+"/images/tree/blank.gif' width='16' height='16' border='0' /><img src='"+common+"/images/tree/document" + keyStep + ".gif' width='16' height='16' border='0' />";
/*
				if(i<(db.length-1)){
					outline+="<img src='"+common+"/images/tree/line_mid.gif' valign='absmiddle' width='16' height='16' border='0' />";
				}else{
					outline+="<img src='"+common+"/images/tree/line_end.gif' valign='absmiddle' width='16' height='16' border='0' />";
				}
*/
/*
				curScore=parseInt(visited.substring(i-1,i));
				switch(curScore){
					case 0:outline+="<img src='"+common+"/images/tree/check_low.gif' valign='absmiddle' width='11' height='11' border='0' />";break;
					case 1:outline+="<img src='"+common+"/images/tree/check_med.gif' valign='absmiddle' width='11' height='11' border='0' />";break;
					case 9:outline+="<img src='"+common+"/images/tree/check_nogo.gif' valign='absmiddle' width='11' height='11' border='0' />";break;
					default:outline+="<img src='"+common+"/images/tree/check_go.gif' valign='absmiddle' width='11' height='11' border='0' />";break;
				}
*/				
			}else{ 
				if(current.substring(i-1,i)==1){
					outline+="<a color='#ffffff' href=\"javascript:history.go(0)\" onClick=\"toggle("+i+")\">";
					//outline+="<img src='"+common+"/images/tree/minus.gif' width='16' height='16' border='0' /><img src='"+common+"/images/tree/open" + keyStep + ".gif' width='16' height='16' border='0' />";
					child=i+1;
					isOpen=true;
					while (child<db.length && db[child].indent>0)
					{
						if (db[child].show==1) 
						{
							isOpen=true;
							exit;
						}							
						child=child+1;
					}
					//verschwindet links aus dem Bildschirm
					if (isOpen)
					{ 
						outline+="<img src='"+common+"/images/tree/minus.gif' width='1' height='17' border='0' />";
						outline+="</a>";
					}
					else
					{
						outline+="<img src='"+common+"/images/tree/plus.gif' width='1' height='17' border='0' />";
						outline+="</a>";						
					}
				}else{
					outline+="<a href=\"javascript:history.go(0)\" onClick=\"toggle(" + i + ")\">";
					//outline+="<img src='"+common+"/images/tree/plus.gif' width='16' height='16' border='0' /><img src='"+common+"/images/tree/closed" + keyStep + ".gif' width='16' height='16' border='0' />";
					outline+="<img src='"+common+"/images/tree/plus.gif' width='8' height='17' border='0' />";
					outline+="</a>";
				}
			}
			outline+="&nbsp;</td>";
			if(db[i].URL==""||db[i].URL==null){
				outline+="<td> "+db[i].display+"</td>";
			}else{

				if(currIndent==0)
				{
//					if (i==parent.curPageNum)
					if (i==currHighlight)
					{
						outline+="<td width='9' bgcolor='#3e588b'></td><td ";
						outline+=" class='navmain_current' valign='middle'>";
					}
					else
					{
						outline+="<td width='9' bgcolor='#3e588b'></td><td ";
						outline+=" class='navmain' valign='middle'>";
					}
				}
				else
				{
//					if((currIndent!=0)&&(i==parent.curPageNum)) 
					if((currIndent!=0)&&(i==currHighlight)) 
					{
						outline+="<td valign='top' width='9' bgcolor='#677aa4'><a name='actEntry'>&nbsp;</a></td><td ";
						outline+=" class='nav_current'>";
					}
					else
					{
						outline+="<td width='9' bgcolor='#677aa4'></td><td ";
						outline+=" class='nav'>";
					}
				}
			
			
							outline+="<table cellpadding=0 cellspacing=0><tr>";
							if((i==parent.curPageNum)) 
					{
						//Aktuelle Seite						
						if((currIndent!=0)) 
						{	
						   	outline+="<td width=20></td>";
							outline+="<td><a style='color:#ffffff;text-decoration:none;font-weight:bold;'";
						}
						else
						{	
						//Aktueller Themenblock
						outline+="<td valign='top' width=8><a name='actEntry'>&nbsp;</a></td>";
							outline+="<td><a style='font-family:verdana;color:#ffffff;font-weight:bold;text-decoration:none;'";
	
						}
					}
					else
					{
						if((currIndent!=0)) 
						{
							if (i==currHighlight)
							{
								outline+="<td width=20></td>";					
								outline+="<td><a style='text-transformation:none;color:white;font-weight:bold;'";
							}
							else
							{
								outline+="<td width=20></td>";					
								outline+="<td><a style='text-transformation:none;'";
							}
						}
						else
						{
							if (i==currHighlight)
							{
								outline+="<td width=8></td>";	
								outline+="<td><a style='text-transformation:uppercase;color:white;font-weight:bold;'";	
							}
							else
							{
								outline+="<td width=8></td>";	
								outline+="<td><a style='text-transformation:uppercase;font-weight:bold;'";	
		
							}
						}
					}
					
				
				outline+="href='javascript:jumpTo(\""+db[i].URL+"\",\""+top+"\","+i+")' >"+db[i].display+"</a></td></tr></table>";
//				if(i==parent.curPageNum)outline+="";
				if(i==currHighlight)outline+="";
				if(currIndent==0)outline+="";
//				if(i==parent.curPageNum) 
				if(i==currHighlight) 
						outline+="</span>";
				curScore=parseInt(visited.substring(i-1,i));
				outline+="</td>";
				
				
				if(currIndent==0)
				{
//					if (i==parent.curPageNum)

//Bereich Häckchen hinter den Titeln
					if (i==currHighlight)
					{
//Aktueller Themenblock
						outline+="<td";
						outline+=" width='15' style='border-bottom:1px solid #dbdee7;background-color:#3e588b;' valign='middle' align='center'>";
					}
					else
					{
//Themenblock
						outline+="<td";
						outline+=" width='15' style='background-color:#ffffff;border-bottom:1px solid #dbdee7;' valign='center' align='right'>";
					}
				}
				else
				{
//					if((currIndent!=0)&&(i==parent.curPageNum)) 
					if((currIndent!=0)&&(i==currHighlight)) 
					{
//Aktuelle Seite
						outline+="<td";
						outline+=" width='18' style='background-color:#677aa4;border-bottom:1px solid #dbdee7;' align='center'>";
					}
					else
					{
//Seiten
						outline+="<td";
						outline+=" width='18' style='background-color:#ffffff;border-bottom:1px solid #dbdee7;' align='center'>";
					}
				}
				
				switch(curScore){
					case 0:outline+="<img src='"+common+"/images/tree/leer.gif' valign='absmiddle' width='11' height='11' border='0' />";break;
					case 1:outline+="<img src='"+common+"/images/tree/ok.png' valign='absmiddle' width='13' height='13' border='0' />";break;
					case 9:outline+="<img src='"+common+"/images/tree/check_nogo.gif' valign='absmiddle' width='11' height='11' border='0' />";break;
					default:outline+="<img src='"+common+"/images/tree/check_go.gif' valign='absmiddle' width='11' height='11' border='0' />";break;
				}						
				outline+="</td>";


//outline+="<td>";
//				if(currIndent==0)outline+="<b>";
//				if(i==parent.curPageNum)outline+="<b>";
//				outline+=" <a href='javascript:jumpTo(\""+db[i].URL+"\",\""+top+"\","+i+")'>"+db[i].display+"</a>";
//				if(i==parent.curPageNum)outline+="</b>";
//				if(currIndent==0)outline+="</b>";
//				outline+="</td>";
			}

			prevIndentDisplayed=currIndent;
			showMyDaughter=expanded;
			outline+="</tr>";
		}
	}	
	outline+="</table>";	
	document.getElementById("treeOut").innerHTML=outline;
	parent.document.getElementById("pageCount").innerHTML=parent.curPageNum +"/"+(db.length-1);	
	outline="";
}
