update_price();

function update_price() {
	document.price.emp.value = makeNum(document.price.emp.value);
	document.price.states.value = makeNum(document.price.states.value);
	var subtotal = get_subtotal();
	document.price.subtotal.value = currency(subtotal);
	var tax = get_tax();
	document.price.tax.value = currency(tax);
	document.price.fee.value = currency(subtotal + tax);
}

function makeNum(strInput)	{
	var pattern = new RegExp("[^1234567890\.]","g");
	var theNumber = strInput.replace(pattern, "");
	theNumber = theNumber/1;
	return(theNumber);
}

function currency(num_in) {
	num_in = num_in.toString().replace(/\$|\,/g,'');
	if(isNaN(num_in))
	num_in = "0";
	num_in = Math.floor(num_in*100+0.50000000001);
	cents = num_in%100;
	num_in = Math.floor(num_in/100).toString();
	if(cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num_in.length-(1+i))/3); i++)
		num_in = num_in.substring(0,num_in.length-(4*i+3))+','+
		num_in.substring(num_in.length-(4*i+3));
	return ('$' + num_in + '.' + cents);
}

function get_subtotal()	{
	var base = flat_rate;	
	var emp = makeNum(document.price.emp.value);
	var states = makeNum(document.price.states.value);
	var timeclock = makeNum(document.price.timeclock.value);
	var comp =  eval("document.price.comp");
	if( comp.checked) var comp_cost = d_comp_cost;
	else var comp_cost = 0;
		
	var emp_cost = 0;
	var state_cost = 0;
	var timeclock_cost = timeclock * base_time;

	if ( emp < 1 )	emp = 1;
	if ( states < 1 ) states = 1;

	if ( emp > base_emp ) {
		var e = emp - base_emp;
		emp_cost = e * d_emp_cost;
	}	else emp_cost = 0;
	
	if ( states > base_state ) {
		var e = states - base_state;
		state_cost = e * d_state_cost;
	}	
	var total = base+emp_cost+state_cost+comp_cost+timeclock_cost;
	return total;
}

function get_tax()	{
	var tax_rate = 0;
	var checkSet = eval("document.price.exempt");
	if(!checkSet.checked) tax_rate = d_tax_rate;
	var subtotal = makeNum(document.price.subtotal.value) + 0;
	var tax = roundNumber(tax_rate*subtotal, 2);
	return tax;
}

function roundNumber(number, decimals) { // Arguments: number to round, number of decimal places
	var newnumber = new Number(number+'').toFixed(parseInt(decimals));
	return parseFloat(newnumber);
}

