Hệ thống pháp luật

BỘ TÀI NGUYÊN VÀ
MÔI TRƯỜNG
-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: 10/2020/TT-BTNMT

Hà Nội, ngày 29 tháng 9 năm 2020

 

THÔNG TƯ

QUY ĐỊNH VỀ BÁO CÁO TIẾP CẬN NGUỒN GEN VÀ CHIA SẺ LỢI ÍCH TỪ VIỆC SỬ DỤNG NGUỒN GEN

Căn cứ Luật Đa dạng sinh học ngày 13 tháng 11 năm 2008;

Căn cứ Nghị định số 36/2017/NĐ-CP ngày 04 tháng 4 năm 2017 của Chính phủ quy định chức năng, nhiệm vụ, quyền hạn và cơ cấu tổ chức của Bộ Tài nguyên và Môi trường;

Căn cứ Nghị định số 59/2017/NĐ-CP ngày 12 tháng 5 năm 2017 của Chính phủ về quản lý tiếp cận nguồn gen và chia sẻ lợi ích từ việc sử dụng nguồn gen;

Theo đề nghị của Tổng Cục trưởng Tổng cục Môi trường và Vụ trưởng Vụ Pháp chế;

Bộ trưởng Bộ Tài nguyên và Môi trường ban hành Thông tư quy định về báo cáo tiếp cận nguồn gen và chia sẻ lợi ích từ việc sử dụng nguồn gen.

Điều 1. Phạm vi điều chỉnh

Thông tư này quy định chi tiết khoản 3 Điều 25 Nghị định số 59/2017/NĐ-CP ngày 12 tháng 5 năm 2017 của Chính phủ về quản lý tiếp cận nguồn gen và chia sẻ lợi ích từ việc sử dụng nguồn gen (sau đây gọi là Nghị định số 59/2017/NĐ-CP).

Điều 2. Đối tượng áp dụng

Thông tư này áp dụng đối với cơ quan quản lý nhà nước, tổ chức, cá nhân có hoạt động liên quan đến tiếp cận nguồn gen và chia sẻ lợi ích từ việc sử dụng nguồn gen, cụ thể:

1. Cơ quan nhà nước có thẩm quyền cấp, gia hạn và thu hồi Giấy phép tiếp cận nguồn gen theo quy định tại Điều 6 Nghị định số 59/2017/NĐ-CP (sau đây gọi là cơ quan có thẩm quyền).

2. Tổ chức, cá nhân đã được cơ quan có thẩm quyền quyết định cấp Giấy phép tiếp cận nguồn gen theo quy định tại khoản 1 Điều 7 Nghị định số 59/2017/NĐ-CP.

3. Học sinh, sinh viên, nghiên cứu sinh, tổ chức khoa học và công nghệ Việt Nam đã được cơ quan có thẩm quyền quyết định cho phép đưa nguồn gen ra nước ngoài theo quy định tại khoản 1, khoản 2 Điều 20 Nghị định số 59/2017/NĐ-CP.

Điều 3. Báo cáo kết quả việc thực hiện tiếp cận nguồn gen và chia sẻ lợi ích từ việc sử dụng nguồn gen

1. Mẫu báo cáo kết quả việc thực hiện tiếp cận nguồn gen và chia sẻ lợi ích từ việc sử dụng nguồn gen (sau đây gọi là báo cáo), bao gồm:

a) Báo cáo hoạt động tiếp cận nguồn gen theo Mẫu số 01 quy định tại Phụ lục ban hành kèm theo Thông tư này;

b) Báo cáo tình hình, kết quả sử dụng nguồn gen theo Mẫu số 02 quy định tại Phụ lục ban hành kèm theo Thông tư này;

c) Báo cáo kết quả học tập, nghiên cứu đối với nguồn gen đã được cho phép đưa ra nước ngoài theo Mẫu số 03 quy định tại Phụ lục ban hành kèm theo Thông tư này.

2. Ngôn ngữ sử dụng trong báo cáo là tiếng Việt và được thực hiện bằng một trong hai hình thức sau:

a) Bản giấy: đối với tổ chức: là bản có chữ ký của người đại diện theo pháp luật của tổ chức, dấu của tổ chức thực hiện báo cáo (nếu có); đối với cá nhân: là bản có chữ ký, ghi rõ họ tên của cá nhân thực hiện báo cáo và xác nhận của tổ chức đã bảo lãnh cho cá nhân (nếu có);

b) Bản điện tử: được thể hiện dưới dạng ảnh (định dạng pdf) của báo cáo giấy theo quy định tại điểm a khoản này hoặc dưới dạng tệp tin điện tử được xác thực bằng chữ ký số của người đại diện theo pháp luật của tổ chức thực hiện báo cáo theo quy định của pháp luật.

3. Tổ chức, cá nhân quy định tại khoản 2 Điều 2 Thông tư này có trách nhiệm gửi báo cáo theo thời hạn sau:

a) Trong thời hạn 3 tháng kể từ ngày kết thúc hoạt động thu thập mẫu nguồn gen theo Kế hoạch tiếp cận nguồn gen được ban hành kèm theo Quyết định cấp Giấy phép tiếp cận nguồn gen có trách nhiệm báo cáo hoạt động tiếp cận nguồn gen quy định tại điểm a khoản 1 Điều này;

