/* 
	Klasse for kampanjefade. 

	Krever effects.js fra scriptaculous og prototype.js.
	
	TIBEŠ2007 
*/
var Fader = Class.create();

Fader.prototype =
{

	currentImg : 0,
	state : 1,
	alt_state : 2,
	pause : false,
	timer : null, 
	initialized : false,

	initialize : function(el_prefix, fadeData, fadeTime)
	{
		this.el_prefix = el_prefix;
		this.fadeData = fadeData;
		this.fadeTime = fadeTime;
		this.numFade = fadeData[0].length;
		Event.observe(window, "load", this.startAnimation.bindAsEventListener(this), false);
	},

	controlEvent : function (e) 
	{
		var id = Event.element(e).id;
		if (id.indexOf('_') > -1) {
			this.show(id.substring(id.lastIndexOf('_')+1, id.length));
		}
	},
	startAnimation : function() 
	{
		if (this.numFade > 1) {
			var self = this;
			var loader = function() { self.toggle(); };
			this.loader = loader;
			this.timer = setTimeout(this.loader, this.fadeTime);
			this.initialized = true;
			for (var i=0; i<this.numFade; i++) {
				var control;
				if (control=$(this.el_prefix+'_control_'+i)) {
					var n=i;
					Event.observe(control, "mouseover", this.controlEvent.bindAsEventListener(this), false);
					Event.observe(control, "mouseout", function() { self.endShow(); }, false);
				}
			}
		}
	},
	toggle : function()
	{

		if (!this.pause) {
			var prevImg = this.currentImg;
		
			if (++this.currentImg == this.numFade) {
				this.currentImg = 0;
			}
			var source = this.el_prefix+this.state;
			var target = this.el_prefix+this.alt_state;

			this.changeTabs(prevImg, this.currentImg);
			this.changeContent(target, this.currentImg);

			Effect.Fade(source, {duration: 1});
			Effect.Appear(target, {delay: 0.1, duration: 0.8} );

			var temp = this.state;
			this.state = this.alt_state;
			this.alt_state = temp;
			this.timer = setTimeout(this.loader, this.fadeTime);
		}

	},
	
	changeTabs : function (from, to) 
	{
	
		var linkFrom = null;
		var linkTo = null;
		
		if ((linkFrom=$(this.el_prefix+'_control_'+from)) != null) {
			linkFrom.className = 'rightTab';
		}
		if ((linkTo=$(this.el_prefix+'_control_'+to)) != null) {
			linkTo.className = 'rightTabSelected';
		}
	
	
	},

	changeContent : function(target, num)
	{
		if (this.fadeData[0][num] != '' && this.fadeData[0][num] != '&nbsp;') {
			$(target+'_text').innerHTML = this.fadeData[0][num];
			$(target+'_text').style.display = 'block';
		}
		else {
			$(target+'_text').style.display = 'none';
		}
		
		$(target+'_img').src = this.fadeData[1][num];
		$(target+'_link').href = this.fadeData[2][num];	
	},

	show : function(num)
	{
		if (this.initialized && num < this.numFade) {
			clearTimeout(this.timer);
			this.pause = true;
	
			var target = this.el_prefix+this.state;
	
			this.changeTabs(this.currentImg, num);
			this.changeContent(target, num);
	
			this.currentImg = num;
		}
	},
	

	endShow : function() 
	{
		if (this.initialized) {
			this.pause = false; 
			clearTimeout(this.timer);
			this.timer = setTimeout(this.loader, this.fadeTime);
		}
	}
};
