
var sidebar_id=false;
var interval_referrer=false;
var is_init=true;
var navi_height=0;
var parent_pos=0;

var current_pos;

function do_movablesidebar()
	{
	if (!sidebar_id && document.getElementById('movablesidebar'))
		{
		// sidebar suchen
		sidebar_id=document.getElementById('movablesidebar');
		
		// fuer die positionierung auf absolute stellen
		sidebar_id.style.position="absolute";
		
		// Bestimme Höhe der aktuellen Navigation
		if (document.getElementById('navi'))
			{
			navi_height=document.getElementById('navi').offsetHeight;
			}
			
		// die position des eltern-elements bestimmen
		var aktuelles=sidebar_id.parentNode;
		
		while(aktuelles!=null)
			{
			parent_pos+=aktuelles.offsetTop;
			aktuelles=aktuelles.offsetParent;
			}
			
		// die sidebar pos auf parent_pos setzen, damit die scrollleiste nicht flackert
		sidebar_id.style.top=(parent_pos+navi_height)+"px";
		sidebar_id.style.display="block";
		
		// mindesthoehe des parent-elements definieren und funktion nicht mehr ausführen, da sich sidebar eh nicht bewegen kann.
		if (sidebar_id.parentNode.offsetHeight<navi_height+sidebar_id.offsetHeight)
			{
			sidebar_id.parentNode.style.height=(navi_height+sidebar_id.offsetHeight)+"px";
			
			window.clearInterval(interval_referrer);
			return;
			}
		}
	else if (!sidebar_id)
		{
		// sollte keine sidebar vorhanden sein, funktion nicht mehr ausfuehren
		window.clearInterval(interval_referrer);
		return;
		}
		
	// aktuelle fensterhoehe bestimmen
	var fensterhoehe=700;
	isIE ? fensterhoehe=document.body.offsetHeight : fensterhoehe=window.innerHeight;
	
	// bestimmen, wie weit gescrollt wurde
	document.body ? y_scrollposition=document.body.scrollTop : y_scrollposition=window.pageYOffset;
	
	// neue position berechnen: ganz unten
	var new_pos=fensterhoehe+y_scrollposition-sidebar_id.offsetHeight;
	
	// wenn die neue pos zu weit unten is (also die sidebar ueber die parent druebersteht), dann auf parent-groesse positionieren
	if (new_pos>parent_pos+sidebar_id.parentNode.offsetHeight-sidebar_id.offsetHeight)
		{
		new_pos=parent_pos+sidebar_id.parentNode.offsetHeight-sidebar_id.offsetHeight;
		}
		
	// wenn die neue pos ueber die navi steht, dann unter die navi setzen
	if (new_pos<parent_pos+navi_height)
		{
		new_pos=parent_pos+navi_height;
		}
		
	if (is_init)
		{
		// beim ersten ausfuehren hinspringen
		current_pos=new_pos;
		}
	else if (current_pos+0.5<new_pos)
		{
		// langsam naehern
		current_pos+=(new_pos-current_pos)/10;
		}
	else if (current_pos-0.5>new_pos)
		{
		// langsam naehern
		current_pos-=(current_pos-new_pos)/10;
		}
	else
		{
		current_pos=new_pos;
		}
		
	sidebar_id.style.top=Math.round(current_pos)+"px";
	
	is_init=false;
	}
	
function init()
	{
	interval_referrer=window.setInterval("do_movablesidebar()", 1);
	}
	
onload = init;

