var talent_details=0;var tabtotals=new Array();var active_inc=0;var active_pop=0;var level_cap=70;var DTT={};function talent_onclick(id,e,neg){if(active_inc++)return;if(!e){e=window.event;}if(e.button==2||e.shiftKey||e.altKey||e.ctrlKey||neg){setTimeout("talent_sub("+id+")",5);}else{setTimeout("talent_add("+id+")",5);}if(window.event){window.event.returnValue=false;}return false;}function cl(func,a){return function(){func(a);return false;};}function cle(func,a,b){return function(e){func(a,e,b);return false;};}function talent_init(){T.tto(30,30);function omo(tid){return function(e){T.tt(this,e,talent_tt(tid))};}T('div').each(function(){var tid=this.id;var m=tid.match(/^t(\d+)/);if(m&&m[1]){tid=m[1];this.onmouseover=omo(tid);this.onmousedown=function(){if(window.event)window.event.returnValue=false;return false;};this.onmouseup=cle(talent_onclick,tid);this.oncontextmenu=cle(talent_onclick,tid,true);this.ondblclick=cle(talent_onclick,tid);}});for(id in D){var tab=D[id][3];var tier=D[id][4];if(!DTT[tab]){DTT[tab]={};DTT[tab].t=0;}if(!DTT[tab][tier]){DTT[tab][tier]={};DTT[tab][tier].l=new Array();DTT[tab][tier].t=0;}DTT[tab][tier].l.push(id);if(D[id][5]){for(i in D[id][5]){var prereq=D[id][5][i];var pid=prereq[0];var pv=prereq[1];if(!D[pid][8])D[pid][8]=new Array();D[pid][8].push([id,pv]);}}}var s=location+"";var l=s.split('#');if(l[1]!=null){talent_frombits(l[1]);}for(id in D){var tab=D[id][3],tier=D[id][4];DTT[tab][tier].t+=D[id][1];DTT[tab].t+=D[id][1];}talent_activescan();talent_summary();init_level_cap();}function talent_total(){var total=0;for(tab in DTT){total+=DTT[tab].t;}return total;}function talent_activescan(deep){var total=talent_total();if(levelreq(total+1)>level_cap){for(id in D){if(D[id][1]>0){talent_active(id,1);}else{talent_inactive(id);}}}else{for(id in D){if(talent_prereq(id)==""){talent_active(id);}else if(deep){talent_inactive(id);}}}}function talent_active(id,c){D[id][7]=true;var t=$('t'+id);if(!t)return;var b=t.style.backgroundPosition;var m=b.split(' ');t.style.backgroundPosition='-40px '+m[1];T('%l'+id).Css('backgroundColor','#EEEE00');c=(c||D[id][1]==D[id][2])?'#FF0':'#0F0';talent_color(id,c);}function talent_color(id,c){T('#p'+id).parents().Css('color',c);}function talent_inactive(id){D[id][7]=false;var t=$('t'+id);if(!t)return;var b=t.style.backgroundPosition;var m=b.split(' ');t.style.backgroundPosition='0px '+m[1];T('%l'+id).Css('backgroundColor','#888888');talent_color(id,'#888');}function talent_add(id){var total=talent_total();active_inc=0;if(levelreq(total+1)>level_cap)return talent_as(id,1);if(talent_prereq(id)==""){if(D[id][1]>=D[id][2])return talent_as(id,1);D[id][1]++;if(D[id][1]==D[id][2])talent_active(id);$('p'+id).innerHTML=D[id][1];var tab=D[id][3],tier=D[id][4];DTT[tab][tier].t++;DTT[tab].t++;if(DTT[tab].t%tierpoints==0){var l=DTT[tab][DTT[tab].t/tierpoints+1];if(l){l=l.l;for(i in l){var lid=l[i];if(talent_prereq(lid)=="")talent_active(lid);}}}for(i in D[id][8]){var p=D[id][8][i];var pid=p[0],pv=p[1];if(pv<=D[id][1]){if(talent_prereq(pid)=="")talent_active(pid);}}if(levelreq(total+1)>=level_cap){talent_activescan();}talent_as(id);}else{talent_as(id,1);}}function talent_sub(id){var total=talent_total();active_inc=0;if(D[id][1]<=0)return talent_as(id,1,"Already zero");for(i in D[id][8]){var p=D[id][8][i];if(D[p[0]][1]>0){if(D[id][1]<=p[1]){return talent_as(id,1,"Postreqs exist: id "+p[0]+" has current value "+D[p[0]][1]);}}}var sum=0,tab=D[id][3],tier=D[id][4];for(var i=1;i<=tier;i++){sum+=DTT[tab][i].t;}for(var i=tier+1;DTT[tab][i];i++){var t=DTT[tab][i].t;if(t>0&&sum==(i-1)*tierpoints){return talent_as(id,1,"Tier lock");}sum+=t;}D[id][1]--;$('p'+id).innerHTML=D[id][1];DTT[tab][tier].t--;DTT[tab].t--;if(DTT[tab].t%tierpoints==tierpoints-1){var l=DTT[tab][(DTT[tab].t+1)/tierpoints+1];if(l){l=l.l;for(i in l){talent_inactive(l[i]);}}}for(i in D[id][8]){var p=D[id][8][i];var pid=p[0],pv=p[1];if(pv>D[id][1]){talent_inactive(pid);}}if(level_cap<levelreq(total+1)){talent_activescan();}talent_active(id);talent_as(id,0,"Done");}function talent_as(id,bad,msg){if(!bad){T.ttdiv().innerHTML=talent_tt(id);talent_summary();if(active_pop){clearTimeout(active_pop);}}else{T.ttdiv().innerHTML=talent_tt(id,1);talent_flash(id);}}function talent_flash(id){$('t'+id).style.borderLeft='2px solid red';$('t'+id).style.borderRight='2px solid red';setTimeout("$('t'+"+id+").style.border=''",5);}function talent_summary(){var total=0;for(var i=1;tabnum[i];i++){T('#tab'+i+'count').Fill(DTT[tabnum[i]].t);total+=DTT[tabnum[i]].t}T('#totalspent').Fill(total);var level=levelreq(total);T('#levelreq').Fill(level);talent_tobits();}function init_level_cap(){T('#levelcap').Fill("<a href='javascript:change_level_cap();' class=x title='Click to change level cap'>"+level_cap+"</a>");}function change_level_cap(u){if(u){var m=T('#levelcap').find('input').a[0].value.match(/(\d+)/);if(m[1]){level_cap=m[1];talent_activescan();init_level_cap();}}else{T('#levelcap').Fill("<input id='levelcap' value='"+level_cap+"' size=3 onblur='change_level_cap(1)' onchange='change_level_cap(1)'>");T('#levelcap').find('input').a[0].select();}}function talent_detail(toggle){talent_details=toggle;talent_summary();}function talent_clear(tab){if(tab){DTT[tab].t=0;for(var i=1;DTT[tab][i];i++){var t=DTT[tab][i];t.t=0;for(j in t.l){var id=t.l[j];D[id][1]=0;T('#p'+id).Fill(0);}}}else{for(tab in DTT){talent_clear(tab);}}talent_summary();talent_activescan(1);}function talent_tt(id,bold){var t="<table class=ttb width=325><tr><td>"+D[id][0]+"<br>Rank "+D[id][1]+"/"+D[id][2]+"<br>";t+=talent_prereq(id,bold);t+="<br>";var rank=0;while(rank<D[id][2]){rank++;if(D[id][1]==rank){t+="<div style='color:#FFFF00;font-size:90%;'>"+Ra[id][rank-1]+"</div>";}else{var tt=Ra[id][rank-1];if(tt.length>80&&(rank>1||D[id][1]>0)&&rank!=D[id][2]){tt=tt.substr(0,80)+"...";}t+="<div style='color:#999999;font-size:90%;'>"+tt+"</div>";}}return t+"</td></tr></table>";}function talent_ttd(id){var t="<table class=ttb width=275 style='font-size:90%'><tr><td>"+D[id][0]+"<br>Rank "+D[id][1]+"/"+D[id][2]+"<br>";t+=Ra[id][D[id][1]-1];return t+"</td></tr></table>";}function talent_prereq(id,bold){var t="";var red="<font color=#FF0000>";var rede="</font>";if(bold){red+="<b>";rede="</b>"+rede;}if(D[id][5]){for(i in D[id][5]){var prereq=D[id][5][i];if(D[prereq[0]][1]<prereq[1]){t+=""+red+"Requires "+prereq[1]+" point"+(prereq[1]==1?"":"s")+" in "+D[prereq[0]][0]+rede+"<br>";}}}if(D[id][4]>1){var tabreq=tierpoints*(D[id][4]-1);var tab=D[id][3],tier=D[id][4],dt=DTT[tab],sum=0;for(var i=1;i<tier;i++){sum+=dt[i].t;}if(tabreq>sum){t+=red+"Requires "+(tierpoints*(D[id][4]-1))+" points in "+D[id][3]+rede+"<br>";}}return t;}function talent_tab(id){for(i in tabs){hide(i);}show(id);}function talent_tobits(){var b=new Array();for(id in D){var tab=D[id][3];if(!b[tab]){b[tab]=new Array();for(var i=0;i<100;i++)b[tab][i]=0;}var o=D[id][6];var v=D[id][1];for(var i=0;i<=2;i++){if(v&Math.pow(2,i)){var s=parseInt((o+i)/6);b[tab][s]+=1<<(o+i-s*6);if(b[tab][s]>=64){}}}}var url=new Array();for(var tn=1;tabnum[tn];tn++){url.push(bits2string(b[tabnum[tn]]));}url=url.join("/");url=url.replace(/\/+$/g,"");if(url=="")jump("#/"); else jump("#"+url);}function talent_frombits(s){for(id in D){D[id][1]=0;T('#p'+id).Fill(0);}var tabs=s.split("/");var b=new Array();for(var i=1;tabnum[i];i++){var t=tabs[i-1];if(!t){b[tabnum[i]]=[];}else{b[tabnum[i]]=string2bits(t);}}for(id in D){var tab=D[id][3];var o=D[id][6];var v=0;var m=D[id][2];var x=m<2?0:(m<4?1:2);for(var i=0;i<=x;i++){var s=parseInt((o+i)/6);if(b[tab][s]&&b[tab][s]&1<<(o+i-s*6)){v+=Math.pow(2,i);}}if(v){D[id][1]=v;$('p'+id).innerHTML=v;}}talent_summary();}var s2b;function string2bits(s){var b=new Array();if(!s2b){s2b=new Array();s2b['.']=63;s2b[',']=62;for(var i=0;i<=9;i++)s2b[i]=i;for(var i=97;i<=122;i++)s2b[String.fromCharCode(i)]=i-87;for(var i=65;i<=90;i++)s2b[String.fromCharCode(i)]=i-29;}for(var n=0,l=s.length;n<l;n++){var c=s.charAt(n);b.push(s2b[c]);}return b;}function bits2string(b){var s="";var i,v;for(var n=0;n<100;n++){v=b[n];i=0;if(v<=9){s+=""+v;}else if(v<36){i=v+87;}else if(v<62){i=v+29;}else if(v<63){s+=',';}else if(v<64){s+='.';}else{}if(i)s+=String.fromCharCode(i);}return s.replace(/0+$/,"");}