/**
 * 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);
			 alert("hey");
                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);
