var _jscr_originalSizes = new Array();
var _jscr_differenceSizes = new Array();
var _jscr_previousWindowSize = new Array();
var _jscr_originalPercentages = new Array();
var _jscr_intervals = new Array();
var _jscr_trackInt = new Array();
var _jscr_originalPos = new Array();
var _jscr_globalProperties = new Array();
jQuery.jScrollHorizontalPane = {
    active: []
};
jQuery.fn.jScrollHorizontalPane = function(a) {
    a = jQuery.extend({
        scrollbarHeight: 10,
        scrollbarMargin: 5,
        wheelSpeed: 18,
        showArrows: false,
        arrowSize: 10,
        animateTo: false,
        dragMinWidth: 1,
        dragMaxWidth: 99999,
        animateInterval: 100,
        animateStep: 3,
        maintainPosition: true,
        resize: true,
        minimumWidth: 200,
        reset: false
    }, a);
    return this.each(function() {
        this.testProperty = "blast";
        if (a.reset == true) {
            jQuery.fn.jScrollHorizontalPane.reset()
        }
        var m = jQuery(this);
        var G = 0;
        var S = false;
        var M = m.attr("id");
        var v = _jscr_previousWindowSize[M];
        _jscr_originalPos[M] = -1;
        _jscr_globalProperties[M] = a;
        _jscr_previousWindowSize[M] = jQuery(window).width();
        if (_jscr_originalSizes[M] == undefined) {
            if ((jQuery.browser.msie) && (parseInt(jQuery.browser.version) == 6)) {
                var W = parseInt(m.outerWidth()) - parseInt(m.offset().left);
                _jscr_differenceSizes[M] = m.offset().left / jQuery(window).width()
            } else {
                var W = m.outerWidth();
                _jscr_differenceSizes[M] = m.position().left / jQuery(window).width()
            }
            percentageWidth = (W / jQuery(window).width());
            _jscr_originalPercentages[M] = percentageWidth;
            _jscr_originalSizes[M] = jQuery(window).width()
        } else {
            percentageWidth = _jscr_originalPercentages[M];
            diff = _jscr_differenceSizes[M] - ((m.offset().left + _jscr_originalPos[M]) / jQuery(window).width());
            percentageWidth = percentageWidth + diff
        }
        var i = new Array();
        _jscr_intervals = new Array();
        i[0] = 0;
        _jscr_intervals[0] = 0;
        margin = m.position().left;
        offset = 1;
        if (margin < 0) {
            margin = 0
        }
        jQuery(".scroll-interval", m).each(function(p, am) {
            pos = jQuery(am).position().left - margin;
            if (pos != 0) {
                _jscr_intervals[p + offset] = pos
            } else {
                offset--
            }
        });
        if (_jscr_intervals.length <= 1) {
            _jscr_intervals = new Array()
        }
        if (jQuery(this).parent().is(".jScrollPaneContainer")) {
            var ak = a.maintainPosition ? m.offset({
                relativeTo: jQuery(this).parent()[0]
            }).left : 0;
            var k = jQuery(this).parent();
            var D = k.outerWidth();
            var al = k.innerHeight();
            var U = m.offset().left + _jscr_originalPos[M] + D;
            if ((v != jQuery(window).width()) && ((U > jQuery(window).width()) || (v < jQuery(window).width())) && (a.resize == true)) {
                if (jQuery(window).width() >= _jscr_originalSizes[M]) {
                    D = (jQuery(window).width() * percentageWidth)
                } else {
                    D = jQuery(window).width() - (m.offset().left + _jscr_originalPos[M]) - 10
                }
                if (D < a.minimumWidth) {
                    D = a.minimumWidth
                }
                jQuery(this).parent().css({
                    height: al + "px",
                    width: D + "px"
                })
            }
            var E = D;
            if (k.unmousewheel) {
                if (jQuery.browser.opera) {
                    k.unbind("mousewheel", fn = function() {})
                } else {
                    k.unmousewheel()
                }
            }
            jQuery(">.jScrollPaneTrack, >.jScrollArrowLeft, >.jScrollArrowRight", k).remove();
            m.css({
                left: 0
            });
            _jscr_originalPos[M] = -1
        } else {
            var ak = 0;
            this.originalPadding = m.css("paddingTop") + " " + m.css("paddingRight") + " " + m.css("paddingBottom") + " " + m.css("paddingLeft");
            this.originalSidePaddingTotal = (parseInt(m.css("paddingLeft")) || 0) + (parseInt(m.css("paddingRight")) || 0);
            var D = m.outerWidth();
            var U = m.offset().left + _jscr_originalPos[M] + D;
            if ((U) > jQuery(window).width()) {
                D = jQuery(window).width() * percentageWidth
            }
            if (D < a.minimumWidth) {
                D = a.minimumWidth
            }
            var al = m.innerHeight();
            var E = D;
            m.wrap(jQuery("<div></div>").attr({
                className: "jScrollPaneContainer"
            }).css({
                height: al + "px",
                width: D + "px"
            }));
            jQuery(document).bind("emchange", function(am, an, p) {
                m.jScrollHorizontalPane(a)
            })
        }
        var V = this.originalSidePaddingTotal;
        m.css({
            height: al - a.scrollbarHeight - V + "px",
            width: "auto",
            paddingRight: a.scrollbarMargin + "px"
        });
        var Z = m.outerWidth();
        if (jQuery.browser.msie || jQuery.browser.opera || jQuery.browser.safari) {
            var e = 0;
            m.children().each(function(p, am) {
                if (jQuery(am).outerWidth() > e) {
                    e = jQuery(am).outerWidth()
                }
            });
            if (e > Z) {
                Z = e
            }
        }
        var O = D / Z;
        var ab = new Array();
        if (O < 0.99) {
            var f = m.parent();
            f.append(jQuery("<div></div>").attr({
                className: "jScrollPaneTrack"
            }).css({
                height: a.scrollbarHeight + "px"
            }).append(jQuery("<div></div>").attr({
                className: "jScrollPaneDrag"
            }).css({
                height: a.scrollbarHeight + "px"
            }).append(jQuery("<div></div>").attr({
                className: "jScrollPaneDragLeft"
            }).css({
                height: a.scrollbarHeight + "px"
            }), jQuery("<div></div>").attr({
                className: "jScrollPaneDragRight"
            }).css({
                height: a.scrollbarHeight + "px"
            }))));
            var ah = jQuery(">.jScrollPaneTrack", f);
            for (inter in _jscr_intervals) {
                if (a.showArrows == true) {
                    scrollOffset = a.arrowSize
                } else {
                    scrollOffset = 0
                }
                intervalTrackPos = _jscr_intervals[inter] / Z * ah.width() - (scrollOffset);
                ab[inter] = intervalTrackPos;
                if (ab[inter - 1] != undefined) {
                    i[inter - 1] = (ab[inter] + ab[inter - 1]) / 2
                }
                if (inter != 0) {
                    interObj = jQuery("<div>|</div>").attr({
                        className: "jScrollIntervalTrack"
                    }).css({
                        left: intervalTrackPos + "px"
                    });
                    ah.append(interObj)
                }
            }
            var n = jQuery(">.jScrollPaneTrack .jScrollPaneDrag", f);
            if (a.showArrows) {
                var I;
                var aj;
                var r;
                var Y;
                var P = function() {
                    if (Y > 4 || Y % 4 == 0) {
                        ag(ad + aj * B)
                    }
                    Y++
                };
                var j = function(p) {
                    jQuery("body").unbind("mouseup", j);
                    I.removeClass("jScrollActiveArrowButton");
                    clearInterval(r);
                    R = true;
                    w()
                };
                var A = function() {
                    jQuery("body").bind("mouseup", j);
                    I.addClass("jScrollActiveArrowButton");
                    Y = 0;
                    P();
                    r = setInterval(P, 100)
                };
                f.append(jQuery("<a></a>").attr({
                    href: "javascript:;",
                    className: "jScrollArrowLeft"
                }).css({
                    width: a.arrowSize + "px"
                }).html("Scroll Left").bind("mousedown", function() {
                    I = jQuery(this);
                    aj = -1;
                    A();
                    this.blur();
                    return false
                }), jQuery("<a></a>").attr({
                    href: "javascript:;",
                    className: "jScrollArrowRight"
                }).css({
                    width: a.arrowSize + "px"
                }).html("Scroll Right").bind("mousedown", function() {
                    I = jQuery(this);
                    aj = 1;
                    A();
                    this.blur();
                    return false
                }));
                if (a.arrowSize) {
                    E = D - a.arrowSize - a.arrowSize;
                    ah.css({
                        width: E + "px",
                        left: a.arrowSize + "px"
                    })
                } else {
                    var J = jQuery(">.jScrollArrowLeft", f).width();
                    a.arrowSize = J;
                    E = D - J - jQuery(">.jScrollArrowRight", f).width();
                    ah.css({
                        width: E + "px",
                        left: J + "px"
                    })
                }
            }
            var ae = jQuery(this).css({
                position: "absolute",
                overflow: "visible"
            });
            var b;
            var y;
            var B;
            var ad = 0;
            var u = O * D / 2;
            var z = function(am, ao) {
                var an = ao == "X" ? "Left" : "Bottom";
                return am["page" + ao] || (am["client" + ao] + (document.documentElement["scroll" + an] || document.body["scroll" + an])) || 0
            };
            var H = function() {
                return false
            };
            var g = 0;
            var l = 1;
            var R = false;
            var K = false;
            _jscr_trackInt[M] = -1;
            var ac = function() {
                T();
                b = n.offset(false);
                b.left -= ad;
                y = E - n[0].offsetWidth;
                B = 2 * a.wheelSpeed * y / Z
            };
            var c = function(p) {
                ac();
                u = z(p, "X") - ad - b.left;
                jQuery("body").bind("mouseup", s).bind("mousemove", L);
                if (jQuery.browser.msie) {
                    jQuery("body").bind("dragstart", H).bind("selectstart", H)
                }
                return false
            };
            var s = function() {
                jQuery("body").unbind("mouseup", s).unbind("mousemove", L);
                u = O * D / 2;
                w();
                if (jQuery.browser.msie) {
                    jQuery("body").unbind("dragstart", H).unbind("selectstart", H)
                }
            };
            var ag = function(am) {
                N(ad, am);
                am = am < 0 ? 0 : (am > y ? y : am);
                ad = am;
                n.css({
                    left: am + "px"
                });
                var an = am / y;
                _jscr_originalPos[M] = (D - Z) * an * -1;
                ae.css({
                    left: ((D - Z) * an) + "px"
                });
                m.trigger("scroll")
            };
            var L = function(p) {
                ag(z(p, "X") - b.left - u)
            };
            var N = function(p, am) {
                if ((K == false) && (S != true)) {
                    _jscr_trackInt[M] = -1;
                    halfInter = -1;
                    smallInter = -1;
                    bigInter = -1;
                    endDragPos = am + n.width();
                    fullTrackWidth = jQuery(".jScrollPaneTrack").width();
                    for (inter in ab) {
                        if ((endDragPos >= fullTrackWidth) && (endDragPos >= ab[inter])) {
                            _jscr_trackInt[M] = inter
                        } else {
                            if (am >= ab[inter]) {
                                smallInter = inter
                            } else {
                                bigInter = inter;
                                break
                            }
                        }
                    }
                    if (_jscr_trackInt[M] == -1) {
                        smallDistance = am - ab[smallInter];
                        largeDistance = ab[bigInter] - am;
                        if (smallDistance <= largeDistance) {
                            _jscr_trackInt[M] = smallInter
                        } else {
                            _jscr_trackInt[M] = bigInter
                        }
                    }
                } else {
                    K = false
                }
            };
            var w = function() {
                if (_jscr_trackInt[M] != -1) {
                    if (R == true) {
                        if ((l == -1) && (_jscr_trackInt[M] != 0)) {
                            _jscr_trackInt[M] = g - 1
                        } else {
                            if ((l == 1) && (_jscr_trackInt[M] != (_jscr_intervals.length - 1))) {
                                _jscr_trackInt[M] = parseInt(g) + 1
                            }
                        }
                        R = false
                    }
                    K = true;
                    ag(ab[_jscr_trackInt[M]]);
                    g = _jscr_trackInt[M]
                }
            };
            var o = 0;
            if (a.showArrows == true) {
                o = a.arrowSize
            }
            var X = Math.max(Math.min(O * (D - o * 2), a.dragMaxWidth), a.dragMinWidth);
            n.css({
                width: X + "px"
            }).bind("mousedown", c);
            var Q;
            var q;
            var h;
            var aa = function() {
                if (q > 8 || q % 4 == 0) {
                    ag((ad - ((ad - h) / 2)))
                }
                q++
            };
            var ai = function() {
                clearInterval(Q);
                w();
                jQuery("body").unbind("mouseup", ai).unbind("mousemove", F)
            };
            var F = function(p) {
                h = z(p, "X") - b.left - u
            };
            var t = function(p) {
                ac();
                F(p);
                q = 0;
                jQuery("body").bind("mouseup", ai).bind("mousemove", F);
                Q = setInterval(aa, 100);
                aa()
            };
            ah.bind("mousedown", t);
            if (f.mousewheel) {
                f.mousewheel(function(an, ap) {
                    var am = -1;
                    if (jQuery.browser.opera) {
                        ap = an.wheelDelta / 120
                    }
                    if (ab.length > 1) {
                        S = true;
                        if (ap < 0) {
                            _jscr_trackInt[M] = parseInt(_jscr_trackInt[M]) + 1;
                            if ((_jscr_trackInt[M]) >= ab.length - 1) {
                                _jscr_trackInt[M] = ab.length - 1
                            }
                            if ((parseInt(n.width()) + parseInt(ab[_jscr_trackInt[M]])) > parseInt(jQuery(".jScrollPaneTrack").width())) {
                                am = parseInt(jQuery(".jScrollPaneTrack").width()) - n.width()
                            }
                        } else {
                            _jscr_trackInt[M] = parseInt(_jscr_trackInt[M]) - 1;
                            if (_jscr_trackInt[M] < 0) {
                                _jscr_trackInt[M] = 0
                            }
                        }
                    }
                    ac();
                    T();
                    var ao = ad;
                    if (S == true) {
                        if (am == -1) {
                            ag(ab[_jscr_trackInt[M]])
                        } else {
                            ag(am)
                        }
                    } else {
                        ag(ad - ap * B)
                    }
                    w();
                    var p = ao != ad;
                    S = false;
                    return !p
                }, false)
            }
            var d;
            var x;

            function C() {
                var p = (d - ad) / a.animateStep;
                if ((p > 1 || p < -1) && ((ad + p + n.width()) < (D))) {
                    ag(ad + p)
                } else {
                    ag(d);
                    T()
                }
            }
            var T = function() {
                if (x) {
                    clearInterval(x);
                    delete d
                }
            };
            var af = function(an, p) {
                if (typeof an == "string") {
                    $e = jQuery(an, this);
                    if (!$e.length) {
                        return
                    }
                    an = $e.position().left
                }
                T();
                var am = -an / (D - Z) * y;
                if (!p || a.animateTo) {
                    d = am;
                    x = setInterval(C, a.animateInterval)
                } else {
                    ag(am)
                }
            };
            m[0].scrollTo = af;
            m[0].scrollBy = function(am) {
                var p = -parseInt(ae.css("left")) || 0;
                af(p + am)
            };
            ac();
            af(-ak, true);
            jQuery.jScrollHorizontalPane.active.push(m[0])
        } else {
            var af = function(am, p) {};
            m[0].scrollTo = af;
            m.css({
                height: al - this.originalSidePaddingTotal + "px",
                width: D + "px",
                padding: this.originalPadding
            })
        }
    })
};
jQuery.fn.jScrollHorizontalPane.reset = function() {
    _jscr_originalSizes = new Array();
    _jscr_differenceSizes = new Array();
    _jscr_previousWindowSize = new Array();
    _jscr_originalPercentages = new Array();
    _jscr_intervals = new Array();
    _jscr_trackInt = new Array();
    _jscr_originalPos = new Array();
    _jscr_globalProperties = new Array()
};
jQuery(window).bind("unload", function() {
    var b = jQuery.jScrollHorizontalPane.active;
    for (var a = 0; a < b.length; a++) {
        b[a].scrollTo = b[a].scrollBy = null
    }
});
(function(a) {
    jQuery(function(b) {
        jQuery(window).wresize(c);

        function c() {
            jQuery(".scroll-pane").each(function(d, e) {
                jQuery(e).jScrollHorizontalPane(_jscr_globalProperties[jQuery(e).attr("id")])
            })
        }
    });
    jQuery.fn.wresize = function(c) {
        version = "1.1";
        wresize = {
            fired: false,
            width: 0
        };

        function b() {
            if (jQuery.browser.msie) {
                if (!wresize.fired) {
                    wresize.fired = true
                } else {
                    var e = parseInt(jQuery.browser.version, 10);
                    wresize.fired = false;
                    if (e < 7) {
                        return false
                    } else {
                        if (e == 7) {
                            var f = jQuery(window).width();
                            if (f != wresize.width) {
                                wresize.width = f;
                                return false
                            }
                        }
                    }
                }
            }
            return true
        }
        function d(f) {
            if (b()) {
                return c.apply(this, [f])
            }
        }
        this.each(function() {
            if (this == window) {
                jQuery(this).resize(d)
            } else {
                jQuery(this).resize(c)
            }
        });
        return this
    }
})(jQuery);
