function Aikido(forumUrl, albumId) {
	var me = this;			
	this.showImageUrl = forumUrl + '/gallery/image.php';
	this.albumId = albumId;
	this.lastImageId = -1;	
	this.activeImageTags = {};	
	this.uid = 0;
	this.lastRandomNum = -1;
	this.imageCount = 12;
	this.fadeToBaseTime = 2000;
	this.nextRandomTime = 500;
//	this.textFadeSpeed = 50;
	this.texts = {};
	this.defaultSpotText = {
			headline: 	$('#ak_spot h1').html(),
			text:		$('#ak_spot div').html()
	};
	this.texts[1] = { 
			headline: 	'Was ist Aikido?',
			text:		'Aikido ist eine moderne <br />japanische Kampfkunst, <br />die vom Begründer Morihei <br />Ueshiba (1883 -1969) auf der <br />Grundlage verschiedener <br />Budo-Disziplinen geschaffen <br />wurde.'
	};
	this.texts[2] = { 
			headline: 	'Friedvolle Kampfkunst',
			text:		'Die aggressive Kraft des <br />Angreifers wird durch Kreisund <br />Spiralbewegungen <br />umgelenkt und so geführt, <br />dass sie mit Würfen und <br />Hebeln zur Verteidigung <br />genutzt werden kann.'
	};
	this.texts[3] = { 
			headline: 	'Selbstverteidigung',
			text:		'Aikido dient dem friedvollen <br />Umgang miteinander, <br />weil das Ziel des Kampfes <br />darin besteht, den Angreifer <br />durch Abwehr und <br />Neutralisierung der Angriffe <br />zur Aufgabe zu bewegen.'
	};
	this.texts[4] = { 
			headline: 	'Gleichgewicht',
			text:		'Angriffe werden <br />aufgenommen und umgelenkt, <br />um das Gleichgewicht <br />des Angreifers zu brechen. <br />Dabei spielt die Verlagerung <br />des Körperzentrums <br />eine wichtige Rolle.'
	};
	this.texts[5] = { 
			headline: 	'Männer und Frauen',
			text:		'Aikido erfordert nur wenig <br />Kraft und kommt völlig <br />ohne Wettkämpfe aus. <br />Daher ist diese Kampfkunst <br />gleichermaßen für <br />Männer und Frauen in <br />jedem Alter geeignet.'
	};
	this.texts[6] = { 
			headline: 	'Fallschule',
			text:		'Zur Auflösung der <br />Angriffsenergie sind die <br />Formen des Fallens und Rollens <br />unbedingt notwendig. <br />Dafür werden Fallen und <br />Abrollen geschult, um Verlet- <br />zungen auszuschließen.'
	};
	this.texts[7] = { 
			headline: 	'Hebelgesetz',
			text:		'Die Bewegungen des <br />Angreifers werden unter <br />Ausnutzung physikalischer <br />Prinzipien umgelenkt und <br />dann durch Hebel und Würfe <br />oder durch Haltegriffe zur <br />Fixierung neutralisiert.'
	};
	this.texts[8] = { 
			headline: 	'Elegante Techniken',
			text:		'Im Aikido werden <br />Wurftechniken (Nage-Waza), <br />Bodentechniken (Katame- <br />Waza) und Techniken im Sitzen <br />(Suwari-Waza) unterschieden <br />und gegen verschiedenste <br />Angriffe eingesetzt.'
	};
	this.texts[9] = { 
			headline: 	'Waffentraining',
			text:		'Wir trainieren auch mit <br />Waffen aus Holz. Mit dem <br />Stock, dem Schwert und ver- <br />stärkt mit dem Messer aus Holz. <br />Damit wäre auch eine <br />Verteidigung gegen <br />bewaffnete Angriffe <br />möglich.'
	};
	this.texts[10] = { 
			headline: 	'Ziele im Aikido',
			text:		'Ein Ziel des Aikido ist es, <br />die erlernten Prinzipien <br />auf das tägliche Leben <br />zu übertragen. Dies setzt <br />aber ein stetes körperliches <br />Training zu deren <br />Verinnerlichung voraus.'
	};
	this.texts[11] = { 
			headline: 	'Aikido im Alltag',
			text:		'Durch die fließenden <br />Bewegungen werden die <br />Körperwahrnehmung <br />und die Koordination <br />geschult – in einem <br />abwechlungsreichen Training <br />für Körper und Geist.'
	};
	this.texts[12] = { 
			headline: 	'Probetraining',
			text:		'Aikido kann man nicht <br />aus Büchern lernen, man <br />muss es erleben. <br />Wir laden Sie herzlich ein! <br />Für das kostenlose Probetraining <br />genügt zunächst <br />ein Trainingsanzug.'
	};
	
	this.log = function(msg) {
		if (typeof console != "undefined" && console.log) console.log(msg);
	};	
	
	this.showNextImageRandom = function() {
		// me.log('Next random here');
		var imageNum;
		do {
			imageNum = Math.floor(Math.random() * this.imageCount) + 1;			
		} while (imageNum == me.lastRandomNum);				
		
		me.lastRandomNum = imageNum;
		// me.log(imageNum);
		me.showNextImage(imageNum);
	};
			
	this.showNextImage = function(imageNum) {
		$.getJSON('get_random_image.php', { last_image_id: me.lastImageId }, function(response) {
			me.lastImageId = response.image_id;
			// me.log('Got next image id: ' + response.image_id);
			var imageUrl = me.showImageUrl + '?album_id=' + me.albumId + '&image_id=' + response.image_id + '&uid=' + (me.uid++);
			// me.log('imageUrl = ' + imageUrl);
			
			me.preloadImage(imageUrl, function() {
				// me.log('preload finished');	
				// me.log('Changing src to: ' + imageUrl);
				me.fadeImages(imageNum, imageUrl, false);
			});			
		});
	};
	
	this.preloadImage = function(imageUrl, callback) {
		me.preloading = true;
		// me.log('Disabling cache');
		$.ajaxSetup ({		    
		    cache: false
		});		
		$('<img />')
    		.attr('src', imageUrl)
    		.load(callback);		
	};
	
	this.fadeToBase = function(imageNum) {
		var baseImageUrl = 'images/home/' + imageNum + '.jpg';
		// me.log('Fade to base: ' + imageNum + '. URL: ' + baseImageUrl);
		me.fadeImages(imageNum, baseImageUrl, true);
	};
	
	this.fadeImages = function(imageNum, imageUrl, isFadeToBase) {
		// me.log('Fading');
		
		var currentImage = $('#ak_' + imageNum + ' img.front'); 
		var nextImage = $('#ak_' + imageNum + ' img.back');
		// me.log('current=' + currentImage.attr('id') + ' => ' + currentImage.attr('src'));
		// me.log('next=' + nextImage.attr('id') + ' => ' + nextImage.attr('src'));
		
		// me.log("current z=" + currentImage.css('z-index'));
		// me.log("next z=" + nextImage.css('z-index'));
		// me.log("next classes=" + nextImage.attr('class'));
		
		nextImage.attr('src', imageUrl);
		nextImage.css('opacity', 0.0);

		nextImage.removeClass('back');
		nextImage.addClass('front');
		
		currentImage.removeClass('front');			
		currentImage.addClass('back');	
								
		nextImage.animate({opacity: 1.0}, 2000, function() {
			if (isFadeToBase) {
				// me.log('Next random in ' + me.nextRandomTime);
				window.setTimeout(function() { me.showNextImageRandom(); }, me.nextRandomTime);
			} else {
				// me.log('FadeToBase in ' + me.fadeToBaseTime);
				window.setTimeout(function() { me.fadeToBase(imageNum); }, me.fadeToBaseTime);
			}
		});		
	};


	this.homeOnMouseOver = function(imageNum) {
		var hoverImage = $('#ak_' + imageNum + 'h');
		hoverImage.css('opacity', 1.0);
		$('#ak_spot h1').html(me.texts[imageNum].headline);
		$('#ak_spot div').html(me.texts[imageNum].text);
		
//		var textDiv = $('#ak_spot *');		
//		textDiv.animate({opacity: 0}, me.textFadeSpeed, function() {
//			$('#ak_spot h1').html(me.texts[imageNum].headline);
//			$('#ak_spot div').html(me.texts[imageNum].text);
//			textDiv.animate({opacity: 1}, me.textFadeSpeed);
//		});
		
	};
	
	
	this.homeOnMouseOut = function(imageNum) {
		var hoverImage = $('#ak_' + imageNum + 'h');
		hoverImage.css('opacity', 0.0);		
		$('#ak_spot h1').html(me.defaultSpotText.headline);
		$('#ak_spot div').html(me.defaultSpotText.text);
		
//		var textDiv = $('#ak_spot div');		
//		textDiv.animate({opacity: 0}, me.textFadeSpeed, function() {
//			$('#ak_spot h1').html(me.defaultSpotText.headline);
//			$('#ak_spot div').html(me.defaultSpotText.text);						
//			textDiv.animate({opacity: 1}, me.textFadeSpeed);
//		});
	};
}
	


