<script>
    function getWordAtPosition(clientX, clientY) {
        var element = document.elementFromPoint ? document.elementFromPoint(clientX, clientY) : null;
        if (!element) return '';

        // Замена для document.caretRangeFromPoint
        var range;
        if (document.caretRangeFromPoint) {
            range = document.caretRangeFromPoint(clientX, clientY);
        } else if (document.caretPositionFromPoint) {
            var caretPos = document.caretPositionFromPoint(clientX, clientY);
            if (caretPos) {
                range = document.createRange();
                range.setStart(caretPos.offsetNode, caretPos.offset);
                range.setEnd(caretPos.offsetNode, caretPos.offset);
            }
        }
        
        if (!range) return '';

        var node = range.startContainer;
        // Замена для Node.TEXT_NODE
        if (node.nodeType === 3) { // 3 = TEXT_NODE
            var text = node.textContent || node.nodeValue;
            var offset = range.startOffset;

            // Найдём слово под курсором
            var start = offset;
            var end = offset;

            // Влево до начала слова
            while (start > 0 && /\S/.test(text.charAt(start - 1))) start--;
            // Вправо до конца слова
            while (end < text.length && /\S/.test(text.charAt(end))) end++;

            return text.slice(start, end).trim();
        }
        return '';
    }

    function copyToClipboard(text) {
        var input = document.createElement('textarea');
        input.value = text;
        document.body.appendChild(input);
        input.select();
        
        try {
            var successful = document.execCommand('copy');
        } catch (err) {
            console.log('Ошибка копирования: ', err);
        }
        
        document.body.removeChild(input);
    }

    function showTooltip(x, y, message) {
        var tooltip = document.getElementById('custom-tooltip');
        if (tooltip && tooltip.parentNode) {
            tooltip.parentNode.removeChild(tooltip);
        }

        var tip = document.createElement('div');
        tip.id = 'custom-tooltip';
        tip.style.position = 'absolute';
        tip.style.left = (x + 5) + 'px';
        tip.style.top = (y + 10) + 'px';
        tip.style.backgroundColor = '{ToolTipBackColor}';
        tip.style.color = '{ToolTipForeColor}';
        tip.style.padding = '4px 4px';
        tip.style.borderRadius = '4px';
        tip.style.fontSize = '12px';
        tip.style.zIndex = '999999';
        tip.style.pointerEvents = 'none';
        tip.style.boxShadow = '0 2px 8px rgba(0,0,0,0.2)';
        tip.style.border = '1px solid {ToolTipForeColor}';
        tip.innerHTML = message; // Используем innerHTML для совместимости

        document.body.appendChild(tip);

        setTimeout(function() {
            if (tip.parentNode) {
                tip.parentNode.removeChild(tip);
            }
        }, 2000);
    }
    
    // Замена для addEventListener
    function addEvent(element, eventName, handler) {
        if (element.addEventListener) {
            element.addEventListener(eventName, handler, false);
        } else if (element.attachEvent) {
            element.attachEvent('on' + eventName, handler);
        } else {
            element['on' + eventName] = handler;
        }
    }
    
    function handleClick(e) {
        e = e || window.event;
        
        // Проверяем Ctrl/Cmd
        var isCtrlPressed = e.ctrlKey || e.metaKey || (e.button === 2); // включая правую кнопку для старых браузеров
        if (!isCtrlPressed) return;

        if (e.preventDefault) {
            e.preventDefault();
        } else {
            e.returnValue = false;
        }

        var target = e.target || e.srcElement;

        var textToCopy = '';

        // Если клик по ссылке — копируем её текст
        if (target.tagName && target.tagName.toUpperCase() === 'A') {
            textToCopy = target.textContent || target.innerText || target.text;
        } else {
            // Иначе — выделенный текст или слово под курсором
            var selection;
            if (window.getSelection) {
                selection = window.getSelection();
            } else if (document.selection) {
                selection = document.selection.createRange();
            }
            
            if (selection && selection.toString && selection.toString().trim() !== '') {
                textToCopy = selection.toString();
            } else if (selection && selection.text) {
                // Для IE
                textToCopy = selection.text;
            } else {
                // Попробуем получить слово под курсором
                var clientX = e.clientX || 0;
                var clientY = e.clientY || 0;
                textToCopy = getWordAtPosition(clientX, clientY);
            }
        }

        if (textToCopy) {
            copyToClipboard(textToCopy);
            var clientX = e.clientX || 0;
            var clientY = e.clientY || 0;
            showTooltip(clientX, clientY, 'Скопировано: ' + textToCopy);
        }
    }

    // Инициализация события
    addEvent(document, 'click', handleClick);

</script>