/*

 Overscroll v1.5.1
 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
 http://azof.fr/pYCzuM

 Date: Thursday, November 24th 2011 (Gobble Gobble)
*/
(function(h,i,e,c,n){n="ontouchstart"in h;c=e.fn.overscroll=function(a){a=a||{};return this.each(function(){c.init(e(this),a)})};e.fn.removeOverscroll=function(){return this.each(function(){var a=e(this).data(c.removerKey);e.isFunction(a)&&a()})};e.extend(c,{events:{wheel:"mousewheel DOMMouseScroll",start:"mousedown",drag:"mousemove",end:"mouseup mouseleave click",ignored:"select 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:0.7},init:function(a,b){var d={sizing:c.getSizing(a),cursors:c.getCursors(),flags:{},cleaned:{}};d.options=b=e.extend({showThumbs:!0,persistThumbs:!1,wheelDirection:"vertical",wheelDelta:c.constants.wheelDelta,scrollDelta:c.constants.scrollDelta,direction:"multi",cancelOn:""},b);if(b.direction!=="multi"&&b.direction!==b.wheelDirection)b.wheelDirection=b.direction;b.scrollDelta=i.abs(b.scrollDelta);
b.wheelDelta=i.abs(b.wheelDelta);a.removeOverscroll();a.data(c.removerKey,c.remover(a,d));if(n)a.css({overflow:"auto","-webkit-overflow-scrolling":"touch","-moz-overflow-scrolling":"touch","overflow-scrolling":"touch"});else if(d.target=a.css({position:"relative",overflow:"hidden",cursor:d.cursors.grab}).on(c.events.wheel,d,c.wheel).on(c.events.start,d,c.start).on(c.events.end,d,c.stop).on(c.events.ignored,!1),b.showThumbs){d.thumbs={};if(d.sizing.container.scrollWidth>0&&b.direction!=="vertical")d.thumbs.horizontal=
e(c.div).css(c.getThumbCss(d.sizing.thumbs.horizontal)).css({opacity:b.persistThumbs?c.constants.thumbOpacity:0}),a.prepend(d.thumbs.horizontal);if(d.sizing.container.scrollHeight>0&&b.direction!=="horizontal")d.thumbs.vertical=e(c.div).css(c.getThumbCss(d.sizing.thumbs.vertical)).css({opacity:b.persistThumbs?c.constants.thumbOpacity:0}),a.prepend(d.thumbs.vertical)}b.scrollLeft&&a.scrollLeft(b.scrollLeft);b.scrollTop&&a.scrollTop(b.scrollTop);c.moveThumbs(d,a.scrollLeft(),a.scrollTop())},getCursors:function(){var a=
{};e.browser.mozilla?(a.grab="-moz-grab",a.grabbing="-moz-grabbing"):e.browser.webkit?(a.grab="-webkit-grab",a.grabbing="-webkit-grabbing"):a.grab=a.grabbing="move";return a},remover:function(a,b){return function(){a.removeAttr("style").removeData(c.removerKey).off(c.events.wheel,c.wheel).off(c.events.start,c.start).off(c.events.end,c.stop).off(c.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&&!a.options.persistThumbs&&(b?(a.thumbs.vertical&&a.thumbs.vertical.stop(!0,!0).fadeTo("fast",c.constants.thumbOpacity),a.thumbs.horizontal&&a.thumbs.horizontal.stop(!0,!0).fadeTo("fast",c.constants.thumbOpacity)):(a.thumbs.vertical&&a.thumbs.vertical.fadeTo("fast",0),a.thumbs.horizontal&&a.thumbs.horizontal.fadeTo("fast",0)))},setPosition:function(a,b,d){b.x=a.pageX;b.y=a.pageY;b.time=c.time();b.index=d;return b},wheel:function(a,
b){var d=a.data,f=a.originalEvent;a.preventDefault();c.clearInterval(d.target);f.wheelDelta&&(b=f.wheelDelta/(h.opera?-120:120));f.detail&&(b=-f.detail/3);if(!d.wheelCapture)d.wheelCapture={timeout:null},c.toggleThumbs(d,!0),d.target.stop(!0,d.flags.dragging=!0);b*=d.options.wheelDelta;d.options.wheelDirection==="horizontal"?this.scrollLeft-=b:this.scrollTop-=b;c.moveThumbs(d,this.scrollLeft,this.scrollTop);d.wheelCapture.timeout&&h.clearTimeout(d.wheelCapture.timeout);d.wheelCapture.timeout=h.setTimeout(function(){c.toggleThumbs(d,
d.wheelCapture=d.flags.dragging=null)},c.constants.timeout)},moveThumbs:function(a,b,c){var f,e,g;if(a.options.showThumbs)f=a.thumbs,a=a.sizing,f.horizontal&&(e=b*(1+a.container.width/a.container.scrollWidth),g=c+a.thumbs.horizontal.top,f.horizontal.css("margin",g+"px 0 0 "+e+"px")),f.vertical&&(e=b+a.thumbs.vertical.left,g=c*(1+a.container.height/a.container.scrollHeight),f.vertical.css("margin",g+"px 0 0 "+e+"px"))},start:function(a){var b=a.data,d=b.target,f=b.flags;c.clearInterval(b.target);b.startTarget=
e(a.target);if(!b.startTarget.is(b.options.cancelOn))a.preventDefault(),b.target.css("cursor",b.cursors.grabbing),f.dragging=f.dragged=!1,d.bind(c.events.drag,b,c.drag).stop(!0,!0),b.position=c.setPosition(a,{}),b.capture=c.setPosition(a,{},2),c.triggerEvent("dragstart",b)},drag:function(a){a.preventDefault();var b=a.data,d=b.flags;d.dragged||c.toggleThumbs(b,!0);d.dragged=!0;b.options.direction!=="vertical"&&(this.scrollLeft-=a.pageX-b.position.x);b.options.direction!=="horizontal"&&(this.scrollTop-=
a.pageY-b.position.y);c.moveThumbs(b,this.scrollLeft,this.scrollTop);c.setPosition(a,b.position);if(--b.capture.index<=0)d.dragging=!0,c.setPosition(a,b.capture,c.constants.captureThreshold)},time:function(){return(new Date).getTime()},deferClick:function(a){var b=a.data("events"),b=b&&b.click?b.click.slice():!1;a.unbind("click").one("mouseup",function(){b&&e.each(b,function(b,c){a.click(c)});return!1})},stop:function(a){var b=a.data,d=b.flags;b.target.unbind(c.events.drag,c.drag);if(b.position){c.triggerEvent("dragend",
b);d.dragging?c.drift(this,a,function(){c.toggleThumbs(b,d.dragging=!1)}):c.toggleThumbs(b,!1);if(d.dragged&&e(a.target).is(b.startTarget))c.deferClick(b.startTarget),b.startTarget=d.dragged=null;b.capture=b.position=void 0}b.target.css("cursor",b.cursors.grab)},clearInterval:function(a){var a=e(a),b=a.data("overscroll-interval");b&&h.clearInterval(b);a.data("overscroll-interval",null)},setInterval:function(a,b){c.clearInterval(a);e(a).data("overscroll-interval",b)},drift:function(a,b,d){var f=b.data,
e,g,j,k,l=a.scrollLeft,m=a.scrollTop,i=c.constants.driftDecay;if(c.time()-f.capture.time>c.constants.driftTimeout)return d.call(null,f);e=f.options.scrollDelta*(b.pageX-f.capture.x);g=f.options.scrollDelta*(b.pageY-f.capture.y);j=e/c.constants.driftSequences;k=g/c.constants.driftSequences;f.options.direction!=="vertical"&&(l-=e);f.options.direction!=="horizontal"&&(m-=g);c.triggerEvent("driftstart",b.data);c.setInterval(a,h.setInterval(function(){var b=!0;if(k>1&&a.scrollTop>m||k<-1&&a.scrollTop<
m)b=!1,a.scrollTop-=k,k/=i;if(j>1&&a.scrollLeft>l||j<-1&&a.scrollLeft<l)b=!1,a.scrollLeft-=j,j/=i;c.moveThumbs(f,a.scrollLeft,a.scrollTop);b&&(c.clearInterval(a),c.triggerEvent("driftend",f),d.call(null,f))},c.constants.driftFrequency))},getSizing:function(a){var b={},d=a.get(0),a=b.container={width:a.width(),height:a.height()};a.scrollWidth=a.width>=d.scrollWidth?a.width:d.scrollWidth;a.scrollHeight=a.height>=d.scrollHeight?a.height:d.scrollHeight;b.thumbs={horizontal:{width:a.width*a.width/a.scrollWidth,
height:c.constants.thumbThickness,corner:c.constants.thumbThickness/2,left:0,top:a.height-c.constants.thumbThickness},vertical:{width:c.constants.thumbThickness,height:a.height*a.height/a.scrollHeight,corner:c.constants.thumbThickness/2,left:a.width-c.constants.thumbThickness,top:0}};return b},getThumbCss:function(a){return{position:"absolute","display":"none",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":"999"}}})})(window,Math,jQuery);


