From f84eb88bcf4566a969d13058aa0fce032c568d4a Mon Sep 17 00:00:00 2001 From: Abdullah Almsaeed Date: Mon, 16 Feb 2015 12:56:28 -0500 Subject: [PATCH] Fixed IE10 issue --- plugins/slimScroll/jquery.slimscroll.js | 386 ++++++++++---------- plugins/slimScroll/jquery.slimscroll.min.js | 17 +- 2 files changed, 204 insertions(+), 199 deletions(-) diff --git a/plugins/slimScroll/jquery.slimscroll.js b/plugins/slimScroll/jquery.slimscroll.js index 190368e11..e9127d313 100755 --- a/plugins/slimScroll/jquery.slimscroll.js +++ b/plugins/slimScroll/jquery.slimscroll.js @@ -5,90 +5,68 @@ * Version: 1.3.3 * */ -(function($) { +(function ($) { $.fn.extend({ - slimScroll: function(options) { + slimScroll: function (options) { var defaults = { - // width in pixels of the visible scroll area - width : 'auto', - + width: 'auto', // height in pixels of the visible scroll area - height : '250px', - + height: '250px', // width in pixels of the scrollbar and rail - size : '7px', - + size: '7px', // scrollbar color, accepts any hex/color value color: '#000', - // scrollbar position - left/right - position : 'right', - + position: 'right', // distance in pixels between the side edge and the scrollbar - distance : '1px', - + distance: '1px', // default scroll position on load - top / bottom / $('selector') - start : 'top', - + start: 'top', // sets scrollbar opacity - opacity : .4, - + opacity: .4, // enables always-on mode for the scrollbar - alwaysVisible : false, - + alwaysVisible: false, // check if we should hide the scrollbar when user is hovering over - disableFadeOut : false, - + disableFadeOut: false, // sets visibility of the rail - railVisible : false, - + railVisible: false, // sets rail color - railColor : '#333', - + railColor: '#333', // sets rail opacity - railOpacity : .2, - + railOpacity: .2, // whether we should use jQuery UI Draggable to enable bar dragging - railDraggable : true, - + railDraggable: true, // defautlt CSS class of the slimscroll rail - railClass : 'slimScrollRail', - + railClass: 'slimScrollRail', // defautlt CSS class of the slimscroll bar - barClass : 'slimScrollBar', - + barClass: 'slimScrollBar', // defautlt CSS class of the slimscroll wrapper - wrapperClass : 'slimScrollDiv', - + wrapperClass: 'slimScrollDiv', // check if mousewheel should scroll the window if we reach top/bottom - allowPageScroll : false, - + allowPageScroll: false, // scroll amount applied to each mouse wheel step - wheelStep : 20, - + wheelStep: 20, // scroll amount applied when user is using gestures - touchScrollStep : 200, - + touchScrollStep: 200, // sets border radius borderRadius: '7px', - // sets border radius of the rail - railBorderRadius : '7px' + railBorderRadius: '7px' }; var o = $.extend(defaults, options); // do it for every element that matches selector - this.each(function(){ + this.each(function () { - var isOverPanel, isOverBar, isDragg, queueHide, touchDif, - barHeight, percentScroll, lastScroll, - divS = '
', - minBarHeight = 30, - releaseScroll = false; + var isOverPanel, isOverBar, isDragg, queueHide, touchDif, + barHeight, percentScroll, lastScroll, + divS = '
', + minBarHeight = 30, + releaseScroll = false; // used in event handlers and for better minification var me = $(this); @@ -96,58 +74,58 @@ // ensure we are not binding it again if (me.parent().hasClass(o.wrapperClass)) { - // start from last bar position - var offset = me.scrollTop(); + // start from last bar position + var offset = me.scrollTop(); - // find bar and rail - bar = me.parent().find('.' + o.barClass); - rail = me.parent().find('.' + o.railClass); + // find bar and rail + bar = me.parent().find('.' + o.barClass); + rail = me.parent().find('.' + o.railClass); - getBarHeight(); + getBarHeight(); - // check if we should scroll existing instance - if ($.isPlainObject(options)) - { - // Pass height: auto to an existing slimscroll object to force a resize after contents have changed - if ( 'height' in options && options.height == 'auto' ) { - me.parent().css('height', 'auto'); - me.css('height', 'auto'); - var height = me.parent().parent().height(); - me.parent().css('height', height); - me.css('height', height); - } - - if ('scrollTo' in options) - { - // jump to a static point - offset = parseInt(o.scrollTo); - } - else if ('scrollBy' in options) - { - // jump by value pixels - offset += parseInt(o.scrollBy); - } - else if ('destroy' in options) - { - // remove slimscroll elements - bar.remove(); - rail.remove(); - me.unwrap(); - return; - } - - // scroll content by the given offset - scrollContent(offset, false, true); + // check if we should scroll existing instance + if ($.isPlainObject(options)) + { + // Pass height: auto to an existing slimscroll object to force a resize after contents have changed + if ('height' in options && options.height == 'auto') { + me.parent().css('height', 'auto'); + me.css('height', 'auto'); + var height = me.parent().parent().height(); + me.parent().css('height', height); + me.css('height', height); } - return; + if ('scrollTo' in options) + { + // jump to a static point + offset = parseInt(o.scrollTo); + } + else if ('scrollBy' in options) + { + // jump by value pixels + offset += parseInt(o.scrollBy); + } + else if ('destroy' in options) + { + // remove slimscroll elements + bar.remove(); + rail.remove(); + me.unwrap(); + return; + } + + // scroll content by the given offset + scrollContent(offset, false, true); + } + + return; } else if ($.isPlainObject(options)) { - if ('destroy' in options) - { - return; - } + if ('destroy' in options) + { + return; + } } // optionally set height to the parent's height @@ -155,55 +133,57 @@ // wrap content var wrapper = $(divS) - .addClass(o.wrapperClass) - .css({ - position: 'relative', - overflow: 'hidden', - width: o.width, - height: o.height - }); + .addClass(o.wrapperClass) + .css({ + position: 'relative', + overflow: 'hidden', + width: o.width, + height: o.height + }); // update style for the div me.css({ overflow: 'hidden', width: o.width, - height: o.height + height: o.height, + //Fix for IE10 + "-ms-touch-action": "none" }); // create scrollbar rail var rail = $(divS) - .addClass(o.railClass) - .css({ - width: o.size, - height: '100%', - position: 'absolute', - top: 0, - display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none', - 'border-radius': o.railBorderRadius, - background: o.railColor, - opacity: o.railOpacity, - zIndex: 90 - }); + .addClass(o.railClass) + .css({ + width: o.size, + height: '100%', + position: 'absolute', + top: 0, + display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none', + 'border-radius': o.railBorderRadius, + background: o.railColor, + opacity: o.railOpacity, + zIndex: 90 + }); // create scrollbar var bar = $(divS) - .addClass(o.barClass) - .css({ - background: o.color, - width: o.size, - position: 'absolute', - top: 0, - opacity: o.opacity, - display: o.alwaysVisible ? 'block' : 'none', - 'border-radius' : o.borderRadius, - BorderRadius: o.borderRadius, - MozBorderRadius: o.borderRadius, - WebkitBorderRadius: o.borderRadius, - zIndex: 99 - }); + .addClass(o.barClass) + .css({ + background: o.color, + width: o.size, + position: 'absolute', + top: 0, + opacity: o.opacity, + display: o.alwaysVisible ? 'block' : 'none', + 'border-radius': o.borderRadius, + BorderRadius: o.borderRadius, + MozBorderRadius: o.borderRadius, + WebkitBorderRadius: o.borderRadius, + zIndex: 99 + }); // set position - var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance }; + var posCss = (o.position == 'right') ? {right: o.distance} : {left: o.distance}; rail.css(posCss); bar.css(posCss); @@ -215,25 +195,26 @@ me.parent().append(rail); // make it draggable and no longer dependent on the jqueryUI - if (o.railDraggable){ - bar.bind("mousedown", function(e) { + if (o.railDraggable) { + bar.bind("mousedown", function (e) { var $doc = $(document); isDragg = true; t = parseFloat(bar.css('top')); pageY = e.pageY; - $doc.bind("mousemove.slimscroll", function(e){ + $doc.bind("mousemove.slimscroll", function (e) { currTop = t + e.pageY - pageY; bar.css('top', currTop); scrollContent(0, bar.position().top, false);// scroll content }); - $doc.bind("mouseup.slimscroll", function(e) { - isDragg = false;hideBar(); + $doc.bind("mouseup.slimscroll", function (e) { + isDragg = false; + hideBar(); $doc.unbind('.slimscroll'); }); return false; - }).bind("selectstart.slimscroll", function(e){ + }).bind("selectstart.slimscroll", function (e) { e.stopPropagation(); e.preventDefault(); return false; @@ -241,53 +222,78 @@ } // on rail over - rail.hover(function(){ + rail.hover(function () { showBar(); - }, function(){ + }, function () { hideBar(); }); // on bar over - bar.hover(function(){ + bar.hover(function () { isOverBar = true; - }, function(){ + }, function () { isOverBar = false; }); // show on parent mouseover - me.hover(function(){ + me.hover(function () { isOverPanel = true; showBar(); hideBar(); - }, function(){ + }, function () { isOverPanel = false; hideBar(); }); - // support for mobile - me.bind('touchstart', function(e,b){ - if (e.originalEvent.touches.length) - { - // record where touch started - touchDif = e.originalEvent.touches[0].pageY; - } - }); + if (window.navigator.msPointerEnabled) { + // support for mobile + me.bind('MSPointerDown', function (e, b) { + if (e.originalEvent.targetTouches.length) + { + // record where touch started + touchDif = e.originalEvent.targetTouches[0].pageY; + } + }); - me.bind('touchmove', function(e){ - // prevent scrolling the page if necessary - if(!releaseScroll) - { - e.originalEvent.preventDefault(); - } - if (e.originalEvent.touches.length) - { - // see how far user swiped - var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep; - // scroll content - scrollContent(diff, true); - touchDif = e.originalEvent.touches[0].pageY; - } - }); + me.bind('MSPointerMove', function (e) { + // prevent scrolling the page if necessary + e.originalEvent.preventDefault(); + if (e.originalEvent.targetTouches.length) + { + // see how far user swiped + var diff = (touchDif - e.originalEvent.targetTouches[0].pageY) / o.touchScrollStep; + // scroll content + scrollContent(diff, true); + touchDif = e.originalEvent.targetTouches[0].pageY; + + } + }); + } else { + // support for mobile + me.bind('touchstart', function (e, b) { + if (e.originalEvent.touches.length) + { + // record where touch started + touchDif = e.originalEvent.touches[0].pageY; + } + }); + + me.bind('touchmove', function (e) { + // prevent scrolling the page if necessary + if (!releaseScroll) + { + e.originalEvent.preventDefault(); + } + if (e.originalEvent.touches.length) + { + // see how far user swiped + var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep; + // scroll content + scrollContent(diff, true); + touchDif = e.originalEvent.touches[0].pageY; + } + }); + } // set up initial height getBarHeight(); @@ -296,7 +302,7 @@ if (o.start === 'bottom') { // scroll content to bottom - bar.css({ top: me.outerHeight() - bar.outerHeight() }); + bar.css({top: me.outerHeight() - bar.outerHeight()}); scrollContent(0, true); } else if (o.start !== 'top') @@ -305,7 +311,9 @@ scrollContent($(o.start).position().top, null, true); // make sure bar stays hidden - if (!o.alwaysVisible) { bar.hide(); } + if (!o.alwaysVisible) { + bar.hide(); + } } // attach scroll events @@ -314,13 +322,19 @@ function _onWheel(e) { // use mouse wheel only when mouse is over - if (!isOverPanel) { return; } + if (!isOverPanel) { + return; + } var e = e || window.event; var delta = 0; - if (e.wheelDelta) { delta = -e.wheelDelta/120; } - if (e.detail) { delta = e.detail / 3; } + if (e.wheelDelta) { + delta = -e.wheelDelta / 120; + } + if (e.detail) { + delta = e.detail / 3; + } var target = e.target || e.srcTarget || e.srcElement; if ($(target).closest('.' + o.wrapperClass).is(me.parent())) { @@ -329,8 +343,12 @@ } // stop window scroll - if (e.preventDefault && !releaseScroll) { e.preventDefault(); } - if (!releaseScroll) { e.returnValue = false; } + if (e.preventDefault && !releaseScroll) { + e.preventDefault(); + } + if (!releaseScroll) { + e.returnValue = false; + } } function scrollContent(y, isWheel, isJump) @@ -354,7 +372,7 @@ delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta); // scroll the scrollbar - bar.css({ top: delta + 'px' }); + bar.css({top: delta + 'px'}); } // calculate actual scroll amount @@ -366,7 +384,7 @@ delta = y; var offsetTop = delta / me[0].scrollHeight * me.outerHeight(); offsetTop = Math.min(Math.max(offsetTop, 0), maxTop); - bar.css({ top: offsetTop + 'px' }); + bar.css({top: offsetTop + 'px'}); } // scroll content @@ -386,8 +404,8 @@ { if (window.addEventListener) { - this.addEventListener('DOMMouseScroll', _onWheel, false ); - this.addEventListener('mousewheel', _onWheel, false ); + this.addEventListener('DOMMouseScroll', _onWheel, false); + this.addEventListener('mousewheel', _onWheel, false); } else { @@ -399,11 +417,11 @@ { // calculate scrollbar height and make sure it is not too small barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight); - bar.css({ height: barHeight + 'px' }); + bar.css({height: barHeight + 'px'}); // hide scrollbar if content is not long enough var display = barHeight == me.outerHeight() ? 'none' : 'block'; - bar.css({ display: display }); + bar.css({display: display}); } function showBar() @@ -421,8 +439,8 @@ // publish approporiate event if (lastScroll != percentScroll) { - var msg = (~~percentScroll == 0) ? 'top' : 'bottom'; - me.trigger('slimscroll', msg); + var msg = (~~percentScroll == 0) ? 'top' : 'bottom'; + me.trigger('slimscroll', msg); } } else @@ -432,13 +450,15 @@ lastScroll = percentScroll; // show only when required - if(barHeight >= me.outerHeight()) { + if (barHeight >= me.outerHeight()) { //allow window scroll releaseScroll = true; return; } - bar.stop(true,true).fadeIn('fast'); - if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); } + bar.stop(true, true).fadeIn('fast'); + if (o.railVisible) { + rail.stop(true, true).fadeIn('fast'); + } } function hideBar() @@ -446,7 +466,7 @@ // only hide when options allow it if (!o.alwaysVisible) { - queueHide = setTimeout(function(){ + queueHide = setTimeout(function () { if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg) { bar.fadeOut('slow'); diff --git a/plugins/slimScroll/jquery.slimscroll.min.js b/plugins/slimScroll/jquery.slimscroll.min.js index f25b5cc37..298aa1cd2 100755 --- a/plugins/slimScroll/jquery.slimscroll.min.js +++ b/plugins/slimScroll/jquery.slimscroll.min.js @@ -1,16 +1 @@ -/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * Version: 1.3.3 - * - */ -(function(e){e.fn.extend({slimScroll:function(g){var a=e.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},g);this.each(function(){function u(d){if(r){d=d||window.event; -var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);e(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&m(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function m(d,e,g){k=!1;var f=d,h=b.outerHeight()-c.outerHeight();e&&(f=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),f=Math.min(Math.max(f,0),h),f=0=b.outerHeight()?k=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&h.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(A=setTimeout(function(){a.disableFadeOut&&r||x||y||(c.fadeOut("slow"),h.fadeOut("slow"))},1E3))}var r,x,y,A,z,s,l,B,k=!1,b=e(this);if(b.parent().hasClass(a.wrapperClass)){var n=b.scrollTop(),c=b.parent().find("."+a.barClass),h=b.parent().find("."+a.railClass); -w();if(e.isPlainObject(g)){if("height"in g&&"auto"==g.height){b.parent().css("height","auto");b.css("height","auto");var q=b.parent().parent().height();b.parent().css("height",q);b.css("height",q)}if("scrollTo"in g)n=parseInt(a.scrollTo);else if("scrollBy"in g)n+=parseInt(a.scrollBy);else if("destroy"in g){c.remove();h.remove();b.unwrap();return}m(n,!1,!0)}}else if(!(e.isPlainObject(g)&&"destroy"in g)){a.height="auto"==a.height?b.parent().height():a.height;n=e("
").addClass(a.wrapperClass).css({position:"relative", -overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var h=e("
").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=e("
").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible? -"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,WebkitBorderRadius:a.borderRadius,zIndex:99}),q="right"==a.position?{right:a.distance}:{left:a.distance};h.css(q);c.css(q);b.wrap(n);b.parent().append(c);b.parent().append(h);a.railDraggable&&c.bind("mousedown",function(a){var b=e(document);y=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);m(0,c.position().top,!1)}); -b.bind("mouseup.slimscroll",function(a){y=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",function(a){a.stopPropagation();a.preventDefault();return!1});h.hover(function(){v()},function(){p()});c.hover(function(){x=!0},function(){x=!1});b.hover(function(){r=!0;v();p()},function(){r=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(z=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&& -(m((z-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),z=b.originalEvent.touches[0].pageY)});w();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),m(0,!0)):"top"!==a.start&&(m(e(a.start).position().top,null,!0),a.alwaysVisible||c.hide());C()}});return this}});e.fn.extend({slimscroll:e.fn.slimScroll})})(jQuery); \ No newline at end of file +(function($){$.fn.extend({slimScroll:function(options){var defaults={width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:false,disableFadeOut:false,railVisible:false,railColor:"#333",railOpacity:.2,railDraggable:true,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:false,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"};var o=$.extend(defaults,options);this.each(function(){var isOverPanel,isOverBar,isDragg,queueHide,touchDif,barHeight,percentScroll,lastScroll,divS="
",minBarHeight=30,releaseScroll=false;var me=$(this);if(me.parent().hasClass(o.wrapperClass)){var offset=me.scrollTop();bar=me.parent().find("."+o.barClass);rail=me.parent().find("."+o.railClass);getBarHeight();if($.isPlainObject(options)){if("height"in options&&options.height=="auto"){me.parent().css("height","auto");me.css("height","auto");var height=me.parent().parent().height();me.parent().css("height",height);me.css("height",height)}if("scrollTo"in options){offset=parseInt(o.scrollTo)}else if("scrollBy"in options){offset+=parseInt(o.scrollBy)}else if("destroy"in options){bar.remove();rail.remove();me.unwrap();return}scrollContent(offset,false,true)}return}else if($.isPlainObject(options)){if("destroy"in options){return}}o.height=o.height=="auto"?me.parent().height():o.height;var wrapper=$(divS).addClass(o.wrapperClass).css({position:"relative",overflow:"hidden",width:o.width,height:o.height});me.css({overflow:"hidden",width:o.width,height:o.height,"-ms-touch-action":"none"});var rail=$(divS).addClass(o.railClass).css({width:o.size,height:"100%",position:"absolute",top:0,display:o.alwaysVisible&&o.railVisible?"block":"none","border-radius":o.railBorderRadius,background:o.railColor,opacity:o.railOpacity,zIndex:90});var bar=$(divS).addClass(o.barClass).css({background:o.color,width:o.size,position:"absolute",top:0,opacity:o.opacity,display:o.alwaysVisible?"block":"none","border-radius":o.borderRadius,BorderRadius:o.borderRadius,MozBorderRadius:o.borderRadius,WebkitBorderRadius:o.borderRadius,zIndex:99});var posCss=o.position=="right"?{right:o.distance}:{left:o.distance};rail.css(posCss);bar.css(posCss);me.wrap(wrapper);me.parent().append(bar);me.parent().append(rail);if(o.railDraggable){bar.bind("mousedown",function(e){var $doc=$(document);isDragg=true;t=parseFloat(bar.css("top"));pageY=e.pageY;$doc.bind("mousemove.slimscroll",function(e){currTop=t+e.pageY-pageY;bar.css("top",currTop);scrollContent(0,bar.position().top,false)});$doc.bind("mouseup.slimscroll",function(e){isDragg=false;hideBar();$doc.unbind(".slimscroll")});return false}).bind("selectstart.slimscroll",function(e){e.stopPropagation();e.preventDefault();return false})}rail.hover(function(){showBar()},function(){hideBar()});bar.hover(function(){isOverBar=true},function(){isOverBar=false});me.hover(function(){isOverPanel=true;showBar();hideBar()},function(){isOverPanel=false;hideBar()});if(window.navigator.msPointerEnabled){me.bind("MSPointerDown",function(e,b){if(e.originalEvent.targetTouches.length){touchDif=e.originalEvent.targetTouches[0].pageY}});me.bind("MSPointerMove",function(e){e.originalEvent.preventDefault();if(e.originalEvent.targetTouches.length){var diff=(touchDif-e.originalEvent.targetTouches[0].pageY)/o.touchScrollStep;scrollContent(diff,true);touchDif=e.originalEvent.targetTouches[0].pageY}})}else{me.bind("touchstart",function(e,b){if(e.originalEvent.touches.length){touchDif=e.originalEvent.touches[0].pageY}});me.bind("touchmove",function(e){if(!releaseScroll){e.originalEvent.preventDefault()}if(e.originalEvent.touches.length){var diff=(touchDif-e.originalEvent.touches[0].pageY)/o.touchScrollStep;scrollContent(diff,true);touchDif=e.originalEvent.touches[0].pageY}})}getBarHeight();if(o.start==="bottom"){bar.css({top:me.outerHeight()-bar.outerHeight()});scrollContent(0,true)}else if(o.start!=="top"){scrollContent($(o.start).position().top,null,true);if(!o.alwaysVisible){bar.hide()}}attachWheel();function _onWheel(e){if(!isOverPanel){return}var e=e||window.event;var delta=0;if(e.wheelDelta){delta=-e.wheelDelta/120}if(e.detail){delta=e.detail/3}var target=e.target||e.srcTarget||e.srcElement;if($(target).closest("."+o.wrapperClass).is(me.parent())){scrollContent(delta,true)}if(e.preventDefault&&!releaseScroll){e.preventDefault()}if(!releaseScroll){e.returnValue=false}}function scrollContent(y,isWheel,isJump){releaseScroll=false;var delta=y;var maxTop=me.outerHeight()-bar.outerHeight();if(isWheel){delta=parseInt(bar.css("top"))+y*parseInt(o.wheelStep)/100*bar.outerHeight();delta=Math.min(Math.max(delta,0),maxTop);delta=y>0?Math.ceil(delta):Math.floor(delta);bar.css({top:delta+"px"})}percentScroll=parseInt(bar.css("top"))/(me.outerHeight()-bar.outerHeight());delta=percentScroll*(me[0].scrollHeight-me.outerHeight());if(isJump){delta=y;var offsetTop=delta/me[0].scrollHeight*me.outerHeight();offsetTop=Math.min(Math.max(offsetTop,0),maxTop);bar.css({top:offsetTop+"px"})}me.scrollTop(delta);me.trigger("slimscrolling",~~delta);showBar();hideBar()}function attachWheel(){if(window.addEventListener){this.addEventListener("DOMMouseScroll",_onWheel,false);this.addEventListener("mousewheel",_onWheel,false)}else{document.attachEvent("onmousewheel",_onWheel)}}function getBarHeight(){barHeight=Math.max(me.outerHeight()/me[0].scrollHeight*me.outerHeight(),minBarHeight);bar.css({height:barHeight+"px"});var display=barHeight==me.outerHeight()?"none":"block";bar.css({display:display})}function showBar(){getBarHeight();clearTimeout(queueHide);if(percentScroll==~~percentScroll){releaseScroll=o.allowPageScroll;if(lastScroll!=percentScroll){var msg=~~percentScroll==0?"top":"bottom";me.trigger("slimscroll",msg)}}else{releaseScroll=false}lastScroll=percentScroll;if(barHeight>=me.outerHeight()){releaseScroll=true;return}bar.stop(true,true).fadeIn("fast");if(o.railVisible){rail.stop(true,true).fadeIn("fast")}}function hideBar(){if(!o.alwaysVisible){queueHide=setTimeout(function(){if(!(o.disableFadeOut&&isOverPanel)&&!isOverBar&&!isDragg){bar.fadeOut("slow");rail.fadeOut("slow")}},1e3)}}});return this}});$.fn.extend({slimscroll:$.fn.slimScroll})})(jQuery); \ No newline at end of file