// EN: Configuration and translation strings for the 3D printing web application.
// DE: Konfigurations- und Übersetzungsstrings für die 3D-Druck-Webanwendung.

/**
 * DE: Enthält alle übersetzten Zeichenketten für die Benutzeroberfläche.
 * EN: Contains all translated strings for the user interface.
 */
export const translations = {
  en: {
    selectPrinterLabel: 'Select Printer',
    choosePrinterOption: '-- Choose Printer --',
    selectMaterialLabel: 'Select Material',
    chooseMaterialOption: 'Choose Material',
    closeButton: 'Close',
    selectFileLabel: 'Select STL File',
    selectFileButton: 'Choose File',
    noFileSelected: 'No file chosen',
    noMaterialSelected: 'No material selected',
    startPrintButton: 'Start Print',
    orderInfoMsg: 'Order file generated! Please send the downloaded .txt file as an attachment to info@bbw-hochschule.de to complete your order.',
    viewerPlaceholder: '3D Viewer Placeholder',
    dimensionsHeader: 'Dimensions (LxWxH):',
    volumeHeader: 'Volume:',
    weightHeader: 'Material Weight:',
    costHeader: 'Print Cost:',
    languageLabel: 'Language',
    languageSelectorTooltip: 'Change language',
    calculating: 'Calculating...',
    dataLoadError: 'Error: Could not load options from the server.',
    calculationError: 'Calculation Error',
    incompleteData: 'Incomplete data. Please select a printer, material, quality, and file.',
    unknownServerError: 'An unknown server error occurred.',
  },
  de: {
    selectPrinterLabel: 'Drucker auswählen',
    choosePrinterOption: '-- Drucker wählen --',
    selectMaterialLabel: 'Material auswählen',
    chooseMaterialOption: '-- Material wählen --',
    selectQualityLabel: 'Qualität auswählen',
    chooseQualityOption: '-- Qualität wählen --',
    selectColorLabel: 'Farbe auswählen',
    selectColorButton: 'Farbe wählen',
    changeColorButton: 'Farbe ändern',
    closeButton: 'Schließen',
    selectFileLabel: 'STL-Datei auswählen',
    selectFileButton: 'Datei wählen',
    noFileSelected: 'Keine Datei ausgewählt',
    noMaterialSelected: 'Kein Material ausgewählt',
    startPrintButton: 'Druck starten',
    orderInfoMsg: 'Bestellungsdatei generiert! Bitte senden Sie die heruntergeladene .txt-Datei als Anhang an info@bbw-hochschule.de, um Ihre Bestellung abzuschließen.',
    viewerPlaceholder: '3D-Viewer',
    dimensionsHeader: 'Abmessungen (LxBxH):',
    volumeHeader: 'Volumen:',
    weightHeader: 'Materialgewicht:',
    costHeader: 'Druckkosten:',
    languageLabel: 'Sprache',
    languageSelectorTooltip: 'Sprache ändern',
    calculating: 'Berechne...',
    dataLoadError: 'Fehler: Optionen konnten nicht vom Server geladen werden.',
    calculationError: 'Fehler bei der Berechnung',
    incompleteData: 'Unvollständige Daten. Bitte Drucker, Material, Qualität und Datei auswählen.',
    unknownServerError: 'Ein unbekannter Serverfehler ist aufgetreten.',
  },
};

/**
 * DE: Gibt ein Objekt mit Referenzen auf die DOM-Elemente des Moduls zurück.
 * EN: Returns an object with references to the module's DOM elements.
 * @param {HTMLElement} root - The module's container element (e.g. .modulo-impresion3d).
 * @returns {object} - An object with all DOM element references.
 */
export function getDomElements(root) {
  return {
    root, // Guardamos una referencia al contenedor principal
    languageSelect: root.querySelector('#languageSelect'),
    printerSelect: root.querySelector('#printerSelect'),

    material: {
      selectButton: root.querySelector('#materialSelectButton'),
      popup: root.querySelector('#materialPopup'),
      closeButton: root.querySelector('#closeMaterialPopup'),
      grid: root.querySelector('#materialGrid'),
    },

    qualitySelect: root.querySelector('#qualitySelect'),
    fileInput: root.querySelector('#fileInput'),
    customFileButton: root.querySelector('#customFileButton'),
    fileNameSpan: root.querySelector('#fileName'),
    startPrintButton: root.querySelector('#startPrint'),
    results: {
      dimensions: root.querySelector('#abmessungen-wert'),
      volume: root.querySelector('#volumen-wert'),
      weight: root.querySelector('#gewicht-wert'),
      cost: root.querySelector('#kosten-wert'),
    },
    notification: root.querySelector('#notification'),
  };
}