var Transition = Class.create();
Transition.prototype = {
	initialize: function( ) {
		// List of image URLs.
		this.imageList = [
			'images/bannerImages/20020711.11..jpg',
			'images/bannerImages/20020711.13..jpg',
			'images/bannerImages/20020711.5..jpg',
			'images/bannerImages/20020712.I never forget..jpg',
			'images/bannerImages/20041022.DSCN4644..jpg',
			'images/bannerImages/20041022.Moi kartinki.083.jpg',
			'images/bannerImages/20050215.Bild 002..jpg',
			'images/bannerImages/20050215.Moi kartinki.043.jpg',
			'images/bannerImages/20050216.DSCN4626..jpg',
			'images/bannerImages/20050216.DSCN5118..jpg',
			'images/bannerImages/20080831.Kräftskiva 6. Mina tavlor till Norge.jpg',
			'images/bannerImages/20090128.DSCN5756..jpg',
			'images/bannerImages/20090128.DSCN5764..jpg',
			'images/bannerImages/20090128.DSCN5765..jpg',
			'images/bannerImages/20090128.DSCN5773..jpg',
			'images/bannerImages/20090221.Karlshamn,Klaipeda-fevral 064..jpg'
		];
		// Save how many images are in the array.
		this.noImages = this.imageList.length;
		// Is image loading?
		this.isImageLoading = null;
		// Random index of first image to show.
		this.index = Math.ceil(this.noImages*Math.random())-1;
		
		// Set up the img elements
		this.currentImage = $('img1');
		this.currentImage.setAttribute( 'src', this.imageList[this.index] );
		this.currentImage.style.opacity = 1.0;
		this.imageRef = $('img2');
		this.imageRef.setAttribute( 'src', this.imageList[this.index] );
		this.imageRef.style.opacity = 0.0;
	},

	loadImage: function( ) {		
		this.index++;
		if (this.index == this.noImages) { this.index = 0; }
		this.imageRef.setAttribute( 'src', this.imageList[this.index] );
		
		if(!this.imageRef.complete) {
			/* The image is not yet loaded */
			this.isImageLoading = 'Loading...';
			Event.observe( this.imageRef, 'load', this._transImage() );
		} else {
			/* The image is already loaded */
			this.isImageLoading = null;
			this.transImage();
		}
	},

	transImage : function() {
		var tmp = this.currentImage;
		if(this.isImageLoading !== null) { this.isImageLoading = null; }
		(new Effect.Appear( this.imageRef, { duration: 3.0, from: 0.0, to: 1.0 } ));
		(new Effect.Appear( this.currentImage, { duration: 3.0, from: 1.0, to: 0.0 } ));		
		this.currentImage = this.imageRef;
		this.imageRef = tmp;
		tmp = null;
	}
};

