// Superpuck order form calculation

var rate_per_side = new Array(225, 540, 810);
var vat_rate = 15;

var desc_per_side = new Array('without printing', 'printed on one side', 'printed on both sides');
var desc_per_size = new Array('with an official 45mm print', 'with a souvenir 60mm print');

function my_description(quantity, print_size, sides) {
  // describe order
  boxes = (quantity==1)?' box':' boxes';
  s = quantity + boxes + ' of 180 x pucks '
  s = s + desc_per_side[sides]
  if (sides>0) {
    if (print_size=='45mm') {
      s = s + " " + desc_per_size[0];
      }
    if (print_size=='60mm') {
      s = s + " " + desc_per_size[1];
      }
    }
  s = s + ".";  
  return s
  }

function calc_total(quantity, print_size, sides) {
  // calulate total, return Array(total, vat)
  // at present the print_size doesn't affect the price
  rate = rate_per_side[sides]; 
  my_total = quantity * rate;
  my_intermediate = my_total * vat_rate;
  my_vat = my_intermediate / 100;
  desc = my_description(quantity, print_size, sides);
  return new Array(my_total, my_vat, desc);
  }


function get_info(form) {
  // find values from the form
  quantity = parseInt(select_value(form.quantity));
  print_size = radio_value(form.print_type);
  sides = radio_value(form.sides);
  return calc_total(quantity, print_size, sides);
  }

function show(form) {
  // update order content
  totals = get_info(form);
  total = totals[0];
  my_vat = totals[1];
  desc = totals[2];
  set_slot(form, 'box_price', total);
  set_slot(form, 'vat', my_vat);
  set_slot(form, 'due', total + my_vat);
  // paypal fields
  form.item_name.value = desc;
  form.amount.value = (total + my_vat)/parseInt(select_value(form.quantity));
  form.shipping.value = 0;
  }

function radio_value(nodelist) {
  // find value of radio buttons
  value = "";
  for (i=0;i<nodelist.length;i++) {
    if (nodelist[i].checked) {
      value = nodelist[i].value;
      }
    }
  return value;  
  }

function select_value(nodelist) {
  // find value of radio buttons
  value = "";
  for (i=0;i<nodelist.length;i++) {
    if (nodelist[i].selected) {
      value = nodelist[i].value;
      }
    }
  return value;  
  }


function get_slot(element, id) {
  // find span in element with id
  spans = element.getElementsByTagName('span');
  slot = "";
  for (i=0;i<spans.length;i++) {
    if (spans[i].id==id) {
      slot = spans[i];
      }
    }
  return slot;  
  }

function set_slot(element, id, value) {
  // find span with this id and set it to value
  slot = get_slot(element, id);
  slot.childNodes[0].nodeValue = value;
  }  

