/**
 * jquery.scrollable 1.0.2. Put your HTML scroll.
 *
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch  : March 2008
 * Version : 1.0.2 - Tue Feb 24 2009 10:52:06 GMT-0000 (GMT+00:00)
 */
 /*
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(3($){3 1d(a,c,d,e){6 b=a[c];7($.16(b)){1X{4 b.10(d,e)}1G(14){7(a.1e){1e("2c 25 A."+c+": "+14)}L{20 14;}4 Q}}4 B}6 u=C;3 1o(l,r){6 o=8;7(!u){u=o}6 j=!r.1z;6 q=$(r.1a,l);6 s=0;6 h=l.S(r.17).y(0);6 n=l.S(r.R).y(0);6 m=l.S(r.H).y(0);6 t=l.S(r.P).y(0);6 k=l.S(r.O).y(0);$.1r(o,{1P:3(){4[1,0,1]},1L:3(){4 s},1J:3(){4 r},x:3(){4 o.D().9()},1l:3(){4 M.15(8.x()/r.9)},Z:3(){4 M.15(s/r.9)},1C:3(){4 l},1A:3(){4 q},D:3(){4 q.T()},K:3(i,a,f){a=a||r.1c;7($.16(a)){f=a;a=r.1c}7(i<0){i=0}7(i>o.x()-r.9){4 o}6 e=o.D().y(i);7(!e.1b){4 o}7(1d(r,"1w",o,i)===Q){4 o}7(j){6 b=-(e.28(B)*i);q.1x({24:b},a,r.19,f?3(){f.10(o)}:C)}L{6 c=-(e.23(B)*i);q.1x({22:c},a,r.19,f?3(){f.10(o)}:C)}7(h.1b){6 g=r.w;6 d=M.15(i/r.9);d=M.21(d,h.T().1b-1);h.T().G(g).y(d).v(g)}7(i===0){n.X(t).v(r.E)}L{n.X(t).G(r.E)}7(i>=o.x()-r.9){m.X(k).v(r.E)}L{m.X(k).G(r.E)}u=o;s=i;1d(r,"1v",o,i);4 o},F:3(b,c,d){6 a=s+b;7(r.1u&&a>(o.x()-r.9)){a=0}4 8.K(a,c,d)},H:3(a,b){4 8.F(1,a,b)},R:3(a,b){4 8.F(-1,a,b)},1Z:3(a,b,c){4 8.F(r.9*a,b,c)},N:3(b,a,d){6 e=r.9;6 f=e*b;6 c=f+e>=8.x();7(c){f=8.x()-r.9}4 8.K(f,a,d)},P:3(a,b){4 8.N(8.Z()-1,a,b)},O:3(a,b){4 8.N(8.Z()+1,a,b)},1W:3(a,b){4 8.K(0,a,b)},1V:3(a,b){4 8.K(8.x()-r.9,a,b)},1U:3(){4 13()},z:3(f,c,e){6 d=o.D().y(f);6 g=r.w;7(!d.1T(g)&&(f>=0||f<8.x())){o.D().G(g);d.v(g);6 a=M.1S(r.9/2);6 b=f-a;7(b>o.x()-r.9){b--}7(b!==f){4 8.K(b,c,e)}}4 o}});7($.16($.1R.1s)){l.12("1s.A",3(e,a){6 b=$.1Q.1O?1:-1;o.F(a>0?b:-b,1N);4 Q})}n.v(r.E).z(3(){o.R()});m.z(3(){o.H()});k.z(3(){o.O()});t.v(r.E).z(3(){o.P()});7(r.1q){$(1M).1K("1n.A").12("1n.A",3(a){6 b=u;7(!b){4}7(j&&(a.J==1m||a.J==1I)){b.F(a.J==1m?-1:1);4 a.11()}7(!j&&(a.J==1p||a.J==1H)){b.F(a.J==1p?-1:1);4 a.11()}4 B})}3 13(){h.U(3(){6 b=$(8);7(b.1F(":1k")||b.I("1j")==o){b.1k();b.I("1j",o);1E(6 i=0;i<o.1l();i++){6 c=$("<"+r.1i+"/>").W("V",i).z(3(e){6 a=$(8);a.1D().T().G(r.w);a.v(r.w);o.N(a.W("V"));4 e.11()});7(i===0){c.v(r.w)}b.1B(c)}}L{6 d=b.T();d.U(3(i){6 a=$(8);a.W("V",i);7(i===0){a.v(r.w)}a.z(3(){b.1Y("."+r.w).G(r.w);a.v(r.w);o.N(a.W("V"))})})}});7(r.1h){o.D().U(3(a,b){6 c=$(8);7(!c.I("1t")){c.12("z.A",3(){o.z(a)});c.I("1t",B)}})}7(r.Y){o.D().1g(3(){$(8).v(r.Y)},3(){$(8).G(r.Y)})}4 o}13();6 p=C;3 1f(){p=2h(3(){o.H()},r.18)}7(r.18>0){l.1g(3(){2g(p)},3(){1f()});1f()}}1y.2e.A=3(d){6 c=8.y(2d d==\'2b\'?d:0).I("A");7(c){4 c}6 b={9:5,1z:Q,1h:B,1u:Q,18:0,1c:2a,1q:B,w:\'29\',E:\'27\',Y:C,19:\'2f\',1a:\'.1a\',R:\'.R\',H:\'.H\',P:\'.P\',O:\'.O\',17:\'.17\',1i:\'a\',1w:C,1v:C,1e:B};$.1r(b,d);8.U(3(){6 a=26 1o($(8),b);$(8).I("A",a)});4 8}})(1y);',62,142,'|||function|return||var|if|this|size||||||||||||||||||||||addClass|activeClass|getSize|eq|click|scrollable|true|null|getItems|disabledClass|move|removeClass|next|data|keyCode|seekTo|else|Math|setPage|nextPage|prevPage|false|prev|siblings|children|each|href|attr|add|hoverClass|getPageIndex|call|preventDefault|bind|load|error|ceil|isFunction|navi|interval|easing|items|length|speed|fireEvent|alert|setTimer|hover|clickable|naviItem|me|empty|getPageAmount|37|keypress|Scrollable|38|keyboard|extend|mousewheel|set|loop|onSeek|onBeforeSeek|animate|jQuery|vertical|getItemWrap|append|getRoot|parent|for|is|catch|40|39|getConf|unbind|getIndex|window|50|opera|getVersion|browser|fn|floor|hasClass|reload|end|begin|try|find|movePage|throw|min|top|outerHeight|left|calling|new|disabled|outerWidth|active|400|number|Error|typeof|prototype|swing|clearInterval|setInterval'.split('|'),0,{}))*/
// JavaScript Document
(function ($) {
    function fireEvent(a, c, d, e) {
        var b = a[c];
        if ($.isFunction(b)) {
            try {
                return b.call(d, e);
            } catch (error) {
                if (a.alert) {
                    alert("Error calling scrollable." + c + ": " + error);
                } else {
                    throw error;
                }
                return false;
            }
        }
        return true;
    }

    var u = null;

    function Scrollable(l, r) {
        var o = this;
        if (!u) {
            u = o;
        }
        var j = !r.vertical;
        var q = $(r.items, l);
        var s = 0;
        var h = l.siblings(r.navi).eq(0);
        var n = l.siblings(r.prev).eq(0);
        var m = l.siblings(r.next).eq(0);
        var t = l.siblings(r.prevPage).eq(0);
        var k = l.siblings(r.nextPage).eq(0);
        $.extend(o, {
            getVersion: function () {
                return [1, 0, 1];
            },
            getIndex: function () {
                return s;
            },
            getConf: function () {
                return r;
            },
            getSize: function () {
                return o.getItems().size();
            },
            getPageAmount: function () {
                return Math.ceil(this.getSize() / r.size);
            },
            getPageIndex: function () {
                return Math.ceil(s / r.size);
            },
            getRoot: function () {
                return l;
            },
            getItemWrap: function () {
                return q;
            },
            getItems: function () {
                return q.children();
            },
            seekTo: function (i, a, f) {
                a = a || r.speed;
                if ($.isFunction(a)) {
                    f = a;
                    a = r.speed;
                }
                if (i < 0) {
                    i = 0;
                }
                if (i > o.getSize() - r.size) {
                    return o;
                }
                var e = o.getItems().eq(i);
                if (!e.length) {
                    return o;
                }
                if (fireEvent(r, "onBeforeSeek", o, i) === false) {
                    return o;
                }
                if (j) {
                    var b = -(e.outerWidth(true) * i);
                    q.animate({
                        left: b
                    }, a, r.easing, f ?
                    function () {
                        f.call(o);
                    } : null);
                } else {
                    var c = -(e.outerHeight(true) * i);
                    q.animate({
                        top: c
                    }, a, r.easing, f ?
                    function () {
                        f.call(o);
                    } : null);
                }
                if (h.length) {
                    var g = r.activeClass;
                    var d = Math.ceil(i / r.size);
                    d = Math.min(d, h.children().length - 1);
                    h.children().removeClass(g).eq(d).addClass(g);
                }
                if (i === 0) {
                    n.add(t).addClass(r.disabledClass);
                } else {
                    n.add(t).removeClass(r.disabledClass);
                }
                if (i >= o.getSize() - r.size) {
                    m.add(k).addClass(r.disabledClass);
                } else {
                    m.add(k).removeClass(r.disabledClass);
                }
                u = o;
                s = i;
                fireEvent(r, "onSeek", o, i);
                return o;
            },
            move: function (b, c, d) {
                var a = s + b;
                if (r.loop && a > o.getSize() - r.size) {
                    a = 0;
                }
                return this.seekTo(a, c, d);
            },
            next: function (a, b) {
                return this.move(1, a, b);
            },
            prev: function (a, b) {
                return this.move(-1, a, b);
            },
            movePage: function (a, b, c) {
                return this.move(r.size * a, b, c);
            },
            setPage: function (b, a, d) {
                var e = r.size;
                var f = e * b;
                var c = f + e >= this.getSize();
                if (c) {
                    f = this.getSize() - r.size;
                }
                return this.seekTo(f, a, d);
            },
            prevPage: function (a, b) {
                return this.setPage(this.getPageIndex() - 1, a, b);
            },
            nextPage: function (a, b) {
                return this.setPage(this.getPageIndex() + 1, a, b);
            },
            begin: function (a, b) {
                return this.seekTo(0, a, b);
            },
            end: function (a, b) {
                return this.seekTo(this.getSize() - r.size, a, b);
            },
            reload: function () {
                return load();
            },
            click: function (f, c, e) {
                var d = o.getItems().eq(f);
                var g = r.activeClass;
                if (!d.hasClass(g) && (f >= 0 || f < this.getSize())) {
                    o.getItems().removeClass(g);
                    d.addClass(g);
                    var a = Math.floor(r.size / 2);
                    var b = f - a;
                    if (b > o.getSize() - r.size) {
                        b--;
                    }
                    if (b !== f) {
                        return this.seekTo(b, c, e);
                    }
                }
                return o;
            }
        });
        if ($.isFunction($.fn.mousewheel)) {
            l.bind("mousewheel.scrollable", function (e, a) {
                var b = $.browser.opera ? 1 : - 1;
                o.move(a > 0 ? b : - b, 50);
                return false;
            });
        }
        n.addClass(r.disabledClass).click(function () {
            o.prev();
        });
        m.click(function () {
            o.next();
        });
        k.click(function () {
            o.nextPage();
        });
        t.addClass(r.disabledClass).click(function () {
            o.prevPage();
        });
        if (r.keyboard) {
            $(window).unbind("keypress.scrollable").bind("keypress.scrollable", function (a) {
                var b = u;
                if (!b) {
                    return;
                }
                if (j && (a.keyCode == 37 || a.keyCode == 39)) {
                    b.move(a.keyCode == 37 ? - 1 : 1);
                    return a.preventDefault();
                }
                if (!j && (a.keyCode == 38 || a.keyCode == 40)) {
                    b.move(a.keyCode == 38 ? - 1 : 1);
                    return a.preventDefault();
                }
                return true;
            });
        }

        function load() {
            h.each(function () {
                var b = $(this);
                if (b.is(":empty") || b.data("me") == o) {
                    b.empty();
                    b.data("me", o);
                    for (var i = 0; i < o.getPageAmount(); i++) {
                        var c = $("<" + r.naviItem + "/>").attr("href", i).click(function (e) {
                            var a = $(this);
                            a.parent().children().removeClass(r.activeClass);
                            a.addClass(r.activeClass);
                            o.setPage(a.attr("href"));
                            return e.preventDefault();
                        });
                        if (i === 0) {
                            c.addClass(r.activeClass);
                        }
                        b.append(c);
                    }
                } else {
                    var d = b.children();
                    d.each(function (i) {
                        var a = $(this);
                        a.attr("href", i);
                        if (i === 0) {
                            a.addClass(r.activeClass);
                        }
                        a.click(function () {
                            b.find("." + r.activeClass).removeClass(r.activeClass);
                            a.addClass(r.activeClass);
                            o.setPage(a.attr("href"));
                        });
                    });
                }
            });
            if (r.clickable) {
                o.getItems().each(function (a, b) {
                    var c = $(this);
                    if (!c.data("set")) {
                        c.bind("click.scrollable", function () {
                            o.click(a);
                        });
                        c.data("set", true);
                    }
                });
            }
            if (r.hoverClass) {
                o.getItems().hover(function () {
                    $(this).addClass(r.hoverClass);
                }, function () {
                    $(this).removeClass(r.hoverClass);
                });
            }
            return o;
        }

        load();
        var p = null;

        function setTimer() {
            p = setInterval(function () {
                o.next();
            }, r.interval);
        }

        if (r.interval > 0) {
            l.hover(function () {
                clearInterval(p);
            }, function () {
                setTimer();
            });
            setTimer();
        }
    }

    jQuery.prototype.scrollable = function (d) {
        var c = this.eq(typeof d == "number" ? d : 0).data("scrollable");
        if (c) {
            return c;
        }
        var b = {
            size: 7,
            vertical: false,
            clickable: true,
            loop: false,
            interval: 0,
            speed: 400,
            keyboard: true,
            activeClass: "active",
            disabledClass: "disabled",
            hoverClass: null,
            easing: "swing",
            items: ".items",
            prev: ".prev",
            next: ".next",
            prevPage: ".prevPage",
            nextPage: ".nextPage",
            navi: ".navi",
            naviItem: "a",
            onBeforeSeek: null,
            onSeek: null,
            alert: true
        };
        $.extend(b, d);
        this.each(function () {
            var a = new Scrollable($(this), b);
            $(this).data("scrollable", a);
        });
        return this;
    };
}(jQuery));