var PhotoRotation = Class.create({

  initialize: function(divId, items, heights, buttonDivName, objName, playButton) {
	this.divId         = divId;
	this.items         = items;
	this.heights       = heights;
	this.buttonDivName = buttonDivName;
	this.objName       = objName;
	this.playButton    = playButton;
	
	this.previousItem  = 0;
	this.timeoutId     = 0;
	this.nextItem      = 0;
	
	this.interval      = 5000;
	
	this.started       = false;
	this.paused        = false;
	
	this.size          = this.items.length;
  },
	
	rotate: function( ) {
		if ( this.started ) {
			this.fadeOut( false, null );
		}
		else {
			this.timeoutId = setTimeout( this.objName+'.rotate()', this.interval );
			this.started   = true;
		}
	},
	
	fadeOut: function( doStop, itemNum ) {
		
		//Effect.Fade(this.divId);
		this.timeoutId = setTimeout( this.objName+'.scale( '+doStop+', '+itemNum+' )', 1 );
		this.unselectButton();
	},
	
	unselectButton: function() {
		if (this.previousItem == 0)
			$(this.buttonDivName+this.previousItem).className = "first";
		else
			$(this.buttonDivName+this.previousItem).className = "";
	},
	
	selectButton: function() {
		if (this.nextItem == 0)
			$(this.buttonDivName+this.nextItem).className = "first selected";
		else
			$(this.buttonDivName+this.nextItem).className = "selected";
	},
	
	scale: function( doStop, itemNum ) {
		this.setNextItem( itemNum );
		var scalePercent = this.getScalePercent();
		new Effect.Scale (this.divId , scalePercent, {scaleX: false });
		this.timeoutId = setTimeout( this.objName+'.fadeIn('+doStop+')', 1000 );
	},
	
	fadeIn: function( doStop ) {
		clearTimeout(this.timeoutId);
	
		$(this.divId).innerHTML = this.items[this.nextItem];
	
		//reikia apskaiciuoti kiek scalinti
		Effect.Appear(this.divId);
		this.selectButton();
		this.setPreviousItem();
	
		if ( !doStop ) {
			this.timeoutId = setTimeout( this.objName + '.rotate()', this.interval );
		}
		else {
			this.pause();
		}
	
	},
	
	getScalePercent: function() {
		var percent = this.heights[this.nextItem] * 100 / this.heights[this.previousItem];
	
		return percent;
	},
	
	setPreviousItem: function() {
		this.previousItem = this.nextItem;
	},
	
	setNextItem: function( itemNum ) {
		if ( itemNum != null ) {
			this.nextItem = itemNum;
		}
		else {
			if ( this.nextItem + 1 < this.items.length ) {
				this.nextItem += 1;
			}
			else {
				this.nextItem = 0;
			}
		}
	},
	
	pausePlay: function( ) {
		if ( !this.paused ) {
			this.pause();
		}
		else {
			$(this.playButton).className = "pause";
		
			this.paused = false;
		
			this.rotate();
		} 
	},
	
	pause: function(){
		clearTimeout( this.timeoutId );
	
		$(this.playButton).className = "play";
	
		this.paused = true;
	},
	
	show: function( itemNum ) {
		clearTimeout(this.timeoutId);
		this.fadeOut( false, itemNum );
	},
	
	showPrevious: function() {
		var previous = this.previousItem;
		var size = this.size;
		if (previous == 0)
			previous = size;
		
		clearTimeout(this.timeoutId);
		this.fadeOut( false, previous-1);
	},
	
	showNext: function() {
		var next = this.nextItem + 1;
		var size = this.size;
		if (next == size)
			next = 0;
		
		clearTimeout(this.timeoutId);
		this.fadeOut( false, next);
	}
	
});