﻿function whl() {
    this.delegate = Silverlight.createDelegate(this, this.handleMouseWheel);
    if (window.addEventListener) {
        window.addEventListener('DOMMouseScroll', this.delegate, false);
    }
    window.onmousewheel = document.onmousewheel = this.delegate;
}

whl.prototype.wheelScrolled = null;
whl.prototype.delegate = null;

whl.prototype.handleMouseWheel = function(event) {
    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(navigator.userAgent.indexOf("Macintosh") != -1)
            delta=-delta;
    }

    if (delta && this.wheelScrolled)
        this.wheelScrolled(delta);
        
    if (event.preventDefault)
        event.preventDefault();
        
    event.returnValue = false;
}

whl.prototype.detach = function() {
    if (this.delegate != null) {
        if (window.removeEventListener) {
            window.removeEventListener('DOMMouseScroll', this.delegate, false);
        }

        window.onmousewheel = document.onmousewheel = null;
        
        this.delegate = null;
    }
}
