
 /*
 * Overscroll v1.4.7
 *  A jQuery Plugin that emulates the iPhone scrolling experience in a browser.
 *  http://azoffdesign.com/overscroll
 *
 * Intended for use with the latest jQuery
 *  http://code.jquery.com/jquery-latest.js
 *
 * Copyright 2011, Jonathan Azoff
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *  http://jquery.org/license
 *
 * For API documentation, see the README file
 *  https://github.com/azoff/Overscroll/blob/master/README.md
 *
 * Date: Friday, July 15th 2011
 *//*jslint onevar: true, strict: true *//*global window, jQuery */"use strict",function(a,b,c,d){d=c.fn.overscroll=function(a){a=a||{};return this.each(function(){d.init(c(this),a)})},c.fn.removeOverscroll=function(a){return this.each(function(){var a=c(this).data(d.removerKey);c.isFunction(a)&&a()})},c.extend(d,{events:{wheel:"mousewheel DOMMouseScroll",start:"select mousedown touchstart",drag:"mousemove touchmove",end:"mouseup mouseleave touchend",ignored:"dragstart drag"},div:"<div/>",removerKey:"overscroll-remover",constants:{driftFrequency:40,driftSequences:22,driftDecay:1.15,driftTimeout:100,timeout:400,captureThreshold:3,wheelDelta:20,scrollDelta:15,thumbThickness:6,thumbOpacity:.7},checkIosDevice:function(){d.isIOS===undefined&&(d.isIOS=/iP((hone)|(ad)|(od))/.test(navigator.platform));return d.isIOS},init:function(a,e){var f={sizing:d.getSizing(a)};e=c.extend({showThumbs:!0,wheelDirection:"vertical",cursor:"move",wheelDelta:d.constants.wheelDelta,scrollDelta:d.constants.scrollDelta,direction:"multi",cancelOn:""},e),e.direction!=="multi"&&e.direction!==e.wheelDirection&&(e.wheelDirection=e.direction),e.scrollDelta=b.abs(e.scrollDelta),e.wheelDelta=b.abs(e.wheelDelta),a.removeOverscroll(),a.data(d.removerKey,d.remover(a,f)),a.css({position:"relative",overflow:"hidden",cursor:e.cursor}).bind(d.events.wheel,f,d.wheel).bind(d.events.start,f,d.start).bind(d.events.end,f,d.stop).bind(d.events.ignored,!1),e.showThumbs&&(f.thumbs={},f.sizing.container.scrollWidth>0&&e.direction!=="vertical"&&(f.thumbs.horizontal=c(d.div).css(d.getThumbCss(f.sizing.thumbs.horizontal)).fadeTo(0,0),a.prepend(f.thumbs.horizontal)),f.sizing.container.scrollHeight>0&&e.direction!=="horizontal"&&(f.thumbs.vertical=c(d.div).css(d.getThumbCss(f.sizing.thumbs.vertical)).fadeTo(0,0),a.prepend(f.thumbs.vertical))),f.target=a,f.options=e},remover:function(a,b){return function(){a.css({overflow:"auto",cursor:"default"}).unbind(d.events.wheel,d.wheel).unbind(d.events.start,b,d.start).unbind(d.events.end,b,d.stop).unbind(d.events.ignored,!1),b.thumbs&&(b.thumbs.horizontal&&b.thumbs.horizontal.remove(),b.thumbs.vertical&&b.thumbs.vertical.remove())}},triggerEvent:function(a,b){b.target.trigger("overscroll:"+a)},toggleThumbs:function(a,b){a.thumbs&&(b?(a.thumbs.vertical&&a.thumbs.vertical.stop(!0,!0).fadeTo("fast",d.constants.thumbOpacity),a.thumbs.horizontal&&a.thumbs.horizontal.stop(!0,!0).fadeTo("fast",d.constants.thumbOpacity)):(a.thumbs.vertical&&a.thumbs.vertical.fadeTo("fast",0),a.thumbs.horizontal&&a.thumbs.horizontal.fadeTo("fast",0)))},setPosition:function(a,b,c){b.x=a.pageX,b.y=a.pageY,b.time=d.time(),b.index=c;return b},wheel:function(b,c){d.clearInterval(b.data.target),b.wheelDelta&&(c=b.wheelDelta/(a.opera?-120:120)),b.detail&&(c=-b.detail/3),b.data.wheelCapture||(b.data.wheelCapture={timeout:null},d.toggleThumbs(b.data,!0),b.data.target.stop(!0,!0).data("dragging",!0)),c*=b.data.options.wheelDelta,b.data.options.wheelDirection==="horizontal"?this.scrollLeft-=c:this.scrollTop-=c,d.moveThumbs(b,this.scrollLeft,this.scrollTop),b.data.wheelCapture.timeout&&clearTimeout(b.data.wheelCapture.timeout),b.data.wheelCapture.timeout=setTimeout(function(a){b.data.wheelCapture=undefined,d.toggleThumbs(b.data,!1),b.data.target.data("dragging",!1)},d.constants.timeout)},moveThumbs:function(a,b,c,d,e,f,g){a.data.options.showThumbs&&(d=a.data.thumbs,e=a.data.sizing,d.horizontal&&(f=b*(1+e.container.width/e.container.scrollWidth),g=c+e.thumbs.horizontal.top,d.horizontal.css("margin",g+"px 0 0 "+f+"px")),d.vertical&&(f=b+e.thumbs.vertical.left,g=c*(1+e.container.height/e.container.scrollHeight),d.vertical.css("margin",g+"px 0 0 "+f+"px")))},start:function(a){d.clearInterval(a.data.target),a.data.startTarget=c(a.target),a.data.startTarget.is(a.data.options.cancelOn)||(d.normalizeEvent(a),a.data.target.bind(d.events.drag,a.data,d.drag).stop(!0,!0).data("dragging",!1).data("dragged",!1),a.data.position=d.setPosition(a,{}),a.data.capture=d.setPosition(a,{},2),d.triggerEvent("dragstart",a.data))},drag:function(a,b,c,e,f){d.normalizeEvent(a),a.data.target.data("dragged",!0),a.data.target.data("dragging")||d.toggleThumbs(a.data,!0),a.data.options.direction!=="vertical"&&(this.scrollLeft-=a.pageX-a.data.position.x),a.data.options.direction!=="horizontal"&&(this.scrollTop-=a.pageY-a.data.position.y),d.moveThumbs(a,this.scrollLeft,this.scrollTop),d.setPosition(a,a.data.position),--a.data.capture.index<=0&&(a.data.target.data("dragging",!0),d.setPosition(a,a.data.capture,d.constants.captureThreshold))},normalizeEvent:function(a){if(d.checkIosDevice()){var b=a.originalEvent.changedTouches[0];a.pageX=b.pageX,a.pageY=b.pageY}},time:function(){return(new Date).getTime()},deferClick:function(a){var b=a.data("events");b&&b.click&&b.click.length&&(b=b.click.slice(),a.unbind("click").one("click",function(d){d.preventDefault(),c.each(b,function(b,c){a.click(c)})}))},stop:function(a,b,e,f){a.data.position&&(a.data.target.unbind(d.events.drag,d.drag),d.triggerEvent("dragend",a.data),a.data.target.data("dragging")?d.drift(this,a,function(a){a.target.data("dragging",!1),d.toggleThumbs(a,!1)}):d.toggleThumbs(a.data,!1),a.data.target.data("dragged")&&c(a.target).is(a.data.startTarget)&&(a.data.target.data("dragged",!1),d.deferClick(a.data.startTarget),a.data.startTarget=null),a.data.capture=a.data.position=undefined)},clearInterval:function(b){b=c(b);var d=b.data("overscroll-interval");d&&a.clearInterval(d),b.data("overscroll-interval",null)},setInterval:function(a,b){d.clearInterval(a),c(a).data("overscroll-interval",b)},drift:function(b,c,e){if(d.time()-c.data.capture.time>d.constants.driftTimeout)return e.call(null,c.data);d.normalizeEvent(c);var f=c.data.options.scrollDelta*(c.pageX-c.data.capture.x),g=c.data.options.scrollDelta*(c.pageY-c.data.capture.y),h=b.scrollLeft,i=b.scrollTop,j=f/d.constants.driftSequences,k=g/d.constants.driftSequences,l=d.constants.driftDecay;c.data.options.direction!=="vertical"&&(h-=f),c.data.options.direction!=="horizontal"&&(i-=g),d.triggerEvent("driftstart",c.data),d.setInterval(b,a.setInterval(function(){var a=!0,f=1,g=-1;if(k>f&&b.scrollTop>i||k<g&&b.scrollTop<i)a=!1,b.scrollTop-=k,k/=l;if(j>f&&b.scrollLeft>h||j<g&&b.scrollLeft<h)a=!1,b.scrollLeft-=j,j/=l;d.moveThumbs(c,b.scrollLeft,b.scrollTop),a&&(d.clearInterval(b),d.triggerEvent("driftend",c.data),e.call(null,c.data))},d.constants.driftFrequency))},getSizing:function(a){var b={},c=a.get(0);b.container={width:a.width(),height:a.height()},b.container.scrollWidth=c.scrollWidth==b.container.width?0:c.scrollWidth,b.container.scrollHeight=c.scrollHeight==b.container.height?0:c.scrollHeight,b.thumbs={horizontal:{width:b.container.width*b.container.width/b.container.scrollWidth,height:d.constants.thumbThickness,corner:d.constants.thumbThickness/2,left:0,top:b.container.height-d.constants.thumbThickness},vertical:{width:d.constants.thumbThickness,height:b.container.height*b.container.height/b.container.scrollHeight,corner:d.constants.thumbThickness/2,left:b.container.width-d.constants.thumbThickness,top:0}};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","z-index":"1"}}})}(window,Math,jQuery)

