function number_format( number, decimals, dec_point, thousands_sep ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // *     example 1: number_format(1234.5678, 2, '.', '');
    // *     returns 1: 1234.57     
 
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}

function cart_remove(fd_key) {
	$.post("/ajax/cart_remove", { fd_key: fd_key }, function() {
		$('#row_'+fd_key).fadeOut('slow', function() { $(this).remove()} );
		recalculate_total(fd_key);
	});
}

function recalculate_total(fd_key) {
	var total = 0;
	$('.price').each(function() {
		total += parseInt($(this).html().replace(/\$/g,'').replace(/,/g,''));
	});
	
	if ($('#price_'+fd_key).get(0)) {
		total = total - parseInt($('#price_'+fd_key).html().replace(/\$/g,'').replace(/,/g,''));
	}
	
	if (total == 0) {
		window.location.href = window.location.href;
	}
	
	$('#cart_total').html('$'+number_format(total, 0));
}

function checkout() {
	window.location.href = 'https://www.wrightsecure.com/w21/checkout_start/';
}