/************************************************************\
 *        (c) 2008, Bluebear Internet Data Solutions        *
 *    http://www.bluebear.nl/        http://www.tic4.nl/    *
 *                                                          *
 *                    Licensed under the                    *
 * Creative Commons Attribution-Share Alike 3.0 Netherlands *
 *      http://creativecommons.org/licenses/by-sa/3.0/      *
\************************************************************/

/* OPTIONS */
var scrollContID    = 'news';    //ID of the animation container
var blockClass      = 'newsitem';     //Class of the scrolling blocks
var containerHeight = 110;           //Pixels (height of animation container)
var blockHeight     = 100;           //Pixels (height of animating block)
var blockVertMargin = 10;            //Pixels (Vertical margin)
var curBlock        = 0;             //Starting block (default: 0)
var scrollBtnContId = 'news';        //ID of the scroll buttons container
var scrollInterval  = 8000;          //Milliseconds (default: 5000)
var scrollDuration  = 2000;          //Milliseconds (default: 1000)

/* SCROLL BUTTONS (optional) */
var upButton = new Element('a', {
    'href': '#',
    'id': 'scrollUp',
    'styles': {
        'display': 'block',
        'height': 13,
        'width': 13,
        'background': 'transparent url(/skin/scrollup.gif) no-repeat center center',
        'position': 'absolute',
        'top': 1,
        'left': 4
    }
});
var downButton = new Element('a', {
    'href': '#',
    'id': 'scrollDown',
    'styles': {
        'display': 'block',
        'height': 13,
        'width': 13,
        'background': 'transparent url(/skin/scrolldown.gif) no-repeat center center',
        'position': 'absolute',
        'top': 16,
        'left': 4
    }
});


/* SCRIPT */

var autoScroll;
var scroller = function(){
	if ($(scrollContID).getElements('.'+blockClass)) {
//		if ($defined(upButton) && $defined(scrollBtnContId)) {
//			upButton.inject($(scrollBtnContId));
//		}
//		if ($defined(downButton) && $defined(scrollBtnContId)) {
//			downButton.inject($(scrollBtnContId));
//		}
//		if ($(scrollContID).getStyle('position') != 'absolute') {
//			$(scrollContID).setStyle('position','relative');
//		}
//		$(scrollContID).setStyle('overflow','hidden');
//		$(scrollContID).setStyle('height',containerHeight);
		var blocks = $(scrollContID).getElements('.'+blockClass);
		blocks.each(function(block,count){
			block.setStyle('height',145);
			block.setStyle('position','absolute');
			block.setStyle('top',(blockHeight+blockVertMargin*2-1)*count);
		});
		var blockCount = blocks.indexOf(blocks.getLast())+1;
//		if ($('scrollUp')) {$('scrollUp').addEvent('click',scrollUp);}
//		if ($('scrollDown')) {$('scrollDown').addEvent('click',scrollDown);}
		autoScroll = scrollBlocks.periodical(scrollInterval,this);
	}
};

var scrollBlocks = function() {
//	if ($('scrollUp')) {$('scrollUp').removeEvents();}
//	if ($('scrollDown')) {$('scrollDown').removeEvents();}
	var blocks = $(scrollContID).getElements('.'+blockClass);
	var viewed = Math.floor(containerHeight/(blockHeight+blockVertMargin));
	var blockCount = blocks.indexOf(blocks.getLast())+1;
	if (viewed < blockCount) {
		blocks.each(function(block,count){
			if (block.getStyle('top').toInt() <= 0-blockHeight-blockVertMargin*2+1) {
				block.setStyle('top',(blockCount-1)*(blockHeight+blockVertMargin*2-1));
			}
			var posVert = block.getStyle('top').toInt();
			block.set('tween', {property: 'top', duration: scrollDuration}).tween(posVert-blockHeight-blockVertMargin*2+1);
		});
	}
	(function(){
		if ($('scrollUp')) {$('scrollUp').addEvent('click',scrollUp);}
		if ($('scrollDown')) {$('scrollDown').addEvent('click',scrollDown);}
	}).delay(scrollDuration);
};

var scrollUp = function() {
//	autoScroll = $clear(autoScroll);
//	if ($('scrollUp')) {$('scrollUp').removeEvents();}
//	if ($('scrollDown')) {$('scrollDown').removeEvents();}
	var blocks = $(scrollContID).getElements('.'+blockClass);
	var viewed = Math.floor(containerHeight/(blockHeight+blockVertMargin));
	var blockCount = blocks.indexOf(blocks.getLast())+1;
	if (viewed < blockCount) {
		blocks.each(function(block,count){
			if (block.getStyle('top').toInt() <= 0-blockHeight-blockVertMargin*2+1) {
				block.setStyle('top',(blockCount-1)*(blockHeight+blockVertMargin*2-1));
			}
			var posVert = block.getStyle('top').toInt();
			block.set('tween', {property: 'top', duration: scrollDuration/2}).tween(posVert-blockHeight-blockVertMargin*2+1);
		});
	}
	(function(){
		if ($('scrollUp')) {$('scrollUp').addEvent('click',scrollUp);}
		if ($('scrollDown')) {$('scrollDown').addEvent('click',scrollDown);}
		autoScroll = scrollBlocks.periodical(scrollInterval,this);
	}).delay(scrollDuration/2);
};


var scrollDown = function() {
//	autoScroll = $clear(autoScroll);
//	if ($('scrollUp')) {$('scrollUp').removeEvents();}
//	if ($('scrollDown')) {$('scrollDown').removeEvents();}
	var blocks = $(scrollContID).getElements('.'+blockClass);
	var viewed = Math.floor(containerHeight/(blockHeight+blockVertMargin));
	var blockCount = blocks.indexOf(blocks.getLast())+1;
	if (viewed < blockCount) {
		blocks.each(function(block,count){
			if (block.getStyle('top').toInt() >= (blockCount-1)*(blockHeight+blockVertMargin*2-1)) {
				block.setStyle('top',0-blockHeight-blockVertMargin*2+1);
			}
			var posVert = block.getStyle('top').toInt();
			block.set('tween', {property: 'top', duration: scrollDuration/2}).tween(posVert+blockHeight+blockVertMargin*2-1);
		});
	}
	(function(){
		if ($('scrollUp')) {$('scrollUp').addEvent('click',scrollUp);}
		if ($('scrollDown')) {$('scrollDown').addEvent('click',scrollDown);}
		autoScroll = scrollBlocks.periodical(scrollInterval,this);
	}).delay(scrollDuration/2);
};
window.addEvent('domready',scroller);