b) Định kỳ 2 năm một lần (trong thời hạn 05 ngày kể từ ngày kết thúc năm thứ 2 theo hiệu lực của Quyết định cấp Giấy phép tiếp cận nguồn gen) có trách nhiệm báo cáo tình hình, kết quả sử dụng nguồn gen quy định tại điểm b khoản 1 Điều này.

4. Tổ chức, cá nhân quy định tại khoản 3 Điều 2 Thông tư này, chậm nhất sau 3 tháng, kể từ ngày kết thúc chương trình học tập, nghiên cứu có trách nhiệm báo cáo kết quả học tập, nghiên cứu đối với nguồn gen đã được cho phép đưa ra nước ngoài quy định tại điểm c khoản 1 Điều này.

5. Báo cáo quy định tại khoản 3, khoản 4 Điều này được gửi trực tiếp hoặc gửi qua dịch vụ bưu chính hoặc gửi qua các phương thức khác theo quy định pháp luật đến cơ quan có thẩm quyền đã cấp phép. Báo cáo phải bảo đảm tính chính xác, khách quan, trung thực của thông tin, số liệu báo cáo và tổ chức, cá nhân lập báo cáo chịu trách nhiệm trước pháp luật về các thông tin đã cung cấp trong báo cáo.

Điều 4. Hiệu lực thi hành

Thông tư này có hiệu lực thi hành kể từ ngày 16 tháng 11 năm 2020.

Điều 5. Tổ chức thực hiện

1. Tổng cục Môi trường có trách nhiệm hướng dẫn, kiểm tra, đôn đốc việc thực hiện Thông tư này.

2. Các Bộ, cơ quan ngang Bộ, cơ quan thuộc Chính phủ, Ủy ban nhân dân tỉnh, thành phố trực thuộc Trung ương và tổ chức, cá nhân có liên quan chịu trách nhiệm thi hành Thông tư này./.

 


Nơi nhận:
- Thủ tướng Chính phủ;
- Các Phó Thủ tướng Chính phủ;
- Văn phòng Trung ương Đảng;
- Văn phòng Quốc hội;
- Văn phòng Chủ tịch nước;
- Các Bộ, cơ quan ngang bộ, cơ quan thuộc Chính phủ;
- Tòa án nhân dân tối cao;
- Viện Kiểm sát nhân dân tối cao;
- UBTƯ Mặt trận Tổ quốc Việt Nam;
- Cơ quan trung ương của các đoàn thể;
- HĐND, UBND các tỉnh, thành phố trực thuộc TƯ;
- Sở TN&MT các tỉnh thành phố trực thuộc TƯ;
- Cục Kiểm tra văn bản QPPL - Bộ Tư pháp;
- Công báo, Cổng TTĐT của Chính phủ;
- Các đơn vị thuộc Bộ TN&MT; Cổng TTĐT của Bộ TT&MT;
- Lưu: VT, PC, TCMT.

BỘ TRƯỞNG




Trần Hồng Hà

 

PHỤ LỤC

(Ban hành kèm theo Thông tư số   /2020/TT-BTNMT ngày   tháng   năm 2020 của Bộ trưởng Bộ Tài nguyên và Môi trường)

Mẫu số 01

Báo cáo hoạt động tiếp cận nguồn gen

Tên tổ chức
-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: …/…

….., ngày ….. tháng … năm …..

 

BÁO CÁO HOẠT ĐỘNG TIẾP CẬN NGUỒN GEN

Kính gửi:……………………………………………………….(b)

Tên tổ chức, cá nhân: ……………………….....………………..…………(a)

Người đại diện:…………………………… Chức vụ:…………………… (c)

Địa chỉ:……….… Số điện thoại:………… Thư điện tử: ……………...…(d)

(a) báo cáo hoạt động tiếp cận nguồn gen với các thông tin cụ thể như sau:

I. Thông tin chung:

1. Thông tin về Quyết định cấp Giấy phép tiếp cận nguồn gen:

a) Số Quyết định .…. ngày .... tháng …. năm .... của …(b)

b) Thời hạn hiệu lực của Quyết định:

2. Mục đích tiếp cận nguồn gen:

□ Nghiên cứu không vì mục đích thương mại

□ Nghiên cứu vì mục đích thương mại

□ Phát triển sản phẩm thương mại

II. Thông tin về việc thu thập mẫu nguồn gen:

1. Mô tả chi tiết việc thu thập mẫu nguồn gen:

a) Nguồn gen đã thu thậpb) Lượng mẫu nguồn gen đã thu thậpc) Thời gian thu thập mẫu nguồn gend) Bên cung cấpđ) Đặc điểm mẫu nguồn gen:

e) Địa điểm thu thập mẫu nguồn geng) Cách thức tiếp cận và phương pháp thu thập mẫu nguồn genh) Ảnh chụp về loài, mẫu nguồn gen đã thu thập (nếu có).

2. Thông tin liên quan trong quá trình thu thập mẫu nguồn gen:

a) Tổ chức, cá nhân Việt Nam thực hiện điều tra, thu thập nguồn gen (ghi rõ tên, địa chỉ và đầu mối liên hệ....).

b) Hoạt động phát sinh (nếu có):

