// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

var shipping_costs = new Hash();

function calculate_order_total() {
  rush_amount = $F('rush_amount_checkbox') ? parseFloat($F('rush_amount_checkbox')) : 0
  shipping_id = Form.getInputs('shipment_form','radio','method_id').find(function(radio) { return radio.checked; }).value;
	$('order_total_cell').update(number_to_currency(order_total_without_shipping + rush_amount + shipping_costs.get(shipping_id)));
}

function number_to_currency(number, options) {
	try {
 		var options   = options || {};
		var precision = options["precision"] || 2;
 		var unit      = options["unit"] || "$";
 		var separator = precision > 0 ? options["separator"] || "." : "";
		var delimiter = options["delimiter"] || ",";
   
 		var parts = parseFloat(number).toFixed(precision).split('.');
		return unit + number_with_delimiter(parts[0], delimiter) + separator + parts[1].toString();
	} catch(e) {
		return number
	}
 }

function number_with_delimiter(number, delimiter, separator) {
	try {
		var delimiter = delimiter || ",";
 		var separator = separator || ".";

		var parts = number.toString().split('.');
		parts[0] = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + delimiter);
		return parts.join(separator);
	} catch(e) {
		return number
	}
}

function show_flash_error() {
  new Effect.Appear('js_flash_error', { duration: 0.5 })
  window.setTimeout("hide_flash_error()", 5000);
}
function hide_flash_error() {
  new Effect.Fade('js_flash_error', { duration: 0.5 })
}

function show_flash_notice() {
  new Effect.Appear('js_flash_notice', { duration: 0.5 })
  window.setTimeout("hide_flash_notice()", 5000);
}
function hide_flash_notice() {
  new Effect.Fade('js_flash_notice', { duration: 0.5 })
}

document.observe("dom:loaded", function() {
  if($('js_flash_error').innerHTML != '') show_flash_error()
  else if($('js_flash_notice').innerHTML != '') show_flash_notice()
});
