/*
// 功能：主题颜色脚本文件
// 作者：启肯科技
// Q Q：328493711
// 微信：13738373177（同手机）
// 官网：http://www.qiken.com
// 说明：QKCMS-轻量级AI智能内容管理建站系统
// 版权：© 2025 温州启肯网络有限公司 保留所有权利，盗版必究。
*/

/**
 * 加载主题颜色设置并应用到页面
 */
function loadThemeColor() {
    // 发送请求到服务器获取主题颜色设置
    // 使用admin.php?action=get_theme_color替代get_theme_color.php以实现功能合并
    fetch('/admin/admin.php?action=get_theme_color')
        .then(response => {
            if (!response.ok) {
                throw new Error('Failed to fetch theme color');
            }
            return response.json();
        })
        .then(settings => {
            if (settings.primary_color) {
                // 应用主题颜色到CSS变量
                applyThemeColors(settings.primary_color);
            }
        })
        .catch(error => {
            console.log('无法加载主题颜色设置:', error);
            // 使用默认紫色主题
            applyThemeColors('#7c3aed');
        });
}

/**
 * 将主题颜色应用到CSS变量
 * @param {string} primaryColor - 主颜色值（十六进制格式）
 */
function applyThemeColors(primaryColor) {
    const root = document.documentElement;

    // 设置主颜色
    root.style.setProperty('--primary', primaryColor);
    root.style.setProperty('--primary-color', primaryColor); // 保持与首页一致

    // 计算并设置相关的颜色变量
    const rgb = hexToRgb(primaryColor);

    // 设置深色和浅色变体
    root.style.setProperty('--primary-dark', darkenColor(primaryColor, 0.15));
    root.style.setProperty('--primary-light', lightenColor(primaryColor, 0.1));
    root.style.setProperty('--secondary', lightenColor(primaryColor, 0.1));

    // 设置透明度变量
    root.style.setProperty('--primary-opacity-10', `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.1)`);
    root.style.setProperty('--primary-opacity-20', `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.2)`);
}

/**
 * 将十六进制颜色转换为RGB对象
 * @param {string} hex - 十六进制颜色值
 * @returns {object} RGB颜色对象
 */
function hexToRgb(hex) {
    // 移除#前缀（如果有）
    hex = hex.replace('#', '');

    // 解析RGB分量
    const r = parseInt(hex.substring(0, 2), 16);
    const g = parseInt(hex.substring(2, 4), 16);
    const b = parseInt(hex.substring(4, 6), 16);

    return { r, g, b };
}

/**
 * 使颜色变亮
 * @param {string} color - 原始颜色值
 * @param {number} percent - 变亮百分比（0-1）
 * @returns {string} 变亮后的颜色值
 */
function lightenColor(color, percent) {
    const { r, g, b } = hexToRgb(color);

    // 增加RGB值，确保不超过255
    const newR = Math.min(255, Math.round(r + (255 - r) * percent));
    const newG = Math.min(255, Math.round(g + (255 - g) * percent));
    const newB = Math.min(255, Math.round(b + (255 - b) * percent));

    // 转回十六进制
    return '#' +
        Math.round(newR).toString(16).padStart(2, '0') +
        Math.round(newG).toString(16).padStart(2, '0') +
        Math.round(newB).toString(16).padStart(2, '0');
}

/**
 * 使颜色变暗
 * @param {string} color - 原始颜色值
 * @param {number} percent - 变暗百分比（0-1）
 * @returns {string} 变暗后的颜色值
 */
function darkenColor(color, percent) {
    const { r, g, b } = hexToRgb(color);

    // 减少RGB值，确保不低于0
    const newR = Math.max(0, Math.round(r * (1 - percent)));
    const newG = Math.max(0, Math.round(g * (1 - percent)));
    const newB = Math.max(0, Math.round(b * (1 - percent)));

    // 转回十六进制
    return '#' +
        Math.round(newR).toString(16).padStart(2, '0') +
        Math.round(newG).toString(16).padStart(2, '0') +
        Math.round(newB).toString(16).padStart(2, '0');
}

/**
 * 从富文本内容中提取第一张图片的URL（过滤base64格式）
 * @param {string} content - 富文本内容
 * @returns {string} 有效的图片URL或空字符串
 */
