"use strict";(function(d,c){c=d.fn.overscroll=function(a){return this.each(function(){c.init(d(this),a)})};d.extend(c,{events:{wheel:"mousewheel DOMMouseScroll",start:"select mousedown touchstart",drag:"mousemove touchmove",end:"mouseup mouseleave touchend",scroll:"scroll",ignored:"dragstart drag"},div:"<div/>",constants:{scrollDuration:800,captureThreshold:4,wheelDeltaMod:-18,scrollDeltaMod:5.7,thumbThickness:8,thumbOpacity:0.7,boundingBox:1000000},init:function(a,f,b){b={sizing:c.getSizing(a)};f=d.extend({openedCursor:"http://github.com/downloads/azoff/Overscroll/opened.cur",closedCursor:"http://github.com/downloads/azoff/Overscroll/closed.cur",showThumbs:true},(f||{}));f.cache={openedCursor:new Image(),closedCursor:new Image()};f.cache.openedCursor.src=f.openedCursor;f.cache.closedCursor.src=f.closedCursor;a.css({cursor:"url("+f.openedCursor+"), default",overflow:"hidden"}).bind(c.events.wheel,b,c.wheel).bind(c.events.start,b,c.start).bind(c.events.end,b,c.stop).bind(c.events.ignored,function(){return false});if(f.showThumbs){b.thumbs={visible:false};if(b.sizing.container.scrollWidth>0){b.thumbs.horizontal=d(c.div).css(c.getThumbCss(b.sizing.thumbs.horizontal)).fadeTo(0,0);a.prepend(b.thumbs.horizontal)}if(b.sizing.container.scrollHeight>0){b.thumbs.vertical=d(c.div).css(c.getThumbCss(b.sizing.thumbs.vertical)).fadeTo(0,0);a.prepend(b.thumbs.vertical)}b.sizing.relative=b.thumbs.vertical||b.thumbs.horizontal;if(b.sizing.relative){b.sizing.relative.oldOffset=b.sizing.relative.offset();a.scrollTop(c.constants.boundingBox).scrollLeft(c.constants.boundingBox);b.sizing.relative.remove().prependTo(a);b.sizing.relative.newOffset=b.sizing.relative.offset();b.sizing.relative=b.sizing.relative.oldOffset.left!=b.sizing.relative.newOffset.left||b.sizing.relative.oldOffset.top!=b.sizing.relative.newOffset.top;a.scrollTop(0).scrollLeft(0);a.bind(c.events.scroll,b,c.scroll)}}b.target=a;b.options=f},wheel:function(b,a){if(b.wheelDelta){a=b.wheelDelta/12000}if(b.detail){a=-b.detail/3}b.data.thumbs.vertical.stop(true,true).fadeTo(0,c.constants.thumbOpacity);b.data.target.scrollTop(b.data.target.scrollTop()-(a*c.constants.wheelDeltaMod));b.data.thumbs.vertical.stop(true,true).fadeTo("fast",0);return false},start:function(a){a.data.target.css("cursor","url("+a.data.options.closedCursor+"), default").bind(c.events.drag,a.data,c.drag).stop(true,true);a.data.position={x:a.pageX,y:a.pageY};a.data.capture={};a.data.isDragging=false;return false},drag:function(a){this.scrollLeft-=(a.pageX-a.data.position.x);this.scrollTop-=(a.pageY-a.data.position.y);a.data.position.x=a.pageX;a.data.position.y=a.pageY;if(typeof a.data.capture.index==="undefined"||--a.data.capture.index===0){a.data.isDragging=true;a.data.capture={x:a.pageX,y:a.pageY,index:c.constants.captureThreshold};if(a.data.thumbs&&!a.data.thumbs.visible){a.data.thumbs.visible=true;if(a.data.thumbs.vertical){a.data.thumbs.vertical.stop(true,true).fadeTo("fast",c.constants.thumbOpacity)}if(a.data.thumbs.horizontal){a.data.thumbs.horizontal.stop(true,true).fadeTo("fast",c.constants.thumbOpacity)}}}return true},scroll:function(i,a,j,b,h){b=i.data.target.scrollLeft();h=i.data.target.scrollTop();if(i.data.thumbs.horizontal){a=b*i.data.sizing.container.width/i.data.sizing.container.scrollWidth;j=i.data.sizing.thumbs.horizontal.top;if(i.data.sizing.relative){a+=b;j+=h}i.data.thumbs.horizontal.css("margin",j+"px 0 0 "+a+"px")}if(i.data.thumbs.vertical){a=i.data.sizing.thumbs.vertical.left;j=h*i.data.sizing.container.height/i.data.sizing.container.scrollHeight;if(i.data.sizing.relative){a+=b;j+=h}i.data.thumbs.vertical.css("margin",j+"px 0 0 "+a+"px")}},stop:function(a,b,f){if(typeof a.data.position!=="undefined"){a.data.target.css("cursor","url("+a.data.options.openedCursor+"), default").unbind(c.events.drag,c.drag);if(a.data.isDragging){b=c.constants.scrollDeltaMod*(a.pageX-a.data.capture.x);f=c.constants.scrollDeltaMod*(a.pageY-a.data.capture.y);a.data.target.stop(true,true).animate({scrollLeft:this.scrollLeft-b,scrollTop:this.scrollTop-f},{queue:false,duration:c.constants.scrollDuration,easing:"cubicEaseOut",complete:function(){if(a.data.thumbs&&a.data.thumbs.visible){a.data.thumbs.visible=false;if(a.data.thumbs.vertical){a.data.thumbs.vertical.stop(true,true).fadeTo("fast",0)}if(a.data.thumbs.horizontal){a.data.thumbs.horizontal.stop(true,true).fadeTo("fast",0)}}}})}a.data.capture=a.data.position=undefined}return !a.data.isDragging},getSizing:function(a,b){b={};b.container={width:a.width(),height:a.height()};a.scrollLeft(c.constants.boundingBox).scrollTop(c.constants.boundingBox);b.container.scrollWidth=a.scrollLeft();b.container.scrollHeight=a.scrollTop();a.scrollTop(0).scrollLeft(0);b.thumbs={horizontal:{width:b.container.width*b.container.width/b.container.scrollWidth,height:c.constants.thumbThickness,corner:c.constants.thumbThickness/2,left:0,top:b.container.height-c.constants.thumbThickness},vertical:{width:c.constants.thumbThickness,height:b.container.height*b.container.height/b.container.scrollHeight,corner:c.constants.thumbThickness/2,left:b.container.width-c.constants.thumbThickness,top:0}};b.container.width-=b.thumbs.horizontal.width;b.container.height-=b.thumbs.vertical.height;return b},getThumbCss:function(a){return{position:"absolute","background-color":"black",width:a.width+"px",height:a.height+"px",margin:a.top+"px 0 0 "+a.left+"px","-moz-border-radius":a.corner+"px","-webkit-border-radius":a.corner+"px","border-radius":a.corner+"px"}}});d.extend(d.easing,{cubicEaseOut:function(i,a,k,j){var b=k+j;return b*((i=i/1-1)*i*i+1)+k}})})(jQuery);

