// Berechnet die Farbcodes für Widerstände basierend auf Texteingabe (z.B. "10k", "330", "4k7", "4r7")
function getResistorBands(valueStr) {
  let val = valueStr.toLowerCase().trim().replace(',', '.');
  if (!val) return ['transparent', 'transparent', 'transparent', 'transparent'];

  // FIX: Einheit zuerst entfernen. Vorher wurde "m" (Mega) VOR "ohm"/"Ω" geprüft, wodurch z.B.
  // "330ohm" fälschlich als Mega-Wert erkannt wurde (weil "ohm" selbst ein "m" enthält) und
  // "330ohm" zu 330.000.000 Ω statt 330 Ω wurde.
  val = val.replace('ohm', '').replace('Ω', '');
  if (!val) return ['transparent', 'transparent', 'transparent', 'transparent'];

  let multiplier = 1;
  // FIX: In der Elektronik ersetzt die Einheit den Dezimalpunkt (z.B. "4k7" = 4,7 kΩ,
  // "4r7" = 4,7 Ω). Vorher wurde der Buchstabe einfach entfernt statt durch "." ersetzt,
  // wodurch "4k7" zu 47.000 Ω statt korrekt 4.700 Ω berechnet wurde.
  if (val.includes('k')) { multiplier = 1000; val = val.replace('k', '.'); }
  else if (val.includes('m')) { multiplier = 1000000; val = val.replace('m', '.'); }
  else { val = val.replace('r', '.'); }
  val = val.replace(/\.+$/, ''); // z.B. "10k" -> "10." -> "10"

  let numeric = parseFloat(val);
  if (isNaN(numeric)) return ['transparent', 'transparent', 'transparent', 'transparent'];

  let ohms = Math.round(numeric * multiplier);
  let strOhms = ohms.toString();

  const colors = ['#000000', '#8b4513', '#ff0000', '#ffa500', '#ffff00', '#008000', '#0000ff', '#ee82ee', '#808080', '#ffffff'];

  let band1 = 0, band2 = 0, band3 = 0; // band3 is multiplier
  if (strOhms.length === 1) { band1 = 0; band2 = parseInt(strOhms[0]); band3 = 0; } // < 10 Ohm
  else { band1 = parseInt(strOhms[0]); band2 = parseInt(strOhms[1]); band3 = strOhms.length - 2; }

  // Standard Toleranz Gold
  return [colors[band1], colors[band2], colors[band3] || '#000000', '#ffd700'];
}

function renderResistorSVG(compId, valueStr) {
  const comp = components.get(compId);
  if (!comp || comp.type !== 'resistor') return;

  const bands = getResistorBands(valueStr);
  const viewport = comp.element.querySelector('.comp-viewport');

  let svgEl = viewport.querySelector('.comp-svg');
  if (!svgEl) {
    svgEl = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    svgEl.setAttribute('class', 'comp-svg');
    svgEl.setAttribute('width', '100%');
    svgEl.setAttribute('height', '100%');
    svgEl.style.zIndex = '5';
    viewport.appendChild(svgEl);
  }

  // Widerstand Optik (Dicke Anschlussdrähte + beigefarbener Körper + 4 Ringe)
  svgEl.innerHTML = `
    <line x1="0" y1="50%" x2="100%" y2="50%" stroke="#111" stroke-width="6" />
    <rect x="15%" y="20%" width="70%" height="60%" rx="10" fill="#e8c396" stroke="#111" stroke-width="4" />
    <rect x="25%" y="20%" width="6%" height="60%" fill="${bands[0]}" />
    <rect x="40%" y="20%" width="6%" height="60%" fill="${bands[1]}" />
    <rect x="55%" y="20%" width="6%" height="60%" fill="${bands[2]}" />
    <rect x="75%" y="20%" width="6%" height="60%" fill="${bands[3]}" />
  `;

  // Damit der Text beim Widerstand nicht die Ringe verdeckt, schieben wir ihn leicht hoch
  const textEl = viewport.querySelector('.comp-text');
  if (textEl) {
    textEl.style.alignItems = 'flex-start';
    textEl.style.paddingTop = '4px';
    textEl.style.textShadow = '0 0 4px #000';
  }
}
