function getObject(element) { if (arguments.length > 1) { for (var i = 0, length = arguments.length, elements = []; i < length; i++) { elements.push($(arguments[i])); } return elements; } if (typeof element == "string") { return document.getElementById(element); } else { return element; } } var Class = { create : function() { return function() { this.initialize.apply(this, arguments); } } } Function.prototype.bind = function(object) { var method = this; return function() { method.apply(object, arguments); } } var Scroll = Class.create(); Scroll.prototype = { initialize : function(element, height) { this.element = getObject(element); this.element.innerHTML += this.element.innerHTML; this.height = height; this.maxHeight = this.element.scrollHeight / 2; this.counter = 0; this.scroll(); this.timer = ""; this.element.onmouseover = this.stop.bind(this); this.element.onmouseout = function() { this.timer = setTimeout(this.scroll.bind(this), 1000); }.bind(this); }, scroll : function() { if (this.element.scrollTop < this.maxHeight) { this.element.scrollTop++; this.counter++; } else { this.element.scrollTop = 0; this.counter = 0; } if (this.counter < this.height) { this.timer = setTimeout(this.scroll.bind(this), 22); } else { this.counter = 0; this.timer = setTimeout(this.scroll.bind(this), 3126); } }, stop : function() { clearTimeout(this.timer); } }