first global commit
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
/*
|
||||
* jQuery.JSPclickNScroll v1.0
|
||||
*
|
||||
* Copyright (c) 2010 Joshua Faulkenberry
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* Joshua Faulkenberry
|
||||
*
|
||||
* $Date: 2010-10-25 18:55:27 -0700 (Mon, 25 Oct 2010) $
|
||||
* $Revision: 5 $
|
||||
*/
|
||||
|
||||
(function($){
|
||||
|
||||
jQuery.extend({
|
||||
mouse: {
|
||||
x: 0,
|
||||
y: 0
|
||||
},
|
||||
JSPclickNScroll: {
|
||||
mousedown:false,
|
||||
emaX: 0,
|
||||
emaY: 0
|
||||
}
|
||||
});
|
||||
|
||||
jQuery.fn.extend({
|
||||
JSPclickNScroll: function(options) {
|
||||
var ops = $.extend({
|
||||
allowHiliting:false,
|
||||
acceleration:.65,
|
||||
deceleration:.85,
|
||||
decelRate:64,
|
||||
reverse:false,
|
||||
rightMouse:false,
|
||||
allowThrowing:true,
|
||||
throwOnOut:true
|
||||
}, options || {});
|
||||
return this.each(function(){
|
||||
var $this = $(this).data("options", ops);
|
||||
if(!ops.allowHiliting) {
|
||||
if (jQuery.browser.msie) {
|
||||
$this.get(0).onselectstart = function () { return false; };
|
||||
}
|
||||
else {
|
||||
$this.get(0).onmousedown = function(e){e.preventDefault()}
|
||||
}
|
||||
}
|
||||
$this.mousedown(function(e) {
|
||||
$.JSPclickNScroll.mousedown = $this;
|
||||
}).mouseup(function(e) {
|
||||
if(ops.allowThrowing) sling($(this));
|
||||
$.JSPclickNScroll.mousedown = false;
|
||||
}).mouseout(function(e) {
|
||||
var from = e.relatedTarget || e.toElement;
|
||||
if (!from || from.nodeName == "HTML") {
|
||||
if($.JSPclickNScroll.mousedown && ops.allowThrowing && ops.throwOnOut) sling($(this));
|
||||
$.JSPclickNScroll.mousedown = false;
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function sling($this) {
|
||||
var ops = $this.data("options"),
|
||||
changeX = ($.JSPclickNScroll.emaX)*ops.deceleration,
|
||||
changeY = ($.JSPclickNScroll.emaY)*ops.deceleration;
|
||||
if((changeX < .01 && changeX > -.01) || (changeY < .01 && changeY > -.01)) {return;}
|
||||
move($this, changeX, changeY);
|
||||
setTimeout(function() {
|
||||
sling($this);
|
||||
}, 1000/ops.decelRate);
|
||||
}
|
||||
|
||||
function move($this, changeX, changeY) {
|
||||
if(($.JSPclickNScroll.emaX < 0 && changeX > 0) || ($.JSPclickNScroll.emaX > 0 && changeX < 0)) $.JSPclickNScroll.emaX = 0;
|
||||
if(($.JSPclickNScroll.emaY < 0 && changeY > 0) || ($.JSPclickNScroll.emaY > 0 && changeY < 0)) $.JSPclickNScroll.emaY = 0;
|
||||
|
||||
var ops = $this.data("options"),
|
||||
amntX = ops.acceleration * changeX + (1 - ops.acceleration) * $.JSPclickNScroll.emaX,
|
||||
amntY = ops.acceleration * changeY + (1 - ops.acceleration) * $.JSPclickNScroll.emaY,
|
||||
scrollRight = $this[0].scrollWidth ? $this[0].scrollWidth - $this[0].clientWidth : $this[0].body.scrollWidth - $this[0].body.clientWidth,
|
||||
scrollBottom = $this[0].scrollHeight ? $this[0].scrollHeight - $this[0].clientHeight : $this[0].body.scrollHeight - $this[0].body.clientHeight,
|
||||
api = $this.data('jsp');
|
||||
|
||||
if(($this.scrollLeft() <= 0 && changeX <= 0) || ($this.scrollLeft() >= scrollRight && changeX >= 0)) {}
|
||||
// else $this.scrollLeft($this.scrollLeft() + (amntX));
|
||||
api.scrollBy(amntX, 0);
|
||||
|
||||
if(($this.scrollTop() <= 0 && changeY <= 0) || ($this.scrollTop() >= scrollBottom && changeY >= 0)) {}
|
||||
// else $this.scrollTop($this.scrollTop() + (amntY));
|
||||
api.scrollBy(0, amntY);
|
||||
|
||||
$.JSPclickNScroll.emaX = amntX;
|
||||
$.JSPclickNScroll.emaY = amntY;
|
||||
}
|
||||
|
||||
$(document).mousemove(function(e) {
|
||||
if($.JSPclickNScroll.mousedown) {
|
||||
var $this = $.JSPclickNScroll.mousedown,
|
||||
ops = $this.data("options");
|
||||
if(ops.rightMouse && e.button != 2) return;
|
||||
else if(!ops.rightMouse && e.button == 2) return;
|
||||
var changeX = e.pageX - $.mouse.x,
|
||||
changeY = e.pageY - $.mouse.y;
|
||||
if(!ops.reverse) {
|
||||
changeX = 0-changeX;
|
||||
changeY = 0-changeY;
|
||||
}
|
||||
move($this, changeX, changeY);
|
||||
}
|
||||
$.mouse = {
|
||||
x: e.pageX,
|
||||
y: e.pageY
|
||||
};
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user