RIFF"WEBPVP8 Е�* �>�T�M'��%�u|�� gk�ZaQb�����o����lN���s�_�3��S+���c�€R��y����//����~��H�@�2oF�X ���R@'�:�ꞓ}��a�M,.� ��o��=�p�U�&g<�:���~���t��.�1���cyW�� We�M=�f�Y6v�����(nO���������^- �9(b _�s%{�C|�p�@�����37�}B0��u���i�Գ���� ������5�}���֮M?dz���q�e��N�~�&�N��K�av$]hO�i�C�,��"]�����@����M@�o O[�Æ*;�e]��_; }�p�?��)�'VC� J��L�y� v����18��)7c�d�mߛ�]I� ����d��?�{�.����b)49��c��Zy/��c^��%��/z�å̯�t��rS��Z��Uͩ�h��2����` �7�:��~��zP���Z����?v�R��TD���G����CJ���}�o��fs��̜#b��e"k9,���3�{Or�i��x":���{/ۈ�`�7RČ����(�p:I��%:�ͺ��W(|�=KP��3�7}���������ed��;�3�;�e��8�g�4�9 %v,B�GU�����T% ֯��B+�tR���p������F7�sT��oϱq �h�Rݧ�~*�܈_�Ck���}�nY�>��C�PQ�B��(o�६�qxy������f ���]��}����%=CW�k^t�—]����M�cX�i��%��!�Y������:N=|��wj<9ł��,�s�O�,,�U�!�������e���{���W��989�y*z�=�"E�CyW���N�2�ę��LN�HW��?����`V���DJ=#׶×ܽ$eF���o;b� ��0��&�W���Y�bR�� �Fֵ� `J�an�-Є@�tR�v��e2W��Mn�p��4P1�q ���®w���ũur*�җ.�#�4b���������:���g��ʧ�`R�4�+G�f���niU����$�K-'A�zE&]��Y�H2�4� ��˄�t��Q�4%��L�#��0FS8�Bu����ژ��"����۹�[�JK��4��z�v�ڌ��L*jD0.����?�ڃN��H��J����n�w��6Q(i;��I,.3?|�`���y���D_��(��w��������[��ZYhe�')��D*��kb����c��@� �|S�S3���- ���iq!*��w������Ł��ܩ��*FY���jV�4Q���4�,�ʑV!��N�.�1�KT,��Zp� ���iL�r��Ȧ����"y�tU���PS�ģ��?�QGng_�#yEk��B̝��1hr��ѕ�z*Ԧ�L8T�����H�^�k�-�g�z������w��N����v��RH��E��!0Cؚ)R�@�q�J�qA�r�$k4���om���Ьnu���x�������������y$�8�Z���v� &�+2�|���\r:[,!�Y�C#c��͊�{��7Щ��Y�LVę]�j��)��^���󶦙$�_����Hx>����[ +K�ڏ�1������Q�7@�^{�ik�;'H{�8 �ȇe vR����^� Meq�����Y�MC��U<��O�۫�nAfBf317���x��O�.u@3R}e�`�D��\�z���L��P������y8�?����I�"s`�b 3��ٹd�0��A�/���� ��{b�b������1� ����ka�&T�z�_4���I��PN��8��}N�r��]�՜���ӿ��9�|/.��� �fˑ.�`r�r��U-���7�Rx8L��d$H�m��Ǒ�*x�P{�D�����k��o�ueV�-.��j}���U2��g絍g���s �������aN�X�ҍ���C�� ��X��B�EF���8%p57<�x�Y�e�cϔ�\��C �OAj&N�V���!v��U��~J��j��4�V|��8�R�v�fD�)�HA�3�G��ds�7Z.���= ����+kI2�0=�'� K �H,`�ɴāTE\����E�'/��;���;��a���0"��� �x$J�T��#U=������j-�8�����y c8W����Ԋ�K��_��Y� '%Vg$I�Пq�shE�y�:�m�}�F1(:b�U�~� ���0}�C�}0����#�#}���e�S9��.��SP�m���<�~�y��� ��ɭ�ٮ6N��� ğ��t��A��N�V ������f�+�w�O1�Jq���U�B�T��į���� ��*�=z�x"yU S���� ��// ����W᫮��R�O�2W�M��<-�;�F�`9 �����t�:C{a�8�� <�r'���:�g8%�9J̞�˦��eV�7l�~�#����.yY)$��k�|�!�3���m���XS���J4B���`�����oL[]��aT[�C��@h�T�l��_�e>�����K<'��P�zgk�#fm��V�]�ݽ�j1����H��J��J58��ڱ��@�e&*�w��e���Q��HT8�ֽ��\�Fa�栆�A�ڝӚ׹@�:9`��G�h�7����t<���_˒|�\bU�O�����,M�a�oynGf�޶7�w�i`�m[��XE4�*�8}5��U1���^�B*��_%[����Yb�^���S�l�"A�1�T��ڈ��(???)j�S�n�8v%� Eo��� mE��|�Έ�Ai�3uy5O����7Rܽ���"L��X���1�@�=?5�_'��{j�����Z3L��k��^x6g3i�����r.��N��&��9[��ɓW[+�� 7�����fe�3�K�%��0F��+V�ϛ+3�B�p,y;Z�NGK�uWg䁯9�v��t��ǒx�JY�O��K�iY��#FJy�Bzt�Q^�Y��Uϲ-͖��9��g�X,�X] f�P/�]d�䠾�̔m%Q��겓\q(�%'����/EN�P�1�o��� ���}��'��c�F��Ju��4��0ck�N��w�1��&]a ��^I�)����֓��\;�1��3��� �L��{>�+���a��Jg��#����P���>�5�a<�`>>˔�]�ߎey�-T���ʵ���r���8`dmNm���_mӐK�Ҏ-޴�� ��RQ%�d�l"��l�_��ie0.�$Xh|.jv,���l\ uyj�u\�/� B:�܀�]� _��T��I���lz�&c�A�g{g��O˂�O���O�M�t��7Y�~? ቶ`�7��'�w��#���˚�\��_��� a��d���[Ҭњ��]ɢ�A$ �l�v=E�66d �WA\̬fsǭ}x;';���?�UW�O��{�&|_a�C� |ȹ��pka�|���zf[S�������[�Jcf�A�&�L�U)Pd+)�_�$1�0�z�'�v\u�' +;�!���dž�]h�N�{ku��<��a��.0�,��]q��ZKao=ILo�z�rb&�{@K�i*7nX).�/�̶��ӒU�v �B֝���a��n��تx ���P�AG7M4N�?r;Z�����7�@�wA�q��RM5�8ۭ ��g��8�g���G�Tſ�O�{2��P3r��6�W,/��kC���p�V���~�"���T���6�/<�4�U�>��T�H�Fc�T�D�^I���!�����=&\Em�>b�,|T��d���n��=@\Wzi���D��&�f���1�t�mC�Ih��m��&�������84�!H�i�|�Z���� ��W���g����8�h�B] OvQ�u����+�}n�� FE�+q�&j����I�u��&��=!��T�b�@�ք0 �D�W�W�t�V}�������^�g�Erb`j��2 �wr�\Y5��L�Ρ���_�bNU�)~�e�Z�U�*�����:�vƀu2�W-W��W{KKo0�)��G�K.��{̮���v�/��p� !�� �w;`��b ������F���/���:����I�lm��Vc�,x~m<=|�_�>n����(A�����{�膾���m�,{3 �ӀH=٘�%��[USd��!J�|�f_�/ �߻��)I%���G�ܑ�G |N������d��BU5��qvG�c,���A?!��w��� �S��-i���Fr�P�_��E�+��)��V��f��������~�����������}"sk��cHN�<� 5I�r��1gu�ݗ�,N�I��f��k�s���0��: 0�<�\ͩB�܄ �:�f2A��mҞ�Z�6��3��t�����͟~����J�R9�] �,h������Z�@�{����9��W�il!�:��P��P���wK)���p���!���KuB\�7 uI�?(���/��r3����v,\'�8��qUa�ء���!��(b��n?�YfӸ����r�$���ה�~��_�&�8g�<(Mx$ZO�������u`q��:�N�Q !�%`���h:�� �~>�D���m�^��[V!y�6=� ��m��ѡ��p4�Iꎸ��1cE��QS�ٷ��W�C����*�����Q��=��3���&���-#,åCCG�������9�i��3�C��S[t>���qm����B��s���������o��� J�^s|����r��\ԺΦ�a�{��1��wT'���� �̓Q���B��\xx}��8��Of!��U�n��f�����bA��UD�cC} �r�������c ���^�X���k�Ɩk�6��^E�C�E�sՀ`�Ⱦ,i��v�� ٺe˟�!�co�64x4��A�ah��ˏ<��%�@�*|�\�TY����#:9��|?S�[������G hUw9���z]��D��-J6�m,ʭ��2�Iz�4W9��&���t�߁ R�Z�gP��H�dj�`%ap}�^떟��*fb{�Q) Dd_V����$��,�߁� @D�&f�2��S6��M�ɤ�)Q\F�i���5p��Wb'PN�R�>�����9��]��\8{B8�� ��ю�������%� ӏۙ{]�j,_Y>��!�l���'���H�["��;c?cy��1< 0ϑ���/�AAЛ�� ; �j�(!��1 [)5ݻK ��A7��"[�%"���{��H ���V�� ���m�K���VLn��9鿹8�At΀@����f`�1y�rЅ��q��7Nf���x)y��, 0e�"{�ƨ�"� o �6� �.|Tm.���-r �G� [ed���–q���]�X�oG*�1>�� م�p_Y{δ(N�|s��^{i�`��͒ QӴx+X.ݕ�kP�g]�޿�4��Q|�O��h�*c�W�G�4{~x�k��A:�{Yu�倀#ތM�K!�e�;ȩ����r������'���D&H�$�0�ߜ�w��Sq dH��P�y����z����h��d��"�;0��#I2�F{����. W�wl���|>s�\ŌO�&bO/4(z9ܭua��`��_3d�Qpt�/�P -��#5�,�M��� �pA:©�q�����NW��ډ�A���� �9nʺج���� �TSM��{J6?7��r�@�\����D��� �׶���s�f�TJj?"��D��`?��̒� b�#�%�C*v�$�{�$����5Ծ�F�s��y�e/8��h-�f�̰&(����Gj�L:U� 2�� ����v�_k����Y��gp,�k�WF�R������_C�R��N@���R�@�ߔ?A�w9���F("iNa-S���Q�o�3tDMLh*�#4k�T/iQ��Y*�G��m����)��8�hBm/�I�,g�ﯖ���Z��}�Cz�q@´��d.����L�ŕ�,��1�Z�܌�: ̪���F+J-'��c�tvJ8��]Q-��b��y �6;*J`r_�d ��'�G ~p��)'�C,�%F��E(��2�k�����lР�z�!�=t ��_�0��f7��� ;�p�|�U �%Ace custom scroller. It is not as feature-rich as plugins such as NiceScroll but it's good enough for most cases. */ (function($ , undefined) { var Ace_Scroll = function(element , _settings) { var self = this; var attrib_values = ace.helper.getAttrSettings(element, $.fn.ace_scroll.defaults); var settings = $.extend({}, $.fn.ace_scroll.defaults, _settings, attrib_values); this.size = 0; this.lock = false; this.lock_anyway = false; this.$element = $(element); this.element = element; var vertical = true; var disabled = false; var active = false; var created = false; var $content_wrap = null, content_wrap = null; var $track = null, $bar = null, track = null, bar = null; var bar_style = null; var bar_size = 0, bar_pos = 0, bar_max_pos = 0, bar_size_2 = 0, move_bar = true; var reset_once = false; var styleClass = ''; var trackFlip = false;//vertical on left or horizontal on top var trackSize = 0; var css_pos, css_size, max_css_size, client_size, scroll_direction, scroll_size; var ratio = 1; var inline_style = false; var mouse_track = false; var mouse_release_target = 'onmouseup' in window ? window : 'html'; var dragEvent = settings.dragEvent || false; var trigger_scroll = _settings.scrollEvent || false; var detached = settings.detached || false;//when detached, hideOnIdle as well? var updatePos = settings.updatePos || false;//default is true var hideOnIdle = settings.hideOnIdle || false; var hideDelay = settings.hideDelay || 1500; var insideTrack = false;//used to hide scroll track when mouse is up and outside of track var observeContent = settings.observeContent || false; var prevContentSize = 0; var is_dirty = true;//to prevent consecutive 'reset' calls this.create = function(_settings) { if(created) return; //if(disabled) return; if(_settings) settings = $.extend({}, $.fn.ace_scroll.defaults, _settings); this.size = parseInt(this.$element.attr('data-size')) || settings.size || 200; vertical = !settings['horizontal']; css_pos = vertical ? 'top' : 'left';//'left' for horizontal css_size = vertical ? 'height' : 'width';//'width' for horizontal max_css_size = vertical ? 'maxHeight' : 'maxWidth'; client_size = vertical ? 'clientHeight' : 'clientWidth'; scroll_direction = vertical ? 'scrollTop' : 'scrollLeft'; scroll_size = vertical ? 'scrollHeight' : 'scrollWidth'; this.$element.addClass('ace-scroll'); if(this.$element.css('position') == 'static') { inline_style = this.element.style.position; this.element.style.position = 'relative'; } else inline_style = false; var scroll_bar = null; if(!detached) { this.$element.wrapInner('
'); this.$element.prepend('
'); } else { scroll_bar = $('
').appendTo('body'); } $content_wrap = this.$element; if(!detached) $content_wrap = this.$element.find('.scroll-content').eq(0); if(!vertical) $content_wrap.wrapInner('
'); content_wrap = $content_wrap.get(0); if(detached) { //set position for detached scrollbar $track = scroll_bar; setTrackPos(); } else $track = this.$element.find('.scroll-track').eq(0); $bar = $track.find('.scroll-bar').eq(0); track = $track.get(0); bar = $bar.get(0); bar_style = bar.style; //add styling classes and horizontalness if(!vertical) $track.addClass('scroll-hz'); if(settings.styleClass) { styleClass = settings.styleClass; $track.addClass(styleClass); trackFlip = !!styleClass.match(/scroll\-left|scroll\-top/); } //calculate size of track! if(trackSize == 0) { $track.show(); getTrackSize(); } $track.hide(); //if(!touchDrag) { $track.on('mousedown', mouse_down_track); $bar.on('mousedown', mouse_down_bar); //} $content_wrap.on('scroll', function() { if(move_bar) { bar_pos = parseInt(Math.round(this[scroll_direction] * ratio)); bar_style[css_pos] = bar_pos + 'px'; } move_bar = false; if(trigger_scroll) this.$element.trigger('scroll', [content_wrap]); }) if(settings.mouseWheel) { this.lock = settings.mouseWheelLock; this.lock_anyway = settings.lockAnyway; //mousewheel library available? this.$element.on(!!$.event.special.mousewheel ? 'mousewheel.ace_scroll' : 'mousewheel.ace_scroll DOMMouseScroll.ace_scroll', function(event) { if(disabled) return; checkContentChanges(true); if(!active) return !self.lock_anyway; if(mouse_track) { mouse_track = false; $('html').off('.ace_scroll') $(mouse_release_target).off('.ace_scroll'); if(dragEvent) self.$element.trigger('drag.end'); } event.deltaY = event.deltaY || 0; var delta = (event.deltaY > 0 || event.originalEvent.detail < 0 || event.originalEvent.wheelDelta > 0) ? 1 : -1 var scrollEnd = false//have we reached the end of scrolling? var clientSize = content_wrap[client_size], scrollAmount = content_wrap[scroll_direction]; if( !self.lock ) { if(delta == -1) scrollEnd = (content_wrap[scroll_size] <= scrollAmount + clientSize); else scrollEnd = (scrollAmount == 0); } self.move_bar(true); //var step = parseInt( Math.min(Math.max(parseInt(clientSize / 8) , 80) , self.size) ) + 1; var step = parseInt(clientSize / 8); if(step < 80) step = 80; if(step > self.size) step = self.size; step += 1; content_wrap[scroll_direction] = scrollAmount - (delta * step); return scrollEnd && !self.lock_anyway; }) } //swipe not available yet var touchDrag = ace.vars['touch'] && 'ace_drag' in $.event.special && settings.touchDrag //&& !settings.touchSwipe; //add drag event for touch devices to scroll if(touchDrag/** || ($.fn.swipe && settings.touchSwipe)*/) { var dir = '', event_name = touchDrag ? 'ace_drag' : 'swipe'; this.$element.on(event_name + '.ace_scroll', function(event) { if(disabled) { event.retval.cancel = true; return; } checkContentChanges(true); if(!active) { event.retval.cancel = this.lock_anyway; return; } dir = event.direction; if( (vertical && (dir == 'up' || dir == 'down')) || (!vertical && (dir == 'left' || dir == 'right')) ) { var distance = vertical ? event.dy : event.dx; if(distance != 0) { if(Math.abs(distance) > 20 && touchDrag) distance = distance * 2; self.move_bar(true); content_wrap[scroll_direction] = content_wrap[scroll_direction] + distance; } } }) } ///////////////////////////////// if(hideOnIdle) { $track.addClass('idle-hide'); } if(observeContent) { $track.on('mouseenter.ace_scroll', function() { insideTrack = true; checkContentChanges(false); }).on('mouseleave.ace_scroll', function() { insideTrack = false; if(mouse_track == false) hideScrollbars(); }); } //some mobile browsers don't have mouseenter this.$element.on('mouseenter.ace_scroll touchstart.ace_scroll', function(e) { //if(ace.vars['old_ie']) return;//IE8 has a problem triggering event two times and strangely wrong values for this.size especially in fullscreen widget! is_dirty = true; if(observeContent) checkContentChanges(true); else if(settings.hoverReset) self.reset(true); $track.addClass('scroll-hover'); }).on('mouseleave.ace_scroll touchend.ace_scroll', function() { $track.removeClass('scroll-hover'); }); // if(!vertical) $content_wrap.children(0).css(css_size, this.size);//the extra wrapper $content_wrap.css(max_css_size , this.size); disabled = false; created = true; } this.is_active = function() { return active; } this.is_enabled = function() { return !disabled; } this.move_bar = function($move) { move_bar = $move; } this.get_track = function() { return track; } this.reset = function(innert_call) { if(disabled) return;// this; if(!created) this.create(); ///////////////////// var size = this.size; if(innert_call && !is_dirty) { return; } is_dirty = false; if(detached) { var border_size = parseInt(Math.round( (parseInt($content_wrap.css('border-top-width')) + parseInt($content_wrap.css('border-bottom-width'))) / 2.5 ));//(2.5 from trial?!) size -= border_size;//only if detached } var content_size = vertical ? content_wrap[scroll_size] : size; if( (vertical && content_size == 0) || (!vertical && this.element.scrollWidth == 0) ) { //element is hidden //this.$element.addClass('scroll-hidden'); $track.removeClass('scroll-active') return;// this; } var available_space = vertical ? size : content_wrap.clientWidth; if(!vertical) $content_wrap.children(0).css(css_size, size);//the extra wrapper $content_wrap.css(max_css_size , this.size); if(content_size > available_space) { active = true; $track.css(css_size, available_space).show(); ratio = parseFloat((available_space / content_size).toFixed(5)) bar_size = parseInt(Math.round(available_space * ratio)); bar_size_2 = parseInt(Math.round(bar_size / 2)); bar_max_pos = available_space - bar_size; bar_pos = parseInt(Math.round(content_wrap[scroll_direction] * ratio)); bar_style[css_size] = bar_size + 'px'; bar_style[css_pos] = bar_pos + 'px'; $track.addClass('scroll-active'); if(trackSize == 0) { getTrackSize(); } if(!reset_once) { //this.$element.removeClass('scroll-hidden'); if(settings.reset) { //reset scrollbar to zero position at first content_wrap[scroll_direction] = 0; bar_style[css_pos] = 0; } reset_once = true; } if(detached) setTrackPos(); } else { active = false; $track.hide(); $track.removeClass('scroll-active'); $content_wrap.css(max_css_size , ''); } return;// this; } this.disable = function() { content_wrap[scroll_direction] = 0; bar_style[css_pos] = 0; disabled = true; active = false; $track.hide(); this.$element.addClass('scroll-disabled'); $track.removeClass('scroll-active'); $content_wrap.css(max_css_size , ''); } this.enable = function() { disabled = false; this.$element.removeClass('scroll-disabled'); } this.destroy = function() { active = false; disabled = false; created = false; this.$element.removeClass('ace-scroll scroll-disabled scroll-active'); this.$element.off('.ace_scroll') if(!detached) { if(!vertical) { //remove the extra wrapping div $content_wrap.find('> div').children().unwrap(); } $content_wrap.children().unwrap(); $content_wrap.remove(); } $track.remove(); if(inline_style !== false) this.element.style.position = inline_style; if(idleTimer != null) { clearTimeout(idleTimer); idleTimer = null; } } this.modify = function(_settings) { if(_settings) settings = $.extend({}, settings, _settings); this.destroy(); this.create(); is_dirty = true; this.reset(true); } this.update = function(_settings) { if(_settings) settings = $.extend({}, settings, _settings); this.size = _settings.size || this.size; this.lock = _settings.mouseWheelLock || this.lock; this.lock_anyway = _settings.lockAnyway || this.lock_anyway; if(_settings.styleClass != undefined) { if(styleClass) $track.removeClass(styleClass); styleClass = _settings.styleClass; if(styleClass) $track.addClass(styleClass); trackFlip = !!styleClass.match(/scroll\-left|scroll\-top/); } } this.start = function() { content_wrap[scroll_direction] = 0; } this.end = function() { content_wrap[scroll_direction] = content_wrap[scroll_size]; } this.hide = function() { $track.hide(); } this.show = function() { $track.show(); } this.update_scroll = function() { move_bar = false; bar_style[css_pos] = bar_pos + 'px'; content_wrap[scroll_direction] = parseInt(Math.round(bar_pos / ratio)); } function mouse_down_track(e) { e.preventDefault(); e.stopPropagation(); var track_offset = $track.offset(); var track_pos = track_offset[css_pos];//top for vertical, left for horizontal var mouse_pos = vertical ? e.pageY : e.pageX; if(mouse_pos > track_pos + bar_pos) { bar_pos = mouse_pos - track_pos - bar_size + bar_size_2; if(bar_pos > bar_max_pos) { bar_pos = bar_max_pos; } } else { bar_pos = mouse_pos - track_pos - bar_size_2; if(bar_pos < 0) bar_pos = 0; } self.update_scroll() } var mouse_pos1 = -1, mouse_pos2 = -1; function mouse_down_bar(e) { e.preventDefault(); e.stopPropagation(); if(vertical) { mouse_pos2 = mouse_pos1 = e.pageY; } else { mouse_pos2 = mouse_pos1 = e.pageX; } mouse_track = true; $('html').off('mousemove.ace_scroll').on('mousemove.ace_scroll', mouse_move_bar) $(mouse_release_target).off('mouseup.ace_scroll').on('mouseup.ace_scroll', mouse_up_bar); $track.addClass('active'); if(dragEvent) self.$element.trigger('drag.start'); } function mouse_move_bar(e) { e.preventDefault(); e.stopPropagation(); if(vertical) { mouse_pos2 = e.pageY; } else { mouse_pos2 = e.pageX; } if(mouse_pos2 - mouse_pos1 + bar_pos > bar_max_pos) { mouse_pos2 = mouse_pos1 + bar_max_pos - bar_pos; } else if(mouse_pos2 - mouse_pos1 + bar_pos < 0) { mouse_pos2 = mouse_pos1 - bar_pos; } bar_pos = bar_pos + (mouse_pos2 - mouse_pos1); mouse_pos1 = mouse_pos2; if(bar_pos < 0) { bar_pos = 0; } else if(bar_pos > bar_max_pos) { bar_pos = bar_max_pos; } self.update_scroll() } function mouse_up_bar(e) { e.preventDefault(); e.stopPropagation(); mouse_track = false; $('html').off('.ace_scroll') $(mouse_release_target).off('.ace_scroll'); $track.removeClass('active'); if(dragEvent) self.$element.trigger('drag.end'); if(active && hideOnIdle && !insideTrack) hideScrollbars(); } var idleTimer = null; var prevCheckTime = 0; function checkContentChanges(hideSoon) { //check if content size has been modified since last time? //and with at least 1s delay var newCheck = +new Date(); if(observeContent && newCheck - prevCheckTime > 1000) { var newSize = content_wrap[scroll_size]; if(prevContentSize != newSize) { prevContentSize = newSize; is_dirty = true; self.reset(true); } prevCheckTime = newCheck; } //show scrollbars when not idle anymore i.e. triggered by mousewheel, dragging, etc if(active && hideOnIdle) { if(idleTimer != null) { clearTimeout(idleTimer); idleTimer = null; } $track.addClass('not-idle'); if(!insideTrack && hideSoon == true) { //hideSoon is false when mouse enters track hideScrollbars(); } } } function hideScrollbars() { if(idleTimer != null) { clearTimeout(idleTimer); idleTimer = null; } idleTimer = setTimeout(function() { idleTimer = null; $track.removeClass('not-idle'); } , hideDelay); } //for detached scrollbars function getTrackSize() { $track.css('visibility', 'hidden').addClass('scroll-hover'); if(vertical) trackSize = parseInt($track.outerWidth()) || 0; else trackSize = parseInt($track.outerHeight()) || 0; $track.css('visibility', '').removeClass('scroll-hover'); } this.track_size = function() { if(trackSize == 0) getTrackSize(); return trackSize; } //for detached scrollbars function setTrackPos() { if(updatePos === false) return; var off = $content_wrap.offset();//because we want it relative to parent not document var left = off.left; var top = off.top; if(vertical) { if(!trackFlip) { left += ($content_wrap.outerWidth() - trackSize) } } else { if(!trackFlip) { top += ($content_wrap.outerHeight() - trackSize) } } if(updatePos === true) $track.css({top: parseInt(top), left: parseInt(left)}); else if(updatePos === 'left') $track.css('left', parseInt(left)); else if(updatePos === 'top') $track.css('top', parseInt(top)); } this.create(); is_dirty = true; this.reset(true); prevContentSize = content_wrap[scroll_size]; return this; } $.fn.ace_scroll = function (option,value) { var retval; var $set = this.each(function () { var $this = $(this); var data = $this.data('ace_scroll'); var options = typeof option === 'object' && option; if (!data) $this.data('ace_scroll', (data = new Ace_Scroll(this, options))); //else if(typeof options == 'object') data['modify'](options); if (typeof option === 'string') retval = data[option](value); }); return (retval === undefined) ? $set : retval; }; $.fn.ace_scroll.defaults = { 'size' : 200, 'horizontal': false, 'mouseWheel': true, 'mouseWheelLock': false, 'lockAnyway': false, 'styleClass' : false, 'observeContent': false, 'hideOnIdle': false, 'hideDelay': 1500, 'hoverReset': true //reset scrollbar sizes on mouse hover because of possible sizing changes , 'reset': false //true= set scrollTop = 0 , 'dragEvent': false , 'touchDrag': true , 'touchSwipe': false , 'scrollEvent': false //trigger scroll event , 'detached': false , 'updatePos': true /** , 'track' : true, 'show' : false, 'dark': false, 'alwaysVisible': false, 'margin': false, 'thin': false, 'position': 'right' */ } /** $(document).on('ace.settings.ace_scroll', function(e, name) { if(name == 'sidebar_collapsed') $('.ace-scroll').scroller('reset'); }); $(window).on('resize.ace_scroll', function() { $('.ace-scroll').scroller('reset'); }); */ })(window.jQuery);