// $Id: bildergalerie.js 15 2007-08-14 17:32:39Z hweber $

// Parameter
var sense		= 75;	// Sensibilitaetszone (in %)
var maxSpeed	= 6;	// Maximale Scrollgeschwindigkeit
var pause		= 30;	// Timer zum Scrollen

// Interne Variablen
var galerieWidth	= 0;
var galerieMargin	= 25;
var galerieBeginn	= 0;
var galerieEnd		= 0;
var scrolling		= false;
var direction		= 1;
var speed			= 0;
var tooltip			= null;

// Herausfinden, ob der Internet Explorer im Quirks-Modus läuft
var docEl = ( typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat' ) ? 'documentElement' : 'body';

// Bildergalerie initialisieren
function bildergalerieInit() {
	// Maus-Ereignis einfangen
	if(document.layers) document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove =	bildergalerieStart;

	// Breite der Bildergalerie ermitteln
	galerieWidth = document.getElementById('galerie').offsetWidth;

	// Breite aller Bilder der Bildergalerie ermitteln
	for (var i = 0; i <= document.getElementById('galerie_scroll').childNodes.length-1; i++) {
		if ( document.getElementById('galerie_scroll').childNodes[i].tagName == 'IMG' ) {
			galerieEnd += parseInt( document.getElementById('galerie_scroll').childNodes[i].width );
			galerieEnd += 25;		// Zusätzlich dem Abstand zwischen den Bildern
		}
	}

	// Bildergalerie mindestens auf Gesamtbreite setzen
	if ( galerieEnd < galerieWidth ) {
		galerieEnd = galerieWidth;
	}

	// Ende der Bildergalrie markieren
	galerieEnd = ( galerieEnd - galerieWidth ) * -1;

	// Beginn der Bildergalerie markieren
	galerieBeginn = galerieMargin;

	// Sensibilitaetszone in absoluten Wert umrechnen
	sense	= Math.round(galerieWidth * sense / 2 / 100);

	// Timer für die Scrollbewegung starten
	setInterval('bildergalerieScroll()', pause);
}

// Scrolling der Bildergalerie starten
function bildergalerieStart( event ) {
	// Mausposition ermitteln
	var mouseX = event ? event.pageX : window.event.x;
  	var mouseY = event ? event.pageY : window.event.y;

	// Position des Tooltips festlegen
	if ( tooltip != null ) {
		tooltip.style.left	= (mouseX + 20) + 'px';
		tooltip.style.top	= (mouseY + 20) + 'px';
	}

	// Scrollposition beim Internet Explorer addieren
	if ( document.all && !document.captureEvents ) {
		mouseX += document[docEl].scrollLeft;
		mouseY += document[docEl].scrollTop;
	}

	// Bildergalerie stoppen, wenn Mauszeiger nicht auf der Bildergalerie
   if ( (mouseX < 1) || (mouseX > galerieWidth) || (mouseY < 75) || (mouseY > 315) ) {
		bildergalerieStop();
		return;
   }

	// Scrollnotwendigkeit ermitteln
	if( (mouseX < sense) || (mouseX > (galerieWidth - sense))) {
		// Geschwindigkeit und Richtung ermitteln
		if ( mouseX < sense ) {
			direction		= 1;
			speed			= 100 - (mouseX * 100 / sense);
		}
		else {
			direction		= -1;
			speed			= ((mouseX - galerieWidth + sense) * 100 / sense);
		}
		scrolling	= true;
		speed		= Math.round(maxSpeed * speed / 100);
  	}
  	else {
		scrolling	= false;
		speed		= 0;
	}
}

// Scrolling der Bildergalerie anhalten
function bildergalerieStop() {
    scrolling		= false;
	speed			= 0;
}

// Scrolling der Bildergalerie durchführen
function bildergalerieScroll() {
	// Wenn keine notwendigkeit zum Scrollen, dann Funktion beenden
	if ( !scrolling ) { return };

	// Position der Bildergalerie ermitteln und neue Position berechnen
	galerieMargin = parseInt( document.getElementById('galerie_scroll').style.marginLeft ) || galerieMargin;
	galerieMargin += direction * speed;

	// Bildergalerie zur neuen Position bewegen
	document.getElementById('galerie_scroll').style.marginLeft = galerieMargin + 'px';

	// Wenn Bildergalerie am Ende, dann das Scrollen beenden
	if ( galerieMargin > galerieBeginn ) {
		bildergalerieStop();
		document.getElementById('galerie_scroll').style.marginLeft = galerieBeginn + 'px';
		return;
	};
	if ( galerieMargin < galerieEnd ) {
		bildergalerieStop();
		document.getElementById('galerie_scroll').style.marginLeft = galerieEnd + 'px';
		return;
	};
}

// Tooltip anzeigen
function showTooltip(id) {
	tooltip = document.getElementById(id);
	tooltip.style.display = 'block';
}

// Tooltip ausblenden
function hideTooltip() {
	tooltip.style.display = 'none';
	tooltip	= null;
}
