﻿/*
* jQuery.SerialScroll - Animated scrolling of series
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 06/14/2009
* @author Ariel Flesler
* @version 1.2.2
* http://flesler.blogspot.com/2008/02/jqueryserialscroll.html
*/
; (function(a) { var b = a.serialScroll = function(c) { return a(window).serialScroll(c) }; b.defaults = { duration: 1e3, axis: "x", event: "click", start: 0, step: 1, lock: !0, cycle: !0, constant: !0 }; a.fn.serialScroll = function(c) { return this.each(function() { var t = a.extend({}, b.defaults, c), s = t.event, i = t.step, r = t.lazy, e = t.target ? this : document, u = a(t.target || this, e), p = u[0], m = t.items, h = t.start, g = t.interval, k = t.navigation, l; if (!r) { m = d() } if (t.force) { f({}, h) } a(t.prev || [], e).bind(s, -i, q); a(t.next || [], e).bind(s, i, q); if (!p.ssbound) { u.bind("prev.serialScroll", -i, q).bind("next.serialScroll", i, q).bind("goto.serialScroll", f) } if (g) { u.bind("start.serialScroll", function(v) { if (!g) { o(); g = !0; n() } }).bind("stop.serialScroll", function() { o(); g = !1 }) } u.bind("notify.serialScroll", function(x, w) { var v = j(w); if (v > -1) { h = v } }); p.ssbound = !0; if (t.jump) { (r ? u : d()).bind(s, function(v) { f(v, j(v.target)) }) } if (k) { k = a(k, e).bind(s, function(v) { v.data = Math.round(d().length / k.length) * k.index(this); f(v, this) }) } function q(v) { v.data += h; f(v, this) } function f(B, z) { if (!isNaN(z)) { B.data = z; z = p } var C = B.data, v, D = B.type, A = t.exclude ? d().slice(0, -t.exclude) : d(), y = A.length, w = A[C], x = t.duration; if (D) { B.preventDefault() } if (g) { o(); l = setTimeout(n, t.interval) } if (!w) { v = C < 0 ? 0 : y - 1; if (h != v) { C = v } else { if (!t.cycle) { return } else { C = y - v - 1 } } w = A[C] } if (!w || t.lock && u.is(":animated") || D && t.onBefore && t.onBefore(B, w, u, d(), C) === !1) { return } if (t.stop) { u.queue("fx", []).stop() } if (t.constant) { x = Math.abs(x / i * (h - C)) } u.scrollTo(w, x, t).trigger("notify.serialScroll", [C]) } function n() { u.trigger("next.serialScroll") } function o() { clearTimeout(l) } function d() { return a(m, p) } function j(w) { if (!isNaN(w)) { return w } var x = d(), v; while ((v = x.index(w)) == -1 && w != p) { w = w.parentNode } return v } }) } })(jQuery);
