function calcnpc(){
   document.output.monsterhits.value = document.output.monster.value;
   calculate();
}

function calculate(){
   var target = document.output.selectlv.value;
   var rangexp = document.output.rangexp.value;
   var defxp = document.output.defxp.value;
   var hitsxp = document.output.hitsxp.value;
   var total = 0;
   var hits = 0;
   var gain = 0;
   var monster = document.output.monsterhits.value;
   var type = "Range";

   document.getElementById("rangelvl").innerHTML = "(Level " + xplevel(rangexp) + ")";
   document.getElementById("deflvl").innerHTML = "(Level " + xplevel(defxp) + ")";
   document.getElementById("hitslvl").innerHTML = "(Level " + xplevel(hitsxp) + ")";

   if (document.output.range1.checked == true){
      type = "Ranged";
      total = Math.ceil((calclvl(target) - rangexp) / (monster * 0.4));
      gain = (calclvl(target) - rangexp);
   }
   else if (document.output.range2.checked == true){
      type = "Ranged";
      total = Math.ceil((calclvl(target) - rangexp) / (monster * 0.2));
      gain = (calclvl(target) - rangexp);
   }
   else if (document.output.range3.checked == true){
      type = "Ranged";
      total = Math.ceil((calclvl(target) - rangexp) / (monster * 0.2));
      gain = (calclvl(target) - rangexp);
   }
   else if (document.output.defence1.checked == true){
      type = "Defence";
      total = Math.ceil((calclvl(target) - defxp) / (monster * 0.2));
      gain = (calclvl(target) - defxp);
   }
   else if (document.output.hits1.checked == true){
      type = "Constitution";
      total = Math.ceil((calclvl(target) - hitsxp) / (monster * 0.133));
      gain = (calclvl(target) - hitsxp);
   }
   else if (document.output.hits2.checked == true){
      type = "Constitution";
      total = Math.ceil((calclvl(target) - hitsxp) / (monster * 0.133));
      gain = (calclvl(target) - hitsxp);
   }
   document.getElementById("results").innerHTML = "<div style='font-size: 18px;'>You need to kill <b>" + outputComma(total) + "<br>" + document.output.monsterhits.value + " LP</b> Monsters to gain <b>" + outputComma(gain) + " XP</b><br>for level <b>" + document.output.selectlv.value + " " + type + "</b></div>";
}


function calclvl(level){
   var points = 0;
   var output = 0;
   for (var lvl = 1; lvl <= 150; lvl++){
      points += Math.floor(lvl + 300 * Math.pow(2, lvl / 7.));
      if (lvl >= 1){
         if (lvl == level){
            return output;
         }
         output = Math.floor(points / 4);
      }
   }
   return 0;
}

function xplevel(exp){ // (c) tip.it
   var points = 0;
   var output = 0;
   for (var lvl = 1; lvl <= 150; lvl++){
      points += Math.floor(lvl + 300 * Math.pow(2, lvl / 7.))
      if (lvl >= 1){
         if (output > exp){
            lvl = lvl - 1;
            if (lvl == "0")         { return "1";  }
               else if (lvl > "99") { return "99"; }
               else                 {  return lvl; }
         }
         output = Math.floor(points / 4);
      }
   }
   return 0;
}

function outputComma(number){ // (c) irt.org
   number = '' + number;
   if (number.length > 3){
      var mod = number.length%3;
      var output = (mod > 0 ? (number.substring(0,mod)) : '');
      for (i=0 ; i < Math.floor(number.length/3) ; i++){
         if ((mod ==0) && (i ==0))
            output += number.substring(mod+3*i,mod+3*i+3);
         else
         output += ',' + number.substring(mod+3*i,mod+3*i+3);
      }
      return (output);
   }
   else {
      return number;
   }
}

function getCookie(c_name) // (c) http://www.w3schools.com
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    }
  }
  return '';
}

function tipstats(calc) // (c) Tip.It
{
  var cookie = getCookie("tipstat").split(";");
  var range = "0";
  var def = "0";
  var hits = "0";
  var name = ""
  for (var i in cookie)
  {
    var cookie_values = cookie[i].split(":");
        if (cookie_values['0'] == "Ranged")
        {
          range = cookie_values['1'];
        }
        if (cookie_values['0'] == "Defence")
        {
          def = cookie_values['1'];
        }
        if (cookie_values['0'] == "Hitpoints")
        {
          hits = cookie_values['1'];
        }
  }
  if (range != '0' || def != '0' || hits != '0')
  {
    document.getElementById('playername').value = getCookie("tipname");
    document.getElementById('rangexp').value = range;
    document.getElementById('defxp').value = def;
    document.getElementById('hitsxp').value = hits;
  }
  document.getElementById('playername').value = getCookie("tipname");
}