console.log('wf form load');

// Получаем данные из атрибутов текущего скрипта
const currentScript = document.currentScript;
const formNameFancyBox = currentScript.dataset.formNameFancyBox;
const buttonClass = currentScript.dataset.buttonClass || '.wf-button'; // Добавляем fallback значение

// Кэш для cabinetHost чтобы не определять его каждый раз
const CABINET_HOST = location.host === 'wmtmed.ru'
    ? 'https://cabinet.wmtmed.ru'
    : 'https://cabinet.sovamed.ru';

function wf_renderModal(formName, query, wfId, fbStyle, wfStyle) {
    // Удаляем предыдущее модальное окно, если оно существует
    const existingPopup = document.getElementById(formNameFancyBox);
    if (existingPopup) {
        existingPopup.remove();
    }

    // Создаем структуру модального окна
    const wf_popup = document.createElement('div');
    wf_popup.id = formNameFancyBox;
    wf_popup.className = 'fancybox-content';
    wf_popup.style.cssText = fbStyle || '';
    wf_popup.style.display = 'none';
    document.body.appendChild(wf_popup);

    const wf_modalDialog = document.createElement('div');
    wf_modalDialog.className = 'modal-dialog';
    wf_modalDialog.setAttribute('role', 'document');
    wf_popup.appendChild(wf_modalDialog);

    const wf_modalContent = document.createElement('div');
    wf_modalContent.className = 'modal-content';
    wf_modalDialog.appendChild(wf_modalContent);

    const wf_modalHeader = document.createElement('div');
    wf_modalHeader.className = 'modal-header';
    wf_modalContent.appendChild(wf_modalHeader);

    const wf_modalTitle = document.createElement('h5');
    wf_modalTitle.className = 'modal-title';
    wf_modalTitle.textContent = formName;
    wf_modalHeader.appendChild(wf_modalTitle);

    const wf_popupBody = document.createElement('div');
    wf_popupBody.id = 'wf_popup-body';
    wf_popupBody.className = 'modal-body';
    wf_modalContent.appendChild(wf_popupBody);

    const wf_iframe = document.createElement('iframe');
    wf_iframe.id = `${formNameFancyBox}-frame`;
    wf_iframe.src = `${CABINET_HOST}/widget/form/${wfId}?${query}`;
    wf_iframe.style.cssText = wfStyle || '';
    wf_popupBody.appendChild(wf_iframe);

    return true;
}

function getSessionId() {
    try {
        const calltrackingParams = window.ct?.('calltracking_params');
        if (Array.isArray(calltrackingParams) && calltrackingParams.length > 0) {
            console.error('getting sessionId:', calltrackingParams[0]?.sessionId);
            return calltrackingParams[0]?.sessionId || null;
        }
        return null;
    } catch (e) {
        console.error('Error getting sessionId:', e);
        return null;
    }
}

function wf_listiner(wf_evn) {
    try {
        const target = wf_evn.target;
        if (!target.dataset) return;

        // Базовые параметры
        const baseQuery = {
            'ref': btoa(location.origin),
            'sessionId': getSessionId(),
            'ymNum': target.dataset?.ymNum,
            'ymId': target.dataset?.ymId
        };

        // Дополнительные параметры из data-row
        let additionalParams = {};
        if (target.dataset.row) {
            try {
                additionalParams = JSON.parse(atob(target.dataset.row));
            } catch (e) {
                console.error('Error parsing dataset.row:', e);
            }
        }

        // Объединяем параметры
        const mergedQuery = {...additionalParams, ...baseQuery};
        const queryString = new URLSearchParams(mergedQuery).toString();

        // Вызываем рендер модального окна
        wf_renderModal(
            target.dataset.formName,
            queryString,
            target.dataset.wfId,
            target.dataset.fbStyle,
            target.dataset.wfStyle
        );
    } catch (error) {
        console.error('Error in wf_listiner:', error);
    }
}

// Инициализация слушателей событий
document.querySelectorAll(buttonClass).forEach(button => {
    button.addEventListener('click', wf_listiner);
});