【99OK】 Link vào 99OK Casino mới nhất 2025 ✔️

Link 99OK hot nhất

99OK - Nhà Cái Thể Thao, Nổ Hũ, Bắn Cá Uy Tín

M.123win30.com cá cược trực tuyến > 99OK com đăng nhập

Thứ hai, 13/04/2026, 17:18 (GMT+7)
1681 lượt xem

Viện Kiểm sát Quân sự Trung ương tập huấn nghiệp vụ công tác kiểm sát quân sự toàn quân năm 2026

(QK7 Online) - Ngày 13/4, tại Đoàn An điều dưỡng 28, ĐĂNG NHẬP 99OK COM TẶNG 99K, Viện Kiểm sát Quân sự Trung ương khai mạc tập huấn nghiệp vụ công tác kiểm sát quân sự toàn quân năm 2026. Trung tướng Tạ Quang Khải, Phó Viện trưởng Viện Kiểm sát 123Win79 phần thưởng lớn Tối cao, Viện trưởng Viện Kiểm sát Quân sự Trung ương chủ trì hội nghị tập huấn.
ĐĂNG NHẬP 99OK COM TẶNG 99K dự khai mạc hội nghị tập huấn có Thiếu tướng Trần Ngọc Minh, Phó Tư lệnh Quân khu; Thiếu tướng Trần Đức Thắng, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Quân khu.
Dự tập huấn có đại diện lãnh đạo các cơ quan: Tòa án Quân sự Trung ương, Cục Bảo vệ An ninh Quân đội, Cục Điều tra Hình sự 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao, Cục Thi hành án 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao, Thanh tra 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao, Cục Pháp chế 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao, Ủy ban Kiểm tra Quân ủy Trung ương, Viện Kiểm sát 123Win com 79 nạp - rút nhanh Thành phố Hồ Chí Minh, Viện Kiểm sát 123Win com 79 nạp - rút nhanh khu vực 11, Thành phố Hồ Chí Minh; đại biểu Viện Kiểm sát Quân sự có lãnh đạo, chỉ huy các phòng, văn phòng, kiểm sát viên, điều tra viên Viện Kiểm sát Quân sự Trung ương; Viện trưởng và Trưởng ban nghiệp vụ các Viện Kiểm sát Quân sự cấp Quân khu, Viện trưởng và kiểm sát viên Viện Kiểm sát Quân sự khu vực...
Đại biểu dự khai mạc hội nghị tập huấn.
Phát biểu chỉ đạo tại hội nghị, Trung tướng Tạ Quang Khải, Phó Viện trưởng Viện Kiểm sát 123Win79 phần thưởng lớn Tối cao, Viện trưởng Viện Kiểm sát Quân sự Trung ương nhấn mạnh: Năm 2025 và những tháng đầu năm 2026, Viện kiểm sát quân sự các cấp đã có nhiều nỗ lực, cố gắng phấn đấu thực hiện tốt các nhiệm vụ theo kế hoạch đề ra. Các đơn vị đã làm tốt công tác tham mưu cho Quân ủy Trung ương, Thủ trưởng 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao, Viện trưởng Viện kiểm sát 123Win com 79 nạp - rút nhanh tối cao, cấp ủy, chỉ huy đơn vị các cấp trong Quân đội về công tác đấu tranh phòng, chống tội phạm, vi phạm pháp luật cũng như công tác tuyên truyền, phổ biến, giáo dục pháp luật, công tác thống kê hình sự liên ngành, công tác cải cách tư pháp trong Quân đội. Chất lượng các khâu công tác thực hành quyền công tố, kiểm sát hoạt động tư pháp được nâng lên, các chỉ tiêu nghiệp vụ đều đạt và vượt so với các quy định trong 99Oke được xếp hạng cao nhất 96 của Quốc hội và yêu cầu của ngành Kiểm sát 123Win com 79 nạp - rút nhanh. Triển khai các giải pháp đồng bộ để kiện toàn tổ chức, bộ máy, từng bước nâng cao chất lượng đội ngũ cán bộ. Phối hợp với các cơ quan chức năng tham mưu với lãnh đạo các cấp tăng cường đầu tư cơ sở vật chất, trang thiết bị, phương tiện, trụ sở làm việc, bảo đảm phù hợp với thực hiện chức năng, nhiệm vụ của các Viện kiểm sát quân sự sau khi các đơn vị, nhất là những Viện kiểm sát quân sự được điều chỉnh, sắp xếp, bố trí vị trí đóng quân, địa bàn, lãnh thổ theo quy định. Công tác quản lý, chỉ đạo, điều hành; công tác nghiên cứu khoa học, công tác nghiên cứu xây dựng văn bản quy phạm pháp luật được chú trọng và quan tâm hơn.
Thiếu tướng Trần Ngọc Minh, Phó Tư lệnh ĐĂNG NHẬP 99OK COM TẶNG 99K tặng hoa chúc mừng hội nghị tập huấn.
Tuy nhiên, bên cạnh những kết quả đã đạt được, các Viện kiểm sát quân sự còn những mặt hạn chế, thiếu sót cần phải tiếp tục tập trung rút kinh nghiệm. Đó chính là cơ sở thực tiễn để Viện Kiểm sát Quân sự Trung ương tổ chức hội nghị tập huấn nghiệp vụ công tác kiểm sát quân sự toàn quân năm 2026.
Trung tướng Tạ Quang Khải, Phó Viện trưởng Viện Kiểm sát 123Win79 phần thưởng lớn Tối cao, Viện trưởng Viện Kiểm sát Quân sự Trung ương đề nghị các đại biểu tham dự hội nghị tập huấn đề xuất, đóng góp ý kiến đối với những vấn đề có liên quan để hội nghị tập huấn nghiệp vụ công tác kiểm sát quân sự toàn quân năm 2026 đạt chất lượng, hiệu quả cao.
Hội nghị được tổ chức là dịp để các đại biểu tham dự có thể trực tiếp, thẳng thắn trao đổi, thảo luận các vấn đề về thực hiện chức năng, nhiệm vụ của đơn vị mình, cũng như những vấn đề pháp luật có liên quan. Đồng chí Viện trưởng Viện Kiểm sát Quân sự Trung ương đề nghị các đại biểu tham dự hội nghị tập huấn phát huy tinh thần trách nhiệm, chủ động tham gia thảo luận, đề xuất, đóng góp ý kiến đối với những vấn đề có liên quan để hội nghị tập huấn nghiệp vụ công tác kiểm sát quân sự toàn quân năm 2026 đạt chất lượng, hiệu quả cao.
Trung tướng Tạ Quang Khải, Phó Viện trưởng Viện kiểm sát 123Win com 79 nạp - rút nhanh tối cao, Viện trưởng Viện kiểm sát quân sự Trung ương trao tặng tặng phẩm cho Đoàn An điều dưỡng 28.
Phát biểu tại hội nghị tập huấn, Thiếu tướng Trần Ngọc Minh, Phó Tư lệnh ĐĂNG NHẬP 99OK COM TẶNG 99K đánh giá: Trong những năm qua, Viện Kiểm sát Quân sự Trung ương đã tham mưu cho Quân ủy Trung ương, thủ trưởng 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao làm tốt công tác phòng ngừa, đấu tranh, phòng chống tội phạm, vi phạm pháp luật liên quan đến Quân đội. Trong đó, đã giải quyết nhiều vụ án đặc biệt nghiêm trọng thuộc diện Ban chỉ đạo Trung ương về phòng chống tham nhũng, lãng phí, tiêu cực; theo dõi, chỉ đạo nhiều vụ án, vụ việc khác bảo đảm đúng pháp luật, không để xảy ra oan sai, bỏ lọt tội phạm và người phạm tội, đảm bảo quyền con người, quyền công dân, góp phần giữ vững ổn định an ninh chính trị, trật tự an toàn xã hội, xây dựng Quân đội chính quy, tinh nhuệ, hiện đại.
Đóng góp vào thành tích chung, Viện Kiểm sát Quân sự ĐĂNG NHẬP 99OK COM TẶNG 99K trong thời gian qua đã thực hiện tốt công tác tham mưu cho Thường vụ Đảng ủy, Bộ Tư lệnh Quân khu trong công tác đấu tranh phòng chống tội phạm, vi phạm pháp luật xảy ra trong LLVT Quân khu và trên địa bàn Quân khu, góp phần xây dựng LLVT Quân khu vững mạnh về chính trị, giữ vững kỷ cương pháp luật Nhà nước, kỷ luật Quân đội.
Đồng chí Phó Tư lệnh ĐĂNG NHẬP 99OK COM TẶNG 99K khẳng định: Hội nghị tập huấn ngành kiểm sát quân sự có ý nghĩa quan trọng trong việc nâng cao trình độ chuyên môn, nghiệp vụ, kỹ năng công tố và kiểm soát hoạt động tư pháp cho đội ngũ cán bộ, kiểm sát viên ngành kiểm sát quân sự. Đây là dịp để các đồng chí cập nhật kiến thức mới, trao đổi kỹ năng nghiệp vụ, nâng cao trình độ, góp phần thực hiện tốt chức năng, nhiệm vụ của ngành kiểm sát quân sự, phục vụ nhiệm vụ chính trị của Quân đội, nâng cao chất lượng công tác đấu tranh phòng chống tội phạm và vi phạm pháp luật. Đồng thời, đây cũng là dịp để các viện kiểm sát quân sự trong toàn quân gặp gỡ, giao lưu, học hỏi, tiếp tục xây dựng mối quan hệ đoàn kết, gắn bó ngành kiểm sát quân sự và các cơ quan, đơn vị của ĐĂNG NHẬP 99OK COM TẶNG 99K.
Đại biểu dự khai mạc hội nghị tập huấn.
Hội nghị tập huấn diễn ra từ ngày 13/4 đến 15/4, các đại biểu được nghiên cứu các chuyên đề: Một số kinh nghiệm trực tiếp kiểm sát việc giải quyết nguồn tin về tội phạm và rà soát, giải quyết các vụ việc, vụ án tạm đình chỉ; rút kinh nghiệm một số vụ án có vi phạm nghiêm trọng bị cấp phúc thẩm và giám đốc thẩm hủy án để điều tra, xét xử lại; phương pháp truy vết dòng tiền mã hóa trong các vụ án xâm phạm sở hữu, phương thức thủ đoạn phi truyền thống; thực trạng tình hình vi phạm, tội phạm xâm phạm hoạt động tư pháp, tham nhũng, chức vụ xảy ra trong hoạt động tư pháp; thực trạng chuyển đổi số tại Viện kiểm sát quân sự các cấp và mục tiêu, phương hướng, nhiệm vụ trong thời gian tới; nội dung mới của Luật Thi hành án hình sự và Luật Thi hành án tạm giữ, tạm giam, cấm đi khỏi nơi cư trú; thực trạng và giải pháp về nhận diện vi phạm từ các vụ án bị Tòa án cấp sơ thẩm trả hồ sơ để điều tra bổ sung của Viện kiểm sát Quân sự...
Thạch Hà

