var Ticker = function(params) {
  this.articleContainer = document.getElementById(params['articleContainer']);
  this.tickerContainer = document.getElementById(params['tickerContainer']);
  this.articleTimeout = (params['timeout']) ? params['timeout'] : 2500;
  this.imagePath = (params['imagePath']) ? params['imagePath'] : 'http://common.onset.freedom.com/images/';

	this.tickerArticles = [];
  this.currentArticle = 0;
  this.totalArticles = 0;
  this.currentOpacity = 0;
  this.tickerFade = null;
  this.createTicker();
}

Ticker.prototype = {
  createTicker : function() {
		this.tickerArticles = this.articleContainer.getElementsByTagName('a');
		this.totalArticles = this.tickerArticles.length;
		this.tickerContainer.innerHTML = null;
		this.writeArticle(this.currentArticle);
	},
	writeArticle : function(n) {
	  this.currentArticle = n;
	  this.currentOpacity = 0;
		this.tickerContainer.innerHTML = '<span class="navigation"><a href="'+this.tickerArticles[this.getArticle(-1)]+'" onclick="ticker.writeArticle(ticker.getArticle(-1)); return false;" target="_top" title="'+this.tickerArticles[this.getArticle(-1)].firstChild.nodeValue+'"><img src="'+this.imagePath+'smallarrow_left.gif" border="0" /></a>'+
		                                 '<a href="'+this.tickerArticles[this.getArticle(1)].href+'" onclick="ticker.writeArticle(ticker.getArticle(1)); return false;" target="_top" title="'+this.tickerArticles[this.getArticle(1)].firstChild.nodeValue+'"><img src="'+this.imagePath+'smallarrow_right.gif" border="0" /></a></span>';
		this.tickerContainer.innerHTML += '<a href="'+this.tickerArticles[this.currentArticle].href+'" style="opacity: 0; filter: alpha(opacity=0);" target="_top">'+this.tickerArticles[this.currentArticle].firstChild.nodeValue+'</a>';
		clearTimeout(this.tickerFade);
		setTimeout(this.fadeInTicker, 0);
	},
	fadeOutTicker : function() {
	  var a = ticker.tickerContainer.childNodes[1];
	  a.style.opacity = (a.style.opacity) ? a.style.opacity : 1;
	  if (ticker.currentOpacity > 0) {
		  ticker.currentOpacity -= 10;
	    ticker.setOpacity(a, ticker.currentOpacity);
		  setTimeout(ticker.fadeOutTicker, 25);
		}
		else {
			ticker.writeArticle(ticker.getArticle(1));
		}
	},
	fadeInTicker : function() {
	  var a = ticker.tickerContainer.childNodes[1];
	  if (ticker.currentOpacity < 100) {
		  ticker.currentOpacity += 10;
	    ticker.setOpacity(a, ticker.currentOpacity);
	    setTimeout(ticker.fadeInTicker, 25);
		}
		else {
			ticker.tickerFade = setTimeout(ticker.fadeOutTicker, ticker.articleTimeout);
		}
	},
	setOpacity : function(el, opacity) {
		el.style.opacity = opacity/100;
		el.style.filter = 'alpha(opacity=' + opacity + ')';
	},
	getArticle : function(direction) {
	  if ((this.currentArticle + parseInt(direction)) >= 0 && this.tickerArticles[this.currentArticle + parseInt(direction)]) {
		  return this.currentArticle+direction;
		}
		else {
		  return (direction > 0) ? 0 : this.totalArticles - 1;
		}
	}
}
