<!DOCTYPE html>
<html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
<head>
<title>Ra mắt công ty mã nguồn mở đầu tiên tại Việt Nam</title>
<meta name="description" content="Ra mắt công ty mã nguồn mở đầu tiên tại Việt Nam - Savefile - Tin Tức -...">
<meta name="author" content="Horus">
<meta name="copyright" content="Horus [erp.xiris@gmail.com]">
<meta name="robots" content="noindex, follow">
<meta name="googlebot" content="noindex, follow">
<meta name="msnbot" content="noindex, follow">
<meta name="coccocbot" content="noindex, follow">
<meta name="generator" content="NukeViet v4.6">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Ra mắt công ty mã nguồn mở đầu tiên tại Việt Nam">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;aiwater2.xiris.vn&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;Tin-tuc&#x002F;Ra-mat-cong-ty-ma-nguon-mo-dau-tien-tai-Viet-Nam-1.html">
<meta property="og:site_name" content="Horus">
<meta property="og:url" content="https://aiwater2.xiris.vn/vi/news/savefile/Tin-tuc/Ra-mat-cong-ty-ma-nguon-mo-dau-tien-tai-Viet-Nam-1.html">
<link rel="shortcut icon" href="https://aiwater2.xiris.vn/uploads/chatgpt-image-08_31_42-20-thg-9-2025.webp">
<link rel="canonical" href="https://aiwater2.xiris.vn/vi/news/savefile/Tin-tuc/Ra-mat-cong-ty-ma-nguon-mo-dau-tien-tai-Viet-Nam-1.html">
<link rel="alternate" href="https://aiwater2.xiris.vn/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://aiwater2.xiris.vn/vi/news/rss/Tin-tuc/" title="Tin Tức - Tin tức" type="application/rss+xml">
<link rel="alternate" href="https://aiwater2.xiris.vn/vi/news/rss/thong-cao-bao-chi/" title="Tin Tức - Thông cáo báo chí" type="application/rss+xml">
<link rel="alternate" href="https://aiwater2.xiris.vn/vi/news/rss/Ban-tin-noi-bo/" title="Tin Tức - Bản tin nội bộ" type="application/rss+xml">
<link rel="alternate" href="https://aiwater2.xiris.vn/vi/news/rss/Tin-cong-nghe/" title="Tin Tức - Tin công nghệ" type="application/rss+xml">
<link rel="alternate" href="https://aiwater2.xiris.vn/vi/news/rss/San-pham/" title="Tin Tức - Sản phẩm" type="application/rss+xml">
<link rel="alternate" href="https://aiwater2.xiris.vn/vi/news/rss/Doi-tac/" title="Tin Tức - Đối tác" type="application/rss+xml">
<link rel="alternate" href="https://aiwater2.xiris.vn/vi/news/rss/Tuyen-dung/" title="Tin Tức - Tuyển dụng" type="application/rss+xml">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/fonts/font6/css/all.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/additional_css/datetimepicker/css/bootstrap-material-datetimepicker.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/additional_css/datetimepicker/css/font_icon.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/bootstrap.min.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/style.responsive.css?v=20260828bi" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/custom.css?v=20260907-dsbt-old-period" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/assets/js/jquery-ui/jquery-ui.min.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/assets/js/select2/select2.min.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/yearpicker.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/tree.chart.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/jquery-confirm.min.css" type="text/css">
<link rel="preload" as="style" href="https://unpkg.com/tributejs@5.1.3/dist/tribute.css" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/xiris_font.css?v=v3c9587a4" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/xiris_dark.css?v=v20260828bg" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/xiris_form.css?v=v106breadcrumbpad" type="text/css">
<link rel="preload" as="style" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/xiris_typography.css?v=v20260911so" type="text/css">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/main.js?v=1789094780" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/additional_js/moment/moment.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/additional_js/moment/js/moment-with-locales.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/additional_js/moment/locale/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/additional_css/datetimepicker/js/bootstrap-material-datetimepicker.js" type="text/javascript">
<link rel="preload" as="script" href="/themes/theme_xiris/js/fullcalender.min.js?t=1792029555" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/assets/js/jquery-ui/jquery-ui.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/assets/js/language/jquery.ui.datepicker-vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/assets/js/select2/select2.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/yearpicker.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/tree.chart.js" type="text/javascript">
<link rel="preload" as="script" href="/themes/theme_xiris/js/jquery-confirm.min.js?t=1792029555" type="text/javascript">
<link rel="preload" as="script" href="https://unpkg.com/tributejs@5.1.3/dist/tribute.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v18.0&appId=363469809004152&autoLogAppEvents=1" type="text/javascript" crossorigin="anonymous">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/webpush/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_font_weight.js?v=v1dd27a73" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_loading.js?v=v5loadingorbit" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_bang_the.js?v=v12cotgop" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_loc.js?v=v5" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_len_xuong.js?v=v2" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_tabs.js?v=v1" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_datepicker.js?v=v1" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_select2.js?v=v4" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_copy.js?v=v2" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_quaylai.js?v=v11cuatuchoi" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_xemtep.js?v=v12gophopcu" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_ten_in.js?v=v2uutien" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_chup_anh.js?v=v4" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_excel_lh.js?v=v1" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn/themes/theme_xiris/js/bootstrap.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://aiwater2.xiris.vn//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit" type="text/javascript">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/fonts/font6/css/all.css">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/additional_css/datetimepicker/css/bootstrap-material-datetimepicker.css">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/additional_css/datetimepicker/css/font_icon.css">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/bootstrap.min.css">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/style.css">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/style.responsive.css?v=20260828bi">
<link rel="StyleSheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/news.css">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/custom.css?v=20260907-dsbt-old-period">
<link type="text/css" href="https://aiwater2.xiris.vn/assets/js/jquery-ui/jquery-ui.min.css" rel="stylesheet" />
<link href="https://aiwater2.xiris.vn/assets/js/select2/select2.min.css" type="text/css" rel="stylesheet" />
<link type="text/css" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/yearpicker.css" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/tree.chart.css">
<link type="text/css" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/jquery-confirm.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://unpkg.com/tributejs@5.1.3/dist/tribute.css" />
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/xiris_font.css?v=v3c9587a4">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/xiris_dark.css?v=v20260828bg">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/xiris_form.css?v=v106breadcrumbpad">
<link rel="stylesheet" href="https://aiwater2.xiris.vn/themes/theme_xiris/css/xiris_typography.css?v=v20260911so">
<style>
    .load{
        display: block !important;
    }
    .no_load{
        display: none !important;
    }
    .four {
        width: 10px;
        height: 10px;
        background-color: #fff;
        border-radius: 50%;
        animation: loader4Animation 1s linear infinite;
        position: absolute;
        right: -25px;
        top: 5px;
    }
    @keyframes loader4Animation {
        0% {
          background-color: rgba(0,0,128, 1);
          box-shadow: 15px 0px 0px 0px rgba(0,0,128, 0.67),
          30px 0px 0px 0px rgba(0,0,128, 0.33);
      }
      17% {
          background-color: rgba(0,0,128, 0.67);
          box-shadow: 15px 0px 0px 0px rgba(0,0,128, 1),
          30px 0px 0px 0px rgba(0,0,128, 0.67);
      }
      33% {
          background-color: rgba(0,0,128, 0.33);
          box-shadow: 15px 0px 0px 0px rgba(0,0,128, 0.67),
          30px 0px 0px 0px rgba(0,0,128, 1);
      }
      50% {
          background-color: rgba(0,0,128, 0);
          box-shadow: 15px 0px 0px 0px rgba(0,0,128, 0.33),
          30px 0px 0px 0px rgba(0,0,128, 0.67);
      }
      67% {
          background-color: rgba(0,0,128, 0.33);
          box-shadow: 15px 0px 0px 0px rgba(0,0,128, 0),
          30px 0px 0px 0px rgba(0,0,128, 0.33);
      }
      83% {
          background-color: rgba(0,0,128, 0.67);
          box-shadow: 15px 0px 0px 0px rgba(0,0,128, 0.33),
          30px 0px 0px 0px rgba(0,0,128, 0);
      }
      100% {
          background-color: rgba(0,0,128, 1);
          box-shadow: 15px 0px 0px 0px rgba(0,0,128, 0.67),
          30px 0px 0px 0px rgba(0,0,128, 0.33);
      }
  }
  .load{
    position: fixed;
    height: 100vh;
    width: 100vw;
    top: 0px;
    left: 0px;
    z-index: 10000000;
    background: rgba(0, 0, 0, 0.3);
    text-align: center;
}
.load_box{
    height: 100px;
    width: 100px;
    position: absolute;
    top: 45%;
    display: inline-block;
    padding: 30px;
}
.load_box i{
    font-size: 40px;
    color: #fff;
    z-index: 100000000;
}
.load_box span{

}