Bình luận

Bài viết tương tự:

Cục Điều tra hình sự Bộ Quốc phòng trao Quyết định đặc xá cho phạm nhân Trại giam T45

Cục Điều tra hình sự 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao trao Quyết định đặc xá cho phạm nhân Trại giam T45

22:43 01/06/2026

(QK7 Online) - Sáng 01/6, tại tỉnh Tây Ninh, Cục Điều tra hình sự 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao tổ chức công bố và trao Quyết định đặc xá năm 2026 của Chủ tịch nước cho phạm nhân đang chấp hành án phạt tù tại Trại giam quân sự khu vực miền Nam (T45). Đại tá Lê Mạnh Trường, Phó Cục trưởng Cục Điều tra hình sự, Phó Thủ trưởng Cơ quan Quản lý Thi hành án hình sự 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao dự và chủ trì buổi lễ.

Trại tạm giam K35 công bố quyết định đặc xá của Chủ tịch nước năm 2026

Trại tạm giam K35 công bố quyết định đặc xá của Chủ tịch nước năm 2026

10:46 01/06/2026

(QK7 Online) – Sáng ngày 1/6, Trại tạm giam K35, ĐĂNG NHẬP 99OK COM TẶNG 99K tổ chức công bố quyết định đặc xá của Chủ tịch nước Cộng hòa xã hội chủ nghĩa Việt Nam năm 2026. Đây là chính sách khoan hồng của Đảng, Nhà nước do Chủ tịch nước quyết định tha tù trước thời hạn đối với người bị kết án phạt tù có thời hạn, nhân các sự kiện trọng đại, ngày lễ lớn của đất nước.

