// GURPS grenade damage calculator javascript

	//Computes the sum of mDn.
	function dice(m, n) {
		sum = 0
		var i
	for (i = 0; i < m; i++)
		sum = sum + Math.ceil(n * Math.random())
	return sum
	}

	//Computes GURPS distance (or size) modifiers in the range 0-150000 yards
	function distmod(distance) {
		if (distance < 0) {return "error"}
		if (distance < 3) {return 0}
		if (distance < 4) {return 1}
		if (distance < 6) {return 2}
		if (distance < 8) {return 3}
		if (distance < 11) {return 4}
		if (distance < 16) {return 5}

		if (distance < 21) {return 6}
		if (distance < 31) {return 7}
		if (distance < 51) {return 8}
		if (distance < 71) {return 9}
		if (distance < 101) {return 10}
		if (distance < 151) {return 11}

		if (distance < 201) {return 12}
		if (distance < 301) {return 13}
		if (distance < 501) {return 14} //.28mi
		if (distance < 701) {return 15}
		if (distance < 1001) {return 16}
		if (distance < 1501) {return 17} //.85mi

		if (distance < 2001) {return 18}
		if (distance < 3001) {return 19}
		if (distance < 5001) {return 20} //2.85mi
		if (distance < 7001) {return 21}
		if (distance < 10001) {return 22}
		if (distance < 15001) {return 23} //8.5mi

		if (distance < 20001) {return 24}
		if (distance < 30001) {return 25}
		if (distance < 50001) {return 26} //28.5mi
		if (distance < 70001) {return 27}
		if (distance < 100001) {return 28}
		if (distance < 150001) {return 29} //85mi

		return 99
	}

	function calcdam() {
		form = document.grenades
		dicenum = form.damagedicenum.value
		diceval = form.damagedicesize.value

		for (i=0; i<10; i++) {
			input = document.getElementsByName("guy"+i+"dist")
			distance = input[0].value
			input = document.getElementsByName("guy"+i+"DR")
			DR = input[0].value
			damagetemp = 0
			hitby = Math.max(0, Math.floor((15 - dice(3,6) - distmod(distance)) / 3))
			elementID = document.getElementById("fh"+i)
			elementID.innerHTML = hitby
			for(j = 0; j < hitby; j++)
				damagetemp = damagetemp + Math.max(0, Math.floor((dice(dicenum, diceval) - DR) * 1.5))
			elementID = document.getElementById("dam"+i)
			elementID.innerHTML = damagetemp
		}
	}

	function setallDR() {
		DR = document.grenades.DRforall.value
		for (i=0; i<10; i++) {
			elementID = document.getElementsByName("guy"+i+"DR")
			elementID[0].value = DR
		}
	}