Ext.ns('Swix.FotoPlayer');

(function(){

	var FotoPlayer = Ext.extend(Object, {
		interval: 10000,
		fadeOutDuration: 1,
		images: [],
		imageEl1Id: null,
		imageEl2Id: null,
		index: 0,
				
		constructor: function(config) {
			Ext.apply(this, config);
			
			this.imageEl1 = Ext.get(this.imageEl1Id);
			
			if (this.imageEl2Id) {
				this.imageEl2 = Ext.get(this.imageEl2Id);				
			} else {

				this.imageEl2Id = this.imageEl1Id + '2';
				this.index++;
				this.imageEl2 = Ext.DomHelper.insertBefore(this.imageEl1, {
					tag: 'img',
					src: this.images[this.index],
					id: this.imageEl2Id
				}, true)
			}
			
			if (this.imageEl1 && this.imageEl2) {
				this.activeImageEl   = this.imageEl1;
				this.inactiveImageEl = this.imageEl2;

				this.task = Ext.TaskMgr.start.defer(this.interval, Ext.TaskMgr, [{
					run: this.nextFoto,
					interval: this.interval,
					scope: this
				}]);
			}
		},
		
		nextFoto: function() {
			this.index++;
			if (this.index > this.images.length - 1) {
				this.index = 0;
			}

			this.activeImageEl.fadeOut({
				duration: this.fadeOutDuration,
				scope: this,
				callback: function() {
					this.activeImageEl.insertBefore(this.inactiveImageEl);
					this.activeImageEl.show();
					
					inactive = this.activeImageEl;
					active   = this.inactiveImageEl;					
					this.activeImageEl   = active;
					this.inactiveImageEl = inactive;
					
					this.inactiveImageEl.set({
						src: this.images[this.index]
					})
				}
			})
		}
	})
	
	Swix.FotoPlayer = FotoPlayer;
})()