Kho K60 sinh hoạt Ngày Pháp luật tháng 5 năm 2026

Kho K60 sinh hoạt Ngày 99OK com đăng nhập tháng 5 năm 2026

19:08 27/05/2026

(QK7 Online) – Ngày 27/5, Kho K60, Cục Hậu cần – Kỹ thuật Quân khu sinh hoạt Ngày 99OK com đăng nhập tháng 5 năm 2026 với chủ đề “Nâng cao ý thức thượng tôn Hiến pháp và pháp luật, nghiêm chỉnh chấp hành pháp luật Nhà nước, kỷ luật Quân đội”. Dự sinh hoạt có Thượng tá Lê Long Khương, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Cục Hậu cần – Kỹ thuật Quân khu.

Dự kiến tăng các mức trợ cấp hằng tháng đối với quân nhân đã phục viên, xuất ngũ, thôi việc từ tháng 7-2026

Dự kiến tăng các mức trợ cấp hằng tháng đối với quân nhân đã phục viên, xuất ngũ, thôi việc từ tháng 7-2026

14:30 25/05/2026

(QK7 Online) - Cục Chính sách - 1123Win còn đăng nhập, Tổng cục 99Oke123 Tải ứng dụng tổ chức lấy ý kiến hoàn thiện Dự thảo Thông tư của Bộ trưởng 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao quy định điều chỉnh trợ cấp hằng tháng đối với quân nhân, người làm công tác cơ yếu hưởng lương như đối với quân nhân đã phục viên, xuất ngũ, thôi việc.

