/**
 * 发布弹窗 - 位置选择模块
 */

(function() {
    'use strict';

    // 跟踪用户是否主动设置了位置
    let locationSetByUser = false;
    // 跟踪位置标签在输入框中的范围
    let locationTagStart = -1;
    let locationTagEnd = -1;
    const locationTagText = '📍[位置]';

    /**
     * 切换位置 - 支持开启/取消
     */
    window.toggleLocation = function(btn) {
        if (locationSetByUser) {
            // 取消位置
            removeLocation(btn);
        } else {
            // 设置位置
            insertLocation(btn);
        }
    };

    /**
     * 插入位置 - 使用浏览器GPS定位
     */
    window.insertLocation = function(btn) {
        // 检查浏览器是否支持地理位置
        if (!navigator.geolocation) {
            showToast('浏览器不支持定位功能');
            return;
        }
        
        showToast('正在获取位置...');
        
        navigator.geolocation.getCurrentPosition(
            function(position) {
                const textarea = document.getElementById('publishContent');
                if (!textarea) return;
                
                const lat = position.coords.latitude;
                const lng = position.coords.longitude;
                
                // 保存经纬度到隐藏字段
                let latLngInput = document.getElementById('locationLatLng');
                if (!latLngInput) {
                    latLngInput = document.createElement('input');
                    latLngInput.type = 'hidden';
                    latLngInput.id = 'locationLatLng';
                    latLngInput.name = 'location_latlng';
                    latLngInput.autocomplete = 'off';
                    document.getElementById('publishForm').appendChild(latLngInput);
                }
                latLngInput.value = lat + ',' + lng;
                
                // 记录位置标签的位置
                locationTagStart = textarea.selectionStart;
                const text = textarea.value;
                locationTagEnd = locationTagStart + locationTagText.length;
                
                textarea.value = text.substring(0, locationTagStart) + locationTagText + text.substring(locationTagStart);
                textarea.focus();
                
                // 更新字符计数
                const publishCharCount = document.getElementById('publishCharCount');
                if (publishCharCount) {
                    publishCharCount.textContent = textarea.value.length;
                }
                
                // 设置状态和按钮样式
                locationSetByUser = true;
                if (btn) {
                    btn.classList.add('location-on');
                }
                
                showToast('位置已添加');
            },
            function(error) {
                showToast('获取位置失败');
            }
        );
    };

    /**
     * 移除位置
     */
    window.removeLocation = function(btn) {
        const textarea = document.getElementById('publishContent');
        if (!textarea) return;
        
        // 移除位置标签
        const text = textarea.value;
        let newText = text.replace(locationTagText, '');
        
        // 如果没有找到明确的标签，尝试移除任何包含📍的位置标签
        if (newText === text) {
            const locationRegex = /📍\[位置\]/g;
            newText = text.replace(locationRegex, '');
        }
        
        textarea.value = newText;
        textarea.focus();
        
        // 更新字符计数
        const publishCharCount = document.getElementById('publishCharCount');
        if (publishCharCount) {
            publishCharCount.textContent = textarea.value.length;
        }
        
        // 重置状态
        locationSetByUser = false;
        locationTagStart = -1;
        locationTagEnd = -1;
        
        const locationLatLng = document.getElementById('locationLatLng');
        if (locationLatLng) {
            locationLatLng.value = '';
        }
        
        if (btn) {
            btn.classList.remove('location-on');
        }
        
        showToast('位置已取消');
    };

    /**
     * 获取位置设置状态
     */
    window.getLocationSetByUser = function() {
        return locationSetByUser;
    };

    /**
     * 设置位置状态
     */
    window.setLocationSetByUser = function(value) {
        locationSetByUser = value;
        const btn = document.getElementById('locationToolbarBtn');
        if (btn) {
            if (value) {
                btn.classList.add('location-on');
            } else {
                btn.classList.remove('location-on');
            }
        }
    };

    /**
     * 重置位置状态
     */
    window.resetLocationSetByUser = function() {
        locationSetByUser = false;
        locationTagStart = -1;
        locationTagEnd = -1;
        const locationLatLng = document.getElementById('locationLatLng');
        if (locationLatLng) {
            locationLatLng.value = '';
        }
        const btn = document.getElementById('locationToolbarBtn');
        if (btn) {
            btn.classList.remove('location-on');
        }
    };
})();
