//(function (A) {
//    A.jScrollPane = { active: [] }; A.fn.jScrollPane = function (C) {
//        C = A.extend({}, A.fn.jScrollPane.defaults, C); var B = function () { return false }; return this.each(function () {
//            var O = A(this); O.css("overflow", "hidden"); var X = this; if (A(this).parent().is(".jScrollPaneContainer")) { var Ac = C.maintainPosition ? O.position().top : 0; var L = A(this).parent(); var d = L.innerWidth(); var Ad = L.outerHeight(); var M = Ad; A(">.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown", L).remove(); O.css({ top: 0 }) } else {
//                var Ac = 0;
//                this.originalPadding = O.css("paddingTop") + " " + O.css("paddingRight") + " " + O.css("paddingBottom") + " " + O.css("paddingLeft");
//                this.originalSidePaddingTotal = (parseInt(O.css("paddingLeft")) || 0) + (parseInt(O.css("paddingRight")) || 0);
//                var d = O.innerWidth();
//                var Ad = O.innerHeight();
//                var M = Ad;
//                alert(M);
//                O.wrap(A("<div></div>").attr({ className: "jScrollPaneContainer" }).css({ height: Ad + "px", width: d + "px" })); A(document).bind("emchange", function (Ae, Af, p) { O.jScrollPane(C) })
//            } if (C.reinitialiseOnImageLoad) { var N = A.data(X, "jScrollPaneImagesToLoad") || A("img", O); var G = []; if (N.length) { N.each(function (p, Ae) { A(this).bind("load", function () { if (A.inArray(p, G) == -1) { G.push(Ae); N = A.grep(N, function (Ag, Af) { return Ag != Ae }); A.data(X, "jScrollPaneImagesToLoad", N); C.reinitialiseOnImageLoad = false; O.jScrollPane(C) } }).each(function (Af, Ag) { if (this.complete || this.complete === undefined) { this.src = this.src } }) }) } } var o = this.originalSidePaddingTotal; var l = { height: "auto", width: d - C.scrollbarWidth - C.scrollbarMargin - o + "px" }; if (C.scrollbarOnLeft) { l.paddingLeft = C.scrollbarMargin + C.scrollbarWidth + "px" } else { l.paddingRight = C.scrollbarMargin + "px" } O.css(l); var m = O.outerHeight(); var i = Ad / m; if (i < 0.99) { var H = O.parent(); H.append(A("<div></div>").attr({ className: "jScrollPaneTrack" }).css({ width: C.scrollbarWidth + "px" }).append(A("<div></div>").attr({ className: "jScrollPaneDrag" }).css({ width: C.scrollbarWidth + "px" }).append(A("<div></div>").attr({ className: "jScrollPaneDragTop" }).css({ width: C.scrollbarWidth + "px" }), A("<div></div>").attr({ className: "jScrollPaneDragBottom" }).css({ width: C.scrollbarWidth + "px" })))); var z = A(">.jScrollPaneTrack", H); var P = A(">.jScrollPaneTrack .jScrollPaneDrag", H); if (C.showArrows) { var g; var Ab; var S; var r; var j = function () { if (r > 4 || r % 4 == 0) { y(u + Ab * b) } r++ }; var K = function (p) { A("html").unbind("mouseup", K); g.removeClass("jScrollActiveArrowButton"); clearInterval(S) }; var Z = function () { A("html").bind("mouseup", K); g.addClass("jScrollActiveArrowButton"); r = 0; j(); S = setInterval(j, 100) }; H.append(A("<a></a>").attr({ href: "javascript:;", className: "jScrollArrowUp" }).css({ width: C.scrollbarWidth + "px" }).html("Scroll up").bind("mousedown", function () { g = A(this); Ab = -1; Z(); this.blur(); return false }).bind("click", B), A("<a></a>").attr({ href: "javascript:;", className: "jScrollArrowDown" }).css({ width: C.scrollbarWidth + "px" }).html("Scroll down").bind("mousedown", function () { g = A(this); Ab = 1; Z(); this.blur(); return false }).bind("click", B)); var Q = A(">.jScrollArrowUp", H); var J = A(">.jScrollArrowDown", H); if (C.arrowSize) { M = Ad - C.arrowSize - C.arrowSize; z.css({ height: M + "px", top: C.arrowSize + "px" }) } else { var s = Q.height(); C.arrowSize = s; M = Ad - s - J.height(); z.css({ height: M + "px", top: s + "px" }) } } var w = A(this).css({ position: "absolute", overflow: "visible" }); var D; var Y; var b; var u = 0; var V = i * Ad / 2; var a = function (Ae, Ag) { var Af = Ag == "X" ? "Left" : "Top"; return Ae["page" + Ag] || (Ae["client" + Ag] + (document.documentElement["scroll" + Af] || document.body["scroll" + Af])) || 0 }; var f = function () { return false }; var v = function () { n(); D = P.offset(false); D.top -= u; Y = M - P[0].offsetHeight; b = 2 * C.wheelSpeed * Y / m }; var E = function (p) { v(); V = a(p, "Y") - u - D.top; A("html").bind("mouseup", T).bind("mousemove", h); if (A.browser.msie) { A("html").bind("dragstart", f).bind("selectstart", f) } return false }; var T = function () { A("html").unbind("mouseup", T).unbind("mousemove", h); V = i * Ad / 2; if (A.browser.msie) { A("html").unbind("dragstart", f).unbind("selectstart", f) } }; var y = function (Ae) { Ae = Ae < 0 ? 0 : (Ae > Y ? Y : Ae); u = Ae; P.css({ top: Ae + "px" }); var Af = Ae / Y; w.css({ top: ((Ad - m) * Af) + "px" }); O.trigger("scroll"); if (C.showArrows) { Q[Ae == 0 ? "addClass" : "removeClass"]("disabled"); J[Ae == Y ? "addClass" : "removeClass"]("disabled") } }; var h = function (p) { y(a(p, "Y") - D.top - V) }; var q = Math.max(Math.min(i * (Ad - C.arrowSize * 2), C.dragMaxHeight), C.dragMinHeight); P.css({ height: q + "px" }).bind("mousedown", E); var k; var R; var I; var t = function () { if (R > 8 || R % 4 == 0) { y((u - ((u - I) / 2))) } R++ }; var Aa = function () { clearInterval(k); A("html").unbind("mouseup", Aa).unbind("mousemove", e) }; var e = function (p) { I = a(p, "Y") - D.top - V }; var U = function (p) { v(); e(p); R = 0; A("html").bind("mouseup", Aa).bind("mousemove", e); k = setInterval(t, 100); t() }; z.bind("mousedown", U); H.bind("mousewheel", function (Ae, Ag) { v(); n(); var Af = u; y(u - Ag * b); var p = Af != u; return !p }); var F; var W; function c() { var p = (F - u) / C.animateStep; if (p > 1 || p < -1) { y(u + p) } else { y(F); n() } } var n = function () { if (W) { clearInterval(W); delete F } }; var x = function (Af, p) { if (typeof Af == "string") { $e = A(Af, O); if (!$e.length) { return } Af = $e.offset().top - O.offset().top } H.scrollTop(0); n(); var Ae = -Af / (Ad - m) * Y; if (p || !C.animateTo) { y(Ae) } else { F = Ae; W = setInterval(c, C.animateInterval) } }; O[0].scrollTo = x; O[0].scrollBy = function (Ae) { var p = -parseInt(w.css("top")) || 0; x(p + Ae) }; v(); x(-Ac, true); A("*", this).bind("focus", function (Ah) { var Ag = A(this); var Aj = 0; while (Ag[0] != O[0]) { Aj += Ag.position().top; Ag = Ag.offsetParent() } var p = -parseInt(w.css("top")) || 0; var Ai = p + Ad; var Af = Aj > p && Aj < Ai; if (!Af) { var Ae = Aj - C.scrollbarMargin; if (Aj > p) { Ae += A(this).height() + 15 + C.scrollbarMargin - Ad } x(Ae) } }); if (location.hash) { x(location.hash) } A(document).bind("click", function (Ae) { $target = A(Ae.target); if ($target.is("a")) { var p = $target.attr("href"); if (p.substr(0, 1) == "#") { x(p) } } }); A.jScrollPane.active.push(O[0]) } else { O.css({ height: Ad + "px", width: d - this.originalSidePaddingTotal + "px", padding: this.originalPadding }); O.parent().unbind("mousewheel") } 
//        })
//    }; A.fn.jScrollPane.defaults = { scrollbarWidth: 10, scrollbarMargin: 5, wheelSpeed: 18, showArrows: false, arrowSize: 0, animateTo: false, dragMinHeight: 1, dragMaxHeight: 99999, animateInterval: 100, animateStep: 3, maintainPosition: true, scrollbarOnLeft: false, reinitialiseOnImageLoad: false }; A(window).bind("unload", function () { var C = A.jScrollPane.active; for (var B = 0; B < C.length; B++) { C[B].scrollTo = C[B].scrollBy = null } })
//})(jQuery);

