﻿var ABSENCE_PERCENT = .17 // % of costs due to CARERs who are absent
var INTERRUPTION_PERCENT = .37 // % of costs due to CARERs who are interrupted
var TURNOVER_PERCENT = .46 // % of costs due to CARERs who resign


function getValue(id, defaultValue) {
    var str = document.getElementById(id).value;
	var dropDecimal = /\.\d+$/;
	var numbersOnly = /[^\d]+/g;
	
	str = str.replace(dropDecimal, '');
	str = str.replace(numbersOnly, '');
	if(str == '' && typeof(defaultValue) != 'undefined')
		return defaultValue;
	return parseInt(str, 10);
}

function setValue(id, value, asDollars) {
	value = String(Math.floor(value));
	var r = /(\d+)(\d{3})/;
	while(r.test(value))
		value = value.replace(r, '$1,$2');
	var node = document.getElementById(id);
	if(asDollars)
		value = '$' + value;
	if(node.nodeName == 'INPUT')
		node.value = value;
	else
		node.innerHTML = value;
}

$(document).ready(function() {
	$('#calc').bind('click', function() {
		var employees = getValue('employees');
		var age = getValue('age');
		var growth = getValue('growth', 0);
		var salary = getValue('salary');
		
		$('#errEmployees').hide();
		$('#errAge').hide();
		$('#errGrowth').hide();
		$('#errSalary').hide();
		
		if(isNaN(employees) || employees < 1) {
			$('#errEmployees').fadeIn();
			return;
		}
		
		if(isNaN(age) || age < 1) {
			$('#errAge').fadeIn();
			return;
		}
		
		if(isNaN(salary) || salary <= 0) {
			$('#errSalary').fadeIn();
			return;
		}
		
		if(isNaN(growth)) {
			$('#errGrowth').fadeIn();
			return;
		}
		
		setValue('employees', employees);
		setValue('age', age);
		setValue('salary', salary, true);
		setValue('growth', growth);
		
		var ageRange;
		if(age <= 30)
			ageRange = 0.12;
		else if (age > 30 && age <= 41)
			ageRange = 0.19;
		else
			ageRange = 0.17;
		
		var baseCost1 = employees * ageRange * salary;
		var growthRate = Math.pow(1 + (growth / 100), 3);
		var baseCost2 = employees * ageRange * salary * growthRate;
		
		setValue('total1', baseCost1, true);
		setValue('total2', baseCost2, true);
		setValue('absenteeism1', baseCost1 * ABSENCE_PERCENT, true);
		setValue('absenteeism2', baseCost2 * ABSENCE_PERCENT, true);
		setValue('interruptions1', baseCost1 * INTERRUPTION_PERCENT, true);
		setValue('interruptions2', baseCost2 * INTERRUPTION_PERCENT, true);
		setValue('turnover1', baseCost1 * TURNOVER_PERCENT, true);
		setValue('turnover2', baseCost2 * TURNOVER_PERCENT, true);
		setValue('savings1', baseCost1 * INTERRUPTION_PERCENT * 0.5, true);
		setValue('savings2', baseCost2 * INTERRUPTION_PERCENT * 0.5, true);
	});
});


