<?php
namespace AITheme\Elementor\Widgets;

use Elementor\Controls_Manager;
use Elementor\Repeater;

if (!defined('ABSPATH')) exit;

class Cookies_Default extends AI_Widget_Base {
    public function get_name() { return 'ai_cookies_default'; }
    public function get_title() { return __('Cookie Policy', 'ai-theme'); }
    public function get_icon() { return 'eicon-info-circle-o'; }
    public function get_categories() { return array('ai-theme-cookies'); }

    protected function register_controls() {
        // Content Section
        $this->start_controls_section('content_section', [
            'label' => __('Content', 'ai-theme'),
            'tab' => Controls_Manager::TAB_CONTENT
        ]);

        $this->add_control('language', [
            'label' => __('Language', 'ai-theme'),
            'type' => Controls_Manager::SELECT,
            'options' => ['ru' => 'Русский', 'en' => 'English'],
            'default' => 'ru'
        ]);

        $this->add_control('title', [
            'label' => __('Title', 'ai-theme'),
            'type' => Controls_Manager::TEXT,
            'default' => ''
        ]);

        $this->add_control('last_updated', [
            'label' => __('Last Updated', 'ai-theme'),
            'type' => Controls_Manager::TEXT,
            'default' => ''
        ]);

        $this->add_control('company_name', [
            'label' => __('Company Name', 'ai-theme'),
            'type' => Controls_Manager::TEXT
        ]);

        $this->add_control('contact_email', [
            'label' => __('Contact Email', 'ai-theme'),
            'type' => Controls_Manager::TEXT
        ]);

        $this->end_controls_section();

        // Cookie Types Section
        $this->start_controls_section('cookie_types_section', [
            'label' => __('Cookie Types', 'ai-theme'),
            'tab' => Controls_Manager::TAB_CONTENT
        ]);

        $this->add_control('use_custom_cookie_types', [
            'label' => __('Use Custom Cookie Types', 'ai-theme'),
            'type' => Controls_Manager::SWITCHER,
            'default' => ''
        ]);

        $cookie_repeater = new Repeater();
        $cookie_repeater->add_control('cookie_name', [
            'label' => __('Cookie Name', 'ai-theme'),
            'type' => Controls_Manager::TEXT
        ]);
        $cookie_repeater->add_control('cookie_description', [
            'label' => __('Description', 'ai-theme'),
            'type' => Controls_Manager::TEXTAREA,
            'rows' => 3
        ]);
        $cookie_repeater->add_control('cookie_required', [
            'label' => __('Required', 'ai-theme'),
            'type' => Controls_Manager::SWITCHER,
            'default' => ''
        ]);

        $this->add_control('cookie_types', [
            'label' => __('Cookie Types', 'ai-theme'),
            'type' => Controls_Manager::REPEATER,
            'fields' => $cookie_repeater->get_controls(),
            'title_field' => '{{{ cookie_name }}}'
        ]);

        $this->end_controls_section();

        // Custom Sections
        $this->start_controls_section('sections_section', [
            'label' => __('Custom Sections', 'ai-theme'),
            'tab' => Controls_Manager::TAB_CONTENT
        ]);

        $this->add_control('use_custom_sections', [
            'label' => __('Use Custom Sections', 'ai-theme'),
            'type' => Controls_Manager::SWITCHER,
            'default' => ''
        ]);

        $repeater = new Repeater();
        $repeater->add_control('section_title', [
            'label' => __('Section Title', 'ai-theme'),
            'type' => Controls_Manager::TEXT
        ]);
        $repeater->add_control('section_content', [
            'label' => __('Section Content', 'ai-theme'),
            'type' => Controls_Manager::TEXTAREA,
            'rows' => 4
        ]);

        $this->add_control('sections', [
            'label' => __('Sections', 'ai-theme'),
            'type' => Controls_Manager::REPEATER,
            'fields' => $repeater->get_controls(),
            'title_field' => '{{{ section_title }}}'
        ]);

        $this->end_controls_section();
    }