- Đưa nguồn gen ra nước ngoài:- Chuyển giao cho bên thứ ba mà không thay đổi mục đích tiếp cận:- Các hoạt động phát sinh khác, nêu cụ thể:

3. Tác động của việc thu thập nguồn gen đến đa dạng sinh học, kinh tế và xã hội4. Đánh giá về kết quả thực hiện thu thập mẫu nguồn gen.

5. Các thông tin khác liên quan đến việc thu thập mẫu nguồn gen.

III. Thông tin về việc sử dụng nguồn gen (nếu có)Trên đây là báo cáo của …(a) về hoạt động tiếp cận nguồn gen, kính gửi …(b) theo quy định.

 


Nơi nhận:
- Như trên;
- Lưu: VT, …

ĐẠI DIỆN TỔ CHỨC, CÁ NHÂN(a)
 (Chữ ký, tên, chức vụ người ký
và đóng dấu)(đ)

___________________

Ghi chú:

(a): Tổ chức, cá nhân được cơ quan có thẩm quyền quyết định cấp Giấy phép tiếp cận nguồn gen (Tổ chức/cá nhân báo cáo).

(b): Cơ quan có thẩm quyền quyết định cấp Giấy phép tiếp cận nguồn gen và tiếp nhận báo cáo.

(c): Chỉ áp dụng trường hợp là tổ chức: Người đại diện theo pháp luật của (a).

(d): Địa chỉ, thông tin liên lạc của (a).

(đ): Trường hợp cá nhân cần ký, ghi rõ họ tên và xác nhận của tổ chức đã bảo lãnh (nếu có).

 

Mẫu số 02

Báo cáo tình hình, kết quả sử dụng nguồn gen

Tên tổ chức
-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: …/…

….., ngày ….. tháng … năm …..

 

BÁO CÁO TÌNH HÌNH, KẾT QUẢ SỬ DỤNG NGUỒN GEN

Kính gửi:……………………………………………………….(b)

Tên tổ chức, cá nhân: ……………………….....………………..…………(a)

Người đại diện:…………………………… Chức vụ:…………………… (c)

Địa chỉ:……….… Số điện thoại:………… Thư điện tử: ……………...…(d)

(a) báo cáo tình hình, kết quả sử dụng nguồn gen trong thời gian từ ngày …. tháng ….. năm .... đến ngày …. tháng ….. năm ….. với các thông tin cụ thể như sau:

I. Thông tin chung:

1. Thông tin về Quyết định cấp Giấy phép tiếp cận nguồn gen:

a) Số Quyết định .…. ngày .... tháng …. năm .... của …(b)

b) Thời hạn hiệu lực của Quyết định:

2. Mục đích tiếp cận nguồn gen:

□ Nghiên cứu không vì mục đích thương mại

□ Nghiên cứu vì mục đích thương mại

□ Phát triển sản phẩm thương mại

3. Hoạt động phát sinh sau khi được cấp Giấy phép tiếp cận nguồn gen:

a) Đưa nguồn gen ra nước ngoài:b) Chuyển giao cho bên thứ ba mà không thay đổi mục đích tiếp cận:c) Các hoạt động phát sinh khác, nêu cụ thể:

4. Thông tin, nội dung chính của Hợp đồng tiếp cận nguồn gen và chia sẻ lợi ích:

a) Số và ngày ký Hợp đồng tiếp cận nguồn gen và chia sẻ lợi ích:

b) Hợp đồng tiếp cận nguồn gen và chia sẻ lợi ích được xác nhận ngày…. tháng ….. năm .... tại………có hiệu lực đến ngày …. tháng ….. năm ....

c) Hình thức, cách thức chia sẻ lợi ích:

d) Các nghĩa vụ của Bên tiếp cận:

đ) Các nghĩa vụ của Bên cung cấp:

II. Thông tin mô tả chi tiết về mẫu nguồn gen đã tiếp cận, sử dụng:

1. Nguồn gen đã thu thập:2. Lượng mẫu nguồn gen đã thu thập:3. Thời gian thu thập mẫu nguồn gen:4. Bên cung cấp:5. Đặc điểm mẫu nguồn gen:

6. Địa điểm thu thập mẫu nguồn gen:7. Cách thức tiếp cận và phương pháp thu thập mẫu nguồn gen:8. Ảnh chụp về loài, mẫu nguồn gen đã thu thập (nếu có).

III. Thông tin về việc sử dụng nguồn gen:

1. Thông tin cụ thể của các bên sử dụng nguồn gen và địa điểm thực hiện các hoạt động sử dụng nguồn gen:

2. Thông tin chi tiết về việc nghiên cứu đối với nguồn gen đã tiếp cận:

a) Kết quả nghiên cứu sinh học đối với mẫu nguồn gen đã tiếp cận (phân loại, tế bào học, tiến hóa, di truyền và đánh giá sinh thái quần thể):

b) Kiểm kê loài, dữ liệu sinh thái và hình ảnh của địa điểm làm mẫu:

c) Kết quả sàng lọc, các kết quả nghiên cứu hóa sinh hay kết quả nghiên cứu về gen khác:

d) Các công bố (xuất bản hay trình bày hội nghị) từ việc nghiên cứu mẫu nguồn gen đã tiếp cận:

