var salaries = new Array(60000, 80000, 100000);
var salariesId = new Array('salary1', 'salary2', 'salary3', 'salaryY');
var sales = new Array(0, 0, 0);
var salesId = new Array('sales1', 'sales2', 'sales3', 'salesY');
var monthlyId = new Array('monthly1', 'monthly2', 'monthly3', 'monthlyY');
var overId = new Array('over1', 'over2', 'over3', 'overY');
var totalMonthlyId = new Array('totalMonthly1', 'totalMonthly2', 'totalMonthly3', 'totalMonthlyY');
var hourlyCostId = new Array('hourlyCost1', 'hourlyCost2', 'hourlyCost3', 'hourlyCostY');
var hourlyRevId = new Array('hourlyRev1', 'hourlyRev2', 'hourlyRev3', 'hourlyRevY');
var totalHourlyId = new Array('totalHourly1', 'totalHourly2', 'totalHourly3', 'totalHourlyY');
var downId = new Array('down1', 'down2', 'down3', 'downY');
var monthlyCostId = new Array('monthlyCost1', 'monthlyCost2', 'monthlyCost3', 'monthlyCostY');
var lifetimeId = new Array('lifetime1', 'lifetime2', 'lifetime3', 'lifetimeY');
var hiddenId = new Array('hidden1', 'hidden2', 'hidden3', 'hiddenY');

var NUMBER_OF_MONTHS = 12.0;
var PERCENT_OVERHEAD_MONTHLY = .25;
var HOURS_PER_MONTH = 130.0;
var HOURS_PER_YEAR = 1560.0;
var HOURS_OF_DOWNTIME = 2.0;
var LIFTIME_OF_PC = 3.0;
var TOTAL_COST_MULTIPLIER = 36.0;

for (var i = 0; i < salaries.length; i++)
{
	distValue(salaries[i], salariesId[i], true);
	distValue(sales[i], salesId[i], true);
	calculateAndDist(salaries[i], sales[i], i);
}

calculateInput(3);

function calculateInput(index)
{
	var salary = fixAmount(document.getElementById(salariesId[index]).value);
	var sales = fixAmount(document.getElementById(salesId[index]).value);
	if (isNaN(salary))
		salary = 0;
	if (isNaN(sales))
		sales = 0;
	salary = salary * 1.0;
	sales = sales * 1.0;
	document.getElementById(salariesId[index]).value = formatCurrency(salary);
	document.getElementById(salesId[index]).value = formatCurrency(sales);
	calculateAndDist(salary, sales, index);
	return false;
}

function calculateAndDist(salary, sales, index)
{
	var values = doCalculation(salary, sales);
	distValue(values[0], monthlyId[index], true);
	distValue(values[1], overId[index], true);
	distValue(values[2], totalMonthlyId[index], true);
	distValue(values[3], hourlyCostId[index], true);
	distValue(values[4], hourlyRevId[index], true);
	distValue(values[5], totalHourlyId[index], true);
	distValue(values[6], downId[index], false);
	distValue(values[7], monthlyCostId[index], true);
	distValue(values[8], lifetimeId[index], false);
	distValue(values[9], hiddenId[index], true);
}

function doCalculation(salary, sales)
{
	var monthlySalary = salary / NUMBER_OF_MONTHS;
	var monthlyOver = monthlySalary * PERCENT_OVERHEAD_MONTHLY;
	var totalMonthly = monthlySalary + monthlyOver;
	var hourlyCost = totalMonthly / HOURS_PER_MONTH;
	var hourlyRevenue = sales / HOURS_PER_YEAR;
	var totalHourlyValue = hourlyCost + hourlyRevenue;
	var hoursDown = HOURS_OF_DOWNTIME;
	var totalMonthlyCost = totalHourlyValue * hoursDown;
	var lifetimePC = LIFTIME_OF_PC;
	var totalHiddenCost = totalMonthlyCost * TOTAL_COST_MULTIPLIER;
	return new Array(monthlySalary, monthlyOver, totalMonthly, hourlyCost,
		hourlyRevenue, totalHourlyValue, hoursDown, totalMonthlyCost,
		lifetimePC, totalHiddenCost);
}

function distValue(amount, id, format)
{
	if (format)
		document.getElementById(id).innerHTML = formatCurrency(amount);
	else
		document.getElementById(id).innerHTML = amount;
}

function formatCurrency(amount)
{
	var newAmount = amount + '';
	var dollars = '';
	var pennies = '';
	var leftOver = '';
	if (newAmount.indexOf('.') >= 0)
	{
		dollars = newAmount.substr(0, newAmount.indexOf('.'));
		pennies = newAmount.substr(newAmount.indexOf('.') + 1);
	}
	else
	{
		dollars = amount + '';
		pennies = '00';
	}
	if (dollars.length > 3)
	{
		left = dollars;
		dollars = '';
		while (left.length > 3)
		{
			dollars = left.substr(left.length - 3); + dollars;
			left = left.substr(0, left.length - 3);
			if (left.length > 0)
				dollars = ',' + dollars;
		}
		if (left.length > 0)
			dollars = left + dollars;
	}
	if (pennies.length > 2)
	{
		pennies = (pennies.substr(0, 2) + '.' + pennies.substr(2)) * 1.0;
		pennies = Math.ceil(pennies) + '';
	}
	if (pennies.length == 1)
		pennies = pennies + '0';
	return '$' + dollars + '.' + pennies;
}

function fixAmount(amount)
{
	var validChars = '0123456789.';
	var newAmount = '';
	for (var i = 0; i < amount.length; i++)
	{
		var c = amount.substr(i, 1);
		if (validChars.indexOf(c) >= 0)
			newAmount = newAmount + c;
	}
	return newAmount;
}
