/*
 * jQuery UI Tab 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Tab
 *
 * Depends:
 *	ui.core.js
 */
(function(a) {
    a.widget("ui.tab", {
        _init: function() {
            if (this.options.deselectable !== undefined) {
                this.options.collapsible = this.options.deselectable
            }
            this._tabify(true)
        },
        _setData: function(b, c) {
            if (b == "selected") {
                if (this.options.collapsible && c == this.options.selected) {
                    return
                }
                this.select(c)
            } else {
                this.options[b] = c;
                if (b == "deselectable") {
                    this.options.collapsible = c
                }
                this._tabify()
            }
        },
        _tabId: function(b) {
            return b.title && b.title.replace(/\s/g, "_").replace(/[^A-Za-z0-9\-_:\.]/g, "") || this.options.idPrefix + a.data(b)
        },
        _sanitizeSelector: function(b) {
            return b.replace(/:/g, "\\:")
        },
        _cookie: function() {
            var b = this.cookie || (this.cookie = this.options.cookie.name || "ui-tab-" + a.data(this.list[0]));
            return a.cookie.apply(null, [b].concat(a.makeArray(arguments)))
        },
        _ui: function(c, b) {
            return {
                tab: c,
                panel: b,
                index: this.anchors.index(c)
            }
        },
        _cleanup: function() {
            this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tab)").each(function() {
                var b = a(this);
                b.html(b.data("label.tab")).removeData("label.tab")
            })
        },
        _tabify: function(n) {
            this.list = this.element.children("ul:first");
            this.lis = a("li:has(a[href])", this.list);
            this.anchors = this.lis.map(function() {
                return a("a", this)[0]
            });
            this.panels = a([]);
            var p = this,
            d = this.options;
            var c = /^#.+/;
            this.anchors.each(function(r, o) {
                var q = a(o).attr("href");
                var s = q.split("#")[0],
                u;
                if (s && (s === location.toString().split("#")[0] || (u = a("base")[0]) && s === u.href)) {
                    q = o.hash;
                    o.href = q
                }
                if (c.test(q)) {
                    p.panels = p.panels.add(p._sanitizeSelector(q))
                } else {
                    if (q != "#") {
                        a.data(o, "href.tab", q);
                        a.data(o, "load.tab", q.replace(/#.*$/, ""));
                        var w = p._tabId(o);
                        o.href = "#" + w;
                        var v = a("#" + w);
                        if (!v.length) {
                            v = a(d.panelTemplate).attr("id", w).addClass("ui-tab-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r - 1] || p.list);
                            v.data("destroy.tab", true)
                        }
                        p.panels = p.panels.add(v)
                    } else {
                        d.disabled.push(r)
                    }
                }
            });
            if (n) {
                this.element.addClass("ui-tab ui-widget ui-widget-content ui-corner-all");
                this.list.addClass("ui-tab-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
                this.lis.addClass("ui-state-default ui-corner-top");
                this.panels.addClass("ui-tab-panel ui-widget-content ui-corner-bottom");
                if (d.selected === undefined) {
                    if (location.hash) {
                        this.anchors.each(function(q, o) {
                            if (o.hash == location.hash) {
                                d.selected = q;
                                return false
                            }
                        })
                    }
                    if (typeof d.selected != "number" && d.cookie) {
                        d.selected = parseInt(p._cookie(), 10)
                    }
                    if (typeof d.selected != "number" && this.lis.filter(".ui-tab-selected").length) {
                        d.selected = this.lis.index(this.lis.filter(".ui-tab-selected"))
                    }
                    d.selected = d.selected || 0
                } else {
                    if (d.selected === null) {
                        d.selected = -1
                    }
                }
                d.selected = ((d.selected >= 0 && this.anchors[d.selected]) || d.selected < 0) ? d.selected: 0;
                d.disabled = a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),
                function(q, o) {
                    return p.lis.index(q)
                }))).sort();
                if (a.inArray(d.selected, d.disabled) != -1) {
                    d.disabled.splice(a.inArray(d.selected, d.disabled), 1)
                }
                this.panels.addClass("ui-tab-hide");
                this.lis.removeClass("ui-tab-selected ui-state-active");
                if (d.selected >= 0 && this.anchors.length) {
                    this.panels.eq(d.selected).removeClass("ui-tab-hide");
                    this.lis.eq(d.selected).addClass("ui-tab-selected ui-state-active");
                    p.element.queue("tab",
                    function() {
                        p._trigger("show", null, p._ui(p.anchors[d.selected], p.panels[d.selected]))
                    });
                    this.load(d.selected)
                }
                a(window).bind("unload",
                function() {
                    p.lis.add(p.anchors).unbind(".tab");
                    p.lis = p.anchors = p.panels = null
                })
            } else {
                d.selected = this.lis.index(this.lis.filter(".ui-tab-selected"))
            }
            this.element[d.collapsible ? "addClass": "removeClass"]("ui-tab-collapsible");
            if (d.cookie) {
                this._cookie(d.selected, d.cookie)
            }
            for (var g = 0,
            m; (m = this.lis[g]); g++) {
                a(m)[a.inArray(g, d.disabled) != -1 && !a(m).hasClass("ui-tab-selected") ? "addClass": "removeClass"]("ui-state-disabled")
            }
            if (d.cache === false) {
                this.anchors.removeData("cache.tabs")
            }
            this.lis.add(this.anchors).unbind(".tab");
            if (d.event != "mouseover") {
                var f = function(o, i) {
                    if (i.is(":not(.ui-state-disabled)")) {
                        i.addClass("ui-state-" + o)
                    }
                };
                var j = function(o, i) {
                    i.removeClass("ui-state-" + o)
                };
                this.lis.bind("mouseover.tab",
                function() {
                    f("hover", a(this))
                });
                this.lis.bind("mouseout.tab",
                function() {
                    j("hover", a(this))
                });
                this.anchors.bind("focus.tab",
                function() {
                    f("focus", a(this).closest("li"))
                });
                this.anchors.bind("blur.tab",
                function() {
                    j("focus", a(this).closest("li"))
                })
            }
            var b, h;
            if (d.fx) {
                if (a.isArray(d.fx)) {
                    b = d.fx[0];
                    h = d.fx[1]
                } else {
                    b = h = d.fx
                }
            }
            function e(i, o) {
                i.css({
                    display: ""
                });
                if (a.browser.msie && o.opacity) {
                    i[0].style.removeAttribute("filter")
                }
            }
            var k = h ?
            function(i, o) {
                a(i).closest("li").removeClass("ui-state-default").addClass("ui-tab-selected ui-state-active");
                o.hide().removeClass("ui-tab-hide").animate(h, h.duration || "normal",
                function() {
                    e(o, h);
                    p._trigger("show", null, p._ui(i, o[0]))
                })
            }: function(i, o) {
                a(i).closest("li").removeClass("ui-state-default").addClass("ui-tab-selected ui-state-active");
                o.removeClass("ui-tab-hide");
                p._trigger("show", null, p._ui(i, o[0]))
            };
            var l = b ?
            function(o, i) {
                i.animate(b, b.duration || "normal",
                function() {
                    p.lis.removeClass("ui-tab-selected ui-state-active").addClass("ui-state-default");
                    i.addClass("ui-tab-hide");
                    e(i, b);
                    p.element.dequeue("tab")
                })
            }: function(o, i, q) {
                p.lis.removeClass("ui-tab-selected ui-state-active").addClass("ui-state-default");
                i.addClass("ui-tab-hide");
                p.element.dequeue("tab")
            };
            this.anchors.bind(d.event + ".tab",
            function() {
                var o = this,
                r = a(this).closest("li"),
                i = p.panels.filter(":not(.ui-tab-hide)"),
                q = a(p._sanitizeSelector(this.hash));
                if ((r.hasClass("ui-tab-selected") && !d.collapsible) || r.hasClass("ui-state-disabled") || r.hasClass("ui-state-processing") || p._trigger("select", null, p._ui(this, q[0])) === false) {
                    this.blur();
                    return false
                }
                d.selected = p.anchors.index(this);
                p.abort();
                if (d.collapsible) {
                    if (r.hasClass("ui-tab-selected")) {
                        d.selected = -1;
                        if (d.cookie) {
                            p._cookie(d.selected, d.cookie)
                        }
                        p.element.queue("tab",
                        function() {
                            l(o, i)
                        }).dequeue("tab");
                        this.blur();
                        return false
                    } else {
                        if (!i.length) {
                            if (d.cookie) {
                                p._cookie(d.selected, d.cookie)
                            }
                            p.element.queue("tab",
                            function() {
                                k(o, q)
                            });
                            p.load(p.anchors.index(this));
                            this.blur();
                            return false
                        }
                    }
                }
                if (d.cookie) {
                    p._cookie(d.selected, d.cookie)
                }
                if (q.length) {
                    if (i.length) {
                        p.element.queue("tab",
                        function() {
                            l(o, i)
                        })
                    }
                    p.element.queue("tab",
                    function() {
                        k(o, q)
                    });
                    p.load(p.anchors.index(this))
                } else {
                    throw "jQuery UI Tab: Mismatching fragment identifier."
                }
                if (a.browser.msie) {
                    this.blur()
                }
            });
            this.anchors.bind("click.tab",
            function() {
                return false
            })
        },
        destroy: function() {
            var b = this.options;
            this.abort();
            this.element.unbind(".tab").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tab");
            this.list.removeClass("ui-tab-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
            this.anchors.each(function() {
                var c = a.data(this, "href.tab");
                if (c) {
                    this.href = c
                }
                var d = a(this).unbind(".tab");
                a.each(["href", "load", "cache"],
                function(e, f) {
                    d.removeData(f + ".tab")
                })
            });
            this.lis.unbind(".tab").add(this.panels).each(function() {
                if (a.data(this, "destroy.tab")) {
                    a(this).remove()
                } else {
                    a(this).removeClass(["ui-state-default", "ui-corner-top", "ui-tab-selected", "ui-state-active", "ui-state-hover", "ui-state-focus", "ui-state-disabled", "ui-tab-panel", "ui-widget-content", "ui-corner-bottom", "ui-tab-hide"].join(" "))
                }
            });
            if (b.cookie) {
                this._cookie(null, b.cookie)
            }
        },
        add: function(e, d, c) {
            if (c === undefined) {
                c = this.anchors.length
            }
            var b = this,
            g = this.options,
            i = a(g.tabTemplate.replace(/#\{href\}/g, e).replace(/#\{label\}/g, d)),
            h = !e.indexOf("#") ? e.replace("#", "") : this._tabId(a("a", i)[0]);
            i.addClass("ui-state-default ui-corner-top").data("destroy.tab", true);
            var f = a("#" + h);
            if (!f.length) {
                f = a(g.panelTemplate).attr("id", h).data("destroy.tab", true)
            }
            f.addClass("ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide");
            if (c >= this.lis.length) {
                i.appendTo(this.list);
                f.appendTo(this.list[0].parentNode)
            } else {
                i.insertBefore(this.lis[c]);
                f.insertBefore(this.panels[c])
            }
            g.disabled = a.map(g.disabled,
            function(k, j) {
                return k >= c ? ++k: k
            });
            this._tabify();
            if (this.anchors.length == 1) {
                i.addClass("ui-tab-selected ui-state-active");
                f.removeClass("ui-tab-hide");
                this.element.queue("tab",
                function() {
                    b._trigger("show", null, b._ui(b.anchors[0], b.panels[0]))
                });
                this.load(0)
            }
            this._trigger("add", null, this._ui(this.anchors[c], this.panels[c]))
        },
        remove: function(b) {
            var d = this.options,
            e = this.lis.eq(b).remove(),
            c = this.panels.eq(b).remove();
            if (e.hasClass("ui-tab-selected") && this.anchors.length > 1) {
                this.select(b + (b + 1 < this.anchors.length ? 1 : -1))
            }
            d.disabled = a.map(a.grep(d.disabled,
            function(g, f) {
                return g != b
            }),
            function(g, f) {
                return g >= b ? --g: g
            });
            this._tabify();
            this._trigger("remove", null, this._ui(e.find("a")[0], c[0]))
        },
        enable: function(b) {
            var c = this.options;
            if (a.inArray(b, c.disabled) == -1) {
                return
            }
            this.lis.eq(b).removeClass("ui-state-disabled");
            c.disabled = a.grep(c.disabled,
            function(e, d) {
                return e != b
            });
            this._trigger("enable", null, this._ui(this.anchors[b], this.panels[b]))
        },
        disable: function(c) {
            var b = this,
            d = this.options;
            if (c != d.selected) {
                this.lis.eq(c).addClass("ui-state-disabled");
                d.disabled.push(c);
                d.disabled.sort();
                this._trigger("disable", null, this._ui(this.anchors[c], this.panels[c]))
            }
        },
        select: function(b) {
            if (typeof b == "string") {
                b = this.anchors.index(this.anchors.filter("[href$=" + b + "]"))
            } else {
                if (b === null) {
                    b = -1
                }
            }
            if (b == -1 && this.options.collapsible) {
                b = this.options.selected
            }
            this.anchors.eq(b).trigger(this.options.event + ".tab")
        },
        load: function(e) {
            var c = this,
            g = this.options,
            b = this.anchors.eq(e)[0],
            d = a.data(b, "load.tab");
            this.abort();
            if (!d || this.element.queue("tabs").length !== 0 && a.data(b, "cache.tab")) {
                this.element.dequeue("tab");
                return
            }
            this.lis.eq(e).addClass("ui-state-processing");
            if (g.spinner) {
                var f = a("span", b);
                f.data("label.tab", f.html()).html(g.spinner)
            }
            this.xhr = a.ajax(a.extend({},
            g.ajaxOptions, {
                url: d,
                success: function(i, h) {
                    a(c._sanitizeSelector(b.hash)).html(i);
                    c._cleanup();
                    if (g.cache) {
                        a.data(b, "cache.tab", true)
                    }
                    c._trigger("load", null, c._ui(c.anchors[e], c.panels[e]));
                    try {
                        g.ajaxOptions.success(i, h)
                    } catch(j) {}
                    c.element.dequeue("tab")
                }
            }))
        },
        abort: function() {
            this.element.queue([]);
            this.panels.stop(false, true);
            if (this.xhr) {
                this.xhr.abort();
                delete this.xhr
            }
            this._cleanup()
        },
        url: function(c, b) {
            this.anchors.eq(c).removeData("cache.tab").data("load.tab", b)
        },
        length: function() {
            return this.anchors.length
        }
    });
    a.extend(a.ui.tab, {
        version: "1.7.2",
        getter: "length",
        defaults: {
            ajaxOptions: null,
            cache: false,
            cookie: null,
            collapsible: false,
            disabled: [],
            event: "click",
            fx: null,
            idPrefix: "ui-tab-",
            panelTemplate: "<div></div>",
            spinner: "<em>Loading&#8230;</em>",
            tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>'
        }
    });
    a.extend(a.ui.tab.prototype, {
        rotation: null,
        rotate: function(d, f) {
            var b = this,
            g = this.options;
            var c = b._rotate || (b._rotate = function(h) {
                clearTimeout(b.rotation);
                b.rotation = setTimeout(function() {
                    var i = g.selected;
                    b.select(++i < b.anchors.length ? i: 0)
                },
                d);
                if (h) {
                    h.stopPropagation()
                }
            });
            var e = b._unrotate || (b._unrotate = !f ?
            function(h) {
                if (h.clientX) {
                    b.rotate(null)
                }
            }: function(h) {
                t = g.selected;
                c()
            });
            if (d) {
                this.element.bind("tabshow", c);
                this.anchors.bind(g.event + ".tab", e);
                c()
            } else {
                clearTimeout(b.rotation);
                this.element.unbind("tabshow", c);
                this.anchors.unbind(g.event + ".tab", e);
                delete this._rotate;
                delete this._unrotate
            }
        }
    })
})(jQuery);;
