function clearAll(aform){
aform.width.value = ""
  aform.height.value = ""
  if (aform.threads.type != "hidden") {
    aform.threads.value = "";
  }

  clearAnswer(aform)
}

function clearAnswer(aform){
  aform.in_6.value = ""
  aform.cm_6.value = ""

  aform.in_7.value = ""
  aform.cm_7.value = ""

  aform.in_8.value = ""
  aform.cm_8.value = ""

  aform.in_9.value = ""
  aform.cm_9.value = ""

  aform.in_10.value = ""
  aform.cm_10.value = ""

  aform.in_11.value = ""
  aform.cm_11.value = ""

  aform.in_12.value = ""
  aform.cm_12.value = ""

  aform.in_13.value = ""
  aform.cm_13.value = ""

  aform.in_14.value = ""
  aform.cm_14.value = ""

  aform.in_15.value = ""
  aform.cm_15.value = ""

  aform.in_16.value = ""
  aform.cm_16.value = ""

  aform.in_17.value = ""
  aform.cm_17.value = ""

  aform.in_18.value = ""
  aform.cm_18.value = ""

  aform.in_19.value = ""
  aform.cm_19.value = ""

  aform.in_20.value = ""
  aform.cm_20.value = ""

  aform.in_21.value = ""
  aform.cm_21.value = ""

  aform.in_22.value = ""
  aform.cm_22.value = ""

  aform.in_23.value = ""
  aform.cm_23.value = ""

  aform.in_24.value = ""
  aform.cm_24.value = ""

  aform.in_25.value = ""
  aform.cm_25.value = ""

  aform.in_26.value = ""
  aform.cm_26.value = ""

  aform.in_27.value = ""
  aform.cm_27.value = ""

  aform.in_28.value = ""
  aform.cm_28.value = ""

  aform.in_29.value = ""
  aform.cm_29.value = ""

  aform.in_30.value = ""
  aform.cm_30.value = ""

  aform.in_31.value = ""
  aform.cm_31.value = ""

  aform.in_32.value = ""
  aform.cm_32.value = ""

  aform.in_33.value = ""
  aform.cm_33.value = ""

  aform.in_34.value = ""
  aform.cm_34.value = ""

  aform.in_35.value = ""
  aform.cm_35.value = ""

  aform.in_36.value = ""
  aform.cm_36.value = ""

  aform.in_37.value = ""
  aform.cm_37.value = ""

  aform.in_38.value = ""
  aform.cm_38.value = ""

  aform.in_39.value = ""
  aform.cm_39.value = ""

  aform.in_40.value = ""
  aform.cm_40.value = ""

}

function checkFloat(val, description, min_val){
  if (val.length == 0 ) {
    alert("There is no number entered for the " + description)
    return 1
  }
  if (val < min_val) {
    alert("The " + description + " cannot be less than " + min_val + ".")
    return 1
  }
  return 0
}


function checkInt(val, description, min_val){
  if (val.length == 0 ) {
    alert("There is no number entered for the " + description)
    return 1
  }
  if (val < min_val) {
    alert("The " + description + " cannot be less than " + min_val + ".")
    return 1
  }
  if (Math.round(val) != val) {
    alert("The " + description + " must be a whole number.")
    return 1
  }
  return 0
}


function computeForm(aform){

  var width  = aform.width.value
  result = checkInt(width, "number of stitches wide", 1)
  if (result == 1) {return}

  var height = aform.height.value
  result = checkInt(height, "number of stitches high", 1)
  if (result == 1) {return}

  var threads = aform.threads.value
  result = checkInt(threads, "number of threads per X", 1)
  if (result == 1) {return}

  var tw = threads * width
  var th = threads * height

  var results_size = 41  // One extra, because of 0 origin indexing
  var results_in = new Array(results_size)
  var results_cm = new Array(results_size)
  for (i = 0; i < 6; i++) {
    results_in[i] = 0
    results_cm[i] = 0
  }
  for (i = 6; i < results_size; i++) {
    wi = 100 * tw / i
    hi = 100 * th / i
    wc = wi * 2.54
    hc = hi * 2.54

    wi_n = Math.round(wi) / 100
    hi_n = Math.round(hi) / 100
    wc_n = Math.round(wc) / 100
    hc_n = Math.round(hc) / 100
    results_in[i] = wi_n + "   by   " + hi_n
    results_cm[i] = wc_n + "   by   " + hc_n
  }


  aform.in_6.value = results_in[6]
  aform.cm_6.value = results_cm[6]

  aform.in_7.value = results_in[7]
  aform.cm_7.value = results_cm[7]

  aform.in_8.value = results_in[8]
  aform.cm_8.value = results_cm[8]

  aform.in_9.value = results_in[9]
  aform.cm_9.value = results_cm[9]

  aform.in_10.value = results_in[10]
  aform.cm_10.value = results_cm[10]

  aform.in_11.value = results_in[11]
  aform.cm_11.value = results_cm[11]

  aform.in_12.value = results_in[12]
  aform.cm_12.value = results_cm[12]

  aform.in_13.value = results_in[13]
  aform.cm_13.value = results_cm[13]

  aform.in_14.value = results_in[14]
  aform.cm_14.value = results_cm[14]

  aform.in_15.value = results_in[15]
  aform.cm_15.value = results_cm[15]

  aform.in_16.value = results_in[16]
  aform.cm_16.value = results_cm[16]

  aform.in_17.value = results_in[17]
  aform.cm_17.value = results_cm[17]

  aform.in_18.value = results_in[18]
  aform.cm_18.value = results_cm[18]

  aform.in_19.value = results_in[19]
  aform.cm_19.value = results_cm[19]

  aform.in_20.value = results_in[20]
  aform.cm_20.value = results_cm[20]

  aform.in_21.value = results_in[21]
  aform.cm_21.value = results_cm[21]

  aform.in_22.value = results_in[22]
  aform.cm_22.value = results_cm[22]

  aform.in_23.value = results_in[23]
  aform.cm_23.value = results_cm[23]

  aform.in_24.value = results_in[24]
  aform.cm_24.value = results_cm[24]

  aform.in_25.value = results_in[25]
  aform.cm_25.value = results_cm[25]

  aform.in_26.value = results_in[26]
  aform.cm_26.value = results_cm[26]

  aform.in_27.value = results_in[27]
  aform.cm_27.value = results_cm[27]

  aform.in_28.value = results_in[28]
  aform.cm_28.value = results_cm[28]

  aform.in_29.value = results_in[29]
  aform.cm_29.value = results_cm[29]

  aform.in_30.value = results_in[30]
  aform.cm_30.value = results_cm[30]

  aform.in_31.value = results_in[31]
  aform.cm_31.value = results_cm[31]

  aform.in_32.value = results_in[32]
  aform.cm_32.value = results_cm[32]

  aform.in_33.value = results_in[33]
  aform.cm_33.value = results_cm[33]

  aform.in_34.value = results_in[34]
  aform.cm_34.value = results_cm[34]

  aform.in_35.value = results_in[35]
  aform.cm_35.value = results_cm[35]

  aform.in_36.value = results_in[36]
  aform.cm_36.value = results_cm[36]

  aform.in_37.value = results_in[37]
  aform.cm_37.value = results_cm[37]

  aform.in_38.value = results_in[38]
  aform.cm_38.value = results_cm[38]

  aform.in_39.value = results_in[39]
  aform.cm_39.value = results_cm[39]

  aform.in_40.value = results_in[40]
  aform.cm_40.value = results_cm[40]


}


