var $TongCNWOWTalentCalculator;
function TalentCalculator()
{
  var pathArray=[];
  
  pathArray[11] = 'wotlk/js/druid.js';
  pathArray[6] = 'wotlk/js/deathnight.js';
  pathArray[3] = 'wotlk/js/hunter.js';
  pathArray[8] = 'wotlk/js/mage.js';
  pathArray[2] = 'wotlk/js/paladin.js';
  pathArray[5] = 'wotlk/js/priest.js';
  pathArray[4] = 'wotlk/js/rogue.js';
  pathArray[7] = 'wotlk/js/shaman.js';
  pathArray[9] = 'wotlk/js/warlock.js';
  pathArray[1] = 'wotlk/js/warrior.js';
  $TongCNWOWTalentCalculator=this;
  var s=56;
  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
    }
    ,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=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>"
      }
    }
    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,"q7");
    }
  };
  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(http://images.tongcn.net/wow/wotlk/talents/backgrounds/"+n[Ae.n].name+"_"+(AW+1)+".jpg"+""+")";
    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(http://images.tongcn.net/wow/wotlk/talents/icon/"+n[Ae.n].name+"_"+(AW+1)+".jpg"+""+")";
    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="http://images.tongcn.net/wow/wotlk/talents/icon/"+n[AL].name+"_"+AK+".jpg";
        ae(AI,AJ)
      }
    }
    g_ajaxIshRequest(pathArray[AL]);
  }
  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://images.tongcn.net/wow/wotlk/talents/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="./wotlk.aspx?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[0].innerHTML=" ("+AM[AK].n+")"
  }
  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="q7">';
      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="q7">'+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="q7">'+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://images.tongcn.net/wow/wotlk/talents/tree/"+n[AJ.n].name+"_"+(i+1)+".gif"+""+")"
  }
  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
          }
        }
      }
    }
  }
}
};
