var bScroller = function() {
	S = {
		init: function(opts){
			if(initialized) return; // don't initialize twice
			initialized = true;
			
            opts = opts || {};
			
			imageW = opts.imageW + opts.imageMargin;
			initScrollX = opts.scrollerX;
			scrollX = opts.scrollerX;
			numImages = opts.numImages;
			
			imgArr = Array();
			for (var i=0;i<numImages;i++) {
				imgArr[i] = i+1;
			}
			this.shuffle(imgArr);

			var newdiv = document.createElement('div');
			newdiv.setAttribute('id','scrollcrop');
			document.body.appendChild(newdiv);
			$('scrollcrop').setStyle({
				position: 'absolute',
				top: opts.scrollerY + 'px',
				height: opts.imageH + 'px',
				width: '100%',
				overflow: 'hidden'
			});

			var newdiv = document.createElement('div');
			newdiv.setAttribute('id','scrollcontent');
			$('scrollcrop').appendChild(newdiv);
			$('scrollcontent').setStyle({
				position: 'relative',
				height: opts.imageH + 'px',
				width: (opts.numImages * imageW * 2) + 'px',
				left: scrollX + 'px'
			});

			for (var j=0;j<2;j++) {
				for (var i=0;i<opts.numImages;i++) {
					var newdiv = document.createElement('div');
					var divid = 'scroll' + j + '_' + i;
					newdiv.setAttribute('class','scrollitem');
					newdiv.setAttribute('id',divid);
					$('scrollcontent').appendChild(newdiv);
					$(divid).setStyle({
						height: opts.imageH + 'px',
						width: opts.imageW + 'px',
						marginRight: opts.imageMargin + 'px',
						float: 'left'
					});

					var newimg = document.createElement('img');
					newimg.setAttribute('src',opts.imageDirectory + '/scroll' + imgArr[i] + '.jpg');
					newdiv.appendChild(newimg);
				}
			}

			this.callAnimate();
		},
		
		callAnimate: function() {
			this.animate();
		},
		
		animate: function() {
			if (scrollX <= -numImages * imageW - initScrollX) {
				scrollX = initScrollX;
				$('scrollcontent').setStyle({
					left: scrollX + 'px'
				});
			}
			scrollX -= imageW;
			new Effect.Move('scrollcontent', {
			  x: scrollX, y: 0, mode: 'absolute',
			  transition: Effect.Transitions.sinoidal,
			  duration: 1.0,
			  delay: 3.0,
			  afterFinish: function() { S.animate(); }
			});
		},
		
		shuffle: function(v){
			for(var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
			return v;
		}
		
	};
	initialized = false;
	return S;
}();
