118 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| (function(a){
 | |
| 	function b(b,c){
 | |
| 		function w(a){
 | |
| 			if(!(g.ratio>=1)){
 | |
| 				o.now=Math.min(i[c.axis]-j[c.axis],Math.max(0,o.start+((k?a.pageX:a.pageY)-p.start)));
 | |
| 				n=o.now*h.ratio;g.obj.css(l,-n);
 | |
| 				j.obj.css(l,o.now)
 | |
| 			}
 | |
| 			return false
 | |
| 		}
 | |
| 		function v(b){
 | |
| 			a(document).unbind("mousemove",w);
 | |
| 			a(document).unbind("mouseup",v);
 | |
| 			j.obj.unbind("mouseup",v);
 | |
| 			document.ontouchmove=j.obj[0].ontouchend=document.ontouchend=null;
 | |
| 			return false
 | |
| 		}
 | |
| 		function u(b){
 | |
| 			if(!(g.ratio>=1)){
 | |
| 				var b=b||window.event;
 | |
| 				var d=b.wheelDelta?b.wheelDelta/120:-b.detail/3;
 | |
| 				n-=d*c.wheel;
 | |
| 				n=Math.min(g[c.axis]-f[c.axis],Math.max(0,n));
 | |
| 				j.obj.css(l,n/h.ratio);
 | |
| 				g.obj.css(l,-n);
 | |
| 				b=a.event.fix(b);
 | |
| 				b.preventDefault()
 | |
| 			}
 | |
| 		}
 | |
| 		function t(b){
 | |
| 			p.start=k?b.pageX:b.pageY;
 | |
| 			var c=parseInt(j.obj.css(l));
 | |
| 			o.start=c=="auto"?0:c;
 | |
| 			a(document).bind("mousemove",w);
 | |
| 			document.ontouchmove=function(b){
 | |
| 				a(document).unbind("mousemove");
 | |
| 				w(b.touches[0])
 | |
| 			};
 | |
| 			a(document).bind("mouseup",v);
 | |
| 			j.obj.bind("mouseup",v);
 | |
| 			j.obj[0].ontouchend=document.ontouchend=function(b){
 | |
| 				a(document).unbind("mouseup");
 | |
| 				j.obj.unbind("mouseup");
 | |
| 				v(b.touches[0])
 | |
| 			};
 | |
| 			return false
 | |
| 		}
 | |
| 		function s(){
 | |
| 			j.obj.bind("mousedown",t);
 | |
| 			j.obj[0].ontouchstart=function(a){
 | |
| 				a.preventDefault();
 | |
| 				j.obj.unbind("mousedown");
 | |
| 				t(a.touches[0]);
 | |
| 				return false
 | |
| 			};
 | |
| 			i.obj.bind("mouseup",w);
 | |
| 			if(c.scroll&&this.addEventListener){
 | |
| 				e[0].addEventListener("DOMMouseScroll",u,false);
 | |
| 				e[0].addEventListener("mousewheel",u,false)
 | |
| 			}else if(c.scroll){
 | |
| 				e[0].onmousewheel=u
 | |
| 			}
 | |
| 		}
 | |
| 		function r(){
 | |
| 			j.obj.css(l,n/h.ratio);
 | |
| 			g.obj.css(l,-n);
 | |
| 			p["start"]=j.obj.offset()[l];
 | |
| 			var a=m.toLowerCase();
 | |
| 			h.obj.css(a,i[c.axis]);
 | |
| 			i.obj.css(a,i[c.axis]);
 | |
| 			j.obj.css(a,j[c.axis])
 | |
| 		}
 | |
| 		function q(){
 | |
| 			d.update();
 | |
| 			s();
 | |
| 			return d
 | |
| 		}
 | |
| 		var d=this;
 | |
| 		var e=b;
 | |
| 		var f={obj:a(".viewport",b)};
 | |
| 		var g={obj:a(".overview",b)};
 | |
| 		var h={obj:a(".scrollbar",b)};
 | |
| 		var i={obj:a(".track",h.obj)};
 | |
| 		var j={obj:a(".thumb",h.obj)};
 | |
| 		var k=c.axis=="x",
 | |
| 			l=k?"left":"top",
 | |
| 			m=k?"Width":"Height";
 | |
| 		var n,
 | |
| 			o={start:0,now:0},
 | |
| 			p={};
 | |
| 		this.update=function(a){
 | |
| 			f[c.axis]=f.obj[0]["offset"+m];
 | |
| 			g[c.axis]=g.obj[0]["scroll"+m];
 | |
| 			g.ratio=f[c.axis]/g[c.axis];
 | |
| 			h.obj.toggleClass("disable",g.ratio>=1);
 | |
| 			i[c.axis]=c.size=="auto"?f[c.axis]:c.size;
 | |
| 			j[c.axis]=Math.min(i[c.axis],Math.max(0,c.sizethumb=="auto"?i[c.axis]*g.ratio:c.sizethumb));
 | |
| 			h.ratio=c.sizethumb=="auto"?g[c.axis]/i[c.axis]:(g[c.axis]-f[c.axis])/(i[c.axis]-j[c.axis]);
 | |
| 			n=a=="relative"&&g.ratio<=1?Math.min(g[c.axis]-f[c.axis],Math.max(0,n)):0;
 | |
| 			n=a=="bottom"&&g.ratio<=1?g[c.axis]-f[c.axis]:isNaN(parseInt(a))?n:parseInt(a);
 | |
| 			r()
 | |
| 		};
 | |
| 		return q()
 | |
| 	}
 | |
| 	a.tiny=a.tiny||{};
 | |
| 	a.tiny.scrollbar={options:{axis:"y",wheel:40,scroll:true,size:"auto",sizethumb:"auto"}};
 | |
| 	a.fn.tinyscrollbar=function(c){
 | |
| 		var c=a.extend({},a.tiny.scrollbar.options,c);
 | |
| 		this.each(function(){
 | |
| 			a(this).data("tsb",new b(a(this),c))
 | |
| 		});
 | |
| 		return this
 | |
| 	};
 | |
| 	a.fn.tinyscrollbar_update=function(b){
 | |
| 		return a(this).data("tsb").update(b)
 | |
| 	};
 | |
| })
 | |
| (jQuery) |