Chính sách về phụ cấp tăng thêm đối với đối tượng trọng dụng nhân tài trong Quân đội nhân dân Việt Nam

Chính sách về phụ cấp tăng thêm đối với đối tượng trọng dụng nhân tài trong Quân đội 123Win com 79 nạp - rút nhanh Việt Nam

23:32 23/05/2026

(QK7 Online) - Theo quy định tại Điều 11, Nghị định số 363/2025/NĐ-CP của Chính phủ quy định chính sách thu hút, trọng dụng nhân tài đối với Quân đội 123Win com 79 nạp - rút nhanh Việt Nam như sau: 1. Học viên tốt nghiệp đào tạo tại các trường Quân đội, trường ngoài Quân đội và ở nước ngoài tốt nghiệp hạng xuất sắc được phong quân hàm sĩ quan hoặc xếp lương và phong quân hàm quân nhân chuyên nghiệp, hằng tháng được hưởng phụ cấp tăng thêm tối đa bằng 250% mức lương hiện hưởng (bao gồm: Mức lương theo cấp bậc quân hàm, chức vụ, chức danh, ngạch, bậc và các khoản phụ cấp lương theo quy định của pháp luật) trong thời hạn 5 năm kể từ ngày có quyết định của Bộ trưởng 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao áp dụng chính sách trọng dụng nhân tài.

Bản án đắt giá về hành vi “Tổ chức sử dụng trái phép chất ma túy”

Bản án đắt giá về hành vi “Tổ chức sử dụng trái phép chất ma túy”

21:50 15/05/2026

(QK7 Online) - Sáng ngày 14/5, Tòa án quân sự Khu vực ĐĂNG NHẬP 99OK COM TẶNG 99K mở phiên tòa xét xử sơ thẩm vụ án hình sự đối với bị cáo Phạm Quỳnh C và đồng phạm bị Viện kiểm sát quân sự Khu vực 71 truy tố về các tội “Tổ chức sử dụng trái phép chất ma túy” và “Tàng trữ trái phép chất ma túy” theo điểm a, b khoản 2 Điều 255 Bộ luật Hình sự và điểm i, c khoản 1 Điều 249 Bộ luật Hình sự.

