<!-- TODO FIXME: resistance calculator -->
   ohmStr = String.fromCharCode(937)
base10 = Math.log(10)
function preLoad () {
  // preload color-band images
  arrCols = new Array()
  srcBase = document.getElementById('sel1')
  for (i = 0; i < srcBase.length; i++) {
    arrCols[i] = srcBase.options[i].value
  }
  arrImg = new Array()
  for (i = 0; i < arrCols.length; i++) {
    for (j = 0; j < 3; j++) {
      arrImg[i * 3 + j]
        = new Image()
      arrImg[i * 3 + j].src = 'images/band_' + arrCols[i]
        + (j + 1).toString() + '.jpg'
    }
  }
  pre1 = new Image()
  pre1.src = 'images/band_d3.jpg'
  pre2 = new Image()
  pre2.src = 'images/band_s3.jpg'
  pre3 = new Image()
  pre3.src = 'images/band_mult_s.jpg'
}
function selCol (what, band) {
  // display color-band image
  eval(`document.getElementById('band' + band + '').src = 'images / band_' + what.value + band + '.jpg';`)
}
function selTol () {
  // display tolerance band, set tolerance numeric dropdown
  document.getElementById('mult').src = 'images/band_mult_' + document.getElementById('tolerance').value + '.jpg'
  document.getElementById('tolNum').selectedIndex = document.getElementById('tolerance').selectedIndex
  calc()
}
function tolRev () {
  // display tolerance band, set tolerance color dropdown
  document.getElementById('tolerance').selectedIndex = document.getElementById('tolNum').selectedIndex
  document.getElementById('mult').src = 'images/band_mult_' + document.getElementById('tolerance').value + '.jpg'
  calc()
}
function calc () {
  // calculate values from color selections
  pow = document.getElementById('sel3').selectedIndex
  if (pow == 10) pow = -1 //gold
  if (pow == 11) pow = -2 //silver
// note: Multiplied resistance value by 100 (pow+2), rounded to nearest integer, then divided
// result by 100 to compensate for Javascript exponentiation errors (only need 2 significant digits)
  res = Math.round((document.getElementById('sel1').selectedIndex *
    10 + document.getElementById('sel2').selectedIndex) * Math.pow(10, pow + 2)) / 100
  if (res > 990000) {
    document.getElementById('multSel').selectedIndex = 2
    res /= 1000000
  } else if (res > 990) {
    document.getElementById('multSel').selectedIndex = 1
    res /= 1000
  } else { document.getElementById('multSel').selectedIndex = 0 }
  if (res > 999) {
    res = res.toString()
    res = res.substr(0, res.length - 3) + ',' + res.substr(res.length - 3, 3)
  }
  tolOut = 5 *
    Math.pow(2, document.getElementById('tolerance').selectedIndex)
  document.getElementById('txtNum').value = res
}
function calcRev () {
  // calculates color selections from numeric input
// convert input to ohms
  document.getElementById('errSpan').innerHTML = ''
  base = document.getElementById('txtNum').value
  if (parseFloat(base).toString() == 'NaN') return false
  if (base == 0) return false
  multBy = Math.pow(1000, document.getElementById('multSel').selectedIndex)
  res = base * multBy
  if ((res > 99000000000) || (res < .1)) {
    inputError()
    return false
  }
  raisedTo = Math.floor(Math.log(res) / base10)
  res = Math.round(res / Math.pow(10, raisedTo - 1)) / 10
  d1 = Math.floor(res)
  d2 = Math.round((res - d1) * 10)
  if (d1 == 10) {
    d1 = 1
    d2 = 0
    raisedTo += 1
  }
  mIndex = raisedTo - 1
  if (mIndex == -1) mIndex = 10
  if (mIndex == -2) mIndex = 11
  document.getElementById('sel1').selectedIndex = d1
  selCol(document.getElementById('sel1'), 1)
  document.getElementById('sel2').selectedIndex = d2
  selCol(document.getElementById('sel2'), 2)
  document.getElementById('sel3').selectedIndex = mIndex
  selCol(document.getElementById('sel3'), 3)
}
function inputError () {
  for (i = 1; i < 4; i++) {
    eval(`document.getElementById('sel' + i + '').selectedIndex = 0;`)
    eval(`document.getElementById('band' + i + '').src = 'images / band_k' + i + '.jpg';`)
  }
  document.getElementById('errSpan').innerHTML = 'out of range'
}
black brown red orange yellow green blue violet gray white black brown red orange yellow green blue violet gray white black brown red orange yellow green blue violet gray white gold silver gold silver brown red
      
   
    
      
   
    
      
   
    
      
   
    
      
   
    
      
   
    
      
   
    
      
   
    
      
   
    
**document.write(ohmStr) kdocument.write(ohmStr) Mdocument.write(ohmStr)�5% �10% �1% �2%**
Wait for colours to download
Quick Links
Legal Stuff
Social Media