/**
 * @class Eine Klasse zum Erstellen eines Hovereffektes, der auf ein beliebiges HTML-Element angewendet werden kann.
 */
var navi_hover_effekt = Class.create
	({
	
	/**
	 * @description		Erstellt ein neues Objekt der Klasse navi_hover_effekt
     * @constructor
     *
     * @param	{number}	dauer			Wie lange soll der Effekt dauern (in Sekunden). Auch möglich: Fließkommatawerte: z. B. 0.2
	 * @param	{string}	startfarbe		in der Form '#ffffff' - Ist der Farbwert, mit dem begonnen wird (idealerweise der aktuelle Hintergrund des Elements)
	 * @param	{string}	zwischenfarbe1	in der Form '#ffffff' - Ist die erste Farbe, in die überblendet wird
	 * @param	{string}	zwischenfarbe2	in der Form '#ffffff' - Ist die zweite Farbe, in die überblendet wird und idealerweise die End-Farbe
	 * @param	{string}	hoverfarbe		in der Form '#ffffff' - Ist die Farbe, die zum Schluss stehen bleibt, also eine Farbe, auf die der Hintergrund nach Beendigung des Effekts gesetzt wird
	 */
	initialize: function(dauer, startfarbe, zwischenfarbe1, zwischenfarbe2, hoverfarbe)
		{
		// Attribute dieser Klasse
		this.dauer = dauer;
		this.startfarbe = startfarbe;
		this.zwischenfarbe1 = zwischenfarbe1;
		this.zwischenfarbe2 = zwischenfarbe2;
		this.hoverfarbe = hoverfarbe;
		},

	/**
	 * @description		Aufrufen der Methode go sollte z. B. bei einem Mouseover-Event erfolgen: z. B. mein_hover_effetk.go(this);
     *
     * @param	{object}	element			Wie lange soll der Effekt dauern (in Sekunden). Auch möglich: Fließkommatawerte: z. B. 0.2
	 */
	go: function(element)
		{
		this.highlight_effekt = new Effect.Highlight(element, { duration:this.dauer, startcolor:this.zwischenfarbe1, endcolor:this.zwischenfarbe2, restorecolor:this.hoverfarbe});
		
		// Klassenattribut der folgenden Funktion zugänglich machen:
		var startfarbe = this.startfarbe;
		var highlight_effekt = this.highlight_effekt;
		var dauer = this.dauer;
		
		// Event-Handler für Mouseout
		element.observe('mouseout', function(event)
			{
			// Wenn der User seine Maus aus dem Element bewegt, bevor der Effekt abgeschlossen ist
			if(new Date().getTime() < highlight_effekt.startOn + dauer*1000)
				{
				highlight_effekt.cancel();
				}
			
			element.setStyle({backgroundColor: startfarbe});
			}); // Eof Event-Handler für Mouseout
		}, // go()
		
	farbe_zurueck: function(element)
		{
		// Wenn der User seine Maus aus dem Element bewegt, bevor der Effekt abgeschlossen ist
		if(new Date().getTime() < this.highlight_effekt.startOn + this.dauer*1000)
			{
			this.highlight_effekt.cancel();
			}
		
		element.setStyle({backgroundColor: this.startfarbe});
		} // farbe_zurueck

	}); // navi_hover_effekt


