/**
 * @author Sjors
 */
var TweetScroller = {
	init: function (container) {
		TweetScroller.container = $(container);
		TweetScroller.tweets    = TweetScroller.container.getElement('ul');

		var fadeTop = new Element('div', {'class': 'fadetop'});
		var fadeBottom = new Element('div', {'class': 'fadebottom'});

		fadeTop.adopt(new Element('span'));
		fadeBottom.adopt(new Element('span'));

		TweetScroller.container.grab(fadeTop, 'top');
		TweetScroller.container.grab(fadeBottom, 'bottom');

		fadeTop.addEvent('mouseover', TweetScroller.scrollUp);
		fadeTop.addEvent('mouseout', TweetScroller.scrollStop);
		fadeBottom.addEvent('mouseover', TweetScroller.scrollDown);
		fadeBottom.addEvent('mouseout', TweetScroller.scrollStop);

		fadeTop.setStyle('display', 'none');
	},

	scrollUp: function () {
		TweetScroller.container.getElement('.fadebottom').setStyle('display', 'block');

		var currentOffset = parseInt(TweetScroller.tweets.getStyle('margin-top'));
		var animationOptions = {
			'duration': (currentOffset * -1) * 8,
			'onComplete': function () {
				TweetScroller.container.getElement('.fadetop').setStyle('display', 'none');
			}
		}

		TweetScroller.animation = new Fx.Tween(TweetScroller.tweets, animationOptions);
		TweetScroller.animation.start('margin-top', 0);
	},
	
	scrollDown: function () {
		//TweetScroller.scrolling = true;
		TweetScroller.container.getElement('.fadetop').setStyle('display', 'block');

		var currentOffset = parseInt(TweetScroller.tweets.getStyle('margin-top'));
		var maxOffset = (TweetScroller.tweets.getSize().y - TweetScroller.container.getSize().y) * -1;
		var duration = maxOffset - currentOffset;
		duration = duration < 0 ? duration *-1 : duration; 

		var currentOffset = parseInt(TweetScroller.tweets.getStyle('margin-top'));
		var animationOptions = {
			'duration': duration * 8,
			'onComplete': function () {
				TweetScroller.container.getElement('.fadebottom').setStyle('display', 'none');
			}
		}

		TweetScroller.animation = new Fx.Tween(TweetScroller.tweets, animationOptions);
		TweetScroller.animation.start('margin-top', maxOffset);
	},

	scrollStop: function () {
		TweetScroller.animation.cancel();
	}
}

window.addEvent('domready', function () {
	if ($('tweets')) {
		TweetScroller.init($('tweets'));
	}
});