/**
 * Custom JavaScript for Tab System
 * Site açıldığında tab sistemini yeniden DOM'a bağlar
 */


(function ($) {
    'use strict';

    // Tab sistemi yeniden başlatma fonksiyonu
    function reinitializeTabs() {
        // Mevcut tab sistemini temizle


        // Tab sistemini yeniden başlat
        $('.tabs').tabs();

    }

    // Sayfa yüklendiğinde çalışacak fonksiyon
    function initializeOnLoad() {
        // DOM hazır olduğunda
        $(document).ready(function () {
            // Tab sistemi varsa başlat
            if ($('.tabs').length > 0) {
                reinitializeTabs();
            }
        });

        // Sayfa tamamen yüklendiğinde (resimler, CSS vs.)
        $(window).on('load', function () {
            // Tab sistemi varsa tekrar kontrol et
            if ($('.tabs').length > 0) {
                setTimeout(function () {
                    reinitializeTabs();
                }, 100);
            }
        });
    }

    // AJAX içerik yüklendiğinde çalışacak fonksiyon
    function initializeOnAjax() {
        // AJAX tamamlandığında tab sistemini yeniden başlat
        $(document).ajaxComplete(function (event, xhr, settings) {
            if ($('.tabs').length > 0) {
                setTimeout(function () {
                    reinitializeTabs();
                }, 50);
            }
        });
    }

    // Dinamik içerik değişikliklerini izle
    function watchForDynamicContent() {
        // MutationObserver ile DOM değişikliklerini izle
        if (typeof MutationObserver !== 'undefined') {
            var observer = new MutationObserver(function (mutations) {
                mutations.forEach(function (mutation) {
                    if (mutation.type === 'childList') {
                        // Yeni tab sistemi eklendi mi kontrol et
                        var addedNodes = Array.from(mutation.addedNodes);
                        addedNodes.forEach(function (node) {
                            if (node.nodeType === 1) { // Element node
                                if ($(node).find('.tabs').length > 0 || $(node).hasClass('tabs')) {
                                    setTimeout(function () {
                                        reinitializeTabs();
                                    }, 50);
                                }
                            }
                        });
                    }
                });
            });

            // Body elementini izle
            observer.observe(document.body, {
                childList: true,
                subtree: true
            });
        }
    }

    // Tab sistemi için özel event handler'ları
    function setupTabEventHandlers() {
        // Tab menü öğelerine tıklama eventi
        $(document).on('click', '.tabs-menu li[data-tab]', function (e) {
            e.preventDefault();

            var $this = $(this);
            var targetTab = $this.data('tab');
            var $tabsContainer = $this.closest('.tabs');

            // Aktif class'ını güncelle
            $tabsContainer.find('.tabs-menu li').removeClass('active');
            $this.addClass('active');

            // Tab içeriklerini göster/gizle
            $tabsContainer.find('.tab').removeClass('visible').addClass('hidden');
            $(targetTab).removeClass('hidden').addClass('visible');

            // Custom event tetikle
            $tabsContainer.trigger('tabChanged', [targetTab, $this]);
        });
    }

    // Responsive tab sistemi için ek fonksiyonlar
    function setupResponsiveTabs() {
        // Mobil cihazlarda tab menüsünü düzenle
        function adjustTabsForMobile() {
            if (window.innerWidth <= 768) {
                $('.tabs-menu').addClass('mobile-tabs');
            } else {
                $('.tabs-menu').removeClass('mobile-tabs');
            }
        }

        // Pencere boyutu değiştiğinde
        $(window).on('resize', function () {
            adjustTabsForMobile();
        });

        // İlk yüklemede kontrol et
        adjustTabsForMobile();
    }

    // Tab sistemi durumunu kontrol et
    function checkTabSystemStatus() {
        var tabSystems = $('.tabs');

        if (tabSystems.length === 0) {
            return false;
        }

        tabSystems.each(function (index) {
            var $tabSystem = $(this);
            var menuItems = $tabSystem.find('.tabs-menu li[data-tab]');
            var tabContents = $tabSystem.find('.tab');



        });

        return true;
    }

    // Ana başlatma fonksiyonu
    function init() {

        // Temel fonksiyonları başlat
        initializeOnLoad();
        initializeOnAjax();
        watchForDynamicContent();
        setupTabEventHandlers();
        setupResponsiveTabs();

        // Tab sistemi durumunu kontrol et
        setTimeout(function () {
            checkTabSystemStatus();
        }, 1000);


    }

    // Global fonksiyon olarak dışa aktar
    window.customTabSystem = {
        reinitialize: reinitializeTabs,
        checkStatus: checkTabSystemStatus,
        init: init
    };

    // Otomatik başlat
    init();

    // Document ready işlemleri
    $(document).ready(function () {
        $('img').css('z-index', '');
        var datalist = {};
        var isSubmitting = false;

        // Basit toast utility
        // Toast CSS enjekte et (bir kez)
        (function injectToastCss() {
            if (document.getElementById('aeg-toast-styles')) return;
            var css = '.aeg-toast{position:fixed;right:16px;bottom:16px;z-index:9999;background:#222;color:#fff;padding:10px 14px;border-radius:8px;opacity:0;transition:opacity .2s,transform .2s;transform:translateY(10px)}.aeg-toast.show{opacity:1;transform:translateY(0)}.aeg-toast-success{background:#22c55e}.aeg-toast-error{background:#ef4444}';
            var style = document.createElement('style');
            style.id = 'aeg-toast-styles';
            style.textContent = css;
            document.head.appendChild(style);
        })();

        function showToast(type, message) {
            var toast = document.createElement('div');
            toast.className = 'aeg-toast ' + (type === 'success' ? 'aeg-toast-success' : 'aeg-toast-error');
            toast.textContent = message;
            document.body.appendChild(toast);
            requestAnimationFrame(function () { toast.classList.add('show'); });
            setTimeout(function () { toast.classList.remove('show'); toast.remove(); }, 3500);
        }

        // Form submit işlemi
        $(document).on('submit', 'form', function (e) {
            e.preventDefault();
            if (isSubmitting) return;
            isSubmitting = true;

            var formData = new FormData(this);
            var featuresData = {};

            // Bu alanlar haricindekileri featuresData içine ekleyelim
            var excludeKeys = ['csrf_token', 'csrf_token_fronted', 'model', 'title'];

            for (var pair of formData.entries()) {
                var key = pair[0];
                var value = pair[1];

                if (excludeKeys.includes(key)) {
                    continue;
                } else {
                    featuresData[key] = value;  // Diğer verileri featuresData içine ekle
                }
            }

            // JSON formatına çeviriyoruz
            var featuresDataJson = JSON.stringify(featuresData);
            console.log('featuresData:', featuresDataJson);

            // Yeni bir FormData oluşturup gerekli verileri ekleyelim
            var newFormData = new FormData();
            newFormData.append('model', formData.get('model') || 'feedback');
            newFormData.append('title', formData.get('title') || '');
            newFormData.append('featuresData', featuresDataJson);  // JSON formatındaki featuresData'yı ekle

            // buton kilitle
            var submitBtn = this.querySelector('button[type="submit"]');
            if (submitBtn) { submitBtn.disabled = true; submitBtn.dataset._old = submitBtn.innerHTML; submitBtn.innerHTML = 'Gönderiliyor...'; }

            $.ajax({
                url: window.location.origin + '/panel/public-store',
                type: 'POST',
                data: newFormData,
                processData: false,  // FormData'nın otomatik olarak işlenmesini engelle
                contentType: false,  // FormData ile çalışırken contentType otomatik ayarlanır
                success: function (response) {
                    try {
                        var res = (typeof response === 'string') ? JSON.parse(response) : response;
                        if (res && res.status === 'success') {
                            showToast('success', 'Talebiniz alındı. Teşekkür ederiz.');
                            e.target.reset();
                        } else {
                            showToast('error', (res && res.message) ? res.message : 'Bir hata oluştu.');
                        }
                    } catch (err) {
                        showToast('error', 'Beklenmeyen cevap: ' + err.message);
                    }
                },
                error: function (xhr, status, error) {
                    showToast('error', 'İstek sırasında hata: ' + (error || status));
                },
                complete: function () {
                    isSubmitting = false;
                    if (submitBtn) { submitBtn.disabled = false; submitBtn.innerHTML = submitBtn.dataset._old || 'Gönder'; }
                }
            });
        });
    });
    // Component tabs yapısı - Tüm component'leri tek yerden yönet
    var componentTabs = {
        // Brands component
        brands: function ($element) {
            $.ajax({
                url: window.location.origin + '/panel/ajax',
                type: 'POST',
                data: { 'action': 'brands' },
                success: function (data) {
                    $element.html(data);
                    var brand = $element.find('.brand-active');
                    brand.slick({
                        dots: false,
                        infinite: true,
                        speed: 1000,
                        autoplay: true,
                        arrows: false,
                        slidesToShow: 5,
                        slidesToScroll: 1,
                        responsive: [
                            { breakpoint: 1200, settings: { slidesToShow: 5, slidesToScroll: 1, infinite: true } },
                            { breakpoint: 992, settings: { slidesToShow: 4, slidesToScroll: 1 } },
                            { breakpoint: 767, settings: { slidesToShow: 3, slidesToScroll: 1, arrows: false } },
                            { breakpoint: 575, settings: { slidesToShow: 2, slidesToScroll: 1, arrows: false } }
                        ]
                    });
                }
            });
        },

        // Menu component
        menu: function ($element) {
            var id = $element.data('id');
            if (id) {
                $.ajax({
                    url: window.location.origin + '/panel/ajax',
                    type: 'POST',
                    dataType: 'json',
                    data: { 'data': id, 'action': 'menus' },
                    success: function (data) {
                        $element.html(data);
                    }
                });
            } else {
                $element.html('<p style="margin-left: 50px;">Lütfen Menu Seçiniz</p>');
            }
        },

        // Sliders component
        sliders: function ($element) {
            var id = $element.data('id');
            if (id) {
                $.ajax({
                    url: window.location.origin + '/panel/ajax',
                    type: 'POST',
                    dataType: 'json',
                    data: { 'data': id, 'action': 'sliders' },
                    success: function (data) {
                        $element.html(data);
                        var sliders = $element.find('.slider-active');
                        sliders.slick({
                            autoplay: true,
                            speed: 1000,
                            dots: false,
                            fade: true,
                            arrows: false,
                            responsive: [{ breakpoint: 767, settings: { dots: false, arrows: false } }]
                        });
                    }
                });
            } else {
                $element.html('<p style="margin-left: 50px;">Lütfen Slider Seçiniz</p>');
            }
        },

        // Services component
        services: function ($element) {
            var datalist = {
                source: $element.data('v-source'),
                ids: $element.data('v-service_id'),
                limit: $element.data('v-limit'),
                order: $element.data('v-order_by'),
                direction: $element.data('v-direction'),
                module: $element.data('v-module'),
                style: $element.data('v-style')
            };

            $.ajax({
                url: window.location.origin + '/panel/autocompleteAjax',
                type: 'POST',
                dataType: 'json',
                data: { 'data': datalist, 'action': datalist['module'] },
                success: function (data) {
                    $element.html(data);
                }
            });
        },

        // Testimonials component
        testimonials: function ($element) {
            var datalist = {
                source: $element.data('v-source'),
                ids: $element.data('v-service_id'),
                limit: $element.data('v-limit'),
                order: $element.data('v-order_by'),
                direction: $element.data('v-direction'),
                module: $element.data('v-module'),
                style: $element.data('v-style')
            };

            $.ajax({
                url: window.location.origin + '/panel/autocompleteAjax',
                type: 'POST',
                dataType: 'json',
                data: { 'data': datalist, 'action': datalist['module'] },
                success: function (data) {
                    $element.html(data);
                    var testimonial = $element.find('.testimonial-active-two');
                    testimonial.slick({
                        dots: false,
                        infinite: true,
                        speed: 1000,
                        autoplay: true,
                        arrows: true,
                        prevArrow: '<button type="button" class="slick-prev"><i class="flaticon-right-arrow"></i></button>',
                        nextArrow: '<button type="button" class="slick-next"><i class="flaticon-right-arrow"></i></button>',
                        appendArrows: ".testimonial-nav-two",
                        slidesToShow: 2,
                        slidesToScroll: 1,
                        responsive: [
                            { breakpoint: 1200, settings: { slidesToShow: 2, slidesToScroll: 1, infinite: true } },
                            { breakpoint: 992, settings: { slidesToShow: 1, slidesToScroll: 1 } },
                            { breakpoint: 767, settings: { slidesToShow: 1, slidesToScroll: 1 } },
                            { breakpoint: 575, settings: { slidesToShow: 1, slidesToScroll: 1 } }
                        ]
                    });
                }
            });
        },

        // Posts component
        posts: function ($element) {
            var datalist = {
                source: $element.data('v-source'),
                ids: $element.data('v-service_id'),
                limit: $element.data('v-limit'),
                order: $element.data('v-order_by'),
                direction: $element.data('v-direction'),
                module: $element.data('v-module'),
                style: $element.data('v-style'),
                category_id: $element.data('v-category')
            };

            $.ajax({
                url: window.location.origin + '/panel/autocompleteAjax',
                type: 'POST',
                dataType: 'json',
                data: { 'data': datalist, 'action': datalist['module'] },
                success: function (data) {
                    $element.html(data);
                },
                error: function (xhr, status, error) {
                    console.error('Bir hata oluştu:', error);
                }
            });
        },

        // Projects component
        projects: function ($element) {
            var datalist = {
                source: $element.data('v-source'),
                ids: $element.data('v-service_id'),
                limit: $element.data('v-limit'),
                order: $element.data('v-order_by'),
                direction: $element.data('v-direction'),
                module: $element.data('v-module'),
                style: $element.data('v-style'),
                category_id: $element.data('v-category')
            };

            $.ajax({
                url: window.location.origin + '/panel/autocompleteAjax',
                type: 'POST',
                dataType: 'json',
                data: { 'data': datalist, 'action': datalist['module'] },
                success: function (data) {
                    $element.html(data);
                },
                error: function (xhr, status, error) {
                    console.error('Bir hata oluştu:', error);
                }
            });
        }
    };

    document.addEventListener('click', function (e) {
        var btn = e.target.closest('.lang-inline .drop-btn');
        if (!btn) return;
        e.preventDefault();
        btn.classList.toggle('active');
    });
    document.addEventListener('click', function (e) {
        if (!e.target.closest('.lang-inline')) {
            document.querySelectorAll('.lang-inline .drop-btn.active').forEach(function (b) { b.classList.remove('active'); });
        }
    });

    // Component'leri çalıştır
    $('[data-component-brands]').each(function () {
        componentTabs.brands($(this));
    });

    $('[data-component-menu]').each(function () {
        componentTabs.menu($(this));
    });

    $('[data-component-sliders]').each(function () {
        componentTabs.sliders($(this));
    });

    $('[data-component-services]').each(function () {
        componentTabs.services($(this));
    });

    $('[data-component-testimonials]').each(function () {
        componentTabs.testimonials($(this));
    });

    $('[data-component-posts]').each(function () {
        componentTabs.posts($(this));
    });

    $('[data-component-projects]').each(function () {
        componentTabs.projects($(this));
    });

    // Yeni component eklemek için kolay yöntem
    // Örnek: $('[data-component-yeni-component]').each(function() { componentTabs.yeniComponent($(this)); });

    // Statik kaydedilmiş menülerde güncel dil bayrağını runtime'da senkronize et
    function syncStaticLangFlag() {
        try {
            var currentLang = (document.documentElement && document.documentElement.getAttribute('lang')) || 'tr';
            var menus = document.querySelectorAll('.lang_menu');
            if (!menus || !menus.length) return;
            menus.forEach(function (menu) {
                var currentImg = menu.querySelector('.drop-btn img');
                var links = menu.querySelectorAll('.drop-box a');
                var pickedImg = null, pickedName = '';
                links.forEach(function (a) {
                    var href = a.getAttribute('href') || '';
                    if (href.indexOf('?lang=' + currentLang) !== -1) {
                        pickedImg = a.querySelector('img');
                        pickedName = (a.textContent || '').trim();
                    }
                });
                if (pickedImg && currentImg) {
                    currentImg.src = pickedImg.src;
                    currentImg.alt = currentLang;
                }
                // İsim alanı varsa güncelle ve çeviri dışı bırak
                var nameEl = menu.querySelector('.drop-btn .lang-name');
                if (nameEl && pickedName) {
                    nameEl.textContent = pickedName;
                    nameEl.classList.add('notranslate');
                    nameEl.setAttribute('data-no-translate', '');
                }
            });
        } catch (e) { /* sessiz geç */ }
    }

    document.addEventListener('DOMContentLoaded', syncStaticLangFlag);

})(jQuery);