// ==UserScript==
// @name           Zelderex Addons
// @namespace      http://www.defhoboz.biz/zelderexaddons.user.js
// @description    Zelderex Script
// @include        http://www.zelderex.com/*
// @include        http://zelderex.com/*
// ==/UserScript==
p=document.location.href;
if (p=="http://www.zelderex.com/") {
  //alert(document.body.innerHTML)
  frames[0].document.location.href="http://www.zelderex.com/gc/index2.php"
  //top.main.document.location.href="http://www.zelderex.com/gc/index2.php"
}
if (p.match("page=training_center")) {
  var maxallowed,price,maxamt
  maxamt=0
  var a=document.getElementsByTagName('input')
  var tds=document.getElementsByTagName('td')[4].innerHTML
  var money_left=tds.match(/<font color=\"lime\">\$([0-9]+)<\/font>/)[1]
  // <font color=lime>6 gallons</font>
  for (var i=0;i<9;i++) {
    maxallowed=a[i].parentNode.childNodes[1].nodeValue.substring(2);
    var b=a[i].parentNode.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue
    price=b.replace("$","");
    maxamt=Math.floor(money_left/price)
    if (maxamt>maxallowed) {maxamt=maxallowed}
    if ((maxamt!=0)&&(maxallowed!=0)) {
      a[i].parentNode.innerHTML=a[i].parentNode.innerHTML+"<br><a onClick=\"this.parentNode.childNodes[0].value='"+maxamt+"'\" href='javascript://Unit Max Afforded'>Max</a>"
    }
  }
}

function addEvent(obj, evType, fn){ 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false;
 }
}


function totalem(){
  var q=document.getElementsByTagName('input')
  var z=parseInt(q[7].value)+parseInt(q[8].value)+parseInt(q[9].value)
  var x=parseInt(q[6].value)
  isspy=document.getElementsByTagName('input')[3].checked?false:true;
  if (!isspy) {document.getElementById('soldiertotal').innerHTML=z}
   else {document.getElementById('soldiertotal').innerHTML=z}
  totalemcap();
}

