/**
 * Sistema de notificaciones unificado SSOMA
 * Maneja tanto URL parameters como localStorage
 */

function mostrarToast(mensaje, tipo = 'info') {
    const colores = {
        'success': '#28a745',
        'error': '#dc3545',
        'warning': '#ffc107',
        'info': '#17a2b8'
    };

    // Convertir nombres alternativos
    const tipoMap = {
        'green': 'success',
        'red': 'error',
        'yellow': 'warning',
        'blue': 'info'
    };

    const tipoNormalizado = tipoMap[tipo] || tipo;

    Toastify({
        text: mensaje,
        duration: 3500,
        gravity: "top",
        position: "right",
        backgroundColor: colores[tipoNormalizado] || colores['info'],
        stopOnFocus: true,
        close: true,
        style: {
            borderRadius: "8px",
            fontSize: "14px",
            fontWeight: "500"
        }
    }).showToast();
}

// Auto-inicialización al cargar el DOM
document.addEventListener("DOMContentLoaded", function () {
    // Manejar notificaciones desde URL params
    const urlParams = new URLSearchParams(window.location.search);

    if (urlParams.has('success')) {
        mostrarToast(urlParams.get('success') || 'Operación completada exitosamente', 'success');
        limpiarURLParams();
    } else if (urlParams.has('error')) {
        mostrarToast(urlParams.get('error') || 'Ocurrió un error', 'error');
        limpiarURLParams();
    } else if (urlParams.has('msg')) {
        const tipo = urlParams.get('msg');
        const desc = urlParams.get('desc') || getMensajePorDefecto(tipo);
        mostrarToast(desc, tipo);
        limpiarURLParams();
    }

    // Manejar desde localStorage (recursoshumanos usa este método)
    const mensaje = localStorage.getItem('toastMessage');
    const tipoLocal = localStorage.getItem('toastType') || localStorage.getItem('toastColor');

    if (mensaje) {
        mostrarToast(mensaje, tipoLocal || 'info');
        // Limpiar localStorage
        localStorage.removeItem('toastMessage');
        localStorage.removeItem('toastType');
        localStorage.removeItem('toastColor');
    }
});

/**
 * Limpiar parámetros de URL sin recargar página
 */
function limpiarURLParams() {
    const url = new URL(window.location);
    url.searchParams.delete('success');
    url.searchParams.delete('error');
    url.searchParams.delete('msg');
    url.searchParams.delete('desc');
    window.history.replaceState({}, document.title, url.pathname + (url.search || ''));
}

/**
 * Obtener mensaje por defecto según tipo
 */
function getMensajePorDefecto(tipo) {
    const mensajes = {
        'success': 'Operación completada exitosamente',
        'error': 'Ocurrió un error',
        'warning': 'Advertencia',
        'info': 'Información'
    };
    return mensajes[tipo] || 'Notificación';
}

/**
 * Establecer mensaje para mostrar después de redirección
 * Útil cuando se hace redirect después de una operación
 */
function setToastMensaje(mensaje, tipo = 'success') {
    localStorage.setItem('toastMessage', mensaje);
    localStorage.setItem('toastType', tipo);
}
