﻿// ==UserScript==
// @name                Tiger
// @description         滚动返回top
// @created date        2009/9/21   11:07
// @created author      Tiger(tigershi0507@gmail.com)
// @version             1.0.1
// @version owner       Copyright (C) 2009-2010 keerr.com All rights reserved.
// ==/UserScript==
/*************************************************
	verified time 	:	2009/12/7   18:20
	verified author	:	Tiger
	verified purpose:	增加了鼠标滚轮事件
**************************************************/
var goto_top_type = -1;
var goto_top_itv = 0;
function goto_top_timer() {
    var y = goto_top_type == 1 ? document.documentElement.scrollTop : document.body.scrollTop;
    var moveby = 15;

    y -= Math.ceil(y * moveby / 100);
    if (y < 0) {
        y = 0;
    }
    if (goto_top_type == 1) {
        document.documentElement.scrollTop = y;
    }
    else {
        document.body.scrollTop = y;
    }
    if (y == 0) {
        clearInterval(goto_top_itv);
        goto_top_itv = 0;
    }
}

function goto_top() {
    if (goto_top_itv == 0) {
        if (document.documentElement && document.documentElement.scrollTop) {
            goto_top_type = 1;
        }
        else if (document.body && document.body.scrollTop) {
            goto_top_type = 2;
        }
        else {
            goto_top_type = 0;
        }
        if (goto_top_type > 0) {
            goto_top_itv = setInterval('goto_top_timer()', 50);
        }
        $("body").mousewheel(function() {
            clearInterval(goto_top_itv);
            goto_top_itv = 0;
        });
    }
}

(function($) {
    var types = ['DOMMouseScroll', 'mousewheel'];
    $.event.special.mousewheel = {
        setup: function() {
            if (this.addEventListener)
                for (var i = types.length; i; )
                this.addEventListener(types[--i], handler, false);
            else
                this.onmousewheel = handler;
        },
        teardown: function() {
            if (this.removeEventListener)
                for (var i = types.length; i; )
                this.removeEventListener(types[--i], handler, false);
            else
                this.onmousewheel = null;
        }
    };
    $.fn.extend({
        mousewheel: function(fn) {
            return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
        },
        unmousewheel: function(fn) {
            return this.unbind("mousewheel", fn);
        }
    });
    function handler(event) {
        var args = [].slice.call(arguments, 1), delta = 0, returnValue = true;
        event = $.event.fix(event || window.event);
        event.type = "mousewheel";
        if (event.wheelDelta) delta = event.wheelDelta / 120;
        if (event.detail) delta = -event.detail / 3;
        // Add events and delta to the front of the arguments
        args.unshift(event, delta);
        return $.event.handle.apply(this, args);
    }
})(jQuery);