﻿var hscroller = null;
var hcurrentX = 0;
var hcurrentY = 0;
var htimer = 0;
var hstep = 10;
var hspeed = 100;
var hstartX = 0;
var hstartY = 0;
var hmaxIncrement = 2;
var xIncrement = 0;
var htimercache = new Array();
var htotalIntervals = 0;
var hcontainer = null;
var hdelay = 10;
var back = '';
var hscrolling = new Array();
var lastid = '';
var hoverEvent;
var isIe = (navigator.appName == "Microsoft Internet Explorer");

function setContainer(evt) {
    hcontainer = evt.relatedTarget;
    
}
//Initialize the scroller
function hscroll_init(sender, eventStart)
{
    if(lastid!=sender) hscrollerReset();
    hscroller = document.getElementById(sender);


    if (hscroller != null) {
        if (hscrolling.length > 0) hflushInterval();
        if (hscrolling.length == 0) {
            lastid = sender;
            hcontainer = document.getElementById(sender.replace('_scroller', '_container'));
            
            if (eventStart == 'hscrollLeft()') {
                hstartX = 5;
                hstartY = -150;
                back = 'hscrollRight()';
                if (isIe) {
                    document.attachEvent("onmouseup", hscrollBack);
                    hscroller.attachEvent("onclick", hscrollBack);
                }
                else {
                    document.addEventListener("mouseup", hscrollBack, false);
                    hscroller.addEventListener("click", hscrollBack, false);
                }

            }
            else {
                back = 'hscrollUp()';
                hstartX = 0;
                hstartY = hcontainer.offsetHeight;

                if (isIe) {
                    hscroller.attachEvent("onmouseleave", hscrollBack);
                    document.attachEvent("onmouseleave", hscrollBack);
                }
                else {
                    document.addEventListener("mouseup", hscrollBack, false);
                    hscroller.addEventListener("click", hscrollBack, false);
                    
                }
            }
            hscroller.style.display = 'block';
            hcurrentX = hstartX;
            hcurrentY = hstartY;
            hscroller.style.left = hstartX + "px";
            hscroller.style.top = hstartY-20 + "px";
        }
    }
}
//Move the scroller left
function hscrollLeft() {
    var newPos = hcurrentX - hstep;
    
    xIncrement++;
    hcurrentX = newPos;
    hscroller.style.left = newPos + "px";
    if(newPos>=hcontainer.clientX)
    {
        xIncrement = 0;
        hflushInterval();
    }
}
//Move the scroller back
function hscrollBack()
{
    addTimer(back);
}

function addTimer(pointer)
{
    hscrolling[htotalIntervals] = true;
    htimer = setInterval(pointer, hspeed);
    htimercache[htotalIntervals] = htimer;
    htotalIntervals++;
}
//Move the scroller right
function hscrollRight()
{
    var newPos = hcurrentX + hstep;

    xIncrement++;
    
    hcurrentX = newPos;
    hscroller.style.left = newPos + "px";
    
    if(xIncrement>=hmaxIncrement)
    {
        xIncrement = 0;
        hflushInterval();
        hscrollerReset();
    }
}
//Move the scroller down
function hscrollDown()
{
    var newPos = hcurrentY + hstep;
    
    xIncrement++;
    
    hcurrentY = newPos;
    hscroller.style.top = newPos + "px";
    if(newPos > hstartY-hscroller.scrollHeight)
    {
        xIncrement = 0;
        hflushInterval();
    }
}
//Move the scroller up
function hscrollUp()
{
    var newPos = hcurrentY - hstep;
    
    xIncrement++;
    
    hcurrentY = newPos;
    hscroller.style.top = newPos + "px";
    
    if(xIncrement>=hmaxIncrement)
    {
        xIncrement = 0;
        hflushInterval();
        hscrollerReset();
    }
}
//Ensures that all timers are cleared
function hflushInterval()
{
    var i = 0;
    for(i = 0; i < htimercache.length; i++)
    {
        if(htimercache[i]!='') clearInterval(htimercache[i]);
        
        if(i == htimercache.length - 1) hscrolling = new Array();
    }
        
    htimercache = new Array();
        
}
//Reset the scroller to original position
function hscrollerReset()
{
    if(hscroller!=null)
    {
        hscroller.style.display = 'none';
        //hscroller.style.left = hstartX + "px";
        //hscroller.style.top = hstartY + "px";
        hcurrentX = hstartX;
        hcurrentY = hstartY;
    }
}

