
var Duplicatelist=new Object();var trainselectgap=5;var leaderBonus=5;var prevrace;var arcaneskills=new Array();var racelist=new Object();var racestats=new Object();var raceslots=new Object();var questlist=new Object();var eqlist=new Object();var questamount;var expsavefactor;var prevskillboon;var prevspellboon;var prevskillSS;var prevspellSS;var prevguildsel0;var backgroundtrainables=new Object();var levelcosts=new Array();var boonlist=new Array();var allguilds=new Object();var allguildskills=new Object();var allguildspells=new Object();var allguildreqs=new Object();var rebirthguilds=new Object();var raceguilds=new Object();var prevguildsel=new Array();var prevlevelsel=new Array();var magespecs=new Object();var alleqslots=new Object();var guildselects;var abilities;var tip_id;var tooltiptimer;window.onload=function(){var i;var guildname;var statname;var guildlevel;var elem;var slotname;var currentDate=new Date();initVariables();document.getElementById('currentmonth').value=currentDate.getMonth();document.getElementById('currentday').value=currentDate.getDate();document.getElementById('currentyear').value=currentDate.getFullYear();i=1;while(i<=guildselects){guildname=eval("document.getElementById('hiddenguildname"+i+"').value;");if(guildname!=" "){guildname=eval("document.getElementById('guildSelection"+i+"').options[document.getElementById('guildSelection"+i+"').selectedIndex].value;");guildlevel=eval("document.getElementById('guildlevelSelection"+i+"').options[document.getElementById('guildlevelSelection"+i+"').selectedIndex].value;");eval("updateGuildTrainables('"+guildname+"',"+guildlevel+","+i+");");}
i=i+1;}
updateMageSpecials();updateTPointSelects();updateSailorSelects();updateRaceGuild();updateGuildStats();updateQuestExp();updateQuestTpoints(1);document.getElementById('raceSelection').onchange=function(){updateRaceGuild();updateTPointSelects();updateUsedTPoints();updateGuildStats();changeStats();updateTrainableSelects();updateMaxes();updateRaceDetails();updateEqSetSelects()};document.getElementById('bgSelection').onchange=function(){updateTPointSelects();updateUsedTPoints();changeGuilds();updateTotalLevels(0);updateGuildStats();checkSSlevels();changeStats();updateMaxes();updateLevelExpandTPoints();updateQuestExp();updateTotalExp();};document.getElementById('rebirthSelection').onchange=function(){checkRebirth();updateRaces();updateRaceGuild();updateGuildLevels(0);updateTotalLevels(0);updateMaxes();updateLevelExpandTPoints();updateQuestExp();updateTotalExp();};document.getElementById('raceCheckBox').onclick=function(){changeStats();updateMaxes();};document.getElementById('lastmonthselect').onchange=function(){updateDays(0);updateReincCosts();};document.getElementById('lastdayselect').onchange=function(){updateReincCosts();};document.getElementById('lastyearselect').onchange=function(){updateMonths(0);updateDays(0);updateReincCosts();};document.getElementById('nextmonthselect').onchange=function(){updateDays(1);updateReincCosts();};document.getElementById('nextdayselect').onchange=function(){updateReincCosts();};document.getElementById('nextyearselect').onchange=function(){updateMonths(1);updateDays(1);updateReincCosts();};i=1;while(i<4){eval("document.getElementById('eqsetfilteroff"+i+"').onclick=function(){fillEqSelectOptions("+i+");};");eval("document.getElementById('eqsetfilterdef"+i+"').onclick=function(){fillEqSelectOptions("+i+");};");eval("document.getElementById('eqsetfilterspr"+i+"').onclick=function(){fillEqSelectOptions("+i+");};");eval("document.getElementById('eqsetfilterint"+i+"').onclick=function(){fillEqSelectOptions("+i+");};");eval("document.getElementById('eqsetfilterwis"+i+"').onclick=function(){fillEqSelectOptions("+i+");};");i++;}
updateEqSetSelects();for(slotname in alleqslots){i=0;while(i<alleqslots[slotname]){updateEqSetShortname(1,slotname,i);updateEqSetShortname(2,slotname,i);updateEqSetShortname(3,slotname,i);eval("document.getElementById('set1slot"+slotname+"index"+i+"').onchange=function(){updateMultislotEq(1,'"+slotname+"',"+i+");updateEqSetTotals(1);};");eval("document.getElementById('set2slot"+slotname+"index"+i+"').onchange=function(){updateMultislotEq(2,'"+slotname+"',"+i+");updateEqSetTotals(2);};");eval("document.getElementById('set3slot"+slotname+"index"+i+"').onchange=function(){updateMultislotEq(3,'"+slotname+"',"+i+");updateEqSetTotals(3);};");i++;}}
i=1;while(i<=guildselects){if(i!=1)
eval("document.getElementById('guildSelection"+i+"').onchange=function(){checkAvailableLevels("+i+");};");eval("document.getElementById('guildlevelSelection"+i+"').onchange=function(){updateGuildLevels("+
i+");updateTotalLevels("+i+");updateGuildStats();changeStats();updateMaxes();updateLevelExpandTPoints();updateSubExp("+
i+");updateQuestExp();updateTotalExp("+i+");};");updateSubExp(i);i=i+1;}
for(i in boonlist){statname=boonlist[i];if((statname=="Con")||(statname=="Dex")||(statname=="Str")||(statname=="Wis")||(statname=="Int")||(statname=="Skill")||(statname=="Spell")||(statname=="Super")){if((statname=="Skill")||(statname=="Spell")){eval("document.getElementById('"+statname+"boonSelection').onchange=function(){changeStats();updateTrainableSelects();updateTaskPoints();};");eval("document.getElementById('"+statname+"SSSelection').onchange=function(){checkSSlevels();changeStats();updateTrainableSelects();};");}
else{if(statname!="Super"){eval("document.getElementById('"+statname+"SSSelection').onchange=function(){checkSSlevels();changeStats();updateMaxes();updateSSexp();updateTotalExp();};");eval("document.getElementById('"+statname+"tpointSelection').onchange=function(){changeStats();updateMaxes();updateUsedTPoints();};");eval("document.getElementById('"+statname+"eqSelection').onchange=function(){changeStats();updateMaxes();};");}
eval("document.getElementById('"+statname+"boonSelection').onchange=function(){changeStats();updateMaxes();updateTaskPoints();};");}}
else{eval("document.getElementById('"+statname+"boonSelection').onchange=function(){changeStats();updateTaskPoints();};");}}
document.getElementById('sailorGuildSelection').onchange=function(){updateSailorSelects();updateSailorStats(0);changeStats();updateMaxes();};document.getElementById('ConstitutionarrSelection').onchange=function(){updateSailorStats(0);changeStats();updateMaxes();};document.getElementById('DexterityarrSelection').onchange=function(){updateSailorStats(1);changeStats();updateMaxes();};document.getElementById('StrengtharrSelection').onchange=function(){updateSailorStats(2);changeStats();updateMaxes();};document.getElementById('WisdomarrSelection').onchange=function(){updateSailorStats(3);changeStats();updateMaxes();};document.getElementById('IntelligencearrSelection').onchange=function(){updateSailorStats(4);changeStats();updateMaxes();};i=1;while(i<=questamount){elem=eval("document.getElementById('questnumber"+i+"')");if(elem){eval("elem.onclick=function(){updateQuestTpoints("+i+");updateQuestExp();updateTotalExp();};");eval("document.getElementById('questspan"+i+"').onmouseover=function(){updateTipContent("+i+","+i+",3,1);};");eval("document.getElementById('questspan"+i+"').onmouseout=function(){updateTipContent("+i+","+i+",3,0);};");}
i=i+1;}
i=1;while(i<=abilities){eval("document.getElementById('ability"+i+"').onclick=function(){updateAbilityExp();updateTotalExp();};");eval("document.getElementById('abilityspan"+i+"').onmouseover=function(){updateTipContent("+i+","+i+",2,1);};");eval("document.getElementById('abilityspan"+i+"').onmouseout=function(){updateTipContent("+i+","+i+",2,0);};");i=i+1;}
document.getElementById('questcheckbox2').onclick=function(){updateQuests(2);};document.getElementById('questcheckbox4').onclick=function(){updateQuests(4);};document.getElementById('questcheckbox6').onclick=function(){updateQuests(6);};document.getElementById('questcheckbox8').onclick=function(){updateQuests(8);};document.getElementById('questcheckbox10').onclick=function(){updateQuests(10);};document.getElementById('eqsimtoggle').onclick=function(){toggleDiv('simeqsim');};fillYears(0);fillYears(1);updateMonths(0);updateMonths(1);updateDays(0);updateDays(1);updateReincCosts();}
function emptySelect(length,selectelem,emptiness){var i;var opt;var ex;i=0;while(i<=length){selectelem.remove(0);i=i+1;}
if(emptiness==1){opt=document.createElement('option');opt.text="-";opt.value=0;try{selectelem.add(opt,null);}
catch(ex){selectelem.add(opt);}}}
function fillSelect(length,selectelem,itemlist,whereto){var opt;var i;var ex;i=0;while(i<length){opt=document.createElement('option');if(length==1){opt.text=itemlist;opt.value=itemlist;}
else{opt.text=itemlist[i];opt.value=itemlist[i];}
try{selectelem.add(opt,whereto);}
catch(ex){if(whereto){selectelem.add(opt,selectelem.selectedIndex);}
else{selectelem.add(opt);}}
i=i+1;}}
function initVariables(){var params;var i;var allguildstuff=new Object();var guildname;var racename;guildselects=document.getElementById("guildselects").value;prevrace=document.getElementById("raceSelection").options[document.getElementById("raceSelection").selectedIndex].value;prevguildsel[0]=document.getElementById("rebirthSelection").value;prevsskillSS=document.getElementById("SSSkillMax").value;prevspellSS=document.getElementById("SSSpellMax").value;prevskillboon=document.getElementById("boonSkillMax").value;prevspellboon=document.getElementById("boonSpellMax").value;abilities=document.getElementById("abilities").value;i=1;while(i<guildselects){prevguildsel[i]=eval("document.getElementById('guildSelection"+i+"').options[document.getElementById('guildSelection"+i+"').selectedIndex].text;");prevlevelsel[i]=eval("document.getElementById('guildlevelSelection"+i+"').options[document.getElementById('guildlevelSelection"+i+"').selectedIndex].value;");i=i+1;}
params='{"bgguilds":1}';$.ajax({type:"GET",url:"simbackgrounds.php",data:eval("("+params+")"),async:false,success:function(data){allguilds=eval("("+data+");");}});params='{"arcaneskills":1}';$.ajax({type:"GET",url:"simskills.php",data:eval("("+params+")"),async:false,success:function(data){arcaneskills=eval("("+data+");");for(i in arcaneskills){arcaneskills[i]=arcaneskills[i].replace(/ /g,"_");}}});params='{"rebirthguilds":1}';$.ajax({type:"GET",url:"simbackgrounds.php",data:eval("("+params+")"),async:false,success:function(data){rebirthguilds=eval("("+data+");");}});params='{"racelist":1}';$.ajax({type:"GET",url:"simraces.php",data:eval("("+params+")"),async:false,success:function(data){racelist=eval("("+data+");");}});$.ajax({type:"GET",url:"simraceguilds.php",async:false,success:function(data){raceguilds=eval("("+data+");");}});params='{"rstats":1}';$.ajax({type:"GET",url:"simraces.php",data:eval("("+params+")"),async:false,success:function(data){racestats=eval("("+data+");");}});params='{"eqs":1}';$.ajax({type:"GET",url:"simeq.php",data:eval("("+params+")"),async:false,success:function(data){eqlist=eval("("+data+");");}});params='{"raceslots":1}';$.ajax({type:"GET",url:"simraces.php",data:eval("("+params+")"),async:false,success:function(data){raceslots=eval("("+data+");");}});params='{"slots":1}';$.ajax({type:"GET",url:"simraces.php",data:eval("("+params+")"),async:false,success:function(data){alleqslots=eval("("+data+");");}});params='{';i=1;for(racename in raceguilds){if(params!='{')
params=params+',';params=params+'"guildskill'+i+'":"'+raceguilds[racename]+'","level'+i+'":5,"guildspell'+i+'":"'+raceguilds[racename]+'","guildreq'+i+'":"'+raceguilds[racename]+'"';i=i+1;}
params=params+'}';$.ajax({type:"GET",url:"simguilds.php",data:eval("("+params+")"),async:false,success:function(data){allguildstuff=eval("("+data+");");for(guildname in allguildstuff['skills']){allguildskills[guildname]=new Object();allguildskills[guildname]["5"]=allguildstuff['skills'][guildname];}
for(guildname in allguildstuff['spells']){allguildspells[guildname]=new Object();allguildspells[guildname]["5"]=allguildstuff['spells'][guildname];}
for(guildname in allguildstuff['reqs']){allguildreqs[guildname]=new Object();allguildreqs[guildname]["5"]=allguildstuff['reqs'][guildname];}}});params='{"questlistlvl":1}';$.ajax({type:"GET",url:"simquests.php",data:eval("("+params+")"),async:false,success:function(data){questlist=eval("("+data+");");questamount=questlist['length'];expsavefactor=questlist['expsavefactor'];expsavefactor2=questlist['expsavefactor2'];}});levelcosts=[0,200,117,220,278,328,386,457,538,751,887,1046,1235,1457,1719,2029,2394,2823,3334,3934,4342,5478,6464,7628,9001,10621,12533,14789,17451,20593,24300,29534,35896,43628,53025,64447,78329,95201,115707,140631,170923,207000,252000,306000,372000,453000,550000,669000,813000,989000,1202000,1372000,1380000,1389000,1398000,1408000,1418000,1429000,1441000,1453000,1464000,1478000,1492000,1507000,1522000,1538000,1555000,1572000,1591000,1610000,1631000,2106000,2212000,2322000,2439000,2560000,2689000,2822000,2964000,3112000,3268000,3431000,3603000,3783000,3972000,4171000,4380000,4600000,4829000,5070000,5324000,16682000,17683000,18744000,19868000,21061000,22324000,23664000,25084000,26589000,28184000];boonlist=["Str","Dex","Con","Int","Wis","Skill","Spell","Super","Meta","QL","AllRes","TypeRes","MoonImpro","MoreExp","Dam","Speed","SteadyHand","AlignDrift","SPR","HPR","RigidSkin","Avoid"];backgroundtrainables={"Nomad":{"Stargazing":30,"Swim":20,"Throw weight":15,"Push":25,"Attack":30,"Bludgeons":30,"Axes":25,"Fire building":20,"Riding":20,"Camping":20,"Hunting":15,"Torch creation":15,"Consider":10,"Fresh pants":10},"Civilized":{"Blacksmithing":20,"Compare":30,"Fresh pants":20,"Dodge":5,"Long blades":10,"Cast generic":10,"Bargain":15,"Consider":20,"Attack":20,"Short blades":10,"Riding":10,"Swim":25,"Light":30,"Quicksilver":5,"Magic missile":30,"Create money":20,"Create food":10,"Darkness":30,"Preserve corpse":20,"See invisible":10,"Detect alignment":15},"Magical":{"Cast generic":20,"Essence eye":25,"Stargazing":25,"Mana control":20,"Feather weight":10,"Mirror image":20,"Lightning bolt":35,"Floating letters":25,"Floating disc":20,"Acid arrow":25,"Moon sense":10,"Darkness":10,"Light":10},"Evil_Religious":{"Attack":25,"Short blades":5,"Ceremony":15,"Essence eye":10,"Bless":15,"Cast generic":10,"Water walking":10,"Cause critical wounds":10,"Cause light wounds":35,"Create food":10,"Cure light wounds":15},"Good_Religious":{"Essence eye":20,"Ceremony":20,"Bless":20,"Bludgeons":20,"Attack":25,"Cast generic":15,"Mana control":15,"Cure critical wounds":15,"Cure light wounds":30,"Create food":30,"Cure serious wounds":20}};magespecs['mage_acid']=1;magespecs['mage_asphyxiation']=1;magespecs['mage_cold']=1;magespecs['mage_fire']=1;magespecs['mage_electricity']=1;magespecs['mage_magical']=1;magespecs['mage_poison']=1;updateRaceDetails();tip_id=1;}
function checkAvailableLevels(selectnumber){var guildelem=eval("document.getElementById('guildSelection"+selectnumber+"')");var guildname;var prevguild=prevguildsel[selectnumber];var i;guildname=guildelem.options[guildelem.selectedIndex].text;if(((guildname=='-')||(prevguild!='-'))||(parseInt(100)-parseInt(document.getElementById("totallevels").value)>0)){updateGuildLevels(selectnumber);updateTotalLevels(selectnumber);updateGuildselects(selectnumber);updateMageSpecials();updateGuildStats();checkSSlevels();changeStats();if(prevguild=='SS'){updateTrainableSelects();}
updateMaxes();updateLevelExpandTPoints();updateSubExp(selectnumber);updateQuestExp();updateTotalExp();}
else{alert("You have no free levels.");i=0;while(i<guildelem.length){guildname=guildelem.options[i].text;if(guildname=='-'){guildelem.selectedIndex=i;break;}
i=i+1;}}}
function updateRaceGuild(){var racename=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var guildelem;var guildlevel;var guildname;var racelevel;var i;guildname=raceguilds[racename];guildelem=document.getElementById('guildSelection1');emptySelect(1,guildelem,0);fillSelect(1,guildelem,guildname,null);guildlevel=document.getElementById('guildlevelSelection1').options[document.getElementById('guildlevelSelection1').selectedIndex].value;updateGuildTrainables(guildname,guildlevel,1);prevguildsel[1]=guildname;}
function changeGuilds(){var i,j;var bg=document.getElementById("bgSelection").options[document.getElementById("bgSelection").selectedIndex].text;var guildelem;var selectelem;var opt;var guildlist=eval("allguilds['"+bg+"'];");var guilditems=new Array();j=2;while(j<=guildselects){eval("guildelem=document.getElementById('guildSelection"+j+"');");eval("selectelem=document.getElementById('guildlevelSelection"+j+"');");emptySelect(guildelem.length,guildelem,1);updateGuildTrainables('-',0,j);emptySelect(selectelem.length,selectelem,1);eval("prevguildsel["+j+"]='-';");i=0;for(i in guildlist){guilditems[i]=guildlist[i][0];}
fillSelect(guildlist.length,guildelem,guilditems,null);j=j+1;}}
function updateGuildselects(selectnumber){var thisguildelem=eval("document.getElementById('guildSelection"+selectnumber+"');");var guildname=thisguildelem.options[thisguildelem.selectedIndex].text;var prevguild=eval("prevguildsel["+selectnumber+"]");var guildelem;var tmpguild;var opt;var j;var i;j=2;while(j<=guildselects){eval("guildelem=document.getElementById('guildSelection"+j+"');");if(guildname=="-"){if(j!=selectnumber){fillSelect(1,guildelem,prevguild,null);}}
else{if(prevguild=="-"){if(j!=selectnumber){for(i=guildelem.options.length-1;i>=0;i--){eval("tmpguild=guildelem.options["+i+"].text;");if(tmpguild==guildname){guildelem.remove(i);break;}}}}
else{if(j!=selectnumber){for(i=guildelem.options.length-1;i>=0;i--){eval("tmpguild=guildelem.options["+i+"].text;");if(tmpguild==guildname){guildelem.remove(i);fillSelect(1,guildelem,prevguild,null);break;}}}}}
j=j+1;}
eval("prevguildsel["+selectnumber+"]='"+guildname+"';")}
function updateGuildLevels(selectnumber){var i;var j;var guildname=new Array(guildselects);var guildlist=new Array(guildselects);var elem;var guildindex;var totals;var availablelevels;var usedlevels=0;var prevguild=eval("prevguildsel["+selectnumber+"]");var bgname;var listmin;var listmax;var availmax;var rebirth=document.getElementById('rebirthSelection').options[document.getElementById('rebirthSelection').selectedIndex].value;i=0;while(i<=guildselects){if(i==0){guildname[i]=document.getElementById('rebirthSelection').options
[document.getElementById('rebirthSelection').selectedIndex].text;guildlist[i]=rebirthguilds;}
else{eval("guildname["+i+"]=document.getElementById('guildSelection"+i+"').options[document.getElementById('guildSelection"+i+"').selectedIndex].text;");bgname=document.getElementById('bgSelection').options
[document.getElementById('bgSelection').selectedIndex].text;guildlist[i]=eval("allguilds['"+bgname+"'];");}
i=i+1;}
if(prevguild!='-'){availablelevels=parseInt(100)-parseInt(document.getElementById('totallevels').value);if(selectnumber==0)
availablelevels=parseInt(availablelevels)+parseInt(prevlevelsel[1]);else
eval("availablelevels=parseInt(availablelevels)+parseInt(prevlevelsel["+selectnumber+"]);");}
else{availablelevels=parseInt(100)-parseInt(document.getElementById('totallevels').value);}
if(availablelevels==0)
return;i=0;for(i in guildlist[selectnumber]){if(guildlist[selectnumber][i][0]==guildname[selectnumber]){guildindex=i;}}
if(selectnumber==0){elem=document.getElementById('rebirthlevels');}
else{elem=eval("document.getElementById('guildlevelSelection"+selectnumber+"');");}
if((selectnumber==0)||(selectnumber==1)){if(rebirth=='Eternal')
listmin=2;if(rebirth=='Ancient')
listmin=3;if(rebirth=='Elder')
listmin=4;if(rebirth=='Mortal')
listmin=5;}
else{listmin=1;}
if(guildname[selectnumber]!="-"){if(selectnumber==0){elem.value=guildlist[selectnumber][guildindex][1];elem=document.getElementById('guildlevelSelection1');emptySelect(elem.length,elem,0);listmax=5;availmax=listmax;if(parseInt(availablelevels)<parseInt(listmax)){availmax=parseInt(availablelevels);}
i=availmax;while(i>=listmin){fillSelect(1,elem,i,null);i=i-1;}}
else{if((prevguild!='-')&&(prevguild==guildname[selectnumber])){}
else{emptySelect(elem.length,elem,0);listmax=guildlist[selectnumber][guildindex][1];availmax=listmax;if(parseInt(availablelevels)<parseInt(listmax)){availmax=parseInt(availablelevels);}
i=availmax;while(i>=listmin){fillSelect(1,elem,i,null);i=i-1;}}}}
else{emptySelect(elem.length,elem,1);}
i=0;while(i<=guildselects){if(i==0){elem=document.getElementById('rebirthlevels');usedlevels=elem.value;}
else{if(guildname[i]!='-'){elem=eval("document.getElementById('guildlevelSelection"+i+"');");usedlevels=parseInt(usedlevels)+parseInt(elem.options[elem.selectedIndex].value);}}
i=i+1;}
availablelevels=parseInt(100)-parseInt(usedlevels);i=0;while(i<=guildselects){if(i!=selectnumber){if(i==0){elem=document.getElementById('rebirthSelection');usedlevels=parseInt(usedlevels)+parseInt(elem.value);}
else{if((guildname[i]!='-')&&(guildname[i]!='0')){elem=eval("document.getElementById('guildlevelSelection"+i+"');");selectedvalue=elem.options[elem.selectedIndex].value;emptySelect(elem.length,elem,0);j=0;for(j in guildlist[i]){if(guildlist[i][j][0]==guildname[i]){guildindex=j;}}
if(i==1)
listmax=5;else
listmax=guildlist[i][guildindex][1];availmax=listmax;if(parseInt(listmax)-parseInt(availablelevels)>parseInt(selectedvalue)){availmax=parseInt(availablelevels)+parseInt(selectedvalue);}
if(i==1){if(rebirth=='Eternal')
listmin=2;if(rebirth=='Ancient')
listmin=3;if(rebirth=='Elder')
listmin=4;if(rebirth=='Mortal')
listmin=5;}
else{listmin=1;}
j=availmax;while(j>=listmin){fillSelect(1,elem,j,null);if(selectedvalue==elem.options[Math.abs(j-availmax)].value){elem.selectedIndex=Math.abs(j-availmax);}
j=j-1;}}}}
i=i+1;}
elem=eval("document.getElementById('guildlevelSelection"+selectnumber+"');");if(selectnumber!=0)
eval("prevlevelsel["+selectnumber+"]=elem.options[elem.selectedIndex].value;");}
function checkSSlevels(){var i;var guildname;var SSfound=0;i=2;while(i<=guildselects){eval("guildname=document.getElementById('guildSelection"+i+"').options[document.getElementById('guildSelection"+i+"').selectedIndex].text;");if(guildname=='SS'){SSfound=1;break;}
i=i+1;}
if(SSfound==0){i=0;while(document.getElementById('ConSSSelection').options[i].text!='0'){i++;}
document.getElementById('ConSSSelection').selectedIndex=i;i=0;while(document.getElementById('DexSSSelection').options[i].text!='0'){i++;}
document.getElementById('DexSSSelection').selectedIndex=i;i=0;while(document.getElementById('StrSSSelection').options[i].text!='0'){i++;}
document.getElementById('StrSSSelection').selectedIndex=i;i=0;while(document.getElementById('WisSSSelection').options[i].text!='0'){i++;}
document.getElementById('WisSSSelection').selectedIndex=i;i=0;while(document.getElementById('IntSSSelection').options[i].text!='0'){i++;}
document.getElementById('IntSSSelection').selectedIndex=i;i=0;while(document.getElementById('SkillSSSelection').options[i].text!='0'){i++;}
document.getElementById('SkillSSSelection').selectedIndex=i;i=0;while(document.getElementById('SpellSSSelection').options[i].text!='0'){i++;}
document.getElementById('SpellSSSelection').selectedIndex=i;}}
function checkRebirth(){var curlevel=document.getElementById('totallevels').value;var currace=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var rebirth=document.getElementById('rebirthSelection').options[document.getElementById('rebirthSelection').selectedIndex].value;var rebirthval;var prevrebirthval;if(rebirth=='Eternal')
rebirthval=3;if(rebirth=='Ancient')
rebirthval=2;if(rebirth=='Elder')
rebirthval=1;if(rebirth=='Mortal')
rebirthval=0;if(prevguildsel[0]=='Eternal')
prevrebirthval=3;if(prevguildsel[0]=='Ancient')
prevrebirthval=2;if(prevguildsel[0]=='Elder')
prevrebirthval=1;if(prevguildsel[0]=='Mortal')
prevrebirthval=0;if(racelist[currace]>rebirthval){alert("Race "+currace+" is not available to "+rebirth+" rebirth.");i=0;while(prevguildsel[0]!=document.getElementById('rebirthSelection').options[i].value){i=i+1;}
document.getElementById('rebirthSelection').selectedIndex=i;return;}
if((100-curlevel)<(prevrebirthval-rebirthval)){alert("Can not go over 100 levels.");i=0;while(prevguildsel[0]!=document.getElementById('rebirthSelection').options[i].value){i=i+1;}
document.getElementById('rebirthSelection').selectedIndex=i;return;}}
function updateRaces(){var raceelem=document.getElementById('raceSelection');var currace=raceelem.options[raceelem.selectedIndex].value;var rebirth=document.getElementById('rebirthSelection').options[document.getElementById('rebirthSelection').selectedIndex].value;var rebirthval=0;var i=0;var racename;if(rebirth=='Eternal')
rebirthval=3;if(rebirth=='Ancient')
rebirthval=2;if(rebirth=='Elder')
rebirthval=1;if(rebirth=='Mortal')
rebirthval=0;emptySelect(raceelem.length,raceelem,0);fillSelect(1,raceelem,currace,null);for(racename in racelist){if((racename!=currace)&&(racelist[racename]<=rebirthval))
fillSelect(1,raceelem,racename,null);}
prevguildsel[0]=rebirth;}
function updateTotalLevels(selectnumber){var i;var totals;var guildname;var level;totals=parseInt(document.getElementById('rebirthlevels').value);i=1;while(i<=guildselects){totals=parseInt(totals)+parseInt(eval("document.getElementById('guildlevelSelection"
+i+"').options[document.getElementById('guildlevelSelection"
+i+"').selectedIndex].value;"));i=i+1;}
document.getElementById('totallevels').value=totals;updateTotalGold();if(selectnumber>0){eval("guildname=document.getElementById('guildSelection"
+selectnumber+"').options[document.getElementById('guildSelection"
+selectnumber+"').selectedIndex].text;");eval("level=document.getElementById('guildlevelSelection"
+selectnumber+"').options[document.getElementById('guildlevelSelection"
+selectnumber+"').selectedIndex].value;");updateGuildTrainables(guildname,level,selectnumber);}}
function updateRaceDetails(){var racename;var params;var details=new Object();eval("racename=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].text;");params='{"details":"'+racename+'"}';$.get("simraces.php",eval("("+params+")"),function(data){details=eval("("+data+");");document.getElementById('details').value=details['details'];});}
function updateTotalGold(){var i=2;var j;var guildname;var guildlevels=0;var totals=parseInt(document.getElementById('totallevels').value);var params;var stats=new Object();var totalstring;var levels;var gold;var totalgold=0;while(i<=guildselects){eval("guildname=document.getElementById('guildSelection"
+i+"').options[document.getElementById('guildSelection"
+i+"').selectedIndex].value;");if((guildname!='SS')&&(guildname!='-')&&(guildname!='0')){eval("levels=document.getElementById('guildlevelSelection"
+i+"').options[document.getElementById('guildlevelSelection"
+i+"').selectedIndex].value;");j=2;guildlevels=parseInt(guildlevels)+1;while(j<=levels){guildlevels=parseInt(guildlevels)+1;gold=parseInt(guildlevels)*parseInt(guildlevels)*10;if(gold>50000)
gold=50000;totalgold=parseInt(totalgold)+parseInt(gold);j=j+1;}}
i=i+1;}
totalstring=formatNumber(totalgold);document.getElementById('totalgold').value=totalgold;document.getElementById('totalgoldstring').value=totalstring;}
function updateGuildStats(){var params;var i;var guildname;var guildlevel;var guildlist=new Array();var sicritdata=new Object();var stats=new Object();sicritdata['background']=document.getElementById('bgSelection').options[document.getElementById('bgSelection').selectedIndex].value;i=1;while(i<=guildselects){eval("guildname=document.getElementById('guildSelection"
+i+"').options[document.getElementById('guildSelection"
+i+"').selectedIndex].value;");if((guildname!='-')&&(guildname!='SS')&&(guildname!='0')){eval("guildlevel=document.getElementById('guildlevelSelection"
+i+"').options[document.getElementById('guildlevelSelection"
+i+"').selectedIndex].value;");eval("sicritdata['guildname"+i+"']='"+guildname+"';");eval("sicritdata['guildlevel"+i+"']="+guildlevel+";");}
i=i+1;}
$.ajax({type:"GET",url:"simguildbonuses.php",data:sicritdata,async:false,success:function(data){stats=eval("("+data+");");document.getElementById('guildsConstitution').value=stats['Con'];document.getElementById('guildsDexterity').value=stats['Dex'];document.getElementById('guildsStrength').value=stats['Str'];document.getElementById('guildsWisdom').value=stats['Wis'];document.getElementById('guildsIntelligence').value=stats['Int'];}});}
function updateMaxes(){var racename=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var bgname=document.getElementById('bgSelection').options[document.getElementById('bgSelection').selectedIndex].value;var guildname='-';var sicritdata=new Object();var i;var stats=new Object();var data;sicritdata['bgname']=bgname;sicritdata['rebirth']=document.getElementById('rebirthSelection').value;sicritdata['race']=racename;i=1;while(i<=guildselects){eval("guildname=document.getElementById('guildSelection"
+i+"').options[document.getElementById('guildSelection"
+i+"').selectedIndex].value;");if((guildname!='-')&&(guildname!='SS')){eval("guildlevel=document.getElementById('guildlevelSelection"
+i+"').options[document.getElementById('guildlevelSelection"
+i+"').selectedIndex].value;");eval("sicritdata['guildname"+i+"']='"+guildname+"';");eval("sicritdata['guildlevel"+i+"']="+guildlevel+";");}
i=i+1;}
sicritdata['Wis']=document.getElementById('Wisdom').value;sicritdata['Int']=document.getElementById('Intelligence').value;sicritdata['Con']=document.getElementById('Constitution').value;sicritdata['Dex']=document.getElementById('Dexterity').value;sicritdata['Str']=document.getElementById('Strength').value;sicritdata['Siz']=document.getElementById('Size').value;$.get("simstatmaxes.php",sicritdata,function(data){stats=eval("("+data+");");document.getElementById('SPMax').value=stats['spmax'];document.getElementById('HPMax').value=stats['hpmax'];document.getElementById('EPMax').value=stats['epmax'];});}
function changeStats(){var i;var elem;var name;var params;var stats;elem=document.getElementById('raceSelection');name=elem.options[elem.selectedIndex].text;stats=racestats[name];prevrace=name;document.getElementById('raceDexterity').value=parseInt(parseInt(stats['Dex'])*parseFloat(0.62));document.getElementById('raceConstitution').value=parseInt(parseInt(stats['Con'])*parseFloat(0.62));document.getElementById('raceStrength').value=parseInt(parseInt(stats['Str'])*parseFloat(0.62));document.getElementById('raceWisdom').value=parseInt(parseInt(stats['Wis'])*parseFloat(0.62));document.getElementById('raceIntelligence').value=parseInt(parseInt(stats['Int'])*parseFloat(0.62));document.getElementById('raceSize').value=stats['Siz'];document.getElementById('raceSkillMax').value=stats['Skill'];document.getElementById('raceSpellMax').value=stats['Spell'];elem=document.getElementById('DexboonSelection');document.getElementById('boonDexterity').value=parseInt(elem.options[elem.selectedIndex].value);elem=document.getElementById('ConboonSelection');document.getElementById('boonConstitution').value=parseInt(elem.options[elem.selectedIndex].value);elem=document.getElementById('StrboonSelection');document.getElementById('boonStrength').value=parseInt(elem.options[elem.selectedIndex].value);elem=document.getElementById('WisboonSelection');document.getElementById('boonWisdom').value=parseInt(elem.options[elem.selectedIndex].value);elem=document.getElementById('IntboonSelection');document.getElementById('boonIntelligence').value=parseInt(elem.options[elem.selectedIndex].value);elem=document.getElementById('SuperboonSelection');document.getElementById('boonSuperChar').value=parseInt(elem.options[elem.selectedIndex].value);elem=document.getElementById('SkillboonSelection');document.getElementById('boonSkillMax').value=parseInt(elem.options[elem.selectedIndex].value);elem=document.getElementById('SpellboonSelection');document.getElementById('boonSpellMax').value=parseInt(elem.options[elem.selectedIndex].value);elem=document.getElementById('DexSSSelection');document.getElementById('SSDexterity').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('ConSSSelection');document.getElementById('SSConstitution').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('StrSSSelection');document.getElementById('SSStrength').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('IntSSSelection');document.getElementById('SSIntelligence').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('WisSSSelection');document.getElementById('SSWisdom').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('SkillSSSelection');document.getElementById('SSSkillMax').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('SpellSSSelection');document.getElementById('SSSpellMax').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('DexeqSelection');document.getElementById('eqDexterity').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('ConeqSelection');document.getElementById('eqConstitution').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('StreqSelection');document.getElementById('eqStrength').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('InteqSelection');document.getElementById('eqIntelligence').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('WiseqSelection');document.getElementById('eqWisdom').value=elem.options[elem.selectedIndex].value;elem=document.getElementById('DextpointSelection');document.getElementById('tpointDexterity').value=elem.selectedIndex;elem=document.getElementById('ContpointSelection');document.getElementById('tpointConstitution').value=elem.selectedIndex;elem=document.getElementById('StrtpointSelection');document.getElementById('tpointStrength').value=elem.selectedIndex;elem=document.getElementById('InttpointSelection');document.getElementById('tpointIntelligence').value=elem.selectedIndex;elem=document.getElementById('WistpointSelection');document.getElementById('tpointWisdom').value=elem.selectedIndex;document.getElementById('Dexterity').value=parseInt(document.getElementById('raceDexterity').value)+
parseInt(document.getElementById('boonDexterity').value)+
parseInt(document.getElementById('boonSuperChar').value)+
parseInt(document.getElementById('SSDexterity').value)+
parseInt(document.getElementById('eqDexterity').value)+
parseInt(document.getElementById('sailorDexterity').value)+
parseInt(document.getElementById('guildsDexterity').value)+
parseInt(document.getElementById('tpointDexterity').value);document.getElementById('Constitution').value=parseInt(document.getElementById('raceConstitution').value)+
parseInt(document.getElementById('boonConstitution').value)+
parseInt(document.getElementById('boonSuperChar').value)+
parseInt(document.getElementById('SSConstitution').value)+
parseInt(document.getElementById('eqConstitution').value)+
parseInt(document.getElementById('sailorConstitution').value)+
parseInt(document.getElementById('guildsConstitution').value)+
parseInt(document.getElementById('tpointConstitution').value);document.getElementById('Strength').value=parseInt(document.getElementById('raceStrength').value)+
parseInt(document.getElementById('boonStrength').value)+
parseInt(document.getElementById('boonSuperChar').value)+
parseInt(document.getElementById('SSStrength').value)+
parseInt(document.getElementById('eqStrength').value)+
parseInt(document.getElementById('sailorStrength').value)+
parseInt(document.getElementById('guildsStrength').value)+
parseInt(document.getElementById('tpointStrength').value);document.getElementById('Wisdom').value=parseInt(document.getElementById('raceWisdom').value)+
parseInt(document.getElementById('boonWisdom').value)+
parseInt(document.getElementById('boonSuperChar').value)+
parseInt(document.getElementById('SSWisdom').value)+
parseInt(document.getElementById('eqWisdom').value)+
parseInt(document.getElementById('sailorWisdom').value)+
parseInt(document.getElementById('guildsWisdom').value)+
parseInt(document.getElementById('tpointWisdom').value);document.getElementById('Intelligence').value=parseInt(document.getElementById('raceIntelligence').value)+
parseInt(document.getElementById('boonIntelligence').value)+
parseInt(document.getElementById('boonSuperChar').value)+
parseInt(document.getElementById('SSIntelligence').value)+
parseInt(document.getElementById('eqIntelligence').value)+
parseInt(document.getElementById('sailorIntelligence').value)+
parseInt(document.getElementById('guildsIntelligence').value)+
parseInt(document.getElementById('tpointIntelligence').value);document.getElementById('SkillMax').value=parseInt(document.getElementById('raceSkillMax').value)+
parseInt(document.getElementById('boonSkillMax').value)+
parseInt(document.getElementById('SSSkillMax').value);document.getElementById('SpellMax').value=parseInt(document.getElementById('raceSpellMax').value)+
parseInt(document.getElementById('boonSpellMax').value)+
parseInt(document.getElementById('SSSpellMax').value);document.getElementById('Size').value=document.getElementById('raceSize').value;if(document.getElementById('raceCheckBox').checked){document.getElementById('Dexterity').value=parseInt(document.getElementById('Dexterity').value)+parseInt(leaderBonus);document.getElementById('Constitution').value=parseInt(document.getElementById('Constitution').value)+parseInt(leaderBonus);document.getElementById('Strength').value=parseInt(document.getElementById('Strength').value)+parseInt(leaderBonus);document.getElementById('Wisdom').value=parseInt(document.getElementById('Wisdom').value)+parseInt(leaderBonus);document.getElementById('Intelligence').value=parseInt(document.getElementById('Intelligence').value)+parseInt(leaderBonus);}
updateEqBurden();}
function updateQuestTpoints(questnumber){var elem;var tpoints;var i;i=1;tpoints=0;while(i<=questamount){elem=eval("document.getElementById('questnumber"+i+"')");if(elem.checked){tpoints=parseInt(tpoints)+parseInt(elem.value);}
i=i+1;}
document.getElementById('questtpoints').value=tpoints;document.getElementById('totaltpoints').value=parseInt(document.getElementById('questtpoints').value)+
parseInt(document.getElementById('leveltpoints').value);}
function updateQuestExp(){var i=1;var elem;var questexp=0;var elemname;var questid;var tmpexp;var level;while(i<=questamount){elem=eval("document.getElementById('questnumber"+i+"');");if(elem.checked){elemname=elem.name;questid=elemname.substr(5,elemname.length-5);level=questlist[questid];if(parseInt(level)<=parseInt(document.getElementById('totallevels').value)){if((parseInt(level)==8)||(parseInt(level)==17)||(parseInt(level)==25)||(parseInt(level)==79)){tmpexp=parseFloat(levelcosts[level])*parseFloat(expsavefactor2);questexp=parseInt(questexp)+parseInt(tmpexp);}
else{tmpexp=parseFloat(levelcosts[level])*parseFloat(expsavefactor);questexp=parseInt(questexp)+parseInt(tmpexp);}}}
i=i+1;}
document.getElementById('questexp').value=questexp;document.getElementById('questexpstring').value=formatNumber(questexp);}
function updateTPointSelects(){var racename=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var bgname=document.getElementById('bgSelection').options[document.getElementById('bgSelection').selectedIndex].value;var params;var selectelem;var options;var i;var j;var k;var opt;var prevvalue=0;var stats=['Con','Dex','Str','Wis','Int'];var longnames=['Constitution','Dexterity','Strength','Wisdom','Intelligence'];var newselected;var stat;var longname;var ex;var racecon=racestats[racename]['Con'];var racedex=racestats[racename]['Dex'];var racestr=racestats[racename]['Str'];var racewis=racestats[racename]['Wis'];var raceint=racestats[racename]['Int'];var statmin;var totalpoints;j=0;params='{"race":"'+racename+'","background":"'+bgname+'","Con":"'+racecon+'","Dex":"'+racedex+'","Str":"'+racestr+'","Wis":"'+racewis+'","Int":"'+raceint+'"}';$.ajax({type:"GET",url:"simtraining.php",data:eval("("+params+")"),async:false,success:function(data){options=eval("("+data+");");}});while(j<stats.length){stat=stats[j];longname=longnames[j];selectelem=eval("document.getElementById('"+stat+"tpointSelection');");prevvalue=eval("document.getElementById('tpoint"+longname+"').value;");newselected=0;emptySelect(selectelem.length,selectelem,0)
i=1;k=0;totalpoints=0;statmin=parseInt(parseInt(racestats[racename][stat])*parseFloat(0.62));while(options[stat][i]){if((i>=statmin)&&(totalpoints<=2500)){opt=document.createElement('option');opt.text=k+' ('+totalpoints+')';opt.value=totalpoints;if((prevvalue!=0)&&(k==prevvalue)){prevvalue=0;newselected=k;}
try{selectelem.add(opt,null);}
catch(ex){selectelem.add(opt);}
k=k+1;totalpoints=parseInt(totalpoints)+parseInt(options[stat][i]);}
i=i+1;}
if(prevvalue!=0){selectelem.selectedIndex=k-1;}
else{selectelem.selectedIndex=newselected;}
j=j+1;}}
function updateGuildTrainables(guild,level,selectnumber){var skilllist=new Object();var spelllist=new Object();var alllist=new Object();var reqlist=new Object();var guildskill;var incache=1;if((guild!='-')&&(guild!='SS')&&(guild!="0")&&(guild!=0)){if(allguildskills[guild]||allguildspells[guild]){if((allguildskills[guild]&&!allguildskills[guild][level])||(allguildspells[guild]&&!allguildspells[guild][level])){incache=0;}}
else{incache=0;}
if(incache){if(allguildskills[guild]&&allguildskills[guild][level]){skilllist=allguildskills[guild][level];}
if(allguildspells[guild]&&allguildspells[guild][level]){spelllist=allguildspells[guild][level];}
if(allguildreqs[guild]&&allguildreqs[guild][level]){reqlist=allguildreqs[guild][level];}
updateGuildTrainables2(guild,level,selectnumber,skilllist,spelllist,reqlist);}
else{guildskill='{"guildskill1":"'+guild+'","level1":'+level+',"guildspell1":"'+guild+'","guildreq1":"'+guild+'"}';$.ajax({type:"GET",url:"simguilds.php",data:eval("("+guildskill+")"),async:false,success:function(data){alllist=eval("("+data+");");if(alllist["skills"]){skilllist=eval('alllist["skills"]["'+guild+'"];');if(!allguildskills[guild])
allguildskills[guild]=new Object();allguildskills[guild][level]=skilllist;}
if(alllist["spells"]){spelllist=eval('alllist["spells"]["'+guild+'"];');if(!allguildspells[guild])
allguildspells[guild]=new Object();allguildspells[guild][level]=spelllist;}
if(alllist["reqs"]){reqlist=eval('alllist["reqs"]["'+guild+'"];');if(!allguildreqs[guild])
allguildreqs[guild]=new Object();allguildreqs[guild][level]=reqlist;}
updateGuildTrainables2(guild,level,selectnumber,skilllist,spelllist,reqlist);}});}}
else{updateGuildTrainables2(guild,level,selectnumber,skilllist,spelllist,reqlist);}}
function updateGuildTrainables2(guild,level,selectnumber,skilllist,spelllist,reqlist){var i;var skillname;var spellname;var ni=document.getElementById('simtrainables');var newsel;var minval;var maxval;var newelem;var hiddenguildname=eval("document.getElementById('hiddenguildname"+selectnumber+"');");var hiddenguildskills=eval("document.getElementById('hiddenguildskills"+selectnumber+"');");var hiddenguildspells=eval("document.getElementById('hiddenguildspells"+selectnumber+"');");var guildskillexp=eval("document.getElementById('guildskillexp"+selectnumber+"');");var guildspellexp=eval("document.getElementById('guildspellexp"+selectnumber+"');");var prevguild=eval("prevguildsel["+selectnumber+"];");var newguilddiv=eval("document.getElementById('guild"+selectnumber+"trainables');");var newskills=eval("document.getElementById('guildskills"+selectnumber+"');");var newspells=eval("document.getElementById('guildspells"+selectnumber+"');");var newrow;var newcell;var oldskilllist;var oldspelllist;if(prevguild==guild){oldskilllist=eval("({"+hiddenguildskills.value+"})");oldspelllist=eval("({"+hiddenguildspells.value+"})");}
if(newskills){for(skillname in Duplicatelist){removeFromDuplicateList(prevguild,skillname,1);}
hiddenguildname.value=" ";hiddenguildskills.value=" ";guildskillexp.value=0;newguilddiv.removeChild(newskills);}
if(newspells){for(spellname in Duplicatelist){removeFromDuplicateList(prevguild,spellname,0);}
hiddenguildname.value=" ";hiddenguildspells.value=" ";guildspellexp.value=0;newguilddiv.removeChild(newspells);}
if(newguilddiv){ni.removeChild(newguilddiv);}
if((guild=="-")||(guild=="SS")||guild=="0"){return;}
newguilddiv=document.createElement('div');newguilddiv.setAttribute('class','guildtrainables');newguilddiv.setAttribute('id',"guild"+selectnumber+"trainables");ni.appendChild(newguilddiv);newrow=document.createElement('div');newrow.setAttribute('class','guildheader');newguilddiv.appendChild(newrow);newelem=document.createElement('span');newelem.setAttribute('class','guildheader');newelem.appendChild(document.createTextNode("The "+guild+" guild"));newrow.appendChild(newelem);newskills=document.createElement('div');newskills.setAttribute('class','guildskills');newskills.setAttribute('id',"guildskills"+selectnumber);newguilddiv.appendChild(newskills);hiddenguildname.value=guild;hiddenguildskills.value=" ";hiddenguildspells.value=" ";createRadioRow(newskills,guild,level,1,selectnumber);createHeaderRow(newskills,1);for(skillname in skilllist){minval=reqlist[skillname];maxval=skilllist[skillname];if(maxval>0){if(oldskilllist)
startval=eval("oldskilllist['"+skillname+"'];");else
startval=0;createTrainableRow(newskills,guild,selectnumber,skillname,startval,minval,maxval,1);updateHiddenTrainables(skillname,guild,1);addToDuplicateList(guild,skillname,1);}}
createSubtotalRow(newskills,guild,1);newspells=document.createElement('div');newspells.setAttribute('class','guildspells');newspells.setAttribute('id','guildspells'+selectnumber);newguilddiv.appendChild(newspells);createRadioRow(newspells,guild,level,0,selectnumber);createHeaderRow(newspells,0);for(spellname in spelllist){minval=reqlist[spellname];maxval=spelllist[spellname];if(maxval>0){if(oldspelllist)
startval=eval("oldspelllist['"+spellname+"'];");else
startval=0;createTrainableRow(newspells,guild,selectnumber,spellname,startval,minval,maxval,0);updateHiddenTrainables(spellname,guild,0);addToDuplicateList(guild,spellname,0);}}
updateAllExpfields(guild,selectnumber);createSubtotalRow(newspells,guild,0);}
function createTrainableRow(elem,guild,selectnumber,trainablename,startval,minval,maxval,skillspell){var newrow;var cell;var content;var tipdiv;var tmpname;var bgname=document.getElementById('bgSelection').options[document.getElementById('bgSelection').selectedIndex].value;var tname=trainablename.replace(/_/g," ");newrow=document.createElement('div');newrow.setAttribute('class','trainablerow');elem.appendChild(newrow);cell=document.createElement('div');cell.setAttribute('class','trainablecell');newrow.appendChild(cell);content=document.createElement('span');content.setAttribute('class','SimpleTip');content.setAttribute('id',"trainablespan"+tip_id);tipdiv=document.createElement('div');tipdiv.setAttribute('id',"trainabletip"+tip_id);content.appendChild(tipdiv);eval("content.onmouseover=function(){updateTipContent("+tip_id+",'"+trainablename+"',"+skillspell+",1);};");eval("content.onmouseout=function(){updateTipContent("+tip_id+",'"+trainablename+"',"+skillspell+",0);};");tip_id=tip_id+1;if((backgroundtrainables[bgname][tname])&&(selectnumber!=1)){tmpname=tname+" (+"+backgroundtrainables[bgname][tname]+"%)";content.appendChild(document.createTextNode(tmpname));}
else{content.appendChild(document.createTextNode(tname));}
cell.appendChild(content);cell=document.createElement('div');cell.setAttribute('class','trainablecell');newrow.appendChild(cell);content=document.createElement('select');content.setAttribute('id',guild+trainablename);content.setAttribute('class','trainableselect');eval("content.onchange=function(){updateExpfield('"+guild+"','"+trainablename+"',"+skillspell+");updateHiddenTrainables('"+
trainablename+"','"+guild+"',"+skillspell+");updateSubExp("+selectnumber+");updateTotalExp();};");cell.appendChild(content);createTrainableSelectOptions(content,startval,minval,maxval,trainablename,selectnumber,skillspell);cell=document.createElement('div');cell.setAttribute('class','trainablecell');newrow.appendChild(cell);content=document.createElement('input');content.setAttribute('type','text');content.setAttribute('readonly','readonly');content.setAttribute('class','expvalue');content.setAttribute('name',guild+trainablename+'exp');content.setAttribute('id',guild+trainablename+'exp');content.setAttribute('size',7);content.setAttribute('value',0);cell.appendChild(content);}
function createSubtotalRow(elem,guild,skillspell){var subtotalrow;var subtotalcell;var content;subtotalrow=document.createElement('div');subtotalrow.setAttribute('class','trainablerow');elem.appendChild(subtotalrow);subtotalcell=document.createElement('div');subtotalcell.setAttribute('class','trainablecell');subtotalrow.appendChild(subtotalcell);content=document.createElement('span');content.setAttribute('class','statheader1');content.appendChild(document.createTextNode("-"));subtotalcell.appendChild(content);subtotalcell=document.createElement('div');subtotalcell.setAttribute('class','trainablecell');subtotalrow.appendChild(subtotalcell);content=document.createElement('span');content.setAttribute('class','statheader1');content.appendChild(document.createTextNode("-"));subtotalcell.appendChild(content);subtotalcell=document.createElement('div');subtotalcell.setAttribute('class','trainablecell');subtotalrow.appendChild(subtotalcell);content=document.createElement('input');content.setAttribute('type','text');content.setAttribute('readonly','readonly');content.setAttribute('class','subtotal');if(skillspell==1){content.setAttribute('name',guild+'skillsubtotal');content.setAttribute('id',guild+'skillsubtotal');}
else{content.setAttribute('name',guild+'spellsubtotal');content.setAttribute('id',guild+'spellsubtotal');}
content.setAttribute('size',10);content.setAttribute('value',0);subtotalcell.appendChild(content);}
function createTrainableSelectOptions(selectelement,startval,minval,maxval,trainablename,selectnumber,skillspell){var i;var max;var gap=trainselectgap;var racemax;var racemaxprinted=0;var arcaneskill=0;if(skillspell==1){for(i in arcaneskills){if(arcaneskills[i]==trainablename){arcaneskill=1;break;}}
if(arcaneskill==1){racemax=100;}
else{racemax=parseInt(document.getElementById('SkillMax').value);}}
else{racemax=parseInt(document.getElementById('SpellMax').value);}
if(racemax<10)racemax=100;max=maxval;if(minval>0){if(minval<max){i=minval;}
else{}}
else{i=0;}
j=0;while(i<max){fillSelect(1,selectelement,i,null);if(i==startval){selectelement.selectedIndex=j;}
if(i%gap!=0)
i=i+(gap-(i%gap));else
i=i+gap;if((racemax%gap!=0)&&(i>racemax)&&(racemax<max)&&(racemaxprinted==0)){fillSelect(1,selectelement,racemax,null);j=j+1;if(startval==racemax){selectelement.selectedIndex=j;}
racemaxprinted=1;}
j=j+1;}
fillSelect(1,selectelement,max,null);if(max==startval){selectelement.selectedIndex=j;}}
function updateAllTrainables(guild,guildlevel,skillspell,value,selectnumber){var amount;var i;var j;var alllist;var trainablelist;var guildskill;var arcaneskill=0;if(value=="racemax"){if(skillspell==1){amount=document.getElementById('SkillMax').value;}
else{amount=document.getElementById('SpellMax').value;}}
else{if(value=="guildmax"){amount=1000;}
else{amount=value;}}
if((guild!='-')&&(guild!='SS')&&(guild!="0")&&(guild!=0)){if(allguildskills[guild][guildlevel]||allguildspells[guild][guildlevel]){if(skillspell==1){if(allguildskills[guild][guildlevel])
trainablelist=allguildskills[guild][guildlevel];}
else{if(allguildspells[guild][guildlevel])
trainablelist=allguildspells[guild][guildlevel];}}
else{guildskill='{"guildskill1":"'+guild+'","level1":'+guildlevel+',"guildspell1":"'+guild+'","guildreq1":"'+guild+'"}';$.ajax({type:"GET",url:"simguilds.php",data:eval("("+guildskill+")"),async:false,success:function(data){alllist=eval("("+data+");");if(skillspell==1){if(alllist["skills"])
trainablelist=eval('alllist["skills"]["'+guild+'"];');}
else{if(alllist["spells"])
trainablelist=eval('alllist["spells"]["'+guild+'"];');}}});}}
for(trainablename in trainablelist){if(trainablelist[trainablename]>0){maxval=trainablelist[trainablename];if(Duplicatelist[trainablename][0][0]==guild){selectelem=eval("document.getElementById('"+guild+trainablename+"');");if(maxval<amount){selectelem.selectedIndex=selectelem.length-1;}
else{if(amount==0){selectelem.selectedIndex=0;}
else{if(skillspell==1){for(i in arcaneskills){if(arcaneskills[i]==trainablename){arcaneskill=1;break;}}}
if((arcaneskill==1)&&(value=="racemax")){arcaneskill=0;selectelem.selectedIndex=selectelem.length-1;}
else{for(j=0;j<selectelem.length;j++){if(selectelem.options[j].value==amount){selectelem.selectedIndex=j;break;}}}}}
updateHiddenTrainables(trainablename,guild,skillspell);}}}
updateAllExpfields(guild,selectnumber);updateSubExp(selectnumber);updateTotalExp();}
function createRadioRow(parentelem,guild,level,skillspell,selectnumber){var newrow;var newcell;newrow=document.createElement('div');newrow.setAttribute('class','trainablerow');parentelem.appendChild(newrow);newcell=document.createElement('div');newcell.setAttribute('class','trainableradiocell');newrow.appendChild(newcell);newelem=document.createElement('span');newelem.setAttribute('class','trainablename');newelem.appendChild(document.createTextNode("min"));newcell.appendChild(newelem);newcell=document.createElement('div');newcell.setAttribute('class','trainableradiocell');newrow.appendChild(newcell);newelem=document.createElement('span');newelem.setAttribute('class','trainablename');newelem.appendChild(document.createTextNode("racemax"));newcell.appendChild(newelem);newcell=document.createElement('div');newcell.setAttribute('class','trainableradiocell');newrow.appendChild(newcell);newelem=document.createElement('span');newelem.setAttribute('class','trainablename');newelem.appendChild(document.createTextNode("80"));newcell.appendChild(newelem);newcell=document.createElement('div');newcell.setAttribute('class','trainableradiocell');newrow.appendChild(newcell);newelem=document.createElement('span');newelem.setAttribute('class','trainablename');newelem.appendChild(document.createTextNode("max"));newcell.appendChild(newelem);newrow=document.createElement('div');newrow.setAttribute('class','trainablerow');parentelem.appendChild(newrow);newcell=document.createElement('div');newcell.setAttribute('class','trainableradiocell');newrow.appendChild(newcell);newelem=document.createElement('input');newelem.setAttribute('class','trainableradio');newelem.setAttribute('name',guild+skillspell);newelem.setAttribute('type','radio');newelem.setAttribute('value','0');eval("newelem.onclick=function(){updateAllTrainables('"+guild+"',"+level+","+skillspell+",'0',"+selectnumber+");};");newcell.appendChild(newelem);newcell=document.createElement('div');newcell.setAttribute('class','trainableradiocell');newrow.appendChild(newcell);newelem=document.createElement('input');newelem.setAttribute('class','trainableradio');newelem.setAttribute('name',guild+skillspell);newelem.setAttribute('type','radio');newelem.setAttribute('value','racemax');eval("newelem.onclick=function(){updateAllTrainables('"+guild+"',"+level+","+skillspell+",'racemax',"+selectnumber+");};");newcell.appendChild(newelem);newcell=document.createElement('div');newcell.setAttribute('class','trainableradiocell');newrow.appendChild(newcell);newelem=document.createElement('input');newelem.setAttribute('class','trainableradio');newelem.setAttribute('name',guild+skillspell);newelem.setAttribute('type','radio');newelem.setAttribute('value','guildmax');eval("newelem.onclick=function(){updateAllTrainables('"+guild+"',"+level+","+skillspell+",'80',"+selectnumber+");};");newcell.appendChild(newelem);newcell=document.createElement('div');newcell.setAttribute('class','trainableradiocell');newrow.appendChild(newcell);newelem=document.createElement('input');newelem.setAttribute('class','trainableradio');newelem.setAttribute('name',guild+skillspell);newelem.setAttribute('type','radio');newelem.setAttribute('value','80');eval("newelem.onclick=function(){updateAllTrainables('"+guild+"',"+level+","+skillspell+",'guildmax',"+selectnumber+");};");newcell.appendChild(newelem);}
function createHeaderRow(parentelem,skillspell){var newrow;var newcell;newrow=document.createElement('div');newrow.setAttribute('class','trainablerow');parentelem.appendChild(newrow);newcell=document.createElement('div');newcell.setAttribute('class','trainablecell');newrow.appendChild(newcell);newelem=document.createElement('span');newelem.setAttribute('class','statheader1');if(skillspell==1)
newelem.appendChild(document.createTextNode("Skillname:"));else
newelem.appendChild(document.createTextNode("Spellname:"));newcell.appendChild(newelem);newcell=document.createElement('div');newcell.setAttribute('class','trainablecell');newrow.appendChild(newcell);newelem=document.createElement('span');newelem.setAttribute('class','statheader1');newelem.appendChild(document.createTextNode("Amount:"));newcell.appendChild(newelem);newcell=document.createElement('div');newcell.setAttribute('class','trainablecell');newrow.appendChild(newcell);newelem=document.createElement('span');newelem.setAttribute('class','statheader1');newelem.appendChild(document.createTextNode("Exp Cost:"));newcell.appendChild(newelem);}
function updateTrainableSelects(){var guildname;var guildlevel;var alllist=new Object();var skilllist=new Object();var spelllist=new Object();var incache=1;guilds='{';i=1;while(i<=guildselects){guildname=eval("document.getElementById('guildSelection"+i+"').options[document.getElementById('guildSelection"+i+"').selectedIndex].value;");if((guildname!='-')&&(guildname!='SS'&&(guildname!='0'))){guildlevel=eval("document.getElementById('guildlevelSelection"+i+"').options[document.getElementById('guildlevelSelection"+i+"').selectedIndex].value;");if(allguildskills[guildname]||allguildspells[guildname]){if((allguildskills[guildname]&&!allguildskills[guildname][guildlevel])||(allguildspells[guildname]&&!allguildspells[guildname][guildlevel])){incache=0;}}
else{incache=0;}
if(incache){if(allguildskills[guildname]&&allguildskills[guildname][guildlevel]){skilllist[guildname]=new Object();skilllist[guildname]=allguildskills[guildname][guildlevel];}
if(allguildspells[guildname]&&allguildspells[guildname][guildlevel]){spelllist[guildname]=new Object();spelllist[guildname]=allguildspells[guildname][guildlevel];}}
if(guilds!='{'){guilds=guilds+',guildskill'+i+' : "'+guildname+'"';}
else{guilds=guilds+'guildskill'+i+' : "'+guildname+'"';}
guilds=guilds+',level'+i+' : '+guildlevel;guilds=guilds+',guildspell'+i+' : "'+guildname+'"';}
i=i+1;}
guilds=guilds+'}';if(incache){if(skilllist)
updateTrainableSelects2(skilllist,spelllist);else
updateTrainableSelects2(alllist,alllist);}
else{$.ajax({type:"GET",url:"simguilds.php",data:eval("("+guilds+")"),async:false,success:function(data){alllist=eval("("+data+");");if(alllist)
updateTrainableSelects2(alllist["skills"],alllist["spells"]);else
updateTrainableSelects2(alllist,alllist);}});}}
function updateTrainableSelects2(skilllists,spelllists){var i;var j;var guildname;var skilllist;var spelllist;var skillname;var spellname;var selectelem;var maxval;var removedracemax;var arcaneskill;var newracename=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var newraceskillmax;var newracespellmax;var oldraceskillmax;var oldracespellmax;stats=racestats[newracename];newraceskillmax=parseInt(stats['Skill'])+
parseInt(document.getElementById('SkillboonSelection').options[document.getElementById('SkillboonSelection').selectedIndex].value)+
parseInt(document.getElementById('SkillSSSelection').options[document.getElementById('SkillSSSelection').selectedIndex].value);newracespellmax=parseInt(stats['Spell'])+
parseInt(document.getElementById('SpellboonSelection').options[document.getElementById('SpellboonSelection').selectedIndex].value)+
parseInt(document.getElementById('SpellSSSelection').options[document.getElementById('SpellSSSelection').selectedIndex].value);stats=racestats[prevrace];oldraceskillmax=parseInt(stats['Skill'])+parseInt(prevskillboon)+parseInt(prevskillSS);oldracespellmax=parseInt(stats['Spell'])+parseInt(prevspellboon)+parseInt(prevspellSS);prevskillboon=document.getElementById('SkillboonSelection').options[document.getElementById('SkillboonSelection').selectedIndex].value;prevspellboon=document.getElementById('SpellboonSelection').options[document.getElementById('SpellboonSelection').selectedIndex].value;prevskillSS=document.getElementById('SkillSSSelection').options[document.getElementById('SkillSSSelection').selectedIndex].value;prevspellSS=document.getElementById('SpellSSSelection').options[document.getElementById('SpellSSSelection').selectedIndex].value;i=1;while(i<=guildselects){guildname=eval("document.getElementById('guildSelection"+i+"').options[document.getElementById('guildSelection"+i+"').selectedIndex].value;");if((guildname!='-')&&(guildname!='0')){if(skilllists)
skilllist=eval('skilllists["'+guildname+'"];');if(spelllists)
spelllist=eval('spelllists["'+guildname+'"];');for(skillname in skilllist){arcaneskill=0;for(j in arcaneskills){if(skillname==arcaneskills[j]){arcaneskill=1;}}
if(arcaneskill==0){addnewracemax=0;maxval=eval("skilllist['"+skillname+"'];");if(maxval>0){selectelem=eval("document.getElementById('"+guildname+skillname+"');");for(j=0;j<selectelem.length;j++){if(newraceskillmax!=oldraceskillmax){if((addnewracemax==0)&&(newraceskillmax%trainselectgap!=0)&&(selectelem.options[j].value>newraceskillmax)){addnewracemax=1;fillSelect(1,selectelem,newraceskillmax,selectelem.options[j]);j=j+1;}
if(selectelem.options[j].value==oldraceskillmax){if(selectelem.selectedIndex==j){if(oldraceskillmax%trainselectgap!=0){selectelem.remove(j);if(j>0)
selectelem.selectedIndex=j-1;else
selectelem.selectedIndex=0;}}
else{if(oldraceskillmax%trainselectgap!=0){selectelem.remove(j);}}}}}
updateHiddenTrainables(skillname,guildname,1);}}}
for(spellname in spelllist){addnewracemax=0;maxval=eval("spelllist['"+spellname+"'];");if(maxval>0){selectelem=eval("document.getElementById('"+guildname+spellname+"');");for(j=0;j<selectelem.length;j++){if(newracespellmax!=oldracespellmax){if((addnewracemax==0)&&(newracespellmax%trainselectgap!=0)&&(selectelem.options[j].value>newracespellmax)){addnewracemax=1;fillSelect(1,selectelem,newracespellmax,selectelem.options[j]);j=j+1;}
if(selectelem.options[j].value==oldracespellmax){if(selectelem.selectedIndex==j){if(oldracespellmax%trainselectgap!=0){selectelem.remove(j);if(j>0)
selectelem.selectedIndex=j-1;else
selectelem.selectedIndex=0;}}
else{if(oldracespellmax%trainselectgap!=0){selectelem.remove(j);}}}}
updateHiddenTrainables(spellname,guildname,0);}}}
updateAllExpfields(guildname,i);updateSubExp(i);}
i=i+1;}
updateTotalExp();}
function updateHiddenTrainables(trainablename,guildname,skillspell){var trainableelem;var prevval;var trainablestart;var stringstart;var stringend;var i;var tmpname;var value=eval("document.getElementById('"+guildname+trainablename+"').options[document.getElementById('"+guildname+trainablename+"').selectedIndex].text;");i=1;while(i<=guildselects){tmpname=eval("document.getElementById('hiddenguildname"+i+"').value;");if(guildname==tmpname){if(skillspell==1){trainableelem=eval("document.getElementById('hiddenguildskills"+i+"');");}
else{trainableelem=eval("document.getElementById('hiddenguildspells"+i+"');");}
break;}
i=i+1;}
prevval=trainableelem.value;if(prevval.length>1){trainablestart=prevval.indexOf("'"+trainablename+"'");if(trainablestart>-1){stringstart=prevval.substring(0,trainablestart+trainablename.length+3);stringend=prevval.substring(trainablestart+trainablename.length+3);if(stringend.indexOf(",")>-1){stringend=stringend.substring(stringend.indexOf(","));}
else{stringend="";}
trainableelem.value=stringstart+value+stringend;}
else{trainableelem.value=prevval+",'"+trainablename+"':'"+value+"'";}}
else{trainableelem.value="'"+trainablename+"':'"+value+"'";}}
function createExpfield(motherElem,guild,expname,expvalue){newelem=document.createElement('input');newelem.setAttribute('type','text');newelem.setAttribute('readonly','readonly');newelem.setAttribute('class','expvalue');newelem.setAttribute('name',guild+expname+'exp');newelem.setAttribute('id',guild+expname+'exp');newelem.setAttribute('size',7);newelem.setAttribute('value',expvalue);motherElem.appendChild(newelem);}
function updateAllExpfields(guildname,selectnumber){var expelem;var trainablename;var trainablelist;var list="";var skillmax;var spellmax;var race=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var acid;var asph;var fire;var mana;var cold;var pois;var elec;var datastring;var skilllist;var spelllist;var hiddenskillz;var hiddenspellz;var skillname;var spellname;hiddenskillz=eval("document.getElementById('hiddenguildskills"+selectnumber+"').value;");if(hiddenskillz!=" "){skilllist=eval("({"+hiddenskillz+"});");for(skillname in skilllist){list=list+"'1"+skillname+"':'"+skilllist[skillname]+"',";}}
hiddenspellz=eval("document.getElementById('hiddenguildspells"+selectnumber+"').value;");if(hiddenspellz!=" "){spelllist=eval("({"+hiddenspellz+"});");for(spellname in spelllist){list=list+"'0"+spellname+"':'"+spelllist[spellname]+"',";}}
list=list.substring(0,list.length-1);skillmax=document.getElementById('SkillMax').value;spellmax=document.getElementById('SpellMax').value;acid=magespecs['mage_acid'];asph=magespecs['mage_asphyxiation'];cold=magespecs['mage_cold'];fire=magespecs['mage_fire'];elec=magespecs['mage_electricity'];mana=magespecs['mage_magical'];pois=magespecs['mage_poison'];if(list!=" "){datastring="{'Race':'"+race+"','Skillmax':"+skillmax+",'Spellmax':"+spellmax+",'mage_acid':"+acid+",'mage_asphyxiation':"+asph+",'mage_cold':"+cold+",'mage_fire':"+fire+",'mage_electricity':"+elec+",'mage_magical':"+mana+",'mage_poison':"+pois+","+list+"}";}
else{datastring="{'Race':'"+race+"','Skillmax':"+skillmax+",'Spellmax':"+spellmax+",'mage_acid':"+acid+",'mage_asphyxiation':"+asph+",'mage_cold':"+cold+",'mage_fire':"+fire+",'mage_electricity':"+elec+",'mage_magical':"+mana+",'mage_poison':"+pois+"}";}
$.ajax({type:"GET",url:"simexp3.php",data:eval("("+datastring+")"),async:false,success:function(data){trainablelist=eval("("+data+");");for(trainablename in trainablelist){expelem=eval("document.getElementById('"+guildname+trainablename+"exp');");expelem.value=trainablelist[trainablename];}}});}
function updateExpfield(guildname,trainablename,skillspell){var expelemname=guildname+trainablename+"exp";var expelem=eval("document.getElementById('"+expelemname+"');");var trainable=eval("document.getElementById('"+guildname+trainablename+"');");var value=trainable.options[trainable.selectedIndex].text;var params;var alllist;var race=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var skillmax=100;var spellmax=100;var tname;var acid;var asph;var fire;var mana;var cold;var pois;var elec;acid=magespecs['mage_acid'];asph=magespecs['mage_asphyxiation'];cold=magespecs['mage_cold'];fire=magespecs['mage_fire'];elec=magespecs['mage_electricity'];mana=magespecs['mage_magical'];pois=magespecs['mage_poison'];if(skillspell==1){skillmax=document.getElementById('SkillMax').value;tname="1"+trainablename;}
else{spellmax=document.getElementById('SpellMax').value;tname="0"+trainablename;}
if(value>0){params='{"'+tname+'":'+value+',"Race":"'+race+'","Skillmax":'+skillmax+',"Spellmax":'+spellmax+',"mage_acid":'+acid+',"mage_asphyxiation":'+asph+',"mage_cold":'+cold+',"mage_fire":'+fire+',"mage_electricity":'+elec+',"mage_magical":'+mana+',"mage_poison":'+pois+'}';$.ajax({type:"GET",url:"simexp3.php",data:eval("("+params+")"),async:false,success:function(data){alllist=eval("("+data+");");expelem.value=alllist[trainablename];}});}
else{expelem.value=0;}}
function formatNumber(number){var numberstring;var finalstring
var len;numberstring=number+'';finalstring='';len=numberstring.length;if(len<11){if(len>9){finalstring=numberstring.substring(0,1)+" "+numberstring.substring(1,4)+" "+numberstring.substring(4);}
else{if(len>6){finalstring=finalstring+numberstring.substring(0,len-6)+" "+numberstring.substring(len-6);}
else{finalstring=numberstring;}}}
else{finalstring=numberstring;}
return finalstring;}
function updateSubExp(selectnumber){var guildname;var list;var skilllist;var spelllist;var skillname;var spellname;var value;var subexpelem;guildname=eval("document.getElementById('hiddenguildname"+selectnumber+"').value;");if(guildname.length>1){list=eval("document.getElementById('hiddenguildskills"+selectnumber+"').value;");subexpelem=eval("document.getElementById('guildskillexp"+selectnumber+"');");subexpelem.value=0;skilllist=eval("({"+list+"});");for(skillname in skilllist){value=eval("document.getElementById('"+guildname+skillname+"exp').value;");if(value!=0){subexpelem.value=parseInt(subexpelem.value)+parseInt(value);}}
value=formatNumber(subexpelem.value);eval("document.getElementById('"+guildname+"skillsubtotal').value=value;");list=eval("document.getElementById('hiddenguildspells"+selectnumber+"').value;");subexpelem=eval("document.getElementById('guildspellexp"+selectnumber+"');");subexpelem.value=0;spelllist=eval("({"+list+"});");for(spellname in spelllist){value=eval("document.getElementById('"+guildname+spellname+"exp').value;");if(value!=0){subexpelem.value=parseInt(subexpelem.value)+parseInt(value);}}
value=formatNumber(subexpelem.value);eval("document.getElementById('"+guildname+"spellsubtotal').value=value;");}}
function updateSSexp(){var SSexp=0;var i=0;var params;var stats;var SSCon=document.getElementById("SSConstitution").value;var SSInt=document.getElementById("SSIntelligence").value;var SSStr=document.getElementById("SSStrength").value;var SSWis=document.getElementById("SSWisdom").value;var SSDex=document.getElementById("SSDexterity").value;params='{"SSCon":'+SSCon+',"SSDex":'+SSDex+',"SSInt":'+SSInt+',"SSWis":'+SSWis+',"SSStr":'+SSStr+'}';$.ajax({type:"GET",url:"simSSexp.php",data:eval("("+params+")"),async:false,success:function(data){stats=eval("("+data+");");document.getElementById('SSexp').value=stats['expworth'];}});}
function updateAbilityExp(){var i=1;var abexp=0;var elem;while(i<=abilities){eval("elem=document.getElementById('ability"+i+"');");if(elem.checked)
abexp=parseInt(abexp)+parseInt(elem.value);i=i+1;}
document.getElementById('totalabilityexp').value=parseInt(abexp);}
function updateLevelExpandTPoints(){var levelexp=0;var leveltpoints=0;var i=0;var maxlevel=document.getElementById('totallevels').value;while(i<=maxlevel){levelexp=parseInt(levelexp)+parseInt(levelcosts[i]);if((i>30)&&(i<91)){leveltpoints=parseInt(leveltpoints)+parseInt(20);}
if(i>90){leveltpoints=parseInt(leveltpoints)+parseInt(25);}
i=i+1;}
document.getElementById('leveltpoints').value=parseInt(leveltpoints);document.getElementById('totaltpoints').value=parseInt(document.getElementById('leveltpoints').value)+
parseInt(document.getElementById('questtpoints').value);document.getElementById('levelexp').value=parseInt(levelexp);}
function updateUsedTPoints(){var usedelem=document.getElementById('usedtpoints');var tmpstr;usedelem.value=parseInt(document.getElementById('ContpointSelection').options[document.getElementById('ContpointSelection').selectedIndex].value)+
parseInt(document.getElementById('DextpointSelection').options[document.getElementById('DextpointSelection').selectedIndex].value)+
parseInt(document.getElementById('StrtpointSelection').options[document.getElementById('StrtpointSelection').selectedIndex].value)+
parseInt(document.getElementById('WistpointSelection').options[document.getElementById('WistpointSelection').selectedIndex].value)+
parseInt(document.getElementById('InttpointSelection').options[document.getElementById('InttpointSelection').selectedIndex].value);tmpstr=document.getElementById('ContpointSelection').options[document.getElementById('ContpointSelection').selectedIndex].text;document.getElementById('tpointConstitution').value=tmpstr.substring(0,tmpstr.indexOf(" "));tmpstr=document.getElementById('DextpointSelection').options[document.getElementById('DextpointSelection').selectedIndex].text;document.getElementById('tpointDexterity').value=tmpstr.substring(0,tmpstr.indexOf(" "));tmpstr=document.getElementById('StrtpointSelection').options[document.getElementById('StrtpointSelection').selectedIndex].text;document.getElementById('tpointStrength').value=tmpstr.substring(0,tmpstr.indexOf(" "));tmpstr=document.getElementById('WistpointSelection').options[document.getElementById('WistpointSelection').selectedIndex].text;document.getElementById('tpointWisdom').value=tmpstr.substring(0,tmpstr.indexOf(" "));tmpstr=document.getElementById('InttpointSelection').options[document.getElementById('InttpointSelection').selectedIndex].text;document.getElementById('tpointIntelligence').value=tmpstr.substring(0,tmpstr.indexOf(" "));}
function updateTaskPoints(){var i;var boonselectname;var boonvalue;var boonsbyclass=[0,0,0,0];var boonnumber=0;var boonlevel=1;var taskpoints=0;for(i in boonlist){boonselectname=boonlist[i]+"boonSelection";eval("boonvalue=document.getElementById('"+boonselectname+"').options[document.getElementById('"+boonselectname+"').selectedIndex].text;");if((boonvalue!='-')&&(boonvalue!='Bane')){if((boonselectname=="SkillboonSelection")||(boonselectname=="SpellboonSelection")){if((boonvalue=='Tiny')||(boonvalue=='Tiny + Bane')){taskpoints=parseInt(taskpoints)+parseInt(10);}}
else{boonsbyclass[0]=parseInt(boonsbyclass[0])+parseInt(1);}
if((boonvalue=='Small')||(boonvalue=='Small + Bane')){if((boonselectname=="SkillboonSelection")||(boonselectname=="SpellboonSelection")){taskpoints=parseInt(taskpoints)+parseInt(30);}
else{boonsbyclass[1]=parseInt(boonsbyclass[1])+parseInt(1);}}
if((boonvalue=='Medium')||(boonvalue=='Medium + Bane')){if((boonselectname=="SkillboonSelection")||(boonselectname=="SpellboonSelection")){taskpoints=parseInt(taskpoints)+parseInt(70);}
else{boonsbyclass[1]=parseInt(boonsbyclass[1])+parseInt(1);boonsbyclass[2]=parseInt(boonsbyclass[2])+parseInt(1);}}
if(boonvalue=='Full'){if((boonselectname=="SkillboonSelection")||(boonselectname=="SpellboonSelection")){taskpoints=parseInt(taskpoints)+parseInt(150);}
else{boonsbyclass[1]=parseInt(boonsbyclass[1])+parseInt(1);boonsbyclass[2]=parseInt(boonsbyclass[2])+parseInt(1);boonsbyclass[3]=parseInt(boonsbyclass[3])+parseInt(1);}}}}
i=0;while((boonsbyclass[0]>0)||(boonsbyclass[i]>0)){if(boonsbyclass[i]!=0){taskpoints=parseInt(taskpoints)+parseInt(boonlevel)*parseInt(Math.pow(2,i))*parseInt(10);boonnumber=parseInt(boonnumber)+parseInt(1);boonsbyclass[i]=parseInt(boonsbyclass[i])-parseInt(1);if(boonnumber%6==0)
boonlevel=parseInt(boonlevel)+parseInt(1);}
if(i==3)
i=0;else
i=i+1;}
document.getElementById('totaltaskpoints').value=taskpoints;}
function updateTotalExp(){var i=1;var guildname;var list;var skilllist;var spelllist;var totals=0;var levelexp=document.getElementById('levelexp').value;var totalstring;totals=parseInt(totals)+parseInt(levelexp);while(i<=guildselects){totals=parseInt(totals)+parseInt(eval("document.getElementById('guildskillexp"+i+"').value;"));totals=parseInt(totals)+parseInt(eval("document.getElementById('guildspellexp"+i+"').value;"));i=i+1;}
totals=parseInt(totals)+parseInt(document.getElementById('SSexp').value);totals=parseInt(totals)-parseInt(document.getElementById('questexp').value);totals=parseInt(totals)+parseInt(document.getElementById('totalabilityexp').value);document.getElementById('totalexp').value=parseInt(totals);totalstring=formatNumber(totals);document.getElementById('totalexpstring').value=totalstring;}
function sortDuplicatelist(a,b){if(parseInt(a[1])>parseInt(b[1]))return-1;if(parseInt(a[1])==parseInt(b[1]))return 0;if(parseInt(a[1])<parseInt(b[1]))return 1;}
function addToDuplicateList(guild,trainablename,skillspell){var i;var tmpobject;var oldelem;var oldguild;var oldmax;var newelem;var newmax;tmpobject=eval("Duplicatelist['"+trainablename+"'];");if(typeof tmpobject!='undefined'){oldguild=eval("Duplicatelist['"+trainablename+"'][0][0];");oldelem=eval("document.getElementById('"+oldguild+trainablename+"');");oldmax=parseInt(oldelem.options[oldelem.length-1].value);newelem=eval("document.getElementById('"+guild+trainablename+"');")
newmax=parseInt(newelem.options[newelem.length-1].value);if(oldmax<newmax){if(parseInt(oldelem.options[oldelem.selectedIndex].value)>parseInt(newelem.options[newelem.selectedIndex].value)){i=0;while(i<newelem.length){if(parseInt(newelem.options[i].value)>=parseInt(oldelem.options[oldelem.selectedIndex].value)){newelem.selectedIndex=i;updateExpfield(guild,trainablename,skillspell);updateHiddenTrainables(trainablename,guild,skillspell);break;}
i=i+1;}}
fillSelect(1,oldelem,0,oldelem.options[0]);oldelem.selectedIndex=0;oldelem.setAttribute('disabled','disabled');eval("Duplicatelist['"+trainablename+"'].splice(0,0,['"+guild+"',"+newmax+"]);");i=1;while(i<=guildselects){oldguildname=eval("document.getElementById('hiddenguildname"+i+"').value;");if(oldguildname==oldguild){updateExpfield(oldguild,trainablename,skillspell);updateHiddenTrainables(trainablename,oldguild,skillspell);updateSubExp(i);break;}
i=i+1;}}
if(oldmax>newmax){if(parseInt(oldelem.options[oldelem.selectedIndex].value)<parseInt(newelem.options[newelem.selectedIndex].value)){i=0;while(i<oldelem.length){if(parseInt(oldelem.options[i].value)>=parseInt(newelem.options[newelem.selectedIndex].value)){oldelem.selectedIndex=i;updateExpfield(oldguild,trainablename,skillspell);updateHiddenTrainables(trainablename,oldguild,skillspell);break;}
i=i+1;}}
fillSelect(1,newelem,0,newelem.options[0]);newelem.selectedIndex=0;newelem.setAttribute('disabled','disabled');eval("Duplicatelist['"+trainablename+"'].splice(1,0,['"+guild+"',"+newmax+"]);");eval("Duplicatelist['"+trainablename+"'].sort(sortDuplicatelist);");updateExpfield(guild,trainablename,skillspell);updateHiddenTrainables(trainablename,guild,skillspell);}
if(oldmax==newmax){fillSelect(1,newelem,0,newelem.options[0]);newelem.selectedIndex=0;newelem.setAttribute('disabled','disabled');eval("Duplicatelist['"+trainablename+"'].splice(1,0,['"+guild+"',"+newmax+"]);");eval("Duplicatelist['"+trainablename+"'].sort(sortDuplicatelist);");updateExpfield(guild,trainablename,skillspell);updateHiddenTrainables(trainablename,guild,skillspell);}}
else{newelem=eval("document.getElementById('"+guild+trainablename+"');")
newmax=parseInt(newelem.options[newelem.length-1].value);eval("Duplicatelist['"+trainablename+"']=[['"+guild+"',"+newmax+"]];");}}
function removeFromDuplicateList(guild,trainablename,skillspell){var j;var dupguildlist=eval("Duplicatelist['"+trainablename+"'];");var newguild;var newelem;var replacethis=0;for(j in dupguildlist){if(dupguildlist[j][0]==guild){eval("Duplicatelist['"+trainablename+"'].splice("+j+",1);");if(j==0){replacethis=1;}
break;}}
if(dupguildlist.length==0){eval("delete Duplicatelist['"+trainablename+"'];");}
else{if(replacethis==1){newguild=eval("Duplicatelist['"+trainablename+"'][0][0];");newelem=eval("document.getElementById('"+newguild+trainablename+"');");newelem.remove(0);newelem.selectedIndex=0;newelem.removeAttribute('disabled');updateExpfield(newguild,trainablename,skillspell);updateHiddenTrainables(trainablename,newguild,skillspell);}}}
function updateSailorSelects(){var sailorguildelem=document.getElementById('sailorGuildSelection');var sailorguild=sailorguildelem.options[sailorguildelem.selectedIndex].value;var stats=['Constitution','Dexterity','Strength','Wisdom','Intelligence'];var guilds=['Merchant','Pirate','Navy'];var bonuses=[0,1,2,3,4,5,6,7,8,9,10];var prevvalue;var i;var j;emptySelect(sailorguildelem.length,sailorguildelem,1);fillSelect(3,sailorguildelem,guilds,null);for(i in stats){eval("prevvalue=document.getElementById('"+stats[i]+"arrSelection').options[document.getElementById('"+stats[i]+"arrSelection').selectedIndex].value;");eval("emptySelect(document.getElementById('"+stats[i]+"arrSelection').length,document.getElementById('"+stats[i]+"arrSelection'),0)");j=0;while(j<=10){eval("fillSelect(1,document.getElementById('"+stats[i]+"arrSelection'),bonuses[j],null)");if(j==prevvalue)
eval("document.getElementById('"+stats[i]+"arrSelection').selectedIndex="+j+";");j=j+1;}
eval("document.getElementById('"+stats[i]+"arrSelection').setAttribute('disabled','disabled');");}
if((sailorguild!='-')&&(sailorguild!='0')){if(sailorguild=='Navy'){sailorguildelem.selectedIndex=3;document.getElementById('ConstitutionarrSelection').removeAttribute('disabled');document.getElementById('WisdomarrSelection').removeAttribute('disabled');document.getElementById('DexterityarrSelection').removeAttribute('disabled');}
if(sailorguild=='Merchant'){sailorguildelem.selectedIndex=1;document.getElementById('WisdomarrSelection').removeAttribute('disabled');document.getElementById('IntelligencearrSelection').removeAttribute('disabled');}
if(sailorguild=='Pirate'){document.getElementById('StrengtharrSelection').removeAttribute('disabled');document.getElementById('IntelligencearrSelection').removeAttribute('disabled');document.getElementById('DexterityarrSelection').removeAttribute('disabled');sailorguildelem.selectedIndex=2;}}
else{sailorguildelem.selectedIndex=0;}}
function updateSailorStats(statnumber){var stats=['Constitution','Dexterity','Strength','Wisdom','Intelligence'];eval("document.getElementById('sailor"+stats[statnumber]+"').value=document.getElementById('"+stats[statnumber]+"arrSelection').options[document.getElementById('"+stats[statnumber]+"arrSelection').selectedIndex].value;");if(stats[statnumber]!="Dexterity"){document.getElementById('sailorDexterity').value=0;document.getElementById('DexterityarrSelection').selectedIndex=0;}
if(stats[statnumber]!="Intelligence"){document.getElementById('sailorIntelligence').value=0;document.getElementById('IntelligencearrSelection').selectedIndex=0;}
if(stats[statnumber]!="Wisdom"){document.getElementById('sailorWisdom').value=0;document.getElementById('WisdomarrSelection').selectedIndex=0;}
if(stats[statnumber]!="Strength"){document.getElementById('sailorStrength').value=0;document.getElementById('StrengtharrSelection').selectedIndex=0;}
if(stats[statnumber]!="Constitution"){document.getElementById('sailorConstitution').value=0;document.getElementById('ConstitutionarrSelection').selectedIndex=0;}}
function updateQuests(difficulty){var i;var elem;var onoff=0;elem=eval("document.getElementById('questcheckbox"+difficulty+"')");if(elem.checked)
onoff=1;else
onoff=0;i=1;while(i<=questamount){elem=eval("document.getElementById('questnumber"+i+"')");if(elem){if(parseInt(elem.value)==parseInt(difficulty)){if((onoff==1)&&!(elem.checked)){updateQuestTpoints(i);elem.checked=true;}
if((onoff==0)&&(elem.checked)){updateQuestTpoints(i);elem.checked=false;}}}
i=i+1;}
updateQuestExp();updateTotalExp();}
function updateTipContent(tipid,name,type,over){if(over){tooltiptimer=setTimeout(function(){updateTipContentReal(tipid,name,type,over);},400);}
else{clearTimeout(tooltiptimer);updateTipContentReal(tipid,name,type,over);}}
function updateTipContentReal(tipid,name,type,over){var tipdiv;var tname;var tiptext;var details;var params;if((type==0)|(type==1)){params='{"trainablename":"'+name+'","skillspell":'+type+'}';tname=eval("document.getElementById('trainablespan"+tipid+"')");tipdiv=eval("document.getElementById('trainabletip"+tipid+"')");}
if(type==2){params='{"abilitynumber":"'+tipid+'"}';tname=eval("document.getElementById('abilityspan"+tipid+"')");tipdiv=eval("document.getElementById('abilitytip"+tipid+"')");}
if(type==3){params='{"questnumber":"'+tipid+'"}';tname=eval("document.getElementById('questspan"+tipid+"')");tipdiv=eval("document.getElementById('questtip"+tipid+"')");}
if(over){$.get("simtips.php",eval("("+params+")"),function(data){details=eval("("+data+");");if(type==0){tipdiv.textContent=details['description'];}
if(type==1){tipdiv.textContent="Description: "+details['description'];}
if(type==2){tipdiv.textContent=details['description'];}
if(type==3){tipdiv.textContent=details['description'];}});tname.setAttribute('class','SimpleTipHover');}
else{tname.setAttribute('class','SimpleTip');}}
function updateMageSpecials(){var i;var bgname=document.getElementById('bgSelection').options[document.getElementById('bgSelection').selectedIndex].value;var guildname;var multiplier=1;if(bgname=='Magical'){magespecs['mage_acid']=1;magespecs['mage_asphyxiation']=1;magespecs['mage_cold']=1;magespecs['mage_fire']=1;magespecs['mage_electricity']=1;magespecs['mage_magical']=1;magespecs['mage_poison']=1;i=2;while(i<guildselects){eval("guildname=document.getElementById('guildSelection"+i+"').options[document.getElementById('guildSelection"+i+"').selectedIndex].value;");if((guildname=='mage_acid')||(guildname=='mage_asphyxiation')||(guildname=='mage_cold')||(guildname=='mage_fire')||(guildname=='mage_electricity')||(guildname=='mage_magical')||(guildname=='mage_poison')){magespecs[guildname]=multiplier;multiplier=parseFloat(multiplier)+parseFloat(0.25);}
i=i+1;}}}
function updateEqSetSelects(){var currace=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var selectelem;var i;var setnumber=1;var slotname;var slots=raceslots[currace];var selectindex;var multislots=new Object();multislots={"Torso":1,"Arms":1,"Bracelets":1,"Hands":1,"Legs":1,"Feet":1};while(setnumber<4){for(slotname in alleqslots){i=0;while(i<alleqslots[slotname]){eval("selectelem=document.getElementById('set"+setnumber+"slot"+slotname+"index"+i+"');");if(slots[slotname]>i){selectelem.removeAttribute('disabled');}
else{selectindex=0;while(selectelem.options[selectindex].value!=0){selectindex++;}
selectelem.selectedIndex=selectindex;selectelem.setAttribute('disabled','disabled');}
i++;}}
for(slotname in multislots){i=0;while(i<alleqslots[slotname]){eval("selectelem=document.getElementById('set"+setnumber+"slot"+slotname+"index"+i+"');");if(selectelem.options[selectelem.selectedIndex].value>0){updateMultislotEq(setnumber,slotname,i);}
i++;}}
updateEqSetTotals(setnumber);setnumber++;}}
function updateMultislotEq(setnumber,slotname,index){var selectelem;var selectelem2;var prevelem;var eqtype;var index2;var multislots=new Object();var currace=document.getElementById('raceSelection').options[document.getElementById('raceSelection').selectedIndex].value;var slots;var slotname;var i;var selectindex;var slotsfree;eval("selectelem=document.getElementById('set"+setnumber+"slot"+slotname+"index"+index+"');");eval("prevelem=document.getElementById('prevset"+setnumber+"slot"+slotname+"index"+index+"');");if(selectelem.options[selectelem.selectedIndex].value>0){eqtype=eqlist[selectelem.options[selectelem.selectedIndex].value]['type'];}
else{eqtype=eqlist[prevelem.value]['type'];}
if((eqtype=="bracelets")||(eqtype=="gloves")||(eqtype=="gauntlets")||(eqtype=="mittens")||(eqtype=="leggings")||(eqtype=="pants")||(eqtype=="kilt")||(eqtype=="shorts")||(eqtype=="boots")||(eqtype=="great boots")||(eqtype=="sandals")||(eqtype=="shoes")||(eqtype=="slippers")||(eqtype=="jackboots")||(eqtype=="bracers")||(eqtype=="sleeves")){if(index%2==0){index2=parseInt(index)+1;}
else{index2=parseInt(index)-1;}
eval("selectelem2=document.getElementById('set"+setnumber+"slot"+slotname+"index"+index2+"');");if(selectelem2.options[selectelem2.selectedIndex].value>0){alert("No room to wear this eq!");selectelem.selectedIndex=0;}
else{selectindex=0;while(selectelem2.options[selectindex].value!=0){selectindex++;}
selectelem2.selectedIndex=selectindex;selectelem2.setAttribute('disabled','disabled');}
if(selectelem.options[selectelem.selectedIndex].value==0){selectelem2.removeAttribute('disabled');}}
if((eqtype=="field plate")||(eqtype=="full plate")||(eqtype=="o-yoroi")||(eqtype=="chain mail")||(eqtype=="battlesuit")||(eqtype=="mail coat")||(eqtype=="robe")||(eqtype=="elfin plate")||(eqtype=="robes")||(eqtype=="elfin chain mail")||(eqtype=="sleeved coat")||(eqtype=="shirt")||(eqtype=="coat")||(eqtype=="studded armour")){eval("selectelem=document.getElementById('set"+setnumber+"slot"+slotname+"index"+index+"');");if(eqtype=="field plate")multislots={'Arms':1,'Legs':1,'Hands':1};if(eqtype=="full plate")multislots={'Arms':1,'Legs':1,'Hands':1,'Head':1,'Neck':1,'Feet':1};if(eqtype=="o-yoroi")multislots={'Arms':1,'Legs':1};if(eqtype=="chain mail")multislots={'Arms':1,'Legs':1,'Hands':1};if(eqtype=="battlesuit")multislots={'Arms':1,'Legs':1,'Hands':1,'Feet':1};if(eqtype=="mail coat")multislots={'Legs':1};if(eqtype=="robe")multislots={'Arms':1,'Legs':1,'Neck':1};if(eqtype=="robes")multislots={'Arms':1,'Legs':1,'Head':1,'Neck':1,'Feet':1,'Hands':1};if(eqtype=="elfin plate")multislots={'Arms':1,'Legs':1,'Hands':1,'Feet':1};if(eqtype=="elfin chain mail")multislots={'Arms':1,'Legs':1,'Hands':1};if(eqtype=="sleeved coat")multislots={'Arms':1,'Legs':1};if(eqtype=="shirt")multislots={'Arms':1};if(eqtype=="coat")multislots={'Legs':1};if(eqtype=="studded armour")multislots={'Head':1,'Neck':1,'Feet':1,'Arms':1,'Legs':1,'Hands':1};slotsfree=1;if(selectelem.options[selectelem.selectedIndex].value!=0){for(slotname in multislots){if(raceslots[currace][slotname]>2)
slots=2;else
slots=raceslots[currace][slotname];i=0;while(i<slots){eval("selectelem2=document.getElementById('set"+setnumber+"slot"+slotname+"index"+i+"');");if(selectelem2.options[selectelem2.selectedIndex].value>0){alert("No room in slot '"+slotname+"', index "+i+"!");slotsfree=0;selectindex=0;while(selectelem.options[selectindex].value!=0){selectindex++;}
selectelem.selectedIndex=selectindex;}
i++;}}
if(slotsfree==1){for(slotname in multislots){if(raceslots[currace][slotname]>2)
slots=2;else
slots=raceslots[currace][slotname];i=0;while(i<slots){eval("selectelem2=document.getElementById('set"+setnumber+"slot"+slotname+"index"+i+"');");selectindex=0;while(selectelem2.options[selectindex].value!=0){selectindex++;}
selectelem2.selectedIndex=selectindex;selectelem2.setAttribute('disabled','disabled');i++;}}}}
if((slotsfree==1)&&(selectelem.options[selectelem.selectedIndex].value==0)){for(slotname in multislots){if(raceslots[currace][slotname]>2)
slots=2;else
slots=raceslots[currace][slotname];i=0;while(i<slots){eval("selectelem2=document.getElementById('set"+setnumber+"slot"+slotname+"index"+i+"');");selectelem2.removeAttribute('disabled');i++;}}}}
prevelem.value=parseInt(selectelem.options[selectelem.selectedIndex].value);}
function updateEqSetTotals(setnumber){var selectelem;var totalelem;var weightelem;var slotname;var statname;var maxval;var maxstat;var weight;var eqid;var i;var totalstring=" ";var currentstats={"wis":0,"int":0,"str":0,"con":0,"dex":0};var eqtotals={"wis":0,"int":0,"str":0,"dex":0,"con":0,"dam":0,"spr":0,"physres":0,"avoid":0,"hpr":0,"weight":0,"hit":0,"parry":0,"dodge":0,"claw":0,"marts":0,"csense":0,"qc":0};eval("totalelem=document.getElementById('eqsettotals"+setnumber+"');");eval("weightelem=document.getElementById('eqsetsubweight"+setnumber+"');");for(slotname in alleqslots){i=0;while(i<alleqslots[slotname]){eval("selectelem=document.getElementById('set"+setnumber+"slot"+slotname+"index"+i+"');");eqid=selectelem.options[selectelem.selectedIndex].value;if(eqid>0){eqtotals['weight']=parseFloat(eqtotals['weight'])+parseFloat(eqlist[eqid]['weight']);eqtotals['wis']=parseInt(eqtotals['wis'])+parseInt(eqlist[eqid]['wis']);eqtotals['int']=parseInt(eqtotals['int'])+parseInt(eqlist[eqid]['int']);eqtotals['dam']=parseInt(eqtotals['dam'])+parseInt(eqlist[eqid]['dam']);eqtotals['physres']=parseInt(eqtotals['physres'])+parseInt(eqlist[eqid]['physres']);eqtotals['dex']=parseInt(eqtotals['dex'])+parseInt(eqlist[eqid]['dex']);eqtotals['str']=parseInt(eqtotals['str'])+parseInt(eqlist[eqid]['str']);eqtotals['con']=parseInt(eqtotals['con'])+parseInt(eqlist[eqid]['con']);eqtotals['avoid']=parseInt(eqtotals['avoid'])+parseInt(eqlist[eqid]['avoid']);eqtotals['spr']=parseInt(eqtotals['spr'])+parseInt(eqlist[eqid]['spr']);eqtotals['hit']=parseInt(eqtotals['hit'])+parseInt(eqlist[eqid]['hit']);eqtotals['dodge']=parseInt(eqtotals['dodge'])+parseInt(eqlist[eqid]['dodge']);eqtotals['parry']=parseInt(eqtotals['parry'])+parseInt(eqlist[eqid]['parry']);eqtotals['csense']=parseInt(eqtotals['csense'])+parseInt(eqlist[eqid]['csense']);eqtotals['claw']=parseInt(eqtotals['claw'])+parseInt(eqlist[eqid]['claw']);eqtotals['marts']=parseInt(eqtotals['marts'])+parseInt(eqlist[eqid]['marts']);eqtotals['qc']=parseInt(eqtotals['qc'])+parseInt(eqlist[eqid]['qc']);if(eqid==1375){eqtotals['int']=parseInt(eqtotals['int'])-parseInt(eqlist[eqid]['int']);currentstats['str']=document.getElementById('Strength').value;currentstats['con']=document.getElementById('Constitution').value;currentstats['wis']=document.getElementById('Wisdom').value;currentstats['int']=document.getElementById('Intelligence').value;currentstats['dex']=document.getElementById('Dexterity').value;maxval=0;for(statname in currentstats){if(currentstats[statname]>maxval){maxval=currentstats[statname];maxstat=statname;}}
eqtotals[maxstat]=parseInt(eqtotals[maxstat])+parseInt(9);}
if(eqid==1460){eqtotals['int']=parseInt(eqtotals['int'])-parseInt(eqlist[eqid]['int']);eqtotals['int']=parseInt(eqtotals['int'])+parseInt(document.getElementById('totallevels').value/10);}}
i++;}}
weight=parseFloat(eqtotals['weight']);weightelem.value=weight.toFixed(2);if(eqtotals['wis']>0){totalstring=totalstring+" Wis:"+parseInt(eqtotals['wis']);}
if(eqtotals['int']>0){totalstring=totalstring+" Int:"+parseInt(eqtotals['int']);}
if(eqtotals['dam']>0){totalstring=totalstring+" Dam:"+parseInt(eqtotals['dam']);}
if(eqtotals['spr']>0){totalstring=totalstring+" Spr:"+parseInt(eqtotals['spr']);}
if(eqtotals['physres']>0){totalstring=totalstring+" PR:"+parseInt(eqtotals['physres']);}
if(eqtotals['dex']>0){totalstring=totalstring+" Dex:"+parseInt(eqtotals['dex']);}
if(eqtotals['str']>0){totalstring=totalstring+" Str:"+parseInt(eqtotals['str']);}
if(eqtotals['avoid']>0){totalstring=totalstring+" Avo:"+parseInt(eqtotals['avoid']);}
if(eqtotals['con']>0){totalstring=totalstring+" Con:"+parseInt(eqtotals['con']);}
if(eqtotals['hit']>0){totalstring=totalstring+" Hit:"+parseInt(eqtotals['hit']);}
if(eqtotals['dodge']>0){totalstring=totalstring+" Dodge:"+parseInt(eqtotals['dodge']);}
if(eqtotals['parry']>0){totalstring=totalstring+" Parry:"+parseInt(eqtotals['parry']);}
if(eqtotals['csense']>0){totalstring=totalstring+" CSense:"+parseInt(eqtotals['csense']);}
if(eqtotals['claw']>0){totalstring=totalstring+" Claw:"+parseInt(eqtotals['claw']);}
if(eqtotals['marts']>0){totalstring=totalstring+" MA:"+parseInt(eqtotals['marts']);}
if(eqtotals['qc']>0){totalstring=totalstring+" QC:"+parseInt(eqtotals['qc']);}
totalelem.value=totalstring;weight=parseFloat(document.getElementById('eqsetsubweight1').value)+
parseFloat(document.getElementById('eqsetsubweight2').value)+
parseFloat(document.getElementById('eqsetsubweight3').value);document.getElementById('eqsettotalweight').value=weight.toFixed(2);updateEqBurden();}
function updateEqBurden(){var strength=document.getElementById('Strength').value;var weight=document.getElementById('eqsettotalweight').value;var subweight;var subweightstr;var i;var tmpweight;var submerch;var submage;i=1;while(i<4){eval("subweight=document.getElementById('eqsetsubweight"+i+"');");eval("subweightstr=document.getElementById('eqsetsubweightstring"+i+"');");submerch=parseFloat(subweight.value)*parseFloat(0.33);submage=parseFloat(subweight.value)*parseFloat(0.75);subweightstr.value=subweight.value+" Kg   FW: ("+submerch.toFixed(1)+"/"+submage.toFixed(1)+")";i++;}
tmpweight=(strength/2+50)/1.5;document.getElementById('eqsetburden').value=tmpweight.toFixed(1);tmpweight=parseFloat(weight)*parseFloat(0.33);document.getElementById('eqsetmerchantfw').value=tmpweight.toFixed(1);tmpweight=parseFloat(weight)*parseFloat(0.75);document.getElementById('eqsetmagefw').value=tmpweight.toFixed(1);}
function updateEqSetShortname(setnumber,slotname,index){var selectelem;var eqid;var shortname;eval("selectelem=document.getElementById('set"+setnumber+"slot"+slotname+"index"+index+"');");eqid=selectelem.options[selectelem.selectedIndex].value;if(eqid>0){shortname=eqlist[eqid]['shortname'];if(eqlist[eqid]['version'])
shortname=shortname+" ["+eqlist[eqid]['version']+"]";selectelem.options[selectelem.selectedIndex].text=makeEqShortname(eqid);}}
function makeEqShortname(eqid){var shortname;if(eqid>0){shortname=eqlist[eqid]['shortname'];if(eqlist[eqid]['version'])
shortname=shortname+" ["+eqlist[eqid]['version']+"]";return shortname;}
else{shortname='-';return shortname;}}
function fillEqSelectOptions(setnumber){var i;var slotname;for(slotname in alleqslots){i=0;while(i<alleqslots[slotname]){updateEqSlotOptions(setnumber,slotname,i);i++;}}}
function updateEqSlotOptions(setnumber,slotname,index){var items;var selectelem;var firstval;var firsttext;var offfilterelem;var deffilterelem;var sprfilterelem;var wisfilterelem;var intfilterelem;var optionsarray=new Object();var i;var opt;var addthis;eval("selectelem=document.getElementById('set"+setnumber+"slot"+slotname+"index"+index+"');");eval("offfilterelem=document.getElementById('eqsetfilteroff"+setnumber+"');");eval("deffilterelem=document.getElementById('eqsetfilterdef"+setnumber+"');");eval("sprfilterelem=document.getElementById('eqsetfilterspr"+setnumber+"');");eval("intfilterelem=document.getElementById('eqsetfilterint"+setnumber+"');");eval("wisfilterelem=document.getElementById('eqsetfilterwis"+setnumber+"');");firstval=selectelem.options[selectelem.selectedIndex].value;firsttext=selectelem.options[selectelem.selectedIndex].text;emptySelect(selectelem.length,selectelem,0);opt=document.createElement('option');opt.text=firsttext;opt.value=firstval;try{selectelem.add(opt,null);}
catch(ex){selectelem.add(opt);}
if(firstval>0){opt=document.createElement('option');opt.text='-';opt.value=0;try{selectelem.add(opt,null);}
catch(ex){selectelem.add(opt);}}
for(eqid in eqlist){addthis=0;if((eqid!=firstval)&&(eqlist[eqid]['slot']==slotname)||((slotname=="Torso")&&(eqlist[eqid]['slot']=="Multislot"))){if((offfilterelem.checked)&&(deffilterelem.checked)&&(sprfilterelem.checked)&&(wisfilterelem.checked)&&(intfilterelem.checked)){addthis=1;}
if((offfilterelem.checked)&&((eqlist[eqid]['dam']>0)||(eqlist[eqid]['str']>0)||(eqlist[eqid]['claw']>0)||(eqlist[eqid]['marts']>0)||(eqid==1278)||(eqid==1543)||(eqid==2436)||(eqid==1375)||(eqlist[eqid]['hit']>0))){addthis=1;}
if((deffilterelem.checked)&&((eqlist[eqid]['physres']>0)||(eqlist[eqid]['con']>0)||(eqlist[eqid]['dex']>0)||(eqlist[eqid]['avoid']>0)||(eqlist[eqid]['parry']>0)||(eqlist[eqid]['dodge']>0)||(eqlist[eqid]['csense']>0)||(eqid==1375))){addthis=1;}
if((sprfilterelem.checked)&&(eqlist[eqid]['spr']>0)){addthis=1;}
if((intfilterelem.checked)&&(eqlist[eqid]['int']>0)||(eqlist[eqid]['qc']>0)||(eqid==1375)){addthis=1;}
if((wisfilterelem.checked)&&(eqlist[eqid]['wis']>0)||(eqlist[eqid]['qc']>0)||(eqid==1375)){addthis=1;}
if(addthis>0){opt=document.createElement('option');opt.value=eqid;opt.text=makeEqShortname(eqid);try{selectelem.add(opt,null);}
catch(ex){selectelem.add(opt);}}}}}
function toggleDiv(divid){if(document.getElementById(divid).style.display=='none'){document.getElementById(divid).style.display='block';}
else{document.getElementById(divid).style.display='none';}}
function updateReincCosts(){var nextdayelem=document.getElementById('nextdayselect');var nextmonthelem=document.getElementById('nextmonthselect');var nextyearelem=document.getElementById('nextyearselect');var lastdayelem=document.getElementById('lastdayselect');var lastmonthelem=document.getElementById('lastmonthselect');var lastyearelem=document.getElementById('lastyearselect');var monthdays=[31,28,31,30,31,30,31,31,30,31,30,31];var totaldaysnow=0;var totaldaysselected=0;var days=0;var i;var difference;i=0;while(i<parseInt(nextmonthelem.options[nextmonthelem.selectedIndex].value)){days=days+monthdays[i];i++;}
totaldaysnow=parseInt(nextyearelem.options[nextyearelem.selectedIndex].value)*365+parseInt(days)+
parseInt(nextdayelem.options[nextdayelem.selectedIndex].value);i=0;days=0;while(i<parseInt(lastmonthelem.options[lastmonthelem.selectedIndex].value)){days=days+monthdays[i];i++;}
totaldaysselected=parseInt(lastyearelem.options[lastyearelem.selectedIndex].value)*365+parseInt(days)+
parseInt(lastdayelem.options[lastdayelem.selectedIndex].value);difference=totaldaysnow-totaldaysselected;updateInstantCost(difference);updateFastCost(difference);updateNormalCost(difference);updateSlowCost(difference);}
function updateInstantCost(difference){var cost;var remainder=difference%7;var weeks=(difference-remainder)/7;var exp;if(remainder==0)
weeks--;if(difference<15){cost=0.12;}
else{if((difference>=15)&&(difference<78)){cost=0.13-(weeks*0.01);}
else{cost=0.02;}}
exp=parseFloat(document.getElementById('usertotalexp').value)*parseFloat(cost);if(exp>1000000){exp=exp/1000000;document.getElementById('instantcost').value="Inst:  "+exp.toFixed(1)+"M";}
else{exp=exp/1000;document.getElementById('instantcost').value="Inst:  "+exp.toFixed(1)+"k";}}
function updateFastCost(difference){var cost;var remainder=difference%7;var weeks=(difference-remainder)/7;var exp;if(remainder==0)
weeks--;if(difference<15){cost=0.10;}
else{if((difference>=15)&&(difference<71)){cost=0.11-(weeks*0.01);}
else{cost=0.015;}}
exp=parseFloat(document.getElementById('usertotalexp').value)*parseFloat(cost);if(exp>1000000){exp=exp/1000000;document.getElementById('fastcost').value="Fast:  "+exp.toFixed(1)+"M";}
else{exp=exp/1000;document.getElementById('fastcost').value="Fast:  "+exp.toFixed(1)+"k";}}
function updateNormalCost(difference){var cost;var remainder=difference%7;var weeks=(difference-remainder)/7;var exp;if(remainder==0)
weeks--;if(difference<1){cost=0.08;}
else{if((difference>=1)&&(difference<43)){cost=0.07-(weeks*0.01);}
else{cost=0.01;}}
exp=parseFloat(document.getElementById('usertotalexp').value)*parseFloat(cost);if(exp>1000000){exp=exp/1000000;document.getElementById('normalcost').value="Norm:  "+exp.toFixed(1)+"M";}
else{exp=exp/1000;document.getElementById('normalcost').value="Norm:  "+exp.toFixed(1)+"k";}}
function updateSlowCost(difference){var cost;var remainder=difference%7;var weeks=(difference-remainder)/7;var exp;if((remainder==0)&&(difference>0))
weeks--;if(difference<1){cost=0.06;}
else{if((difference>=1)&&(difference<36)){cost=0.05-(weeks*0.01);}
else{cost=0.005;}}
exp=parseFloat(document.getElementById('usertotalexp').value)*parseFloat(cost);if(exp>1000000){exp=exp/1000000;document.getElementById('slowcost').value="Slow:  "+exp.toFixed(1)+"M";}
else{exp=exp/1000;document.getElementById('slowcost').value="Slow:  "+exp.toFixed(1)+"k";}}
function fillYears(isfuture){var i;var maxyear;var yearelem;var opt;var yearspace=1;if(isfuture){yearelem=document.getElementById('nextyearselect');i=parseInt(document.getElementById('currentyear').value);maxyear=parseInt(i)+parseInt(yearspace);}
else{yearelem=document.getElementById('lastyearselect');maxyear=parseInt(document.getElementById('currentyear').value);i=parseInt(maxyear)-parseInt(yearspace);}
while(i<=maxyear){opt=document.createElement('option');opt.text=i;opt.value=i;try{yearelem.add(opt,null);}
catch(ex){yearelem.add(opt);}
i++;}
if(isfuture)
yearelem.selectedIndex=0;else
yearelem.selectedIndex=yearspace;}
function updateMonths(isfuture){var i;var j;var k;var maxmonth;var monthelem;var monthnames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var opt;var oldmonth=0;if(isfuture){monthelem=document.getElementById('nextmonthselect');maxmonth=11;if(document.getElementById('currentyear').value==document.getElementById('nextyearselect').value){i=document.getElementById('currentmonth').value;}
else{i=0;}}
else{monthelem=document.getElementById('lastmonthselect');i=0;if(document.getElementById('currentyear').value==document.getElementById('lastyearselect').value){maxmonth=document.getElementById('currentmonth').value;}
else{maxmonth=11;}}
j=0;k=monthelem.options.length;if(k>0)
oldmonth=monthelem.options[monthelem.selectedIndex].value;else
oldmonth=document.getElementById('currentmonth').value;while(j<k){monthelem.remove(0);j++;}
while(i<=maxmonth){opt=document.createElement('option');opt.text=monthnames[i];opt.value=i;try{monthelem.add(opt,null);}
catch(ex){monthelem.add(opt);}
i++;}
i=0;while((i<monthelem.options.length-1)&&(oldmonth>parseInt(monthelem.options[i].value))){i++;}
monthelem.selectedIndex=i;}
function updateDays(isfuture){var maxdays;var i;var j;var k;var dayelem;var monthelem;var yearelem;var month;var opt;var year;var oldday=0;if(isfuture){dayelem=document.getElementById('nextdayselect');monthelem=document.getElementById('nextmonthselect');yearelem=document.getElementById('nextyearselect');}
else{dayelem=document.getElementById('lastdayselect');monthelem=document.getElementById('lastmonthselect');yearelem=document.getElementById('lastyearselect');}
month=monthelem.options[monthelem.selectedIndex].value;year=yearelem.options[yearelem.selectedIndex].value;i=0;k=dayelem.options.length;if(k>0)
oldday=dayelem.options[dayelem.selectedIndex].value;else
oldday=document.getElementById('currentday').value;while(i<k){dayelem.remove(0);i++;}
if((isfuture==0)&&(yearelem.options[yearelem.selectedIndex].value==document.getElementById('currentyear').value)&&(monthelem.options[monthelem.selectedIndex].value==document.getElementById('currentmonth').value)){maxdays=document.getElementById('currentday').value;}
else{if(month==1){if(year%4==0)
maxdays=29;else
maxdays=28;}
else{if((month==3)||(month==5)||(month==8)||(month==10)){maxdays=30;}
else{maxdays=31;}}}
if((isfuture)&&(yearelem.options[yearelem.selectedIndex].value==document.getElementById('currentyear').value)&&(monthelem.options[monthelem.selectedIndex].value==document.getElementById('currentmonth').value)){i=document.getElementById('currentday').value;}
else{i=1;}
while(i<=maxdays){opt=document.createElement('option');opt.text=i;opt.value=i;try{dayelem.add(opt,null);}
catch(ex){dayelem.add(opt);}
i++;}
i=0;while((i<dayelem.options.length-1)&&(oldday>parseInt(dayelem.options[i].value))){i++;}
dayelem.selectedIndex=i;}
function testfunction(){var guildii="CRIMSON";var skillii="SITTII";var maxii=30;var Duptest=new Object();var guildskills=new Object();var arr='XXX';var data;var stats=new Object();var i;var guilds=new Object();var levels=new Object();for(j in Duplicatelist){for(maxii in Duplicatelist[j]){arr=arr+" "+j+" "+Duplicatelist[j][maxii][0]+" "+Duplicatelist[j][maxii][1]+"\n";}}
alert(arr);var tmpstr="";var tmp;for(tmp in allguildskills){tmpstr=tmpstr+" "+tmp;}
alert("cr35 "+allguildskills["crimson"]["35"]["Dodge"]);alert("cr34 "+allguildskills["crimson"]["34"]["Dodge"]);alert("allguildskills "+tmpstr);alert("sel1 "+document.getElementById('guildSelection1').options[document.getElementById('guildSelection1').selectedIndex].value);alert("sel2 "+document.getElementById('guildSelection2').options[document.getElementById('guildSelection2').selectedIndex].value);alert("totals "+document.getElementById('totallevels').value);}