(async w => {
    try {
        const API = await w.DDC.APILoader.create();
        const config = await API.utils.getConfig();
        const pg = await API.utils.getPageData();
        
        // Debug: Log the page data for inspection
        console.log("Page data:", pg);

        const ExpireDays = 90;
        
        let qstr = w.location.search;
        qstr = qstr.substring(1, qstr.length);

        function SetCookie(cookieName, cookieValue, nDays) {
            const today = new Date();
            const expire = new Date();
            if (nDays == null || nDays === 0) nDays = 1;
            expire.setTime(today.getTime() + 3600000 * 24 * nDays);
            document.cookie = `${cookieName}=${encodeURIComponent(cookieValue)}; expires=${expire.toGMTString()}; path=/`;
        }

        const thevars = qstr.split('&');
        for (let i = 0; i < thevars.length; i++) {
            const cookiecase = thevars[i].split('=');
            switch (cookiecase[0]) {
                case 'sfmc_sub':
                    SetCookie('SubscriberID', cookiecase[1], ExpireDays);
                    break;
                case 'e':
                    SetCookie('EmailAddr_', cookiecase[1], ExpireDays);
                    break;
                case 'j':
                    SetCookie('JobID', cookiecase[1], ExpireDays);
                    break;
                case 'l':
                    SetCookie('ListID', cookiecase[1], ExpireDays);
                    break;
                case 'jb':
                    SetCookie('BatchID', cookiecase[1], ExpireDays);
                    break;
                case 'u':
                    SetCookie('UrlID', cookiecase[1], ExpireDays);
                    break;
                case 'mid':
                    SetCookie('MemberID', cookiecase[1], ExpireDays);
                    break;
                default:
                    break;
            }
        }

        if (w.dataLayer) {
            w.dataLayer.push({ magna_tracking: "magna_code_detected" });
        } else {
            console.warn("dataLayer is not defined. Cannot push tracking data.");
        }

        if (pg.searchPage || pg.detailPage) {
            try {
                console.log("Attempting to load csgpl2sxm20...");
                const { default: runInvLogic } = await import('https://mc7ll47vh9gf4ns71pxlm0-kb03q.pub.sfmc-content.com/csgpl2sxm20');
                runInvLogic(config.epriceTargetClass);
                console.log("Loaded csgpl2sxm20 successfully.");
            } catch (error) {
                console.error("Error loading csgpl2sxm20:", error);
            }
        } else if (pg.pageName && pg.pageName.includes('CONFIRM')) {
            try {
                console.log("Attempting to load m2jywtojusb...");
                const { default: runConfLogic } = await import('https://mc7ll47vh9gf4ns71pxlm0-kb03q.pub.sfmc-content.com/m2jywtojusb');
                runConfLogic();
                console.log("Loaded m2jywtojusb successfully.");
            } catch (error) {
                console.error("Error loading m2jywtojusb:", error);
            }
        }

    } catch (globalError) {
        console.error("An error occurred in the main IIFE:", globalError);
    }

})(window);
