// scroller1 by rod.rant-on.net | rodmorelos@msn.com
// keep these two lines and you're free to use this code

var scroller = {
        scrollables: 1, // set the number of scrollable scrollContent
        step: 30, // set the timeout between each scroll
        speed: 5, // set the scroll speed
        wheelSpeed: 15, // set the scroll speed when using the mouse wheel
        wheelScrolled: false,
        timer: 0,
        contentY: 0,
        dragY: 0,
        clickY: 0,

        mouseDown: function(e)
        {
                e = fixEvent(e);
                var canvas = new getViewport();
                var mouseY = e.clientY + canvas.scrollY;
                var target = (e.target.nodeType == 3 || e.target.tagName.toLowerCase() == 'img') ? e.target.parentNode : e.target;
                scroller.wheelScrolled = false;
                for (var i = 1; i <= scroller.scrollables; i++)
                {
                        if (target.id == scroller.bar[i].el.id)
                        {
                                scroller.bar[i].grab = true;
                                scroller.clickY = mouseY - scroller.bar[i].y;
                                e.preventDefault();
                        }
                        else if (target.id == scroller.track[i].el.id)
                        {
                                if (scroller.content[i].h > scroller.container[i].h)
                                {
                                        scroller.track[i].grab = true;
                                        scroller.dragY = e.layerY - (scroller.bar[i].h / 2);
                                        if (scroller.dragY < 0) scroller.dragY = 0;
                                        if (scroller.dragY > scroller.track[i].h - scroller.bar[i].h) scroller.dragY = scroller.track[i].h - scroller.bar[i].h;
                                        scroller.contentY = 0 - (scroller.dragY * (scroller.content[i].h - scroller.container[i].h) / Math.round(scroller.track[i].h - scroller.bar[i].h));
                                        scroller.content[i].moveTo(0, scroller.contentY);
                                        scroller.bar[i].moveTo(0, scroller.dragY);
                                        e.preventDefault(e);
                                }
                        }
                        else if (target.id == scroller.up[i].el.id)
                        {
                                scroller.up[i].grab = true;
                                scroller.scroll(i, scroller.speed);
                                e.preventDefault();
                        }
                        else if (target.id == scroller.down[i].el.id)
                        {
                                scroller.down[i].grab = true;
                                scroller.scroll(i, -scroller.speed);
                                e.preventDefault();
                        }
                }
        },

        mouseUp: function(e)
        {
                for (var i = 1; i <= scroller.scrollables; i++)
                {
                        scroller.bar[i].grab = false;
                        scroller.track[i].grab = false;
                        scroller.up[i].grab = false;
                        scroller.down[i].grab = false;
                }
                clearTimeout(scroller.timer);
        },

        mouseMove: function(e)
        {
                for (var i = 1; i <= scroller.scrollables; i++)
                {
                        if (scroller.bar[i].grab && scroller.content[i].h > scroller.container[i].h)
                        {
                                e = fixEvent(e);
                                var canvas = new getViewport();
                                var mouseY = e.clientY + canvas.scrollY;
                                scroller.dragY = mouseY - scroller.clickY;
                                if (scroller.dragY < 0) scroller.dragY = 0;
                                if (scroller.dragY > scroller.track[i].h - scroller.bar[i].h) scroller.dragY = scroller.track[i].h - scroller.bar[i].h;
                                scroller.contentY = 0 - (scroller.dragY * (scroller.content[i].h - scroller.container[i].h) / Math.round(scroller.track[i].h - scroller.bar[i].h));
                                scroller.content[i].moveTo(0, scroller.contentY);
                                scroller.bar[i].moveTo(0, scroller.dragY);
                                e.preventDefault();
                        }
                }
        },

        scroll: function(num, speed)
        {
                if (scroller.content[num].y < 0 || scroller.content[num].y > -scroller.content[num].h + scroller.container[num].h)
                {
                        scroller.contentY = scroller.content[num].y + speed;
                        if (scroller.contentY < -(scroller.content[num].h - scroller.container[num].h)) scroller.contentY = -scroller.content[num].h + scroller.container[num].h;
                        else if (scroller.contentY > 0) scroller.contentY = 0;
                        scroller.content[num].moveTo(0, scroller.contentY);
                        scroller.dragY = 0 - (scroller.content[num].y * Math.round(scroller.track[num].h - scroller.bar[num].h) / (scroller.content[num].h - scroller.container[num].h));
                        scroller.bar[num].moveTo(0, scroller.dragY);
                        if (!scroller.wheelScrolled) scroller.timer = setTimeout('scroller.scroll(' + num + ', ' + speed + ')', scroller.step);
                }
        },

        wheelScroll: function(e)
        {
                e = fixEvent(e);
                var el = e.target;
                if (el.id.slice(0, el.id.length - 1) != 'leftscrollContent')
                {
                        do el = el.parentNode;
                        while (el.tagName.toLowerCase() != 'div' || el.id.slice(0, el.id.length - 1) != 'leftscrollContent')
                }
                var i = el.id.charAt(el.id.length - 1);
                if (window.event.wheelDelta <= -120)
                {
                        scroller.wheelScrolled = true;
                        scroller.scroll(i, -scroller.wheelSpeed);
                }
                else if (window.event.wheelDelta >= 120)
                {
                        scroller.wheelScrolled = true;
                        scroller.scroll(i, scroller.wheelSpeed);
                }
                e.preventDefault();
        },

        init: function()
        {

        		scroller.container = new Array();
                scroller.content = new Array();
                scroller.bar = new Array();
                scroller.up = new Array();
                scroller.down = new Array();
                scroller.track = new Array();
                for (var i = 1; i <= scroller.scrollables; i++)
                {
                        scroller.container[i] = new createObjectById('leftscrollContainer' + i);
                        scroller.content[i] = new createObjectById('leftscrollContent' + i);
                        scroller.content[i].moveTo(0,0);
                        scroller.bar[i] = new createObjectById('leftscrollBar' + i);
                        scroller.bar[i].grab = false;
                        scroller.bar[i].moveTo(0,0);
                        scroller.track[i] = new createObjectById('leftscrollTrack' + i);
                        scroller.track[i].grab = false;
                        scroller.up[i] = new createObjectById('leftscrollUp' + i);
                        scroller.up[i].grab = false;
                        scroller.down[i] = new createObjectById('leftscrollDown' + i);
                        scroller.down[i].grab = false;
                        if (bw.ie6) addEvent(scroller.content[i].el, 'mousewheel', scroller.wheelScroll, false);
                }
                addEvent(document, 'mousemove', scroller.mouseMove, false);
                addEvent(document, 'mousedown', scroller.mouseDown, false);
                addEvent(document, 'mouseup', scroller.mouseUp, false);

        }
}
