LuckyCoinkydink/templates/2k11/admin/js/jquery.autoscroll.js
Matthias Mees 3e536dd4a8 Move backend jQuery plugins to dedicated subdirectory.
From now on, we'll keep jQuery plugins required by the backend in
/templates/2k11/admin/js/ (as well as other vendor JS like e.g.
Modernizr).
2013-05-30 17:15:54 +02:00

126 lines
3.1 KiB
JavaScript

/*
* AutoScroll Plugin for jQuery
*
* Copyright (c) 2006 Jonathan Sharp (jdsharp.us)
* Licensed under the GPL license.
*
* http://jdsharp.us/code/AutoScroll/
*
* Date: 2006-09-19
* Rev: 001
*/
$.autoscroll = {
settings: {},
interval: 0,
event: null,
init: function(opts) {
$.autoscroll.settings = {
step: 80,
trigger: 75,
interval: 80,
mod_key: 17
};
if (opts) {
for (o in opts) {
$.autoscroll.settings[o] = opts[o];
}
}
$.autoscroll.setKeyEvent();
document.onmousemove= $.autoscroll.setMouseEvent;
},
stop: function() {
clearInterval($.autoscroll.interval);
$.autoscroll.interval = 0;
},
setKeyEvent: function(e) {
if ($.autoscroll.interval == 0) {
$.autoscroll.interval = setInterval($.autoscroll.step, $.autoscroll.settings.interval);
}
},
setMouseEvent: function(e) {
var e = e || window.event;
var de = document.documentElement;
var b = document.body;
$.autoscroll.event = {
cursor: {
x: e.pageX || (e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0)),
y: e.pageY || (e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0))
},
win: {
w: window.innerWidth || (de.clientWidth && de.clientWidth != 0 ? de.clientWidth : b.offsetWidth),
h: window.innerHeight || (de.clientHeight && de.clientWidth != 0 ? de.clientHeight : b.offsetHeight)
},
scroll: {
x: (document.all ?
(!de.scrollLeft ? b.scrollLeft : de.scrollLeft)
:
(window.pageXOffset ? window.pageXOffset : window.scrollX)
),
y: (document.all ?
(!de.scrollTop ? b.scrollTop : de.scrollTop)
:
(window.pageYOffset ? window.pageYOffset : window.scrollY)
)
}
};
},
step: function() {
var e = $.autoscroll.event;
if (!e) {
return;
}
var hot_l = e.scroll.x;
var hot_r = e.scroll.x + e.win.w;
var x = e.cursor.x;
var hot_t = e.scroll.y;
var hot_b = e.scroll.y + e.win.h;
var y = e.cursor.y;
if (hot_l <= x && x <= (hot_l + $.autoscroll.settings.trigger)) {
var ratio = (1 - ((x - hot_l) / $.autoscroll.settings.trigger));
var step = Math.round(ratio * $.autoscroll.settings.step, 0);
e.scroll.x += -step;
e.cursor.x += -step;
} else if ((hot_r - $.autoscroll.settings.trigger) <= x && x <= hot_r) {
var ratio = (1 - ((hot_r - x) / $.autoscroll.settings.trigger));
var step = Math.round(ratio * $.autoscroll.settings.step, 0);
e.scroll.x += step;
e.cursor.x += step;
}
if (hot_t <= y && y <= (hot_t + $.autoscroll.settings.trigger)) {
var ratio = (1 - ((y - hot_t) / $.autoscroll.settings.trigger));
var step = Math.round(ratio * $.autoscroll.settings.step, 0);
e.scroll.y += -step;
e.cursor.y += -step;
} else if ((hot_b - $.autoscroll.settings.trigger) <= y && y <= hot_b) {
var ratio = (1 - ((hot_b - y) / $.autoscroll.settings.trigger));
var step = Math.round(ratio * $.autoscroll.settings.step, 0);
e.scroll.y += step;
e.cursor.y += step;
}
if (e.scroll.x < 0) {
e.scroll.x = 0;
e.cursor.x = 0;
}
if (e.scroll.y < 0) {
e.scroll.y = 0;
e.cursor.y = 0;
}
window.scrollTo(e.scroll.x, e.scroll.y);
}
};