function calculate()
{
	// store the checkboxes in an array
	var checkboxes = document.getElementsByName("pkg"); 
 
	// store the dropdowns in an array
	var dropdowns = document.getElementsByName("opt"); 
 
	// set a value to the total, or else it's "undefined"
	var total = 0; 
 
	// loop through the checkboxes sequentially using semicolon to separate declarations
	for(var i = 0; i < checkboxes.length; i++) 
	{
		// use two equal signs to test if particular checkbox is checked
		if(checkboxes[i].checked == true)
		{
			// use eval() to make dropdown value a number instead of a string
			// accumulate sum to total
			total = total + eval(dropdowns[i].value);
		}
	}
	//alert(total);
	document.getElementById("total").innerHTML = round_decimals(total, 2);
}
function round_decimals(original_number, decimals) {
	var result1 = original_number * Math.pow(10, decimals)
	var result2 = Math.round(result1)
	var result3 = result2 / Math.pow(10, decimals)
	return pad_with_zeros(result3, decimals)
}

function pad_with_zeros(rounded_value, decimal_places) {

	// Convert the number to a string
	var value_string = rounded_value.toString()
	
	// Locate the decimal point
	var decimal_location = value_string.indexOf(".")

	// Is there a decimal point?
	if (decimal_location == -1) {
		
		// If no, then all decimal places will be padded with 0s
		decimal_part_length = 0
		
		// If decimal_places is greater than zero, tack on a decimal point
		value_string += decimal_places > 0 ? "." : ""
	}
	else {

		// If yes, then only the extra decimal places will be padded with 0s
		decimal_part_length = value_string.length - decimal_location - 1
	}
	
	// Calculate the number of decimal places that need to be padded with 0s
	var pad_total = decimal_places - decimal_part_length
	
	if (pad_total > 0) {
		
		// Pad the string with 0s
		for (var counter = 1; counter <= pad_total; counter++) 
			value_string += "0"
		}
	return value_string
}	

