var units = new Array(36);

function loadUnits() {
	units[0] = Unit["anubis"];
	units[1] = Unit["blackwidow"];
	units[2] = Unit["bozer"];
	units[3] = Unit["crusader"];
	units[4] = Unit["darkcrusader"];
	units[5] = Unit["darkrain"];
	units[6] = Unit["darktaurus"];
	units[7] = Unit["destroyer"];
	units[8] = Unit["doomer"];
	units[9] = Unit["driller"];
	units[10] = Unit["eagle"];
	units[11] = Unit["egg"];
	units[12] = Unit["fenix"];
	units[13] = Unit["flag"];
	units[14] = Unit["heavyseeker"];
	units[15] = Unit["hiveking"];
	units[16] = Unit["hiveprotector"];
	units[17] = Unit["interceptor"];
	units[18] = Unit["kahuna"];
	units[19] = Unit["kamikaze"];
	units[20] = Unit["krill"];
	units[21] = Unit["maggot"];
	units[22] = Unit["nova"];
	units[23] = Unit["panther"];
	units[24] = Unit["pretorian"];
	units[25] = Unit["rain"];
	units[26] = Unit["raptor"];
	units[27] = Unit["samurai"];
	units[28] = Unit["scarab"];
	units[29] = Unit["seeker"];
	units[30] = Unit["spider"];
	units[31] = Unit["stinger"];
	units[32] = Unit["taurus"];
	units[33] = Unit["toxic"];
	units[34] = Unit["vector"];
	units[35] = Unit["worm"];
}

function calculate() {
	// Retrieves the unit name from the dropdown box
	var unitName = document.getElementById("unitName").value;
	// Retrieves the attack power of the attacking unit
	unitName = unitName.toLowerCase();
	unitName = removeSpaces(unitName);
	var unitAttack = Unit[unitName].baseAttack;
	// Retrieves the number of units attacking
	var quantity = document.getElementById("quantity").value;
	//Retrieves the terrain type
	var terrainName = document.getElementById("terrainName").value;
	// Retrieves the three radio buttons indicating the range
	var elements = document.getElementById("range").elements;
	// Retrives the range selected
	var range;
	for(var i = 0; i < 3; i++) {
		if(elements[i].checked) range = elements[i].value;
	}
	// Calculates the damage percentage given depending on the range
    var value = 1;
	if(range == 4)
		value = 0.75;
	else if(range == 5)
		value = 0.50;
	else if(range == 6)
		value = 0.25;
	// Changes the innerHTML
	for(var i = 0; i < 36; i++) {
		var currentTR = document.getElementById("u" + i);
		var currentUnit = units[i];
		var attackBonus = checkAttackBonus(unitName, units[i].name.toLowerCase(), terrainName, units[i].level, units[i].category, units[i].type);
		var defenseBonus = checkDefenseBonus(unitName, units[i].name.toLowerCase(), terrainName, units[i].level, units[i].category, units[i].type);
		currentTR.cells[1].innerHTML = Math.floor((unitAttack + attackBonus) * quantity / (units[i].baseDefense + defenseBonus) * value);
	}
}

function checkAttackBonus(unitName, foeName, terrainName, foeLevelName, foeCategoryName, foeTypeName) {
	var value = 0;
	var bonus = Unit[unitName].attackTargets[terrainName];
	if(bonus != null)
		value += bonus;
	bonus = Unit[unitName].attackTargets[foeLevelName];
	if(bonus != null)
		value += bonus;
	bonus = Unit[unitName].attackTargets[foeCategoryName];
	if(bonus != null)
		value += bonus;
	bonus = Unit[unitName].attackTargets[foeTypeName];
	if(bonus != null)
		value += bonus;
	return value;
}

function checkDefenseBonus(unitName, foeName, terrainName, foeLevelName, foeCategoryName, foeTypeName) {
	var value = 0;
	var bonus = Unit[foeName].defenseTargets[terrainName];
	if(bonus != null)
		value += bonus;
	bonus = Unit[foeName].defenseTargets[foeLevelName];
	if(bonus != null)
		value += bonus;
	bonus = Unit[foeName].defenseTargets[foeCategoryName];
	if(bonus != null)
		value += bonus;
	bonus = Unit[unitName].defenseTargets[foeTypeName];
	if(bonus != null)
		value += bonus;
	return value;
}

function removeSpaces(unitName) {
	var index = unitName.split(" ");
	var result = index[0]
	if(index[1] != null)
		result += index[1];
	return result;
}
