Effect.SmoothScroll = Class.create();

Object.extend(Object.extend(Effect.SmoothScroll.prototype, Effect.Base.prototype), {

	initialize: function (element) {
		this.element = $(element);
		var options = Object.extend({ x: 0, y: 0, mode: 'absolute' } , arguments[1] || {});
		this.start(options);
		},

	setup: function () {
		if (this.options.continuous && !this.element._ext ) {
			this.element.cleanWhitespace();
			this.element._ext = true;
			this.element.appendChild(this.element.firstChild);
			}
   
		this.originalLeft = this.element.scrollLeft;
		this.originalTop = this.element.scrollTop;

		if (this.options.mode == 'absolute') {
			this.options.x -= this.originalLeft;
			this.options.y -= this.originalTop;
			}
		},

	update: function (position) {   
		this.element.scrollLeft = this.options.x * position + this.originalLeft;
		this.element.scrollTop  = this.options.y * position + this.originalTop;
		}
	
});
function MoveTextUp(ev){
  if(ev.type=='click')perscroll.stop();
  Event.stopObserving($('moveUp'),'click',MoveTextUp);
  Event.stopObserving($('moveDown'),'click',MoveTextDown);
  var currentTab = $('scroll_container');
  var currentPos = currentTab.scrollTop;
  var newPos = currentPos - 120;
  if (newPos < 0) newPos = 0;
  new Effect.SmoothScroll(currentTab,{x:0,y:newPos,position:'relative',
  	afterFinish:function(){
		Event.observe($('moveUp'),'click',MoveTextUp);
		Event.observe($('moveDown'),'click',MoveTextDown);
  	}
  });
}
function MoveTextDown(ev){
  if(ev.type=='click')perscroll.stop();
  Event.stopObserving($('moveUp'),'click',MoveTextUp);
  Event.stopObserving($('moveDown'),'click',MoveTextDown);
  var currentTab = $('scroll_container');
  var currentPos = currentTab.scrollTop;
  var newPos = currentPos + 120;
  if (newPos+15 >= currentTab.scrollHeight) newPos = 0;
  new Effect.SmoothScroll(currentTab,{x:0,y:newPos,position:'relative',
  	afterFinish:function(){
		Event.observe($('moveUp'),'click',MoveTextUp);
		Event.observe($('moveDown'),'click',MoveTextDown);
  		}
  	});
}
function MoveTextUp2(ev){
  if(ev.type=='click')perscroll2.stop();
  Event.stopObserving($('moveUp2'),'click',MoveTextUp2);
  Event.stopObserving($('moveDown2'),'click',MoveTextDown2);
  var currentTab = $('scroll_container2');
  var currentPos = currentTab.scrollTop;
  var newPos = currentPos - 220;
  if (newPos < 0) newPos = 0;
  new Effect.SmoothScroll(currentTab,{x:0,y:newPos,position:'relative',
  	afterFinish:function(){
		Event.observe($('moveUp2'),'click',MoveTextUp2);
		Event.observe($('moveDown2'),'click',MoveTextDown2);
  		}
  });
}
function MoveTextDown2(ev){
  if(ev.type=='click')perscroll2.stop();
  Event.stopObserving($('moveUp2'),'click',MoveTextUp2);
  Event.stopObserving($('moveDown2'),'click',MoveTextDown2);
  var currentTab = $('scroll_container2');
  var currentPos = currentTab.scrollTop;
  var newPos = currentPos + 220;
  if (newPos+64 >= currentTab.scrollHeight) newPos = 0;
  new Effect.SmoothScroll(currentTab,{x:0,y:newPos,position:'relative',
  	afterFinish:function(){
		Event.observe($('moveUp2'),'click',MoveTextUp2);
		Event.observe($('moveDown2'),'click',MoveTextDown2);
  		}
  });
}
var perscroll,perscroll2;
document.observe('dom:loaded',function(){
	if($('scroll_container')){
		Event.observe($('moveUp'),'click',MoveTextUp);
		Event.observe($('moveDown'),'click',MoveTextDown);
		perscroll = new PeriodicalExecuter(MoveTextDown, 5)
	}
	if($('scroll_container2')){
		Event.observe($('moveUp2'),'click',MoveTextUp2);
		Event.observe($('moveDown2'),'click',MoveTextDown2);
		perscroll2 = new PeriodicalExecuter(MoveTextDown2, 11)
	}
});
