  // LED resistor calculator

  function my_onclick()
  {
	  // Standard E24 resistor values
	  stdVals = new Object();
	  stdVals[0] = 10;
	  stdVals[1] = 11;
	  stdVals[2] = 12;
	  stdVals[3] = 13;
	  stdVals[4] = 15;
	  stdVals[5] = 16;
	  stdVals[6] = 18;
	  stdVals[7] = 20;
	  stdVals[8] = 22;
	  stdVals[9] = 24;
	  stdVals[10] = 27;
	  stdVals[11] = 30;
	  stdVals[12] = 33;
	  stdVals[13] = 36;
	  stdVals[14] = 39;
	  stdVals[15] = 43;
	  stdVals[16] = 47;
	  stdVals[17] = 51;
	  stdVals[18] = 56;
	  stdVals[19] = 62;
	  stdVals[20] = 68;
	  stdVals[21] = 75;
	  stdVals[22] = 82;
	  stdVals[23] = 91;

	  vSource = eval(document.f.vsource_field.value);
	  vDrop = eval(document.f.vdrop_field.value);
	  vQty = eval(document.f.qty_field.value);
	  vDropTotal = vDrop*vQty;
	  iMax = eval(document.f.current_field.value) / 1000;

	  if ( vDropTotal > vSource ) {
		  alert("The supply voltage is too low.\nTry the following:\n- decrease the number of LEDs or\n- choose a higher supply voltage!");
		  return;
	  }

	  rExact = ( vSource - vDropTotal ) / ( iMax );

	  // Calculate closest std resistor value
	  x = 0;
	  while (1) {
	    if ( x > 23 ) { x = 0; }
	    if (rExact <= stdVals[x]) {
	      rStd = stdVals[x];
              break;
	    }
	    stdVals[x] *= 10;
	    ++ x;
          }

	  irStd = ( vSource - vDropTotal ) / rStd;
	  plrStd = vDropTotal * irStd;
    prrStd = ( vSource - vDropTotal ) * irStd;

	  // Calculated closest std resistor wattage
	  if ( prrStd <= .125 )
	    { prrStd_string = "1/8"; }
	  else if ( prrStd <= .25 )
	    { prrStd_string = "1/4"; }
	  else if ( prrStd <= .33 )
	    { prrStd_string = "1/3"; }
	  else if ( prrStd <= .5 )
	    { prrStd_string = "1/2"; }
	  else if ( prrStd <= 1 )
	    { prrStd_string = "1"; }
	  else {
		 prrStd_string = "At Least " + Math.round(prrStd + 1);
	 }

	ResistorValue = rStd;

	var temprStd4 = rStd;
//	var altvalue4;
	if (temprStd4>=1000000)	{	altvalue4 = temprStd4/1000000 + " M";	}
	else if (temprStd4>=1000) { altvalue4 = temprStd4/1000 + " k";	}
	else if (temprStd4>=10)  {	altvalue4 = temprStd4 + " "; }
	else if (temprStd4>=1) {	altvalue4 = temprStd4.toFixed(1) + " "; }
	else if (temprStd4>=0.1)  {	altvalue4 = temprStd4.toFixed(2) + " "; }

	var temprStd5 = rStd;
//	var altvalue5;
	if (temprStd5>=1000000)	{	altvalue5 = temprStd5/1000000 + " M"; }
	else if (temprStd5>=1000) {	altvalue5 = temprStd5/1000 + " k"; }
	else if (temprStd5>=10)	{	altvalue5 = temprStd5 + " "; }
	else if (temprStd5>=1)	{	altvalue5 = temprStd5.toFixed(2) + " "; }
	else if (temprStd5>=0.1)	{	altvalue5 = temprStd5.toFixed(3) + " "; }

          document.f.rExact_field.value = Math.round(rExact * 10000) / 10000;
          document.f.rStd_field.value = altvalue4;
          document.f.irStd_field.value = Math.round(irStd * 10000) / 10;
          document.f.plrStd_field.value = Math.round(plrStd * 10000) / 10;
          document.f.prrStd_field.value = Math.round(prrStd * 10000) / 10;
          document.f.prrStd_string_field.value = prrStd_string;

		change_colors();
		document.getElementById('DynamicTextObject_4').innerHTML = "&nbsp;" + altvalue4 + "&Omega;, " + Tolerance4;
		document.getElementById('DynamicTextObject_5').innerHTML = "&nbsp;" + altvalue5 + "&Omega;, " + Tolerance5;

  }

  document.f.mybutton.onclick = my_onclick;


