/*
jsLauftext.js
Zur Ausgabe von Lauftexten

Abhängigkeiten:
* keine

Autor    : Joachim Ruf
Erstellt : 2009.01.14
Letze Änderung: 2009.01.16
Revision: 1.2

Doku:
1.1     2008-12-14  :   Start der Doku
1.2     2008-12-16  :   Erweiterung der angefangenen Arbeit

*/



/*
	// Aufruf inklusive HTML-Code erstellung per JavaScript
	<script type="text/javascript" src="js/jsLauftext.js"></script>
	<script type="text/javascript">
		// Objekt erzeugen
		var jsl = new jsLauftext();

		// Zuweisung der anzuzeigenden Texte/Links/etc.
		jsl.setText('Text1');
		jsl.setText('Text2');
		jsl.setText('<a href="http://www.loresoft.de">Link 1</a>');
		jsl.setText('Text3');

		// Optionale Aufrufe
		jsl.setBgColor('#eee');
		jsl.setTextSize(16);
		jsl.setTextColor('#33f');
		jsl.setBorderColor('#ccc');
		jsl.setScrollSpeed(30);

		// HTML-Code fuer Lauftext erzeugen und Lauftext starten
		jsl.show( 280, 400, 'jsl');
	</script>

	

	// Aufruf ohne HTML-Code erstellung per JavaScript
	<div id="jslDivLauftext" style="position: relative; border: solid 2px #ccc; overflow: hidden; width: 0; height: 0; background-color: #eee;">
		<font id="jslFntLauftext" style="position: absolute; text-align: center; color: #666; font-size: 17px; cursor: pointer; width: 0; top: 0; left: 0;" onMouseOver="jsl.stop();" onMouseOut="jsl.resume();">Lauftext wird geladen...bitte warten</font>
	</div>
	
	<script type="text/javascript" src="js/jsLauftext.js"></script>
	<script type="text/javascript">
		var jsl = new jsLauftext();
		jsl.setText('Text1');
		jsl.setText('Text2');
		jsl.setText('<a href="http://www.loresoft.de">Link 1</a>');
		jsl.setText('Text3');

		jsl.setBgColor('#eee');
		jsl.setTextSize(16);
		jsl.setTextColor('#33f');
		jsl.setBorderColor('#ccc');
		jsl.setScrollSpeed(30);

		jsl.showWithoutObject( 280, 400 );
	</script>

*/