.no_load{
    display: none;
}
:root {
  --primary-color: #fff;
  --background-color: #017e84;
  --background-color-hover: #036267;
}
</style>
<style id="xiris-critical-first-paint">
  /* Hide first-paint-only content before its JavaScript relocation/styling finishes. */
  #xirisPdfHeader { display: none !important; }
  .dropdown_chuong_thong_bao { display: none !important; }
  #xiris-hdr-right .dropdown_chuong_thong_bao { display: block !important; }
</style>
<style type="text/css">
    /* Dáng chung cho mọi nút chép link — khai một chỗ để năm màn không mỗi nơi một kiểu. */
    .xiris-copy{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
      padding:0;flex:0 0 auto;border:1px solid rgba(127,145,164,.35);border-radius:6px;
      background:transparent;color:#7f91a4;font-size:11.5px;line-height:1;cursor:pointer;
      transition:color .15s ease,border-color .15s ease,background .15s ease}
    .xiris-copy:hover{color:#168ccb;border-color:#168ccb;background:rgba(22,140,203,.08)}
    .xiris-copy.xiris-copy-ok{color:#138a72;border-color:rgba(19,138,114,.5);background:rgba(19,138,114,.10)}
    .xiris-copy.xiris-copy-loi{color:#e5484d;border-color:rgba(229,72,77,.5);background:rgba(229,72,77,.10)}
  </style>
<style type="text/css">
	body{background: #fff;}
</style>
  <div id="fb-root"></div>
  <!-- ===== X-IRIS: che do SANG / TOI =====
       File phu, chi an khi <html data-xtheme="dark"> -> khong bat thi vo hai.
       Script dat O DAY, TRONG <head>, chay TRUOC khi <body> ton tai: gan thuoc tinh len
       <html> ngay luc nay thi trang ve ra da la mau toi. De xuong cuoi trang hay doi
       DOMContentLoaded la nguoi dung thay CHOP TRANG moi lan tai — choi mat va lo ngay. -->
  <!-- Bộ 3 font (Montserrat / Chakra Petch / Orbitron) — tự host. Nạp cho CẢ HAI chế độ
       sáng-tối nên phải đứng NGOÀI xiris_dark.css. -->
  <!-- Bảng màu DÙNG CHUNG cho các màn thêm mới/chỉnh sửa/xem chi tiết (Nhập/Xuất hàng,
       Phiếu vận hành, Ghi chỉ số, Thông số vận hành...) — xem xiris_form.css để biết
       LÝ DO từng giá trị. Đứng SAU xiris_dark.css vì đọc lại biến --x-* của nó (thứ tự
       không bắt buộc về mặt kỹ thuật — var() phân giải lúc dùng chứ không lúc nạp — nhưng
       để đây cho xuôi mắt khi đọc code). -->
  <!-- ⚠⚠ ĐỔI NỘI DUNG xiris_form.css THÌ PHẢI ĐỔI LUÔN CHỮ SAU ?v= Ở ĐÂY.
       18/09/2026: khối "BẢNG THÀNH THẺ" (mốc 820px) được thêm vào file mà vẫn để nguyên
       ?v=v26donvi. Máy chủ trả file mới, nhưng trình duyệt nào đã từng tải v26donvi thì cứ
       dùng bản cũ trong ổ đĩa — chủ dự án mở màn Danh sách sự cố ở bề ngang 768px vẫn thấy
       bảng cuộn ngang, cột "Thiết bị" bị bóp còn một chữ một dòng. Đo lại bằng chính file
       trên host với bảng y hệt thì ra thẻ đúng như thiết kế ⇒ lỗi nằm ở bản cache, không
       phải ở CSS. Đổi chữ này là buộc mọi máy tải lại. -->
  <!-- Typography chung: chu Chakra Petch, tung chu so 0-9 Orbitron. -->
  <!-- Chi ha nhung chu dang vuot 600; giu nguyen cac muc 400/500/600 va font icon. -->
  <!-- Loading DÙNG CHUNG toàn site (xfShowPageLoading/xfHidePageLoading) — xem
       js/xiris_loading.js. Test đầu tiên ở Tổng quan xử lý nước thải, user chốt ổn (25/08). -->
<!-- Bang thanh THE tren dien thoai: gan class "xf-the" cho <table> la du.
     Kieu dang o css/xiris_form.css, muc "BANG THANH THE". -->
  <!-- 11/09/2026: đổi MỌI <input type="date"> sang jQuery UI datepicker dd/mm/yyyy (chuẩn của
       site). Đặt SAU jquery-ui ở trên vì tệp này cần $.fn.datepicker; nó tự chờ nếu chưa có.
       Nạp site-wide nên màn cũ đổi hết mà màn mới cứ viết input type="date" bình thường. -->
  <!-- 11/09/2026 (user: "tất cả những chỗ dùng select đều thay bằng select2 luôn"): tự bọc MỌI
       <select> chưa được màn nào tự bọc. Đặt SAU select2.min.js ở trên vì cần $.fn.select2 (tệp
       tự chờ nếu chưa có). Ô nào muốn chừa thì thêm data-no-select2 vào thẻ select. -->
  <!-- 18/09: nút SAO CHÉP LINK dùng chung (chủ dự án: "chỗ nào có danh sách sự cố thì thêm cái
       icon sao chép cho dễ copy"). Màn nào cần chỉ việc đặt data-copy-link="<url>" lên một cái
       <button>, không phải chép logic clipboard vào từng .tpl. -->
  <!-- 22/09: nút QUAY LẠI dùng chung (chủ dự án: "trang chi tiết hay trang thêm đều thêm
       một nút Quay lại nằm bên phải của trang, style như này, chế độ sáng, chế độ tối").
       Tệp này gom kiểu cho mọi nút quay lại sẵn có VÀ tự chèn nút cho màn chưa có.
       Kiểu dáng khai ở css/xiris_form.css, mục "NÚT QUAY LẠI DÙNG CHUNG".
       ⚠ Danh sách màn được chèn nằm ở hằng DS_OP trong chính tệp JS — thêm màn thì sửa ở đó. -->
  <!-- 25/09: TRINH XEM TAI LIEU dung chung (chu du an: "minh can xem tai lieu, anh ne tren
       phan mem luon, dang nhu khi bam no mo modal xong minh xem duoc tren do cac tai lieu luon"
       — va khong gui tep ra thu vien Office truc tuyen, "lam vay bi lo tai lieu").
       Bat MOI the <a> co &tep= trong href (dau nhan biet do cong tep o tang 1 de lai) nen khong
       man nao phai sua .tpl. Anh xem tai cho, PDF vao khung, tep khong ve duoc thi hien nut
       Tai ve. Kieu dang o css/xiris_form.css, muc "TRINH XEM TAI LIEU DUNG CHUNG".
       ⚠ Man nao DA co hop xem rieng thi tep JS tu chua ra — danh sach o hang CHUA trong do. -->
  <!-- 25/09: TÊN TỆP SẴN cho bản in / xuất PDF (chủ dự án: "xuất PDF sao không có tên
       file sẵn như Excel"). Nút Excel tự đặt tên, còn window.print() thì trình duyệt lấy
       document.title làm tên gợi ý — tệp này đổi tiêu đề thành tên phiếu ngay trước khi in
       rồi trả lại. Không đụng nút, không đụng màn nào. -->
  <!-- 12/09: hộp "Chụp ảnh" bằng webcam dùng chung — màn nào có ô <input type=file> ảnh thì
       gọi xirisChupAnh(oTep, {ten:…}). Bản gốc nằm trong thong_so_van_hanh_add.tpl, tách ra
       đây để Bảo trì (và sau này Nhập/Xuất hàng, Đồng hồ) khỏi chép lại ~150 dòng. -->
</head>
<body id="body">

  <!-- 11/09/2026 (user): letterhead GreenWorld cho MỌI bản in PDF (window.print) của site.
       Nội dung do modules/duan/functions.php -> duan_hdr_html() dựng theo CẤU HÌNH của dự án
       (màn op=cau_hinh_header_in), theme.php gán vào biến này. Đặt ngay đầu <body> nên áp cho
       tất cả màn mà không phải sửa từng .tpl. Bình thường ẩn, chỉ hiện khi in — CSS ở
       xiris_form.css (#xirisPdfHeader). -->
  <!-- 12/10/2026: đọc qua thẻ JSON. Viết trần "window.XIRIS_LH =  || null" thì ở module ngoài duan
       (duan_hdr_json không có) biến rỗng thành "= || null" — SyntaxError trên màn Nhân viên và các màn khác. -->
  </div>

  <div id="form_in_danh_sach"></div>
  <div id="box_xem_danh_gia" class="hidden">
    <div id="box_content_danh_gia">

    </div>
  </div>
  <div class="notification" id="notification">
    <span class="message">

    </span>
    <span class="close-btn" onclick="closeNotification()">&times;</span>
  </div>
  <div class="modal fade" id="modal_doi_pass" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
    <div class="modal-dialog">

      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title text-center" id="title_modal_doi_pass">
            Vui lòng đổi mật khẩu để đảm bảo tính bảo mật
          </h4>
        </div>
        <div class="modal-body">
          <p>
            <div class="alert alert-danger">
              Mật khẩu phải có ít nhất 8 ký tự, bao gồm chữ, chữ IN HOA, số và ký tự đặc biệt!
            </div>
          </p>
          <p>
            <input type="password" id="mat_khau_1" class="form-control" name="" placeholder="Nhập mật khẩu mới">
          </p>
          <p>
            <input type="password" id="mat_khau_2" class="form-control" name="" placeholder="Nhập lại mật khẩu mới">
          </p>
          <p class="text-center">
            <button class="btn btn-primary" type="button" onclick="doi_mat_khau()">Đổi mật khẩu</button>
          </p>

        </div>
      </div>

    </div>
  </div>
  <button id="hiddenPushBtn" style="display:none"></button>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">Horus</h2>
		<p class="pull-right"><a title="Horus" href="https://aiwater2.xiris.vn/">https://aiwater2.xiris.vn</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Ra mắt công ty mã nguồn mở đầu tiên tại Việt Nam</h1>
		<ul class="list-inline">
			<li>Thứ năm - 27/05/2010 15:39</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
			Mã nguồn mở NukeViet vốn đã quá quen thuộc với cộng đồng CNTT Việt Nam trong mấy năm qua. Tuy chưa hoạt động chính thức, nhưng chỉ trong khoảng 5 năm gần đây, mã nguồn mở NukeViet đã được dùng phổ biến ở Việt Nam, áp dụng ở hầu hết các lĩnh vực, từ tin tức đến thương mại điện tử, từ các website cá nhân cho tới những hệ thống website doanh nghiệp.
		</div>
				<div class="imghome">
			<img alt="Thành lập VINADES.,JSC" src="https://aiwater2.xiris.vn/uploads/news/nangly.jpg" width="460" class="img-thumbnail" />
						<p>
				<em>Thành lập VINADES.,JSC</em>
			</p>
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<p>Để chuyên nghiệp hóa việc phát hành mã nguồn mở NukeViet, Ban quản trị NukeViet quyết định thành lập doanh nghiệp chuyên quản NukeViet mang tên Công ty cổ phần Phát triển nguồn mở Việt Nam (Viết tắt là VINADES.,JSC), chính thức ra mắt vào ngày 25-2-2010 (trụ sở tại Hà Nội) nhằm phát triển, phổ biến hệ thống NukeViet tại Việt Nam.<br /> <br /> Theo ông Nguyễn Anh Tú, Chủ tịch HĐQT VINADES, công ty sẽ phát triển bộ mã nguồn NukeViet nhất quán theo con đường mã nguồn mở đã chọn, chuyên nghiệp và quy mô hơn bao giờ hết. Đặc biệt là hoàn toàn miễn phí đúng tinh thần mã nguồn mở quốc tế.<br /> <br /> NukeViet là một hệ quản trị nội dung mã nguồn mở (Opensource Content Management System) thuần Việt từ nền tảng PHP-Nuke và cơ sở dữ liệu MySQL. Người sử dụng thường gọi NukeViet là portal vì nó có khả năng tích hợp nhiều ứng dụng trên nền web, cho phép người sử dụng có thể dễ dàng xuất bản và quản trị các nội dung của họ lên internet hoặc intranet.<br /> <br /> NukeViet cung cấp nhiều dịch vụ và ứng dụng nhờ khả năng tăng cường tính năng thêm các module, block... tạo sự dễ dàng cài đặt, quản lý, ngay cả với những người mới tiếp cận với website. Người dùng có thể tìm hiểu thêm thông tin và tải về sản phẩm tại địa chỉ https://nukeviet.vn</p><blockquote> <p> <em>Thông tin ra mắt công ty VINADES có thể tìm thấy trên trang 7 báo Hà Nội Mới ra ngày 25/02/2010 (<a href="http://hanoimoi.com.vn/newsdetail/Cong_nghe/309750/ra-mat-cong-ty-ma-nguon-mo-dau-tien-tai-viet-nam.htm" target="_blank">xem chi tiết</a>), Bản tin tiếng Anh của đài tiếng nói Việt Nam ngày 26/02/2010 (<a href="http://english.vovnews.vn/Home/First-opensource-company-starts-operation/20102/112960.vov" target="_blank">xem chi tiết</a>); trang 7 báo An ninh Thủ Đô số 2858 ra vào thứ 2 ngày 01/03/2010 và các trang tin tức, báo điện tử khác.</em></p></blockquote>
		</div>
				<div id="author">
						<p>
				<strong>Tác giả:</strong>
				Quỳnh Nhi
			</p>
						<p>
				<strong>Nguồn tin:</strong>
				Báo Hà Nội Mới
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://aiwater2.xiris.vn/vi/news/savefile/Tin-tuc/Ra-mat-cong-ty-ma-nguon-mo-dau-tien-tai-Viet-Nam-1.html" title="Ra mắt công ty mã nguồn mở đầu tiên tại Việt Nam">https://aiwater2.xiris.vn/vi/news/savefile/Tin-tuc/Ra-mat-cong-ty-ma-nguon-mo-dau-tien-tai-Viet-Nam-1.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; Horus
		</div>
		<div id="contact">
			<a href="mailto:erp.xiris@gmail.com">erp.xiris@gmail.com</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://aiwater2.xiris.vn/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
    <div class="no_load">
      <div style="text-align: center;background: #dcdcdc;width: 100%;padding: 10px;">
        <span style="position: relative;font-size: 16px; font-weight: 600;">
          Vui lòng đợi trong giây lát
          <div class="loader four">
          </div>
      </span>
      <span>

      </span>
  </div>
  <div class="load_box">
    <span>
      <i class="fa fa-spinner icon_loading"></i>
  </span>
</div>
</div>
<script src="https://aiwater2.xiris.vn/assets/js/jquery/jquery.min.js"></script>
<script>
/* 12/09/2026 (user): "sao chuyển hướng lâu quá ta, không tức thì được hả".
   Chốt chặn "khách chưa đăng nhập -> sang xiris.vn" ban đầu đặt trong themes/.../users/login.tpl,
   tức nằm trong THÂN trang. Đo thật: </head> kết thúc ở byte 30.509 còn đoạn chuyển hướng nằm ở
   byte 83.819, SAU 12 tệp CSS chặn dòng (FontAwesome, bootstrap, style.css...). Script trong body
   phải đợi mọi stylesheet đang chờ tải xong mới được chạy, nên người dùng nhìn thấy nguyên trang
   đăng nhập chớp lên rồi mới nhảy.
   Đưa lên DÒNG ĐẦU của <head>, trước cả <title> và mọi <link>: trình duyệt gặp là chạy ngay trong
   lúc đọc HTML, chưa tải tệp phụ nào.

   Tệp này dùng chung cho MỌI trang -> phải tự nhận ra mình đang ở trang đăng nhập; nơi khác thì
   thoát ra ngay, tốn vài micro giây. Trang đăng nhập chỉ được phát cho KHÁCH (người đã đăng nhập
   mở /vi/users/login/ là bị lõi đá sang Tổng quan trước khi trang kịp dựng - đã đo), nên không
   cần thêm dấu hiệu nào khác.

   ⚠⚠ HAI CỬA THOÁT — ĐỪNG GỠ, không có là xiris.vn hỏng thì KHÔNG AI vào được aiwater:
     1. ?dnnb=1  -> ở lại form của aiwater (nhớ 30 phút bằng cookie, vì vòng POST đăng nhập quay
        lại trang này mà không còn tham số trên URL).
     2. sso_status= / sso_login= -> KHÔNG đẩy đi. includes/sso/src/Controller.php::legacyLoginUrl()
        đá về đúng trang này kèm &sso_status=<lý do> khi SSO hỏng hoặc bị tắt; đẩy tiếp là hai site
        đá qua đá lại vô tận. */
(function () {
    try {
        var p = window.location.pathname || '', q = window.location.search || '';
        if (!/\/users\/login\//.test(p) && !(/[?&]nv=users(?:&|$)/.test(q) && /[?&]op=login(?:&|$)/.test(q))) { return; }
        if (/[?&](?:dnnb=1|sso_status=|sso_login=)/.test(q)) {
            document.cookie = 'xiris_dnnb=1; Max-Age=1800; path=/';
            return;
        }
        if (/(?:^|;\s*)xiris_dnnb=1/.test(document.cookie)) { return; }
        /* 12/09 (user chốt): đá THẲNG sang xiris.vn, KHÔNG đi qua /sso/start. Đã thử
           /sso/start (tự bật trang đăng nhập) — user không muốn: "tự mở modal chi".
           15/09 (user): đích đổi từ TRANG CHỦ sang TRANG ĐĂNG NHẬP — "giờ mình không muốn
           nó vô trang https://xiris.vn/ nữa mà vô trang https://xiris.vn/vi/users/login/,
           logic đăng nhập y như cũ, chỉ là đổi đường dẫn chuyển hướng thôi". Trang đó dùng
           CÙNG luồng SSO với modal ở trang chủ (POST /login/ kèm sso_direct=1), nên khách
           khỏi phải tự đi tìm nút đăng nhập nữa.
           ⚠ URL này có 4 BẢN SAO — modules/duan/functions.php + 3 layout header_only*.tpl
           (theme_xiris x2, lastest_default x1). Đổi thì đổi cho đủ cả 4. */
        window.location.replace('https://xiris.vn/vi/users/login/');
    } catch (e) {}
})();
</script>
<script>
    var op_nuke='savefile'
  </script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="cb",nv_check_pass_mstime=17938000,nv_area_admin=0,nv_safemode=0,theme_responsive=1,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://aiwater2.xiris.vn/assets/js/language/vi.js"></script>
<script src="https://aiwater2.xiris.vn/assets/js/DOMPurify/purify3.js"></script>
<script src="https://aiwater2.xiris.vn/assets/js/global.js"></script>
<script src="https://aiwater2.xiris.vn/assets/js/site.js"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/news.js"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/main.js?v=1789094780"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/custom.js"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/additional_js/moment/moment.js"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/additional_js/moment/js/moment-with-locales.min.js"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/additional_js/moment/locale/vi.js"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/css/additional_css/datetimepicker/js/bootstrap-material-datetimepicker.js"></script>
<script>
    function myFunction() {
      var x = document.getElementById("my-Links");
      if (x.style.display === "block") {
        x.style.display = "none";
      } else {
        x.style.display = "block";
      }
    }
  </script>
<script>
    function openNav() {
      document.getElementById("mySidepanel").style.width = "250px";
    }

    function closeNav() {
      document.getElementById("mySidepanel").style.width = "0";
    }
  </script>
<script>
    function openPage(pageName, elmnt, color,mau) {

      // Hide all elements with class="tabcontent" by default */
      var i, tabcontent, tablinks;
      tabcontent = document.getElementsByClassName("tabcontent");
      for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
      }

      // Remove the background color of all tablinks/buttons
      tablinks = document.getElementsByClassName("tablink");
      for (i = 0; i < tablinks.length; i++) {
        tablinks[i].style.backgroundColor = "";
        tablinks[i].style.color="black";
      }

      // Show the specific tab content
      document.getElementById(pageName).style.display = "block";

      // Add the specific color to the button used to open the tab content
      elmnt.style.backgroundColor =color; 

      elmnt.style.color ="white"; 
    }
    // document.addEventListener("DOMContentLoaded", function() {
    // // Hide the loader when the content is fully loaded
    //   document.querySelector(".loader-wrapper").style.display = "none";
    // });
    function loadpage() {
      document.body.prepend(createElementFromHTML('<div class="loader-wrapper">' +
        '<div class="loader">' +
        '<div class="circle1"></div>' +
        '<div class="circle2"></div>' +
        '<div class="circle3"></div>' +
        '<div class="center"></div>' +
        '</div>' +
        '</div>'));

      function createElementFromHTML(htmlString) {
        const div = document.createElement('div');
        div.innerHTML = htmlString.trim();
        return div.firstChild;
      }
      //phan_mem_dang_chay();
      // hello();
      document.querySelector(".loader-wrapper").style.display = "flex";
    }
    function loadpage_tutu() {
      phan_mem_dang_chay();
      hello();
      document.querySelector(".loader-wrapper").style.display = "flex";
    }
    function unload() {
      setTimeout(function() { 
        document.querySelector(".loader-wrapper").style.display = "none";
      }, 1000);

    }

    function unload2() {
      setTimeout(function() { 
        document.querySelector(".loader-wrapper").style.display = "none";
      }, 100);
    }

    var allLinks = document.querySelectorAll(".loadpage");

    // Thêm bộ lắng nghe sự kiện khi click vào mỗi thẻ a
    allLinks.forEach(function(link) {
      link.addEventListener("click", function(event) {
        loadpage();
      });
    });

    var allLinks = document.querySelectorAll(".loadpage_tutu");

    // Thêm bộ lắng nghe sự kiện khi click vào mỗi thẻ a
    allLinks.forEach(function(link) {
      link.addEventListener("click", function(event) {
        loadpage_tutu();
      });
    });
  </script>
<script src="/themes/theme_xiris/js/fullcalender.min.js?t=1792029555"></script>
<script type="text/javascript"src="https://aiwater2.xiris.vn/assets/js/jquery-ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://aiwater2.xiris.vn/assets/js/language/jquery.ui.datepicker-vi.js"></script>
<script type="text/javascript" src="https://aiwater2.xiris.vn/assets/js/select2/select2.min.js"></script>
<script type="text/javascript"src="https://aiwater2.xiris.vn/themes/theme_xiris/js/yearpicker.js"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/tree.chart.js"></script>
<script src="/themes/theme_xiris/js/jquery-confirm.min.js?t=1792029555"></script>
<script src="https://unpkg.com/tributejs@5.1.3/dist/tribute.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v18.0&appId=363469809004152&autoLogAppEvents=1" nonce="TfC8yNBk"></script>
<script src="https://aiwater2.xiris.vn/webpush/main.js"></script>
<script>
    let link_web = 'aiwater2.xiris.vn';
    var global_user_id = 0;
  </script>
<script type="text/javascript">

    function musicstart(){
      var audio = new Audio('/uploads/business/am_thanh/thong_bao.mp3');
      audio.play();
      setTimeout(function(){ 
        audio.pause();
      }, 
      5000);
    }

  </script>
<script defer src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_font_weight.js?v=v1dd27a73"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_loading.js?v=v5loadingorbit"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_bang_the.js?v=v12cotgop"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_loc.js?v=v5"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_len_xuong.js?v=v2"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_tabs.js?v=v1"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_datepicker.js?v=v1"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_select2.js?v=v4"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_copy.js?v=v2"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_quaylai.js?v=v11cuatuchoi"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_xemtep.js?v=v12gophopcu"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_ten_in.js?v=v2uutien"></script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_chup_anh.js?v=v4"></script>
<script>
    (function () { try {
      var t = localStorage.getItem('xiris_theme');
      if (t === 'dark') { document.documentElement.setAttribute('data-xtheme', 'dark'); }
    } catch (e) {} })();
  </script>
<script>window.XIRIS_LH = (function () { try { return JSON.parse(document.getElementById('xiris_lh_json').textContent || 'null'); } catch (e) { return null; } })();</script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/xiris_excel_lh.js?v=v1"></script>
<script>
  /* 11/09/2026: letterhead phải nằm TRONG khối in của màn, không đứng ngoài.
     Lý do: mỗi màn có kiểu "ẩn cả trang, chỉ chừa khối của tôi" riêng
     (body{visibility:hidden} / body * / body.x > :not(#root){display:none} ...). Đứng ngoài
     thì lần nào cũng phải đấu độ đặc hiệu CSS với từng màn — thắng chỗ này thua chỗ kia (đúng lỗi
     phiếu chi tiết bảo trì không có header). Nhét vào trong khối in là hết đấu: khối in hiện thì
     header hiện theo, lại thừa hưởng luôn lề trái/phải nên canh thẳng hàng với nội dung, và vì
     nằm trong dòng chảy nên tự đẩy nội dung xuống, khỏi cần chừa lề cứng. */
  (function () {
      var head = document.getElementById('xirisPdfHeader');
      var foot = document.getElementById('xirisPdfFooter');
      if (!head && !foot) return;
      // Xếp theo thứ tự ưu tiên: khối nào khớp trước thì dùng khối đó.
      var DS_GOC = ['#ls_ct', '#bcmPrintRoot', '#tkxlnPrintRoot', '.pvv', '.bcv-wrap',
                    '.nh-wrap', '.ts-wrap', '.tkw', '.mr', '.mn-page'];
      var choCu = null, keCu = null, fChoCu = null, fKeCu = null;
      function vaoTrong() {
          if (choCu || fChoCu) return;             // đã dời rồi (Chrome bắn beforeprint 2 lần)
          var goc = null;
          for (var i = 0; i < DS_GOC.length && !goc; i++) goc = document.querySelector(DS_GOC[i]);
          if (!goc) return;                        // màn không có khối in -> thôi, khỏi chèn
          // Màn Báo cáo bảo trì có sẵn khung .bcm-lh để đặt letterhead (nay cũng lấy ảnh theo
          // cấu hình). Nếu khung đó ĐANG CÓ ẢNH thì thôi, khỏi chèn nữa kẻo chồng hai cái;
          // còn nếu trống (cấu hình đang để kiểu "Mẫu" nên không có ảnh) thì vẫn chèn bình thường.
          var sanCo = goc.querySelector('.bcm-lh img[src], .xf-lh-san-co img[src]');
          if (head && !(sanCo && sanCo.getAttribute('src'))) {
              choCu = head.parentNode;
              keCu = head.nextSibling;
              goc.insertBefore(head, goc.firstChild);
          }
          if (foot) {
              fChoCu = foot.parentNode;
              fKeCu = foot.nextSibling;
              goc.appendChild(foot);
          }
      }
      function veCho() {
          if (choCu && head) {
              choCu.insertBefore(head, keCu);
              choCu = null;
              keCu = null;
          }
          if (fChoCu && foot) {
              fChoCu.insertBefore(foot, fKeCu);
              fChoCu = null;
              fKeCu = null;
          }
      }
      window.addEventListener('beforeprint', vaoTrong);
      window.addEventListener('afterprint', veCho);
      // Safari cũ không bắn beforeprint/afterprint mà đổi trạng thái matchMedia.
      if (window.matchMedia) {
          var mq = window.matchMedia('print');
          var nghe = function (e) { e.matches ? vaoTrong() : veCho(); };
          if (mq.addEventListener) { mq.addEventListener('change', nghe); }
          else if (mq.addListener) { mq.addListener(nghe); }
      }
  })();
  </script>
<script type="module">
  // Import the functions you need from the SDKs you need
    import { initializeApp } from "https://www.gstatic.com/firebasejs/11.3.1/firebase-app.js";
    import { getAnalytics } from "https://www.gstatic.com/firebasejs/11.3.1/firebase-analytics.js";
  // TODO: Add SDKs for Firebase products that you want to use
  // https://firebase.google.com/docs/web/setup#available-libraries

  // Your web app's Firebase configuration
  // For Firebase JS SDK v7.20.0 and later, measurementId is optional
    const firebaseConfig = {
      apiKey: "AIzaSyAmpmNf8D9UnsTG8HH3oQdaSnzmufrMeRM",
      authDomain: "notification-gw.firebaseapp.com",
      projectId: "notification-gw",
      storageBucket: "notification-gw.firebasestorage.app",
      messagingSenderId: "106889627175",
      appId: "1:106889627175:web:298a59659065e43e9c3002",
      measurementId: "G-FTTYGHJLME"
    };

  // Initialize Firebase
    const app = initializeApp(firebaseConfig);
    const analytics = getAnalytics(app);
  </script>
<script type="text/javascript">

    function showNotification(noi_dung_thong_bao) {
      am_thanh_mac_dinh();
      var notification = document.getElementById('notification');
      notification.style.display = 'block';
      $('#notification .message').html(noi_dung_thong_bao);
      notification.classList.add('success');
      setTimeout(function () {
        notification.style.display = 'none';
        notification.classList.remove('success', 'error', 'warning');
      }, 7000);
    }

    function showNotification_noaudio(noi_dung_thong_bao) {
      var notification = document.getElementById('notification');
      notification.style.display = 'block';
      $('#notification .message').html(noi_dung_thong_bao);
      notification.classList.add('success');
      setTimeout(function () {
        notification.style.display = 'none';
        notification.classList.remove('success', 'error', 'warning');
      }, 7000);
    }

    function closeNotification() {
      var notification = document.getElementById('notification');
      notification.style.display = 'none';
      notification.classList.remove('success', 'error', 'warning');
    }
    // doi_pass();
    // function doi_pass(){
    //   $.ajax({
    //     type : 'POST',
    //     url: nv_base_siteurl + 'index.php?' + nv_name_variable + '=business&' + nv_fc_variable + '=main&mod=kiem_tra_doi_pass',
    //     contentType: false,
    //     processData: false,
    //     success : function(res){
    //       res2=JSON.parse(res);
    //       if(res2.status=="OK"){
    //         $('#modal_doi_pass').modal('show');

    //       }else if(res2.status=="KO"){

    //       }else{
    //         alert('Có lỗi xảy ra, vui lòng kiểm tra lại')

    //       }
    //     },
    //     error: function(xhr, ajaxOptions, thrownError) {
    //       alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    //     }
    //   });
    // }
    function doi_mat_khau() {
      var a = $('#mat_khau_1').val();
      var b = $('#mat_khau_2').val();

      var regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/;

      if (!regex.test(a)) {
        alert('Mật khẩu phải có ít nhất 8 ký tự, bao gồm chữ, chữ IN HOA, số và ký tự đặc biệt!');
        return;
      }

      if (a !== b) {
        alert('Mật khẩu không trùng khớp!');
        return;
      }

      $.ajax({
        type: 'POST',
        url: nv_base_siteurl + 'index.php?' + nv_name_variable + '=business&' + nv_fc_variable + '=main&mod=doi_pass',
        data: { mat_khau: a },
        success: function (res) {
          res2 = JSON.parse(res);
          if (res2.status == "OK") {
            alert('Đổi mật khẩu thành công!');
            window.location.href = 'https://x.greenworld.vn/vi/users/logout/';
          } else {
            alert('Có lỗi xảy ra, vui lòng kiểm tra lại');
          }
        },
        error: function (xhr, ajaxOptions, thrownError) {
          alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
      });
    }
    // xac_thuc_ip();
    // function xac_thuc_ip(){
    //   $.ajax({
    //     type : 'POST',
    //     url: nv_base_siteurl + 'index.php?' + nv_name_variable + '=business&' + nv_fc_variable + '=main&mod=xac_thuc_ip',
    //     contentType: false,
    //     processData: false,
    //     success : function(res){
    //       res2=JSON.parse(res);
    //       if(res2.status=="OK"){
    //       }else if(res2.status=="KO"){

    //       }else{
    //         alert('Có lỗi xảy ra, vui lòng kiểm tra lại')

    //       }
    //     },
    //     error: function(xhr, ajaxOptions, thrownError) {
    //       alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    //     }
    //   });
    // }
  </script>
<script>
  var elements = document.getElementsByClassName('comment-info');

  for (var i = 0; i < elements.length; i++) {
    var content = elements[i].innerHTML;

    // Dùng RegExp để tìm các từ bắt đầu bằng @ và bọc strong
    var newContent = content.replace(/@(\w+)/g, function(match, p1) {
      return '<strong>@' + p1 + '</strong>';
    });

    elements[i].innerHTML = newContent;
  }
</script>
<script src="https://aiwater2.xiris.vn/themes/theme_xiris/js/bootstrap.min.js"></script>
<script type="text/javascript">
  function loading(){
    var $elie = $(".icon_loading");
    rotate(0);
    function rotate(degree) {
     $elie.css({ WebkitTransform: 'rotate(' + degree + 'deg)'});
     $elie.css({ '-moz-transform': 'rotate(' + degree + 'deg)'});
     setTimeout(
      function() {
       rotate(++degree); 
   },
   10
   );
 }    
 $(".no_load").addClass("load");
 $(".no_load").removeClass("no_load");
}
function removeloading(){
   $(".load").addClass("no_load");
   $(".load").removeClass("load");

}
function go_back(){
    history.back();
}
</script>
<script type="text/javascript">
  // Hàm kích hoạt dịch
        function triggerTranslate(lang) {
            // Cập nhật giao diện nút bấm
            document.querySelectorAll('.lang-item').forEach(el => el.classList.remove('active'));
            document.getElementById(lang + '-btn').classList.add('active');

            // Tìm thẻ select của Google
            var select = document.querySelector('.goog-te-combo');
            if (select) {
                select.value = lang;
                select.dispatchEvent(new Event('change')); // Bắt buộc phải có dòng này Google mới hiểu
            }
        }

        // Cấu hình Google
        function googleTranslateElementInit() {
            new google.translate.TranslateElement({
                pageLanguage: 'vi',
                includedLanguages: 'en,vi',
                autoDisplay: false
            }, 'google_translate_element');
        }
        // Hàm dọn dẹp thanh banner cứng đầu (Chạy liên tục)
        setInterval(function() {
            var banner = document.querySelector('.goog-te-banner-frame');
            if (banner) banner.style.display = 'none';
            if (document.body.style.top !== '0px') document.body.style.top = '0px';
        }, 500);
    </script>
<script type="text/javascript" src="https://aiwater2.xiris.vn//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
</body>
</html>