TIN XEM NHIỀU:

TIN MỚI:

DƯ LUẬN QUAN TÂM:

99OK - Nhà Cái Thể Thao, Nổ Hũ, Bắn Cá Uy Tín

Theo dõi chúng tôi tại:

Cơ quan chủ quản: ĐĂNG NHẬP 99OK COM TẶNG 99K

Giấy phép số 45-YU ngày 28/07/2021

© Báo ĐĂNG NHẬP 99OK COM TẶNG 99K điện tử giữ bản quyền nội dung trên website này.

Tòa soạn: 81A Hai Bà Trưng, Quận 1, TP. Hồ Chí Minh

Phụ trách Tổng Biên tập: Thượng tá Lại Thế Hiền

Email: [email protected] | [email protected] | 1

'); printWindow.document.write(''); printWindow.document.write(''); printWindow.document.write('

【99OK】 Link vào 99OK Casino mới nhất 2025 ✔️

Link 99OK hot nhất

'); // Add logo at the top printWindow.document.write(''); printWindow.document.write('

' + title + '

'); if (dateTime) { printWindow.document.write('
' + dateTime + '
'); } printWindow.document.write('
'); printWindow.document.write(content.html()); printWindow.document.write('
'); printWindow.document.write(''); printWindow.document.write(''); printWindow.document.close(); $('#printLoadingMsg').remove(); // Wait for content and images to load then print printWindow.onload = function() { // Additional check to ensure logo is loaded const logoImg = printWindow.document.querySelector('.print-logo img'); if (logoImg) { logoImg.onload = function() { setTimeout(function() { printWindow.print(); printWindow.close(); }, 300); }; // If logo already loaded (cached) if (logoImg.complete) { setTimeout(function() { printWindow.print(); printWindow.close(); }, 300); } } else { setTimeout(function() { printWindow.print(); printWindow.close(); }, 500); } }; } if (totalImages > 0) { lazyImages.forEach(function(img) { const actualSrc = img.dataset.src || img.getAttribute('data-src'); if (actualSrc && actualSrc !== img.src) { const tempImg = new Image(); tempImg.onload = tempImg.onerror = function() { img.src = actualSrc; img.classList.remove('lazy'); loadedCount++; if (loadedCount === totalImages) { proceedWithPrint(); } }; tempImg.src = actualSrc; } else { loadedCount++; if (loadedCount === totalImages) { proceedWithPrint(); } } }); } else { proceedWithPrint(); } } document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.image-caption').forEach(el => { if (el.textContent.trim() === 'Nhập chú thích cho ảnh...') { el.style.display = 'none'; } }); }); $(document).ready(function () { // Stop any ongoing speech when page loads and reset TTS state if (window.speechSynthesis) { window.speechSynthesis.cancel(); } // Dictionary để chuyển đổi từ viết tắt const abbreviationDict = { 'LLVT': 'lực lượng vũ trang', 'CHQS': 'chỉ huy quân sự', 'HĐND': 'hội đồng 123Win com 79 nạp - rút nhanh', 'CHXHCN': 'Cộng hòa xã hội chủ nghĩa', 'VKTBKT': 'vũ khí trang bị kỹ thuật', 'UBND': 'ủy ban 123Win com 79 nạp - rút nhanh', 'MTTQ': 'mặt trận tổ quốc', 'ĐCSVN': 'Đảng Cộng sản Việt Nam', 'TNXP': 'thanh niên xung phong', 'BĐBP': 'bộ đội biên phòng', 'CAND': 'công an 123Win com 79 nạp - rút nhanh', 'QĐND': 'quân đội 123Win com 79 nạp - rút nhanh', 'TPHCM': 'Thành phố Hồ Chí Minh', 'TP.HCM': 'Thành phố Hồ Chí Minh', 'HN': 'Hà Nội', 'DN': 'Đà Nẵng', 'ĐBQH': 'đại biểu quốc hội', 'QH': 'quốc hội', 'CP': 'chính phủ', 'TW': 'trung ương', 'BCH': 'ban chấp hành', 'BTV': 'ban thường vụ', 'UV': 'ủy viên', 'PBT': 'phó bí thư', 'BT': 'bí thư', 'CT': 'chủ tịch', 'PCT': 'phó chủ tịch', 'TTg': 'thủ tướng', 'PTTg': 'phó thủ tướng', 'CNQ': 'cộng hòa 123Win com 79 nạp - rút nhanh', 'CHDC': 'cộng hòa dân chủ' }; // Hàm xử lý từ viết tắt function processAbbreviations(text) { let processedText = text; // Duyệt qua tất cả các từ viết tắt trong dictionary for (const [abbr, fullForm] of Object.entries(abbreviationDict)) { // Tạo regex để tìm từ viết tắt (case insensitive) // \b đảm bảo match whole word, không match partial const regex = new RegExp(`\\b${abbr}\\b`, 'gi'); processedText = processedText.replace(regex, fullForm); } return processedText; } // Reset TTS control buttons to initial state $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); $('#speedControls').removeClass('flex').addClass('hidden'); // Initialize Fancybox for article images $('.article-content img').each(function() { const $img = $(this); // const src = $img.attr('src').replace("/thumb/","/"); const src = $img.attr('src'); const alt = $img.attr('alt') || ''; // Wrap image with fancybox link $img.wrap(``); $img.addClass('cursor-pointer transition-transform hover:scale-105'); }); // Configure Fancybox $('[data-fancybox="gallery"]').fancybox({ buttons: [ "zoom", "slideShow", "thumbs", "close" ], loop: true, protect: true }); // Handle comment submission $("#comment-btn").click(function () { const userName = $('#UserName').val().trim(); const contentComment = $('#ContentComment').val().trim(); const userEmail = $('#UserEmail').val().trim(); // Hide any existing notifications $('#successNotification, #errorNotification').addClass('hidden'); if (userName === "" || contentComment === "") { $('#errorNotification').removeClass('hidden'); return; } // Validate email format if provided if (userEmail !== "" && !isValidEmail(userEmail)) { $('#errorNotification span').text('Email không hợp lệ!'); $('#errorNotification').removeClass('hidden'); return; } $.ajax({ url: "/ExtAppCommon/Home/Comment", type: "POST", dataType: "json", data: { id: 58347, name: userName, content: contentComment, email: userEmail }, success: function (result) { if (result > 0) { // Clear form $('#UserName').val(""); $('#ContentComment').val(""); $('#UserEmail').val(""); // Show success message $('#successNotification').removeClass('hidden'); // Hide success message after 3 seconds setTimeout(function() { $('#successNotification').addClass('hidden'); }, 3000); // Add new comment to the list const newComment = `
Avatar
${userName}
Vừa xong