3. Thông tin chi tiết về việc thử nghiệm, sản xuất sản phẩm thương mại từ nguồn gen đã tiếp cận:

4. Các thỏa thuận đối với bên thứ ba liên quan đến mẫu nguồn gen đã tiếp cận:

5. Thông tin về việc sử dụng tri thức truyền thống kết hợp với các nguồn gen đã tiếp cận, bao gồm cả việc xác định các đặc tính, công dụng và lợi ích của nguồn genIV. Thông tin về chia sẻ lợi ích từ việc sử dụng nguồn gen đã tiếp cận:

1. Nêu chi tiết việc chia sẻ lợi ích bằng tiền đã thực hiện:

a) Tỷ lệ chia sẻ lợi ích bằng tiền đối với sản phẩm được tạo ra từ quá trình sử dụng nguồn gen:

b) Tỷ lệ chia sẻ lợi ích bằng tiền thu được từ việc chuyển giao nguồn gen, dẫn xuất của nguồn gen; sử dụng quyền sở hữu trí tuệ đối với kết quả sáng tạo từ việc sử dụng nguồn gen:

c) Doanh thu có được từ việc sử dụng nguồn gen đã tiếp cận:

d) Các loại hình chia sẻ lợi ích đã thực hiện với Bên cung cấp và các bên liên quan ở Việt Nam2. Nêu chi tiết việc chia sẻ lợi ích không bằng tiền đã thực hiện:

Các loại hình lợi ích đã thực hiện và chia sẻ cho Bên cung cấp và các bên liên quan ở Việt Nam3. Các thông tin về báo cáo và sổ sách kế toána) Liệt kê các giao dịch chính được thực hiện:

b) Tóm tắt báo cáo riêng về các biên lai, hóa đơn về giao dịch liên quan đến mẫu nguồn gen:

c) Tóm tắt các báo cáo, sổ ghi chép về doanh thu có được từ việc khai thác sử dụng nguồn gen được tiếp cận để đảm bảo các khoản thanh toán được chính xác:

Trên đây là báo cáo của …(a) về tình hình, kết quả sử dụng nguồn gen đã được cấp phép, kính gửi …(b) theo quy định.

 


Nơi nhận:
- Như trên;
- Lưu: VT, …

ĐẠI DIỆN TỔ CHỨC, CÁ NHÂN(a)
 (Chữ ký, tên, chức vụ người ký và đóng dấu)(đ)

___________________

Ghi chú:

(a): Tổ chức, cá nhân được cơ quan có thẩm quyền quyết định cấp Giấy phép tiếp cận nguồn gen (Tổ chức/cá nhân báo cáo).

(b): Cơ quan có thẩm quyền quyết định cấp Giấy phép tiếp cận nguồn gen và tiếp nhận báo cáo.

(c): Chỉ áp dụng trường hợp là tổ chức: Người đại diện theo pháp luật của (a).

(d): Địa chỉ, thông tin liên lạc của (a).

(đ): Trường hợp cá nhân cần ký, ghi rõ họ tên và xác nhận của tổ chức đã bảo lãnh (nếu có)

 

Mẫu số 03

Báo cáo kết quả học tập, nghiên cứu đối với nguồn gen đã được cho phép đưa ra nước ngoài

Tên tổ chức
-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: …/…

….., ngày ….. tháng … năm …..

 

BÁO CÁO KẾT QUẢ HỌC TẬP, NGHIÊN CỨU ĐỐI VỚI NGUỒN GEN ĐÃ ĐƯỢC CHO PHÉP ĐƯA RA NƯỚC NGOÀI

Kính gửi:……………………………………………………….(b)

Tên tổ chức, cá nhân: ……………………….....………………..…………(a)

Người đại diện:…………………………… Chức vụ:…………………… (c)

Địa chỉ:……….… Số điện thoại:………… Thư điện tử: ……………...…(d)

……(a) báo cáo kết quả học tập, nghiên cứu đối với nguồn gen đã được cho phép đưa ra nước ngoài theo Quyết định số …. ban hành ngày .... tháng …. năm .... của … (b) như sau:

I. Thông tin chung:

1. Mục đích đưa nguồn gen ra nước ngoài:

□ Nghiên cứu không vì mục đích thương mại

□ Học tập

2. Nêu chi tiết việc tiếp nhận lại mẫu nguồn gen đã được cho phép đưa ra nước ngoài (nếu có):

II. Thông tin mô tả chi tiết về mẫu nguồn gen và việc đưa nguồn gen ra nước ngoài:

1. Mẫu nguồn gen đã đưa ra nước ngoài2. Đặc điểm mẫu nguồn gen:

3. Bên cung cấp4. Địa điểm đã thu thập mẫu nguồn gen5. Số lượng/Khối lượng mẫu nguồn gen đã đưa ra nước ngoài6. Thời gian thực hiện việc đưa nguồn gen ra nước ngoàiIII. Thông tin về việc sử dụng nguồn gen ở nước ngoài:

1. Tên tổ chức, cá nhân tiếp nhận nguồn gen ở nước ngoài (ghi rõ tên, địa chỉ liên hệ, người đại diện, người liên lạc của tổ chức, cá nhân tiếp nhận nguồn gen ở nước ngoài):

2. Địa điểm thực hiện các hoạt động nghiên cứu, học tập đối với nguồn gen ở nước ngoài:

