﻿var SCROLLER_DEFAULT_TICKS = 5;
var SCROLLER_DEFAULT_DELAY = 20;

function attachScroller(obj, scrollUpObj, scrollDownObj, ticks, speed) {
    var upInt = null;
    var downInt = null;
    
    /*
    if (obj.scrollHeight) {
        if (obj.scrollHeight < parseInt(YAHOO.util.Dom.getStyle(obj, "height"))) {
            scrollUpObj.style.display = "none";
            scrollDownObj.style.display = "none";
        }
    }
    */
    
    YAHOO.util.Event.addListener(scrollUpObj, "mouseover", function(e) { 
        clearInterval(downInt);
        
        upInt = setInterval(function() { 
            obj.scrollTop = obj.scrollTop - (ticks != null ? ticks: SCROLLER_DEFAULT_TICKS); 
        }, (speed != null ? ticks: SCROLLER_DEFAULT_DELAY));
    });
    
    YAHOO.util.Event.addListener(scrollUpObj, "mouseout", function(e) { 
        clearInterval(upInt); 
    });
    
    YAHOO.util.Event.addListener(scrollDownObj, "mouseover", function(e) 
    {
        clearInterval(upInt);
        downInt = setInterval(function() 
        { 
            obj.scrollTop = obj.scrollTop + (ticks != null ? ticks: SCROLLER_DEFAULT_TICKS); 
        }, (speed != null ? ticks: SCROLLER_DEFAULT_DELAY));
    });
    
    YAHOO.util.Event.addListener(scrollDownObj, "mouseout", function(e) { 
        clearInterval(downInt); 
    });
    
    YAHOO.util.Event.addListener(obj, "mousewheel", wheel, obj);
    
    if (window.addEventListener)
        obj.addEventListener('DOMMouseScroll', function(e) { wheel(e, obj); }, false);
}

function wheel(event, target) {
    var delta = 0;
    
    if (!event)
        event = window.event;

    if (event.wheelDelta) {
        delta = event.wheelDelta / 120;

        //if (window.opera)
            //delta = -delta;
    } 
    else if (event.detail) {
        delta = -event.detail / 3;
    }
    
    if (delta) {
        target.scrollTop = target.scrollTop - (delta > 0 ? 50 : -50);
    }

    if (event.preventDefault)
        event.preventDefault();

    event.returnValue = false;
}

