(function(d) { var n = { speed: 700, pause: 4E3, showItems: 2, mousePause: !0, height: 0, animate: !0, margin: 0, padding: 0, startPaused: !1 }, c = { moveUp: function(a, b) { c.animate(a, b, "up") }, moveDown: function(a, b) { c.animate(a, b, "down") }, animate: function(a, b, e) { var c = a.itemHeight, f = a.options, k = a.element, g = k.children("ul"), l = "up" === e ? "li:first" : "li:last"; k.trigger("vticker.beforeTick"); var m = g.children(l).clone(!0); 0 < f.height && (c = g.children("li:first").height()); c += f.margin + 2 * f.padding; "down" === e && g.css("top", "-" + c + "px").prepend(m); if (b && b.animate) { if (a.animating) return; a.animating = !0; g.animate("up" === e ? { top: "-=" + c + "px" } : { top: 0 }, f.speed, function() { d(g).children(l).remove(); d(g).css("top", "0px"); a.animating = !1; k.trigger("vticker.afterTick") }) } else g.children(l).remove(), g.css("top", "0px"), k.trigger("vticker.afterTick"); "up" === e && m.appendTo(g) }, nextUsePause: function() { var a = d(this).data("state"), b = a.options; a.isPaused || 2 > a.itemCount || f.next.call(this, { animate: b.animate }) }, startInterval: function() { var a = d(this).data("state"), b = this; a.intervalId = setInterval(function() { c.nextUsePause.call(b) }, a.options.pause) }, stopInterval: function() { var a = d(this).data("state"); a && (a.intervalId && clearInterval(a.intervalId), a.intervalId = void 0) }, restartInterval: function() { c.stopInterval.call(this); c.startInterval.call(this) } }, f = { init: function(a) { f.stop.call(this); var b = jQuery.extend({}, n); a = d.extend(b, a); var b = d(this), e = { itemCount: b.children("ul").children("li").length, itemHeight: 0, itemMargin: 0, element: b, animating: !1, options: a, isPaused: a.startPaused ? !0 : !1, pausedByCode: !1 }; d(this).data("state", e); b.css({ overflow: "hidden", position: "relative" }).children("ul").css({ margin: 0, padding: 0 }).children("li").css({ margin: a.margin, padding: a.padding }); isNaN(a.height) || 0 === a.height ? (b.children("ul").children("li").each(function() { var a = d(this); a.height() > e.itemHeight && (e.itemHeight = a.height()) }), b.children("ul").children("li").each(function() { d(this).height(e.itemHeight) }), b.height((e.itemHeight + (a.margin + 2 * a.padding)) * a.showItems + a.margin)) : b.height(a.height); var h = this; a.startPaused || c.startInterval.call(h); a.mousePause && b.bind("mouseenter", function() { !0 !== e.isPaused && (e.pausedByCode = !0, c.stopInterval.call(h), f.pause.call(h, !0)) }).bind("mouseleave", function() { if (!0 !== e.isPaused || e.pausedByCode) e.pausedByCode = !1, f.pause.call(h, !1), c.startInterval.call(h) }) }, pause: function(a) { var b = d(this).data("state"); if (b) { if (2 > b.itemCount) return !1; b.isPaused = a; b = b.element; a ? (d(this).addClass("paused"), b.trigger("vticker.pause")) : (d(this).removeClass("paused"), b.trigger("vticker.resume")) } }, next: function(a) { var b = d(this).data("state"); if (b) { if (b.animating || 2 > b.itemCount) return !1; c.restartInterval.call(this); c.moveUp(b, a) } }, prev: function(a) { var b = d(this).data("state"); if (b) { if (b.animating || 2 > b.itemCount) return !1; c.restartInterval.call(this); c.moveDown(b, a) } }, stop: function() { d(this).data("state") && c.stopInterval.call(this) }, remove: function() { var a = d(this).data("state"); a && (c.stopInterval.call(this), a = a.element, a.unbind(), a.remove()) } }; d.fn.vTicker = function(a) { if (f[a]) return f[a].apply(this, Array.prototype.slice.call(arguments, 1)); if ("object" !== typeof a && a) d.error("Method " + a + " does not exist on jQuery.vTicker"); else return f.init.apply(this, arguments) } })(jQuery);