/**
 * @file timerButton.js
 * @description Hantering av "Timer"-knappen för StatusNotifier Extension
 * 
 * Author: Linus Olofsson - Iver 
 * Date: 2025-07-03 
 * Last modified: Linus Olofsson (2025-07-08) - Linus Olofsson
 * 
 * @purpose Hantera "Timer"-knappen
 * @invoked_by popup.js
 * @invokes components/timer.js, components/modal.js, common/storage.js
 */

import { startTimer } from '../components/timer.js';
import { showModal, hideModal } from '../components/modal.js';
import { getTimerSettings } from '../common/storage.js';

// Initiera timerButton-hanterare
const initTimerButton = async () => {
    try {
        console.log('Initializing timer button handler...');
        
        // Hitta timer-knappen
        const timerButton = document.getElementById('timerBtn');
        if (!timerButton) {
            console.error('Timer button not found in DOM');
            return;
        }
        
        // Lägg till klick-event
        timerButton.addEventListener('click', handleTimerButtonClick);
        
        // Initiera timer-inställningar
        await initTimerSettings();
        
        console.log('Timer button handler initialized');
    } catch (error) {
        console.error('Error initializing timer button handler:', error);
    }
};

// Hantera klick på timer-knappen
const handleTimerButtonClick = () => {
    try {
        console.log('Timer button clicked');
        
        // Visa timer-inställningsmodal
        showModal('timerModal');
    } catch (error) {
        console.error('Error handling timer button click:', error);
    }
};

// Initiera timer-inställningar
const initTimerSettings = async () => {
    try {
        console.log('Initializing timer settings...');
        
        // Hitta timer-inställningsmodal
        const timerModal = document.getElementById('timerModal');
        if (!timerModal) {
            console.error('Timer modal not found in DOM');
            return;
        }
        
        // Hitta timmar, minuter och sekunder inputs
        const hoursInput = document.getElementById('timerHours');
        const minutesInput = document.getElementById('timerMinutes');
        const secondsInput = document.getElementById('timerSeconds');
        const saveButton = document.getElementById('saveTimerButton');
        
        if (!hoursInput || !minutesInput || !secondsInput || !saveButton) {
            console.error('Timer inputs or save button not found in DOM');
            return;
        }
        
        // Hämta sparade timer-inställningar
        const settings = await getTimerSettings();
        if (settings) {
            hoursInput.value = settings.hours || 0;
            minutesInput.value = settings.minutes || 0;
            secondsInput.value = settings.seconds || 30;
        }
        
        // Lägg till event listener för save-knappen
        saveButton.addEventListener('click', async () => {
            await handleSaveTimerSettings();
        });
        
        // Lägg till event listener för avbryt-knappen
        const cancelButton = document.getElementById('cancelTimerButton');
        if (cancelButton) {
            cancelButton.addEventListener('click', (event) => {
                event.stopPropagation();
                console.log('Cancel timer button clicked — closing modal');
                hideModal('timerModal');
            });
        }
        
        console.log('Timer settings initialized');
    } catch (error) {
        console.error('Error initializing timer settings:', error);
    }
};

// Hantera spara timer-inställningar
const handleSaveTimerSettings = async () => {
    try {
        console.log('Saving timer settings...');
        
        // Hitta timmar, minuter och sekunder inputs
        const hoursInput = document.getElementById('timerHours');
        const minutesInput = document.getElementById('timerMinutes');
        const secondsInput = document.getElementById('timerSeconds');
        
        if (!hoursInput || !minutesInput || !secondsInput) {
            console.error('Timer inputs not found in DOM');
            return;
        }
        
        // Hämta värden
        const hours = parseInt(hoursInput.value) || 0;
        const minutes = parseInt(minutesInput.value) || 0;
        const seconds = parseInt(secondsInput.value) || 0;
        
        // Validera värden - minst 30 sekunder krävs
        const totalSeconds = (hours * 3600) + (minutes * 60) + seconds;
        if (totalSeconds < 30) {
            alert('Minimitid är 30 sekunder. Vänligen ange minst 30 sekunder.');
            return;
        }
        
        console.log(`Timer settings: ${hours}h ${minutes}m ${seconds}s`);
        
        // Stäng modalen först
        hideModal('timerModal');
        
        // Starta timer med nya inställningar
        await startTimer(hours, minutes, seconds);
    } catch (error) {
        console.error('Error saving timer settings:', error);
    }
};

// Exportera funktioner
export {
    initTimerButton
};