    protected function render() {
        $s = $this->get_settings_for_display();
        $lang = $s['language'] ?? 'ru';
        $isRu = $lang === 'ru';

        // Translations
        $t = $isRu ? [
            'title' => 'Политика использования Cookie',
            'lastUpdated' => 'Последнее обновление',
            'cookieTypesTitle' => 'Типы используемых cookie',
            'required' => 'Обязательные',
            'optional' => 'Опциональные',
            'browserSettingsTitle' => 'Как управлять cookie в браузере',
            'contactTitle' => 'Есть вопросы?',
            'contactText' => 'Если у вас есть вопросы о нашей политике использования cookie, свяжитесь с нами:',
            'browserSettings' => [
                ['browser' => 'Chrome', 'path' => 'Настройки → Конфиденциальность и безопасность → Файлы cookie'],
                ['browser' => 'Firefox', 'path' => 'Настройки → Приватность и защита → Cookie и данные сайтов'],
                ['browser' => 'Safari', 'path' => 'Настройки → Конфиденциальность → Файлы cookie'],
                ['browser' => 'Edge', 'path' => 'Настройки → Конфиденциальность → Файлы cookie']
            ],
            'cookieTypes' => [
                ['name' => 'Необходимые cookie', 'description' => 'Эти файлы cookie необходимы для работы сайта и не могут быть отключены.', 'required' => true],
                ['name' => 'Аналитические cookie', 'description' => 'Эти файлы cookie позволяют нам подсчитывать посещения и источники трафика.', 'required' => false],
                ['name' => 'Функциональные cookie', 'description' => 'Эти файлы cookie позволяют сайту запоминать сделанный вами выбор.', 'required' => false],
                ['name' => 'Маркетинговые cookie', 'description' => 'Эти файлы cookie используются для создания профиля ваших интересов.', 'required' => false]
            ],
            'sections' => [
                ['title' => 'Что такое cookie?', 'content' => 'Cookie (куки) — это небольшие текстовые файлы, которые сохраняются на вашем устройстве при посещении веб-сайтов.'],
                ['title' => 'Как мы используем cookie', 'content' => 'Мы используем файлы cookie для различных целей: обеспечения функционирования сайта, анализа посещаемости, персонализации контента.'],
                ['title' => 'Управление cookie', 'content' => 'Большинство веб-браузеров позволяют управлять файлами cookie через настройки.'],
                ['title' => 'Cookie третьих сторон', 'content' => 'Некоторые файлы cookie на нашем сайте устанавливаются третьими сторонами.'],
                ['title' => 'Срок хранения cookie', 'content' => 'Сессионные cookie удаляются после закрытия браузера. Постоянные cookie остаются на вашем устройстве.'],
                ['title' => 'Изменения в политике', 'content' => 'Мы можем периодически обновлять настоящую Политику использования cookie.']
            ]
        ] : [
            'title' => 'Cookie Policy',
            'lastUpdated' => 'Last updated',
            'cookieTypesTitle' => 'Types of Cookies We Use',
            'required' => 'Required',
            'optional' => 'Optional',
            'browserSettingsTitle' => 'How to Manage Cookies in Your Browser',
            'contactTitle' => 'Have Questions?',
            'contactText' => 'If you have any questions about our cookie policy, please contact us:',
            'browserSettings' => [
                ['browser' => 'Chrome', 'path' => 'Settings → Privacy and Security → Cookies'],
                ['browser' => 'Firefox', 'path' => 'Settings → Privacy & Security → Cookies and Site Data'],
                ['browser' => 'Safari', 'path' => 'Settings → Privacy → Cookies'],
                ['browser' => 'Edge', 'path' => 'Settings → Privacy → Cookies']
            ],
            'cookieTypes' => [
                ['name' => 'Essential Cookies', 'description' => 'These cookies are necessary for the website to function and cannot be disabled.', 'required' => true],
                ['name' => 'Analytics Cookies', 'description' => 'These cookies allow us to count visits and traffic sources.', 'required' => false],
                ['name' => 'Functional Cookies', 'description' => 'These cookies enable the website to remember choices you make.', 'required' => false],
                ['name' => 'Marketing Cookies', 'description' => 'These cookies are used to build a profile of your interests.', 'required' => false]
            ],
            'sections' => [
                ['title' => 'What Are Cookies?', 'content' => 'Cookies are small text files that are stored on your device when you visit websites.'],
                ['title' => 'How We Use Cookies', 'content' => 'We use cookies for various purposes: ensuring website functionality, analyzing traffic, personalizing content.'],
                ['title' => 'Managing Cookies', 'content' => 'Most web browsers allow you to manage cookies through their settings.'],
                ['title' => 'Third-Party Cookies', 'content' => 'Some cookies on our site are set by third parties.'],
                ['title' => 'Cookie Retention Period', 'content' => 'Session cookies are deleted when you close your browser. Persistent cookies remain on your device.'],
                ['title' => 'Changes to This Policy', 'content' => 'We may update this Cookie Policy periodically.']
            ]
        ];

        $title = !empty($s['title']) ? $s['title'] : $t['title'];
        $companyName = !empty($s['company_name']) ? $s['company_name'] : ($isRu ? 'Наша компания' : 'Our company');

        // Generate email from company name if not provided (same logic as footer)
        $email = !empty($s['contact_email']) ? $s['contact_email'] : '';
        if (empty($email) || $email === 'privacy@example.com') {
            $brandSlug = sanitize_title($companyName);
            $brandSlug = preg_replace('/[^a-z0-9]/', '', $brandSlug);
            $email = $brandSlug ? "info@{$brandSlug}.com" : 'info@company.com';
        }

        $lastUpdated = !empty($s['last_updated']) ? $s['last_updated'] : date_i18n($isRu ? 'j F Y' : 'F j, Y');

        // Use custom sections if provided, otherwise default
        $sections = $t['sections'];
        if (!empty($s['sections'])) {
            $sections = [];
            foreach ($s['sections'] as $section) {
                $sections[] = ['title' => $section['section_title'], 'content' => $section['section_content']];
            }
        }

        // Use custom cookie types if provided, otherwise default
        $cookieTypes = $t['cookieTypes'];
        if (!empty($s['cookie_types'])) {
            $cookieTypes = [];
            foreach ($s['cookie_types'] as $cookie) {
                $cookieTypes[] = [
                    'name' => $cookie['cookie_name'],
                    'description' => $cookie['cookie_description'],
                    'required' => !empty($cookie['cookie_required'])
                ];
            }
        }

        $introduction = $isRu
            ? "{$companyName} использует файлы cookie и аналогичные технологии на своем веб-сайте. В этой политике объясняется, что такое cookie, как мы их используем и какие у вас есть возможности в отношении их использования."
            : "{$companyName} uses cookies and similar technologies on its website. This policy explains what cookies are, how we use them, and what choices you have regarding their use.";
        ?>
        <section class="ai-cookies ai-cookies-default py-16 px-4 bg-white">
            <div class="ai-container-narrow">
                <div class="mb-12 text-center">
                    <div class="w-16 h-16 bg-amber-100 rounded-full flex items-center justify-center mx-auto mb-6">
                        <svg class="w-10 h-10 text-amber-600" fill="currentColor" viewBox="0 0 20 20">
                            <path d="M10 2a8 8 0 100 16 8 8 0 000-16zM7 9a1 1 0 100-2 1 1 0 000 2zm6 0a1 1 0 100-2 1 1 0 000 2zm-3 4a1 1 0 100-2 1 1 0 000 2zm3-1a1 1 0 11-2 0 1 1 0 012 0z"/>
                        </svg>
                    </div>
                    <h1 class="text-4xl font-bold text-gray-900 mb-4"><?php echo esc_html($title); ?></h1>
                    <p class="text-gray-500"><?php echo esc_html($t['lastUpdated']); ?>: <?php echo esc_html($lastUpdated); ?></p>
                </div>

                <div class="mb-10 p-6 bg-amber-50 rounded-xl">
                    <p class="text-gray-700 leading-relaxed"><?php echo esc_html($introduction); ?></p>
                </div>

                <div class="mb-12">
                    <h2 class="text-2xl font-semibold text-gray-900 mb-6"><?php echo esc_html($t['cookieTypesTitle']); ?></h2>
                    <div class="space-y-4">
                        <?php foreach ($cookieTypes as $cookie) : ?>
                        <div class="p-5 rounded-xl border <?php echo $cookie['required'] ? 'bg-gray-50 border-gray-200' : 'bg-white border-gray-100'; ?>">
                            <div class="flex items-start justify-between mb-2">
                                <h3 class="font-semibold text-gray-900"><?php echo esc_html($cookie['name']); ?></h3>
                                <span class="text-xs px-2 py-1 rounded-full <?php echo $cookie['required'] ? 'bg-gray-200 text-gray-700' : 'bg-blue-100 text-blue-700'; ?>">
                                    <?php echo esc_html($cookie['required'] ? $t['required'] : $t['optional']); ?>
                                </span>
                            </div>
                            <p class="text-gray-600 text-sm leading-relaxed"><?php echo esc_html($cookie['description']); ?></p>
                        </div>
                        <?php endforeach; ?>
                    </div>
                </div>

                <div class="space-y-8">
                    <?php foreach ($sections as $section) : ?>
                    <div class="border-b border-gray-100 pb-8 last:border-0">
                        <h2 class="text-2xl font-semibold text-gray-900 mb-4"><?php echo esc_html($section['title']); ?></h2>
                        <p class="text-gray-600 leading-relaxed"><?php echo esc_html($section['content']); ?></p>
                    </div>
                    <?php endforeach; ?>
                </div>

                <div class="mt-12 p-6 bg-gray-50 rounded-xl">
                    <h2 class="text-xl font-semibold text-gray-900 mb-3"><?php echo esc_html($t['browserSettingsTitle']); ?></h2>
                    <ul class="space-y-2 text-gray-600">
                        <?php foreach ($t['browserSettings'] as $item) : ?>
                        <li class="flex items-start gap-2">
                            <span class="text-blue-500 mt-1">•</span>
                            <span><strong><?php echo esc_html($item['browser']); ?>:</strong> <?php echo esc_html($item['path']); ?></span>
                        </li>
                        <?php endforeach; ?>
                    </ul>
                </div>

                <div class="mt-8 p-6 bg-blue-50 rounded-xl">
                    <h2 class="text-xl font-semibold text-gray-900 mb-3"><?php echo esc_html($t['contactTitle']); ?></h2>
                    <p class="text-gray-600"><?php echo esc_html($t['contactText']); ?></p>
                    <p class="mt-3"><a href="mailto:<?php echo esc_attr($email); ?>" class="text-blue-600 hover:text-blue-700 font-medium"><?php echo esc_html($email); ?></a></p>
                </div>
            </div>
        </section>
        <?php
    }
}
