var stats;
var count;
var points;

func_reset();

function func_submit()
{
	if (points < 0)
		return alert("You somehow managed to spend more points than you should. Please correct this mistake.");

	if (points > 2)
		return alert("Please spend all of your points!");

	if (document.getElementById("txt_name").value.length < 1)
		return alert("Please enter a name for your soldier.");

	document.getElementById("val_tus").disabled = '';
	document.getElementById("val_sta").disabled = '';
	document.getElementById("val_hea").disabled = '';
	document.getElementById("val_bra").disabled = '';
	document.getElementById("val_rea").disabled = '';
	document.getElementById("val_fac").disabled = '';
	document.getElementById("val_tac").disabled = '';
	document.getElementById("val_str").disabled = '';
	document.getElementById("val_psi").disabled = '';

	document.getElementById("xcomform").submit();
}

function func_reset()
{
	stats = new Array();
	count = 0;
	points = 300;

	AddStat("tus", 30, 80, 1, 1, 6);
	AddStat("sta", 30, 80, 1, 1, 6);
	AddStat("hea", 15, 70, 1, 1, 6);
	AddStat("bra", 10, 70, 1, 10, 35);
	AddStat("rea", 20, 70, 1, 1, 6);
	AddStat("fac", 30, 90, 1, 1, 6);
	AddStat("tac", 30, 90, 1, 1, 6);
	AddStat("str", 10, 50, 1, 1, 6);
	AddStat("psi", 10, 100, 1, 1, 6);

	UpdateInfo();
}

function increase_stat(_s)
{
	var obj = FindStat(_s);
	var cost = (obj.cost * obj.interval);

	//got enough points?
	if (cost <= points && obj.value < obj.max)
	{
		obj.value += obj.interval;
		points -= cost;
		NormalizeCost(obj);
	
		UpdateInfo();
	}
}

function decrease_stat(_s)
{
	var obj = FindStat(_s);

	//can we reduce this stat further?
	if (obj.value > obj.min)
	{
		obj.value -= obj.interval;
		NormalizeCost(obj);
		points += (obj.cost * obj.interval);

		UpdateInfo();
	}
}

function FindStat(_s)
{
	for (i in stats)
	{
		var obj = stats[i];

		if (obj.name === _s)
		{
			return obj;
		}
	}

	return "";
}

function AddStat(_name, _min, _max, _cost, _interval, _multiplier)
{
	var entry = new Object();

	entry.name = _name;
	entry.value = _min;
	entry.min = _min;
	entry.max = _max;
	entry.basecost = _cost;
	entry.cost = _cost;
	entry.interval = _interval;
	entry.multiplier = _multiplier;

	stats[count] = entry;
	count++;
}

function NormalizeCost(obj)
{
	var cur = obj.value - obj.min;
	var max = obj.max - obj.min;

	var mid = ((cur / max) * obj.multiplier);
	obj.cost = (obj.interval + mid) / obj.interval;
	obj.cost = Math.floor(obj.cost);

	return;
}

function UpdateInfo()
{
	for (i in stats)
	{
		var obj = stats[i];

		var txt_val = document.getElementById("val_" + obj.name);
		var txt_cost = document.getElementById("cost_" + obj.name);
		var txt_bar = document.getElementById("bar_" + obj.name);
		var txt_points = document.getElementById("points");

		txt_val.value = obj.value;
		txt_cost.value = (obj.cost * parseInt(obj.interval));
		txt_bar.style.width = (obj.value * 2) + "px";
		txt_points.value = points;
	}
}