3. Mô tả các kết quả đã đạt được từ việc nghiên cứu, học tập đối với nguồn gen ở nước ngoài:

4. Mô tả các phát hiện mới đóng góp cho khoa học từ việc nghiên cứu, học tập đối với nguồn gen (nếu có):

IV. Kết quả công bố (xuất bản hay trình bày hội nghị) từ việc nghiên cứu, học tập liên quan đến nguồn gen

V. Kết quả đăng ký sở hữu trí tuệ liên quan đến nguồn gen (nếu có)

VI. Các cơ hội nghiên cứu và xây dựng năng lực cho Việt Nam liên quan đến nguồn gen

VII. Thông tin về tiềm năng thương mại sau quá trình thực hiện nghiên cứu/học tập không vì mục đích thương mại

IIX. Các thông tin khác liên quan đến việc nghiên cứu, học tập nguồn gen (nếu có)

Trên đây là báo cáo của …(a) về kết quả học tập, nghiên cứu đối với nguồn gen …. đã được cho phép đưa ra nước ngoài, kính gửi …(b) theo quy định.

 


Nơi nhận:
- Như trên;
- Lưu: VT,…

ĐẠI DIỆN TỔ CHỨC, CÁ NHÂN(a)
 (Chữ ký, tên, chức vụ người ký và đóng dấu)(đ)

___________________

Ghi chú:

(a): Học sinh, sinh viên, nghiên cứu sinh, tổ chức khoa học và công nghệ Việt Nam được cơ quan có thẩm quyền quyết định cho phép đưa nguồn gen ra nước ngoài phục vụ học tập, nghiên cứu không vì mục đích thương mại (Tổ chức/cá nhân báo cáo).

(b): Cơ quan có thẩm quyền đã quyết định cho phép đưa nguồn gen ra nước ngoài và tiếp nhận báo cáo.

(c): Chỉ áp dụng trường hợp là tổ chức: Người đại diện theo pháp luật của (a).

(d): Địa chỉ, thông tin liên lạc của (a).

(đ): Trường hợp cá nhân cần ký, ghi rõ họ tên và xác nhận của tổ chức đã bảo lãnh (nếu có).



