
var sidebar_id=false;
var interval_referrer=false;
var parent_pos;
var current_pos;
var is_init=true;

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";
		
		// die position des eltern-elements bestimmen
		parent_pos=0;
		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+"px";
		}
	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;
	
	// urspruengliche position
	var orig_pos=parent_pos+sidebar_id.parentNode.offsetHeight-sidebar_id.offsetHeight;
	var new_pos=orig_pos;
	
	// sollte die urspruengliche pos unterhalb der fensterleiste sein, neu positionieren
	if (new_pos+sidebar_id.offsetHeight>fensterhoehe)
		{
		new_pos=fensterhoehe-sidebar_id.offsetHeight+y_scrollposition;
		
		// sollte die neue pos unter der orig_pos sein, orig_pos nehmen
		if (new_pos>orig_pos)
			{
			new_pos=orig_pos;
			}
		}
		
	// sollte der parent kleiner als sidebar sein, hoehe der sidebar anpassen
	if (sidebar_id.parentNode.offsetHeight<sidebar_id.offsetHeight)
		{
		sidebar_id.parentNode.style.height=sidebar_id.offsetHeight;
		}
		
	// sollte die neue pos ueber der parent_pos sein, parent_pos nehmen
	if (new_pos<parent_pos)
		{
		new_pos=parent_pos;
		}
		
	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";
//	document.forms[0].elements[0].value=new_pos;
	
	is_init=false;
	}
	
function init()
	{
	interval_referrer=window.setInterval("do_movablesidebar()", 1);
	}
	
onload = init;