function totalemcap(){
  var gas_left,gas_needed,totaltroops,totalheroes,totalspies,troopshold,agentshold,numveh,a,curveh
  a=document.getElementsByTagName('select')
  try {curveh=a[3].options[a[3].selectedIndex].text} catch (e) {curveh=0}
  // None (9 per hero/4 per agent/1 per 50 troops)
  // Night Flyer (8 fuel) (1 heroes) (3 agents) (600 troops) (0 sieges) (1 in stock)
  // Condor (20 fuel) (5 heroes) (5 agents) (2940 troops) (1 siege) (4 in stock)
  //var b=parseInt(a[7].value)+parseInt(a[8].value)+parseInt(a[9].value)
  if (curveh!=0) {
    gas_left=document.getElementsByTagName('td')[4].innerHTML.match(/<font color=\"lime\">([0-9]+) gallons<\/font>/)[1]
    totaltroops=parseInt(document.getElementsByTagName('input')[7].value)+parseInt(document.getElementsByTagName('input')[8].value)+parseInt(document.getElementsByTagName('input')[9].value)
    totalheroes=parseInt(document.getElementsByTagName('input')[5].value)
    totalspies=parseInt(document.getElementsByTagName('input')[6].value)
    isspy=document.getElementsByTagName('input')[3].checked?false:true
    if (curveh.match('None')) {
      if (isspy) {gas_needed=(totalspies*4)} else {gas_needed=(totaltroops/50)+(totalheroes*9)}
      if (gas_left-gas_needed>=0) {
        c="Gas limited - will cost " +Math.round(gas_needed)+ " gas with " + Math.round(gas_left-gas_needed) + " gas left over"
      } else {
        c="Gas limited - cannot send with current amount of troops, need "+Math.round(gas_needed)+" gas, short "+Math.round(gas_needed-gas_left)+" gas."
      }
      // <font color=lime>6 gallons</font>
    } else if (!curveh.match("PLEASE")) {
       troopshold=parseInt(curveh.match(/ \(([0-9]+) troops\) /)[1])
       agentshold=parseInt(curveh.match(/ \(([0-9]+) agents\) /)[1])
       gas_needed=parseInt(curveh.match(/ \(([0-9]+) fuel\) /)[1])       
       numveh=parseInt(curveh.match(/ \(([0-9]+) in stock\)/)[1])
       if (!isspy) {
          if (totaltroops<=(troopshold*numveh)) {
            c=(troopshold*numveh)+"<input id='shortamt' disabled type='hidden' value='"+parseInt(totaltroops-(troopshold*numveh))+"'> - Vehicle limited, will cost "+(numveh*gas_needed)+" gas, "+((troopshold*numveh)-totaltroops)+" troop space left."
          } else {
            c=(troopshold*numveh)+"<input id='shortamt' disabled type='hidden' value='"+parseInt(totaltroops-(troopshold*numveh))+"'> - Cannot send with current amount of troops, need room for "+(totaltroops-(troopshold*numveh))+" troops."
          }
       } else {
          if (totalspies<=(agentshold*numveh)) {
            c=(agentshold*numveh)+"<input id='shortamt' disabled type='hidden' value='"+parseInt(totalspies-(agentshold*numveh))+"'> - Vehicle limited, will cost "+(numveh*gas_needed)+" gas, "+((agentshold*numveh)-totalspies)+" troop space left."
          } else {
            c=(agentshold*numveh)+"<input id='shortamt' disabled type='hidden' value='"+parseInt(totalspies-(agentshold*numveh))+"'> - Cannot send with current amount of troops, need room for "+(totalspies-(agentshold*numveh))+" troops."
          }
       } 
    }
  }
  //document.getElementById('soldiertotal').innerHTML=b
  document.getElementById('capacity').innerHTML=c
}

function balancetroops(event) {
  var shortamt=parseInt(document.getElementById('shortamt').value)
  var splitnum=3
  var a=document.getElementsByTagName('input')
  var eachamt=0
  if (a[7].value==0) {splitnum--}
  if (a[8].value==0) {splitnum--}
  if (a[9].value==0) {splitnum--}
  if (splitnum!=0) {
    eachamt=Math.round(parseInt(shortamt/splitnum))
    if (a[7].value>=eachamt) {
      a[7].value=parseInt(a[7].value)-eachamt
      shortamt=shortamt-eachamt
    } else {
      shortamt=shortamt-a[7].value
      a[7].value=0
    }
    if (a[8].value>eachamt) {
      a[8].value=parseInt(a[8].value)-eachamt
      shortamt=shortamt-eachamt
    } else {
      shortamt=shortamt-a[8].value
      a[8].value=0
    }
    if (a[9].value>eachamt) {
        a[9].value=parseInt(a[9].value)-shortamt
    } else {
      a[9].value=0
    }
  }
  totalem();
  totalemcap();
  event.preventDefault();
}

if (p.match("page=attack&")) {
  var a=document.getElementsByTagName('input')
  var b=document.getElementsByTagName('select')
  try {var curveh=b[3].options[b[3].selectedIndex].text} catch (e) {var curveh=0}
  var thetotal=parseInt(a[7].value)+parseInt(a[8].value)+parseInt(a[9].value)
  
  var trtotal=document.createElement('tr')
  var tdtitle=document.createElement('td')
  var tdtotal=document.createElement('td')
  var itotal=document.createElement('div')
  itotal.id="soldiertotal"
  itotal.innerHTML=thetotal
  tdtitle.innerHTML="Total Troops"
  tdtotal.appendChild(itotal)
  trtotal.appendChild(tdtitle)
  trtotal.appendChild(tdtotal)
  
  var trveh=document.createElement('tr')
  var tdvehtitle=document.createElement('td')
  var tdvehtotal=document.createElement('td')
  var vtotal=document.createElement('div')
  vtotal.id="capacity"
  tdvehtitle.innerHTML="Capacity"
  tdvehtotal.appendChild(vtotal)
  trveh.appendChild(tdvehtitle)
  trveh.appendChild(tdvehtotal)
  
  var trtool=document.createElement('tr')
  var tdtooltitle=document.createElement('td')
  var tdtoolplace=document.createElement('td')
  var tools=document.createElement('a')
  tools.id="tools"
  tools.href="javascript://balance troop levels evenly"
  tools.innerHTML="Balance Troops"
  tdtooltitle.innerHTML=""
  tdtoolplace.appendChild(tools)
  trtool.appendChild(tdtooltitle)
  trtool.appendChild(tdtoolplace)
  
  document.getElementById('footmen').parentNode.insertBefore(trveh,document.getElementById('footmen').nextSibling.nextSibling)
  document.getElementById('footmen').parentNode.insertBefore(trtotal,document.getElementById('footmen').nextSibling.nextSibling)
  document.getElementById('footmen').parentNode.insertBefore(trtool,document.getElementById('footmen').nextSibling.nextSibling)
  
  addEvent(a[7],"change",totalem); // long range
  addEvent(a[8],"change",totalem); // mid range
  addEvent(a[9],"change",totalem); // close range
  addEvent(b[3],"change",totalemcap); // vehicles
  addEvent(tools,"click",balancetroops) // balance troop button
  
  addEvent(a[6],"change",totalem);
  addEvent(a[3],"click",totalem);
  addEvent(a[4],"click",totalem);
}