function extractFirstImageFromContent(content) {
    console.log('内容长度:', content ? content.length : 0);

    // 检查参数
    if (!content || typeof content !== 'string') {
        return '';
    }

    const parser = new DOMParser();
    const doc = parser.parseFromString(content, 'text/html');
    const images = doc.querySelectorAll('img');

    console.log('找到的图片数量:', images.length);

    // 遍历所有图片，查找非base64格式的图片
    for (let i = 0; i < images.length; i++) {
        const img = images[i];
        const src = img.src;

        if (src) {
            console.log(`图片${i + 1} src:`, src.substring(0, 100) + (src.length > 100 ? '...' : ''));

            // 过滤掉base64格式的图片（以data:image开头）
            if (!src.startsWith('data:image')) {
                console.log('找到有效的非base64图片:', src);
                return src;
            } else {
            }
        }
    }

    return '';
}

/**
 * 从内容中提取描述文本（去除HTML标签）
 * @param {string} content - 原始内容
 * @param {number} maxLength - 最大长度
 * @returns {string} 提取的描述文本
 */
function extractDescriptionFromContent(content, maxLength = 150) {
    console.log('maxLength:', maxLength);
    console.log('原始内容长度:', content ? content.length : 0);

    // 记录详细的处理过程
    console.log('内容类型检查: ', typeof content);

    // 检查参数
    if (!content || typeof content !== 'string') {
        return '';
    }

    console.log('原始内容前100字符: ', content.substring(0, 100) + (content.length > 100 ? '...' : ''));

    // 移除购买标识符
    let processedContent = content.replace(/\[购买内容开始\]/g, '');
    processedContent = processedContent.replace(/\[购买内容结束\]/g, '');
    console.log('移除购买标识符后的前100字符: ', processedContent.substring(0, 100) + (processedContent.length > 100 ? '...' : ''));

    // 去除HTML标签 - 使用更健壮的正则表达式
    const plainText = processedContent.replace(/<[^>]*>/g, '');
    console.log('去除HTML标签后的长度:', plainText.length);
    console.log('去除HTML后前100字符: ', plainText.substring(0, 100) + (plainText.length > 100 ? '...' : ''));

    // 去除多余的空白字符
    const cleanText = plainText.replace(/\s+/g, ' ').trim();
    console.log('清理后的文本长度:', cleanText.length);
    console.log('清理后前100字符: ', cleanText.substring(0, 100) + (cleanText.length > 100 ? '...' : ''));

    // 截取指定长度
    if (cleanText.length > maxLength) {
        const result = cleanText.substring(0, maxLength) + '...';
        console.log('截取后的描述，长度:', result.length);
        console.log('最终结果: ', result);
        return result;
    }
    console.log('完整描述，长度:', cleanText.length);
    console.log('最终结果: ', cleanText);
    return cleanText;
}

/**
 * 设置文章编辑表单的自动功能
 */
