//------------------vertical div scroller------------------------->>>

function scroller(container,div,tag)
{

this.scrollContainer=o(container);
this.divToScroll=o(div);
this.tagToStopAt=tag;

var self=this;

this.init = function()
{
    this.scrollContainer.style.overflow="hidden"
    this.scrollContainer.onmouseover=onMouseOver
    this.scrollContainer.onmouseout=onMouseOut
    
    duplicateDivToScroll(this.scrollContainer,this.divToScroll)
    this.scrollContainer.flatOffsets=getFlatOffsets(this.scrollContainer,this.divToScroll,this.tagToStopAt)
    if (this.divToScroll.offsetHeight>this.scrollContainer.offsetHeight)
    {this.startScrolling()}
}

this.startScrolling = function()
{
	if (this.scrollContainer.mOver){return}

	clearInterval(this.scrollContainer.interval)
	this.scrollContainer.interval = setInterval(function(){self.doScroll()}, 50);
}

this.stopScrolling = function()
{
	clearInterval(this.scrollContainer.interval)
}

this.doScroll = function()
{
	var currScrollTop = this.scrollContainer.scrollTop;
	var newScrollTop;
	var tmpOfHeight = this.divToScroll.offsetHeight; // ***
	
	this.scrollContainer.scrollTop += 1;
	newScrollTop = this.scrollContainer.scrollTop;
	
	if (currScrollTop == newScrollTop)
	{
		this.scrollContainer.scrollTop = this.scrollContainer.scrollTop - tmpOfHeight;
		this.scrollContainer.scrollTop += 1;
	}
	
	if (this.scrollContainer.flatOffsets.indexOf('-'+newScrollTop+'-')!=-1)
	{
	    clearInterval(this.scrollContainer.interval)
	    setTimeout(function(){self.startScrolling()},2000)
	}
}

function onMouseOver()
{
    this.mOver=true;
    self.stopScrolling()
}

function onMouseOut()
{
    this.mOver=false;
    this.interval=setInterval(function(){self.startScrolling()},50)
}

duplicateDivToScroll = function(container,div)
{
if (div.offsetHeight>container.offsetHeight)
{
    var duplDiv=div.cloneNode(true)
    var newDiv=container.appendChild(duplDiv)
}
}

getFlatOffsets = function(container,div,tag)
{
	var divChildren=container.getElementsByTagName('div')
	var tagChildren;
	var arrOffsets=new Array()
	
	for (var i=0, j=divChildren.length; i<j; i++)
	{
	    tagChildren=divChildren[i].getElementsByTagName(tag);
	    for (var k=0, l=tagChildren.length; k<l; k++)
	    {
	        arrOffsets.push(getPos(tagChildren[k])[1]-getPos(container)[1])
	    }
	}
	return "-"+arrOffsets.join("-")+"-"
}

function getPos(obj)
{
	var objLeft = 0;var objTop=0
	while(obj!= null) 
	{
		objLeft += obj.offsetLeft;
		objTop += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return [objLeft,objTop];
}

function o(tagId)
{
	return document.getElementById(tagId);	
}

}

//------------------------------