// Author: HK-47
// URL: http://hk47.portablesofdoom.org
// Feel free to use the code, just give me credit if you do :)

function calculate_value(n) {
	stat_level = ((4+stats[n][1]*(level-1)+stats[n][5])/4);
	document.getElementById(stats[n][0] + '_level').value = stat_level;
	if (stat_level > 401 && stats[n][6] == 1) {
		stat_level = 401 + (stats[n][1]*(level-401)+stats[n][5])/5;
		document.getElementById(stats[n][0] + '_level').value = stat_level;
		//base + gain * Math.floor((4+stat_build*(level-1)+bonus_points)/4/gain_skip)
		document.getElementById(stats[n][0]).value = stats[n][2] + stats[n][4]*Math.floor(stat_level/stats[n][3]);
	} else {
		if (stats[n][2] + stats[n][4]*Math.floor(stat_level/stats[n][3]) < 0) {
			document.getElementById(stats[n][0]).value = 0;
		} else {
			document.getElementById(stats[n][0]).value = stats[n][2] + stats[n][4]*Math.floor(stat_level/stats[n][3]);
		};
	};			
};
function bonus_points (n, bonus) {
	stats[n][5] = parseInt(bonus.value, 10);
	points_left = level * 4 - 4;
	for (var i = 0; i <= 11; i++) {
		points_left -= stats[i][5];
	};
	if (points_left < 0 || bonus.value == '') {
		stats[n][5] = 0;
		bonus.value = 0;
		points_left = level * 4 - 4;
		for (var i = 0; i <= 11; i++) {
			points_left -= stats[i][5];
		};
	};
	document.getElementById('bonus_points').innerHTML = points_left;
	calculate_value(n);
};
function calculate () {
	power = parseInt(document.getElementById('power_stat').value, 10);
	magic = parseInt(document.getElementById('magic_stat').value, 10);
	sense = parseInt(document.getElementById('sense_stat').value, 10);
	charm = parseInt(document.getElementById('charm_stat').value, 10);
	level = parseInt(document.getElementById('char_level').value, 10);
	//name, type, stating value, gain every this many levels, stat gain, bonus points, level 401 change
	stats = [['attack', power, 14, 1, 4, 0, 0],['hit_rate', power, 50, 4, 1, 0, 1],['delay', power, 10, 12, -1, 0, 0],['max_mp', magic, 50, 1, 30, 0, 0],['magic_attack', magic, 50, 4, 1, 0, 1],['magic_defense', magic, -14, 1, 1, 0, 0],['capacity', sense, 620, 1, 80, 0, 0],['perception', sense, 0, 4, 1, 0, 1],['luck', sense, 0, 4, 1, 0, 1],['max_hp', charm, 90, 1, 30, 0, 0],['defense', charm, -8, 1, 4, 0, 0],['evasion', charm, 0, 4, 1, 0, 1]];
	if (power + magic + sense + charm != 10) {
		alert('Please ensure a valid build.');
	} else {
		for (var i = 0; i <= 11; i++) {
			calculate_value(i);
			document.getElementById(stats[i][0]+'_bonus').value = 0;
		};
		document.getElementById('bonus_points').innerHTML = level * 4 - 4;
	};
};