<?php if ($user): ?>
    </div>
  </div>
</div>
<?php else: ?>
</div>
<?php endif; ?>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="<?= base_url('assets/js/jalali-datepicker.js') ?>"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
    var toggle = document.getElementById('sidebarToggle');
    var sidebar = document.getElementById('appSidebar');
    var backdrop = document.getElementById('sidebarBackdrop');
    if (toggle && sidebar && backdrop) {
        function closeSidebar() {
            sidebar.classList.remove('open');
            backdrop.classList.remove('show');
        }
        toggle.addEventListener('click', function () {
            sidebar.classList.toggle('open');
            backdrop.classList.toggle('show');
        });
        backdrop.addEventListener('click', closeSidebar);
    }

    // کلید تغییر پوسته (روشن/تیره/خودکار)
    var themeSwitch = document.getElementById('themeSwitch');
    if (themeSwitch) {
        var buttons = themeSwitch.querySelectorAll('button');
        var current = localStorage.getItem('theme') || 'auto';
        function applyActive() {
            buttons.forEach(function (b) {
                b.classList.toggle('active', b.dataset.themeChoice === current);
            });
        }
        applyActive();
        buttons.forEach(function (btn) {
            btn.addEventListener('click', function () {
                current = btn.dataset.themeChoice;
                if (current === 'auto') {
                    localStorage.removeItem('theme');
                    document.documentElement.removeAttribute('data-theme');
                } else {
                    localStorage.setItem('theme', current);
                    document.documentElement.setAttribute('data-theme', current);
                }
                applyActive();
            });
        });
    }
});
// جداکننده سه‌رقمی زنده برای ورودی‌های مبلغ (کلاس money-input)
function formatMoneyInput(el) {
    let digits = el.value.replace(/[^0-9]/g, '');
    el.value = digits ? Number(digits).toLocaleString('en-US') : '';
}
document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('.money-input').forEach(function (el) {
        el.setAttribute('inputmode', 'numeric');
        formatMoneyInput(el);
        el.addEventListener('input', function () { formatMoneyInput(el); });
    });
});

// اعتبارسنجی بصری فیلدهای الزامی: دور فیلدهای خالی هنگام ثبت فرم قرمز می‌شود
// و به محض تکمیل، رنگ قرمز برداشته می‌شود.
document.addEventListener('DOMContentLoaded', function () {
    function isFieldEmpty(field) {
        if (field.type === 'file') {
            return field.files.length === 0;
        }
        if (field.type === 'radio') {
            // گروه رادیویی خالی است فقط اگر هیچ‌کدام از هم‌نام‌ها انتخاب نشده باشند
            var group = field.form ? field.form.querySelectorAll('input[type="radio"][name="' + CSS.escape(field.name) + '"]') : [field];
            return !Array.prototype.some.call(group, function (r) { return r.checked; });
        }
        if (field.type === 'checkbox') {
            return !field.checked;
        }
        return field.value.trim() === '';
    }

    function markGroup(field, isEmpty) {
        if (field.type === 'radio') {
            var group = field.form ? field.form.querySelectorAll('input[type="radio"][name="' + CSS.escape(field.name) + '"]') : [field];
            Array.prototype.forEach.call(group, function (r) {
                r.classList.toggle('is-invalid', isEmpty);
            });
        } else {
            field.classList.toggle('is-invalid', isEmpty);
        }
    }

    document.querySelectorAll('form').forEach(function (form) {
        form.addEventListener('submit', function (e) {
            var firstInvalid = null;
            var seenRadioGroups = {};
            var fields = form.querySelectorAll('[required]');
            fields.forEach(function (field) {
                if (field.type === 'radio') {
                    if (seenRadioGroups[field.name]) return;
                    seenRadioGroups[field.name] = true;
                }
                var isEmpty = isFieldEmpty(field);
                markGroup(field, isEmpty);
                if (isEmpty && !firstInvalid) firstInvalid = field;
            });
            if (firstInvalid) {
                e.preventDefault();
                firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });
            }
        });

        form.addEventListener('input', function (e) {
            var field = e.target;
            if (!field.hasAttribute('required') && field.type !== 'radio') return;
            var isEmpty = isFieldEmpty(field);
            if (!isEmpty) markGroup(field, false);
        });
        form.addEventListener('change', function (e) {
            var field = e.target;
            if (field.type === 'radio' || field.type === 'checkbox' || field.type === 'file') {
                var isEmpty = isFieldEmpty(field);
                if (!isEmpty) markGroup(field, false);
            }
        });
    });
});
</script>
</body>
</html>
