
/* ========================================================================================================
	bg_bottom_image - Einblenden des HG-Bildes
	Copyright (c) Wolfram Biedermann, Regen - Jede unerlaubte Verwendung untersagt
   ========================================================================================================
	Einblenden eines HG-Bildes unten auf de Seite abhaengig vom freien Platz 
	Anwendungsfall: Streicher
*/

// zentrieren: Bild in den freien Platz vertikal zentrieren
// !! zentrieren geht davon aus, dass das Bild absolut positioniert am UNTEREN div haengt !!

function bg_bottom_image ( bild_id, oben_id, unten_id, grenzwert, addwert, zentrieren  )
{
	thisObject = this;

	var eingeblendet = false;
	var init = true;

// Ermoegliche nachtraegliche Eingabe der Werte wg pix/em-Problematik

	///////////////////////////////////////////////////////
	//
	this.set_grenzwert_pix = function set_grenzwert_pix ( grenzw, zentr )
	{
		grenzwert = grenzw;
		zentrieren = zentr;
	}

	///////////////////////////////////////////////////////
	//
	this.set_addwert_pix = function set_grenzwert_pix ( addw, zentr )
	{
		addwert = addw;
		zentrieren = zentr;
	}

//========================================================================================================
//	Resize-Funktionen
//========================================================================================================

	///////////////////////////////////////////////////////
	// Absolutes Unten ermitteln
	//
	this.getAbsoluteBottom = function getAbsoluteBottom ( id )
	{
		var abs_y = 0;
		var elem = document.getElementById( id );
		var h_div;

// gehe durch den Elementenbaum bis beim obersten Element angekommen
// (ACHTUNG, ABFRAGE AUF document.body o. document.documentElement (->html) ging schief. So ist es richtig.
// Summiere die y-Werte auf. Ergibt die absolute Position bezogen auf das oberste Element
		if( elem ) {
			h_div = elem.offsetHeight;
			while( elem ){
				abs_y = abs_y + elem.offsetTop;
				elem = elem.offsetParent;
			} //while( elem != document.documentElement );
		}
	return abs_y + h_div;
	}

// !!! Die Methoden resizeInit(), resize() und isLocallyProtected() werden von system_floatResize benoetigt
// Das Resize-System wird benoetigt, um resize waehrend der Dauer der Verschiebeaktion anzuhalten. Eine eigene Reaktion
// auf ein resize-Event gibt es nicht.

	///////////////////////////////////////////////////////
	//  Systemfunktion resizeInit
	//  Die .resizeInit()-Methode wird beim Eintragen des resize-Handlers gerufen.
	//  Rueckgabe:keine
	//
	this.resizeInit = function resizeInit ()
	{
	}

	///////////////////////////////////////////////////////
	//  Systemfunktion onloadInit
	//  Rueckgabe:keine
	//
	this.onloadInit = function onloadInit ()
	{
	}

	///////////////////////////////////////////////////////
	//	Systemfunktion isLocallyProtected
	//  anhand dieser Methode erkennt system_floatResize, ob ein lokaler Event einen Schutz gegen gleichzeitiges Aufrufen
	//  von resize() benoetigt. Falls ja, wartet system_floatResize, bis der lokale Schutz nicht mehr existiert, also bis die
	//  Methode isLocallyProtected() false zurueckgibt.
	//
	this.isLocallyProtected = function isLocallyProtected ()
	{
	return false;
	}

	///////////////////////////////////////////////////////
	// Systemfunktion resize
	// Bild Ausgeben, wenn veraendert
	// muss folgende Rueckgaben machen: true fuer VERAENDERT, false fuer UNVERAENDERT
	//
	this.resize = function resize ()
	{
		var frei = thisObject.getAbsoluteBottom( unten_id ) - addwert - thisObject.getAbsoluteBottom( oben_id );
//		var stilAlt = document.getElementById( bild_id ).style.display;
		var status_alt = eingeblendet;
		var bild = document.getElementById( bild_id );
		var rueck;

		if( frei >= grenzwert ) {
			bild.style.display = "block";
			eingeblendet = true;
// !! zentrieren geht davon aus, dass das Bild absolut positioniert am UNTEREN div haengt !!
			if( zentrieren ) { 
				bild.style.bottom = addwert + Math.floor ( ( frei - bild.offsetHeight ) / 2 ) + "px"; 
			}
		}
		else {
			bild.style.display = "none";
			eingeblendet = false;
		}
		rueck = ( init || status_alt != eingeblendet );
		status_alt = eingeblendet;
		init = false;
// gebe beim ersten Mal oder wenn veraendert, true
	return rueck;
	}
}
