/*
 * 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);
