//**********************************************************************************************************
//Purpose:	Add functionality to a div containing hyperlinks to UCD CTSC News items.
//
//Author:	Carlos Casamalhuapa, 
//			Programmer
//			UC Davis Clinical and Translational Science Center
//		
//Date:		03-27-2008


//variables for user preference
var ScrollSpeed=2; //larger number = faster
var PauseTime=5000;

//variables for normal operation
var userbrowser = navigator.appName;
var ScrollCounter = 0;
var ScrollAmount;
var ScrollAdjust;
var blnPauseScroller = 'False';
var tGoScroll
var tScroll;
var tScrollBack;
var tReset;
var ScrollSpeedBooster=0;
var ScrollDivCounter=0;
var ScrollPosition=0;
var ScrollDirection='forward';

function StartScroller() {
    var Divscrollcontainer = document.getElementById("scrollcontainer");
    if (ScrollDivCounter == Divscrollcontainer.childNodes.length -1) {
        tReset = setTimeout("Reset()", 1000);
        return;
    }  
    tGoScroll = setTimeout("Scroll()", PauseTime);  
}

function Reset(){
    var Divscrollcontainer = document.getElementById("scrollcontainer");
    Divscrollcontainer.scrollTop = 0;
    ScrollPosition = 0
    ScrollDivCounter = 0;
    ScrollCounter = 0;
    ScrollDirection = 'forward'
    StartScroller()
}


//function used to find the number of pixels to scroll the top div
function getScrollAmount(divnumber)
{
    var Divscrollcontainer = document.getElementById("scrollcontainer");
    var DivInterest = document.getElementById(Divscrollcontainer.childNodes[divnumber].id);
    var DivHeight = DivInterest.offsetTop + DivInterest.offsetHeight;
    return DivHeight; //specify when the counter will stop
}

function Scroll() {	    
    var Divscrollcontainer = document.getElementById("scrollcontainer");
    
    //Browser Adjustment
    ScrollAdjust = Divscrollcontainer.offsetTop; 
    if (userbrowser == "Microsoft Internet Explorer") {
        ScrollAdjust = 0
    };
    
    //Scroll According to direction
    if (ScrollDirection == 'forward'){
        if (ScrollDivCounter==-1) {
            ScrollDivCounter = 0;
        }
        else {
	        ScrollAmount = getScrollAmount(ScrollDivCounter);
	    }
	    //scroll
        if (ScrollCounter < ScrollAmount - ScrollAdjust) {
            if (blnPauseScroller=='False') {
                ScrollCounter= ScrollCounter+ScrollSpeed+ScrollSpeedBooster;
                if (ScrollCounter > ScrollAmount - ScrollAdjust) {
                    ScrollCounter = (ScrollAmount - ScrollAdjust)
                }  
                    Divscrollcontainer.scrollTop = ScrollCounter;     
            }
            tScroll = setTimeout("Scroll()", 40);
        }
        else
        {
            //AdjustList();    
            ScrollPosition = ScrollCounter;
            ScrollDivCounter++;
            StartScroller(); //restart the scroller
        }
    }
    else {
        if (ScrollDivCounter==-1){
            
             return;
        }
        else if (ScrollDivCounter==0){
             ScrollAmount=0
        }
        else {
            ScrollAmount = getScrollAmount(ScrollDivCounter - 1);
        }

        
	    //scroll
        if (ScrollCounter > ScrollAmount - ScrollAdjust) {
            if (blnPauseScroller=='False') {
                ScrollCounter= ScrollCounter-ScrollSpeed-ScrollSpeedBooster;
                if (ScrollCounter < ScrollAmount - ScrollAdjust) {
                    ScrollCounter = (ScrollAmount - ScrollAdjust)
                }  
                    Divscrollcontainer.scrollTop = ScrollCounter;
                     
            }
            tScroll = setTimeout("Scroll()", 40);
        }
        else
        {
            //Scroll Completed AdjustList();   
            ScrollPosition = ScrollCounter          
            ScrollDivCounter--;
            StartScroller(); //restart the scroller
        }
    }
}


function PauseScroller() {
    blnPauseScroller = 'True'
}

function ResumeScroller() {
    blnPauseScroller = 'False'
    PauseTime = 5000;
    ScrollSpeedBooster = 0;
    ScrollDirection='forward';
    
    if (ScrollDivCounter==-1){
        ScrollDivCounter++;
        StartScroller();
    }
}


//Manual movement of scroll container
function MoveUp()
{
    //document.getElementById("testbox").innerHTML = ScrollCounter + ' ' + ScrollPosition;
    clearTimeout(tReset);
    ScrollDirection = 'forward';
    PauseTime = 0
    ScrollSpeedBooster = 3;

    if (ScrollCounter==ScrollPosition){
        clearTimeout(tGoScroll);
        StartScroller()} 
}

//Manual movement of scroll container
function MoveDown(){
    clearTimeout(tReset);
    ScrollDirection = 'backward';
    PauseTime = 0;
    ScrollSpeedBooster = 3;
    if (ScrollCounter==ScrollPosition){
        clearTimeout(tGoScroll);
        StartScroller()
    } 
}
