var $WowheadTalentCalculator;
var g_chr_classes = {
	6 :"死亡骑士",
	11 :"德鲁伊",
	3 :"猎人",
	8 :"法师",
	2 :"圣骑士",
	5 :"牧师",
	4 :"潜行者",
	7 :"萨满祭司",
	9 :"术士",
	1 :"战士"
};
function TalentCalculator() {
	$WowheadTalentCalculator = this;
	var s = 9294;
	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) {
			for ( var AK in 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>";
				AJ += "-------------- 多玩魔兽专区 ---------------- [wow.duowan.com] --------\n"
			}
		} 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 += "-------------- 多玩魔兽专区 ---------------- [wow.duowan.com] --------\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=" + 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(images/talent/classes"
					+ (g_locale.id == 25 ? "_wotlk" : "") + "/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 = "url(images/talent/classes"
					+ (g_locale.id == 25 ? "_wotlk" : "") + "/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
					}
					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");
					AJ.src = "images/talent/classes"
							+ (g_locale.id == 25 ? "_wotlk" : "") + "/icons/"
							+ n[AL].name + "_" + AK + ".jpg"
							+ (!Browser.ie6 ? "?" + s : "");
					ae(AI, AJ)
				}
			}
			g_ajaxIshRequest("wotlk.talent." + AL + ".js")
		}
		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 = "images/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
			}
		}
		F.href = location.pathname + "?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(images/talent/classes"
					+ (g_locale.id == 25 ? "_wotlk" : "") + "/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
						}
					}
				}
			}
		}
	}
};
