/*
 * jquery.tools 1.1.2 - The missing UI library for the Web
 * 
 * [tools.scrollable-1.1.2, tools.scrollable.circular-0.5.1, tools.scrollable.autoscroll-1.0.1, tools.scrollable.navigator-1.0.2]
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 * 
 * -----
 * 
 * File generated: Thu Oct 08 14:36:48 GMT+00:00 2009
 */
(function(b) {
    b.tools = b.tools || {};
    b.tools.scrollable = {version:"1.1.2",conf:{size:5,vertical:false,speed:400,keyboard:true,keyboardSteps:null,disabledClass:"disabled",hoverClass:null,clickable:true,activeClass:"active",easing:"swing",loop:false,items:".items",item:null,prev:".prev",next:".next",prevPage:".prevPage",nextPage:".nextPage",api:false}};
    var c;

    function a(o, m) {
        var r = this,p = b(this),d = !m.vertical,e = o.children(),k = 0,i;
        if (!c) {
            c = r
        }
        b.each(m, function(s, t) {
            if (b.isFunction(t)) {
                p.bind(s, t)
            }
        });
        if (e.length > 1) {
            e = b(m.items, o)
        }
        function l(t) {
            var s = b(t);
            return m.globalNav ? s : o.parent().find(t)
        }

        o.data("finder", l);
        var f = l(m.prev),h = l(m.next),g = l(m.prevPage),n = l(m.nextPage);
        b.extend(r, {getIndex:function() {
            return k
        },getClickIndex:function() {
            var s = r.getItems();
            return s.index(s.filter("." + m.activeClass))
        },getConf:function() {
            return m
        },getSize:function() {
            return r.getItems().size()
        },getPageAmount:function() {
            return Math.ceil(this.getSize() / m.size)
        },getPageIndex:function() {
            return Math.ceil(k / m.size)
        },getNaviButtons:function() {
            return f.add(h).add(g).add(n)
        },getRoot:function() {
            return o
        },getItemWrap:function() {
            return e
        },getItems:function() {
            return e.children(m.item)
        },getVisibleItems:function() {
            return r.getItems().slice(k, k + m.size)
        },seekTo:function(s, w, t) {
            if (s < 0) {
                s = 0
            }
            if (k === s) {
                return r
            }
            if (b.isFunction(w)) {
                t = w
            }
            if (s > r.getSize() - m.size) {
                return m.loop ? r.begin() : this.end()
            }
            var u = r.getItems().eq(s);
            if (!u.length) {
                return r
            }
            var v = b.Event("onBeforeSeek");
            p.trigger(v, [s]);
            if (v.isDefaultPrevented()) {
                return r
            }
            if (w === undefined || b.isFunction(w)) {
                w = m.speed
            }
            function x() {
                if (t) {
                    t.call(r, s)
                }
                p.trigger("onSeek", [s])
            }

            if (d) {
                e.animate({left:-u.position().left}, w, m.easing, x)
            } else {
                e.animate({top:-u.position().top}, w, m.easing, x)
            }
            c = r;
            k = s;
            v = b.Event("onStart");
            p.trigger(v, [s]);
            if (v.isDefaultPrevented()) {
                return r
            }
            f.add(g).toggleClass(m.disabledClass, s === 0);
            h.add(n).toggleClass(m.disabledClass, s >= r.getSize() - m.size);
            return r
        },move:function(u, t, s) {
            i = u > 0;
            return this.seekTo(k + u, t, s)
        },next:function(t, s) {
            return this.move(1, t, s)
        },prev:function(t, s) {
            return this.move(-1, t, s)
        },movePage:function(w, v, u) {
            i = w > 0;
            var s = m.size * w;
            var t = k % m.size;
            if (t > 0) {
                s += (w > 0 ? -t : m.size - t)
            }
            return this.move(s, v, u)
        },prevPage:function(t, s) {
            return this.movePage(-1, t, s)
        },nextPage:function(t, s) {
            return this.movePage(1, t, s)
        },setPage:function(t, u, s) {
            return this.seekTo(t * m.size, u, s)
        },begin:function(t, s) {
            i = false;
            return this.seekTo(0, t, s)
        },end:function(t, s) {
            i = true;
            var u = this.getSize() - m.size;
            return u > 0 ? this.seekTo(u, t, s) : r
        },reload:function() {
            p.trigger("onReload");
            return r
        },focus:function() {
            c = r;
            return r
        },click:function(u) {
            var v = r.getItems().eq(u),s = m.activeClass,t = m.size;
            if (u < 0 || u >= r.getSize()) {
                return r
            }
            if (t == 1) {
                if (m.loop) {
                    return r.next()
                }
                if (u === 0 || u == r.getSize() - 1) {
                    i = (i === undefined) ? true : !i
                }
                return i === false ? r.prev() : r.next()
            }
            if (t == 2) {
                if (u == k) {
                    u--
                }
                r.getItems().removeClass(s);
                v.addClass(s);
                return r.seekTo(u, time, fn)
            }
            if (!v.hasClass(s)) {
                r.getItems().removeClass(s);
                v.addClass(s);
                var x = Math.floor(t / 2);
                var w = u - x;
                if (w > r.getSize() - t) {
                    w = r.getSize() - t
                }
                if (w !== u) {
                    return r.seekTo(w)
                }
            }
            return r
        },bind:function(s, t) {
            p.bind(s, t);
            return r
        },unbind:function(s) {
            p.unbind(s);
            return r
        }});
        b.each("onBeforeSeek,onStart,onSeek,onReload".split(","), function(s, t) {
            r[t] = function(u) {
                return r.bind(t, u)
            }
        });
        f.addClass(m.disabledClass).click(function() {
            r.prev()
        });
        h.click(function() {
            r.next()
        });
        n.click(function() {
            r.nextPage()
        });
        if (r.getSize() < m.size) {
            h.add(n).addClass(m.disabledClass)
        }
        g.addClass(m.disabledClass).click(function() {
            r.prevPage()
        });
        var j = m.hoverClass,q = "keydown." + Math.random().toString().substring(10);
        r.onReload(function() {
            if (j) {
                r.getItems().hover(function() {
                    b(this).addClass(j)
                }, function() {
                    b(this).removeClass(j)
                })
            }
            if (m.clickable) {
                r.getItems().each(function(s) {
                    b(this).unbind("click.scrollable").bind("click.scrollable", function(t) {
                        if (b(t.target).is("a")) {
                            return
                        }
                        return r.click(s)
                    })
                })
            }
            if (m.keyboard) {
                b(document).unbind(q).bind(q, function(t) {
                    if (t.altKey || t.ctrlKey) {
                        return
                    }
                    if (m.keyboard != "static" && c != r) {
                        return
                    }
                    var u = m.keyboardSteps;
                    if (d && (t.keyCode == 37 || t.keyCode == 39)) {
                        r.move(t.keyCode == 37 ? -u : u);
                        return t.preventDefault()
                    }
                    if (!d && (t.keyCode == 38 || t.keyCode == 40)) {
                        r.move(t.keyCode == 38 ? -u : u);
                        return t.preventDefault()
                    }
                    return true
                })
            } else {
                b(document).unbind(q)
            }
        });
        r.reload()
    }

    b.fn.scrollable = function(d) {
        var e = this.eq(typeof d == "number" ? d : 0).data("scrollable");
        if (e) {
            return e
        }
        var f = b.extend({}, b.tools.scrollable.conf);
        d = b.extend(f, d);
        d.keyboardSteps = d.keyboardSteps || d.size;
        this.each(function() {
            e = new a(b(this), d);
            b(this).data("scrollable", e)
        });
        return d.api ? e : this
    }
})(jQuery);
(function(b) {
    var a = b.tools.scrollable;
    a.plugins = a.plugins || {};
    a.plugins.circular = {version:"0.5.1",conf:{api:false,clonedClass:"cloned"}};
    b.fn.circular = function(e) {
        var d = b.extend({}, a.plugins.circular.conf),c;
        b.extend(d, e);
        this.each(function() {
            var i = b(this).scrollable(),n = i.getItems(),k = i.getConf(),f = i.getItemWrap(),j = 0;
            if (i) {
                c = i
            }
            if (n.length < k.size) {
                return false
            }
            n.slice(0, k.size).each(function(o) {
                b(this).clone().appendTo(f).click(
                    function() {
                        i.click(n.length + o)
                    }).addClass(d.clonedClass)
            });
            var l = b.makeArray(n.slice(-k.size)).reverse();
            b(l).each(function(o) {
                b(this).clone().prependTo(f).click(
                    function() {
                        i.click(-o - 1)
                    }).addClass(d.clonedClass)
            });
            var m = f.children(k.item);
            var h = k.hoverClass;
            if (h) {
                m.hover(function() {
                    b(this).addClass(h)
                }, function() {
                    b(this).removeClass(h)
                })
            }
            function g(o) {
                var p = m.eq(o);
                if (k.vertical) {
                    f.css({top:-p.position().top})
                } else {
                    f.css({left:-p.position().left})
                }
            }

            g(k.size);
            b.extend(i, {move:function(s, r, p, q) {
                var u = j + s + k.size;
                var t = u > i.getSize() - k.size;
                if (u <= 0 || t) {
                    var o = j + k.size + (t ? -n.length : n.length);
                    g(o);
                    u = o + s
                }
                if (q) {
                    m.removeClass(k.activeClass).eq(u + Math.floor(k.size / 2)).addClass(k.activeClass)
                }
                if (u === j + k.size) {
                    return self
                }
                return i.seekTo(u, r, p)
            },begin:function(p, o) {
                return this.seekTo(k.size, p, o)
            },end:function(p, o) {
                return this.seekTo(n.length, p, o)
            },click:function(p, r, q) {
                if (!k.clickable) {
                    return self
                }
                if (k.size == 1) {
                    return this.next()
                }
                var s = p - j,o = k.activeClass;
                s -= Math.floor(k.size / 2);
                return this.move(s, r, q, true)
            },getIndex:function() {
                return j
            },setPage:function(p, q, o) {
                return this.seekTo(p * k.size + k.size, q, o)
            },getPageAmount:function() {
                return Math.ceil(n.length / k.size)
            },getPageIndex:function() {
                if (j < 0) {
                    return this.getPageAmount() - 1
                }
                if (j >= n.length) {
                    return 0
                }
                var o = (j + k.size) / k.size - 1;
                return o
            },getVisibleItems:function() {
                var o = j + k.size;
                return m.slice(o, o + k.size)
            }});
            i.onStart(function(p, o) {
                j = o - k.size;
                return false
            });
            i.getNaviButtons().removeClass(k.disabledClass)
        });
        return d.api ? c : this
    }
})(jQuery);
(function(b) {
    var a = b.tools.scrollable;
    a.plugins = a.plugins || {};
    a.plugins.autoscroll = {version:"1.0.1",conf:{autoplay:true,interval:3000,autopause:true,steps:1,api:false}};
    b.fn.autoscroll = function(d) {
        if (typeof d == "number") {
            d = {interval:d}
        }
        var e = b.extend({}, a.plugins.autoscroll.conf),c;
        b.extend(e, d);
        this.each(function() {
            var g = b(this).scrollable();
            if (g) {
                c = g
            }
            var i,f,h = true;
            g.play = function() {
                if (i) {
                    return
                }
                h = false;
                i = setInterval(function() {
                    g.move(e.steps)
                }, e.interval);
                g.move(e.steps)
            };
            g.pause = function() {
                i = clearInterval(i)
            };
            g.stop = function() {
                g.pause();
                h = true
            };
            if (e.autopause) {
                g.getRoot().add(g.getNaviButtons()).hover(function() {
                    g.pause();
                    clearInterval(f)
                }, function() {
                    if (!h) {
                        f = setTimeout(g.play, e.interval)
                    }
                })
            }
            if (e.autoplay) {
                setTimeout(g.play, e.interval)
            }
        });
        return e.api ? c : this
    }
})(jQuery);
(function(b) {
    var a = b.tools.scrollable;
    a.plugins = a.plugins || {};
    a.plugins.navigator = {version:"1.0.2",conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,api:false,idPrefix:null}};
    b.fn.navigator = function(d) {
        var e = b.extend({}, a.plugins.navigator.conf),c;
        if (typeof d == "string") {
            d = {navi:d}
        }
        d = b.extend(e, d);
        this.each(function() {
            var i = b(this).scrollable(),f = i.getRoot(),l = f.data("finder").call(null, d.navi),g = null,k = i.getNaviButtons();
            if (i) {
                c = i
            }
            i.getNaviButtons = function() {
                return k.add(l)
            };
            function j() {
                if (!l.children().length || l.data("navi") == i) {
                    l.empty();
                    l.data("navi", i);
                    for (var m = 0; m < i.getPageAmount(); m++) {
                        l.append(b("<" + (d.naviItem || "a") + "/>"))
                    }
                    g = l.children().each(function(n) {
                        var o = b(this);
                        o.click(function(p) {
                            i.setPage(n);
                            return p.preventDefault()
                        });
                        if (d.indexed) {
                            o.text(n)
                        }
                        if (d.idPrefix) {
                            o.attr("id", d.idPrefix + n)
                        }
                    })
                } else {
                    g = d.naviItem ? l.find(d.naviItem) : l.children();
                    g.each(function(n) {
                        var o = b(this);
                        o.click(function(p) {
                            i.setPage(n);
                            return p.preventDefault()
                        })
                    })
                }
                g.eq(0).addClass(d.activeClass)
            }

            i.onStart(function(o, n) {
                var m = d.activeClass;
                g.removeClass(m).eq(i.getPageIndex()).addClass(m)
            });
            i.onReload(function() {
                j()
            });
            j();
            var h = g.filter("[href=" + location.hash + "]");
            if (h.length) {
                i.move(g.index(h))
            }
        });
        return d.api ? c : this
    }
})(jQuery);