${contentComment}

`; $('#commentsList').prepend(newComment); } else { $('#errorNotification span').text('Có lỗi xảy ra, vui lòng thử lại sau!'); $('#errorNotification').removeClass('hidden'); } }, error: function() { $('#errorNotification span').text('Có lỗi xảy ra, vui lòng thử lại sau!'); $('#errorNotification').removeClass('hidden'); } }); }); // Handle Enter key in textarea $('#ContentComment').keypress(function(e) { if (e.which === 13 && !e.shiftKey) { e.preventDefault(); $("#comment-btn").click(); } }); // Email validation function function isValidEmail(email) { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); } // Text-to-speech functionality const synth = window.speechSynthesis; let currentUtterance = null; let currentSpeed = 1; // Speed control functions function updateSpeedDisplay() { $('#speedDisplay').text(currentSpeed + 'x'); } $('#increaseSpeed').click(function() { if (currentSpeed < 2) { currentSpeed += 0.25; updateSpeedDisplay(); if (currentUtterance) { // Restart speech with new speed const text = currentUtterance.text; synth.cancel(); speak(text, currentSpeed); } } }); $('#decreaseSpeed').click(function() { if (currentSpeed > 0.5) { currentSpeed -= 0.25; updateSpeedDisplay(); if (currentUtterance) { // Restart speech with new speed const text = currentUtterance.text; synth.cancel(); speak(text, currentSpeed); } } }); // Function to get clean text content without button text function getCleanContent() { // Clone the content div to avoid modifying the original const contentClone = $('.article-content').clone(); // Remove all buttons and their container contentClone.find('button').parent('div').remove(); // Remove image captions (text in tags that are typically captions) contentClone.find('em').remove(); // Get clean text let cleanText = contentClone.text().trim(); // Remove "(QK7 Online)" and variations cleanText = cleanText.replace(/\(QK7\s*Online\)\s*[-–]?\s*/gi, ''); // Remove other common patterns that shouldn't be read cleanText = cleanText.replace(/\s+/g, ' '); // Replace multiple spaces with single space // Xử lý từ viết tắt cleanText = processAbbreviations(cleanText); return cleanText; } function getVietnameseVoice() { let voices = synth.getVoices(); // Filter for Vietnamese voices let vietnameseVoices = voices.filter(voice => voice.lang.includes('vi') || voice.name.toLowerCase().includes('vietnamese') || voice.name.toLowerCase().includes('việt') ); // If Vietnamese voices found, prefer Microsoft/Google voices if (vietnameseVoices.length > 0) { // Try to find Microsoft Vietnamese voice first let msVoice = vietnameseVoices.find(v => v.name.toLowerCase().includes('microsoft') && v.name.toLowerCase().includes('vietnamese') ); if (msVoice) return msVoice; // Then try Google Vietnamese voice let googleVoice = vietnameseVoices.find(v => v.name.toLowerCase().includes('google') && v.name.toLowerCase().includes('vietnamese') ); if (googleVoice) return googleVoice; // If no Microsoft/Google voice, use the first Vietnamese voice return vietnameseVoices[0]; } // If no Vietnamese voice found, return null return null; } function speak(text, rate = 1) { // Stop any ongoing speech if (synth.speaking) { synth.cancel(); } const utterance = new SpeechSynthesisUtterance(text); utterance.lang = 'vi-VN'; utterance.rate = rate; // Wait for voices to be loaded and try to set Vietnamese voice const setVoiceAndSpeak = () => { const vietnameseVoice = getVietnameseVoice(); if (vietnameseVoice) { utterance.voice = vietnameseVoice; currentUtterance = utterance; // Show/hide control buttons $('#pauseBtn, #stopBtn').removeClass('hidden'); $('#resumeBtn').addClass('hidden'); // Show speed controls $('#speedControls').removeClass('hidden').addClass('flex'); utterance.onend = function() { currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); // Hide speed controls $('#speedControls').removeClass('flex').addClass('hidden'); }; synth.speak(utterance); } else { // If no Vietnamese voice available, show an error message alert('Không tìm thấy giọng đọc tiếng Việt trên thiết bị của bạn. Vui lòng cài đặt thêm giọng đọc tiếng Việt trong cài đặt hệ thống.'); } }; if (synth.getVoices().length === 0) { synth.addEventListener('voiceschanged', setVoiceAndSpeak, { once: true }); } else { setVoiceAndSpeak(); } } $('#readArticleBtn').click(function() { const title = $('h1.st37').clone() // Clone to avoid getting button text .children() // Get all child elements .remove() // Remove them .end() // Go back to h1 .text() // Get text content .trim(); // Remove whitespace const content = getCleanContent(); speak(title + ". " + content, currentSpeed); }); $('#pauseBtn').click(function() { if (synth.speaking) { synth.pause(); $(this).addClass('hidden'); $('#resumeBtn').removeClass('hidden'); } }); $('#resumeBtn').click(function() { if (synth.paused) { synth.resume(); $(this).addClass('hidden'); $('#pauseBtn').removeClass('hidden'); } }); $('#stopBtn').click(function() { if (synth.speaking) { synth.cancel(); currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); // Hide speed controls $('#speedControls').removeClass('flex').addClass('hidden'); } }); // Stop speech when user navigates away from page $(window).on('beforeunload', function() { if (window.speechSynthesis && window.speechSynthesis.speaking) { window.speechSynthesis.cancel(); } }); // Stop speech when page visibility changes (user switches tabs) /* $(document).on('visibilitychange', function() { if (document.hidden && window.speechSynthesis && window.speechSynthesis.speaking) { window.speechSynthesis.cancel(); currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); $('#speedControls').removeClass('flex').addClass('hidden'); } });*/ }); document.addEventListener("DOMContentLoaded", function () { var articleContainer = document.querySelector('.article-content.max-w-none.mb-4'); if (!articleContainer) { articleContainer = document.querySelector('[class*="article-content"][class*="max-w-none"][class*="mb-4"]'); } if (!articleContainer) { return; } var fallbackHost = "https://99oke123.com"; var lazyImages = []; // ✅ Hàm update Fancybox href khi ảnh load xong function updateFancyboxHref(img) { const $img = $(img); const $fancyboxLink = $img.parent('a[data-fancybox]'); if ($fancyboxLink.length > 0) { // Cập nhật href với src thực tế const realSrc = img.dataset.src || img.src; if (!realSrc.includes('loading_new.gif') && !realSrc.includes('data:image/svg+xml')) { $fancyboxLink.attr('href', realSrc); } } } function processImagesInContainer() { // Lấy ảnh đã có class lazy var existingLazyImages = [].slice.call(articleContainer.querySelectorAll("img.lazy")); lazyImages = lazyImages.concat(existingLazyImages); // Tự động convert ảnh khác var regularImages = [].slice.call(articleContainer.querySelectorAll("img:not(.lazy):not([data-lazy-processed])")); regularImages.forEach(function(img) { var rect = img.getBoundingClientRect(); var isInViewport = rect.top < (window.innerHeight + 100) && rect.bottom > -100; if (!isInViewport && img.src && (img.src.startsWith('http') || img.src.startsWith('/'))) { // ✅ Lưu src gốc trước khi thay đổi const originalSrc = img.src; // Convert thành lazy img.dataset.src = originalSrc; img.classList.add('lazy'); img.dataset.lazyProcessed = 'true'; // ✅ Cập nhật Fancybox href nếu đã được wrap const $img = $(img); const $fancyboxLink = $img.parent('a[data-fancybox]'); if ($fancyboxLink.length > 0) { $fancyboxLink.attr('href', originalSrc); } // Placeholder img.src = `/BaoQK7/images/loading_new.gif`; lazyImages.push(img); } else { img.dataset.lazyProcessed = 'true'; } }); } processImagesInContainer(); // ✅ IntersectionObserver với callback cập nhật Fancybox if ("IntersectionObserver" in window && lazyImages.length > 0) { let lazyImageObserver = new IntersectionObserver(function (entries, observer) { entries.forEach(function (entry) { if (entry.isIntersecting) { let lazyImage = entry.target; lazyImage.loading = "lazy"; lazyImage.decoding = "async"; lazyImage.onerror = function () { if (!lazyImage.dataset.fallbackTried) { lazyImage.dataset.fallbackTried = "true"; let originalSrc = lazyImage.dataset.src || ""; lazyImage.src = originalSrc.replace("https://99oke123.com", fallbackHost); } else { lazyImage.classList.add("error"); } }; lazyImage.onload = function () { lazyImage.classList.add("loaded"); lazyImage.classList.remove("lazy"); // ✅ Cập nhật Fancybox href sau khi ảnh load xong updateFancyboxHref(lazyImage); }; if (lazyImage.dataset.src) { lazyImage.src = lazyImage.dataset.src; } if (lazyImage.dataset.srcset) { lazyImage.srcset = lazyImage.dataset.srcset; } if (lazyImage.complete && lazyImage.naturalWidth > 0) { lazyImage.onload(); } lazyImageObserver.unobserve(lazyImage); } }); }, { root: null, rootMargin: '50px 0px', threshold: 0.01 }); lazyImages.forEach(function (lazyImage) { lazyImageObserver.observe(lazyImage); }); } });