﻿
var	ScrollerQueue		= new Array();
var	IsScrollerRunning	= false;

function ScrollerQueueItem(Item, Direction, ScrollAmount){

	this.Item			= Item
	this.ScrollAmount	= ScrollAmount;
	this.Amount			= 0;
	this.Step			= 20;
	this.MaxStep		= 20;
	this.Finished		= false;
	this.Direction		= Direction;
	
	ScrollerQueue[ScrollerQueue.length]	= this;
}

function ScrollElement(Item, Direction, ScrollAmount){

	ScrollerQueueItem(Item, Direction, ScrollAmount);
	
	if(!IsScrollerRunning)
		StartScroller();
}

function StartScroller(){

	if(ScrollerQueue.length > 0){
	
		IsScrollerRunning	= true;
		
		if(ScrollerQueue[0].Amount < ScrollerQueue[0].ScrollAmount){
		
			if(ScrollerQueue[0].Amount + ScrollerQueue[0].Step > ScrollerQueue[0].ScrollAmount){
			
				ScrollerQueue[0].Step	= ScrollerQueue[0].ScrollAmount - ScrollerQueue[0].Amount;
			}
			else{
			
				ScrollerQueue[0].Amount	+= ScrollerQueue[0].Step;
			}

			switch(ScrollerQueue[0].Direction)
			{
				case "N":
					{
						ScrollerQueue[0].Item.scrollTop		+= ScrollerQueue[0].Step;
						break;
					}
				case "S":
					{
						ScrollerQueue[0].Item.scrollTop		-= ScrollerQueue[0].Step;
						break;
					}
				case "E":
					{
						ScrollerQueue[0].Item.scrollLeft	-= ScrollerQueue[0].Step;
						break;
					}
				case "W":
					{
						ScrollerQueue[0].Item.scrollLeft	+= ScrollerQueue[0].Step;
						break;
					}
			}
		}
		else{
				
			ScrollerQueue.splice(0, 1);
		}
		
		setTimeout(StartScroller, 1);
	}
	else{
	
		IsScrollerRunning	= false;
	}
}