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