// Boomermania - UI de Mantenimiento

let mantenimientoActual = [];

// Mostrar modal de mantenimiento
function mostrarMantenimiento() {
    // Si no hay propiedades, saltar mantenimiento
    if (!hayMantenimientoPendiente()) {
        finalizarAvanceDecada();
        return;
    }

    mantenimientoActual = calcularCostesMantenimiento();

    const modal = document.getElementById('maintenance-modal');
    if (!modal) {
        // Si no existe el modal, saltar
        finalizarAvanceDecada();
        return;
    }

    renderizarMantenimiento();
    modal.classList.add('active');
}

// Renderizar contenido del modal de mantenimiento
function renderizarMantenimiento() {
    const container = document.getElementById('maintenance-list');
    if (!container) return;

    const dineroDisponible = gameState.playerResources.dinero;
    const total = getTotalMantenimiento();

    let html = `
        <div class="maintenance-header-info">
            <div class="maintenance-total">
                <span>Total mantenimiento:</span>
                <span class="${dineroDisponible >= total ? 'positive' : 'negative'}">${formatearDinero(total)}</span>
            </div>
            <div class="maintenance-available">
                <span>Dinero disponible:</span>
                <span>${formatearDinero(dineroDisponible)}</span>
            </div>
        </div>
    `;

    if (mantenimientoActual.length === 0) {
        html += '<p class="no-maintenance">No hay propiedades que mantener</p>';
    } else {
        html += '<div class="maintenance-items">';

        mantenimientoActual.forEach((item, idx) => {
            const puedePermitir = dineroDisponible >= item.coste;
            const iconos = {
                'comprarPiso': '🏠',
                'segundaResidencia': '🏖️',
                'alquilerTuristico': '🏨',
                'localComercial': '🏪',
                'garaje': '🅿️',
                'cocheDiesel': '🚗',
                'suv': '🚙'
            };
            const icono = iconos[item.tipo] || '🏠';

            html += `
                <div class="maintenance-item" data-index="${idx}">
                    <div class="maintenance-item-info">
                        <span class="maintenance-icon">${icono}</span>
                        <div class="maintenance-details">
                            <span class="maintenance-name">${item.nombre}</span>
                            ${item.estado !== undefined ? `<span class="maintenance-state">Estado: ${item.estado}%</span>` : ''}
                        </div>
                        <span class="maintenance-cost ${!puedePermitir ? 'insufficient' : ''}">${formatearDinero(item.coste)}</span>
                    </div>
                    <div class="maintenance-actions">
                        <button class="btn btn--small btn--pay" onclick="handlePagarMantenimiento(${idx})" ${!puedePermitir ? 'disabled' : ''}>
                            Pagar
                        </button>
                        <button class="btn btn--small btn--ignore" onclick="handleIgnorarMantenimiento(${idx})">
                            Ignorar
                        </button>
                        ${item.index >= 0 ? `<button class="btn btn--small btn--sell" onclick="handleVenderPropiedad(${idx})">Vender</button>` : ''}
                    </div>
                </div>
            `;
        });

        html += '</div>';
    }

    // Botones de acción global
    html += `
        <div class="maintenance-global-actions">
            <button class="btn btn--secondary" onclick="handlePagarTodo()" ${dineroDisponible < total ? 'disabled' : ''}>
                Pagar Todo
            </button>
            <button class="btn btn--advance" onclick="handleContinuarSinPagar()">
                Continuar →
            </button>
        </div>
    `;

    container.innerHTML = html;
}

// Manejar pago de un item de mantenimiento
function handlePagarMantenimiento(idx) {
    if (idx >= mantenimientoActual.length) return;

    const item = mantenimientoActual[idx];
    if (pagarMantenimiento(item)) {
        // Eliminar de la lista
        mantenimientoActual.splice(idx, 1);

        // Re-renderizar
        if (mantenimientoActual.length === 0) {
            cerrarMantenimiento();
        } else {
            renderizarMantenimiento();
        }
    }
}

// Manejar ignorar mantenimiento
function handleIgnorarMantenimiento(idx) {
    if (idx >= mantenimientoActual.length) return;

    const item = mantenimientoActual[idx];
    ignorarMantenimiento(item);

    if (typeof audioSystem !== 'undefined') audioSystem.playError();

    // Eliminar de la lista
    mantenimientoActual.splice(idx, 1);

    // Re-renderizar
    if (mantenimientoActual.length === 0) {
        cerrarMantenimiento();
    } else {
        renderizarMantenimiento();
    }
}

// Manejar venta de propiedad
function handleVenderPropiedad(idx) {
    if (idx >= mantenimientoActual.length) return;

    const item = mantenimientoActual[idx];
    if (venderPropiedad(item)) {
        // Eliminar de la lista
        mantenimientoActual.splice(idx, 1);

        // Re-renderizar
        if (mantenimientoActual.length === 0) {
            cerrarMantenimiento();
        } else {
            // Actualizar índices porque cambiaron
            mantenimientoActual = calcularCostesMantenimiento();
            renderizarMantenimiento();
        }
    }
}

// Pagar todo el mantenimiento
function handlePagarTodo() {
    const total = getTotalMantenimiento();
    if (gameState.playerResources.dinero < total) return;

    for (const item of [...mantenimientoActual]) {
        pagarMantenimiento(item);
    }

    cerrarMantenimiento();
}

// Continuar sin pagar lo restante
function handleContinuarSinPagar() {
    // Ignorar todo lo que queda
    for (const item of [...mantenimientoActual]) {
        ignorarMantenimiento(item);
    }

    cerrarMantenimiento();
}

// Cerrar modal y continuar
function cerrarMantenimiento() {
    const modal = document.getElementById('maintenance-modal');
    if (modal) {
        modal.classList.remove('active');
    }

    mantenimientoActual = [];

    // Continuar con el avance de década
    finalizarAvanceDecada();
}
