// Objeto para almacenar las selecciones del usuario
const presupuesto = {
    tipo: { texto: '', puntos: 0 },
    funcionalidades: [],
    diseno: { texto: '', puntos: 0 },
    puntajeTotal: 0
};

// Constantes de cálculo
const VALOR_PUNTO = 50; // USD por cada punto de complejidad
const SEMANA_PUNTO = 0.4; // Semanas por cada punto de complejidad

/**
 * Navega entre los pasos del wizard
 * @param {number} numeroPaso - El paso al que se desea navegar (1, 2, 3, o 4)
 */
function irPaso(numeroPaso) {
    // Oculta todos los pasos
    document.querySelectorAll('.wizard-step').forEach(step => {
        step.classList.remove('activo');
    });
    
    // Muestra el paso deseado
    document.getElementById(`paso-${numeroPaso}`).classList.add('activo');
}

/**
 * Recopila todos los datos de los formularios y calcula el resultado.
 */
function calcularResultado() {
    // --- 1. Recopilar Datos ---
    
    // Paso 1: Tipo de Sitio (Radio)
    const tipoSitioInput = document.querySelector('input[name="tipo_sitio"]:checked');
    if (tipoSitioInput) {
        presupuesto.tipo.puntos = parseInt(tipoSitioInput.dataset.puntos, 10);
        presupuesto.tipo.texto = tipoSitioInput.parentElement.querySelector('span').textContent;
    } else {
        alert("Por favor, selecciona un tipo de sitio en el Paso 1.");
        irPaso(1);
        return;
    }

    // Paso 2: Funcionalidades (Checkboxes)
    presupuesto.funcionalidades = []; // Limpiar antes de recalcular
    const funcionalidadesInputs = document.querySelectorAll('input[name="funcionalidad"]:checked');
    funcionalidadesInputs.forEach(input => {
        presupuesto.funcionalidades.push({
            texto: input.parentElement.querySelector('span').textContent,
            puntos: parseInt(input.dataset.puntos, 10)
        });
    });

    // Paso 3: Nivel de Diseño (Radio)
    const disenoInput = document.querySelector('input[name="diseno"]:checked');
    if (disenoInput) {
        presupuesto.diseno.puntos = parseInt(disenoInput.dataset.puntos, 10);
        presupuesto.diseno.texto = disenoInput.parentElement.querySelector('span').textContent;
    } else {
        alert("Por favor, selecciona un nivel de diseño en el Paso 3.");
        irPaso(3);
        return;
    }

    // --- 2. Calcular Totales ---
    let puntaje = 0;
    puntaje += presupuesto.tipo.puntos;
    puntaje += presupuesto.diseno.puntos;
    presupuesto.funcionalidades.forEach(func => {
        puntaje += func.puntos;
    });
    
    presupuesto.puntajeTotal = puntaje;

    // Calcular Rango de Precio (con un +/- 15% de margen)
    const precioBase = puntaje * VALOR_PUNTO;
    const precioMin = Math.round((precioBase * 0.85) / 100) * 100; // Redondear a la centena más cercana
    const precioMax = Math.round((precioBase * 1.15) / 100) * 100;

    // Calcular Rango de Tiempo
    const tiempoBase = puntaje * SEMANA_PUNTO;
    const tiempoMin = Math.round(tiempoBase * 0.9);
    const tiempoMax = Math.round(tiempoBase * 1.1);
    
    // --- 3. Mostrar Resultados ---
    
    // Poblar los campos del resultado
    document.getElementById('puntaje-total').textContent = `${presupuesto.puntajeTotal} puntos`;
    document.getElementById('rango-precio').textContent = `$${precioMin} - $${precioMax} USD`;
    document.getElementById('rango-tiempo').textContent = `${tiempoMin} - ${tiempoMax} semanas`;

    // Crear el resumen
    let resumenTexto = `Tipo: ${presupuesto.tipo.texto}\n`;
    resumenTexto += `Diseño: ${presupuesto.diseno.texto}\n`;
    if (presupuesto.funcionalidades.length > 0) {
        resumenTexto += `Funcionalidades: \n- ${presupuesto.funcionalidades.map(f => f.texto).join('\n- ')}`;
    } else {
        resumenTexto += `Funcionalidades: Ninguna seleccionada.`;
    }
    document.getElementById('resumen-proyecto').innerText = resumenTexto;

    // --- 4. Generar CTA de WhatsApp ---
    
    // Crear el mensaje predefinido
    const mensajeWpp = `Hola Think TIC,
Acabo de usar su calculadora de presupuesto y este es mi resumen:
- Tipo: ${presupuesto.tipo.texto}
- Diseño: ${presupuesto.diseno.texto}
- Funcionalidades: ${presupuesto.funcionalidades.length > 0 ? presupuesto.funcionalidades.map(f => f.texto).join(', ') : 'Ninguna'}
- Puntaje: ${presupuesto.puntajeTotal}
- Rango Estimado: $${precioMin} - $${precioMax} USD

Me gustaría agendar una llamada para hablar de mi proyecto.
`;

    const telefono = "573027504568"; // Tu número de WhatsApp
    const urlWpp = `https://api.whatsapp.com/send?phone=${telefono}&text=${encodeURIComponent(mensajeWpp)}`;
    
    // Asignar al botón
    document.getElementById('cta-whatsapp').href = urlWpp;

    // Navegar al paso final
    irPaso(4);
}

/**
 * Reinicia el wizard para un nuevo cálculo.
 */
function reiniciar() {
    // Limpiar el objeto de presupuesto
    presupuesto.tipo = { texto: '', puntos: 0 };
    presupuesto.funcionalidades = [];
    presupuesto.diseno = { texto: '', puntos: 0 };
    presupuesto.puntajeTotal = 0;

    // Desmarcar todos los inputs
    document.querySelectorAll('input[type="radio"], input[type="checkbox"]').forEach(input => {
        input.checked = false;
    });

    // Volver al paso 1
    irPaso(1);
}

// Iniciar en el paso 1 al cargar la página
window.onload = () => irPaso(1);