
/*

Bugs:
- Pendel-Funktion geht nur nach rechts
- Problem bei Klick während fadeOutIn_Width
- 284
- gw_ani_moveTo():  speed

*/



// -------------------------------------------------------------------------
// Initialisierung, Berechnung des Koordinaten-Ursprungs
// -------------------------------------------------------------------------

// Höhe und Breite des Hintergrundbildes:
var bgWidth = 770;
var bgHeight = 484;


// Verfügbare Höhe und Breite des Browserfensters:
var availWidth;
var availHeight;

// Mittelpunkt des Browserfensters:
var centerX;
var centerY;

// Linke, obere Ecke des Hintergrundbildes:
var bgX;
var bgY;

// Koordinaten des Content-Ausblenden Kreuzes
var closeButtonX = 368;
var closeButtonY = 80;

//Konstanten zur Pendelbewegung
var CONST_AnimationsWeite = 20;
var CONST_PendelDistanz = 40;
var CONST_PendelDistanzAbnahme = 5;
var CONST_MaxDelay = 80;
var CONST_MinDelay = 40;


// Variable die besagt ob eingeblendet werden soll oder nicht
var blendOut = 0; //0 = kein Ausblenden, 1 = Ausblenden

	// -------------------------------------------------------------------------
	// Ein-/Ausblenden von Produkten
	// -------------------------------------------------------------------------
	var gw_tp_oProduct = new Array();
	function gw_tp_product_over(nr) {
		gw_tp_oProduct[nr].fadeIn();
	}
	function gw_tp_product_out(nr) {
		gw_tp_oProduct[nr].fadeOut();
	}
	// -------------------------------------------------------------------------


	// -------------------------------------------------------------------------
	// Ermittelt die linke obere Ecke des Hintergrundes
	// -------------------------------------------------------------------------
	// Parameter:
	// -------------------------------------------------------------------------
	function gw_ani_init() {
		var offsetX = 0;
		var offsetY = 0;
		// Firefox, Opera, etc...
		if (window.innerWidth) {
			availWidth = window.innerWidth + 2;
			availHeight = window.innerHeight -2;
			// Vertikaler Scrollbalken
			if (availHeight < 503){
				availWidth -= 16;
				availHeight = 550;
			}
			// Horizontaler Scrollbalken
			if (availWidth < 786) availWidth = 786;
		// IExplorer
		} else if (document.body.clientWidth) {
			offsetX = 12;
			offsetY = 14;
			availWidth = document.body.clientWidth + 2;
			availHeight = document.body.clientHeight - 2;
			if (availHeight < 517) {
				availHeight = 517;
			} else {
				if (availWidth < 794) availHeight += 16;
			}
		}
		
		//Rundungsfehler beheben:
		/*if ((availHeight % 2 == 0) && (availHeight > 501)) */
		//availHeight -= 2;
		
		centerX = Math.floor(availWidth / 2);
		centerY = Math.floor(availHeight / 2);
		bgX = Math.max(centerX - Math.round(bgWidth / 2), offsetX);
		bgY = Math.max(centerY - Math.round(bgHeight / 2), offsetY);
		
		gw_ani_blackBox('gw_blackBox');
		//gw_ani_blackBoxRight('gw_blackBoxRight');

		gw_ani_goTo('gw_nav_container', 389, 52);

		// Content positionieren:
		gw_ani_goTo('gw_content_container', -1, 80);
		gw_ani_goTo('gw_content_text', -510, tp_content_text_y);
		
		
		// Stempel positionieren:
		var oElement = document.getElementById('gw_stamp');
		if (oElement != null){
			oElement.style.left = availWidth - 95;
			oElement.style.top = availHeight - 135;
		}
		
		gw_tp_showContent();

		// Produkte initialisieren:
		for (i = 1; i <= gw_tp_count_products; i++) {
			o_p_detail = document.getElementById("p_detail_" + i);
			//gw_tp_oProduct[i] = new Fadomatic(o_p_detail, 5, 0, 0, tp_product_detail_opacity);
			gw_ani_goTo("p_detail_" + i, (tp_product_detail_x + ((i-1)*90)), tp_product_detail_y);
		}
	}

	// -------------------------------------------------------------------------
	// Erzeugt einen schwarzen Balken über dem linken Rand des Hintergrundes einer
	// Seite, damit einschwebende Textelemente erst sichtbar werden, wenn
	// sie die wirkliche Seite erreichen
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// -------------------------------------------------------------------------
	function gw_ani_blackBox(elementId){
		var oElement = document.getElementById(elementId);
		if ((bgX > 0) && (bgY > 0)){
			// Die Box fängt links am Rand des Bildschirms an...
			oElement.style.left = 0; 
			// ...auf Höhe des Frames in dem der Inhalt präsentiert wird...
			oElement.style.top = bgY;
			// ...und ist so breit wie der Rand...
			oElement.style.width = bgX - 2;
			// ...und so hoch wie der Inhaltsframe.
			oElement.style.height = bgHeight;
		}else {
			// Wenn kein Rand sichtbar ist, die Box ausserhalb positionieren
			oElement.style.left = -100; 
			oElement.style.top = -100;
			oElement.style.width = 0;
			oElement.style.height = 0;
		}
	}

	// -------------------------------------------------------------------------
	// Erzeugt einen schwarzen Balken über dem rechten Rand des Hintergrundes einer
	// Seite, damit ausschwebende Textelemente nicht sichtbar sind, wenn
	// sie rechts rausschweben
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// -------------------------------------------------------------------------
	function gw_ani_blackBoxRight(elementId){
		var oElement = document.getElementById(elementId);
		if ((bgX > 0) && (bgY > 0)){
			// Die Box fängt rechts am Rand des sichtbaren Bereichs an...
			oElement.style.left = bgX + bgWidth - 1; 
			// ...auf Höhe des Frames in dem der Inhalt präsentiert wird...
			oElement.style.top = bgY;
			// ...und ist so breit wie der Rand links auch war...
			//oElement.style.width = bgX - 2;
			oElement.style.width = bgX;
			// ...und so hoch wie der Inhaltsframe.
			oElement.style.height = bgHeight;
		}else {
			// Wenn kein Rand sichtbar ist, die Box ausserhalb positionieren
			oElement.style.left = -100; 
			oElement.style.top = -100;
			oElement.style.width = 0;
			oElement.style.height = 0;
		}
	}

	// -------------------------------------------------------------------------
	// Setzt die Koordinaten eines HTML-Elements.
	// Koordinatenangeben sind relativ zur linken oberen Ecke des Hintergrundbildes
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// - destX     : X-Koordinate des Zielpunkts
	// - destY     : Y-Koordinate des Zielpunkts
	// -------------------------------------------------------------------------
	function gw_ani_goTo(elementId, destX, destY) {
		var oElement = document.getElementById(elementId);
		if (oElement != null){
			oElement.style.left = bgX + destX;
			oElement.style.top = bgY + destY;
		}
	}

	// -------------------------------------------------------------------------
	// Bewegt ein HTML-Elements animiert zu einem Zielpunkt.
	// Koordinatenangeben sind relativ zur linken oberen Ecke des Hintergrundbildes
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// - destX     : X-Koordinate des Zielpunkts
	// - destY     : Y-Koordinate des Zielpunkts
	// - speed     : Pixelweite mit der die Animation startet
	// -------------------------------------------------------------------------
	function gw_ani_moveTo(elementId, destX, destY, speed) {
		var oElement = document.getElementById(elementId);
		var srcX = parseInt(oElement.style.left);
		var srcY = parseInt(oElement.style.top);
		var page = gw_tp_pageNr;
		//debug("###########:"+page+"#############");
		_gw_ani_fly(elementId, page, srcX, srcY, bgX + destX, bgY + destY, speed, speed);
	}


	// -------------------------------------------------------------------------
	// Bewegt ein HTML-Elements in einer Pendelbewegung zum Zielpunkt
	// Koordinatenangeben sind relativ zur linken oberen Ecke des Hintergrundbildes
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// - destX     : X-Koordinate des Zielpunkts
	// - delay		 : maximale Verzögerung zwischen 2 Animationsstufen !! Wird z.Z. global gesetzt in CONST_MaxDelay
	// -------------------------------------------------------------------------
	function gw_ani_moveTo_pendulum(id, destX, delay) {
		destX += bgX;
		obj = document.getElementById(id);	
		delay = CONST_MaxDelay;
		var x_start = parseInt(obj.style.left);
		var richtung = 0; //rechts als default
		var mindelay = CONST_MinDelay;
		var distanz = CONST_PendelDistanz;
		_gw_ani_fly_pendel_help(id, x_start, destX, mindelay, 1, distanz, richtung, delay, delay, mindelay);
	}

	// -------------------------------------------------------------------------
	// Vergrößert ein Objekt von der derzeitigen Breite bis zur Zielbreite
	// Koordinatenangeben sind relativ zur linken oberen Ecke des Hintergrundbildes
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// - destWidth : Zielbreite des Objekts
	// - speed		 : Geschwindigkeit mit der vergrößert wird (1-6, von 1: "sehr langsam" bis 6: "sehr schnell")
	// -------------------------------------------------------------------------
	function gw_ani_enlargeWidth(id, destWidth, speed){
		var obj = document.getElementById(id);
		var speedInPx;
		var delay = 20; //20ms zwischen Animationsstufen
		// 100px Top Speed, 80, 60, 40, 20, 10px Min Speed
		if (speed == 1) {speedInPx = 32;}
		if (speed == 2) {speedInPx = 24;}
		if (speed == 3) {speedInPx = 16;}
		if (speed == 4) {speedInPx = 8;}
		if (speed == 5) {speedInPx = 4;}
		if (speed == 6) {speedInPx = 2;}
		_gw_ani_enlargeWidth_help(id, destWidth, speedInPx, delay);
	}


	// -------------------------------------------------------------------------
	// Vergrößert oder verkleinert ein Objekt von der derzeitigen Breite bis 
	// zur Zielbreite.
	// Koordinatenangeben sind relativ zur linken oberen Ecke des Hintergrundbildes
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// - destWidth : Zielbreite des Objekts
	// - speed		 : Geschwindigkeit mit der vergrößert wird (1-6, von 1: "sehr langsam" bis 6: "sehr schnell")
	// -------------------------------------------------------------------------
	function gw_ani_smooth_shift_to_Width(id, destWidth, speed){
		var obj = document.getElementById(id);
		var width_now = _get_Object_width(id);
		var enlarge; // 1=true, 0=false
		if (width_now < destWidth){
			enlarge = 1;
		} else {
				enlarge = 0;
		}
		var speedInPx;
		var delay = 30; //20ms zwischen Animationsstufen
		// 100px Top Speed, 80, 60, 40, 20, 10px Min Speed
		if (speed == 1) {speedInPx = 32;}
		if (speed == 2) {speedInPx = 24;}
		if (speed == 3) {speedInPx = 16;}
		if (speed == 4) {speedInPx = 8;}
		if (speed == 5) {speedInPx = 4;}
		if (speed == 6) {speedInPx = 2;}
		_gw_ani_smooth_shift_to_Width_help(id, destWidth, enlarge, speedInPx, delay);
	}	

	// -------------------------------------------------------------------------
	// Verkleinert ein Objekt bis zur Breite 0, vergrößert es dann wieder auf die
	// ursprüngliche Größe
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// - speed		 : Geschwindigkeit mit der vergrößert wird (1-6, von 1: "sehr langsam" bis 6: "sehr schnell")
	// - wait			 : Zeit die vergehen soll wenn das Objekt die Breite 0 hat (ms)
	// -------------------------------------------------------------------------
	function gw_ani_fadeOutIn_Width(id, speed, wait){
		var obj = document.getElementById(id);
		var speedInPx;
		var delay = 30; //20ms zwischen Animationsstufen
		// 100px Top Speed, 80, 60, 40, 20, 10px Min Speed
		if (speed == 1) {speedInPx = 32;}
		if (speed == 2) {speedInPx = 24;}
		if (speed == 3) {speedInPx = 16;}
		if (speed == 4) {speedInPx = 8;}
		if (speed == 5) {speedInPx = 4;}
		if (speed == 6) {speedInPx = 2;}
		var enlarge = 0;
		//var destWidth = _get_Object_width(id);
		var destWidth = tp_content_container_width;
		// wait wird übergeben
		//var wait = 500; //ms die gewartet wird, bis das Objekt wieder verbreitert wird
		//page gibt an, welche Seite aufgerufen wurde (Abbruch beim Aufruf einer anderen Seite)
		var page = gw_tp_pageNr;
		_gw_ani_fadeOutIn_Width_help(id, page, destWidth, enlarge, speedInPx, delay, wait);
	}

	// -------------------------------------------------------------------------
	// Verkleinert ein Objekt bis zur Breite 0, ändert die Höhe des Objekts und
	// vergrößert es dann wieder auf die ursprüngliche Breite
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// - speed		 : Geschwindigkeit mit der vergrößert wird (1-6, von 1: "sehr langsam" bis 6: "sehr schnell")
	// - wait			 : Zeit die vergehen soll wenn das Objekt die Breite 0 hat (ms)
	// - newHeight	: neue Höhe
	// - newTop		: neue Top Koordinate
	// - newWidth	: neue Breite
	// -------------------------------------------------------------------------
	//								Height Top Width Opacity
	function gw_ani_fadeOutIn_HTWO(id, speed, wait, newHeight, newTop, newWidth, newOpacity){
		var obj = document.getElementById(id);
		var speedInPx;
		var delay = 30; //20ms zwischen Animationsstufen
		// 100px Top Speed, 80, 60, 40, 20, 10px Min Speed
		if (speed == 1) {speedInPx = 32;}
		if (speed == 2) {speedInPx = 24;}
		if (speed == 3) {speedInPx = 16;}
		if (speed == 4) {speedInPx = 8;}
		if (speed == 5) {speedInPx = 4;}
		if (speed == 6) {speedInPx = 2;}
		var enlarge = 0;
		//var destWidth = _get_Object_width(id);
		var destWidth = tp_content_container_width;
		// wait wird übergeben
		//var wait = 500; //ms die gewartet wird, bis das Objekt wieder verbreitert wird
		//page gibt an, welche Seite aufgerufen wurde (Abbruch beim Aufruf einer anderen Seite)
		var page = gw_tp_pageNr;
		blendOut = 0;
		_gw_ani_fadeOutIn_HTWO_help(id, page, destWidth, enlarge, speedInPx, delay, wait, newHeight, newTop, newWidth, newOpacity);
	}

	// -------------------------------------------------------------------------
	// Verkleinert ein Objekt bis zur Breite 0, ändert die Höhe des Objekts und
	// vergrößert es dann wieder auf die ursprüngliche Breite
	// -------------------------------------------------------------------------
	// Parameter:
	// - elementId : ID des HTML-Elements
	// - speed		 : Geschwindigkeit mit der vergrößert wird (1-6, von 1: "sehr langsam" bis 6: "sehr schnell")
	// - wait			 : Zeit die vergehen soll wenn das Objekt die Breite 0 hat (ms)
	// - newHeight	: neue Höhe
	// - newTop		: neue Top Koordinate
	// - newWidth	: neue Breite
	// -------------------------------------------------------------------------
	//								Height Top Width Opacity
	function gw_ani_fadeOut_HTWO(id, speed, wait, newHeight, newTop, newWidth, newOpacity){
		var obj = document.getElementById(id);
		var speedInPx;
		var delay = 30; //20ms zwischen Animationsstufen
		// 100px Top Speed, 80, 60, 40, 20, 10px Min Speed
		if (speed == 1) {speedInPx = 32;}
		if (speed == 2) {speedInPx = 24;}
		if (speed == 3) {speedInPx = 16;}
		if (speed == 4) {speedInPx = 8;}
		if (speed == 5) {speedInPx = 4;}
		if (speed == 6) {speedInPx = 2;}
		var enlarge = 0;
		//var destWidth = _get_Object_width(id);
		var destWidth = tp_content_container_width;
		// wait wird übergeben
		//var wait = 500; //ms die gewartet wird, bis das Objekt wieder verbreitert wird
		//page gibt an, welche Seite aufgerufen wurde (Abbruch beim Aufruf einer anderen Seite)
		var page = gw_tp_pageNr;
		blendOut = 1;
		_gw_ani_fadeOut_HTWO_help(id, page, destWidth, enlarge, speedInPx, delay, wait, newHeight, newTop, newWidth, newOpacity);
	}

		//******************************************************
		//**********			HILFSFUNKTIONEN		************
		//******************************************************
		
			function _gw_ani_getNewSpeed(x_new, y_new, x_abs, y_abs, x_start, y_start, speed_start){
				// Neue Distanz zum Ziel (z = sqrt(x^2+y^2)
				var x_Dist_new = Math.abs(x_new - x_abs);
				var y_Dist_new = Math.abs(y_new - y_abs);
				var dist_new = Math.sqrt((x_Dist_new*x_Dist_new)+(y_Dist_new*y_Dist_new));
				
				// Gesamte Distanz zum Ziel (z = sqrt(x^2+y^2)
				var x_Dist_abs = Math.abs(x_start - x_abs);
				var y_Dist_abs = Math.abs(y_start - y_abs);	
				var dist_abs = Math.sqrt((x_Dist_abs*x_Dist_abs)+(y_Dist_abs*y_Dist_abs));					
				
				// Relative Distanz zum Ziel (Distanz-jetzt / Distanz-gesamt)
				var RelDist = Math.abs(dist_new / dist_abs);
				
				// Geschwindigkeit in Relation zur relativen Distanz
				var speed = Math.round(speed_start * RelDist);
				
				// Minimale Geschwindigkeit beachten
				if (speed < 10) speed = 10;
				return speed;
			}

			function _gw_ani_fly(id, page, x_start, y_start, x_abs, y_abs, speed, speed_start){
				/*
				 *	param:
				 *	id 											- id des Objekts das bewegt werden soll
				 *  page										- Seite mit der die Animation aufgerufen wurde
				 *	x_start, y_start				- Startkoordinaten, von denen die Animation los ging
				 *	x_abs, y_abs						-	Koordinaten, bei denen die Animation enden soll
				 *	speed										- aktuelle Geschwindigkeit
				 *	speed_start							- Geschwindigkeit, mit der die Animation los ging
				 */
				 
				if ((x_abs > 0) && (blendOut == 1)){
					return;
				} else {
					// Variablen 
					// Hole Objekt 
					//debug("+++ PAGE: "+page+ " gw_tp_pageNr: "+gw_tp_pageNr);
					var obj = document.getElementById(id);
					var x_now = parseInt(obj.style.left);
					var y_now = parseInt(obj.style.top);
					var x_new;
					var y_new;
					var x_fertig = false;
					var y_fertig = false;
					var x_speed;
					var y_speed;	
					var x_part = Math.abs(x_now - x_abs);
					var y_part = Math.abs(y_now - y_abs);
					if (page != gw_tp_pageNr){
							return;
					}
					//Bestimmen der anteiligen Geschwindigkeit in x und y Richtung
					x_speed = Math.round(speed * (x_part / (x_part+y_part)));
					y_speed	= Math.round(speed * (y_part / (x_part+y_part)));
						
					// Testen, ob Ziel erreicht, sonst Berechnung der neuen Koordinaten
					if (x_now == x_abs){ x_fertig = true; x_new = x_abs;}
					else  {
						if (Math.abs(x_now-x_abs) < x_speed){x_new = x_abs; x_fertig = true;}
						else {
							// Je nachdem, ob das Objekt links oder rechts vom Ziel ist...
							if (x_now < x_abs){ // Objekt ist links vom Ziel
								x_new = x_now + x_speed;
							}
							else { // Objekt ist rechts vom Ziel
								x_new = x_now - x_speed;
							}
						}
					}
					// Das gleiche wie für die x Richtung nocheinmal für y...
					if (y_now == y_abs){ y_fertig = true; y_new = y_abs;}
					else  {
						if (Math.abs(y_now-y_abs) < y_speed){y_new = y_abs; y_fertig = true;}
						else {
							if (y_now < y_abs){
								y_new = y_now + y_speed;
							}
							else {
								y_new = y_now - y_speed;
							}
						}
					}
					
					//debug Meldungen ausgeben
					//document.getElementById("debug").innerHTML += "<p>x_speed:"+x_speed+" y_speed:"+y_speed+"</p>";
					
					// Wenn beide Richtungen am Ziel angekommen sind, abbrechen
					if (x_fertig && y_fertig){
						obj.style.left = x_abs;
						obj.style.top = y_abs;
						return;
					}
					// Sonst weitermachen, Naechste Position in x und y Richtung einnehmen
					else {
						obj.style.left = x_new;
						obj.style.top = y_new;
						// Neue Geschwindkeit berechnen, wegen abgebremster Animation
						speed = _gw_ani_getNewSpeed(x_new, y_new, x_abs, y_abs, x_start, y_start, speed_start);
						// Rekursiver Aufruf zwecks Verzögerung zwischen 2 Animationsstufen
						setTimeout('_gw_ani_fly("'+id+'",'+page+','+x_start+','+y_start+','+x_abs+','+y_abs+','+speed+','+speed_start+')',50);
						//setTimeout('_gw_ani_fly("'+id+'","'+x_start+'","'+y_start+'","'+x_abs+'","'+y_abs+'","'+speed+'","'+speed_start+'")',50);
					}
				}
			}

			// -------------------------------------------------------------------------
			// Bewegt ein HTML-Elements in einer Pendelbewegung zum Zielpunkt
			// Koordinatenangeben sind relativ zur linken oberen Ecke des Hintergrundbildes
			// -------------------------------------------------------------------------
			// Parameter:
			// - id				 		: ID des HTML-Elements
			// - x_start	 		: Startpunkt der Bewegung
			// - x_ziel				: Endpunkt der Animation
			// - lin_delay 		: Verzögerung der linearen Bewegung in ms
			// - lin_movement : 1: Bewegung noch linear, sonst pendeln
			// - distanz	 		: Schwingdistanz
			// - richtung	 		: ob nach rechts oder links geschwungen wird
			// - delay		 		: aktuelle Verzögerung (anteilig je nach Schwungweite--> Beschleunigung
			// - maxdelay	 		: maximale Verzögerung während der Animation
			// - mindelay	 		: minimale Verzögerung während der Animation
			// -------------------------------------------------------------------------
			function _gw_ani_fly_pendel_help(id, x_start, x_ziel, lin_delay, lin_movement, distanz, richtung, delay, maxdelay, mindelay){
				var pi = 3.141592;
				obj = document.getElementById(id);
				var x_now = parseInt(obj.style.left);
				var x_new;
				var x_fertig = false;
				
				if (lin_movement == 1){
					//document.getElementById("debug").innerHTML += "<p>delay-lin:"+lin_delay+"</p>";		
					// Noch nicht Schwingen, erstmal lineare Bewegung zum Ziel
					if (Math.abs(x_now - x_ziel) < (CONST_AnimationsWeite)){
						//lineare Bewegung beenden
						lin_movement = 0;
						x_new = x_ziel;
						delay = CONST_MinDelay;
						if (richtung == 0) {
							// von links ans Ziel
							richtung = 0;
							x_start = x_ziel - Math.round(distanz/2);
						}	else {
							// von rechts ans Ziel
							richtung = 1;
							x_start = x_ziel + Math.round(distanz/2);
						}
					} else {
						if (x_now < x_start) {
							x_new = x_now - CONST_AnimationsWeite;
						} else {
							x_new = x_now + CONST_AnimationsWeite;
						}
					}
					obj.style.left = x_new;
					
					setTimeout('_gw_ani_fly_pendel_help("'+id+'","'+x_start+'","'+x_ziel+'","'+lin_delay+'","'+lin_movement+'","'+distanz+'","'+richtung+'","'+delay+'","'+maxdelay+'","'+mindelay+'")',lin_delay);
					//return;
				} else {
					
					// Abbruchbedingung, Abstand zum Ziel < 2
					if (distanz < 2){
						obj.style.left = x_ziel;
						return;
					}
					//document.getElementById("debug").innerHTML += "<p>delay-pend:"+delay+"</p>";				
					var wegAnteil = 0.0;
					var piAnteil = 0.0;
					var sinus = 0.0;
					
					if (richtung == 0){ //Nach rechts schwingen
						x_new = x_now + CONST_AnimationsWeite;
						if (x_new >= x_start+distanz){
							// Richtung aendern, mit geringerer Distanz zurueckschwingen
							richtung = 1;
							distanz -= 10;
							mindelay *= 1.1; // Pendel hat weniger Zeit zum Beschleunigen
							x_start = x_new;
						}
					} else { // nach links schwingen
						x_new = x_now - CONST_AnimationsWeite;
						if (x_new <= x_start-distanz){
							// Richtung aendern, mit geringerer Distanz zurueckschwingen
							richtung = 0;
							distanz -= 10;
							mindelay *= 1.1; // Pendel hat weniger Zeit zum Beschleunigen
							x_start = x_new;
						}
					}
					
					
					wegAnteil = (Math.abs(x_new - x_start) / (distanz));
					piAnteil = wegAnteil * pi;
					sinus = Math.sin(piAnteil); // Wir brauchen nur die halbe Distanz, 0 bis pi_halbe
					delay = Math.round((maxdelay * (1 - sinus)) + mindelay);
					//document.getElementById("debug").innerHTML += "<p>delay:"+delay+"</p>";		
					
					obj.style.left = x_new;
					
					//writeConsole("speed: "+speed);
					//document.getElementById("debug").innerHTML += "<p>x_new:"+x_new+"</p>";
					
					setTimeout('_gw_ani_fly_pendel_help("'+id+'","'+x_start+'","'+x_ziel+'","'+lin_delay+'","'+lin_movement+'","'+distanz+'","'+richtung+'","'+delay+'","'+maxdelay+'","'+mindelay+'")',delay);
				}
			}
			
			// ---------------------------------------------------------------------------
			// Liefert die Breite eines Objekts als Zahlenwert zurück (aus 100px wird 100)
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id				 		: ID des HTML-Elements
			// ---------------------------------------------------------------------------
			function _get_Object_width(id){
				obj = document.getElementById(id);
				return (parseInt(obj.style.width));
			}

			// ---------------------------------------------------------------------------
			// Verbreitert ein Objekt bis zur gegebenen Zielbreite
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id				 		: ID des HTML-Elements
			// - destWidth		: Zielbreite des Objekts
			// - speedInPx		: Pixel um die das Objekt pro Animationsstufe verbreitert wird
			// - delay				: Verzögerung zwischen 2 Animationsstufen
			// ---------------------------------------------------------------------------
			function _gw_ani_enlargeWidth_help(id, destWidth, speedInPx, delay){
				obj = document.getElementById(id);
				var width_now = _get_Object_width(id);
				var width_new;
				if (width_now == destWidth){
					// fertig
					return;
				} else {
					// Verbreitern
					width_new = width_now + speedInPx;
					//alert(width_new);
					if (width_new > destWidth) {width_new = destWidth;}
					obj.style.width = width_new;
				}
				// Rekursion
				setTimeout('_gw_ani_enlargeWidth_help("'+id+'",'+destWidth+','+speedInPx+','+delay+')',delay);
			}
			
			// ---------------------------------------------------------------------------
			// Verbreitert oder verschmälert ein Objekt bis zur gegebenen Zielbreite
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id				 		: ID des HTML-Elements
			// - destWidth		: Zielbreite des Objekts
			// - speedInPx		: Pixel um die das Objekt pro Animationsstufe verbreitert wird
			// - delay				: Verzögerung zwischen 2 Animationsstufen
			// ---------------------------------------------------------------------------
			function _gw_ani_smooth_shift_to_Width_help(id, destWidth, enlarge, speedInPx, delay){
				obj = document.getElementById(id);
				var width_now = _get_Object_width(id);
				var width_new;
				if (width_now == destWidth){
					// fertig
					return;
				} else {
					if (enlarge == 1){
						// Verbreitern
						width_new = width_now + speedInPx;
						if (width_new > destWidth) {width_new = destWidth;}
					} else {
						// Verschmälern
						width_new = width_now - speedInPx;
						if (width_new < destWidth) {width_new = destWidth;}
					}
					obj.style.width = width_new;
				}
				// Rekursion
				setTimeout('_gw_ani_smooth_shift_to_Width_help("'+id+'",'+destWidth+','+enlarge+','+speedInPx+','+delay+')',delay);
			}
			
			// ---------------------------------------------------------------------------
			// Verschmälert das Objekt bis zur Breite 0 und verbreitert es dann wieder auf
			// die ursprüngliche Größe
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id				 		: ID des HTML-Elements
			// - page					: Seite mit der aufgerufen wurde, wenn aktuelle Seite != page => Abbruch
			// - destWidth		: Zielbreite des Objekts
			// - enlarge			: Modus, enlarge = 0: Objekt wird noch verkleinert,
			//																	 1: Objekt wird wieder vergrößert
			// - speedInPx		: Pixel um die das Objekt pro Animationsstufe verbreitert wird
			// - delay				: Verzögerung zwischen 2 Animationsstufen
			// - wait					: Zeit die verstreichen soll, wenn das Objekt bei Breite 0 ist
			// ---------------------------------------------------------------------------			
			function _gw_ani_fadeOutIn_Width_help(id, page, destWidth, enlarge, speedInPx, delay, wait){
				//debug(" Test: page-"+page+" gw_tp_pageNr"+gw_tp_pageNr);
				alert('fadeoutinwidthhelp');
				if (page != gw_tp_pageNr){
					return;
				}
				obj = document.getElementById(id);
				var width_now = _get_Object_width(id);
				//alert(width_now+" "+enlarge);
				var width_new;
				if (enlarge == 0){
					// Verschmälern bis auf Breite 0
					width_new = width_now - speedInPx;
					if (width_new <= 0) {
						width_new = 0;
						enlarge = 1; //Ab nun vergrößern
						obj.style.width = width_new;
						// Rekursion
						setTimeout('_gw_ani_fadeOutIn_Width_help("'+id+'",'+page+','+destWidth+','+enlarge+','+speedInPx+','+delay+','+wait+')',wait);
					} else {
						obj.style.width = width_new;
						// Rekursion
						setTimeout('_gw_ani_fadeOutIn_Width_help("'+id+'",'+page+','+destWidth+','+enlarge+','+speedInPx+','+delay+','+wait+')',delay);
					}
				} else {
					if (width_now == destWidth){
						// fertig
						gw_tp_showContent();
						return;
					} else {
						// Verbreitern
						width_new = width_now + speedInPx;
						if (width_new > destWidth) {width_new = destWidth;}	
					}
					obj.style.width = width_new;
					// Rekursion
					setTimeout('_gw_ani_fadeOutIn_Width_help("'+id+'",'+page+','+destWidth+','+enlarge+','+speedInPx+','+delay+','+wait+')',delay);
				}
			}
			
			//----------------------------------------------------------------------
			// Ändert die Durchsichtigkeit eines Objekts
			//----------------------------------------------------------------------
			//Parameter:
			// - obj		:	Objektreferenz 
			// - opacity 	:	Durchsichtigkeit (0,unsichtbar - 100,undurchsichtig)
			//----------------------------------------------------------------------
			function _gw_ani_changeOpacity(obj, opacity){
    			if (navigator.appName.indexOf("Netscape")!=-1&&parseInt(navigator.appVersion)>=5)
    			obj.style.MozOpacity=opacity/100
    			else if (navigator.appName.indexOf("Microsoft")!=-1&&parseInt(navigator.appVersion)>=4)
    			obj.filters.alpha.opacity=opacity	
			}
			
			// ---------------------------------------------------------------------------
			// Verschmälert das Objekt bis zur Breite 0, ändert die Höhe und verbreitert 
			// es dann wieder auf die ursprüngliche Größe
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id				 		: ID des HTML-Elements
			// - page					: Seite mit der aufgerufen wurde, wenn aktuelle Seite != page => Abbruch
			// - destWidth		: Zielbreite des Objekts
			// - enlarge			: Modus, enlarge = 0: Objekt wird noch verkleinert,
			//																	 1: Objekt wird wieder vergrößert
			// - speedInPx		: Pixel um die das Objekt pro Animationsstufe verbreitert wird
			// - delay				: Verzögerung zwischen 2 Animationsstufen
			// - wait					: Zeit die verstreichen soll, wenn das Objekt bei Breite 0 ist
			// - newHeight		: neue Höhe nach Verkleinern
			// - newTop			: neue Top Koordinate
			// - newWidth		: neue Breite
			// - newOpacity		: neue Durchsichtigkeit
			// ---------------------------------------------------------------------------			
			function _gw_ani_fadeOutIn_HTWO_help(id, page, destWidth, enlarge, speedInPx, delay, wait, newHeight, newTop, newWidth, newOpacity){
				//debug(" Test: page-"+page+" gw_tp_pageNr"+gw_tp_pageNr);
				if ((page != gw_tp_pageNr) || (blendOut == 1)){
					return;
				}
				obj = document.getElementById(id);
				var width_now = _get_Object_width(id);
				//alert(width_now+" "+enlarge);
				var width_new;
				if (enlarge == 0){
					// Verschmälern bis auf Breite 0
					width_new = width_now - speedInPx;
					if (width_new <= 0) {
						width_new = 0;
						enlarge = 1; //Ab nun vergrößern
						obj.style.width = width_new;
						obj.style.height = newHeight;
						obj.style.top = newTop;
						_gw_ani_changeOpacity(obj, newOpacity);
						// Rekursion
						setTimeout('_gw_ani_fadeOutIn_HTWO_help("'+id+'",'+page+','+newWidth+','+enlarge+','+speedInPx+','+delay+','+wait+','+newHeight+','+newTop+','+newWidth+','+newOpacity+')',wait);
					} else {
						obj.style.width = width_new;
						// Rekursion
						setTimeout('_gw_ani_fadeOutIn_HTWO_help("'+id+'",'+page+','+destWidth+','+enlarge+','+speedInPx+','+delay+','+wait+','+newHeight+','+newTop+','+newWidth+','+newOpacity+')',delay);
					}
				} else {
					if (width_now == destWidth){
						// fertig
						gw_tp_showContent();
						return;
					} else {
						// Verbreitern
						width_new = width_now + speedInPx;
						if (width_new > destWidth) {width_new = destWidth;}	
					}
					obj.style.width = width_new;
					// Rekursion
					setTimeout('_gw_ani_fadeOutIn_HTWO_help("'+id+'",'+page+','+destWidth+','+enlarge+','+speedInPx+','+delay+','+wait+','+newHeight+','+newTop+','+newWidth+','+newOpacity+')',delay);
				}
			}
			
			// ---------------------------------------------------------------------------
			// Verschmälert das Objekt bis zur Breite 0
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id				 		: ID des HTML-Elements
			// - page					: Seite mit der aufgerufen wurde, wenn aktuelle Seite != page => Abbruch
			// - destWidth		: Zielbreite des Objekts
			// - enlarge			: Modus, enlarge = 0: Objekt wird noch verkleinert,
			//																	 1: Objekt wird wieder vergrößert
			// - speedInPx		: Pixel um die das Objekt pro Animationsstufe verbreitert wird
			// - delay				: Verzögerung zwischen 2 Animationsstufen
			// - wait					: Zeit die verstreichen soll, wenn das Objekt bei Breite 0 ist
			// - newHeight		: neue Höhe nach Verkleinern
			// - newTop			: neue Top Koordinate
			// - newWidth		: neue Breite
			// - newOpacity		: neue Durchsichtigkeit
			// ---------------------------------------------------------------------------			
			function _gw_ani_fadeOut_HTWO_help(id, page, destWidth, enlarge, speedInPx, delay, wait, newHeight, newTop, newWidth, newOpacity){
				//debug(" Test: page-"+page+" gw_tp_pageNr"+gw_tp_pageNr);
				if ((page != gw_tp_pageNr) || (blendOut == 0)){
					return;
				}
				obj = document.getElementById(id);
				var width_now = _get_Object_width(id);
				//alert(width_now+" "+enlarge);
				var width_new;
				if (enlarge == 0){
					// Verschmälern bis auf Breite 0
					width_new = width_now - speedInPx;
					if (width_new <= 0) {
						width_new = 0;
						//enlarge = 1; //Ab nun vergrößern
						obj.style.width = width_new;
						obj.style.height = newHeight;
						obj.style.top = newTop;
						_gw_ani_changeOpacity(obj, newOpacity);
						gw_tp_pageNr = -1;
						return;
						//setTimeout('_gw_ani_fadeOut_HTWO_help("'+id+'",'+page+','+newWidth+','+enlarge+','+speedInPx+','+delay+','+wait+','+newHeight+','+newTop+','+newWidth+','+newOpacity+')',wait);
					} else {
						obj.style.width = width_new;
						// Rekursion
						setTimeout('_gw_ani_fadeOut_HTWO_help("'+id+'",'+page+','+destWidth+','+enlarge+','+speedInPx+','+delay+','+wait+','+newHeight+','+newTop+','+newWidth+','+newOpacity+')',delay);
					}
				} else {
					if (width_now == destWidth){
						// fertig
						gw_tp_showContent();
						return;
					} else {
						// Verbreitern
						width_new = width_now + speedInPx;
						if (width_new > destWidth) {width_new = destWidth;}	
					}
					obj.style.width = width_new;
					// Rekursion
					setTimeout('_gw_ani_fadeOut_HTWO_help("'+id+'",'+page+','+destWidth+','+enlarge+','+speedInPx+','+delay+','+wait+','+newHeight+','+newTop+','+newWidth+','+newOpacity+')',delay);
				}
			}
			
			
			// ---------------------------------------------------------------------------
			// Hilfsfunktion fuer die 7 Bilder fuer die Produkt Show
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id1				 		: ID des 1. HTML-Elements
			// - id2				 		: ID des 2. HTML-Elements
			// - id3				 		: ID des 3. HTML-Elements
			// - id4				 		: ID des 4. HTML-Elements
			// - id5				 		: ID des 5. HTML-Elements
			// - id6				 		: ID des 6. HTML-Elements
			// - id7				 		: ID des 7. HTML-Elements									
			// ---------------------------------------------------------------------------
			// Globale Variable startX ist für die Rücksetzung der Elemente 
			// auf den linken Rand
			// ---------------------------------------------------------------------------			
			function _gw_ani_moveProductsRound_help(id1, id2, id3, id4, id5, id6, id7){
				//startX = -650; // Startpunkt bei dem die Produkte erscheinen wenn sie den rechten Rand erreicht haben			
				startX = -1240; // Startpunkt bei dem die Produkte erscheinen wenn sie den rechten Rand erreicht haben			
				
				delay = 50; //Setzt den Delay für die Animation
				x_borderRight = 759; //Setzt die rechte Kante, ab der das Element wieder auf den Anfang 
									// zurückgesetzt wird (linke Kante)
				width_standard = 150; // Standardbreite der Produkte					
				// Objekte einlesen	
				var objects = new Array(document.getElementById(id1), document.getElementById(id2), document.getElementById(id3), document.getElementById(id4), document.getElementById(id5), document.getElementById(id6), document.getElementById(id7));
				//var objects_stdwidth = new Array(150,150,150,150,150,150,150); // Die Breite der Bilder
				var objects_stdwidth = new Array(150,150,400,400,400,400,400); // Die Breite der Bilder

				var objects_x_now = new Array();
				var objects_x_new = new Array();
				if (gw_tp_pageNr == 20){ //Aktuelle Seite enthält die Bilder
					// Neue X-Koordinate berechnen und setzen
					for (i = 0; i < 7; i++){
						objects_x_now[i] = parseInt(objects[i].style.left);
						objects_x_new[i] = objects_x_now[i] + 3;
						// Wenn rechter Rand erreicht, rücksetzen auf linken Rand
						if (objects_x_new[i] > x_borderRight-objects_stdwidth[i]){
							// Version 1 : Ausblenden
							/*anteil = 0;
							anteil = ((objects_x_new[i] - (x_borderRight-200)) / 200);
							opac_new = parseInt(anteil*100);
							//alert(anteil);
							//IE
							//objects[i].filters.alpha=opac_new;
							//Mozilla
							objects[i].style.MozOpacity=opac_new;
							objects[i].opacity = (opac_new);
	    					objects[i].MozOpacity = (opac_new);
	    					objects[i].KhtmlOpacity = (opac_new);
	    					objects[i].filter = "alpha(opacity=" + opac_new + ")"; 
	    					*/
	    					// Version 2 : Bild verschmälern
	    					width_now = parseInt(objects[i].style.width);
	    					width_new = x_borderRight - objects_x_new[i];
	    					if (width_new < 0){width_new = 0;}
	    					//width_new = width_now - 5; 
	    					objects[i].style.width = width_new; 
	    					//alert('NOW: '+width_now+'  --  NEW: '+objects[i].style.width);
						}
						if (objects_x_new[i] > x_borderRight) {
							//opac_new = 100; // oder 0?
							
							//IE
							//objects[i].filters[0].opacity=opac_new;
							
							//Mozilla
							//objects[i].style.MozOpacity=100;					
							
							//Allgemein
							objects_x_new[i] = startX;
							objects[i].style.left = objects_x_new[i];
							objects[i].style.width = objects_stdwidth[i];
						} else {
							objects[i].style.left = objects_x_new[i];
						}
					}
					// Rekursion
					setTimeout('_gw_ani_moveProductsRound_help("'+id1+'","'+id2+'","'+id3+'","'+id4+'","'+id5+'","'+id6+'","'+id7+'")',delay);
				} else { //Bilder ausblenden
					for (i = 0; i < 7; i++){
						//objects_x_new[i] = -2000;
						objects_x_new[i] = -4000;
						
						objects[i].style.left = objects_x_new[i];
					}
				}
			}	
			
			// ---------------------------------------------------------------------------
			// Bewegt die 7 Bilder fuer die Produkt Show
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id1				 		: ID des 1. HTML-Elements
			// - id2				 		: ID des 2. HTML-Elements
			// - id3				 		: ID des 3. HTML-Elements
			// - id4				 		: ID des 4. HTML-Elements
			// - id5				 		: ID des 5. HTML-Elements
			// - id6				 		: ID des 6. HTML-Elements
			// - id7				 		: ID des 7. HTML-Elements
			// ---------------------------------------------------------------------------				
			function gw_ani_moveProductsRound(id1, id2, id3, id4, id5, id6, id7){
				//obj = document.getElementById(id1);
				//startX = parseInt(obj.style.left);
				
				// Überprüfung ob Div schon geladen ist:
				if (document.getElementById('pic4') == null) {
					// FALL: Div noch nicht geladen => Timeout und nochmal probieren:
					setTimeout("gw_ani_moveProductsRound('pic1','pic2','pic3', 'pic4', 'pic5', 'pic6', 'pic7');", 500);
					return;
				}

				_gw_ani_moveProductsRound_help(id1,id2,id3,id4,id5,id6,id7);
			}
			
			// -------------------------------------------------------------------------------
			// Hält die Bilder aus dem Bildbereich wenn nur der Hintergrund zu sehen sein soll
			// -------------------------------------------------------------------------------
			// Parameter:
			// - id1				 		: ID des 1. HTML-Elements
			// - id2				 		: ID des 2. HTML-Elements
			// - id3				 		: ID des 3. HTML-Elements
			// -------------------------------------------------------------------------------			
			function gw_ani_holdProductsOut(id1, id2, id3, id4, id5, id6, id7){
				if (document.getElementById('pic7') == null) {
					// Nix tun
				} else {
					if (gw_tp_pageNr == 20){	
						// Objekte einlesen	
						var objects = new Array(document.getElementById(id1), document.getElementById(id2), document.getElementById(id3), document.getElementById(id4), document.getElementById(id5), document.getElementById(id6), document.getElementById(id7));
						//Bilder ausblenden
						for (i = 0; i < 7; i++){
							objects[i].style.left = -2000;
						}
						//_gw_ani_holdProductsOut(id1,id2,id3);	
					} else {
						return;
					}
				}
			}
			
			
			
			//Globale Variablen
			animationStep = 0;			
			aQuadrantObj = new Array (2,1,0,3); //0:rechtsunten,1:linksunten,2:linksoben,3:rechtsoben			
			aObjMaxSize = new Array(150,150,130,150);
			aObjMinSize = new Array(20,20,20,20);
			// ---------------------------------------------------------------------------
			// Hilfsfunktion, die die 4 Bilder fuer die Produkt Show im Kreis tanzen lässt
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id1				 		: ID des 1. HTML-Elements
			// - id2				 		: ID des 2. HTML-Elements
			// - id3				 		: ID des 3. HTML-Elements
			// - id4				 		: ID des 4. HTML-Elements
			// ---------------------------------------------------------------------------				
			function _gw_ani_moveProductsInCircle_help(id1, id2, id3, id4){
				//document.getElementById("debug").innerHTML += "##-";
				
				//Ursprüngliche Werte
				//aDeltaX = new Array(0,63,123,180,232,276,312,338,355,360);
				//aDeltaY = new Array(360,354,338,312,276,232,180,122,62,0);

				//Werte angepasst an Fenster
				aDeltaX = new Array(0,50,98,144,186,220,250,270,284,288);
				aDeltaY = new Array(288,284,270,250,220,186,144,98,50,0);
				
				//Korrekturfaktor wenn Animation "noch enger" sein soll:
				for (i = 0; i < 10; i++){
					aDeltaX[i] *= 0.8;
					aDeltaY[i] *= 0.8;
				}
				rightDirection = false; //Drehrichtung links
				delay = 120;
				mX = 300 //MitteX
				mY = 160 //MitteY
				var objects = new Array(document.getElementById(id1), document.getElementById(id2), document.getElementById(id3), document.getElementById(id4));
				var objects_x_now = new Array();
				var objects_x_new = new Array();
				for (i = 0; i < 4; i++){
					quadrant = aQuadrantObj[i];
					x_new = 0;
					y_new = 0;
					if (quadrant==0){ //OK
						if (rightDirection){
							dX = aDeltaX[9-animationStep];
							dY = aDeltaY[9-animationStep];												
							new_width = aObjMaxSize[i] - (((8-animationStep) / 16) * (aObjMaxSize[i] - aObjMinSize[i]));
							objects[i].getElementsByTagName("img")[0].width = new_width;							
						} else {
							dX = aDeltaX[animationStep];
							dY = aDeltaY[animationStep];					
							new_width = aObjMaxSize[i] - ((animationStep / 16) * (aObjMaxSize[i] - aObjMinSize[i]));
							objects[i].getElementsByTagName("img")[0].width = new_width;
						}
						x_new = mX + dX;
						y_new = mY + (dY/2);
					}
					if (quadrant==1){
						if (rightDirection){
							dX = aDeltaX[animationStep];
							dY = aDeltaY[animationStep];												
							new_width = aObjMaxSize[i] - (((animationStep) / 16) * (aObjMaxSize[i] - aObjMinSize[i]));
							objects[i].getElementsByTagName("img")[0].width = new_width;
						} else {
							dX = aDeltaX[9-animationStep];
							dY = aDeltaY[9-animationStep];
							new_width = aObjMaxSize[i] - (((8-animationStep) / 16) * (aObjMaxSize[i] - aObjMinSize[i]));
							objects[i].getElementsByTagName("img")[0].width = new_width;
						}
						x_new = mX - dX;
						y_new = mY + (dY/2);
					}
					if (quadrant==2){ //OK
						if (rightDirection){
							dX = aDeltaX[9-animationStep];
							dY = aDeltaY[9-animationStep];												
							new_width = (aObjMaxSize[i]/2 + (aObjMinSize[i] / 2)) - ((animationStep / 16) * (aObjMaxSize[i] - aObjMinSize[i]));
							objects[i].getElementsByTagName("img")[0].width = new_width;
						} else {
							dX = aDeltaX[animationStep];
							dY = aDeltaY[animationStep];					
							new_width = (aObjMaxSize[i]/2 + (aObjMinSize[i] / 2)) - (((8-animationStep) / 16) * (aObjMaxSize[i] - aObjMinSize[i]));
							objects[i].getElementsByTagName("img")[0].width = new_width;
						}
						x_new = mX - dX;
						y_new = mY - (dY/2);						
					}
					if (quadrant==3){
						if (rightDirection){
							dX = aDeltaX[animationStep];
							dY = aDeltaY[animationStep];												
							new_width = (aObjMaxSize[i]/2 + (aObjMinSize[i] / 2)) - (((8-animationStep) / 16) * (aObjMaxSize[i] - aObjMinSize[i]));
							objects[i].getElementsByTagName("img")[0].width = new_width;
						} else {
							dX = aDeltaX[9-animationStep];
							dY = aDeltaY[9-animationStep];					
							new_width = (aObjMaxSize[i]/2 + (aObjMinSize[i] / 2)) - ((animationStep / 16) * (aObjMaxSize[i] - aObjMinSize[i]));
							objects[i].getElementsByTagName("img")[0].width = new_width;
						}
						x_new = mX + dX;
						y_new = mY - (dY/2);
					}
					objects[i].style.left = x_new;
					objects[i].style.top = y_new;
					//document.getElementById("debug").innerHTML += '-' + i + ': ->' + objects[0].style.left + ' ' + objects[0].style.top + '<--';
				}
				animationStep++;
					if(animationStep == 9){
						//Quadrant wechseln
						if (rightDirection){
							for (i = 0; i < 4; i++){//links drehend
								aQuadrantObj[i]++;
								if (aQuadrantObj[i] > 3) aQuadrantObj[i] = 0;
							}							
						} else {						
							for (i = 0; i < 4; i++){//links drehend
								aQuadrantObj[i]--;
								if (aQuadrantObj[i] < 0) aQuadrantObj[i] = 3;
							}
						}
						animationStep = 0;						
					}
				setTimeout('_gw_ani_moveProductsInCircle_help("'+id1+'","'+id2+'","'+id3+'","'+id4+'")',delay);
			}				
			
			
			// ---------------------------------------------------------------------------
			// Bewegt die 4 Bilder fuer die Produkt Show in einer Kreisbahn um den Mittelpunkt
			// ---------------------------------------------------------------------------
			// Parameter:
			// - id1				 		: ID des 1. HTML-Elements
			// - id2				 		: ID des 2. HTML-Elements
			// - id3				 		: ID des 3. HTML-Elements
			// - id4				 		: ID des 4. HTML-Elements
			// ---------------------------------------------------------------------------				
			function gw_ani_moveProductsInCircle(id1, id2, id3, id4){
				//ini:
				var objects = new Array(document.getElementById(id1), document.getElementById(id2), document.getElementById(id3), document.getElementById(id4));
				objects[0].style.left = 360;
				objects[0].style.top = 0;
				objects[1].style.left = 0;
				objects[1].style.top = 180;
				objects[2].style.left = 360;
				objects[2].style.top = 360;
				objects[3].style.left = 720;
				objects[3].style.top = 180;
				_gw_ani_moveProductsInCircle_help(id1,id2,id3,id4);
			}
			
			
			function gw_ani_showCloseButton(){
					// Jetzt an die richtige Stelle versetzen
					obj = document.getElementById('gw_closeButton');
					obj.style.left = bgX + closeButtonX;
					obj.style.top = bgY + closeButtonY;
			}
			
			function gw_ani_hideCloseButton(){
					obj = document.getElementById('gw_closeButton');
					obj.style.left = -500;
					obj.style.top = 0;
			}