/**
 * Newsticker-Fader.
 * @copy Steffen Friedrich, steffen.friedrich@pingping.ag
 **/
function Newsticker(_config)
{	this.config = _config;
	this.init = _Newsticker_init;
	this.init();
}

function _Newsticker_init()
{
	this.tickers = new Array();
	
	var tick;
	for(var sklave=0; tick=document.getElementById(this.config.id+'-'+sklave); sklave++)
	{	if(sklave) 
		{	tick.prevTick = this.tickers[sklave-1];
			this.tickers[sklave-1].nextTick = tick;
		}
		this.tickers.push( tick );
	}

	if(this.tickers.length>1)
	{	this.tickers[0].prevTick = this.tickers[this.tickers.length-1];
		this.tickers[this.tickers.length-1].nextTick = this.tickers[0];
		this.tick = this.tickers[0];
		
		this.element = document.getElementById(this.config.id);
		this.element.ticker = this;
		
		this.access = 'document.getElementById("'+this.config.id+'").ticker.';

		this.curCucu = 1;

		this.tickWay = Math.round(this.config.delay/this.config.fadedelay)+this.config.steps;
		this.tickStep = this.tickWay;

		this.fade = _Newsletter_fade;
		this.controls = _Newsletter_controls;
		
		this.backing = _Newsletter_backing;
		this.forwarding = _Newsletter_forwarding;
		
		this.setVisibility = _Newsletter_setVisibility;
		this.setVisible = _Newsletter_setVisible;

		this.controls();
		this.fade(this.curCucu);
	}
}

function _Newsletter_controls()
{	this.headline = document.getElementById(this.config.id+'-headline');

	this.tools = document.createElement('div');
	this.tools.id = 'news-tools';
	
	this.back = document.createElement('a');
	this.back.title = this.config.backLinkTitle;
	this.back.href = '#';
	this.back.appendChild(document.createElement('img'));
	this.back.lastChild.src = this.config.backImageSource;
	this.back.ticker = this;
	this.back.onclick = function(){this.ticker.backing(); return false;}

	this.next = document.createElement('a');
	this.next.title = this.config.nextLinkTitle;
	this.next.href = '#';
	this.next.appendChild(document.createElement('img'));
	this.next.lastChild.src = this.config.nextImageSource;
	this.next.ticker = this;
	this.next.onclick = function(){this.ticker.forwarding(); return false;}

	this.tools.appendChild( this.back );
	this.tools.appendChild( this.next );
	
	this.headline.appendChild(this.tools);
}

function _Newsletter_backing()
{	this.curCucu++;
	
	if(this.tickStep>this.config.steps*.75)
	{	this.tick.style.display='none';
		this.tick = this.tick.prevTick;
		this.tick.style.display='block';
	}
	
	this.tickStep = this.tickWay;
	this.setVisibility();
	
	this.fade(this.curCucu);
}

function _Newsletter_forwarding()
{	this.curCucu++;
	
	this.tick.style.display='none';
	this.tick = this.tick.nextTick;
	this.tick.style.display='block';
	
	this.tickStep = this.tickWay;
	this.setVisibility();	
	
	this.fade(this.curCucu);
}

function _Newsletter_fade(cucu)
{	if(this.curCucu==cucu)this.curCucu++;
	else return;

	if(this.tickStep>this.config.steps) 
	{	window.setTimeout(this.access+'fade('+this.curCucu+')',(this.tickStep-this.config.steps)*this.config.fadedelay);	
		this.tickStep=this.config.steps;
	}else
	if(this.tickStep)
	{	window.setTimeout(this.access+'fade('+this.curCucu+')',this.config.fadedelay);
		this.setVisibility();
		this.tickStep--;
	}else
	{	this.tick.style.display='none';
		this.tick = this.tick.nextTick;
		this.tickStep=this.tickWay;
		this.setVisibility();
		window.setTimeout(this.access+'fade('+this.curCucu+')',this.config.fadedelay);
	}
}

function _Newsletter_setVisibility()
{	if(this.tickStep<=this.config.steps)
	{	this.setVisible(this.tickStep/this.config.steps);
		if(this.tickStep==this.config.steps)
			this.tick.nextTick.style.display='block';
	} else this.setVisible(1);
}

function _Newsletter_setVisible(visibility)
{	this.tick.style.opacity=visibility;
	this.tick.nextTick.style.opacity=1-visibility;
	
	visibility = Math.round(visibility*100);
	this.tick.style.filter='alpha(opacity='+visibility+')';
	this.tick.nextTick.style.filter='alpha(opacity='+(100-visibility)+')'
}