var globJsLauftextCount = 0; // Globaler Zähler, welcher zählt, wie viel Objekte erstellt wurden, um jedem einmalige HTML Id's erstellen zu können
function jsLauftext()
{
	// === Initialisation + Deklaration globaler Programmvariablen ===
	this.objName = ''; // Name des erzeugten Objekts --> wird vom Benutzer bestimmt
	this.started = false; // Gibt an ob Methode showLauftext() schon aufgerufen wurde --> Darf für jedes Objekt nur einmal aufgerufen werden!

	this.arrText = new Array(); // Array aller Bilddateien
	this.scrollSpeed = 30; //Anzahl der Aufrufe in millisekunden
	this.curNbr = -1; // Aktuell angezeigtes Bild (-1, da vor Bildwechsel hochgezählt wird und erstes Bild 0 sein muss)

	this.maxWidth = 280; // Breite des Außenrahmens
	this.maxHeight = 400; // Höhe des Außenrahmens

	this.bgColor = '#eee'; // Hintergrundfarbe des Box
	this.textSize = 16; // Schriftgröße
	this.textColor = '#666'; // Textfarbe
	this.borderColor = '#ccc'; // Rahmenfarbe der Box

	this.timeout; // Index für settimeout() um dieses durch cleartimeout() unterbrechen zu können





	/**
	* @desc Startet die Wiedergabe des Lauftextes und erzeugt über JS den nötigen HTML-Code
	* @param int width : Breite der Bildergalerie
	* @param int height : Höhe der Bildergalerie
	* @param string objName : Name des erstellten Objekts, um auf Mausereignisse reagieren zu können
	* @return void
	*/
	this.show = function( width, height, objName )
	{
		if( !this.init(width, height, objName) ) // Initialisiert die Höhe Breite und den Objektname. Bricht ab, wenn Code bereits ausgeführt wurde
			return;
			
		this.initObject(); // HTML-Code erstellen und ausgeben		
		this.initFirstStart();
	}



	/**
	* @desc Startet die Wiedergabe des Lauftextes, jedoch ohne den HTM-Code zu erstellen
	* @param int width : Breite der Bildergalerie
	* @param int height : Höhe der Bildergalerie
	* @return void
	*/
	this.showWithoutObject = function( width, height )
	{
		if( !this.init(width, height, 'jsl') ) // Initialisiert die Höhe Breite und den Objektname. Bricht ab, wenn Code bereits ausgeführt wurde
			return;

		document.getElementById('jslDivLauftext').style.width = width+'px';
		document.getElementById('jslDivLauftext').style.height = height+'px';
		document.getElementById('jslFntLauftext').style.width = parseInt(width-10)+'px';
		document.getElementById('jslFntLauftext').style.top = '-60px';
		document.getElementById('jslFntLauftext').style.left = '5px';
			
		this.initFirstStart();
	}



	/**
	* @desc Initialisiert die Höhe, Breite und Objektname
	* @param int width : Breite der Bildergalerie
	* @param int height : Höhe der Bildergalerie
	* @param string objName : Name des erstellten Objekts
	* @return bool
	*/
	this.init = function( width, height, objName )
	{
		if(this.started == true) // Diese Methode darf nur einmal aufgerufen werden
			return false;
		this.started = true;		
		
		globJsLauftextCount++;
		this.objName = objName;
		this.maxWidth = width;
		this.maxHeight = height;	

		return true;
	}



	/**
	* @desc Initialisiert das darzustellende HTML-Objekt
	* @return void
	*/
	this.initObject = function ( )
	{
		// HTML-Code erstellen und ausgeben
		var output;
		output = '<div style="position: relative; border: solid 2px '+this.borderColor+'; overflow: hidden; width: '+this.maxWidth+'; height: '+this.maxHeight+'; background-color: '+this.bgColor+';">\n';
		output +='  <font style="position: absolute; text-align: center; color: '+this.textColor+'; font-size: '+this.textSize+'px; cursor: pointer; width: '+parseInt(this.maxWidth - 10)+'; top: -60px; left: 5px;" id="'+this.objName+'FntLauftext" onMouseOver="'+this.objName+'.stop();" onMouseOut="'+this.objName+'.resume();">Lauftext wird geladen...bitte warten</font>\n';
		output +='</div>\n';
		document.write(output);
	}


	/**
	* @desc Initialisiert die Höhe- und Breite der darzustellenden Box
	* @param int width : Breite der Bildergalerie
	* @param int height : Höhe der Bildergalerie
	* @return void
	*/
	this.initFirstStart = function( )
	{
		if( this.arrText.length >= 1 )
		{
			this.curNbr++;
			document.getElementById(this.objName+'FntLauftext').innerHTML = this.arrText[this.curNbr];
			this.setNext(); // Scroll starten
		}
	}



	/**
	* @desc Definiert die Hintergrundfarbe der anzuzeigenden Box.
	* @param color clr : Darzustellende Farbe als 3- oder 6-Stelige Hexadezimazahl (Format: #ccddee oder #cde)
	* @return void
	*/
	this.setScrollSpeed = function( time )
	{
		this.scrollSpeed = time;
	}


	/**
	* @desc Fügt einen neuen darzustellenden Text der gesamtliste hinzu
	* @param string text : Darzustellender Text/Link/etc.
	* @return void
	*/
	this.setText= function( text )
	{
		this.arrText[this.arrText.length] = text;
	}



	/**
	* @desc Definiert die Schriftgröße des anzeigetexts.
	* @param int size : Schriftgröße ohne px-Angabe
	* @return void
	*/
	this.setTextSize = function( size )
	{
		this.textSize = size;
	}



	/**
	* @desc Definiert die Schriftfarbe des anzeigetexts.
	* @param color clr : Darzustellende Farbe als 3- oder 6-Stelige Hexadezimazahl (Format: #ccddee oder #cde)
	* @return void
	*/
	this.setTextColor = function( clr )
	{
		this.textColor = clr;
	}



	/**
	* @desc Definiert die Hintergrundfarbe der anzuzeigenden Box.
	* @param color clr : Darzustellende Farbe als 3- oder 6-Stelige Hexadezimazahl (Format: #ccddee oder #cde)
	* @return void
	*/
	this.setBgColor = function( clr )
	{
		this.bgColor = clr;
	}



	/**
	* @desc Definiert die Umrandungsfarbe der anzuzeigenden Box.
	* @param color clr : Darzustellende Farbe als 3- oder 6-Stelige Hexadezimazahl (Format: #ccddee oder #cde)
	* @return void
	*/
	this.setBorderColor = function( clr )
	{
		this.borderColor = clr;
	}



	/**
	* @desc Stoppt den Scrollvorgang
	* @return void
	*/
	this.stop = function()
	{
		window.clearTimeout(this.timeout); // Scroll stoppen
	}



	/**
	* @desc Startet den Scrollvorgang neu
	* @return void
	*/
	this.resume = function()
	{
		this.setNext(); // Scroll wieder starten
	}



	/**
	* @desc Führt den Scrollvorgang durch
	* @return void
	*/
	this.setNext = function()
	{
		var top;
		top = parseInt(document.getElementById(this.objName+'FntLauftext').style.top);
		document.getElementById(this.objName+'FntLauftext').style.top = top + 2 + 'px';


		if(top+2 > this.maxHeight)	
		{
			this.curNbr++;
			if( this.curNbr+1 > this.arrText.length )
				this.curNbr = 0;

			document.getElementById(this.objName+'FntLauftext').style.top = '-60px';
			document.getElementById(this.objName+'FntLauftext').innerHTML = this.arrText[this.curNbr];
		}


		var myThis = this;
		this.timeout = window.setTimeout (function () {myThis.setNext ();}, this.scrollSpeed);
		//this.timeout = setTimeout("setNext()", scrollSpeed);
	}
}