/g, '').replace(/\s*(<\/?[^>]+>)\s*/g, '$1').trim(); } function checkAndWrap(element) { // Đệ quy kiểm tra các phần tử .main-elem con bên trong trước element.children('cttd, dctd, dctk').each(function() { checkAndWrap($(this)); }); // Lấy HTML hiện tại của phần tử .main-elem và làm sạch nó var currentHTML = cleanHTML(element.html()); // Log trạng thái HTML bên trong trước khi kiểm tra //console.log('Before inner HTML:', currentHTML); // Kiểm tra xem HTML có bao quanh bởi thẻ span không if (!(currentHTML.startsWith(''))) { // Nếu không, bao quanh toàn bộ nội dung bằng thẻ span element.html('' + currentHTML + ''); currentHTML = cleanHTML(element.html()); //console.log('After inner HTML:', currentHTML); } else { //console.log('Giữ nguyên inner HTML:..........................'); } } $('cttd.chuthichtudong a.chuthichtudong').each(function() { $(this).removeClass('chuthichtudong'); }); // Bắt đầu kiểm tra từ các phần tử .main-elem ngoài cùng $('cttd.chuthichtudong, a.chuthichtudong, dctd, dctk').each(function() { $(this).attr('id', 'rnd_' + random_string_id(20)); checkAndWrap($(this)); }); }); $(document).ready(function() { $('cttd.chuthichtudong span, a.chuthichtudong span, dctk span, dctd span').click(function(e) { e.preventDefault(); e.stopPropagation(); }); $('cttd.chuthichtudong > span, a.chuthichtudong > span, dctk > span, dctd > span').click(function(e) { e.preventDefault(); e.stopPropagation(); if ($(document).width()<=768) { return; } var $this = $(this); //alert($this.position().top); var clickedElement = $(this); var level = 0; var selectors = ['cttd.chuthichtudong > span', 'dctk > span', 'dctd > span']; // Kiểm tra xem có ít nhất một cấp con thỏa mãn điều kiện không var hasChild = selectors.some(function(selector) { return clickedElement.closest(selector).find('span').length > 0; }); if (!hasChild) { //alert('chỉ có 1 cấp'); var totalSubLevels = 1; } else { function findMatchingParent(element) { var parent = element.parent(); if (parent.length === 0) return null; for (var i = 0; i < selectors.length; i++) { if (parent.is(selectors[i])) { return parent; } } return findMatchingParent(parent); } var parentElement = findMatchingParent(clickedElement); while (parentElement !== null) { level++; parentElement = findMatchingParent(parentElement); } var closestElement = clickedElement.closest(selectors.join(', ')); var nodeName = closestElement.prop('nodeName').toLowerCase(); var className = closestElement.attr('class'); var textContent = closestElement.text().trim(); var address = selectors.find(function(selector) { return closestElement.is(selector); }); // Đếm tổng số cấp dưới bao gồm cả cấp được click var totalSubLevels = closestElement.find('span').length + 1; // +1 để bao gồm cả cấp được click var parent_id = closestElement.parent().attr('id'); //alert('Clicked element level: ' + level + '\nAddress: ' + address + '\nText: ' + textContent + '\nparent_id: ' + parent_id); var variableName = 'parent_id_' + level; // Gán giá trị của parent_id cho biến động này window[variableName] = parent_id; } if (totalSubLevels>1) { // Tạo đối tượng để lưu trữ các biến động var dynamicVars = {}; // Tạo tên biến động dựa trên giá trị của level var variableName = 'parent_id_' + level; // Gán giá trị của parent_id cho biến động này dynamicVars[variableName] = parent_id; // Giờ gắn ngược lại biến buble_id = parent_id_{level} var buble_id = dynamicVars[variableName]; } else { buble_id = 'dc_' + $(this).parent().attr('id'); } //alert('bat dau xu ly ' + buble_id); // Nếu không có .pointer ngay sau .main-elem thì chèn thêm if ($this.next('.pointy').length === 0) { $this.after('

'); } var $pointer = $this.next('.pointer'); var $canvas = $this.next('canvas'); var $pointy = $canvas.next('div.pointy'); if ($pointy.is(':visible')) { //alert('now hide everything'); } //$pointer.css({'border':'solid 5px red'}); //$pointer.hide(); //$pointer.prev('canvas.pointy').hide(); if ($pointer.is(':visible')) { } else { if ($('#ajax_tra_cuu').is(':visible')) { $('#ajax_tra_cuu').hide(); } $("#right_info_col").css('height', '1px'); //$('#rightdocinfo').hide(); $('#rightdocinfo').hide('slow'); $('#r-toc').hide('slow'); if ($('button#toggleSidebar').length) { if (parseInt($('#customSidebar').css('right'),10) == 0) { $('#customSidebar').animate({ right: '-280px' }, 500); $('#toggleSidebar').html(''); } else { } } //alert('pointy length: ' + $pointy.length); //alert('pointy visible: ' + $pointy.is(':visible')); //$canvas.show(); if ($pointy.is(':visible')) { var $pointer = $canvas.next('.pointer'); //alert('pointer text: ' + $pointer.text()); //alert('pointer visible: ' + $pointer.is(':visible')); if ($pointer.is(':visible')) { //alert($pointer.prev('canvas.pointy').length); $pointer.hide(); $canvas.hide(); } else { } } else { if ($canvas.length==1) { var $canvas = $this.next('canvas'); var $pointer = $canvas.next('.pointer'); //$pointy.show(); if ($pointer.length>0) { $pointer.show(); $canvas.show(); } //$canvas.show(); $('.pointer').removeClass('pointy-active'); $('.pointer').css({'z-index':1}); $('canvas.pointy').removeClass('pointy-active'); $('canvas.pointy').css({'z-index':1}); $pointer.css({'z-index':9999}); $canvas.css({'z-index':9999}); if (level==0) { if (totalSubLevels==1) { scrollTop_offset = $pointer.offset().top - $(window).height() / 4; } else { scrollTop_offset = $pointer.offset().top - $('#nav-tab-vb').height()-10; } $('html,body').animate({ scrollTop: scrollTop_offset }, 'slow'); } } else { $pointer.show(); //$canvas.show(); if ($pointy.length==0) { var elementOffset = $(this).position().top; var windowHeight = $(window).height()-20 - $('#nav-tab-vb').height(); var pointerHeight = Math.max(250, Math.min(windowHeight * 0.8, 450)); var newTop = elementOffset - (pointerHeight / 2); // Đảm bảo pointer không ra khỏi màn hình var maxTop = $(document).height() - pointerHeight; newTop = Math.max(0, Math.min(newTop, maxTop)); if (totalSubLevels=1) { if (level>0) { newTop = newTop+pointerHeight+30; } } // Positioning the pointer var position = $this.position(); $pointer.css({ left: $('#doc-left-col').width() + 50 + "px", width: $('#doc-right-col').width()-30, height: pointerHeight, 'z-index': 9999, top: newTop + "px" }); // Initialize pointy $this.pointy({ pointer: $pointer, defaultClass: 'zindex', activeClass: 'pointy-active', arrowWidth: 20 }); var initialTop = $pointer.position().top; $pointer.draggable({ containment: 'document', drag: function() { if (screen.width<1280) { var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); } $this.trigger('pointy-update'); } }); // Thêm sự kiện click cho .close_pointy $pointer.on('click', '.close_pointy', function(e) { $pointer.hide(); $pointer.prev('canvas.pointy').hide(); }); // Handle touch events for mobile devices var isDragging = false, startX, startY, offsetX, offsetY; var startDragging = function(e) { if (checkIfScrollingContent(e)) return; if ($(e.target).is('.close_pointy')) { // Nếu đúng thì không chạy các hàm drag return; } isDragging = true; var touch = e.originalEvent.touches[0]; var pos = $pointer.position(); startX = touch.pageX; startY = touch.pageY; offsetX = startX - pos.left; offsetY = startY - pos.top-$pointer.height()-$pointer.height()/1.365; var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); e.preventDefault(); }; var duringDragging = function(e) { if (checkIfScrollingContent(e)) return; if (isDragging) { var touch = e.originalEvent.touches[0]; var moveX = touch.pageX; var moveY = touch.pageY; if (screen.width<1280) { var newLeft = moveX - offsetX; var newTop = moveY - offsetY-$pointer.height()-$pointer.height()/1.365; // Giới hạn không cho kéo vượt quá chiều ngang của màn hình if (newLeft < 0) { newLeft = 0; } else if (newLeft + $pointer.outerWidth() > $(window).width()) { newLeft = $(window).width() - $pointer.outerWidth(); } // Giới hạn không cho kéo lên trên vượt quá position.top ban đầu if (newTop < initialTop) { newTop = initialTop; } $pointer.css({ left: newLeft, top: newTop }); } else { var newLeft = moveX - offsetX; var newTop = moveY - offsetY-$pointer.height()-$pointer.height()/1.365; // Giới hạn không cho kéo vượt quá chiều ngang của màn hình if (newLeft < 0) { newLeft = 0; } else if (newLeft + $pointer.outerWidth() > $(window).width()) { newLeft = $(window).width() - $pointer.outerWidth(); } $pointer.css({ left: newLeft, top: newTop }); } $pointer.prev('canvas.pointy').hide(); e.preventDefault(); } }; var stopDragging = function(e) { $pointer.prev('canvas.pointy').show(); if (checkIfScrollingContent(e)) return; if (screen.width<1280) { var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); } $this.trigger('pointy-update'); }; function checkIfScrollingContent(e) { // Kiểm tra đối tượng mà người dùng đang chạm có phải là nội dung bên trong $pointer // Ví dụ, nếu nó là một phần tử
hoặc

bên trong $pointer if ($(e.target).closest('.list_tds').length > 0) { // Người dùng đang chạm vào nội dung bên trong .scroll_2 // Cho phép hành vi cuộn và ngăn chặn di chuyển $pointer e.stopPropagation(); return true; } // Người dùng không chạm vào nội dung bên trong $pointer // Cho phép di chuyển $pointer return false; } $pointer.on('touchstart', startDragging); $pointer.on('touchmove', duringDragging); $pointer.on('touchend', stopDragging); // Hàm để cập nhật vị trí của pointer var updatePointerPosition = function() { var offset = $this.position(); //alert($this.position().top); var windowHeight = $(window).height() - $('#nav-tab-vb').height()-20; var pointerHeight = Math.max(250, Math.min(windowHeight * 0.8, 450)); var elementOffset = $this.position().top; var newTop = elementOffset - (pointerHeight / 2); // Đảm bảo pointer không ra khỏi màn hình var maxTop = $(document).height() - pointerHeight; newTop = Math.max(0, Math.min(newTop, maxTop)); $pointer.css({ left: $('#doc-left-col').width() + 50 + "px", width: $('#doc-right-col').width() - 30, height: pointerHeight, top: newTop + "px" }); //alert($pointer.position().top); }; /* */ // Cập nhật vị trí pointer khi thay đổi kích thước hoặc xoay màn hình $(window).on('resize orientationchange', function() { updatePointerPosition(); //$canvas.css('top', $this.position().top+'px'); var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); $this.trigger('pointy-update'); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); }); } } } if ($pointer.is(':visible')) { if (level==0) { if (totalSubLevels==1) { scrollTop_offset = $pointer.offset().top - $(window).height() / 4; } else { scrollTop_offset = $pointer.offset().top - $('#nav-tab-vb').height()-10; } $('html,body').animate({ scrollTop: scrollTop_offset }, 'slow'); } } } $pointer.css('opacity', '1'); $('.pointy').click(function(e) { e.preventDefault(); e.stopPropagation(); }); var parent = $(this).parent(); var dataCT = parent.attr('data-ct'); var dataDC = parent.attr('data-dc'); var dataTN = parent.attr('data-tn'); //if (dataCT) loai_buble = 'chuthich'; //if (dataDC) loai_buble = 'danchieu';; //if (dataTN) loai_buble = 'thuatngu'; var loai_buble = parent.prop('nodeName').toLowerCase(); var text_html = $(this).text(); if (loai_buble=='cttd' || loai_buble=='a') { pointer_html = '

'; } else if(loai_buble=='dctd') { if (this.hasAttribute('o-title')) { tieu_de_dan_chieu = $(this).attr('o-title'); } else { tieu_de_dan_chieu = text_html; } pointer_html = ''; } else if(loai_buble=='dctk') { pointer_html = ''; } if ($pointer.find('#noi_dung_buble_'+buble_id).length) { } else { $pointer.html(pointer_html); } if (loai_buble=='cttd' || loai_buble=='a') { var load_cttd = setInterval(function(){ if ($pointer.find('#noi_dung_buble_'+buble_id + ' .dc_loading').length) { $.ajax({ type: 'POST', url: '/ajax/vanban/chu-thich/', data: { 'ndct': dataCT, 'id_ct': buble_id, 'dc_text': text_html }, success: function(response) { $("#noi_dung_buble_" + buble_id).html(response); if ($(document).width()>=1280){$this.trigger('pointy-update');} clearInterval(load_cttd); } }); } },500); } else if(loai_buble=='dctd') { var load_cttd = setInterval(function(){ if ($pointer.find('#noi_dung_buble_'+buble_id + ' .dc_loading').length){ if (dataDC.length == 32) { $.ajax({ type: 'POST', url: '/ajax/public/dan-chieu/' + dataDC, data: { 'text_dan_chieu': text_html }, success: function(response) { $("#noi_dung_buble_" + buble_id).html(response); if ($(document).width()>=1280){$this.trigger('pointy-update');} clearInterval(load_cttd); } }); } else { $("#noi_dung_buble_" + buble_id).load('/ajax/public/dan-chieu/' + dataDC + '/'); if ($(document).width()>=1280){$this.trigger('pointy-update');} clearInterval(load_cttd); } } else { clearInterval(load_cttd); } },500); } else if(loai_buble=='dctk') { if ($('#noi_dung_buble_'+buble_id + ' .dc_loading').length){ $.ajax({ type: 'POST', url: '/ajax/vanban/chu-thich/', data: { 'ndct': dataCT, 'id_ct': buble_id, 'loai_hd': 'noi_dung_tham_khao', 'dc_text': text_html }, success: function(response) { $("#noi_dung_buble_" + buble_id).html(response); if ($(document).width()>=1280){$this.trigger('pointy-update');} } }); } } /* var tim_buble_id = setInterval(function(){ if ($('#noi_dung_buble_'+buble_id).length) { alert('bay gio moi tim thay '+buble_id); clearInterval(tim_buble_id); } },1000); */ $('.pointer').removeClass('pointy-active'); $('.pointer').css({'z-index':1}); $('canvas.pointy').removeClass('pointy-active'); $('canvas.pointy').css({'z-index':1}); $pointer.css({'z-index':9999}); $canvas.css({'z-index':9999}); $('.pointer').on('mouseenter mouseleave click touchstart', function() { // Khi di chuột vào $('.pointer').removeClass('pointy-active'); $('.pointer').css({'z-index':1}); $(this).css({'z-index':9999}); $('canvas.pointy').removeClass('pointy-active'); $('canvas.pointy').css({'z-index':1}); $(this).prev('canvas.pointy').addClass('pointy-active'); $(this).prev('canvas.pointy').css({'z-index':9999}); } ); var list_tds_max_height_interval = setInterval(function(){ if ($pointer.find('.list_tds').length) { var windowHeight = $(window).height()-20 - $('#nav-tab-vb').height(); var pointerHeight = Math.max(250, Math.min(windowHeight * 0.8, 450)); $pointer.find('.list_tds').css('max-height', pointerHeight + 'px'); clearInterval(list_tds_max_height_interval); } },50); $(window).resize(function() { if ($(document).width()<=768) { $pointer.hide(); $pointer.prev('canvas.pointy').hide(); } var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); var list_tds_max_height_interval = setInterval(function(){ if ($pointer.find('.list_tds').length) { var windowHeight = $(window).height()-20 - $('#nav-tab-vb').height(); var pointerHeight = Math.max(250, Math.min(windowHeight * 0.8, 450)); $pointer.find('.list_tds').css('max-height', pointerHeight + 'px'); clearInterval(list_tds_max_height_interval); } },50); }); var parentElement = $(this).parent(); // Define the selectors for the target elements var selectors = 'cttd.chuthichtudong > span, a.chuthichtudong > span, dctk > span, dctd > span'; // Find and click all matching child elements parentElement.find(selectors).each(function() { $(this).click(); }); var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); }); }); function random_string_id(numstr) { var text = ""; var possible = "abcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0; i < numstr; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; } $(document).ready(function() { function setPointerHeight() { var windowHeight = $(window).height() - $('#nav-tab-vb').height()-20; var pointerHeight = Math.max(250, Math.min(windowHeight * 0.8, 450)); $('.pointer').css('height', pointerHeight + 'px'); } // Đặt chiều cao khi tải trang setPointerHeight(); // Đặt lại chiều cao khi thay đổi kích thước cửa sổ (nếu cần) $(window).resize(function() { setPointerHeight(); }); }); // Lưu dấu chọn lựa cuối cùng let lastChosen = null; let lastChosentr = null; function scroll_den_hd(ndsh_dich_address) { if (lastChosen) { $(lastChosen).css('background-color', ''); // Xóa mọi bôi mờ trước } if (lastChosentr) { $(lastChosentr).css('background-color', ''); // Xóa mọi bôi mờ trước } lastChosen = $('[href="javascript:scroll_den_hd(\'' + ndsh_dich_address + '\')"]'); lastChosentr = $('[data-ct="' + ndsh_dich_address + '"]'); $(lastChosen).css('background-color', 'yellow'); // Thay bôi mờ $(lastChosentr).css('background-color', 'yellow'); // Thay bôi mờ var targetElement = $('[address="' + ndsh_dich_address + '"]'); $('.selected_dchd').removeClass('selected_dchd'); targetElement.addClass('selected_dchd'); targetElement.children('p').children('cttd').click(); targetElement.children('cttd').click(); targetElement.children('p').children('dctk').click(); targetElement.children('dctk').click(); // Tính toán vị trí để cuộn đến và đẩy vị trí xuống một chút cho dễ nhìn /* var position = targetElement.offset().top - $(window).height()/2; // Sử dụng animate để cuộn đến vị trí, sau đó không cần bôi màu như trước $('html, body').animate({ scrollTop: position }, 800, function() { // Không cần thực hiện thêm hành động nào sau khi cuộn, vì việc đánh dấu đã được xử lý ở trên }); */ }