(function (A) {
    A.jScrollPane = { active: [] }; A.fn.jScrollPane = function (C) {
        C = A.extend({}, A.fn.jScrollPane.defaults, C);
        var B = function () {
            return false
        };
        return this.each(function () {
            var O = A(this); O.css("overflow", "hidden");
            var X = this;
            if (A(this).parent().is(".jScrollPaneContainer")) {
                var Ac = C.maintainPosition ? O.position().top : 0;
                var L = A(this).parent();
                var d = L.innerWidth();
                var Ad = L.outerHeight();                
                var M = Ad;                

                A(">.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown", L).remove(); O.css({ top: 0 })
            } else {
                var Ac = 0;
                this.originalPadding = O.css("paddingTop") + " " + O.css("paddingRight") + " " + O.css("paddingBottom") + " " + O.css("paddingLeft");
                this.originalSidePaddingTotal = (parseInt(O.css("paddingLeft")) || 0) + (parseInt(O.css("paddingRight")) || 0);
                var d = O.innerWidth();
                var Ad = O.innerHeight();
                var M = Ad;                
                O.wrap(A("<div></div>").attr({ className: "jScrollPaneContainer" }).css({ height: Ad + "px", width: d + "px" }));
                
                A(document).bind("emchange", function (Ae, Af, p) { O.jScrollPane(C) })
            } if (C.reinitialiseOnImageLoad) {
                var N = A.data(X, "jScrollPaneImagesToLoad") || A("img", O); var G = [];
                if (N.length) {
                    N.each(function (p, Ae) {
                        A(this).bind("load", function () {
                            if (A.inArray(p, G) == -1) {
                                G.push(Ae);
                                N = A.grep(N, function (Ag, Af) { return Ag != Ae }); A.data(X, "jScrollPaneImagesToLoad", N); C.reinitialiseOnImageLoad = false; O.jScrollPane(C)
                            }
                        }).each(function (Af, Ag) {
                            if (this.complete || this.complete === undefined) {
                                this.src = this.src
                            }
                        })
                    })
                }
            }
            var o = this.originalSidePaddingTotal;
            var l = { height: "auto", width: d - C.scrollbarWidth - C.scrollbarMargin - o + "px" };
            if (C.scrollbarOnLeft) { l.paddingLeft = C.scrollbarMargin + C.scrollbarWidth + "px" }
            else { l.paddingRight = C.scrollbarMargin + "px" } O.css(l);
            var m = O.outerHeight(); var i = Ad / m; if (i < 0.99) {
                var H = O.parent();
                H.append(A("<div></div>").attr({ className: "jScrollPaneTrack" }).css({ width: C.scrollbarWidth + "px" }).append(A("<div></div>").attr({ className: "jScrollPaneDrag" }).css({ width: C.scrollbarWidth + "px" }).append(A("<div></div>").attr({ className: "jScrollPaneDragTop" }).css({ width: C.scrollbarWidth + "px" }), A("<div></div>").attr({ className: "jScrollPaneDragBottom" }).css({ width: C.scrollbarWidth + "px" }))));
                var z = A(">.jScrollPaneTrack", H);
                var P = A(">.jScrollPaneTrack .jScrollPaneDrag", H); if (C.showArrows) {
                    var g; var Ab; var S; var r;
                    var j = function () { if (r > 4 || r % 4 == 0) { y(u + Ab * b) } r++ };
                    var K = function (p) {
                        A("html").unbind("mouseup", K);
                        g.removeClass("jScrollActiveArrowButton"); clearInterval(S)
                    };
                    var Z = function () {
                        A("html").bind("mouseup", K);
                        g.addClass("jScrollActiveArrowButton"); r = 0; j(); S = setInterval(j, 100)
                    };
                    H.append(A("<a></a>").attr({ href: "javascript:;", className: "jScrollArrowUp" }).css({ width: C.scrollbarWidth + "px" }).html("Scroll up").bind("mousedown", function () { g = A(this); Ab = -1; Z(); this.blur(); return false }).bind("click", B), A("<a></a>").attr({ href: "javascript:;", className: "jScrollArrowDown" }).css({ width: C.scrollbarWidth + "px" }).html("Scroll down").bind("mousedown", function () { g = A(this); Ab = 1; Z(); this.blur(); return false }).bind("click", B));
                    var Q = A(">.jScrollArrowUp", H); var J = A(">.jScrollArrowDown", H);
                    if (C.arrowSize) { M = Ad - C.arrowSize - C.arrowSize; z.css({ height: M + "px", top: C.arrowSize + "px" }) }
                    else {
                        var s = Q.height();
                        C.arrowSize = s;
                        M = Ad - s - J.height();
                        z.css({ height: M + "px", top: s + "px" })
                    }
                } var w = A(this).css({ position: "absolute", overflow: "visible" });
                var D; var Y; var b; var u = 0; var V = i * Ad / 2;
                var a = function (Ae, Ag) {
                    var Af = Ag == "X" ? "Left" : "Top";
                    return Ae["page" + Ag] || (Ae["client" + Ag] + (document.documentElement["scroll" + Af] || document.body["scroll" + Af])) || 0
                }; var f = function () { return false };
                var v = function () {
                    n(); D = P.offset(false); D.top -= u; Y = M - P[0].offsetHeight; b = 2 * C.wheelSpeed * Y / m
                };
                var E = function (p) {
                    v(); V = a(p, "Y") - u - D.top; A("html").bind("mouseup", T).bind("mousemove", h);
                    if (A.browser.msie) {
                        A("html").bind("dragstart", f).bind("selectstart", f)
                    }
                    return false
                };
                var T = function () {
                    A("html").unbind("mouseup", T).unbind("mousemove", h); V = i * Ad / 2;
                    if (A.browser.msie) { A("html").unbind("dragstart", f).unbind("selectstart", f) }
                };
                var y = function (Ae) {
                    Ae = Ae < 0 ? 0 : (Ae > Y ? Y : Ae); u = Ae; P.css({ top: Ae + "px" }); var Af = Ae / Y; w.css({ top: ((Ad - m) * Af) + "px" }); O.trigger("scroll");
                    if (C.showArrows) {
                        Q[Ae == 0 ? "addClass" : "removeClass"]("disabled");
                        J[Ae == Y ? "addClass" : "removeClass"]("disabled")
                    }
                };
                var h = function (p) {
                    y(a(p, "Y") - D.top - V)
                };
                var q = Math.max(Math.min(i * (Ad - C.arrowSize * 2), C.dragMaxHeight), C.dragMinHeight); P.css({ height: q + "px" }).bind("mousedown", E); var k; var R; var I;
                var t = function () {
                    if (R > 8 || R % 4 == 0) { y((u - ((u - I) / 2))) } R++
                };
                var Aa = function () {
                    clearInterval(k); A("html").unbind("mouseup", Aa).unbind("mousemove", e)
                };
                var e = function (p) {
                    I = a(p, "Y") - D.top - V
                };
                var U = function (p) {
                    v(); e(p); R = 0;
                    A("html").bind("mouseup", Aa).bind("mousemove", e);
                    k = setInterval(t, 100); t()
                };
                z.bind("mousedown", U); H.bind("mousewheel", function (Ae, Ag) {
                    v(); n(); var Af = u; y(u - Ag * b);
                    var p = Af != u; return !p
                });
                var F; var W; function c() {
                    var p = (F - u) / C.animateStep; if (p > 1 || p < -1) { y(u + p) }
                    else { y(F); n() }
                }
                var n = function () {
                    if (W) { clearInterval(W); delete F }
                };
                var x = function (Af, p) {
                    if (typeof Af == "string") {
                        $e = A(Af, O);
                        if (!$e.length) { return } Af = $e.offset().top - O.offset().top
                    } H.scrollTop(0); n();
                    var Ae = -Af / (Ad - m) * Y; if (p || !C.animateTo) { y(Ae) }
                    else {
                        F = Ae; W = setInterval(c, C.animateInterval)
                    }
                }; O[0].scrollTo = x; O[0].scrollBy = function (Ae) {
                    var p = -parseInt(w.css("top")) || 0; x(p + Ae)
                }; v(); x(-Ac, true);
                A("*", this).bind("focus", function (Ah) {
                    var Ag = A(this); var Aj = 0; while (Ag[0] != O[0]) { Aj += Ag.position().top; Ag = Ag.offsetParent() }
                    var p = -parseInt(w.css("top")) || 0; var Ai = p + Ad;
                    var Af = Aj > p && Aj < Ai;
                    if (!Af) {
                        var Ae = Aj - C.scrollbarMargin; if (Aj > p) {
                            Ae += A(this).height() + 15 + C.scrollbarMargin - Ad
                        } x(Ae)
                    }
                });
                if (location.hash) { x(location.hash) } A(document).bind("click", function (Ae) {
                    $target = A(Ae.target); if ($target.is("a")) {
                        //var p = $target.attr("href"); if (p.substr(0, 1) == "#") { x(p) }
                    }
                }); A.jScrollPane.active.push(O[0])
            } else {
                O.css({ height: Ad + "px", width: d - this.originalSidePaddingTotal + "px", padding: this.originalPadding }); O.parent().unbind("mousewheel")
            }
        })
    };
    A.fn.jScrollPane.defaults = { scrollbarWidth: 10, scrollbarMargin: 5, wheelSpeed: 18, showArrows: false, arrowSize: 0, animateTo: false, dragMinHeight: 1, dragMaxHeight: 99999, animateInterval: 100, animateStep: 3, maintainPosition: true, scrollbarOnLeft: false, reinitialiseOnImageLoad: false };
    A(window).bind("unload", function () {
        var C = A.jScrollPane.active; for (var B = 0; B < C.length; B++) { C[B].scrollTo = C[B].scrollBy = null }
    })
})(jQuery);
