// JavaScript file jquery_scroller.js last modified 10/10/26 (function($) { var toggle, scrollSpeed, scroller, accelerate, overButton, mouseBtn, setting, clickInterval, timer = null; $.fn.scroller = function(options) { setting = $.extend({}, $.fn.scroller.defaults, options); return this.each(function(index) { var widget = '
'; $(widget).appendTo(this); toggle = $('#toggle_switch'); scrollSpeed = $('#scroll_speed'); scroller = false; accelerate = false; overButton = false; scrollSpeed.attr('disabled', ''); clickProp = { clickStarted: 0, clicks: 0 }; mouseBtn = { left: false, center: false, right: false }; toggle.click(function() { toggleSwitch(); }); var body = $('body:first'); body.mousedown(function(e) { if (scroller) { e.preventDefault(); clickProp.clicks++; if (clickProp.clickStarted == 0) { clickProp.clickStarted = new Date().getTime(); } if (clickProp.clicks >= 3) { accelerate = true; } } if (jQuery.browser.msie) { if (e.button == 1) mouseBtn.left = true; else if (e.button == 4) mouseBtn.center = true; else if (e.button == 2) mouseBtn.right = true; } else { if (e.button == 0) mouseBtn.left = true; else if (e.button == 1) mouseBtn.center = true; else if (e.button == 2) mouseBtn.right = true; } }); body.mouseup(function(e) { if (scroller) { e.preventDefault(); clickProp.clicks++; if (accelerate) { accelerate = false; clickProp.clickStarted = 0 clickProp.clicks = 0; } } if (jQuery.browser.msie) { if (e.button == 1) mouseBtn.left = false; else if (e.button == 4) mouseBtn.center = false; else if (e.button == 2) mouseBtn.right = false; } else { if (e.button == 0) mouseBtn.left = false; else if (e.button == 1) mouseBtn.center = false; else if (e.button == 2) mouseBtn.right = false; } }); body.mouseover(function(e) { var target = e.target; if (target.id == 'toggle_switch' || target.id == 'scroller' || target.id == 'switch_onoff' || target.id == 'scroll_speed' || target.tagName.toUpperCase() == 'A') overButton = true; else overButton = false; }); body.bind('contextmenu', function(e) { if (scroller) e.preventDefault(); }); recursiveCallback(); }); }; $.fn.scroller.defaults = { clickInterval: 300 }; function recursiveCallback() { if (timer) clearTimeout(timer); if (scroller) pageScroll(); if (clickProp.clickStarted != 0 && new Date().getTime() - clickProp.clickStarted > setting.clickInterval) { clickProp.clickStarted = 0; clickProp.clicks = 0; } timer = setTimeout(recursiveCallback, 10); } function toggleSwitch() { if (!scroller) { scroller = true; toggle.blur(); toggle.find('SPAN').eq(1).css({ color: '#32CD32' }).html('ON'); scrollSpeed.attr('disabled', 'disabled'); } else { scroller = false; toggle.find('SPAN').eq(1).css({ color: '#FF1493' }).html('OFF'); scrollSpeed.attr('disabled', ''); } } function pageScroll() { var selectedSpeed = parseInt(scrollSpeed.val(), 10); if (overButton) return; var speed = !accelerate ? (selectedSpeed + 1) : (selectedSpeed + 1) * 3; if (jQuery.browser.msie) speed = (selectedSpeed + 1) * 3; var windowOffset = $(window).scrollTop(); if (mouseBtn.left) { window.scrollTo(0, windowOffset + speed * 1); } else if (mouseBtn.right) { window.scrollTo(0, windowOffset + speed * -1); } } })(jQuery);