function setupArticleFormAutoFeatures() {
    // 查找文章编辑/发布表单容器
    const articleFormContainer = document.getElementById('article-form-container');
    if (!articleFormContainer) {
        return;
    }

    // 查找文章表单
    const articleForm = document.getElementById('article-form');
    if (!articleForm) {
        return;
    }

    // 查找描述输入框
    const descriptionInput = document.getElementById('description');
    if (!descriptionInput) {
    }

    // 查找现有缩略图输入框
    let existingThumbnailInput = document.querySelector('input[name="existing_thumbnail"]');
    // 如果不存在，创建一个隐藏的输入字段
    if (!existingThumbnailInput) {
        existingThumbnailInput = document.createElement('input');
        existingThumbnailInput.type = 'hidden';
        existingThumbnailInput.name = 'existing_thumbnail';
        existingThumbnailInput.value = '';
        articleForm.appendChild(existingThumbnailInput);
    }

    // 查找缩略图预览区域
    const thumbnailPreview = document.getElementById('thumbnail-preview');
    if (!thumbnailPreview) {
    }

    // 查找Quill编辑器容器
    const quillEditorContainer = document.getElementById('quill-editor');
    if (!quillEditorContainer) {
        return;
    }

    // 更直接的方式获取Quill编辑器实例 - 先尝试直接从全局变量获取
    let quillEditor = null;

    // 定义初始化函数
    function initializeAutoFeatures() {
        // 直接从全局变量获取Quill实例（article.php中已将实例保存到window.quill）
        if (window.quill) {
            quillEditor = window.quill;
        }
        // 备选方案：检查编辑器容器是否有quill属性
        else if (quillEditorContainer.quill) {
            quillEditor = quillEditorContainer.quill;
        } else {
        }

        // 如果仍然没有找到Quill实例，检查是否存在隐藏的content textarea
        const hiddenContentTextarea = document.getElementById('content');

        if (!quillEditor && !hiddenContentTextarea) {
            return;
        }

        // 设置内容变化的处理函数
        function handleContentChange() {
            let content = '';

            // 如果有Quill编辑器，从编辑器获取内容
            if (quillEditor) {
                content = quillEditor.root.innerHTML;
            }
            // 否则尝试从隐藏的textarea获取内容
            else if (hiddenContentTextarea) {
                content = hiddenContentTextarea.value;
            }

            if (!content) return;

            // 1. 自动提取缩略图功能
            if (!existingThumbnailInput.value.trim()) {
                const firstImage = extractFirstImageFromContent(content);
                if (firstImage) {
                    console.log('自动提取到图片:', firstImage);

                    // 更新现有缩略图输入
                    existingThumbnailInput.value = firstImage;

                    // 更新缩略图预览
                    if (thumbnailPreview) {
                        // 移除所有已有的缩略图路径元素
                        const existingPaths = thumbnailPreview.querySelectorAll('.thumbnail-path');
                        existingPaths.forEach(path => path.remove());

                        // 移除占位符
                        const placeholder = thumbnailPreview.querySelector('.thumbnail-placeholder');
                        if (placeholder) {
                            placeholder.remove();
                        }

                        // 添加新的预览元素
                        const previewHTML = `
                            <div class="thumbnail-path" data-new="true">
                                <span>自动提取：</span>
                                <code>${firstImage}</code>
                                <button type="button" class="btn btn-danger btn-sm delete-thumbnail" style="margin-left: 10px;">删除</button>
                            </div>
                        `;
                        thumbnailPreview.insertAdjacentHTML('beforeend', previewHTML);

                        // 为新添加的删除按钮添加事件监听器
                        const deleteButton = thumbnailPreview.querySelector('.delete-thumbnail[data-new="true"]');
                        if (deleteButton) {
                            deleteButton.addEventListener('click', function () {
                                existingThumbnailInput.value = '';
                                this.parentElement.remove();

                                // 显示占位符
                                if (!thumbnailPreview.querySelector('.thumbnail-placeholder')) {
                                    const placeholder = document.createElement('div');
                                    placeholder.className = 'thumbnail-placeholder';
                                    placeholder.innerHTML = '<span>未上传缩略图<small class="form-text text-muted">支持JPG、PNG、GIF格式，建议尺寸：200x150像素</small></span>';
                                    thumbnailPreview.appendChild(placeholder);
                                }
                            });
                        }
                    }
                }
            }

            // 2. 自动提取描述功能
            if (descriptionInput && !descriptionInput.value.trim()) {
                const description = extractDescriptionFromContent(content, 150); // 增加默认长度到150
                if (description && description.trim()) {
                    console.log('成功提取描述，长度:', description.length);
                    descriptionInput.value = description;
                } else {
                }
            } else if (descriptionInput) {
            }
        }

        // 为Quill编辑器添加内容变化事件监听器
        if (quillEditor) {
            quillEditor.on('text-change', function (delta, oldDelta, source) {
                // 只有当用户输入时才触发自动提取，并且添加延时以避免频繁触发
                if (source === 'user') {
                    setTimeout(handleContentChange, 500);
                }
            });
        } else if (hiddenContentTextarea) {
            hiddenContentTextarea.addEventListener('input', function () {
                // 添加延时以避免频繁触发
                setTimeout(handleContentChange, 300);
            });
        }

        // 表单提交前的处理
        articleForm.addEventListener('submit', function () {
            handleContentChange();
        });

        // 立即执行一次，处理可能已经存在的内容
        setTimeout(handleContentChange, 100);
    }

    // 优化的初始化方式：检查Quill是否已加载，直接初始化
    function initializeWhenReady() {
        if (window.Quill) {
            initializeAutoFeatures();
        } else {
            // 使用DOMContentLoaded确保所有脚本都已加载
            document.addEventListener('DOMContentLoaded', function () {
                if (window.Quill) {
                    initializeAutoFeatures();
                } else {
                }
            });
        }
    }

    // 立即开始初始化
    initializeWhenReady();
}

// 当DOM加载完成后应用主题颜色和设置文章表单自动功能
document.addEventListener('DOMContentLoaded', function () {
    loadThemeColor();
    setupArticleFormAutoFeatures();
});
