/************ bra values = 1st char of stock code ***********/

var width  = new Array();
// single bracket widths in mm
width['O'] = 24.5;			// O (Fitted) Osborne
width['H'] = (14 + 1);			// H (3/4 Runner hinged) Windsor ***** (+1mm each end for plug) *****
width['W'] = 13;			// W (3/4 Runner unhinged) Windsor
width['S'] = 12;			// S (3/8 Runner)
width['F'] = 9.5;			// F (new new triangular)

// width['T'] = 12;			// T (Triangular)
// width['D'] = 12.5;			// D (Small triangular)


var recess  = new Array();
// single bracket recesses in mm
recess['O'] = 17.5;			// O (Fitted) Osborne ***** includes gap between inner edge of pad and inner face *****
recess['H'] = 14;			// H (3/4 Runner hinged) Windsor
recess['W'] = 9;			// W (3/4 Runner unhinged) Windsor
recess['S'] = 8;			// S (3/8 Runner)
recess['F'] = 9.5;			// F (new new triangular)

// recess['T'] = 7;			// T (Triangular)
// recess['D'] = 10;			// D (Small triangular)



/************ fin values = 2nd char of stock code ***********/

var finials = new Array();
// single finial widths in mm
finials['A'] = 34;		// A acorn
finials['B'] = 33;		// B beehive
finials['F'] = 35;		// F bud
finials['G'] = 34;		// G globe
finials['U'] = 34;		// U urn
finials['L'] = 33.5;		// L (new new triangular)

// finials['S'] = 32.5;		// S triangular

finials['smallB'] = 26;		// B small beehive
finials['smallG'] = 27.5;	// G small globe
finials['smallU'] = 26;		// U small urn

// finials['smallS'] = 34;		// S small triangular


/************ functions ***********/

function in_to_mm(inches)
  {
  return Math.round(inches * 25.4);
  }

function mm_to_in(mm)
  {
  return (Math.round(mm / 25.4 * 100))/100;
  }

function convert(form,to)
  {
  var uni = form.unit.value;
  var run = parseFloat(form.runner.value);
  var tot = parseFloat(form.total.value);
  var tub = parseFloat(form.tube.value);

  if (to == 'to_mm')
    {
      // convert to mm
      document.forms.calculator.unit.value = 'mm';
      document.forms.calculator.runner.value = in_to_mm(run);
      document.forms.calculator.total.value = in_to_mm(tot);
      document.forms.calculator.tube.value = in_to_mm(tub);
    }
  else if (to == 'to_in')
    {
      // convert to in
      document.forms.calculator.unit.value = 'in';
      document.forms.calculator.runner.value = mm_to_in(run);
      document.forms.calculator.total.value = mm_to_in(tot);
      document.forms.calculator.tube.value = mm_to_in(tub);
    }
  return;
  }

function new_runner(form)	// for when new runner value entered
  {
//  alert('changed.');

  var code = form.code.value;
  var bra = code.charAt(0);
  var fin = code.charAt(1);
  if (bra == 'S')
    { fin = 'small' + fin; }

  var uni = form.unit.value;
  var run = parseFloat(form.runner.value);

  // reject if tube too short
  if ((run < 300) && (uni == 'mm'))
      { alert('Sorry: too short'); return; }
  if ((run < 12) && (uni == 'in'))
      { alert('Sorry: too short'); return; }

  // reject invalid input
  if (isNaN(run))	return;

  if (uni == 'in')
    { run = in_to_mm(run); }
    
  tub =  run + 2*(recess[bra]);
  tot = run + 2*(width[bra] + finials[fin]);

  // reject if tube too long
  if (tub > 900)
      { alert('Sorry: too long'); return; }
  
  if (uni == 'in')
    {
    run = mm_to_in(run);
    tub = mm_to_in(tub);
    tot = mm_to_in(tot);
    if (tub > 35.43)
      { alert('Sorry: too long'); return; }
    }

  document.forms.calculator.runner.value = run;
  document.forms.calculator.tube.value = tub;
  document.forms.calculator.total.value = tot;
  }


function new_total(form)	// for when new total width value entered
  {
//  alert('changed.');

  var code = form.code.value;
  var bra = code.charAt(0);
  var fin = code.charAt(1);
  if (bra == 'S')
    { fin = 'small' + fin; }

  var uni = form.unit.value;
  var tot = parseFloat(form.total.value);

  // reject if tube too short
  if ((tot < 300) && (uni == 'mm'))
      { alert('Sorry: too short'); return; }
  if ((tot < 12) && (uni == 'in'))
      { alert('Sorry: too short'); return; }

  // reject invalid input
  if (isNaN(tot))	return;

  if (uni == 'in')
    { tot = in_to_mm(tot); }

  run =  tot - 2*(width[bra] + finials[fin]);
  tub =  tot - 2*(width[bra] + finials[fin] - recess[bra]);

  // reject if tube too long
  if (tub > 900)
      { alert('Sorry: too long'); return; }

  if (uni == 'in')
    {
    run = mm_to_in(run);
    tub = mm_to_in(tub);
    tot = mm_to_in(tot);
    if (tub > 35.43)
      { alert('Sorry: too long'); return; }
    }

  document.forms.calculator.runner.value = run;
  document.forms.calculator.tube.value = tub;
  document.forms.calculator.total.value = tot;
  }

