
    var $WowheadTalentCalculator;

    function TalentCalculator() {
        $WowheadTalentCalculator = this;
        var s = 71;
        var AF = {};
        var w = {};
        var X = -1, D = -1;
        var n = {11:{name:"druid", oldid:0}, 3:{name:"hunter", oldid:1}, 8:{name:"mage", oldid:2}, 2:{name:"paladin", oldid:3}, 5:{name:"priest", oldid:4}, 4:{name:"rogue", oldid:5}, 7:{name:"shaman", oldid:6}, 9:{name:"warlock", oldid:7}, 1:{name:"warrior", oldid:8}};
        if (g_locale.id == 25) {
            n[6] = {name:"deathknight", oldid:9};
        }
        var W = {0:11, 1:3, 2:8, 3:2, 4:5, 5:4, 6:7, 7:9, 8:1, 9:6};
        var x = 0;
        var z = g_locale.id != 25 ? 61 : 71;
        var K = 0;
        var b = Browser.opera;
        var t = 0;
        var T = "0zMcmVokRsaqbdrfwihuGINALpTjnyxtgevE";
        var f = "Z";
        var y = 1;
        var C;
        var AC = 0;
        var F;
        var J, AD;
        var AE;
        var u;
        var m;
        var O;
        var AA;
        var P, M, I, G;
        var AI;
        this.setClass = function (AJ) {k();o(AJ);};
        this.importBlizzBuild = function () {var AL = -1;var AM, AJ = prompt(LANG.prompt_importblizz, "");if (!AJ) {return;}if (AJ.indexOf("?") != -1) {while (n) {if (AJ.indexOf(n[AK].name) != -1) {AL = parseInt(AK);break;}}}if (AL == -1) {alert(LANG.alert_invalidurl);return;}AM = AJ.substring(AJ.indexOf("?") + 1);if (AF[AL]) {B();R(AM, AL);AB();} else {w = {classId:AL, blizz:AM};}o(AL);};
        this.importWhBuild = function () {var AK = -1;var AL, AJ = prompt(LANG.prompt_importwh, "");if (!AJ) {return;}var AN = AJ.indexOf("talent=");if (AN != -1) {AL = AJ.substr(AN + 7);var AM = T.indexOf(AL.charAt(0));if (AM >= 0 && AM <= 26 && AM % 3 == 0) {AK = AM / 3;AL = AL.substr(1);}}if (AK == -1) {alert(LANG.alert_invalidurl);return;}if (AF[AK]) {B();R(blizz, AK);AB();} else {w = {classId:AK, wh:AL};}o(AK);};
        this.initialize = function (AK) {K = AK.mode ? AK.mode : 0;d();AA = ge("mtwtcStats");var AP = gE(AA, "b");AE = AP[0].firstChild;u = AP[1].firstChild;m = AP[2].firstChild;J = ge("mtwtcTabs");AD = gE(J, "span");O = ge("mtwtcTrees");F = ge("mtwtcLink");P = ge("mtwtcMenu2");M = ge("mtwtcMenu3");I = ge("mtwtcMenu5");I.onselectstart = I.ondragstart = rf;G = gE(M, "a");F.firstChild.nodeValue = LANG.tc_link;ge("mtwtcClearAll").firstChild.nodeValue = LANG.tc_resetall;ge("mtwtcLockToggler").firstChild.nodeValue = LANG.tc_lock;array_apply(gE(J, "a"), function (AQ) {AQ.firstChild.nodeValue = LANG.tc_reset;});AE.parentNode.previousSibling.nodeValue = LANG.tc_ptsleft;m.parentNode.previousSibling.nodeValue = LANG.tc_ptsspent;u.parentNode.previousSibling.nodeValue = LANG.tc_reqlevel;var AO = ge("mtwtcLevelCap");if (AO) {AO.previousSibling.nodeValue = LANG.tc_levelcap;}if (AK.whBuild) {var AM = AK.whBuild;var AN = T.indexOf(AM.charAt(0));if (AN >= 0 && AN <= 29) {var AJ = AN % 3;var AO = (AN - AJ) / 3;if (W[AO]) {var AL = W[AO];w = {classId:AL, wh:AM.substr(1)};o(AL);}}} else {if (AK.classId > 0 && n[AK.classId]) {if (AK.blizzBuild) {w = {classId:AK.classId, blizz:AK.blizzBuild};}o(AK.classId);}}if (X < 0) {Q();}};
        this.menuOver = function () {clearTimeout(C);if (!y && X >= 0) {C = setTimeout(Q.bind(this, 1), 333);}};
        this.menuOut = function () {clearTimeout(C);if (y && X >= 0) {C = setTimeout(q.bind(this), 250);}};
        this.registerClass = function (AK, AJ) {if (AF[AK] == null) {AJ.n = AK;AF[AK] = AJ;g(AK);}};
        this.resetAll = function () {B();};
        this.resetTree = function (AJ) {if (X >= 0) {k();E(AJ, -1, 1);}};
        this.showSummary = function (AO) {if (X < 0) {alert(LANG.alert_chooseclass);return;}var AP = AF[X];if (!AP.k) {alert(LANG.alert_buildempty);return;}var AN = window.open("", "", "toolbar=no,menubar=yes,status=yes,scrollbars=yes,resizable=yes");var AM, AL, AK;var AJ = "<html><head><title>" + document.title + "</title></head><body style=\"font-family: Arial, sans-serif; font-size: 13px\">";AN.document.open();if (AO) {AJ += "<h2>" + sprintf(LANG.tc_printh, AP.k + 9, g_chr_classes[AP.n]) + " (" + AP[0].t.k + "/" + AP[1].t.k + "/" + AP[2].t.k + ")</h2>";AJ += "<p></p>";for (AM = 0; AM < 3; ++AM) {AJ += "<h3>" + AP[AM].n + " (" + AP[AM].t.k + " " + LANG[AP[AM].t.k == 1 ? "tc_point" : "tc_points"] + ")</h3>";AJ += "<blockquote>";AK = 0;for (AL = 0; AL < AP[AM].t.length; ++AL) {if (AP[AM].t[AL].k) {if (AK) {AJ += "<br /><br />";}AJ += "<b>" + AP[AM].t[AL].n + "</b>" + LANG.hyphen + sprintf(LANG.tc_rank, AP[AM].t[AL].k, AP[AM].t[AL].m) + "<br />";AJ += AH(AP[AM].t[AL]);++AK;}}if (AK == 0) {AJ += LANG.tc_none;}AJ += "</blockquote>";}} else {AJ += "<pre>";for (AM = 0; AM < 3; ++AM) {AJ += "<b>" + AP[AM].n + " (" + AP[AM].t.k + " " + LANG[AP[AM].t.k == 1 ? "tc_point" : "tc_points"] + ")</b>\n\n";AK = 0;for (AL = 0; AL < AP[AM].t.length; ++AL) {if (AP[AM].t[AL].k) {AJ += "&nbsp;&nbsp;&nbsp;&nbsp;" + AP[AM].t[AL].k + "/" + AP[AM].t[AL].m + " " + AP[AM].t[AL].n + "\n";++AK;}}if (AK == 0) {AJ += "&nbsp;&nbsp;&nbsp;&nbsp;" + LANG.tc_none + "\n";}AJ += "\n";}AJ += "</pre>";}AJ += "</body></html>";AN.document.write(AJ);AN.document.close();};
        this.toggleLock = function (AJ) {L();};
        this.toggleLevelCap = function (AK, AJ) {Tooltip.hide();k();r();this.showLevelCapTooltip(AJ);AB();};
        this.showLevelCapTooltip = function (AJ) {if (z == 61) {Tooltip.showAtCursor(AJ, LANG.tc_inccap, 0, 0, "q2");} else {Tooltip.showAtCursor(AJ, LANG.tc_deccap, 0, 0, "q10");}};
        this.toggleMenu = function () {clearTimeout(C);if (!y) {Q(0);} else {if (X >= 0 && !AC) {q();}}};
        this.setLevelCap = function (AJ, AK) {if (AJ < 1 || AJ > 70) {return;}var AL = z;z = Math.max(0, AJ - 9);if (z < AL) {j();}if (!AK) {AB();}};
        this.getBuildInfo = function () {var AN = AF[X];var AM = "", AK = [0, 0, 0];if (AN) {AK = [AN[0].t.k, AN[1].t.k, AN[2].t.k];for (var AJ = 0; AJ < 3; ++AJ) {for (var AL = 0; AL < AN[AJ].t.length; ++AL) {AM += AN[AJ].t[AL].k;}}}return {spent:AK, build:AM};};

        function h(AL) {
            var AJ = gE(ge("mtwtcMenu4"), "a");
            for (var AK = 0; AK < AJ.length; ++AK) {
                if (AJ[AK].rel == AL) {
                    return AK;
                }
            }
            return 0;
        }


        function a(AN) {
            var AK = "";
            var AJ = [];
            for (var AM = 0; AM < AN.length; AM += 2) {
                for (var AL = 0; AL < 2; ++AL) {
                    AJ[AL] = parseInt(AN.substring(AM + AL, AM + AL + 1));
                    if (isNaN(AJ[AL])) {
                        AJ[AL] = 0;
                    }
                }
                AK += T.charAt(AJ[0] * 6 + AJ[1]);
            }
            return AK;
        }


        function o(AJ) {
            if (n[AJ] == null) {
                return;
            }
            k();
            if (AJ != X) {
                D = X;
                X = AJ;
                var AK = G[h(AJ)];
                AK.className += " selected";
                if (D >= 0) {
                    AK = G[h(D)];
                    AK.className = AK.className.replace("selected", "");
                }
                U(AJ);
            }
            q();
        }


        function AG(AO, AN, AQ) {
            var AP = AF[AO.classId], AL;
            var AK = AO.tree;
            if (AO.k > 0 && (AN == 0 || !x)) {
                if (AO.links) {
                    for (AL = 0; AL < AO.links.length; ++AL) {
                        if (AP[AK].t[AO.links[AL]].k) {
                            return;
                        }
                    }
                }
                var AM = 0;
                AO.k--;
                for (AL = 0; AL < AP[AK].t.length; ++AL) {
                    var AJ = AP[AK].t[AL];
                    if (AJ.k && AO.y != AJ.y) {
                        if (AM < AJ.y * 5) {
                            AO.k++;
                            return;
                        }
                    }
                    AM += AJ.k;
                }
                AP[AK].t.k--;
                AL = AP.k--;
                A(AK, AN);
                if (AN) {
                    Y(AQ);
                    if (AL >= z) {
                        for (AL = 0; AL < 3; ++AL) {
                            A(AL, 1);
                        }
                    }
                }
            }
            V();
            e();
        }


        function l(AL, AK, AO) {
            if (x) {
                var AM = Math.max(0, AL.k - 1);
                window.open("/spell.php?wspell=" + AL.s[AM]);
                return;
            }
            var AN = AF[AL.classId];
            if (K == 0 && AK == 0 && AN.k == z) {
                r();
            }
            if (AN.k < z) {
                if (AL.k < AL.m && AL.enabled) {
                    AL.k++;
                    AN[AL.tree].t.k++;
                    AN.k++;
                    A(AL.tree, AK, AL, AL.classId);
                    if (AK) {
                        Y(AO);
                        V();
                        e();
                        if (AN.k == z) {
                            for (var AJ = 0; AJ < 3; ++AJ) {
                                if (AJ != AL.tree) {
                                    A(AJ, AK, 0, AL.classId);
                                }
                            }
                        }
                    }
                }
            }
        }


        function g(AK) {
            var AL = AF[AK];
            var AJ;
            c(AK);
            if (w.classId == AK) {
                for (AJ = 0; AJ < 3; ++AJ) {
                    A(AJ, 0, 0, AK);
                }
                if (w.wh || w.blizz) {
                    if (w.wh) {
                        S(w.wh, AK);
                    } else {
                        R(w.blizz, AK);
                    }
                    L();
                }
            }
            w = {};
            if (AK == X) {
                H();
                AL.div.style.display = "";
            }
            for (AJ = 0; AJ < 3; ++AJ) {
                A(AJ, 1, 0, AK);
            }
        }


        function c(AX) {
            var Ah, Ae = AF[AX];
            var AR = gE(ge("mtwtcArrowsTemplate"), "div");
            var AL = ge("mtwtcTreeTemplate").firstChild;
            var Ah, Ab;
            var AT = ["Container", "Icon", "Tile", "Border", "Bubble", "Highlight", "Arrow"];
            Ae.div = ce("div");
            Ae.div.style.display = "none";
            ae(O, Ae.div);
            Ae.trees = [ce("div"), ce("div"), ce("div")];
            for (var Ab = 0; Ab < 3; ++Ab) {
                var Af = Ae.trees[Ab];
                Af.style.cssFloat = Af.style.styleFloat = "left";
                ae(Ae.div, Af);
            }
            Ae.k = 0;
            for (var AW = 2; AW >= 0; --AW) {
                Ah = Ae.trees[AW].style;
                Ah.backgroundImage = "url(http://wowbox.tw/talent/backgrounds/" + n[Ae.n].name + "_" + (AW + 1) + ".jpg?" + s + ")";
                Ah.backgroundRepeat = "no-repeat";
                Ae.trees[AW].appendChild(AL.cloneNode(1));
                if (AW > 0) {
                    Ae.trees[AW].style.borderLeft = "1px solid #404040";
                }
                var Ac = gE(Ae.trees[AW], "td");
                Ae[AW].t.k = 0;
		var AS;
		if (0 && String(document.location).search("ptr") != -1)
		    AS = "url(http://wowbox.tw/talent/icons-ptr/" + n[Ae.n].name + "_" + (AW + 1) + ".jpg" + (!Browser.ie6 ? "?" + s : "") + ")";
		else
		    AS = "url(http://wowbox.tw/talent/icons/" + n[Ae.n].name + "_" + (AW + 1) + ".jpg" + (!Browser.ie6 ? "?" + s : "") + ")";
                for (Ab = Ae[AW].t.length - 1; Ab >= 0; --Ab) {
                    var AK = Ae[AW].t[Ab];
                    var Ag = AK.y * 4 + AK.x + 1 - 1;
                    AK.k = 0;
                    AK.i = Ab;
                    AK.tree = AW;
                    AK.classId = AX;
                    var AZ = [];
                    for (var Aa = 0; Aa < 5; ++Aa) {
                        AZ[Aa] = ce("div");
                        AZ[Aa].className = "mtwtc" + AT[Aa];
                    }
                    ns(AZ[0]);
                    AZ[0].oncontextmenu = rf;
                    var AJ = ce("div");
                    AJ.className = "mtwtcHighlight";
                    AJ.onmousedown = rf;
                    AJ.onmouseup = N;
                    AJ.onmouseover = Z;
                    AJ.onmouseout = p;
                    AJ.oncontextmenu = v;
                    AZ.push(AJ);
                    if (AK.r) {
                        var AM = Ae[AW].t[AK.r[0]];
                        var AP = AK.x - AM.x;
                        var AO = AK.y - AM.y;
                        var AY, AV, AU, Ad;
                        var AQ = -1;
                        if (!AM.links) {
                            AM.links = [Ab];
                        } else {
                            AM.links.push(Ab);
                        }
                        if (AO > 0) {
                            if (AP == 0) {
                                AQ = 0;
                            } else {
                                if (AP < 0) {
                                    AQ = 1;
                                } else {
                                    AQ = 2;
                                }
                            }
                        } else {
                            if (AO == 0) {
                                if (AP > 0) {
                                    AQ = 3;
                                } else {
                                    if (AP < 0) {
                                        AQ = 4;
                                    }
                                }
                            }
                        }
                        AU = (Math.abs(AP) - 1) * 64;
                        Ad = (Math.abs(AO) - 1) * 64;
                        switch (AQ) {
                          case 0:
                            AU = 15;
                            Ad += 29;
                            AY = 25;
                            AV = 16 - Ad;
                            break;
                          case 1:
                            AU += 51;
                            Ad += 54;
                            AY = 24;
                            AV = 15 - Ad;
                            break;
                          case 2:
                            AU += 51;
                            Ad += 54;
                            AY = - AU + 40;
                            AV = 15 - Ad;
                            break;
                          case 3:
                            AU += 29;
                            Ad = 15;
                            AY = -11;
                            AV = 24;
                            break;
                          case 4:
                            AU += 29;
                            Ad = 15;
                            AY = 46;
                            AV = 24;
                            break;
                          default:;
                        }
                        var AN = AR[AQ].cloneNode(1);
                        Ah = AN.style;
                        Ah.left = AY + "px";
                        Ah.top = AV + "px";
                        Ah.width = AU + "px";
                        Ah.height = Ad + "px";
                        AZ.push(AN);
                    }
                    for (Aa = 1; Aa < AZ.length; ++Aa) {
                        AZ[0].appendChild(AZ[Aa]);
                    }
                    for (Aa = 0; Aa < AZ.length; ++Aa) {
                        AK[AT[Aa].toLowerCase()] = AZ[Aa];
                    }
                    AK.highlight.talent = AK;
                    AK.icon.style.backgroundImage = AS;
                    AZ[0].style.position = "relative";
                    Ac[Ag].appendChild(AZ[0]);
                }
            }
            Ae.trees = Ae.div.childNodes;
        }


        function AH(AL, AJ) {
            var AK = AL.d;
            var AM = Math.max(0, AL.k - 1) + (AJ ? 1 : 0);
            return AL.d[AM];
        }


        function q() {
            y = 0;
            if (D < 0) {
                AA.style.display = "block";
                J.style.display = "block";
                ge("kebwrkwbet63").style.display = "block";
                ge("kebwrkwbet64").style.display = "block";
            }
            P.className = "mtwtcMenuBorder mtwtcMenuClip";
            M.className = "";
            M.style.top = - (h(X) + 1) * 22 - 3 + "px";
            I.style.backgroundPosition = "right 2px";
        }


        function N(AJ) {
            if (!AJ) {
                AJ = event;
            }
            var AK = AJ.which ? AJ.which : AJ.button;
            if (AK >= 2) {
                if (t != 2) {
                    t = 1;
                    AG(this.talent, 1, this);
                }
            } else {
                if (AJ.shiftKey || AJ.ctrlKey) {
                    AG(this.talent, 1, this);
                } else {
                    l(this.talent, 1, this);
                }
            }
        }


        function v() {
            if (t == 1) {
                return;
            }
            t = 2;
            AG(this.talent, 1, this);
        }


        function p() {
            Tooltip.hide();
            this.style.backgroundPosition = "0";
        }


        function Z() {
            Y(this);
            this.style.backgroundPosition = this.talent.enabled ? "-76px" : "-38px";
        }


        function U(AL) {
            if (AF[AL]) {
                H();
                var AM = AF[AL];
                AM.div.style.display = "";
            } else {
                if (Browser.ie6) {
                    for (var AK = 1; AK <= 3; ++AK) {
                        var AJ = ce("img");
			if (0 && String(document.location).search("ptr") != -1)
			    AJ.src = "http://wowbox.tw/talent/icons-ptr/" + n[AL].name + "_" + AK + ".jpg" + (!Browser.ie6 ? "?" + s : "");
			else
			    AJ.src = "http://wowbox.tw/talent/icons/" + n[AL].name + "_" + AK + ".jpg" + (!Browser.ie6 ? "?" + s : "");
                        ae(AI, AJ);
                    }
                }
		if (0 && String(document.location).search("ptr") != -1)
		    g_ajaxIshRequest("/talent/?talent-data=" + AL + "&" + s + "&ptr");
		else
		    g_ajaxIshRequest("/talent/?talent-data=" + AL + "&" + s);
            }
            if (AF[D]) {
                AF[D].div.style.display = "none";
            }
        }


        function R(AR, AQ) {
            var AP = AF[AQ];
            var AS = 0, AO = 0;
            var AL = null, AJ;
            for (var AN = 0; AN < AR.length; ++AN) {
                var AK = Math.min(parseInt(AR.charAt(AN)), AP[AS].t[AO].m);
                if (isNaN(AK)) {
                    continue;
                }
                for (var AM = 0; AM < AK; ++AM) {
                    l(AP[AS].t[AO], 0);
                }
                if (AL) {
                    for (var AM = 0; AM < AJ; ++AM) {
                        l(AL, 0);
                    }
                    AL = null;
                }
                if (AP[AS].t[AO].k < AK) {
                    AL = AP[AS].t[AO];
                    AJ = AK - AP[AS].t[AO].k;
                }
                if (++AO > AP[AS].t.length - 1) {
                    AO = 0;
                    if (++AS > 2) {
                        break;
                    }
                }
            }
        }


        function S(AT, AS) {
            var AR = AF[AS];
            var AV = 0, AQ = 0;
            var AU = [];
            var AM = null, AK;
            for (var AP = 0; AP < AT.length; ++AP) {
                var AJ = AT.charAt(AP);
                if (AJ != f) {
                    var AL = T.indexOf(AJ);
                    if (AL < 0) {
                        continue;
                    }
                    AU[1] = AL % 6;
                    AU[0] = (AL - AU[1]) / 6;
                    for (var AO = 0; AO < 2; ++AO) {
                        AL = Math.min(AU[AO], AR[AV].t[AQ].m);
                        for (var AN = 0; AN < AL; ++AN) {
                            l(AR[AV].t[AQ], 0);
                        }
                        if (AM) {
                            for (var AN = 0; AN < AK; ++AN) {
                                l(AM, 0);
                            }
                            AM = null;
                        }
                        if (AR[AV].t[AQ].k < AL) {
                            AM = AR[AV].t[AQ];
                            AK = AL - AR[AV].t[AQ].k;
                        }
                        if (++AQ >= AR[AV].t.length) {
                            break;
                        }
                    }
                }
                if (AQ >= AR[AV].t.length || AJ == f) {
                    AQ = 0;
                    if (++AV > 2) {
                        return;
                    }
                }
            }
        }


        function d() {
            if (Browser.ie6) {
                var AM = ["border", "tile", "bubble", "arrows/down", "arrows/down2", "arrows/leftdown", "arrows/leftdown2", "arrows/rightdown", "arrows/rightdown2", "arrows/right", "arrows/right2"];
                var AL = ce("div");
                for (var AK = 0; AK < AM.length; ++AK) {
                    var AJ = ce("img");
                    AJ.src = "http://wowbox.tw/talent/" + AM[AK] + ".gif";
                    ae(AL, AJ);
                }
                AL.style.position = "absolute";
                AL.style.left = AL.style.top = "-2323px";
                AL.style.visibility = "hidden";
                ae(ge("layers"), AL);
                AI = AL;
            }
        }


        function AB(AJ) {
            A(0, 1, 0, AJ);
            A(1, 1, 0, AJ);
            A(2, 1, 0, AJ);
            V();
            e();
        }


        function e() {
            var AN = AF[X];
            var AK = "", AM, AL;
            for (var AJ = 0; AJ < 3; ++AJ) {
                AM = "";
                for (AL = 0; AL < AN[AJ].t.length; ++AL) {
                    AM += AN[AJ].t[AL].k;
                }
                AM = rtrim(AM, "0");
                AK += a(AM);
                AL = AM.length;
                if (AL % 2 == 1) {
                    ++AL;
                }
                if (AL < AN[AJ].t.length) {
                    AK += f;
                }
            }
	    if (0 && String(document.location).search("ptr") != -1)
		F.href = "/?talent=" + T.charAt(n[X].oldid * 3) + rtrim(AK, f) + "&ptr";
	    else
		F.href = "/?talent=" + T.charAt(n[X].oldid * 3) + rtrim(AK, f);
        }


        function V() {
            var AM = AF[X];
            AE.nodeValue = z - AM.k;
            m.nodeValue = AM.k + " (" + AM[0].t.k + "/" + AM[1].t.k + "/" + AM[2].t.k + ")";
            u.nodeValue = AM.k > 0 ? 9 + AM.k : "-";
            for (var AK = 0; AK < 3; ++AK) {
                AD[AK].childNodes[1].nodeValue = " (" + AM[AK].t.k + ")";
            }
            if (K == 0) {
                var AJ = document.title;
                var AL = AJ.indexOf("-");
                if (AL != -1) {
                    AJ = AJ.substring(AL + 2);
                }
                document.title = g_chr_classes[X] + " (" + AM[0].t.k + "/" + AM[1].t.k + "/" + AM[2].t.k + ") - " + AJ;
            }
        }


        function B() {
            if (X >= 0) {
                k();
                E(0);
                E(1);
                E(2);
                AB();
            }
        }


        function E(AJ, AM, AL) {
            var AN = AM >= 0 ? AF[AM] : AF[X];
            var AK;
            for (AK = 0; AK < AN[AJ].t.length; ++AK) {
                AN[AJ].t[AK].k = 0;
            }
            AK = AN.k < z;
            AN.k -= AN[AJ].t.k;
            AN[AJ].t.k = 0;
            if (AL) {
                if (AK) {
                    A(AJ, 1);
                } else {
                    for (AK = 0; AK < 3; ++AK) {
                        A(AK, 1);
                    }
                }
                V();
                e();
            }
        }


        function Q(AJ) {
            AC = AJ;
            y = 1;
            if (X >= 0) {
                P.className = "";
                M.className = "mtwtcMenuBorder";
                M.style.top = "0";
            }
        }


        function Y(AM) {
            var AK = AM.talent;
            var AL = AF[AK.classId];
            var AJ = "<table><tr><td><b>";
            if (AK.z) {
                AJ += "<span style=\"float: right\" class=\"q0\">" + AK.z + "</span>";
            }
            AJ += AK.n + "</b><br />" + sprintf(LANG.tc_rank, AK.k, AK.m) + "<br />";
            if (AK.r) {
                if (AL[AK.tree].t[AK.r[0]].k < AK.r[1]) {
                    AJ += "<span class=\"q10\">";
                    AJ += sprintf(LANG[AK.r[1] == 1 ? "tc_prereq" : "tc_prereqpl"], AK.r[1], AL[AK.tree].t[AK.r[0]].n);
                    AJ += "</span><br />";
                }
            }
            if (AL[AK.tree].t.k < AK.y * 5) {
                AJ += "<span class=\"q10\">" + sprintf(LANG.tc_tier, AK.y * 5, AL[AK.tree].n) + "</span><br />";
            }
            if (AK.t && AK.t.length >= 1) {
                AJ += AK.t[0];
            }
            AJ += "</td></tr></table><table><tr><td>";
            if (AK.t && AK.t.length > 1) {
                AJ += AK.t[1] + "<br />";
            }
            AJ += "<span class=\"q\">" + AH(AK) + "</span><br />";
            if (x) {
                AJ += "<span class=\"q2\">" + LANG.tc_view + "</span><br />";
            } else {
                if (AK.enabled) {
                    if (!AK.k) {
                        AJ += "<span class=\"q2\">" + LANG.tc_learn + "</span><br />";
                    } else {
                        if (AK.k == AK.m) {
                            AJ += "<span class=\"q10\">" + LANG[b ? "tc_unlearn2" : "tc_unlearn"] + "</span><br />";
                        }
                    }
                    if (AK.k && AK.k < AK.m) {
                        AJ += "<br />" + LANG.tc_nextrank + "<br /><span class=\"q\">" + AH(AK, 1) + "</span><br />";
                    }
                }
            }
            AJ += "</td></tr></table>";
            Tooltip.show(AM, AJ, 0, 0);
        }


        function A(AS, AP, AN, AR) {
            var AQ = AR >= 0 ? AF[AR] : AF[X];
            var AO;
            var AK;
            if (!AN || AQ.k == z) {
                AK = 0;
                AO = z - 21;
            } else {
                AK = AN.i;
                AO = Math.floor(AQ[AS].t.k / 5) * 5 + 5;
            }
            if (AN != null && AN.links != null) {
                for (var AL = 0, AM = AN.links.length; AL < AM; ++AL) {
                    if (AK > AN.links[AL]) {
                        AK = AN.links[AL];
                    }
                }
            }
            for (var AL = AK; AL < AQ[AS].t.length; ++AL) {
                AN = AQ[AS].t[AL];
                if (AQ.k < z) {
                    if (AN.y * 5 > AO) {
                        break;
                    }
                }
                if ((x || AQ.k == z) && !AN.k) {
                    AN.enabled = 0;
                } else {
                    if (AQ[AS].t.k >= AN.y * 5) {
                        if (AN.r) {
                            if (AQ[AS].t[AN.r[0]].k >= AN.r[1]) {
                                AN.enabled = 1;
                            } else {
                                AN.enabled = 0;
                            }
                        } else {
                            AN.enabled = 1;
                        }
                    } else {
                        AN.enabled = 0;
                    }
                }
                if (AP) {
                    var AJ;
                    if (AN.enabled) {
                        if (AN.k == AN.m) {
                            AN.border.style.backgroundPosition = "-42px";
                            AN.bubble.style.color = "#E7BA00";
                        } else {
                            AN.border.style.backgroundPosition = "-84px";
                            AN.bubble.style.color = "#17FD17";
                        }
                        AN.icon.style.backgroundPosition = - AL * 36 + "px 0";
                        AN.bubble.style.visibility = "visible";
                        if (AN.r) {
                            AJ = AN.arrow.firstChild;
                            if (AJ.className.indexOf("2") == -1) {
                                AJ.className += "2";
                            }
                        }
                    } else {
                        AN.border.style.backgroundPosition = 0;
                        AN.icon.style.backgroundPosition = - AL * 36 + "px -36px";
                        AN.bubble.style.visibility = "hidden";
                        if (AN.r) {
                            AJ = AN.arrow.firstChild;
                            if (AJ.className.indexOf("2") != -1) {
                                AJ.className = AJ.className.replace("2", "");
                            }
                        }
                    }
                    AN.bubble.innerHTML = AN.k;
                }
            }
        }


        function H() {
            var AJ = AF[X];
            for (i = 0; i < 3; ++i) {
                AD[i].firstChild.firstChild.nodeValue = AJ[i].n;
                AD[i].style.backgroundImage = "url(http://wowbox.tw/talent/trees/" + n[AJ.n].name + "_" + (i + 1) + ".gif?" + s + ")";
            }
            j();
            AB();
        }


        function L() {
            var AJ = ge("mtwtcLockToggler");
            x = !x;
            if (x) {
                AJ.firstChild.nodeValue = LANG.tc_unlock;
                AJ.style.backgroundPosition = "-110px center";
            } else {
                AJ.firstChild.nodeValue = LANG.tc_lock;
                AJ.style.backgroundPosition = "left center";
            }
            AB();
        }


        function k() {
            if (x) {
                L();
            }
        }


        function r() {
            var AL = ge("mtwtcLevelCap");
            var AK = z;
            z = z == 71 ? 61 : 71;
            AL.firstChild.nodeValue = z == 61 ? 70 : 80;
            if (z < AK) {
                j();
            }
            for (var AJ = 0; AJ < 3; ++AJ) {
                A(AJ, 0);
            }
        }


        function j() {
            var AN = AF[X];
            if (AN.k > z) {
                for (var AJ = 2; AJ >= 0; --AJ) {
                    for (var AM = AN[AJ].t.length - 1; AM >= 0; --AM) {
                        var AK = AN[AJ].t[AM].k;
                        for (var AL = 0; AL < AK; ++AL) {
                            AG(AN[AJ].t[AM], 0);
                            if (AN.k <= z) {
                                return;
                            }
                        }
                    }
                }
            }
        }

    }

