diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat/1642019_1642021_1642040_1642049_1642051_BienBanHopLan1.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat/1642019_1642021_1642040_1642049_1642051_BienBanHopLan1.docx new file mode 100644 index 0000000..365827c Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat/1642019_1642021_1642040_1642049_1642051_BienBanHopLan1.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat.docx new file mode 100644 index 0000000..191051e Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat/1642019_1642021_1642040_1642049_1642051_KeHoachKhaoSat.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/1.1_Motabaitoan_danhsachchucnang.pdf b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/1.1_Motabaitoan_danhsachchucnang.pdf new file mode 100644 index 0000000..9931739 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/1.1_Motabaitoan_danhsachchucnang.pdf differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/1.2.MoTaChiTiet_StakeHolderDanhSachChucNang.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/1.2.MoTaChiTiet_StakeHolderDanhSachChucNang.docx new file mode 100644 index 0000000..8b3f634 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/1.2.MoTaChiTiet_StakeHolderDanhSachChucNang.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/2.1_KeHoachKhaoSat.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/2.1_KeHoachKhaoSat.docx new file mode 100644 index 0000000..191051e Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/2.1_KeHoachKhaoSat.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/2.2_BienBanPhongVanKhachHang.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/2.2_BienBanPhongVanKhachHang.docx new file mode 100644 index 0000000..4d9e8e5 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/2.2_BienBanPhongVanKhachHang.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/3_DanhSachCauHoi_KetQuaKhaoSatNguoiDung.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/3_DanhSachCauHoi_KetQuaKhaoSatNguoiDung.docx new file mode 100644 index 0000000..50f68b8 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/3_DanhSachCauHoi_KetQuaKhaoSatNguoiDung.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/4_Vision.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/4_Vision.docx new file mode 100644 index 0000000..d79c0d7 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/4_Vision.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/BienBanHopLan1.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/BienBanHopLan1.docx new file mode 100644 index 0000000..365827c Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/BienBanHopLan1.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/BieuMau/GiayPhepMangXaHoi.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/BieuMau/GiayPhepMangXaHoi.jpg new file mode 100644 index 0000000..6225334 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/BieuMau/GiayPhepMangXaHoi.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/DanhSachPhanMemTuongTu.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/DanhSachPhanMemTuongTu.docx new file mode 100644 index 0000000..03ba6e3 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/1_Tailieuthuthapyeucau/DanhSachPhanMemTuongTu.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/2_Tailieumohinhhoayeucau/MoHinh_DactaUsecase.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/2_Tailieumohinhhoayeucau/MoHinh_DactaUsecase.docx new file mode 100644 index 0000000..61f51bb Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/2_Tailieumohinhhoayeucau/MoHinh_DactaUsecase.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/2_Tailieumohinhhoayeucau/UseCaseDiagram.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/2_Tailieumohinhhoayeucau/UseCaseDiagram.png new file mode 100644 index 0000000..097f780 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/2_Tailieumohinhhoayeucau/UseCaseDiagram.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/DacTaPrototy.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/DacTaPrototy.docx new file mode 100644 index 0000000..5bb49d0 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/DacTaPrototy.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/404.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/404.jpg new file mode 100644 index 0000000..34d5f89 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/404.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/address.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/address.png new file mode 100644 index 0000000..67781fb Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/address.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/book_Csharpdepth.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/book_Csharpdepth.jpg new file mode 100644 index 0000000..90bed65 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/book_Csharpdepth.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/book_codedaokisu.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/book_codedaokisu.png new file mode 100644 index 0000000..8160e37 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/book_codedaokisu.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookcplus.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookcplus.jpg new file mode 100644 index 0000000..28ddd93 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookcplus.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookhoadaicuong.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookhoadaicuong.jpg new file mode 100644 index 0000000..0273e0a Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookhoadaicuong.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookjava1.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookjava1.jpg new file mode 100644 index 0000000..b462460 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookjava1.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookkythuatlaptrinh.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookkythuatlaptrinh.jpg new file mode 100644 index 0000000..3652feb Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookkythuatlaptrinh.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookmacle.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookmacle.jpg new file mode 100644 index 0000000..8815208 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookmacle.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booknghiepvudauthau.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booknghiepvudauthau.jpg new file mode 100644 index 0000000..ecfefbf Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booknghiepvudauthau.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booknguyenlyketoan.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booknguyenlyketoan.jpg new file mode 100644 index 0000000..ba9e280 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booknguyenlyketoan.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookphp.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookphp.png new file mode 100644 index 0000000..2d3308e Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookphp.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktaichinhquanly.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktaichinhquanly.jpg new file mode 100644 index 0000000..565acef Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktaichinhquanly.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktailieuconhiet.PNG b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktailieuconhiet.PNG new file mode 100644 index 0000000..aab4cfe Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktailieuconhiet.PNG differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookthongkekinhte.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookthongkekinhte.jpg new file mode 100644 index 0000000..95f1b1d Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookthongkekinhte.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktoancaocap.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktoancaocap.jpg new file mode 100644 index 0000000..77a7945 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktoancaocap.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktutuonghcm.PNG b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktutuonghcm.PNG new file mode 100644 index 0000000..20f24ab Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/booktutuonghcm.PNG differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookvatlydaicuong.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookvatlydaicuong.jpg new file mode 100644 index 0000000..cb28cfa Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/bookvatlydaicuong.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/email.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/email.png new file mode 100644 index 0000000..e8a3163 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/email.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/facebook.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/facebook.png new file mode 100644 index 0000000..231076c Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/facebook.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/giohnang.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/giohnang.png new file mode 100644 index 0000000..a905cf7 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/giohnang.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/google.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/google.jpg new file mode 100644 index 0000000..b131df5 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/google.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/hoadaicuong.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/hoadaicuong.jpg new file mode 100644 index 0000000..0273e0a Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/hoadaicuong.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/lock.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/lock.png new file mode 100644 index 0000000..cde0179 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/lock.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/phone.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/phone.png new file mode 100644 index 0000000..3e5f21d Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/phone.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/searchicon.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/searchicon.png new file mode 100644 index 0000000..746f141 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/searchicon.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/setting.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/setting.png new file mode 100644 index 0000000..af74b20 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/setting.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/sexicon.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/sexicon.png new file mode 100644 index 0000000..67b8c10 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/sexicon.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/user.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/user.png new file mode 100644 index 0000000..3c62407 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Image/user.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_1642019_1642021_1642041_1642049_1642051.rp b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_1642019_1642021_1642041_1642049_1642051.rp new file mode 100644 index 0000000..5a65220 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_1642019_1642021_1642041_1642049_1642051.rp differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/10__zabook.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/10__zabook.html new file mode 100644 index 0000000..bb33e16 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/10__zabook.html @@ -0,0 +1,336 @@ + + + + 10..ZABook + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Thứ tự Z-A

+
+
+ + +
+
+
+

C# IN DEPTH

+
+
+ + +
+
+
+

Code dạo ký sự

+
+
+ + +
+
+
+

Tài liệu cơ nhiệt

+
+
+ + +
+
+
+

Tài liệu Mác-Lê Nin

+
+
+ + +
+
+
+

Trang

+
+
+ + +
+
+
+

1

+
+
+ + +
+
+
+

2

+
+
+ + +
+
+
+

3 . . .

+
+
+ + +
+
+
+

Trang cuối

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/11_itbook.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/11_itbook.html new file mode 100644 index 0000000..30da752 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/11_itbook.html @@ -0,0 +1,326 @@ + + + + 11.ITBook + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Tài LiệuTin Học

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

C# IN DEPTH

+
+
+ + +
+
+
+

Giáo trình lập trình

JAVA

+
+
+ + +
+
+
+

Lập trình cơ bản

PHP và MySQL

+
+
+ + +
+
+
+

Ngôn ngữ lập trình C++

và Cấu trúc dữ liệu

+
+
+ + +
+
+
+

Trang

+
+
+ + +
+
+
+

1

+
+
+ + +
+
+
+

2

+
+
+ + +
+
+
+

3 . . .

+
+
+ + +
+
+
+

Trang cuối

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/12_economicbook.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/12_economicbook.html new file mode 100644 index 0000000..8b529e5 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/12_economicbook.html @@ -0,0 +1,326 @@ + + + + 12.EconomicBook + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Tài Liệu Kinh Tế

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Tài chính dành cho nhà

quản lý

+
+
+ + +
+
+
+

Nghiệp vụ đấu thầu

+
+
+ + +
+
+
+

Nguyên Lý Kế Toán

+
+
+ + +
+
+
+

Giáo trình thống kê

kinh tế

+
+
+ + +
+
+
+

Trang

+
+
+ + +
+
+
+

1

+
+
+ + +
+
+
+

2

+
+
+ + +
+
+
+

3 . . .

+
+
+ + +
+
+
+

Trang cuối

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Tải xuống

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/13_outlinebook.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/13_outlinebook.html new file mode 100644 index 0000000..d27fcb3 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/13_outlinebook.html @@ -0,0 +1,326 @@ + + + + 13.Outlinebook + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Tài Liệu Đại Cương

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hóa học đại cương

+
+
+ + +
+
+
+

Vật lý đại cương A1

+
+
+ + +
+
+
+

Bài tập toán cao cấp

+
+
+ + +
+
+
+

Nhũng nguyên lý cơ bản của

chủ nghĩa Mác _lê Nin

+
+
+ + +
+
+
+

Trang

+
+
+ + +
+
+
+

1

+
+
+ + +
+
+
+

2

+
+
+ + +
+
+
+

3 . . .

+
+
+ + +
+
+
+

Trang cuối

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/14_slide.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/14_slide.html new file mode 100644 index 0000000..07da0f1 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/14_slide.html @@ -0,0 +1,254 @@ + + + + 14.Slide + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+ +
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

C# IN DEPTH

+
+
+ + +
+
+
+

Giáo trình lập trình

JAVA

+
+
+ + +
+
+
+

Lập trình cơ bản

PHP và MySQL

+
+
+ + +
+
+
+

Ngôn ngữ lập trình C++

và Cấu trúc dữ liệu

+
+
+ + +
+
+
+

Trang

+
+
+ + +
+
+
+

1

+
+
+ + +
+
+
+

2

+
+
+ + +
+
+
+

3 . . .

+
+
+ + +
+
+
+

Trang cuối

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/15_viewdocument.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/15_viewdocument.html new file mode 100644 index 0000000..ba19d0b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/15_viewdocument.html @@ -0,0 +1,231 @@ + + + + 15.ViewDocument + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+
+
+

CODE DẠO KÍ SỰ

+
+
+ + +
+
+
+

Giới thiệu sách

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Giá bán:

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/16_uploaddocument.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/16_uploaddocument.html new file mode 100644 index 0000000..94a33ee --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/16_uploaddocument.html @@ -0,0 +1,231 @@ + + + + 16.UploadDocument + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + +
+
+
+ + +
+
+
+

Hủy

+
+
+ + +
+
+
+

Đăng Tải

+
+
+ + +
+
+
+

Chọn tài liệu

+
+
+ + +
+
+
+ + +
+
+
+

Tiêu Đề Tài Liệu

+
+
+ + +
+
+
+

Mô Tả Chung

+
+
+ + +
+
+
+

Chú Thích

+
+
+ + + + + + + + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/17_updateexercise.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/17_updateexercise.html new file mode 100644 index 0000000..acd7d69 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/17_updateexercise.html @@ -0,0 +1,274 @@ + + + + 17.UpdateExercise + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + +
+
+
+

Cập nhật

+
+
+ + +
+
+
+

Chọn câu hỏi

+
+
+ + +
+
+
+ + +
+
+
+

Chủ Đề - Phân Loại

+
+
+ + +
+
+
+

Nội dung

+
+
+ + + + + + + + + + + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Câu 1:

Hãy chọn câu trả lời đúng nhất cho câu hỏi sau:

 Làm thế nào..... abc....để có thể thực hiện được....




Đáp án:

+
+
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+

Hủy

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/18_deleteexercise.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/18_deleteexercise.html new file mode 100644 index 0000000..15678a3 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/18_deleteexercise.html @@ -0,0 +1,202 @@ + + + + 18.DeleteExercise + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Xóa

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Chọn Chủ Đề

+
+
+ + +
+ +
+ + + +
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/19_uploadquestion_votequestion.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/19_uploadquestion_votequestion.html new file mode 100644 index 0000000..3f62929 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/19_uploadquestion_votequestion.html @@ -0,0 +1,462 @@ + + + + 19.UploadQuestion_VoteQuestion + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + +
+
+
+

Tìm kiếm câu hỏi

+
+
+ + +
+
+
+

Câu hỏi

+
+
+ + +
+ +
+ + +
+
+
+

Tìm

+
+
+ + +
+
+
+ + +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Câu hỏi 1

+
+
+ + +
+
+
+

Nội dung câu hỏi 1

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Trả lời

+
+
+ + +
+
+
+ + +
+
+
+

Câu hỏi 2

+
+
+ + +
+
+
+

Nội dung câu hỏi 2

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Trả lời

+
+
+ + +
+
+
+ + +
+
+
+

Câu hỏi 3

+
+
+ + +
+
+
+

Nội dung câu hỏi 3

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Trả lời

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + + + + +
+
+
+

Đặt câu hỏi

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+
+
+

Chủ đề 1

+
+
+ + +
+
+
+

Chủ đề 2

+
+
+ + +
+
+
+

Chủ đề 3

+
+
+ + +
+
+
+

Chat với chuyên gia

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/1_home.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/1_home.html new file mode 100644 index 0000000..73be93c --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/1_home.html @@ -0,0 +1,272 @@ + + + + 1.Home + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+ +
+ + +
+
+
+

Đăng Nhập

+
+
+ + +
+
+
+

Đăng Ký

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

C# IN DEPTH

+
+
+ + +
+
+
+

Code dạo ký sự

+
+
+ + +
+
+
+

Tài liệu cơ nhiệt

+
+
+ + +
+
+
+

Tài liệu Mác-Lê Nin

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/20_hotquestion.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/20_hotquestion.html new file mode 100644 index 0000000..cae8fef --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/20_hotquestion.html @@ -0,0 +1,478 @@ + + + + 20.HotQuestion + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + +
+
+
+

Tìm kiếm câu hỏi

+
+
+ + +
+
+
+

Câu hỏi

+
+
+ + +
+ +
+ + +
+
+
+

Tìm

+
+
+ + +
+
+
+ + +
+
+
+

Chat với chuyên gia

+
+
+ + +
+
+
+

Chủ đề 1

+
+
+ + +
+
+
+

Chủ đề 2

+
+
+ + +
+
+
+

Chủ đề 3

+
+
+ + +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Câu hỏi 1

+
+
+ + +
+
+
+

Nội dung câu hỏi 1

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Trả lời

+
+
+ + +
+
+
+ + +
+
+
+

Câu hỏi 2

+
+
+ + +
+
+
+

Nội dung câu hỏi 2

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Trả lời

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + + + + +
+
+
+

Đặt câu hỏi

+
+
+ + +
+
+
+

Top câu hỏi trong tuần

+
+
+ + +
+
+
+

Top câu hỏi

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+ + +
+
+
+

Câu hỏi 3

+
+
+ + +
+
+
+

Nội dung câu hỏi 3

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Trả lời

+
+
+ + +
+ +
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + +
+ +
+ + +
+ +
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/21_questiondetails.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/21_questiondetails.html new file mode 100644 index 0000000..0ecb0bd --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/21_questiondetails.html @@ -0,0 +1,339 @@ + + + + 21.QuestionDetails + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + +
+
+
+

Tìm kiếm câu hỏi

+
+
+ + +
+
+
+

Câu hỏi

+
+
+ + +
+ +
+ + +
+
+
+

Tìm

+
+
+ + +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ + +
+
+
+

Câu hỏi

+
+
+ + +
+
+
+

Nội dung câu hỏi

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Trả lời

+
+
+ + +
+ +
+ + +
+
+
+

123

+
+
+ + +
+
+
+

123

+
+
+ + + + + +
+
+
+

Đặt câu hỏi

+
+
+ + +
+
+
+

Câu trả lời:

+
+
+ + +
+ +
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Chat với chuyên gia

+
+
+ + +
+
+
+

Chủ đề 1

+
+
+ + +
+
+
+

Chủ đề 2

+
+
+ + +
+
+
+

Chủ đề 3

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/22_searchquestionresult.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/22_searchquestionresult.html new file mode 100644 index 0000000..02dc857 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/22_searchquestionresult.html @@ -0,0 +1,303 @@ + + + + 22.SearchQuestionResult + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + +
+
+
+

Tìm kiếm câu hỏi

+
+
+ + +
+
+
+

Câu hỏi

+
+
+ + +
+ +
+ + +
+
+
+

Tìm

+
+
+ + +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ + +
+
+
+

Câu hỏi

+
+
+ + +
+
+
+

Nội dung câu hỏi

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Trả lời

+
+
+ + +
+ +
+ + +
+
+
+

Đặt câu hỏi

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Chat với chuyên gia

+
+
+ + +
+
+
+

Chủ đề 1

+
+
+ + +
+
+
+

Chủ đề 2

+
+
+ + +
+
+
+

Chủ đề 3

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/23_uploadquestion.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/23_uploadquestion.html new file mode 100644 index 0000000..22880d5 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/23_uploadquestion.html @@ -0,0 +1,246 @@ + + + + 23.UploadQuestion + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Đăng câu hỏi

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Tiêu đề

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Nội dung

+
+
+ + + + + + + + + + + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Quay Lại

+
+
+ + +
+
+
+

Chọn chủ đề câu hỏi

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/24_uploaddocument.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/24_uploaddocument.html new file mode 100644 index 0000000..a77f6ff --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/24_uploaddocument.html @@ -0,0 +1,291 @@ + + + + 24.UploadDocument + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+
+
+

Tiều đề tài liệu

+
+
+ + +
+
+
+

Chủ đề

+
+
+ + +
+
+
+

Giới thiệu

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Sách liên quan

+
+
+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+
+
+

Đăng tải tài liệu

+
+
+ + +
+
+
+

Chọn Tệp

+
+
+ + +
+
+
+

Chọn ảnh bìa

+
+
+ + +
+
+
+

Thêm

+
+
+ + +
+
+
+

Quay lại

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/25_updatedocument.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/25_updatedocument.html new file mode 100644 index 0000000..39b07fc --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/25_updatedocument.html @@ -0,0 +1,267 @@ + + + + 25.UpdateDocument + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+
+
+

Tiều đề tài liệu

+
+
+ + +
+
+
+

Chủ đề

+
+
+ + +
+
+
+

Giới thiệu

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Sách liên quan

+
+
+ + +
+ +
+ + + + + + + + +
+ +
+ + +
+
+
+

Chọn Tệp

+
+
+ + +
+
+
+

Chọn ảnh bìa

+
+
+ + +
+
+
+

Thêm

+
+
+ + +
+
+
+

Quay lại

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/26_deletedocument.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/26_deletedocument.html new file mode 100644 index 0000000..f5ad3cd --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/26_deletedocument.html @@ -0,0 +1,326 @@ + + + + 26.DeleteDocument + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Chi tiết

+
+
+ + +
+
+
+

Chi tiết

+
+
+ + +
+
+
+

Chi tiết

+
+
+ + +
+
+
+

Xóa

+
+
+ + +
+
+
+

Xóa

+
+
+ + +
+
+
+

Xóa

+
+
+ + + + + + + + + + + +
+ +
+ + +
+
+
+

Chi tiết

+
+
+ + +
+
+
+

Xóa

+
+
+ + + + + +
+ +
+ + +
+
+
+

Chi tiết

+
+
+ + +
+
+
+

Xóa

+
+
+ + + + + +
+ +
+ + +
+
+
+

Chi tiết

+
+
+ + +
+
+
+

Xóa

+
+
+ + + + + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/27_usersetting.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/27_usersetting.html new file mode 100644 index 0000000..579e8bf --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/27_usersetting.html @@ -0,0 +1,468 @@ + + + + 27.UserSetting + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ +
+

STT

+
+
+ + +
+ +
+

Tài Khoản

+
+
+ + +
+ +
+

Cấp quyền

+
+
+ + +
+ +
+ + +
+ +
+

1

+
+
+ + +
+ +
+

hochnt@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+

2

+
+
+ + +
+ +
+

phucnx@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+

3

+
+
+ + +
+ +
+

mintt@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+

4

+
+
+ + +
+ +
+

hoant@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+

5

+
+
+ + +
+ +
+

phongdth@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Lưu

+
+
+ + +
+
+
+

Lưu

+
+
+ + +
+
+
+

Lưu

+
+
+ + +
+
+
+

Lưu

+
+
+ + +
+
+
+

Lưu

+
+
+ + +
+
+
+

Quay Lại

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/28_lockuser.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/28_lockuser.html new file mode 100644 index 0000000..19fb6c4 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/28_lockuser.html @@ -0,0 +1,383 @@ + + + + 28.LockUser + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ +
+

STT

+
+
+ + +
+ +
+

Tài Khoản

+
+
+ + +
+ +
+ + +
+ +
+

1

+
+
+ + +
+ +
+

hochnt@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+

2

+
+
+ + +
+ +
+

phucnx@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+

3

+
+
+ + +
+ +
+

mintt@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+

4

+
+
+ + +
+ +
+

hoant@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+

5

+
+
+ + +
+ +
+

phongdth@gmail.com

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Khóa

+
+
+ + +
+
+
+

Khóa

+
+
+ + +
+
+
+

Khóa

+
+
+ + +
+
+
+

Khóa

+
+
+ + +
+
+
+

Khóa

+
+
+ + +
+
+
+

Quay Lại

+
+
+ + + +
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/29_connecterror.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/29_connecterror.html new file mode 100644 index 0000000..0c79ee7 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/29_connecterror.html @@ -0,0 +1,33 @@ + + + + 29.ConnectError + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/2_signin.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/2_signin.html new file mode 100644 index 0000000..d084278 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/2_signin.html @@ -0,0 +1,285 @@ + + + + 2.SignIn + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+ +
+ + +
+
+
+

Đăng Nhập

+
+
+ + +
+
+
+

Đăng Ký

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+
+
+

Đăng Ký Tài Khoản

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+

Đăng Ký

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Quay Lại

+
+
+ + +
+
+
+

Đã có tài khoản?

+
+
+ + + + + +
+
+
+

Đăng ký với Facebook

+
+
+ + +
+
+
+

Đăng ký với Google

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

----- Đăng Ký Với Email -----

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/30_categories.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/30_categories.html new file mode 100644 index 0000000..706c5c7 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/30_categories.html @@ -0,0 +1,276 @@ + + + + 30.Categories + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Giỏ hàng(2 sản phẩm)

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Lập trình cơ bản

PHP và MySQL

+
+
+ + +
+
+
+

C# IN DEPTH

+
+
+ + +
+
+
+

250.000đ

+
+
+ + +
+
+
+

300.000đ

+
+
+ + +
+
+
+

Xóa

+
+
+ + +
+
+
+

Mua sau

+
+
+ + +
+
+
+

Tiến hành thanh toán

+
+
+ + +
+
+
+

Mua sau

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Thành Tiền

+
+
+ + +
+
+
+

550.000đ

+
+
+ + + + + +
+
+
+

Xóa

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/3_forgotpass.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/3_forgotpass.html new file mode 100644 index 0000000..e12a568 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/3_forgotpass.html @@ -0,0 +1,188 @@ + + + + 3.ForgotPass + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+ +
+ + +
+
+
+

Đăng Nhập

+
+
+ + +
+
+
+

Đăng Ký

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+
+
+

Quên mật khẩu

+
+
+ + +
+ +
+ + +
+
+
+

Lấy mật khẩu

+
+
+ + + + + +
+ +
+ + +
+
+
+

Đăng nhập

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/4_login.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/4_login.html new file mode 100644 index 0000000..3a81756 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/4_login.html @@ -0,0 +1,258 @@ + + + + 4.Login + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+ +
+ + +
+
+
+

Đăng Nhập

+
+
+ + +
+
+
+

Đăng Ký

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+
+
+

Đăng nhập tài khoản

+
+
+ + +
+ +
+ + +
+ +
+ + + + + +
+
+
+

Đăng nhập

+
+
+ + +
+ + +
+ + + + + + + + +
+
+
+

Đăng nhập với Facebook

+
+
+ + +
+
+
+

Đăng nhập với Google

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Đăng Ký

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

----- Đăng nhập Với Email -----

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/5_updateprofile.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/5_updateprofile.html new file mode 100644 index 0000000..2f8d662 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/5_updateprofile.html @@ -0,0 +1,316 @@ + + + + 5.UpdateProfile + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Cập nhật thông tin cá nhân


+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Cập Nhật

+
+
+ + + + + + + + +
+
+
+ + + + + +
+
+
+ + + + + + + + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Quay Lại

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/6_history.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/6_history.html new file mode 100644 index 0000000..3da3586 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/6_history.html @@ -0,0 +1,354 @@ + + + + 6.History + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ +
+

Thời gian

+
+
+ + +
+ +
+

Tài Khoản

+
+
+ + +
+ +
+

Hành Động

+
+
+ + +
+ +
+

15/10/2017 12:00:00

+
+
+ + +
+ +
+

hochnt@gmail.com

+
+
+ + +
+ +
+

Đăng nhập

+
+
+ + +
+ +
+

15/10/2017 12:30:00

+
+
+ + +
+ +
+

hochnt@gmail.com

+
+
+ + +
+ +
+

Đăng tải tài liệu

+
+
+ + +
+ +
+

15/10/2017 13:00:00

+
+
+ + +
+ +
+

hochnt@gmail.com

+
+
+ + +
+ +
+

Đăng xuất

+
+
+ + +
+ +
+

15/10/2017 12:00:00

+
+
+ + +
+ +
+

hoant@gmail.com

+
+
+ + +
+ +
+

Đăng nhập

+
+
+ + +
+ +
+

15/10/2017 13:00:00

+
+
+ + +
+ +
+

hoant@gmail.com

+
+
+ + +
+ +
+

Chỉnh sửa tài liệu

+
+
+ + +
+ +
+

15/10/2017 13:00:00

+
+
+ + +
+ +
+

phongdth@gmail.com

+
+
+ + +
+ +
+

Xóa tài liệu

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/7_finduser.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/7_finduser.html new file mode 100644 index 0000000..92ba6e9 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/7_finduser.html @@ -0,0 +1,238 @@ + + + + 7.FindUser + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+ + + + + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/8_listbook.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/8_listbook.html new file mode 100644 index 0000000..ace795b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/8_listbook.html @@ -0,0 +1,296 @@ + + + + 8.ListBook + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Tài liệu vừa đăng tải

+
+
+ + +
+
+
+

C# IN DEPTH

+
+
+ + +
+
+
+

Code dạo ký sự

+
+
+ + +
+
+
+

Tài liệu cơ nhiệt

+
+
+ + +
+
+
+

Tài liệu Mác-Lê Nin

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/9_azbook.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/9_azbook.html new file mode 100644 index 0000000..045af2f --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/9_azbook.html @@ -0,0 +1,336 @@ + + + + 9.AZBook + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Thứ tự A-Z

+
+
+ + +
+
+
+

C# IN DEPTH

+
+
+ + +
+
+
+

Code dạo ký sự

+
+
+ + +
+
+
+

Tài liệu cơ nhiệt

+
+
+ + +
+
+
+

Tài liệu Mác-Lê Nin

+
+
+ + +
+
+
+

Trang

+
+
+ + +
+
+
+

1

+
+
+ + +
+
+
+

2

+
+
+ + +
+
+
+

3 . . .

+
+
+ + +
+
+
+

Trang cuối

+
+
+ + + + +
+ +
+ + +
+
+
+

Đăng Xuất

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Danh Mục

+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+

Hà Nguyễn Thái Học

+
+
+ + +
+ + +
+
+
+ + +
+ +
+ + +
+
+
+

16HCB Copyright 2017

+
+
+
+ + + + + +
+ +
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Tải xuống

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

Free

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

5$

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+ + +
+
+
+

Đưa vào giỏ

+
+
+
+ + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/data/document.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/data/document.js new file mode 100644 index 0000000..e18bbfd --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/data/document.js @@ -0,0 +1,7 @@ +$axure.loadDocument( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If selected option of This equals Mới đăng tải)",ci="condition",cj="exprType",ck="binaryOp",cl="op",cm="==",cn="leftExpr",co="fcall",cp="functionName",cq="GetSelectedOption",cr="arguments",cs="pathLiteral",ct="isThis",cu="isFocused",cv="isTarget",cw="rightExpr",cx="optionLiteral",cy="value",cz="Mới đăng tải",cA="Open 8.ListBook in Current Window",cB="8_listbook.html",cC="Case 2
(Else If selected option of This equals A-Z)",cD="A-Z",cE="Open 9.AZBook in Current Window",cF="9_azbook.html",cG="Case 3
(Else If selected option of This equals Z-A)",cH="Z-A",cI="Open 10..ZABook in Current Window",cJ="aab96907042a406fbe3cc489ff1a384a",cK=1391,cL="images/1_home/u20.png",cM="60248f53c3ab485d9bfbbce9799218f3",cN=1418,cO="images/1_home/imgdanhmuc_u8.png",cP="c074e81aad5643ca9a3bf6554b43b1de",cQ="Rectangle",cR="vectorShape",cS=70,cT=16,cU="2285372321d148ec80932747449c36c9",cV="generateCompound",cW="715858a8917246f6823cb6fe6d846f68",cX="fontWeight",cY="700",cZ=113,da="8c7a4c5ad69a4369a5f7788171ac0b32",db=1185,dc=674,dd="db3781f5f78842a3bcb61ed754793328",de=137,df=842,dg="39631c8aeb3f4a2aad56f68e82375d4a",dh=141,di=482,dj="f83d035018ef431287529770167cb793",dk=165,dl=99,dm="78e2bd5eb2a3409295591ecbea84587f",dn=38,dp=545,dq=762,dr="9566351aa9e8464e86994cc7107adbad",ds=9,dt=611,du="43683e7bfdbd45b49ebd991abcfb669b",dv=630,dw="58920df087fa4a4295ad22751a71fcc5",dx=33,dy=649,dz="349d160eaba942899135599f661e3788",dA=68,dB=692,dC="82a55fee6d014b12ae92c21d386457be",dD="Header sau khi dang nhap",dE="referenceDiagramObject",dF=1440,dG=849,dH="masterId",dI="510564ce784d40c7be615f5485d34622",dJ="6729afcecf4746199a108a1f10082dc3",dK=92,dL="cd64754845384de3872fb4a066432c1f",dM=130,dN=713,dO="e1c205b11165411d9dfbd2ef9aa095da",dP=518,dQ="21ee370ed7404bcd96c2997e2e6a3273",dR=31,dS=264,dT=665,dU=0xFF199ED8,dV="780253a008224bf9819c16e8ecb50e39",dW=623,dX="ac18e28b416745f79b579f8263c3717b",dY=17,dZ=989,ea=0xFFCC3333,eb="479bf9b3bc9241ecaa7d35b907c1fd51",ec=1308,ed="3e20f8a73ece4064b8d0ccaee3adeb59",ee=865,ef="bdf6e9c162724bc480d19c49c0000acb",eg=1232,eh="masters",ei="510564ce784d40c7be615f5485d34622",ej="Axure:Master",ek="fb703f71faa74ee2a50a36acbf89b2a9",el=62,em="4b7bfc596114427989e10bb0b557d0ce",en=0xFFF2F2F2,eo="linePattern",ep="none",eq="images/1_home/u2.png",er="e6f63b059bcf43f3a96c8a990ecbfcbc",es="btnDangNhap",et=40,eu=1325,ev=0xFFCC0066,ew="Open 4.Login in Current Window",ex="4_login.html",ey="c4034a50406140e59d4e903581d22fc6",ez="txtTimKiem",eA="Text Field",eB="textBox",eC=37,eD="stateStyles",eE="hint",eF="foreGroundFill",eG=0xFF999999,eH="opacity",eI=1,eJ="44157808f2934100b68f2394a66b2bba",eK=346,eL="placeholderText",eM="Tìm kiếm tài liệu",eN="7bf6dce5f0d54a039254ce84b66aff06",eO="btnTimKiem",eP=42,eQ=646,eR="Open http://google.com in Current Window",eS="webUrl",eT="urlLiteral",eU="stringLiteral",eV="http://google.com",eW="stos",eX="images/1_home/btntimkiem_u6.png",eY="2b3b1d15eaa741d8ba8653251c256674",eZ="imgDanhMuc",fa=29,fb=196,fc="fadeWidget",fd="Show/Hide Widget",fe="objectsToFades",ff="Case 2",fg="50b8e9a5763b4be29df32a27d001bc1f",fh="lblDanhMuc",fi=73,fj=229,fk="verticalAlignment",fl="middle",fm="98ff46c1e0cd42329a42871b703fe1e7",fn="imgLogoHeader",fo=114,fp=6,fq=12,fr="Open 1.Home in Current Window",fs="1_home.html",ft="images/1_home/imglogoheader_u7.png",fu="eadb0c99e3054247afafe26fcbcdecbd",fv=36,fw="1136c3bb487940fb91dab49aa20e1c95",fx=1268,fy="cornerRadius",fz="50",fA="images/5_updateprofile/u165.png",fB="5ec8c781ee1e42c196b4b74e7721a094",fC=0xFF0066FF,fD=150,fE=1108,fF="horizontalAlignment",fG="center",fH="Open 5.UpdateProfile in New Window/Tab",fI="5_updateprofile.html",fJ="new",fK="e19761ac1d5647e19caf118662662efa",fL="Group",fM="layer",fN=0,fO="objs",fP="acd21607462d4c8a80179c4e8738ca22",fQ=50,fR="47641f9a00ac465095d6b672bbdffef6",fS=799,fT=0xFFE4E4E4,fU="9bde9ee693514f6cbcea5d7cd987da2d",fV=7,fW=805,fX="images/1_home/u12.png",fY="cf71097e6bbe472688668d0658a742b4",fZ=49,ga="propagate",gb="3fdf17c6a3ed4eae81b1732938ef10a5",gc="Menu",gd="menuObject",ge=136,gf=120,gg=200,gh="e51d8c31b5e44607a2dbf1d734f2910c",gi="Table",gj="table",gk="bfd1e27ae750487da4c58fc231c250cf",gl="Menu Item",gm="tableCell",gn=30,go="2036b2baccbc41f0b9263a6981a11a42",gp="left",gq="Open 11.ITBook in Current Window",gr="11_itbook.html",gs="images/1_home/u16.png",gt="158d5fa596254b7195940b50047beb56",gu="Open 12.EconomicBook in Current Window",gv="12_economicbook.html",gw="a48d5d2765f743ec96e8c9500301c869",gx=60,gy="Open 13.Outlinebook in Current Window",gz="13_outlinebook.html",gA="08b5728dc6854e7b91fb6036df6c64c2",gB=90,gC="Open 14.Slide in Current Window",gD="14_slide.html",gE="images/1_home/u19.png",gF="508308f1f2c343d897e988dbe2433526",gG=45,gH=1053,gI="images/5_updateprofile/u177.png",gJ="objectPaths",gK="8fc3798815b04431b5529994cdd7d3c1",gL="scriptId",gM="u357",gN="ee91618329e54533863b907a59d43bf0",gO="u358",gP="4da8c7db7d2b474c9c0d8ca58ac72827",gQ="u359",gR="88aced78fb4d470889acbb17966f63f5",gS="u360",gT="94205c28c6734696b3569705cc9354ec",gU="u361",gV="aab96907042a406fbe3cc489ff1a384a",gW="u362",gX="60248f53c3ab485d9bfbbce9799218f3",gY="u363",gZ="c074e81aad5643ca9a3bf6554b43b1de",ha="u364",hb="715858a8917246f6823cb6fe6d846f68",hc="u365",hd="db3781f5f78842a3bcb61ed754793328",he="u366",hf="39631c8aeb3f4a2aad56f68e82375d4a",hg="u367",hh="f83d035018ef431287529770167cb793",hi="u368",hj="78e2bd5eb2a3409295591ecbea84587f",hk="u369",hl="9566351aa9e8464e86994cc7107adbad",hm="u370",hn="43683e7bfdbd45b49ebd991abcfb669b",ho="u371",hp="58920df087fa4a4295ad22751a71fcc5",hq="u372",hr="349d160eaba942899135599f661e3788",hs="u373",ht="82a55fee6d014b12ae92c21d386457be",hu="u374",hv="fb703f71faa74ee2a50a36acbf89b2a9",hw="u375",hx="e6f63b059bcf43f3a96c8a990ecbfcbc",hy="u376",hz="c4034a50406140e59d4e903581d22fc6",hA="u377",hB="7bf6dce5f0d54a039254ce84b66aff06",hC="u378",hD="2b3b1d15eaa741d8ba8653251c256674",hE="u379",hF="50b8e9a5763b4be29df32a27d001bc1f",hG="u380",hH="98ff46c1e0cd42329a42871b703fe1e7",hI="u381",hJ="eadb0c99e3054247afafe26fcbcdecbd",hK="u382",hL="5ec8c781ee1e42c196b4b74e7721a094",hM="u383",hN="e19761ac1d5647e19caf118662662efa",hO="u384",hP="acd21607462d4c8a80179c4e8738ca22",hQ="u385",hR="9bde9ee693514f6cbcea5d7cd987da2d",hS="u386",hT="cf71097e6bbe472688668d0658a742b4",hU="u387",hV="3fdf17c6a3ed4eae81b1732938ef10a5",hW="u388",hX="e51d8c31b5e44607a2dbf1d734f2910c",hY="u389",hZ="bfd1e27ae750487da4c58fc231c250cf",ia="u390",ib="158d5fa596254b7195940b50047beb56",ic="u391",id="a48d5d2765f743ec96e8c9500301c869",ie="u392",ig="08b5728dc6854e7b91fb6036df6c64c2",ih="u393",ii="508308f1f2c343d897e988dbe2433526",ij="u394",ik="6729afcecf4746199a108a1f10082dc3",il="u395",im="e1c205b11165411d9dfbd2ef9aa095da",io="u396",ip="21ee370ed7404bcd96c2997e2e6a3273",iq="u397",ir="780253a008224bf9819c16e8ecb50e39",is="u398",it="ac18e28b416745f79b579f8263c3717b",iu="u399",iv="479bf9b3bc9241ecaa7d35b907c1fd51",iw="u400",ix="3e20f8a73ece4064b8d0ccaee3adeb59",iy="u401",iz="bdf6e9c162724bc480d19c49c0000acb",iA="u402"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/10__zabook/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/10__zabook/styles.css new file mode 100644 index 0000000..a6adc23 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/10__zabook/styles.css @@ -0,0 +1,1265 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u357_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:300px; + height:450px; +} +#u357 { + border-width:0px; + position:absolute; + left:46px; + top:199px; + width:300px; + height:450px; +} +#u357_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u358_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:306px; + height:450px; +} +#u358 { + border-width:0px; + position:absolute; + left:406px; + top:199px; + width:306px; + height:450px; +} +#u358_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u359_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:295px; + height:450px; +} +#u359 { + border-width:0px; + position:absolute; + left:769px; + top:199px; + width:295px; + height:450px; +} +#u359_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u360_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:324px; + height:450px; +} +#u360 { + border-width:0px; + position:absolute; + left:1116px; + top:199px; + width:324px; + height:450px; +} +#u360_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u361 { + border-width:0px; + position:absolute; + left:1067px; + top:125px; + width:300px; + height:22px; +} +#u361_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u361_input:disabled { + color:grayText; +} +#u362_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u362 { + border-width:0px; + position:absolute; + left:1391px; + top:125px; + width:22px; + height:22px; +} +#u362_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u363_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u363 { + border-width:0px; + position:absolute; + left:1418px; + top:125px; + width:22px; + height:22px; +} +#u363_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u364_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:70px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u364 { + border-width:0px; + position:absolute; + left:46px; + top:125px; + width:70px; + height:16px; +} +#u364_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:70px; + white-space:nowrap; +} +#u365_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:113px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u365 { + border-width:0px; + position:absolute; + left:1185px; + top:674px; + width:113px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u365_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:113px; + white-space:nowrap; +} +#u366_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:137px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u366 { + border-width:0px; + position:absolute; + left:842px; + top:674px; + width:137px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u366_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:137px; + white-space:nowrap; +} +#u367_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:141px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u367 { + border-width:0px; + position:absolute; + left:482px; + top:674px; + width:141px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u367_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:141px; + white-space:nowrap; +} +#u368_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:165px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u368 { + border-width:0px; + position:absolute; + left:99px; + top:674px; + width:165px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u368_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:165px; + white-space:nowrap; +} +#u369_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:38px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u369 { + border-width:0px; + position:absolute; + left:545px; + top:762px; + width:38px; + height:16px; +} +#u369_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:38px; + white-space:nowrap; +} +#u370_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:9px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u370 { + border-width:0px; + position:absolute; + left:611px; + top:762px; + width:9px; + height:16px; +} +#u370_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:9px; + white-space:nowrap; +} +#u371_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:9px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u371 { + border-width:0px; + position:absolute; + left:630px; + top:762px; + width:9px; + height:16px; +} +#u371_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:9px; + white-space:nowrap; +} +#u372_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:33px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u372 { + border-width:0px; + position:absolute; + left:649px; + top:762px; + width:33px; + height:16px; +} +#u372_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:33px; + white-space:nowrap; +} +#u373_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:68px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u373 { + border-width:0px; + position:absolute; + left:692px; + top:762px; + width:68px; + height:16px; +} +#u373_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:68px; + white-space:nowrap; +} +#u375_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u375 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u375_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u376_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u376 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u376_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u377 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u377_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u378_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u378 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u378_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u379_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u379 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u379_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u380_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u380 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u380_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u381_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u381 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u381_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u382_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u382 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u382_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u383_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u383 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u383_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u384 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u385_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u385 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u385_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u386_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u386 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u386_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u387_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u387 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u387_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u388 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u388_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u389 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u390_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u390 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u390_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u391_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u391 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u391_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u392_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u392 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u392_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u393_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u393 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u393_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u394_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u394 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u394_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u395_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u395 { + border-width:0px; + position:absolute; + left:130px; + top:713px; + width:92px; + height:33px; +} +#u395_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u396_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u396 { + border-width:0px; + position:absolute; + left:518px; + top:713px; + width:92px; + height:33px; +} +#u396_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u397_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + height:16px; + background:inherit; + background-color:rgba(25, 158, 216, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u397 { + border-width:0px; + position:absolute; + left:264px; + top:665px; + width:31px; + height:16px; +} +#u397_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + white-space:nowrap; +} +#u398_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + height:16px; + background:inherit; + background-color:rgba(25, 158, 216, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u398 { + border-width:0px; + position:absolute; + left:623px; + top:665px; + width:31px; + height:16px; +} +#u398_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + white-space:nowrap; +} +#u399_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + height:16px; + background:inherit; + background-color:rgba(204, 51, 51, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u399 { + border-width:0px; + position:absolute; + left:989px; + top:665px; + width:17px; + height:16px; +} +#u399_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + white-space:nowrap; +} +#u400_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + height:16px; + background:inherit; + background-color:rgba(204, 51, 51, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u400 { + border-width:0px; + position:absolute; + left:1308px; + top:665px; + width:17px; + height:16px; +} +#u400_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + white-space:nowrap; +} +#u401_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u401 { + border-width:0px; + position:absolute; + left:865px; + top:713px; + width:92px; + height:33px; +} +#u401_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u402_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u402 { + border-width:0px; + position:absolute; + left:1232px; + top:713px; + width:92px; + height:33px; +} +#u402_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/11_itbook/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/11_itbook/data.js new file mode 100644 index 0000000..01d78f4 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/11_itbook/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on This equals "kCo")",cm="isNewIfGroup",cn="condition",co="exprType",cp="binaryOp",cq="op",cr="==",cs="leftExpr",ct="fcall",cu="functionName",cv="GetWidgetText",cw="arguments",cx="pathLiteral",cy="isThis",cz="isFocused",cA="isTarget",cB="rightExpr",cC="stringLiteral",cD="value",cE="kCo",cF="stos",cG="actions",cH="action",cI="fadeWidget",cJ="Show/Hide Widget",cK="objectsToFades",cL="Hide (Image)",cM="objectPath",cN="db56597430c541af907446b8c5dff798",cO="fadeInfo",cP="fadeType",cQ="hide",cR="options",cS="showType",cT="none",cU="bringToFront",cV="Case 1
(Else If text on (Text Field) equals "SGK")",cW="SGK",cX="linkWindow",cY="Open 8.ListBook in Current Window",cZ="target",da="targetType",db="8_listbook.html",dc="includeVariables",dd="linkType",de="current",df="Case 3
(Else If text on This equals "ptanh")",dg="ptanh",dh="Open 5.UpdateProfile in Current Window",di="5_updateprofile.html",dj="tabbable",dk="placeholderText",dl=1005,dm=82,dn="images/15_viewdocument/u599.png",dp="67313a17dc944ab9a2d544d61887e4c0",dq="Text Area",dr="textArea",ds=972,dt=526,du="42ee17691d13435b8256d8d0a814778f",dv=410,dw="e2b5e63b88bc4c64a2c9bd5ba82d8705",dx=92,dy=33,dz="cd64754845384de3872fb4a066432c1f",dA=150,dB=711,dC="25a630b275734fcebb7eb742428d86ac",dD=17,dE=16,dF="2285372321d148ec80932747449c36c9",dG=225,dH=685,dI=0xFFCCFF99,dJ="b0eaa18fd99d4776a789a59cfc29511a",dK=55,dL="masters",dM="510564ce784d40c7be615f5485d34622",dN="Axure:Master",dO="fb703f71faa74ee2a50a36acbf89b2a9",dP=62,dQ="4b7bfc596114427989e10bb0b557d0ce",dR=0xFFF2F2F2,dS="linePattern",dT="images/1_home/u2.png",dU="e6f63b059bcf43f3a96c8a990ecbfcbc",dV="btnDangNhap",dW=99,dX=1325,dY=9,dZ=0xFFCC0066,ea="onClick",eb="OnClick",ec="Case 1",ed="Open 4.Login in Current Window",ee="4_login.html",ef="c4034a50406140e59d4e903581d22fc6",eg="txtTimKiem",eh=37,ei=346,ej="Tìm kiếm tài liệu",ek="7bf6dce5f0d54a039254ce84b66aff06",el="btnTimKiem",em=42,en=646,eo="Open http://google.com in Current Window",ep="webUrl",eq="urlLiteral",er="http://google.com",es="images/1_home/btntimkiem_u6.png",et="2b3b1d15eaa741d8ba8653251c256674",eu="imgDanhMuc",ev=29,ew=196,ex="Case 2",ey="images/1_home/imgdanhmuc_u8.png",ez="50b8e9a5763b4be29df32a27d001bc1f",eA="lblDanhMuc",eB=73,eC=229,eD="verticalAlignment",eE="middle",eF="98ff46c1e0cd42329a42871b703fe1e7",eG="imgLogoHeader",eH=114,eI=38,eJ=6,eK=12,eL="Open 1.Home in Current Window",eM="1_home.html",eN="images/1_home/imglogoheader_u7.png",eO="eadb0c99e3054247afafe26fcbcdecbd",eP=36,eQ="1136c3bb487940fb91dab49aa20e1c95",eR=1268,eS="cornerRadius",eT="50",eU="images/5_updateprofile/u165.png",eV="5ec8c781ee1e42c196b4b74e7721a094",eW=0xFF0066FF,eX=1108,eY="horizontalAlignment",eZ="center",fa="Open 5.UpdateProfile in New Window/Tab",fb="new",fc="e19761ac1d5647e19caf118662662efa",fd="Group",fe="layer",ff=0,fg="objs",fh="acd21607462d4c8a80179c4e8738ca22",fi=50,fj="47641f9a00ac465095d6b672bbdffef6",fk=799,fl=0xFFE4E4E4,fm="9bde9ee693514f6cbcea5d7cd987da2d",fn=7,fo=805,fp="images/1_home/u12.png",fq="cf71097e6bbe472688668d0658a742b4",fr=49,fs="propagate",ft="3fdf17c6a3ed4eae81b1732938ef10a5",fu="Menu",fv="menuObject",fw=136,fx=120,fy=200,fz=46,fA="e51d8c31b5e44607a2dbf1d734f2910c",fB="Table",fC="table",fD="bfd1e27ae750487da4c58fc231c250cf",fE="Menu Item",fF="tableCell",fG=30,fH="2036b2baccbc41f0b9263a6981a11a42",fI="left",fJ="Open 11.ITBook in Current Window",fK="11_itbook.html",fL="images/1_home/u16.png",fM="158d5fa596254b7195940b50047beb56",fN="Open 12.EconomicBook in Current Window",fO="12_economicbook.html",fP="a48d5d2765f743ec96e8c9500301c869",fQ=60,fR="Open 13.Outlinebook in Current Window",fS="13_outlinebook.html",fT="08b5728dc6854e7b91fb6036df6c64c2",fU=90,fV="Open 14.Slide in Current Window",fW="14_slide.html",fX="images/1_home/u19.png",fY="508308f1f2c343d897e988dbe2433526",fZ=45,ga=1053,gb="images/5_updateprofile/u177.png",gc="objectPaths",gd="3851aa73792949f4bcb7869665eb52d8",ge="scriptId",gf="u574",gg="2be0df7a811b415291ebd55187e755d2",gh="u575",gi="9b306c9504274d0bb2545a3f90749d53",gj="u576",gk="ad13178e94154614b0123bfa3a66b9c9",gl="u577",gm="fb703f71faa74ee2a50a36acbf89b2a9",gn="u578",go="e6f63b059bcf43f3a96c8a990ecbfcbc",gp="u579",gq="c4034a50406140e59d4e903581d22fc6",gr="u580",gs="7bf6dce5f0d54a039254ce84b66aff06",gt="u581",gu="2b3b1d15eaa741d8ba8653251c256674",gv="u582",gw="50b8e9a5763b4be29df32a27d001bc1f",gx="u583",gy="98ff46c1e0cd42329a42871b703fe1e7",gz="u584",gA="eadb0c99e3054247afafe26fcbcdecbd",gB="u585",gC="5ec8c781ee1e42c196b4b74e7721a094",gD="u586",gE="e19761ac1d5647e19caf118662662efa",gF="u587",gG="acd21607462d4c8a80179c4e8738ca22",gH="u588",gI="9bde9ee693514f6cbcea5d7cd987da2d",gJ="u589",gK="cf71097e6bbe472688668d0658a742b4",gL="u590",gM="3fdf17c6a3ed4eae81b1732938ef10a5",gN="u591",gO="e51d8c31b5e44607a2dbf1d734f2910c",gP="u592",gQ="bfd1e27ae750487da4c58fc231c250cf",gR="u593",gS="158d5fa596254b7195940b50047beb56",gT="u594",gU="a48d5d2765f743ec96e8c9500301c869",gV="u595",gW="08b5728dc6854e7b91fb6036df6c64c2",gX="u596",gY="508308f1f2c343d897e988dbe2433526",gZ="u597",ha="2a42ec03ec524a348a29274878e3b9e5",hb="u598",hc="db56597430c541af907446b8c5dff798",hd="u599",he="67313a17dc944ab9a2d544d61887e4c0",hf="u600",hg="e2b5e63b88bc4c64a2c9bd5ba82d8705",hh="u601",hi="25a630b275734fcebb7eb742428d86ac",hj="u602",hk="b0eaa18fd99d4776a789a59cfc29511a",hl="u603"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/15_viewdocument/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/15_viewdocument/styles.css new file mode 100644 index 0000000..9d9a674 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/15_viewdocument/styles.css @@ -0,0 +1,770 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u574_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:300px; + height:450px; +} +#u574 { + border-width:0px; + position:absolute; + left:40px; + top:218px; + width:300px; + height:450px; +} +#u574_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u575_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:239px; + height:26px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u575 { + border-width:0px; + position:absolute; + left:777px; + top:141px; + width:239px; + height:26px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u575_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:239px; + word-wrap:break-word; +} +#u576_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:133px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u576 { + border-width:0px; + position:absolute; + left:830px; + top:186px; + width:133px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u576_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:133px; + white-space:nowrap; +} +#u578_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u578 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u578_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u579_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u579 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u579_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u580 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u580_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u581_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u581 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u581_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u582_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u582 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u582_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u583_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u583 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u583_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u584_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u584 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u584_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u585_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u585 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u585_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u586_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u586 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u586_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u587 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u588_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u588 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u588_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u589_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u589 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u589_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u590_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u590 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u590_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u591 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u591_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u592 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u593_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u593 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u593_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u594_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u594 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u594_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u595_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u595 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u595_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u596_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u596 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u596_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u597_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u597 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u597_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u598 { + border-width:0px; + position:absolute; + left:1044px; + top:80px; + width:396px; + height:25px; +} +#u598_input { + position:absolute; + left:0px; + top:0px; + width:396px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u599_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u599 { + border-width:0px; + position:absolute; + left:1005px; + top:82px; + width:22px; + height:22px; +} +#u599_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u600 { + border-width:0px; + position:absolute; + left:410px; + top:218px; + width:972px; + height:526px; +} +#u600_input { + position:absolute; + left:0px; + top:0px; + width:972px; + height:526px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u601_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u601 { + border-width:0px; + position:absolute; + left:150px; + top:711px; + width:92px; + height:33px; +} +#u601_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u602_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + height:16px; + background:inherit; + background-color:rgba(204, 255, 153, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u602 { + border-width:0px; + position:absolute; + left:225px; + top:685px; + width:17px; + height:16px; +} +#u602_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + white-space:nowrap; +} +#u603_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:55px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u603 { + border-width:0px; + position:absolute; + left:150px; + top:685px; + width:55px; + height:16px; +} +#u603_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:55px; + white-space:nowrap; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/16_uploaddocument/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/16_uploaddocument/data.js new file mode 100644 index 0000000..415629d --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/16_uploaddocument/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on tieu de equals "")",bZ="condition",ca="exprType",cb="binaryOp",cc="op",cd="==",ce="leftExpr",cf="fcall",cg="functionName",ch="GetWidgetText",ci="arguments",cj="pathLiteral",ck="isThis",cl="isFocused",cm="isTarget",cn="value",co="5834b3fe403e48b1bc86e2ab16ffd195",cp="rightExpr",cq="stringLiteral",cr="stos",cs="setFocusOnWidget",ct="Set Focus on tieu de",cu="objectPaths",cv="selectText",cw="fadeWidget",cx="Show/Hide Widget",cy="objectsToFades",cz="Case 2
(Else If True)",cA="Show ok",cB="objectPath",cC="ca7651804eea4d279b6b4c2da9b77758",cD="fadeInfo",cE="fadeType",cF="show",cG="options",cH="showType",cI="none",cJ="bringToFront",cK="84d74d5647d14388ae979f9f32cee56a",cL="Show (Rectangle)",cM="dcf2184fc7294192af54689452d7ee98",cN="Set Focus on (Rectangle)",cO="a5d7d8505f3a403983bfd510d2df57fb",cP=178,cQ="tieu de",cR="fontWeight",cS="700",cT="1111111151944dfba49f67fd55eb1f88",cU="horizontalAlignment",cV="center",cW="verticalAlignment",cX="middle",cY="75ae4a3f751b43c8a05c3dc17637abc0",cZ="mo ta",da="b3a15c9ddde04520be40f94c8168891e",db="d357b41d1e6c4f008f83bcbcf687b3db",dc="noi dung",dd="8c7a4c5ad69a4369a5f7788171ac0b32",de="ok",df="foreGroundFill",dg=0xFFFF0000,dh="opacity",di=1,dj=176,dk=16,dl="2285372321d148ec80932747449c36c9",dm=1180,dn=652,dp=694,dq="a82519015c7b46f080faf597d94e1547",dr="Header sau khi dang nhap",ds="referenceDiagramObject",dt=1440,du=849,dv="masterId",dw="510564ce784d40c7be615f5485d34622",dx="masters",dy="510564ce784d40c7be615f5485d34622",dz="Axure:Master",dA="fb703f71faa74ee2a50a36acbf89b2a9",dB=62,dC=0xFFF2F2F2,dD="linePattern",dE="images",dF="normal~",dG="images/1_home/u2.png",dH="e6f63b059bcf43f3a96c8a990ecbfcbc",dI="btnDangNhap",dJ=99,dK=1325,dL=9,dM=0xFFCC0066,dN="Open 4.Login in Current Window",dO="4_login.html",dP="c4034a50406140e59d4e903581d22fc6",dQ="txtTimKiem",dR="Text Field",dS="textBox",dT=37,dU="stateStyles",dV="hint",dW=0xFF999999,dX="44157808f2934100b68f2394a66b2bba",dY=346,dZ="HideHintOnFocused",ea="placeholderText",eb="Tìm kiếm tài liệu",ec="7bf6dce5f0d54a039254ce84b66aff06",ed="btnTimKiem",ee="Image",ef="imageBox",eg=42,eh="75a91ee5b9d042cfa01b8d565fe289c0",ei=646,ej="Open http://google.com in Current Window",ek="webUrl",el="urlLiteral",em="http://google.com",en="images/1_home/btntimkiem_u6.png",eo="2b3b1d15eaa741d8ba8653251c256674",ep="imgDanhMuc",eq=29,er=196,es="Case 2",et="images/1_home/imgdanhmuc_u8.png",eu="50b8e9a5763b4be29df32a27d001bc1f",ev="lblDanhMuc",ew=73,ex=229,ey="98ff46c1e0cd42329a42871b703fe1e7",ez="imgLogoHeader",eA=114,eB=38,eC=6,eD=12,eE="images/1_home/imglogoheader_u7.png",eF="eadb0c99e3054247afafe26fcbcdecbd",eG=36,eH="1136c3bb487940fb91dab49aa20e1c95",eI=1268,eJ="cornerRadius",eK="50",eL="images/5_updateprofile/u165.png",eM="5ec8c781ee1e42c196b4b74e7721a094",eN=0xFF0066FF,eO=150,eP=1108,eQ="Open 5.UpdateProfile in New Window/Tab",eR="5_updateprofile.html",eS="new",eT="e19761ac1d5647e19caf118662662efa",eU="Group",eV="layer",eW=0,eX="objs",eY="acd21607462d4c8a80179c4e8738ca22",eZ=50,fa="47641f9a00ac465095d6b672bbdffef6",fb=799,fc=0xFFE4E4E4,fd="9bde9ee693514f6cbcea5d7cd987da2d",fe=7,ff=805,fg="images/1_home/u12.png",fh="cf71097e6bbe472688668d0658a742b4",fi=49,fj="propagate",fk="3fdf17c6a3ed4eae81b1732938ef10a5",fl="Menu",fm="menuObject",fn=136,fo=120,fp=200,fq=46,fr="e51d8c31b5e44607a2dbf1d734f2910c",fs="Table",ft="table",fu="bfd1e27ae750487da4c58fc231c250cf",fv="Menu Item",fw="tableCell",fx=30,fy="2036b2baccbc41f0b9263a6981a11a42",fz="left",fA="Open 11.ITBook in Current Window",fB="11_itbook.html",fC="images/1_home/u16.png",fD="158d5fa596254b7195940b50047beb56",fE="Open 12.EconomicBook in Current Window",fF="12_economicbook.html",fG="a48d5d2765f743ec96e8c9500301c869",fH=60,fI="Open 13.Outlinebook in Current Window",fJ="13_outlinebook.html",fK="08b5728dc6854e7b91fb6036df6c64c2",fL=90,fM="Open 14.Slide in Current Window",fN="14_slide.html",fO="images/1_home/u19.png",fP="508308f1f2c343d897e988dbe2433526",fQ=45,fR=1053,fS="images/5_updateprofile/u177.png",fT="6e0b9571140b4ef88165ddd65785e6b7",fU="scriptId",fV="u604",fW="f5bc74e96fe74c898120bcf16450cf98",fX="u605",fY="e2569ccab8c64127a31855233cfa7a94",fZ="u606",ga="420d08ce67c7418285fc900417bb85a2",gb="u607",gc="84d74d5647d14388ae979f9f32cee56a",gd="u608",ge="a5d7d8505f3a403983bfd510d2df57fb",gf="u609",gg="5834b3fe403e48b1bc86e2ab16ffd195",gh="u610",gi="75ae4a3f751b43c8a05c3dc17637abc0",gj="u611",gk="d357b41d1e6c4f008f83bcbcf687b3db",gl="u612",gm="ca7651804eea4d279b6b4c2da9b77758",gn="u613",go="dcf2184fc7294192af54689452d7ee98",gp="u614",gq="a82519015c7b46f080faf597d94e1547",gr="u615",gs="fb703f71faa74ee2a50a36acbf89b2a9",gt="u616",gu="e6f63b059bcf43f3a96c8a990ecbfcbc",gv="u617",gw="c4034a50406140e59d4e903581d22fc6",gx="u618",gy="7bf6dce5f0d54a039254ce84b66aff06",gz="u619",gA="2b3b1d15eaa741d8ba8653251c256674",gB="u620",gC="50b8e9a5763b4be29df32a27d001bc1f",gD="u621",gE="98ff46c1e0cd42329a42871b703fe1e7",gF="u622",gG="eadb0c99e3054247afafe26fcbcdecbd",gH="u623",gI="5ec8c781ee1e42c196b4b74e7721a094",gJ="u624",gK="e19761ac1d5647e19caf118662662efa",gL="u625",gM="acd21607462d4c8a80179c4e8738ca22",gN="u626",gO="9bde9ee693514f6cbcea5d7cd987da2d",gP="u627",gQ="cf71097e6bbe472688668d0658a742b4",gR="u628",gS="3fdf17c6a3ed4eae81b1732938ef10a5",gT="u629",gU="e51d8c31b5e44607a2dbf1d734f2910c",gV="u630",gW="bfd1e27ae750487da4c58fc231c250cf",gX="u631",gY="158d5fa596254b7195940b50047beb56",gZ="u632",ha="a48d5d2765f743ec96e8c9500301c869",hb="u633",hc="08b5728dc6854e7b91fb6036df6c64c2",hd="u634",he="508308f1f2c343d897e988dbe2433526",hf="u635"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/16_uploaddocument/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/16_uploaddocument/styles.css new file mode 100644 index 0000000..1636ee7 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/16_uploaddocument/styles.css @@ -0,0 +1,897 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u604_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + height:431px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u604 { + border-width:0px; + position:absolute; + left:68px; + top:254px; + width:1304px; + height:431px; +} +#u604_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u605_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:300px; + height:66px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u605 { + border-width:0px; + position:absolute; + left:570px; + top:102px; + width:300px; + height:66px; +} +#u605_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u606_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u606 { + border-width:0px; + position:absolute; + left:1232px; + top:720px; + width:140px; + height:40px; +} +#u606_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u607_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u607 { + border-width:0px; + position:absolute; + left:1060px; + top:720px; + width:140px; + height:40px; +} +#u607_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u608_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u608 { + border-width:0px; + position:absolute; + left:68px; + top:720px; + width:140px; + height:40px; +} +#u608_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u609_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + height:66px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u609 { + border-width:0px; + position:absolute; + left:68px; + top:178px; + width:1304px; + height:66px; +} +#u609_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u610_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:300px; + height:66px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u610 { + border-width:0px; + position:absolute; + left:570px; + top:102px; + width:300px; + height:66px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u610_text { + border-width:0px; + position:absolute; + left:0px; + top:14px; + width:300px; + word-wrap:break-word; +} +#u611_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + height:66px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u611 { + border-width:0px; + position:absolute; + left:68px; + top:178px; + width:1304px; + height:66px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u611_text { + border-width:0px; + position:absolute; + left:0px; + top:19px; + width:1304px; + word-wrap:break-word; +} +#u612_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + height:431px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u612 { + border-width:0px; + position:absolute; + left:68px; + top:254px; + width:1304px; + height:431px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u612_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + word-wrap:break-word; +} +#u613_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:176px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; + text-align:center; +} +#u613 { + border-width:0px; + position:absolute; + left:1180px; + top:652px; + width:176px; + height:16px; + color:#FF0000; + text-align:center; +} +#u613_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:176px; + word-wrap:break-word; +} +#u614_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; + text-align:center; +} +#u614 { + border-width:0px; + position:absolute; + left:68px; + top:694px; + width:140px; + height:16px; + color:#FF0000; + text-align:center; +} +#u614_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + word-wrap:break-word; +} +#u616_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u616 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u616_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u617_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u617 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u617_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u618 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u618_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u619_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u619 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u619_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u620_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u620 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u620_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u621_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u621 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u621_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u622_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u622 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u622_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u623_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u623 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u623_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u624_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u624 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u624_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u625 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u626_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u626 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u626_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u627_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u627 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u627_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u628_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u628 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u628_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u629 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u629_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u630 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u631_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u631 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u631_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u632_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u632 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u632_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u633_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u633 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u633_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u634_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u634 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u634_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u635_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u635 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u635_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/17_updateexercise/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/17_updateexercise/data.js new file mode 100644 index 0000000..dca23ec --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/17_updateexercise/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on Unidentified equals "")",bD="isNewIfGroup",bE="condition",bF="exprType",bG="binaryOp",bH="op",bI="==",bJ="leftExpr",bK="fcall",bL="functionName",bM="GetWidgetText",bN="arguments",bO="pathLiteral",bP="isThis",bQ="isFocused",bR="isTarget",bS="value",bT="5834b3fe403e48b1bc86e2ab16ffd195",bU="rightExpr",bV="stringLiteral",bW="stos",bX="actions",bY="action",bZ="setFocusOnWidget",ca="Set Focus on Widget",cb="objectPaths",cc="selectText",cd="fadeWidget",ce="Show tieu de err",cf="objectsToFades",cg="objectPath",ch="738f257857814431bd85bb7936b58014",ci="fadeInfo",cj="fadeType",ck="show",cl="options",cm="showType",cn="none",co="bringToFront",cp="Case 2
(Else If True)",cq="Hide tieu de err",cr="hide",cs="Show ok",ct="ca7651804eea4d279b6b4c2da9b77758",cu="tabbable",cv="84d74d5647d14388ae979f9f32cee56a",cw=161,cx="Case 1",cy="Show (Rectangle)",cz="dcf2184fc7294192af54689452d7ee98",cA="Set Focus on (Rectangle)",cB="a5d7d8505f3a403983bfd510d2df57fb",cC=66,cD=127,cE="75ae4a3f751b43c8a05c3dc17637abc0",cF="mo ta",cG="fontWeight",cH="700",cI=223,cJ=28,cK="b3a15c9ddde04520be40f94c8168891e",cL=621,cM=152,cN="horizontalAlignment",cO="center",cP="d357b41d1e6c4f008f83bcbcf687b3db",cQ="noi dung",cR="8c7a4c5ad69a4369a5f7788171ac0b32",cS="tieu de err",cT="foreGroundFill",cU=0xFFFF0000,cV="opacity",cW=1,cX=300,cY=16,cZ="2285372321d148ec80932747449c36c9",da=571,db=203,dc="ok",dd=218,de=611,df=482,dg="verticalAlignment",dh="middle",di=694,dj="c38895191012444b916c9e818c2c21a0",dk="Header sau khi dang nhap",dl="referenceDiagramObject",dm=1440,dn=849,dp="masterId",dq="510564ce784d40c7be615f5485d34622",dr="44e3eb7187c44ba88cd83797cdd9cfcd",ds="4988d43d80b44008a4a415096f1632af",dt=1139,du=112,dv=151,dw=292,dx="af8d5424095743bf8682fa92b90868a4",dy="Radio Button",dz="radioButton",dA=114,dB="4eb5516f311c4bdfa0cb11d7ea75084e",dC=167,dD=430,dE="extraLeft",dF="bb8c312f17074de18745a277ba6966a0",dG=122,dH=456,dI="f39b8932215f4f70834d2c6fbf35b289",dJ="495258239fdf4c7bb190cdc8f52def0e",dK=508,dL="bb8cc04bacf64f0181629c7125fa7417",dM="c9f35713a1cf4e91a0f2dbac65e6fb5c",dN=1232,dO=0xFFCC3366,dP="linkWindow",dQ="Open 1.Home in Current Window",dR="target",dS="targetType",dT="1_home.html",dU="includeVariables",dV="linkType",dW="current",dX="masters",dY="510564ce784d40c7be615f5485d34622",dZ="Axure:Master",ea="fb703f71faa74ee2a50a36acbf89b2a9",eb=62,ec=0xFFF2F2F2,ed="linePattern",ee="images",ef="normal~",eg="images/1_home/u2.png",eh="e6f63b059bcf43f3a96c8a990ecbfcbc",ei="btnDangNhap",ej=99,ek=1325,el=9,em=0xFFCC0066,en="Open 4.Login in Current Window",eo="4_login.html",ep="c4034a50406140e59d4e903581d22fc6",eq="txtTimKiem",er="Text Field",es="textBox",et=37,eu="stateStyles",ev="hint",ew=0xFF999999,ex="44157808f2934100b68f2394a66b2bba",ey=346,ez="HideHintOnFocused",eA="placeholderText",eB="Tìm kiếm tài liệu",eC="7bf6dce5f0d54a039254ce84b66aff06",eD="btnTimKiem",eE="Image",eF="imageBox",eG=42,eH="75a91ee5b9d042cfa01b8d565fe289c0",eI=646,eJ="Open http://google.com in Current Window",eK="webUrl",eL="urlLiteral",eM="http://google.com",eN="images/1_home/btntimkiem_u6.png",eO="2b3b1d15eaa741d8ba8653251c256674",eP="imgDanhMuc",eQ=29,eR=196,eS="Show/Hide Widget",eT="Case 2",eU="images/1_home/imgdanhmuc_u8.png",eV="50b8e9a5763b4be29df32a27d001bc1f",eW="lblDanhMuc",eX=73,eY=229,eZ="98ff46c1e0cd42329a42871b703fe1e7",fa="imgLogoHeader",fb=38,fc=6,fd=12,fe="images/1_home/imglogoheader_u7.png",ff="eadb0c99e3054247afafe26fcbcdecbd",fg=36,fh="1136c3bb487940fb91dab49aa20e1c95",fi=1268,fj="cornerRadius",fk="50",fl="images/5_updateprofile/u165.png",fm="5ec8c781ee1e42c196b4b74e7721a094",fn=0xFF0066FF,fo=150,fp=1108,fq="Open 5.UpdateProfile in New Window/Tab",fr="5_updateprofile.html",fs="new",ft="e19761ac1d5647e19caf118662662efa",fu="Group",fv="layer",fw=0,fx="objs",fy="acd21607462d4c8a80179c4e8738ca22",fz=50,fA="47641f9a00ac465095d6b672bbdffef6",fB=799,fC=0xFFE4E4E4,fD="9bde9ee693514f6cbcea5d7cd987da2d",fE=7,fF=805,fG="images/1_home/u12.png",fH="cf71097e6bbe472688668d0658a742b4",fI=49,fJ="propagate",fK="3fdf17c6a3ed4eae81b1732938ef10a5",fL="Menu",fM="menuObject",fN=136,fO=120,fP=200,fQ=46,fR="e51d8c31b5e44607a2dbf1d734f2910c",fS="Table",fT="table",fU="bfd1e27ae750487da4c58fc231c250cf",fV="Menu Item",fW="tableCell",fX=30,fY="2036b2baccbc41f0b9263a6981a11a42",fZ="left",ga="Open 11.ITBook in Current Window",gb="11_itbook.html",gc="images/1_home/u16.png",gd="158d5fa596254b7195940b50047beb56",ge="Open 12.EconomicBook in Current Window",gf="12_economicbook.html",gg="a48d5d2765f743ec96e8c9500301c869",gh=60,gi="Open 13.Outlinebook in Current Window",gj="13_outlinebook.html",gk="08b5728dc6854e7b91fb6036df6c64c2",gl=90,gm="Open 14.Slide in Current Window",gn="14_slide.html",go="images/1_home/u19.png",gp="508308f1f2c343d897e988dbe2433526",gq=45,gr=1053,gs="images/5_updateprofile/u177.png",gt="6e0b9571140b4ef88165ddd65785e6b7",gu="scriptId",gv="u636",gw="420d08ce67c7418285fc900417bb85a2",gx="u637",gy="84d74d5647d14388ae979f9f32cee56a",gz="u638",gA="a5d7d8505f3a403983bfd510d2df57fb",gB="u639",gC="75ae4a3f751b43c8a05c3dc17637abc0",gD="u640",gE="d357b41d1e6c4f008f83bcbcf687b3db",gF="u641",gG="738f257857814431bd85bb7936b58014",gH="u642",gI="ca7651804eea4d279b6b4c2da9b77758",gJ="u643",gK="dcf2184fc7294192af54689452d7ee98",gL="u644",gM="c38895191012444b916c9e818c2c21a0",gN="u645",gO="fb703f71faa74ee2a50a36acbf89b2a9",gP="u646",gQ="e6f63b059bcf43f3a96c8a990ecbfcbc",gR="u647",gS="c4034a50406140e59d4e903581d22fc6",gT="u648",gU="7bf6dce5f0d54a039254ce84b66aff06",gV="u649",gW="2b3b1d15eaa741d8ba8653251c256674",gX="u650",gY="50b8e9a5763b4be29df32a27d001bc1f",gZ="u651",ha="98ff46c1e0cd42329a42871b703fe1e7",hb="u652",hc="eadb0c99e3054247afafe26fcbcdecbd",hd="u653",he="5ec8c781ee1e42c196b4b74e7721a094",hf="u654",hg="e19761ac1d5647e19caf118662662efa",hh="u655",hi="acd21607462d4c8a80179c4e8738ca22",hj="u656",hk="9bde9ee693514f6cbcea5d7cd987da2d",hl="u657",hm="cf71097e6bbe472688668d0658a742b4",hn="u658",ho="3fdf17c6a3ed4eae81b1732938ef10a5",hp="u659",hq="e51d8c31b5e44607a2dbf1d734f2910c",hr="u660",hs="bfd1e27ae750487da4c58fc231c250cf",ht="u661",hu="158d5fa596254b7195940b50047beb56",hv="u662",hw="a48d5d2765f743ec96e8c9500301c869",hx="u663",hy="08b5728dc6854e7b91fb6036df6c64c2",hz="u664",hA="508308f1f2c343d897e988dbe2433526",hB="u665",hC="44e3eb7187c44ba88cd83797cdd9cfcd",hD="u666",hE="af8d5424095743bf8682fa92b90868a4",hF="u667",hG="bb8c312f17074de18745a277ba6966a0",hH="u668",hI="f39b8932215f4f70834d2c6fbf35b289",hJ="u669",hK="495258239fdf4c7bb190cdc8f52def0e",hL="u670",hM="bb8cc04bacf64f0181629c7125fa7417",hN="u671"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/17_updateexercise/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/17_updateexercise/styles.css new file mode 100644 index 0000000..d7ef07e --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/17_updateexercise/styles.css @@ -0,0 +1,975 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u636_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + height:431px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u636 { + border-width:0px; + position:absolute; + left:68px; + top:254px; + width:1304px; + height:431px; +} +#u636_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u637_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u637 { + border-width:0px; + position:absolute; + left:1060px; + top:720px; + width:140px; + height:40px; +} +#u637_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u638_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:161px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u638 { + border-width:0px; + position:absolute; + left:68px; + top:720px; + width:161px; + height:40px; +} +#u638_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:157px; + word-wrap:break-word; +} +#u639_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + height:66px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u639 { + border-width:0px; + position:absolute; + left:68px; + top:127px; + width:1304px; + height:66px; +} +#u639_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u640_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:223px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u640 { + border-width:0px; + position:absolute; + left:621px; + top:152px; + width:223px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u640_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:223px; + white-space:nowrap; +} +#u641_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + height:431px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u641 { + border-width:0px; + position:absolute; + left:68px; + top:254px; + width:1304px; + height:431px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + text-align:center; +} +#u641_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1304px; + word-wrap:break-word; +} +#u642_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:300px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; + text-align:center; +} +#u642 { + border-width:0px; + position:absolute; + left:571px; + top:203px; + width:300px; + height:16px; + color:#FF0000; + text-align:center; +} +#u642_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:300px; + word-wrap:break-word; +} +#u643_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:218px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; + text-align:center; +} +#u643 { + border-width:0px; + position:absolute; + left:611px; + top:482px; + width:218px; + height:16px; + color:#FF0000; + text-align:center; +} +#u643_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:218px; + word-wrap:break-word; +} +#u644_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:161px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; +} +#u644 { + border-width:0px; + position:absolute; + left:68px; + top:694px; + width:161px; + height:16px; + color:#FF0000; +} +#u644_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:161px; + word-wrap:break-word; +} +#u646_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u646 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u646_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u647_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u647 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u647_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u648 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u648_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u649_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u649 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u649_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u650_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u650 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u650_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u651_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u651 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u651_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u652_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u652 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u652_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u653_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u653 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u653_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u654_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u654 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u654_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u655 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u656_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u656 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u656_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u657_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u657 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u657_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u658_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u658 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u658_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u659 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u659_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u660 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u661_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u661 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u661_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u662_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u662 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u662_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u663_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u663 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u663_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u664_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u664 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u664_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u665_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u665 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u665_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u666_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1139px; + height:112px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u666 { + border-width:0px; + position:absolute; + left:151px; + top:292px; + width:1139px; + height:112px; +} +#u666_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1139px; + word-wrap:break-word; +} +#u667 { + border-width:0px; + position:absolute; + left:167px; + top:430px; + width:114px; + height:16px; +} +#u667_text { + border-width:0px; + position:absolute; + left:16px; + top:0px; + width:96px; + word-wrap:break-word; +} +#u667_input { + border-width:0px; + position:absolute; + left:-3px; + top:-2px; +} +#u668 { + border-width:0px; + position:absolute; + left:167px; + top:456px; + width:122px; + height:16px; +} +#u668_text { + border-width:0px; + position:absolute; + left:16px; + top:0px; + width:104px; + word-wrap:break-word; +} +#u668_input { + border-width:0px; + position:absolute; + left:-3px; + top:-2px; +} +#u669 { + border-width:0px; + position:absolute; + left:167px; + top:482px; + width:114px; + height:16px; +} +#u669_text { + border-width:0px; + position:absolute; + left:16px; + top:0px; + width:96px; + word-wrap:break-word; +} +#u669_input { + border-width:0px; + position:absolute; + left:-3px; + top:-2px; +} +#u670 { + border-width:0px; + position:absolute; + left:167px; + top:508px; + width:122px; + height:16px; +} +#u670_text { + border-width:0px; + position:absolute; + left:16px; + top:0px; + width:104px; + word-wrap:break-word; +} +#u670_input { + border-width:0px; + position:absolute; + left:-3px; + top:-2px; +} +#u671_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u671 { + border-width:0px; + position:absolute; + left:1232px; + top:720px; + width:140px; + height:40px; +} +#u671_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/18_deleteexercise/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/18_deleteexercise/data.js new file mode 100644 index 0000000..4ae2d94 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/18_deleteexercise/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on This equals "kCo")",cn="condition",co="exprType",cp="binaryOp",cq="op",cr="==",cs="leftExpr",ct="fcall",cu="functionName",cv="GetWidgetText",cw="arguments",cx="pathLiteral",cy="isThis",cz="isFocused",cA="isTarget",cB="rightExpr",cC="stringLiteral",cD="value",cE="kCo",cF="stos",cG="Show/Hide Widget",cH="Hide (Image)",cI="3053c0a937c24c6bbdbad38f16a6ff78",cJ="hide",cK="Case 1
(Else If text on (Text Field) equals "SGK")",cL="SGK",cM="linkWindow",cN="Open 8.ListBook in Current Window",cO="target",cP="targetType",cQ="8_listbook.html",cR="includeVariables",cS="linkType",cT="current",cU="Case 3
(Else If text on This equals "ptanh")",cV="ptanh",cW="Open 5.UpdateProfile in Current Window",cX="5_updateprofile.html",cY="placeholderText",cZ="Image",da="imageBox",db="75a91ee5b9d042cfa01b8d565fe289c0",dc=22,dd=1005,de=82,df="images",dg="normal~",dh="images/15_viewdocument/u599.png",di="b09e926a85a047619e5212c034af053f",dj="Droplist",dk="comboBox",dl=300,dm="85f724022aae41c594175ddac9c289eb",dn=84,dp=225,dq="d8757d8e4f644504b976038f08a3c542",dr=87,ds=16,dt="2285372321d148ec80932747449c36c9",du=190,dv="0d9f1d7db9ef4bec990d5eeff37aed34",dw="List Box",dx="listBox",dy=170,dz="d5a74867db1f49ceb7c59e94129aa67a",dA=529,dB=0xFFFF0000,dC=161,dD=668,dE=370,dF="masters",dG="510564ce784d40c7be615f5485d34622",dH="Axure:Master",dI="fb703f71faa74ee2a50a36acbf89b2a9",dJ=62,dK="4b7bfc596114427989e10bb0b557d0ce",dL=0xFFF2F2F2,dM="linePattern",dN="images/1_home/u2.png",dO="e6f63b059bcf43f3a96c8a990ecbfcbc",dP="btnDangNhap",dQ=99,dR=1325,dS=9,dT=0xFFCC0066,dU="Open 4.Login in Current Window",dV="4_login.html",dW="c4034a50406140e59d4e903581d22fc6",dX="txtTimKiem",dY=37,dZ=346,ea="Tìm kiếm tài liệu",eb="7bf6dce5f0d54a039254ce84b66aff06",ec="btnTimKiem",ed=42,ee=646,ef="Open http://google.com in Current Window",eg="webUrl",eh="urlLiteral",ei="http://google.com",ej="images/1_home/btntimkiem_u6.png",ek="2b3b1d15eaa741d8ba8653251c256674",el="imgDanhMuc",em=29,en=196,eo="Case 2",ep="images/1_home/imgdanhmuc_u8.png",eq="50b8e9a5763b4be29df32a27d001bc1f",er="lblDanhMuc",es=73,et=229,eu="verticalAlignment",ev="middle",ew="98ff46c1e0cd42329a42871b703fe1e7",ex="imgLogoHeader",ey=114,ez=38,eA=6,eB=12,eC="Open 1.Home in Current Window",eD="1_home.html",eE="images/1_home/imglogoheader_u7.png",eF="eadb0c99e3054247afafe26fcbcdecbd",eG=36,eH="1136c3bb487940fb91dab49aa20e1c95",eI=1268,eJ="cornerRadius",eK="50",eL="images/5_updateprofile/u165.png",eM="5ec8c781ee1e42c196b4b74e7721a094",eN=0xFF0066FF,eO=150,eP=1108,eQ="horizontalAlignment",eR="center",eS="Open 5.UpdateProfile in New Window/Tab",eT="new",eU="e19761ac1d5647e19caf118662662efa",eV="Group",eW="layer",eX=0,eY="objs",eZ="acd21607462d4c8a80179c4e8738ca22",fa=50,fb="47641f9a00ac465095d6b672bbdffef6",fc=799,fd=0xFFE4E4E4,fe="9bde9ee693514f6cbcea5d7cd987da2d",ff=7,fg=805,fh="images/1_home/u12.png",fi="cf71097e6bbe472688668d0658a742b4",fj=49,fk="propagate",fl="3fdf17c6a3ed4eae81b1732938ef10a5",fm="Menu",fn="menuObject",fo=136,fp=120,fq=200,fr=46,fs="e51d8c31b5e44607a2dbf1d734f2910c",ft="Table",fu="table",fv="bfd1e27ae750487da4c58fc231c250cf",fw="Menu Item",fx="tableCell",fy=30,fz="2036b2baccbc41f0b9263a6981a11a42",fA="left",fB="Open 11.ITBook in Current Window",fC="11_itbook.html",fD="images/1_home/u16.png",fE="158d5fa596254b7195940b50047beb56",fF="Open 12.EconomicBook in Current Window",fG="12_economicbook.html",fH="a48d5d2765f743ec96e8c9500301c869",fI=60,fJ="Open 13.Outlinebook in Current Window",fK="13_outlinebook.html",fL="08b5728dc6854e7b91fb6036df6c64c2",fM=90,fN="Open 14.Slide in Current Window",fO="14_slide.html",fP="images/1_home/u19.png",fQ="508308f1f2c343d897e988dbe2433526",fR=45,fS=1053,fT="images/5_updateprofile/u177.png",fU="objectPaths",fV="bbac05a03a3c4f3a925f9c353f39cff6",fW="scriptId",fX="u672",fY="2af19c7fc27d403cbd3d6772c2fc0b7c",fZ="u673",ga="fb703f71faa74ee2a50a36acbf89b2a9",gb="u674",gc="e6f63b059bcf43f3a96c8a990ecbfcbc",gd="u675",ge="c4034a50406140e59d4e903581d22fc6",gf="u676",gg="7bf6dce5f0d54a039254ce84b66aff06",gh="u677",gi="2b3b1d15eaa741d8ba8653251c256674",gj="u678",gk="50b8e9a5763b4be29df32a27d001bc1f",gl="u679",gm="98ff46c1e0cd42329a42871b703fe1e7",gn="u680",go="eadb0c99e3054247afafe26fcbcdecbd",gp="u681",gq="5ec8c781ee1e42c196b4b74e7721a094",gr="u682",gs="e19761ac1d5647e19caf118662662efa",gt="u683",gu="acd21607462d4c8a80179c4e8738ca22",gv="u684",gw="9bde9ee693514f6cbcea5d7cd987da2d",gx="u685",gy="cf71097e6bbe472688668d0658a742b4",gz="u686",gA="3fdf17c6a3ed4eae81b1732938ef10a5",gB="u687",gC="e51d8c31b5e44607a2dbf1d734f2910c",gD="u688",gE="bfd1e27ae750487da4c58fc231c250cf",gF="u689",gG="158d5fa596254b7195940b50047beb56",gH="u690",gI="a48d5d2765f743ec96e8c9500301c869",gJ="u691",gK="08b5728dc6854e7b91fb6036df6c64c2",gL="u692",gM="508308f1f2c343d897e988dbe2433526",gN="u693",gO="1580b8d2e1e846ddbb4e5474eff0024d",gP="u694",gQ="3053c0a937c24c6bbdbad38f16a6ff78",gR="u695",gS="b09e926a85a047619e5212c034af053f",gT="u696",gU="d8757d8e4f644504b976038f08a3c542",gV="u697",gW="0d9f1d7db9ef4bec990d5eeff37aed34",gX="u698",gY="e1ea5e68ca7a4510816504af37f2b38d",gZ="u699"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/18_deleteexercise/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/18_deleteexercise/styles.css new file mode 100644 index 0000000..bf937e3 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/18_deleteexercise/styles.css @@ -0,0 +1,696 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u672_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u672 { + border-width:0px; + position:absolute; + left:689px; + top:641px; + width:140px; + height:40px; +} +#u672_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u674_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u674 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u674_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u675_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u675 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u675_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u676 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u676_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u677_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u677 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u677_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u678_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u678 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u678_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u679_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u679 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u679_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u680_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u680 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u680_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u681_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u681 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u681_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u682_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u682 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u682_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u683 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u684_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u684 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u684_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u685_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u685 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u685_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u686_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u686 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u686_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u687 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u687_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u688 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u689_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u689 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u689_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u690_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u690 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u690_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u691_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u691 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u691_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u692_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u692 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u692_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u693_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u693 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u693_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u694 { + border-width:0px; + position:absolute; + left:1044px; + top:80px; + width:396px; + height:25px; +} +#u694_input { + position:absolute; + left:0px; + top:0px; + width:396px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u695_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u695 { + border-width:0px; + position:absolute; + left:1005px; + top:82px; + width:22px; + height:22px; +} +#u695_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u696 { + border-width:0px; + position:absolute; + left:84px; + top:225px; + width:300px; + height:22px; +} +#u696_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u696_input:disabled { + color:grayText; +} +#u697_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:87px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u697 { + border-width:0px; + position:absolute; + left:84px; + top:190px; + width:87px; + height:16px; +} +#u697_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:87px; + white-space:nowrap; +} +#u698 { + border-width:0px; + position:absolute; + left:529px; + top:190px; + width:300px; + height:170px; +} +#u698_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:170px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u699_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:161px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; +} +#u699 { + border-width:0px; + position:absolute; + left:668px; + top:370px; + width:161px; + height:16px; + color:#FF0000; +} +#u699_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:161px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/19_uploadquestion_votequestion/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/19_uploadquestion_votequestion/data.js new file mode 100644 index 0000000..a6946f5 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/19_uploadquestion_votequestion/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on cau hoi equals "1 tấn gỗ và 1 tấn thép")",ci="isNewIfGroup",cj="condition",ck="exprType",cl="binaryOp",cm="op",cn="==",co="leftExpr",cp="fcall",cq="functionName",cr="GetWidgetText",cs="arguments",ct="pathLiteral",cu="isThis",cv="isFocused",cw="isTarget",cx="value",cy="rightExpr",cz="stringLiteral",cA="1 tấn gỗ và 1 tấn thép",cB="stos",cC="actions",cD="action",cE="linkWindow",cF="Open 22.SearchQuestionResult in Current Window",cG="target",cH="targetType",cI="22_searchquestionresult.html",cJ="includeVariables",cK="linkType",cL="current",cM="tabbable",cN="b08d8aa8c4dc4da99b3001077855194d",cO=125,cP=412,cQ="0a4015d0265545e9b11c317c67154b25",cR=832,cS=127,cT=64,cU="4b1dad9b87844cc796781312e1b3de38",cV="Droplist",cW="comboBox",cX=300,cY=22,cZ="85f724022aae41c594175ddac9c289eb",da=1067,db=150,dc="onSelectionChange",dd="OnSelectionChange",de="Case 1
(If selected option of This equals Chủ đề hot trong tuần)",df="GetSelectedOption",dg="optionLiteral",dh="Chủ đề hot trong tuần",di="Open 20.HotQuestion in Current Window",dj="20_hotquestion.html",dk="Case 2
(Else If selected option of This equals Chủ đề được quan tâm)",dl="Chủ đề được quan tâm",dm="1c8cf0bc353c46e693466a5c8d6b9f4d",dn="Image",dp="imageBox",dq="75a91ee5b9d042cfa01b8d565fe289c0",dr=1391,ds="images",dt="normal~",du="images/1_home/u20.png",dv="ae3090dae63b4878a37c859cf4df8571",dw=1418,dx="images/1_home/imgdanhmuc_u8.png",dy="9360d197d1d242718856741cb399bdfb",dz=82,dA="8c7a4c5ad69a4369a5f7788171ac0b32",dB=76,dC=228,dD="1130c57cdd8d4f6d90a77c70d364a746",dE=798,dF="4988d43d80b44008a4a415096f1632af",dG=260,dH="3fc440a3a636484fb836581085178a9c",dI=119,dJ="Case 1",dK="setFunction",dL="Set text on 5 equal to "124"",dM="expr",dN="block",dO="subExprs",dP="SetWidgetRichText",dQ="bf2d722045a44813949751d6b611bde8",dR="124",dS="booleanLiteral",dT="images/19_uploadquestion_votequestion/u712.png",dU="8db2e5f6a2e447958fd4da94a16ea1d6",dV=188,dW="Set text on d1 equal to "122"",dX="25495c907aab4421ac79e1161e533336",dY="122",dZ="images/19_uploadquestion_votequestion/u713.png",ea="2ae17532a2024353a2a7d6ea4198fa06",eb="1",ec=528,ed=220,ee="e2b791a5a89342c786d03de8e61d5f6f",ef=116,eg=771,eh=291,ei="Case 1
(If text on 1 does not equal "")",ej="!=",ek="fadeWidget",el="Show/Hide Widget",em="objectsToFades",en="Show thanh cong",eo="objectPath",ep="bf593a84c6ed4af98ef40496cab6b066",eq="fadeInfo",er="fadeType",es="show",et="options",eu="showType",ev="none",ew="bringToFront",ex="5548a039c7524b2181cdaf2ea612fdda",ey="2",ez=363,eA="f16ea401f7724c9c83dab8a64bdc4ef3",eB=380,eC="e790e45f50d14a8491cfbc625d5526b1",eD="3aa97fb9cf9a497c9eddffe6150b32e2",eE=453,eF="Set text on 6 equal to "124"",eG="1c04ac9cce234402a8e8211b4eceb822",eH="22707cc5a6e5481a9b58c4694952c2de",eI=450,eJ="Set text on d2 equal to "122"",eK="e5d8cb7a04674c38a7046334cfabf112",eL="5fa7434c49144c8680bf3dab54981e28",eM="91271c681fdf4c53baefab621d8f9acf",eN=443,eO="Case 1
(If text on 2 does not equal "")",eP="88b3e153e66942368ff06787686503a7",eQ="3",eR=264,eS=514,eT="03da2ff987654d2996f5161e87f20468",eU=531,eV="4e073a895eaf422d81b5d6bb8ad189f5",eW=563,eX="740782c0ccb049668c447449ddbc78b0",eY=604,eZ="Set text on 7 equal to "124"",fa="1589e62b6ef54809869107fa4f8d7fb7",fb="1376f8845c114dc0880626ce9522c209",fc=601,fd="Set text on d3 equal to "122"",fe="0fdccb31f11d457b88a3d6d5c1a49ead",ff="9ab7715ecb02434a8a8854ad6e6f64d2",fg="15efc1ae29e446f28f93ff6e82170c70",fh=594,fi="Case 1
(If text on 3 does not equal "")",fj="fe0405311e1143b4a825a9299832e6f4",fk=865,fl="images/19_uploadquestion_votequestion/u730.png",fm="181b84a4c3f9405da8f1f03c9b8c7c56",fn="Open 21.QuestionDetails in Current Window",fo="21_questiondetails.html",fp="347ab8d02a4b4c26b1f8fea0a62b1bb4",fq="5",fr=84,fs=301,ft="6",fu="7",fv="d1",fw=151,fx="d2",fy="d3",fz="thanh cong",fA=281,fB=37,fC="1111111151944dfba49f67fd55eb1f88",fD=689,fE=143,fF="f1c097a15b1b48fc93799d2c20a9178d",fG=140,fH="Open 23.UploadQuestion in Current Window",fI="23_uploadquestion.html",fJ="e17d6573e7a34b3da917e206606ec7f8",fK="Header sau khi dang nhap",fL="referenceDiagramObject",fM=1440,fN=849,fO="masterId",fP="510564ce784d40c7be615f5485d34622",fQ="60b054925ad844d0b77576190f38db47",fR="List Box",fS="listBox",fT=811,fU=120,fV="d5a74867db1f49ceb7c59e94129aa67a",fW=644,fX="30ae8009e818403e877db82c43347fe7",fY=942,fZ=470,ga=0xFFCC3366,gb="3e07738d50fc4c5ca5888fd954bdcd49",gc=1092,gd="cbb93dcc033e488cb1db58b78b9c0b9c",ge=1242,gf=0xFF666699,gg="b0be5c4cbf8c4230975cdceb7cac2541",gh=231,gi=425,gj="masters",gk="510564ce784d40c7be615f5485d34622",gl="Axure:Master",gm="fb703f71faa74ee2a50a36acbf89b2a9",gn=62,go=0xFFF2F2F2,gp="linePattern",gq="images/1_home/u2.png",gr="e6f63b059bcf43f3a96c8a990ecbfcbc",gs="btnDangNhap",gt=99,gu=1325,gv=9,gw=0xFFCC0066,gx="Open 4.Login in Current Window",gy="4_login.html",gz="c4034a50406140e59d4e903581d22fc6",gA="txtTimKiem",gB=346,gC="Tìm kiếm tài liệu",gD="7bf6dce5f0d54a039254ce84b66aff06",gE="btnTimKiem",gF=42,gG=646,gH="Open http://google.com in Current Window",gI="webUrl",gJ="urlLiteral",gK="http://google.com",gL="images/1_home/btntimkiem_u6.png",gM="2b3b1d15eaa741d8ba8653251c256674",gN="imgDanhMuc",gO=29,gP=196,gQ="Case 2",gR="50b8e9a5763b4be29df32a27d001bc1f",gS="lblDanhMuc",gT=73,gU=229,gV="verticalAlignment",gW="middle",gX="98ff46c1e0cd42329a42871b703fe1e7",gY="imgLogoHeader",gZ=114,ha=38,hb=6,hc=12,hd="Open 1.Home in Current Window",he="1_home.html",hf="images/1_home/imglogoheader_u7.png",hg="eadb0c99e3054247afafe26fcbcdecbd",hh=36,hi="1136c3bb487940fb91dab49aa20e1c95",hj=1268,hk="cornerRadius",hl="50",hm="images/5_updateprofile/u165.png",hn="5ec8c781ee1e42c196b4b74e7721a094",ho=0xFF0066FF,hp=1108,hq="horizontalAlignment",hr="center",hs="Open 5.UpdateProfile in New Window/Tab",ht="5_updateprofile.html",hu="new",hv="e19761ac1d5647e19caf118662662efa",hw="Group",hx="layer",hy=0,hz="objs",hA="acd21607462d4c8a80179c4e8738ca22",hB="47641f9a00ac465095d6b672bbdffef6",hC=799,hD=0xFFE4E4E4,hE="9bde9ee693514f6cbcea5d7cd987da2d",hF=7,hG=805,hH="images/1_home/u12.png",hI="cf71097e6bbe472688668d0658a742b4",hJ=49,hK="propagate",hL="3fdf17c6a3ed4eae81b1732938ef10a5",hM="Menu",hN="menuObject",hO=136,hP=200,hQ=46,hR="e51d8c31b5e44607a2dbf1d734f2910c",hS="Table",hT="table",hU="bfd1e27ae750487da4c58fc231c250cf",hV="Menu Item",hW="tableCell",hX=30,hY="2036b2baccbc41f0b9263a6981a11a42",hZ="left",ia="Open 11.ITBook in Current Window",ib="11_itbook.html",ic="images/1_home/u16.png",id="158d5fa596254b7195940b50047beb56",ie="Open 12.EconomicBook in Current Window",ig="12_economicbook.html",ih="a48d5d2765f743ec96e8c9500301c869",ii=60,ij="Open 13.Outlinebook in Current Window",ik="13_outlinebook.html",il="08b5728dc6854e7b91fb6036df6c64c2",im=90,io="Open 14.Slide in Current Window",ip="14_slide.html",iq="images/1_home/u19.png",ir="508308f1f2c343d897e988dbe2433526",is=45,it=1053,iu="images/5_updateprofile/u177.png",iv="objectPaths",iw="5d707c7eea984cbc93aafb2b6eada1ea",ix="scriptId",iy="u700",iz="e1025aa4aac84ec982ec433d358e970c",iA="u701",iB="ea2b3241526e4c43b2c65b656b2b87d2",iC="u702",iD="b76fe767debe4fca92c7dc3afa67cdee",iE="u703",iF="101f66234bc34d85b68c5bdadd784428",iG="u704",iH="b08d8aa8c4dc4da99b3001077855194d",iI="u705",iJ="0a4015d0265545e9b11c317c67154b25",iK="u706",iL="4b1dad9b87844cc796781312e1b3de38",iM="u707",iN="1c8cf0bc353c46e693466a5c8d6b9f4d",iO="u708",iP="ae3090dae63b4878a37c859cf4df8571",iQ="u709",iR="9360d197d1d242718856741cb399bdfb",iS="u710",iT="1130c57cdd8d4f6d90a77c70d364a746",iU="u711",iV="3fc440a3a636484fb836581085178a9c",iW="u712",iX="8db2e5f6a2e447958fd4da94a16ea1d6",iY="u713",iZ="2ae17532a2024353a2a7d6ea4198fa06",ja="u714",jb="e2b791a5a89342c786d03de8e61d5f6f",jc="u715",jd="5548a039c7524b2181cdaf2ea612fdda",je="u716",jf="f16ea401f7724c9c83dab8a64bdc4ef3",jg="u717",jh="e790e45f50d14a8491cfbc625d5526b1",ji="u718",jj="3aa97fb9cf9a497c9eddffe6150b32e2",jk="u719",jl="22707cc5a6e5481a9b58c4694952c2de",jm="u720",jn="5fa7434c49144c8680bf3dab54981e28",jo="u721",jp="91271c681fdf4c53baefab621d8f9acf",jq="u722",jr="88b3e153e66942368ff06787686503a7",js="u723",jt="03da2ff987654d2996f5161e87f20468",ju="u724",jv="4e073a895eaf422d81b5d6bb8ad189f5",jw="u725",jx="740782c0ccb049668c447449ddbc78b0",jy="u726",jz="1376f8845c114dc0880626ce9522c209",jA="u727",jB="9ab7715ecb02434a8a8854ad6e6f64d2",jC="u728",jD="15efc1ae29e446f28f93ff6e82170c70",jE="u729",jF="fe0405311e1143b4a825a9299832e6f4",jG="u730",jH="181b84a4c3f9405da8f1f03c9b8c7c56",jI="u731",jJ="347ab8d02a4b4c26b1f8fea0a62b1bb4",jK="u732",jL="bf2d722045a44813949751d6b611bde8",jM="u733",jN="1c04ac9cce234402a8e8211b4eceb822",jO="u734",jP="1589e62b6ef54809869107fa4f8d7fb7",jQ="u735",jR="25495c907aab4421ac79e1161e533336",jS="u736",jT="e5d8cb7a04674c38a7046334cfabf112",jU="u737",jV="0fdccb31f11d457b88a3d6d5c1a49ead",jW="u738",jX="bf593a84c6ed4af98ef40496cab6b066",jY="u739",jZ="f1c097a15b1b48fc93799d2c20a9178d",ka="u740",kb="e17d6573e7a34b3da917e206606ec7f8",kc="u741",kd="fb703f71faa74ee2a50a36acbf89b2a9",ke="u742",kf="e6f63b059bcf43f3a96c8a990ecbfcbc",kg="u743",kh="c4034a50406140e59d4e903581d22fc6",ki="u744",kj="7bf6dce5f0d54a039254ce84b66aff06",kk="u745",kl="2b3b1d15eaa741d8ba8653251c256674",km="u746",kn="50b8e9a5763b4be29df32a27d001bc1f",ko="u747",kp="98ff46c1e0cd42329a42871b703fe1e7",kq="u748",kr="eadb0c99e3054247afafe26fcbcdecbd",ks="u749",kt="5ec8c781ee1e42c196b4b74e7721a094",ku="u750",kv="e19761ac1d5647e19caf118662662efa",kw="u751",kx="acd21607462d4c8a80179c4e8738ca22",ky="u752",kz="9bde9ee693514f6cbcea5d7cd987da2d",kA="u753",kB="cf71097e6bbe472688668d0658a742b4",kC="u754",kD="3fdf17c6a3ed4eae81b1732938ef10a5",kE="u755",kF="e51d8c31b5e44607a2dbf1d734f2910c",kG="u756",kH="bfd1e27ae750487da4c58fc231c250cf",kI="u757",kJ="158d5fa596254b7195940b50047beb56",kK="u758",kL="a48d5d2765f743ec96e8c9500301c869",kM="u759",kN="08b5728dc6854e7b91fb6036df6c64c2",kO="u760",kP="508308f1f2c343d897e988dbe2433526",kQ="u761",kR="60b054925ad844d0b77576190f38db47",kS="u762",kT="30ae8009e818403e877db82c43347fe7",kU="u763",kV="3e07738d50fc4c5ca5888fd954bdcd49",kW="u764",kX="cbb93dcc033e488cb1db58b78b9c0b9c",kY="u765",kZ="b0be5c4cbf8c4230975cdceb7cac2541",la="u766"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/19_uploadquestion_votequestion/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/19_uploadquestion_votequestion/styles.css new file mode 100644 index 0000000..2d3e050 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/19_uploadquestion_votequestion/styles.css @@ -0,0 +1,1872 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u700_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:521px; + height:170px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u700 { + border-width:0px; + position:absolute; + left:919px; + top:211px; + width:521px; + height:170px; +} +#u700_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u701_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:197px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u701 { + border-width:0px; + position:absolute; + left:1064px; + top:225px; + width:197px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u701_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:197px; + white-space:nowrap; +} +#u702_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:50px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u702 { + border-width:0px; + position:absolute; + left:937px; + top:268px; + width:50px; + height:16px; +} +#u702_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:50px; + white-space:nowrap; +} +#u703 { + border-width:0px; + position:absolute; + left:997px; + top:263px; + width:423px; + height:25px; +} +#u703_input { + position:absolute; + left:0px; + top:0px; + width:423px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u704_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:111px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u704 { + border-width:0px; + position:absolute; + left:1309px; + top:298px; + width:111px; + height:40px; +} +#u704_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:107px; + word-wrap:break-word; +} +#u705_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:521px; + height:125px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u705 { + border-width:0px; + position:absolute; + left:919px; + top:412px; + width:521px; + height:125px; +} +#u705_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u706_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:832px; + height:127px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u706 { + border-width:0px; + position:absolute; + left:64px; + top:211px; + width:832px; + height:127px; +} +#u706_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u707 { + border-width:0px; + position:absolute; + left:1067px; + top:150px; + width:300px; + height:22px; +} +#u707_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u707_input:disabled { + color:grayText; +} +#u708_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u708 { + border-width:0px; + position:absolute; + left:1391px; + top:150px; + width:22px; + height:22px; +} +#u708_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u709_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u709 { + border-width:0px; + position:absolute; + left:1418px; + top:150px; + width:22px; + height:22px; +} +#u709_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u710_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u710 { + border-width:0px; + position:absolute; + left:76px; + top:228px; + width:82px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u710_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + white-space:nowrap; +} +#u711_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u711 { + border-width:0px; + position:absolute; + left:76px; + top:260px; + width:798px; + height:28px; +} +#u711_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + word-wrap:break-word; +} +#u712_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u712 { + border-width:0px; + position:absolute; + left:119px; + top:298px; + width:22px; + height:22px; +} +#u712_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u713_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u713 { + border-width:0px; + position:absolute; + left:188px; + top:298px; + width:22px; + height:22px; +} +#u713_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u714 { + border-width:0px; + position:absolute; + left:220px; + top:298px; + width:528px; + height:25px; +} +#u714_input { + position:absolute; + left:0px; + top:0px; + width:528px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u715_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:116px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u715 { + border-width:0px; + position:absolute; + left:771px; + top:291px; + width:116px; + height:40px; +} +#u715_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:112px; + word-wrap:break-word; +} +#u716_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:832px; + height:127px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u716 { + border-width:0px; + position:absolute; + left:64px; + top:363px; + width:832px; + height:127px; +} +#u716_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u717_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u717 { + border-width:0px; + position:absolute; + left:76px; + top:380px; + width:82px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u717_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + white-space:nowrap; +} +#u718_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u718 { + border-width:0px; + position:absolute; + left:76px; + top:412px; + width:798px; + height:28px; +} +#u718_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + word-wrap:break-word; +} +#u719_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u719 { + border-width:0px; + position:absolute; + left:119px; + top:453px; + width:22px; + height:22px; +} +#u719_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u720_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u720 { + border-width:0px; + position:absolute; + left:188px; + top:450px; + width:22px; + height:22px; +} +#u720_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u721 { + border-width:0px; + position:absolute; + left:220px; + top:450px; + width:528px; + height:25px; +} +#u721_input { + position:absolute; + left:0px; + top:0px; + width:528px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u722_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:116px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u722 { + border-width:0px; + position:absolute; + left:771px; + top:443px; + width:116px; + height:40px; +} +#u722_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:112px; + word-wrap:break-word; +} +#u723_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:832px; + height:264px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u723 { + border-width:0px; + position:absolute; + left:64px; + top:514px; + width:832px; + height:264px; +} +#u723_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u724_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u724 { + border-width:0px; + position:absolute; + left:76px; + top:531px; + width:82px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u724_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + white-space:nowrap; +} +#u725_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u725 { + border-width:0px; + position:absolute; + left:76px; + top:563px; + width:798px; + height:28px; +} +#u725_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + word-wrap:break-word; +} +#u726_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u726 { + border-width:0px; + position:absolute; + left:119px; + top:604px; + width:22px; + height:22px; +} +#u726_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u727_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u727 { + border-width:0px; + position:absolute; + left:188px; + top:601px; + width:22px; + height:22px; +} +#u727_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u728 { + border-width:0px; + position:absolute; + left:220px; + top:601px; + width:528px; + height:25px; +} +#u728_input { + position:absolute; + left:0px; + top:0px; + width:528px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u729_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:116px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u729 { + border-width:0px; + position:absolute; + left:771px; + top:594px; + width:116px; + height:40px; +} +#u729_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:112px; + word-wrap:break-word; +} +#u730_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u730 { + border-width:0px; + position:absolute; + left:865px; + top:228px; + width:22px; + height:22px; +} +#u730_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u731_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u731 { + border-width:0px; + position:absolute; + left:865px; + top:380px; + width:22px; + height:22px; +} +#u731_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u732_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u732 { + border-width:0px; + position:absolute; + left:865px; + top:531px; + width:22px; + height:22px; +} +#u732_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u733_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u733 { + border-width:0px; + position:absolute; + left:84px; + top:301px; + width:25px; + height:16px; +} +#u733_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u734_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u734 { + border-width:0px; + position:absolute; + left:76px; + top:453px; + width:25px; + height:16px; +} +#u734_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u735_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u735 { + border-width:0px; + position:absolute; + left:76px; + top:604px; + width:25px; + height:16px; +} +#u735_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u736_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u736 { + border-width:0px; + position:absolute; + left:151px; + top:298px; + width:25px; + height:16px; +} +#u736_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u737_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u737 { + border-width:0px; + position:absolute; + left:151px; + top:453px; + width:25px; + height:16px; +} +#u737_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u738_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u738 { + border-width:0px; + position:absolute; + left:151px; + top:604px; + width:25px; + height:16px; +} +#u738_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u739_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:281px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u739 { + border-width:0px; + position:absolute; + left:689px; + top:143px; + width:281px; + height:37px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u739_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:281px; + white-space:nowrap; +} +#u740_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u740 { + border-width:0px; + position:absolute; + left:64px; + top:143px; + width:140px; + height:40px; +} +#u740_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u742_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u742 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u742_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u743_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u743 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u743_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u744 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u744_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u745_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u745 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u745_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u746_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u746 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u746_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u747_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u747 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u747_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u748_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u748 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u748_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u749_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u749 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u749_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u750_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u750 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u750_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u751 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u752_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u752 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u752_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u753_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u753 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u753_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u754_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u754 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u754_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u755 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u755_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u756 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u757_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u757 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u757_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u758_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u758 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u758_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u759_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u759 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u759_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u760_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u760 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u760_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u761_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u761 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u761_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u762 { + border-width:0px; + position:absolute; + left:76px; + top:644px; + width:811px; + height:120px; +} +#u762_input { + position:absolute; + left:0px; + top:0px; + width:811px; + height:120px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u763_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u763 { + border-width:0px; + position:absolute; + left:942px; + top:470px; + width:140px; + height:40px; +} +#u763_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u764_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u764 { + border-width:0px; + position:absolute; + left:1092px; + top:470px; + width:140px; + height:40px; +} +#u764_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u765_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(102, 102, 153, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u765 { + border-width:0px; + position:absolute; + left:1242px; + top:470px; + width:140px; + height:40px; +} +#u765_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u766_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:231px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u766 { + border-width:0px; + position:absolute; + left:1064px; + top:425px; + width:231px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u766_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:231px; + white-space:nowrap; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/1_home/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/1_home/data.js new file mode 100644 index 0000000..d66004a --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/1_home/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on cau hoi equals "1 tấn gỗ và 1 tấn thép")",ci="isNewIfGroup",cj="condition",ck="exprType",cl="binaryOp",cm="op",cn="==",co="leftExpr",cp="fcall",cq="functionName",cr="GetWidgetText",cs="arguments",ct="pathLiteral",cu="isThis",cv="isFocused",cw="isTarget",cx="value",cy="rightExpr",cz="stringLiteral",cA="1 tấn gỗ và 1 tấn thép",cB="stos",cC="actions",cD="action",cE="linkWindow",cF="Open 22.SearchQuestionResult in Current Window",cG="target",cH="targetType",cI="22_searchquestionresult.html",cJ="includeVariables",cK="linkType",cL="current",cM="tabbable",cN="b08d8aa8c4dc4da99b3001077855194d",cO=119,cP=412,cQ="85c104ee73c34c28902c998a98a913ef",cR=231,cS=1059,cT=426,cU="800fbc4acca14ded85f368f88391fa53",cV=140,cW=464,cX=0xFFCC3366,cY="b2d3864cce914e4f9952b6bc3b244d54",cZ=1087,da="7a9dc9d6b3bc400bba1eb842dbbfc03f",db=1237,dc=0xFF666699,dd="0a4015d0265545e9b11c317c67154b25",de=832,df=127,dg=64,dh="1c8cf0bc353c46e693466a5c8d6b9f4d",di="Image",dj="imageBox",dk="75a91ee5b9d042cfa01b8d565fe289c0",dl=22,dm=1391,dn=150,dp="images",dq="normal~",dr="images/1_home/u20.png",ds="ae3090dae63b4878a37c859cf4df8571",dt=1418,du="images/1_home/imgdanhmuc_u8.png",dv="9360d197d1d242718856741cb399bdfb",dw=82,dx="8c7a4c5ad69a4369a5f7788171ac0b32",dy=76,dz=228,dA="1130c57cdd8d4f6d90a77c70d364a746",dB=798,dC="4988d43d80b44008a4a415096f1632af",dD=260,dE="3fc440a3a636484fb836581085178a9c",dF=301,dG="Case 1",dH="setFunction",dI="Set text on 5 equal to "9999"",dJ="expr",dK="block",dL="subExprs",dM="SetWidgetRichText",dN="bf2d722045a44813949751d6b611bde8",dO="9999",dP="booleanLiteral",dQ="images/19_uploadquestion_votequestion/u712.png",dR="8db2e5f6a2e447958fd4da94a16ea1d6",dS=188,dT="Set Text",dU="Set text on 1 equal to "111"",dV="fe6d32dee14c4f25be3573ebfe59285b",dW="111",dX="images/19_uploadquestion_votequestion/u713.png",dY="2ae17532a2024353a2a7d6ea4198fa06",dZ="1",ea=528,eb=220,ec="e2b791a5a89342c786d03de8e61d5f6f",ed=116,ee=771,ef=291,eg="Case 1
(If text on 1 does not equal "")",eh="!=",ei="fadeWidget",ej="Show/Hide Widget",ek="objectsToFades",el="Show thanh cong",em="objectPath",en="bf593a84c6ed4af98ef40496cab6b066",eo="fadeInfo",ep="fadeType",eq="show",er="options",es="showType",et="none",eu="bringToFront",ev="5548a039c7524b2181cdaf2ea612fdda",ew="2",ex=363,ey="f16ea401f7724c9c83dab8a64bdc4ef3",ez=380,eA="e790e45f50d14a8491cfbc625d5526b1",eB="3aa97fb9cf9a497c9eddffe6150b32e2",eC=453,eD="Set text on 6 equal to "9999"",eE="1c04ac9cce234402a8e8211b4eceb822",eF="22707cc5a6e5481a9b58c4694952c2de",eG=450,eH="Set text on 2 equal to "111"",eI="8481c74954eb4a65ab443f9f6ec777a5",eJ="5fa7434c49144c8680bf3dab54981e28",eK="91271c681fdf4c53baefab621d8f9acf",eL=443,eM="Case 1
(If text on 2 does not equal "")",eN="fe0405311e1143b4a825a9299832e6f4",eO=865,eP="images/19_uploadquestion_votequestion/u730.png",eQ="181b84a4c3f9405da8f1f03c9b8c7c56",eR="Open 21.QuestionDetails in Current Window",eS="21_questiondetails.html",eT="5",eU="6",eV=151,eW="thanh cong",eX=281,eY=37,eZ="1111111151944dfba49f67fd55eb1f88",fa=689,fb=143,fc="f1c097a15b1b48fc93799d2c20a9178d",fd="Open 23.UploadQuestion in Current Window",fe="23_uploadquestion.html",ff="d9674dc989c4450892d5f0dab0421dc4",fg=86,fh="aa0d2bfd1fba454785e2d8840006042d",fi=74,fj=185,fk="0cb27f14a4be45a3b832d77534d8a7e5",fl="Header sau khi dang nhap",fm="referenceDiagramObject",fn=1440,fo=849,fp="masterId",fq="510564ce784d40c7be615f5485d34622",fr="7a2e3ff7d5b148929727b556ec7613a7",fs="3",ft=264,fu=514,fv="71fe947bb92d492bbfbdfcd0a1184d89",fw=531,fx="9cfdbe00639e47998e983bb62d6d8861",fy=563,fz="e62315714da2422b8ecf5eb085de22ec",fA=604,fB="Set text on 7 equal to "9999"",fC="7c7694b5a33a43f880c92cee852c77ec",fD="2669c83a7a58413685895d8b0101a65d",fE=601,fF="Set text on 3 equal to "111"",fG="9597712e4c754bfc9781bb7c0302a916",fH="ed714b9a2a174a35b6d2f98d4da4af3e",fI="81ddb7c0610143ab9f88fdd268b0138f",fJ=594,fK="Case 1
(If text on 3 does not equal "")",fL="7bdac563a9c743a49ad8592093fa1fef",fM="7",fN=155,fO="23d8eeabd47f4beab86bacefd1cca1a4",fP="List Box",fQ="listBox",fR=811,fS=120,fT="d5a74867db1f49ceb7c59e94129aa67a",fU=644,fV="bd335e85c79746ddbf8c725edd077a63",fW="Droplist",fX="comboBox",fY=300,fZ="85f724022aae41c594175ddac9c289eb",ga=1081,gb="onSelectionChange",gc="OnSelectionChange",gd="Case 1
(If selected option of This equals Chủ đề hot trong tuần)",ge="GetSelectedOption",gf="optionLiteral",gg="Chủ đề hot trong tuần",gh="Open 20.HotQuestion in Current Window",gi="Case 2
(Else If selected option of This equals Chủ đề được quan tâm)",gj="Chủ đề được quan tâm",gk="masters",gl="510564ce784d40c7be615f5485d34622",gm="Axure:Master",gn="fb703f71faa74ee2a50a36acbf89b2a9",go=62,gp=0xFFF2F2F2,gq="linePattern",gr="images/1_home/u2.png",gs="e6f63b059bcf43f3a96c8a990ecbfcbc",gt="btnDangNhap",gu=99,gv=1325,gw=9,gx=0xFFCC0066,gy="Open 4.Login in Current Window",gz="4_login.html",gA="c4034a50406140e59d4e903581d22fc6",gB="txtTimKiem",gC=346,gD="Tìm kiếm tài liệu",gE="7bf6dce5f0d54a039254ce84b66aff06",gF="btnTimKiem",gG=42,gH=646,gI="Open http://google.com in Current Window",gJ="webUrl",gK="urlLiteral",gL="http://google.com",gM="images/1_home/btntimkiem_u6.png",gN="2b3b1d15eaa741d8ba8653251c256674",gO="imgDanhMuc",gP=29,gQ=196,gR="Case 2",gS="50b8e9a5763b4be29df32a27d001bc1f",gT="lblDanhMuc",gU=73,gV=229,gW="verticalAlignment",gX="middle",gY="98ff46c1e0cd42329a42871b703fe1e7",gZ="imgLogoHeader",ha=114,hb=38,hc=6,hd=12,he="Open 1.Home in Current Window",hf="1_home.html",hg="images/1_home/imglogoheader_u7.png",hh="eadb0c99e3054247afafe26fcbcdecbd",hi=36,hj="1136c3bb487940fb91dab49aa20e1c95",hk=1268,hl="cornerRadius",hm="50",hn="images/5_updateprofile/u165.png",ho="5ec8c781ee1e42c196b4b74e7721a094",hp=0xFF0066FF,hq=1108,hr="horizontalAlignment",hs="center",ht="Open 5.UpdateProfile in New Window/Tab",hu="5_updateprofile.html",hv="new",hw="e19761ac1d5647e19caf118662662efa",hx="Group",hy="layer",hz=0,hA="objs",hB="acd21607462d4c8a80179c4e8738ca22",hC="47641f9a00ac465095d6b672bbdffef6",hD=799,hE=0xFFE4E4E4,hF="9bde9ee693514f6cbcea5d7cd987da2d",hG=7,hH=805,hI="images/1_home/u12.png",hJ="cf71097e6bbe472688668d0658a742b4",hK=49,hL="propagate",hM="3fdf17c6a3ed4eae81b1732938ef10a5",hN="Menu",hO="menuObject",hP=136,hQ=200,hR=46,hS="e51d8c31b5e44607a2dbf1d734f2910c",hT="Table",hU="table",hV="bfd1e27ae750487da4c58fc231c250cf",hW="Menu Item",hX="tableCell",hY=30,hZ="2036b2baccbc41f0b9263a6981a11a42",ia="left",ib="Open 11.ITBook in Current Window",ic="11_itbook.html",id="images/1_home/u16.png",ie="158d5fa596254b7195940b50047beb56",ig="Open 12.EconomicBook in Current Window",ih="12_economicbook.html",ii="a48d5d2765f743ec96e8c9500301c869",ij=60,ik="Open 13.Outlinebook in Current Window",il="13_outlinebook.html",im="08b5728dc6854e7b91fb6036df6c64c2",io=90,ip="Open 14.Slide in Current Window",iq="14_slide.html",ir="images/1_home/u19.png",is="508308f1f2c343d897e988dbe2433526",it=45,iu=1053,iv="images/5_updateprofile/u177.png",iw="objectPaths",ix="5d707c7eea984cbc93aafb2b6eada1ea",iy="scriptId",iz="u767",iA="e1025aa4aac84ec982ec433d358e970c",iB="u768",iC="ea2b3241526e4c43b2c65b656b2b87d2",iD="u769",iE="b76fe767debe4fca92c7dc3afa67cdee",iF="u770",iG="101f66234bc34d85b68c5bdadd784428",iH="u771",iI="b08d8aa8c4dc4da99b3001077855194d",iJ="u772",iK="85c104ee73c34c28902c998a98a913ef",iL="u773",iM="800fbc4acca14ded85f368f88391fa53",iN="u774",iO="b2d3864cce914e4f9952b6bc3b244d54",iP="u775",iQ="7a9dc9d6b3bc400bba1eb842dbbfc03f",iR="u776",iS="0a4015d0265545e9b11c317c67154b25",iT="u777",iU="1c8cf0bc353c46e693466a5c8d6b9f4d",iV="u778",iW="ae3090dae63b4878a37c859cf4df8571",iX="u779",iY="9360d197d1d242718856741cb399bdfb",iZ="u780",ja="1130c57cdd8d4f6d90a77c70d364a746",jb="u781",jc="3fc440a3a636484fb836581085178a9c",jd="u782",je="8db2e5f6a2e447958fd4da94a16ea1d6",jf="u783",jg="2ae17532a2024353a2a7d6ea4198fa06",jh="u784",ji="e2b791a5a89342c786d03de8e61d5f6f",jj="u785",jk="5548a039c7524b2181cdaf2ea612fdda",jl="u786",jm="f16ea401f7724c9c83dab8a64bdc4ef3",jn="u787",jo="e790e45f50d14a8491cfbc625d5526b1",jp="u788",jq="3aa97fb9cf9a497c9eddffe6150b32e2",jr="u789",js="22707cc5a6e5481a9b58c4694952c2de",jt="u790",ju="5fa7434c49144c8680bf3dab54981e28",jv="u791",jw="91271c681fdf4c53baefab621d8f9acf",jx="u792",jy="fe0405311e1143b4a825a9299832e6f4",jz="u793",jA="181b84a4c3f9405da8f1f03c9b8c7c56",jB="u794",jC="bf2d722045a44813949751d6b611bde8",jD="u795",jE="1c04ac9cce234402a8e8211b4eceb822",jF="u796",jG="fe6d32dee14c4f25be3573ebfe59285b",jH="u797",jI="8481c74954eb4a65ab443f9f6ec777a5",jJ="u798",jK="bf593a84c6ed4af98ef40496cab6b066",jL="u799",jM="f1c097a15b1b48fc93799d2c20a9178d",jN="u800",jO="d9674dc989c4450892d5f0dab0421dc4",jP="u801",jQ="aa0d2bfd1fba454785e2d8840006042d",jR="u802",jS="0cb27f14a4be45a3b832d77534d8a7e5",jT="u803",jU="fb703f71faa74ee2a50a36acbf89b2a9",jV="u804",jW="e6f63b059bcf43f3a96c8a990ecbfcbc",jX="u805",jY="c4034a50406140e59d4e903581d22fc6",jZ="u806",ka="7bf6dce5f0d54a039254ce84b66aff06",kb="u807",kc="2b3b1d15eaa741d8ba8653251c256674",kd="u808",ke="50b8e9a5763b4be29df32a27d001bc1f",kf="u809",kg="98ff46c1e0cd42329a42871b703fe1e7",kh="u810",ki="eadb0c99e3054247afafe26fcbcdecbd",kj="u811",kk="5ec8c781ee1e42c196b4b74e7721a094",kl="u812",km="e19761ac1d5647e19caf118662662efa",kn="u813",ko="acd21607462d4c8a80179c4e8738ca22",kp="u814",kq="9bde9ee693514f6cbcea5d7cd987da2d",kr="u815",ks="cf71097e6bbe472688668d0658a742b4",kt="u816",ku="3fdf17c6a3ed4eae81b1732938ef10a5",kv="u817",kw="e51d8c31b5e44607a2dbf1d734f2910c",kx="u818",ky="bfd1e27ae750487da4c58fc231c250cf",kz="u819",kA="158d5fa596254b7195940b50047beb56",kB="u820",kC="a48d5d2765f743ec96e8c9500301c869",kD="u821",kE="08b5728dc6854e7b91fb6036df6c64c2",kF="u822",kG="508308f1f2c343d897e988dbe2433526",kH="u823",kI="7a2e3ff7d5b148929727b556ec7613a7",kJ="u824",kK="71fe947bb92d492bbfbdfcd0a1184d89",kL="u825",kM="9cfdbe00639e47998e983bb62d6d8861",kN="u826",kO="e62315714da2422b8ecf5eb085de22ec",kP="u827",kQ="2669c83a7a58413685895d8b0101a65d",kR="u828",kS="ed714b9a2a174a35b6d2f98d4da4af3e",kT="u829",kU="81ddb7c0610143ab9f88fdd268b0138f",kV="u830",kW="7bdac563a9c743a49ad8592093fa1fef",kX="u831",kY="7c7694b5a33a43f880c92cee852c77ec",kZ="u832",la="9597712e4c754bfc9781bb7c0302a916",lb="u833",lc="23d8eeabd47f4beab86bacefd1cca1a4",ld="u834",le="bd335e85c79746ddbf8c725edd077a63",lf="u835"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/20_hotquestion/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/20_hotquestion/styles.css new file mode 100644 index 0000000..37a8229 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/20_hotquestion/styles.css @@ -0,0 +1,1940 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u767_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:521px; + height:170px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u767 { + border-width:0px; + position:absolute; + left:919px; + top:211px; + width:521px; + height:170px; +} +#u767_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u768_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:197px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u768 { + border-width:0px; + position:absolute; + left:1119px; + top:222px; + width:197px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u768_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:197px; + white-space:nowrap; +} +#u769_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:50px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u769 { + border-width:0px; + position:absolute; + left:937px; + top:268px; + width:50px; + height:16px; +} +#u769_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:50px; + white-space:nowrap; +} +#u770 { + border-width:0px; + position:absolute; + left:997px; + top:263px; + width:423px; + height:25px; +} +#u770_input { + position:absolute; + left:0px; + top:0px; + width:423px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u771_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:97px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u771 { + border-width:0px; + position:absolute; + left:1323px; + top:298px; + width:97px; + height:40px; +} +#u771_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:93px; + word-wrap:break-word; +} +#u772_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:521px; + height:119px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u772 { + border-width:0px; + position:absolute; + left:919px; + top:412px; + width:521px; + height:119px; +} +#u772_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u773_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:231px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u773 { + border-width:0px; + position:absolute; + left:1059px; + top:426px; + width:231px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u773_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:231px; + white-space:nowrap; +} +#u774_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u774 { + border-width:0px; + position:absolute; + left:937px; + top:464px; + width:140px; + height:40px; +} +#u774_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u775_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u775 { + border-width:0px; + position:absolute; + left:1087px; + top:464px; + width:140px; + height:40px; +} +#u775_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u776_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(102, 102, 153, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u776 { + border-width:0px; + position:absolute; + left:1237px; + top:464px; + width:140px; + height:40px; +} +#u776_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u777_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:832px; + height:127px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u777 { + border-width:0px; + position:absolute; + left:64px; + top:211px; + width:832px; + height:127px; +} +#u777_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u778_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u778 { + border-width:0px; + position:absolute; + left:1391px; + top:150px; + width:22px; + height:22px; +} +#u778_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u779_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u779 { + border-width:0px; + position:absolute; + left:1418px; + top:150px; + width:22px; + height:22px; +} +#u779_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u780_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u780 { + border-width:0px; + position:absolute; + left:76px; + top:228px; + width:82px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u780_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + white-space:nowrap; +} +#u781_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u781 { + border-width:0px; + position:absolute; + left:76px; + top:260px; + width:798px; + height:28px; +} +#u781_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + word-wrap:break-word; +} +#u782_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u782 { + border-width:0px; + position:absolute; + left:119px; + top:301px; + width:22px; + height:22px; +} +#u782_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u783_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u783 { + border-width:0px; + position:absolute; + left:188px; + top:298px; + width:22px; + height:22px; +} +#u783_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u784 { + border-width:0px; + position:absolute; + left:220px; + top:298px; + width:528px; + height:25px; +} +#u784_input { + position:absolute; + left:0px; + top:0px; + width:528px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u785_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:116px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u785 { + border-width:0px; + position:absolute; + left:771px; + top:291px; + width:116px; + height:40px; +} +#u785_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:112px; + word-wrap:break-word; +} +#u786_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:832px; + height:127px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u786 { + border-width:0px; + position:absolute; + left:64px; + top:363px; + width:832px; + height:127px; +} +#u786_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u787_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u787 { + border-width:0px; + position:absolute; + left:76px; + top:380px; + width:82px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u787_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + white-space:nowrap; +} +#u788_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u788 { + border-width:0px; + position:absolute; + left:76px; + top:412px; + width:798px; + height:28px; +} +#u788_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + word-wrap:break-word; +} +#u789_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u789 { + border-width:0px; + position:absolute; + left:119px; + top:453px; + width:22px; + height:22px; +} +#u789_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u790_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u790 { + border-width:0px; + position:absolute; + left:188px; + top:450px; + width:22px; + height:22px; +} +#u790_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u791 { + border-width:0px; + position:absolute; + left:220px; + top:450px; + width:528px; + height:25px; +} +#u791_input { + position:absolute; + left:0px; + top:0px; + width:528px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u792_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:116px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u792 { + border-width:0px; + position:absolute; + left:771px; + top:443px; + width:116px; + height:40px; +} +#u792_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:112px; + word-wrap:break-word; +} +#u793_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u793 { + border-width:0px; + position:absolute; + left:865px; + top:228px; + width:22px; + height:22px; +} +#u793_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u794_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u794 { + border-width:0px; + position:absolute; + left:865px; + top:380px; + width:22px; + height:22px; +} +#u794_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u795_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u795 { + border-width:0px; + position:absolute; + left:76px; + top:301px; + width:25px; + height:16px; +} +#u795_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u796_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u796 { + border-width:0px; + position:absolute; + left:76px; + top:453px; + width:25px; + height:16px; +} +#u796_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u797_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u797 { + border-width:0px; + position:absolute; + left:151px; + top:301px; + width:25px; + height:16px; +} +#u797_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u798_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u798 { + border-width:0px; + position:absolute; + left:151px; + top:453px; + width:25px; + height:16px; +} +#u798_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u799_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:281px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u799 { + border-width:0px; + position:absolute; + left:689px; + top:143px; + width:281px; + height:37px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u799_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:281px; + white-space:nowrap; +} +#u800_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u800 { + border-width:0px; + position:absolute; + left:64px; + top:143px; + width:140px; + height:40px; +} +#u800_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u801_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:263px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u801 { + border-width:0px; + position:absolute; + left:64px; + top:86px; + width:263px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u801_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:263px; + white-space:nowrap; +} +#u802_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:74px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u802 { + border-width:0px; + position:absolute; + left:64px; + top:185px; + width:74px; + height:16px; +} +#u802_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:74px; + white-space:nowrap; +} +#u804_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u804 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u804_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u805_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u805 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u805_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u806 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u806_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u807_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u807 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u807_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u808_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u808 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u808_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u809_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u809 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u809_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u810_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u810 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u810_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u811_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u811 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u811_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u812_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u812 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u812_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u813 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u814_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u814 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u814_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u815_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u815 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u815_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u816_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u816 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u816_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u817 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u817_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u818 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u819_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u819 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u819_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u820_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u820 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u820_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u821_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u821 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u821_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u822_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u822 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u822_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u823_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u823 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u823_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u824_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:832px; + height:264px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u824 { + border-width:0px; + position:absolute; + left:64px; + top:514px; + width:832px; + height:264px; +} +#u824_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u825_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u825 { + border-width:0px; + position:absolute; + left:76px; + top:531px; + width:82px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u825_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:82px; + white-space:nowrap; +} +#u826_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u826 { + border-width:0px; + position:absolute; + left:76px; + top:563px; + width:798px; + height:28px; +} +#u826_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + word-wrap:break-word; +} +#u827_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u827 { + border-width:0px; + position:absolute; + left:119px; + top:604px; + width:22px; + height:22px; +} +#u827_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u828_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u828 { + border-width:0px; + position:absolute; + left:188px; + top:601px; + width:22px; + height:22px; +} +#u828_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u829 { + border-width:0px; + position:absolute; + left:220px; + top:601px; + width:528px; + height:25px; +} +#u829_input { + position:absolute; + left:0px; + top:0px; + width:528px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u830_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:116px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u830 { + border-width:0px; + position:absolute; + left:771px; + top:594px; + width:116px; + height:40px; +} +#u830_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:112px; + word-wrap:break-word; +} +#u831_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u831 { + border-width:0px; + position:absolute; + left:865px; + top:531px; + width:22px; + height:22px; +} +#u831_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u832_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u832 { + border-width:0px; + position:absolute; + left:76px; + top:604px; + width:25px; + height:16px; +} +#u832_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u833_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u833 { + border-width:0px; + position:absolute; + left:155px; + top:604px; + width:25px; + height:16px; +} +#u833_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u834 { + border-width:0px; + position:absolute; + left:76px; + top:644px; + width:811px; + height:120px; +} +#u834_input { + position:absolute; + left:0px; + top:0px; + width:811px; + height:120px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u835 { + border-width:0px; + position:absolute; + left:1081px; + top:150px; + width:300px; + height:22px; +} +#u835_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u835_input:disabled { + color:grayText; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/21_questiondetails/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/21_questiondetails/data.js new file mode 100644 index 0000000..fa5588f --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/21_questiondetails/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on cau hoi equals "1 tấn gỗ và 1 tấn thép")",ci="isNewIfGroup",cj="condition",ck="exprType",cl="binaryOp",cm="op",cn="==",co="leftExpr",cp="fcall",cq="functionName",cr="GetWidgetText",cs="arguments",ct="pathLiteral",cu="isThis",cv="isFocused",cw="isTarget",cx="value",cy="rightExpr",cz="stringLiteral",cA="1 tấn gỗ và 1 tấn thép",cB="stos",cC="actions",cD="action",cE="linkWindow",cF="Open 22.SearchQuestionResult in Current Window",cG="target",cH="targetType",cI="22_searchquestionresult.html",cJ="includeVariables",cK="linkType",cL="current",cM="tabbable",cN="b08d8aa8c4dc4da99b3001077855194d",cO=122,cP=412,cQ="4b1dad9b87844cc796781312e1b3de38",cR="Droplist",cS="comboBox",cT=300,cU=22,cV="85f724022aae41c594175ddac9c289eb",cW=1067,cX=150,cY="onSelectionChange",cZ="OnSelectionChange",da="Case 1
(If selected option of This equals Mới nhất)",db="GetSelectedOption",dc="optionLiteral",dd="Mới nhất",de="Open 19.UploadQuestion_VoteQuestion in Current Window",df="19_uploadquestion_votequestion.html",dg="Case 2
(Else If selected option of This equals Chủ đề)",dh="Chủ đề",di="1c8cf0bc353c46e693466a5c8d6b9f4d",dj="Image",dk="imageBox",dl="75a91ee5b9d042cfa01b8d565fe289c0",dm=1391,dn="images",dp="normal~",dq="images/1_home/u20.png",dr="ae3090dae63b4878a37c859cf4df8571",ds=1418,dt="images/1_home/imgdanhmuc_u8.png",du="5548a039c7524b2181cdaf2ea612fdda",dv="2",dw=832,dx=541,dy=64,dz="f16ea401f7724c9c83dab8a64bdc4ef3",dA=67,dB="8c7a4c5ad69a4369a5f7788171ac0b32",dC=76,dD=228,dE="e790e45f50d14a8491cfbc625d5526b1",dF=798,dG="4988d43d80b44008a4a415096f1632af",dH=260,dI="3aa97fb9cf9a497c9eddffe6150b32e2",dJ=119,dK=301,dL="Case 1",dM="setFunction",dN="Set text on 6 equal to "9999"",dO="expr",dP="block",dQ="subExprs",dR="SetWidgetRichText",dS="1c04ac9cce234402a8e8211b4eceb822",dT="9999",dU="booleanLiteral",dV="images/19_uploadquestion_votequestion/u712.png",dW="22707cc5a6e5481a9b58c4694952c2de",dX=188,dY="Set text on 2 equal to "111"",dZ="111",ea="images/19_uploadquestion_votequestion/u713.png",eb="5fa7434c49144c8680bf3dab54981e28",ec=528,ed=220,ee="91271c681fdf4c53baefab621d8f9acf",ef=116,eg=771,eh=291,ei="Case 1
(If text on 2 does not equal "")",ej="!=",ek="fadeWidget",el="Show/Hide Widget",em="objectsToFades",en="Show thanh cong",eo="objectPath",ep="bf593a84c6ed4af98ef40496cab6b066",eq="fadeInfo",er="fadeType",es="show",et="options",eu="showType",ev="none",ew="bringToFront",ex="181b84a4c3f9405da8f1f03c9b8c7c56",ey=865,ez="images/19_uploadquestion_votequestion/u730.png",eA="6",eB="e5d8cb7a04674c38a7046334cfabf112",eC=151,eD="thanh cong",eE=281,eF=37,eG="1111111151944dfba49f67fd55eb1f88",eH=467,eI=251,eJ="f1c097a15b1b48fc93799d2c20a9178d",eK=140,eL=143,eM="Open 23.UploadQuestion in Current Window",eN="23_uploadquestion.html",eO="090b7008a2fa401bb51e5111c5264c77",eP=98,eQ=359,eR="49a43471bd344d24b931667b5e3e0e2d",eS="List Box",eT="listBox",eU=343,eV="d5a74867db1f49ceb7c59e94129aa67a",eW=399,eX="44af11b2d4884e86be54f1c530438d9b",eY="Header sau khi dang nhap",eZ="referenceDiagramObject",fa=1440,fb=849,fc="masterId",fd="510564ce784d40c7be615f5485d34622",fe="386a2532d6ea4a0aa6fe90382a7f6179",ff=231,fg=1076,fh="ab63a38f1e8f4eac860d0d336f0de8ac",fi=954,fj=461,fk=0xFFCC3366,fl="1e8c2371074444d2916d538d8147e018",fm=1104,fn="18ddc06c9c1c4c9a8d069eb1794272c3",fo=1254,fp=0xFF666699,fq="masters",fr="510564ce784d40c7be615f5485d34622",fs="Axure:Master",ft="fb703f71faa74ee2a50a36acbf89b2a9",fu=62,fv=0xFFF2F2F2,fw="linePattern",fx="images/1_home/u2.png",fy="e6f63b059bcf43f3a96c8a990ecbfcbc",fz="btnDangNhap",fA=99,fB=1325,fC=9,fD=0xFFCC0066,fE="Open 4.Login in Current Window",fF="4_login.html",fG="c4034a50406140e59d4e903581d22fc6",fH="txtTimKiem",fI=346,fJ="Tìm kiếm tài liệu",fK="7bf6dce5f0d54a039254ce84b66aff06",fL="btnTimKiem",fM=42,fN=646,fO="Open http://google.com in Current Window",fP="webUrl",fQ="urlLiteral",fR="http://google.com",fS="images/1_home/btntimkiem_u6.png",fT="2b3b1d15eaa741d8ba8653251c256674",fU="imgDanhMuc",fV=29,fW=196,fX="Case 2",fY="50b8e9a5763b4be29df32a27d001bc1f",fZ="lblDanhMuc",ga=73,gb=229,gc="verticalAlignment",gd="middle",ge="98ff46c1e0cd42329a42871b703fe1e7",gf="imgLogoHeader",gg=114,gh=38,gi=6,gj=12,gk="Open 1.Home in Current Window",gl="1_home.html",gm="images/1_home/imglogoheader_u7.png",gn="eadb0c99e3054247afafe26fcbcdecbd",go=36,gp="1136c3bb487940fb91dab49aa20e1c95",gq=1268,gr="cornerRadius",gs="50",gt="images/5_updateprofile/u165.png",gu="5ec8c781ee1e42c196b4b74e7721a094",gv=0xFF0066FF,gw=1108,gx="horizontalAlignment",gy="center",gz="Open 5.UpdateProfile in New Window/Tab",gA="5_updateprofile.html",gB="new",gC="e19761ac1d5647e19caf118662662efa",gD="Group",gE="layer",gF=0,gG="objs",gH="acd21607462d4c8a80179c4e8738ca22",gI="47641f9a00ac465095d6b672bbdffef6",gJ=799,gK=0xFFE4E4E4,gL="9bde9ee693514f6cbcea5d7cd987da2d",gM=7,gN=805,gO="images/1_home/u12.png",gP="cf71097e6bbe472688668d0658a742b4",gQ=49,gR="propagate",gS="3fdf17c6a3ed4eae81b1732938ef10a5",gT="Menu",gU="menuObject",gV=136,gW=120,gX=200,gY=46,gZ="e51d8c31b5e44607a2dbf1d734f2910c",ha="Table",hb="table",hc="bfd1e27ae750487da4c58fc231c250cf",hd="Menu Item",he="tableCell",hf=30,hg="2036b2baccbc41f0b9263a6981a11a42",hh="left",hi="Open 11.ITBook in Current Window",hj="11_itbook.html",hk="images/1_home/u16.png",hl="158d5fa596254b7195940b50047beb56",hm="Open 12.EconomicBook in Current Window",hn="12_economicbook.html",ho="a48d5d2765f743ec96e8c9500301c869",hp=60,hq="Open 13.Outlinebook in Current Window",hr="13_outlinebook.html",hs="08b5728dc6854e7b91fb6036df6c64c2",ht=90,hu="Open 14.Slide in Current Window",hv="14_slide.html",hw="images/1_home/u19.png",hx="508308f1f2c343d897e988dbe2433526",hy=45,hz=1053,hA="images/5_updateprofile/u177.png",hB="objectPaths",hC="5d707c7eea984cbc93aafb2b6eada1ea",hD="scriptId",hE="u836",hF="e1025aa4aac84ec982ec433d358e970c",hG="u837",hH="ea2b3241526e4c43b2c65b656b2b87d2",hI="u838",hJ="b76fe767debe4fca92c7dc3afa67cdee",hK="u839",hL="101f66234bc34d85b68c5bdadd784428",hM="u840",hN="b08d8aa8c4dc4da99b3001077855194d",hO="u841",hP="4b1dad9b87844cc796781312e1b3de38",hQ="u842",hR="1c8cf0bc353c46e693466a5c8d6b9f4d",hS="u843",hT="ae3090dae63b4878a37c859cf4df8571",hU="u844",hV="5548a039c7524b2181cdaf2ea612fdda",hW="u845",hX="f16ea401f7724c9c83dab8a64bdc4ef3",hY="u846",hZ="e790e45f50d14a8491cfbc625d5526b1",ia="u847",ib="3aa97fb9cf9a497c9eddffe6150b32e2",ic="u848",id="22707cc5a6e5481a9b58c4694952c2de",ie="u849",ig="5fa7434c49144c8680bf3dab54981e28",ih="u850",ii="91271c681fdf4c53baefab621d8f9acf",ij="u851",ik="181b84a4c3f9405da8f1f03c9b8c7c56",il="u852",im="1c04ac9cce234402a8e8211b4eceb822",io="u853",ip="e5d8cb7a04674c38a7046334cfabf112",iq="u854",ir="bf593a84c6ed4af98ef40496cab6b066",is="u855",it="f1c097a15b1b48fc93799d2c20a9178d",iu="u856",iv="090b7008a2fa401bb51e5111c5264c77",iw="u857",ix="49a43471bd344d24b931667b5e3e0e2d",iy="u858",iz="44af11b2d4884e86be54f1c530438d9b",iA="u859",iB="fb703f71faa74ee2a50a36acbf89b2a9",iC="u860",iD="e6f63b059bcf43f3a96c8a990ecbfcbc",iE="u861",iF="c4034a50406140e59d4e903581d22fc6",iG="u862",iH="7bf6dce5f0d54a039254ce84b66aff06",iI="u863",iJ="2b3b1d15eaa741d8ba8653251c256674",iK="u864",iL="50b8e9a5763b4be29df32a27d001bc1f",iM="u865",iN="98ff46c1e0cd42329a42871b703fe1e7",iO="u866",iP="eadb0c99e3054247afafe26fcbcdecbd",iQ="u867",iR="5ec8c781ee1e42c196b4b74e7721a094",iS="u868",iT="e19761ac1d5647e19caf118662662efa",iU="u869",iV="acd21607462d4c8a80179c4e8738ca22",iW="u870",iX="9bde9ee693514f6cbcea5d7cd987da2d",iY="u871",iZ="cf71097e6bbe472688668d0658a742b4",ja="u872",jb="3fdf17c6a3ed4eae81b1732938ef10a5",jc="u873",jd="e51d8c31b5e44607a2dbf1d734f2910c",je="u874",jf="bfd1e27ae750487da4c58fc231c250cf",jg="u875",jh="158d5fa596254b7195940b50047beb56",ji="u876",jj="a48d5d2765f743ec96e8c9500301c869",jk="u877",jl="08b5728dc6854e7b91fb6036df6c64c2",jm="u878",jn="508308f1f2c343d897e988dbe2433526",jo="u879",jp="386a2532d6ea4a0aa6fe90382a7f6179",jq="u880",jr="ab63a38f1e8f4eac860d0d336f0de8ac",js="u881",jt="1e8c2371074444d2916d538d8147e018",ju="u882",jv="18ddc06c9c1c4c9a8d069eb1794272c3",jw="u883"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/21_questiondetails/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/21_questiondetails/styles.css new file mode 100644 index 0000000..533b01f --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/21_questiondetails/styles.css @@ -0,0 +1,1323 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u836_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:521px; + height:170px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u836 { + border-width:0px; + position:absolute; + left:919px; + top:211px; + width:521px; + height:170px; +} +#u836_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u837_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:197px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u837 { + border-width:0px; + position:absolute; + left:1119px; + top:222px; + width:197px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u837_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:197px; + white-space:nowrap; +} +#u838_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:50px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u838 { + border-width:0px; + position:absolute; + left:937px; + top:268px; + width:50px; + height:16px; +} +#u838_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:50px; + white-space:nowrap; +} +#u839 { + border-width:0px; + position:absolute; + left:997px; + top:263px; + width:423px; + height:25px; +} +#u839_input { + position:absolute; + left:0px; + top:0px; + width:423px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u840_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:107px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u840 { + border-width:0px; + position:absolute; + left:1313px; + top:298px; + width:107px; + height:40px; +} +#u840_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:103px; + word-wrap:break-word; +} +#u841_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:521px; + height:122px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u841 { + border-width:0px; + position:absolute; + left:919px; + top:412px; + width:521px; + height:122px; +} +#u841_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u842 { + border-width:0px; + position:absolute; + left:1067px; + top:150px; + width:300px; + height:22px; +} +#u842_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u842_input:disabled { + color:grayText; +} +#u843_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u843 { + border-width:0px; + position:absolute; + left:1391px; + top:150px; + width:22px; + height:22px; +} +#u843_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u844_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u844 { + border-width:0px; + position:absolute; + left:1418px; + top:150px; + width:22px; + height:22px; +} +#u844_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u845_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:832px; + height:541px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u845 { + border-width:0px; + position:absolute; + left:64px; + top:211px; + width:832px; + height:541px; +} +#u845_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u846_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:67px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u846 { + border-width:0px; + position:absolute; + left:76px; + top:228px; + width:67px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u846_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:67px; + white-space:nowrap; +} +#u847_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u847 { + border-width:0px; + position:absolute; + left:76px; + top:260px; + width:798px; + height:28px; +} +#u847_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + word-wrap:break-word; +} +#u848_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u848 { + border-width:0px; + position:absolute; + left:119px; + top:301px; + width:22px; + height:22px; +} +#u848_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u849_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u849 { + border-width:0px; + position:absolute; + left:188px; + top:298px; + width:22px; + height:22px; +} +#u849_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u850 { + border-width:0px; + position:absolute; + left:220px; + top:298px; + width:528px; + height:25px; +} +#u850_input { + position:absolute; + left:0px; + top:0px; + width:528px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u851_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:116px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u851 { + border-width:0px; + position:absolute; + left:771px; + top:291px; + width:116px; + height:40px; +} +#u851_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:112px; + word-wrap:break-word; +} +#u852_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u852 { + border-width:0px; + position:absolute; + left:865px; + top:228px; + width:22px; + height:22px; +} +#u852_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u853_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u853 { + border-width:0px; + position:absolute; + left:76px; + top:301px; + width:25px; + height:16px; +} +#u853_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u854_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u854 { + border-width:0px; + position:absolute; + left:151px; + top:301px; + width:25px; + height:16px; +} +#u854_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:25px; + white-space:nowrap; +} +#u855_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:281px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u855 { + border-width:0px; + position:absolute; + left:467px; + top:251px; + width:281px; + height:37px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u855_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:281px; + white-space:nowrap; +} +#u856_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u856 { + border-width:0px; + position:absolute; + left:64px; + top:143px; + width:140px; + height:40px; +} +#u856_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u857_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:98px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u857 { + border-width:0px; + position:absolute; + left:76px; + top:359px; + width:98px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u857_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:98px; + white-space:nowrap; +} +#u858 { + border-width:0px; + position:absolute; + left:76px; + top:399px; + width:798px; + height:343px; +} +#u858_input { + position:absolute; + left:0px; + top:0px; + width:798px; + height:343px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u860_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u860 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u860_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u861_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u861 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u861_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u862 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u862_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u863_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u863 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u863_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u864_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u864 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u864_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u865_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u865 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u865_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u866_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u866 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u866_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u867_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u867 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u867_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u868_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u868 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u868_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u869 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u870_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u870 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u870_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u871_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u871 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u871_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u872_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u872 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u872_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u873 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u873_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u874 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u875_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u875 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u875_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u876_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u876 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u876_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u877_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u877 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u877_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u878_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u878 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u878_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u879_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u879 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u879_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u880_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:231px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u880 { + border-width:0px; + position:absolute; + left:1076px; + top:423px; + width:231px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u880_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:231px; + white-space:nowrap; +} +#u881_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u881 { + border-width:0px; + position:absolute; + left:954px; + top:461px; + width:140px; + height:40px; +} +#u881_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u882_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u882 { + border-width:0px; + position:absolute; + left:1104px; + top:461px; + width:140px; + height:40px; +} +#u882_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u883_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(102, 102, 153, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u883 { + border-width:0px; + position:absolute; + left:1254px; + top:461px; + width:140px; + height:40px; +} +#u883_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/22_searchquestionresult/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/22_searchquestionresult/data.js new file mode 100644 index 0000000..562c362 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/22_searchquestionresult/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on tra cuu equals "1 tấn gỗ và 1 tấn thép")",ci="isNewIfGroup",cj="condition",ck="exprType",cl="binaryOp",cm="op",cn="==",co="leftExpr",cp="fcall",cq="functionName",cr="GetWidgetText",cs="arguments",ct="pathLiteral",cu="isThis",cv="isFocused",cw="isTarget",cx="value",cy="rightExpr",cz="stringLiteral",cA="1 tấn gỗ và 1 tấn thép",cB="stos",cC="actions",cD="action",cE="linkWindow",cF="Open 22.SearchQuestionResult in Current Window",cG="target",cH="targetType",cI="includeVariables",cJ="linkType",cK="current",cL="tabbable",cM="b08d8aa8c4dc4da99b3001077855194d",cN=133,cO=412,cP="4b1dad9b87844cc796781312e1b3de38",cQ="Droplist",cR="comboBox",cS=300,cT=22,cU="85f724022aae41c594175ddac9c289eb",cV=1067,cW=150,cX="onSelectionChange",cY="OnSelectionChange",cZ="Case 1
(If selected option of This equals Mới nhất)",da="GetSelectedOption",db="optionLiteral",dc="Mới nhất",dd="Open 8.ListBook in Current Window",de="8_listbook.html",df="Case 2
(Else If selected option of This equals Chủ đề)",dg="Chủ đề",dh="Open Link in Current Window",di="1c8cf0bc353c46e693466a5c8d6b9f4d",dj="Image",dk="imageBox",dl="75a91ee5b9d042cfa01b8d565fe289c0",dm=1391,dn="images",dp="normal~",dq="images/1_home/u20.png",dr="ae3090dae63b4878a37c859cf4df8571",ds=1418,dt="images/1_home/imgdanhmuc_u8.png",du="5548a039c7524b2181cdaf2ea612fdda",dv=832,dw=127,dx="f16ea401f7724c9c83dab8a64bdc4ef3",dy=67,dz="8c7a4c5ad69a4369a5f7788171ac0b32",dA=62,dB=228,dC="e790e45f50d14a8491cfbc625d5526b1",dD=798,dE="4988d43d80b44008a4a415096f1632af",dF=260,dG="3aa97fb9cf9a497c9eddffe6150b32e2",dH=66,dI="images/19_uploadquestion_votequestion/u712.png",dJ="22707cc5a6e5481a9b58c4694952c2de",dK=98,dL="images/19_uploadquestion_votequestion/u713.png",dM="5fa7434c49144c8680bf3dab54981e28",dN=591,dO=143,dP="91271c681fdf4c53baefab621d8f9acf",dQ=116,dR=757,dS=291,dT="181b84a4c3f9405da8f1f03c9b8c7c56",dU=851,dV="images/19_uploadquestion_votequestion/u730.png",dW="c4d2e6ba237044e582cd1a21c0f01d78",dX=140,dY=64,dZ="Case 1",ea="Open 23.UploadQuestion in Current Window",eb="23_uploadquestion.html",ec="2086f9b82fd74b7fbc081188fd785302",ed="Header sau khi dang nhap",ee="referenceDiagramObject",ef=1440,eg=849,eh="masterId",ei="510564ce784d40c7be615f5485d34622",ej="dbb4dfebd53440b4b4cba39e69d302bf",ek=231,el=1076,em="891819fccea34b1caa32f54c35b25e44",en=954,eo=461,ep=0xFFCC3366,eq="68c24956d14149ba9cc47b18089cfeb8",er=1104,es="47e264283f9c4c2490bd74e7e5955e0d",et=1254,eu=0xFF666699,ev="masters",ew="510564ce784d40c7be615f5485d34622",ex="Axure:Master",ey="fb703f71faa74ee2a50a36acbf89b2a9",ez=0xFFF2F2F2,eA="linePattern",eB="none",eC="images/1_home/u2.png",eD="e6f63b059bcf43f3a96c8a990ecbfcbc",eE="btnDangNhap",eF=99,eG=1325,eH=9,eI=0xFFCC0066,eJ="Open 4.Login in Current Window",eK="4_login.html",eL="c4034a50406140e59d4e903581d22fc6",eM="txtTimKiem",eN=37,eO=346,eP="Tìm kiếm tài liệu",eQ="7bf6dce5f0d54a039254ce84b66aff06",eR="btnTimKiem",eS=42,eT=646,eU="Open http://google.com in Current Window",eV="webUrl",eW="urlLiteral",eX="http://google.com",eY="images/1_home/btntimkiem_u6.png",eZ="2b3b1d15eaa741d8ba8653251c256674",fa="imgDanhMuc",fb=29,fc=196,fd="fadeWidget",fe="Show/Hide Widget",ff="objectsToFades",fg="Case 2",fh="50b8e9a5763b4be29df32a27d001bc1f",fi="lblDanhMuc",fj=73,fk=229,fl="verticalAlignment",fm="middle",fn="98ff46c1e0cd42329a42871b703fe1e7",fo="imgLogoHeader",fp=114,fq=38,fr=6,fs=12,ft="Open 1.Home in Current Window",fu="1_home.html",fv="images/1_home/imglogoheader_u7.png",fw="eadb0c99e3054247afafe26fcbcdecbd",fx=36,fy="1136c3bb487940fb91dab49aa20e1c95",fz=1268,fA="cornerRadius",fB="50",fC="images/5_updateprofile/u165.png",fD="5ec8c781ee1e42c196b4b74e7721a094",fE=0xFF0066FF,fF=1108,fG="horizontalAlignment",fH="center",fI="Open 5.UpdateProfile in New Window/Tab",fJ="5_updateprofile.html",fK="new",fL="e19761ac1d5647e19caf118662662efa",fM="Group",fN="layer",fO=0,fP="objs",fQ="acd21607462d4c8a80179c4e8738ca22",fR="47641f9a00ac465095d6b672bbdffef6",fS=799,fT=0xFFE4E4E4,fU="9bde9ee693514f6cbcea5d7cd987da2d",fV=7,fW=805,fX="images/1_home/u12.png",fY="cf71097e6bbe472688668d0658a742b4",fZ=49,ga="propagate",gb="3fdf17c6a3ed4eae81b1732938ef10a5",gc="Menu",gd="menuObject",ge=136,gf=120,gg=200,gh=46,gi="e51d8c31b5e44607a2dbf1d734f2910c",gj="Table",gk="table",gl="bfd1e27ae750487da4c58fc231c250cf",gm="Menu Item",gn="tableCell",go=30,gp="2036b2baccbc41f0b9263a6981a11a42",gq="left",gr="Open 11.ITBook in Current Window",gs="11_itbook.html",gt="images/1_home/u16.png",gu="158d5fa596254b7195940b50047beb56",gv="Open 12.EconomicBook in Current Window",gw="12_economicbook.html",gx="a48d5d2765f743ec96e8c9500301c869",gy=60,gz="Open 13.Outlinebook in Current Window",gA="13_outlinebook.html",gB="08b5728dc6854e7b91fb6036df6c64c2",gC=90,gD="Open 14.Slide in Current Window",gE="14_slide.html",gF="images/1_home/u19.png",gG="508308f1f2c343d897e988dbe2433526",gH=45,gI=1053,gJ="images/5_updateprofile/u177.png",gK="objectPaths",gL="5d707c7eea984cbc93aafb2b6eada1ea",gM="scriptId",gN="u884",gO="e1025aa4aac84ec982ec433d358e970c",gP="u885",gQ="ea2b3241526e4c43b2c65b656b2b87d2",gR="u886",gS="b76fe767debe4fca92c7dc3afa67cdee",gT="u887",gU="101f66234bc34d85b68c5bdadd784428",gV="u888",gW="b08d8aa8c4dc4da99b3001077855194d",gX="u889",gY="4b1dad9b87844cc796781312e1b3de38",gZ="u890",ha="1c8cf0bc353c46e693466a5c8d6b9f4d",hb="u891",hc="ae3090dae63b4878a37c859cf4df8571",hd="u892",he="5548a039c7524b2181cdaf2ea612fdda",hf="u893",hg="f16ea401f7724c9c83dab8a64bdc4ef3",hh="u894",hi="e790e45f50d14a8491cfbc625d5526b1",hj="u895",hk="3aa97fb9cf9a497c9eddffe6150b32e2",hl="u896",hm="22707cc5a6e5481a9b58c4694952c2de",hn="u897",ho="5fa7434c49144c8680bf3dab54981e28",hp="u898",hq="91271c681fdf4c53baefab621d8f9acf",hr="u899",hs="181b84a4c3f9405da8f1f03c9b8c7c56",ht="u900",hu="c4d2e6ba237044e582cd1a21c0f01d78",hv="u901",hw="2086f9b82fd74b7fbc081188fd785302",hx="u902",hy="fb703f71faa74ee2a50a36acbf89b2a9",hz="u903",hA="e6f63b059bcf43f3a96c8a990ecbfcbc",hB="u904",hC="c4034a50406140e59d4e903581d22fc6",hD="u905",hE="7bf6dce5f0d54a039254ce84b66aff06",hF="u906",hG="2b3b1d15eaa741d8ba8653251c256674",hH="u907",hI="50b8e9a5763b4be29df32a27d001bc1f",hJ="u908",hK="98ff46c1e0cd42329a42871b703fe1e7",hL="u909",hM="eadb0c99e3054247afafe26fcbcdecbd",hN="u910",hO="5ec8c781ee1e42c196b4b74e7721a094",hP="u911",hQ="e19761ac1d5647e19caf118662662efa",hR="u912",hS="acd21607462d4c8a80179c4e8738ca22",hT="u913",hU="9bde9ee693514f6cbcea5d7cd987da2d",hV="u914",hW="cf71097e6bbe472688668d0658a742b4",hX="u915",hY="3fdf17c6a3ed4eae81b1732938ef10a5",hZ="u916",ia="e51d8c31b5e44607a2dbf1d734f2910c",ib="u917",ic="bfd1e27ae750487da4c58fc231c250cf",id="u918",ie="158d5fa596254b7195940b50047beb56",ig="u919",ih="a48d5d2765f743ec96e8c9500301c869",ii="u920",ij="08b5728dc6854e7b91fb6036df6c64c2",ik="u921",il="508308f1f2c343d897e988dbe2433526",im="u922",io="dbb4dfebd53440b4b4cba39e69d302bf",ip="u923",iq="891819fccea34b1caa32f54c35b25e44",ir="u924",is="68c24956d14149ba9cc47b18089cfeb8",it="u925",iu="47e264283f9c4c2490bd74e7e5955e0d",iv="u926"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/22_searchquestionresult/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/22_searchquestionresult/styles.css new file mode 100644 index 0000000..71db952 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/22_searchquestionresult/styles.css @@ -0,0 +1,1166 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u884_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:521px; + height:170px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u884 { + border-width:0px; + position:absolute; + left:919px; + top:211px; + width:521px; + height:170px; +} +#u884_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u885_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:197px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u885 { + border-width:0px; + position:absolute; + left:1093px; + top:222px; + width:197px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u885_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:197px; + white-space:nowrap; +} +#u886_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:50px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u886 { + border-width:0px; + position:absolute; + left:937px; + top:268px; + width:50px; + height:16px; +} +#u886_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:50px; + white-space:nowrap; +} +#u887 { + border-width:0px; + position:absolute; + left:997px; + top:263px; + width:423px; + height:25px; +} +#u887_input { + position:absolute; + left:0px; + top:0px; + width:423px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u888_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:112px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u888 { + border-width:0px; + position:absolute; + left:1308px; + top:298px; + width:112px; + height:40px; +} +#u888_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:108px; + word-wrap:break-word; +} +#u889_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:521px; + height:133px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u889 { + border-width:0px; + position:absolute; + left:919px; + top:412px; + width:521px; + height:133px; +} +#u889_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u890 { + border-width:0px; + position:absolute; + left:1067px; + top:150px; + width:300px; + height:22px; +} +#u890_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u890_input:disabled { + color:grayText; +} +#u891_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u891 { + border-width:0px; + position:absolute; + left:1391px; + top:150px; + width:22px; + height:22px; +} +#u891_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u892_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u892 { + border-width:0px; + position:absolute; + left:1418px; + top:150px; + width:22px; + height:22px; +} +#u892_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u893_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:832px; + height:127px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u893 { + border-width:0px; + position:absolute; + left:50px; + top:211px; + width:832px; + height:127px; +} +#u893_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u894_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:67px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u894 { + border-width:0px; + position:absolute; + left:62px; + top:228px; + width:67px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u894_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:67px; + white-space:nowrap; +} +#u895_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u895 { + border-width:0px; + position:absolute; + left:62px; + top:260px; + width:798px; + height:28px; +} +#u895_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:798px; + word-wrap:break-word; +} +#u896_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u896 { + border-width:0px; + position:absolute; + left:66px; + top:298px; + width:22px; + height:22px; +} +#u896_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u897_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u897 { + border-width:0px; + position:absolute; + left:98px; + top:298px; + width:22px; + height:22px; +} +#u897_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u898 { + border-width:0px; + position:absolute; + left:143px; + top:298px; + width:591px; + height:25px; +} +#u898_input { + position:absolute; + left:0px; + top:0px; + width:591px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u899_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:116px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u899 { + border-width:0px; + position:absolute; + left:757px; + top:291px; + width:116px; + height:40px; +} +#u899_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:112px; + word-wrap:break-word; +} +#u900_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u900 { + border-width:0px; + position:absolute; + left:851px; + top:228px; + width:22px; + height:22px; +} +#u900_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u901_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u901 { + border-width:0px; + position:absolute; + left:64px; + top:143px; + width:140px; + height:40px; +} +#u901_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u903_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u903 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u903_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u904_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u904 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u904_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u905 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u905_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u906_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u906 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u906_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u907_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u907 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u907_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u908_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u908 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u908_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u909_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u909 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u909_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u910_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u910 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u910_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u911_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u911 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u911_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u912 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u913_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u913 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u913_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u914_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u914 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u914_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u915_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u915 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u915_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u916 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u916_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u917 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u918_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u918 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u918_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u919_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u919 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u919_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u920_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u920 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u920_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u921_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u921 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u921_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u922_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u922 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u922_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u923_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:231px; + height:28px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u923 { + border-width:0px; + position:absolute; + left:1076px; + top:423px; + width:231px; + height:28px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u923_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:231px; + white-space:nowrap; +} +#u924_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u924 { + border-width:0px; + position:absolute; + left:954px; + top:461px; + width:140px; + height:40px; +} +#u924_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u925_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u925 { + border-width:0px; + position:absolute; + left:1104px; + top:461px; + width:140px; + height:40px; +} +#u925_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u926_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(102, 102, 153, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u926 { + border-width:0px; + position:absolute; + left:1254px; + top:461px; + width:140px; + height:40px; +} +#u926_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/23_uploadquestion/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/23_uploadquestion/data.js new file mode 100644 index 0000000..55a597f --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/23_uploadquestion/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on noi dung equals "")",bw="isNewIfGroup",bx="condition",by="exprType",bz="binaryOp",bA="op",bB="==",bC="leftExpr",bD="fcall",bE="functionName",bF="GetWidgetText",bG="arguments",bH="pathLiteral",bI="isThis",bJ="isFocused",bK="isTarget",bL="value",bM="6e9e1542001449d0814942c8e938ac51",bN="rightExpr",bO="stringLiteral",bP="stos",bQ="actions",bR="action",bS="setFocusOnWidget",bT="Set Focus on noi dung",bU="objectPaths",bV="selectText",bW="fadeWidget",bX="Show k bo noi dung",bY="objectsToFades",bZ="objectPath",ca="49dea7f7bda64b1eb1b0a909caf44472",cb="fadeInfo",cc="fadeType",cd="show",ce="options",cf="showType",cg="none",ch="bringToFront",ci="Hide k bo tieu de",cj="c5b6519f78954ee3b7a3a8a7d8206b72",ck="hide",cl="Case 2
(Else If text on tieu de equals "")",cm="1a0183a6c99c4e03b5a4b0be1e83b643",cn="Set Focus on tieu de",co="Show k bo tieu de",cp="Hide k bo noi dung",cq="Case 3
(Else If True)",cr="Show thanh cong",cs="60d70f0c631c4f258fa1527d1b01a312",ct="Hide k bo noi dung,
k bo tieu de",cu="tabbable",cv="generateCompound",cw="4b1dad9b87844cc796781312e1b3de38",cx="Droplist",cy="comboBox",cz=300,cA=22,cB="85f724022aae41c594175ddac9c289eb",cC=519,cD=197,cE="HideHintOnFocused",cF="onSelectionChange",cG="OnSelectionChange",cH="Case 1
(If selected option of This equals Mới nhất)",cI="GetSelectedOption",cJ="optionLiteral",cK="Mới nhất",cL="linkWindow",cM="Open 8.ListBook in Current Window",cN="target",cO="targetType",cP="8_listbook.html",cQ="includeVariables",cR="linkType",cS="current",cT="Case 2
(Else If selected option of This equals Chủ đề 1)",cU="Chủ đề 1",cV="Open Link in Current Window",cW="1c8cf0bc353c46e693466a5c8d6b9f4d",cX="Image",cY="imageBox",cZ="75a91ee5b9d042cfa01b8d565fe289c0",da=1391,db=150,dc="images",dd="normal~",de="images/1_home/u20.png",df="ae3090dae63b4878a37c859cf4df8571",dg=1418,dh="images/1_home/imgdanhmuc_u8.png",di="3a1b414cd89a4cc29c440f27c12dff57",dj="fontWeight",dk="700",dl=154,dm=56,dn="1111111151944dfba49f67fd55eb1f88",dp=359,dq=99,dr="verticalAlignment",ds="middle",dt="tieu de",du="Text Field",dv="textBox",dw=669,dx=25,dy="stateStyles",dz="hint",dA="foreGroundFill",dB=0xFF999999,dC="opacity",dD=1,dE="44157808f2934100b68f2394a66b2bba",dF=155,dG="placeholderText",dH="noi dung",dI="Text Area",dJ="textArea",dK=328,dL="42ee17691d13435b8256d8d0a814778f",dM=304,dN="e967cedd8f5a4e818c6ee5296e31934b",dO=238,dP="k bo tieu de",dQ=0xFFFF0000,dR=179,dS="8c7a4c5ad69a4369a5f7788171ac0b32",dT=849,dU="k bo noi dung",dV=279,dW=37,dX=749,dY=642,dZ="thanh cong",ea=380,eb="4d16db047cbd4312b627e5d74316fd7e",ec="Header sau khi dang nhap",ed="referenceDiagramObject",ee=1440,ef="masterId",eg="510564ce784d40c7be615f5485d34622",eh="99b41ce1e3bf409594479babf782dc89",ei=773,ej=0xFFCC3366,ek="Case 1",el="Open 1.Home in Current Window",em="1_home.html",en="fe9099f5d9534925ab845e036eaf45c4",eo=132,ep=16,eq="2285372321d148ec80932747449c36c9",er=200,es="masters",et="510564ce784d40c7be615f5485d34622",eu="Axure:Master",ev="fb703f71faa74ee2a50a36acbf89b2a9",ew=62,ex="4b7bfc596114427989e10bb0b557d0ce",ey=0xFFF2F2F2,ez="linePattern",eA="images/1_home/u2.png",eB="e6f63b059bcf43f3a96c8a990ecbfcbc",eC="btnDangNhap",eD=1325,eE=9,eF=0xFFCC0066,eG="Open 4.Login in Current Window",eH="4_login.html",eI="c4034a50406140e59d4e903581d22fc6",eJ="txtTimKiem",eK=346,eL="Tìm kiếm tài liệu",eM="7bf6dce5f0d54a039254ce84b66aff06",eN="btnTimKiem",eO=42,eP=646,eQ="Open http://google.com in Current Window",eR="webUrl",eS="urlLiteral",eT="http://google.com",eU="images/1_home/btntimkiem_u6.png",eV="2b3b1d15eaa741d8ba8653251c256674",eW="imgDanhMuc",eX=29,eY=196,eZ="Show/Hide Widget",fa="Case 2",fb="50b8e9a5763b4be29df32a27d001bc1f",fc="lblDanhMuc",fd=73,fe=229,ff="98ff46c1e0cd42329a42871b703fe1e7",fg="imgLogoHeader",fh=114,fi=38,fj=6,fk=12,fl="images/1_home/imglogoheader_u7.png",fm="eadb0c99e3054247afafe26fcbcdecbd",fn=36,fo="1136c3bb487940fb91dab49aa20e1c95",fp=1268,fq="cornerRadius",fr="50",fs="images/5_updateprofile/u165.png",ft="5ec8c781ee1e42c196b4b74e7721a094",fu=0xFF0066FF,fv=1108,fw="horizontalAlignment",fx="center",fy="Open 5.UpdateProfile in New Window/Tab",fz="5_updateprofile.html",fA="new",fB="e19761ac1d5647e19caf118662662efa",fC="Group",fD="layer",fE=0,fF="objs",fG="acd21607462d4c8a80179c4e8738ca22",fH=50,fI="47641f9a00ac465095d6b672bbdffef6",fJ=799,fK=0xFFE4E4E4,fL="9bde9ee693514f6cbcea5d7cd987da2d",fM=7,fN=805,fO="images/1_home/u12.png",fP="cf71097e6bbe472688668d0658a742b4",fQ=49,fR="propagate",fS="3fdf17c6a3ed4eae81b1732938ef10a5",fT="Menu",fU="menuObject",fV=136,fW=120,fX=46,fY="e51d8c31b5e44607a2dbf1d734f2910c",fZ="Table",ga="table",gb="bfd1e27ae750487da4c58fc231c250cf",gc="Menu Item",gd="tableCell",ge=30,gf="2036b2baccbc41f0b9263a6981a11a42",gg="left",gh="Open 11.ITBook in Current Window",gi="11_itbook.html",gj="images/1_home/u16.png",gk="158d5fa596254b7195940b50047beb56",gl="Open 12.EconomicBook in Current Window",gm="12_economicbook.html",gn="a48d5d2765f743ec96e8c9500301c869",go=60,gp="Open 13.Outlinebook in Current Window",gq="13_outlinebook.html",gr="08b5728dc6854e7b91fb6036df6c64c2",gs=90,gt="Open 14.Slide in Current Window",gu="14_slide.html",gv="images/1_home/u19.png",gw="508308f1f2c343d897e988dbe2433526",gx=45,gy=1053,gz="images/5_updateprofile/u177.png",gA="bbac05a03a3c4f3a925f9c353f39cff6",gB="scriptId",gC="u927",gD="4b1dad9b87844cc796781312e1b3de38",gE="u928",gF="1c8cf0bc353c46e693466a5c8d6b9f4d",gG="u929",gH="ae3090dae63b4878a37c859cf4df8571",gI="u930",gJ="3a1b414cd89a4cc29c440f27c12dff57",gK="u931",gL="1a0183a6c99c4e03b5a4b0be1e83b643",gM="u932",gN="6e9e1542001449d0814942c8e938ac51",gO="u933",gP="e967cedd8f5a4e818c6ee5296e31934b",gQ="u934",gR="c5b6519f78954ee3b7a3a8a7d8206b72",gS="u935",gT="49dea7f7bda64b1eb1b0a909caf44472",gU="u936",gV="60d70f0c631c4f258fa1527d1b01a312",gW="u937",gX="4d16db047cbd4312b627e5d74316fd7e",gY="u938",gZ="fb703f71faa74ee2a50a36acbf89b2a9",ha="u939",hb="e6f63b059bcf43f3a96c8a990ecbfcbc",hc="u940",hd="c4034a50406140e59d4e903581d22fc6",he="u941",hf="7bf6dce5f0d54a039254ce84b66aff06",hg="u942",hh="2b3b1d15eaa741d8ba8653251c256674",hi="u943",hj="50b8e9a5763b4be29df32a27d001bc1f",hk="u944",hl="98ff46c1e0cd42329a42871b703fe1e7",hm="u945",hn="eadb0c99e3054247afafe26fcbcdecbd",ho="u946",hp="5ec8c781ee1e42c196b4b74e7721a094",hq="u947",hr="e19761ac1d5647e19caf118662662efa",hs="u948",ht="acd21607462d4c8a80179c4e8738ca22",hu="u949",hv="9bde9ee693514f6cbcea5d7cd987da2d",hw="u950",hx="cf71097e6bbe472688668d0658a742b4",hy="u951",hz="3fdf17c6a3ed4eae81b1732938ef10a5",hA="u952",hB="e51d8c31b5e44607a2dbf1d734f2910c",hC="u953",hD="bfd1e27ae750487da4c58fc231c250cf",hE="u954",hF="158d5fa596254b7195940b50047beb56",hG="u955",hH="a48d5d2765f743ec96e8c9500301c869",hI="u956",hJ="08b5728dc6854e7b91fb6036df6c64c2",hK="u957",hL="508308f1f2c343d897e988dbe2433526",hM="u958",hN="99b41ce1e3bf409594479babf782dc89",hO="u959",hP="fe9099f5d9534925ab845e036eaf45c4",hQ="u960"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/23_uploadquestion/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/23_uploadquestion/styles.css new file mode 100644 index 0000000..6c66a1d --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/23_uploadquestion/styles.css @@ -0,0 +1,909 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u927_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u927 { + border-width:0px; + position:absolute; + left:599px; + top:714px; + width:140px; + height:40px; +} +#u927_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u928 { + border-width:0px; + position:absolute; + left:519px; + top:197px; + width:300px; + height:22px; +} +#u928_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u928_input:disabled { + color:grayText; +} +#u929_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u929 { + border-width:0px; + position:absolute; + left:1391px; + top:150px; + width:22px; + height:22px; +} +#u929_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u930_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u930 { + border-width:0px; + position:absolute; + left:1418px; + top:150px; + width:22px; + height:22px; +} +#u930_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u931_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:154px; + height:56px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u931 { + border-width:0px; + position:absolute; + left:359px; + top:99px; + width:154px; + height:56px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u931_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:154px; + word-wrap:break-word; +} +#u932 { + border-width:0px; + position:absolute; + left:359px; + top:155px; + width:669px; + height:25px; +} +#u932_input { + position:absolute; + left:0px; + top:0px; + width:669px; + height:25px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u933 { + border-width:0px; + position:absolute; + left:359px; + top:304px; + width:669px; + height:328px; +} +#u933_input { + position:absolute; + left:0px; + top:0px; + width:669px; + height:328px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u934_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:154px; + height:56px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u934 { + border-width:0px; + position:absolute; + left:359px; + top:238px; + width:154px; + height:56px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u934_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:154px; + word-wrap:break-word; +} +#u935_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:179px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + color:#FF0000; +} +#u935 { + border-width:0px; + position:absolute; + left:849px; + top:197px; + width:179px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + color:#FF0000; +} +#u935_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:179px; + white-space:nowrap; +} +#u936_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:279px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + color:#FF0000; +} +#u936 { + border-width:0px; + position:absolute; + left:749px; + top:642px; + width:279px; + height:37px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + color:#FF0000; +} +#u936_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:279px; + word-wrap:break-word; +} +#u937_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:380px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u937 { + border-width:0px; + position:absolute; + left:359px; + top:642px; + width:380px; + height:37px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u937_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:380px; + white-space:nowrap; +} +#u939_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u939 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u939_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u940_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u940 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u940_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u941 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u941_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u942_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u942 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u942_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u943_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u943 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u943_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u944_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u944 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u944_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u945_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u945 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u945_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u946_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u946 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u946_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u947_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u947 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u947_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u948 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u949_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u949 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u949_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u950_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u950 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u950_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u951_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u951 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u951_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u952 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u952_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u953 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u954_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u954 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u954_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u955_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u955 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u955_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u956_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u956 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u956_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u957_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u957 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u957_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u958_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u958 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u958_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u959_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u959 { + border-width:0px; + position:absolute; + left:773px; + top:714px; + width:140px; + height:40px; +} +#u959_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u960_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:132px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u960 { + border-width:0px; + position:absolute; + left:359px; + top:200px; + width:132px; + height:16px; +} +#u960_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:132px; + white-space:nowrap; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/24_uploaddocument/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/24_uploaddocument/data.js new file mode 100644 index 0000000..dc3f59b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/24_uploaddocument/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If selected option of This equals Mới nhất)",cV="isNewIfGroup",cW="condition",cX="exprType",cY="binaryOp",cZ="op",da="==",db="leftExpr",dc="fcall",dd="functionName",de="GetSelectedOption",df="arguments",dg="pathLiteral",dh="isThis",di="isFocused",dj="isTarget",dk="rightExpr",dl="optionLiteral",dm="value",dn="Mới nhất",dp="actions",dq="action",dr="linkWindow",ds="Open 8.ListBook in Current Window",dt="target",du="targetType",dv="8_listbook.html",dw="includeVariables",dx="linkType",dy="current",dz="Case 2
(Else If selected option of This equals Chủ đề 1)",dA="Chủ đề 1",dB="Open Link in Current Window",dC="c9a6d963dac9401798f9ba35c5edcf6d",dD=306,dE=43,dF=537,dG=121,dH="fontSize",dI="25px",dJ="a9a40af7a7f04d5391107c2f978f39f1",dK=29,dL="c9f35713a1cf4e91a0f2dbac65e6fb5c",dM=343,dN="552cfbb8f44f40bea279172c9cf960e9",dO=467,dP="7da003622e1c42df83c3dbacf13dabad",dQ=140,dR=25,dS="cd64754845384de3872fb4a066432c1f",dT=640,dU="onClick",dV="OnClick",dW="Case 1",dX="fadeWidget",dY="Show lb thêm thành công",dZ="objectsToFades",ea="objectPath",eb="fadeInfo",ec="fadeType",ed="show",ee="options",ef="showType",eg="none",eh="bringToFront",ei="tabbable",ej="17e0390ce53b462aaab2ed45ece6035c",ek=706,el=0xFFCC3366,em="Open 1.Home in Current Window",en="1_home.html",eo="masters",ep="510564ce784d40c7be615f5485d34622",eq="Axure:Master",er="fb703f71faa74ee2a50a36acbf89b2a9",es="4b7bfc596114427989e10bb0b557d0ce",et=0xFFF2F2F2,eu="linePattern",ev="images",ew="normal~",ex="images/1_home/u2.png",ey="e6f63b059bcf43f3a96c8a990ecbfcbc",ez="btnDangNhap",eA=99,eB=40,eC=1325,eD=9,eE=0xFFCC0066,eF="Open 4.Login in Current Window",eG="4_login.html",eH="c4034a50406140e59d4e903581d22fc6",eI="txtTimKiem",eJ=346,eK="Tìm kiếm tài liệu",eL="7bf6dce5f0d54a039254ce84b66aff06",eM="btnTimKiem",eN="Image",eO="imageBox",eP=42,eQ="75a91ee5b9d042cfa01b8d565fe289c0",eR=646,eS="Open http://google.com in Current Window",eT="webUrl",eU="urlLiteral",eV="stringLiteral",eW="http://google.com",eX="stos",eY="images/1_home/btntimkiem_u6.png",eZ="2b3b1d15eaa741d8ba8653251c256674",fa="imgDanhMuc",fb=196,fc="Show/Hide Widget",fd="Case 2",fe="images/1_home/imgdanhmuc_u8.png",ff="50b8e9a5763b4be29df32a27d001bc1f",fg="lblDanhMuc",fh=73,fi=229,fj="verticalAlignment",fk="middle",fl="98ff46c1e0cd42329a42871b703fe1e7",fm="imgLogoHeader",fn=114,fo=6,fp=12,fq="images/1_home/imglogoheader_u7.png",fr="eadb0c99e3054247afafe26fcbcdecbd",fs="1136c3bb487940fb91dab49aa20e1c95",ft=1268,fu="cornerRadius",fv="50",fw="images/5_updateprofile/u165.png",fx="5ec8c781ee1e42c196b4b74e7721a094",fy=0xFF0066FF,fz=150,fA=1108,fB="horizontalAlignment",fC="center",fD="Open 5.UpdateProfile in New Window/Tab",fE="5_updateprofile.html",fF="new",fG="e19761ac1d5647e19caf118662662efa",fH="Group",fI="layer",fJ=0,fK="objs",fL="acd21607462d4c8a80179c4e8738ca22",fM=50,fN="47641f9a00ac465095d6b672bbdffef6",fO=799,fP=0xFFE4E4E4,fQ="9bde9ee693514f6cbcea5d7cd987da2d",fR=7,fS=805,fT="images/1_home/u12.png",fU="cf71097e6bbe472688668d0658a742b4",fV=49,fW="propagate",fX="3fdf17c6a3ed4eae81b1732938ef10a5",fY="Menu",fZ="menuObject",ga=136,gb=120,gc=200,gd=46,ge="e51d8c31b5e44607a2dbf1d734f2910c",gf="Table",gg="table",gh="bfd1e27ae750487da4c58fc231c250cf",gi="Menu Item",gj="tableCell",gk=30,gl="2036b2baccbc41f0b9263a6981a11a42",gm="left",gn="Open 11.ITBook in Current Window",go="11_itbook.html",gp="images/1_home/u16.png",gq="158d5fa596254b7195940b50047beb56",gr="Open 12.EconomicBook in Current Window",gs="12_economicbook.html",gt="a48d5d2765f743ec96e8c9500301c869",gu=60,gv="Open 13.Outlinebook in Current Window",gw="13_outlinebook.html",gx="08b5728dc6854e7b91fb6036df6c64c2",gy=90,gz="Open 14.Slide in Current Window",gA="14_slide.html",gB="images/1_home/u19.png",gC="508308f1f2c343d897e988dbe2433526",gD=45,gE=1053,gF="images/5_updateprofile/u177.png",gG="objectPaths",gH="5cb7723169af41b59b452466b5762d39",gI="scriptId",gJ="u961",gK="013a2adf907b47dd91f9b49561a2ff00",gL="u962",gM="aaebd799f89645a18c70c280c05d1cf5",gN="u963",gO="989cd9b9f2604d5caea2fe9a4900ff35",gP="u964",gQ="7be78fb0205a47c893f70879d30e0ca5",gR="u965",gS="5b143dcb488445d983ae3aa5502b8e9e",gT="u966",gU="f433ef0cc28948aaad366e2c8488ec57",gV="u967",gW="fb85362c7def4d54b054514296d054fa",gX="u968",gY="27e554b8dba04d8b83e4d3e535ca0996",gZ="u969",ha="4b1993f3ec9a474f81db9f86c2ad87b8",hb="u970",hc="571157fe15b44f35b42ef51eb2a94846",hd="u971",he="b9e8fcbffc0d4e5b9eff939a917c4542",hf="u972",hg="f0b65be045c34a948750fc44b89625c0",hh="u973",hi="c3b73afe65e6411d85fca31e55929302",hj="u974",hk="fb703f71faa74ee2a50a36acbf89b2a9",hl="u975",hm="e6f63b059bcf43f3a96c8a990ecbfcbc",hn="u976",ho="c4034a50406140e59d4e903581d22fc6",hp="u977",hq="7bf6dce5f0d54a039254ce84b66aff06",hr="u978",hs="2b3b1d15eaa741d8ba8653251c256674",ht="u979",hu="50b8e9a5763b4be29df32a27d001bc1f",hv="u980",hw="98ff46c1e0cd42329a42871b703fe1e7",hx="u981",hy="eadb0c99e3054247afafe26fcbcdecbd",hz="u982",hA="5ec8c781ee1e42c196b4b74e7721a094",hB="u983",hC="e19761ac1d5647e19caf118662662efa",hD="u984",hE="acd21607462d4c8a80179c4e8738ca22",hF="u985",hG="9bde9ee693514f6cbcea5d7cd987da2d",hH="u986",hI="cf71097e6bbe472688668d0658a742b4",hJ="u987",hK="3fdf17c6a3ed4eae81b1732938ef10a5",hL="u988",hM="e51d8c31b5e44607a2dbf1d734f2910c",hN="u989",hO="bfd1e27ae750487da4c58fc231c250cf",hP="u990",hQ="158d5fa596254b7195940b50047beb56",hR="u991",hS="a48d5d2765f743ec96e8c9500301c869",hT="u992",hU="08b5728dc6854e7b91fb6036df6c64c2",hV="u993",hW="508308f1f2c343d897e988dbe2433526",hX="u994",hY="c1916c4cc29b476695061b1f71407ab1",hZ="u995",ia="c9a6d963dac9401798f9ba35c5edcf6d",ib="u996",ic="a9a40af7a7f04d5391107c2f978f39f1",id="u997",ie="552cfbb8f44f40bea279172c9cf960e9",ig="u998",ih="7da003622e1c42df83c3dbacf13dabad",ii="u999",ij="17e0390ce53b462aaab2ed45ece6035c",ik="u1000"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/24_uploaddocument/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/24_uploaddocument/styles.css new file mode 100644 index 0000000..6dee910 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/24_uploaddocument/styles.css @@ -0,0 +1,1054 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u961 { + border-width:0px; + position:absolute; + left:543px; + top:205px; + width:300px; + height:39px; +} +#u961_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:39px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u962_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:93px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u962 { + border-width:0px; + position:absolute; + left:411px; + top:217px; + width:93px; + height:16px; +} +#u962_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:93px; + white-space:nowrap; +} +#u963_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:47px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u963 { + border-width:0px; + position:absolute; + left:414px; + top:281px; + width:47px; + height:16px; +} +#u963_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:47px; + white-space:nowrap; +} +#u964_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:62px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u964 { + border-width:0px; + position:absolute; + left:414px; + top:411px; + width:62px; + height:16px; +} +#u964_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:62px; + white-space:nowrap; +} +#u965 { + border-width:0px; + position:absolute; + left:543px; + top:399px; + width:300px; + height:37px; +} +#u965_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u966 { + border-width:0px; + position:absolute; + left:543px; + top:339px; + width:300px; + height:36px; +} +#u966_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:36px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u967 { + border-width:0px; + position:absolute; + left:543px; + top:461px; + width:300px; + height:38px; +} +#u967_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:38px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u968_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:95px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u968 { + border-width:0px; + position:absolute; + left:414px; + top:541px; + width:95px; + height:16px; +} +#u968_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:95px; + white-space:nowrap; +} +#u969 { + border-width:0px; + position:absolute; + left:543px; + top:529px; + width:303px; + height:39px; +} +#u969_input { + position:absolute; + left:0px; + top:0px; + width:303px; + height:39px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u970_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:144px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u970 { + border-width:0px; + position:absolute; + left:862px; + top:349px; + width:144px; + height:16px; +} +#u970_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:144px; + white-space:nowrap; +} +#u971_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:168px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u971 { + border-width:0px; + position:absolute; + left:862px; + top:205px; + width:168px; + height:16px; +} +#u971_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:168px; + white-space:nowrap; +} +#u972_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:138px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u972 { + border-width:0px; + position:absolute; + left:862px; + top:474px; + width:138px; + height:16px; +} +#u972_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:138px; + white-space:nowrap; +} +#u973_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:157px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u973 { + border-width:0px; + position:absolute; + left:689px; + top:578px; + width:157px; + height:16px; +} +#u973_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:157px; + white-space:nowrap; +} +#u975_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u975 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u975_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u976_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u976 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u976_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u977 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u977_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u978_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u978 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u978_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u979_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u979 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u979_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u980_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u980 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u980_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u981_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u981 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u981_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u982_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u982 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u982_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u983_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u983 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u983_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u984 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u985_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u985 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u985_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u986_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u986 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u986_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u987_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u987 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u987_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u988 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u988_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u989 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u990_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u990 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u990_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u991_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u991 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u991_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u992_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u992 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u992_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u993_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u993 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u993_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u994_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u994 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u994_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u995 { + border-width:0px; + position:absolute; + left:543px; + top:268px; + width:300px; + height:41px; +} +#u995_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u995_input:disabled { + color:grayText; +} +#u996_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:306px; + height:43px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-size:25px; +} +#u996 { + border-width:0px; + position:absolute; + left:537px; + top:121px; + width:306px; + height:43px; + font-size:25px; +} +#u996_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:306px; + word-wrap:break-word; +} +#u997_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:93px; + height:29px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u997 { + border-width:0px; + position:absolute; + left:411px; + top:343px; + width:93px; + height:29px; +} +#u997_text { + border-width:0px; + position:absolute; + left:2px; + top:6px; + width:89px; + word-wrap:break-word; +} +#u998_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:93px; + height:29px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u998 { + border-width:0px; + position:absolute; + left:414px; + top:467px; + width:93px; + height:29px; +} +#u998_text { + border-width:0px; + position:absolute; + left:2px; + top:6px; + width:89px; + word-wrap:break-word; +} +#u999_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:25px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u999 { + border-width:0px; + position:absolute; + left:543px; + top:640px; + width:140px; + height:25px; +} +#u999_text { + border-width:0px; + position:absolute; + left:2px; + top:4px; + width:136px; + word-wrap:break-word; +} +#u1000_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:25px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1000 { + border-width:0px; + position:absolute; + left:706px; + top:640px; + width:140px; + height:25px; +} +#u1000_text { + border-width:0px; + position:absolute; + left:2px; + top:4px; + width:136px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/25_updatedocument/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/25_updatedocument/data.js new file mode 100644 index 0000000..070c500 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/25_updatedocument/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If selected option of This equals Mới nhất)",cO="isNewIfGroup",cP="condition",cQ="exprType",cR="binaryOp",cS="op",cT="==",cU="leftExpr",cV="fcall",cW="functionName",cX="GetSelectedOption",cY="arguments",cZ="pathLiteral",da="isThis",db="isFocused",dc="isTarget",dd="rightExpr",de="optionLiteral",df="value",dg="Mới nhất",dh="actions",di="action",dj="linkWindow",dk="Open 8.ListBook in Current Window",dl="target",dm="targetType",dn="8_listbook.html",dp="includeVariables",dq="linkType",dr="current",ds="Case 2
(Else If selected option of This equals Chủ đề 1)",dt="Chủ đề 1",du="Open Link in Current Window",dv="f652e92aa36a4258910d4b30d32efe3d",dw=29,dx="c9f35713a1cf4e91a0f2dbac65e6fb5c",dy=333,dz="8977b6319aec40e79d7684b87c90248c",dA=457,dB="5efa553d95a64747bcbedbfa00475228",dC=140,dD=25,dE="cd64754845384de3872fb4a066432c1f",dF=630,dG="4f55ceeb22f14ef292aae4fe35fd448c",dH=615,dI=0xFFCC3366,dJ="onClick",dK="OnClick",dL="Case 1",dM="Open 1.Home in Current Window",dN="1_home.html",dO="tabbable",dP="masters",dQ="510564ce784d40c7be615f5485d34622",dR="Axure:Master",dS="fb703f71faa74ee2a50a36acbf89b2a9",dT="4b7bfc596114427989e10bb0b557d0ce",dU=0xFFF2F2F2,dV="linePattern",dW="none",dX="images",dY="normal~",dZ="images/1_home/u2.png",ea="e6f63b059bcf43f3a96c8a990ecbfcbc",eb="btnDangNhap",ec=99,ed=40,ee=1325,ef=9,eg=0xFFCC0066,eh="Open 4.Login in Current Window",ei="4_login.html",ej="c4034a50406140e59d4e903581d22fc6",ek="txtTimKiem",el=346,em="Tìm kiếm tài liệu",en="7bf6dce5f0d54a039254ce84b66aff06",eo="btnTimKiem",ep="Image",eq="imageBox",er=42,es="75a91ee5b9d042cfa01b8d565fe289c0",et=646,eu="Open http://google.com in Current Window",ev="webUrl",ew="urlLiteral",ex="stringLiteral",ey="http://google.com",ez="stos",eA="images/1_home/btntimkiem_u6.png",eB="2b3b1d15eaa741d8ba8653251c256674",eC="imgDanhMuc",eD=196,eE="fadeWidget",eF="Show/Hide Widget",eG="objectsToFades",eH="Case 2",eI="images/1_home/imgdanhmuc_u8.png",eJ="50b8e9a5763b4be29df32a27d001bc1f",eK="lblDanhMuc",eL=73,eM=229,eN="verticalAlignment",eO="middle",eP="98ff46c1e0cd42329a42871b703fe1e7",eQ="imgLogoHeader",eR=114,eS=6,eT=12,eU="images/1_home/imglogoheader_u7.png",eV="eadb0c99e3054247afafe26fcbcdecbd",eW="1136c3bb487940fb91dab49aa20e1c95",eX=1268,eY="cornerRadius",eZ="50",fa="images/5_updateprofile/u165.png",fb="5ec8c781ee1e42c196b4b74e7721a094",fc=0xFF0066FF,fd=150,fe=1108,ff="horizontalAlignment",fg="center",fh="Open 5.UpdateProfile in New Window/Tab",fi="5_updateprofile.html",fj="new",fk="e19761ac1d5647e19caf118662662efa",fl="Group",fm="layer",fn=0,fo="objs",fp="acd21607462d4c8a80179c4e8738ca22",fq=50,fr="47641f9a00ac465095d6b672bbdffef6",fs=799,ft=0xFFE4E4E4,fu="9bde9ee693514f6cbcea5d7cd987da2d",fv=7,fw=805,fx="images/1_home/u12.png",fy="cf71097e6bbe472688668d0658a742b4",fz=49,fA="propagate",fB="3fdf17c6a3ed4eae81b1732938ef10a5",fC="Menu",fD="menuObject",fE=136,fF=120,fG=200,fH=46,fI="e51d8c31b5e44607a2dbf1d734f2910c",fJ="Table",fK="table",fL="bfd1e27ae750487da4c58fc231c250cf",fM="Menu Item",fN="tableCell",fO=30,fP="2036b2baccbc41f0b9263a6981a11a42",fQ="left",fR="Open 11.ITBook in Current Window",fS="11_itbook.html",fT="images/1_home/u16.png",fU="158d5fa596254b7195940b50047beb56",fV="Open 12.EconomicBook in Current Window",fW="12_economicbook.html",fX="a48d5d2765f743ec96e8c9500301c869",fY=60,fZ="Open 13.Outlinebook in Current Window",ga="13_outlinebook.html",gb="08b5728dc6854e7b91fb6036df6c64c2",gc=90,gd="Open 14.Slide in Current Window",ge="14_slide.html",gf="images/1_home/u19.png",gg="508308f1f2c343d897e988dbe2433526",gh=45,gi=1053,gj="images/5_updateprofile/u177.png",gk="objectPaths",gl="f362e471e3cd46198122db62e2d7544f",gm="scriptId",gn="u1001",go="fb703f71faa74ee2a50a36acbf89b2a9",gp="u1002",gq="e6f63b059bcf43f3a96c8a990ecbfcbc",gr="u1003",gs="c4034a50406140e59d4e903581d22fc6",gt="u1004",gu="7bf6dce5f0d54a039254ce84b66aff06",gv="u1005",gw="2b3b1d15eaa741d8ba8653251c256674",gx="u1006",gy="50b8e9a5763b4be29df32a27d001bc1f",gz="u1007",gA="98ff46c1e0cd42329a42871b703fe1e7",gB="u1008",gC="eadb0c99e3054247afafe26fcbcdecbd",gD="u1009",gE="5ec8c781ee1e42c196b4b74e7721a094",gF="u1010",gG="e19761ac1d5647e19caf118662662efa",gH="u1011",gI="acd21607462d4c8a80179c4e8738ca22",gJ="u1012",gK="9bde9ee693514f6cbcea5d7cd987da2d",gL="u1013",gM="cf71097e6bbe472688668d0658a742b4",gN="u1014",gO="3fdf17c6a3ed4eae81b1732938ef10a5",gP="u1015",gQ="e51d8c31b5e44607a2dbf1d734f2910c",gR="u1016",gS="bfd1e27ae750487da4c58fc231c250cf",gT="u1017",gU="158d5fa596254b7195940b50047beb56",gV="u1018",gW="a48d5d2765f743ec96e8c9500301c869",gX="u1019",gY="08b5728dc6854e7b91fb6036df6c64c2",gZ="u1020",ha="508308f1f2c343d897e988dbe2433526",hb="u1021",hc="b8100901d12b4facb6b5d0c6edfda130",hd="u1022",he="6ab960eca5564e4d84e200dc24febd68",hf="u1023",hg="c1da4b9f83ba40c0ab8beea68995b89e",hh="u1024",hi="0dd27dbfab594eb6853d7dee89c5c87b",hj="u1025",hk="51ae572af52d48beba7a45aeece5089e",hl="u1026",hm="7a22514fd68646a797a725899da24ac1",hn="u1027",ho="921b6465efd34ce1aa995837edabad37",hp="u1028",hq="7729f96d4a8b4c5fb698575d57f1d51b",hr="u1029",hs="a94d41688f144335b20d42dda22454b6",ht="u1030",hu="feeeaf9d55e94ac4a59d2a1bb49866eb",hv="u1031",hw="74d32c19e08b41d2b1afddfe7f896a02",hx="u1032",hy="dbf2c595ec684144b8baa325170aeeae",hz="u1033",hA="f652e92aa36a4258910d4b30d32efe3d",hB="u1034",hC="8977b6319aec40e79d7684b87c90248c",hD="u1035",hE="5efa553d95a64747bcbedbfa00475228",hF="u1036",hG="4f55ceeb22f14ef292aae4fe35fd448c",hH="u1037"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/25_updatedocument/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/25_updatedocument/styles.css new file mode 100644 index 0000000..c2e8b7e --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/25_updatedocument/styles.css @@ -0,0 +1,959 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u1002_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u1002 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u1002_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1003_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1003 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u1003_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u1004 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u1004_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u1005_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u1005 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u1005_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1006_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u1006 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u1006_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1007_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1007 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u1007_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u1008_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u1008 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u1008_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1009_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u1009 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u1009_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1010_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u1010 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u1010_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u1011 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u1012_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1012 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u1012_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1013_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u1013 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u1013_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1014_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u1014 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u1014_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u1015 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u1015_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u1016 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u1017_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u1017 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u1017_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u1018_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u1018 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u1018_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u1019_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u1019 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u1019_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u1020_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u1020 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u1020_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u1021_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u1021 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u1021_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1022 { + border-width:0px; + position:absolute; + left:452px; + top:195px; + width:300px; + height:39px; +} +#u1022_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:39px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u1023_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:93px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1023 { + border-width:0px; + position:absolute; + left:320px; + top:207px; + width:93px; + height:16px; +} +#u1023_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:93px; + white-space:nowrap; +} +#u1024_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:47px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1024 { + border-width:0px; + position:absolute; + left:323px; + top:271px; + width:47px; + height:16px; +} +#u1024_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:47px; + white-space:nowrap; +} +#u1025_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:62px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1025 { + border-width:0px; + position:absolute; + left:323px; + top:401px; + width:62px; + height:16px; +} +#u1025_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:62px; + white-space:nowrap; +} +#u1026 { + border-width:0px; + position:absolute; + left:452px; + top:389px; + width:300px; + height:37px; +} +#u1026_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u1027 { + border-width:0px; + position:absolute; + left:452px; + top:329px; + width:300px; + height:36px; +} +#u1027_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:36px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u1028 { + border-width:0px; + position:absolute; + left:452px; + top:451px; + width:300px; + height:38px; +} +#u1028_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:38px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u1029_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:95px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1029 { + border-width:0px; + position:absolute; + left:323px; + top:531px; + width:95px; + height:16px; +} +#u1029_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:95px; + white-space:nowrap; +} +#u1030 { + border-width:0px; + position:absolute; + left:452px; + top:519px; + width:303px; + height:39px; +} +#u1030_input { + position:absolute; + left:0px; + top:0px; + width:303px; + height:39px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u1031_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:134px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1031 { + border-width:0px; + position:absolute; + left:771px; + top:195px; + width:134px; + height:16px; +} +#u1031_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:134px; + white-space:nowrap; +} +#u1032_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:176px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1032 { + border-width:0px; + position:absolute; + left:579px; + top:568px; + width:176px; + height:16px; +} +#u1032_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:176px; + white-space:nowrap; +} +#u1033 { + border-width:0px; + position:absolute; + left:452px; + top:258px; + width:300px; + height:41px; +} +#u1033_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u1033_input:disabled { + color:grayText; +} +#u1034_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:93px; + height:29px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1034 { + border-width:0px; + position:absolute; + left:320px; + top:333px; + width:93px; + height:29px; +} +#u1034_text { + border-width:0px; + position:absolute; + left:2px; + top:6px; + width:89px; + word-wrap:break-word; +} +#u1035_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:93px; + height:29px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1035 { + border-width:0px; + position:absolute; + left:323px; + top:457px; + width:93px; + height:29px; +} +#u1035_text { + border-width:0px; + position:absolute; + left:2px; + top:6px; + width:89px; + word-wrap:break-word; +} +#u1036_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:25px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1036 { + border-width:0px; + position:absolute; + left:452px; + top:630px; + width:140px; + height:25px; +} +#u1036_text { + border-width:0px; + position:absolute; + left:2px; + top:4px; + width:136px; + word-wrap:break-word; +} +#u1037_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:25px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1037 { + border-width:0px; + position:absolute; + left:615px; + top:630px; + width:140px; + height:25px; +} +#u1037_text { + border-width:0px; + position:absolute; + left:2px; + top:4px; + width:136px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/26_deletedocument/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/26_deletedocument/data.js new file mode 100644 index 0000000..1c6b2aa --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/26_deletedocument/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If visibility of bt xóa 1 equals false)",bT="isNewIfGroup",bU="condition",bV="exprType",bW="binaryOp",bX="op",bY="==",bZ="leftExpr",ca="fcall",cb="functionName",cc="GetWidgetVisibility",cd="arguments",ce="pathLiteral",cf="isThis",cg="isFocused",ch="isTarget",ci="value",cj="e870062ce55f477ea8024feb53778a81",ck="rightExpr",cl="booleanLiteral",cm="actions",cn="action",co="fadeWidget",cp="Show bt xóa 1",cq="objectsToFades",cr="objectPath",cs="fadeInfo",ct="fadeType",cu="show",cv="options",cw="showType",cx="none",cy="bringToFront",cz="Case 2
(Else If visibility of bt xóa 1 equals true)",cA="Hide bt xóa 1",cB="hide",cC="tabbable",cD="generateCompound",cE="87e8b246d75d41b78a7a6264fa3ecdf3",cF="bt chi tiết 2",cG=274,cH="Case 1
(If visibility of bt xóa 2 equals false)",cI="f8e928ebefee4675a0f812dfad881576",cJ="Show bt xóa 2",cK="Case 2
(Else If visibility of bt xóa 2 equals true)",cL="Hide bt xóa 2",cM="9a35cb4fc58e4c6bbe865e9bf7a56f0b",cN="bt chi tiết 3",cO=510,cP="Case 1
(If visibility of bt xóa 3 equals false)",cQ="e1d1123a05d34a618c1c04b1bb79d862",cR="Show bt xóa 3",cS="Case 2
(Else If visibility of bt xóa 3 equals true)",cT="Hide bt xóa 3",cU="bt xóa 1",cV=468,cW=0xFFCC3366,cX="Case 1",cY="Show lb xóa sách 1,
Hide im sách 1,
bt xóa 1,
bt chi tiết 1",cZ="7f45d4146bce46a6927a20b24ab1b59c",da="bt xóa 2",db="Show lb xóa sách 2,
Hide bt xóa 2,
im sách 2,
bt chi tiết 2",dc="25c7ca79290f4867bef9dccd17567332",dd="bt xóa 3",de="Show lb xóa sách 3,
Hide bt xóa 3,
im sách 3,
bt chi tiết 3",df="e8ec7bcbb0174b48a69a2811bdd8d6dd",dg="lb xóa sách 1",dh=91,di=16,dj="2285372321d148ec80932747449c36c9",dk=548,dl="lb xóa sách 2",dm="lb xóa sách 3",dn="9281e113fc3c4d8cbaa8a9da859af050",dp=725,dq="0164775df5f54ff685c8a22813f0b235",dr=737,ds="7561d6d79a1841b0b8605383d075f200",dt="7b72b5abdd9740649eb7dd0c56583338",du="e3e1e31d36994626a266a84f041d0ce4",dv=930,dw="00cf52e440ab4b75969cab2adb1e898e",dx=942,dy="5105bf8e53674b23b7a411c32c68c3de",dz="5923993e0b1c419ab3f4ea77fad47d16",dA="e1010679c4af4a05bae930ada5e83d2a",dB=1160,dC="de3817e9ff1e4157bf7989f8a182e4b3",dD=1172,dE="c678e72e6a164374a0742f655b94e9e3",dF="3832244a604f434caac101149ea34da0",dG="80d920c0b8cd45baa886d70a9adfa26f",dH="Header sau khi dang nhap",dI="referenceDiagramObject",dJ=1440,dK=849,dL="masterId",dM="510564ce784d40c7be615f5485d34622",dN="masters",dO="510564ce784d40c7be615f5485d34622",dP="Axure:Master",dQ="fb703f71faa74ee2a50a36acbf89b2a9",dR=62,dS="4b7bfc596114427989e10bb0b557d0ce",dT=0xFFF2F2F2,dU="linePattern",dV="images/1_home/u2.png",dW="e6f63b059bcf43f3a96c8a990ecbfcbc",dX="btnDangNhap",dY=99,dZ=1325,ea=9,eb=0xFFCC0066,ec="linkWindow",ed="Open 4.Login in Current Window",ee="target",ef="targetType",eg="4_login.html",eh="includeVariables",ei="linkType",ej="current",ek="c4034a50406140e59d4e903581d22fc6",el="txtTimKiem",em="Text Field",en="textBox",eo=300,ep=37,eq="stateStyles",er="hint",es="foreGroundFill",et=0xFF999999,eu="opacity",ev=1,ew="44157808f2934100b68f2394a66b2bba",ex=346,ey="HideHintOnFocused",ez="placeholderText",eA="Tìm kiếm tài liệu",eB="7bf6dce5f0d54a039254ce84b66aff06",eC="btnTimKiem",eD=42,eE=646,eF="Open http://google.com in Current Window",eG="webUrl",eH="urlLiteral",eI="stringLiteral",eJ="http://google.com",eK="stos",eL="images/1_home/btntimkiem_u6.png",eM="2b3b1d15eaa741d8ba8653251c256674",eN="imgDanhMuc",eO=29,eP=196,eQ="Show/Hide Widget",eR="Case 2",eS="images/1_home/imgdanhmuc_u8.png",eT="50b8e9a5763b4be29df32a27d001bc1f",eU="lblDanhMuc",eV=73,eW=229,eX="verticalAlignment",eY="middle",eZ="98ff46c1e0cd42329a42871b703fe1e7",fa="imgLogoHeader",fb=114,fc=38,fd=6,fe=12,ff="Open 1.Home in Current Window",fg="1_home.html",fh="images/1_home/imglogoheader_u7.png",fi="eadb0c99e3054247afafe26fcbcdecbd",fj=36,fk="1136c3bb487940fb91dab49aa20e1c95",fl=1268,fm="cornerRadius",fn="50",fo="images/5_updateprofile/u165.png",fp="5ec8c781ee1e42c196b4b74e7721a094",fq=0xFF0066FF,fr=150,fs=1108,ft="horizontalAlignment",fu="center",fv="Open 5.UpdateProfile in New Window/Tab",fw="5_updateprofile.html",fx="new",fy="e19761ac1d5647e19caf118662662efa",fz="Group",fA="layer",fB=0,fC="objs",fD="acd21607462d4c8a80179c4e8738ca22",fE=50,fF="47641f9a00ac465095d6b672bbdffef6",fG=799,fH=0xFFE4E4E4,fI="9bde9ee693514f6cbcea5d7cd987da2d",fJ=7,fK=805,fL="images/1_home/u12.png",fM="cf71097e6bbe472688668d0658a742b4",fN=49,fO="propagate",fP="3fdf17c6a3ed4eae81b1732938ef10a5",fQ="Menu",fR="menuObject",fS=136,fT=120,fU=200,fV=46,fW="e51d8c31b5e44607a2dbf1d734f2910c",fX="Table",fY="table",fZ="bfd1e27ae750487da4c58fc231c250cf",ga="Menu Item",gb="tableCell",gc="2036b2baccbc41f0b9263a6981a11a42",gd="left",ge="Open 11.ITBook in Current Window",gf="11_itbook.html",gg="images/1_home/u16.png",gh="158d5fa596254b7195940b50047beb56",gi="Open 12.EconomicBook in Current Window",gj="12_economicbook.html",gk="a48d5d2765f743ec96e8c9500301c869",gl=60,gm="Open 13.Outlinebook in Current Window",gn="13_outlinebook.html",go="08b5728dc6854e7b91fb6036df6c64c2",gp=90,gq="Open 14.Slide in Current Window",gr="14_slide.html",gs="images/1_home/u19.png",gt="508308f1f2c343d897e988dbe2433526",gu=45,gv=1053,gw="images/5_updateprofile/u177.png",gx="objectPaths",gy="fc0d913d953f4d419b56af9c602550fb",gz="scriptId",gA="u1038",gB="4b78ac17c5814a639ac20e67109c60b4",gC="u1039",gD="cfebab6a022647e099c2249268241f9a",gE="u1040",gF="9680af0816d04674a5c8c6ee96b0562d",gG="u1041",gH="87e8b246d75d41b78a7a6264fa3ecdf3",gI="u1042",gJ="9a35cb4fc58e4c6bbe865e9bf7a56f0b",gK="u1043",gL="e870062ce55f477ea8024feb53778a81",gM="u1044",gN="f8e928ebefee4675a0f812dfad881576",gO="u1045",gP="e1d1123a05d34a618c1c04b1bb79d862",gQ="u1046",gR="7f45d4146bce46a6927a20b24ab1b59c",gS="u1047",gT="25c7ca79290f4867bef9dccd17567332",gU="u1048",gV="e8ec7bcbb0174b48a69a2811bdd8d6dd",gW="u1049",gX="9281e113fc3c4d8cbaa8a9da859af050",gY="u1050",gZ="0164775df5f54ff685c8a22813f0b235",ha="u1051",hb="7561d6d79a1841b0b8605383d075f200",hc="u1052",hd="7b72b5abdd9740649eb7dd0c56583338",he="u1053",hf="e3e1e31d36994626a266a84f041d0ce4",hg="u1054",hh="00cf52e440ab4b75969cab2adb1e898e",hi="u1055",hj="5105bf8e53674b23b7a411c32c68c3de",hk="u1056",hl="5923993e0b1c419ab3f4ea77fad47d16",hm="u1057",hn="e1010679c4af4a05bae930ada5e83d2a",ho="u1058",hp="de3817e9ff1e4157bf7989f8a182e4b3",hq="u1059",hr="c678e72e6a164374a0742f655b94e9e3",hs="u1060",ht="3832244a604f434caac101149ea34da0",hu="u1061",hv="80d920c0b8cd45baa886d70a9adfa26f",hw="u1062",hx="fb703f71faa74ee2a50a36acbf89b2a9",hy="u1063",hz="e6f63b059bcf43f3a96c8a990ecbfcbc",hA="u1064",hB="c4034a50406140e59d4e903581d22fc6",hC="u1065",hD="7bf6dce5f0d54a039254ce84b66aff06",hE="u1066",hF="2b3b1d15eaa741d8ba8653251c256674",hG="u1067",hH="50b8e9a5763b4be29df32a27d001bc1f",hI="u1068",hJ="98ff46c1e0cd42329a42871b703fe1e7",hK="u1069",hL="eadb0c99e3054247afafe26fcbcdecbd",hM="u1070",hN="5ec8c781ee1e42c196b4b74e7721a094",hO="u1071",hP="e19761ac1d5647e19caf118662662efa",hQ="u1072",hR="acd21607462d4c8a80179c4e8738ca22",hS="u1073",hT="9bde9ee693514f6cbcea5d7cd987da2d",hU="u1074",hV="cf71097e6bbe472688668d0658a742b4",hW="u1075",hX="3fdf17c6a3ed4eae81b1732938ef10a5",hY="u1076",hZ="e51d8c31b5e44607a2dbf1d734f2910c",ia="u1077",ib="bfd1e27ae750487da4c58fc231c250cf",ic="u1078",id="158d5fa596254b7195940b50047beb56",ie="u1079",ig="a48d5d2765f743ec96e8c9500301c869",ih="u1080",ii="08b5728dc6854e7b91fb6036df6c64c2",ij="u1081",ik="508308f1f2c343d897e988dbe2433526",il="u1082"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/26_deletedocument/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/26_deletedocument/styles.css new file mode 100644 index 0000000..0363c10 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/26_deletedocument/styles.css @@ -0,0 +1,1217 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u1038_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:189px; + height:170px; +} +#u1038 { + border-width:0px; + position:absolute; + left:11px; + top:204px; + width:189px; + height:170px; +} +#u1038_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1039_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:178px; + height:170px; +} +#u1039 { + border-width:0px; + position:absolute; + left:255px; + top:204px; + width:178px; + height:170px; +} +#u1039_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1040_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:164px; + height:170px; +} +#u1040 { + border-width:0px; + position:absolute; + left:498px; + top:204px; + width:164px; + height:170px; +} +#u1040_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1041_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1041 { + border-width:0px; + position:absolute; + left:30px; + top:397px; + width:140px; + height:40px; +} +#u1041_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1042_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1042 { + border-width:0px; + position:absolute; + left:274px; + top:397px; + width:140px; + height:40px; +} +#u1042_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1043_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1043 { + border-width:0px; + position:absolute; + left:510px; + top:397px; + width:140px; + height:40px; +} +#u1043_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1044_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1044 { + border-width:0px; + position:absolute; + left:30px; + top:468px; + width:140px; + height:40px; +} +#u1044_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1045_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1045 { + border-width:0px; + position:absolute; + left:274px; + top:468px; + width:140px; + height:40px; +} +#u1045_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1046_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1046 { + border-width:0px; + position:absolute; + left:510px; + top:468px; + width:140px; + height:40px; +} +#u1046_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1047_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1047 { + border-width:0px; + position:absolute; + left:30px; + top:548px; + width:91px; + height:16px; +} +#u1047_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + white-space:nowrap; +} +#u1048_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1048 { + border-width:0px; + position:absolute; + left:274px; + top:548px; + width:91px; + height:16px; +} +#u1048_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + white-space:nowrap; +} +#u1049_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1049 { + border-width:0px; + position:absolute; + left:510px; + top:548px; + width:91px; + height:16px; +} +#u1049_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + white-space:nowrap; +} +#u1050_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:164px; + height:170px; +} +#u1050 { + border-width:0px; + position:absolute; + left:725px; + top:204px; + width:164px; + height:170px; +} +#u1050_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1051_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1051 { + border-width:0px; + position:absolute; + left:737px; + top:397px; + width:140px; + height:40px; +} +#u1051_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1052_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1052 { + border-width:0px; + position:absolute; + left:737px; + top:468px; + width:140px; + height:40px; +} +#u1052_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1053_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1053 { + border-width:0px; + position:absolute; + left:737px; + top:548px; + width:91px; + height:16px; +} +#u1053_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + white-space:nowrap; +} +#u1054_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:164px; + height:170px; +} +#u1054 { + border-width:0px; + position:absolute; + left:930px; + top:204px; + width:164px; + height:170px; +} +#u1054_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1055_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1055 { + border-width:0px; + position:absolute; + left:942px; + top:397px; + width:140px; + height:40px; +} +#u1055_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1056_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1056 { + border-width:0px; + position:absolute; + left:942px; + top:468px; + width:140px; + height:40px; +} +#u1056_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1057_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1057 { + border-width:0px; + position:absolute; + left:942px; + top:548px; + width:91px; + height:16px; +} +#u1057_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + white-space:nowrap; +} +#u1058_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:164px; + height:170px; +} +#u1058 { + border-width:0px; + position:absolute; + left:1160px; + top:204px; + width:164px; + height:170px; +} +#u1058_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1059_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1059 { + border-width:0px; + position:absolute; + left:1172px; + top:397px; + width:140px; + height:40px; +} +#u1059_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1060_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:40px; + background:inherit; + background-color:rgba(204, 51, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1060 { + border-width:0px; + position:absolute; + left:1172px; + top:468px; + width:140px; + height:40px; +} +#u1060_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:136px; + word-wrap:break-word; +} +#u1061_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1061 { + border-width:0px; + position:absolute; + left:1172px; + top:548px; + width:91px; + height:16px; +} +#u1061_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:91px; + white-space:nowrap; +} +#u1063_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u1063 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u1063_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1064_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1064 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u1064_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u1065 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u1065_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u1066_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u1066 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u1066_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1067_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u1067 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u1067_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1068_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1068 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u1068_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u1069_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u1069 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u1069_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1070_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u1070 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u1070_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1071_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u1071 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u1071_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u1072 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u1073_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u1073 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u1073_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1074_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u1074 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u1074_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u1075_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u1075 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u1075_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u1076 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u1076_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u1077 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u1078_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u1078 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u1078_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u1079_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u1079 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u1079_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u1080_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u1080 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u1080_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u1081_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u1081 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u1081_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u1082_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u1082 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u1082_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/27_usersetting/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/27_usersetting/data.js new file mode 100644 index 0000000..99c1959 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/27_usersetting/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on Email equals "")",ce="isNewIfGroup",cf="condition",cg="exprType",ch="binaryOp",ci="op",cj="==",ck="leftExpr",cl="fcall",cm="functionName",cn="GetWidgetText",co="arguments",cp="pathLiteral",cq="isThis",cr="isFocused",cs="isTarget",ct="value",cu="rightExpr",cv="stringLiteral",cw="stos",cx="actions",cy="action",cz="fadeWidget",cA="Show Vui lòng nhập email",cB="objectsToFades",cC="objectPath",cD="3e4f54b53a87496ca05cebe2b1a75a5d",cE="fadeInfo",cF="fadeType",cG="show",cH="options",cI="showType",cJ="none",cK="bringToFront",cL="setFocusOnWidget",cM="Set Focus on Email",cN="objectPaths",cO="selectText",cP="tabbable",cQ="Vui lòng nhập email",cR=0xFFFF0000,cS=136,cT=16,cU="2285372321d148ec80932747449c36c9",cV=323,cW="7bd6864bcc054777a529745315068ab6",cX="Image",cY="imageBox",cZ=45,da="75a91ee5b9d042cfa01b8d565fe289c0",db=570,dc="images",dd="normal~",de="images/2_signin/u67.png",df="ecd9bf38e4b744ab985453b09c2a2194",dg=835,dh=0xFFCC0066,di="Case 1",dj="linkWindow",dk="Open 4.Login in Current Window",dl="target",dm="targetType",dn="4_login.html",dp="includeVariables",dq="linkType",dr="current",ds="masters",dt="9a4934292149461da828209e623125ec",du="Axure:Master",dv="ed4afa51d80c442db5ec8416719ddc2f",dw="group",dx="Group",dy="layer",dz=0,dA="objs",dB="538e4ac749c340c08e9291ce76414068",dC=62,dD="4b7bfc596114427989e10bb0b557d0ce",dE=0xFFF2F2F2,dF="linePattern",dG="images/1_home/u2.png",dH="7e85b87b6f4a4fbab208bddbf2803446",dI="btnDangNhap",dJ=99,dK=40,dL=1325,dM=9,dN="d24b4dccce784f5487b1e6c392268165",dO="btnDangKy",dP="c9f35713a1cf4e91a0f2dbac65e6fb5c",dQ=1216,dR="Open 2.SignIn in Current Window",dS="2_signin.html",dT="450bc4e512cb4eb39e4379edd415304e",dU="txtTimKiem",dV=37,dW=346,dX="Tìm kiếm tài liệu",dY="0962156730f04ff0baf3c920c3c6da5c",dZ="btnTimKiem",ea=42,eb=646,ec="TimKiemEvent",ed="Open https://www.google.com.vn/ in Current Window",ee="webUrl",ef="urlLiteral",eg="https://www.google.com.vn/",eh="images/1_home/btntimkiem_u6.png",ei="470d7b3b74314a16bd9db0c857e4a7dd",ej="imgLogoHeader",ek=114,el=38,em=6,en=12,eo="Open 1.Home in Current Window",ep="1_home.html",eq="images/1_home/imglogoheader_u7.png",er="8bfda5f743f64101b05bd8403c802f14",es="imgDanhMuc",et=29,eu=196,ev="Show (Menu) slide down 500 ms",ew="4b0b30c31eb24850b7cb47117ab9534a",ex="easing",ey="slideDown",ez="duration",eA=500,eB="easingHide",eC="slideUp",eD="durationHide",eE="Case 2",eF="Hide (Menu)",eG="hide",eH="images/1_home/imgdanhmuc_u8.png",eI="a4c36a812405449a9e740d48f8672fea",eJ="lblDanhMuc",eK=73,eL=229,eM="verticalAlignment",eN="middle",eO="propagate",eP="c3ee605490fc43b2bd7b65cbc35e966e",eQ="80e12455b2d44a85810e09c5477af74c",eR=50,eS="47641f9a00ac465095d6b672bbdffef6",eT=799,eU=0xFFE4E4E4,eV="5771f2b917b347b69b5a51df095e6d65",eW=7,eX=805,eY="images/1_home/u12.png",eZ="74bf2041ba834fc99229a8a14b0eb8b8",fa=150,fb=49,fc="horizontalAlignment",fd="center",fe="Menu",ff="menuObject",fg=120,fh=46,fi="c91244cbb5b64a48a6c5c207438e9da7",fj="Table",fk="table",fl="af391f07927247e8a2e39dcabe26a8a3",fm="Menu Item",fn="tableCell",fo="2036b2baccbc41f0b9263a6981a11a42",fp="left",fq="Open 11.ITBook in Current Window",fr="11_itbook.html",fs="images/1_home/u16.png",ft="e46cae11353b4029a0f13baa9de934ad",fu="Open 12.EconomicBook in Current Window",fv="12_economicbook.html",fw="2dd9cd15fb0e49919eca9c609aac2500",fx=60,fy="Open 13.Outlinebook in Current Window",fz="13_outlinebook.html",fA="f6369d87b8b04277b39c629626525dd8",fB="Open 14.Slide in Current Window",fC="14_slide.html",fD="images/1_home/u19.png",fE="58a335485f7b45d7a833b4ab5cf7f9e3",fF="scriptId",fG="u79",fH="ed4afa51d80c442db5ec8416719ddc2f",fI="u80",fJ="538e4ac749c340c08e9291ce76414068",fK="u81",fL="7e85b87b6f4a4fbab208bddbf2803446",fM="u82",fN="d24b4dccce784f5487b1e6c392268165",fO="u83",fP="450bc4e512cb4eb39e4379edd415304e",fQ="u84",fR="0962156730f04ff0baf3c920c3c6da5c",fS="u85",fT="470d7b3b74314a16bd9db0c857e4a7dd",fU="u86",fV="8bfda5f743f64101b05bd8403c802f14",fW="u87",fX="a4c36a812405449a9e740d48f8672fea",fY="u88",fZ="c3ee605490fc43b2bd7b65cbc35e966e",ga="u89",gb="80e12455b2d44a85810e09c5477af74c",gc="u90",gd="5771f2b917b347b69b5a51df095e6d65",ge="u91",gf="74bf2041ba834fc99229a8a14b0eb8b8",gg="u92",gh="4b0b30c31eb24850b7cb47117ab9534a",gi="u93",gj="c91244cbb5b64a48a6c5c207438e9da7",gk="u94",gl="af391f07927247e8a2e39dcabe26a8a3",gm="u95",gn="e46cae11353b4029a0f13baa9de934ad",go="u96",gp="2dd9cd15fb0e49919eca9c609aac2500",gq="u97",gr="f6369d87b8b04277b39c629626525dd8",gs="u98",gt="94135a1fa6c44d46abf1fd74b9b3ad89",gu="u99",gv="1f29421cefd74772abb6f06dd1f270ad",gw="u100",gx="3109816a5756441abfaa062672f91720",gy="u101",gz="3e4f54b53a87496ca05cebe2b1a75a5d",gA="u102",gB="7bd6864bcc054777a529745315068ab6",gC="u103",gD="ecd9bf38e4b744ab985453b09c2a2194",gE="u104"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/3_forgotpass/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/3_forgotpass/styles.css new file mode 100644 index 0000000..424e4f6 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/3_forgotpass/styles.css @@ -0,0 +1,645 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u80 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u81_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u81 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u81_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u82_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u82 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u82_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u83_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u83 { + border-width:0px; + position:absolute; + left:1216px; + top:9px; + width:99px; + height:40px; +} +#u83_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u84 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u84_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u85_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u85 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u85_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u86_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u86 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u86_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u87_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u87 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u87_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u88_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u88 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u88_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u89 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u90_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u90 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u90_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u91_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u91 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u91_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u92_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u92 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u92_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u93 { + border-width:0px; + position:absolute; + left:196px; + top:46px; + width:136px; + height:120px; +} +#u93_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u94 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u95_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u95 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u95_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u96_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u96 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u96_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u97_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u97 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u97_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u98_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u98 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u98_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u99_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:131px; + height:21px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u99 { + border-width:0px; + position:absolute; + left:634px; + top:166px; + width:131px; + height:21px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u99_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:132px; + white-space:nowrap; +} +#u100 { + border-width:0px; + position:absolute; + left:625px; + top:276px; + width:300px; + height:41px; +} +#u100_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u101_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:90px; + height:30px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u101 { + border-width:0px; + position:absolute; + left:730px; + top:349px; + width:90px; + height:30px; +} +#u101_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:86px; + word-wrap:break-word; +} +#u102_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; +} +#u102 { + border-width:0px; + position:absolute; + left:625px; + top:323px; + width:136px; + height:16px; + color:#FF0000; +} +#u102_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + white-space:nowrap; +} +#u103_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u103 { + border-width:0px; + position:absolute; + left:570px; + top:276px; + width:45px; + height:41px; +} +#u103_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u104_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:90px; + height:30px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u104 { + border-width:0px; + position:absolute; + left:835px; + top:349px; + width:90px; + height:30px; +} +#u104_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:86px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/4_login/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/4_login/data.js new file mode 100644 index 0000000..125bb40 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/4_login/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on txtEmail equals "")",co="isNewIfGroup",cp="condition",cq="exprType",cr="binaryOp",cs="op",ct="==",cu="leftExpr",cv="fcall",cw="functionName",cx="GetWidgetText",cy="arguments",cz="pathLiteral",cA="isThis",cB="isFocused",cC="isTarget",cD="value",cE="rightExpr",cF="stringLiteral",cG="stos",cH="actions",cI="action",cJ="fadeWidget",cK="Show Không để trống tài khoản",cL="objectsToFades",cM="objectPath",cN="9a2ca6fc1ac74e30b4cc8efacaf8551b",cO="fadeInfo",cP="fadeType",cQ="show",cR="options",cS="showType",cT="none",cU="bringToFront",cV="setFocusOnWidget",cW="Set Focus on txtEmail",cX="objectPaths",cY="selectText",cZ="Case 2
(Else If text on txtMatKhau equals "")",da="Show Không để trống mật khẩu",db="9c40ad833bb24fbfbb15c4208661aa1e",dc="Set Focus on txtMatKhau",dd="Case 3
(Else If text on txtEmail equals "ptanh" and text on txtMatKhau equals "ptanh")",de="&&",df="ptanh",dg="linkWindow",dh="Open 8.ListBook in Current Window",di="target",dj="targetType",dk="8_listbook.html",dl="includeVariables",dm="linkType",dn="current",dp="tabbable",dq="ec8f820bf692479eb1b95c635cc05cec",dr="Checkbox",ds="checkbox",dt=100,du=16,dv="bccdabddb5454e438d4613702b55674b",dw=788,dx="extraLeft",dy="Không để trống tài khoản",dz=0xFFFF0000,dA=136,dB="2285372321d148ec80932747449c36c9",dC=431,dD="borderFill",dE="Không để trống mật khẩu",dF=161,dG=509,dH="38596fa8dfa04993be2b404b47291458",dI="btnLogFace",dJ=289,dK=40,dL=596,dM=222,dN=0xFF3B5999,dO="94c0734540274c6ab348935cb8c2a526",dP="btnLogGoogle",dQ=292,dR="c9f35713a1cf4e91a0f2dbac65e6fb5c",dS=280,dT="62ad8bcd46354894a80f03c12e59a38c",dU="Image",dV="imageBox",dW=45,dX="75a91ee5b9d042cfa01b8d565fe289c0",dY=533,dZ="images",ea="normal~",eb="images/2_signin/u67.png",ec="2850f42737414a9f99b932cdb33c0abe",ed="images/2_signin/u66.png",ee="4dc5c8a6b4074fa589202e5154f2d29f",ef="btnDangKy",eg=720,eh=0xFFCC0066,ei="Case 1",ej="Open 2.SignIn in Current Window",ek="2_signin.html",el="573cf6479f044324b8094b37c5bf5a6d",em="images/2_signin/u76.png",en="aeee8af3cb9d4a5f8318e1fc7a96d940",eo="images/2_signin/u77.jpg",ep="f7b662c7db87403b987413b4a7cdf69f",eq=344,er="verticalAlignment",es="middle",et="horizontalAlignment",eu="center",ev="masters",ew="9a4934292149461da828209e623125ec",ex="Axure:Master",ey="ed4afa51d80c442db5ec8416719ddc2f",ez="group",eA="Group",eB="layer",eC=0,eD="objs",eE="538e4ac749c340c08e9291ce76414068",eF=62,eG="4b7bfc596114427989e10bb0b557d0ce",eH=0xFFF2F2F2,eI="linePattern",eJ="images/1_home/u2.png",eK="7e85b87b6f4a4fbab208bddbf2803446",eL=99,eM=1325,eN=9,eO="Open 4.Login in Current Window",eP="d24b4dccce784f5487b1e6c392268165",eQ=1216,eR="450bc4e512cb4eb39e4379edd415304e",eS="txtTimKiem",eT=37,eU=346,eV="Tìm kiếm tài liệu",eW="0962156730f04ff0baf3c920c3c6da5c",eX="btnTimKiem",eY=42,eZ=646,fa="TimKiemEvent",fb="Open https://www.google.com.vn/ in Current Window",fc="webUrl",fd="urlLiteral",fe="https://www.google.com.vn/",ff="images/1_home/btntimkiem_u6.png",fg="470d7b3b74314a16bd9db0c857e4a7dd",fh="imgLogoHeader",fi=114,fj=38,fk=6,fl=12,fm="Open 1.Home in Current Window",fn="1_home.html",fo="images/1_home/imglogoheader_u7.png",fp="8bfda5f743f64101b05bd8403c802f14",fq="imgDanhMuc",fr=29,fs=196,ft="Show (Menu) slide down 500 ms",fu="4b0b30c31eb24850b7cb47117ab9534a",fv="easing",fw="slideDown",fx="duration",fy=500,fz="easingHide",fA="slideUp",fB="durationHide",fC="Case 2",fD="Hide (Menu)",fE="hide",fF="images/1_home/imgdanhmuc_u8.png",fG="a4c36a812405449a9e740d48f8672fea",fH="lblDanhMuc",fI=73,fJ=229,fK="propagate",fL="c3ee605490fc43b2bd7b65cbc35e966e",fM="80e12455b2d44a85810e09c5477af74c",fN=50,fO="47641f9a00ac465095d6b672bbdffef6",fP=799,fQ=0xFFE4E4E4,fR="5771f2b917b347b69b5a51df095e6d65",fS=7,fT=805,fU="images/1_home/u12.png",fV="74bf2041ba834fc99229a8a14b0eb8b8",fW=150,fX=49,fY="Menu",fZ="menuObject",ga=120,gb=46,gc="c91244cbb5b64a48a6c5c207438e9da7",gd="Table",ge="table",gf="af391f07927247e8a2e39dcabe26a8a3",gg="Menu Item",gh="tableCell",gi=30,gj="2036b2baccbc41f0b9263a6981a11a42",gk="left",gl="Open 11.ITBook in Current Window",gm="11_itbook.html",gn="images/1_home/u16.png",go="e46cae11353b4029a0f13baa9de934ad",gp="Open 12.EconomicBook in Current Window",gq="12_economicbook.html",gr="2dd9cd15fb0e49919eca9c609aac2500",gs=60,gt="Open 13.Outlinebook in Current Window",gu="13_outlinebook.html",gv="f6369d87b8b04277b39c629626525dd8",gw=90,gx="Open 14.Slide in Current Window",gy="14_slide.html",gz="images/1_home/u19.png",gA="7f5aa9ee394a40da960d3ffcc6cab1d7",gB="scriptId",gC="u105",gD="ed4afa51d80c442db5ec8416719ddc2f",gE="u106",gF="538e4ac749c340c08e9291ce76414068",gG="u107",gH="7e85b87b6f4a4fbab208bddbf2803446",gI="u108",gJ="d24b4dccce784f5487b1e6c392268165",gK="u109",gL="450bc4e512cb4eb39e4379edd415304e",gM="u110",gN="0962156730f04ff0baf3c920c3c6da5c",gO="u111",gP="470d7b3b74314a16bd9db0c857e4a7dd",gQ="u112",gR="8bfda5f743f64101b05bd8403c802f14",gS="u113",gT="a4c36a812405449a9e740d48f8672fea",gU="u114",gV="c3ee605490fc43b2bd7b65cbc35e966e",gW="u115",gX="80e12455b2d44a85810e09c5477af74c",gY="u116",gZ="5771f2b917b347b69b5a51df095e6d65",ha="u117",hb="74bf2041ba834fc99229a8a14b0eb8b8",hc="u118",hd="4b0b30c31eb24850b7cb47117ab9534a",he="u119",hf="c91244cbb5b64a48a6c5c207438e9da7",hg="u120",hh="af391f07927247e8a2e39dcabe26a8a3",hi="u121",hj="e46cae11353b4029a0f13baa9de934ad",hk="u122",hl="2dd9cd15fb0e49919eca9c609aac2500",hm="u123",hn="f6369d87b8b04277b39c629626525dd8",ho="u124",hp="9efadc1b10624a17a21751517970c9f3",hq="u125",hr="45cad7da6bc44a3c8121bfaecca55bce",hs="u126",ht="518313e3018845c5b289c2e0deb7a4a0",hu="u127",hv="029a06bf637040d484e1e00cac76beca",hw="u128",hx="58085b5654a14e5997b8976aea68b57c",hy="u129",hz="ec8f820bf692479eb1b95c635cc05cec",hA="u130",hB="9a2ca6fc1ac74e30b4cc8efacaf8551b",hC="u131",hD="9c40ad833bb24fbfbb15c4208661aa1e",hE="u132",hF="38596fa8dfa04993be2b404b47291458",hG="u133",hH="94c0734540274c6ab348935cb8c2a526",hI="u134",hJ="62ad8bcd46354894a80f03c12e59a38c",hK="u135",hL="2850f42737414a9f99b932cdb33c0abe",hM="u136",hN="4dc5c8a6b4074fa589202e5154f2d29f",hO="u137",hP="573cf6479f044324b8094b37c5bf5a6d",hQ="u138",hR="aeee8af3cb9d4a5f8318e1fc7a96d940",hS="u139",hT="f7b662c7db87403b987413b4a7cdf69f",hU="u140"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/4_login/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/4_login/styles.css new file mode 100644 index 0000000..31367a3 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/4_login/styles.css @@ -0,0 +1,926 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u106 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u107_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u107 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u107_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u108_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u108 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u108_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u109_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u109 { + border-width:0px; + position:absolute; + left:1216px; + top:9px; + width:99px; + height:40px; +} +#u109_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u110 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u110_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u111_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u111 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u111_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u112_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u112 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u112_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u113_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u113 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u113_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u114_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u114 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u114_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u115 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u116_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u116 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u116_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u117_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u117 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u117_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u118_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u118 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u118_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u119 { + border-width:0px; + position:absolute; + left:196px; + top:46px; + width:136px; + height:120px; +} +#u119_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u120 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u121_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u121 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u121_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u122_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u122 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u122_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u123_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u123 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u123_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u124_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u124 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u124_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u125_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:178px; + height:21px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u125 { + border-width:0px; + position:absolute; + left:630px; + top:168px; + width:178px; + height:21px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u125_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:178px; + white-space:nowrap; +} +#u126 { + border-width:0px; + position:absolute; + left:588px; + top:380px; + width:300px; + height:41px; +} +#u126_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u127 { + border-width:0px; + position:absolute; + left:588px; + top:457px; + width:300px; + height:41px; +} +#u127_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u128_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:94px; + height:19px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u128 { + border-width:0px; + position:absolute; + left:622px; + top:535px; + width:94px; + height:19px; +} +#u128_text { + border-width:0px; + position:absolute; + left:2px; + top:2px; + width:90px; + white-space:nowrap; +} +#u129_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:169px; + height:41px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u129 { + border-width:0px; + position:absolute; + left:541px; + top:587px; + width:169px; + height:41px; +} +#u129_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:165px; + word-wrap:break-word; +} +#u130 { + border-width:0px; + position:absolute; + left:788px; + top:535px; + width:100px; + height:16px; +} +#u130_text { + border-width:0px; + position:absolute; + left:16px; + top:0px; + width:82px; + word-wrap:break-word; +} +#u130_input { + border-width:0px; + position:absolute; + left:-3px; + top:-2px; +} +#u131_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; +} +#u131 { + border-width:0px; + position:absolute; + left:588px; + top:431px; + width:136px; + height:16px; + color:#FF0000; +} +#u131_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + white-space:nowrap; +} +#u132_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:161px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; +} +#u132 { + border-width:0px; + position:absolute; + left:588px; + top:509px; + width:161px; + height:16px; + color:#FF0000; +} +#u132_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:161px; + white-space:nowrap; +} +#u133_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:289px; + height:40px; + background:inherit; + background-color:rgba(59, 89, 153, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u133 { + border-width:0px; + position:absolute; + left:596px; + top:222px; + width:289px; + height:40px; +} +#u133_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:285px; + word-wrap:break-word; +} +#u134_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:292px; + height:40px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + box-sizing:border-box; + border-width:1px; + border-style:solid; + border-color:rgba(121, 121, 121, 1); + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u134 { + border-width:0px; + position:absolute; + left:596px; + top:280px; + width:292px; + height:40px; +} +#u134_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:288px; + word-wrap:break-word; +} +#u135_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u135 { + border-width:0px; + position:absolute; + left:533px; + top:380px; + width:45px; + height:41px; +} +#u135_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u136_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u136 { + border-width:0px; + position:absolute; + left:533px; + top:457px; + width:45px; + height:41px; +} +#u136_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u137_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:168px; + height:41px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u137 { + border-width:0px; + position:absolute; + left:720px; + top:587px; + width:168px; + height:41px; +} +#u137_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:164px; + word-wrap:break-word; +} +#u138_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:40px; +} +#u138 { + border-width:0px; + position:absolute; + left:541px; + top:222px; + width:45px; + height:40px; +} +#u138_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u139_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:40px; +} +#u139 { + border-width:0px; + position:absolute; + left:541px; + top:280px; + width:45px; + height:40px; +} +#u139_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u140_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:344px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u140 { + border-width:0px; + position:absolute; + left:541px; + top:344px; + width:344px; + height:16px; + text-align:center; +} +#u140_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:344px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/5_updateprofile/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/5_updateprofile/data.js new file mode 100644 index 0000000..e178a0b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/5_updateprofile/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on Email equals "")",co="isNewIfGroup",cp="condition",cq="exprType",cr="binaryOp",cs="op",ct="==",cu="leftExpr",cv="fcall",cw="functionName",cx="GetWidgetText",cy="arguments",cz="pathLiteral",cA="isThis",cB="isFocused",cC="isTarget",cD="value",cE="rightExpr",cF="stringLiteral",cG="stos",cH="actions",cI="action",cJ="fadeWidget",cK="Show This",cL="objectsToFades",cM="objectPath",cN="fadeInfo",cO="fadeType",cP="show",cQ="options",cR="showType",cS="none",cT="bringToFront",cU="setFocusOnWidget",cV="Set Focus on Không để trống email",cW="objectPaths",cX="39634371772840828008c5a6e3b688ac",cY="selectText",cZ="Hide Done,
Error,
Vui long nhập ngày sinh,
Vui lòng nhập họ tên.",da="3427bd6166514f53a19628928b409b70",db="hide",dc="cc1018f63f51403383e0a38ede859a4a",dd="c426243cc6b349a5bb1e9974b3b551ef",de="baed141b8636490695d377183cb51441",df="Case 2
(Else If text on Ngày sinh equals "error" and text on Số điện thoại equals "error" and text on Email equals "error" and text on Họ tên equals "error")",dg="&&",dh="error",di="Show Error",dj="Hide Vui long nhập ngày sinh,
Done,
Vui lòng nhập họ tên.,
Không để trống email",dk="Case 3
(Else If True)",dl="Show Done",dm="Hide Error,
Vui long nhập ngày sinh,
Vui lòng nhập họ tên.,
Không để trống email",dn="tabbable",dp="Không để trống email",dq=0xFFFF0000,dr=147,ds=16,dt="2285372321d148ec80932747449c36c9",du=266,dv="borderFill",dw="Vui lòng nhập họ tên.",dx=136,dy=353,dz="e7d36f8168a24bae8cbdc7577dbbfa3f",dA="4988d43d80b44008a4a415096f1632af",dB=1017,dC=294,dD="Vui long nhập ngày sinh",dE=140,dF=437,dG="fontSize",dH="13px",dI="ec100d1b1f9647b6bfd35ae7dcdbffd6",dJ="1111111151944dfba49f67fd55eb1f88",dK=359,dL=711,dM="Error",dN=939,dO=57,dP=242,dQ=670,dR="48px",dS="Done",dT=684,dU=370,dV="11844f808f124b22b30649e88b706cc0",dW="Header sau khi dang nhap",dX="referenceDiagramObject",dY=1440,dZ=849,ea="masterId",eb="510564ce784d40c7be615f5485d34622",ec="b1ba97f29dc94698bfbaa9ac0f5fe143",ed="Image",ee="imageBox",ef=45,eg="75a91ee5b9d042cfa01b8d565fe289c0",eh="images",ei="normal~",ej="images/2_signin/u67.png",ek="151c8666c0b74c048b5a1f674ef8e152",el="images/2_signin/u66.png",em="72424ba74a064b999ff21bf010f6b8e5",en="images/2_signin/u68.png",eo="016bbeefa4b94a7e997a2a3b300bf7f2",ep="Shape",eq="26c731cb771b44a88eb8b6e97e78c80e",er="images/2_signin/u69.png",es="3d5106d9d54f4b3dbca83b87e2016e8b",et="images/5_updateprofile/u182.png",eu="ef75806c9c274b0b9a4216207b2abd8a",ev="Nam",ew="Radio Button",ex="radioButton",ey=100,ez=22,eA="4eb5516f311c4bdfa0cb11d7ea75084e",eB=545,eC="18px",eD="extraLeft",eE="e591b924354c4ec0a62f68588ca281cf",eF="Nữ",eG=616,eH="4362ddc10eb646c6b26b42ef1ed00474",eI=536,eJ="images/2_signin/u70.png",eK="d253562b26fe415db1e9669a3acbb3cd",eL="images/5_updateprofile/u186.png",eM="d8f9b755462e44ba91f7c0619f0a9cba",eN=159,eO=657,eP=0xFFFF3333,eQ="Case 1",eR="linkWindow",eS="Open 1.Home in Current Window",eT="target",eU="targetType",eV="1_home.html",eW="includeVariables",eX="linkType",eY="current",eZ="masters",fa="510564ce784d40c7be615f5485d34622",fb="Axure:Master",fc="fb703f71faa74ee2a50a36acbf89b2a9",fd=62,fe="4b7bfc596114427989e10bb0b557d0ce",ff=0xFFF2F2F2,fg="linePattern",fh="images/1_home/u2.png",fi="e6f63b059bcf43f3a96c8a990ecbfcbc",fj="btnDangNhap",fk=99,fl=1325,fm=9,fn=0xFFCC0066,fo="Open 4.Login in Current Window",fp="4_login.html",fq="c4034a50406140e59d4e903581d22fc6",fr="txtTimKiem",fs=37,ft=346,fu="Tìm kiếm tài liệu",fv="7bf6dce5f0d54a039254ce84b66aff06",fw="btnTimKiem",fx=42,fy=646,fz="Open http://google.com in Current Window",fA="webUrl",fB="urlLiteral",fC="http://google.com",fD="images/1_home/btntimkiem_u6.png",fE="2b3b1d15eaa741d8ba8653251c256674",fF="imgDanhMuc",fG=196,fH="Show/Hide Widget",fI="Case 2",fJ="images/1_home/imgdanhmuc_u8.png",fK="50b8e9a5763b4be29df32a27d001bc1f",fL="lblDanhMuc",fM=73,fN=229,fO="verticalAlignment",fP="middle",fQ="98ff46c1e0cd42329a42871b703fe1e7",fR="imgLogoHeader",fS=114,fT=38,fU=6,fV=12,fW="images/1_home/imglogoheader_u7.png",fX="eadb0c99e3054247afafe26fcbcdecbd",fY=36,fZ="1136c3bb487940fb91dab49aa20e1c95",ga=1268,gb="cornerRadius",gc="50",gd="images/5_updateprofile/u165.png",ge="5ec8c781ee1e42c196b4b74e7721a094",gf=0xFF0066FF,gg=150,gh=1108,gi="horizontalAlignment",gj="center",gk="Open 5.UpdateProfile in New Window/Tab",gl="new",gm="e19761ac1d5647e19caf118662662efa",gn="Group",go="layer",gp=0,gq="objs",gr="acd21607462d4c8a80179c4e8738ca22",gs=50,gt="47641f9a00ac465095d6b672bbdffef6",gu=799,gv=0xFFE4E4E4,gw="9bde9ee693514f6cbcea5d7cd987da2d",gx=7,gy=805,gz="images/1_home/u12.png",gA="cf71097e6bbe472688668d0658a742b4",gB=49,gC="propagate",gD="3fdf17c6a3ed4eae81b1732938ef10a5",gE="Menu",gF="menuObject",gG=120,gH=200,gI=46,gJ="e51d8c31b5e44607a2dbf1d734f2910c",gK="Table",gL="table",gM="bfd1e27ae750487da4c58fc231c250cf",gN="Menu Item",gO="tableCell",gP=30,gQ="2036b2baccbc41f0b9263a6981a11a42",gR="left",gS="Open 11.ITBook in Current Window",gT="11_itbook.html",gU="images/1_home/u16.png",gV="158d5fa596254b7195940b50047beb56",gW="Open 12.EconomicBook in Current Window",gX="12_economicbook.html",gY="a48d5d2765f743ec96e8c9500301c869",gZ=60,ha="Open 13.Outlinebook in Current Window",hb="13_outlinebook.html",hc="08b5728dc6854e7b91fb6036df6c64c2",hd=90,he="Open 14.Slide in Current Window",hf="14_slide.html",hg="images/1_home/u19.png",hh="508308f1f2c343d897e988dbe2433526",hi=1053,hj="images/5_updateprofile/u177.png",hk="fb5a5e72cda046bdb3f112ccb9bb621e",hl="scriptId",hm="u141",hn="d1de6fac42c3458f8c5aa47522532c0c",ho="u142",hp="6648b7bb77714b58b38c7f9a50f548e0",hq="u143",hr="af73c4b56a6a4b618d2ec68218b784b7",hs="u144",ht="d21ed52adf914d6ba22772fe2dfe061c",hu="u145",hv="e6356b575cfa45cd839712fdc2a9eae2",hw="u146",hx="28751b09c0ea4365b901391dbf170bb0",hy="u147",hz="b7e8c65e4fbf4ea4b04c3e82e3362e76",hA="u148",hB="a2f8bf7b608b41808a96ece8ededa221",hC="u149",hD="39634371772840828008c5a6e3b688ac",hE="u150",hF="baed141b8636490695d377183cb51441",hG="u151",hH="e7d36f8168a24bae8cbdc7577dbbfa3f",hI="u152",hJ="c426243cc6b349a5bb1e9974b3b551ef",hK="u153",hL="ec100d1b1f9647b6bfd35ae7dcdbffd6",hM="u154",hN="cc1018f63f51403383e0a38ede859a4a",hO="u155",hP="3427bd6166514f53a19628928b409b70",hQ="u156",hR="11844f808f124b22b30649e88b706cc0",hS="u157",hT="fb703f71faa74ee2a50a36acbf89b2a9",hU="u158",hV="e6f63b059bcf43f3a96c8a990ecbfcbc",hW="u159",hX="c4034a50406140e59d4e903581d22fc6",hY="u160",hZ="7bf6dce5f0d54a039254ce84b66aff06",ia="u161",ib="2b3b1d15eaa741d8ba8653251c256674",ic="u162",id="50b8e9a5763b4be29df32a27d001bc1f",ie="u163",ig="98ff46c1e0cd42329a42871b703fe1e7",ih="u164",ii="eadb0c99e3054247afafe26fcbcdecbd",ij="u165",ik="5ec8c781ee1e42c196b4b74e7721a094",il="u166",im="e19761ac1d5647e19caf118662662efa",io="u167",ip="acd21607462d4c8a80179c4e8738ca22",iq="u168",ir="9bde9ee693514f6cbcea5d7cd987da2d",is="u169",it="cf71097e6bbe472688668d0658a742b4",iu="u170",iv="3fdf17c6a3ed4eae81b1732938ef10a5",iw="u171",ix="e51d8c31b5e44607a2dbf1d734f2910c",iy="u172",iz="bfd1e27ae750487da4c58fc231c250cf",iA="u173",iB="158d5fa596254b7195940b50047beb56",iC="u174",iD="a48d5d2765f743ec96e8c9500301c869",iE="u175",iF="08b5728dc6854e7b91fb6036df6c64c2",iG="u176",iH="508308f1f2c343d897e988dbe2433526",iI="u177",iJ="b1ba97f29dc94698bfbaa9ac0f5fe143",iK="u178",iL="151c8666c0b74c048b5a1f674ef8e152",iM="u179",iN="72424ba74a064b999ff21bf010f6b8e5",iO="u180",iP="016bbeefa4b94a7e997a2a3b300bf7f2",iQ="u181",iR="3d5106d9d54f4b3dbca83b87e2016e8b",iS="u182",iT="ef75806c9c274b0b9a4216207b2abd8a",iU="u183",iV="e591b924354c4ec0a62f68588ca281cf",iW="u184",iX="4362ddc10eb646c6b26b42ef1ed00474",iY="u185",iZ="d253562b26fe415db1e9669a3acbb3cd",ja="u186",jb="d8f9b755462e44ba91f7c0619f0a9cba",jc="u187"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/5_updateprofile/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/5_updateprofile/styles.css new file mode 100644 index 0000000..16c12dd --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/5_updateprofile/styles.css @@ -0,0 +1,1238 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u141_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:233px; + height:44px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u141 { + border-width:0px; + position:absolute; + left:570px; + top:29px; + width:233px; + height:44px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u141_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:233px; + white-space:nowrap; +} +#u142 { + border-width:0px; + position:absolute; + left:516px; + top:96px; + width:300px; + height:41px; +} +#u142_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u143 { + border-width:0px; + position:absolute; + left:516px; + top:157px; + width:300px; + height:40px; +} +#u143_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:40px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u144 { + border-width:0px; + position:absolute; + left:516px; + top:215px; + width:300px; + height:41px; +} +#u144_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u145 { + border-width:0px; + position:absolute; + left:516px; + top:302px; + width:300px; + height:41px; +} +#u145_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u146 { + border-width:0px; + position:absolute; + left:516px; + top:386px; + width:300px; + height:41px; +} +#u146_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u147 { + border-width:0px; + position:absolute; + left:516px; + top:471px; + width:300px; + height:41px; +} +#u147_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u148 { + border-width:0px; + position:absolute; + left:516px; + top:607px; + width:300px; + height:41px; +} +#u148_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:41px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u149_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:173px; + height:44px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u149 { + border-width:0px; + position:absolute; + left:461px; + top:737px; + width:173px; + height:44px; +} +#u149_text { + border-width:0px; + position:absolute; + left:2px; + top:14px; + width:169px; + word-wrap:break-word; +} +#u150_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:147px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; +} +#u150 { + border-width:0px; + position:absolute; + left:516px; + top:266px; + width:147px; + height:16px; + color:#FF0000; +} +#u150_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:146px; + white-space:nowrap; +} +#u151_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#FF0000; +} +#u151 { + border-width:0px; + position:absolute; + left:516px; + top:353px; + width:136px; + height:16px; + color:#FF0000; +} +#u151_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:135px; + white-space:nowrap; +} +#u152_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u152 { + border-width:0px; + position:absolute; + left:1017px; + top:294px; + width:1px; + height:16px; +} +#u152_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u153_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-size:13px; + color:#FF0000; +} +#u153 { + border-width:0px; + position:absolute; + left:516px; + top:437px; + width:140px; + height:16px; + font-size:13px; + color:#FF0000; +} +#u153_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:140px; + white-space:nowrap; +} +#u154_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + color:#FF0000; +} +#u154 { + border-width:0px; + position:absolute; + left:359px; + top:711px; + width:1px; + height:16px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + color:#FF0000; +} +#u154_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u155_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:939px; + height:57px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + font-size:48px; + color:#FF0000; +} +#u155 { + border-width:0px; + position:absolute; + left:242px; + top:670px; + width:939px; + height:57px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + font-size:48px; + color:#FF0000; +} +#u155_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:939px; + white-space:nowrap; +} +#u156_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:684px; + height:57px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + font-size:48px; + color:#FF0000; +} +#u156 { + border-width:0px; + position:absolute; + left:370px; + top:670px; + width:684px; + height:57px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + font-size:48px; + color:#FF0000; +} +#u156_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:684px; + white-space:nowrap; +} +#u158_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u158 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u158_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u159_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u159 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u159_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u160 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u160_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u161_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u161 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u161_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u162_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u162 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u162_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u163_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u163 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u163_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u164_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u164 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u164_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u165_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u165 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u165_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u166_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u166 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u166_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u167 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u168_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u168 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u168_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u169_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u169 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u169_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u170_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u170 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u170_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u171 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u171_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u172 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u173_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u173 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u173_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u174_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u174 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u174_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u175_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u175 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u175_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u176_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u176 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u176_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u177_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u177 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u177_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u178_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u178 { + border-width:0px; + position:absolute; + left:461px; + top:215px; + width:45px; + height:41px; +} +#u178_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u179_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u179 { + border-width:0px; + position:absolute; + left:461px; + top:96px; + width:45px; + height:41px; +} +#u179_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u180_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u180 { + border-width:0px; + position:absolute; + left:461px; + top:302px; + width:45px; + height:41px; +} +#u180_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u181_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u181 { + border-width:0px; + position:absolute; + left:461px; + top:386px; + width:45px; + height:41px; +} +#u181_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u182_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u182 { + border-width:0px; + position:absolute; + left:461px; + top:471px; + width:45px; + height:41px; +} +#u182_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u183 { + border-width:0px; + position:absolute; + left:516px; + top:545px; + width:100px; + height:22px; + font-size:18px; +} +#u183_text { + border-width:0px; + position:absolute; + left:16px; + top:0px; + width:82px; + word-wrap:break-word; +} +#u183_input { + border-width:0px; + position:absolute; + left:-3px; + top:-2px; +} +#u184 { + border-width:0px; + position:absolute; + left:616px; + top:545px; + width:100px; + height:22px; + font-size:18px; +} +#u184_text { + border-width:0px; + position:absolute; + left:16px; + top:0px; + width:82px; + word-wrap:break-word; +} +#u184_input { + border-width:0px; + position:absolute; + left:-3px; + top:-2px; +} +#u185_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u185 { + border-width:0px; + position:absolute; + left:461px; + top:536px; + width:45px; + height:41px; +} +#u185_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u186_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:41px; +} +#u186 { + border-width:0px; + position:absolute; + left:461px; + top:607px; + width:45px; + height:41px; +} +#u186_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u187_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:159px; + height:44px; + background:inherit; + background-color:rgba(255, 51, 51, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u187 { + border-width:0px; + position:absolute; + left:657px; + top:737px; + width:159px; + height:44px; +} +#u187_text { + border-width:0px; + position:absolute; + left:2px; + top:14px; + width:155px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/6_history/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/6_history/data.js new file mode 100644 index 0000000..7fcd5a0 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/6_history/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If text on This contains "h")",bU="isNewIfGroup",bV="condition",bW="exprType",bX="fcall",bY="functionName",bZ="ValueContains",ca="arguments",cb="GetWidgetText",cc="pathLiteral",cd="isThis",ce="isFocused",cf="isTarget",cg="stringLiteral",ch="value",ci="h",cj="stos",ck="actions",cl="action",cm="fadeWidget",cn="Show (Table)",co="objectsToFades",cp="objectPath",cq="a53c998f9f7c4152aefef4ffd6952d3c",cr="fadeInfo",cs="fadeType",ct="show",cu="options",cv="showType",cw="none",cx="bringToFront",cy="Hide lblKhongTimThay",cz="hide",cA="Case 2
(Else If text on This equals "")",cB="binaryOp",cC="op",cD="==",cE="leftExpr",cF="rightExpr",cG="Hide (Table)",cH="Case 3
(Else If text on This does not contain "h")",cI="ValueNotContains",cJ="Show lblKhongTimThay",cK="placeholderText",cL="Tìm Kiếm Người Dùng",cM="Table",cN="table",cO=1342,cP=90,cQ=157,cR="d287d9eef8464c3bafb44beb0b0a2cfb",cS="Table Cell",cT="tableCell",cU=447,cV=30,cW="33ea2511485c479dbf973af3302f2352",cX="images",cY="normal~",cZ="images/7_finduser/u240.png",da="e147bae666484eeb950a7c6c46f85dc8",db=0,dc="1f7579c980b649119735d3d1b4fcda90",dd=60,de="images/7_finduser/u246.png",df="6c3c21c773234270bcec2905d50932e1",dg="a5428e396c3f441d9495ff9fd9c26a1c",dh="43b9b599b8de48e290b8737e28751624",di="4d8e529f570243949d0ef96b0db9c6a6",dj=894,dk=448,dl="images/7_finduser/u242.png",dm="a8e4608a3f674960be4eea1e85586ab7",dn="onClick",dp="OnClick",dq="Case 1",dr="linkWindow",ds="Open 5.UpdateProfile in New Window/Tab",dt="target",du="targetType",dv="5_updateprofile.html",dw="includeVariables",dx="linkType",dy="new",dz="tabbable",dA="75d6f38fbacb4356b1cf791ea56ef21e",dB="images/7_finduser/u248.png",dC="be2b199130284a16ba9c19bfe670c544",dD="Header sau khi dang nhap",dE="referenceDiagramObject",dF=1440,dG=849,dH="masterId",dI="510564ce784d40c7be615f5485d34622",dJ="masters",dK="510564ce784d40c7be615f5485d34622",dL="Axure:Master",dM="fb703f71faa74ee2a50a36acbf89b2a9",dN=62,dO="4b7bfc596114427989e10bb0b557d0ce",dP=0xFFF2F2F2,dQ="linePattern",dR="images/1_home/u2.png",dS="e6f63b059bcf43f3a96c8a990ecbfcbc",dT="btnDangNhap",dU=40,dV="cd64754845384de3872fb4a066432c1f",dW=1325,dX=9,dY=0xFFCC0066,dZ="Open 4.Login in Current Window",ea="4_login.html",eb="current",ec="c4034a50406140e59d4e903581d22fc6",ed=300,ee=37,ef=346,eg="Tìm kiếm tài liệu",eh="7bf6dce5f0d54a039254ce84b66aff06",ei="btnTimKiem",ej="Image",ek="imageBox",el=42,em="75a91ee5b9d042cfa01b8d565fe289c0",en=646,eo="Open http://google.com in Current Window",ep="webUrl",eq="urlLiteral",er="http://google.com",es="images/1_home/btntimkiem_u6.png",et="2b3b1d15eaa741d8ba8653251c256674",eu="imgDanhMuc",ev=29,ew=196,ex="Show/Hide Widget",ey="Case 2",ez="images/1_home/imgdanhmuc_u8.png",eA="50b8e9a5763b4be29df32a27d001bc1f",eB="lblDanhMuc",eC=73,eD=229,eE="verticalAlignment",eF="middle",eG="98ff46c1e0cd42329a42871b703fe1e7",eH="imgLogoHeader",eI=114,eJ=38,eK=6,eL=12,eM="Open 1.Home in Current Window",eN="1_home.html",eO="images/1_home/imglogoheader_u7.png",eP="eadb0c99e3054247afafe26fcbcdecbd",eQ=36,eR="1136c3bb487940fb91dab49aa20e1c95",eS=1268,eT="cornerRadius",eU="50",eV="images/5_updateprofile/u165.png",eW="5ec8c781ee1e42c196b4b74e7721a094",eX=0xFF0066FF,eY=150,eZ=1108,fa="horizontalAlignment",fb="center",fc="e19761ac1d5647e19caf118662662efa",fd="Group",fe="layer",ff="objs",fg="acd21607462d4c8a80179c4e8738ca22",fh=50,fi="47641f9a00ac465095d6b672bbdffef6",fj=799,fk=0xFFE4E4E4,fl="9bde9ee693514f6cbcea5d7cd987da2d",fm=7,fn=805,fo="images/1_home/u12.png",fp="cf71097e6bbe472688668d0658a742b4",fq=49,fr="propagate",fs="3fdf17c6a3ed4eae81b1732938ef10a5",ft="Menu",fu="menuObject",fv=136,fw=120,fx=200,fy=46,fz="e51d8c31b5e44607a2dbf1d734f2910c",fA="bfd1e27ae750487da4c58fc231c250cf",fB="Menu Item",fC="2036b2baccbc41f0b9263a6981a11a42",fD="left",fE="Open 11.ITBook in Current Window",fF="11_itbook.html",fG="images/1_home/u16.png",fH="158d5fa596254b7195940b50047beb56",fI="Open 12.EconomicBook in Current Window",fJ="12_economicbook.html",fK="a48d5d2765f743ec96e8c9500301c869",fL="Open 13.Outlinebook in Current Window",fM="13_outlinebook.html",fN="08b5728dc6854e7b91fb6036df6c64c2",fO="Open 14.Slide in Current Window",fP="14_slide.html",fQ="images/1_home/u19.png",fR="508308f1f2c343d897e988dbe2433526",fS=45,fT=1053,fU="images/5_updateprofile/u177.png",fV="objectPaths",fW="564188fa4ae6431890aeb7bb7282ce67",fX="scriptId",fY="u237",fZ="e4610694edad48779ebb23a64aaf7acf",ga="u238",gb="a53c998f9f7c4152aefef4ffd6952d3c",gc="u239",gd="d287d9eef8464c3bafb44beb0b0a2cfb",ge="u240",gf="6c3c21c773234270bcec2905d50932e1",gg="u241",gh="4d8e529f570243949d0ef96b0db9c6a6",gi="u242",gj="e147bae666484eeb950a7c6c46f85dc8",gk="u243",gl="a5428e396c3f441d9495ff9fd9c26a1c",gm="u244",gn="a8e4608a3f674960be4eea1e85586ab7",go="u245",gp="1f7579c980b649119735d3d1b4fcda90",gq="u246",gr="43b9b599b8de48e290b8737e28751624",gs="u247",gt="75d6f38fbacb4356b1cf791ea56ef21e",gu="u248",gv="be2b199130284a16ba9c19bfe670c544",gw="u249",gx="fb703f71faa74ee2a50a36acbf89b2a9",gy="u250",gz="e6f63b059bcf43f3a96c8a990ecbfcbc",gA="u251",gB="c4034a50406140e59d4e903581d22fc6",gC="u252",gD="7bf6dce5f0d54a039254ce84b66aff06",gE="u253",gF="2b3b1d15eaa741d8ba8653251c256674",gG="u254",gH="50b8e9a5763b4be29df32a27d001bc1f",gI="u255",gJ="98ff46c1e0cd42329a42871b703fe1e7",gK="u256",gL="eadb0c99e3054247afafe26fcbcdecbd",gM="u257",gN="5ec8c781ee1e42c196b4b74e7721a094",gO="u258",gP="e19761ac1d5647e19caf118662662efa",gQ="u259",gR="acd21607462d4c8a80179c4e8738ca22",gS="u260",gT="9bde9ee693514f6cbcea5d7cd987da2d",gU="u261",gV="cf71097e6bbe472688668d0658a742b4",gW="u262",gX="3fdf17c6a3ed4eae81b1732938ef10a5",gY="u263",gZ="e51d8c31b5e44607a2dbf1d734f2910c",ha="u264",hb="bfd1e27ae750487da4c58fc231c250cf",hc="u265",hd="158d5fa596254b7195940b50047beb56",he="u266",hf="a48d5d2765f743ec96e8c9500301c869",hg="u267",hh="08b5728dc6854e7b91fb6036df6c64c2",hi="u268",hj="508308f1f2c343d897e988dbe2433526",hk="u269"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/7_finduser/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/7_finduser/styles.css new file mode 100644 index 0000000..baaeeba --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/7_finduser/styles.css @@ -0,0 +1,797 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1441px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u237_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:676px; + height:57px; + background:inherit; + background-color:rgba(255, 255, 255, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + font-size:48px; + color:#FF0000; +} +#u237 { + border-width:0px; + position:absolute; + left:383px; + top:257px; + width:676px; + height:57px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; + font-size:48px; + color:#FF0000; +} +#u237_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:676px; + white-space:nowrap; +} +#u238 { + border-width:0px; + position:absolute; + left:99px; + top:97px; + width:396px; + height:35px; +} +#u238_input { + position:absolute; + left:0px; + top:0px; + width:396px; + height:35px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u239 { + border-width:0px; + position:absolute; + left:99px; + top:157px; + width:1342px; + height:90px; +} +#u240_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:447px; + height:30px; +} +#u240 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:447px; + height:30px; +} +#u240_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:443px; + word-wrap:break-word; +} +#u241_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:447px; + height:30px; +} +#u241 { + border-width:0px; + position:absolute; + left:447px; + top:0px; + width:447px; + height:30px; +} +#u241_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:443px; + word-wrap:break-word; +} +#u242_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:448px; + height:30px; +} +#u242 { + border-width:0px; + position:absolute; + left:894px; + top:0px; + width:448px; + height:30px; +} +#u242_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u243_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:447px; + height:30px; +} +#u243 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:447px; + height:30px; +} +#u243_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:443px; + word-wrap:break-word; +} +#u244_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:447px; + height:30px; +} +#u244 { + border-width:0px; + position:absolute; + left:447px; + top:30px; + width:447px; + height:30px; +} +#u244_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:443px; + word-wrap:break-word; +} +#u245_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:448px; + height:30px; +} +#u245 { + border-width:0px; + position:absolute; + left:894px; + top:30px; + width:448px; + height:30px; +} +#u245_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:444px; + word-wrap:break-word; +} +#u246_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:447px; + height:30px; +} +#u246 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:447px; + height:30px; +} +#u246_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:443px; + word-wrap:break-word; +} +#u247_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:447px; + height:30px; +} +#u247 { + border-width:0px; + position:absolute; + left:447px; + top:60px; + width:447px; + height:30px; +} +#u247_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:443px; + word-wrap:break-word; +} +#u248_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:448px; + height:30px; +} +#u248 { + border-width:0px; + position:absolute; + left:894px; + top:60px; + width:448px; + height:30px; +} +#u248_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:444px; + word-wrap:break-word; +} +#u250_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u250 { + border-width:0px; + position:absolute; + left:1px; + top:0px; + width:1440px; + height:62px; +} +#u250_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u251_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u251 { + border-width:0px; + position:absolute; + left:1326px; + top:9px; + width:99px; + height:40px; +} +#u251_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u252 { + border-width:0px; + position:absolute; + left:347px; + top:9px; + width:300px; + height:37px; +} +#u252_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u253_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u253 { + border-width:0px; + position:absolute; + left:647px; + top:9px; + width:42px; + height:37px; +} +#u253_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u254_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u254 { + border-width:0px; + position:absolute; + left:197px; + top:9px; + width:29px; + height:37px; +} +#u254_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u255_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u255 { + border-width:0px; + position:absolute; + left:230px; + top:9px; + width:73px; + height:37px; +} +#u255_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u256_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u256 { + border-width:0px; + position:absolute; + left:7px; + top:12px; + width:114px; + height:38px; +} +#u256_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u257_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u257 { + border-width:0px; + position:absolute; + left:1269px; + top:9px; + width:36px; + height:37px; +} +#u257_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u258_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u258 { + border-width:0px; + position:absolute; + left:1109px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u258_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u259 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u260_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u260 { + border-width:0px; + position:absolute; + left:1px; + top:799px; + width:1440px; + height:50px; +} +#u260_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u261_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u261 { + border-width:0px; + position:absolute; + left:8px; + top:805px; + width:37px; + height:38px; +} +#u261_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u262_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u262 { + border-width:0px; + position:absolute; + left:50px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u262_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u263 { + border-width:0px; + position:absolute; + left:201px; + top:46px; + width:136px; + height:120px; +} +#u263_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u264 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u265_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u265 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u265_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u266_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u266 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u266_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u267_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u267 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u267_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u268_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u268 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u268_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u269_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u269 { + border-width:0px; + position:absolute; + left:1054px; + top:9px; + width:45px; + height:37px; +} +#u269_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/8_listbook/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/8_listbook/data.js new file mode 100644 index 0000000..077e5fa --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/8_listbook/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If selected option of This equals Mới đăng tải)",ci="condition",cj="exprType",ck="binaryOp",cl="op",cm="==",cn="leftExpr",co="fcall",cp="functionName",cq="GetSelectedOption",cr="arguments",cs="pathLiteral",ct="isThis",cu="isFocused",cv="isTarget",cw="rightExpr",cx="optionLiteral",cy="value",cz="Mới đăng tải",cA="Open 8.ListBook in Current Window",cB="Case 2
(Else If selected option of This equals A-Z)",cC="A-Z",cD="Open 9.AZBook in Current Window",cE="9_azbook.html",cF="Case 3
(Else If selected option of This equals Z-A)",cG="Z-A",cH="Open 10..ZABook in Current Window",cI="10__zabook.html",cJ="d40e06632041412b9879f096be43b637",cK=1391,cL="images/1_home/u20.png",cM="bbf7e7f8c0d34794ae67715a75e24517",cN=1418,cO="images/1_home/imgdanhmuc_u8.png",cP="43e72529592d4018b7303b54e8f46eaf",cQ="Rectangle",cR="vectorShape",cS=130,cT=16,cU="2285372321d148ec80932747449c36c9",cV="generateCompound",cW="dce2ba2212bf43e7b7212a5a8275f00b",cX="fontWeight",cY="700",cZ=113,da="8c7a4c5ad69a4369a5f7788171ac0b32",db=123,dc=693,dd="30f2126e4a8146f4b3fd97cfdd2f386c",de=137,df=491,dg="56aa9d979c644c79b668345b8a9e3a9e",dh=141,di=854,dj="6e2160178b5b440ab9a5750085d61349",dk=165,dl=1168,dm="d852521170d34fee83b0bab15b611307",dn="Header sau khi dang nhap",dp="referenceDiagramObject",dq=1440,dr=849,ds="masterId",dt="510564ce784d40c7be615f5485d34622",du="ff1b22b270d247beac32ed9bba3c4614",dv=92,dw=33,dx="cd64754845384de3872fb4a066432c1f",dy=874,dz=732,dA="d10769b225a84fb08797055845d7762c",dB=1208,dC="663ea6f703744b23875e097d4344f4d6",dD=31,dE=1008,dF=684,dG=0xFF199ED8,dH="7c1571f50b974adcb41e1db9b3f244ba",dI=1336,dJ="5b1086557400491da6247374d0a5f8f6",dK=17,dL=239,dM=0xFFCCFF99,dN="712ec59eb23b4899ba42a07374a2e507",dO=641,dP="7a19af7d4d76469fb0baae30e2137683",dQ="f5a127216ba048d6bbcab52b94ed5bbc",dR=527,dS="masters",dT="510564ce784d40c7be615f5485d34622",dU="Axure:Master",dV="fb703f71faa74ee2a50a36acbf89b2a9",dW=62,dX="4b7bfc596114427989e10bb0b557d0ce",dY=0xFFF2F2F2,dZ="linePattern",ea="none",eb="images/1_home/u2.png",ec="e6f63b059bcf43f3a96c8a990ecbfcbc",ed="btnDangNhap",ee=99,ef=40,eg=1325,eh=9,ei=0xFFCC0066,ej="Open 4.Login in Current Window",ek="4_login.html",el="c4034a50406140e59d4e903581d22fc6",em="txtTimKiem",en="Text Field",eo="textBox",ep=37,eq="stateStyles",er="hint",es="foreGroundFill",et=0xFF999999,eu="opacity",ev=1,ew="44157808f2934100b68f2394a66b2bba",ex=346,ey="placeholderText",ez="Tìm kiếm tài liệu",eA="7bf6dce5f0d54a039254ce84b66aff06",eB="btnTimKiem",eC=42,eD=646,eE="Open http://google.com in Current Window",eF="webUrl",eG="urlLiteral",eH="stringLiteral",eI="http://google.com",eJ="stos",eK="images/1_home/btntimkiem_u6.png",eL="2b3b1d15eaa741d8ba8653251c256674",eM="imgDanhMuc",eN=29,eO=196,eP="fadeWidget",eQ="Show/Hide Widget",eR="objectsToFades",eS="Case 2",eT="50b8e9a5763b4be29df32a27d001bc1f",eU="lblDanhMuc",eV=73,eW=229,eX="verticalAlignment",eY="middle",eZ="98ff46c1e0cd42329a42871b703fe1e7",fa="imgLogoHeader",fb=114,fc=38,fd=6,fe=12,ff="Open 1.Home in Current Window",fg="1_home.html",fh="images/1_home/imglogoheader_u7.png",fi="eadb0c99e3054247afafe26fcbcdecbd",fj=36,fk="1136c3bb487940fb91dab49aa20e1c95",fl=1268,fm="cornerRadius",fn="50",fo="images/5_updateprofile/u165.png",fp="5ec8c781ee1e42c196b4b74e7721a094",fq=0xFF0066FF,fr=1108,fs="horizontalAlignment",ft="center",fu="Open 5.UpdateProfile in New Window/Tab",fv="5_updateprofile.html",fw="new",fx="e19761ac1d5647e19caf118662662efa",fy="Group",fz="layer",fA=0,fB="objs",fC="acd21607462d4c8a80179c4e8738ca22",fD=50,fE="47641f9a00ac465095d6b672bbdffef6",fF=799,fG=0xFFE4E4E4,fH="9bde9ee693514f6cbcea5d7cd987da2d",fI=7,fJ=805,fK="images/1_home/u12.png",fL="cf71097e6bbe472688668d0658a742b4",fM=49,fN="propagate",fO="3fdf17c6a3ed4eae81b1732938ef10a5",fP="Menu",fQ="menuObject",fR=136,fS=120,fT=200,fU="e51d8c31b5e44607a2dbf1d734f2910c",fV="Table",fW="table",fX="bfd1e27ae750487da4c58fc231c250cf",fY="Menu Item",fZ="tableCell",ga=30,gb="2036b2baccbc41f0b9263a6981a11a42",gc="left",gd="Open 11.ITBook in Current Window",ge="11_itbook.html",gf="images/1_home/u16.png",gg="158d5fa596254b7195940b50047beb56",gh="Open 12.EconomicBook in Current Window",gi="12_economicbook.html",gj="a48d5d2765f743ec96e8c9500301c869",gk=60,gl="Open 13.Outlinebook in Current Window",gm="13_outlinebook.html",gn="08b5728dc6854e7b91fb6036df6c64c2",go=90,gp="Open 14.Slide in Current Window",gq="14_slide.html",gr="images/1_home/u19.png",gs="508308f1f2c343d897e988dbe2433526",gt=45,gu=1053,gv="images/5_updateprofile/u177.png",gw="objectPaths",gx="a1ebe06cfb81413681757424c1837a08",gy="scriptId",gz="u270",gA="61a19f3dcc2b410c85255016c222db29",gB="u271",gC="2a96d5e144094c06afef18de1a2980b1",gD="u272",gE="04aa3b62976b46ca98be166f024e433b",gF="u273",gG="b12c1f1a818d451a9b4bb270fad0fceb",gH="u274",gI="d40e06632041412b9879f096be43b637",gJ="u275",gK="bbf7e7f8c0d34794ae67715a75e24517",gL="u276",gM="43e72529592d4018b7303b54e8f46eaf",gN="u277",gO="dce2ba2212bf43e7b7212a5a8275f00b",gP="u278",gQ="30f2126e4a8146f4b3fd97cfdd2f386c",gR="u279",gS="56aa9d979c644c79b668345b8a9e3a9e",gT="u280",gU="6e2160178b5b440ab9a5750085d61349",gV="u281",gW="d852521170d34fee83b0bab15b611307",gX="u282",gY="fb703f71faa74ee2a50a36acbf89b2a9",gZ="u283",ha="e6f63b059bcf43f3a96c8a990ecbfcbc",hb="u284",hc="c4034a50406140e59d4e903581d22fc6",hd="u285",he="7bf6dce5f0d54a039254ce84b66aff06",hf="u286",hg="2b3b1d15eaa741d8ba8653251c256674",hh="u287",hi="50b8e9a5763b4be29df32a27d001bc1f",hj="u288",hk="98ff46c1e0cd42329a42871b703fe1e7",hl="u289",hm="eadb0c99e3054247afafe26fcbcdecbd",hn="u290",ho="5ec8c781ee1e42c196b4b74e7721a094",hp="u291",hq="e19761ac1d5647e19caf118662662efa",hr="u292",hs="acd21607462d4c8a80179c4e8738ca22",ht="u293",hu="9bde9ee693514f6cbcea5d7cd987da2d",hv="u294",hw="cf71097e6bbe472688668d0658a742b4",hx="u295",hy="3fdf17c6a3ed4eae81b1732938ef10a5",hz="u296",hA="e51d8c31b5e44607a2dbf1d734f2910c",hB="u297",hC="bfd1e27ae750487da4c58fc231c250cf",hD="u298",hE="158d5fa596254b7195940b50047beb56",hF="u299",hG="a48d5d2765f743ec96e8c9500301c869",hH="u300",hI="08b5728dc6854e7b91fb6036df6c64c2",hJ="u301",hK="508308f1f2c343d897e988dbe2433526",hL="u302",hM="ff1b22b270d247beac32ed9bba3c4614",hN="u303",hO="d10769b225a84fb08797055845d7762c",hP="u304",hQ="663ea6f703744b23875e097d4344f4d6",hR="u305",hS="7c1571f50b974adcb41e1db9b3f244ba",hT="u306",hU="5b1086557400491da6247374d0a5f8f6",hV="u307",hW="712ec59eb23b4899ba42a07374a2e507",hX="u308",hY="7a19af7d4d76469fb0baae30e2137683",hZ="u309",ia="f5a127216ba048d6bbcab52b94ed5bbc",ib="u310"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/8_listbook/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/8_listbook/styles.css new file mode 100644 index 0000000..3d7079f --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/8_listbook/styles.css @@ -0,0 +1,1110 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u270_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:300px; + height:450px; +} +#u270 { + border-width:0px; + position:absolute; + left:46px; + top:224px; + width:300px; + height:450px; +} +#u270_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u271_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:306px; + height:450px; +} +#u271 { + border-width:0px; + position:absolute; + left:406px; + top:224px; + width:306px; + height:450px; +} +#u271_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u272_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:295px; + height:450px; +} +#u272 { + border-width:0px; + position:absolute; + left:769px; + top:224px; + width:295px; + height:450px; +} +#u272_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u273_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:324px; + height:450px; +} +#u273 { + border-width:0px; + position:absolute; + left:1116px; + top:224px; + width:324px; + height:450px; +} +#u273_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u274 { + border-width:0px; + position:absolute; + left:1067px; + top:150px; + width:300px; + height:22px; +} +#u274_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u274_input:disabled { + color:grayText; +} +#u275_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u275 { + border-width:0px; + position:absolute; + left:1391px; + top:150px; + width:22px; + height:22px; +} +#u275_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u276_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u276 { + border-width:0px; + position:absolute; + left:1418px; + top:150px; + width:22px; + height:22px; +} +#u276_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u277_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:130px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u277 { + border-width:0px; + position:absolute; + left:46px; + top:150px; + width:130px; + height:16px; +} +#u277_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:130px; + white-space:nowrap; +} +#u278_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:113px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u278 { + border-width:0px; + position:absolute; + left:123px; + top:693px; + width:113px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u278_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:113px; + white-space:nowrap; +} +#u279_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:137px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u279 { + border-width:0px; + position:absolute; + left:491px; + top:693px; + width:137px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u279_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:137px; + white-space:nowrap; +} +#u280_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:141px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u280 { + border-width:0px; + position:absolute; + left:854px; + top:693px; + width:141px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u280_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:141px; + white-space:nowrap; +} +#u281_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:165px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u281 { + border-width:0px; + position:absolute; + left:1168px; + top:693px; + width:165px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u281_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:165px; + white-space:nowrap; +} +#u283_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u283 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u283_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u284_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u284 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u284_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u285 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u285_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u286_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u286 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u286_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u287_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u287 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u287_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u288_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u288 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u288_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u289_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u289 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u289_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u290_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u290 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u290_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u291_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u291 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u291_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u292 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u293_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u293 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u293_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u294_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u294 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u294_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u295_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u295 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u295_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u296 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u296_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u297 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u298_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u298 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u298_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u299_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u299 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u299_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u300_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u300 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u300_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u301_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u301 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u301_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u302_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u302 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u302_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u303_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u303 { + border-width:0px; + position:absolute; + left:874px; + top:732px; + width:92px; + height:33px; +} +#u303_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u304_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u304 { + border-width:0px; + position:absolute; + left:1208px; + top:732px; + width:92px; + height:33px; +} +#u304_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u305_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + height:16px; + background:inherit; + background-color:rgba(25, 158, 216, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u305 { + border-width:0px; + position:absolute; + left:1008px; + top:684px; + width:31px; + height:16px; +} +#u305_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + white-space:nowrap; +} +#u306_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + height:16px; + background:inherit; + background-color:rgba(25, 158, 216, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u306 { + border-width:0px; + position:absolute; + left:1336px; + top:684px; + width:31px; + height:16px; +} +#u306_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + white-space:nowrap; +} +#u307_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + height:16px; + background:inherit; + background-color:rgba(204, 255, 153, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u307 { + border-width:0px; + position:absolute; + left:239px; + top:684px; + width:17px; + height:16px; +} +#u307_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + white-space:nowrap; +} +#u308_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + height:16px; + background:inherit; + background-color:rgba(204, 255, 153, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u308 { + border-width:0px; + position:absolute; + left:641px; + top:684px; + width:17px; + height:16px; +} +#u308_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + white-space:nowrap; +} +#u309_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u309 { + border-width:0px; + position:absolute; + left:137px; + top:732px; + width:92px; + height:33px; +} +#u309_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u310_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u310 { + border-width:0px; + position:absolute; + left:527px; + top:732px; + width:92px; + height:33px; +} +#u310_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/9_azbook/data.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/9_azbook/data.js new file mode 100644 index 0000000..10442cc --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/9_azbook/data.js @@ -0,0 +1,7 @@ +$axure.loadCurrentPage( +(function() { + var _ = function() { var r={},a=arguments; for(var i=0; i (If selected option of This equals Mới đăng tải)",ci="condition",cj="exprType",ck="binaryOp",cl="op",cm="==",cn="leftExpr",co="fcall",cp="functionName",cq="GetSelectedOption",cr="arguments",cs="pathLiteral",ct="isThis",cu="isFocused",cv="isTarget",cw="rightExpr",cx="optionLiteral",cy="value",cz="Mới đăng tải",cA="Open 8.ListBook in Current Window",cB="8_listbook.html",cC="Case 2
(Else If selected option of This equals A-Z)",cD="A-Z",cE="Open 9.AZBook in Current Window",cF="Case 3
(Else If selected option of This equals Z-A)",cG="Z-A",cH="Open 10..ZABook in Current Window",cI="10__zabook.html",cJ="0a1235400a3648afa9498e479667be43",cK=1391,cL="images/1_home/u20.png",cM="74dc4f978a274fb0b15273fc40cf728f",cN=1418,cO="images/1_home/imgdanhmuc_u8.png",cP="f40f91719eb94dcda4cbdb7eba3b7d47",cQ="Rectangle",cR="vectorShape",cS=69,cT=16,cU="2285372321d148ec80932747449c36c9",cV="generateCompound",cW="ff2cbf6aef9b406f9709a74b96aa69b5",cX="fontWeight",cY="700",cZ=113,da="8c7a4c5ad69a4369a5f7788171ac0b32",db=123,dc=668,dd="52d18444c7ed4a33b0946890e982b97f",de=137,df=491,dg="a21f1b7b4f8b49a0a3eee184fc895d04",dh=141,di=854,dj="dae6ef8b6cf3455582b7ea14adc394c0",dk=165,dl=1168,dm="89abdf86a274450281ff3ef13595e578",dn=38,dp=449,dq=762,dr="a6ff2ec419a146cf830d7fb8b695c60f",ds=9,dt=515,du="903aa9abeac342cab204e7cdef66339b",dv=534,dw="876ee2cc3cfe4fc3b793a5f4504fe459",dx=33,dy=553,dz="7386606cdf6f4f3296a0720a845cdb94",dA=68,dB=596,dC="309e0bae94404e43ba60c236cf758f08",dD="Header sau khi dang nhap",dE="referenceDiagramObject",dF=1440,dG=849,dH="masterId",dI="510564ce784d40c7be615f5485d34622",dJ="1269b1805ef84a409d177587b9739129",dK=92,dL="cd64754845384de3872fb4a066432c1f",dM=871,dN=707,dO="71d2eaf2a4cf4b2cbaad9d7e23c4c9a0",dP=1205,dQ="94dcb6b0327241cfa715622fc8ee6296",dR=31,dS=1005,dT=659,dU=0xFF199ED8,dV="a8f36c2a322544b89f760cd54fa1b8e2",dW=1333,dX="97e7820b450e40599a030808e9a8601d",dY=17,dZ=236,ea=0xFFCCFF99,eb="2d2c75752181409e9d279daf660fafce",ec=638,ed="c5378bd2f0e74863952b9c91ca5b129d",ee=134,ef="8e2f5017fe2e45dda6130f82ab6d933d",eg=524,eh="masters",ei="510564ce784d40c7be615f5485d34622",ej="Axure:Master",ek="fb703f71faa74ee2a50a36acbf89b2a9",el=62,em="4b7bfc596114427989e10bb0b557d0ce",en=0xFFF2F2F2,eo="linePattern",ep="none",eq="images/1_home/u2.png",er="e6f63b059bcf43f3a96c8a990ecbfcbc",es="btnDangNhap",et=99,eu=40,ev=1325,ew=0xFFCC0066,ex="Open 4.Login in Current Window",ey="4_login.html",ez="c4034a50406140e59d4e903581d22fc6",eA="txtTimKiem",eB="Text Field",eC="textBox",eD=37,eE="stateStyles",eF="hint",eG="foreGroundFill",eH=0xFF999999,eI="opacity",eJ=1,eK="44157808f2934100b68f2394a66b2bba",eL=346,eM="placeholderText",eN="Tìm kiếm tài liệu",eO="7bf6dce5f0d54a039254ce84b66aff06",eP="btnTimKiem",eQ=42,eR=646,eS="Open http://google.com in Current Window",eT="webUrl",eU="urlLiteral",eV="stringLiteral",eW="http://google.com",eX="stos",eY="images/1_home/btntimkiem_u6.png",eZ="2b3b1d15eaa741d8ba8653251c256674",fa="imgDanhMuc",fb=29,fc=196,fd="fadeWidget",fe="Show/Hide Widget",ff="objectsToFades",fg="Case 2",fh="50b8e9a5763b4be29df32a27d001bc1f",fi="lblDanhMuc",fj=73,fk=229,fl="verticalAlignment",fm="middle",fn="98ff46c1e0cd42329a42871b703fe1e7",fo="imgLogoHeader",fp=114,fq=6,fr=12,fs="Open 1.Home in Current Window",ft="1_home.html",fu="images/1_home/imglogoheader_u7.png",fv="eadb0c99e3054247afafe26fcbcdecbd",fw=36,fx="1136c3bb487940fb91dab49aa20e1c95",fy=1268,fz="cornerRadius",fA="50",fB="images/5_updateprofile/u165.png",fC="5ec8c781ee1e42c196b4b74e7721a094",fD=0xFF0066FF,fE=150,fF=1108,fG="horizontalAlignment",fH="center",fI="Open 5.UpdateProfile in New Window/Tab",fJ="5_updateprofile.html",fK="new",fL="e19761ac1d5647e19caf118662662efa",fM="Group",fN="layer",fO=0,fP="objs",fQ="acd21607462d4c8a80179c4e8738ca22",fR=50,fS="47641f9a00ac465095d6b672bbdffef6",fT=799,fU=0xFFE4E4E4,fV="9bde9ee693514f6cbcea5d7cd987da2d",fW=7,fX=805,fY="images/1_home/u12.png",fZ="cf71097e6bbe472688668d0658a742b4",ga=49,gb="propagate",gc="3fdf17c6a3ed4eae81b1732938ef10a5",gd="Menu",ge="menuObject",gf=136,gg=120,gh=200,gi="e51d8c31b5e44607a2dbf1d734f2910c",gj="Table",gk="table",gl="bfd1e27ae750487da4c58fc231c250cf",gm="Menu Item",gn="tableCell",go=30,gp="2036b2baccbc41f0b9263a6981a11a42",gq="left",gr="Open 11.ITBook in Current Window",gs="11_itbook.html",gt="images/1_home/u16.png",gu="158d5fa596254b7195940b50047beb56",gv="Open 12.EconomicBook in Current Window",gw="12_economicbook.html",gx="a48d5d2765f743ec96e8c9500301c869",gy=60,gz="Open 13.Outlinebook in Current Window",gA="13_outlinebook.html",gB="08b5728dc6854e7b91fb6036df6c64c2",gC=90,gD="Open 14.Slide in Current Window",gE="14_slide.html",gF="images/1_home/u19.png",gG="508308f1f2c343d897e988dbe2433526",gH=45,gI=1053,gJ="images/5_updateprofile/u177.png",gK="objectPaths",gL="f769cfc7707d45d3b22398d6c5706579",gM="scriptId",gN="u311",gO="9c873b9376694cfd83028289203f3edd",gP="u312",gQ="a4b34acf85804804adba7d2132e4f1cd",gR="u313",gS="53297e8b6d7f4df6bcb02c1e907d8ec3",gT="u314",gU="e3524be3aefc49a1bddc397dc829c191",gV="u315",gW="0a1235400a3648afa9498e479667be43",gX="u316",gY="74dc4f978a274fb0b15273fc40cf728f",gZ="u317",ha="f40f91719eb94dcda4cbdb7eba3b7d47",hb="u318",hc="ff2cbf6aef9b406f9709a74b96aa69b5",hd="u319",he="52d18444c7ed4a33b0946890e982b97f",hf="u320",hg="a21f1b7b4f8b49a0a3eee184fc895d04",hh="u321",hi="dae6ef8b6cf3455582b7ea14adc394c0",hj="u322",hk="89abdf86a274450281ff3ef13595e578",hl="u323",hm="a6ff2ec419a146cf830d7fb8b695c60f",hn="u324",ho="903aa9abeac342cab204e7cdef66339b",hp="u325",hq="876ee2cc3cfe4fc3b793a5f4504fe459",hr="u326",hs="7386606cdf6f4f3296a0720a845cdb94",ht="u327",hu="309e0bae94404e43ba60c236cf758f08",hv="u328",hw="fb703f71faa74ee2a50a36acbf89b2a9",hx="u329",hy="e6f63b059bcf43f3a96c8a990ecbfcbc",hz="u330",hA="c4034a50406140e59d4e903581d22fc6",hB="u331",hC="7bf6dce5f0d54a039254ce84b66aff06",hD="u332",hE="2b3b1d15eaa741d8ba8653251c256674",hF="u333",hG="50b8e9a5763b4be29df32a27d001bc1f",hH="u334",hI="98ff46c1e0cd42329a42871b703fe1e7",hJ="u335",hK="eadb0c99e3054247afafe26fcbcdecbd",hL="u336",hM="5ec8c781ee1e42c196b4b74e7721a094",hN="u337",hO="e19761ac1d5647e19caf118662662efa",hP="u338",hQ="acd21607462d4c8a80179c4e8738ca22",hR="u339",hS="9bde9ee693514f6cbcea5d7cd987da2d",hT="u340",hU="cf71097e6bbe472688668d0658a742b4",hV="u341",hW="3fdf17c6a3ed4eae81b1732938ef10a5",hX="u342",hY="e51d8c31b5e44607a2dbf1d734f2910c",hZ="u343",ia="bfd1e27ae750487da4c58fc231c250cf",ib="u344",ic="158d5fa596254b7195940b50047beb56",id="u345",ie="a48d5d2765f743ec96e8c9500301c869",ig="u346",ih="08b5728dc6854e7b91fb6036df6c64c2",ii="u347",ij="508308f1f2c343d897e988dbe2433526",ik="u348",il="1269b1805ef84a409d177587b9739129",im="u349",io="71d2eaf2a4cf4b2cbaad9d7e23c4c9a0",ip="u350",iq="94dcb6b0327241cfa715622fc8ee6296",ir="u351",is="a8f36c2a322544b89f760cd54fa1b8e2",it="u352",iu="97e7820b450e40599a030808e9a8601d",iv="u353",iw="2d2c75752181409e9d279daf660fafce",ix="u354",iy="c5378bd2f0e74863952b9c91ca5b129d",iz="u355",iA="8e2f5017fe2e45dda6130f82ab6d933d",iB="u356"; +return _creator(); +})()); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/9_azbook/styles.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/9_azbook/styles.css new file mode 100644 index 0000000..1ed9e6b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/files/9_azbook/styles.css @@ -0,0 +1,1265 @@ +body { + margin:0px; + background-image:none; + position:static; + left:auto; + width:1440px; + margin-left:0; + margin-right:0; + text-align:left; +} +#base { + position:absolute; + z-index:0; +} +#u311_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:300px; + height:450px; +} +#u311 { + border-width:0px; + position:absolute; + left:46px; + top:199px; + width:300px; + height:450px; +} +#u311_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u312_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:306px; + height:450px; +} +#u312 { + border-width:0px; + position:absolute; + left:406px; + top:199px; + width:306px; + height:450px; +} +#u312_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u313_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:295px; + height:450px; +} +#u313 { + border-width:0px; + position:absolute; + left:769px; + top:199px; + width:295px; + height:450px; +} +#u313_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u314_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:324px; + height:450px; +} +#u314 { + border-width:0px; + position:absolute; + left:1116px; + top:199px; + width:324px; + height:450px; +} +#u314_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u315 { + border-width:0px; + position:absolute; + left:1067px; + top:125px; + width:300px; + height:22px; +} +#u315_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:22px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; +} +#u315_input:disabled { + color:grayText; +} +#u316_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u316 { + border-width:0px; + position:absolute; + left:1391px; + top:125px; + width:22px; + height:22px; +} +#u316_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u317_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:22px; + height:22px; +} +#u317 { + border-width:0px; + position:absolute; + left:1418px; + top:125px; + width:22px; + height:22px; +} +#u317_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u318_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:69px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u318 { + border-width:0px; + position:absolute; + left:46px; + top:125px; + width:69px; + height:16px; +} +#u318_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:69px; + white-space:nowrap; +} +#u319_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:113px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u319 { + border-width:0px; + position:absolute; + left:123px; + top:668px; + width:113px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u319_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:113px; + white-space:nowrap; +} +#u320_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:137px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u320 { + border-width:0px; + position:absolute; + left:491px; + top:668px; + width:137px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u320_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:137px; + white-space:nowrap; +} +#u321_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:141px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u321 { + border-width:0px; + position:absolute; + left:854px; + top:668px; + width:141px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u321_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:141px; + white-space:nowrap; +} +#u322_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:165px; + height:22px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u322 { + border-width:0px; + position:absolute; + left:1168px; + top:668px; + width:165px; + height:22px; + font-family:'Arial-BoldMT', 'Arial Bold', 'Arial'; + font-weight:700; + font-style:normal; +} +#u322_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:165px; + white-space:nowrap; +} +#u323_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:38px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u323 { + border-width:0px; + position:absolute; + left:449px; + top:762px; + width:38px; + height:16px; +} +#u323_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:38px; + white-space:nowrap; +} +#u324_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:9px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u324 { + border-width:0px; + position:absolute; + left:515px; + top:762px; + width:9px; + height:16px; +} +#u324_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:9px; + white-space:nowrap; +} +#u325_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:9px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u325 { + border-width:0px; + position:absolute; + left:534px; + top:762px; + width:9px; + height:16px; +} +#u325_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:9px; + white-space:nowrap; +} +#u326_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:33px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u326 { + border-width:0px; + position:absolute; + left:553px; + top:762px; + width:33px; + height:16px; +} +#u326_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:33px; + white-space:nowrap; +} +#u327_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:68px; + height:16px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u327 { + border-width:0px; + position:absolute; + left:596px; + top:762px; + width:68px; + height:16px; +} +#u327_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:68px; + white-space:nowrap; +} +#u329_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u329 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:62px; +} +#u329_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u330_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:99px; + height:40px; + background:inherit; + background-color:rgba(204, 0, 102, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u330 { + border-width:0px; + position:absolute; + left:1325px; + top:9px; + width:99px; + height:40px; +} +#u330_text { + border-width:0px; + position:absolute; + left:2px; + top:12px; + width:95px; + word-wrap:break-word; +} +#u331 { + border-width:0px; + position:absolute; + left:346px; + top:9px; + width:300px; + height:37px; +} +#u331_input { + position:absolute; + left:0px; + top:0px; + width:300px; + height:37px; + font-family:'Arial'; + font-weight:400; + font-style:normal; + font-size:13px; + text-decoration:none; + color:#000000; + text-align:left; +} +#u332_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:42px; + height:37px; +} +#u332 { + border-width:0px; + position:absolute; + left:646px; + top:9px; + width:42px; + height:37px; +} +#u332_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u333_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:29px; + height:37px; +} +#u333 { + border-width:0px; + position:absolute; + left:196px; + top:9px; + width:29px; + height:37px; +} +#u333_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u334_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:73px; + height:37px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u334 { + border-width:0px; + position:absolute; + left:229px; + top:9px; + width:73px; + height:37px; +} +#u334_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:73px; + word-wrap:break-word; +} +#u335_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:114px; + height:38px; +} +#u335 { + border-width:0px; + position:absolute; + left:6px; + top:12px; + width:114px; + height:38px; +} +#u335_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u336_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:36px; + height:37px; +} +#u336 { + border-width:0px; + position:absolute; + left:1268px; + top:9px; + width:36px; + height:37px; +} +#u336_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u337_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:37px; + background:inherit; + background-color:rgba(242, 242, 242, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0066FF; + text-align:center; +} +#u337 { + border-width:0px; + position:absolute; + left:1108px; + top:9px; + width:150px; + height:37px; + color:#0066FF; + text-align:center; +} +#u337_text { + border-width:0px; + position:absolute; + left:0px; + top:10px; + width:150px; + word-wrap:break-word; +} +#u338 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + height:0px; +} +#u339_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:1440px; + height:50px; + background:inherit; + background-color:rgba(228, 228, 228, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u339 { + border-width:0px; + position:absolute; + left:0px; + top:799px; + width:1440px; + height:50px; +} +#u339_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u340_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:37px; + height:38px; +} +#u340 { + border-width:0px; + position:absolute; + left:7px; + top:805px; + width:37px; + height:38px; +} +#u340_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u341_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:150px; + height:38px; + background:inherit; + background-color:rgba(255, 255, 255, 0); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + text-align:center; +} +#u341 { + border-width:0px; + position:absolute; + left:49px; + top:805px; + width:150px; + height:38px; + text-align:center; +} +#u341_text { + border-width:0px; + position:absolute; + left:0px; + top:11px; + width:150px; + word-wrap:break-word; +} +#u342 { + border-width:0px; + position:absolute; + left:200px; + top:46px; + width:136px; + height:120px; +} +#u342_menu { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; + -webkit-transform:rotate(NaNdeg); + -moz-transform:rotate(NaNdeg); + -ms-transform:rotate(NaNdeg); + transform:rotate(NaNdeg); +} +#u343 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:120px; +} +#u344_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u344 { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; + text-align:left; +} +#u344_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u345_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u345 { + border-width:0px; + position:absolute; + left:0px; + top:30px; + width:136px; + height:30px; + text-align:left; +} +#u345_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u346_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u346 { + border-width:0px; + position:absolute; + left:0px; + top:60px; + width:136px; + height:30px; + text-align:left; +} +#u346_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u347_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:136px; + height:30px; +} +#u347 { + border-width:0px; + position:absolute; + left:0px; + top:90px; + width:136px; + height:30px; + text-align:left; +} +#u347_text { + border-width:0px; + position:absolute; + left:2px; + top:7px; + width:132px; + word-wrap:break-word; +} +#u348_img { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:45px; + height:37px; +} +#u348 { + border-width:0px; + position:absolute; + left:1053px; + top:9px; + width:45px; + height:37px; +} +#u348_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:0px; + visibility:hidden; + word-wrap:break-word; +} +#u349_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u349 { + border-width:0px; + position:absolute; + left:871px; + top:707px; + width:92px; + height:33px; +} +#u349_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u350_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u350 { + border-width:0px; + position:absolute; + left:1205px; + top:707px; + width:92px; + height:33px; +} +#u350_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u351_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + height:16px; + background:inherit; + background-color:rgba(25, 158, 216, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u351 { + border-width:0px; + position:absolute; + left:1005px; + top:659px; + width:31px; + height:16px; +} +#u351_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + white-space:nowrap; +} +#u352_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + height:16px; + background:inherit; + background-color:rgba(25, 158, 216, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u352 { + border-width:0px; + position:absolute; + left:1333px; + top:659px; + width:31px; + height:16px; +} +#u352_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:31px; + white-space:nowrap; +} +#u353_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + height:16px; + background:inherit; + background-color:rgba(204, 255, 153, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u353 { + border-width:0px; + position:absolute; + left:236px; + top:659px; + width:17px; + height:16px; +} +#u353_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + white-space:nowrap; +} +#u354_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + height:16px; + background:inherit; + background-color:rgba(204, 255, 153, 1); + border:none; + border-radius:0px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u354 { + border-width:0px; + position:absolute; + left:638px; + top:659px; + width:17px; + height:16px; +} +#u354_text { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:17px; + white-space:nowrap; +} +#u355_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u355 { + border-width:0px; + position:absolute; + left:134px; + top:707px; + width:92px; + height:33px; +} +#u355_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} +#u356_div { + border-width:0px; + position:absolute; + left:0px; + top:0px; + width:92px; + height:33px; + background:inherit; + background-color:rgba(22, 155, 213, 1); + border:none; + border-radius:5px; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +#u356 { + border-width:0px; + position:absolute; + left:524px; + top:707px; + width:92px; + height:33px; +} +#u356_text { + border-width:0px; + position:absolute; + left:2px; + top:8px; + width:88px; + word-wrap:break-word; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u406.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u406.jpg new file mode 100644 index 0000000..28ddd93 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u406.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u407.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u407.png new file mode 100644 index 0000000..2d3308e Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u407.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u408.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u408.jpg new file mode 100644 index 0000000..b462460 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/11_itbook/u408.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u451.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u451.jpg new file mode 100644 index 0000000..95f1b1d Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u451.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u452.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u452.jpg new file mode 100644 index 0000000..ba9e280 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u452.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u453.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u453.jpg new file mode 100644 index 0000000..ecfefbf Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u453.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u454.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u454.jpg new file mode 100644 index 0000000..565acef Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/12_economicbook/u454.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u496.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u496.jpg new file mode 100644 index 0000000..8815208 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u496.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u497.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u497.jpg new file mode 100644 index 0000000..77a7945 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u497.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u498.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u498.jpg new file mode 100644 index 0000000..cb28cfa Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u498.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u499.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u499.jpg new file mode 100644 index 0000000..0273e0a Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/13_outlinebook/u499.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/15_viewdocument/u599.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/15_viewdocument/u599.png new file mode 100644 index 0000000..cc2f976 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/15_viewdocument/u599.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u712.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u712.png new file mode 100644 index 0000000..8d96820 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u712.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u713.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u713.png new file mode 100644 index 0000000..cea7381 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u713.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u730.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u730.png new file mode 100644 index 0000000..4eb7b16 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/19_uploadquestion_votequestion/u730.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/btntimkiem_u6.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/btntimkiem_u6.png new file mode 100644 index 0000000..746f141 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/btntimkiem_u6.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/imgdanhmuc_u8.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/imgdanhmuc_u8.png new file mode 100644 index 0000000..cf1e5fe Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/imgdanhmuc_u8.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/imglogoheader_u7.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/imglogoheader_u7.png new file mode 100644 index 0000000..dd3bd1c Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/imglogoheader_u7.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u12.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u12.png new file mode 100644 index 0000000..ceca8c8 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u12.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u14_menu.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u14_menu.png new file mode 100644 index 0000000..d830576 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u14_menu.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u16.png new file mode 100644 index 0000000..3e2d7b4 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u19.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u19.png new file mode 100644 index 0000000..dedf58f Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u19.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u2.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u2.png new file mode 100644 index 0000000..c8fe8fe Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u2.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u20.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u20.png new file mode 100644 index 0000000..e89d014 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u20.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u22.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u22.jpg new file mode 100644 index 0000000..90bed65 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u22.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u23.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u23.png new file mode 100644 index 0000000..8160e37 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u23.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u24.PNG b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u24.PNG new file mode 100644 index 0000000..aab4cfe Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u24.PNG differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u25.PNG b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u25.PNG new file mode 100644 index 0000000..20f24ab Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/1_home/u25.PNG differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_1_u1038.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_1_u1038.png new file mode 100644 index 0000000..7043834 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_1_u1038.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_2_u1039.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_2_u1039.png new file mode 100644 index 0000000..b926eaf Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_2_u1039.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_3_u1040.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_3_u1040.png new file mode 100644 index 0000000..cf567cb Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/26_deletedocument/im_s_ch_3_u1040.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1084.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1084.png new file mode 100644 index 0000000..fd0a6d4 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1084.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1085.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1085.png new file mode 100644 index 0000000..67bd34d Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1085.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1086.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1086.png new file mode 100644 index 0000000..bddf783 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1086.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1087.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1087.png new file mode 100644 index 0000000..01b61ab Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1087.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1112.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1112.png new file mode 100644 index 0000000..e5b13b0 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1112.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1113.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1113.png new file mode 100644 index 0000000..ef05a06 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1113.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1114.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1114.png new file mode 100644 index 0000000..d25a577 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1114.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1115.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1115.png new file mode 100644 index 0000000..b1383ec Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1115.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1116.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1116.png new file mode 100644 index 0000000..95b2871 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1116.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1117.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1117.png new file mode 100644 index 0000000..5aa5e72 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1117.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1118.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1118.png new file mode 100644 index 0000000..2276eb5 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1118.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1119.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1119.png new file mode 100644 index 0000000..69f3b29 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/27_usersetting/u1119.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/29_connecterror/u1208.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/29_connecterror/u1208.jpg new file mode 100644 index 0000000..34d5f89 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/29_connecterror/u1208.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u66.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u66.png new file mode 100644 index 0000000..cde0179 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u66.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u67.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u67.png new file mode 100644 index 0000000..e8a3163 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u67.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u68.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u68.png new file mode 100644 index 0000000..3c62407 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u68.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u69.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u69.png new file mode 100644 index 0000000..e683f55 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u69.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u70.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u70.png new file mode 100644 index 0000000..67b8c10 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u70.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u76.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u76.png new file mode 100644 index 0000000..231076c Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u76.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u77.jpg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u77.jpg new file mode 100644 index 0000000..b131df5 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/2_signin/u77.jpg differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/30_categories/u1241.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/30_categories/u1241.png new file mode 100644 index 0000000..b5c79c8 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/30_categories/u1241.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u165.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u165.png new file mode 100644 index 0000000..a5cc17e Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u165.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u177.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u177.png new file mode 100644 index 0000000..a905cf7 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u177.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u182.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u182.png new file mode 100644 index 0000000..67781fb Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u182.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u186.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u186.png new file mode 100644 index 0000000..3e5f21d Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/5_updateprofile/u186.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u189.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u189.png new file mode 100644 index 0000000..2cc1374 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u189.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u191.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u191.png new file mode 100644 index 0000000..8dd82cd Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u191.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u213.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u213.png new file mode 100644 index 0000000..389fd79 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u213.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u215.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u215.png new file mode 100644 index 0000000..420d0d2 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/6_history/u215.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u240.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u240.png new file mode 100644 index 0000000..7a80ced Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u240.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u242.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u242.png new file mode 100644 index 0000000..9c49e14 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u242.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u246.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u246.png new file mode 100644 index 0000000..9fb51a4 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u246.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u248.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u248.png new file mode 100644 index 0000000..5fa9c5f Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/images/7_finduser/u248.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/index.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/index.html new file mode 100644 index 0000000..37974b1 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/index.html @@ -0,0 +1,503 @@ + + + + Untitled Document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+   +
+
+
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + CLOSE +
    +
    +
    +
    + +
    + +
    + +
    + +
    + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/debug.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/debug.css new file mode 100644 index 0000000..2c3aa45 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/debug.css @@ -0,0 +1,135 @@ +#debugHost { + font-size: 12px; + color:#4a4a4a; + height: 100%; +} + +#debugHostBtn a { + background: url('images/variables_on.png'); + background: url('images/variables_on.svg'),linear-gradient(transparent, transparent); +} + +.hashover #debugHostBtn a:hover { + background: url('images/variables_hover.png'); + background: url('images/variables_hover.svg'),linear-gradient(transparent, transparent); +} + +#debugHostBtn a.selected, #debugHostBtn a.selected:hover { + background: url('images/variables_off.png'); + background: url('images/variables_off.svg'),linear-gradient(transparent, transparent); +} + +#debugHeader .pageNameHeader { + padding-right: 0px; +} + +#variablesClearLink { + display: inline-block; + margin-bottom: 15px; +} + +#variablesClearLink:hover { + color: #0a6cd6; +} + +#traceClearLink { + display: inline-block; + margin-bottom: 15px; +} + +#traceClearLink:hover { + color: #0a6cd6; +} + +#debugScrollContainer +{ + overflow: auto; + width: 100%; + height: 100%; + -webkit-overflow-scrolling: touch; +} + +#debugContainer { + padding: 10px 10px 10px 10px; +} + +.variableName +{ + font-weight: bold; +} + +.variableDiv +{ + margin-bottom: 20px; + line-height: 16px; + +} + +#variablesContainer { + padding-bottom: 5px; + /*overflow: auto;*/ +} + +#traceContainer { + padding-top: 15px; + /*padding: 0px 10px 10px 10px;*/ +} + +.debugToolbarButton +{ + font-size: 1em; + color: #069; +} + +.axEventBlock { + display: inline-block; + width: 100%; + margin: 5px 0px 5px 0px; + line-height: 21px; +} + +/*a.axEventBlock:hover { + background-color: #069; + color: white; +}*/ + +.axTime { + margin: 0px 0px 0px 0px; + font-size: 11px; + color: #b1b3b5; +} + +.axLabel { + margin: 0px 0px 5px 0px; + font-family: 'Trebuchet MS'; + font-size: 14px; + font-weight: bold; +} + +.lastAxEvent { + margin-bottom: 10px; + border-bottom: 1px solid #c2c2c2; + padding-bottom: 10px; +} + +.axEvent { + margin: 0px 0px 5px 0px; + font-weight: bold; +} + +.axCase { + margin: 0px 0px 5px 8px; + font-style: italic; +} + +.axAction { + margin: 0px 0px 5px 13px; +} + +#traceEmptyState.emptyStateContainer { + margin-top: 0px; +} + +.debugLinksContainer { + text-align: right; +} \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/reset.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/reset.svg new file mode 100644 index 0000000..f91f3d4 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/reset.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/reset_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/reset_hover.svg new file mode 100644 index 0000000..98e02e5 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/reset_hover.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_hover.png new file mode 100644 index 0000000..b7c9cbd Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_hover.svg new file mode 100644 index 0000000..00e75d0 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_hover.svg @@ -0,0 +1,12 @@ + + + + variables_hover + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_off.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_off.png new file mode 100644 index 0000000..de5c50e Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_off.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_off.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_off.svg new file mode 100644 index 0000000..09a82ea --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_off.svg @@ -0,0 +1,12 @@ + + + + variables_on + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_on.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_on.png new file mode 100644 index 0000000..7b71df0 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_on.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_on.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_on.svg new file mode 100644 index 0000000..40526bf --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/debug/styles/images/variables_on.svg @@ -0,0 +1,12 @@ + + + + variables_off + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back.png new file mode 100644 index 0000000..9c4a594 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back.svg new file mode 100644 index 0000000..8c8b36c --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back.svg @@ -0,0 +1,12 @@ + + + + back + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back_hover.png new file mode 100644 index 0000000..feebfba Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back_hover.svg new file mode 100644 index 0000000..9e86df2 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/back_hover.svg @@ -0,0 +1,12 @@ + + + + back_hover + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes.png new file mode 100644 index 0000000..be4ea25 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes.svg new file mode 100644 index 0000000..1651280 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes.svg @@ -0,0 +1,15 @@ + + + + note + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_hover.png new file mode 100644 index 0000000..11aedd4 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_hover.svg new file mode 100644 index 0000000..1e22b69 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_hover.svg @@ -0,0 +1,15 @@ + + + + note_hover + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_on.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_on.png new file mode 100644 index 0000000..11aedd4 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_on.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_on.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_on.svg new file mode 100644 index 0000000..378fcb6 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/footnotes_on.svg @@ -0,0 +1,15 @@ + + + + note_on + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward.png new file mode 100644 index 0000000..d485dc9 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward.svg new file mode 100644 index 0000000..9679f4b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward.svg @@ -0,0 +1,12 @@ + + + + forward + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward_hover.png new file mode 100644 index 0000000..c6c914b Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward_hover.svg new file mode 100644 index 0000000..cf438f5 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/forward_hover.svg @@ -0,0 +1,12 @@ + + + + forward_hover + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_hover.png new file mode 100644 index 0000000..81afe8d Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_hover.svg new file mode 100644 index 0000000..88d93da --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_hover.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_off.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_off.png new file mode 100644 index 0000000..c572237 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_off.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_off.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_off.svg new file mode 100644 index 0000000..63429a1 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_off.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_on.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_on.png new file mode 100644 index 0000000..103d72c Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_on.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_on.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_on.svg new file mode 100644 index 0000000..83a4529 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/images/notes_on.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/page_notes.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/page_notes.css new file mode 100644 index 0000000..92a7aa7 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/page_notes/styles/page_notes.css @@ -0,0 +1,159 @@ +#pageNotesHost { + font-size: 12px; + color:#4a4a4a; + height: 100%; +} + +#pageNotesHostBtn a { + background: url('images/notes_on.png'); + background: url('images/notes_on.svg'),linear-gradient(transparent, transparent); +} + +.hashover #pageNotesHostBtn a:hover { + background: url('images/notes_hover.png'); + background: url('images/notes_hover.svg'),linear-gradient(transparent, transparent); +} + +#pageNotesHostBtn a.selected, #pageNotesHostBtn a.selected:hover { + background: url('images/notes_off.png'); + background: url('images/notes_off.svg'),linear-gradient(transparent, transparent); +} + +#footnotesButton { + background: url('images/footnotes.png') no-repeat center center; + background: url('images/footnotes.svg') no-repeat center center,linear-gradient(transparent, transparent); +} + +#footnotesButton:hover { + background: url('images/footnotes_hover.png') no-repeat center center; + background: url('images/footnotes_hover.svg') no-repeat center center,linear-gradient(transparent, transparent); +} + +#footnotesButton.sitemapToolbarButtonSelected, #footnotesButton.sitemapToolbarButtonSelected:hover { + background: url('images/footnotes_on.png') no-repeat center center; + background: url('images/footnotes_on.svg') no-repeat center center,linear-gradient(transparent, transparent); +} + +.nextPageButton { + background: url('images/forward.png') no-repeat center center; + background: url('images/forward.svg') no-repeat center center,linear-gradient(transparent, transparent); +} + +.nextPageButton:hover { + background: url('images/forward_hover.png') no-repeat center center; + background: url('images/forward_hover.svg') no-repeat center center,linear-gradient(transparent, transparent); +} + +.prevPageButton { + background: url('images/back.png') no-repeat center center; + background: url('images/back.svg') no-repeat center center,linear-gradient(transparent, transparent); +} + +.prevPageButton:hover { + background: url('images/back_hover.png') no-repeat center center; + background: url('images/back_hover.svg') no-repeat center center,linear-gradient(transparent, transparent); +} + +#pageNotesScrollContainer +{ + overflow: auto; + width: 100%; + /*height: 100%;*/ + -webkit-overflow-scrolling: touch; +} + +#pageNotesContainer +{ + /*padding: 10px 10px 10px 12px;*/ +} + +#pageNotesContent +{ + overflow: visible; +} + +.pageNoteContainer +{ + padding: 10px; +} + +.pageNoteName +{ + font-family: 'Trebuchet MS'; + font-size: 14px; + font-weight: bold; + margin-bottom: 5px; + /*text-decoration: underline;*/ + white-space: nowrap; +} + +.pageNote +{ + line-height: 21px; + /*margin-bottom: 20px;*/ +} + +.widgetNoteContainer { + padding: 10px; + border-bottom: 1px solid transparent; + border-top: 1px solid transparent; + cursor: pointer; +} + +.widgetNoteContainerSelected { + background-color: white; + border-bottom: 1px solid #c2c2c2; + border-top: 1px solid #c2c2c2; +} + +/*.widgetNoteContainer:hover { + background-color: white; + //border-bottom: 1px solid #c2c2c2; + //border-top: 1px solid #c2c2c2; +}*/ + +.widgetNoteFootnote { + display: inline-block; + /*vertical-align: top; + margin: 2px 5px 10px 0px; + padding: 1px 6px; + font-size: 10px; + color: #ffffff; + background-color: #0a6cd6;*/ + width: 13px; + height: 12px; + padding-top: 1px; + text-align: center; + background-color: #138CDD; + /*-moz-box-shadow: 1px 1px 3px #aaa; + -webkit-box-shadow: 1px 1px 3px #aaa; + box-shadow: 1px 1px 3px #aaa;*/ + font-size: 0px; + margin-right: 8px; +} + +div.annnoteline { + display: inline-block; + width: 9px; + height: 1px; + border-bottom: 1px solid white; + margin-top: 1px; +} + +.widgetNoteLabel { + display: inline-block; + vertical-align: top; + font-family: 'Trebuchet MS'; + font-size: 14px; + font-weight: bold; + margin-bottom: 5px; +} + +.noteLink { + text-decoration: inherit; + color: inherit; +} + +.noteLink:hover { + background-color: white; +} \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/recordplay/recordplay.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/recordplay/recordplay.js new file mode 100644 index 0000000..9d39458 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/recordplay/recordplay.js @@ -0,0 +1,479 @@ +// use this to isolate the scope +(function() { + + if(!$axure.document.configuration.showRecordPlay) { return; } + + $(window.document).ready(function() { + $axure.player.createPluginHost({ + id: 'recordPlayHost', + context: 'interface', + title: 'Recording' + }); + _generateRecordPlay(); + + $('#recordButton').click(_recordClick); + $('#playButton').click(_playClick); + $('#stopButton').click(_stopClick); + $('#deleteButton').click(_deleteClick); + + // bind to the page load + + $axure.page.bind('load.page_notes', function() { + + $.ajax({ + type: "POST", + url: '/RecordController/ListRecordings', + success: function(response) { + + $('#recordNameHeader').html(""); + $('#recordPlayContent').html(""); + //populate the notes + + axRecordingList = []; + + if(!eventList) { + recordingIndex = 0; + eventList = []; + recordingStartTime = 0; + bulkEventElement = ""; + lastBulkEvent = {}; + } + + for(var idx in response.recordingList) { + getOneRecording(response.recordingList[idx]); + } + + return false; + }, + // dataType: 'json' + }); + }); + }); + + var nameMatcher = new RegExp("^axRecording[0-9]{4}$", "i"); + var indexMatcher = new RegExp("[0-9]{4}$", "i"); + + var convertFromJson = function(oneRecording) { + + if(nameMatcher.exec(oneRecording.recordingName)) { + var myArray = indexMatcher.exec(oneRecording.recordingName); + var currIdx = parseInt(myArray); + if(recordingIndex < currIdx) { + recordingIndex = currIdx; + } + } + + + for(var idx in oneRecording.eventList) { + var thisEvent = oneRecording.eventList[idx]; + thisEvent.eventInfo = {}; + thisEvent.eventInfo.srcElement = thisEvent.elementID; + // TODO: check that this is correct. + + if(isBulkMouse(thisEvent.eventType)) { + thisEvent.eventInfo.mousePositions = []; + thisEvent.eventInfo.mousePositions = thisEvent.mousePositions; + thisEvent.timeStamp = thisEvent.mousePositions[0].timeStamp; + } + if(isSingleMouse(thisEvent.eventType)) { + thisEvent.eventInfo.cursor = {}; + thisEvent.eventInfo.cursor = thisEvent.cursor; + + } + if(thisEvent.eventType === 'OnDrag') { + thisEvent.eventInfo.dragInfo = {}; + thisEvent.eventInfo.dragInfo = thisEvent.dragInfo; + thisEvent.timeStamp = thisEvent.dragInfo.startTime; + } + + } + return oneRecording; + }; + + var getOneRecording = function(recordingItem) { + $.ajax({ + type: "POST", + url: '/RecordController/GetRecording', + data: { 'recordingId': recordingItem.recordingId }, + success: function(response) { + axRecordingList[axRecordingList.length] = convertFromJson(response); + var axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode'); + axRecordingContainer.append(_formAxRecordingBranch(response)); + _attachEventTriggers(response); + }, // dataType: 'json' + }); + + }; + + var axRecordingList; + var eventList; + var recordingIndex; + var recordingStartTime; + var recordingId; + var recordingName; + + + var leadingZeros = function(number, digits) { // because this thing doesn't have string.format (or does it?) + var recurseLeadingZeros = function(number, digitsLeft) { + if(digitsLeft > 0) { + return recurseLeadingZeros("0" + number, digitsLeft - 1); + } else { + return number; + } + }; + return recurseLeadingZeros(number, digits - String(number).length); + }; + + + var generateRecordingName = function() { + return "axRecording" + leadingZeros(recordingIndex, 4); + }; + + var isSingleMouse = function(eventType) { + return (eventType === 'OnClick' || + eventType === 'OnMouseUp' || + eventType === 'OnMouseDown' || + eventType === 'OnMouseOver' || + eventType === 'OnKeyUp' || + eventType === 'OnSelectedChange' || + eventType === 'OnSelect' || + eventType === 'OnUnselect' || + eventType === 'OnTextChange' || + eventType === 'OnMouseOut'); + }; + + var isBulkMouse = function(eventType) { + return (eventType === 'OnMouseHover' || + eventType === 'OnMouseMove'); + }; + + var bulkEventElement; + var lastBulkEvent; + + + $axure.messageCenter.addMessageListener(function(message, eventData) { + var lastEvent, lastBulkData; + + if(message === 'logEvent') { + + if(bulkEventElement !== eventData.elementID) { + lastBulkEvent = {}; + bulkEventElement = eventData.elementID; + } + + if(isBulkMouse(eventData.eventType)) { + lastEvent = lastBulkEvent[eventData.eventType]; + + if(lastEvent) { + // this is the second or third or whatever onmousemove in a row + lastBulkData = lastEvent.eventInfo.mousePositions; + lastBulkData[lastBulkData.length] = { + cursor: eventData.eventInfo.cursor, + timeStamp: eventData.timeStamp + }; + } else { + + eventData.eventInfo.mousePositions = []; + eventData.eventInfo.mousePositions[0] = { + cursor: eventData.eventInfo.cursor, + timeStamp: eventData.timeStamp + }; + eventList[eventList.length] = eventData; + lastBulkEvent[eventData.eventType] = eventData; + } + } else { + var z = true; + } + + if(isSingleMouse(eventData.eventType) ) { + eventList[eventList.length] = eventData; + lastBulkEvent = {}; + bulkEventElement = eventData.elementID; + } + + if(eventData.eventType === 'OnDrag') { + + lastEvent = lastBulkEvent[eventData.eventType]; + + if (lastEvent) { + // this is the second or third or whatever onmousemove in a row + lastBulkData = lastEvent.eventInfo.mousePositions; + lastBulkData[lastBulkData.length] = { + dragInfo: eventData.eventInfo.dragInfo, + timeStamp: eventData.timeStamp + }; + } else { + eventData.eventInfo.mousePositions = []; + eventData.eventInfo.mousePositions[0] = { + dragInfo: eventData.eventInfo.dragInfo, + timeStamp: eventData.timeStamp + }; + eventList[eventList.length] = eventData; + lastBulkEvent[eventData.eventType] = eventData; + } + } +// if(eventData.eventType === 'OnKeyUp') { +// transmissionFields.eventInfo = eventData.eventInfo; +// $.ajax({ +// type: "POST", +// url: '/RecordController/LogMouseClick', +// data: transmissionFields, +// }); +// } + } + + }); + + + var _recordClick = function(event) { + $('#recordButton').addClass('recordPlayButtonSelected'); + recordingIndex++; + // $axure.recording.startRecord(); + + recordingStartTime = new Date().getTime(); + + $.ajax({ + type: "POST", + url: '/RecordController/CreateRecording', + data: { + 'recordingName': generateRecordingName(), + timeStamp: recordingStartTime + }, + success: function(response) { + recordingId = response.recordingId; + recordingName = response.recordingName; + $axure.messageCenter.postMessage('startRecording', {'recordingId' : recordingId, 'recordingName': recordingName}); + }, + // dataType: 'json' + }); + + }; + + var _playClick = function(event) { + $('#playButton').addClass('recordPlayButtonSelected'); + }; + + var _stopClick = function(event) { + var axRecording, axObjectDictionary, axRecordingContainer, transmissionFields; + $('#sitemapLinksContainer').toggle(); + if($('#recordButton').is('.recordPlayButtonSelected')) { + $('#recordButton').removeClass('recordPlayButtonSelected'); + // $axure.recording.stopRecord(); + + axRecording = { + 'recordingId' : recordingId, + 'recordingName': recordingName, + 'eventList': eventList + }; + + axRecordingList[axRecordingList.length] = axRecording; + axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode'); + axRecordingContainer.append(_formAxRecordingBranch(axRecording)); + _attachEventTriggers(axRecording); + + lastBulkEvent = {}; + + var recordingStepList = []; + + for(var eventListIdx in eventList) { + var eventListItem = eventList[eventListIdx]; + + if(eventListItem.eventType === 'OnDrag') { + var lastDrag = eventListItem.eventInfo.mousePositions[eventListItem.eventInfo.mousePositions.length - 1].dragInfo; + eventListItem.eventInfo.dragInfo.currentX = lastDrag.currentX; + eventListItem.eventInfo.dragInfo.currentY = lastDrag.currentY; + eventListItem.eventInfo.dragInfo.currentTime = lastDrag.currentTime; + eventListItem.eventInfo.dragInfo.xDelta = eventListItem.eventInfo.dragInfo.currentX - eventListItem.eventInfo.dragInfo.lastX; + eventListItem.eventInfo.dragInfo.yDelta = eventListItem.eventInfo.dragInfo.currentY - eventListItem.eventInfo.dragInfo.lastY; + transmissionFields = {}; + transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']); + transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['dragInfo']); + transmissionFields.recordingId = recordingId; + } + + if(isSingleMouse(eventListItem.eventType)) { + transmissionFields = {}; + transmissionFields = tackItOn(transmissionFields, eventListItem, ['timeStamp', 'eventType', 'elementID', 'path']); + transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['cursor']); + transmissionFields.recordingId = recordingId; + } + + if(isBulkMouse(eventListItem.eventType)) { + transmissionFields = {}; + transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']); + transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['mousePositions']); + transmissionFields.recordingId = recordingId; + } + recordingStepList[recordingStepList.length] = transmissionFields; + } + + eventList = []; + $axure.messageCenter.postMessage('stopRecording', axObjectDictionary); + + var jsonText = { + 'recordingName': recordingName, + 'recordingId': recordingId, + recordingStart: new Date().getTime(), + recordingEnd: recordingStartTime, + 'eventList': recordingStepList + }; + + $.ajax({ + type: "POST", + url: '/RecordController/StopRecording', + data: { 'jsonText': JSON.stringify(jsonText) } + + }); + + } + + if($('#playButton').is('.recordPlayButtonSelected')) { + $('#playButton').removeClass('recordPlayButtonSelected'); + } + }; + + var _deleteClick = function(event) { + $.ajax({ + type: "POST", + url: '/RecordController/DeleteRecordings', + success: function(response) { + var x = true; + }, // dataType: 'json' + }); + }; + + var tackItOn = function(destination, source, fields) { + + for(var idx in fields) { + destination[fields[idx]] = source[fields[idx]]; + } + return destination; + }; + + var makeFirstLetterLower = function(eventName) { + return eventName.substr(0, 1).toLowerCase() + eventName.substr(1); + }; + + var _attachEventTriggers = function(axRecording) { + for(var eventIdx in axRecording.eventList) { + var eventObject = axRecording.eventList[eventIdx]; + var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp; + currentEvent = eventID; + $('#' + eventID).click(_triggerEvent(axRecording['recordingId'], eventObject.timeStamp)); + // $('#' + eventID).click(event.trigger); + } + }; + + var _formAxRecordingBranch = function(axRecording) { + var eventObject, eventID, RDOID; + var recordPlayUi = '"; + + return recordPlayUi; + }; + + var currentEvent = ''; + + var _triggerEvent = function(axRecording, timeStamp) { + // $axure.messageCenter.postMessage('triggerEvent', false); + + + for(var axRecordingIdx in axRecordingList) { + if(axRecordingList[axRecordingIdx].recordingId === axRecording) { + for(var eventIdx in axRecordingList[axRecordingIdx].eventList) { + if(axRecordingList[axRecordingIdx].eventList[eventIdx].timeStamp === timeStamp) { + + var thisEvent = axRecordingList[axRecordingIdx].eventList[eventIdx]; + // thisEvent.trigger(); + + var thisEventInfo, lowerEventType; + lowerEventType = thisEvent.eventType.toLowerCase(); + if(lowerEventType === 'onclick' || lowerEventType === 'onmousein') { + thisEventInfo = {}; + thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['cursor', 'timeStamp', 'srcElement']); + if(thisEvent.eventInfo.inputType) { + thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['inputType', 'inputValue']); + } + } else { + thisEventInfo = thisEvent.eventInfo; + } + + var thisParameters = { + 'element': thisEvent.elementID, + 'eventInfo': thisEventInfo, + // 'axEventObject': thisEvent.eventObject, + 'eventType': thisEvent.eventType + }; + + return function() { + $axure.messageCenter.postMessage('playEvent', thisParameters); + }; + + } + } + } + } + }; + + var _generateRecordPlay = function() { + var recordPlayUi = "
    "; + + recordPlayUi += "
    "; + + recordPlayUi += "
    "; + + recordPlayUi += ""; + recordPlayUi += ""; + recordPlayUi += ""; + recordPlayUi += ""; + recordPlayUi += "
    "; + + recordPlayUi += "
  • "; + recordPlayUi += "
    "; + + $('#recordPlayHost').html(recordPlayUi); + }; + +})(); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/recordplay/styles/recordplay.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/recordplay/styles/recordplay.css new file mode 100644 index 0000000..b8eb689 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/recordplay/styles/recordplay.css @@ -0,0 +1,89 @@ +#recordPlayHost { + font-size: 12px; + color:#333; + height: 100%; +} + + +#recordPlayContainer +{ + overflow: auto; + width: 100%; + height: 100%; + padding: 10px 10px 10px 10px; +} + +#recordPlayToolbar +{ + margin: 5px 5px 5px 5px; + height: 22px; +} + +#recordPlayToolbar .recordPlayButton +{ + float: left; + width: 22px; + height: 22px; + border: 1px solid transparent; +} + +#recordPlayToolbar .recordPlayButton:hover +{ + border: 1px solid rgb(0,157,217); + background-color : rgb(166,221,242); +} + +#recordPlayToolbar .recordPlayButton:active +{ + border: 1px solid rgb(0,157,217); + background-color : rgb(204,235,248); +} + +#recordPlayToolbar .recordPlayButtonSelected { + border: 1px solid rgb(0,157,217); + background-color : rgb(204,235,248); +} + +#recordButton { + background: url('../../sitemap/styles/images/233_hyperlink_16.png') no-repeat center center; +} + +#playButton { + background: url('../../sitemap/styles/images/225_responsive_16.png') no-repeat center center; +} + +#stopButton { + background: url('../../sitemap/styles/images/228_togglenotes_16.png') no-repeat center center; +} + +#deleteButton { + background: url('../../sitemap/styles/images/231_event_16.png') no-repeat center center; +} + +#recordNameHeader +{ + /* yeah??*/ + font-size: 13px; + font-weight: bold; + height: 23px; + white-space: nowrap; +} + +#recordPlayContent +{ + /* yeah??*/ + overflow: visible; +} + +.recordPlayName +{ + font-size: 12px; + margin-bottom: 5px; + text-decoration: underline; + white-space: nowrap; +} + +.recordPlay +{ + margin-bottom: 10px; +} \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/079_page_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/079_page_16.png new file mode 100644 index 0000000..2df8317 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/079_page_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/086_case_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/086_case_16.png new file mode 100644 index 0000000..6665ef4 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/086_case_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/225_responsive_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/225_responsive_16.png new file mode 100644 index 0000000..1ae8edd Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/225_responsive_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/228_togglenotes_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/228_togglenotes_16.png new file mode 100644 index 0000000..f0f5f0f Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/228_togglenotes_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/229_variables_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/229_variables_16.png new file mode 100644 index 0000000..0d21988 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/229_variables_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/231_event_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/231_event_16.png new file mode 100644 index 0000000..1d763a6 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/231_event_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/232_search_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/232_search_16.png new file mode 100644 index 0000000..4fdfe78 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/232_search_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/233_hyperlink_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/233_hyperlink_16.png new file mode 100644 index 0000000..bb8b282 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/233_hyperlink_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/235_folderclosed_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/235_folderclosed_16.png new file mode 100644 index 0000000..dd7d132 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/235_folderclosed_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/236_folderopen_16.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/236_folderopen_16.png new file mode 100644 index 0000000..6e46b58 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/236_folderopen_16.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/adaptivecheck.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/adaptivecheck.png new file mode 100644 index 0000000..18914ae Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/adaptivecheck.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/flow.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/flow.png new file mode 100644 index 0000000..54b9928 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/flow.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/flow.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/flow.svg new file mode 100644 index 0000000..228330a --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/flow.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_closed.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_closed.png new file mode 100644 index 0000000..bb122c4 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_closed.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_closed.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_closed.svg new file mode 100644 index 0000000..e73c069 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_closed.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_open.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_open.png new file mode 100644 index 0000000..3178cba Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_open.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_open.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_open.svg new file mode 100644 index 0000000..d921ccf --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/folder_open.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots.png new file mode 100644 index 0000000..19fd004 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots.svg new file mode 100644 index 0000000..f35fe35 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots.svg @@ -0,0 +1,12 @@ + + + + hotspots + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_hover.png new file mode 100644 index 0000000..c50636a Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_hover.svg new file mode 100644 index 0000000..45209d2 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_hover.svg @@ -0,0 +1,12 @@ + + + + hotspots_hover + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_on.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_on.png new file mode 100644 index 0000000..c50636a Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_on.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_on.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_on.svg new file mode 100644 index 0000000..73899eb --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/hotspots_on.svg @@ -0,0 +1,12 @@ + + + + hotspots_on + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/images.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/images.html new file mode 100644 index 0000000..e4cf5e8 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/images.html @@ -0,0 +1,22 @@ + + + + + + +

    + + + + + + + + + + + + +

    + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/minus.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/minus.gif new file mode 100644 index 0000000..3284f66 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/minus.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/note.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/note.png new file mode 100644 index 0000000..0a69ea7 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/note.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/note.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/note.svg new file mode 100644 index 0000000..ee5337f --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/note.svg @@ -0,0 +1,16 @@ + + + + Note Copy + Created with sketchtool. + + + + + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/page.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/page.png new file mode 100644 index 0000000..a1bc017 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/page.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/page.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/page.svg new file mode 100644 index 0000000..c690652 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/page.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/plus.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/plus.gif new file mode 100644 index 0000000..373f060 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/plus.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share.png new file mode 100644 index 0000000..88c7462 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share.svg new file mode 100644 index 0000000..c628e6b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share.svg @@ -0,0 +1,19 @@ + + + + share + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_hover.png new file mode 100644 index 0000000..d310eea Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_hover.svg new file mode 100644 index 0000000..e26aa4b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_hover.svg @@ -0,0 +1,19 @@ + + + + share_hover + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_on.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_on.png new file mode 100644 index 0000000..d310eea Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_on.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_on.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_on.svg new file mode 100644 index 0000000..9007227 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/share_on.svg @@ -0,0 +1,19 @@ + + + + share_on + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_hover.png new file mode 100644 index 0000000..3aa5667 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_hover.svg new file mode 100644 index 0000000..aa1ad02 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_hover.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_off.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_off.png new file mode 100644 index 0000000..02667b6 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_off.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_off.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_off.svg new file mode 100644 index 0000000..0d562f4 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_off.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_on.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_on.png new file mode 100644 index 0000000..a40bb35 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_on.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_on.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_on.svg new file mode 100644 index 0000000..f72c23b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/sitemap_on.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views.png new file mode 100644 index 0000000..8c22894 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views.svg new file mode 100644 index 0000000..04f1224 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views.svg @@ -0,0 +1,12 @@ + + + + views + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_hover.png new file mode 100644 index 0000000..a97d9a6 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_hover.svg new file mode 100644 index 0000000..d3bf5f5 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_hover.svg @@ -0,0 +1,12 @@ + + + + views_hover + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_on.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_on.png new file mode 100644 index 0000000..a97d9a6 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_on.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_on.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_on.svg new file mode 100644 index 0000000..d23cb1d --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/images/views_on.svg @@ -0,0 +1,12 @@ + + + + views_on + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/sitemap.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/sitemap.css new file mode 100644 index 0000000..d5401dd --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/plugins/sitemap/styles/sitemap.css @@ -0,0 +1,399 @@ + +#sitemapHost { + font-size: 12px; + color:#4a4a4a; + height: 100%; +} + +#sitemapHostBtn a { + background: url('images/sitemap_on.png'); + background: url('images/sitemap_on.svg'),linear-gradient(transparent, transparent); +} + +.hashover #sitemapHostBtn a:hover { + background: url('images/sitemap_hover.png'); + background: url('images/sitemap_hover.svg'),linear-gradient(transparent, transparent); +} + +#sitemapHostBtn a.selected, #sitemapHostBtn a.selected:hover { + background: url('images/sitemap_off.png'); + background: url('images/sitemap_off.svg'),linear-gradient(transparent, transparent); +} + +#sitemapHost .pageButtonHeader { + top: -27px; +} + +#sitemapTreeContainer { + overflow: auto; + width: 100%; + height: 100%; + -webkit-overflow-scrolling: touch; +} + +.sitemapTree { + margin: 0px 0px 10px 0px; + overflow:visible; +} + +.sitemapTree ul { + list-style-type: none; + margin: 0px 0px 0px 0px; + padding-left: 0px; +} + +.sitemapPlusMinusLink +{ +} + +.sitemapMinus +{ + vertical-align:middle; + background: url('images/minus.gif'); + background-repeat: no-repeat; + margin-right: 3px; + margin-bottom: 1px; + height:9px; + width:9px; + display:inline-block; +} + +.sitemapPlus +{ + vertical-align:middle; + background: url('images/plus.gif'); + background-repeat: no-repeat; + margin-right: 3px; + margin-bottom: 1px; + height:9px; + width:9px; + display:inline-block; +} + +.sitemapPageLink +{ + margin-left: 0px; +} + +.sitemapPageIcon +{ + margin: 0px 0px -3px 4px; + width: 16px; + height: 16px; + display: inline-block; + background: url('images/page.png') no-repeat center center; + background: url('images/page.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +.sitemapFlowIcon +{ + background: url('images/flow.png') no-repeat center center; + background: url('images/flow.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +.sitemapFolderIcon +{ + background: url('images/folder_closed.png') no-repeat center center; + background: url('images/folder_closed.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +.sitemapFolderOpenIcon +{ + background: url('images/folder_open.png') no-repeat center center; + background: url('images/folder_open.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +.sitemapPageName +{ + margin-left: 7px; +} + +.sitemapNode +{ + /*margin:4px 0px 4px 0px;*/ + white-space:nowrap; +} + +.sitemapPageLinkContainer { + /*display: inline-block;*/ + margin-left: 0px; + padding: 4px 0px 4px 0px; +} +/* +.sitemapNode div +{ + padding-top: 1px; + padding-bottom: 3px; + padding-left: 20px; + height: 14px; +} +*/ + +.sitemapExpandableNode +{ + margin-left: 0px; +} + +.sitemapHighlight +{ + /*display: inline-block;*/ + background-color : #C8E0F0; + font-weight: bold; +} + +.sitemapGreyedName +{ + color: #AAA; +} + + +.pluginNameHeader +{ + font-family: 'Trebuchet MS'; + font-size: 12px; + letter-spacing: 1px; + /*font-weight: bold;*/ + white-space: nowrap; + margin-bottom: 5px; +} + +.pageNameHeader +{ + font-family: 'Trebuchet MS'; + /*display: inline-block;*/ + /*float: left;*/ + font-size: 15px; + font-weight: bold; + /*height: 23px;*/ + padding-right: 77px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.pageButtonHeader +{ + float: right; + position: relative; + /*width: 72px;*/ + height: 24px; + top: -22px; + margin-bottom: -24px; +} + +.sitemapHeader +{ + padding-top: 27px; + border-bottom: 1px solid #d9d9d9; + min-width: 110px; +} + +.sitemapToolbar { + margin: 0px 5px 14px 12px; +} + +.sitemapToolbarButton +{ + float: left; + width: 22px; + height: 22px; + border: 1px solid transparent; +} + +#linksButton { + background: url('images/share.png') no-repeat center center; + background: url('images/share.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +#linksButton:hover { + background: url('images/share_hover.png') no-repeat center center; + background: url('images/share_hover.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +#linksButton.sitemapToolbarButtonSelected, .hashover #linksButton.sitemapToolbarButtonSelected:hover { + background: url('images/share_on.png') no-repeat center center; + background: url('images/share_on.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +#adaptiveButton { + background: url('images/views.png') no-repeat center center; + background: url('images/views.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +#adaptiveButton:hover { + background: url('images/views_hover.png') no-repeat center center; + background: url('images/views_hover.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +#adaptiveButton.sitemapToolbarButtonSelected, #adaptiveButton.sitemapToolbarButtonSelected:hover { + background: url('images/views_on.png') no-repeat center center; + background: url('images/views_on.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +#highlightInteractiveButton { + background: url('images/hotspots.png') no-repeat center center; + background: url('images/hotspots.svg') no-repeat center center, linear-gradient(transparent,transparent); + margin-top: 1px; +} + +#highlightInteractiveButton:hover { + background: url('images/hotspots_hover.png') no-repeat center center; + background: url('images/hotspots_hover.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +#highlightInteractiveButton.sitemapToolbarButtonSelected, #highlightInteractiveButton.sitemapToolbarButtonSelected:hover { + background: url('images/hotspots_on.png') no-repeat center center; + background: url('images/hotspots_on.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +/*#variablesButton { + background: url('images/229_variables_16.png') no-repeat center center; +}*/ + +#searchButton { + background: url('images/232_search_16.png') no-repeat center center; +} + +.sitemapLinkContainer +{ + margin-top: 8px; + padding-right: 5px; + /*font-size: 12px;*/ +} + +.sitemapLinkField +{ + width: 100%; + font-size: 12px; + margin-top: 3px; + padding: 5px; +} + +.sitemapRadioSelected { + font-weight: bold; +} + +.sitemapOptionContainer +{ + margin-top: 8px; + padding-right: 5px; + /*font-size: 12px;*/ +} + +#sitemapOptionsDiv +{ + margin-top: 10px; + /*margin-left: 16px;*/ +} + +#viewSelectDiv +{ + padding: 2px 0px 0px 0px; + /*margin-left: 5px;*/ +} + +#viewSelect +{ + width: 70%; +} + +.sitemapUrlOption +{ + padding-bottom: 8px; +} + +.optionLabel +{ + font-size: 12px; +} + +.sitemapPopupContainer +{ + display: none; + position: absolute; + background-color: #F4F4F4; + border: 1px solid #B9B9B9; + padding: 5px 5px 5px 5px; + margin: 5px 0px 0px 5px; + z-index: 1; +} + +#sitemapLinksContainer { + border-top: 1px solid #d9d9d9; + padding: 10px; + margin-left: 0px; + /*line-height: 18px;*/ +} + +#adaptiveViewsContainer { + border-top: 1px solid #d9d9d9; + padding: 10px; + margin-left: 0px; + line-height: 18px; +} + +.adaptiveViewOption +{ + padding: 2px; +} + +.adaptiveViewOption:hover +{ + background-color: rgb(204,235,248); + cursor: pointer; +} + +.currentAdaptiveView { + font-weight: bold; +} + +.adaptiveCheckboxDiv { + height: 15px; + width: 15px; + float: left; +} + +.checkedAdaptive { + background: url('images/adaptivecheck.png') no-repeat center center; +} + +/*#variablesContainer +{ + max-height: 350px; + overflow: auto; +}*/ + +/*#variablesClearLink +{ + color: #069; + left: 5px; +}*/ + +#searchDiv { + padding: 8px 12px 11px 12px; +} + +#searchBox { + width: 100%; + border: none; + border-top: 1px solid #d9d9d9; + /*border-bottom: 1px solid #d9d9d9;*/ + padding: 5px; + font-size: 12px; +} + +.searchBoxHint +{ + color: #8f949a; + /*font-style: italic;*/ +} + +#sitemapLinksPageName +{ + font-weight: bold; +} + +#sitemapOptionsHeader +{ + font-weight: bold; +} \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/Other.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/Other.html new file mode 100644 index 0000000..d0fa808 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/Other.html @@ -0,0 +1,35 @@ + + + + + +
    +
    +
    +
    + +
    + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/allow_access.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/allow_access.gif new file mode 100644 index 0000000..11a6086 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/allow_access.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure-chrome-extension.crx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure-chrome-extension.crx new file mode 100644 index 0000000..fde7743 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure-chrome-extension.crx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure_logo.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure_logo.gif new file mode 100644 index 0000000..0e2357c Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure_logo.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure_logo.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure_logo.png new file mode 100644 index 0000000..cd6f727 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/axure_logo.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/chrome.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/chrome.html new file mode 100644 index 0000000..9df5cd6 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/chrome.html @@ -0,0 +1,175 @@ + + + Install the Axure RP Chrome Extension + + + +
    +
    +
    + axure +
    +

    + AXURE RP EXTENSION
    + For Chrome

    +

    + Google Chrome requires an extension to view locally stored projects. Alternatively, + upload your RP file to AxShare or use a different + browser.

    +

    + VIEW LOCAL PROJECTS IN CHROME

    +
    +

    + 1. Install Extension from Chrome Store

    + +
    +
    +

    + 2. Open the Extensions Options

    + extensions +
    +
    +  
    +
    +

    + 3. Check "Allow access to file URLs"

    + allow access +
    +
    +

    + 4. Click the button below

    + +
    +
    +
    +

    + EXTENSION FAQ

    +

    + What is a Chrome Extension? Extensions are downloadable + plug-ins for Google Chrome that modify the browser
    + and allow you additional capabilities. +

    +

    + Why do I need to install the extension? Google requires + this extension to be installed to allow the viewing of local files in
    + Chrome +

    +

    + Why does this extension require a high access level? This + extension requires a high access level to allow the viewing of the file://
    + protocol. Axure does not track or access any of your information. +

    +

    + ROUND UP

    +

    + Chrome requires this extension to be installed to view local files.

    +

    + Need help or have any questions? Drop us a line at + support@axure.com. +

    +
    +
    +
    + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/extensions_menu.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/extensions_menu.gif new file mode 100644 index 0000000..1c8b1a1 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/extensions_menu.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/splitter.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/splitter.gif new file mode 100644 index 0000000..3f8bca9 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/splitter.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/splitter.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/splitter.png new file mode 100644 index 0000000..8e354e7 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/chrome/splitter.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/axure_rp_page.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/axure_rp_page.css new file mode 100644 index 0000000..6d69647 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/axure_rp_page.css @@ -0,0 +1,239 @@ +/* so the window resize fires within a frame in IE7 */ +html, body { + height: 100%; +} + +a { + color: inherit; +} + +p { + margin: 0px; + text-rendering: optimizeLegibility; + font-feature-settings: "kern" 1; + -webkit-font-feature-settings: "kern"; + -moz-font-feature-settings: "kern"; + -moz-font-feature-settings: "kern=1"; + font-kerning: normal; +} + +iframe { + background: #FFFFFF; +} + +/* to match IE with C, FF */ +input { + padding: 1px 0px 1px 0px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +textarea { + margin: 0px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +div.intcases { + font-family: arial; + font-size: 12px; + text-align:left; + border:1px solid #AAA; + background:#FFF none repeat scroll 0% 0%; + z-index:9999; + visibility:hidden; + position:absolute; + padding: 0px; + border-radius: 3px; + white-space: nowrap; +} + +div.intcaselink { + cursor: pointer; + padding: 3px 8px 3px 8px; + margin: 5px; + background:#EEE none repeat scroll 0% 0%; + border:1px solid #AAA; + border-radius: 3px; +} + +div.refpageimage { + position: absolute; + left: 0px; + top: 0px; + font-size: 0px; + width: 16px; + height: 16px; + cursor: pointer; + background-image: url(images/newwindow.gif); + background-repeat: no-repeat; +} + +div.annnoteimage { + position: absolute; + left: 0px; + top: 0px; + font-size: 0px; + /*width: 16px; + height: 12px;*/ + cursor: help; + /*background-image: url(images/note.gif);*/ + /*background-repeat: no-repeat;*/ + width: 13px; + height: 12px; + padding-top: 1px; + text-align: center; + background-color: #138CDD; + -moz-box-shadow: 1px 1px 3px #aaa; + -webkit-box-shadow: 1px 1px 3px #aaa; + box-shadow: 1px 1px 3px #aaa; +} + +div.annnoteline { + display: inline-block; + width: 9px; + height: 1px; + border-bottom: 1px solid white; + margin-top: 1px; +} + +div.annnotelabel { + position: absolute; + left: 0px; + top: 0px; + font-family: Helvetica,Arial; + font-size: 10px; + /*border: 1px solid rgb(166,221,242);*/ + cursor: help; + /*background:rgb(0,157,217) none repeat scroll 0% 0%;*/ + padding: 1px 3px 1px 3px; + white-space: nowrap; + color: white; + + background-color: #138CDD; + -moz-box-shadow: 1px 1px 3px #aaa; + -webkit-box-shadow: 1px 1px 3px #aaa; + box-shadow: 1px 1px 3px #aaa; +} + +.annotation { + font-size: 12px; + padding-left: 2px; + margin-bottom: 5px; +} + +.annotationName { + /*font-size: 13px; + font-weight: bold; + margin-bottom: 3px; + white-space: nowrap;*/ + + font-family: 'Trebuchet MS'; + font-size: 14px; + font-weight: bold; + margin-bottom: 5px; + white-space: nowrap; +} + +.annotationValue { + font-family: Arial, Helvetica, Sans-Serif; + font-size: 12px; + color: #4a4a4a; + line-height: 21px; + margin-bottom: 20px; +} + +.noteLink { + text-decoration: inherit; + color: inherit; +} + +.noteLink:hover { + background-color: white; +} + +/* this is a fix for the issue where dialogs jump around and takes the text-align from the body */ +.dialogFix { + position:absolute; + text-align:left; + border: 1px solid #8f949a; +} + + +@keyframes pulsate { + from { + box-shadow: 0 0 10px #15d6ba; + } + to { + box-shadow: 0 0 20px #15d6ba; + } +} + +@-webkit-keyframes pulsate { + from { + -webkit-box-shadow: 0 0 10px #15d6ba; + box-shadow: 0 0 10px #15d6ba; + } + to { + -webkit-box-shadow: 0 0 20px #15d6ba; + box-shadow: 0 0 20px #15d6ba; + } +} + +@-moz-keyframes pulsate { + from { + -moz-box-shadow: 0 0 10px #15d6ba; + box-shadow: 0 0 10px #15d6ba; + } + to { + -moz-box-shadow: 0 0 20px #15d6ba; + box-shadow: 0 0 20px #15d6ba; + } +} + +.legacyPulsateBorder { + /*border: 5px solid #15d6ba; + margin: -5px;*/ + -moz-box-shadow: 0 0 10px 3px #15d6ba; + box-shadow: 0 0 10px 3px #15d6ba; +} + +.pulsateBorder { + animation-name: pulsate; + animation-timing-function: ease-in-out; + animation-duration: 0.9s; + animation-iteration-count: infinite; + animation-direction: alternate; + + -webkit-animation-name: pulsate; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-duration: 0.9s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-direction: alternate; + + -moz-animation-name: pulsate; + -moz-animation-timing-function: ease-in-out; + -moz-animation-duration: 0.9s; + -moz-animation-iteration-count: infinite; + -moz-animation-direction: alternate; +} + +.ax_default_hidden, .ax_default_unplaced{ + display: none; + visibility: hidden; +} + +.widgetNoteSelected { + -moz-box-shadow: 0 0 10px 3px #138CDD; + box-shadow: 0 0 10px 3px #138CDD; + /*-moz-box-shadow: 0 0 20px #3915d6; + box-shadow: 0 0 20px #3915d6;*/ + /*border: 3px solid #3915d6;*/ + /*margin: -3px;*/ +} + + +.singleImg { + display: none; + visibility: hidden; +} \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/default.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/default.css new file mode 100644 index 0000000..1c8fdc2 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/default.css @@ -0,0 +1,207 @@ +body { + font-family : Arial, Helvetica, Sans-Serif; + background-color: #8f949a; + overflow:hidden; +} +a { + cursor: pointer; +} + +input[type="radio"], input[type="checkbox"] { + margin: 0px 9px 0px 0px; + vertical-align: bottom; +} + +input { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#maximizePanelContainer { + font-size: 4px; + position:absolute; + left: 0px; + top: 0px; + width: 55px; + height: 20px; + overflow: visible; + z-index: 1000; +} +#maximizePanelOver { + position: absolute; + left: 0px; + top: 0px; + width: 55px; + height: 20px; +} +.maximizePanel { + position: absolute; + left: 0px; + top: 0px; + width: 55px; + height: 20px; + background: #a2a2a2 url('../images/expand.png') no-repeat center center; + background: url('../images/expand.svg') no-repeat center center, linear-gradient(rgba(200,200,200,.5),rgba(200,200,200,.5)); + cursor: pointer; +} + +#interfaceControlFrameMinimizeContainer { + position:absolute; + top: 0px; + left: 0px; + font-size: 2px; /*for IE*/ + text-align: right; + z-index: 100; + height: 20px; + width: 55px; + background-color: #62666b; +} +#interfaceControlFrameMinimizeContainer a { + display: inline-block; + width: 55px; + height: 20px; + font-size: 2px; + background: url('../images/close.png') no-repeat center center; + background: url('../images/close.svg') no-repeat center center, linear-gradient(transparent,transparent); + text-decoration: none; +} + +.hashover #interfaceControlFrameMinimizeContainer a:hover { + background: url('../images/close_hover.png') no-repeat center center; + background: url('../images/close_hover.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +#interfaceControlFrame { + margin: 0px 0px 0px 55px; +} + +#interfaceControlFrameCloseContainer { + /*display: none;*/ + position:absolute; + bottom: 0px; + left: 0px; + font-size: 9px; + font-family: 'Trebuchet MS'; + font-weight: bold; + letter-spacing: 1px; + z-index: 100; + width: 55px; + background-color: #62666b; + text-align: center; +} +#interfaceControlFrameCloseContainer a { + display: inline-block; + width: 55px; + color: #ffffff; + padding: 5px 0px; +} + +#interfaceControlFrameHeader li a { + display: block; + width: 54px; + height: 78px; + text-align: center; + padding-top: 50px; + outline: none; + margin-right: 1px; + text-decoration: none; + color: #ffffff; + white-space: nowrap; + background-color: transparent; + background-repeat: no-repeat; + background-position: 50% 17px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + border-left: 4px solid transparent; + border-right: 4px solid transparent; +} + +.hashover #interfaceControlFrameHeader li a:hover { + background-color: transparent; + background-repeat: no-repeat; + background-position: 50% 17px; + color: #c2c2c2; +} + +#interfaceControlFrameHeader li a.selected, #interfaceControlFrameHeader li a.selected:hover { + background-color: #f5f5f5; + background-repeat: no-repeat; + background-position: 50% 17px; + color: #62666b; + border-left: 5px solid #138CDD; +} + +#interfaceControlFrameHeaderContainer { + float: left; + overflow: visible; + width: 55px; + margin-left: -55px; + margin-top: 20px; +} + +#interfaceControlFrameHeader { + position: relative; + list-style: none; + font-size: 8px; + z-index: 50; + font-family: 'Trebuchet MS'; + font-weight: bold; + letter-spacing: 1px; +} + +#interfaceControlFrameContainer { + float: right; + background-color: #f5f5f5; + overflow: hidden; + width: 100%; +} + +#interfaceControlFrameLogoContainer { + background-color: White; + padding: 20px 10px 10px 10px; + overflow: hidden; +} + +#interfaceControlFrameLogoImageContainer { + text-align: center; +} + +#interfaceControlFrameLogoCaptionContainer { + text-align: center; + margin: 5px 10px 0px 10px; + font-size: 12px; + color: #4a4a4a; +} + +#logoImage { + width: 100%; +} + +.emptyStateContainer { + text-align: center; + padding: 0px 10px; + margin-top: 32px +} + +.emptyStateTitle { + margin: 0px 0px 9px 0px; + font-weight: bold; +} + +.emptyStateContent { + line-height: 16px; +} + +.dottedDivider { + height: 2px; + margin: 15px 0px 15px 0px; + background: url('../images/divider.png') no-repeat center center; + background: url('../images/divider.svg') no-repeat center center, linear-gradient(transparent,transparent); +} + +.nondottedDivider { + height: 2px; + margin: 9px 0px 9px 0px; +} \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/images.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/images.html new file mode 100644 index 0000000..335d9c9 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/images.html @@ -0,0 +1,25 @@ + + + + + + +

    + + + + + + + + + + + + + + + +

    + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/newwindow.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/newwindow.gif new file mode 100644 index 0000000..7b14cb0 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/newwindow.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/note.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/note.gif new file mode 100644 index 0000000..a8c2762 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/note.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000..5b5dab2 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..ad3d634 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_65_ffffff_1x400.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000..42ccba2 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_dadada_1x400.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..5a46b47 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..86c2baa Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_ffffff_1x400.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_ffffff_1x400.png new file mode 100644 index 0000000..e65ca12 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_glass_75_ffffff_1x400.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..7c9fa6c Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png new file mode 100644 index 0000000..0e05810 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_222222_256x240.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..b273ff1 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_222222_256x240.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_2e83ff_256x240.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..09d1cdc Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_2e83ff_256x240.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_454545_256x240.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..59bd45b Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_454545_256x240.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_888888_256x240.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..6d02426 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_888888_256x240.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_cd0a0a_256x240.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..2ab019b Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/images/ui-icons_cd0a0a_256x240.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/jquery-ui-themes.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/jquery-ui-themes.css new file mode 100644 index 0000000..8afb633 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/jquery-ui-themes.css @@ -0,0 +1,412 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +*/ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }/* Accordion +----------------------------------*/ +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } +.ui-accordion .ui-accordion-content-active { display: block; } + +/* Datepicker +----------------------------------*/ +.ui-datepicker { width: 17em; padding: .2em .2em 0; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +} + +/* Dialog +----------------------------------*/ +.ui-dialog { position: relative; padding: 0px; width: 300px;} +.ui-dialog .ui-dialog-titlebar { padding: .3em .3em .1em .8em; font-size:.7em; position: relative; background-image: none; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; + font-family: 'Trebuchet MS'; + font-size: 15px; + font-weight: normal; + color: #ffffff;} +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .1em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { /*padding: 0;*/ } +.ui-dialog .ui-dialog-content { border: 0; padding: .5em .2em; background: none; overflow: auto; zoom: 1; background-color: #ffffff;} +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; background-color: #8f949a; border-bottom: 1px solid #d9d9d9;} + +/* Progressbar +----------------------------------*/ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable +----------------------------------*/ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider +----------------------------------*/ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs +----------------------------------*/ +.ui-tabs { padding: .2em; zoom: 1; } +.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } +.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://jqueryui.com/themeroller/ +*/ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_glass_75_ffffff_1x400.png)/*{bgImgUrlContent}*/ 0/*{bgContentXPos}*/ 0/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } +.ui-widget-content a { /*color: #222222*//*{fcContent}*/; } +.ui-widget-header { border: none /*1px solid #aaaaaa*//*{borderColorHeader}*/; background: #D3D3D3/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 0/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #000000/*{fcHeader}*/; font-weight: bold; } +.ui-widget-header a { color: #222222/*{fcHeader}*/; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default { border: none /*1px solid #d3d3d3*//*{borderColorDefault}*/; /*background: #e6e6e6*//*{bgColorDefault}*/ /*url(images/ui-bg_glass_75_e6e6e6_1x400.png)*//*{bgImgUrlDefault}*/ /*0*//*{bgDefaultXPos}*/ /*50%*//*{bgDefaultYPos}*/ /*repeat-x*//*{bgDefaultRepeat}*/ font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; outline: none; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; outline: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: none /*1px solid #999999*//*{borderColorHover}*/; /*background: #dadada*//*{bgColorHover}*/ /*url(images/ui-bg_glass_75_dadada_1x400.png)*//*{bgImgUrlHover}*/ /*0*//*{bgHoverXPos}*/ /*50%*//*{bgHoverYPos}*/ /*repeat-x*//*{bgHoverRepeat}*/ font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; outline: none; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; outline: none; } +.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 0/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; outline: none; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; outline: none; text-decoration: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 0/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } +.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_inset-soft_95_fef1ec_1x100.png)/*{bgImgUrlError}*/ 0/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } +.ui-state-error a, .ui-widget-content .ui-state-error a { color: #363636/*{fcError}*/; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHeader}*/; } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHover}*/; } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; } +.ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; } +.ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; } +.ui-corner-top { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; } +.ui-corner-right { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; } +.ui-corner-left { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; } +.ui-corner-all { -moz-border-radius: 0px/*{cornerRadius}*/; -webkit-border-radius: 0px/*{cornerRadius}*/; } + +/* Overlays */ +.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ none/*{bgImgUrlOverlay}*/ 0/*{bgOverlayXPos}*/ 0/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } +.ui-widget-shadow { margin: -4px/*{offsetTopShadow}*/ 0 0 -4px/*{offsetLeftShadow}*/; padding: 4px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ none/*{bgImgUrlShadow}*/ 0/*{bgShadowXPos}*/ 0/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .35;filter:Alpha(Opacity=35)/*{opacityShadow}*/; -moz-border-radius: 4px/*{cornerRadiusShadow}*/; -webkit-border-radius: 4px/*{cornerRadiusShadow}*/; } \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/reset.css b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/reset.css new file mode 100644 index 0000000..01a4271 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/css/reset.css @@ -0,0 +1,24 @@ +html,body,div,span, +applet,object,iframe, +h1,h2,h3,h4,h5,h6,p,blockquote,pre, +a,abbr,acronym,address,big,cite,code, +del,dfn,em,font,img,ins,kbd,q,s,samp, +small,strike,strong,sub,sup,tt,var, +dd,dl,dt,li,ol,ul, +fieldset,form,label,legend, +table,caption,tbody,tfoot,thead,tr,th,td { + margin: 0; + padding: 0; + border: 0; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +ol,ul { + list-style: none; +} +q:before,q:after, +blockquote:before,blockquote:after { + content: ""; +} \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/expand.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/expand.html new file mode 100644 index 0000000..21df392 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/expand.html @@ -0,0 +1,60 @@ + + + + + + + + + + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/259_close_12rollover1.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/259_close_12rollover1.png new file mode 100644 index 0000000..a19bf8a Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/259_close_12rollover1.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/259_close_12rollover2.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/259_close_12rollover2.png new file mode 100644 index 0000000..2f57c5d Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/259_close_12rollover2.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/260_collapse_12rollover1.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/260_collapse_12rollover1.png new file mode 100644 index 0000000..426621f Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/260_collapse_12rollover1.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/260_collapse_12rollover2.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/260_collapse_12rollover2.png new file mode 100644 index 0000000..8450723 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/260_collapse_12rollover2.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/261_expand_12rollover1.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/261_expand_12rollover1.png new file mode 100644 index 0000000..5c7ec92 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/261_expand_12rollover1.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/261_expand_12rollover2.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/261_expand_12rollover2.png new file mode 100644 index 0000000..81ce138 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/261_expand_12rollover2.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close.png new file mode 100644 index 0000000..b34c453 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close.svg new file mode 100644 index 0000000..3c3231b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close_hover.png new file mode 100644 index 0000000..dcbd3b6 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close_hover.svg new file mode 100644 index 0000000..c6aac2a --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/close_hover.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/divider.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/divider.png new file mode 100644 index 0000000..f7b738a Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/divider.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/divider.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/divider.svg new file mode 100644 index 0000000..767941e --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/divider.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand.png new file mode 100644 index 0000000..31f8f45 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand.svg new file mode 100644 index 0000000..a6a8692 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand_hover.png b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand_hover.png new file mode 100644 index 0000000..4fdca83 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand_hover.png differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand_hover.svg b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand_hover.svg new file mode 100644 index 0000000..958b481 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/expand_hover.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/images.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/images.html new file mode 100644 index 0000000..6b26a37 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/images.html @@ -0,0 +1,17 @@ + + + + + + +

    + + + + + + + +

    + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/transparent.gif b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/transparent.gif new file mode 100644 index 0000000..35d42e8 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/images/transparent.gif differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/reload.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/reload.html new file mode 100644 index 0000000..5f99f0b --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/reload.html @@ -0,0 +1,24 @@ + + + + + + + + + + \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/jquery-1.7.1.min.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/jquery-1.7.1.min.js new file mode 100644 index 0000000..198b3ff --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/jquery-1.7.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
    a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
    "+""+"
    ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
    t
    ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
    ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/jquery-ui-1.8.10.custom.min.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/jquery-ui-1.8.10.custom.min.js new file mode 100644 index 0000000..a7e1293 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/jquery-ui-1.8.10.custom.min.js @@ -0,0 +1,233 @@ +/*! + * jQuery UI 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.10",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, +NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, +"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); +if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, +"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, +d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); +c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a); +return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent", +true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, +left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= +k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= +m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= +d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= +a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), +g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&& +this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== +"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"? +0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), +10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor== +Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop(): +f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY; +if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/ +b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})}, +stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!= +document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; +f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing"); +this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top= +null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+ +this.size.height,k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b, +a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a, +c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize, +originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.10"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize= +b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width", +"height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})}; +if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height- +g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width, +height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d= +e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options, +d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper? +d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height= +a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&& +/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable"); +b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/ +(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Dialog 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&& +c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
    ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex", +-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", +"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose= +b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&& +a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index"); +isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ); +d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}}); +c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
    ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f, +h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g= +d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize, +position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f, +h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length=== +1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in +l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled"); +break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e= +this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&& +this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.10",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length=== +0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent", +border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); +return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); +else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), +b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, +a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== +e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h= 5 && + location.href.indexOf('file://') >= 0; + } + + var safariRegex = /Safari\/([0-9]+)/g; + var safariMatch = safariRegex.exec(useragent); + SAFARI = Boolean(safariMatch) && !CHROME; //because chrome also inserts safari string into user agent + + var webkitRegex = /WebKit\//g ; + WEBKIT = Boolean(webkitRegex.exec(useragent)); + + FIREFOX = useragent.toLowerCase().indexOf('firefox') > -1; + + var macRegex = /Mac/g ; + OS_MAC = Boolean(macRegex.exec(window.navigator.platform)); + + IOS = useragent.match(/iPhone/i) || useragent.match(/iPad/i) || useragent.match(/iPod/i); + ANDROID = useragent.match(/Android/i); + + MOBILE_DEVICE = ANDROID || IOS + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Tablet PC/i) + || navigator.userAgent.match(/Windows Phone/i); + + if($.browser) { + if($.browser.msie) IE_10_AND_BELOW = true; + else IE_11_AND_ABOVE = useragent.toLowerCase().indexOf('trident') > -1; + + BROWSER_VERSION = $.browser.version; + } + + IE = IE_10_AND_BELOW || IE_11_AND_ABOVE; + + //Used by sitemap and variables.js getLinkUrl functions so that they know + //whether to embed global variables in URL as query string or hash string + //_shouldSendVars persists the value for sitemap instead of re-checking every time + var _shouldSendVars; + var _shouldSendVarsToServer = function(url) { + if(typeof _shouldSendVars != 'undefined') { + return _shouldSendVars; + } + + if(SAFARI || (IE_10_AND_BELOW && BROWSER_VERSION < 10)) { + var urlToCheck = typeof url != 'undefined' ? url : window.location.href; + var serverRegex = /http:\/\/127\.0\.0\.1:[0-9]{5}/g; + var serverMatch = serverRegex.exec(urlToCheck); + var previewRegex = /[0-9]{2}\.[0-9]{2}\.[0-9]{2}/g; + var previewMatch = previewRegex.exec(urlToCheck); + if(Boolean(serverMatch) && Boolean(previewMatch)) { + _shouldSendVars = true; + return _shouldSendVars; + } + } + + _shouldSendVars = false; + return _shouldSendVars; + }; + $axure.shouldSendVarsToServer = _shouldSendVarsToServer; +})(); + +(function() { + var _topMessageCenter; + var _messageCenter = {}; + var _listeners = []; + var _stateListeners = []; + var _state = {}; + var _eventObject = null; + + var _queuedMessages = []; + var _initialized = false; + + // this is for the non Chrome 5 local scenarios. The "top" message center will dispatch to all the bottom ones + var _childrenMessageCenters = []; + + // create $axure if it hasn't been created + if (!window.$axure) window.$axure = function() {}; + $axure.messageCenter = _messageCenter; + + // isolate scope, and initialize _topMessageCenter. + (function() { + if (!CHROME_5_LOCAL) { + var topAxureWindow = window; + try { + while(topAxureWindow.parent && topAxureWindow.parent !== topAxureWindow + && topAxureWindow.parent.$axure) topAxureWindow = topAxureWindow.parent; + } catch(e) {} + _topMessageCenter = topAxureWindow.$axure.messageCenter; + } + })(); + + $(window.document).ready(function() { + if (CHROME_5_LOCAL) { + $('body').append("" + + ""); + + _eventObject = window.document.createEvent('Event'); + _eventObject.initEvent('axureMessageSenderEvent', true, true); + + $('#axureEventReceiverDiv').bind('axureMessageReceiverEvent', function () { + var request = JSON.parse($(this).text()); + _handleRequest(request); + }); + } else { + if (_topMessageCenter != _messageCenter) { + _topMessageCenter.addChildMessageCenter(_messageCenter); + console.log('adding from ' + window.location.toString()); + } + } + }); + + var _handleRequest = function (request) { + // route the request to all the listeners + for(var i = 0; i < _listeners.length; i++) _listeners[i](request.message, request.data); + + // now handle the queued messages if we're initializing + if (request.message == 'initialize') { + _initialized = true; + // send all the queued messages and return + for (var i = 0; i < _queuedMessages.length; i++) { + var qRequest = _queuedMessages[i]; + _messageCenter.postMessage(qRequest.message, qRequest.data); + } + _queuedMessages = []; + } + + // and then handle the set state messages, if necessary + if (request.message == 'setState') { + _state[request.data.key] = request.data.value; + for (var i = 0; i < _stateListeners.length; i++) { + var keyListener = _stateListeners[i]; + // if thep passed a null or empty value, always post the message + if (!keyListener.key || keyListener.key == request.data.key) { + keyListener.listener(request.data.key, request.data.value); + } + } + } + + }; + + // ----------------------------------------------------------------------------------------- + // This method allows for dispatching messages in the non-chromelocal scenario. + // Each child calls this on _topMessageCenter + // ----------------------------------------------------------------------------------------- + _messageCenter.addChildMessageCenter = function(messageCenter) { + _childrenMessageCenters[_childrenMessageCenters.length] = messageCenter; + }; + + // ----------------------------------------------------------------------------------------- + // This method allows for dispatching messages in the non-chromelocal scenario. + // Each child calls this on _topMessageCenter + // ----------------------------------------------------------------------------------------- + _messageCenter.dispatchMessage = function(message, data) { + _handleRequest({ + message: message, + data: data + }); + }; + + // ----------------------------------------------------------------------------------------- + // ----------------------------------------------------------------------------------------- + _messageCenter.dispatchMessageRecursively = function(message, data) { + console.log("dispatched to " + window.location.toString()); + + // dispatch to the top center first + _messageCenter.dispatchMessage(message, data); + + $('iframe').each(function(index, frame) { + //try,catch to handle permissions error in FF when loading pages from another domain + try { + if (frame.contentWindow.$axure && frame.contentWindow.$axure.messageCenter) { + frame.contentWindow.$axure.messageCenter.dispatchMessageRecursively(message, data); + } + }catch(e) {} + }); + }; + + var _combineEventMessages = false; + var _compositeEventMessageData = []; + _messageCenter.startCombineEventMessages = function() { + _combineEventMessages = true; + } + + _messageCenter.endCombineEventMessages = function () { + _messageCenter.sendCompositeEventMessage(); + _combineEventMessages = false; + } + + _messageCenter.sendCompositeEventMessage = function () { + _messageCenter.postMessage('axCompositeEventMessage', _compositeEventMessageData); + _compositeEventMessageData = []; + } + + _messageCenter.postMessage = function (message, data) { + if(_combineEventMessages) { + if(message == 'axEvent' || message == 'axCase' || message == 'axAction' || message == 'axEventComplete') { + _compositeEventMessageData.push({ 'message': message, 'data': data }); + if(_compositeEventMessageData.length >= 10) _messageCenter.sendCompositeEventMessage(); + return; + } + } + + if(!CHROME_5_LOCAL) { + _topMessageCenter.dispatchMessageRecursively(message, data); + } else { + var request = { + message: message, + data: data + }; + + if(_initialized) { + var senderDiv = window.document.getElementById('axureEventSenderDiv'); + var messageText = JSON.stringify(request); + // console.log('sending event: ' + messageText); + senderDiv.innerText = messageText; + senderDiv.dispatchEvent(_eventObject); + // console.log('event sent'); + } else { + _queuedMessages[_queuedMessages.length] = request; + } + } + }; + + _messageCenter.setState = function(key, value) { + var data = { + key: key, + value: value + }; + _messageCenter.postMessage('setState', data); + }; + + _messageCenter.getState = function(key) { + return _state[key]; + }; + + _messageCenter.addMessageListener = function(listener) { + _listeners[_listeners.length] = listener; + }; + + _messageCenter.addStateListener = function(key, listener) { + _stateListeners[_stateListeners.length] = { + key: key, + listener: listener + }; + }; + +})(); diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/player/axplayer.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/player/axplayer.js new file mode 100644 index 0000000..f9cb965 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/player/axplayer.js @@ -0,0 +1,206 @@ +if (!window.$axure) window.$axure = function () { }; +if (typeof console == 'undefined') console = { + log: function () { } +}; +if(window._axUtils) $axure.utils = _axUtils; + +$axure.loadDocument = function(document) { + $axure.document = document; +}; + +function setUpController() { + + //$axure.utils = _axUtils; + + var _page = {}; + $axure.page = _page; + + $axure.utils.makeBindable(_page, ['load']); + + var _player = function() { + }; + $axure.player = _player; + + //----------------------------------------- + //Global Var array, getLinkUrl function and setGlobalVar listener are + //for use in setting global vars in page url string when clicking a + //page in the sitemap + //----------------------------------------- + var _globalVars = {}; + + //----------------------------------------- + //Used by getLinkUrl below to check if local server is running + //in order to send back the global variables as a query string + //in the page url + //----------------------------------------- + var _shouldSendVarsToServer = function () { + //If exception occurs (due to page in content frame being from a different domain, etc) + //then run the check without the url (which will end up checking against sitemap url) + try { + var mainFrame = document.getElementById("mainFrame"); + return $axure.shouldSendVarsToServer(mainFrame.contentWindow.location.href); + } catch (e) { + return $axure.shouldSendVarsToServer(); + } + }; + + var _getLinkUrl = function (baseUrl) { + var toAdd = ''; + for(var globalVarName in _globalVars) { + var val = _globalVars[globalVarName]; + if(val != null) { + if(toAdd.length > 0) toAdd += '&'; + toAdd += globalVarName + '=' + encodeURIComponent(val); + } + } + return toAdd.length > 0 ? baseUrl + (_shouldSendVarsToServer() ? '?' : '#') + toAdd + "&CSUM=1" : baseUrl; + }; + $axure.getLinkUrlWithVars = _getLinkUrl; + + $axure.messageCenter.addMessageListener(function(message, data) { + if (message == 'setGlobalVar'){ + _globalVars[data.globalVarName] = data.globalVarValue; + } + }); + + $axure.messageCenter.addStateListener('page.data', function (key, value) { + for (var subKey in value) { + _page[subKey] = value[subKey]; + } + $axure.page.triggerEvent('load'); + }); + + // --------------------------------------------- + // Navigates the main frame (setting the currently visible page). If the link is relative, + // this method should test if it is actually a axure rp page being loaded and properly set + // up all the controller for the page if it is + // --------------------------------------------- + _page.navigate = function (url, includeVariables) { + var mainFrame = document.getElementById("mainFrame"); + //var mainFrame = window.parent.mainFrame; + // if this is a relative url... + var urlToLoad; + if (url.indexOf(':') < 0 || url[0] == '/') { + var winHref = window.location.href; + var page = winHref.substring(0, winHref.lastIndexOf('/') + 1) + url; + urlToLoad = page; + } else { + urlToLoad = url; + } + if (!includeVariables) { + mainFrame.contentWindow.location.href = urlToLoad; + return; + } + var urlWithVars = $axure.getLinkUrlWithVars(urlToLoad); + var currentData = $axure.messageCenter.getState('page.data'); + var currentUrl = currentData && currentData.location; + if(currentUrl && currentUrl.indexOf('#') != -1) currentUrl = currentUrl.substring(0, currentUrl.indexOf('#')) + + // this is so we can make sure the current frame reloads if the variables have changed + // by default, if the location is the same but the hash code is different, the browser will not + // trigger a reload + mainFrame.contentWindow.location.href = + currentUrl && urlToLoad.toLowerCase() != currentUrl.toLowerCase() + ? urlWithVars + : 'resources/reload.html#' + encodeURI(urlWithVars); + + }; + + var pluginIds = []; + var plugins = {}; + var currentVisibleHostId = null; + // --------------------------------------------- + // Adds a tool box frame from a url to the interface. This is useful for loading plugins + // settings is an object that supports the following properties: + // - id : the id of the element for the plugin + // - context : the context to create the plugin host for + // - title : the user-visible caption for the plugin + // --------------------------------------------- + _player.createPluginHost = function (settings) { + // right now we only understand an interface context + if (!(!settings.context || settings.context === 'interface')) { + throw ('unknown context type'); + } + if (!settings.id) throw ('each plugin host needs an id'); + + var host = $('
    ') + .appendTo('#interfaceControlFrameHostContainer'); + + host.hide(); + + var headerLink = $('' + settings.title.toUpperCase() + ''); + + headerLink + .click($axure.utils.curry(interfaceControlHeaderButton_click, settings.id)).wrap('
  • '); + + if((settings.id == 'feedbackHost' || settings.id == 'feedbackContainer') && pluginIds[pluginIds.length - 1] == 'debugHost') headerLink.parent().insertBefore('#debugHostBtn'); + else headerLink.parent().appendTo('#interfaceControlFrameHeader'); + + pluginIds[pluginIds.length] = settings.id; + plugins[settings.id] = settings; + + $(document).trigger('pluginCreated', [settings.gid]); + }; + + // private methods + var interfaceControlHeaderButton_click = function (id) { + var clickedPlugin = $('#interfaceControlFrameHeader a[pluginId=' + id + ']'); + if(clickedPlugin.hasClass('selected')) { + clickedPlugin.removeClass('selected'); + $('#' + id).hide(); + _player.collapseToBar(); + + $(document).trigger('pluginShown',['']); + } else { + $('#interfaceControlFrameHeader a').removeClass('selected'); + clickedPlugin.addClass('selected'); + + $('#' + currentVisibleHostId).hide(); + $('#' + id).show(); + currentVisibleHostId = id; + _player.expandFromBar(); + + $(document).trigger('pluginShown', [plugins[id].gid]); + } + + $(document).trigger('ContainerHeightChange'); + }; + + $axure.player.showPlugin = function(gid) { + for(var id in plugins) { + if(plugins[id].gid == gid) { + $('a[pluginId="' + id + '"]').click(); + break; + } + } + }; +} + +function setUpDocumentStateManager() { + var mgr = $axure.prototype.documentStateManager = {}; + $axure.utils.makeBindable(mgr, ['globalVariableChanged']); + + mgr.globalVariableValues = {}; + + mgr.setGlobalVariable = function(varname, value, source) { + var arg = {}; + arg.variableName = varname; + arg.newValue = value; + arg.oldValue = this.getGlobalVariable(varname); + arg.source = source; + + mgr.globalVariableValues[varname] = value; + this.triggerEvent('globalVariableChanged', arg); + }; + + mgr.getGlobalVariable = function(varname) { + return mgr.globalVariableValues[varname]; + }; +} + + +function setUpPageStateManager() { + var mgr = $axure.prototype.pageStateManager = {}; + + mgr.panelToStateIds = {}; +} diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/player/splitter.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/player/splitter.js new file mode 100644 index 0000000..9bda98a --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/player/splitter.js @@ -0,0 +1,218 @@ +/* +* jQuery.splitter.js - two-pane splitter window plugin +* +* version 1.51 (2009/01/09) +* +* Dual licensed under the MIT and GPL licenses: +* http://www.opensource.org/licenses/mit-license.php +* http://www.gnu.org/licenses/gpl.html +*/ + +/** +* The splitter() plugin implements a two-pane resizable splitter window. +* The selected elements in the jQuery object are converted to a splitter; +* each selected element should have two child elements, used for the panes +* of the splitter. The plugin adds a third child element for the splitbar. +* +* For more details see: http://methvin.com/splitter/ +* +* +* @example $('#MySplitter').splitter(); +* @desc Create a vertical splitter with default settings +* +* @example $('#MySplitter').splitter({type: 'h', accessKey: 'M'}); +* @desc Create a horizontal splitter resizable via Alt+Shift+M +* +* @name splitter +* @type jQuery +* @param Object options Options for the splitter (not required) +* @cat Plugins/Splitter +* @return jQuery +* @author Dave Methvin (dave.methvin@gmail.com) +*/ +;(function($){ + +$.fn.splitter = function(args){ + args = args || {}; + return this.each(function() { + var zombie; // left-behind splitbar for outline resizes + function startSplitMouse(evt) { + if ( opts.outline ) + zombie = zombie || bar.clone(false).insertAfter(A); + panes.css("-webkit-user-select", "none"); // Safari selects A/B text on a move + bar.addClass(opts.activeClass); + $('
    ').insertAfter(bar); + A._posSplit = A[0][opts.pxSplit] - evt[opts.eventPos]; + $(document) + .bind("mousemove", doSplitMouse) + .bind("mouseup", endSplitMouse); + } + function doSplitMouse(evt) { + var newPos = A._posSplit+evt[opts.eventPos]; + if ( opts.outline ) { + newPos = Math.max(0, Math.min(newPos, splitter._DA - bar._DA)); + bar.css(opts.origin, newPos); + } else + resplit(newPos); + } + function endSplitMouse(evt) { + $('div.splitterMask').remove(); + bar.removeClass(opts.activeClass); + var newPos = A._posSplit+evt[opts.eventPos]; + if ( opts.outline ) { + zombie.remove(); zombie = null; + resplit(newPos); + } + panes.css("-webkit-user-select", "text"); // let Safari select text again + $(document) + .unbind("mousemove", doSplitMouse) + .unbind("mouseup", endSplitMouse); + } + function resplit(newPos) { + // Constrain new splitbar position to fit pane size limits + newPos = Math.max(A._min, splitter._DA - B._max, + Math.min(newPos, A._max, splitter._DA - bar._DA - B._min)); + // Resize/position the two panes + bar._DA = bar[0][opts.pxSplit]; // bar size may change during dock + + var posOffset = bar.is(':visible') ? bar._DA - 1 : 0; + + bar.css(opts.origin, newPos - posOffset).css(opts.fixed, splitter._DF); + A.css(opts.origin, 0).css(opts.split, newPos).css(opts.fixed, splitter._DF); + B.css(opts.origin, newPos + bar._DA - posOffset) + .css(opts.split, splitter._DA-bar._DA-newPos).css(opts.fixed, splitter._DF); + // IE fires resize for us; all others pay cash + if ( !IE_10_AND_BELOW ) + panes.trigger("resize"); + } + function dimSum(jq, dims) { + // Opera returns -1 for missing min/max width, turn into 0 + var sum = 0; + for ( var i=1; i < arguments.length; i++ ) + sum += Math.max(parseInt(jq.css(arguments[i])) || 0, 0); + return sum; + } + + // Determine settings based on incoming opts, element classes, and defaults + var vh = (args.splitHorizontal? 'h' : args.splitVertical? 'v' : args.type) || 'v'; + var opts = $.extend({ + activeClass: 'active', // class name for active splitter + pxPerKey: 8, // splitter px moved per keypress + tabIndex: 0, // tab order indicator + accessKey: '' // accessKey for splitbar + },{ + v: { // Vertical splitters: + keyLeft: 39, keyRight: 37, cursor: "col-resize", + splitbarClass: "vsplitbar", outlineClass: "voutline", + type: 'v', eventPos: "pageX", origin: "left", + split: "width", pxSplit: "offsetWidth", side1: "Left", side2: "Right", + fixed: "height", pxFixed: "offsetHeight", side3: "Top", side4: "Bottom" + }, + h: { // Horizontal splitters: + keyTop: 40, keyBottom: 38, cursor: "row-resize", + splitbarClass: "hsplitbar", outlineClass: "houtline", + type: 'h', eventPos: "pageY", origin: "top", + split: "height", pxSplit: "offsetHeight", side1: "Top", side2: "Bottom", + fixed: "width", pxFixed: "offsetWidth", side3: "Left", side4: "Right" + } + }[vh], args); + + // Create jQuery object closures for splitter and both panes + var splitter = $(this).css({position: "relative"}); + var panes = $(">*", splitter[0]).css({ + position: "absolute", // positioned inside splitter container + "z-index": "1", // splitbar is positioned above + "-moz-outline-style": "none" // don't show dotted outline + }); + var A = $(panes[0]); // left or top + var B = $(panes[1]); // right or bottom + + // Focuser element, provides keyboard support; title is shown by Opera accessKeys + var focuser = $('') + .attr({accessKey: opts.accessKey, tabIndex: opts.tabIndex, title: opts.splitbarClass}) + .bind($.browser.opera?"click":"focus", function(){ this.focus(); bar.addClass(opts.activeClass) }) + .bind("keydown", function(e){ + var key = e.which || e.keyCode; + var dir = key==opts["key"+opts.side1]? 1 : key==opts["key"+opts.side2]? -1 : 0; + if ( dir ) + resplit(A[0][opts.pxSplit]+dir*opts.pxPerKey, false); + }) + .bind("blur", function(){ bar.removeClass(opts.activeClass) }); + + // Splitbar element, can be already in the doc or we create one + var bar = $(panes[2] || '
    ') + .insertAfter(A).css("z-index", "100").append(focuser) + .attr({"class": opts.splitbarClass, unselectable: "on"}) + .css({position: "absolute", "user-select": "none", "-webkit-user-select": "none", + "-khtml-user-select": "none", "-moz-user-select": "none", "top": "0px"}) + .bind("mousedown", startSplitMouse); + // Use our cursor unless the style specifies a non-default cursor + if ( /^(auto|default|)$/.test(bar.css("cursor")) ) + bar.css("cursor", opts.cursor); + + // Cache several dimensions for speed, rather than re-querying constantly + bar._DA = bar[0][opts.pxSplit]; + splitter._PBF = $.boxModel? dimSum(splitter, "border"+opts.side3+"Width", "border"+opts.side4+"Width") : 0; + splitter._PBA = $.boxModel? dimSum(splitter, "border"+opts.side1+"Width", "border"+opts.side2+"Width") : 0; + A._pane = opts.side1; + B._pane = opts.side2; + $.each([A,B], function(){ + this._min = opts["min"+this._pane] || dimSum(this, "min-"+opts.split); + this._max = opts["max"+this._pane] || dimSum(this, "max-"+opts.split) || 9999; + this._init = opts["size"+this._pane]===true ? + parseInt($.curCSS(this[0],opts.split)) : opts["size"+this._pane]; + }); + + // Determine initial position, get from cookie if specified + var initPos = A._init; + if ( !isNaN(B._init) ) // recalc initial B size as an offset from the top or left side + initPos = splitter[0][opts.pxSplit] - splitter._PBA - B._init - bar._DA; + if ( opts.cookie ) { + if ( !$.cookie ) + alert('jQuery.splitter(): jQuery cookie plugin required'); + var ckpos = parseInt($.cookie(opts.cookie)); + if ( !isNaN(ckpos) ) + initPos = ckpos; + $(window).bind("unload", function(){ + var state = String(bar.css(opts.origin)); // current location of splitbar + $.cookie(opts.cookie, state, {expires: opts.cookieExpires || 365, + path: opts.cookiePath || document.location.pathname}); + }); + } + if ( isNaN(initPos) ) // King Solomon's algorithm + initPos = Math.round((splitter[0][opts.pxSplit] - splitter._PBA - bar._DA)/2); + + // Resize event propagation and splitter sizing + if ( opts.anchorToWindow ) { + // Account for margin or border on the splitter container and enforce min height + splitter._hadjust = dimSum(splitter, "borderTopWidth", "borderBottomWidth", "marginBottom"); + splitter._hmin = Math.max(dimSum(splitter, "minHeight"), 20); + $(window).bind("resize", function(){ + var top = splitter.offset().top; + var wh = $(window).height(); + splitter.css("height", Math.max(wh-top-splitter._hadjust, splitter._hmin)+"px"); + if ( !IE_10_AND_BELOW ) splitter.trigger("resize"); + }).trigger("resize"); + } + else if ( opts.resizeToWidth && !IE_10_AND_BELOW ) + $(window).bind("resize", function(){ + splitter.trigger("resize"); + }); + + // Resize event handler; triggered immediately to set initial position + splitter.bind("resize", function(e, size){ + // Custom events bubble in jQuery 1.3; don't Yo Dawg + if ( e.target != this ) return; + // Determine new width/height of splitter container + splitter._DF = splitter[0][opts.pxFixed] - splitter._PBF; + splitter._DA = splitter[0][opts.pxSplit] - splitter._PBA; + // Bail if splitter isn't visible or content isn't there yet + if ( splitter._DF <= 0 || splitter._DA <= 0 ) return; + // Re-divvy the adjustable dimension; maintain size of the preferred pane + resplit(!isNaN(size)? size : (!(opts.sizeRight||opts.sizeBottom)? A[0][opts.pxSplit] : + splitter._DA-B[0][opts.pxSplit]-bar._DA)); + }).trigger("resize" , [initPos]); + }); +}; + +})(jQuery); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/prototypePost.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/prototypePost.js new file mode 100644 index 0000000..f91eae7 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/prototypePost.js @@ -0,0 +1,13176 @@ +// 8.0.0.3355. Generated 8/24/2017 4:38:58 AM UTC + +//***** messagecenter.js *****// +if (typeof console == 'undefined') console = { + log: function () { } +}; + +// sniff chrome +var CHROME_5_LOCAL = false; +var CHROME = false; +var SAFARI = false; +var FIREFOX = false; +var WEBKIT = false; +var OS_MAC = false; +var IOS = false; +var ANDROID = false; +var MOBILE_DEVICE = false; + +var IE = false; +var IE_10_AND_BELOW = false; //ie 10 and lower +var IE_11_AND_ABOVE = false; //ie 11 and above +var BROWSER_VERSION = 5000; +(function () { + if(!window.$axure) window.$axure = function() {}; + var useragent = window.navigator.userAgent; + + var edgeRegex = /Edge\/([0-9]+)/g; + var edgeMatch = edgeRegex.exec(useragent); + $axure.browser = { isEdge: Boolean(edgeMatch) }; + + if(!$axure.browser.isEdge) { + var chromeRegex = /Chrome\/([0-9]+).([0-9]+)/g; + var chromeMatch = chromeRegex.exec(useragent); + CHROME = Boolean(chromeMatch); + CHROME_5_LOCAL = chromeMatch && + Number(chromeMatch[1]) >= 5 && + location.href.indexOf('file://') >= 0; + } + + var safariRegex = /Safari\/([0-9]+)/g; + var safariMatch = safariRegex.exec(useragent); + SAFARI = Boolean(safariMatch) && !CHROME; //because chrome also inserts safari string into user agent + + var webkitRegex = /WebKit\//g ; + WEBKIT = Boolean(webkitRegex.exec(useragent)); + + FIREFOX = useragent.toLowerCase().indexOf('firefox') > -1; + + var macRegex = /Mac/g ; + OS_MAC = Boolean(macRegex.exec(window.navigator.platform)); + + IOS = useragent.match(/iPhone/i) || useragent.match(/iPad/i) || useragent.match(/iPod/i); + ANDROID = useragent.match(/Android/i); + + MOBILE_DEVICE = ANDROID || IOS + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Tablet PC/i) + || navigator.userAgent.match(/Windows Phone/i); + + if($.browser) { + if($.browser.msie) IE_10_AND_BELOW = true; + else IE_11_AND_ABOVE = useragent.toLowerCase().indexOf('trident') > -1; + + BROWSER_VERSION = $.browser.version; + } + + IE = IE_10_AND_BELOW || IE_11_AND_ABOVE; + + //Used by sitemap and variables.js getLinkUrl functions so that they know + //whether to embed global variables in URL as query string or hash string + //_shouldSendVars persists the value for sitemap instead of re-checking every time + var _shouldSendVars; + var _shouldSendVarsToServer = function(url) { + if(typeof _shouldSendVars != 'undefined') { + return _shouldSendVars; + } + + if(SAFARI || (IE_10_AND_BELOW && BROWSER_VERSION < 10)) { + var urlToCheck = typeof url != 'undefined' ? url : window.location.href; + var serverRegex = /http:\/\/127\.0\.0\.1:[0-9]{5}/g; + var serverMatch = serverRegex.exec(urlToCheck); + var previewRegex = /[0-9]{2}\.[0-9]{2}\.[0-9]{2}/g; + var previewMatch = previewRegex.exec(urlToCheck); + if(Boolean(serverMatch) && Boolean(previewMatch)) { + _shouldSendVars = true; + return _shouldSendVars; + } + } + + _shouldSendVars = false; + return _shouldSendVars; + }; + $axure.shouldSendVarsToServer = _shouldSendVarsToServer; +})(); + +(function() { + var _topMessageCenter; + var _messageCenter = {}; + var _listeners = []; + var _stateListeners = []; + var _state = {}; + var _eventObject = null; + + var _queuedMessages = []; + var _initialized = false; + + // this is for the non Chrome 5 local scenarios. The "top" message center will dispatch to all the bottom ones + var _childrenMessageCenters = []; + + // create $axure if it hasn't been created + if (!window.$axure) window.$axure = function() {}; + $axure.messageCenter = _messageCenter; + + // isolate scope, and initialize _topMessageCenter. + (function() { + if (!CHROME_5_LOCAL) { + var topAxureWindow = window; + try { + while(topAxureWindow.parent && topAxureWindow.parent !== topAxureWindow + && topAxureWindow.parent.$axure) topAxureWindow = topAxureWindow.parent; + } catch(e) {} + _topMessageCenter = topAxureWindow.$axure.messageCenter; + } + })(); + + $(window.document).ready(function() { + if (CHROME_5_LOCAL) { + $('body').append("" + + ""); + + _eventObject = window.document.createEvent('Event'); + _eventObject.initEvent('axureMessageSenderEvent', true, true); + + $('#axureEventReceiverDiv').bind('axureMessageReceiverEvent', function () { + var request = JSON.parse($(this).text()); + _handleRequest(request); + }); + } else { + if (_topMessageCenter != _messageCenter) { + _topMessageCenter.addChildMessageCenter(_messageCenter); + console.log('adding from ' + window.location.toString()); + } + } + }); + + var _handleRequest = function (request) { + // route the request to all the listeners + for(var i = 0; i < _listeners.length; i++) _listeners[i](request.message, request.data); + + // now handle the queued messages if we're initializing + if (request.message == 'initialize') { + _initialized = true; + // send all the queued messages and return + for (var i = 0; i < _queuedMessages.length; i++) { + var qRequest = _queuedMessages[i]; + _messageCenter.postMessage(qRequest.message, qRequest.data); + } + _queuedMessages = []; + } + + // and then handle the set state messages, if necessary + if (request.message == 'setState') { + _state[request.data.key] = request.data.value; + for (var i = 0; i < _stateListeners.length; i++) { + var keyListener = _stateListeners[i]; + // if thep passed a null or empty value, always post the message + if (!keyListener.key || keyListener.key == request.data.key) { + keyListener.listener(request.data.key, request.data.value); + } + } + } + + }; + + // ----------------------------------------------------------------------------------------- + // This method allows for dispatching messages in the non-chromelocal scenario. + // Each child calls this on _topMessageCenter + // ----------------------------------------------------------------------------------------- + _messageCenter.addChildMessageCenter = function(messageCenter) { + _childrenMessageCenters[_childrenMessageCenters.length] = messageCenter; + }; + + // ----------------------------------------------------------------------------------------- + // This method allows for dispatching messages in the non-chromelocal scenario. + // Each child calls this on _topMessageCenter + // ----------------------------------------------------------------------------------------- + _messageCenter.dispatchMessage = function(message, data) { + _handleRequest({ + message: message, + data: data + }); + }; + + // ----------------------------------------------------------------------------------------- + // ----------------------------------------------------------------------------------------- + _messageCenter.dispatchMessageRecursively = function(message, data) { + console.log("dispatched to " + window.location.toString()); + + // dispatch to the top center first + _messageCenter.dispatchMessage(message, data); + + $('iframe').each(function(index, frame) { + //try,catch to handle permissions error in FF when loading pages from another domain + try { + if (frame.contentWindow.$axure && frame.contentWindow.$axure.messageCenter) { + frame.contentWindow.$axure.messageCenter.dispatchMessageRecursively(message, data); + } + }catch(e) {} + }); + }; + + var _combineEventMessages = false; + var _compositeEventMessageData = []; + _messageCenter.startCombineEventMessages = function() { + _combineEventMessages = true; + } + + _messageCenter.endCombineEventMessages = function () { + _messageCenter.sendCompositeEventMessage(); + _combineEventMessages = false; + } + + _messageCenter.sendCompositeEventMessage = function () { + _messageCenter.postMessage('axCompositeEventMessage', _compositeEventMessageData); + _compositeEventMessageData = []; + } + + _messageCenter.postMessage = function (message, data) { + if(_combineEventMessages) { + if(message == 'axEvent' || message == 'axCase' || message == 'axAction' || message == 'axEventComplete') { + _compositeEventMessageData.push({ 'message': message, 'data': data }); + if(_compositeEventMessageData.length >= 10) _messageCenter.sendCompositeEventMessage(); + return; + } + } + + if(!CHROME_5_LOCAL) { + _topMessageCenter.dispatchMessageRecursively(message, data); + } else { + var request = { + message: message, + data: data + }; + + if(_initialized) { + var senderDiv = window.document.getElementById('axureEventSenderDiv'); + var messageText = JSON.stringify(request); + // console.log('sending event: ' + messageText); + senderDiv.innerText = messageText; + senderDiv.dispatchEvent(_eventObject); + // console.log('event sent'); + } else { + _queuedMessages[_queuedMessages.length] = request; + } + } + }; + + _messageCenter.setState = function(key, value) { + var data = { + key: key, + value: value + }; + _messageCenter.postMessage('setState', data); + }; + + _messageCenter.getState = function(key) { + return _state[key]; + }; + + _messageCenter.addMessageListener = function(listener) { + _listeners[_listeners.length] = listener; + }; + + _messageCenter.addStateListener = function(key, listener) { + _stateListeners[_stateListeners.length] = { + key: key, + listener: listener + }; + }; + +})(); + +//***** events.js *****// +// ******* Features MANAGER ******** // + +$axure.internal(function($ax) { + var _features = $ax.features = {}; + var _supports = _features.supports = {}; + _supports.touchstart = typeof window.ontouchstart !== 'undefined'; + _supports.touchmove = typeof window.ontouchmove !== 'undefined'; + _supports.touchend = typeof window.ontouchend !== 'undefined'; + + _supports.mobile = _supports.touchstart && _supports.touchend && _supports.touchmove; + // Got this from http://stackoverflow.com/questions/11381673/javascript-solution-to-detect-mobile-browser + var check = navigator.userAgent.match(/Android/i) + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/iPhone/i) + || navigator.userAgent.match(/iPad/i) + || navigator.userAgent.match(/iPod/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Tablet PC/i) + || navigator.userAgent.match(/Windows Phone/i); + + _supports.windowsMobile = navigator.userAgent.match(/Tablet PC/i) || navigator.userAgent.match(/Windows Phone/i); + + if(!check && _supports.mobile) { + _supports.touchstart = false; + _supports.touchmove = false; + _supports.touchend = false; + _supports.mobile = false; + } + + var _eventNames = _features.eventNames = {}; + _eventNames.mouseDownName = _supports.touchstart ? 'touchstart' : 'mousedown'; + _eventNames.mouseUpName = _supports.touchend ? 'touchend' : 'mouseup'; + _eventNames.mouseMoveName = _supports.touchmove ? 'touchmove' : 'mousemove'; +}); + +// ******* EVENT MANAGER ******** // +$axure.internal(function($ax) { + var _objectIdToEventHandlers = {}; + + var _jBrowserEvent = undefined; + $ax.setjBrowserEvent = function(event) { + _jBrowserEvent = event; + }; + + $ax.getjBrowserEvent = function() { + return _jBrowserEvent; + }; + + var _event = {}; + $ax.event = _event; + + //initilize state + _event.mouseOverObjectId = ''; + _event.mouseDownObjectId = ''; + _event.mouseOverIds = []; + + var EVENT_NAMES = ['mouseenter', 'mouseleave', 'contextmenu', 'change', 'focus', 'blur']; + + + // Tap, double tap, and touch move, or synthetic. + if(!$ax.features.supports.mobile) { + EVENT_NAMES[EVENT_NAMES.length] = 'click'; + EVENT_NAMES[EVENT_NAMES.length] = 'dblclick'; + EVENT_NAMES[EVENT_NAMES.length] = 'mousemove'; + } + + // add the event names for the touch events + EVENT_NAMES[EVENT_NAMES.length] = $ax.features.eventNames.mouseDownName; + EVENT_NAMES[EVENT_NAMES.length] = $ax.features.eventNames.mouseUpName; + + for(var i = 0; i < EVENT_NAMES.length; i++) { + var eventName = EVENT_NAMES[i]; + //we need the function here to circumvent closure modifying eventName + _event[eventName] = (function(event_Name) { + return function(elementId, fn) { + var elementIdQuery = $jobj(elementId); + var type = $ax.getTypeFromElementId(elementId); + + //we need specially track link events so we can enable and disable them along with + //their parent widgets + if(elementIdQuery.is('a')) _attachCustomObjectEvent(elementId, event_Name, fn); + //see notes below + else if($ax.IsTreeNodeObject(type)) _attachTreeNodeEvent(elementId, event_Name, fn); + else if ($ax.IsImageFocusable(type) && (event_Name == 'focus' || event_Name == 'blur')) { + var suitableChild; + var imgChild = $ax.repeater.applySuffixToElementId(elementId, '_img'); + var divChild = $ax.repeater.applySuffixToElementId(elementId, '_div'); + + for (var j = 0; j < elementIdQuery[0].children.length; j++) { + if (elementIdQuery[0].children[j].id == imgChild) suitableChild = imgChild; + if (!suitableChild && elementIdQuery[0].children[j].id == divChild) suitableChild = divChild; + } + if(!suitableChild) suitableChild = imgChild; + _attachDefaultObjectEvent($jobj(suitableChild), elementId, event_Name, fn); + } else { + var inputId = $ax.INPUT(elementId); + var isInput = $jobj(inputId).length != 0; + var id = isInput && (event_Name == 'focus' || event_Name == 'blur') ? inputId : elementId; + _attachDefaultObjectEvent($jobj(id), elementId, event_Name, fn); + } + }; + })(eventName); + } + + var AXURE_TO_JQUERY_EVENT_NAMES = { + 'onMouseOver': 'mouseenter', + 'onMouseOut': 'mouseleave', + 'onContextMenu': 'contextmenu', + 'onChange': 'change', + 'onFocus': 'focus', + 'onLostFocus': 'blur' + }; + + // Tap, double tap, and touch move, or synthetic. + if(!$ax.features.supports.mobile) { + AXURE_TO_JQUERY_EVENT_NAMES.onClick = 'click'; + AXURE_TO_JQUERY_EVENT_NAMES.onDoubleClick = 'dblclick'; + AXURE_TO_JQUERY_EVENT_NAMES.onMouseMove = 'mousemove'; + } + + AXURE_TO_JQUERY_EVENT_NAMES.onMouseDown = $ax.features.eventNames.mouseDownName; + AXURE_TO_JQUERY_EVENT_NAMES.onMouseUp = $ax.features.eventNames.mouseUpName; + //for dp, if mouse entered without leaving, don't fire mouse enter again + var mouseEnterGuard = {}; + var _attachEvents = function (diagramObject, elementId, doMouseEnterGuard) { + + var inputId = $ax.repeater.applySuffixToElementId(elementId, '_input'); + var id = $jobj(inputId).length ? inputId : elementId; + + for(var eventName in diagramObject.interactionMap) { + var jQueryEventName = AXURE_TO_JQUERY_EVENT_NAMES[eventName]; + if(!jQueryEventName) continue; + + _event[jQueryEventName](id, + //this is needed to escape closure + (function(axEventObject) { + return function (e) { + if(e.type == 'mouseenter' && doMouseEnterGuard) { + if(mouseEnterGuard[elementId]) return; + else mouseEnterGuard[elementId] = true; + } + + $ax.setjBrowserEvent(e); + // console.log(axEventObject.description); + var eventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, elementId); + _handleEvent(elementId, eventInfo, axEventObject); + }; + })(diagramObject.interactionMap[eventName]) + ); + + if(jQueryEventName.toLowerCase() == 'mouseenter' && doMouseEnterGuard) { + $jobj(elementId).on('mouseleave touchend', function() { + mouseEnterGuard[elementId] = false; + }); + } + } + + }; + + var _descriptionToKey = { 'OnFocus': 'onFocus', 'OnLostFocus': 'onLostFocus' }; + var _createProxies = function(diagramObject, elementId) { + var createFocus = _needsProxy(diagramObject, elementId, 'onFocus'); + var createLostFocus = _needsProxy(diagramObject, elementId, 'onLostFocus'); + + if(!createFocus && !createLostFocus) return; + + if(!diagramObject.interactionMap) diagramObject.interactionMap = {}; + if(createFocus) diagramObject.interactionMap.onFocus = { proxy: true, description: 'OnFocus' }; + if(createLostFocus) diagramObject.interactionMap.onLostFocus = { proxy: true, description: 'OnLostFocus' }; + } + + var preventDefaultEvents = ['OnContextMenu', 'OnKeyUp', 'OnKeyDown']; + var allowBubble = ['OnFocus', 'OnResize', 'OnMouseOut', 'OnMouseOver']; + + var _canClick = true; + var _startScroll = []; + var _setCanClick = function(canClick) { + _canClick = canClick; + if(_canClick) _startScroll = [$(window).scrollLeft(), $(window).scrollTop()]; + }; + + var _getCanClick = function() { + if(!$ax.features.supports.mobile) return true; + var endScroll = [$(window).scrollLeft(), $(window).scrollTop()]; + return _canClick && _startScroll[0] == endScroll[0] && _startScroll[1] == endScroll[1]; + }; + + //var _notAllowedInvisible = function (type) { + // $ax.getTypeFromElementId(elementId); + + // return !$ax.public.fn.IsReferenceDiagramObject(type) && !$ax.public.fn.IsLayer(type); + //} + + + var _notAllowedInvisible = function (id) { + var type = $ax.getTypeFromElementId(id); + if ($ax.public.fn.IsReferenceDiagramObject(type) || $ax.public.fn.IsLayer(type)) return false; + return !($ax.public.fn.IsVector(type) && _hasCompoundImage(id)); + } + + var _hasCompoundImage = function (id) { + var query = $jobj(id); + return $ax.public.fn.isCompoundVectorHtml(query[0]); + } + + var _suppressedEvents = {}; // Suppressed for next occurance. + var _blockedEvents = {}; // Blocked until unblocked. + _event.addSuppressedEvent = function(id, event) { + if(!_suppressedEvents[id]) _suppressedEvents[id] = []; + var events = _suppressedEvents[id]; + if(events.indexOf(event) != -1) return; + events.push(event); + } + + _event.blockEvent = function(id, event) { + if(!_blockedEvents[id]) _blockedEvents[id] = {}; + var events = _blockedEvents[id]; + if(events[event]) ++events[event]; + else events[event] = 1; + return function() { _unblockEvent(id, event); }; + } + + var _isSuppressedEvent = function(id, event) { + var suppressedEvents = _suppressedEvents[id]; + var blockedEvents = _blockedEvents[id]; + return (suppressedEvents && suppressedEvents.indexOf(event) != -1) || (blockedEvents && blockedEvents[event]); + } + + var _removeSuppressedEvent = function(id, event) { + var events = _suppressedEvents[id]; + if(!events) return; + if(events.length == 1) { + delete _suppressedEvents[id]; + } else { + var eventIndex = events.indexOf(event); + for(var i = eventIndex + 1; i < events.length; i++) events[i - 1] = events[i]; + events.pop(); + } + } + var _unblockEvent = function(id, event) { + var events = _blockedEvents[id]; + if(events) { + if(--events[event] > 0) return; + } + _removeSuppressedEvent(id, event); + } + + var _unblockEvent = function(id, event) { + var events = _blockedEvents[id]; + if(events) { + if(--events[event] > 0) return; + } + _removeSuppressedEvent(id, event); + } + + var eventNesting = 0; + var eventNestingTime = new Date().getTime(); + + var _handleEvent = $ax.event.handleEvent = function (elementId, eventInfo, axEventObject, skipShowDescriptions, synthetic) { + var eventDescription = axEventObject.description; + if(_enteredWidgets[elementId] && eventDescription == 'OnMouseEnter') return; // Suppress entering a widget when already in widget (ie only) + if(_isSuppressedEvent(elementId, eventDescription)) { + _removeSuppressedEvent(elementId, eventDescription); + return; + } + + if(axEventObject.proxy) { + var firingId = _widgetToFocusParent[elementId]; + if(firingId) { + var firingObj = $obj(firingId); + var nextEventObj = firingObj.interactionMap && firingObj.interactionMap[_descriptionToKey[eventDescription]]; + if(!nextEventObj) nextEventObj = axEventObject; + _handleEvent(firingId, eventInfo, nextEventObj, skipShowDescriptions, synthetic); + } + return; + } +// var x = JSON.stringify(eventInfo); +// var y = JSON.stringify(axEventObject); + + var fireTime = new Date().getTime(); + + if(fireTime - eventNestingTime > 100) { + eventNestingTime = fireTime; + eventNesting = 0; + } + + if(eventNesting === 0) { + $ax.recording.maybeRecordEvent(elementId, eventInfo, axEventObject, fireTime); + } + + eventNesting += 1; + + if(!_getCanClick() && (eventDescription == 'OnClick' || eventDescription == 'OnPageClick')) return; + // If you are supposed to suppress, do that right away. + if(suppressedEventStatus[eventDescription]) { + return; + } + + var currentEvent = $ax.getjBrowserEvent(); + if(!synthetic && currentEvent && currentEvent.originalEvent && currentEvent.originalEvent.handled && !eventInfo.isMasterEvent) return; + if(!synthetic && elementId && !$ax.style.getObjVisible(elementId) && _notAllowedInvisible(elementId)) return; + + //if debug + var axObj = $obj(elementId); + var axObjLabel = axObj ? axObj.label : eventInfo.label; + var axObjType = axObj ? axObj.friendlyType : eventInfo.friendlyType; + if(!skipShowDescriptions || eventDescription == 'OnPageLoad') $ax.messageCenter.postMessage('axEvent', { 'label': axObjLabel, 'type': axObjType, 'event': axEventObject }); + + var bubble = true; + var showCaseDescriptions = !skipShowDescriptions && _shouldShowCaseDescriptions(axEventObject); + if(!showCaseDescriptions) { + //handle case descriptions + var caseGroups = []; + var currentCaseGroup = []; + caseGroups[0] = currentCaseGroup; + + // Those refreshes not after a wait + var guaranteedRefreshes = {}; + + var caseGroupIndex = 0; + for(var i = 0; i < axEventObject.cases.length; i++) { + var currentCase = axEventObject.cases[i]; + if(currentCase.isNewIfGroup && i != 0) { + caseGroupIndex++; + currentCaseGroup = []; + caseGroups[caseGroups.length] = currentCaseGroup; + // Joon: Isn't caseGroups.length always equal to caseGroupIndex? + } + currentCaseGroup[currentCaseGroup.length] = currentCase; + + for(var j = 0; j < currentCase.actions.length; j++) { + var action = currentCase.actions[j]; + if(action.action == 'wait') break; + if(action.action != 'refreshRepeater') continue; + for(var k = 0; k < action.repeatersToRefresh.length; k++) { + var id = $ax.getElementIdsFromPath(action.repeatersToRefresh[k], eventInfo)[0]; + if(id) guaranteedRefreshes[id] = caseGroupIndex; + } + } + } + + for(var i = 0; i < caseGroups.length; i++) { + var groupRefreshes = []; + for(var key in guaranteedRefreshes) { + if(guaranteedRefreshes[key] == i) groupRefreshes[groupRefreshes.length] = key; + } + bubble = _handleCaseGroup(eventInfo, caseGroups[i], groupRefreshes) && bubble; + } + } else { + _showCaseDescriptions(elementId, eventInfo, axEventObject, synthetic); + bubble = false; + } + + // If not handled, synthetically bubble if you can + if(bubble && _widgetToFocusParent[elementId]) { + firingId = _widgetToFocusParent[elementId]; + if(firingId) { + firingObj = $obj(firingId); + nextEventObj = firingObj.interactionMap && firingObj.interactionMap[_descriptionToKey[axEventObject.description]]; + if(!nextEventObj) nextEventObj = axEventObject; + _handleEvent(firingId, eventInfo, nextEventObj, skipShowDescriptions, synthetic); + } + return; + } + + // Only trigger a supression if it handled this event + if(!bubble && suppressingEvents[eventDescription]) { + suppressedEventStatus[suppressingEvents[eventDescription]] = true; + } + + $ax.action.flushAllResizeMoveActions(eventInfo); + + // This should not be needed anymore. All refreshes should be inserted, or handled earlier. + var repeaters = $ax.deepCopy($ax.action.repeatersToRefresh); + while($ax.action.repeatersToRefresh.length) $ax.action.repeatersToRefresh.pop(); + for(i = 0; i < repeaters.length; i++) $ax.repeater.refreshRepeater(repeaters[i], eventInfo); + + if(currentEvent && currentEvent.originalEvent) { + currentEvent.originalEvent.handled = !synthetic && !bubble && allowBubble.indexOf(eventDescription) == -1; + //currentEvent.originalEvent.donotdrag = currentEvent.donotdrag || (!bubble && eventDescription == 'OnMouseDown'); + + // Prevent default if necessary + if(currentEvent.originalEvent.handled && preventDefaultEvents.indexOf(eventDescription) != -1) { + currentEvent.preventDefault(); + } + } + + eventNesting -= 1; + + if(!showCaseDescriptions) $ax.messageCenter.postMessage('axEventComplete'); + + }; + + var _handleScrollEvent = function (elementId, eventInfo, originalEvent, scrolledUp, scrolledDown, interactionMap, skipShowDescription, synthetic) { + if (!interactionMap) return; + if (interactionMap.onScroll) _handleEvent(elementId, eventInfo, interactionMap.onScroll, skipShowDescription, synthetic); + + var wasHandled = originalEvent.handled; + if (interactionMap.onScrollUp && scrolledUp) { + originalEvent.handled = false; + _handleEvent(elementId, eventInfo, interactionMap.onScrollUp, skipShowDescription, synthetic); + } else if (interactionMap.onScrollDown && scrolledDown) { + originalEvent.handled = false; + _handleEvent(elementId, eventInfo, interactionMap.onScrollDown, skipShowDescription, synthetic); + } + originalEvent.handled |= wasHandled; + } + + var _showCaseDescriptions = function(elementId, eventInfo, axEventObject, synthetic) { + + if(axEventObject.cases.length == 0) return true; + + var linksId = elementId + "linkBox"; + $('#' + linksId).remove(); + + var $container = $("
    "); + + if(!_isEventSimulating(axEventObject)) { + var copy = $ax.eventCopy(eventInfo); + for(var i = 0; i < axEventObject.cases.length; i++) { + var $link = $(""); + $link.click(function(j) { + return function () { + var currentCase = axEventObject.cases[j]; + $ax.messageCenter.postMessage('axCase', { 'description': currentCase.description }); + for(var k = 0; k < currentCase.actions.length; k++) { + $ax.messageCenter.postMessage('axAction', { 'description': currentCase.actions[k].description }); + } + $ax.messageCenter.postMessage('axEventComplete'); + + var bubble = $ax.action.dispatchAction(copy, axEventObject.cases[j].actions); + $ax.action.flushAllResizeMoveActions(copy); + $('#' + linksId).remove(); + return bubble; + }; + } (i) + ); + + $container.append($link); + } + } else { + var fullDescription = axEventObject.description + ":
    "; + for(var i = 0; i < axEventObject.cases.length; i++) { + var currentCase = axEventObject.cases[i]; + fullDescription += "  " + currentCase.description.replace(/
    /g, '
      ') + ":
    "; + for(var j = 0; j < currentCase.actions.length; j++) { + fullDescription += "    " + currentCase.actions[j].description.replace(/
    /g, '
          ') + "
    "; + } + } + fullDescription = fullDescription.substring(0, fullDescription.length - 4); + + var $link = $(""); + $link.click(function() { + _handleEvent(elementId, eventInfo, axEventObject, true, synthetic); + $ax.messageCenter.postMessage('axEventComplete'); + $('#' + linksId).remove(); + return; + }); + $container.append($link); + } + $container.mouseleave(function(e) { $ax.legacy.SuppressBubble(e); }); + $('body').append($container); + _showCaseLinks(eventInfo, linksId); + }; + + var _showCaseLinks = function(eventInfo, linksId) { + var links = window.document.getElementById(linksId); + + links.style.top = eventInfo.pageY; + + var left = eventInfo.pageX; + links.style.left = left; + $ax.visibility.SetVisible(links, true); + $ax.legacy.BringToFront(linksId, true); + // Switch to using jquery if this is still needed. Really old legacy code, likely for a browser no longer supported. + //$ax.legacy.RefreshScreen(); + }; + + + var _shouldShowCaseDescriptions = function(axEventObject) { + if($ax.document.configuration.linkStyle == "alwaysDisplayTargets") return true; + if($ax.document.configuration.linkStyle == "neverDisplayTargets") return false; + if(axEventObject.cases.length == 0) return false; + if(_isEventSimulating(axEventObject)) return false; + if(axEventObject.cases.length >= 2) return true; + return false; + }; + + var _isEventSimulating = function(axEventObject) { + for(var i = 0; i < axEventObject.cases.length; i++) { + if(axEventObject.cases[i].condition) return true; + } + return false; + }; + + var _handleCaseGroup = function(eventInfo, caseGroup, groupRefreshes) { + for(var i = 0; i < caseGroup.length; i++) { + var currentCase = caseGroup[i]; + if(!currentCase.condition || _processCondition(currentCase.condition, eventInfo)) { + $ax.messageCenter.postMessage('axCase', { 'description': currentCase.description }); + for(var j = 0; j < currentCase.actions.length; j++) { + if(currentCase.actions[j].action != 'refreshRepeater') $ax.messageCenter.postMessage('axAction', { 'description': currentCase.actions[j].description }); + } + + for(var j = 0; j < currentCase.actions.length; j++) { + var action = currentCase.actions[j]; + if(action.action == 'wait') break; + if(action.action != 'refreshRepeater') continue; + for(var k = 0; k < action.repeatersToRefresh.length; k++) { + var id = $ax.getElementIdsFromPath(action.repeatersToRefresh[i], eventInfo)[i]; + if(id) { + var index = groupRefreshes.indexOf(id); + if(index != -1) $ax.splice(groupRefreshes, index); + } + } + } + + // Any guaranteed refreshes that aren't accounted for must be run still. + $ax.action.tryRefreshRepeaters(groupRefreshes, eventInfo); + + $ax.action.dispatchAction(eventInfo, currentCase.actions); + return false; + } + } + + // Any guaranteed refreshes that aren't accounted for must be run still. + $ax.action.tryRefreshRepeaters(groupRefreshes, eventInfo); + return true; + }; + + var _processCondition = function(expr, eventInfo) { + return $ax.expr.evaluateExpr(expr, eventInfo); + }; + + var _attachTreeNodeEvent = function(elementId, eventName, fn) { + //we need to set the cursor here because we want to make sure that every tree node has the default + //cursor set and then it's overridden if it has a click + if(eventName == 'click') window.document.getElementById(elementId).style.cursor = 'pointer'; + + _attachCustomObjectEvent(elementId, eventName, fn); + }; + + var _attachDefaultObjectEvent = function(elementIdQuery, elementId, eventName, fn) { + var func = function() { + if(!$ax.style.IsWidgetDisabled(elementId)) return fn.apply(this, arguments); + return true; + }; + + var bind = !elementIdQuery[eventName]; + if(bind) elementIdQuery.bind(eventName, func); + else elementIdQuery[eventName](func); + }; + + var _attachCustomObjectEvent = function(elementId, eventName, fn) { + var handlers = _objectIdToEventHandlers[elementId]; + if(!handlers) _objectIdToEventHandlers[elementId] = handlers = {}; + + var fnList = handlers[eventName]; + if(!fnList) handlers[eventName] = fnList = []; + + fnList[fnList.length] = fn; + }; + + var _fireObjectEvent = function(elementId, event, originalArgs) { + var element = window.document.getElementById(elementId); + + var handlerList = _objectIdToEventHandlers[elementId] && _objectIdToEventHandlers[elementId][event]; + if(handlerList) { + for(var i = 0; i < handlerList.length; i++) handlerList[i].apply(element, originalArgs); + } + + eventNesting -= 1; + + }; + + var _layerToFocusableWidget = {}; + var _widgetToFocusParent = {}; + _event.layerMapFocus = function(layer, elementId) { + var mainObj = layer.objs[0]; + // If first child non existant return + if (!mainObj) return; + + var mainId = $ax.getElementIdFromPath([mainObj.id], { relativeTo: elementId }); + _widgetToFocusParent[mainId] = elementId; + + // If first child is a layer, call recursively + if ($ax.public.fn.IsLayer(mainObj.type)) { + _event.layerMapFocus(mainObj, mainId); + var baseId = _layerToFocusableWidget[mainId]; + if(baseId) _layerToFocusableWidget[elementId] = baseId; + return; + } + + _layerToFocusableWidget[elementId] = mainId; + } + + var _needsProxy = function(obj, id, proxyName) { + // layers don't need on focus ever, proxies will handle them + if ($ax.public.fn.IsLayer(obj.type)) return false; + // If you already focus you don't need to force yourself to proxy. + if(obj.interactionMap && obj.interactionMap[proxyName]) return false; + + var parentId = _widgetToFocusParent[id]; + if(parentId) return _needsProxyHelper(parentId, proxyName); + return false; + } + + var _needsProxyHelper = function(id, proxyName) { + var obj = $obj(id); + if(obj.interactionMap && obj.interactionMap[proxyName]) return true; + + var parentId = _widgetToFocusParent[id]; + if(parentId) return _needsProxyHelper(parentId, proxyName); + return false; + } + + //for button shapes and images the img is focusable instead of the div to get better outlines + // For layers, we remember who their proxy is. + $ax.event.getFocusableWidgetOrChildId = function (elementId) { + var mappedId = _layerToFocusableWidget[elementId]; + if (mappedId) elementId = mappedId; + + var inputId = $ax.repeater.applySuffixToElementId(elementId, '_input'); + var inputQuery = $jobj(inputId); + if(inputQuery.length > 0) return inputId; + + var imgId = $ax.repeater.applySuffixToElementId(elementId, '_img'); + var imgQuery = $jobj(imgId); + if (imgQuery.length > 0) return imgId; + + var divId = $ax.repeater.applySuffixToElementId(elementId, '_div'); + var divQuery = $jobj(divId); + if (divQuery.length > 0) return divId; + + return elementId; + }; + + var _enteredWidgets = {}; + + // key is the suppressing event, and the value is the event that is supressed + var suppressingEvents = {}; + // key is the event that will cancel the suppression, and value is the event that was being suppressed + var cancelSuppressions = {}; + // suppressed event maps to true if it is supressed + var suppressedEventStatus = {}; + + var initSuppressingEvents = function () { + suppressingEvents['OnLongClick'] = 'OnClick'; + cancelSuppressions['onMouseDown'] = 'OnClick'; + + // Have to cancel suppressed event here. Only works for non-synthetic events currently + for(var key in cancelSuppressions) { + var jEventName = AXURE_TO_JQUERY_EVENT_NAMES[key]; + if(!jEventName) continue; + $('body').bind(jEventName, function () { + suppressedEventStatus[cancelSuppressions[key]] = false; + }); + } + }; + + // TODO: It may be a good idea to split this into multiple functions, or at least pull out more similar functions into private methods + var _initializeObjectEvents = function(query, allowItem) { + query.each(function(dObj, elementId) { + var $element = $jobj(elementId); + var itemId = $ax.repeater.getItemIdFromElementId(elementId); + + // Focus has to be done before on focus fires + // Set up focus + if ($ax.public.fn.IsTextArea(dObj.type) || $ax.public.fn.IsTextBox(dObj.type) || $ax.public.fn.IsCheckBox(dObj.type) || $ax.public.fn.IsRadioButton(dObj.type) || + $ax.public.fn.IsListBox(dObj.type) || $ax.public.fn.IsComboBox(dObj.type) || $ax.public.fn.IsButton(dObj.type) || + (dObj.tabbable && ($ax.public.fn.IsImageBox(dObj.type) || $ax.public.fn.IsVector(dObj.type) || $ax.IsTreeNodeObject(dObj.type) || $ax.public.fn.IsTableCell(dObj.type)))) { + var focusObj = $jobj($ax.event.getFocusableWidgetOrChildId(elementId)); + focusObj.focus(function() { + window.lastFocusedControl = elementId; + }); + } + // [MAS: Supressing events were here] + _createProxies(dObj, elementId); + var isDynamicPanel = $ax.public.fn.IsDynamicPanel(dObj.type); + if(dObj.interactionMap) { + _attachEvents(dObj, elementId, isDynamicPanel); + }; + + if (IE || $axure.browser.isEdge) { + $element.mouseenter(function() { + _enteredWidgets[elementId] = true; + }).mouseleave(function() { + _enteredWidgets[elementId] = false; + }); + } + + _attachIxStyleEvents(dObj, elementId, $element); + + var $axElement = undefined; + // Unless you are pre eval - don't allow item and have an item id - then set enabled/selected through js as usual + if(allowItem || !itemId) { + //initialize disabled elements, do this first before selected, cause if a widget is disabled, we don't want to apply selected style anymore + if(($ax.public.fn.IsVector(dObj.type) || $ax.public.fn.IsImageBox(dObj.type) || isDynamicPanel || $ax.public.fn.IsLayer(dObj.type)) && dObj.disabled) { + if(!$axElement) $axElement = $ax('#' + elementId); + $axElement.enabled(false); + } + + // Initialize selected elements if not in repeater + if(($ax.public.fn.IsVector(dObj.type) || $ax.public.fn.IsImageBox(dObj.type) || isDynamicPanel || $ax.public.fn.IsLayer(dObj.type)) && dObj.selected) { + if(!$axElement) $axElement = $ax('#' + elementId); + $axElement.selected(true); + } + } else { + // Otherwise everything should be set up correctly by pre-eval, except disabled is needed + if($element.hasClass('disabled')) { + $axElement = $ax('#' + elementId); + $axElement.enabled(false); + } + } + + if(OS_MAC && WEBKIT) { + if ($ax.public.fn.IsComboBox(dObj.type) && dObj.disabled) { + $jobj($ax.INPUT(elementId)).css('color', 'grayText'); + } + }; + + // Initialize Placeholders. Right now this is text boxes and text areas. + // Also, the assuption is being made that these widgets with the placeholder, have no other styles (this may change...) + var hasPlaceholder = dObj.placeholderText == '' ? true : Boolean(dObj.placeholderText); + if(($ax.public.fn.IsTextArea(dObj.type) || $ax.public.fn.IsTextBox(dObj.type)) && hasPlaceholder) { + // This is needed to initialize the placeholder state + var inputJobj = $jobj($ax.INPUT(elementId)); + inputJobj.bind('focus', function () { + if(dObj.HideHintOnFocused) { + var id = this.id; + var inputIndex = id.indexOf('_input'); + if (inputIndex == -1) return; + var inputId = id.substring(0, inputIndex); + + if (!$ax.placeholderManager.isActive(inputId)) return; + $ax.placeholderManager.updatePlaceholder(inputId, false, true); + } + $ax.placeholderManager.moveCaret(this.id); + }).bind('mouseup', function() { + $ax.placeholderManager.moveCaret(this.id); + }).bind('blur', function() { + var id = this.id; + var inputIndex = id.indexOf('_input'); + if(inputIndex == -1) return; + var inputId = id.substring(0, inputIndex); + + if($jobj(id).val()) return; + $ax.placeholderManager.updatePlaceholder(inputId, true); + }); + + if(ANDROID) { + //input fires before keyup, to avoid flicker, supported in ie9 and above + inputJobj.bind('input', function() { + if(!dObj.HideHintOnFocused) { //hide on type + var id = this.id; + var inputIndex = id.indexOf('_input'); + if(inputIndex == -1) return; + var inputId = id.substring(0, inputIndex); + + if($ax.placeholderManager.isActive(inputId)) { + $ax.placeholderManager.updatePlaceholder(inputId, false, true); + } else if(!$jobj(id).val()) { + $ax.placeholderManager.updatePlaceholder(inputId, true, false); + $ax.placeholderManager.moveCaret(id, 0); + } + } + }); + } else { + inputJobj.bind('keydown', function() { + if(!dObj.HideHintOnFocused) { + var id = this.id; + var inputIndex = id.indexOf('_input'); + if(inputIndex == -1) return; + var inputId = id.substring(0, inputIndex); + + if(!$ax.placeholderManager.isActive(inputId)) return; + $ax.placeholderManager.updatePlaceholder(inputId, false, true); + } + }).bind('keyup', function() { + var id = this.id; + var inputIndex = id.indexOf('_input'); + if(inputIndex == -1) return; + var inputId = id.substring(0, inputIndex); + + if($ax.placeholderManager.isActive(inputId)) return; + if(!dObj.HideHintOnFocused && !$jobj(id).val()) { + $ax.placeholderManager.updatePlaceholder(inputId, true); + $ax.placeholderManager.moveCaret(id, 0); + } + }); + } + + $ax.placeholderManager.registerPlaceholder(elementId, dObj.placeholderText, inputJobj.attr('type') == 'password'); + $ax.placeholderManager.updatePlaceholder(elementId, !($jobj($ax.repeater.applySuffixToElementId(elementId, '_input')).val())); + } + + // Initialize assigned submit buttons + if(dObj.submitButton) { + $element.keyup(function(e) { + if(e.keyCode == '13') { + var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); + var path = $ax.deepCopy(dObj.submitButton.path); + path[path.length] = dObj.submitButton.id; + var itemNum = $ax.repeater.getItemIdFromElementId(elementId); + var submitId = $ax.getScriptIdFromPath(path, scriptId); + + if(itemNum && $ax.getParentRepeaterFromScriptId(submitId) == $ax.getParentRepeaterFromScriptId(scriptId)) { + submitId = $ax.repeater.createElementId(submitId, itemNum); + } + var inputId = $ax.INPUT(submitId); + if($jobj(inputId).length) submitId = inputId; + + $ax.setjBrowserEvent(e); + $ax.event.fireClick(submitId); + } + }).keydown(function(e) { + if(e.keyCode == '13') { + e.preventDefault(); + } + }); + } + + // Don't drag after mousing down on a plain text object + if ($ax.public.fn.IsTextArea(dObj.type) || $ax.public.fn.IsTextBox(dObj.type) || $ax.public.fn.IsListBox(dObj.type) || + $ax.public.fn.IsComboBox(dObj.type) || $ax.public.fn.IsCheckBox(dObj.type) || $ax.public.fn.IsRadioButton(dObj.type)) { + $element.bind($ax.features.eventNames.mouseDownName, function(event) { + event.originalEvent.donotdrag = true; + }); + } + + if($ax.features.supports.mobile) { + $element.bind($ax.features.eventNames.mouseDownName, function() { _setCanClick(true); }); + + if (isDynamicPanel) { + $element.scroll(function() { _setCanClick(false); }); + } + } + + //initialize tree node cursors to default so they will override their parent + if ($ax.public.fn.IsTreeNodeObject(dObj.type) && !(dObj.interactionMap && dObj.interactionMap.onClick)) { + $element.css('cursor', 'default'); + } + + //initialize widgets that are clickable to have the pointer over them when hovering + if($ax.event.HasClick(dObj)) { + if($element) $element.css('cursor', 'pointer'); + } + + // TODO: not sure if we need this. It appears to be working without + //initialize panels for DynamicPanels + if (isDynamicPanel) { + $element.children().each(function() { + var parts = this.id.split('_'); + var state = parts[parts.length - 1].substring(5); + if(state != 0) $ax.visibility.SetVisible(this, false); + }); + } + + //initialize TreeNodes + if ($ax.public.fn.IsTreeNodeObject(dObj.type)) { + if($element.hasClass('treeroot')) return; + + var childrenId = elementId + '_children'; + var children = $element.children('[id="' + childrenId + '"]:first'); + if(children.length > 0) { + var plusMinusId = 'u' + (parseInt($ax.repeater.getScriptIdFromElementId(elementId).substring(1)) + 1); + if(itemId) plusMinusId = $ax.repeater.createElementId(plusMinusId, itemId); + if(!$jobj(plusMinusId).children().first().is('img')) plusMinusId = ''; + $ax.tree.InitializeTreeNode(elementId, plusMinusId, childrenId); + } + $element.click(function() { $ax.tree.SelectTreeNode(elementId, true); }); + } + + //initialize submenus + if ($ax.public.fn.IsMenuObject(dObj.type)) { + if($element.hasClass('sub_menu')) { + var tableCellElementId = $ax.getElementIdFromPath([dObj.parentCellId], { relativeTo: elementId }); + $ax.menu.InitializeSubmenu(elementId, tableCellElementId); + } + } + + // Attach handles for dynamic panels that propagate styles to inner items. + if ((isDynamicPanel || $ax.public.fn.IsLayer(dObj.type)) && dObj.propagate) { + $element.mouseenter(function() { + dynamicPanelMouseOver(this.id); + }).mouseleave(function() { + dynamicPanelMouseLeave(this.id); + }).bind($ax.features.eventNames.mouseDownName, function() { + dynamicPanelMouseDown(this.id); + }).bind($ax.features.eventNames.mouseUpName, function() { + dynamicPanelMouseUp(this.id); + }); + } + + // These are the dynamic panel functions for propagating rollover styles and mouse down styles to inner objects + var dynamicPanelMouseOver = function(elementId, fromChild) { + var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); + if(parent) { + dynamicPanelMouseOver(parent.id, true); + if(parent.direct) return; + } + if($.inArray(elementId, _event.mouseOverIds) != -1) return; + // If this event is coming from a child, don't mark that it's actually entered. + // Only mark that this has been entered if this event has naturally been triggered. (For reason see mouseleave) + if(!fromChild) _event.mouseOverIds[_event.mouseOverIds.length] = elementId; + if(elementId == _event.mouseOverObjectId) return; + _event.mouseOverObjectId = elementId; + $ax.dynamicPanelManager.propagateMouseOver(elementId, true); + }; + var dynamicPanelMouseLeave = function(elementId, fromChild) { + var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); + if(parent) { + dynamicPanelMouseLeave(parent.id, true); + if(parent.direct) return; + } + var index = $.inArray(elementId, _event.mouseOverIds); + // If index != -1, this has been natuarally entered. If naturally entered, then leaving child should not trigger leaving, + // but instead wait for natural mouse leave. If natural mouse enter never triggered, natural mouse leave won't so do this now. + if((index != -1) && fromChild) return; + $ax.splice(_event.mouseOverIds, index, 1); + + if(elementId == _event.mouseOverObjectId) { + _event.mouseOverObjectId = ''; + } + $ax.dynamicPanelManager.propagateMouseOver(elementId, false); + }; + + //attach handlers for button shape and tree node mouse over styles + // TODO: Can this really be removed? Trees seem to work with out (the generic hover case works for it). + // query.filter(function(obj) { + // return $ax.public.fn.IsVector(obj.type) && $ax.public.fn.IsTreeNodeObject(obj.parent.type) && + // obj.parent.style && obj.parent.style.stateStyles && + // obj.parent.style.stateStyles.mouseOver; + // }).mouseenter(function() { + // $ax.style.SetWidgetHover(this.id, true); + // }).mouseleave(function() { + // $ax.style.SetWidgetHover(this.id, false); + // }); + + //handle treeNodeObject events and prevent them from bubbling up. this is necessary because otherwise + //both a sub menu and it's parent would get a click + if ($ax.public.fn.IsTreeNodeObject(dObj.type)) { + $element.click(function() { + //todo -- this was bubbling, but then selecting a child tree node would bubble and select the parent (don't know if there is a better way) + _fireObjectEvent(this.id, 'click', arguments); + return false; + }).each(function() { + if(!this.style.cursor) { + this.style.cursor = 'default'; + } + }); + } + + // Synthetic events + + var map = dObj.interactionMap; + // Attach dynamic panel synthetic drag and swipe events + if(dObj.type == "dynamicPanel" && map && ( + map.onDragStart || map.onDrag || + map.onDragDrop || map.onSwipeLeft || map.onSwipeRight || map.onSwipeUp || map.onSwipeDown)) { + + $element.bind($ax.features.eventNames.mouseDownName, function(e) { $ax.drag.StartDragWidget(e.originalEvent, elementId); }); + } + + // Attach dynamic panel synthetic scroll event + if (isDynamicPanel && map && (map.onScroll || map.onScrollUp || map.onScrollDown)) { + var diagrams = dObj.diagrams; + for(var i = 0; i < diagrams.length; i++) { + var panelId = $ax.repeater.applySuffixToElementId(elementId, '_state' + i); + (function(id) { + if ($('#' + id).data('lastScrollTop') == undefined) $('#' + id).data('lastScrollTop', '0'); + _attachDefaultObjectEvent($('#' + id), elementId, 'scroll', function(e) { + $ax.setjBrowserEvent(e); + var currentEvent = $ax.getjBrowserEvent(); + var eventInfoFromEvent = $ax.getEventInfoFromEvent(currentEvent, false, elementId); + + var currentTop = $('#' + id).scrollTop(); + var lastTop = $('#' + id).data('lastScrollTop'); + + _handleScrollEvent(elementId, eventInfoFromEvent, currentEvent.originalEvent, currentTop < lastTop, currentTop > lastTop, map); + $('#' + id).data('lastScrollTop', currentTop); + }); + })(panelId); + } + } + + // Attach synthetic hover event + if (map && map.onMouseHover) { + var MIN_HOVER_HOLD_TIME = 1000; + + // So when the timeout fires, you know whether it is the same mouseenter that is active or not. + var hoverMouseCount = 0; + // Update eventInfo regularly, so position is accurate. + var hoverEventInfo; + + $element.mouseenter(function(e) { + $ax.setjBrowserEvent(e); + hoverEventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, elementId); + (function(currCount) { + window.setTimeout(function() { + if(currCount == hoverMouseCount) _raiseSyntheticEvent(elementId, 'onMouseHover', false, hoverEventInfo, true); + }, MIN_HOVER_HOLD_TIME); + })(hoverMouseCount); + }).mouseleave(function(e) { + $ax.setjBrowserEvent(e); + hoverMouseCount++; + }).mousemove(function(e) { + $ax.setjBrowserEvent(e); + hoverEventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, elementId); + }); + } + + // Attach synthetic tap and hold event. + if (map && map.onLongClick) { + var MIN_LONG_CLICK_HOLD_TIME = 750; + + // So when the timeout fires, you know whether it is the same mousedown that is active or not. + var longClickMouseCount = 0; + + $element.bind($ax.features.eventNames.mouseDownName, function(e) { + (function(currCount) { + $ax.setjBrowserEvent(e); + var eventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, elementId); + window.setTimeout(function() { + if(currCount == longClickMouseCount) _raiseSyntheticEvent(elementId, 'onLongClick', false, eventInfo, true); + }, MIN_LONG_CLICK_HOLD_TIME); + if(e.preventDefault) e.preventDefault(); + })(longClickMouseCount); + }).bind($ax.features.eventNames.mouseUpName, function(e) { + $ax.setjBrowserEvent(e); + longClickMouseCount++; + }); + }; + + + // Attach synthetic onSelectionChange event to droplist and listbox elements + if ($ax.event.HasSelectionChanged(dObj)) { + $element.bind('change', function(e) { + $ax.setjBrowserEvent(e); + _raiseSyntheticEvent(elementId, 'onSelectionChange'); + }); + }; + + // Highjack key up and key down to keep track of state of keyboard. + if($ax.event.HasKeyUpOrDown(dObj)) _event.initKeyEvents($element); + + // Attach synthetic onTextChange event to textbox and textarea elements + if ($ax.event.HasTextChanged(dObj)) { + var element = $jobj($ax.INPUT(elementId)); + $ax.updateElementText(elementId, element.val()); + //Key down needed because when holding a key down, key up only fires once, but keydown fires repeatedly. + //Key up because last mouse down will only show the state before the last character. + element.bind('keydown', function(e) { + $ax.setjBrowserEvent(e); + $ax.event.TryFireTextChanged(elementId); + }).bind('keyup', function(e) { + $ax.setjBrowserEvent(e); + $ax.event.TryFireTextChanged(elementId); + }); + }; + + // Attach synthetic onCheckedChange event to radiobutton and checkbox elements + if ($ax.public.fn.IsCheckBox(dObj.type) || $ax.public.fn.IsRadioButton(dObj.type)) { + var input = $jobj($ax.INPUT(elementId)); + if ($ax.public.fn.IsRadioButton(dObj.type) && input.prop('checked')) { + $ax.updateRadioButtonSelected(input.attr('name'), elementId); + } + + $element.bind('change', function(e) { + $ax.setjBrowserEvent(e); + var eTarget = e.target || e.srcElement; + _tryFireCheckedChanged(elementId, eTarget.checked); + }); + }; + + var hasTap = map && (map.onClick || map.onDoubleClick); + var hasMove = map && map.onMouseMove; + _event.initMobileEvents(hasTap ? $element : $(), + hasMove ? $element : $(), elementId); + + + //attach link alternate styles + if(dObj.type == 'hyperlink') { + $element.mouseenter(function() { + var linkId = this.id; + if(_event.mouseOverIds.indexOf(linkId) != -1) return true; + _event.mouseOverIds[_event.mouseOverIds.length] = linkId; + var mouseOverObjectId = _event.mouseOverObjectId; + if(mouseOverObjectId && $ax.style.IsWidgetDisabled(mouseOverObjectId)) return true; + + $ax.style.SetLinkHover(linkId); + + var bubble = _fireObjectEvent(linkId, 'mouseenter', arguments); + + $ax.annotation.updateLinkLocations($ax.GetParentIdFromLink(linkId)); + return bubble; + }).mouseleave(function() { + var linkId = this.id; + $ax.splice(_event.mouseOverIds, _event.mouseOverIds.indexOf(linkId), 1); + var mouseOverObjectId = _event.mouseOverObjectId; + if(mouseOverObjectId && $ax.style.IsWidgetDisabled(mouseOverObjectId)) return true; + + $ax.style.SetLinkNotHover(linkId); + + var bubble = _fireObjectEvent(linkId, 'mouseleave', arguments); + + $ax.annotation.updateLinkLocations($ax.GetParentIdFromLink(linkId)); + return bubble; + }).bind($ax.features.eventNames.mouseDownName, function() { + var linkId = this.id; + var mouseOverObjectId = _event.mouseOverObjectId; + if($ax.style.IsWidgetDisabled(mouseOverObjectId)) return undefined; + + if(mouseOverObjectId) $ax.style.SetWidgetMouseDown(mouseOverObjectId, true); + $ax.style.SetLinkMouseDown(linkId); + + $ax.annotation.updateLinkLocations($ax.GetParentIdFromLink(linkId)); + + return false; + }).bind($ax.features.eventNames.mouseUpName, function() { + var linkId = this.id; + var mouseOverObjectId = _event.mouseOverObjectId; + if(mouseOverObjectId && $ax.style.IsWidgetDisabled(mouseOverObjectId)) return; + + if(mouseOverObjectId) $ax.style.SetWidgetMouseDown(mouseOverObjectId, false); + $ax.style.SetLinkNotMouseDown(linkId); + + $ax.annotation.updateLinkLocations($ax.GetParentIdFromLink(linkId)); + + }).click(function() { + var elementId = this.id; + var mouseOverObjectId = _event.mouseOverObjectId; + if(mouseOverObjectId && $ax.style.IsWidgetDisabled(mouseOverObjectId)) return undefined; + + return _fireObjectEvent(elementId, 'click', arguments); + }); + } + + // Init inline frames + if (dObj.type == 'inlineFrame') { + var target = dObj.target; + var url = ''; + if(target.includeVariables && target.url) { + var origSrc = target.url; + url = origSrc.toLowerCase().indexOf('http://') == -1 ? $ax.globalVariableProvider.getLinkUrl(origSrc) : origSrc; + + } else if(target.urlLiteral) { + url = $ax.expr.evaluateExpr(target.urlLiteral, $ax.getEventInfoFromEvent(undefined, true, elementId), true); + } + if(url) $jobj($ax.INPUT(elementId)).attr('src', url); + }; + }); + } + $ax.initializeObjectEvents = _initializeObjectEvents; + + $ax.event.updateIxStyleEvents = function(elementId) { + _dettachIxStyleEvents(elementId); + _attachIxStyleEvents($ax.getObjectFromElementId(elementId), elementId, $jobj(elementId), true); + } + + function clearMouseDownIxStyle(e) { + if(_event.mouseDownObjectId) { + $('#' + _event.mouseDownObjectId).trigger( + { type: "mouseup", + checkMouseOver: e.data && e.data.checkMouseOver + } + ); + } + } + + var _dettachIxStyleEvents = function(elementId) { + var $element = $jobj(elementId); + $element.off('mouseenter.ixStyle') + .off('mouseleave.ixStyle') + .off($ax.features.eventNames.mouseDownName + '.ixStyle') + .off($ax.features.eventNames.mouseUpName + '.ixStyle'); + } + + var _attachIxStyleEvents = function(dObj, elementId, $element, ignoreHasIxStyles) { + //attach button shape alternate styles + var isDynamicPanel = $ax.public.fn.IsDynamicPanel(dObj.type); + var needsMouseFilter = (ignoreHasIxStyles || $ax.event.HasIxStyles(dObj)) + && dObj.type != 'hyperlink' && !$ax.public.fn.IsLayer(dObj.type) && !isDynamicPanel && dObj.type != $ax.constants.TEXT_TYPE && + !$ax.public.fn.IsRepeater(dObj.type) && !$ax.public.fn.IsCheckBox(dObj.type) && !$ax.public.fn.IsRadioButton(dObj.type) + && !$ax.public.fn.IsTreeNodeObject(dObj.type); + if(needsMouseFilter) { + //$element.mouseenter(function () { + $element.on('mouseenter.ixStyle', function () { + var elementId = this.id; + var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); + if(parent && parent.direct) return; + if($.inArray(elementId, _event.mouseOverIds) != -1) return; + _event.mouseOverIds[_event.mouseOverIds.length] = elementId; + + if(elementId == _event.mouseOverObjectId) return; + _event.mouseOverObjectId = elementId; + $ax.style.SetWidgetHover(elementId, true); + $ax.annotation.updateLinkLocations(elementId); + //}).mouseleave(function () { + }).on('mouseleave.ixStyle', function () { + var elementId = this.id; + var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); + if(parent && parent.direct) return; + $ax.splice(_event.mouseOverIds, $.inArray(elementId, _event.mouseOverIds), 1); + + if(elementId == _event.mouseOverObjectId) { + _event.mouseOverObjectId = ''; + } + $ax.style.SetWidgetHover(elementId, false); + $ax.annotation.updateLinkLocations(elementId); + }); + + //$element.bind($ax.features.eventNames.mouseDownName, function () { + $element.on($ax.features.eventNames.mouseDownName + '.ixStyle', function () { + var elementId = this.id; + var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); + if(parent) { + dynamicPanelMouseDown(parent.id); + if(parent.direct) return; + } + _event.mouseDownObjectId = elementId; + //since we don't do mouse capture, it's possible that the mouseup not get triggered later + //in that case, detect the mouseup on document and dragend + $(document).one("mouseup", {checkMouseOver: true}, clearMouseDownIxStyle); + $("#" + elementId).one("dragend", clearMouseDownIxStyle); + + $ax.style.SetWidgetMouseDown(this.id, true); + $ax.annotation.updateLinkLocations(elementId); + //}).bind($ax.features.eventNames.mouseUpName, function () { + }).on($ax.features.eventNames.mouseUpName + '.ixStyle', function (e) { + var elementId = this.id; + var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); + if(parent) { + dynamicPanelMouseUp(parent.id); + if(parent.direct) return; + } + + $(document).off("mouseup", clearMouseDownIxStyle); + $("#" + _event.mouseDownObjectId).off("dragend", clearMouseDownIxStyle); + + _event.mouseDownObjectId = ''; + if(!$ax.style.ObjHasMouseDown(elementId)) return; + + $ax.style.SetWidgetMouseDown(elementId, false, e.checkMouseOver); + $ax.annotation.updateLinkLocations(elementId); + + //there used to be something we needed to make images click, because swapping out the images prevents the click + // this is a note that we can eventually delete. + }); + + } + }; + + var dynamicPanelMouseDown = function (elementId) { + var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); + if(parent) { + dynamicPanelMouseDown(parent.id); + if(parent.direct) return; + } + _event.mouseDownObjectId = elementId; + $ax.dynamicPanelManager.propagateMouseDown(elementId, true); + }; + + var dynamicPanelMouseUp = function (elementId) { + var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); + if(parent) { + dynamicPanelMouseUp(parent.id); + if(parent.direct) return; + } + _event.mouseDownObjectId = ''; + $ax.dynamicPanelManager.propagateMouseDown(elementId, false); + }; + + // Handle key up and key down events + (function() { + var _keyState = {}; + _keyState.ctrl = false; + _keyState.alt = false; + _keyState.shift = false; + _keyState.keyCode = 0; + $ax.event.keyState = function() { + return $ax.deepCopy(_keyState); + }; + + var modifierCodes = [16, 17, 18]; + var clearKeyCode = false; + $ax.event.initKeyEvents = function($query) { + $query.keydown(function (e) { + if(clearKeyCode) { + clearKeyCode = false; + _keyState.keyCode = 0; + } + var elementId = this.id; + + _keyState.ctrl = e.ctrlKey; + + _keyState.alt = e.altKey; + + _keyState.shift = e.shiftKey; + + // If a modifier was pressed, then don't set the keyCode; + if(modifierCodes.indexOf(e.keyCode) == -1) _keyState.keyCode = e.keyCode; + + $ax.setjBrowserEvent(e); + if (!elementId) fireEventThroughContainers('onKeyDown', undefined, false, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.REPEATER], + [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.LAYER_TYPE]); + else _raiseSyntheticEvent(elementId, 'onKeyDown', false, undefined, true); + }); + $query.keyup(function(e) { + var elementId = this.id; + + if (modifierCodes.indexOf(e.keyCode) == -1) clearKeyCode = true; + else if (clearKeyCode) { + clearKeyCode = false; + _keyState.keyCode = 0; + } + + $ax.setjBrowserEvent(e); + // Fire event before updating modifiers. + if (!elementId) fireEventThroughContainers('onKeyUp', undefined, false, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.REPEATER], + [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.LAYER_TYPE]); + else _raiseSyntheticEvent(elementId, 'onKeyUp', false, undefined, true); + + //_keyState.ctrl = e.ctrlKey; + + //_keyState.alt = e.altKey; + + //_keyState.shift = e.shiftKey; + + //// If a non-modifier was lifted, clear the keycode + ///if(modifierCodes.indexOf(e.keyCode) == -1) _keyState.keyCode = 0; + }); + }; + })(); + + // Handle adding mobile events + (function() { + // NOTE: Multi touch is NOT handled currently. + var CLICK_THRESHOLD_PX = 25; + var CLICK_THRESHOLD_PX_SQ = CLICK_THRESHOLD_PX * CLICK_THRESHOLD_PX; + var DBLCLICK_THRESHOLD_MS = 500; + + // Location in page cooridinates + var tapDownLoc; + var lastClickEventTime; + + _event.initMobileEvents = function($tapQuery, $moveQuery, elementId) { + if(!$ax.features.supports.mobile) return; + + // Handle touch start + $tapQuery.bind('touchstart', function(e) { + // We do NOT support multiple touches. This isn't necessarily the touch we want. + var touch = e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]; + if(!touch) return; + + tapDownLoc = [touch.pageX, touch.pageY]; + + var time = (new Date()).getTime(); + if(time - lastClickEventTime < DBLCLICK_THRESHOLD_MS) { + var dObj = elementId === '' ? $ax.pageData.page : $ax.getObjectFromElementId(elementId); + var axEventObject = dObj && dObj.interactionMap && dObj.interactionMap['onDoubleClick']; + if(axEventObject) e.preventDefault(); //for Chrome on Android + } + }).bind('touchend', function(e) { + var touch = e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]; + if(!touch || !tapDownLoc || $ax.style.IsWidgetDisabled(elementId)) return; + + var tapUpLoc = [touch.pageX, touch.pageY]; + var xDiff = tapUpLoc[0] - tapDownLoc[0]; + var yDiff = tapUpLoc[1] - tapDownLoc[1]; + + if((xDiff * xDiff + yDiff * yDiff) < CLICK_THRESHOLD_PX_SQ) { + $ax.setjBrowserEvent(e); + _raiseSyntheticEvent(elementId, 'onClick', false, undefined, true); + + var time = (new Date()).getTime(); + if(time - lastClickEventTime < DBLCLICK_THRESHOLD_MS) { + _raiseSyntheticEvent(elementId, 'onDoubleClick', false, undefined, true); + if(e.originalEvent && e.originalEvent.handled) e.preventDefault(); //for iOS + } + lastClickEventTime = time; + } + }); + + // Handles touch move + $moveQuery.bind('touchmove', function(e) { + $ax.setjBrowserEvent(e); + _raiseSyntheticEvent(elementId, 'onMouseMove', false, undefined, true); + if(e.originalEvent && e.originalEvent.handled) e.preventDefault(); + }); + }; + })(); + + // Handle adding device independent click events to non-widgets + (function() { + var CLICK_THRESHOLD_PX = 25; + var CLICK_THRESHOLD_PX_SQ = CLICK_THRESHOLD_PX * CLICK_THRESHOLD_PX; + + // Location in page cooridinates + var tapDownLoc; + + _event.attachClick = function(query, clickHandler) { + if(!$ax.features.supports.mobile) { + query.click(clickHandler); + return; + } + + $(query).bind('touchstart', function(e) { + // We do NOT support multiple touches. This isn't necessarily the touch we want. + var touch = e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]; + if(!touch) return; + + tapDownLoc = [touch.pageX, touch.pageY]; + }); + + $(query).bind('touchend', function(e) { + var touch = e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]; + if(!touch) return; + + var tapUpLoc = [touch.pageX, touch.pageY]; + var xDiff = tapUpLoc[0] - tapDownLoc[0]; + var yDiff = tapUpLoc[1] - tapDownLoc[1]; + + if((xDiff * xDiff + yDiff * yDiff) < CLICK_THRESHOLD_PX_SQ) { + clickHandler(); + } + }); + }; + })(); + + // Handle firing device independent click events on widgets + (function() { + _event.fireClick = function(elementId) { + if(!$ax.features.supports.mobile) { + $('#' + elementId).click(); + return; + } + _raiseSyntheticEvent(elementId, 'onClick', false, undefined, true); + }; + })(); + + var _mouseLocation = $ax.mouseLocation = { x: 0, y: 0 }; + var _lastmouseLocation = $ax.lastMouseLocation = { x: 0, y: 0 }; + + var _updateMouseLocation = function(e, end) { + if(!e) return; + + if(IE_10_AND_BELOW && typeof (e.type) == 'unknown') return; + if(e.type != 'mousemove' && e.type != 'touchstart' && e.type != 'touchmove' && e.type != 'touchend') return; + + var newX; + var newY; + if(IE_10_AND_BELOW) { + newX = e.clientX + $('html').scrollLeft(); + newY = e.clientY + $('html').scrollTop(); + } else { + newX = e.pageX; + newY = e.pageY; + } + //var body = $('body'); + //if(body.css('position') == 'relative') newX = Math.round(newX - Number(body.css('left').replace('px', '')) - Math.max(0, ($(window).width() - body.width()) / 2)); + + if(_mouseLocation.x == newX && _mouseLocation.y == newY) return; + + _lastmouseLocation.x = _mouseLocation.x; + _lastmouseLocation.y = _mouseLocation.y; + _mouseLocation.x = newX; + _mouseLocation.y = newY; + + $ax.geometry.tick(_mouseLocation.x, _mouseLocation.y, end); + }; + _event.updateMouseLocation = _updateMouseLocation; + + var _leavingState = function(stateId) { + var mouseOverIds = _event.mouseOverIds; + if(mouseOverIds.length == 0) return; + + var stateQuery = $jobj(stateId); + for(var i = mouseOverIds.length - 1; i >= 0; i--) { + var id = mouseOverIds[i]; + if(stateQuery.find('#' + id).length) { + $ax.splice(mouseOverIds, $.inArray(id, mouseOverIds), 1); + $ax.style.SetWidgetMouseDown(id, false); + $ax.style.SetWidgetHover(id, false); + } + } + + }; + _event.leavingState = _leavingState; + + var _raiseSelectedEvents = function(elementId, value) { + $ax.event.raiseSyntheticEvent(elementId, 'onSelectedChange'); + if(value) $ax.event.raiseSyntheticEvent(elementId, 'onSelect'); + else $ax.event.raiseSyntheticEvent(elementId, 'onUnselect'); + }; + $ax.event.raiseSelectedEvents = _raiseSelectedEvents; + + var _raiseSyntheticEvent = function(elementId, eventName, skipShowDescription, eventInfo, nonSynthetic) { + // Empty string used when this is an event directly on the page. + var dObj = elementId === '' ? $ax.pageData.page : $ax.getObjectFromElementId(elementId); + var axEventObject = dObj && dObj.interactionMap && dObj.interactionMap[eventName]; + if(!axEventObject) return; + + eventInfo = eventInfo || $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), skipShowDescription, elementId); + // $ax.recording.maybeRecordEvent(elementId, eventInfo, axEventObject, new Date().getTime()); + _handleEvent(elementId, eventInfo, axEventObject, false, !nonSynthetic); + }; + $ax.event.raiseSyntheticEvent = _raiseSyntheticEvent; + + var _hasSyntheticEvent = function(scriptId, eventName) { + var dObj = $ax.getObjectFromScriptId(scriptId); + var axEventObject = dObj && dObj.interactionMap && dObj.interactionMap[eventName]; + return Boolean(axEventObject); + }; + $ax.event.hasSyntheticEvent = _hasSyntheticEvent; + + var _addEvent = function (target, eventType, handler, useCapture) { + //this return value is only for debug purpose + var succeed = undefined; + if(target.attachEvent) { + if($ax.features.supports.windowsMobile) { + succeed = target.attachEvent(eventType, handler); + } else { + succeed = target.attachEvent('on' + eventType, handler); + } + } else if(target.addEventListener) { + target.addEventListener(eventType, handler, useCapture); + succeed = true; + } + + return succeed; + } + $ax.event.addEvent = _addEvent; + + var _removeEvent = function(target, eventType, handler, useCapture, skipCheckingWindowsMobile) { + //this return value is only for debug purpose + var succeed = undefined; + + if(target.detachEvent) { + if(!skipCheckingWindowsMobile && $ax.features.supports.windowsMobile) { + succeed = target.detachEvent(eventType, handler); + } else { + succeed = target.detachEvent('on' + eventType, handler); + } + } else if(target.removeEventListener) { + target.removeEventListener(eventType, handler, useCapture); + succeed = true; + } + + return succeed; + } + $ax.event.removeEvent = _removeEvent; + + var _initialize = function() { + $ax.repeater.load(); + + // Make sure key events for page are initialized first. That way they will update the value of key pressed before any other events occur. + _event.initKeyEvents($(window)); + + initSuppressingEvents(); + + // Anything with an item id is in a repeater and should be handled by that repeater. + _initializeObjectEvents($ax(function(obj, elementId) { return !$ax.repeater.getItemIdFromElementId(elementId); })); + + //finally, process the pageload + _pageLoad(); + // _loadDynamicPanelsAndMasters(); + // $ax.repeater.init(); + + // and wipe out the basic links. + $('.basiclink').click(function() { + return false; + }); + }; + _event.initialize = _initialize; + + $ax.event.HasIxStyles = function(diagramObject) { + if(diagramObject.style.stateStyles) return true; + if(diagramObject.adaptiveStyles) { + for(var viewId in diagramObject.adaptiveStyles) { + if(diagramObject.adaptiveStyles[viewId].stateStyles) return true; + } + } + return false; + }; + + $ax.event.HasTextChanged = function(diagramObject) { + if (!$ax.public.fn.IsTextBox(diagramObject.type) && !$ax.public.fn.IsTextArea(diagramObject.type)) return false; + var map = diagramObject.interactionMap; + return map && map.onTextChange; + }; + + $ax.event.TryFireTextChanged = function(elementId) { + var query = $jobj($ax.repeater.applySuffixToElementId(elementId, '_input')); + if(!$ax.hasElementTextChanged(elementId, query.val())) return; + $ax.updateElementText(elementId, query.val()); + + $ax.event.raiseSyntheticEvent(elementId, 'onTextChange'); + }; + + $ax.event.HasSelectionChanged = function(diagramObject) { + if (!$ax.public.fn.IsListBox(diagramObject.type) && !$ax.public.fn.IsComboBox(diagramObject.type)) return false; + var map = diagramObject.interactionMap; + return map && map.onSelectionChange; + }; + + $ax.event.HasKeyUpOrDown = function (diagramObject) { + if($ax.public.fn.IsTextBox(diagramObject.type) || $ax.public.fn.IsTextArea(diagramObject.type)) return true; + var map = diagramObject.interactionMap; + return map && (map.onKeyUp || map.onKeyDown); + }; + + $ax.event.HasCheckedChanged = function(diagramObject) { + if (!$ax.public.fn.IsCheckBox(diagramObject.type) && !$ax.public.fn.IsRadioButton(diagramObject.type)) return false; + var map = diagramObject.interactionMap; + return map && map.onSelectedChange; + }; + + $ax.event.HasClick = function (diagramObject) { + var map = diagramObject.interactionMap; + return map && map.onClick; + }; + + var _tryFireCheckedChanged = $ax.event.TryFireCheckChanged = function(elementId, value) { + var isRadio = $ax.public.fn.IsRadioButton($obj(elementId).type); + if(isRadio) { + if(!value) { + $ax.updateRadioButtonSelected($jobj($ax.INPUT(elementId)).attr('name'), undefined); + } else { + var last = $ax.updateRadioButtonSelected($jobj($ax.INPUT(elementId)).attr('name'), elementId); + + // If no change, this should not fire + if(last == elementId) return; + + // Initially selecting one, last may be undefined + if(last) { + //here last is the previouse selected elementid + $ax.event.raiseSelectedEvents(last, false); + } + } + } + + $ax.event.raiseSelectedEvents(elementId, value); + }; + + //onload everything now, not only dp and master + var _loadDynamicPanelsAndMasters = function(objects, path, itemId) { + fireEventThroughContainers('onLoad', objects, true, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE], + [$ax.constants.ALL_TYPE], path, itemId); + }; + $ax.loadDynamicPanelsAndMasters = _loadDynamicPanelsAndMasters; + + var _viewChangePageAndMasters = function(forceSwitchTo) { + fireEventThroughContainers('onAdaptiveViewChange', undefined, true, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE], + [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE]); + _postAdaptiveViewChanged(forceSwitchTo); + }; + $ax.viewChangePageAndMasters = _viewChangePageAndMasters; + + //if forceSwitchTo is true, we will also update the checkmark in sitemap.js + var _postAdaptiveViewChanged = function(forceSwitchTo) { + //only trigger adaptive view changed if the window is on the mainframe. Also triggered on init, even if default. + try { + if(window.name == 'mainFrame' || + (!CHROME_5_LOCAL && window.parent.$ && window.parent.$('#mainFrame').length > 0)) { + var data = { + viewId: $ax.adaptive.currentViewId, + forceSwitchTo: forceSwitchTo + }; + $axure.messageCenter.postMessage('adaptiveViewChange', data); + } + } catch(e) { } + }; + $ax.postAdaptiveViewChanged = _postAdaptiveViewChanged; + + var _postResize = $ax.postResize = function(e) { + $ax.setjBrowserEvent(e); + return fireEventThroughContainers('onResize', undefined, false, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.REPEATER], + [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE]); + }; + + //fire events for table, menu and tree, including its sub items + var _fireEventsForTableMenuAndTree = function (object, event, skipShowDescription, eventInfo, path, synthetic) { + if (!path) path = []; + var pathCopy = path.slice(); + + pathCopy[path.length] = object.id; + var scriptId = $ax.getScriptIdFromPath(pathCopy); + $ax.event.raiseSyntheticEvent(scriptId, event, skipShowDescription, eventInfo, !synthetic); + + if(object.objects) { + for(var index = 0; index < object.objects.length; index++) { + var subObj = object.objects[index]; + if ($ax.public.fn.IsTableCell(subObj.type)) { + pathCopy[path.length] = subObj.id; + scriptId = $ax.getScriptIdFromPath(pathCopy); + $ax.event.raiseSyntheticEvent(scriptId, event, skipShowDescription, eventInfo, !synthetic); + } else if ($ax.public.fn.IsTable(object.type) || $ax.public.fn.IsMenuObject(object.type) || $ax.public.fn.IsTreeNodeObject(object.type)) { + _fireEventsForTableMenuAndTree(subObj, event, skipShowDescription, eventInfo, path, synthetic); + } + } + } + } + + //remember the scroll bar position, so we can detect scroll up/down + var lastScrollTop; + + var fireEventForPageOrMaster = function (elementId, eventName, interactionMap, isPage, skipShowDescription, synthetic) { + if(!interactionMap) return; + + var axEvent = interactionMap[eventName]; + var scrolling = eventName === "onScroll"; + if (scrolling && !axEvent) axEvent = interactionMap.onScrollUp || interactionMap.onScrollDown; + + if (axEvent) { + var currentEvent = $ax.getjBrowserEvent(); + var eventInfo = $ax.getEventInfoFromEvent(currentEvent, skipShowDescription, elementId); + + if(isPage) { + eventInfo.label = $ax.pageData.page.name; + eventInfo.friendlyType = 'Page'; + } else eventInfo.isMasterEvent = true; + + if(scrolling) _handleScrollEvent(elementId, eventInfo, currentEvent.originalEvent, _event.windowScrollingUp, _event.windowScrollingDown, interactionMap, skipShowDescription, synthetic); + else _handleEvent(elementId, eventInfo, axEvent, skipShowDescription, synthetic); + } + } + // Filters include page, referenceDiagramObject, dynamicPanel, and repeater. + var _callFilterCheck = function(callFilter, type) { + for(var index = 0; index < callFilter.length; index++) { + var currentType = callFilter[index]; + if(currentType === $ax.constants.ALL_TYPE || currentType === type) return true; + } + return false; + }; + + var fireEventThroughContainers = function(eventName, objects, synthetic, searchFilter, callFilter, path, itemId) { + // TODO: may want to pass in this as a parameter. At that point, may want to convert some of them to an option parameter. For now this is the only case + var skipShowDescription = eventName == 'onLoad'; + + // If objects undefined, load page + if(!objects) { + if(_callFilterCheck(callFilter, $ax.constants.PAGE_TYPE)) { + //if scrolling, set direction, later master will know + if(eventName === "onScroll") { + var currentScrollTop = $(window).scrollTop(); + _event.windowScrollingUp = currentScrollTop < lastScrollTop; + _event.windowScrollingDown = currentScrollTop > lastScrollTop; + } + + fireEventForPageOrMaster('', eventName, $ax.pageData.page.interactionMap, true, skipShowDescription, synthetic); + } + if(searchFilter.indexOf($ax.constants.PAGE_TYPE) != -1) fireEventThroughContainers(eventName, $ax.pageData.page.diagram.objects, synthetic, searchFilter, callFilter); + //reset and save scrolling info at the end + if(currentScrollTop) { + lastScrollTop = currentScrollTop; + _event.windowScrollingUp = undefined; + _event.windowScrollingDown = undefined; + } + + return; + } + + if(!path) path = []; + + var pathCopy = []; + for(var j = 0; j < path.length; j++) pathCopy[j] = path[j]; + + for(var i = 0; i < objects.length; i++) { + var obj = objects[i]; + pathCopy[path.length] = obj.id; + if (!$ax.public.fn.IsReferenceDiagramObject(obj.type) && !$ax.public.fn.IsDynamicPanel(obj.type) && !$ax.public.fn.IsRepeater(obj.type) && !$ax.public.fn.IsLayer(obj.type)) { + if(_callFilterCheck(callFilter)) { //fire current event for all types + if ($ax.public.fn.IsTable(obj.type) || $ax.public.fn.IsMenuObject(obj.type) || $ax.public.fn.IsTreeNodeObject(obj.type)) { + _fireEventsForTableMenuAndTree(obj, eventName, skipShowDescription, undefined, path, !synthetic); + } else { + var scriptId = $ax.getScriptIdFromPath(pathCopy); + if(scriptId && itemId) scriptId = $ax.repeater.createElementId(scriptId, itemId); + $ax.event.raiseSyntheticEvent(scriptId, eventName, skipShowDescription, undefined, !synthetic); + } + } + continue; + } + + var objId = $ax.getScriptIdFromPath(pathCopy); + // If limboed, move on to next item + if(!objId) continue; + if(itemId) objId = $ax.repeater.createElementId(objId, itemId); + + if($ax.public.fn.IsReferenceDiagramObject(obj.type)) { + if(_callFilterCheck(callFilter, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE)) { + fireEventForPageOrMaster(objId, eventName, $ax.pageData.masters[obj.masterId].interactionMap, false, skipShowDescription, synthetic); + } + if(searchFilter.indexOf($ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE) != -1) fireEventThroughContainers(eventName, $ax.pageData.masters[obj.masterId].diagram.objects, synthetic, searchFilter, callFilter, pathCopy, itemId); + } else if($ax.public.fn.IsDynamicPanel(obj.type)) { + if(_callFilterCheck(callFilter, $ax.constants.DYNAMIC_PANEL_TYPE)) $ax.event.raiseSyntheticEvent(objId, eventName, skipShowDescription, undefined, !synthetic); + + if(searchFilter.indexOf($ax.constants.DYNAMIC_PANEL_TYPE) != -1) { + var diagrams = obj.diagrams; + for(var j = 0; j < diagrams.length; j++) { + fireEventThroughContainers(eventName, diagrams[j].objects, synthetic, searchFilter, callFilter, path, itemId); + } + } + } else if($ax.public.fn.IsRepeater(obj.type)) { + // TODO: possible an option for repeater item? Now fires overall for the repeater + if(_callFilterCheck(callFilter, $ax.constants.REPEATER)) $ax.event.raiseSyntheticEvent(objId, eventName, skipShowDescription, undefined, !synthetic); + if(searchFilter.indexOf($ax.constants.REPEATER) != -1) { + var itemIds = $ax.getItemIdsForRepeater(objId); + for(var j = 0; j < itemIds.length; j++) { + fireEventThroughContainers(eventName, obj.objects, synthetic, searchFilter, callFilter, path, itemIds[j]); + } + } + } else if($ax.public.fn.IsLayer(obj.type)) { + if(_callFilterCheck(callFilter, $ax.constants.LAYER_TYPE)) $ax.event.raiseSyntheticEvent(objId, eventName, skipShowDescription, undefined, !synthetic); + + if(obj.objs && obj.objs.length > 0) { + fireEventThroughContainers(eventName, obj.objs, synthetic, searchFilter, callFilter, path, itemId); + } + } + } + + eventNesting -= 1; + + }; // FOCUS stuff + (function() { + + })(); + + + var _pageLoad = function() { + + // Map of axure event names to pair of what it should attach to, and what the jquery event name is. + var PAGE_AXURE_TO_JQUERY_EVENT_NAMES = { + 'onScroll': [window, 'scroll'], + 'onScrollUp': [window, 'scrollup'], + 'onScrollDown': [window, 'scrolldown'], + //'onResize': [window, 'resize'], + 'onContextMenu': [window, 'contextmenu'] + }; + + var $win = $(window); + if(!$ax.features.supports.mobile) { + PAGE_AXURE_TO_JQUERY_EVENT_NAMES.onClick = ['html', 'click']; + PAGE_AXURE_TO_JQUERY_EVENT_NAMES.onDoubleClick = ['html', 'dblclick']; + PAGE_AXURE_TO_JQUERY_EVENT_NAMES.onMouseMove = ['html', 'mousemove']; + } else { + _event.initMobileEvents($win, $win, ''); + + $win.bind($ax.features.eventNames.mouseDownName, _updateMouseLocation); + $win.bind($ax.features.eventNames.mouseUpName, function(e) { _updateMouseLocation(e, true); }); + + $win.scroll(function() { _setCanClick(false); }); + $win.bind($ax.features.eventNames.mouseDownName, (function() { + _setCanClick(true); + })); + } + $win.bind($ax.features.eventNames.mouseMoveName, _updateMouseLocation); + $win.scroll($ax.flyoutManager.reregisterAllFlyouts); + + for(key in PAGE_AXURE_TO_JQUERY_EVENT_NAMES) { + if(!PAGE_AXURE_TO_JQUERY_EVENT_NAMES.hasOwnProperty(key)) continue; + (function(axureName) { + var jqueryEventNamePair = PAGE_AXURE_TO_JQUERY_EVENT_NAMES[axureName]; + var actionName = jqueryEventNamePair[1]; + + if(actionName == "scrollup" || actionName == "scrolldown") return; + + $(jqueryEventNamePair[0])[actionName](function (e) { + $ax.setjBrowserEvent(e); + return fireEventThroughContainers(axureName, undefined, false, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.REPEATER], + [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE]); + }); + })(key); + } + + eventNesting -= 1; + lastScrollTop = 0; + }; + _event.pageLoad = _pageLoad; + + +}); +//***** recording.js *****// +// ******* Recording MANAGER ******** // + +$axure.internal(function($ax) { + var _recording = $ax.recording = {}; + + $ax.recording.recordEvent = function(element, eventInfo, axEventObject, timeStamp) { + + var elementHtml = $jobj(element); + var className = elementHtml.attr('class'); + var inputValue; + + if(className === 'ax_checkbox') { + inputValue = elementHtml.find('#' + element + '_input')[0].checked; + eventInfo.inputType = className; + eventInfo.inputValue = inputValue; + } + + if(className === 'ax_text_field') { + inputValue = elementHtml.find('#' + element + '_input').val(); + eventInfo.inputType = className; + eventInfo.inputValue = inputValue; + } + + + var scriptId = $ax.repeater.getScriptIdFromElementId(element); + var diagramObjectPath = $ax.getPathFromScriptId(scriptId); + var form = { + recordingId: $ax.recording.recordingId, + elementID: element, + eventType: axEventObject.description, + 'eventInfo': eventInfo, + // eventObject: axEventObject, + 'timeStamp': timeStamp, + 'path': diagramObjectPath +// , +// 'trigger': function() { +// $ax.event.handleEvent(element, eventInfo, axEventObject); +// return false; +// } + }; + + $ax.messageCenter.postMessage('logEvent', form); + }; + + + $ax.recording.maybeRecordEvent = function(element, eventInfo, axEventObject, timeStamp) { + }; + + + $ax.recording.recordingId = ""; + $ax.recording.recordingName = ""; + + $ax.messageCenter.addMessageListener(function(message, data) { + if(message === 'startRecording') { + $ax.recording.maybeRecordEvent = $ax.recording.recordEvent; + $ax.recording.recordingId = data.recordingId; + $ax.recording.recordingName = data.recordingName; + } else if(message === 'stopRecording') { + $ax.recording.maybeRecordEvent = function(element, eventInfo, axEventObject, timeStamp) { + }; + + } + else if(message === 'playEvent') { + + var eventType = makeFirstLetterLower(data.eventType); + var inputElement; + + var dObj = data.element === '' ? $ax.pageData.page : $ax.getObjectFromElementId(data.element); + if(!data.axEventObject) { + data.axEventObject = dObj && dObj.interactionMap && dObj.interactionMap[eventType]; + } + + data.eventInfo.thiswidget = $ax.getWidgetInfo(data.element); + data.eventInfo.item = $ax.getItemInfo(data.element); + + if(data.eventInfo.inputType && data.eventInfo.inputType === 'ax_checkbox') { + inputElement = $jobj(data.element + '_input'); + inputElement[0].checked = data.eventInfo.inputValue; + } + + if(data.eventInfo.inputType && data.eventInfo.inputType === 'ax_text_field') { + inputElement = $jobj(data.element + '_input'); + inputElement.val(data.eventInfo.inputValue); + } + + $ax.event.handleEvent(data.element, data.eventInfo, data.axEventObject, false, true); + } + }); + + var makeFirstLetterLower = function(eventName) { + return eventName.substr(0, 1).toLowerCase() + eventName.substr(1); + }; + +}); +//***** action.js *****// +$axure.internal(function($ax) { + var _actionHandlers = {}; + var _action = $ax.action = {}; + + var queueTypes = _action.queueTypes = { + none: 0, + move: 1, + setState: 2, + fade: 3, + resize: 4, + rotate: 5 + }; + + var animationQueue = {}; + + // using array as the key doesn't play nice + var nextAnimationId = 1; + var animationsToCount = {}; + var actionToActionGroups = {}; + var getAnimation = function(id, type) { + return animationQueue[id] && animationQueue[id][type] && animationQueue[id][type][0]; + }; + + var _addAnimation = _action.addAnimation = function (id, type, func, suppressFire) { + + var wasEmpty = !getAnimation(id, type); + // Add the func to the queue. Create the queue if necessary. + var idQueue = animationQueue[id]; + if(!idQueue) animationQueue[id] = idQueue = {}; + + var queue = idQueue[type]; + if(!queue) idQueue[type] = queue = []; + + queue[queue.length] = func; + // If it was empty, there isn't a callback waiting to be called on this. You have to fire it manually. + // If this is waiting on something, suppress it, and it will fire when it's ready + if(wasEmpty && !suppressFire) func(); + }; + + var _addAnimations = function (animations) { + if(animations.length == 1) { + _addAnimation(animations[0].id, animations[0].type, animations[0].func); + return; + } + var allReady = true; + var readyCount = 0; + for(var i = 0; i < animations.length; i++) { + var animation = animations[i]; + var thisReady = !getAnimation(animation.id, animation.type); + allReady = allReady && thisReady; + if (thisReady) readyCount++; + else { + var typeToGroups = actionToActionGroups[animation.id]; + if (!typeToGroups) actionToActionGroups[animation.id] = typeToGroups = {}; + + var groups = typeToGroups[animation.type]; + if (!groups) typeToGroups[animation.type] = groups = []; + + groups[groups.length] = animations; + } + } + + for(i = 0; i < animations.length; i++) { + animation = animations[i]; + _addAnimation(animation.id, animation.type, animation.func, true); + } + + if (allReady) { + for (i = 0; i < animations.length; i++) animations[i].func(); + } else { + animations.id = nextAnimationId++; + animationsToCount[animations.id] = readyCount; + } + } + + var _fireAnimationFromQueue = _action.fireAnimationFromQueue = function (id, type) { + // Remove the function that was just fired + if (animationQueue[id] && animationQueue[id][type]) $ax.splice(animationQueue[id][type], 0, 1); + + // Fire the next func if there is one + var func = getAnimation(id, type); + if(func && !_checkFireActionGroup(id, type, func)) func(); + }; + + var _checkFireActionGroup = function(id, type, func) { + var group = actionToActionGroups[id]; + group = group && group[type]; + if (!group || group.length == 0) return false; + + var animations = group[0]; + var found = false; + for (var i = 0; i < animations.length; i++) { + var animation = animations[i]; + if (animation.id == id && animation.type == type) { + found = func == animation.func; + break; + } + } + + // if found then update this action group, otherwise, keep waiting for right action to fire + if(!found) return false; + $ax.splice(group, 0, 1); + var count = animationsToCount[animations.id] + 1; + if(count != animations.length) { + animationsToCount[animations.id] = count; + return true; + } + delete animationsToCount[animations.id]; + + // Funcs is needed because an earlier func can try to cascade right away (when no animation for example) and will kill this func and move on to the + // next one (which may not even exist). If we get all funcs before calling any, then we know they are all the func we want. + var funcs = []; + for(i = 0; i < animations.length; i++) { + animation = animations[i]; + funcs.push(getAnimation(animation.id, animation.type)); + } + for(i = 0; i < funcs.length; i++) { + funcs[i](); + } + + return true; + } + + var _refreshing = []; + _action.refreshStart = function(repeaterId) { _refreshing.push(repeaterId); }; + _action.refreshEnd = function() { _refreshing.pop(); }; + + // TODO: [ben] Consider moving this to repeater.js + var _repeatersToRefresh = _action.repeatersToRefresh = []; + var _ignoreAction = function(repeaterId) { + for(var i = 0; i < _refreshing.length; i++) if(_refreshing[i] == repeaterId) return true; + return false; + }; + + var _addRefresh = function(repeaterId) { + if(_repeatersToRefresh.indexOf(repeaterId) == -1) _repeatersToRefresh.push(repeaterId); + }; + + var _getIdToResizeMoveState = function(eventInfo) { + if(!eventInfo.idToResizeMoveState) eventInfo.idToResizeMoveState = {}; + return eventInfo.idToResizeMoveState; + } + + var _queueResizeMove = function (id, type, eventInfo, actionInfo) { + if (type == queueTypes.resize || type == queueTypes.rotate) $ax.public.fn.convertToSingleImage($jobj(id)); + + var idToResizeMoveState = _getIdToResizeMoveState(eventInfo); + if(!idToResizeMoveState[id]) { + idToResizeMoveState[id] = {}; + idToResizeMoveState[id][queueTypes.move] = { queue: [], used: 0 }; + idToResizeMoveState[id][queueTypes.resize] = { queue: [], used: 0 }; + idToResizeMoveState[id][queueTypes.rotate] = { queue: [], used: 0 }; + } + var state = idToResizeMoveState[id]; + + // If this is not a type being queued (no action of it's type waiting already) then if it is an instant, fire right away. + var myOptions = type == queueTypes.resize ? actionInfo : actionInfo.options; + if(!state[type].queue.length && (!myOptions.easing || myOptions.easing == 'none' || !myOptions.duration)) { + var func = type == queueTypes.resize ? _addResize : type == queueTypes.rotate ? _addRotate : _addMove; + func(id, eventInfo, actionInfo, { easing: 'none', duration: 0, stop: { instant: true } }); + return; + } + + // Check other 2 types to see if either is empty, if so, we can't do anything, so just queue it up + var otherType1 = type == queueTypes.move ? queueTypes.resize : queueTypes.move; + var otherType2 = type == queueTypes.rotate ? queueTypes.resize : queueTypes.rotate; + if (!state[otherType1].queue.length || !state[otherType2].queue.length) { + state[type].queue.push({ eventInfo: eventInfo, actionInfo: actionInfo }); + } else { + var duration = myOptions.duration; + var used1 = state[otherType1].used; + var used2 = state[otherType2].used; + + while(state[otherType1].queue.length && state[otherType2].queue.length && duration != 0) { + var other1 = state[otherType1].queue[0]; + var otherOptions1 = otherType1 == queueTypes.resize ? other1.actionInfo : other1.actionInfo.options; + // If queue up action is a non animation, then don't combo it, just queue it and move on + if(!otherOptions1.easing || otherOptions1.easing == 'none' || !otherOptions1.duration) { + func = otherType1 == queueTypes.resize ? _addResize : otherType1 == queueTypes.rotate ? _addRotate : _addMove; + func(id, eventInfo, actionInfo, { easing: 'none', duration: 0, stop: { instant: true } }); + continue; + } + var other2 = state[otherType2].queue[0]; + var otherOptions2 = otherType2 == queueTypes.resize ? other2.actionInfo : other2.actionInfo.options; + // If queue up action is a non animation, then don't combo it, just queue it and move on + if(!otherOptions2.easing || otherOptions2.easing == 'none' || !otherOptions2.duration) { + func = otherType2 == queueTypes.resize ? _addResize : otherType2 == queueTypes.rotate ? _addRotate : _addMove; + func(id, eventInfo, actionInfo, { easing: 'none', duration: 0, stop: { instant: true } }); + continue; + } + + // Other duration is what is left over. When in queue it may be partly finished already + var otherDuration1 = otherOptions1.duration - used1; + var otherDuration2 = otherOptions2.duration - used2; + + var resizeInfo = type == queueTypes.resize ? actionInfo : otherType1 == queueTypes.resize ? other1.actionInfo : other2.actionInfo; + var rotateInfo = type == queueTypes.rotate ? actionInfo : otherType1 == queueTypes.rotate ? other1.actionInfo : other2.actionInfo; + var moveInfo = type == queueTypes.move ? actionInfo : otherType1 == queueTypes.move ? other1.actionInfo : other2.actionInfo; + var options = { easing: moveInfo.options.easing, duration: Math.min(duration, otherDuration1, otherDuration2) }; + // Start for self is whole duration - duration left, end is start plus duration of combo to be queued, length is duration + var stop = { start: myOptions.duration - duration, len: myOptions.duration }; + stop.end = stop.start + options.duration; + // Start for other is used (will be 0 after 1st round), end is start plus length is duration of combo to be queued, length is other duration + var otherStop1 = { start: used1, end: options.duration + used1, len: otherOptions1.duration }; + var otherStop2 = { start: used2, end: options.duration + used2, len: otherOptions2.duration }; + options.stop = type == queueTypes.resize ? stop : otherType1 == queueTypes.resize ? otherStop1 : otherStop2; + options.moveStop = type == queueTypes.move ? stop : otherType1 == queueTypes.move ? otherStop1 : otherStop2; + options.rotateStop = type == queueTypes.rotate ? stop : otherType1 == queueTypes.rotate ? otherStop1 : otherStop2; + + _addResize(id, eventInfo, resizeInfo, options, moveInfo, rotateInfo); + + // Update duration for this animation + duration -= options.duration; + // For others update used and remove from queue if necessary + if(otherDuration1 == options.duration) { + $ax.splice(state[otherType1].queue, 0, 1); + used1 = 0; + } else used1 += options.duration; + + if(otherDuration2 == options.duration) { + $ax.splice(state[otherType2].queue, 0, 1); + used2 = 0; + } else used2 += options.duration; + } + + // Start queue for new type if necessary + if(duration) { + state[type].queue.push({ eventInfo: eventInfo, actionInfo: actionInfo }); + state[type].used = myOptions.duration - duration; + } + + // Update used for others + state[otherType1].used = used1; + state[otherType2].used = used2; + } + }; + + _action.flushAllResizeMoveActions = function (eventInfo) { + var idToResizeMoveState = _getIdToResizeMoveState(eventInfo); + for(var id in idToResizeMoveState) _flushResizeMoveActions(id, idToResizeMoveState); + }; + + var _flushResizeMoveActions = function(id, idToResizeMoveState) { + var state = idToResizeMoveState[id]; + var move = state[queueTypes.move]; + var moveInfo = move.queue[0]; + var resize = state[queueTypes.resize]; + var resizeInfo = resize.queue[0]; + var rotate = state[queueTypes.rotate]; + var rotateInfo = rotate.queue[0]; + while (moveInfo || resizeInfo || rotateInfo) { + var eventInfo = moveInfo ? moveInfo.eventInfo : resizeInfo ? resizeInfo.eventInfo : rotateInfo.eventInfo; + moveInfo = moveInfo && moveInfo.actionInfo; + resizeInfo = resizeInfo && resizeInfo.actionInfo; + rotateInfo = rotateInfo && rotateInfo.actionInfo; + + // Resize is used by default, then rotate + if(resizeInfo) { + // Check for instant resize + if(!resizeInfo.duration || resizeInfo.easing == 'none') { + _addResize(id, resize.queue[0].eventInfo, resizeInfo, { easing: 'none', duration: 0, stop: { instant: true } }); + _updateResizeMoveUsed(id, queueTypes.resize, 0, idToResizeMoveState); + resizeInfo = resize.queue[0]; + continue; + } + + var duration = resizeInfo.duration - resize.used; + if(moveInfo) duration = Math.min(duration, moveInfo.options.duration - move.used); + if(rotateInfo) duration = Math.min(duration, rotateInfo.options.duration - rotate.used); + + var baseOptions = moveInfo ? moveInfo.options : resizeInfo; + var options = { easing: baseOptions.easing, duration: duration }; + + options.stop = { start: resize.used, end: resize.used + duration, len: resizeInfo.duration }; + if(moveInfo) options.moveStop = { start: move.used, end: move.used + duration, len: moveInfo.options.duration }; + if(rotateInfo) options.rotateStop = { start: rotate.used, end: rotate.used + duration, len: rotateInfo.options.duration }; + + _addResize(id, eventInfo, resizeInfo, options, moveInfo, rotateInfo); + + _updateResizeMoveUsed(id, queueTypes.resize, duration, idToResizeMoveState); + resizeInfo = resize.queue[0]; + if(rotateInfo) { + _updateResizeMoveUsed(id, queueTypes.rotate, duration, idToResizeMoveState); + rotateInfo = rotate.queue[0]; + } + if(moveInfo) { + _updateResizeMoveUsed(id, queueTypes.move, duration, idToResizeMoveState); + moveInfo = move.queue[0]; + } + } else if (rotateInfo) { + // Check for instant rotate + if(!rotateInfo.options.duration || rotateInfo.options.easing == 'none') { + _addRotate(id, rotate.queue[0].eventInfo, rotateInfo, { easing: 'none', duration: 0, stop: { instant: true } }); + _updateResizeMoveUsed(id, queueTypes.rotate, 0, idToResizeMoveState); + rotateInfo = rotate.queue[0]; + continue; + } + + duration = rotateInfo.options.duration - rotate.used; + if(moveInfo) duration = Math.min(duration, moveInfo.options.duration - move.used); + + baseOptions = moveInfo ? moveInfo.options : rotateInfo.options; + options = { easing: baseOptions.easing, duration: duration }; + + options.stop = { start: rotate.used, end: rotate.used + duration, len: rotateInfo.options.duration }; + if(moveInfo) options.moveStop = { start: move.used, end: move.used + duration, len: moveInfo.options.duration }; + + _addRotate(id, eventInfo, rotateInfo, options, moveInfo); + + _updateResizeMoveUsed(id, queueTypes.rotate, duration, idToResizeMoveState); + rotateInfo = rotate.queue[0]; + if(moveInfo) { + _updateResizeMoveUsed(id, queueTypes.move, duration, idToResizeMoveState); + moveInfo = move.queue[0]; + } + } else { + if(!moveInfo.options.duration || moveInfo.options.easing == 'none') { + _addMove(id, eventInfo, moveInfo, { easing: 'none', duration: 0, stop: { instant: true } }); + _updateResizeMoveUsed(id, queueTypes.move, 0, idToResizeMoveState); + moveInfo = move.queue[0]; + continue; + } + + duration = moveInfo.options.duration - move.used; + options = { easing: moveInfo.options.easing, duration: duration }; + options.stop = { start: move.used, end: moveInfo.options.duration, len: moveInfo.options.duration }; + _addMove(id, eventInfo, moveInfo, options); + + _updateResizeMoveUsed(id, queueTypes.move, duration, idToResizeMoveState); + moveInfo = move.queue[0]; + } + } + }; + + var _updateResizeMoveUsed = function(id, type, duration, idToResizeMoveState) { + var state = idToResizeMoveState[id][type]; + state.used += duration; + var options = state.queue[0].actionInfo; + if(options.options) options = options.options; + var optionDur = (options.easing && options.easing != 'none' && options.duration) || 0; + if(optionDur <= state.used) { + $ax.splice(state.queue, 0, 1); + state.used = 0; + } + } + + var _dispatchAction = $ax.action.dispatchAction = function(eventInfo, actions, currentIndex) { + currentIndex = currentIndex || 0; + //If no actions, you can bubble + if(currentIndex >= actions.length) return; + //actions are responsible for doing their own dispatching + _actionHandlers[actions[currentIndex].action](eventInfo, actions, currentIndex); + }; + + _actionHandlers.wait = function(eventInfo, actions, index) { + var action = actions[index]; + var infoCopy = $ax.eventCopy(eventInfo); + window.setTimeout(function() { + infoCopy.now = new Date(); + infoCopy.idToResizeMoveState = undefined; + _dispatchAction(infoCopy, actions, index + 1); + _action.flushAllResizeMoveActions(infoCopy); + }, action.waitTime); + }; + + _actionHandlers.expr = function(eventInfo, actions, index) { + var action = actions[index]; + + $ax.expr.evaluateExpr(action.expr, eventInfo); //this should be a block + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.setFunction = _actionHandlers.expr; + + _actionHandlers.linkWindow = function(eventInfo, actions, index) { + linkActionHelper(eventInfo, actions, index); + }; + + _actionHandlers.closeCurrent = function(eventInfo, actions, index) { + $ax.closeWindow(); + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.linkFrame = function(eventInfo, actions, index) { + linkActionHelper(eventInfo, actions, index); + }; + + _actionHandlers.setAdaptiveView = function(eventInfo, actions, index) { + var action = actions[index]; + var view = action.setAdaptiveViewTo; + + if(view) $ax.adaptive.setAdaptiveView(view); + }; + + var linkActionHelper = function(eventInfo, actions, index) { + var action = actions[index]; + eventInfo.link = true; + + if(action.linkType != 'frame') { + var includeVars = _includeVars(action.target, eventInfo); + if(action.target.targetType == "reloadPage") { + $ax.reload(action.target.includeVariables); + } else if(action.target.targetType == "backUrl") { + $ax.back(); + } + + var url = action.target.url; + if(!url && action.target.urlLiteral) { + url = $ax.expr.evaluateExpr(action.target.urlLiteral, eventInfo, true); + } + + if(url) { + if(action.linkType == "popup") { + $ax.navigate({ + url: url, + target: action.linkType, + includeVariables: includeVars, + popupOptions: action.popup + }); + } else { + $ax.navigate({ + url: url, + target: action.linkType, + includeVariables: includeVars + }); + } + } + } else linkFrame(eventInfo, action); + eventInfo.link = false; + + _dispatchAction(eventInfo, actions, index + 1); + }; + + var _includeVars = function(target, eventInfo) { + if(target.includeVariables) return true; + // If it is a url literal, that is a string literal, that has only 1 sto, that is an item that is a page, include vars. + if(target.urlLiteral) { + var literal = target.urlLiteral; + var sto = literal.stos[0]; + if(literal.exprType == 'stringLiteral' && literal.value.indexOf('[[') == 0 && literal.value.indexOf(']]' == literal.value.length - 2) && literal.stos.length == 1 && sto.sto == 'item' && eventInfo.item) { + var data = $ax.repeater.getData(eventInfo, eventInfo.item.repeater.elementId, eventInfo.item.index, sto.name, 'data'); + if (data && $ax.public.fn.IsPage(data.type)) return true; + } + } + return false; + }; + + var linkFrame = function(eventInfo, action) { + for(var i = 0; i < action.framesToTargets.length; i++) { + var framePath = action.framesToTargets[i].framePath; + var target = action.framesToTargets[i].target; + var includeVars = _includeVars(target, eventInfo); + + var url = target.url; + if(!url && target.urlLiteral) { + url = $ax.expr.evaluateExpr(target.urlLiteral, eventInfo, true); + } + + var id = $ax.getElementIdsFromPath(framePath, eventInfo)[0]; + if(id) $ax('#' + $ax.INPUT(id)).openLink(url, includeVars); + } + }; + + var _repeatPanelMap = {}; + + _actionHandlers.setPanelState = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.panelsToStates.length; i++) { + var panelToState = action.panelsToStates[i]; + var stateInfo = panelToState.stateInfo; + var elementIds = $ax.getElementIdsFromPath(panelToState.panelPath, eventInfo); + + for(var j = 0; j < elementIds.length; j++) { + var elementId = elementIds[j]; + // Need new scope for elementId and info + (function(elementId, stateInfo) { + _addAnimation(elementId, queueTypes.setState, function() { + var stateNumber = stateInfo.stateNumber; + if(stateInfo.setStateType == "value") { + var oldTarget = eventInfo.targetElement; + eventInfo.targetElement = elementId; + var stateName = $ax.expr.evaluateExpr(stateInfo.stateValue, eventInfo); + eventInfo.targetElement = oldTarget; + + // Try for state name first + var states = $ax.getObjectFromElementId(elementId).diagrams; + var stateNameFound = false; + for(var k = 0; k < states.length; k++) { + if(states[k].label == stateName) { + stateNumber = k + 1; + stateNameFound = true; + } + } + + // Now check for index + if(!stateNameFound) { + stateNumber = Number(stateName); + var panelCount = $('#' + elementId).children().length; + + // Make sure number is not NaN, is in range, and is a whole number. + // Wasn't a state name or number, so return + if(isNaN(stateNumber) || stateNumber <= 0 || stateNumber > panelCount || Math.round(stateNumber) != stateNumber) return _fireAnimationFromQueue(elementId, queueTypes.setState); + } + } else if(stateInfo.setStateType == 'next' || stateInfo.setStateType == 'previous') { + var info = $ax.deepCopy(stateInfo); + var repeat = info.repeat; + + // Only map it, if repeat exists. + if(typeof (repeat) == 'number') _repeatPanelMap[elementId] = info; + return _progessPanelState(elementId, info, info.repeatSkipFirst); + } + delete _repeatPanelMap[elementId]; + + // If setting to current (to stop repeat) break here + if(stateInfo.setStateType == 'current') return _fireAnimationFromQueue(elementId, queueTypes.setState); + + $ax('#' + elementId).SetPanelState(stateNumber, stateInfo.options, stateInfo.showWhenSet); + }); + })(elementId, stateInfo); + } + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + var _progessPanelState = function(id, info, skipFirst) { + var direction = info.setStateType; + var loop = info.loop; + var repeat = info.repeat; + var options = info.options; + + var hasRepeat = typeof (repeat) == 'number'; + var currentStateId = $ax.visibility.GetPanelState(id); + var stateNumber = ''; + if(currentStateId != '') { + currentStateId = $ax.repeater.getScriptIdFromElementId(currentStateId); + var currentStateNumber = Number(currentStateId.substr(currentStateId.indexOf('state') + 5)); + if(direction == "next") { + stateNumber = currentStateNumber + 2; + + if(stateNumber > $ax.visibility.GetPanelStateCount(id)) { + if(loop) stateNumber = 1; + else { + delete _repeatPanelMap[id]; + return _fireAnimationFromQueue(id, queueTypes.setState); + } + } + } else if(direction == "previous") { + stateNumber = currentStateNumber; + if(stateNumber <= 0) { + if(loop) stateNumber = $ax.visibility.GetPanelStateCount(id); + else { + delete _repeatPanelMap[id]; + return _fireAnimationFromQueue(id, queueTypes.setState); + } + } + } + + if(hasRepeat && _repeatPanelMap[id] != info) return _fireAnimationFromQueue(id, queueTypes.setState); + + if (!skipFirst) $ax('#' + id).SetPanelState(stateNumber, options, info.showWhenSet); + else _fireAnimationFromQueue(id, queueTypes.setState); + + if(hasRepeat) { + var animate = options && options.animateIn; + if(animate && animate.easing && animate.easing != 'none' && animate.duration > repeat) repeat = animate.duration; + animate = options && options.animateOut; + if(animate && animate.easing && animate.easing != 'none' && animate.duration > repeat) repeat = animate.duration; + + window.setTimeout(function() { + // Either new repeat, or no repeat anymore. + if(_repeatPanelMap[id] != info) return; + _addAnimation(id, queueTypes.setState, function() { + _progessPanelState(id, info, false); + }); + }, repeat); + } else delete _repeatPanelMap[id]; + } + }; + + _actionHandlers.fadeWidget = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.objectsToFades.length; i++) { + var fadeInfo = action.objectsToFades[i].fadeInfo; + var elementIds = $ax.getElementIdsFromPath(action.objectsToFades[i].objectPath, eventInfo); + + for(var j = 0; j < elementIds.length; j++) { + var elementId = elementIds[j]; + // Need new scope for elementId and info + (function(elementId, fadeInfo) { + _addAnimation(elementId, queueTypes.fade, function() { + if(fadeInfo.fadeType == "hide") { + $ax('#' + elementId).hide(fadeInfo.options); + } else if(fadeInfo.fadeType == "show") { + $ax('#' + elementId).show(fadeInfo.options, eventInfo); + } else if(fadeInfo.fadeType == "toggle") { + $ax('#' + elementId).toggleVisibility(fadeInfo.options); + } + }); + })(elementId, fadeInfo); + } + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.setOpacity = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.objectsToSetOpacity.length; i++) { + var opacityInfo = action.objectsToSetOpacity[i].opacityInfo; + var elementIds = $ax.getElementIdsFromPath(action.objectsToSetOpacity[i].objectPath, eventInfo); + + for(var j = 0; j < elementIds.length; j++) { + var elementId = elementIds[j]; + + (function(elementId, opacityInfo) { + _addAnimation(elementId, queueTypes.fade, function () { + var oldTarget = eventInfo.targetElement; + eventInfo.targetElement = elementId; + var opacity = $ax.expr.evaluateExpr(opacityInfo.opacity, eventInfo); + eventInfo.targetElement = oldTarget; + opacity = Math.min(100, Math.max(0, opacity)); + $ax('#' + elementId).setOpacity(opacity/100, opacityInfo.easing, opacityInfo.duration); + }) + })(elementId, opacityInfo); + } + } + + _dispatchAction(eventInfo, actions, index + 1); + } + + _actionHandlers.moveWidget = function(eventInfo, actions, index) { + var action = actions[index]; + for(var i = 0; i < action.objectsToMoves.length; i++) { + var moveInfo = action.objectsToMoves[i].moveInfo; + var elementIds = $ax.getElementIdsFromPath(action.objectsToMoves[i].objectPath, eventInfo); + + for(var j = 0; j < elementIds.length; j++) { + var elementId = elementIds[j]; + _queueResizeMove(elementId, queueTypes.move, eventInfo, moveInfo); + //_addMove(eventInfo, elementId, moveInfo, eventInfo.dragInfo); + } + } + _dispatchAction(eventInfo, actions, index + 1); + }; + + var _compoundChildrenShallow = function (id) { + var deep = []; + var children = $ax('#' + id).getChildren()[0].children; + var piecePrefix = id + 'p'; + + for (var i = 0; i < children.length; i++) { + if(children[i].substring(0, id.length + 1) == piecePrefix) { + deep.push(children[i]); + } + } + return deep; + }; + + var _addMove = function (elementId, eventInfo, moveInfo, optionsOverride) { + var eventInfoCopy = $ax.eventCopy(eventInfo); + var idToResizeMoveState = _getIdToResizeMoveState(eventInfoCopy); + eventInfoCopy.targetElement = elementId; + + var options = $ax.deepCopy(moveInfo.options); + options.easing = optionsOverride.easing; + options.duration = optionsOverride.duration; + options.dragInfo = eventInfo.dragInfo; + + if($ax.public.fn.IsLayer($obj(elementId).type)) { + var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true); + if(childrenIds.length == 0) return; + + var animations = []; + + // Get move delta once, then apply to all children + animations.push({ + id: elementId, + type: queueTypes.move, + func: function() { + var layerInfo = $ax.public.fn.getWidgetBoundingRect(elementId); + var deltaLoc = _getMoveLoc(elementId, moveInfo, eventInfoCopy, optionsOverride.stop, idToResizeMoveState[elementId], options, layerInfo); +// $ax.event.raiseSyntheticEvent(elementId, "onMove"); + $ax.visibility.pushContainer(elementId, false); + + options.onComplete = function () { + _fireAnimationFromQueue(elementId, queueTypes.move); + $ax.visibility.popContainer(elementId, false); + }; + + $ax('#' + elementId).moveBy(deltaLoc.x, deltaLoc.y, options); + } + }); + + //for(var i = 0; i < childrenIds.length; i++) { + // (function(childId) { + // animations.push({ + // id: childId, + // type: queueTypes.move, + // func: function () { + // // Nop, while trying to move as container + // //$ax.event.raiseSyntheticEvent(childId, "onMove"); + // //if($ax.public.fn.IsLayer($obj(childId).type)) _fireAnimationFromQueue(childId, queueTypes.move); + // //else $ax('#' + childId).moveBy(deltaLoc.x, deltaLoc.y, moveInfo.options); + // } + // }); + // })(childrenIds[i]); + //} + _addAnimations(animations); + } else { + _addAnimation(elementId, queueTypes.move, function() { + var loc = _getMoveLoc(elementId, moveInfo, eventInfoCopy, optionsOverride.stop, idToResizeMoveState[elementId], options); + +// $ax.event.raiseSyntheticEvent(elementId, "onMove"); + if(loc.moveTo) $ax('#' + elementId).moveTo(loc.x, loc.y, options); + else $ax('#' + elementId).moveBy(loc.x, loc.y, options); + }); + } + }; + + var _moveSingleWidget = function (elementId, delta, options, onComplete) { + if(!delta.x && !delta.y) { + $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move); + return; + } + var fixedInfo = $ax.dynamicPanelManager.getFixedInfo(elementId); + var xProp = 'left'; + var xDiff = '+='; + if(fixedInfo) { + if(fixedInfo.horizontal == 'right') { + xProp = 'right'; + xDiff = '-='; + } else if(fixedInfo.horizontal == 'center') { + xProp = 'margin-left'; + } + } + var yProp = 'top'; + var yDiff = '+='; + if(fixedInfo) { + if(fixedInfo.vertical == 'bottom') { + yProp = 'bottom'; + yDiff = '-='; + } else if(fixedInfo.vertical == 'middle') { + yProp = 'margin-top'; + } + } + + var css = {}; + css[xProp] = xDiff + delta.x; + css[yProp] = yDiff + delta.y; + var moveInfo = $ax.move.PrepareForMove(elementId, delta.x, delta.y,false, options); + $jobjAll(elementId).animate(css, { + duration: options.duration, + easing: options.easing, + queue: false, + complete: function () { + if(onComplete) onComplete(); + if(moveInfo.rootLayer) $ax.visibility.popContainer(moveInfo.rootLayer, false); + $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move); + } + }); + } + + var _getMoveLoc = function (elementId, moveInfo, eventInfoCopy, stopInfo, comboState, options, layerInfo) { + var moveTo = false; + var moveWithThis = false; + var xValue = 0; + var yValue = 0; + var moveResult = comboState.moveResult; + var widgetDragInfo = eventInfoCopy.dragInfo; + var jobj = $jobj(elementId); + + var startX; + var startY; + + switch(moveInfo.moveType) { + case "location": + // toRatio is ignoring anything before start since that has already taken effect we just know whe have from start to len to finish + // getting to the location we want to get to. + var toRatio = stopInfo.instant ? 1 : (stopInfo.end - stopInfo.start) / (stopInfo.len - stopInfo.start); + + // If result already caluculated, don't recalculate again, other calculate and save + if (moveResult) { + xValue = moveResult.x; + yValue = moveResult.y; + } else { + comboState.moveResult = moveResult = { x: $ax.expr.evaluateExpr(moveInfo.xValue, eventInfoCopy), y: $ax.expr.evaluateExpr(moveInfo.yValue, eventInfoCopy) }; + xValue = moveResult.x; + yValue = moveResult.y; + } + // If this is final stop for this move, then clear out the result so next move won't use it + if(stopInfo.instant || stopInfo.end == stopInfo.len) comboState.moveResult = undefined; + + if (layerInfo) { + startX = layerInfo.left; + startY = layerInfo.top; + //} else if ($ax.public.fn.isCompoundVectorHtml(jobj[0])) { + // var dimensions = $ax.public.fn.compoundWidgetDimensions(jobj); + // startX = dimensions.left; + // startY = dimensions.top; + } else { + startX = $ax('#' + elementId).locRelativeIgnoreLayer(false); + startY = $ax('#' + elementId).locRelativeIgnoreLayer(true); + if(jobj.css('position') == 'fixed') { + startX -= $(window).scrollLeft(); + startY -= $(window).scrollTop(); + } + } + + xValue = xValue == '' ? 0 : (xValue - startX) * toRatio; + yValue = yValue == '' ? 0 : (yValue - startY) * toRatio; + + break; + case "delta": + var ratio = stopInfo.instant ? 1 : (stopInfo.end - stopInfo.start) / stopInfo.len; + + // See case location above + if(moveResult) { + xValue = moveResult.x * ratio; + yValue = moveResult.y * ratio; + } else { + comboState.moveResult = moveResult = { x: $ax.expr.evaluateExpr(moveInfo.xValue, eventInfoCopy), y: $ax.expr.evaluateExpr(moveInfo.yValue, eventInfoCopy) }; + xValue = moveResult.x * ratio; + yValue = moveResult.y * ratio; + } + if (stopInfo.instant || stopInfo.end == stopInfo.len) comboState.moveResult = undefined; + + break; + case "drag": + xValue = widgetDragInfo.xDelta; + yValue = widgetDragInfo.yDelta; + break; + case "dragX": + xValue = widgetDragInfo.xDelta; + yValue = 0; + break; + case "dragY": + xValue = 0; + yValue = widgetDragInfo.yDelta; + break; + case "locationBeforeDrag": + var location = widgetDragInfo.movedWidgets[eventInfoCopy.targetElement]; + if (location) { + var axObj = $ax('#' + eventInfoCopy.targetElement); + xValue = location.x - axObj.left(); + yValue = location.y - axObj.top(); + } else { + _fireAnimationFromQueue(eventInfoCopy.srcElement, queueTypes.move); + return { x: 0, y: 0 }; + } + //moveTo = true; + break; + case "withThis": + moveWithThis = true; + var widgetMoveInfo = $ax.move.GetWidgetMoveInfo(); + var srcElementId = $ax.getElementIdsFromEventAndScriptId(eventInfoCopy, eventInfoCopy.srcElement)[0]; + var delta = widgetMoveInfo[srcElementId]; + options.easing = delta.options.easing; + options.duration = delta.options.duration; + xValue = delta.x; + yValue = delta.y; + break; + } + + if (options && options.boundaryExpr) { + //$ax.public.fn.removeCompound(jobj); + + if(jobj.css('position') == 'fixed') { + //swap page coordinates with fixed coordinates + options.boundaryExpr.leftExpr.value = options.boundaryExpr.leftExpr.value.replace('.top', '.topfixed').replace('.left', '.leftfixed').replace('.bottom', '.bottomfixed').replace('.right', '.rightfixed'); + options.boundaryExpr.leftExpr.stos[0].leftSTO.prop = options.boundaryExpr.leftExpr.stos[0].leftSTO.prop + 'fixed'; + options.boundaryStos.boundaryScope.direcval0.value = options.boundaryStos.boundaryScope.direcval0.value.replace('.top', '.topfixed').replace('.left', '.leftfixed').replace('.bottom', '.bottomfixed').replace('.right', '.rightfixed'); + options.boundaryStos.boundaryScope.direcval0.stos[0].leftSTO.prop = options.boundaryStos.boundaryScope.direcval0.stos[0].leftSTO.prop + 'fixed'; + } + + if(moveWithThis && (xValue || yValue)) { + _updateLeftExprVariable(options.boundaryExpr, xValue.toString(), yValue.toString()); + } + + if(!$ax.expr.evaluateExpr(options.boundaryExpr, eventInfoCopy)) { + var boundaryStoInfo = options.boundaryStos; + if(boundaryStoInfo) { + if(moveWithThis) { + var stoScopes = boundaryStoInfo.boundaryScope; + if(stoScopes) { + for(var s in stoScopes) { + var boundaryScope = stoScopes[s]; + if(!boundaryScope.localVariables) continue; + + if(boundaryScope.localVariables.withx) boundaryScope.localVariables.withx.value = xValue.toString(); + if(boundaryScope.localVariables.withy) boundaryScope.localVariables.withy.value = yValue.toString(); + } + } + } + + if(layerInfo) { + startX = layerInfo.left; + startY = layerInfo.top; + } else { + startX = $ax('#' + elementId).locRelativeIgnoreLayer(false); + startY = $ax('#' + elementId).locRelativeIgnoreLayer(true); + if(jobj.css('position') == 'fixed') { + startX -= $(window).scrollLeft(); + startY -= $(window).scrollTop(); + } + } + + if(boundaryStoInfo.ySto) { + var currentTop = layerInfo ? layerInfo.top : startY; + var newTop = $ax.evaluateSTO(boundaryStoInfo.ySto, boundaryStoInfo.boundaryScope, eventInfoCopy); + if(moveTo) yValue = newTop; + else yValue = newTop - currentTop; + } + + if(boundaryStoInfo.xSto) { + var currentLeft = layerInfo ? layerInfo.left : startX; + var newLeft = $ax.evaluateSTO(boundaryStoInfo.xSto, boundaryStoInfo.boundaryScope, eventInfoCopy); + if(moveTo) xValue = newLeft; + else xValue = newLeft - currentLeft; + } + } + } + + //$ax.public.fn.restoreCompound(jobj); + } + + return { x: Number(xValue), y: Number(yValue), moveTo: moveTo }; + }; + + //we will have something like [[Target.right + withX]] for leftExpr, and this function set the value of withX + var _updateLeftExprVariable = function (exprTree, xValue, yValue) { + if(exprTree.leftExpr && !exprTree.leftExpr.op) { + var localVars = exprTree.leftExpr.localVariables; + if(localVars) { + if(localVars.withx) localVars.withx.value = xValue; + if(localVars.withy) localVars.withy.value = yValue; + } + } + + //traversal + if(exprTree.op) { + if(exprTree.leftExpr) _updateLeftExprVariable(exprTree.leftExpr, xValue, yValue); + if(exprTree.rightExpr) _updateLeftExprVariable(exprTree.rightExpr, xValue, yValue); + } + } + + var widgetRotationFilter = [ + $ax.constants.IMAGE_BOX_TYPE, $ax.constants.IMAGE_MAP_REGION_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, + $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.VERTICAL_LINE_TYPE, $ax.constants.HORIZONTAL_LINE_TYPE + ]; + _actionHandlers.rotateWidget = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.objectsToRotate.length; i++) { + var rotateInfo = action.objectsToRotate[i].rotateInfo; + var elementIds = $ax.getElementIdsFromPath(action.objectsToRotate[i].objectPath, eventInfo); + + for(var j = 0; j < elementIds.length; j++) { + var elementId = elementIds[j]; + _queueResizeMove(elementId, queueTypes.rotate, eventInfo, rotateInfo); + } + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + var _addRotate = function (elementId, eventInfo, rotateInfo, options, moveInfo) { + var idToResizeMoveState = _getIdToResizeMoveState(eventInfo); + rotateInfo = $ax.deepCopy(rotateInfo); + rotateInfo.options.easing = options.easing; + rotateInfo.options.duration = options.duration; + + var eventInfoCopy = $ax.eventCopy(eventInfo); + eventInfoCopy.targetElement = elementId; + + //calculate degree value at start of animation + var rotateDegree; + var offset = {}; + var eval = function(boundingRect) { + rotateDegree = parseFloat($ax.expr.evaluateExpr(rotateInfo.degree, eventInfoCopy)); + offset.x = Number($ax.expr.evaluateExpr(rotateInfo.offsetX, eventInfoCopy)); + offset.y = Number($ax.expr.evaluateExpr(rotateInfo.offsetY, eventInfoCopy)); + if(!rotateInfo.options.clockwise) rotateDegree = -rotateDegree; + + _updateOffset(offset, rotateInfo.anchor, boundingRect); + } + + if(moveInfo) { + var moveOptions = { dragInfo: eventInfoCopy.dragInfo, duration: options.duration, easing: options.easing, boundaryExpr: moveInfo.options.boundaryExpr, boundaryStos: moveInfo.options.boundaryStos }; + } + + var obj = $obj(elementId); + + if($ax.public.fn.IsLayer(obj.type)) { + var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true, true); + if(childrenIds.length == 0) return; + + var animations = []; + //get center point of the group, and degree delta + var centerPoint, degreeDelta, moveDelta; + animations.push({ + id: elementId, + type: queueTypes.rotate, + func: function () { + var boundingRect = $axure.fn.getWidgetBoundingRect(elementId); + eval(boundingRect); + centerPoint = boundingRect.centerPoint; + centerPoint.x += offset.x; + centerPoint.y += offset.y; + degreeDelta = _initRotateLayer(elementId, rotateInfo, rotateDegree, options, options.stop); + _fireAnimationFromQueue(elementId, queueTypes.rotate); + + moveDelta = { x: 0, y: 0 }; + if (moveInfo) { + moveDelta = _getMoveLoc(elementId, moveInfo, eventInfoCopy, options.moveStop, idToResizeMoveState[elementId], moveOptions, boundingRect); + if (moveDelta.moveTo) { + moveDelta.x -= $ax.getNumFromPx($jobj(elementId).css('left')); + moveDelta.y -= $ax.getNumFromPx($jobj(elementId).css('top')); + } + $ax.event.raiseSyntheticEvent(elementId, 'onMove'); + } + } + }); + + for(var idIndex = 0; idIndex < childrenIds.length; idIndex++) { + var childId = childrenIds[idIndex]; + (function(id) { + var childObj = $obj(id); + var rotate = $.inArray(childObj.type, widgetRotationFilter) != -1; + + var isLayer = $ax.public.fn.IsLayer(childObj.type); + animations.push({ + id: id, + type: queueTypes.rotate, + func: function() { + $ax.event.raiseSyntheticEvent(id, "onRotate"); + if(isLayer) _fireAnimationFromQueue(id, queueTypes.rotate); + else $ax('#' + id).circularMoveAndRotate(degreeDelta, options, centerPoint.x, centerPoint.y, rotate, moveDelta); + } + }); + if(!isLayer) animations.push({ id: id, type: queueTypes.move, func: function() {} }); + })(childId); + } + + _addAnimations(animations); + } else { + animations = []; + animations.push({ + id: elementId, + type: queueTypes.rotate, + func: function () { + var jobj = $jobj(elementId); + var unrotatedDim = { width: $ax.getNumFromPx(jobj.css('width')), height: $ax.getNumFromPx(jobj.css('height')) }; + eval(unrotatedDim); + var delta = { x: 0, y: 0 }; + if(moveInfo) { + delta = _getMoveLoc(elementId, moveInfo, eventInfoCopy, options.moveStop, idToResizeMoveState[elementId], moveOptions); + if(delta.moveTo) { + delta.x -= $ax.getNumFromPx($jobj(elementId).css('left')); + delta.y -= $ax.getNumFromPx($jobj(elementId).css('top')); + } + } + + $ax.event.raiseSyntheticEvent(elementId, 'onRotate'); + if(offset.x == 0 && offset.y == 0) _rotateSingle(elementId, rotateDegree, rotateInfo.rotateType == 'location', delta, options, options.stop, true); + else _rotateSingleOffset(elementId, rotateDegree, rotateInfo.rotateType == 'location', delta, { x: offset.x, y: offset.y }, options, options.stop); + if(moveInfo) $ax.event.raiseSyntheticEvent(elementId, 'onMove'); + } + }); + animations.push({ id: elementId, type: queueTypes.move, func: function () { } }); + + _addAnimations(animations); + } + } + + var _updateOffset = function(offset, anchor, boundingRect) { + if (anchor.indexOf('left') != -1) offset.x -= boundingRect.width / 2; + if (anchor.indexOf('right') != -1) offset.x += boundingRect.width / 2; + if (anchor.indexOf('top') != -1) offset.y -= boundingRect.height / 2; + if (anchor.indexOf('bottom') != -1) offset.y += boundingRect.height / 2; + } + + var _rotateSingle = function(elementId, rotateDegree, rotateTo, delta, options, stop, handleMove) { + var degreeDelta = _applyRotateStop(rotateDegree, $ax.move.getRotationDegree(elementId), rotateTo, stop); + $ax('#' + elementId).rotate(degreeDelta, options.easing, options.duration, false, true); + if(handleMove) { + if (delta.x || delta.y) _moveSingleWidget(elementId, delta, options); + else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move); + } + }; + + var _rotateSingleOffset = function (elementId, rotateDegree, rotateTo, delta, offset, options, stop, resizeOffset) { + var obj = $obj(elementId); + var currRotation = $ax.move.getRotationDegree(elementId); + + // Need to fix offset. Want to to stay same place on widget after rotation, so need to take the offset and rotate it to where it should be. + if(currRotation) { + offset = $axure.fn.getPointAfterRotate(currRotation, offset, { x: 0, y: 0 }); + } + + var degreeDelta = _applyRotateStop(rotateDegree, currRotation, rotateTo, stop); + var widgetCenter = $axure.fn.getWidgetBoundingRect(elementId).centerPoint; + + var rotate = $.inArray(obj.type, widgetRotationFilter) != -1; + $ax('#' + elementId).circularMoveAndRotate(degreeDelta, options, widgetCenter.x + offset.x, widgetCenter.y + offset.y, rotate, delta, resizeOffset); + } + + var _applyRotateStop = function(rotateDegree, currRotation, to, stop) { + var degreeDelta; + var ratio; + if(to) { + degreeDelta = rotateDegree - currRotation; + ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); + } else { + degreeDelta = rotateDegree; + ratio = stop.instant ? 1 : (stop.end - stop.start) / stop.len; + } + + return degreeDelta * ratio; + } + + + var _initRotateLayer = function(elementId, rotateInfo, rotateDegree, options, stop) { + var layerDegree = $jobj(elementId).data('layerDegree'); + if (layerDegree === undefined) layerDegree = 0; + else layerDegree = parseFloat(layerDegree); + + var to = rotateInfo.rotateType == 'location'; + var newDegree = to ? rotateDegree : layerDegree + rotateDegree; + var degreeDelta = newDegree - layerDegree; + + var ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); + degreeDelta *= ratio; + + $jobj(elementId).data('layerDegree', newDegree); + $ax.event.raiseSyntheticEvent(elementId, "onRotate"); + + return degreeDelta; + } + + _actionHandlers.setWidgetSize = function(eventInfo, actions, index) { + var action = actions[index]; + for(var i = 0; i < action.objectsToResize.length; i++) { + var resizeInfo = action.objectsToResize[i].sizeInfo; + var objPath = action.objectsToResize[i].objectPath; + if(objPath == 'thisItem') { + var thisId = eventInfo.srcElement; + var repeaterId = $ax.getParentRepeaterFromElementId(thisId); + var itemId = $ax.repeater.getItemIdFromElementId(thisId); + var currSize = $ax.repeater.getItemSize(repeaterId, itemId); + var newSize = _getSizeFromInfo(resizeInfo, eventInfo, currSize.width, currSize.height); + $ax.repeater.setItemSize(repeaterId, itemId, newSize.width, newSize.height); + + continue; + } + + var elementIds = $ax.getElementIdsFromPath(objPath, eventInfo); + + for(var j = 0; j < elementIds.length; j++) { + var elementId = elementIds[j]; + _queueResizeMove(elementId, queueTypes.resize, eventInfo, resizeInfo); + //_addResize(elementId, resizeInfo); + } + } + _dispatchAction(eventInfo, actions, index + 1); + }; + + // Move info undefined unless this move/resize actions are being merged + var _addResize = function(elementId, eventInfo, resizeInfo, options, moveInfo, rotateInfo) { + var axObject = $obj(elementId); + resizeInfo = $ax.deepCopy(resizeInfo); + resizeInfo.easing = options.easing; + resizeInfo.duration = options.duration; + + var eventInfoCopy = $ax.eventCopy(eventInfo); + eventInfoCopy.targetElement = elementId; + + var moves = moveInfo || resizeInfo.anchor != "top left" || ($ax.public.fn.IsDynamicPanel(axObject.type) && + ((axObject.fixedHorizontal && axObject.fixedHorizontal == 'center') || (axObject.fixedVertical && axObject.fixedVertical == 'middle'))) || + (rotateInfo && (rotateInfo.offsetX || rotateInfo.offsetY)); + + if(moveInfo) { + var moveOptions = { dragInfo: eventInfoCopy.dragInfo, duration: options.duration, easing: options.easing, boundaryExpr: moveInfo.options.boundaryExpr, boundaryStos: moveInfo.options.boundaryStos }; + } + + var idToResizeMoveState = _getIdToResizeMoveState(eventInfoCopy); + + var animations = []; + if($ax.public.fn.IsLayer(axObject.type)) { + moves = true; // Assume widgets will move will layer, even though not all widgets may move + var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true, true); + if(childrenIds.length === 0) return; + // Need to wait to calculate new size, until time to animate, but animates are in separate queues + // best option seems to be to calculate in a "animate" for the layer itself and all children will use that. + // May just have to be redundant if this doesn't work well. + + var boundingRect, widthChangedPercent, heightChangedPercent, unchanged, deltaLoc, degreeDelta, resizeOffset; + animations.push({ + id: elementId, + type: queueTypes.resize, + func: function () { + $ax.visibility.pushContainer(elementId, false); + boundingRect = $ax.public.fn.getWidgetBoundingRect(elementId); + var size = _getSizeFromInfo(resizeInfo, eventInfoCopy, boundingRect.width, boundingRect.height, elementId); + deltaLoc = { x: 0, y: 0 }; + + var stop = options.stop; + var ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); + widthChangedPercent = Math.round(size.width - boundingRect.width) / boundingRect.width * ratio; + heightChangedPercent = Math.round(size.height - boundingRect.height) / boundingRect.height * ratio; + resizeOffset = _applyAnchorToResizeOffset(widthChangedPercent * boundingRect.width, heightChangedPercent * boundingRect.height, resizeInfo.anchor); + if(stop.instant || stop.end == stop.len) idToResizeMoveState[elementId].resizeResult = undefined; + + unchanged = widthChangedPercent === 0 && heightChangedPercent === 0; + $ax.event.raiseSyntheticEvent(elementId, 'onResize'); + _fireAnimationFromQueue(elementId, queueTypes.resize); + } + }); + + if(moveInfo) animations.push({ + id: elementId, + type: queueTypes.move, + func: function() { + deltaLoc = _getMoveLoc(elementId, moveInfo, eventInfoCopy, options.moveStop, idToResizeMoveState[elementId], moveOptions, boundingRect); + $ax.visibility.pushContainer(elementId, false); + _fireAnimationFromQueue(elementId, queueTypes.move); + $ax.event.raiseSyntheticEvent(elementId, 'onMove'); + } + }); + if (rotateInfo) animations.push({ + id: elementId, + type: queueTypes.rotate, + func: function () { + resizeOffset = _applyAnchorToResizeOffset(widthChangedPercent * boundingRect.width, heightChangedPercent * boundingRect.height, resizeInfo.anchor); + var rotateDegree = parseFloat($ax.expr.evaluateExpr(rotateInfo.degree, eventInfoCopy)); + degreeDelta = _initRotateLayer(elementId, rotateInfo, rotateDegree, options, options.rotateStop); + _fireAnimationFromQueue(elementId, queueTypes.rotate); + $ax.event.raiseSyntheticEvent(elementId, 'onRotate'); + } + }); + + var completeCount = childrenIds.length*2; // Because there is a resize and move complete, it needs to be doubled + for(var idIndex = 0; idIndex < childrenIds.length; idIndex++) { + // Need to use scoping trick here to make sure childId doesn't change on next loop + (function(childId) { + //use ax obj to get width and height, jquery css give us the value without border + var isLayer = $ax.public.fn.IsLayer($obj(childId).type); + var rotate = $.inArray($obj(childId).type, widgetRotationFilter) != -1; + animations.push({ + id: childId, + type: queueTypes.resize, + func: function() { + //$ax.event.raiseSyntheticEvent(childId, 'onResize'); + if(isLayer) { + completeCount -= 2; + _fireAnimationFromQueue(childId, queueTypes.resize); + $ax.event.raiseSyntheticEvent(childId, 'onResize'); + } else { + var currDeltaLoc = { x: deltaLoc.x, y: deltaLoc.y }; + var resizeDeltaMove = { x: 0, y: 0 }; + var css = _getCssForResizingLayerChild(childId, resizeInfo.anchor, boundingRect, widthChangedPercent, heightChangedPercent, resizeDeltaMove); + var onComplete = function() { + if(--completeCount == 0) $ax.visibility.popContainer(elementId, false); + }; + $ax('#' + childId).resize(css, resizeInfo, true, moves, onComplete); + if(rotateInfo) { + var offset = { x: Number($ax.expr.evaluateExpr(rotateInfo.offsetX, eventInfoCopy)), y: Number($ax.expr.evaluateExpr(rotateInfo.offsetY, eventInfo)) }; + _updateOffset(offset, resizeInfo.anchor, boundingRect); + var centerPoint = { x: boundingRect.centerPoint.x + offset.x, y: boundingRect.centerPoint.y + offset.y }; + $ax('#' + childId).circularMoveAndRotate(degreeDelta, options, centerPoint.x, centerPoint.y, rotate, currDeltaLoc, resizeOffset, resizeDeltaMove, onComplete); + } else { + currDeltaLoc.x += resizeDeltaMove.x; + currDeltaLoc.y += resizeDeltaMove.y; + _moveSingleWidget(childId, currDeltaLoc, options, onComplete); + } + } + } + }); + if(!isLayer) animations.push({ id: childId, type: queueTypes.move, func: function () {} }); + if(!isLayer && rotateInfo) animations.push({ id: childId, type: queueTypes.rotate, func: function () {} }); + })(childrenIds[idIndex]); + } + } else { + // Not func, obj with func + animations.push({ + id: elementId, + type: queueTypes.resize, + func: function() { + //textarea can be resized manully by the user, but doesn't update div size yet, so doing this for now. + //alternatively axquery get for size can account for this + + var sizeId = $ax.public.fn.IsTextArea(axObject.type) ? $jobj(elementId).children('textarea').attr('id') : elementId; + var oldSize = $ax('#' + sizeId).size(); + var oldWidth = oldSize.width; + var oldHeight = oldSize.height; + + var stop = options.stop; + var ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); + + var size = _getSizeFromInfo(resizeInfo, eventInfoCopy, oldWidth, oldHeight, elementId); + var newWidth = size.width; + var newHeight = size.height; + var deltaWidth = Math.round(newWidth - oldWidth) * ratio; + var deltaHeight = Math.round(newHeight - oldHeight) * ratio; + newWidth = oldWidth + deltaWidth; + newHeight = oldHeight + deltaHeight; + + var delta = { x: 0, y: 0 }; + if(moveInfo) { + delta = _getMoveLoc(elementId, moveInfo, eventInfoCopy, options.moveStop, idToResizeMoveState[elementId], moveOptions); + if (delta.moveTo) { + delta.x -= $ax.getNumFromPx($jobj(elementId).css('left')); + delta.y -= $ax.getNumFromPx($jobj(elementId).css('top')); + } + } + + var rotateHandlesMove = false; + var offset = { x: 0, y: 0 }; + if(rotateInfo) { + offset.x = Number($ax.expr.evaluateExpr(rotateInfo.offsetX, eventInfoCopy)); + offset.y = Number($ax.expr.evaluateExpr(rotateInfo.offsetY, eventInfoCopy)); + _updateOffset(offset, rotateInfo.anchor, $axure.fn.getWidgetBoundingRect(elementId)); + rotateHandlesMove = Boolean(rotateInfo && (offset.x || offset.y || rotateInfo.anchor != 'center')); + $ax.event.raiseSyntheticEvent(elementId, 'onRotate'); + } + + var css = null; + var rootLayer = null; + if(deltaHeight != 0 || deltaWidth != 0) { + rootLayer = $ax.move.getRootLayer(elementId); + if(rootLayer) $ax.visibility.pushContainer(rootLayer, false); + css = _getCssForResizingWidget(elementId, eventInfoCopy, resizeInfo.anchor, newWidth, newHeight, oldWidth, oldHeight, delta, options.stop, !rotateHandlesMove); + idToResizeMoveState[elementId].resizeResult = undefined; + } + + if(rotateInfo) { + var rotateDegree = parseFloat($ax.expr.evaluateExpr(rotateInfo.degree, eventInfoCopy)); + + if(rotateHandlesMove) { + var resizeOffset = _applyAnchorToResizeOffset(deltaWidth, deltaHeight, rotateInfo.anchor); + _rotateSingleOffset(elementId, rotateDegree, rotateInfo.rotateType == 'location', delta, offset, options, options.rotateStop, resizeOffset); + } else { + // Not handling move so pass in nop delta + _rotateSingle(elementId, rotateDegree, rotateInfo.rotateType == 'location', { x: 0, y: 0 }, options, options.rotateStop); + if (moves) _fireAnimationFromQueue(elementId, queueTypes.move); + } + } else if(!css && moves) _moveSingleWidget(elementId, delta, options); + + // Have to do it down here to make sure move info is registered + if(moveInfo) $ax.event.raiseSyntheticEvent(elementId, 'onMove'); + + //$ax.event.raiseSyntheticEvent(elementId, 'onResize'); + if (css) { + $ax('#' + elementId).resize(css, resizeInfo, true, moves, function () { + if(rootLayer) $ax.visibility.popContainer(rootLayer, false); + }); + } else { + _fireAnimationFromQueue(elementId, queueTypes.resize); + + $ax.event.raiseSyntheticEvent(elementId, 'onResize'); + } + } + }); + // Nop move (move handled by resize) + if(rotateInfo) animations.push({ id: elementId, type: queueTypes.rotate, func: function () { } }); + if(moves) animations.push({ id: elementId, type: queueTypes.move, func: function () { } }); + } + + _addAnimations(animations); + }; + + var _applyAnchorToResizeOffset = function (deltaWidth, deltaHeight, anchor) { + var offset = {}; + if (anchor.indexOf('left') != -1) offset.x = -deltaWidth / 2; + else if (anchor.indexOf('right') != -1) offset.x = deltaWidth / 2; + if (anchor.indexOf('top') != -1) offset.y = -deltaHeight / 2; + else if (anchor.indexOf('bottom') != -1) offset.y = deltaHeight / 2; + + return offset; + } + + //var _getOldAndNewSize = function (resizeInfo, eventInfo, targetElement) { + // var axObject = $obj(targetElement); + // var oldWidth, oldHeight; + // //textarea can be resized manully by the user, use the textarea child to get the current size + // //because this new size may not be reflected on its parents yet + // if ($ax.public.fn.IsTextArea(axObject.type)) { + // var jObject = $jobj(elementId); + // var textObj = $ax('#' + jObject.children('textarea').attr('id')); + // //maybe we shouldn't use ax obj to get width and height here anymore... + // oldWidth = textObj.width(); + // oldHeight = textObj.height(); + // } else { + // oldWidth = $ax('#' + elementId).width(); + // oldHeight = $ax('#' + elementId).height(); + // } + + // var size = _getSizeFromInfo(resizeInfo, eventInfo, oldHeight, oldWidth, elementId); + // return { oldWidth: oldWidth, oldHeight: oldHeight, newWidth: size.width, newHeight: size.height, change: oldWidth != size.width || oldHeight != size.height }; + //} + + var _getSizeFromInfo = function(resizeInfo, eventInfo, oldWidth, oldHeight, targetElement) { + var oldTarget = eventInfo.targetElement; + eventInfo.targetElement = targetElement; + + var state = _getIdToResizeMoveState(eventInfo)[targetElement]; + if(state && state.resizeResult) return state.resizeResult; + + var width = $ax.expr.evaluateExpr(resizeInfo.width, eventInfo); + var height = $ax.expr.evaluateExpr(resizeInfo.height, eventInfo); + eventInfo.targetElement = oldTarget; + + + // If either one is not a number, use the old value + width = width != "" ? Number(width) : oldWidth; + height = height != "" ? Number(height) : oldHeight; + + width = isNaN(width) ? oldWidth : width; + height = isNaN(height) ? oldHeight : height; + + // can't be negative + var result = { width: Math.max(width, 0), height: Math.max(height, 0) }; + if(state) state.resizeResult = result; + return result; + } + + //var _queueResize = function (elementId, css, resizeInfo) { + // var resizeFunc = function() { + // $ax('#' + elementId).resize(css, resizeInfo, true); + // //$ax.public.fn.resize(elementId, css, resizeInfo, true); + // }; + // var obj = $obj(elementId); + // var moves = resizeInfo.anchor != "top left" || ($ax.public.fn.IsDynamicPanel(obj.type) && ((obj.fixedHorizontal && obj.fixedHorizontal == 'center') || (obj.fixedVertical && obj.fixedVertical == 'middle'))) + // if(!moves) { + // _addAnimation(elementId, queueTypes.resize, resizeFunc); + // } else { + // var animations = []; + // animations[0] = { id: elementId, type: queueTypes.resize, func: resizeFunc }; + // animations[1] = { id: elementId, type: queueTypes.move, func: function() {}}; // Nop func - resize handles move and firing from queue + // _addAnimations(animations); + // } + //}; + + //should clean this function and + var _getCssForResizingWidget = function (elementId, eventInfo, anchor, newWidth, newHeight, oldWidth, oldHeight, delta, stop, handleMove) { + var ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); + var deltaWidth = (newWidth - oldWidth) * ratio; + var deltaHeight = (newHeight - oldHeight) * ratio; + if(stop.instant || stop.end == stop.len) { + var idToResizeMoveState = _getIdToResizeMoveState(eventInfo); + if(idToResizeMoveState[elementId]) idToResizeMoveState[elementId].resizeResult = undefined; + } + + var css = {}; + css.height = oldHeight + deltaHeight; + + var obj = $obj(elementId); + //if it's 100% width, don't change its width + if($ax.dynamicPanelManager.isPercentWidthPanel(obj)) var is100Dp = true; + else css.width = oldWidth + deltaWidth; + + var jobj = $jobj(elementId); + //if this is pinned dp, we will mantain the pin, no matter how you resize it; so no need changes left or top + //NOTE: currently only pinned DP has position == fixed + if(jobj.css('position') == 'fixed') { + if(obj.fixedHorizontal && obj.fixedHorizontal == 'center') css['margin-left'] = '+=' + delta.x; + if(obj.fixedVertical && obj.fixedVertical == 'middle') css['margin-top'] = '+=' + delta.y; + return css; + } + + // If it is pinned, but temporarily not fixed because it is wrappen in a container, then just make sure to anchor it correctly + if(obj.fixedVertical) { + if(obj.fixedVertical == 'middle') anchor = obj.fixedHorizontal; + else anchor = obj.fixedVertical + (obj.fixedHorizontal == 'center' ? '' : ' ' + obj.fixedHorizontal); + + } + + //use position relative to parents + //var position = obj.generateCompound ? $ax.public.fn.getWidgetBoundingRect(elementId) : $ax.public.fn.getPositionRelativeToParent(elementId); + + + var locationShift; + switch(anchor) { + case "top left": + locationShift = { x: 0, y: 0 }; break; + case "top": + locationShift = { x: -deltaWidth / 2.0, y: 0.0 }; break; + case "top right": + locationShift = { x: -deltaWidth, y: 0.0 }; break; + case "left": + locationShift = { x: 0.0, y: -deltaHeight / 2.0 }; break; + case "center": + locationShift = { x: -deltaWidth / 2.0, y: -deltaHeight / 2.0 }; break; + case "right": + locationShift = { x: -deltaWidth, y: -deltaHeight / 2.0 }; break; + case "bottom left": + locationShift = { x: 0.0, y: -deltaHeight }; break; + case "bottom": + locationShift = { x: -deltaWidth/2.0, y: -deltaHeight }; break; + case "bottom right": + locationShift = { x: -deltaWidth, y: -deltaHeight }; break; + } + + if(handleMove) { + if(jobj.css('position') === 'absolute') { + css.left = $ax.getNumFromPx(jobj.css('left')) + locationShift.x + delta.x; + css.top = $ax.getNumFromPx(jobj.css('top')) + locationShift.y + delta.y; + } else { + var axQuery = $ax('#' + elementId); + css.left = axQuery.left(true) + locationShift.x + delta.x; + css.top = axQuery.top(true) + locationShift.y + delta.y; + } + } else { + delta.x += locationShift.x; + delta.y += locationShift.y; + } + + return css; + }; + + + var _getCssForResizingLayerChild = function (elementId, anchor, layerBoundingRect, widthChangedPercent, heightChangedPercent, deltaLoc) { + var boundingRect = $ax.public.fn.getWidgetBoundingRect(elementId); + var childCenterPoint = boundingRect.centerPoint; + + var currentSize = $ax('#' + elementId).size(); + var newWidth = currentSize.width + currentSize.width * widthChangedPercent; + var newHeight = currentSize.height + currentSize.height * heightChangedPercent; + + var css = {}; + css.height = newHeight; + + var obj = $obj(elementId); + //if it's 100% width, don't change its width and left + var changeLeft = true; + if($ax.dynamicPanelManager.isPercentWidthPanel(obj)) changeLeft = false; + else css.width = newWidth; + + var jobj = $jobj(elementId); + //if this is pinned dp, we will mantain the pin, no matter how you resize it; so no need changes left or top + //NOTE: currently only pinned DP has position == fixed + if(jobj.css('position') == 'fixed') return css; + //use bounding rect position relative to parents to calculate delta + var axObj = $ax('#' + elementId); + // This will be absolute world coordinates, but we want body coordinates. + var currentLeft = axObj.locRelativeIgnoreLayer(false); + var currentTop = axObj.locRelativeIgnoreLayer(true); + + var resizable = $ax.public.fn.IsResizable(obj.type); + if(anchor.indexOf("top") > -1) { + var topDelta = (currentTop - layerBoundingRect.top) * heightChangedPercent; + if(!resizable && Math.round(topDelta)) topDelta += currentSize.height * heightChangedPercent; + } else if(anchor.indexOf("bottom") > -1) { + if(resizable) topDelta = (currentTop - layerBoundingRect.bottom) * heightChangedPercent; + else { + var bottomDelta = Math.round(currentTop + currentSize.height - layerBoundingRect.bottom) * heightChangedPercent; + if(bottomDelta) topDelta = bottomDelta - currentSize.height * heightChangedPercent; + else topDelta = 0; + } + } else { //center vertical + if(resizable) topDelta = (childCenterPoint.y - layerBoundingRect.centerPoint.y)*heightChangedPercent - currentSize.height*heightChangedPercent/2; + else { + var centerTopChange = Math.round(childCenterPoint.y - layerBoundingRect.centerPoint.y)*heightChangedPercent; + if(centerTopChange > 0) topDelta = centerTopChange + Math.abs(currentSize.height * heightChangedPercent / 2); + else if(centerTopChange < 0) topDelta = centerTopChange - Math.abs(currentSize.height * heightChangedPercent / 2); + else topDelta = 0; + } + } + + if(changeLeft) { + if(anchor.indexOf("left") > -1) { + var leftDelta = (currentLeft - layerBoundingRect.left) * widthChangedPercent; + if(!resizable && Math.round(leftDelta)) leftDelta += currentSize.width * widthChangedPercent; + } else if(anchor.indexOf("right") > -1) { + if(resizable) leftDelta = (currentLeft - layerBoundingRect.right) * widthChangedPercent; + else { + var rightDelta = Math.round(currentLeft + currentSize.width - layerBoundingRect.right) * widthChangedPercent; + if(rightDelta) leftDelta = rightDelta - currentSize.width * widthChangedPercent; + else leftDelta = 0; + } + } else { //center horizontal + if(resizable) leftDelta = (childCenterPoint.x - layerBoundingRect.centerPoint.x)*widthChangedPercent - currentSize.width*widthChangedPercent/2; + else { + var centerLeftChange = Math.round(childCenterPoint.x - layerBoundingRect.centerPoint.x) * widthChangedPercent; + if(centerLeftChange > 0) leftDelta = centerLeftChange + Math.abs(currentSize.width * widthChangedPercent / 2); + else if(centerLeftChange < 0) leftDelta = centerLeftChange - Math.abs(currentSize.width * widthChangedPercent / 2); + else leftDelta = 0; + } + } + } + + if(topDelta) deltaLoc.y += topDelta; + if(leftDelta && changeLeft) deltaLoc.x += leftDelta; + + return css; + }; + + _actionHandlers.setPanelOrder = function(eventInfo, actions, index) { + var action = actions[index]; + for(var i = 0; i < action.panelPaths.length; i++) { + var func = action.panelPaths[i].setOrderInfo.bringToFront ? 'bringToFront' : 'sendToBack'; + var elementIds = $ax.getElementIdsFromPath(action.panelPaths[i].panelPath, eventInfo); + for(var j = 0; j < elementIds.length; j++) $ax('#' + elementIds[j])[func](); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.modifyDataSetEditItems = function(eventInfo, actions, index) { + var action = actions[index]; + var add = action.repeatersToAddTo; + var repeaters = add || action.repeatersToRemoveFrom; + var itemId; + for(var i = 0; i < repeaters.length; i++) { + var data = repeaters[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(data.path, eventInfo)[0]; + if(!id) continue; + + if(data.addType == 'this') { + var scriptId = $ax.repeater.getScriptIdFromElementId(eventInfo.srcElement); + itemId = $ax.repeater.getItemIdFromElementId(eventInfo.srcElement); + var repeaterId = $ax.getParentRepeaterFromScriptId(scriptId); + if(add) $ax.repeater.addEditItems(repeaterId, [itemId]); + else $ax.repeater.removeEditItems(repeaterId, [itemId]); + } else if(data.addType == 'all') { + var allItems = $ax.repeater.getAllItemIds(id); + if(add) $ax.repeater.addEditItems(id, allItems); + else $ax.repeater.removeEditItems(id, allItems); + } else { + var oldTarget = eventInfo.targetElement; + var itemIds = $ax.repeater.getAllItemIds(id); + var itemIdsToAdd = []; + for(var j = 0; j < itemIds.length; j++) { + itemId = itemIds[j]; + eventInfo.targetElement = $ax.repeater.createElementId(id, itemId); + if($ax.expr.evaluateExpr(data.query, eventInfo) == "true") { + itemIdsToAdd[itemIdsToAdd.length] = String(itemId); + } + eventInfo.targetElement = oldTarget; + } + if(add) $ax.repeater.addEditItems(id, itemIdsToAdd); + else $ax.repeater.removeEditItems(id, itemIdsToAdd); + } + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _action.repeaterInfoNames = { addItemsToDataSet: 'dataSetsToAddTo', deleteItemsFromDataSet: 'dataSetItemsToRemove', updateItemsInDataSet: 'dataSetsToUpdate', + addFilterToRepeater: 'repeatersToAddFilter', removeFilterFromRepeater: 'repeatersToRemoveFilter', + addSortToRepeater: 'repeaterToAddSort', removeSortFromRepeater: 'repeaterToRemoveSort', + setRepeaterToPage: 'repeatersToSetPage', setItemsPerRepeaterPage: 'repeatersToSetItemCount' + }; + + _actionHandlers.addItemsToDataSet = function(eventInfo, actions, index) { + var action = actions[index]; + for(var i = 0; i < action.dataSetsToAddTo.length; i++) { + var datasetInfo = action.dataSetsToAddTo[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(datasetInfo.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + var dataset = datasetInfo.data; + + for(var j = 0; j < dataset.length; j++) $ax.repeater.addItem(id, $ax.deepCopy(dataset[j]), eventInfo); + if(dataset.length) _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.deleteItemsFromDataSet = function(eventInfo, actions, index) { + var action = actions[index]; + for(var i = 0; i < action.dataSetItemsToRemove.length; i++) { + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var deleteInfo = action.dataSetItemsToRemove[i]; + var id = $ax.getElementIdsFromPath(deleteInfo.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + $ax.repeater.deleteItems(id, eventInfo, deleteInfo.type, deleteInfo.rule); + _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.updateItemsInDataSet = function(eventInfo, actions, index) { + var action = actions[index]; + for(var i = 0; i < action.dataSetsToUpdate.length; i++) { + var dataSet = action.dataSetsToUpdate[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(dataSet.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + + $ax.repeater.updateEditItems(id, dataSet.props, eventInfo, dataSet.type, dataSet.rule); + _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.setRepeaterToDataSet = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.repeatersToSet.length; i++) { + var setRepeaterInfo = action.repeatersToSet[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(setRepeaterInfo.path, eventInfo)[0]; + if(!id) continue; + $ax.repeater.setDataSet(id, setRepeaterInfo.localDataSetId); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.addFilterToRepeater = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.repeatersToAddFilter.length; i++) { + var addFilterInfo = action.repeatersToAddFilter[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(addFilterInfo.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + + $ax.repeater.addFilter(id, addFilterInfo.removeOtherFilters, addFilterInfo.label, addFilterInfo.filter, eventInfo.srcElement); + _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.removeFilterFromRepeater = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.repeatersToRemoveFilter.length; i++) { + var removeFilterInfo = action.repeatersToRemoveFilter[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(removeFilterInfo.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + + if(removeFilterInfo.removeAll) $ax.repeater.removeFilter(id); + else if(removeFilterInfo.filterName != '') { + $ax.repeater.removeFilter(id, removeFilterInfo.filterName); + } + _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.addSortToRepeater = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.repeatersToAddSort.length; i++) { + var addSortInfo = action.repeatersToAddSort[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(addSortInfo.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + + $ax.repeater.addSort(id, addSortInfo.label, addSortInfo.columnName, addSortInfo.ascending, addSortInfo.toggle, addSortInfo.sortType); + _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.removeSortFromRepeater = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.repeatersToRemoveSort.length; i++) { + var removeSortInfo = action.repeatersToRemoveSort[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(removeSortInfo.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + + if(removeSortInfo.removeAll) $ax.repeater.removeSort(id); + else if(removeSortInfo.sortName != '') $ax.repeater.removeSort(id, removeSortInfo.sortName); + _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.setRepeaterToPage = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.repeatersToSetPage.length; i++) { + var setPageInfo = action.repeatersToSetPage[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(setPageInfo.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + + var oldTarget = eventInfo.targetElement; + eventInfo.targetElement = id; + $ax.repeater.setRepeaterToPage(id, setPageInfo.pageType, setPageInfo.pageValue, eventInfo); + eventInfo.targetElement = oldTarget; + _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.setItemsPerRepeaterPage = function(eventInfo, actions, index) { + var action = actions[index]; + + for(var i = 0; i < action.repeatersToSetItemCount.length; i++) { + var setItemCountInfo = action.repeatersToSetItemCount[i]; + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(setItemCountInfo.path, eventInfo)[0]; + if(!id || _ignoreAction(id)) continue; + + if(setItemCountInfo.noLimit) $ax.repeater.setNoItemLimit(id); + else $ax.repeater.setItemLimit(id, setItemCountInfo.itemCountValue, eventInfo); + _addRefresh(id); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.refreshRepeater = function(eventInfo, actions, index) { + // We use this as a psudo action now. + var action = actions[index]; + for (var i = 0; i < action.repeatersToRefresh.length; i++) { + // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters + // or none if unplaced + var id = $ax.getElementIdsFromPath(action.repeatersToRefresh[i], eventInfo)[0]; + if(id) _tryRefreshRepeater(id, eventInfo); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + var _tryRefreshRepeater = function(id, eventInfo) { + var idIndex = _repeatersToRefresh.indexOf(id); + if(idIndex == -1) return; + + $ax.splice(_repeatersToRefresh, idIndex, 1); + $ax.repeater.refreshRepeater(id, eventInfo); + }; + + _action.tryRefreshRepeaters = function(ids, eventInfo) { + for(var i = 0; i < ids.length; i++) _tryRefreshRepeater(ids[i], eventInfo); + }; + + _actionHandlers.scrollToWidget = function(eventInfo, actions, index) { + var action = actions[index]; + var elementIds = $ax.getElementIdsFromPath(action.objectPath, eventInfo); + if(elementIds.length > 0) $ax('#' + elementIds[0]).scroll(action.options); + + _dispatchAction(eventInfo, actions, index + 1); + }; + + + _actionHandlers.enableDisableWidgets = function(eventInfo, actions, index) { + var action = actions[index]; + for(var i = 0; i < action.pathToInfo.length; i++) { + var elementIds = $ax.getElementIdsFromPath(action.pathToInfo[i].objectPath, eventInfo); + var enable = action.pathToInfo[i].enableDisableInfo.enable; + for(var j = 0; j < elementIds.length; j++) $ax('#' + elementIds[j]).enabled(enable); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.setImage = function(eventInfo, actions, index) { + var oldTarget = eventInfo.targetElement; + var action = actions[index]; + var view = $ax.adaptive.currentViewId; + + eventInfo.image = true; + for(var i = 0; i < action.imagesToSet.length; i++) { + var imgInfo = action.imagesToSet[i]; + imgInfo = view ? imgInfo.adaptive[view] : imgInfo.base; + var elementIds = $ax.getElementIdsFromPath(action.imagesToSet[i].objectPath, eventInfo); + + for(var j = 0; j < elementIds.length; j++) { + var elementId = elementIds[j]; + + eventInfo.targetElement = elementId; + var evaluatedImgs = _evaluateImages(imgInfo, eventInfo); + + var img = evaluatedImgs.normal; + if($ax.style.IsWidgetDisabled(elementId)) { + if(imgInfo.disabled) img = evaluatedImgs.disabled; + } else if($ax.style.IsWidgetSelected(elementId)) { + if(imgInfo.selected) img = evaluatedImgs.selected; + } else if($ax.event.mouseDownObjectId == elementId && imgInfo.mouseDown) img = evaluatedImgs.mouseDown; + else if($ax.event.mouseOverIds.indexOf(elementId) != -1 && imgInfo.mouseOver) { + img = evaluatedImgs.mouseOver; + //Update mouseOverObjectId + var currIndex = $ax.event.mouseOverIds.indexOf($ax.event.mouseOverObjectId); + var imgIndex = $ax.event.mouseOverIds.indexOf(elementId); + if(currIndex < imgIndex) $ax.event.mouseOverObjectId = elementId; + } else if(imgInfo.mouseOver && elementId == eventInfo.srcElement) { + img = evaluatedImgs.mouseOver; + } + + // $('#' + $ax.repeater.applySuffixToElementId(elementId, '_img')).attr('src', img); + $jobj($ax.GetImageIdFromShape(elementId)).attr('src', img); + + //Set up overrides + $ax.style.mapElementIdToImageOverrides(elementId, evaluatedImgs); + $ax.style.updateElementIdImageStyle(elementId); + + if(evaluatedImgs.mouseOver || evaluatedImgs.mouseDown) $ax.event.updateIxStyleEvents(elementId); + } + } + eventInfo.targetElement = oldTarget; + eventInfo.image = false; + + _dispatchAction(eventInfo, actions, index + 1); + }; + + var _evaluateImages = function(imgInfo, eventInfo) { + var retVal = {}; + for(var state in imgInfo) { + if(!imgInfo.hasOwnProperty(state)) continue; + var img = imgInfo[state][$ax.adaptive.getSketchKey()] || $ax.expr.evaluateExpr(imgInfo[state].literal, eventInfo); + if(!img) img = $axure.utils.getTransparentGifPath(); + retVal[state] = img; + } + return retVal; + }; + + $ax.clearRepeaterImageOverrides = function(repeaterId) { + var childIds = $ax.getChildElementIdsForRepeater(repeaterId); + for(var i = childIds; i < childIds.length; i++) $ax.style.deleteElementIdToImageOverride(childIds[i]); + }; + + _actionHandlers.setFocusOnWidget = function(eventInfo, actions, index) { + var action = actions[index]; + if(action.objectPaths.length > 0) { + var elementIds = $ax.getElementIdsFromPath(action.objectPaths[0], eventInfo); + if(elementIds.length > 0) { + $ax('#' + elementIds[0]).focus(); + //if select text and not in placeholder mode, then select all text + if(action.selectText && !$ax.placeholderManager.isActive(elementIds[0])) { + var elementChildren = document.getElementById(elementIds[0]).children; + //find the input or textarea element + for(var i = 0; i < elementChildren.length; i++) { + if (elementChildren[i].id.indexOf('_input') == -1) continue; + var elementTagName = elementChildren[i].tagName; + if(elementTagName && (elementTagName.toLowerCase() == "input" || elementTagName.toLowerCase() == "textarea")) { + elementChildren[i].select(); + } + } + } + } + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.expandCollapseTree = function(eventInfo, actions, index) { + var action = actions[index]; + for(var i = 0; i < action.pathToInfo.length; i++) { + var pair = action.pathToInfo[i]; + var elementIds = $ax.getElementIdsFromPath(pair.treeNodePath, eventInfo); + for(var j = 0; j < elementIds.length; j++) $ax('#' + elementIds[j]).expanded(pair.expandCollapseInfo.expand); + } + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.other = function(eventInfo, actions, index) { + var action = actions[index]; + $ax.navigate({ + url: $axure.utils.getOtherPath() + "#other=" + encodeURI(action.otherDescription), + target: "popup", + includeVariables: false, + popupOptions: action.popup + }); + + _dispatchAction(eventInfo, actions, index + 1); + }; + + _actionHandlers.fireEvents = function(eventInfo, actions, index) { + var action = actions[index]; + //look for the nearest element id + + var objId = eventInfo.srcElement; + var thisWidget = eventInfo.thiswidget; + var obj = $ax.getObjectFromElementId(objId); + var rdoId = obj ? $ax.getRdoParentFromElementId(objId) : ""; + var rdo = $ax.getObjectFromElementId(rdoId); + var page = rdo ? $ax.pageData.masters[rdo.masterId] : $ax.pageData.page; + + // Check if rdo should be this + var oldIsMasterEvent = eventInfo.isMasterEvent; + if (obj && $ax.public.fn.IsReferenceDiagramObject(obj.type) && eventInfo.isMasterEvent) { + rdoId = objId; + rdo = obj; + page = $ax.pageData.masters[rdo.masterId]; + } + + for(var i = 0; i < action.firedEvents.length; i++) { + var firedEvent = action.firedEvents[i]; + var isPage = firedEvent.objectPath.length == 0; + var targetObjIds = isPage ? [rdoId] : $ax.getElementIdsFromPath(firedEvent.objectPath, eventInfo); + for (var j = 0; j < targetObjIds.length; j++) { + var targetObjId = targetObjIds[j]; + var targetObj = isPage ? rdo : $ax.getObjectFromElementId(targetObjId); + + eventInfo.srcElement = targetObjId || ''; + eventInfo.thiswidget = $ax.getWidgetInfo(eventInfo.srcElement); + + eventInfo.isMasterEvent = false; + var raisedEvents = firedEvent.raisedEventIds; + if(raisedEvents) { + for(var k = 0; k < raisedEvents.length; k++) { + var event = targetObj.interactionMap && targetObj.interactionMap.raised && targetObj.interactionMap.raised[raisedEvents[k]]; + if(event) $ax.event.handleEvent(targetObjId, eventInfo, event, false, true); + } + } + + if(isPage) { + eventInfo.isMasterEvent = true; + eventInfo.label = $ax.pageData.page.name; + eventInfo.friendlyType = 'Page'; + } + + var firedTarget = isPage ? page : targetObj; + var firedEventNames = firedEvent.firedEventNames; + if(firedEventNames) { + for(k = 0; k < firedEventNames.length; k++) { + event = firedTarget.interactionMap && firedTarget.interactionMap[firedEventNames[k]]; + if(event) $ax.event.handleEvent(isPage ? '' : targetObjId, eventInfo, event, false, true); + } + } + if(isPage) eventInfo.isMasterEvent = oldIsMasterEvent; + } + eventInfo.srcElement = objId; + eventInfo.thiswidget = thisWidget; + + eventInfo.isMasterEvent = oldIsMasterEvent; + } + + _dispatchAction(eventInfo, actions, index + 1); + }; +}); + +//***** expr.js *****// +// ******* Expr MANAGER ******** // +$axure.internal(function($ax) { + var _expr = $ax.expr = {}; + var _binOpHandlers = { + '&&': function(left, right) { return _binOpOverride(left, right, function(left) { return $ax.getBool(left) && $ax.getBool(right()); }); }, + '||': function(left, right) { return _binOpOverride(left, right, function(left) { return $ax.getBool(left) || $ax.getBool(right()); }); }, + '==': function(left, right) { return isEqual(left, right, true); }, + '!=': function(left, right) { return !isEqual(left, right, true); }, + '>': function(left, right) { return _binOpNum(left, right, function(left, right) { return left > right; }); }, + '<': function(left, right) { return _binOpNum(left, right, function(left, right) { return left < right; }); }, + '>=': function(left, right) { return _binOpNum(left, right, function(left, right) { return left >= right; }); }, + '<=': function(left, right) { return _binOpNum(left, right, function(left, right) { return left <= right; }); } + }; + + var checkOps = function(left, right) { + return left == undefined || right == undefined; + }; + + var isEqual = function (left, right, isFunction) { + if (isFunction) { + //if left and right is function, then get the value + //otherwise left and right should be already the value we want + left = left(); + right = right(); + } + + if(checkOps(left, right)) return false; + + if(left instanceof Date && right instanceof Date) { + if(left.getMilliseconds() != right.getMilliseconds()) return false; + if(left.getSeconds() != right.getSeconds()) return false; + if(left.getMinutes() != right.getMinutes()) return false; + if(left.getHours() != right.getHours()) return false; + if(left.getDate() != right.getDate()) return false; + if(left.getMonth() != right.getMonth()) return false; + if(left.getYear() != right.getYear()) return false; + return true; + } + + if(left instanceof Object && right instanceof Object) { + var prop; + // Go through all of lefts properties and compare them to rights. + for(prop in left) { + if(!left.hasOwnProperty(prop)) continue; + // If left has a property that the right doesn't they are not equal. + if(!right.hasOwnProperty(prop)) return false; + // If any of their properties are not equal, they are not equal. + if(!isEqual(left[prop], right[prop], false)) return false; + } + + for(prop in right) { + // final check to make sure right doesn't have some extra properties that make them not equal. + if(left.hasOwnProperty(prop) != right.hasOwnProperty(prop)) return false; + } + + return true; + } + return $ax.getBool(left) == $ax.getBool(right); + }; + + var _binOpOverride = function(left, right, func) { + left = left(); + if(left == undefined) return false; + var res = func(left, right); + return res == undefined ? false : res; + }; + + var _binOpNum = function(left, right, func) { + var left = left(); + var right = right(); + if(checkOps(left, right)) return false; + + return func(left, Number(right)); + }; + + var _exprHandlers = {}; + _exprHandlers.array = function(expr, eventInfo) { + var returnVal = []; + for(var i = 0; i < expr.items.length; i++) { + returnVal[returnVal.length] = _evaluateExpr(expr.items[i], eventInfo); + } + return returnVal; + }; + + _exprHandlers.binaryOp = function(expr, eventInfo) { + var left = function() { return expr.leftExpr && _evaluateExpr(expr.leftExpr, eventInfo); }; + var right = function() { return expr.rightExpr && _evaluateExpr(expr.rightExpr, eventInfo); }; + + if(left == undefined || right == undefined) return false; + return _binOpHandlers[expr.op](left, right); + }; + + _exprHandlers.block = function(expr, eventInfo) { + var subExprs = expr.subExprs; + for(var i = 0; i < subExprs.length; i++) { + _evaluateExpr(subExprs[i], eventInfo); //ignore the result + } + }; + + _exprHandlers.booleanLiteral = function(expr) { + return expr.value; + }; + + _exprHandlers.nullLiteral = function() { return null; }; + + _exprHandlers.pathLiteral = function(expr, eventInfo) { + if(expr.isThis) return [eventInfo.srcElement]; + if(expr.isFocused && window.lastFocusedControl) { + $ax('#' + window.lastFocusedControl).focus(); + return [window.lastFocusedControl]; + } + if(expr.isTarget) return [eventInfo.targetElement]; + + return $ax.getElementIdsFromPath(expr.value, eventInfo); + }; + + _exprHandlers.panelDiagramLiteral = function(expr, eventInfo) { + var elementIds = $ax.getElementIdsFromPath(expr.panelPath, eventInfo); + var elementIdsWithSuffix = []; + var suffix = '_state' + expr.panelIndex; + for(var i = 0; i < elementIds.length; i++) { + elementIdsWithSuffix[i] = $ax.repeater.applySuffixToElementId(elementIds[i], suffix); + } + return String($jobj(elementIdsWithSuffix).data('label')); + }; + + _exprHandlers.fcall = function(expr, eventInfo) { + var oldTarget = eventInfo.targetElement; + var targets = []; + var fcallArgs = []; + var exprArgs = expr.arguments; + for(var i = 0; i < expr.arguments.length; i++) { + var exprArg = exprArgs[i]; + var fcallArg = ''; + if(targets.length) { + for(var j = 0; j < targets.length; j++) { + if(exprArg == null) { + fcallArgs[j][i] = null; + continue; + } + eventInfo.targetElement = targets[j]; + fcallArg = _evaluateExpr(exprArg, eventInfo); + if(typeof (fcallArg) == 'undefined') return ''; + fcallArgs[j][i] = fcallArg; + } + } else { + if(exprArg == null) { + fcallArgs[i] = null; + continue; + } + fcallArg = _evaluateExpr(exprArg, eventInfo); + if(typeof (fcallArg) == 'undefined') return ''; + fcallArgs[i] = fcallArg; + } + + // We do support null exprArgs... + // TODO: This makes 2 assumptions that may change in the future. 1. The pathLiteral is the always the first arg. 2. there is always only 1 pathLiteral + if(exprArg && exprArg.exprType == 'pathLiteral') { + targets = fcallArg; + + // fcallArgs is now an array of an array of args + for(j = 0; j < targets.length; j++) fcallArgs[j] = [[fcallArg[j]]]; + } + } + + // we want to preserve the target element from outside this function. + eventInfo.targetElement = oldTarget; + + var retval = ''; + if(targets.length) { + // Go backwards so retval is the first item. + for(i = targets.length - 1; i >= 0; i--) { + var args = fcallArgs[i]; + // Add event info to the end + args[args.length] = eventInfo; + retval = _exprFunctions[expr.functionName].apply(this, args); + } + } else fcallArgs[fcallArgs.length] = eventInfo; + return targets.length ? retval : _exprFunctions[expr.functionName].apply(this, fcallArgs); + }; + + _exprHandlers.globalVariableLiteral = function(expr) { + return expr.variableName; + }; + + _exprHandlers.keyPressLiteral = function(expr) { + var keyInfo = {}; + keyInfo.keyCode = expr.keyCode; + keyInfo.ctrl = expr.ctrl; + keyInfo.alt = expr.alt; + keyInfo.shift = expr.shift; + + return keyInfo; + }; + + _exprHandlers.adaptiveViewLiteral = function(expr) { + return expr.id; + }; + + _exprHandlers.optionLiteral = function(expr) { + return expr.value; + } + + var _substituteSTOs = function(expr, eventInfo) { + //first evaluate the local variables + var scope = {}; + for(var varName in expr.localVariables) { + scope[varName] = $ax.expr.evaluateExpr(expr.localVariables[varName], eventInfo); + } + + // TODO: [ben] Date and data object (obj with info for url or image) both need to return non-strings. + var i = 0; + var retval; + var retvalString = expr.value.replace(/\[\[(?!\[)(.*?)\]\](?=\]*)/g, function(match) { + var sto = expr.stos[i++]; + if(sto.sto == 'error') return match; + try { + var result = $ax.evaluateSTO(sto, scope, eventInfo); + } catch(e) { + return match; + } + + if((result instanceof Object) && i == 1 && expr.value.substring(0, 2) == '[[' && + expr.value.substring(expr.value.length - 2) == ']]') { + // If the result was an object, this was the first result, and the whole thing was this expresion. + retval = result; + } + return ((result instanceof Object) && (result.label || result.text)) || result; + }); + // If more than one group returned, the object is not valid + if(i != 1) retval = false; + return retval || retvalString; + }; + + _exprHandlers.htmlLiteral = function (expr, eventInfo) { + eventInfo.htmlLiteral = true; + var html = _substituteSTOs(expr, eventInfo); + eventInfo.htmlLiteral = false + return html; + }; + + _exprHandlers.stringLiteral = function(expr, eventInfo) { + return _substituteSTOs(expr, eventInfo); + }; + + var _exprFunctions = {}; + + _exprFunctions.SetCheckState = function(elementIds, value) { + var toggle = value == 'toggle'; + var boolValue = Boolean(value) && value != 'false'; + + for(var i = 0; i < elementIds.length; i++) { + var query = $ax('#' + elementIds[i]); + query.selected(toggle ? !query.selected() : boolValue); + } + }; + + _exprFunctions.SetSelectedOption = function(elementIds, value) { + for(var i = 0; i < elementIds.length; i++) { + var elementId = elementIds[i]; + var obj = $jobj($ax.INPUT(elementId)); + + if(obj.val() == value) return; + obj.val(value); + + if($ax.event.HasSelectionChanged($ax.getObjectFromElementId(elementId))) $ax.event.raiseSyntheticEvent(elementId, 'onSelectionChange'); + } + }; + + _exprFunctions.SetGlobalVariableValue = function(varName, value) { + $ax.globalVariableProvider.setVariableValue(varName, value); + }; + + _exprFunctions.SetWidgetFormText = function(elementIds, value) { + for(var i = 0; i < elementIds.length; i++) { + var elementId = elementIds[i]; + var inputId = $ax.repeater.applySuffixToElementId(elementId, '_input'); + + var obj = $jobj(inputId); + if(obj.val() == value || (value == '' && $ax.placeholderManager.isActive(elementId))) return; + obj.val(value); + $ax.placeholderManager.updatePlaceholder(elementId, !value); + if($ax.event.HasTextChanged($ax.getObjectFromElementId(elementId))) $ax.event.TryFireTextChanged(elementId); + } + }; + + _exprFunctions.SetFocusedWidgetText = function(elementId, value) { + if(window.lastFocusedControl) { + var elementId = window.lastFocusedControl; + var type = $obj(elementId).type; + if ($ax.public.fn.IsTextBox(type) || $ax.public.fn.IsTextArea(type)) _exprFunctions.SetWidgetFormText([elementId], value); + else _exprFunctions.SetWidgetRichText([elementId], value, true); + } + }; + + _exprFunctions.GetRtfElementHeight = function(rtfElement) { + if(rtfElement.innerHTML == '') rtfElement.innerHTML = ' '; + return rtfElement.offsetHeight; + }; + + _exprFunctions.SetWidgetRichText = function(ids, value, plain) { + // Converts dates, widgetinfo, and the like to strings. + value = _exprFunctions.ToString(value); + + //Replace any newlines with line breaks + var finalValue = value.replace(/\r\n/g, '
    ').replace(/\n/g, '
    '); + + for(var i = 0; i < ids.length; i++) { + var id = ids[i]; + + // If calling this on button shape, get the id of the rich text panel inside instead + if($obj(id).type !== $ax.constants.LINK_TYPE) id = $ax.GetTextPanelId(id, true); + + var element = window.document.getElementById(id); + $ax.visibility.SetVisible(element, value != ''); + + $ax.style.transformTextWithVerticalAlignment(id, function() { + var spans = $jobj(id).find('span'); + if(plain) { + // Can't set value as text because '
    ' doesn't actually do a line break + // Can't set vaule as html because it doesn't like '<' and ignores all after it + // Create tags yourself + var lines = value.split(/\r\n|\n/); + //if we are dealing with only one line, just reuse the old one + if(spans.length === 1 && lines.length === 1) { + spans[0].innerHTML = value; + return; + } + + // Wrap in span and p, style them accordingly. + var span = $(''); + if(spans.length > 0) { + span.attr('style', $(spans[0]).attr('style')); + span.attr('id', $(spans[0]).attr('id')); + } + + if(lines.length == 1) span.text(value); + else { + for(var i = 0; i < lines.length; i++) { + if(i != 0) span.append($('
    ')); + var line = lines[i]; + if(line.length == 0) continue; + + var subSpan = $(''); + subSpan.text(line); + span.append(subSpan); + } + } + + var ps = $jobj(id).find('p'); + if(ps && ps.length) { + ps[0].innerHTML = $('
    ').append(span).html();; + if(ps.length > 1) { + for(var i = 1; i < ps.length; i++) { + $(ps[i]).remove(); + } + } + } else { + var p = $('

    '); + p.append(span); + element.innerHTML = $('
    ').append(p).html(); + } + } else element.innerHTML = finalValue; + }); + + if(!plain) $ax.style.CacheOriginalText(id, true); + } + }; + + _exprFunctions.GetCheckState = function(ids) { + return $ax('#' + ids[0]).selected(); + }; + + _exprFunctions.GetSelectedOption = function (ids) { + var inputs = $jobj($ax.INPUT(ids[0])); + return inputs.length ? inputs[0].value : ''; + }; + + _exprFunctions.GetNum = function(str) { + //Setting a GlobalVariable to some blank text then setting a widget to the value of that variable would result in 0 not "" + //I have fixed this another way so commenting this should be fine now + //if (!str) return ""; + return isNaN(str) ? str : Number(str); + }; + + _exprFunctions.GetGlobalVariableValue = function(id) { + return $ax.globalVariableProvider.getVariableValue(id); + }; + + _exprFunctions.GetGlobalVariableLength = function(id) { + return _exprFunctions.GetGlobalVariableValue(id).length; + }; + + _exprFunctions.GetWidgetText = function(ids) { + if($ax.placeholderManager.isActive(ids[0])) return ''; + var input = $ax.INPUT(ids[0]); + return $ax('#' + ($jobj(input).length ? input : ids[0])).text(); + }; + + _exprFunctions.GetFocusedWidgetText = function() { + if(window.lastFocusedControl) { + return $ax('#' + window.lastFocusedControl).text(); + } else { + return ""; + } + }; + + _exprFunctions.GetWidgetValueLength = function(ids) { + var id = ids[0]; + if(!id) return undefined; + if($ax.placeholderManager.isActive(id)) return 0; + var obj = $jobj($ax.INPUT(id)); + if(!obj.length) obj = $jobj(id); + var val = obj[0].value || _exprFunctions.GetWidgetText([id]); + return val.length; + }; + + _exprFunctions.GetPanelState = function(ids) { + var id = ids[0]; + if(!id) return undefined; + var stateId = $ax.visibility.GetPanelState(id); + return stateId && String($jobj(stateId).data('label')); + }; + + _exprFunctions.GetWidgetVisibility = function(ids) { + var id = ids[0]; + if(!id) return undefined; + return $ax.visibility.IsIdVisible(id); + }; + + // ***************** Validation Functions ***************** // + + _exprFunctions.IsValueAlpha = function(val) { + var isAlphaRegex = new RegExp("^[a-z\\s]+$", "gi"); + return isAlphaRegex.test(val); + }; + + _exprFunctions.IsValueNumeric = function(val) { + var isNumericRegex = new RegExp("^[0-9,\\.\\s]+$", "gi"); + return isNumericRegex.test(val); + }; + + _exprFunctions.IsValueAlphaNumeric = function(val) { + var isAlphaNumericRegex = new RegExp("^[0-9a-z\\s]+$", "gi"); + return isAlphaNumericRegex.test(val); + }; + + _exprFunctions.IsValueOneOf = function(val, values) { + for(var i = 0; i < values.length; i++) { + var option = values[i]; + if(val == option) return true; + } + //by default, return false + return false; + }; + + _exprFunctions.IsValueNotAlpha = function(val) { + return !_exprFunctions.IsValueAlpha(val); + }; + + _exprFunctions.IsValueNotNumeric = function(val) { + return !_exprFunctions.IsValueNumeric(val); + }; + + _exprFunctions.IsValueNotAlphaNumeric = function(val) { + return !_exprFunctions.IsValueAlphaNumeric(val); + }; + + _exprFunctions.IsValueNotOneOf = function(val, values) { + return !_exprFunctions.IsValueOneOf(val, values); + }; + + _exprFunctions.GetKeyPressed = function(eventInfo) { + return eventInfo.keyInfo; + }; + + _exprFunctions.GetCursorRectangles = function() { + var rects = new Object(); + rects.lastRect = new $ax.drag.Rectangle($ax.lastMouseLocation.x, $ax.lastMouseLocation.y, 1, 1); + rects.currentRect = new $ax.drag.Rectangle($ax.mouseLocation.x, $ax.mouseLocation.y, 1, 1); + return rects; + }; + + _exprFunctions.GetWidgetRectangles = function (elementIds, eventInfo) { + var elementId = elementIds[0]; + var rects = new Object(); + var jObj = $jobj(elementId); + var invalid = jObj.length == 0; + var parent = jObj; + // Or are in valid if no obj can be found, or if it is not visible. + while(parent.length != 0 && !parent.is('body')) { + if(parent.css('display') == 'none') { + invalid = true; + break; + } + parent = parent.parent(); + } + if(invalid) { + rects.lastRect = rects.currentRect = new $ax.drag.Rectangle(-1, -1, -1, -1); + return rects; + } + + var axObj = $ax('#' + elementId); + rects.lastRect = new $ax.drag.Rectangle( + axObj.left(), + axObj.top(), + axObj.width(), + axObj.height()); + + rects.currentRect = rects.lastRect; + return rects; + }; + + _exprFunctions.GetWidget = function(elementId) { + return $ax.getWidgetInfo(elementId[0]); + }; + + _exprFunctions.GetAdaptiveView = function() { + return $ax.adaptive.currentViewId || ''; + }; + + _exprFunctions.IsEntering = function(movingRects, targetRects) { + return !movingRects.lastRect.IntersectsWith(targetRects.currentRect) && movingRects.currentRect.IntersectsWith(targetRects.currentRect); + }; + + _exprFunctions.IsLeaving = function(movingRects, targetRects) { + return movingRects.lastRect.IntersectsWith(targetRects.currentRect) && !movingRects.currentRect.IntersectsWith(targetRects.currentRect); + }; + + var _IsOver = _exprFunctions.IsOver = function(movingRects, targetRects) { + return movingRects.currentRect.IntersectsWith(targetRects.currentRect); + }; + + _exprFunctions.IsNotOver = function(movingRects, targetRects) { + return !_IsOver(movingRects, targetRects); + }; + + _exprFunctions.ValueContains = function(inputString, value) { + return inputString.indexOf(value) > -1; + }; + + _exprFunctions.ValueNotContains = function(inputString, value) { + return !_exprFunctions.ValueContains(inputString, value); + }; + + _exprFunctions.ToString = function(value) { + if(value.isWidget) { + return value.text; + } + return String(value); + }; + + var _evaluateExpr = $ax.expr.evaluateExpr = function(expr, eventInfo, toString) { + if(expr === undefined || expr === null) return undefined; + var result = _exprHandlers[expr.exprType](expr, eventInfo); + return toString ? _exprFunctions.ToString(result) : result; + }; + + +}); +//***** geometry.js *****// +// ******* Region MANAGER ******** // +$axure.internal(function($ax) { + var _geometry = $ax.geometry = {}; + var regionMap = {}; + var regionList = []; + + var _unregister = function(label) { + var regionIndex = regionList.indexOf(label); + if(regionIndex != -1) { + var end = $ax.splice(regionList, regionIndex + 1); + $ax.splice(regionList, regionIndex, regionList.length - regionIndex); + regionList = regionList.concat(end); + } + delete regionMap[label]; + }; + _geometry.unregister = _unregister; + + var clear = function() { + regionMap = {}; + regionList = []; + }; + + var _polygonRegistered = function(label) { + return Boolean(regionMap[label]); + }; + _geometry.polygonRegistered = _polygonRegistered; + + // Must be counterclockwise, or enter/exit will be wrong + var _registerPolygon = function(label, points, callback, info) { + var regionIndex = regionList.indexOf(label); + if(regionIndex == -1) regionList.push(label); + regionMap[label] = { points: points, callback: callback, info: info }; + }; + _geometry.registerPolygon = _registerPolygon; + + var _getPolygonInfo = function(label) { + if(!_polygonRegistered(label)) return undefined; + return regionMap[label].info; + }; + _geometry.getPolygonInfo = _getPolygonInfo; + + + + var _genRect = function(info, roundHalfPixel) { + var x = info.pagex(); + var y = info.pagey(); + var w = info.width(); + var h = info.height(); + + if(roundHalfPixel) { + if(x % 1 != 0) { + x = Math.floor(x); + w++; + } + if(y % 1 != 0) { + y = Math.floor(y); + h++; + } + } + + var r = x + w; + var b = y + h; + + var rect = { + X: function() { return x; }, + Y: function() { return y; }, + Wigth: function() { return w; }, + Height: function() { return h; }, + Left: function() { return x; }, + Right: function() { return r; }, + Top: function() { return y; }, + Bottom: function() { return b; } + }; + return rect; + }; + _geometry.genRect = _genRect; + + var _genPoint = function(x, y) { + return { x: x, y: y }; + }; + _geometry.genPoint = _genPoint; + + var oldPoint = _genPoint(0, 0); + _geometry.tick = function(x, y, end) { + var lastPoint = oldPoint; + var nextPoint = oldPoint = _genPoint(x, y); + var line = { p1: lastPoint, p2: nextPoint }; + if(!regionList.length) return; + + for(var i = 0; i < regionList.length; i++) { + var region = regionMap[regionList[i]]; + var points = region.points; + if(!region.checked) { + if(!_checkInside(points, $ax.mouseLocation)) { + region.callback({ outside: true }); + continue; + } + region.checked = true; + } + for(var j = 0; j < points.length; j++) { + var startSegment = points[j]; + var endSegment = points[(j + 1) % points.length]; + var intersectInfo = linesIntersect(line, { p1: startSegment, p2: endSegment }); + if(intersectInfo) { + region.callback(intersectInfo); + break; + } + } + } + + if(end) clear(); + }; + + // Info if the one line touches the other (even barely), false otherwise + // Info includes point, if l1 is entering or exiting l2, and any ties that happened, or parallel info + var linesIntersect = function(l1, l2) { + var retval = {}; + var ties = {}; + + var l1p1 = l1.p1.x < l1.p2.x || (l1.p1.x == l1.p2.x && l1.p1.y < l1.p2.y) ? l1.p1 : l1.p2; + var l1p2 = l1.p1.x < l1.p2.x || (l1.p1.x == l1.p2.x && l1.p1.y < l1.p2.y) ? l1.p2 : l1.p1; + var m1 = (l1p2.y - l1p1.y) / (l1p2.x - l1p1.x); + + var l2p1 = l2.p1.x < l2.p2.x || (l2.p1.x == l2.p2.x && l2.p1.y < l2.p2.y) ? l2.p1 : l2.p2; + var l2p2 = l2.p1.x < l2.p2.x || (l2.p1.x == l2.p2.x && l2.p1.y < l2.p2.y) ? l2.p2 : l2.p1; + var m2 = (l2p2.y - l2p1.y) / (l2p2.x - l2p1.x); + + var l1Vert = l1.p1.x == l1.p2.x; + var l2Vert = l2.p1.x == l2.p2.x; + if(l1Vert || l2Vert) { + if(l1Vert && l2Vert) { + // If the lines don't follow the same path, return + if(l1p1.x != l2p1.x) return false; + // if they never meet, return + if(l1p2.y < l2p1.y || l1p1.y > l2p2.y) return false; + var firstVert = l1p1.y >= l2p1.y ? l1p1 : l2p1; + var secondVert = l1p2.y <= l2p2.y ? l1p2 : l2p2; + // First is from the perspective of l1 + retval.parallel = { + first: l1p1 == l1.p1 ? firstVert : secondVert, + second: l1p2 == l1.p2 ? secondVert : firstVert, + sameDirection: (l1p1 == l1.p1) == (l2p1 == l2.p1) + }; + + return retval; + } + + var x1 = l2Vert ? l1p1.x : l2p1.x; + var x2 = l2Vert ? l1p2.x : l2p2.x; + var xVert = l2Vert ? l2p1.x : l1p1.x; + + var y = l2Vert ? l1p1.y + (xVert - x1) * m1 : l2p1.y + (xVert - x1) * m2; + var y1 = l2Vert ? l2p1.y : l1p1.y; + var y2 = l2Vert ? l2p2.y : l1p2.y; + if(xVert >= x1 && xVert <= x2 && y >= y1 && y <= y2) { + retval.point = { x: xVert, y: y }; + retval.exiting = l2Vert == (y1 == (l2Vert ? l2.p1.y : l1.p1.y)) == (x1 == (l2Vert ? l1.p1.x : l2.p1.x)); + retval.entering = !retval.exiting; + + // Calculate ties + if(x1 == xVert) { + ties[l2Vert ? 'l1' : 'l2'] = (x1 == (l2Vert ? l1.p1.x : l2.p1.x)) ? 'start' : 'end'; + retval.ties = ties; + } else if(x2 == xVert) { + ties[l2Vert ? 'l1' : 'l2'] = (x2 == (l2Vert ? l1.p2.x : l2.p2.x)) ? 'end' : 'start'; + retval.ties = ties; + } + if(y1 == y) { + ties[l2Vert ? 'l2' : 'l1'] = (y1 == (l2Vert ? l2.p1.y : l1.p1.y)) ? 'start' : 'end'; + retval.ties = ties; + } else if(y2 == y) { + ties[l2Vert ? 'l2' : 'l1'] = (y2 == (l2Vert ? l2.p2.y : l1.p2.y)) ? 'end' : 'start'; + retval.ties = ties; + } + + return retval; + } + return false; + } + // If here, no vertical lines + + if(m1 == m2) { + // If the lines don't follow the same path, return + if(l1p1.y != (l2p1.y + (l1p1.x - l2p1.x) * m1)) return false; + // if they never meet, return + if(l1p2.x < l2p1.x || l1p1.x > l2p2.x) return false; + var first = l1p1.x >= l2p1.x ? l1p1 : l2p1; + var second = l1p2.x <= l2p2.x ? l1p2 : l2p2; + // First is from the perspective of l1 + retval.parallel = { + first: l1p1 == l1.p1 ? first : second, + second: l1p2 == l1.p2 ? second : first, + sameDirection: (l1p1 == l1.p1) == (l2p1 == l2.p1) + }; + + return retval; + } + + var x = (l2p1.y - l2p1.x * m2 - l1p1.y + l1p1.x * m1) / (m1 - m2); + + // Check if x is out of bounds + if(x >= l1p1.x && x <= l1p2.x && x >= l2p1.x && x <= l2p2.x) { + var y = l1p1.y + (x - l1p1.x) * m1; + retval.point = { x: x, y: y }; + retval.entering = m1 > m2 == (l1p1 == l1.p1) == (l2p1 == l2.p1); + retval.exiting = !retval.entering; + + // Calculate ties + if(l1.p1.x == x) { + ties.l1 = 'start'; + retval.ties = ties; + } else if(l1.p2.x == x) { + ties.l1 = 'end'; + retval.ties = ties; + } + if(l2.p1.x == x) { + ties.l2 = 'start'; + retval.ties = ties; + } else if(l2.p2.x == x) { + ties.l2 = 'end'; + retval.ties = ties; + } + + return retval; + } + return false; + }; + + var _checkInsideRegion = function(label, point) { + if(!_polygonRegistered(label)) return false; + + return _checkInside(regionMap[label].points, point || $ax.mouseLocation); + }; + _geometry.checkInsideRegion = _checkInsideRegion; + + // Returns true if point is inside the polygon, including ties + var _checkInside = function(polygon, point) { + // Make horizontal line wider than the polygon, with the y of point to test location + var firstX = polygon[0].x; + var secondX = firstX; + var i; + for(i = 1; i < polygon.length; i++) { + var polyX = polygon[i].x; + firstX = Math.min(firstX, polyX); + secondX = Math.max(secondX, polyX); + } + var line = { + p1: _genPoint(--firstX, point.y), + p2: _genPoint(++secondX, point.y) + }; + + // If entered true, with closest intersection says you are inside the polygon. + var entered = false; + // Closest is the closest intersection to the left of the point + var closest = line.p1.x; + // This is for if intersections hit the same point, to find out which is correct + var cos = -2; + + var getCos = function(line) { + var x = line.p2.x - line.p1.x; + var y = line.p2.y - line.p1.y; + return x / Math.sqrt(x * x + y * y); + }; + + for(i = 0; i < polygon.length; i++) { + var polyLine = { p1: polygon[i], p2: polygon[(i + 1) % polygon.length] }; + var intersectInfo = linesIntersect(line, polyLine); + if(!intersectInfo) continue; + + if(intersectInfo.parallel) { + // Only really care about this if it actually touches the point + if(intersectInfo.parallel.first.x <= point.x && intersectInfo.parallel.second.x >= point.x) return true; + continue; + } + + var intersectionX = intersectInfo.point.x; + if(intersectionX > point.x || intersectionX < closest) continue; + if(intersectionX == point.x) return true; + + // If closer than last time, reset cosine. + if(intersectionX != closest) cos = -2; + + // For getting cosine, need to possibly reverse the direction of polyLine. + if(intersectInfo.ties) { + // Tie must be on l2, if the ties is end, reverse so cosine indicates how close the angle is to that of 'point' from here. + if(intersectInfo.ties.l2 == 'end') polyLine = { p1: polyLine.p2, p2: polyLine.p1 }; + } else { + // It is on both side, so you can take the larger one + if(polyLine.p1.x > polyLine.p2.x) polyLine = { p1: polyLine.p2, p2: polyLine.p1 }; + } + var currCos = getCos(polyLine); + if(currCos > cos) { + cos = currCos; + closest = intersectionX; + entered = intersectInfo.entering; + } + } + return entered; + }; + _geometry.checkInside = _checkInside; +}); +//***** flyout.js *****// +// ******* Flyout MANAGER ******** // +$axure.internal(function($ax) { + var _flyoutManager = $ax.flyoutManager = {}; + + var getFlyoutLabel = function(panelId) { + return panelId + '_flyout'; + }; + + var _unregisterPanel = function(panelId, keepShown) { + $ax.geometry.unregister(getFlyoutLabel(panelId)); + if(panelToSrc[panelId]) { + $ax.style.RemoveRolloverOverride(panelToSrc[panelId]); + delete panelToSrc[panelId]; + } + if(!keepShown) { + $ax.action.addAnimation(panelId, $ax.action.queueTypes.fade, function() { + $ax('#' + panelId).hide(); + }); + } + }; + _flyoutManager.unregisterPanel = _unregisterPanel; + + var genPoint = $ax.geometry.genPoint; + + var _updateFlyout = function(panelId) { + var label = getFlyoutLabel(panelId); + if(!$ax.geometry.polygonRegistered(label)) return; + var info = $ax.geometry.getPolygonInfo(label); + var rects = info && info.rects; + + var targetWidget = $ax.getWidgetInfo(panelId); + rects.target = $ax.geometry.genRect(targetWidget); + + // Src will stay the same, just updating + $ax.flyoutManager.registerFlyout(rects, panelId, panelToSrc[panelId]); + + if(!$ax.geometry.checkInsideRegion(label)) _unregisterPanel(panelId); + }; + _flyoutManager.updateFlyout = _updateFlyout; + + var panelToSrc = {}; + var _registerFlyout = function(rects, panelId, srcId) { + var label = _getFlyoutLabel(panelId); + var callback = function(info) { + // If leaving object or already outside it, then unregister, otherwise just return + if(!info.exiting && !info.outside) return; + _unregisterPanel(panelId); + }; + var points = []; + + var lastSrcId = panelToSrc[panelId]; + if(lastSrcId != srcId) { + if(lastSrcId) $ax.style.RemoveRolloverOverride(lastSrcId); + if(srcId) { + $ax.style.AddRolloverOverride(srcId); + panelToSrc[panelId] = srcId; + } else delete panelToSrc[panelId]; + } + + // rects should be one or two rectangles + if(!rects.src) { + var rect = rects.target; + points.push(genPoint(rect.Left(), rect.Top())); + points.push(genPoint(rect.Right(), rect.Top())); + points.push(genPoint(rect.Right(), rect.Bottom())); + points.push(genPoint(rect.Left(), rect.Bottom())); + } else { + var r0 = rects.src; + var r1 = rects.target; + + // Right left of right, left right of left, top below top, bottom above bottom + var rlr = r0.Right() <= r1.Right(); + var lrl = r0.Left() >= r1.Left(); + var tbt = r0.Top() >= r1.Top(); + var bab = r0.Bottom() <= r1.Bottom(); + + var info = { rlr: rlr, lrl: lrl, tbt: tbt, bab: bab }; + + if((rlr && lrl) || (tbt && bab)) { + points = getSmallPolygon(r0, r1, info); + } else { + points = getLargePolygon(r0, r1, info); + } + } + + $ax.geometry.registerPolygon(label, points, callback, { rects: rects }); + }; + _flyoutManager.registerFlyout = _registerFlyout; + + var _getFlyoutLabel = function(panelId) { + return panelId + '_flyout'; + }; + + var _reregisterAllFlyouts = function() { + for(var panelId in panelToSrc) _reregisterFlyout(panelId); + }; + _flyoutManager.reregisterAllFlyouts = _reregisterAllFlyouts; + + var _reregisterFlyout = function(panelId) { + var rects = $ax.geometry.getPolygonInfo(getFlyoutLabel(panelId)).rects; + _registerFlyout(rects, panelId, panelToSrc[panelId]); + }; + + // This is the reduced size polygon connecting r0 to r1 by means of horizontal or vertical lines. + var getSmallPolygon = function(r0, r1, info) { + var points = []; + + // NOTE: currently I make the assumption that if horizontal/vertical connecting lines from the src hit the target + // Meaning if horizontal, rlr and lrl are true, and if vertical, tbt and bab are true. + + var r0Left = r0.Left(); + var r0Right = r0.Right(); + var r0Top = r0.Top(); + var r0Bottom = r0.Bottom(); + var r1Left = r1.Left(); + var r1Right = r1.Right(); + var r1Top = r1.Top(); + var r1Bottom = r1.Bottom(); + + points.push(genPoint(r1Left, r1Top)); + + if(!info.tbt) { + points.push(genPoint(r0Left, r1Top)); + points.push(genPoint(r0Left, r0Top)); + points.push(genPoint(r0Right, r0Top)); + points.push(genPoint(r0Right, r1Top)); + } + + points.push(genPoint(r1Right, r1Top)); + + if(!info.rlr) { + points.push(genPoint(r1Right, r0Top)); + points.push(genPoint(r0Right, r0Top)); + points.push(genPoint(r0Right, r0Bottom)); + points.push(genPoint(r1Right, r0Bottom)); + } + + points.push(genPoint(r1Right, r1Bottom)); + + if(!info.bab) { + points.push(genPoint(r0Right, r1Bottom)); + points.push(genPoint(r0Right, r0Bottom)); + points.push(genPoint(r0Left, r0Bottom)); + points.push(genPoint(r0Left, r1Bottom)); + } + + points.push(genPoint(r1Left, r1Bottom)); + + if(!info.lrl) { + points.push(genPoint(r1Left, r0Bottom)); + points.push(genPoint(r0Left, r0Bottom)); + points.push(genPoint(r0Left, r0Top)); + points.push(genPoint(r1Left, r0Top)); + } + + return points; + }; + + // This is the original algorithm that connects the most extream corners to make polygon + var getLargePolygon = function(r0, r1, info) { + var points = []; + + var r0Left = r0.Left(); + var r0Right = r0.Right(); + var r0Top = r0.Top(); + var r0Bottom = r0.Bottom(); + var r1Left = r1.Left(); + var r1Right = r1.Right(); + var r1Top = r1.Top(); + var r1Bottom = r1.Bottom(); + + // Top lefts + if(info.tbt) { + if(!info.lrl) points.push(genPoint(r0Left, r0Top)); + points.push(genPoint(r1Left, r1Top)); + } else { + if(info.lrl) points.push(genPoint(r1Left, r1Top)); + points.push(genPoint(r0Left, r0Top)); + } + + // Top rights + if(info.tbt) { + points.push(genPoint(r1Right, r1Top)); + if(!info.rlr) points.push(genPoint(r0Right, r0Top)); + } else { + points.push(genPoint(r0Right, r0Top)); + if(info.rlr) points.push(genPoint(r1Right, r1Top)); + } + + // Bottom rights + if(info.bab) { + if(!info.rlr) points.push(genPoint(r0Right, r0Bottom)); + points.push(genPoint(r1Right, r1Bottom)); + } else { + if(info.rlr) points.push(genPoint(r1Right, r1Bottom)); + points.push(genPoint(r0Right, r0Bottom)); + } + + // Bottom Lefts + if(info.bab) { + points.push(genPoint(r1Left, r1Bottom)); + if(!info.lrl) points.push(genPoint(r0Left, r0Bottom)); + } else { + points.push(genPoint(r0Left, r0Bottom)); + if(info.lrl) points.push(genPoint(r1Left, r1Bottom)); + } + return points; + }; +}); + +// ******* Placeholder Manager ********* // + +$axure.internal(function($ax) { + var _placeholderManager = $ax.placeholderManager = {}; + var idToPlaceholderInfo = {}; + + var _registerPlaceholder = function(elementId, text, password) { + idToPlaceholderInfo[elementId] = { text: text, password: password, active: false }; + }; + _placeholderManager.registerPlaceholder = _registerPlaceholder; + + _placeholderManager.refreshPlaceholder = function (elementId) { + var info = idToPlaceholderInfo[elementId]; + if (!info || !info.active) return; + $ax.style.SetWidgetPlaceholder(elementId, true, info.text, info.password); + } + + var _updatePlaceholder = function(elementId, active, clearText) { + var inputId = $ax.repeater.applySuffixToElementId(elementId, '_input'); + + var info = idToPlaceholderInfo[elementId]; + if(!info || info.active == active) return; + info.active = active; + + if(active) var value = info.text; + else if(!ANDROID) value = clearText ? '' : document.getElementById(inputId).value; + else { + var currentText = document.getElementById(inputId).value; + if(!clearText) value = currentText; + else if(currentText == info.text) value = ""; + else { + var lastIndex = currentText.lastIndexOf(info.text); + //here i am assuming the text is always inserted in front + value = currentText.substring(0, lastIndex); + } + } + + $ax.style.SetWidgetPlaceholder(elementId, active, value, info.password); + }; + _placeholderManager.updatePlaceholder = _updatePlaceholder; + + var _isActive = function(elementId) { + var info = idToPlaceholderInfo[elementId]; + return Boolean(info && info.active); + }; + _placeholderManager.isActive = _isActive; + + var _selectRange = function(elementId, start, end) { + $jobj(elementId).each(function() { + if(this.setSelectionRange) { + var validTypes = ["text", "search", "url", "tel", "password"]; + if(this.tagName.toLowerCase() != "input" || validTypes.indexOf(this.type) > -1) { + this.focus(); + this.setSelectionRange(start, end); + } + } else if(this.createTextRange) { + var range = this.createTextRange(); + range.collapse(true); + range.moveEnd('character', end); + range.moveStart('character', start); + range.select(); + } + }); + }; + _placeholderManager.selectRange = _selectRange; + + var _moveCaret = function(id, index) { + var inputIndex = id.indexOf('_input'); + if(inputIndex == -1) return; + var inputId = id.substring(0, inputIndex); + + if(!_isActive(inputId)) return; + _selectRange(id, index, index); + }; + _placeholderManager.moveCaret = _moveCaret; +}); +//***** ie.js *****// + +// ******* Internet Explorer MANAGER ******** // +//this is to handle all the stupid IE Stuff +$axure.internal(function($ax) { + if(!IE_10_AND_BELOW) return; + + var _ieColorManager = {}; + if(Number(BROWSER_VERSION) < 9) $ax.ieColorManager = _ieColorManager; + + var _applyIEFixedPosition = function() { + if(Number(BROWSER_VERSION) >= 7) return; + + $axure(function(diagramObject) { return diagramObject.fixedVertical; }).$() + .appendTo($('body')) + .css('position', 'absolute').css('margin-left', 0 + 'px').css('margin-top', 0 + 'px'); + + var handleScroll = function() { + $axure(function(diagramObject) { return diagramObject.fixedVertical; }) + .each(function(diagramObject, elementId) { + var win = $(window); + var windowWidth = win.width(); + var windowHeight = win.height(); + var windowScrollLeft = win.scrollLeft(); + var windowScrollTop = win.scrollTop(); + + var newLeft = 0; + var newTop = 0; + var elementQuery = $('#' + elementId); + var elementAxQuery = $ax('#' + elementId); + var width = elementAxQuery.width(); + var height = elementAxQuery.height(); + + var horz = diagramObject.fixedHorizontal; + if(horz == 'left') { + newLeft = windowScrollLeft + diagramObject.fixedMarginHorizontal; + } else if(horz == 'center') { + newLeft = windowScrollLeft + ((windowWidth - width) / 2) + diagramObject.fixedMarginHorizontal; + } else if(horz == 'right') { + newLeft = windowScrollLeft + windowWidth - width - diagramObject.fixedMarginHorizontal; + } + + var vert = diagramObject.fixedVertical; + if(vert == 'top') { + newTop = windowScrollTop + diagramObject.fixedMarginVertical; + } else if(vert == 'middle') { + newTop = windowScrollTop + ((windowHeight - height) / 2) + diagramObject.fixedMarginVertical; + } else if(vert == 'bottom') { + newTop = windowScrollTop + windowHeight - height - diagramObject.fixedMarginVertical; + } + elementQuery.css('top', newTop + 'px').css('left', newLeft + 'px'); + }); + }; + + $(window).scroll(handleScroll); + $axure.resize(handleScroll); + handleScroll(); + }; + + var _applyBackground = function() { + if(Number(BROWSER_VERSION) >= 9) return; + + var styleChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); + var argb = _getArgb($ax.pageData.page, styleChain); + var hexColor = _getHexColor(argb, false); + if(hexColor) $('body').css('background-color', hexColor); + + _applyBackgroundToQuery($ax('*')); + }; + + var _applyBackgroundToQuery = function(query) { + if(Number(BROWSER_VERSION) >= 9) return; + + var styleChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); + query.each(function(obj, elementId) { + if ($ax.public.fn.IsDynamicPanel(obj.type)) { + var stateCount = obj.diagrams.length; + for(var j = 0; j < stateCount; j++) { + var stateId = $ax.repeater.applySuffixToElementId(elementId, '_state' + j); + var argb = _getArgb(obj.diagrams[j], styleChain); + var hexColor = _getHexColor(argb, true); + if(hexColor) $jobj(stateId).css('background-color', hexColor); + } + } else if ($ax.public.fn.IsRepeater(obj.type)) { + + } + }); + }; + _ieColorManager.applyBackground = _applyBackgroundToQuery; + + var _getArgb = function(diagram, styleChain) { + var argb = undefined; + for(var i = 0; i < styleChain.length && !argb; i++) { + var style = diagram.adaptiveStyles[styleChain[i]]; + argb = style.fill && style.fill.color; + } + if(!argb) argb = diagram.style.fill.color; + return argb; + }; + + var gMult = 256; + var rMult = gMult * 256; + var aMult = rMult * 256; + + var _getHexColor = function(argb, allowWhite) { + var a = Math.floor(argb / aMult); + argb -= a * aMult; + + var r = Math.floor(argb / rMult); + argb -= r * rMult; + + var g = Math.floor(argb / gMult); + var b = argb - g * gMult; + + return _getColorFromArgb(a, r, g, b, allowWhite); + }; + + var _getColorFromArgb = function(a, r, g, b, allowWhite) { + if(Number(BROWSER_VERSION) >= 9) return undefined; + + //convert the color with alpha to a color with no alpha (assuming white background) + r = Math.min((r * a) / 255 + 255 - a, 255); + g = Math.min((g * a) / 255 + 255 - a, 255); + b = Math.min((b * a) / 255 + 255 - a, 255); + + if(a == 0) return undefined; + if(!allowWhite && (r == 255 && g == 255 && b == 255)) return undefined; + + var color = '#'; + color += Math.floor(r / 16).toString(16); + color += Math.floor(r % 16).toString(16); + color += Math.floor(g / 16).toString(16); + color += Math.floor(g % 16).toString(16); + color += Math.floor(b / 16).toString(16); + color += Math.floor(b % 16).toString(16); + return color; + }; + _ieColorManager.getColorFromArgb = _getColorFromArgb; + + var getIEOffset = function(transform, rect) { + var translatedVertexes = [ + $axure.utils.Vector2D(0, 0), //we dont translate, so the orgin is fixed + transform.mul($axure.utils.Vector2D(0, rect.height)), + transform.mul($axure.utils.Vector2D(rect.width, 0)), + transform.mul($axure.utils.Vector2D(rect.width, rect.height))]; + + var minX = 0, minY = 0, maxX = 0, maxY = 0; + $.each(translatedVertexes, function(index, p) { + minX = Math.min(minX, p.x); + minY = Math.min(minY, p.y); + maxX = Math.max(maxX, p.x); + maxY = Math.max(maxY, p.y); + }); + + return $axure.utils.Vector2D( + (maxX - minX - rect.width) / 2, + (maxY - minY - rect.height) / 2); + }; + + var _filterFromTransform = function(transform) { + return "progid:DXImageTransform.Microsoft.Matrix(M11=" + transform.m11 + + ", M12=" + transform.m12 + ", M21=" + transform.m21 + + ", M22=" + transform.m22 + ", SizingMethod='auto expand')"; + }; + + var _applyIERotation = function() { + if(Number(BROWSER_VERSION) >= 9) return; + + $axure(function(diagramObject) { + return ((diagramObject.style.rotation && Math.abs(diagramObject.style.rotation) > 0.1) + || (diagramObject.style.textRotation && Math.abs(diagramObject.style.textRotation) > 0.1)) + && !diagramObject.isContained; + }).each(function(diagramObject, elementId) { + var rotation = diagramObject.style.rotation || 0; + var $element = $('#' + elementId); + var axElement = $ax('#' + elementId); + var width = axElement.width(); + var height = axElement.height(); + var originX = width / 2; + var originY = height / 2; + + var shapeIeOffset; + $element.children().each(function() { + var $child = $(this); + var axChild = $ax('#' + $child.attr('id')); + var childWidth = axChild.width(); + var childHeight = axChild.height() + $child.position().top; + var centerX = $child.position().left + (childWidth / 2); + var centerY = $child.position().top + (childHeight / 2); + var deltaX = centerX - originX; + var deltaY = centerY - originY; + + var effectiveRotation = rotation; + var textObject = $ax.getObjectFromElementId($child.attr('id')); + if(textObject) { + if(textObject.style.textRotation) effectiveRotation = textObject.style.textRotation; + else return; + } + + var transform = $ax.utils.Matrix2D.identity().rotate(effectiveRotation); + var filter = _filterFromTransform(transform); + + $child.css('filter', filter) + .width(childWidth + 1) + .height(childHeight + 1); + + var p = transform.mul($ax.utils.Vector2D(deltaX, deltaY)); + var ieOffset = getIEOffset(transform, { width: childWidth, height: childHeight }); + if(!textObject) { + shapeIeOffset = ieOffset; + } else { + // This is a close approximation, but not exact + if(diagramObject.style.verticalAlignment != 'top') ieOffset.y -= shapeIeOffset.y + Math.abs(shapeIeOffset.x); + } + + $child.css("margin-left", -ieOffset.x - deltaX + p.x).css("margin-top", -ieOffset.y - deltaY + p.y); + }); + }); + }; + + var _fixIEStretchBackground = function() { + if(Number(BROWSER_VERSION) >= 9) return; + var pageStyle = $ax.adaptive.getPageStyle(); + if(!pageStyle.imageRepeat || pageStyle.imageRepeat == 'auto') return; + + $('body').css('background-image', 'none'); + var viewId = $ax.adaptive.currentViewId; + var imageInfo = viewId ? $ax.pageData.viewIdToBackgroundImageInfo && $ax.pageData.viewIdToBackgroundImageInfo[viewId] : $ax.pageData.defaultBackgroundImageInfo; + if(imageInfo && imageInfo.path) { + if($('#bg_img').length == 0) $('body').append(''); + $('#bg_img').attr('src', imageInfo.path).css('position', 'fixed').css('z-index', '-10000'); + _resizeIEBackground(); + } else $('#bg_img').remove(); + }; + + var _resizeIEBackground = function() { + if(Number(BROWSER_VERSION) >= 9) return; + //var page = $ax.pageData.page; + var viewId = $ax.adaptive.currentViewId; + var pageStyle = $ax.adaptive.getPageStyle(); + if(!$ax.pageData.defaultBackgroundImageInfo && !$ax.pageData.viewIdToBackgroundImageInfo) return; + var imageInfo = viewId ? $ax.pageData.viewIdToBackgroundImageInfo[viewId] : $ax.pageData.defaultBackgroundImageInfo; + if(!imageInfo) return; + var imageWidth = imageInfo.width; + var imageHeight = imageInfo.height; + var windowWidth = $(window).width(); + var windowHeight = $(window).height(); + var isCover = pageStyle.imageRepeat == 'cover'; + + var wRatio = windowWidth / imageWidth; + var hRatio = windowHeight / imageHeight; + var ratio = wRatio; + if(isCover) { + if(hRatio > wRatio) ratio = hRatio; + } else { + if(hRatio < wRatio) ratio = hRatio; + } + var width = imageWidth * ratio; + var height = imageHeight * ratio; + + var left = '0px'; + if((isCover && width > windowWidth) || (!isCover && width < windowWidth)) { + if(pageStyle.imageHorizontalAlignment == 'center') { + left = ((windowWidth - width) / 2) + 'px'; + } else if(pageStyle.imageHorizontalAlignment == 'far') { + left = (windowWidth - width) + 'px'; + } + } + + var top = '0px'; + if((isCover && height > windowHeight) || (!isCover && height < windowHeight)) { + if(pageStyle.imageVerticalAlignment == 'center') { + top = ((windowHeight - height) / 2) + 'px'; + } else if(pageStyle.imageVerticalAlignment == 'far') { + top = (windowHeight - height) + 'px'; + } + } + + $('#bg_img').css('top', top).css('left', left).css('width', width).css('height', height); + }; + + var _fixAllPngs = function() { + if(!(/MSIE ((5\.5)|6)/.test(window.navigator.userAgent) && window.navigator.platform == "Win32")) return; + + $('img[src$=".png"]').each(function() { + if(!this.complete) { + this.onload = function() { $axure.utils.fixPng(this); }; + } else { + $axure.utils.fixPng(this); + } + }); + }; + + var _fixInputSize = function() { + if(Number(BROWSER_VERSION) >= 8 || window.navigator.userAgent.indexOf("Trident/4.0") > -1) return; + var inputs = $('input').not(':input[type=button], :input[type=submit], :input[type=radio], :input[type=checkbox]'); + inputs.each(function() { + var $input = $(this); + var axInput = $ax('#' + $input.attr('id')); + $input.css('height', (axInput.height() - 4 + 'px')).css('width', (axInput.width() - 2 + 'px')); + }); + + var textAreas = $($ax.constants.TEXT_AREA_TYPE); + textAreas.each(function() { + var $textArea = $(this); + var axText = $ax('#' + $textArea.attr('id')); + $textArea.css('height', (axText.height() - 6 + 'px')).css('width', (axText.width() - 6 + 'px')); + }); + }; + + var _fixInputBackground = function() { + var inputs = $('input').not(':input[type=button], :input[type=submit], :input[type=radio], :input[type=checkbox]'); + inputs = inputs.add($($ax.constants.TEXT_AREA_TYPE)); + inputs.each(function() { + var $input = $(this); + if($input.css('background-color') == 'transparent') { + $input.css('background-image', 'url(../../transparent.gif)'); + } else { + $input.css('background-image', ''); + } + }); + }; + + $(document).ready(function() { + _fixIEStretchBackground(); + _applyIEFixedPosition(); + $axure.resize(function() { + _resizeIEBackground(); + }); + $ax.adaptive.bind('viewChanged', function() { + _fixIEStretchBackground(); + _applyBackground(); + _fixInputBackground(); + }); + + + _fixAllPngs(); + _applyIERotation(); + _applyBackground(); + _fixInputSize(); + _fixInputBackground(); + }); + + +}); + +//***** model.js *****// +// ******* Object Model ******** // +$axure.internal(function($ax) { + var _implementations = {}; + + var _initializeObject = function(type, obj) { + $.extend(obj, _implementations[type]); + }; + $ax.initializeObject = _initializeObject; + + var _model = $ax.model = {}; + + _model.idsInRdoToHideOrLimbo = function(rdoId, scriptIds) { + var rdoScriptId = $ax.repeater.getScriptIdFromElementId(rdoId); + var path = $ax.getPathFromScriptId(rdoScriptId); + + if(!scriptIds) scriptIds = []; + + var rdo = $ax.getObjectFromElementId(rdoId); + var master = $ax.pageData.masters[rdo.masterId]; + var masterChildren = master.diagram.objects; + for(var i = 0; i < masterChildren.length; i++) { + var obj = masterChildren[i]; + var objScriptIds = obj.scriptIds; + for(var j = 0; j < objScriptIds.length; j++) { + var scriptId = objScriptIds[j]; + // Anything in a layer is already handled by the layer + if($ax.getLayerParentFromElementId(scriptId)) continue; + + // Make sure in same rdo + var elementPath = $ax.getPathFromScriptId(scriptId); + + // This is because last part of path is for the obj itself. + elementPath.pop(); + if(elementPath.length != path.length) continue; + var samePath = true; + for(var k = 0; k < path.length; k++) { + if(elementPath[k] != path[k]) { + samePath = false; + break; + } + } + if(!samePath) continue; + + if($ax.public.fn.IsReferenceDiagramObject(obj.type)) _model.idsInRdoToHideOrLimbo(scriptId, scriptIds); + else if(scriptIds.indexOf(scriptId) == -1) scriptIds.push(scriptId); + + break; + } + } + return scriptIds; + }; + +}); +//***** repeater.js *****// + +// ******* Repeater MANAGER ******** // +$axure.internal(function($ax) { + var _repeaterManager = {}; + $ax.repeater = _repeaterManager; + + //This is a mapping of current editItems + var repeaterToEditItems = {}; + //This is a mapping of current filters + var repeaterToFilters = {}; + // This is a mapping of current sorts + var repeaterToSorts = {}; + // This is a mapping of repeater page info + var repeaterToPageInfo = {}; + + //Hopefully this can be simplified, but for now I think 3 are needed. + //This is the data set that is owned by this repeater. The repeater may or may not reference this data set, and others can reference it. + var repeaterToLocalDataSet = {}; + //This is the data set referenced by the repeater. It is not a copy of the local data set, but a reference to a local data set (or eventually a global data set could be referenced). + var repeaterToCurrentDataSet = {}; + //This is a copy of the current data set, that is replaced whenever a set or refresh is done. + var repeaterToActiveDataSet = {}; + var _loadRepeaters = function() { + $ax(function(obj) { + return $ax.public.fn.IsRepeater(obj.type); + }).each(function(obj, repeaterId) { + repeaterToLocalDataSet[repeaterId] = $ax.deepCopy(obj.data); + repeaterToLocalDataSet[repeaterId].props = obj.dataProps; + repeaterToEditItems[repeaterId] = []; + + _initPageInfo(obj, repeaterId); + + _setRepeaterDataSet(repeaterId, repeaterId); + var initialItemIds = obj.repeaterPropMap.itemIds; + for (var i = 0; i < initialItemIds.length; i++) $ax.addItemIdToRepeater(initialItemIds[i], repeaterId); + $ax.visibility.initRepeater(repeaterId); + }); + }; + _repeaterManager.load = _loadRepeaters; + + var fullRefresh = {}; + var repeatersReady = false; + var _initRepeaters = function () { + repeatersReady = true; + $ax(function(obj, repeaterId) { + return $ax.public.fn.IsRepeater(obj.type); + }).each(function(obj, repeaterId) { + _refreshRepeater(repeaterId, undefined, !fullRefresh[repeaterId]); + //// Fix selected and default if necessary + //var states = obj.evaluatedStates[repeaterId]; + //if(!states) return; // If there are no evaluated states the repeater id key could not be mapped to an array of states. + + //for(var i = 0; i < states.length; i++) { + // var state = states[i]; + + // $ax.style.SetWidgetEnabled(state.id, true); // So selected will take place. If disabled, selected wouldn't happen. + // $ax.style.SetWidgetSelected(state.id, state.selected); + // $ax.style.SetWidgetEnabled(state.id, !state.disabled); + //} + }); + }; + _repeaterManager.initRefresh = _initRepeaters; + + var repeatersHaveNewDataSet = []; + var _setRepeaterDataSet = function(repeaterId, dataSetId) { + //TODO: No idea about how global data sets will be handled... + repeaterToCurrentDataSet[repeaterId] = repeaterToLocalDataSet[dataSetId]; + repeaterToActiveDataSet[repeaterId] = getActiveDataSet(repeaterId); + repeaterToFilters[repeaterId] = []; + repeaterToSorts[repeaterId] = []; + + + // Not using this currently + // if(repeatersHaveNewDataSet.indexOf(repeaterId) == -1) repeatersHaveNewDataSet[repeatersHaveNewDataSet.length] = repeaterId; + }; + _repeaterManager.setDataSet = _setRepeaterDataSet; + + var _refreshRepeater = function (repeaterId, eventInfo, itemsPregen) { + if(!repeatersReady) { + fullRefresh[repeaterId] = true; + return; + } + // Don't show if you have a parent rdos thats limboed. + var rdoPath = $ax.getPathFromScriptId(repeaterId); + // Check each parent rdo through appropriate views to see if you are limboed + while (rdoPath.length > 0) { + if(!$ax.getScriptIdFromPath(rdoPath)) { + removeItems(repeaterId); + return; + } + + $ax.splice(rdoPath, rdoPath.length - 1, 1); + } + + $ax.action.refreshStart(repeaterId); + $ax.style.ClearCacheForRepeater(repeaterId); + + if($ax.visibility.limboIds[repeaterId]) { + removeItems(repeaterId); + $ax.dynamicPanelManager.fitParentPanel(repeaterId); + return; + } + + // Remove delete map if there is one at this point + if(eventInfo && eventInfo.repeaterDeleteMap) delete eventInfo.repeaterDeleteMap[repeaterId]; + var path = $ax.getPathFromScriptId(repeaterId); + path.pop(); + + if(eventInfo) { + eventInfo = $ax.eventCopy(eventInfo); + } + + var obj = $ax.getObjectFromScriptId(repeaterId); + var propMap = obj.repeaterPropMap; + + //If there is no wrap, then set it to be above the number of rows + var viewId = $ax.adaptive.currentViewId || ''; + var wrap = _getAdaptiveProp(propMap, 'wrap', viewId); + var vertical = _getAdaptiveProp(propMap, 'vertical', viewId); + var offset = propMap[viewId]; + + // Right now pregen only works for default adaptive view + if(viewId) itemsPregen = false; + var orderedIds = []; + if(itemsPregen) { + var repeaterChildren = $jobj(repeaterId).children(); + // Start at 1 to skip script div child + for(var i = 1; i < repeaterChildren.length; i++) { + orderedIds.push(_getItemIdFromElementId($(repeaterChildren[i]).attr('id'))); + } + } else orderedIds = getOrderedIds(repeaterId, eventInfo); + var ids = []; + var background = _getAdaptiveProp(propMap, 'backColor', viewId); + var hasAltColor = _getAdaptiveProp(propMap, 'hasAltColor', viewId); + var altColor = hasAltColor ? _getAdaptiveProp(propMap, 'altColor', viewId) : undefined; + var useAlt = false; + + if(itemsPregen) { + var start = 0; + var end = orderedIds.length; + } else { + var bounds = _getVisibleDataBounds(repeaterToPageInfo[repeaterId], itemsPregen ? obj.data.length : orderedIds.length); + start = bounds[0]; + end = bounds[1]; + } + + var repeaterObj = $jobj(repeaterId); + var preevalMap = {}; + if(itemsPregen) { + var templateIds = [repeaterId]; + var processScriptIds = function (full, prop, id) { + if(id.indexOf('_') <= 0 && id.indexOf('p') == -1) templateIds.push('u' + id); + }; + $('#' + repeaterId + '_script').html().replace(/(id|for)="?u([0-9]+(p([0-9]){3})?(_[_a-z0-9]*)?)"?/g, processScriptIds); + for(var i = 0; i < templateIds.length; i++) { + for(var j = 0; j < orderedIds.length; j++) { + ids.push(_createElementId(templateIds[i], orderedIds[j])); + } + } + + for(var pos = start; pos < end; pos++) { + var itemId = orderedIds[pos]; + itemElementId = _createElementId(repeaterId, itemId); + var jobj = $jobj(itemElementId); + var preeval = jobj.hasClass('preeval'); + for(var i = 0; i < templateIds.length; i++) $ax.initializeObjectEvents($ax('#' + _createElementId(templateIds[i], itemId)), !preeval); + if(preeval) { + preevalMap[itemId] = true; + jobj.removeClass('preeval'); + } + } + } else { + var html = $('#' + repeaterId + '_script').html(); + // var container = $('
    '); + // container.html(html); + // container.attr('id', '' + repeaterId + '_container'); + // container.css({ position: 'absolute' }); + // container.offset({ left: -obj.x, top: -obj.y }); + + var div = $('
    '); + div.html(html); + div.find('.' + $ax.visibility.HIDDEN_CLASS).removeClass($ax.visibility.HIDDEN_CLASS); + div.find('.' + $ax.visibility.UNPLACED_CLASS).removeClass($ax.visibility.UNPLACED_CLASS); + + var paddingTop = _getAdaptiveProp(propMap, 'paddingTop', viewId); + var paddingLeft = _getAdaptiveProp(propMap, 'paddingLeft', viewId); + var paddingY = paddingTop + _getAdaptiveProp(propMap, 'paddingBottom', viewId); + var paddingX = paddingLeft + _getAdaptiveProp(propMap, 'paddingRight', viewId); + + var spacingX = _getAdaptiveProp(propMap, 'horizontalSpacing', viewId); + var xOffset = offset.width + spacingX; + var spacingY = _getAdaptiveProp(propMap, 'verticalSpacing', viewId); + var yOffset = offset.height + spacingY; + div.css({ + width: offset.width, + height: offset.height + }); + + _applyColorCss(background, div); + var altDiv = div; + if(hasAltColor) altDiv = _applyColorCss(altColor, div.clone()); + + // Hide repeater, if shown, while updating. + var shown = $ax.visibility.IsIdVisible(repeaterId); + if(shown) document.getElementById(repeaterId).style.visibility = 'hidden'; + + //clean up old items as late as possible + removeItems(repeaterId); + resetItemSizes(repeaterId, offset, bounds, orderedIds, vertical, wrap); + + var i = 0; + var startTop = paddingTop; + var startLeft = paddingLeft; + if(repeaterObj.css('box-sizing') == 'border-box') { + startTop -= $ax.getNumFromPx(repeaterObj.css('border-top-width')) || 0; + startLeft -= $ax.getNumFromPx(repeaterObj.css('border-left-width')) || 0; + } + var top = startTop; + var left = startLeft; + for(pos = start; pos < end; pos++) { + itemId = orderedIds[pos]; + + var itemElementId = _createElementId(repeaterId, itemId); + $ax.addItemIdToRepeater(itemId, repeaterId); + + ids.push(itemElementId); + var processId = function(full, prop, id) { + var elementId = _createElementId('u' + id, itemId); + //If there is a suffix (ex. _img), then don't push the id. + if (id.indexOf('_') <= 0 && id.indexOf('p') == -1) ids.push(elementId); + return prop + '="' + elementId + '"'; + }; + + var copy = (useAlt ? altDiv : div).clone(); + useAlt = !useAlt; + copy.attr('id', itemElementId); + copy.html(div.html().replace(/(id|for)="?u([0-9]+(p([0-9]){3})?(_[_a-z0-9]*)?)"?/g, processId)); + if(obj.repeaterPropMap.isolateRadio) { + var radioButtons = copy.find(':radio'); + for(var radioIndex = 0; radioIndex < radioButtons.length; radioIndex++) { + var radio = $(radioButtons[radioIndex]); + var oldName = radio.attr('name') || ''; + // Can't use create element id because there could be an underscore in name + if(oldName) radio.attr('name', oldName + '-' + itemId); + } + } + + + copy.css({ + 'position': 'absolute', + 'top': top + 'px', + 'left': left + 'px', + 'width': obj.width + 'px', + 'height': obj.height + 'px' + }); + $('#' + repeaterId).append(copy); + + i++; + if(wrap != -1 && i % wrap == 0) { + if(vertical) { + top = startTop; + left += xOffset; + } else { + left = startLeft; + top += yOffset; + } + } else if (vertical) top += yOffset; + else left += xOffset; + } + + var shownCount = end - start; + var repeaterSize = { width: paddingX, height: paddingY}; + if(shownCount > 0) { + var primaryCount = wrap == -1 ? shownCount : Math.min(shownCount, wrap); + var secondaryCount = wrap == -1 ? 1 : Math.ceil(shownCount / wrap); + + var widthCount = vertical ? secondaryCount : primaryCount; + var heightCount = vertical ? primaryCount : secondaryCount; + repeaterSize.width += offset.width + (widthCount - 1) * xOffset; + repeaterSize.height += offset.height + (heightCount - 1) * yOffset; + } + repeaterObj.css(repeaterSize); + + // Had to move this here because it sets up cursor: pointer on inline links, + // but must be done before style cached when adaptive view is set. + // TODO: Should be able to combine this with initialization done in pregen items. Just need to have ids and template ids be the same. + for(var i = 0; i < ids.length; i++) $ax.initializeObjectEvents($ax('#' + ids[i]), true); + } + + var query = _getItemQuery(repeaterId); + if(viewId) $ax.adaptive.applyView(viewId, query); + else $ax.visibility.resetLimboAndHiddenToDefaults(_getItemQuery(repeaterId, preevalMap)); + + $ax.annotation.InitializeAnnotations(query); + + for(var index = 0; index < ids.length; index++) { + var id = ids[index]; + var childObj = $obj(id); + var childJobj = $jobj(id); + var childItemId = _getItemIdFromElementId(id); + + if(obj.repeaterPropMap.isolateSelection && childJobj.attr('selectiongroup')) { + childJobj.attr('selectiongroup', _createElementId(childJobj.attr('selectiongroup'), childItemId)); + } + if ($ax.ieColorManager) $ax.ieColorManager.applyBackground($ax('#' + id)); + $ax.style.initializeObjectTextAlignment($ax('#' + id)); + $ax.applyHighlight($ax('#' + id), true); + } + + $ax.messageCenter.startCombineEventMessages(); + $ax.cacheRepeaterInfo(repeaterId, $ax.getWidgetInfo(repeaterId)); + + // Now load + for(pos = start; pos < end; pos++) { + itemId = orderedIds[pos]; + itemElementId = _createElementId(repeaterId, itemId); + if(!preevalMap[orderedIds[pos]]) $ax.event.raiseSyntheticEvent(itemElementId, 'onItemLoad', true); + $ax.loadDynamicPanelsAndMasters(obj.objects, path, itemId); + } + + $ax.removeCachedRepeaterInfo(repeaterId); + $ax.messageCenter.endCombineEventMessages(); + + // Reshow repeater if it was originally shown (load is complete by now) + if(shown && !itemsPregen) document.getElementById(repeaterId).style.visibility = 'inherit'; + + $ax.dynamicPanelManager.fitParentPanel(repeaterId); + + // Right now we assume only one refresh at a time. If we can manually trigger refreshes, that may possibly change. + $ax.action.refreshEnd(); + }; + _repeaterManager.refreshRepeater = _refreshRepeater; + + var _getItemQuery = function(repeaterId, preevalMap) { + var query = $ax(function (diagramObject, elementId) { + // Also need to check that this in not preeval + if(preevalMap) { + var itemId = _getItemIdFromElementId(elementId); + if(preevalMap[itemId]) return false; + } + + // All objects with the repeater as their parent, except the repeater itself. + var scriptId = _getScriptIdFromElementId(elementId); + return $ax.getParentRepeaterFromScriptId(scriptId) == repeaterId && scriptId != repeaterId; + }); + + return query; + } + + _repeaterManager.refreshAllRepeaters = function() { + $ax('*').each(function(diagramObject, elementId) { + if(!$ax.public.fn.IsRepeater(diagramObject.type)) return; + if($ax.visibility.isElementIdLimboOrInLimboContainer(elementId)) return; + _initPageInfo(diagramObject, elementId); + _refreshRepeater(elementId, $ax.getEventInfoFromEvent($ax.getjBrowserEvent())); + }); + }; + + _repeaterManager.refreshRepeaters = function(ids, eventInfo) { + for(var i = 0; i < ids.length; i++) _refreshRepeater(ids[i], eventInfo); + }; + + var _initPageInfo = function(obj, elementId) { + var pageInfo = {}; + var map = obj.repeaterPropMap; + + var currentViewId = $ax.adaptive.currentViewId || ''; + var itemsPerPage = _getAdaptiveProp(map, 'itemsPerPage', currentViewId); + if(itemsPerPage == -1) pageInfo.noLimit = true; + else { + pageInfo.itemsPerPage = itemsPerPage; + pageInfo.currPage = _getAdaptiveProp(map, 'currPage', currentViewId); + } + repeaterToPageInfo[elementId] = pageInfo; + }; + + _repeaterManager.initialize = function() { + $ax(function (obj) { + return $ax.public.fn.IsRepeater(obj.type); + }).each(function (obj, repeaterId) { + _initPregen(repeaterId); + }); + } + + var _initPregen = function(repeaterId) { + var obj = $ax.getObjectFromScriptId(repeaterId); + var propMap = obj.repeaterPropMap; + + //If there is no wrap, then set it to be above the number of rows + var viewId = $ax.adaptive.currentViewId || ''; + var wrap = _getAdaptiveProp(propMap, 'wrap', viewId); + var vertical = _getAdaptiveProp(propMap, 'vertical', viewId); + + var orderedIds = []; + var ids = []; + var background = _getAdaptiveProp(propMap, 'backColor', viewId); + var hasAltColor = _getAdaptiveProp(propMap, 'hasAltColor', viewId); + var altColor = hasAltColor ? _getAdaptiveProp(propMap, 'altColor', viewId) : undefined; + var useAlt = false; + + var bounds = _getVisibleDataBounds(repeaterToPageInfo[repeaterId], obj.data.length); + var start = bounds[0]; + var end = bounds[1]; + + // Starts empty + if(start == end) { + $ax.action.refreshEnd(repeaterId); + return; + } + var unprocessedBaseIds = $jobj($ax.repeater.createElementId(repeaterId, start + 1)).html().match(/(id|for)="?u([0-9]+)/g); + var baseIds = []; + if(unprocessedBaseIds) { + for(var i = 0; i < unprocessedBaseIds.length; i++) { + var val = unprocessedBaseIds[i].split('=')[1].substr(1); + if(baseIds.indexOf(val) == -1) baseIds.push(val); + } + } + + for(var itemNum = start; itemNum < end; itemNum++) { + ids.push($ax.repeater.createElementId(repeaterId, itemNum + 1)); + for(i = 0; i < baseIds.length; i++) ids.push($ax.repeater.createElementId(baseIds[i], itemNum + 1)); + var itemId = itemNum + 1; + orderedIds[itemNum] = itemId; + + var itemDiv = $jobj($ax.repeater.createElementId(repeaterId, itemNum + 1)); + _applyColorCss(useAlt ? altColor : background, itemDiv); + if(hasAltColor) useAlt = !useAlt; + } + + resetItemSizes(repeaterId, undefined, bounds, orderedIds, vertical, wrap); + }; + + var _applyColorCss = function(json, div) { + var args = json.r + ', ' + json.g + ', ' + json.b; + var background = json.a == 0 ? '' : json.a == 1 ? 'rgb(' + args + ')' : 'rgba(' + args + ', ' + json.a + ')'; + if($ax.ieColorManager && json.a != 0 && json.a != 1) { + var ieColor = $ax.ieColorManager.getColorFromArgb(json.a * 255, json.r, json.g, json.b, true); + if(ieColor) background = ieColor; + } + div.css('background-color', background); + return div; + }; + + var _getAdaptiveProp = _repeaterManager.getAdaptiveProp = function(map, prop, viewId) { + var viewChain = $ax.adaptive.getAdaptiveIdChain(viewId); + for(var i = viewChain.length - 1; i >= 0; i--) { + viewId = viewChain[i]; + var viewProps = map[viewId]; + if(viewProps.hasOwnProperty(prop)) return viewProps[prop]; + } + + var base = map['']; + if(base.hasOwnProperty(prop)) return base[prop]; + return map['default'][prop]; + }; + + _repeaterManager.getItemCount = function(repeaterId) { + var data = repeaterToActiveDataSet[repeaterId].length; + var info = repeaterToPageInfo[repeaterId]; + if(!info.noLimit) { + var start = Math.min(data, info.itemsPerPage * info.currPage); + var end = Math.min(data, start + info.itemsPerPage); + data = end - start; + } + return data; + }; + + _repeaterManager.setDisplayProps = function(obj, repeaterId, itemIndex) { + var data = repeaterToActiveDataSet[repeaterId]; + var info = repeaterToPageInfo[repeaterId]; + var start = 0; + var end = data.length; + if(!info.noLimit) { + start = Math.min(end, info.itemsPerPage * (info.currPage - 1)); + end = Math.min(end, start + info.itemsPerPage); + } + var count = end - start; + var index = -1; + for(var i = 0; i < count; i++) { + if(data[start + i].index == itemIndex) index = i + 1; + } + if(index == -1) return; + obj.index = index; + obj.isfirst = index == 1; + obj.islast = index == end - start; + obj.iseven = index % 2 == 0; + obj.isodd = index % 2 == 1; + }; + + var _getVisibleDataBounds = function(pageInfo, count) { + var retval = [0, count]; + if(!pageInfo.noLimit) { + var end = pageInfo.itemsPerPage * pageInfo.currPage; + var start = end - pageInfo.itemsPerPage; + + // If past the end, move to last page + if(start >= count) { + pageInfo.currPage = Math.floor((count - 1) / pageInfo.itemsPerPage) + 1; + if(pageInfo.currPage <= 0) pageInfo.currPage = 1; + + end = pageInfo.itemsPerPage * pageInfo.currPage; + start = end - pageInfo.itemsPerPage; + } + end = Math.min(end, count); + retval[0] = start; + retval[1] = end; + } + return retval; + }; + + _repeaterManager.getVisibleDataCount = function(repeaterId) { + var bounds = _getVisibleDataBounds(repeaterToPageInfo[repeaterId], repeaterToActiveDataSet[repeaterId].length); + return bounds[1] - bounds[0]; + }; + + _repeaterManager.getDataCount = function(repeaterId) { + return repeaterToCurrentDataSet[repeaterId].length; + }; + + var _getFilteredDataCount = _repeaterManager.getFilteredDataCount = function(repeaterId) { + return repeaterToActiveDataSet[repeaterId].length; + }; + + _repeaterManager.getPageCount = function(repeaterId) { + var info = repeaterToPageInfo[repeaterId]; + return info.noLimit ? 1 : Math.ceil(_getFilteredDataCount(repeaterId) / info.itemsPerPage); + }; + + _repeaterManager.getPageIndex = function(repeaterId) { + var info = repeaterToPageInfo[repeaterId]; + return info.noLimit ? 1 : info.currPage; + }; + + var getActiveDataSet = function(repeaterId) { + var active = $ax.deepCopy(repeaterToCurrentDataSet[repeaterId]); + // Set up 1 indexing each item. + for(var i = 0; i < active.length; i++) active[i].index = i + 1; + return active; + }; + + var getOrderedIds = function(repeaterId, eventInfo) { + var data = repeaterToActiveDataSet[repeaterId] = getActiveDataSet(repeaterId); + + // Filter first so less to sort + applyFilter(repeaterId, data, eventInfo); + + // Sort next + var sorts = repeaterToSorts[repeaterId] || []; + if(sorts.length != 0 && data.length > 1) { + // TODO: Make this generic and factor out if we want to use it elsewhere... + // Compare is a function that takes 2 arguments, and returns a number. A high number means the second should go first + // Otherwise the first stays first. + var mergesort = function(list, start, end, compare) { + var middle = Math.floor((start + end) / 2); + if(middle - start > 1) mergesort(list, start, middle, compare); + if(end - middle > 1) mergesort(list, middle, end, compare); + var index1 = start; + var index2 = middle; + var tempList = []; + while(index1 < middle && index2 < end) { + tempList[tempList.length] = list[compare(list[index1], list[index2]) > 0 ? index2++ : index1++]; + } + while(index1 < middle) tempList[tempList.length] = list[index1++]; + while(index2 < end) tempList[tempList.length] = list[index2++]; + + // transfer from temp list to the real list. + for(var i = 0; i < tempList.length; i++) list[start + i] = tempList[i]; + }; + // Compare is the tie breaking function to us if necessary. + var getComparator = function(columnName, ascending, type, compare) { + // If this needs to be sped up, break up into several smaller functions conditioned off of type + return function(row1, row2) { + // If column undefined have it be empty string, NaN, or invalid date + //// If column undefined, no way to measure this, so call it a tie. + //if(row1[columnName] === undefined || row2[columnName] === undefined) return 0; + + var text1 = (row1[columnName] && row1[columnName].text) || ''; + var text2 = (row2[columnName] && row2[columnName].text) || ''; + + // This means we are case insensitive, so lowercase everything to kill casing + if(type == 'Text') { + text1 = text1.toLowerCase(); + text2 = text2.toLowerCase(); + } + + //If tied, go to tie breaker + if(text1 == text2) { + if(compare) return compare(row1, row2); + // Actually a tie. + return 0; + } + if(type == 'Text' || type == 'Text (Case Sensitive)') { + if(text1 < text2 ^ ascending) return 1; + else return -1; + } else if(type == 'Number') { + var num1 = text1 == '' ? NaN : Number(text1); + var num2 = text2 == '' ? NaN : Number(text2); + + if(isNaN(num1) && isNaN(num2)) return 0; + if(isNaN(num1) || isNaN(num2)) return isNaN(num1) ? 1 : -1; + if(num1 < num2 ^ ascending) return 1; + else return -1; + } else if(type == 'Date - YYYY-MM-DD' || type == 'Date - MM/DD/YYYY') { + var func = type == 'Date - YYYY-MM-DD' ? getDate1 : getDate2; + var date1 = func(text1); + var date2 = func(text2); + if(!date1.valid && !date2.valid) return 0; + if(!date1.valid || !date2.valid) return date1.valid ? -1 : 1; + var diff = date2.year - date1.year; + if(diff == 0) diff = date2.month - date1.month; + if(diff == 0) diff = date2.day - date1.day; + if(diff == 0) return 0; + return diff > 0 ^ ascending ? 1 : -1; + } + console.log('unhandled sort type'); + return 0; + }; + }; + var compareFunc = null; + for(var i = 0; i < sorts.length; i++) compareFunc = getComparator(sorts[i].columnName, sorts[i].ascending, sorts[i].sortType, compareFunc); + + mergesort(data, 0, data.length, compareFunc); + } + + var ids = []; + for(i = 0; i < data.length; i++) ids[i] = data[i].index; + + return ids; + }; + + var getDate1 = function(text) { + var date = { valid: false }; + var sections = text.split('-'); + if(sections.length == 1) sections = text.split('/'); + if(sections.length != 3) return date; + date.year = Number(sections[0]); + date.month = Number(sections[1]); + date.day = Number(sections[2]); + date.valid = !isNaN(date.year); + date.valid &= !isNaN(date.month) && date.month > 0 && date.month <= 12; + date.valid &= !isNaN(date.day) && date.day > 0 && date.day <= daysPerMonth(date.month, date.year); + return date; + }; + + var getDate2 = function(text) { + var date = { valid: false }; + var sections = text.split('-'); + if(sections.length == 1) sections = text.split('/'); + if(sections.length != 3) return date; + date.month = Number(sections[0]); + date.day = Number(sections[1]); + date.year = Number(sections[2]); + date.valid = !isNaN(date.year); + date.valid &= !isNaN(date.month) && date.month > 0 && date.month <= 12; + date.valid &= !isNaN(date.day) && date.day > 0 && date.day <= daysPerMonth(date.month, date.year); + return date; + }; + + var daysPerMonth = function(month, year) { + if(month == 9 || month == 4 || month == 6 || month == 11) return 30; + if(month != 2) return 31; + + if(year % 4 != 0) return 28; + if(year % 100 != 0) return 29; + return year % 400 == 0 ? 29 : 28; + }; + + var applyFilter = function(repeaterId, data, eventInfo) { + var dataFiltered = []; + var filters = repeaterToFilters[repeaterId] || []; + if (filters.length != 0) { + if(!eventInfo) eventInfo = $ax.getBasicEventInfo(); + var oldTarget = eventInfo.targetElement; + var oldSrc = eventInfo.srcElement; + var oldThis = eventInfo.thiswidget; + var oldItem = eventInfo.item; + + var idToWidgetInfo = {}; + + outer: + for(var i = 1; i <= data.length; i++) { + for(var j = 0; j < filters.length; j++) { + eventInfo.targetElement = _createElementId(repeaterId, i); + eventInfo.srcElement = filters[j].thisId; + if(!idToWidgetInfo[eventInfo.srcElement]) idToWidgetInfo[eventInfo.srcElement] = $ax.getWidgetInfo(eventInfo.srcElement); + eventInfo.thiswidget = idToWidgetInfo[eventInfo.srcElement]; + eventInfo.item = $ax.getItemInfo(eventInfo.srcElement); + + if($ax.expr.evaluateExpr(filters[j].filter, eventInfo) != 'true') continue outer; + } + dataFiltered[dataFiltered.length] = data[i - 1]; + } + + for(i = 0; i < dataFiltered.length; i++) data[i] = dataFiltered[i]; + while(data.length > dataFiltered.length) data.pop(); + + eventInfo.targetElement = oldTarget; + eventInfo.srcElement = oldSrc; + eventInfo.thiswidget = oldThis; + eventInfo.item = oldItem; + } + }; + + var _addFilter = function(repeaterId, removeOtherFilters, label, filter, thisId) { + if(removeOtherFilters) _removeFilter(repeaterId); + + var filterList = repeaterToFilters[repeaterId]; + if(!filterList) repeaterToFilters[repeaterId] = filterList = []; + + var filterObj = { filter: filter, thisId: thisId }; + if(label) filterObj.label = label; + filterList[filterList.length] = filterObj; + }; + _repeaterManager.addFilter = _addFilter; + + var _removeFilter = function(repeaterId, label) { + var filterList = repeaterToFilters[repeaterId]; + // If no list, nothing to remove + if(!filterList) return; + + // If no label, remove everything + if(!label) { + repeaterToFilters[repeaterId] = []; + return; + } + + for(var i = filterList.length - 1; i >= 0; i--) { + var filterObj = filterList[i]; + if(filterObj.label && filterObj.label == label) $ax.splice(filterList, i, 1); + } + }; + _repeaterManager.removeFilter = _removeFilter; + + var _addSort = function(repeaterId, label, columnName, ascending, toggle, sortType) { + var sortList = repeaterToSorts[repeaterId]; + if(!sortList) repeaterToSorts[repeaterId] = sortList = []; + + for(var i = 0; i < sortList.length; i++) { + if(columnName == sortList[i].columnName) { + var lastSortObj = $ax.splice(sortList, i, 1)[0]; + if(toggle) ascending = !lastSortObj.ascending; + break; + } + } + + var sortObj = { columnName: columnName, ascending: ascending, sortType: sortType }; + + if(label) sortObj.label = label; + sortList[sortList.length] = sortObj; + }; + _repeaterManager.addSort = _addSort; + + var _removeSort = function(repeaterId, label) { + var sortList = repeaterToSorts[repeaterId]; + // If no list, nothing to remove + if(!sortList) return; + + // If no label, remove everything + if(!label) { + repeaterToSorts[repeaterId] = []; + return; + } + + for(var i = sortList.length - 1; i >= 0; i--) { + var sortObj = sortList[i]; + if(sortObj.label && sortObj.label == label) $ax.splice(sortList, i, 1); + } + }; + _repeaterManager.removeSort = _removeSort; + + var _setRepeaterToPage = function(repeaterId, type, value, eventInfo) { + var pageInfo = repeaterToPageInfo[repeaterId]; + // page doesn't matter if there is no limit. + if(pageInfo.noLimit) return; + + var dataSet = repeaterToActiveDataSet[repeaterId]; + if(!dataSet) dataSet = repeaterToCurrentDataSet[repeaterId]; + var lastPage = Math.max(1, Math.ceil(dataSet.length / pageInfo.itemsPerPage)); + + if(type == 'Value') { + var val = Number($ax.expr.evaluateExpr(value, eventInfo)); + // if invalid, default to 1, otherwise, clamp the value + if(isNaN(val)) val = 1; + else if(val < 1) val = 1; + else if(val > lastPage) val = lastPage; + + pageInfo.currPage = val; + } else if(type == 'Previous') { + if(pageInfo.currPage > 1) pageInfo.currPage--; + } else if(type == 'Next') { + if(pageInfo.currPage < lastPage) pageInfo.currPage++; + } else if(type == 'Last') { + pageInfo.currPage = lastPage; + } else { + console.log('Unknown type'); + } + }; + _repeaterManager.setRepeaterToPage = _setRepeaterToPage; + + var _setNoItemLimit = function(repeaterId) { + var pageInfo = repeaterToPageInfo[repeaterId]; + delete pageInfo.currPage; + delete pageInfo.itemsPerPage; + pageInfo.noLimit = true; + }; + _repeaterManager.setNoItemLimit = _setNoItemLimit; + + var _setItemLimit = function(repeaterId, value, eventInfo) { + var pageInfo = repeaterToPageInfo[repeaterId]; + + if(pageInfo.noLimit) { + pageInfo.noLimit = false; + pageInfo.currPage = 1; + } + + var oldTarget = eventInfo.targetElement; + eventInfo.targetElement = repeaterId; + var itemLimit = Number($ax.expr.evaluateExpr(value, eventInfo)); + eventInfo.targetElement = oldTarget; + if(isNaN(itemLimit)) itemLimit = 20; + else if(itemLimit < 1) itemLimit = 1; + pageInfo.itemsPerPage = itemLimit; + }; + _repeaterManager.setItemLimit = _setItemLimit; + + var removeItems = function(repeaterId) { + var elementIds = $ax.getChildElementIdsForRepeater(repeaterId); + var itemId = $ax.getItemIdsForRepeater(repeaterId); + for(var i = 0; i < itemId.length; i++) $jobj(_createElementId(repeaterId, itemId[i])).remove(); + $ax.visibility.clearLimboAndHiddenIds(elementIds); + $ax.clearItemsForRepeater(repeaterId); + }; + + var repeaterSizes = {}; + var resetItemSizes = function (repeaterId, itemSize, bounds, ids, vertical, wrap) { + var calcItem = !itemSize; + if(calcItem) itemSize = {}; + + var repeaterMap = {}; + repeaterMap.vert = vertical; + var sizesMap = {}; + var sizes = []; + var currSizes = wrap == -1 ? sizes : []; + for(var i = 0; i + bounds[0] < bounds[1]; i++) { + var itemId = ids[i + bounds[0]]; + if(calcItem) { + var itemJobj = $jobj(_createElementId(repeaterId, itemId)); + itemSize.width = $ax.getNumFromPx(itemJobj.css('width')); + itemSize.height = $ax.getNumFromPx(itemJobj.css('height')); + } + + var size = { itemId: itemId, width: itemSize.width, height: itemSize.height }; + currSizes.push(size); + sizesMap[size.itemId] = size; + if(currSizes.length == wrap) { + sizes.push(currSizes); + currSizes = []; + } + } + if (wrap != -1 && currSizes.length > 0) sizes.push(currSizes); + repeaterMap.sizes = sizes; + repeaterMap.sizesMap = sizesMap; + repeaterSizes[repeaterId] = repeaterMap; + }; + + _repeaterManager.getItemSize = function(repeaterId, itemId) { + var repeaterSize = repeaterSizes[repeaterId]; + if (!repeaterSize) return false; + return repeaterSize.sizesMap[itemId]; + } + + _repeaterManager.setItemSize = function (repeaterId, itemId, width, height) { + var repeaterSize = repeaterSizes[repeaterId]; + if(!repeaterSize) return false; + var size = repeaterSize.sizesMap[itemId]; + var deltaX = width - size.width; + var deltaY = height - size.height; + if(!deltaX && !deltaY) return false; + + repeaterSize.resized = true; + + if(deltaX) _pushItems(repeaterId, itemId, deltaX, false, true); + if(deltaY) _pushItems(repeaterId, itemId, deltaY, true, true); + + if(deltaX || deltaY) $ax.event.raiseSyntheticEvent(_createElementId(repeaterId, itemId), 'onItemResize'); + + return true; + } + + var _pushItems = _repeaterManager.pushItems = function (repeaterId, itemId, delta, vertical, suppressFire) { + if(delta == 0) return; + + // Update repeater item size + var prop = vertical ? 'height' : 'width'; + var itemObj = $jobj(_createElementId(repeaterId, itemId)); + itemObj.css(prop, $ax.getNumFromPx(itemObj.css(prop)) + delta); + + var repeaterObj = $jobj(repeaterId); + var repeaterMap = repeaterSizes[repeaterId]; + var sizes = repeaterMap.sizes; + var wrap = sizes[0].length != undefined; + var vert = repeaterMap.vert; + + // Not wrapping, has to push in primary direction + if (!wrap && vert != vertical) { + var before = 0; + var after = 0; + var limit = 0; + for(var i = 0; i < sizes.length; i++) { + var size = sizes[i]; + if(size.itemId == itemId) { + before = size[prop]; + size[prop] += delta; + after = size[prop]; + } else { + limit = limit ? Math.max(limit, size[prop]) : size[prop]; + } + } + + // Repeater delta is because an item can increase secondary direction, but if another item is already larger, then repeater size isn't effected. + var repeaterDelta = delta; + if(sizes.length != 1) { + if(after >= limit) repeaterDelta = after - Math.max(limit, before); + else if(before > limit) repeaterDelta = limit - before; + else repeaterDelta = 0; + } + + _updateRepeaterSize(prop, repeaterObj, repeaterDelta, vert); + + if(!suppressFire) $ax.event.raiseSyntheticEvent(_createElementId(repeaterId, itemId), 'onItemResize'); + return; + } + + var index = 0; + var index2 = 0; + // Get the indices first + if(wrap) { + outer: + for(; index < sizes.length; index++) { + var innerSizes = sizes[index]; + for(index2 = 0; index2 < innerSizes.length; index2++) if(innerSizes[index2].itemId == itemId) break outer; + } + } else { + for(; index < sizes.length; index++) if(sizes[index].itemId == itemId) break; + } + // Find out who is being pushed + var itemIdsEffected = []; + if (vert == vertical) { + // To check for repeater resize, non-wrap is easy, for wrap you have to see if your new size is enough to effect the size given other col/row sizes. + repeaterDelta = delta; + if(wrap && sizes.length > 1) { + var viewId = $ax.adaptive.currentViewId || ''; + var spacing = _getAdaptiveProp($obj(repeaterId).repeaterPropMap, (vert ? 'vertical' : 'horizontal') + 'Spacing', viewId); + for(i = 0; i < sizes.length; i++) { + var rowColSize = 0; + var rowCol = sizes[i]; + for(var j = 0; j < rowCol.length; j++) { + if(j != 0) rowColSize += spacing; + rowColSize += rowCol[j][prop]; + } + + if(i == index) { + before = rowColSize; + after = before + delta; + } else { + limit = limit ? Math.max(limit, rowColSize) : rowColSize; + } + } + + if(after >= limit) repeaterDelta = after - Math.max(limit, before); + else if (before > limit) repeaterDelta = limit - before; + else repeaterDelta = 0; + } + + if (repeaterDelta) { + _updateRepeaterSize(prop, repeaterObj, repeaterDelta, vert); + } + + // Done the hard part, calculating/updating new repeater size. Now just resize items and find what to push. + var array = wrap ? sizes[index] : sizes; + i = wrap ? index2 : index; + array[i][prop] += delta; + + for(i++; i < array.length; i++) itemIdsEffected.push(array[i].itemId); + } else { + // Secondary push is more interesting. See how much your primary row/column is already pushing, if that changes + // then effect all rows/columns after it + + // Get the biggest one in the current row/column, ignoring the one we're changing + var biggest = 0; + var currSizes = sizes[index]; + for(i = 0; i < currSizes.length; i++) { + if (i == index2) continue; + + biggest = Math.max(biggest, currSizes[i][prop]); + } + + var beforeSize = Math.max(biggest, currSizes[index2][prop]); + currSizes[index2][prop] += delta; + var afterSize = Math.max(biggest, currSizes[index2][prop]); + + // Nothing pushed/pulled + if (afterSize == beforeSize) return; + + for(i = index + 1; i < sizes.length; i++) { + currSizes = sizes[i]; + for(j = 0; j < currSizes.length; j++) itemIdsEffected.push(currSizes[j].itemId); + } + + // Delta is only how much the whole row/column changed + delta = afterSize - beforeSize; + + // Repeater resize secondary is determined by the effective delta. + _updateRepeaterSize(prop, repeaterObj, delta, vert); + } + + for(i = 0; i < itemIdsEffected.length; i++) { + var currItemId = itemIdsEffected[i]; + var elementId = _createElementId(repeaterId, currItemId); + var loc = vertical ? 'top' : 'left'; + var jobj = $jobj(elementId); + var currVal = Number(jobj.css(loc).replace('px', '')); + jobj.css(loc, currVal + delta); + } + + if(!suppressFire) $ax.event.raiseSyntheticEvent(_createElementId(repeaterId, itemId), 'onItemResize'); + } + + var _updateRepeaterSize = function(prop, jobj, delta, vert) { + if (delta == 0) return; + var val = $ax.getNumFromPx(jobj.css(prop)) + delta; + var border = 0; + if(vert) border += $ax.getNumFromPx(jobj.css('border-top-width')) + $ax.getNumFromPx(jobj.css('border-bottom-width')); + else border += $ax.getNumFromPx(jobj.css('border-left-width')) + $ax.getNumFromPx(jobj.css('border-right-width')); + val += border; + jobj.css(prop, val); + $ax.dynamicPanelManager.fitParentPanel(jobj.attr('id')); + } + + var _getDataFromDataSet = function (eventInfo, repeaterId, itemId, propName, type) { + var row = undefined; + var deleteMap = eventInfo && eventInfo.repeaterDeleteMap && eventInfo.repeaterDeleteMap[repeaterId]; + if(deleteMap) row = deleteMap.idToRow[itemId]; + + if(!row) { + var itemNum = _getRealItemId(eventInfo, repeaterId, Number(itemId)); + row = repeaterToCurrentDataSet[repeaterId][itemNum]; + } + // Default to obj with text as empty string, as we don't generate the data for empty props + var data = row[propName] || { text: '' }; + //For now text is always the default. May change this to depend on context. + switch(type) { + case 'data': return data.type == 'text' ? data.text : data + case 'img': return (data.img && data.img[$ax.adaptive.getSketchKey()]) || data.text; + default: return (type && data[type]) || data.text; + } + //return type == 'data' && data.type != 'text' ? data : (type && data[type]) || data['text']; + }; + _repeaterManager.getData = _getDataFromDataSet; + + _repeaterManager.hasData = function(id, propName) { + if(!_getItemIdFromElementId(id)) return false; + var repeaterId = $ax.getParentRepeaterFromScriptId(_getScriptIdFromElementId(id)); + return Boolean(repeaterToCurrentDataSet[repeaterId] && repeaterToCurrentDataSet[repeaterId].props.indexOf(propName) != -1); + }; + + var _getEventDeleteData = function(eventInfo, repeaterId) { + var repeaterDeleteMap = eventInfo.repeaterDeleteMap; + if(!repeaterDeleteMap) repeaterDeleteMap = eventInfo.repeaterDeleteMap = {}; + + var myDeleteMap = repeaterDeleteMap[repeaterId]; + if(!myDeleteMap) { + myDeleteMap = repeaterDeleteMap[repeaterId] = {}; + myDeleteMap.deletedIds = []; + myDeleteMap.idToRow = {}; + } + + return myDeleteMap; + }; + + var _getRealItemId = function(eventInfo, repeaterId, itemId) { + var deletedBefore = 0; + var map = eventInfo.repeaterDeleteMap && eventInfo.repeaterDeleteMap[repeaterId]; + var deletedIds = map && map.deletedIds; + if(!deletedIds) return itemId - 1; + + for(var i = 0; i < deletedIds.length; i++) if (deletedIds[i] < itemId) deletedBefore++; + return itemId - deletedBefore - 1; + } + + var _addItemToDataSet = function(repeaterId, row, itemEventInfo) { + itemEventInfo.data = true; + var oldTarget = itemEventInfo.targetElement; + itemEventInfo.targetElement = repeaterId; + var dataSet = repeaterToLocalDataSet[repeaterId]; + + for(var propName in row) { + if(!row.hasOwnProperty(propName)) continue; + var prop = row[propName]; + if(prop.type == 'literal') { + var retval = $ax.expr.evaluateExpr(prop.literal, itemEventInfo); + if(typeof (retval) == 'string' || retval instanceof Date) retval = { type: 'text', text: retval }; + row[propName] = retval; + } + } + + itemEventInfo.targetElement = oldTarget; + dataSet[dataSet.length] = row; + itemEventInfo.data = false; + }; + _repeaterManager.addItem = _addItemToDataSet; + + var _deleteItemsFromDataSet = function(repeaterId, eventInfo, type, rule) { + var dataSet = repeaterToCurrentDataSet[repeaterId]; + var deleteDataMap = _getEventDeleteData(eventInfo, repeaterId); + var items; + + // Should always be this, marked, or rule. + if(type == 'this') items = [_getItemIdFromElementId(eventInfo.srcElement)]; + else if(type == 'marked') items = $ax.deepCopy(repeaterToEditItems[repeaterId]); + else { + // This should be rule + var visibleData = repeaterToCurrentDataSet[repeaterId]; + items = []; + var oldTarget = eventInfo.targetElement; + for(var i = 0; i < visibleData.length + deleteDataMap.deletedIds.length; i++) { + var index = i + 1; + if(deleteDataMap.deletedIds.indexOf(index) != -1) continue; + + eventInfo.targetElement = _createElementId(repeaterId, index); + if($ax.expr.evaluateExpr(rule, eventInfo).toLowerCase() != 'true') continue; + items.push(index); + } + eventInfo.targetElement = oldTarget; + } + // Want them decending + items.sort(function(a, b) { return b - a; }); + var editItems = repeaterToEditItems[repeaterId]; + + for(i = 0; i < items.length; i++) { + var itemId = items[i]; + + // Don't delete already deletedItem + if(deleteDataMap.deletedIds.indexOf(itemId) != -1) continue; + + var deletedRow = $ax.splice(dataSet, _getRealItemId(eventInfo, repeaterId, itemId), 1)[0]; + deleteDataMap.deletedIds.push(itemId); + deleteDataMap.idToRow[itemId] = deletedRow; + for(var j = editItems.length - 1; j >= 0; j--) { + var editItem = editItems[j]; + if(editItem == itemId) $ax.splice(editItems, j, 1); + else if(editItem > itemId) editItems[j] = editItem - 1; + } + } + }; + _repeaterManager.deleteItems = _deleteItemsFromDataSet; + + var _updateEditItemsInDataSet = function(repeaterId, propMap, eventInfo, type, rule) { + var oldTarget = eventInfo.targetElement; + var dataSet = repeaterToCurrentDataSet[repeaterId]; + var items; + + // Should always be this, marked, or rule. + if(type == 'this') items = [_getItemIdFromElementId(eventInfo.srcElement)]; + else if(type == 'marked') items = repeaterToEditItems[repeaterId]; + else { + // This should be rule + var currData = repeaterToCurrentDataSet[repeaterId]; + items = []; + oldTarget = eventInfo.targetElement; + for(var i = 0; i < currData.length; i++) { + var index = i + 1; + eventInfo.targetElement = _createElementId(repeaterId, index); + if($ax.expr.evaluateExpr(rule, eventInfo).toLowerCase() != 'true') continue; + items.push(index); + } + eventInfo.targetElement = oldTarget; + } + + eventInfo.data = true; + for(var prop in propMap) { + if(!propMap.hasOwnProperty(prop)) continue; + for(i = 0; i < items.length; i++) { + var data = propMap[prop]; + var item = items[i]; + if(data.type == 'literal') { + eventInfo.targetElement = _createElementId(repeaterId, item); + data = $ax.expr.evaluateExpr(data.literal, eventInfo); + if(typeof (data) == 'object' && data.isWidget) data = data.text; + if(typeof (data) == 'string') data = { type: 'text', text: data }; + } + dataSet[_getRealItemId(eventInfo, repeaterId, item)][prop] = data; + } + } + eventInfo.targetElement = oldTarget; + eventInfo.data = false; + }; + _repeaterManager.updateEditItems = _updateEditItemsInDataSet; + + var _getAllItemIds = function(repeaterId) { + var retval = []; + var currDataSet = repeaterToCurrentDataSet[repeaterId]; + for(var i = 0; i < currDataSet.length; i++) retval.push(i + 1); + return retval; + }; + _repeaterManager.getAllItemIds = _getAllItemIds; + + var _addEditItemToRepeater = function(repeaterId, itemIds) { + for(var i = 0; i < itemIds.length; i++) { + var itemId = Number(itemIds[i]); + var items = repeaterToEditItems[repeaterId]; + if(items.indexOf(itemId) == -1) items[items.length] = itemId; + } + }; + _repeaterManager.addEditItems = _addEditItemToRepeater; + + var _removeEditItemFromRepeater = function(repeaterId, itemIds) { + for(var i = 0; i < itemIds.length; i++) { + var itemId = itemIds[i]; + var items = repeaterToEditItems[repeaterId]; + var index = items.indexOf(Number(itemId)); + if(index != -1) $ax.splice(items, index, 1); + } + }; + _repeaterManager.removeEditItems = _removeEditItemFromRepeater; + + _repeaterManager.isEditItem = function(repeaterId, itemId) { + var items = repeaterToEditItems[repeaterId]; + return items.indexOf(Number(itemId)) != -1; + }; + + var _createElementId = function(scriptId, itemId) { + if(!itemId) return scriptId; + var i = scriptId.indexOf('_'); + var sections = i > -1 ? [scriptId.substring(0, i), scriptId.substring(i + 1)] : [scriptId]; + var retval = sections[0] + '-' + itemId; + return sections.length > 1 ? retval + '_' + sections[1] : retval; + }; + _repeaterManager.createElementId = _createElementId; + + var _getElementId = function(scriptId, childId) { + var elementId = scriptId; + if($ax.getParentRepeaterFromScriptId(scriptId)) { + // Must be in the same item as the child + var itemId = $ax.repeater.getItemIdFromElementId(childId); + elementId = $ax.repeater.createElementId(scriptId, itemId); + } + return elementId; + }; + _repeaterManager.getElementId = _getElementId; + + var _getScriptIdFromElementId = function(elementId) { + if(!elementId) return elementId; + var sections = elementId.split('-'); + var retval = sections[0]; + if(sections.length <= 1) return retval; + sections = sections[1].split('_'); + return sections.length > 1 ? retval + '_' + sections[1] : retval; + }; + _repeaterManager.getScriptIdFromElementId = _getScriptIdFromElementId; + + var _getItemIdFromElementId = function(elementId) { + var sections = elementId.split('-'); + if(sections.length < 2) return ''; + sections = sections[1].split('_'); + return sections[0]; + }; + _repeaterManager.getItemIdFromElementId = _getItemIdFromElementId; + + // TODO: Just inline this if we keep it this way. + var _applySuffixToElementId = function(id, suffix) { + return id + suffix; + // return _createElementId(_getScriptIdFromElementId(id) + suffix, _getItemIdFromElementId(id)); + }; + _repeaterManager.applySuffixToElementId = _applySuffixToElementId; + + var _removeSuffixFromElementId = function(id) { + if (id.indexOf('_') != -1) return id.split('_', 1)[0]; + return id; + } + _repeaterManager.removeSuffixFromElementId = _removeSuffixFromElementId; + + // var _getRepeaterSize = function(repeaterId) { + // var itemCount = ($ax.getItemIdsForRepeater(repeaterId) || []).length; + // if(itemCount == 0) return { width: 0, height: 0 }; + + // var repeater = $obj(repeaterId); + // // Width and height per item; + // var width = repeater.width; + // var height = repeater.height; + + // var viewId = $ax.adaptive.currentViewId || ''; + // var widthIncrement = width + _getAdaptiveProp(repeater.repeaterPropMap, 'horizontalSpacing', viewId); + // var heightIncrement = height + _getAdaptiveProp(repeater.repeaterPropMap, 'verticalSpacing', viewId); + + // var wrap = _getAdaptiveProp(repeater.repeaterPropMap, 'wrap', viewId); + // var vertical = _getAdaptiveProp(repeater.repeaterPropMap, 'vertical', viewId); + + // if(wrap == -1 || itemCount <= wrap) { + // if(vertical) height += heightIncrement * (itemCount - 1); + // else width += widthIncrement * (itemCount - 1); + // } else { + // var primaryDim = wrap; + // var secondaryDim = Math.ceil(itemCount / primaryDim); + + // if(vertical) { + // height += heightIncrement * (primaryDim - 1); + // width += widthIncrement * (secondaryDim - 1); + // } else { + // width += widthIncrement * (primaryDim - 1); + // height += heightIncrement * (secondaryDim - 1); + // } + // } + // return { width: width, height: height }; + // }; + // _repeaterManager.getRepeaterSize = _getRepeaterSize; + +}); + +// ******* Dynamic Panel Manager ******** // +$axure.internal(function($ax) { + // TODO: Probably a lot of the dynamic panel functions from pagescript should be moved here at some point... + var _dynamicPanelManager = $ax.dynamicPanelManager = {}; + + var _isIdFitToContent = _dynamicPanelManager.isIdFitToContent = function(id) { + var obj = $obj(id); + if (!obj || !$ax.public.fn.IsDynamicPanel(obj.type) || !obj.fitToContent) return false; + + var jpanel = $jobj(id); + return !jpanel.attr('data-notfit'); + }; + + //this function fit parent panel, also check for parent layer or repeaters + var _fitParentPanel = function (widgetId) { + + var parentLayer = getParentLayer(widgetId); + if(parentLayer) { + if(_updateLayerRectCache(parentLayer)) _fitParentPanel(parentLayer); + return; + } + + // Find parent panel if there is one. + var parentPanelInfo = getParentPanel(widgetId); + if(parentPanelInfo) { + var parentId = parentPanelInfo.parent; + if(_updateFitPanel(parentId, parentPanelInfo.state)) _fitParentPanel(parentId); + return; + } + + // Otherwise, try to get parent repeater + var parentRepeaterId = $ax.getParentRepeaterFromElementId(widgetId); + var repeaterObj = $obj(parentRepeaterId); + if(!repeaterObj || widgetId == parentRepeaterId || !repeaterObj.repeaterPropMap.fitToContent) return; + var itemId = $ax.repeater.getItemIdFromElementId(widgetId); + var size = getContainerSize($ax.repeater.createElementId(parentRepeaterId, itemId)); + $ax.repeater.setItemSize(parentRepeaterId, itemId, size.width, size.height); + }; + _dynamicPanelManager.fitParentPanel = _fitParentPanel; + + _dynamicPanelManager.initialize = function() { + $axure.resize(_handleResize); + }; + + var percentPanelToLeftCache = []; + var percentPanelsInitialized = false; + var _handleResize = function() { + if(percentPanelsInitialized) { + for(var key in percentPanelToLeftCache) { + //could optimize to only update non-contained panels + _updatePanelPercentWidth(key); + } + } else { + $ax('*').each(function(obj, elementId) { + if(_isPercentWidthPanel(obj)) _updatePanelPercentWidth(elementId); + }); + percentPanelsInitialized = true; + } + }; + + var _isPercentWidthPanel = _dynamicPanelManager.isPercentWidthPanel = function(obj) { + return obj && $ax.public.fn.IsDynamicPanel(obj.type) && obj.percentWidth; + }; + + _dynamicPanelManager.updatePanelContentPercentWidth = function(elementId) { + // if(_isPercentWidthPanel($obj(elementId))) return; + var stateChildrenQuery = $jobj(elementId).children('.panel_state'); + stateChildrenQuery.children('.panel_state_content').each( + function() { + $(this).children('.ax_dynamic_panel').each( + function() { _updatePanelPercentWidth(this.id); } + ); + } + ); + }; + + _dynamicPanelManager.updatePercentPanelCache = function(query) { + query.each(function(obj, elementId) { + if(_isPercentWidthPanel(obj)) { + if(_updatePercentPanelToLeftCache(obj, elementId, true)) { + _updatePanelPercentWidth(elementId); + } + } + }); + }; + + _dynamicPanelManager.resetFixedPanel = function(obj, domElement) { + if(obj.fixedHorizontal == 'center') domElement.style.marginLeft = ""; + if(obj.fixedVertical == 'middle') domElement.style.marginTop = ""; + }; + + _dynamicPanelManager.resetAdaptivePercentPanel = function(obj, domElement) { + if(!_isPercentWidthPanel(obj)) return; + + if(obj.fixedHorizontal == 'center') domElement.style.marginLeft = ""; + else if(obj.fixedHorizontal == 'right') domElement.style.width = ""; + }; + + var _updatePercentPanelToLeftCache = function(obj, elementId, overwrite) { + var wasUpdated = false; + var jObj = $jobj(elementId); + var axObj = $ax('#' + elementId); + if(percentPanelToLeftCache[elementId] == undefined || overwrite) { + if(obj.fixedHorizontal == 'center') percentPanelToLeftCache[elementId] = Number(jObj.css('margin-left').replace("px", "")); + else if(obj.fixedHorizontal == 'right') percentPanelToLeftCache[elementId] = axObj.width() + Number(jObj.css('right').replace("px", "")); + else percentPanelToLeftCache[elementId] = Number(jObj.css('left').replace("px", "")); + wasUpdated = true; + } + + if(obj.fixedHorizontal == 'right' && _isIdFitToContent(elementId)) { + var fitWidth = getContainerSize($ax.visibility.GetPanelState(elementId) + '_content').width; + percentPanelToLeftCache[elementId] = fitWidth + Number(jObj.css('right').replace("px", "")); + wasUpdated = true; + } + return wasUpdated; + }; + + var _updatePanelPercentWidth = _dynamicPanelManager.updatePanelPercentWidth = function(elementId) { + var obj = $obj(elementId); + if(!_isPercentWidthPanel(obj)) return; + + _updatePercentPanelToLeftCache(obj, elementId, false); + + var width; + var x; + + if(obj.fixedHorizontal) { + x = 0; + width = $(window).width(); + } else { + var parentPanelInfo = getParentPanel(elementId); + if(parentPanelInfo) { + var parentId = parentPanelInfo.parent; + width = $ax('#' + parentId).width(); + var parentObj = $obj(parentId); + if(parentObj.percentWidth) { + var stateId = $ax.repeater.applySuffixToElementId(parentId, '_state' + parentPanelInfo.state); + var stateContentId = stateId + '_content'; + x = -Number($jobj(stateContentId).css('margin-left').replace("px", "")); + } else x = 0; + } else { + var parentRepeater = $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); + if(parentRepeater) { + var itemId = $ax.repeater.getItemIdFromElementId(elementId); + var itemContainerId = $ax.repeater.createElementId(parentRepeater, itemId); + x = 0; + width = $ax('#' + itemContainerId).width(); + } else { + var $window = $(window); + width = $window.width(); + var bodyLeft = Number($('body').css('left').replace("px", "")); + var bodyWidth = Number($('body').css('width').replace("px", "")); + var isCenter = $ax.adaptive.getPageStyle().pageAlignment == 'center'; + width = Math.max(width, bodyWidth); + x = isCenter ? -(width - bodyWidth) / 2 - bodyLeft : 0; + } + } + } + + var jObj = $jobj(elementId); + if(obj.fixedHorizontal == 'left') jObj.css('left', x + 'px'); + else if(obj.fixedHorizontal == 'center') { + jObj.css('left', x + 'px'); + jObj.css('margin-left', 0 + 'px'); + } else jObj.css('left', x + 'px'); + + jObj.css('width', width + 'px'); + + var panelLeft = percentPanelToLeftCache[elementId]; + var stateParent = jObj; + while(stateParent.children()[0].id.indexOf($ax.visibility.CONTAINER_SUFFIX) != -1) stateParent = stateParent.children(); + var stateChildrenQuery = stateParent.children('.panel_state'); + stateChildrenQuery.css('width', width + 'px'); + + if(obj.fixedHorizontal == 'center') + stateChildrenQuery.children('.panel_state_content').css('left', '50%').css('margin-left', panelLeft + 'px'); + else if(obj.fixedHorizontal == 'right') + stateChildrenQuery.children('.panel_state_content').css('left', width - panelLeft + 'px'); + else stateChildrenQuery.children('.panel_state_content').css('margin-left', panelLeft - x + 'px'); + }; + + + _dynamicPanelManager.updateParentsOfNonDefaultFitPanels = function () { + $ax('*').each(function (diagramObject, elementId) { + if(!$ax.public.fn.IsDynamicPanel(diagramObject.type) || !diagramObject.fitToContent) return; + if($ax.visibility.isElementIdLimboOrInLimboContainer(elementId)) return; + + var stateId = $ax.visibility.GetPanelState(elementId); + if(stateId != $ax.repeater.applySuffixToElementId(elementId, '_state0')) _fitParentPanel(elementId); + }); + }; + + //_dynamicPanelManager.updateAllFitPanelsAndLayerSizeCaches = function() { + // var fitToContent = []; + // var layers = []; + // $ax('*').each(function (obj, elementId) { + // var isFitPanel = $ax.public.fn.IsDynamicPanel(obj.type) && obj.fitToContent; + // var isLayer = $ax.public.fn.IsLayer(obj.type); + // if(!isFitPanel && !isLayer) return; + // if($ax.visibility.isElementIdLimboOrInLimboContainer(elementId)) return; + + // if(isFitPanel) { + // fitToContent[fitToContent.length] = elementId; + // } else if(isLayer) { + // layers[layers.length] = elementId; + // } + // }); + // for(var i = fitToContent.length - 1; i >= 0; i--) { + // var panelId = fitToContent[i]; + // var stateCount = $obj(panelId).diagrams.length; + // for(var j = 0; j < stateCount; j++) { + // $ax.dynamicPanelManager.setFitToContentCss(panelId, true); + // _updateFitPanel(panelId, j, true); + // } + // } + // for(var i = layers.length - 1; i >= 0; i--) { + // var layerId = layers[i]; + // _updateLayerSizeCache(layerId); + // } + //}; + + var _getCachedLayerRect = function (elementId) { + var element = document.getElementById(elementId); + var rect = {}; + rect.width = Number(element.getAttribute('data-width')); + rect.height = Number(element.getAttribute('data-height')); + rect.x = Number(element.getAttribute('data-left')); + rect.y = Number(element.getAttribute('data-top')); + return rect; + } + + var _updateLayerRectCache = function (elementId) { + var oldRect = _getCachedLayerRect(elementId); + + var axObj = $ax('#' + elementId); + var size = axObj.size(); + var loc = {}; + loc.x = axObj.locRelativeIgnoreLayer(false); + loc.y = axObj.locRelativeIgnoreLayer(true); + + var sizeChange = oldRect.width != size.width || oldRect.height != size.height; + var locChange = oldRect.x != loc.x || oldRect.y != loc.y; + if(sizeChange || locChange) { + var element = document.getElementById(elementId); + if(sizeChange) { + element.setAttribute('data-width', size.width); + element.setAttribute('data-height', size.height); + $ax.event.raiseSyntheticEvent(elementId, 'onResize'); + } + if(locChange) { + element.setAttribute('data-left', loc.x); + element.setAttribute('data-top', loc.y); + $ax.event.raiseSyntheticEvent(elementId, 'onMove'); + } + return true; + } + return false; + } + + _dynamicPanelManager.setFitToContentCss = function(elementId, fitToContent, oldWidth, oldHeight) { + + if($ax.dynamicPanelManager.isIdFitToContent(elementId) == fitToContent) return; + + var panel = $jobj(elementId); + var stateCss; + var scrollbars = $obj(elementId).scrollbars; + + if(fitToContent) { + panel.attr('style', ''); + panel.removeAttr('data-notfit'); + stateCss = {}; + stateCss.position = 'relative'; + if(scrollbars != 'none') { + stateCss.overflow = 'visible'; + stateCss['-webkit-overflow-scrolling'] = 'visible'; + } + if(scrollbars == 'verticalAsNeeded') { + stateCss['overflow-x'] = 'visible'; + stateCss['-ms-overflow-x'] = 'visible'; + } else if(scrollbars == 'horizontalAsNeeded') { + stateCss['overflow-y'] = 'visible'; + stateCss['-ms-overflow-y'] = 'visible'; + } + panel.children().css(stateCss); + } else { + panel.attr('data-notfit', 'true'); + var panelCss = { width: oldWidth, height: oldHeight }; + stateCss = { width: oldWidth, height: oldHeight }; + panelCss.overflow = 'hidden'; + stateCss.position = 'absolute'; + if(scrollbars != 'none') { + stateCss.overflow = 'auto'; + stateCss['-webkit-overflow-scrolling'] = 'touch'; + } + if(scrollbars == 'verticalAsNeeded') { + stateCss['overflow-x'] = 'hidden'; + stateCss['-ms-overflow-x'] = 'hidden'; + } else if(scrollbars == 'horizontalAsNeeded') { + stateCss['overflow-y'] = 'hidden'; + stateCss['-ms-overflow-y'] = 'hidden'; + } + panel.css(panelCss); + panel.children().css(stateCss); + } + }; + + var _getShownStateId = function (id) { + var obj = $obj(id); + if (!obj || !$ax.public.fn.IsDynamicPanel(obj.type)) return id; + + var children = $ax.visibility.applyWidgetContainer(id, true, false, true).children(); + for (var i = 0; i < children.length; i++) { + var child = children[i]; + while ($ax.visibility.isContainer(child.id)) child = $(child).children()[0]; + if (child && child.style && child.style.display != 'none') return child.id; + } + return id; + }; + + var _getShownStateObj = function(id) { return $ax('#' + _getShownStateId(id));} + + _dynamicPanelManager.getShownState = function (id) { return $jobj(_getShownStateId(id)); }; + + var _getClamp = function(id) { + var obj = $obj(id); + if(!obj) return $ax('#' + id); + if ($ax.public.fn.IsDynamicPanel(obj.type)) return _getShownStateObj(id); + return $ax('#' + id); + }; + + var _updateFitPanel = function(panelId, stateIndex, initializingView) { + if(!panelId) return false; + + // Only fit if fitToContent is true + if(!$ax.dynamicPanelManager.isIdFitToContent(panelId)) return false; + + // Traverse through children to find what size it should be. + var stateId = $ax.repeater.applySuffixToElementId(panelId, '_state' + stateIndex); + + var stateContentId = stateId + '_content'; + var stateQuery = $jobj(stateId); + var size = getContainerSize(stateContentId); + + // Skip if size hasn't changed + var oldWidth = stateQuery.width(); + var oldHeight = stateQuery.height(); + if(oldWidth == size.width && oldHeight == size.height) return false; + + if(!$obj(panelId).percentWidth) stateQuery.width(size.width); + stateQuery.height(size.height); + + //updatePercentWidth on all child panels + $jobj(stateContentId).children('.ax_dynamic_panel').each( + function() { _updatePanelPercentWidth(this.id); } + ); + + //do the following only if it is the current state + if(stateId != $ax.visibility.GetPanelState(panelId)) return false; + + if(!initializingView) _adjustFixed(panelId, oldWidth, oldHeight, size.width, size.height); + else if(stateIndex != 0) { + var state0 = $jobj($ax.repeater.applySuffixToElementId(panelId, '_state0')); + _adjustFixed(panelId, state0.width(), state0.height(), size.width, size.height); + } + + $ax.event.raiseSyntheticEvent(panelId, 'onResize'); + $ax.flyoutManager.updateFlyout(panelId); + + return true; + }; + + // widgetId is the one that crawls up masters until it finds a parent panel, targetId is the original widgetId (not the crawling master) + // finds the immediate parent panel and crawls up through masters but not repeaters + var getParentPanel = function(widgetId, path, targetId) { + path = path || $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(widgetId)); + + var obj = $obj(widgetId); + if(obj.parentDynamicPanel) { + path[path.length - 1] = obj.parentDynamicPanel; + var parentId = $ax.getScriptIdFromPath(path); + if(!parentId) return undefined; + parentId = $ax.repeater.getElementId(parentId, widgetId); + var parentObj = $obj(parentId); + var retVal = { parent: parentId }; + for(var i = 0; i < parentObj.diagrams.length; i++) { + var stateId = $ax.repeater.applySuffixToElementId(parentId, '_state' + i); + var stateQuery = $jobj(stateId); + if(stateQuery.find('#' + (targetId || widgetId)).length != 0) { + retVal.state = i; + break; + } + } + return retVal; + } + + if(path.length == 1) return undefined; + + path.pop(); + var parentMaster = $ax.getScriptIdFromPath(path); + if(!parentMaster) return undefined; + parentMaster = $ax.repeater.getElementId(parentMaster, widgetId); + + //check if the master is in the same repeater as the widgetId widget + var parentMasterItemId = $ax.repeater.getItemIdFromElementId(parentMaster); + var widgetItemId = $ax.repeater.getItemIdFromElementId(widgetId); + if(parentMasterItemId != widgetItemId) return undefined; + + return getParentPanel(parentMaster, path, targetId || widgetId); + }; + + // finds the immediate parent layer and crawls up through masters but not repeaters or panels + var getParentLayer = function (widgetId, path) { + path = path || $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(widgetId)); + + //gets immediate parent layer only + var layerId = $ax.getLayerParentFromElementId(widgetId); + if(layerId) return layerId; + + if(path.length == 1) return undefined; + + path.pop(); + var parentMaster = $ax.getScriptIdFromPath(path); + if(!parentMaster) return undefined; + parentMaster = $ax.repeater.getElementId(parentMaster, widgetId); + + //check if the master is in the same panel as the widgetId widget + var widgetParentPanel = getParentPanel(widgetId); + if(widgetParentPanel) { + var parentMasterParentPanel = getParentPanel(parentMaster); + if(!parentMasterParentPanel || widgetParentPanel.parent != parentMasterParentPanel.parent) return undefined; + } + + //check if the master is in the same repeater as the widgetId widget + var parentMasterItemId = $ax.repeater.getItemIdFromElementId(parentMaster); + var widgetItemId = $ax.repeater.getItemIdFromElementId(widgetId); + if(parentMasterItemId != widgetItemId) return undefined; + + return getParentLayer(parentMaster, path); + }; + + // TODO: May be a better location for this. Used currently for rdo and panel state containers + var getContainerSize = function(containerId) { + var containerQuery = containerId ? $jobj(containerId) : $('#base'); + var children = containerQuery.children(); + // Default size + var size = { width: 0, height: 0 }; + for(var i = 0; i < children.length; i++) { + var child = $(children[i]); + var childId = child.attr('id'); + //var axChild = $ax('#' + childId).width(); + + var childObj = $obj(childId); + if(!childObj) { + // On the body there are some children that should be ignored, as they are not objects. + if(!child.hasClass('basiclink') || child.get(0).tagName.toLowerCase() != 'a') continue; + + // Otherwise it should be a basic link + var linkChildren = child.children(); + if(!linkChildren.length) continue; + child = $(linkChildren[0]); + childId = child.attr('id'); + childObj = $obj(childId); + } + + // Ignore fixed + if(!childId || $ax.visibility.limboIds[childId] || !$ax.visibility.IsIdVisible(childId) + || $ax.public.fn.IsDynamicPanel(childObj.type) && childObj.fixedHorizontal) continue; + + var boundingRect = $ax.public.fn.getWidgetBoundingRect(childId); + var position = { left: boundingRect.left, top: boundingRect.top }; + var width = boundingRect.width; + var height = boundingRect.height; + + if($ax.public.fn.IsMaster(childObj.type)) { + var masterSize = getContainerSize(childId); + width = masterSize.width; + height = masterSize.height; + // } else if($ax.public.fn.IsRepeater(childObj.type)) { + // var repeaterSize = $ax.repeater.getRepeaterSize(childId); + // width = repeaterSize.width; + // height = repeaterSize.height; + + // if(width == 0 && height == 0) continue; + + // position.left += childObj.x; + // position.top += childObj.y; + } else if ($ax.public.fn.IsDynamicPanel(childObj.type)) { + if($ax.dynamicPanelManager.isIdFitToContent(childId)) { + var stateQuery = $jobj($ax.visibility.GetPanelState(childId)); + width = stateQuery.width(); + height = stateQuery.height(); + } + } + + size.width = Math.max(size.width, position.left + width); + size.height = Math.max(size.height, position.top + height); + } + + return size; + }; + + var _adjustFixed = _dynamicPanelManager.adjustFixed = function(panelId, oldWidth, oldHeight, width, height) { + var loc = _getFixedPosition(panelId, oldWidth, oldHeight, width, height); + if(loc) { + $ax.action.addAnimation(panelId, $ax.action.queueTypes.move, function() { + $ax.move.MoveWidget(panelId, loc[0], loc[1], { easing: 'none', duration: 0 }, false, null, true); + }); + } + }; + + var _getFixedPosition = _dynamicPanelManager.getFixedPosition = function(panelId, oldWidth, oldHeight, width, height) { + var panelObj = $obj(panelId); + var x = 0; + var y = 0; + if(panelObj.fixedHorizontal == 'center') { + x = (oldWidth - width) / 2; + } + if(panelObj.fixedVertical == 'middle') { + y = (oldHeight - height) / 2; + } + return x == 0 && y == 0 ? undefined : [x, y]; + }; + + _dynamicPanelManager.getFixedInfo = function(panelId) { + var panelObj = $obj(panelId); + if (!panelObj || !$ax.public.fn.IsDynamicPanel(panelObj.type)) return {}; + var jobj = $jobj(panelId); + if(jobj.css('position') == 'absolute') return {}; + + var info = {}; + var horizontal = panelObj.fixedHorizontal; + if(!horizontal) return info; + + info.fixed = true; + info.horizontal = horizontal; + info.vertical = panelObj.fixedVertical; + + if(info.horizontal == 'left') info.x = Number(jobj.css('left').replace('px', '')); + else if(info.horizontal == 'center') info.x = Number(jobj.css('margin-left').replace('px', '')); + else if(info.horizontal == 'right') info.x = Number(jobj.css('right').replace('px', '')); + + if(info.vertical == 'top') info.y = Number(jobj.css('top').replace('px', '')); + else if(info.vertical == 'middle') info.y = Number(jobj.css('margin-top').replace('px', '')); + else if(info.vertical == 'bottom') info.y = Number(jobj.css('bottom').replace('px', '')); + + return info; + }; + + // Show isn't necessary if this is always done before toggling (which is currently true), but I don't want that + // change (if it happened) to break this. + var _compressToggle = function (id, vert, show, easing, duration) { + var layer = $ax.getTypeFromElementId(id) == $ax.constants.LAYER_TYPE; + var locProp = vert ? 'top' : 'left'; + var dimProp = vert ? 'height' : 'width'; + + var threshold; + var delta; + + threshold = $ax('#' + id)[locProp](true); + delta = layer ? $ax('#' + id)[dimProp]() : _getShownStateObj(id)[dimProp](); + + if(!show) { + // Need to make threshold bottom/right + threshold += delta; + // Delta is in the opposite direction + delta *= -1; + } + + _compress(id, vert, threshold, delta, easing, duration); + }; + _dynamicPanelManager.compressToggle = _compressToggle; + + // Used when setting state of dynamic panel + var _compressDelta = function(id, oldState, newState, vert, easing, duration) { + var oldQuery = $jobj(oldState); + var newQuery = $jobj(newState); + + var thresholdProp = vert ? 'top' : 'left'; + var thresholdOffset = vert ? 'height' : 'width'; + var threshold = $ax('#' + id)[thresholdProp](true); + threshold += oldQuery[thresholdOffset](); + + var delta = newQuery[thresholdOffset]() - oldQuery[thresholdOffset](); + + var clampOffset = vert ? 'width' : 'height'; + var clampWidth = Math.max(oldQuery[clampOffset](), newQuery[clampOffset]()); + + _compress(id, vert, threshold, delta, easing, duration, clampWidth); + }; + _dynamicPanelManager.compressDelta = _compressDelta; + + var _compress = function (id, vert, threshold, delta, easing, duration, clampWidth) { + // If below, a horizantal clamp, otherwise a vertical clamp + var clamp = { + prop: vert ? 'left' : 'top', + offset: vert ? 'width' : 'height' + }; + + // Get clamp in coords relative to parent. Account for layers farther down + if($ax.getTypeFromElementId(id) == $ax.constants.LAYER_TYPE) { + clamp.start = $ax('#' + id)[clamp.prop](true); + clamp.end = clamp.start + $ax('#' + id)[clamp.offset](); + } else { + var clampLoc = $jobj(id); + if(typeof clampWidth == 'undefined') clampWidth = _getClamp(id)[clamp.offset](); + + clamp.start = Number(clampLoc.css(clamp.prop).replace('px', '')); + + clamp.end = clamp.start + clampWidth; + } + + // If clamps, threshold, or delta is not a number, can't compress. + if (isNaN(clamp.start) || isNaN(clamp.end) || isNaN(threshold) || isNaN(delta)) return; + + // Update clamp if fixed, to account for body position (only necessary when page centered) + if($jobj(id).css('position') == 'fixed') { + var clampDelta = $('#base').position().left; + clamp.start -= clampDelta; + clamp.end -= clampDelta; + } + + if(!easing) { + easing = 'none'; + duration = 0; + } + var parent = $ax('#' + id).getParents(false, ['item', 'state', 'layer'])[0]; + var obj = parent && $ax.getObjectFromElementId($ax.repeater.removeSuffixFromElementId(parent)); + // Go until you hit a parent item or state, or a layer that is hidden to use as parent. + // Account for layer container positions as you go. + while(obj && $ax.public.fn.IsLayer(obj.type) && $ax.visibility.IsIdVisible(parent)) { + var container = $ax.visibility.applyWidgetContainer(parent, true, true); + // If layer is using container, offset is going to be necessary + if(container.length) { + var offsetX = $ax.getNumFromPx(container.css('left')); + var offsetY = $ax.getNumFromPx(container.css('top')); + var clampProp = clamp.prop == 'left' ? offsetX : offsetY; + var threshProp = clamp.prop == 'left' ? offsetY : offsetX; + threshold += threshProp; + clamp.start += clampProp; + clamp.end += clampProp; + } + + parent = $ax('#' + parent).getParents(false, ['item', 'state', 'layer'])[0]; + obj = parent && $ax.getObjectFromElementId($ax.repeater.removeSuffixFromElementId(parent)); + } + + // Add container mid push causes strange behavior because we take container into account as we go down, but if after we accounted for it, + // a container is added, that container is not accounted for with threshold and clamp values. + var layer = obj && $ax.public.fn.IsLayer(obj.type) && parent; + if(layer) { + // If your parent layer is invisible, you want to be relative to it's container. That is true already if it has a container, + // but if you are just adding one now, then you need to offset your values + var needsOffset = !$jobj(layer + '_container').length && !$ax.visibility.IsIdVisible(layer); + $ax.visibility.pushContainer(layer, false); + if(needsOffset) { + container = $jobj(layer + '_container'); + offsetX = $ax.getNumFromPx(container.css('left')); + offsetY = $ax.getNumFromPx(container.css('top')); + clampProp = clamp.prop == 'left' ? offsetX : offsetY; + threshProp = clamp.prop == 'left' ? offsetY : offsetX; + threshold -= threshProp; + clamp.start -= clampProp; + clamp.end -= clampProp; + } + } + + // Note: If parent is body, some of these aren't widgets + if(parent && $jobj(parent + '_content').length > 0) parent = parent + '_content'; + if(parent && $jobj(parent + '_container').length > 0) parent = parent + '_container'; + _compressChildrenHelper(id, $(parent ? '#' + parent : '#base').children(), vert, threshold, delta, clamp, easing, duration); + + if(layer) $ax.visibility.popContainer(layer, false); + + // Do item push + var itemId = $ax.repeater.getItemIdFromElementId(id); + if(!itemId) return; + + var repeaterId = $ax.getParentRepeaterFromElementId(id); + // Only need to push when parent is an item directly. + if(parent != $ax.repeater.createElementId(repeaterId, itemId)) return; + + // If repeater is fit to content, then don't worry about it, it'll be handled elsewhere + if(!obj.repeaterPropMap.fitToContent) $ax.repeater.pushItems(repeaterId, itemId, delta, vert); + }; + + var _compressChildrenHelper = function (id, children, vert, threshold, delta, clamp, easing, duration, parentLayer) { + var toMove = []; + var allMove = true; + for (var i = 0; i < children.length; i++) { + var child = $(children[i]); + + // Check for basic links + if(child[0] && child[0].tagName == 'A' && child.hasClass('basiclink')) child = child.children(); + var childId = child.attr('id'); + + // Don't move self, and check id to make sure it is a widget and lastly check if it is a fixed panel. + if(childId == id || !childId || childId[0] != 'u' || childId.indexOf('ann') != -1 || childId.indexOf('ref') != -1 || $obj(childId).fixedVertical) { + allMove = false; + continue; + } + + if ($ax.getTypeFromElementId(childId) == $ax.constants.LAYER_TYPE) { + $ax.visibility.pushContainer(childId, false); + var addSelf; + var container = $ax.visibility.applyWidgetContainer(childId, true, true); + var layerChildren = $ax.visibility.getRealChildren(child.children()); + //if(container.length) { + var offsetX = -$ax.getNumFromPx(container.css('left')); + var offsetY = -$ax.getNumFromPx(container.css('top')); + var clampProp = clamp.prop == 'left' ? offsetX : offsetY; + var threshProp = clamp.prop == 'left' ? offsetY : offsetX; + var layerClamp = { prop: clamp.prop, offset: clamp.offset, start: clamp.start + clampProp, end: clamp.end + clampProp }; + addSelf = _compressChildrenHelper(id, layerChildren, vert, threshold + threshProp, delta, layerClamp, easing, duration, childId); + //} else addSelf = _compressChildrenHelper(id, layerChildren, vert, threshold, delta, clamp, easing, duration, childId); + + if(addSelf) toMove.push(childId); + else allMove = false; + $ax.visibility.popContainer(childId, false); + continue; + } + + var numbers = childId.substring(1).split('-'); + if(numbers.length < 1 || isNaN(Number(numbers[0])) || (numbers.length == 2 && isNaN(Number(numbers[1]))) || numbers.length > 2) continue; + + var marker, childClamp; + + var axChild = $ax('#' + childId); + var markerProp = vert ? 'top' : 'left'; + marker = Number(axChild[markerProp](true)); + childClamp = [Number(axChild[clamp.prop](true))]; + // Dynamic panels are not reporting correct size sometimes, so pull it from the state. Get shown state just returns the widget if it is not a dynamic panel. + var sizeChild = _getShownStateObj(childId); + childClamp[1] = childClamp[0] + sizeChild[clamp.offset](); + + if(isNaN(marker) || isNaN(childClamp[0]) || isNaN(childClamp[1]) || + marker < threshold || childClamp[1] <= clamp.start || childClamp[0] >= clamp.end) { + allMove = false; + continue; + } + + toMove.push(childId); + } + + if (allMove && parentLayer) { + return true; + } else { + for(var i = 0; i < toMove.length; i++) { + $ax('#' + toMove[i]).moveBy(vert ? 0 : delta, vert ? delta : 0, easing == 'none' ? {} : { duration: duration, easing: easing }); + } + } + return false; + }; + + var _parentHandlesStyles = function(id) { + var parents = $ax('#' + id).getParents(true, ['dynamicPanel', 'layer'])[0]; + if(!parents) return false; + var directParent = true; + for(var i = 0; i < parents.length; i++) { + var parentId = parents[i]; + var parentObj = $obj(parentId); + if(!parentObj.propagate) { + directParent = false; + continue; + } + return { id: parentId, direct: directParent }; + } + return false; + }; + _dynamicPanelManager.parentHandlesStyles = _parentHandlesStyles; + + var _propagateMouseOver = function(id, value) { + propagate(id, true, value); + }; + _dynamicPanelManager.propagateMouseOver = _propagateMouseOver; + + var _propagateMouseDown = function(id, value) { + propagate(id, false, value); + }; + _dynamicPanelManager.propagateMouseDown = _propagateMouseDown; + + var propagate = function(id, hover, value) { + var hoverChildren = function(children) { + if(!children) return; + for(var i = 0; i < children.length; i++) { + var elementId = children[i].id; + var obj = $obj(elementId); + if(obj == null) { + elementId = elementId.split('_')[0]; + obj = $obj(elementId); + } + if(obj == null) continue; + if (($ax.public.fn.IsDynamicPanel(obj.type) || $ax.public.fn.IsLayer(obj.type)) && !obj.propagate) continue; + + if(hover) $ax.style.SetWidgetHover(elementId, value); + else $ax.style.SetWidgetMouseDown(elementId, value); + $ax.annotation.updateLinkLocations(elementId); + + hoverChildren(children[i].children); + } + }; + hoverChildren($ax('#' + id).getChildren(true)[0].children); + }; +}); + +//***** sto.js *****// + +$axure.internal(function($ax) { + var funcs = {}; + + var weekday = new Array(7); + weekday[0] = "Sunday"; + weekday[1] = "Monday"; + weekday[2] = "Tuesday"; + weekday[3] = "Wednesday"; + weekday[4] = "Thursday"; + weekday[5] = "Friday"; + weekday[6] = "Saturday"; + + funcs.getDayOfWeek = function() { + return _getDayOfWeek(this.getDay()); + }; + + var _getDayOfWeek = $ax.getDayOfWeek = function(day) { + return weekday[day]; + }; + + var month = new Array(12); + month[0] = "January"; + month[1] = "February"; + month[2] = "March"; + month[3] = "April"; + month[4] = "May"; + month[5] = "June"; + month[6] = "July"; + month[7] = "August"; + month[8] = "September"; + month[9] = "October"; + month[10] = "November"; + month[11] = "December"; + + funcs.getMonthName = function() { + return _getMonthName(this.getMonth()); + }; + + var _getMonthName = $ax.getMonthName = function(monthNum) { + return month[monthNum]; + }; + + funcs.getMonth = function() { + return this.getMonth() + 1; + }; + + funcs.addYears = function(years) { + var retVal = new Date(this.valueOf()); + retVal.setFullYear(this.getFullYear() + Number(years)); + return retVal; + }; + + funcs.addMonths = function(months) { + var retVal = new Date(this.valueOf()); + retVal.setMonth(this.getMonth() + Number(months)); + return retVal; + }; + + funcs.addDays = function(days) { + var retVal = new Date(this.valueOf()); + retVal.setDate(this.getDate() + Number(days)); + return retVal; + }; + + funcs.addHours = function(hours) { + var retVal = new Date(this.valueOf()); + retVal.setHours(this.getHours() + Number(hours)); + return retVal; + }; + + funcs.addMinutes = function(minutes) { + var retVal = new Date(this.valueOf()); + retVal.setMinutes(this.getMinutes() + Number(minutes)); + return retVal; + }; + + funcs.addSeconds = function(seconds) { + var retVal = new Date(this.valueOf()); + retVal.setSeconds(this.getSeconds() + Number(seconds)); + return retVal; + }; + + funcs.addMilliseconds = function(milliseconds) { + var retVal = new Date(this.valueOf()); + retVal.setMilliseconds(this.getMilliseconds() + Number(milliseconds)); + return retVal; + }; + + var _stoHandlers = {}; + + _stoHandlers.literal = function(sto, scope, eventInfo) { + return sto.value; + }; + + //need angle bracket syntax because var is a reserved word + _stoHandlers['var'] = function(sto, scope, eventInfo) { + // Can't us 'A || B' here, because the first value can be false, true, or empty string and still be valid. + var retVal = scope.hasOwnProperty(sto.name) ? scope[sto.name] : $ax.globalVariableProvider.getVariableValue(sto.name, eventInfo); + // Handle desired type here? + + if(retVal && retVal.exprType) { + retVal = $ax.expr.evaluateExpr(retVal, eventInfo); + } + + if((sto.desiredType == 'int' || sto.desiredType == 'float')) { + var num = new Number(retVal); + retVal = isNaN(num.valueOf()) ? retVal : num; + } + + + return retVal; + }; + + //TODO: Perhaps repeaterId can be detirmined at generation, and stored in the sto info. + _stoHandlers.item = function(sto, scope, eventInfo, prop) { + prop = prop || (eventInfo.data ? 'data' : eventInfo.link ? 'url' : eventInfo.image ? 'img' : 'text'); + var id = sto.isTarget || !$ax.repeater.hasData(eventInfo.srcElement, sto.name) ? eventInfo.targetElement : eventInfo.srcElement; + return getData(eventInfo, id, sto.name, prop); + }; + + var getData = function(eventInfo, id, name, prop) { + var repeaterId = $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(id)); + var itemId = $ax.repeater.getItemIdFromElementId(id); + return $ax.repeater.getData(eventInfo, repeaterId, itemId, name, prop); + }; + + _stoHandlers.paren = function(sto, scope, eventInfo) { + return _evaluateSTO(sto.innerSTO, scope, eventInfo); + }; + + _stoHandlers.fCall = function(sto, scope, eventInfo) { + //TODO: [mas] handle required type + var thisObj = _evaluateSTO(sto.thisSTO, scope, eventInfo); + if(sto.thisSTO.desiredType == 'string' && sto.thisSTO.computedType != 'string') thisObj = thisObj.toString(); + + var args = []; + for(var i = 0; i < sto.arguments.length; i++) { + args[i] = _evaluateSTO(sto.arguments[i], scope, eventInfo); + } + var fn = (funcs.hasOwnProperty(sto.func) && funcs[sto.func]) || thisObj[sto.func]; + return fn.apply(thisObj, args); + }; + + _stoHandlers.propCall = function(sto, scope, eventInfo) { + //TODO: [mas] handle required type + if((sto.prop == 'url' || sto.prop == 'img') && sto.thisSTO.sto == 'item') return _stoHandlers.item(sto.thisSTO, scope, eventInfo, sto.prop); + var thisObj = _evaluateSTO(sto.thisSTO, scope, eventInfo); + var prop = thisObj[sto.prop] instanceof Function ? thisObj[sto.prop]() : thisObj[sto.prop]; + return prop; + }; + + var _binOps = {}; + _binOps['+'] = function(left, right) { + if(left instanceof Date) return addDayToDate(left, right); + if(right instanceof Date) return addDayToDate(right, left); + + var num = Number(left) + Number(right); + return isNaN(num) ? (String(left) + String(right)) : num; + }; + _binOps['-'] = function(left, right) { + if(left instanceof Date) return addDayToDate(left, -right); + return left - right; + }; + _binOps['*'] = function(left, right) { return Number(left) * Number(right); }; + _binOps['/'] = function(left, right) { return Number(left) / Number(right); }; + _binOps['%'] = function(left, right) { return Number(left) % Number(right); }; + _binOps['=='] = function(left, right) { return _getBool(left) == _getBool(right); }; + _binOps['!='] = function(left, right) { return _getBool(left) != _getBool(right); }; + _binOps['<'] = function(left, right) { return Number(left) < Number(right); }; + _binOps['<='] = function(left, right) { return Number(left) <= Number(right); }; + _binOps['>'] = function(left, right) { return Number(left) > Number(right); }; + _binOps['>='] = function(left, right) { return Number(left) >= Number(right); }; + _binOps['&&'] = function(left, right) { return _getBool(left) && _getBool(right); }; + _binOps['||'] = function(left, right) { return _getBool(left) || _getBool(right); }; + + // TODO: Move this to generic place to be used. + var addDayToDate = function(date, days) { + var retVal = new Date(date.valueOf()); + retVal.setDate(date.getDate() + days); + return retVal; + }; + + var _unOps = {}; + _unOps['+'] = function(arg) { return +arg; }; + _unOps['-'] = function(arg) { return -arg; }; + _unOps['!'] = function(arg) { return !_getBool(arg); }; + + _stoHandlers.binOp = function(sto, scope, eventInfo) { + var left = _evaluateSTO(sto.leftSTO, scope, eventInfo); + var right = _evaluateSTO(sto.rightSTO, scope, eventInfo); + return _binOps[sto.op](left, right); + }; + + _stoHandlers.unOp = function(sto, scope, eventInfo) { + var input = _evaluateSTO(sto.inputSTO, scope, eventInfo); + return _unOps[sto.op](input); + }; + + var _getBool = function(val) { + var lowerVal = val.toLowerCase ? val.toLowerCase() : val; + return lowerVal == "false" ? false : lowerVal == "true" ? true : val; + }; + $ax.getBool = _getBool; + + var _evaluateSTO = function(sto, scope, eventInfo) { + if(sto.sto == 'error') return undefined; + return _tryEscapeRichText(castSto(_stoHandlers[sto.sto](sto, scope, eventInfo), sto), eventInfo); + }; + $ax.evaluateSTO = _evaluateSTO; + + var castSto = function(val, sto) { + var type = sto.computedType || sto.desiredType; + if(type == 'string') val = String(val); + else if(type == 'date' && !(val instanceof Date)) val = new Date(val); + else if(type == 'int' || type == 'float') val = Number(val); + else if(type == 'bool') val = Boolean(val); + + return val; + }; + + var _tryEscapeRichText = function(text, eventInfo) { + return eventInfo.htmlLiteral ? _escapeRichText(text) : text; + }; + + var _escapeRichText = function(text) { + if(typeof (text) != 'string') return text; + + return text.replace('<', '<'); + }; +}); +//***** utils.temp.js *****// +// ******* Deep Copy ******** // +$axure.internal(function($ax) { + // TODO: [ben] Ah, infinite loops cause major issues here. Tried saving objects we've already hit, but that didn't seem to work (at least at my first shot). + // TODO: [ben] To continue from above, added a filter to filter out problem keys. Will need a better way of sorting this out eventually. + var _deepCopy = function (original, trackCopies, filter) { + if(trackCopies) { + var index = _getCopyIndex(original); + if(index != -1) return _originalToCopy[index][1]; + } + var isArray = original instanceof Array; + var isObject = !(original instanceof Function) && !(original instanceof Date) && (original instanceof Object); + if(!isArray && !isObject) return original; + var copy = isArray ? [] : { }; + if(trackCopies) _originalToCopy.push([original, copy]); + isArray ? deepCopyArray(original, trackCopies, copy, filter) : deepCopyObject(original, trackCopies, copy, filter); + return copy; + }; + $ax.deepCopy = _deepCopy; + + // Hacky way to copy event info. Copying dragInfo causes major issues due to infinite loops + // Hashmap doesn't map objects well. It just toStrings them, making them all the same key. This has to be slow... + var _originalToCopy = []; + var _getCopyIndex = function(original) { + for(var i = 0; i < _originalToCopy.length; i++) if(original === _originalToCopy[i][0]) return i; + return -1; + }; + + $ax.eventCopy = function(eventInfo) { + var copy = _deepCopy(eventInfo, true, ['dragInfo', 'elementQuery', 'obj']); + // reset the map. TODO: May need to reset elsewhere too, but this is the only way it's used currently + _originalToCopy = []; + + return copy; + }; + + var deepCopyArray = function(original, trackCopies, copy, filter) { + for(var i = 0; i < original.length; i++) { + copy[i] = _deepCopy(original[i], trackCopies, filter); + } + }; + + var deepCopyObject = function(original, trackCopies, copy, filter) { + for(var key in original) { + if(!original.hasOwnProperty(key)) continue; // Continue if the prop was not put there like a dictionary, but just a native part of the object + + if(filter && filter.indexOf[key] != -1) copy[key] = original[key]; // If that key is filtered out, skip recursion on it. + else copy[key] = _deepCopy(original[key], trackCopies, filter); + } + }; + + // Our implementation of splice because it is broken in IE8... + $ax.splice = function(array, startIndex, count) { + var retval = []; + if(startIndex >= array.length || startIndex < 0 || count == 0) return retval; + if(!count || startIndex + count > array.length) count = array.length - startIndex; + for(var i = 0; i < count; i++) retval[i] = array[startIndex + i]; + for(i = startIndex + count; i < array.length; i++) array[i - count] = array[i]; + for(i = 0; i < count; i++) array.pop(); + return retval; + }; +}); + + + +// ******* Flow Shape Links ******** // +$axure.internal(function($ax) { + + if(!$ax.document.configuration.linkFlowsToPages && !$ax.document.configuration.linkFlowsToPagesNewWindow) return; + + $(window.document).ready(function() { + $ax(function (dObj) { return ($ax.public.fn.IsVector(dObj.type) || $ax.public.fn.IsSnapshot(dObj.type)) && dObj.referencePageUrl; }).each(function (dObj, elementId) { + + var elementIdQuery = $('#' + elementId); + + if($ax.document.configuration.linkFlowsToPages && !$ax.event.HasClick(dObj)) { + elementIdQuery.css("cursor", "pointer"); + elementIdQuery.click(function() { + $ax.navigate({ + url: dObj.referencePageUrl, + target: "current", + includeVariables: true + }); + }); + } + + if($ax.document.configuration.linkFlowsToPagesNewWindow) { + $('#' + elementId + "_ref").append("
    "); + $('#' + elementId + "PagePopup").click(function() { + $ax.navigate({ + url: dObj.referencePageUrl, + target: "new", + includeVariables: true + }); + }); + } + }); + }); + +}); + +//***** variables.js *****// +// ******* GLOBAL VARIABLE PROVIDER ******** // +$axure.internal(function($ax) { + var _globalVariableValues = {}; + + var _globalVariableProvider = {}; + $ax.globalVariableProvider = _globalVariableProvider; + + var setVariableValue = function(variable, value, suppressBroadcast) { + if(!(value instanceof Object)) value = value.toString(); + + variable = variable.toLowerCase(); + _globalVariableValues[variable] = value; + + if(suppressBroadcast !== true) { + var varData = { + globalVarName: variable, + globalVarValue: value.toString() + }; + + $axure.messageCenter.postMessage('setGlobalVar', varData); + } + + //Post global var values only if pageData is loaded (suppresses exception which occurs when page loads) + if($ax.pageData) { + _postGlobalVarVals(); + } + }; + _globalVariableProvider.setVariableValue = setVariableValue; + + var getVariableValue = function(variable, eventInfo, ignoreDefaultsForLinkUrl) { + variable = variable.toLowerCase(); + if(_globalVariableValues[variable] !== undefined) { + //If this is for the GetLinkUrl function and + //the current value of the global variable is the same as the default defined in the document, don't return it + if(ignoreDefaultsForLinkUrl == true && $ax.document.globalVariables[variable] == _globalVariableValues[variable]) { + return null; + } + + return _globalVariableValues[variable]; + } + if($ax.document.globalVariables[variable] !== undefined) return ignoreDefaultsForLinkUrl == true ? null : $ax.document.globalVariables[variable]; + switch(variable) { + case "pagename": return $ax.pageData.page.name; + + case "now": return eventInfo.now; + case "gendate": return $ax.pageData.generationDate; + + case "dragx": return $ax.drag.GetDragX(); + case "dragy": return $ax.drag.GetDragY(); + case "totaldragx": return $ax.drag.GetTotalDragX(); + case "totaldragy": return $ax.drag.GetTotalDragY(); + case "dragtime": return $ax.drag.GetDragTime(); + + case "math": return Math; + case "date": return Date; + + case "window": return eventInfo && eventInfo.window; + case "this": return eventInfo && eventInfo.thiswidget && $ax.getWidgetInfo(eventInfo.thiswidget.elementId); + case "item": return (eventInfo && eventInfo.item && eventInfo.item.valid && eventInfo.item) || getVariableValue('targetitem', eventInfo, ignoreDefaultsForLinkUrl); + case "targetitem": return eventInfo && eventInfo.targetElement && $ax.getItemInfo(eventInfo.targetElement); + case "repeater": return eventInfo && eventInfo.repeater; + case "target": return eventInfo && eventInfo.targetElement && $ax.getWidgetInfo(eventInfo.targetElement); + case "cursor": return eventInfo && eventInfo.cursor; + default: + var gen = variable.substr(0, 3) == "gen"; + var date = gen ? $ax.pageData.generationDate : new Date(); + var prop = gen ? variable.substr(3) : variable; + switch(prop) { + case "day": return date.getDate(); + case "month": return date.getMonth() + 1; + case "monthname": return $ax.getMonthName(date.getMonth()); + case "dayofweek": return $ax.getDayOfWeek(date.getDay()); + case "year": return date.getFullYear(); + case "time": return date.toLocaleTimeString(); + case "hours": return date.getHours(); + case "minutes": return date.getMinutes(); + case "seconds": return date.getSeconds(); + default: return ''; + } + } + }; + _globalVariableProvider.getVariableValue = getVariableValue; + + var load = function() { + var csum = false; + + var query = (window.location.href.split("#")[1] || ''); //hash.substring(1); Firefox decodes this so & in variables breaks + if(query.length > 0) { + var vars = query.split("&"); + for(var i = 0; i < vars.length; i++) { + var pair = vars[i].split("="); + var varName = pair[0]; + var varValue = pair[1]; + if(varName) { + if(varName == 'CSUM') { + csum = true; + } else setVariableValue(varName, decodeURIComponent(varValue), true); + } + } + + if(!csum && query.length > 250) { + window.alert('Axure Warning: The variable values were too long to pass to this page.\n\nIf you are using IE, using Chrome or Firefox will support more data.'); + } + } + }; + + var getLinkUrl = function(baseUrl) { + var toAdd = ''; + var definedVariables = _getDefinedVariables(); + for(var i = 0; i < definedVariables.length; i++) { + var key = definedVariables[i]; + var val = getVariableValue(key, undefined, true); + if(val != null) { + if(toAdd.length > 0) toAdd += '&'; + toAdd += key + '=' + encodeURIComponent(val); + } + } + return toAdd.length > 0 ? baseUrl + ($axure.shouldSendVarsToServer() ? '?' : '#') + toAdd + "&CSUM=1" : baseUrl; + }; + _globalVariableProvider.getLinkUrl = getLinkUrl; + + var _getDefinedVariables = function() { + return $ax.pageData.variables; + }; + _globalVariableProvider.getDefinedVariables = _getDefinedVariables; + + var _postGlobalVarVals = function() { + var retVal = {}; + var definedVariables = _getDefinedVariables(); + for(var i = 0; i < definedVariables.length; i++) { + var key = definedVariables[i]; + var val = getVariableValue(key); + if(val != null) { + retVal[key] = val; + } + } + + $ax.messageCenter.postMessage('globalVariableValues', retVal); + }; + + $ax.messageCenter.addMessageListener(function(message, data) { + if(message == 'getGlobalVariables') { + _postGlobalVarVals(); + } else if(message == 'resetGlobalVariables') { + _globalVariableValues = {}; + _postGlobalVarVals(); + } + }); + + load(); +}); +//***** drag.js *****// +$axure.internal(function($ax) { + var widgetDragInfo = new Object(); + var _drag = {}; + $ax.drag = _drag; + + $ax.drag.GetWidgetDragInfo = function() { + return $.extend({}, widgetDragInfo); + }; + + $ax.drag.StartDragWidget = function(event, id) { + $ax.setjBrowserEvent(jQuery.Event(event)); + if(event.donotdrag) return; + + var x, y; + var tg; + if(IE_10_AND_BELOW) { + x = window.event.clientX + window.document.documentElement.scrollLeft + window.document.body.scrollLeft; + y = window.event.clientY + window.document.documentElement.scrollTop + window.document.body.scrollTop; + tg = window.event.srcElement; + } else { + if(event.changedTouches) { + x = event.changedTouches[0].pageX; + y = event.changedTouches[0].pageY; + } else { + x = event.pageX; + y = event.pageY; + event.preventDefault(); + } + tg = event.target; + } + + widgetDragInfo.hasStarted = false; + widgetDragInfo.widgetId = id; + widgetDragInfo.cursorStartX = x; + widgetDragInfo.cursorStartY = y; + widgetDragInfo.lastX = x; + widgetDragInfo.lastY = y; + widgetDragInfo.currentX = x; + widgetDragInfo.currentY = y; + + widgetDragInfo.movedWidgets = new Object(); + widgetDragInfo.startTime = (new Date()).getTime(); + widgetDragInfo.targetWidget = tg; + + var movedownName = IE_10_AND_BELOW && $ax.features.supports.windowsMobile ? + $ax.features.eventNames.mouseDownName : $ax.features.eventNames.mouseMoveName; + $ax.event.addEvent(document, movedownName, _dragWidget, true); + $ax.event.addEvent(document, $ax.features.eventNames.mouseUpName, _stopDragWidget, true); + +// if(IE && BROWSER_VERSION < 9) { +// if($ax.features.supports.windowsMobile) { +// window.document.attachEvent($ax.features.eventNames.mouseDownName, _dragWidget); +// window.document.attachEvent($ax.features.eventNames.mouseUpName, _stopDragWidget); +// } else { +// window.document.attachEvent('on' + $ax.features.eventNames.mouseMoveName, _dragWidget); +// window.document.attachEvent('on' + $ax.features.eventNames.mouseUpName, _stopDragWidget); +// } +// } else { +// window.document.addEventListener($ax.features.eventNames.mouseMoveName, _dragWidget, true); +// window.document.addEventListener($ax.features.eventNames.mouseUpName, _stopDragWidget, true); +// } + $ax.legacy.SuppressBubble(event); + }; + + var _dragWidget = function(event) { + $ax.setjBrowserEvent(jQuery.Event(event)); + + var x, y; + if(IE_10_AND_BELOW) { + x = window.event.clientX + window.document.documentElement.scrollLeft + window.document.body.scrollLeft; + y = window.event.clientY + window.document.documentElement.scrollTop + window.document.body.scrollTop; + } else { + if(event.changedTouches) { + x = event.changedTouches[0].pageX; + y = event.changedTouches[0].pageY; + //allow scroll (defaults) if only swipe events have cases and delta x is less than 5px and not blocking scrolling + var deltaX = x - widgetDragInfo.currentX; + var target = window.document.getElementById(widgetDragInfo.widgetId); + if($ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onDrag") || $ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onSwipeUp") || + $ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onSwipeDown") || (deltaX * deltaX) > 25 + || ($ax.document.configuration.preventScroll && $ax.legacy.GetScrollable(target) == window.document.body)) { + event.preventDefault(); + } + } else { + x = event.pageX; + y = event.pageY; + } + } + widgetDragInfo.xDelta = x - widgetDragInfo.currentX; + widgetDragInfo.yDelta = y - widgetDragInfo.currentY; + widgetDragInfo.lastX = widgetDragInfo.currentX; + widgetDragInfo.lastY = widgetDragInfo.currentY; + widgetDragInfo.currentX = x; + widgetDragInfo.currentY = y; + + widgetDragInfo.currentTime = (new Date()).getTime(); + + $ax.legacy.SuppressBubble(event); + + if(!widgetDragInfo.hasStarted) { + widgetDragInfo.hasStarted = true; + $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDragStart"); + + widgetDragInfo.oldBodyCursor = window.document.body.style.cursor; + window.document.body.style.cursor = 'move'; + var widget = window.document.getElementById(widgetDragInfo.widgetId); + widgetDragInfo.oldCursor = widget.style.cursor; + widget.style.cursor = 'move'; + } + + $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDrag"); + }; + + var _suppressClickAfterDrag = function(event) { + _removeSuppressEvents(); + + $ax.legacy.SuppressBubble(event); + }; + + var _removeSuppressEvents = function () { + if(IE_10_AND_BELOW) { + $ax.event.removeEvent(event.srcElement, 'click', _suppressClickAfterDrag, undefined, true); + $ax.event.removeEvent(widgetDragInfo.targetWidget, 'mousemove', _removeSuppressEvents, undefined, true); + } else { + $ax.event.removeEvent(document, "click", _suppressClickAfterDrag, true); + $ax.event.removeEvent(document, 'mousemove', _removeSuppressEvents, true); + } + }; + + var _stopDragWidget = function(event) { + $ax.setjBrowserEvent(jQuery.Event(event)); + + var tg; + + + var movedownName = IE_10_AND_BELOW && $ax.features.supports.windowsMobile ? + $ax.features.eventNames.mouseDownName : $ax.features.eventNames.mouseMoveName; + $ax.event.removeEvent(document, movedownName, _dragWidget, true); + $ax.event.removeEvent(document, $ax.features.eventNames.mouseUpName, _stopDragWidget, true); + + tg = IE_10_AND_BELOW ? window.event.srcElement : event.target; +// +// +// if(OLD_IE && BROWSER_VERSION < 9) { +// if($ax.features.supports.windowsMobile) { +// window.document.detachEvent($ax.features.eventNames.mouseDownName, _dragWidget); +// window.document.detachEvent($ax.features.eventNames.mouseUpName, _stopDragWidget); +// +// } else { +// window.document.detachEvent('on' + $ax.features.eventNames.mouseMoveName, _dragWidget); +// window.document.detachEvent('on' + $ax.features.eventNames.mouseUpName, _stopDragWidget); +// } +// tg = window.event.srcElement; +// } else { +// window.document.removeEventListener($ax.features.eventNames.mouseMoveName, _dragWidget, true); +// window.document.removeEventListener($ax.features.eventNames.mouseUpName, _stopDragWidget, true); +// tg = event.target; +// } + + if(widgetDragInfo.hasStarted) { + widgetDragInfo.currentTime = (new Date()).getTime(); + $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDragDrop"); + + if($ax.globalVariableProvider.getVariableValue('totaldragx') < -30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { + $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeLeft"); + } + + if($ax.globalVariableProvider.getVariableValue('totaldragx') > 30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { + $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeRight"); + } + + var totalDragY = $ax.globalVariableProvider.getVariableValue('totaldragy'); + if(totalDragY < -30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { + $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeUp"); + } + + if(totalDragY > 30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { + $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeDown"); + } + + window.document.body.style.cursor = widgetDragInfo.oldBodyCursor; + var widget = window.document.getElementById(widgetDragInfo.widgetId); + // It may be null if OnDragDrop filtered out the widget + if(widget != null) widget.style.cursor = widgetDragInfo.oldCursor; + + if(widgetDragInfo.targetWidget == tg && !event.changedTouches) { + // suppress the click after the drag on desktop browsers + if(IE_10_AND_BELOW && widgetDragInfo.targetWidget) { + $ax.event.addEvent(widgetDragInfo.targetWidget, 'click', _suppressClickAfterDrag, true, true); + $ax.event.addEvent(widgetDragInfo.targetWidget, "onmousemove", _removeSuppressEvents, true, true); + } else { + $ax.event.addEvent(document, "click", _suppressClickAfterDrag, true); + $ax.event.addEvent(document, "mousemove", _removeSuppressEvents, true); + + } +// +// +// if(IE && BROWSER_VERSION < 9 && widgetDragInfo.targetWidget) { +// widgetDragInfo.targetWidget.attachEvent("onclick", _suppressClickAfterDrag); +// widgetDragInfo.targetWidget.attachEvent("onmousemove", _removeSuppressEvents); +// } else { +// window.document.addEventListener("click", _suppressClickAfterDrag, true); +// window.document.addEventListener("mousemove", _removeSuppressEvents, true); +// } + } + } + + widgetDragInfo.hasStarted = false; + widgetDragInfo.movedWidgets = new Object(); + + return false; + }; + + $ax.drag.GetDragX = function() { + if(widgetDragInfo.hasStarted) return widgetDragInfo.xDelta; + return 0; + }; + + $ax.drag.GetDragY = function() { + if(widgetDragInfo.hasStarted) return widgetDragInfo.yDelta; + return 0; + }; + + $ax.drag.GetTotalDragX = function() { + if(widgetDragInfo.hasStarted) return widgetDragInfo.currentX - widgetDragInfo.cursorStartX; + return 0; + }; + + $ax.drag.GetTotalDragY = function() { + if(widgetDragInfo.hasStarted) return widgetDragInfo.currentY - widgetDragInfo.cursorStartY; + return 0; + }; + + $ax.drag.GetDragTime = function() { + if(widgetDragInfo.hasStarted) return widgetDragInfo.currentTime - widgetDragInfo.startTime; + return 600000; + }; + + // $ax.drag.GetCursorRectangles = function() { + // var rects = new Object(); + // rects.lastRect = new rect($ax.lastMouseLocation.x, $ax.lastMouseLocation.y, 1, 1); + // rects.currentRect = new rect($ax.mouseLocation.x, $ax.mouseLocation.y, 1, 1); + // return rects; + // }; + + // $ax.drag.GetWidgetRectangles = function(id) { + // var widget = window.document.getElementById(id); + // var rects = new Object(); + // rects.lastRect = new rect($ax.legacy.getAbsoluteLeft(widget), $ax.legacy.getAbsoluteTop(widget), Number($('#' + id).css('width').replace("px", "")), Number($('#' + id).css('height').replace("px", ""))); + // rects.currentRect = rects.lastRect; + // return rects; + // }; + + // $ax.drag.IsEntering = function(movingRects, targetRects) { + // return !movingRects.lastRect.IntersectsWith(targetRects.currentRect) && movingRects.currentRect.IntersectsWith(targetRects.currentRect); + // }; + + // $ax.drag.IsLeaving = function(movingRects, targetRects) { + // return movingRects.lastRect.IntersectsWith(targetRects.currentRect) && !movingRects.currentRect.IntersectsWith(targetRects.currentRect); + // }; + + // function IsOver(movingRects, targetRects) { + // return movingRects.currentRect.IntersectsWith(targetRects.currentRect); + // } + + // function IsNotOver(movingRects, targetRects) { + // return !IsOver(movingRects, targetRects); + // } + + $ax.drag.LogMovedWidgetForDrag = function (id, dragInfo) { + dragInfo = dragInfo || widgetDragInfo; + if(dragInfo.hasStarted) { + var containerIndex = id.indexOf('_container'); + if(containerIndex != -1) id = id.substring(0, containerIndex); + + // If state or other non-widget id, this should not be dragged, and should exit out to avoid exceptions. + if(!$obj(id)) return; + + var query = $ax('#' + id); + var x = query.left(); + var y = query.top(); + + var movedWidgets = dragInfo.movedWidgets; + if(!movedWidgets[id]) { + movedWidgets[id] = new Location(x, y); + } + } + }; + + var Location = function(x, y) { + this.x = x; + this.y = y; + }; + $ax.drag.location = Location; + + var Rectangle = $ax.drag.Rectangle = function(x, y, width, height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.right = x + width; + this.bottom = y + height; + }; + + Rectangle.prototype.IntersectsWith = function(rect) { + if(this.Invalid()) return false; + if(rect.length) { + for(var i = 0; i < rect.length; i++) if(!rect[i].Invalid && this.IntersectsWith(rect[i])) return true; + return false; + } + if(rect.Invalid()) return false; + return this.x < rect.right && this.right > rect.x && this.y < rect.bottom && this.bottom > rect.y; + }; + + Rectangle.prototype.Invalid = function() { + return this.x == -1 && this.y == -1 && this.width == -1 && this.height == -1; + }; + + Rectangle.prototype.Move = function(x, y) { + return new Rectangle(x, y, this.width, this.height); + }; +}); +//***** move.js *****// +$axure.internal(function($ax) { + var _move = {}; + $ax.move = _move; + + var widgetMoveInfo = {}; + //register and return move info, also create container for rootlayer if needed + $ax.move.PrepareForMove = function (id, x, y, to, options, jobj, rootLayer, skipContainerForRootLayer) { + var fixedInfo = jobj ? {} : $ax.dynamicPanelManager.getFixedInfo(id); + + var widget = $jobj(id); + var query = $ax('#' + id); + var isLayer = $ax.getTypeFromElementId(id) == $ax.constants.LAYER_TYPE; + if(!rootLayer) { + rootLayer = _move.getRootLayer(id); + if (rootLayer && !skipContainerForRootLayer) { + $ax.visibility.pushContainer(rootLayer, false); + if (isLayer) widget = $ax.visibility.applyWidgetContainer(id, true); + } + } + if (!jobj) jobj = widget; + + var horzProp = 'left'; + var vertProp = 'top'; + var horzX = to ? x - query.locRelativeIgnoreLayer(false) : x; + var vertY = to ? y - query.locRelativeIgnoreLayer(true) : y; + + if (fixedInfo.horizontal == 'right') { + horzProp = 'right'; + horzX = to ? $(window).width() - x - Number(jobj.css('right').replace('px', '')) - query.width() : -x; + var leftChanges = -horzX; + } else if(fixedInfo.horizontal == 'center') { + horzProp = 'margin-left'; + if (to) horzX = x - $(window).width() / 2; + } + + if (fixedInfo.vertical == 'bottom') { + vertProp = 'bottom'; + vertY = to ? $(window).height() - y - Number(jobj.css('bottom').replace('px', '')) - query.height() : -y; + var topChanges = -vertY; + } else if (fixedInfo.vertical == 'middle') { + vertProp = 'margin-top'; + if (to) vertY = y - $(window).height() / 2; + } + + //todo currently this always save the info, which is not needed for compound vector children and maybe some other cases + //let's optimize it later, only register if registerid is valid.. + widgetMoveInfo[id] = { + x: leftChanges === undefined ? horzX : leftChanges, + y: topChanges === undefined ? vertY : topChanges, + options: options + }; + + return { + horzX: horzX, + vertY: vertY, + horzProp: horzProp, + vertProp: vertProp, + rootLayer: rootLayer, + jobj: jobj + }; + }; + $ax.move.GetWidgetMoveInfo = function() { + return $.extend({}, widgetMoveInfo); + }; + + _move.getRootLayer = function (id) { + var isLayer = $ax.getTypeFromElementId(id) == $ax.constants.LAYER_TYPE; + var rootLayer = isLayer ? id : ''; + + var parentIds = $ax('#' + id).getParents(true, '*')[0]; + for(var i = 0; i < parentIds.length; i++) { + var parentId = parentIds[i]; + // Keep climbing up layers until you hit a non-layer. At that point you have your root layer + if($ax.public.fn.IsLayer($ax.getTypeFromElementId(parentId))) rootLayer = parentId; + else break; + } + + return rootLayer; + }; + + $ax.move.MoveWidget = function (id, x, y, options, to, animationCompleteCallback, shouldFire, jobj, skipOnMoveEvent) { + var moveInfo = $ax.move.PrepareForMove(id, x, y, to, options, jobj); + $ax.drag.LogMovedWidgetForDrag(id, options.dragInfo); + + var object = $obj(id); + if(object && $ax.public.fn.IsLayer(object.type)) { + var childrenIds = $ax.public.fn.getLayerChildrenDeep(id, true); + //don't push container when register moveinfo for child + if(!skipOnMoveEvent) { + for(var i = 0; i < childrenIds.length; i++) $ax.move.PrepareForMove(childrenIds[i], x, y, to, options, null, moveInfo.rootLayer, true); + } + } + + //if(!moveInfo) moveInfo = _getMoveInfo(id, x, y, to, options, jobj); + + jobj = moveInfo.jobj; + + _moveElement(id, options, animationCompleteCallback, shouldFire, jobj, moveInfo); + + if(skipOnMoveEvent) return; + $ax.event.raiseSyntheticEvent(id, "onMove"); + if(childrenIds) { + for(var i = 0; i < childrenIds.length; i++) $ax.event.raiseSyntheticEvent(childrenIds[i], 'onMove'); + } + }; + + var _moveElement = function (id, options, animationCompleteCallback, shouldFire, jobj, moveInfo){ + var cssStyles = {}; + + if(!$ax.dynamicPanelManager.isPercentWidthPanel($obj(id))) cssStyles[moveInfo.horzProp] = '+=' + moveInfo.horzX; + cssStyles[moveInfo.vertProp] = '+=' + moveInfo.vertY; + + // I don't think root layer is necessary anymore after changes to layer container structure. + // Wait to try removing it until more stable. + var rootLayer = moveInfo.rootLayer; + + var query = $addAll(jobj, id); + if(options.easing == 'none') { + query.animate(cssStyles, { duration: 0, queue: false }); + + if(rootLayer) $ax.visibility.popContainer(rootLayer, false); + if(animationCompleteCallback) animationCompleteCallback(); + //if this widget is inside a layer, we should just remove the layer from the queue + if(shouldFire) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); + } else { + var completeCount = query.length; + query.animate(cssStyles, { + duration: options.duration, easing: options.easing, queue: false, complete: function () { + completeCount--; + if(completeCount == 0 && rootLayer) $ax.visibility.popContainer(rootLayer, false); + if(animationCompleteCallback) animationCompleteCallback(); + if(shouldFire) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); + }}); + } + + // //moveinfo is used for moving 'with this' + // var moveInfo = new Object(); + // moveInfo.x = horzX; + // moveInfo.y = vertY; + // moveInfo.options = options; + // widgetMoveInfo[id] = moveInfo; + + + }; + + _move.nopMove = function(id, options) { + var moveInfo = new Object(); + moveInfo.x = 0; + moveInfo.y = 0; + moveInfo.options = {}; + moveInfo.options.easing = 'none'; + moveInfo.options.duration = 0; + widgetMoveInfo[id] = moveInfo; + + // Layer move using container now. + var obj = $obj(id); + if($ax.public.fn.IsLayer(obj.type)) if(options.onComplete) options.onComplete(); + + $ax.event.raiseSyntheticEvent(id, "onMove"); + }; + + //rotationDegree: total degree to rotate + //centerPoint: the center of the circular path + + + var _noRotateOnlyMove = function (id, moveDelta, rotatableMove, fireAnimationQueue, easing, duration, completionCallback) { + moveDelta.x += rotatableMove.x; + moveDelta.y += rotatableMove.y; + if (moveDelta.x == 0 && moveDelta.y == 0) { + if(fireAnimationQueue) { + $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.rotate); + $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); + } + } else { + $jobj(id).animate({ top: '+=' + moveDelta.y, left: '+=' + moveDelta.x }, { + duration: duration, + easing: easing, + queue: false, + complete: function () { + if(fireAnimationQueue) { + $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); + $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.rotate); + } + if (completionCallback) completionCallback(); + } + }); + } + } + + + _move.circularMove = function (id, degreeDelta, centerPoint, moveDelta, rotatableMove, resizeOffset, options, fireAnimationQueue, completionCallback, willDoRotation) { + var elem = $jobj(id); + if(!willDoRotation) elem = $addAll(elem, id); + + var moveInfo = $ax.move.PrepareForMove(id, moveDelta.x, moveDelta.y, false, options); + // If not rotating, still need to check moveDelta and may need to handle that. + if (degreeDelta === 0) { + _noRotateOnlyMove(id, moveDelta, rotatableMove, fireAnimationQueue, options.easing, options.duration, completionCallback); + return; + } + + var stepFunc = function(newDegree) { + var deg = newDegree - rotation.degree; + var widgetCenter = $ax.public.fn.getWidgetBoundingRect(id).centerPoint; + //console.log("widget center of " + id + " x " + widgetCenter.x + " y " + widgetCenter.y); + var widgetNewCenter = $axure.fn.getPointAfterRotate(deg, widgetCenter, centerPoint); + + // Start by getting the move not related to rotation, and make sure to update center point to move with it. + var ratio = deg / degreeDelta; + + var xdelta = (moveDelta.x + rotatableMove.x) * ratio; + var ydelta = (moveDelta.y + rotatableMove.y) * ratio; + if(resizeOffset) { + var resizeShift = {}; + resizeShift.x = resizeOffset.x * ratio; + resizeShift.y = resizeOffset.y * ratio; + $axure.fn.getPointAfterRotate(rotation.degree, resizeShift, { x: 0, y: 0 }); + xdelta += resizeShift.x; + ydelta += resizeShift.y; + } + centerPoint.x += xdelta; + centerPoint.y += ydelta; + + // Now for the move that is rotatable, it must be rotated + rotatableMove = $axure.fn.getPointAfterRotate(deg, rotatableMove, { x: 0, y: 0 }); + + // Now add in circular move to the mix. + xdelta += widgetNewCenter.x - widgetCenter.x; + ydelta += widgetNewCenter.y - widgetCenter.y; + + if(xdelta < 0) elem.css('left', '-=' + -xdelta); + else if(xdelta > 0) elem.css('left', '+=' + xdelta); + + if(ydelta < 0) elem.css('top', '-=' + -ydelta); + else if(ydelta > 0) elem.css('top', '+=' + ydelta); + }; + + var onComplete = function() { + if(fireAnimationQueue) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); + if(completionCallback) completionCallback(); + if(moveInfo.rootLayer) $ax.visibility.popContainer(moveInfo.rootLayer, false); + var isPercentWidthPanel = $ax.dynamicPanelManager.isPercentWidthPanel($obj(id)); + if(isPercentWidthPanel) { + $ax.dynamicPanelManager.updatePanelPercentWidth(id); + $ax.dynamicPanelManager.updatePanelContentPercentWidth(id); + } + if(elem.css('position') == 'fixed') { + if(!isPercentWidthPanel) elem.css('left', ''); + elem.css('top', ''); + } + }; + + var rotation = { degree: 0 }; + + if(!options.easing || options.easing === 'none' || options.duration <= 0) { + stepFunc(degreeDelta); + onComplete(); + } else { + $(rotation).animate({ degree: degreeDelta }, { + duration: options.duration, + easing: options.easing, + queue: false, + step: stepFunc, + complete: onComplete + }); + } + }; + + //rotate a widget by degree, center is 50% 50% + _move.rotate = function (id, degree, easing, duration, to, shouldFire, completionCallback) { + var currentDegree = _move.getRotationDegree(id); + if(to) degree = degree - currentDegree; + + if(degree === 0) { + if (shouldFire) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.rotate); + return; + } + + var query = $jobj(id); + var stepFunc = function(now) { + var degreeDelta = now - rotation.degree; + var newDegree = currentDegree + degreeDelta; + query.css($ax.public.fn.setTransformHowever("rotate(" + newDegree + "deg)")); + currentDegree = newDegree; + }; + + var onComplete = function() { + if(shouldFire) { + $ax.action.fireAnimationFromQueue($ax.public.fn.compoundIdFromComponent(id), $ax.action.queueTypes.rotate); + } + if(completionCallback) completionCallback(); + + $ax.annotation.adjustIconLocation(id); + }; + + var rotation = { degree: 0 }; + + + //if no animation, setting duration to 1, to prevent RangeError in rotation loops without animation + if(!easing || easing === 'none' || duration <= 0) { + stepFunc(degree); + onComplete(); + } else { + $(rotation).animate({ degree: degree }, { + duration: duration, + easing: easing, + queue: false, + step: stepFunc, + complete: onComplete + }); + } + }; + + _move.compoundRotateAround = function (id, degreeDelta, centerPoint, moveDelta, rotatableMove, resizeOffset, easing, duration, fireAnimationQueue, completionCallback) { + if (degreeDelta === 0) { + _noRotateOnlyMove($ax.public.fn.compoundIdFromComponent(id), moveDelta, rotatableMove, fireAnimationQueue, easing, duration, completionCallback, $ax.action.queueTypes.rotate); + return; + } + var elem = $jobj(id); + var rotation = { degree: 0 }; + + if (!easing || easing === 'none' || duration <= 0) { + duration = 1; + easing = 'linear'; //it doesn't matter anymore here... + } + + var originalWidth = Number(elem.css('width').replace('px', '')); + var originalHeight = Number(elem.css('height').replace('px', '')); + var originalLeft = Number(elem.css('left').replace('px', '')); + var originalTop = Number(elem.css('top').replace('px', '')); + + $(rotation).animate({ degree: degreeDelta }, { + duration: duration, + easing: easing, + queue: false, + step: function (newDegree) { + var transform = $ax.public.fn.transformFromElement(elem[0]); + var originalCenter = { x: originalLeft + 0.5 * originalWidth, y: originalTop + 0.5 * originalHeight}; + var componentCenter = { x: originalCenter.x + transform[4], y: originalCenter.y + transform[5] }; + var deg = newDegree - rotation.degree; + var ratio = deg / degreeDelta; + var xdelta = (moveDelta.x + rotatableMove.x) * ratio; + var ydelta = (moveDelta.y + rotatableMove.y) * ratio; + if (resizeOffset) { + var resizeShift = {}; + resizeShift.x = resizeOffset.x * ratio; + resizeShift.y = resizeOffset.y * ratio; + $axure.fn.getPointAfterRotate(rotation.degree, resizeShift, { x: 0, y: 0 }); + xdelta += resizeShift.x; + ydelta += resizeShift.y; + } + + var rotationMatrix = $ax.public.fn.rotationMatrix(deg); + var compositionTransform = $ax.public.fn.matrixMultiplyMatrix(rotationMatrix, + { m11: transform[0], m21: transform[1], m12: transform[2], m22: transform[3] }); + + //console.log("widget center of " + id + " x " + widgetCenter.x + " y " + widgetCenter.y); + var widgetNewCenter = $axure.fn.getPointAfterRotate(deg, componentCenter, centerPoint); + var newMatrix = $ax.public.fn.matrixString(compositionTransform.m11, compositionTransform.m21, compositionTransform.m12, compositionTransform.m22, + widgetNewCenter.x - originalCenter.x + xdelta, widgetNewCenter.y - originalCenter.y + ydelta); + elem.css($ax.public.fn.setTransformHowever(newMatrix)); + }, + complete: function () { + if (fireAnimationQueue) { + $ax.action.fireAnimationFromQueue(elem.parent()[0].id, $ax.action.queueTypes.rotate); + } + + if(completionCallback) completionCallback(); + } + }); + }; + + _move.getRotationDegreeFromElement = function(element) { + if(element == null) return NaN; + + var transformString = element.style['transform'] || + element.style['-o-transform'] || + element.style['-ms-transform'] || + element.style['-moz-transform'] || + element.style['-webkit-transform']; + + if(transformString) { + var rotateRegex = /rotate\(([-?0-9]+)deg\)/; + var degreeMatch = rotateRegex.exec(transformString); + if(degreeMatch && degreeMatch[1]) return parseFloat(degreeMatch[1]); + } + + if(window.getComputedStyle) { + var st = window.getComputedStyle(element, null); + } else { + console.log('rotation is not supported for ie 8 and below in this version of axure rp'); + return 0; + } + + var tr = st.getPropertyValue("transform") || + st.getPropertyValue("-o-transform") || + st.getPropertyValue("-ms-transform") || + st.getPropertyValue("-moz-transform") || + st.getPropertyValue("-webkit-transform"); + + if(!tr || tr === 'none') return 0; + var values = tr.split('(')[1]; + values = values.split(')')[0], + values = values.split(','); + + var a = values[0]; + var b = values[1]; + + var radians = Math.atan2(b, a); + if(radians < 0) { + radians += (2 * Math.PI); + } + + return radians * (180 / Math.PI); + }; + + _move.getRotationDegree = function(elementId) { + if($ax.public.fn.IsLayer($obj(elementId).type)) { + return $jobj(elementId).data('layerDegree'); + } + return _move.getRotationDegreeFromElement(document.getElementById(elementId)); + } +}); +//***** visibility.js *****// +$axure.internal(function($ax) { + var document = window.document; + var _visibility = {}; + $ax.visibility = _visibility; + + var _defaultHidden = {}; + var _defaultLimbo = {}; + + // ****************** Visibility and State Functions ****************** // + + var _isIdVisible = $ax.visibility.IsIdVisible = function(id) { + return $ax.visibility.IsVisible(window.document.getElementById(id)); + }; + + $ax.visibility.IsVisible = function(element) { + //cannot use css('visibility') because that gets the effective visiblity + //e.g. won't be able to set visibility on panels inside hidden panels + return element.style.visibility != 'hidden'; + }; + + $ax.visibility.SetIdVisible = function(id, visible) { + $ax.visibility.SetVisible(window.document.getElementById(id), visible); + // Hide lightbox if necessary + if(!visible) { + $jobj($ax.repeater.applySuffixToElementId(id, '_lightbox')).remove(); + $ax.flyoutManager.unregisterPanel(id, true); + } + }; + + var _setAllVisible = function(query, visible) { + for(var i = 0; i < query.length; i++) { + _visibility.SetVisible(query[i], visible); + } + } + + $ax.visibility.SetVisible = function (element, visible) { + //not setting display to none to optimize measuring + if(visible) { + if($(element).hasClass(HIDDEN_CLASS)) $(element).removeClass(HIDDEN_CLASS); + if($(element).hasClass(UNPLACED_CLASS)) $(element).removeClass(UNPLACED_CLASS); + element.style.display = ''; + element.style.visibility = 'inherit'; + } else { + element.style.display = 'none'; + element.style.visibility = 'hidden'; + } + }; + + var _setWidgetVisibility = $ax.visibility.SetWidgetVisibility = function (elementId, options) { + var visible = $ax.visibility.IsIdVisible(elementId); + // If limboed, just fire the next action then leave. + if(visible == options.value || _limboIds[elementId]) { + if(!_limboIds[elementId]) options.onComplete && options.onComplete(); + $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade); + return; + } + + options.containInner = true; + var query = $jobj(elementId); + var parentId = query.parent().attr('id'); + var axObj = $obj(elementId); + var preserveScroll = false; + var isPanel = $ax.public.fn.IsDynamicPanel(axObj.type); + var isLayer = $ax.public.fn.IsLayer(axObj.type); + if(!options.noContainer && (isPanel || isLayer)) { + //if dp has scrollbar, save its scroll position + if(isPanel && axObj.scrollbars != 'none') { + var shownState = $ax.dynamicPanelManager.getShownState(elementId); + preserveScroll = true; + //before hiding, try to save scroll location + if(!options.value && shownState) { + DPStateAndScroll[elementId] = { + shownId: shownState.attr('id'), + left: shownState.scrollLeft(), + top: shownState.scrollTop() + } + } + } + + _pushContainer(elementId, isPanel); + if(isPanel && !options.value) _tryResumeScrollForDP(elementId); + var complete = options.onComplete; + options.onComplete = function () { + if(complete) complete(); + _popContainer(elementId, isPanel); + //using containers stops mouseleave from firing on IE/Edge and FireFox + if(!options.value && $ax.event.mouseOverObjectId && (FIREFOX || $axure.browser.isEdge || IE)) { + var mouseOveredElement = $('#' + $ax.event.mouseOverObjectId); + if(mouseOveredElement && !mouseOveredElement.is(":visible")) { + var axObj = $obj($ax.event.mouseOverObjectId); + + if(($ax.public.fn.IsDynamicPanel(axObj.type) || $ax.public.fn.IsLayer(axObj.type)) && axObj.propagate) { + mouseOveredElement.trigger('mouseleave'); + } else mouseOveredElement.trigger('mouseleave.ixStyle'); + } + } + //after showing dp, restore the scoll position + if(isPanel && options.value) _tryResumeScrollForDP(elementId, true); + } + options.containerExists = true; + } + _setVisibility(parentId, elementId, options, preserveScroll); + + //set the visibility of the annotation box as well if it exists + var ann = document.getElementById(elementId + "_ann"); + if(ann) _visibility.SetVisible(ann, options.value); + + //set ref visibility for ref of flow shape, if that exists + var ref = document.getElementById(elementId + '_ref'); + if(ref) _visibility.SetVisible(ref, options.value); + }; + + var _setVisibility = function(parentId, childId, options, preserveScroll) { + var wrapped = $jobj(childId); + var completeTotal = 1; + var visible = $ax.visibility.IsIdVisible(childId); + + if(visible == options.value) { + options.onComplete && options.onComplete(); + $ax.action.fireAnimationFromQueue(childId, $ax.action.queueTypes.fade); + return; + } + + var child = $jobj(childId); + var size = options.size || (options.containerExists ? $(child.children()[0]) : child); + + var isIdFitToContent = $ax.dynamicPanelManager.isIdFitToContent(parentId); + //fade and resize won't work together when there is a container... but we still needs the container for fit to content DPs + var needContainer = options.easing && options.easing != 'none' && (options.easing != 'fade' || isIdFitToContent); + var cullPosition = options.cull ? options.cull.css('position') : ''; + var containerExists = options.containerExists; + + var isFullWidth = $ax.dynamicPanelManager.isPercentWidthPanel($obj(childId)); + + // If fixed fit to content panel, then we must set size on it. It will be size of 0 otherwise, because container in it is absolute position. + var needSetSize = false; + var sizeObj = {}; + if(needContainer) { + var sizeId = ''; + if($ax.dynamicPanelManager.isIdFitToContent(childId)) sizeId = childId; + else { + var panelId = $ax.repeater.removeSuffixFromElementId(childId); + if($ax.dynamicPanelManager.isIdFitToContent(panelId)) sizeId = panelId; + } + + if(sizeId) { + needSetSize = true; + + sizeObj = $jobj(sizeId); + var newSize = options.cull || sizeObj; + var newAxSize = $ax('#' + newSize.attr('id')); + sizeObj.width(newAxSize.width()); + sizeObj.height(newAxSize.height()); + } + } + + var wrappedOffset = { left: 0, top: 0 }; + var visibleWrapped = wrapped; + if(needContainer) { + var childObj = $obj(childId); + if (options.cull) { + var axCull = $ax('#' + options.cull.attr('id')); + var containerWidth = axCull.width(); + var containerHeight = axCull.height(); + } else { + if(childObj && ($ax.public.fn.IsLayer(childObj.type))) {// || childObj.generateCompound)) { + var boundingRectangle = $ax.public.fn.getWidgetBoundingRect(childId); + wrappedOffset.left = boundingRectangle.left; + wrappedOffset.top = boundingRectangle.top; + containerWidth = boundingRectangle.width; + containerHeight = boundingRectangle.height; + } else if (childObj && childObj.generateCompound) { + var image = $jobj(childId + '_img'); + containerWidth = $ax.getNumFromPx(image.css('width')); + containerHeight = $ax.getNumFromPx(image.css('height')); + wrappedOffset.left = $ax.getNumFromPx(image.css('left')); + wrappedOffset.top = $ax.getNumFromPx(image.css('top')); + } else { + containerWidth = $ax('#' + childId).width(); + containerHeight = $ax('#' + childId).height(); + } + } + + var containerId = $ax.visibility.applyWidgetContainer(childId); +// var container = _makeContainer(containerId, options.cull || boundingRectangle, isFullWidth, options.easing == 'flip', wrappedOffset, options.containerExists); + var container = _makeContainer(containerId, containerWidth, containerHeight, isFullWidth, options.easing == 'flip', wrappedOffset, options.containerExists); + + if(options.containInner) { + wrapped = _wrappedChildren(containerExists ? $(child.children()[0]) : child); + + // Filter for visibile wrapped children + visibleWrapped = []; + for (var i = 0; i < wrapped.length; i++) if($ax.visibility.IsVisible(wrapped[i])) visibleWrapped.push(wrapped[i]); + visibleWrapped = $(visibleWrapped); + + completeTotal = visibleWrapped.length; + if(!containerExists) container.prependTo(child); + + // Offset items if necessary + if(!containerExists && (wrappedOffset.left != 0 || wrappedOffset.top != 0)) { + for(var i = 0; i < wrapped.length; i++) { + var inner = $(wrapped[i]); + inner.css('left', $ax.getNumFromPx(inner.css('left')) - wrappedOffset.left); + inner.css('top', $ax.getNumFromPx(inner.css('top')) - wrappedOffset.top); + // Parent layer is now size 0, so have to have to use conatiner since it's the real size. + // Should we use container all the time? This may make things easier for fit panels too. + size = container; + } + } + } else if(!containerExists) container.insertBefore(child); + if(!containerExists) wrapped.appendTo(container); + + if (options.value && options.containInner) { + //has to set children first because flip to show needs children invisible + _setAllVisible(visibleWrapped, false); + _updateChildAlignment(childId); + _setAllVisible(child, true); + } + } + + var completeCount = 0; + var onComplete = function () { + completeCount++; + if (needContainer && completeCount == completeTotal) { + if ($ax.public.fn.isCompoundVectorHtml(container.parent()[0])) { + wrappedOffset.left = $ax.getNumFromPx(container.css('left')); + wrappedOffset.top = $ax.getNumFromPx(container.css('top')); + } + + if (options.containInner && !containerExists && (wrappedOffset.left != 0 || wrappedOffset.top != 0)) { + for (i = 0; i < wrapped.length; i++) { + inner = $(wrapped[i]); + //if ($ax.public.fn.isCompoundVectorComponentHtml(inner[0])) break; + inner.css('left', $ax.getNumFromPx(inner.css('left')) + wrappedOffset.left); + inner.css('top', $ax.getNumFromPx(inner.css('top')) + wrappedOffset.top); + } + } + + if(options.containInner && !options.value) { + _setAllVisible(child, false); + _setAllVisible(visibleWrapped, true); + } + + if(containerExists) { + if(!options.settingChild) container.css('position', 'relative;'); + } else { + wrapped.insertBefore(container); + container.remove(); + } + + if(childObj && $ax.public.fn.IsDynamicPanel(childObj.type) && window.modifiedDynamicPanleParentOverflowProp) { + child.css('overflow', 'hidden'); + window.modifiedDynamicPanleParentOverflowProp = false; + } + } + + if(options.value) _updateChildAlignment(childId); + + if(!needContainer || completeTotal == completeCount) { + if(options.cull) options.cull.css('position', cullPosition); + + if(needSetSize) { + sizeObj.css('width', 'auto'); + sizeObj.css('height', 'auto'); + } + + options.onComplete && options.onComplete(); + + if(options.fire) { + $ax.event.raiseSyntheticEvent(childId, options.value ? 'onShow' : 'onHide'); + $ax.action.fireAnimationFromQueue(childId, $ax.action.queueTypes.fade); + } + } + }; + + // Nothing actually being animated, all wrapped elements invisible + if(!visibleWrapped.length) { + if(!options.easing || options.easing == 'none') { + $ax.visibility.SetIdVisible(childId, options.value); + completeTotal = 1; + onComplete(); + } else { + window.setTimeout(function() { + completeCount = completeTotal - 1; + onComplete(); + },options.duration); + } + + return; + } + + if(!options.easing || options.easing == 'none') { + $ax.visibility.SetIdVisible(childId, options.value); + completeTotal = 1; + onComplete(); + } else if(options.easing == 'fade') { + if(options.value) { + if(preserveScroll) { + visibleWrapped.css('opacity', 0); + visibleWrapped.css('visibility', 'inherit'); + visibleWrapped.css('display', 'block'); + //was hoping we could just use fadein here, but need to set display before set scroll position + _tryResumeScrollForDP(childId); + visibleWrapped.animate({ opacity: 1 }, { + duration: options.duration, + easing: 'swing', + queue: false, + complete: function() { + $ax.visibility.SetIdVisible(childId, true); + visibleWrapped.css('opacity', ''); + onComplete(); + } + }); + } else { + // Can't use $ax.visibility.SetIdVisible, because we only want to set visible, we don't want to set display, fadeIn will handle that. + visibleWrapped.css('visibility', 'inherit'); + visibleWrapped.fadeIn({ + queue: false, + duration: options.duration, + complete: onComplete + }); + } + } else { + // Fading here is being strange... + visibleWrapped.animate({ opacity: 0 }, { duration: options.duration, easing: 'swing', queue: false, complete: function() { + $ax.visibility.SetIdVisible(childId, false); + visibleWrapped.css('opacity', ''); + + onComplete(); + }}); + } + } else if (options.easing == 'flip') { + //this container will hold + var trapScroll = _trapScrollLoc(childId); + var innerContainer = $('
    '); + innerContainer.attr('id', containerId + "_inner"); + innerContainer.data('flip', options.direction == 'left' || options.direction == 'right' ? 'y' : 'x'); + innerContainer.css({ + position: 'relative', + 'width': containerWidth, + 'height': containerHeight + }); + + innerContainer.appendTo(container); + wrapped.appendTo(innerContainer); + + if(childObj && $ax.public.fn.IsDynamicPanel(childObj.type)) var containerDiv = child; + else containerDiv = parentId ? $jobj(parentId) : child.parent(); + + completeTotal = 1; + var flipdegree; + + var originForUpOrDown = '100% ' + containerHeight / 2 + 'px'; + if(options.value) { + //options.value == true means in or show, note to get here, the element must be currently hidden to show, + // we need to first flip it +/- 90deg without animation (180 if we want to show the back of the flip) + switch(options.direction) { + case 'right': + case 'left': + _setRotateTransformation(innerContainer, _getRotateString(true, options.direction === 'right', options.showFlipBack)); + flipdegree = 'rotateY(0deg)'; + break; + case 'up': + case 'down': + innerContainer.css({ + '-webkit-transform-origin': originForUpOrDown, + '-ms-transform-origin': originForUpOrDown, + 'transform-origin': originForUpOrDown, + }); + _setRotateTransformation(innerContainer, _getRotateString(false, options.direction === 'up', options.showFlipBack)); + flipdegree = 'rotateX(0deg)'; + break; + } + + var onFlipShowComplete = function() { + var trapScroll = _trapScrollLoc(childId); + $ax.visibility.SetIdVisible(childId, true); + + wrapped.insertBefore(innerContainer); + innerContainer.remove(); + trapScroll(); + + onComplete(); + }; + + innerContainer.css({ + '-webkit-backface-visibility': 'hidden', + 'backface-visibility': 'hidden' + }); + + child.css({ + 'display': '', + 'visibility': 'inherit' + }); + + visibleWrapped.css({ + 'display': '', + 'visibility': 'inherit' + }); + + innerContainer.css({ + '-webkit-transition-duration': options.duration + 'ms', + 'transition-duration': options.duration + 'ms' + }); + + if(preserveScroll) _tryResumeScrollForDP(childId); + _setRotateTransformation(innerContainer, flipdegree, containerDiv, onFlipShowComplete, options.duration, true); + } else { //hide or out + switch(options.direction) { + case 'right': + case 'left': + flipdegree = _getRotateString(true, options.direction !== 'right', options.showFlipBack); + break; + case 'up': + case 'down': + //_setRotateTransformation(wrapped, 'rotateX(0deg)'); + innerContainer.css({ + '-webkit-transform-origin': originForUpOrDown, + '-ms-transform-origin': originForUpOrDown, + 'transform-origin': originForUpOrDown, + }); + flipdegree = _getRotateString(false, options.direction !== 'up', options.showFlipBack); + break; + } + + var onFlipHideComplete = function() { + var trapScroll = _trapScrollLoc(childId); + wrapped.insertBefore(innerContainer); + $ax.visibility.SetIdVisible(childId, false); + + innerContainer.remove(); + trapScroll(); + + onComplete(); + }; + + innerContainer.css({ + '-webkit-backface-visibility': 'hidden', + 'backface-visibility': 'hidden', + '-webkit-transition-duration': options.duration + 'ms', + 'transition-duration': options.duration + 'ms' + }); + + if(preserveScroll) _tryResumeScrollForDP(childId); + _setRotateTransformation(innerContainer, flipdegree, containerDiv, onFlipHideComplete, options.duration, true); + } + + trapScroll(); + } else { + // Because the move is gonna fire on annotation and ref too, need to update complete total + completeTotal = $addAll(visibleWrapped, childId).length; + if(options.value) { + _slideStateIn(childId, childId, options, size, false, onComplete, visibleWrapped, preserveScroll); + } else { + var tops = []; + var lefts = []; + for(var i = 0; i < visibleWrapped.length; i++) { + var currWrapped = $(visibleWrapped[i]); + + tops.push(fixAuto(currWrapped, 'top')); + lefts.push(fixAuto(currWrapped, 'left')); + } + + var onOutComplete = function () { + //bring back SetIdVisible on childId for hiding lightbox + $ax.visibility.SetIdVisible(childId, false); + for(i = 0; i < visibleWrapped.length; i++) { + currWrapped = $(visibleWrapped[i]); + $ax.visibility.SetVisible(currWrapped[0], false); + currWrapped.css('top', tops[i]); + currWrapped.css('left', lefts[i]); + } + onComplete(); + }; + _slideStateOut(size, childId, options, onOutComplete, visibleWrapped); + } + } + + // If showing, go through all rich text objects inside you, and try to redo alignment of them + if(options.value && !options.containInner) { + _updateChildAlignment(childId); + } + }; + + // IE/Safari are giving auto here instead of calculating to for us. May need to calculate this eventually, but for now we can assume auto === 0px for the edge case found + var fixAuto = function (jobj, prop) { + var val = jobj.css(prop); + return val == 'auto' ? '0px' : val; + }; + + var _getRotateString = function (y, neg, showFlipBack) { + // y means flip on y axis, or left/right, neg means flipping it left/down, and show back is for set panel state + // and will show the back of the widget (transparent) for the first half of a show, or second half of a hide. + return 'rotate' + (y ? 'Y' : 'X') + '(' + (neg ? '-' : '') + (showFlipBack ? 180 : IE ? 91 : 90) + 'deg)'; + } + + var _updateChildAlignment = function(childId) { + var descendants = $jobj(childId).find('.text'); + for(var i = 0; i < descendants.length; i++) $ax.style.updateTextAlignmentForVisibility(descendants[i].id); + }; + + var _wrappedChildren = function (child) { + return child.children(); + //var children = child.children(); + //var valid = []; + //for(var i = 0; i < children.length; i++) if($ax.visibility.IsVisible(children[i])) valid.push(children[i]); + //return $(valid); + }; + + var requestAnimationFrame = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || window.msRequestAnimationFrame || + function (callback) { + window.setTimeout(callback, 1000 / 60); + }; + + var _setRotateTransformation = function(elementsToSet, transformValue, elementParent, flipCompleteCallback, flipDurationMs, useAnimationFrame) { + if(flipCompleteCallback) { + //here we didn't use 'transitionend' event to fire callback + //when show/hide on one element, changing transition property will stop the event from firing + window.setTimeout(flipCompleteCallback, flipDurationMs); + } + + var trasformCss = { + '-webkit-transform': transformValue, + '-moz-transform': transformValue, + '-ms-transform': transformValue, + '-o-transform': transformValue, + 'transform': transformValue + }; + + if(useAnimationFrame) { + requestAnimationFrame(function() { + elementsToSet.css(trasformCss); + }); + } else elementsToSet.css(trasformCss); + + //when deal with dynamic panel, we need to set it's parent's overflow to visible to have the 3d effect + //NOTE: we need to set this back when both flips finishes in DP, to prevents one animation finished first and set this back + if(elementParent && elementParent.css('overflow') === 'hidden') { + elementParent.css('overflow', 'visible'); + window.modifiedDynamicPanleParentOverflowProp = true; + } + }; + + $ax.visibility.GetPanelState = function(id) { + var children = $ax.visibility.getRealChildren($jobj(id).children()); + for(var i = 0; i < children.length; i++) { + if(children[i].style && $ax.visibility.IsVisible(children[i])) return children[i].id; + } + return ''; + }; + + var containerCount = {}; + $ax.visibility.SetPanelState = function(id, stateId, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn, showWhenSet) { + var show = !$ax.visibility.IsIdVisible(id) && showWhenSet; + if(show) $ax.visibility.SetIdVisible(id, true); + + // Exit here if already at desired state. + if($ax.visibility.IsIdVisible(stateId)) { + if(show) { + $ax.event.raiseSyntheticEvent(id, 'onShow'); + // If showing size changes and need to update parent panels + $ax.dynamicPanelManager.fitParentPanel(id); + } + + $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.setState); + return; + } + + _pushContainer(id, true); + + var state = $jobj(stateId); + var oldStateId = $ax.visibility.GetPanelState(id); + var oldState = $jobj(oldStateId); + //pin to browser + $ax.dynamicPanelManager.adjustFixed(id, oldState.width(), oldState.height(), state.width(), state.height()); + + _bringPanelStateToFront(id, stateId, oldStateId, easingIn == 'none' || durationIn == '0'); + + var fitToContent = $ax.dynamicPanelManager.isIdFitToContent(id); + var resized = false; + if(fitToContent) { + // Set resized + resized = state.width() != oldState.width() || state.height() != oldState.height(); + } + + //edge case for sliding + var movement = (directionOut == 'left' || directionOut == 'up' || state.children().length == 0) && oldState.children().length != 0 ? oldState : state; + var onCompleteCount = 0; + var onComplete = function () { + //move this call from _setVisibility() for animate out. + //Because this will make the order of dp divs consistence: the showing panel is always in front after both animation finished + //tested in the cases where one panel is out/show slower/faster/same time/instantly. + _bringPanelStateToFront(id, stateId, oldStateId, false); + + if (window.modifiedDynamicPanleParentOverflowProp) { + var parent = id ? $jobj(id) : child.parent(); + parent.css('overflow', 'hidden'); + window.modifiedDynamicPanleParentOverflowProp = false; + } + + $ax.dynamicPanelManager.fitParentPanel(id); + $ax.dynamicPanelManager.updatePanelPercentWidth(id); + $ax.dynamicPanelManager.updatePanelContentPercentWidth(id); + $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.setState); + $ax.event.raiseSyntheticEvent(id, "onPanelStateChange"); + $ax.event.leavingState(oldStateId); + _popContainer(id, true); + }; + // Must do state out first, so if we cull by new state, location is correct + _setVisibility(id, oldStateId, { + value: false, + easing: easingOut, + direction: directionOut, + duration: durationOut, + containerExists: true, + onComplete: function() { +// if(easingIn !== 'flip') _bringPanelStateToFront(id, stateId); + if (++onCompleteCount == 2) onComplete(); + }, + settingChild: true, + size: movement, + //cull for + cull: easingOut == 'none' || state.children().length == 0 ? oldState : state, + showFlipBack: true + }); + + _setVisibility(id, stateId, { + value: true, + easing: easingIn, + direction: directionIn, + duration: durationIn, + containerExists: true, + onComplete: function () { +// if (easingIn === 'flip') _bringPanelStateToFront(id, stateId); + if (++onCompleteCount == 2) onComplete(); + }, + settingChild: true, + //size for offset + size: movement, + showFlipBack: true + }); + + if(show) $ax.event.raiseSyntheticEvent(id, 'onShow'); + if(resized) $ax.event.raiseSyntheticEvent(id, 'onResize'); + }; + + var containedFixed = {}; + var _pushContainer = _visibility.pushContainer = function(id, panel) { + var count = containerCount[id]; + if(count) containerCount[id] = count + 1; + else { + var trapScroll = _trapScrollLoc(id); + var jobj = $jobj(id); + var children = jobj.children(); + var css = { + position: 'relative', + top: 0, + left: 0 + }; + + if(!panel) { + var boundingRect = $axure.fn.getWidgetBoundingRect(id); + css.top = boundingRect.top; + css.left = boundingRect.left; + } + + var container = $('
    '); + container.attr('id', ''); // Placeholder id, so we won't try to recurse the container until it is ready + container.css(css); + //container.append(jobj.children()); + jobj.append(container); + containerCount[id] = 1; + + // Panel needs to wrap children + if(panel) { + for(var i = 0; i < children.length; i++) { + var child = $(children[i]); + var childContainer = $('
    '); + childContainer.attr('id', $ax.visibility.applyWidgetContainer(child.attr('id'))); + childContainer.css(css); + child.after(childContainer); + childContainer.append(child); + container.append(childContainer); + } + } else { + var focus = _getCurrFocus(); + if(focus) $ax.event.addSuppressedEvent($ax.repeater.removeSuffixFromElementId(focus), 'OnLostFocus'); + + // Layer needs to fix top left + var childIds = $ax('#' + id).getChildren()[0].children; + for(var i = 0; i < childIds.length; i++) { + var childId = childIds[i]; + var childObj = $jobj(childId); + var fixedInfo = $ax.dynamicPanelManager.getFixedInfo(childId); + if(fixedInfo.fixed) { + var axObj = $ax('#' + childId); + var left = axObj.left(); + var top = axObj.top(); + containedFixed[childId] = { left: left, top: top, fixed: fixedInfo }; + childObj.css('left', left); + childObj.css('top', top); + childObj.css('margin-left', 0); + childObj.css('margin-top', 0); + childObj.css('right', 'auto'); + childObj.css('bottom', 'auto'); + childObj.css('position', 'absolute'); + } + var cssChange = { + left: '-=' + css.left, + top: '-=' + css.top + }; + if($ax.getTypeFromElementId(childId) == $ax.constants.LAYER_TYPE) { + _pushContainer(childId, false); + $ax.visibility.applyWidgetContainer(childId, true).css(cssChange); + } else { + //if ($ax.public.fn.isCompoundVectorHtml(jobj[0])) { + // var grandChildren = jobj[0].children; + // //while (grandChildren.length > 0 && grandChildren[0].id.indexOf('container') >= 0) grandChildren = grandChildren[0].children; + + // for (var j = 0; j < grandChildren.length; j++) { + // var grandChildId = grandChildren[j].id; + // if (grandChildId.indexOf(childId + 'p') >= 0 || grandChildId.indexOf('_container') >= 0) $jobj(grandChildId).css(cssChange); + // } + //} else + // Need to include ann and ref in move. + childObj = $addAll(childObj, childId); + childObj.css(cssChange); + } + + container.append(childObj); + } + _setCurrFocus(focus); + } + container.attr('id', $ax.visibility.applyWidgetContainer(id)); // Setting the correct final id for the container + trapScroll(); + } + }; + + var _popContainer = _visibility.popContainer = function (id, panel) { + var count = containerCount[id]; + if(!count) return; + count--; + containerCount[id] = count; + if(count != 0) return; + + var trapScroll = _trapScrollLoc(id); + + var jobj = $jobj(id); + var container = $ax.visibility.applyWidgetContainer(id, true); + + // If layer is at bottom or right of page, unwrapping could change scroll by temporarily reducting page size. + // To avoid this, we let container persist on page, with the size it is at this point, and don't remove container completely + // until the children are back to their proper locations. + var size = $ax('#' + id).size(); + container.css('width', size.width); + container.css('height', size.height); + var focus = _getCurrFocus(); + if(focus) $ax.event.addSuppressedEvent($ax.repeater.removeSuffixFromElementId(focus), 'OnLostFocus'); + jobj.append(container.children()); + _setCurrFocus(focus); + $('body').append(container); + + // Layer doesn't have children containers to clean up + if(panel) { + var children = jobj.children(); + for(var i = 0; i < children.length; i++) { + var childContainer = $(children[i]); + var child = $(childContainer.children()[0]); + childContainer.after(child); + childContainer.remove(); + } + } else { + var left = container.css('left'); + var top = container.css('top'); + var childIds = $ax('#' + id).getChildren()[0].children; + for (var i = 0; i < childIds.length; i++) { + var childId = childIds[i]; + var cssChange = { + left: '+=' + left, + top: '+=' + top + }; + if($ax.getTypeFromElementId(childId) == $ax.constants.LAYER_TYPE) { + $ax.visibility.applyWidgetContainer(childId, true).css(cssChange); + _popContainer(childId, false); + } else { + var childObj = $jobj(childId); + // if ($ax.public.fn.isCompoundVectorHtml(jobj[0])) { + // var grandChildren = jobj[0].children; + // //while (grandChildren.length > 0 && grandChildren[0].id.indexOf('container') >= 0) grandChildren = grandChildren[0].children; + // for (var j = 0; j < grandChildren.length; j++) { + // var grandChildId = grandChildren[j].id; + // if (grandChildId.indexOf(childId + 'p') >= 0 || grandChildId.indexOf('_container') >= 0) $jobj(grandChildId).css(cssChange); + // } + //} else + var allObjs = $addAll(childObj, childId); // Just include other objects for initial css. Fixed panels need to be dealt with separately. + allObjs.css(cssChange); + + var fixedInfo = containedFixed[childId]; + if(fixedInfo) { + delete containedFixed[childId]; + + childObj.css('position', 'fixed'); + var deltaX = $ax.getNumFromPx(childObj.css('left')) - fixedInfo.left; + var deltaY = $ax.getNumFromPx(childObj.css('top')) - fixedInfo.top; + + fixedInfo = fixedInfo.fixed; + if(fixedInfo.horizontal == 'left') childObj.css('left', fixedInfo.x + deltaX); + else if(fixedInfo.horizontal == 'center') { + childObj.css('left', '50%'); + childObj.css('margin-left', fixedInfo.x + deltaX); + } else { + childObj.css('left', 'auto'); + childObj.css('right', fixedInfo.x - deltaX); + } + + if(fixedInfo.vertical == 'top') childObj.css('top', fixedInfo.y + deltaY); + else if(fixedInfo.vertical == 'middle') { + childObj.css('top', '50%'); + childObj.css('margin-top', fixedInfo.y + deltaY); + } else { + childObj.css('top', 'auto'); + childObj.css('bottom', fixedInfo.y - deltaY); + } + + $ax.dynamicPanelManager.updatePanelPercentWidth(childId); + $ax.dynamicPanelManager.updatePanelContentPercentWidth(childId); + + } + } + } + } + container.remove(); + trapScroll(); + }; + + var _trapScrollLoc = function(id) { + var locs = {}; + var states = $jobj(id).find('.panel_state'); + for(var i = 0; i < states.length; i++) { + var state = $(states[i]); + locs[state.attr('id')] = { x: state.scrollLeft(), y: state.scrollTop() }; + } + return function() { + for(var key in locs) { + var state = $jobj(key); + state.scrollLeft(locs[key].x); + state.scrollTop(locs[key].y); + } + }; + } + + var _getCurrFocus = function () { + // Only care about focused a tags and inputs + var id = window.lastFocusedClickable && window.lastFocusedClickable.id; + + if(!id) return id; + var jobj = $(window.lastFocusedClickable); + return jobj.is('a') || jobj.is('input') ? id : ''; + } + + var _setCurrFocus = function(id) { + if(id) { + // This is really just needed for IE, so if this causes issues on other browsers, try adding that check here + var trap = $ax.event.blockEvent($ax.repeater.removeSuffixFromElementId(id), 'OnFocus'); + window.setTimeout(function () { + $jobj(id).focus(); + trap(); + }, 0); + } + } + + //use this to save & restore DP's scroll position when show/hide + //key => dp's id (not state's id, because it seems we can change state while hiding) + //value => first state's id & scroll position + //we only need to store one scroll position for one DP, and remove the key after shown. + var DPStateAndScroll = {} + var _tryResumeScrollForDP = function (dpId, deleteId) { + var scrollObj = DPStateAndScroll[dpId]; + if(scrollObj) { + var shownState = document.getElementById(scrollObj.shownId); + if(scrollObj.left) shownState.scrollLeft = scrollObj.left; + if(scrollObj.top) shownState.scrollTop = scrollObj.top; + if(deleteId) delete DPStateAndScroll[dpId]; + } + }; +// var _makeContainer = function (containerId, rect, isFullWidth, isFlip, offset, containerExists) { + var _makeContainer = function (containerId, width, height, isFullWidth, isFlip, offset, containerExists) { + if(containerExists) var container = $jobj(containerId); + else { + container = $('
    '); + container.attr('id', containerId); + } + var css = { + position: 'absolute', + width: width, + height: height, + }; + + if(!containerExists) { + // If container exists, may be busy updating location. Will init and update it correctly. + css.top = offset.top; + css.left = offset.left; + } + + + if(isFlip) { + css.perspective = '800px'; + css.webkitPerspective = "800px"; + css.mozPerspective = "800px"; + } else css.overflow = 'hidden'; + + //perspective on container will give us 3d effect when flip + //if(!isFlip) css.overflow = 'hidden'; + + // Rect should be a jquery not axquery obj + //_getFixedCss(css, rect.$ ? rect.$() : rect, fixedInfo, isFullWidth); + + container.css(css); + return container; + }; + + var CONTAINER_SUFFIX = _visibility.CONTAINER_SUFFIX = '_container'; + var CONTAINER_INNER = CONTAINER_SUFFIX + '_inner'; + _visibility.getWidgetFromContainer = function(id) { + var containerIndex = id.indexOf(CONTAINER_SUFFIX); + if(containerIndex == -1) return id; + return id.substr(0, containerIndex) + id.substr(containerIndex + CONTAINER_SUFFIX.length); + }; + + // Apply container to widget id if necessary. + // returnJobj: True if you want the jquery object rather than id returned + // skipCheck: True if you want the query returned reguardless of container existing + // checkInner: True if inner container should be checked + _visibility.applyWidgetContainer = function (id, returnJobj, skipCheck, checkInner) { + // If container exists, just return (return query if requested) + if(id.indexOf(CONTAINER_SUFFIX) != -1) return returnJobj ? $jobj(id) : id; + + // Get desired id, and return it if query is not desired + var containerId = $ax.repeater.applySuffixToElementId(id, checkInner ? CONTAINER_INNER : CONTAINER_SUFFIX); + if(!returnJobj) return containerId; + + // If skipping check or container exists, just return innermost container requested + var container = $jobj(containerId); + if(skipCheck || container.length) return container; + // If inner container was not checked, then no more to check, return query for widget + if(!checkInner) return $jobj(id); + + // If inner container was checked, check for regular container still + container = $jobj($ax.repeater.applySuffixToElementId(id, CONTAINER_SUFFIX)); + return container.length ? container : $jobj(id); + }; + + _visibility.isContainer = function(id) { + return id.indexOf(CONTAINER_SUFFIX) != -1; + }; + + _visibility.getRealChildren = function(query) { + while(query.length && $(query[0]).attr('id').indexOf(CONTAINER_SUFFIX) != -1) query = query.children(); + return query; + }; + + var _getFixedCss = function(css, rect, fixedInfo, isFullWidth) { + // todo: **mas** make sure this is ok + if(fixedInfo.fixed) { + css.position = 'fixed'; + + if(fixedInfo.horizontal == 'left') css.left = fixedInfo.x; + else if(fixedInfo.horizontal == 'center') { + css.left = isFullWidth ? '0px' : '50%'; + css['margin-left'] = fixedInfo.x; + } else if(fixedInfo.horizontal == 'right') { + css.left = 'auto'; + css.right = fixedInfo.x; + } + + if(fixedInfo.vertical == 'top') css.top = fixedInfo.y; + else if(fixedInfo.vertical == 'middle') { + css.top = '50%'; + css['margin-top'] = fixedInfo.y; + } else if(fixedInfo.vertical == 'bottom') { + css.top = 'auto'; + css.bottom = fixedInfo.y; + } + } else { + css.left = Number(rect.css('left').replace('px', '')) || 0; + css.top = Number(rect.css('top').replace('px', '')) || 0; + } + }; + + var _slideStateOut = function (container, stateId, options, onComplete, jobj) { + var directionOut = options.direction; + var axObject = $ax('#' + container.attr('id')); + var width = axObject.width(); + var height = axObject.height(); + + if(directionOut == "right") { + $ax.move.MoveWidget(stateId, width, 0, options, false, onComplete, false, jobj, true); + } else if(directionOut == "left") { + $ax.move.MoveWidget(stateId, -width, 0, options, false, onComplete, false, jobj, true); + } else if(directionOut == "up") { + $ax.move.MoveWidget(stateId, 0, -height, options, false, onComplete, false, jobj, true); + } else if(directionOut == "down") { + $ax.move.MoveWidget(stateId, 0, height, options, false, onComplete, false, jobj, true); + } + }; + + var _slideStateIn = function (id, stateId, options, container, makePanelVisible, onComplete, jobj, preserveScroll) { + var directionIn = options.direction; + var axObject = $ax('#' +container.attr('id')); + var width = axObject.width(); + var height = axObject.height(); + + for(var i = 0; i < jobj.length; i++) { + var child = $(jobj[i]); + var oldTop = $ax.getNumFromPx(fixAuto(child, 'top')); + var oldLeft = $ax.getNumFromPx(fixAuto(child, 'left')); + if (directionIn == "right") { + child.css('left', oldLeft - width + 'px'); + } else if(directionIn == "left") { + child.css('left', oldLeft + width + 'px'); + } else if(directionIn == "up") { + child.css('top', oldTop + height + 'px'); + } else if(directionIn == "down") { + child.css('top', oldTop - height + 'px'); + } + } + + if (makePanelVisible) $ax.visibility.SetIdVisible(id, true); + for(i = 0; i < jobj.length; i++) $ax.visibility.SetVisible(jobj[i], true); + + if(preserveScroll) _tryResumeScrollForDP(id); + if(directionIn == "right") { + $ax.move.MoveWidget(stateId, width, 0, options, false, onComplete, false, jobj, true); + } else if(directionIn == "left") { + $ax.move.MoveWidget(stateId, -width, 0, options, false, onComplete, false, jobj, true); + } else if(directionIn == "up") { + $ax.move.MoveWidget(stateId, 0, -height, options, false, onComplete, false, jobj, true); + } else if(directionIn == "down") { + $ax.move.MoveWidget(stateId, 0, height, options, false, onComplete, false, jobj, true); + } + }; + + $ax.visibility.GetPanelStateId = function(dpId, index) { + var itemNum = $ax.repeater.getItemIdFromElementId(dpId); + var panelStateId = $ax.repeater.getScriptIdFromElementId(dpId) + '_state' + index; + return $ax.repeater.createElementId(panelStateId, itemNum); + }; + + $ax.visibility.GetPanelStateCount = function(id) { + return $ax.visibility.getRealChildren($jobj(id).children()).length; + }; + + var _bringPanelStateToFront = function (dpId, stateId, oldStateId, oldInFront) { + var panel = $jobj(dpId); + var frontId = oldInFront ? oldStateId : stateId; + if(containerCount[dpId]) { + frontId = $ax.visibility.applyWidgetContainer(frontId); + panel = $ax.visibility.applyWidgetContainer(dpId, true, false, true); + } + $jobj(frontId).appendTo(panel); + //when bring a panel to front, it will be focused, and the previous front panel should fire blur event if it's lastFocusedClickableSelector + //ie(currently 11) and firefox(currently 34) doesn't fire blur event, this is the hack to fire it manually + if((IE || FIREFOX) && window.lastFocusedClickable && $ax.event.getFocusableWidgetOrChildId(window.lastFocusedControl) == window.lastFocusedClickable.id) { + // Only need to do this if the currently focused widget is in the panel state that is being hidden. + if($jobj(oldStateId).find('#' + window.lastFocusedClickable.id.split('_')[0]).length) $(window.lastFocusedClickable).triggerHandler('blur'); + } + }; + + var _limboIds = _visibility.limboIds = {}; + // limboId's is a dictionary of id->true, essentially a set. + var _addLimboAndHiddenIds = $ax.visibility.addLimboAndHiddenIds = function(newLimboIds, newHiddenIds, query, skipRepeater) { + var limboedByMaster = {}; + for(var key in newLimboIds) { + if (!$ax.public.fn.IsReferenceDiagramObject($ax.getObjectFromElementId(key).type)) continue; + var ids = $ax.model.idsInRdoToHideOrLimbo(key); + for(var i = 0; i < ids.length; i++) limboedByMaster[ids[i]] = true; + } + + var hiddenByMaster = {}; + for(key in newHiddenIds) { + if (!$ax.public.fn.IsReferenceDiagramObject($ax.getObjectFromElementId(key).type)) continue; + ids = $ax.model.idsInRdoToHideOrLimbo(key); + for(i = 0; i < ids.length; i++) hiddenByMaster[ids[i]] = true; + } + + // Extend with children of rdos + newLimboIds = $.extend(newLimboIds, limboedByMaster); + newHiddenIds = $.extend(newHiddenIds, hiddenByMaster); + + // something is only visible if it's not hidden and limboed + query.each(function(diagramObject, elementId) { + // Rdos already handled, contained widgets are limboed by the parent, and sub menus should be ignored + if(diagramObject.isContained || $ax.public.fn.IsReferenceDiagramObject(diagramObject.type) || $ax.public.fn.IsTableCell(diagramObject.type) || $jobj(elementId).hasClass('sub_menu')) return; + if(diagramObject.type == 'table' && $jobj(elementId).parent().hasClass('ax_menu')) return; + if(skipRepeater) { + // Any item in a repeater should return + if($ax.getParentRepeaterFromElementIdExcludeSelf(elementId)) return; + } + + var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); + var shouldBeVisible = Boolean(!newLimboIds[scriptId] && !newHiddenIds[scriptId]); + var isVisible = Boolean(_isIdVisible(elementId)); + if(shouldBeVisible != isVisible) { + _setWidgetVisibility(elementId, { value: shouldBeVisible, noContainer: true }); + } + }); + + _limboIds = _visibility.limboIds = $.extend(_limboIds, newLimboIds); + + }; + + var _clearLimboAndHidden = $ax.visibility.clearLimboAndHidden = function(ids) { + _limboIds = _visibility.limboIds = {}; + }; + + $ax.visibility.clearLimboAndHiddenIds = function(ids) { + for(var i = 0; i < ids.length; i++) { + var scriptId = $ax.repeater.getScriptIdFromElementId(ids[i]); + delete _limboIds[scriptId]; + } + }; + + $ax.visibility.resetLimboAndHiddenToDefaults = function (query) { + if(!query) query = $ax('*'); + _clearLimboAndHidden(); + _addLimboAndHiddenIds(_defaultLimbo, _defaultHidden, query); + }; + + $ax.visibility.isScriptIdLimbo = function(scriptId) { + if(_limboIds[scriptId]) return true; + + var repeater = $ax.getParentRepeaterFromScriptId(scriptId); + if(!repeater) return false; + + var itemId = $ax.getItemIdsForRepeater(repeater)[0]; + return _limboIds[$ax.repeater.createElementId(scriptId, itemId)]; + } + + $ax.visibility.isElementIdLimboOrInLimboContainer = function (elementId) { + var parent = document.getElementById(elementId); + while(parent) { + var scriptId = $ax.repeater.getScriptIdFromElementId($(parent).attr('id')); + if(_limboIds[scriptId]) return true; + parent = parent.parentElement; + } + return false; + } + + $ax.visibility.initialize = function() { + // initialize initial visible states + $('.' + HIDDEN_CLASS).each(function (index, diagramObject) { + _defaultHidden[$ax.repeater.getScriptIdFromElementId(diagramObject.id)] = true; + }); + + $('.' + UNPLACED_CLASS).each(function (index, diagramObject) { + _defaultLimbo[$ax.repeater.getScriptIdFromElementId(diagramObject.id)] = true; + }); + + _addLimboAndHiddenIds(_defaultLimbo, _defaultHidden, $ax('*'), true); + }; + + _visibility.initRepeater = function(repeaterId) { + var html = $('
    '); + html.append($jobj(repeaterId + '_script').html()); + + html.find('.' + HIDDEN_CLASS).each(function (index, element) { + _defaultHidden[$ax.repeater.getScriptIdFromElementId(element.id)] = true; + }); + + html.find('.' + UNPLACED_CLASS).each(function (index, element) { + _defaultLimbo[$ax.repeater.getScriptIdFromElementId(element.id)] = true; + }); + } + + var HIDDEN_CLASS = _visibility.HIDDEN_CLASS = 'ax_default_hidden'; + var UNPLACED_CLASS = _visibility.UNPLACED_CLASS = 'ax_default_unplaced'; + +}); +//***** style.js *****// +$axure.internal(function($ax) { + var _style = {}; + $ax.style = _style; + + var _disabledWidgets = {}; + var _selectedWidgets = {}; + + // A table to cache the outerHTML of the _rtf elements before the rollover state is applied. + var _originalTextCache = {}; + // A table to exclude the normal style from adaptive overrides + var _shapesWithSetRichText = {}; + + // just a listing of shape ids + var _adaptiveStyledWidgets = {}; + + var _setLinkStyle = function(id, styleName) { + var parentId = $ax.GetParentIdFromLink(id); + var style = _computeAllOverrides(id, parentId, styleName, $ax.adaptive.currentViewId); + + var textId = $ax.GetTextPanelId(parentId); + if(!_originalTextCache[textId]) { + $ax.style.CacheOriginalText(textId); + } + if($.isEmptyObject(style)) return; + + var textCache = _originalTextCache[textId].styleCache; + + _transformTextWithVerticalAlignment(textId, function() { + var cssProps = _getCssStyleProperties(style); + $('#' + id).find('*').andSelf().each(function(index, element) { + element.setAttribute('style', textCache[element.id]); + _applyCssProps(element, cssProps); + }); + }); + }; + + var _resetLinkStyle = function(id) { + var textId = $ax.GetTextPanelId($ax.GetParentIdFromLink(id)); + var textCache = _originalTextCache[textId].styleCache; + + _transformTextWithVerticalAlignment(textId, function() { + $('#' + id).find('*').andSelf().each(function(index, element) { + element.style.cssText = textCache[element.id]; + }); + }); + if($ax.event.mouseDownObjectId) { + $ax.style.SetWidgetMouseDown($ax.event.mouseDownObjectId, true); + } else if($ax.event.mouseOverObjectId) { + $ax.style.SetWidgetHover($ax.event.mouseOverObjectId, true); + } + }; + + $ax.style.SetLinkHover = function(id) { + _setLinkStyle(id, MOUSE_OVER); + }; + + $ax.style.SetLinkNotHover = function(id) { + _resetLinkStyle(id); + }; + + $ax.style.SetLinkMouseDown = function(id) { + _setLinkStyle(id, MOUSE_DOWN); + }; + + $ax.style.SetLinkNotMouseDown = function(id) { + _resetLinkStyle(id); + var style = _computeAllOverrides(id, $ax.event.mouseOverObjectId, MOUSE_OVER, $ax.adaptive.currentViewId); + + if(!$.isEmptyObject(style)) $ax.style.SetLinkHover(id); + //we dont do anything here because the widget not mouse down has taken over here + }; + + var _widgetHasState = function(id, state) { + if($ax.style.getElementImageOverride(id, state)) return true; + var diagramObject = $ax.getObjectFromElementId(id); + + var adaptiveIdChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); + + for(var i = 0; i < adaptiveIdChain.length; i++) { + var viewId = adaptiveIdChain[i]; + var adaptiveStyle = diagramObject.adaptiveStyles[viewId]; + if(adaptiveStyle && adaptiveStyle.stateStyles && adaptiveStyle.stateStyles[state]) return true; + } + + if(diagramObject.style.stateStyles) return diagramObject.style.stateStyles[state]; + + return false; + }; + + // Returns what overrides the hover, or false if nothing. + var _hoverOverride = function(id) { + if($ax.style.IsWidgetDisabled(id)) return DISABLED; + if($ax.style.IsWidgetSelected(id)) return SELECTED; + var obj = $ax.getObjectFromElementId(id); + if(!obj.isContained) return false; + var path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(id)); + path[path.length - 1] = obj.parent.id; + var itemId = $ax.repeater.getItemIdFromElementId(id); + return _hoverOverride($ax.getElementIdFromPath(path, { itemNum: itemId })); + }; + + $ax.style.SetWidgetHover = function(id, value) { + var override = _hoverOverride(id); + if(override == DISABLED) return; + if(!_widgetHasState(id, MOUSE_OVER)) return; + + var valToSet = value || _isRolloverOverride(id); + var state = _generateMouseState(id, valToSet ? MOUSE_OVER : NORMAL, override == SELECTED); + _applyImageAndTextJson(id, state); + _updateElementIdImageStyle(id, state); + }; + + var _rolloverOverrides = []; + var _isRolloverOverride = function(id) { + return _rolloverOverrides.indexOf(id) != -1; + }; + + $ax.style.AddRolloverOverride = function(id) { + if(_isRolloverOverride(id)) return; + _rolloverOverrides[_rolloverOverrides.length] = id; + if($ax.event.mouseOverIds.indexOf(id) == -1) $ax.style.SetWidgetHover(id, true); + }; + + $ax.style.RemoveRolloverOverride = function(id) { + var index = _rolloverOverrides.indexOf(id); + if(index == -1) return; + $ax.splice(_rolloverOverrides, index, 1); + if($ax.event.mouseOverIds.indexOf(id) == -1) $ax.style.SetWidgetHover(id, false); + }; + + // function GetWidgetCurrentState(id) { + // if($ax.style.IsWidgetDisabled(id)) return "disabled"; + // if($ax.style.IsWidgetSelected(id)) return "selected"; + // if($ax.event.mouseOverObjectId == id) return "mouseOver"; + // if($ax.event.mouseDownObjectId == id) return "mouseDown"; + + // return "normal"; + // } + + $ax.style.ObjHasMouseDown = function(id) { + var obj = $obj(id); + if($ax.style.getElementImageOverride(id, 'mouseDown') || obj.style && obj.style.stateStyles && obj.style.stateStyles.mouseDown) return true; + + var chain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); + for(var i = 0; i < chain.length; i++) { + var style = obj.adaptiveStyles[chain[i]]; + if(style && style.stateStyles && style.stateStyles.mouseDown) return true; + } + return false; + }; + + $ax.style.SetWidgetMouseDown = function(id, value, checkMouseOver) { + if($ax.style.IsWidgetDisabled(id)) return; + if(!_widgetHasState(id, MOUSE_DOWN)) return; + + //if set to value is true, it's mousedown, if check mouseover is true, + //check if element is currently mouseover and has mouseover state before setting mouseover + if(value) var state = MOUSE_DOWN; + else if(!checkMouseOver || $ax.event.mouseOverIds.indexOf(id) !== -1 && _widgetHasState(id, MOUSE_OVER)) state = MOUSE_OVER; + else state = NORMAL; + + var mouseState = _generateMouseState(id, state, $ax.style.IsWidgetSelected(id)); + _applyImageAndTextJson(id, mouseState); + _updateElementIdImageStyle(id, mouseState); + }; + + var _generateMouseState = function(id, mouseState, selected) { + if (selected) { + if (_style.getElementImageOverride(id, SELECTED)) return SELECTED; + + var viewChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); + viewChain[viewChain.length] = ''; + var obj = $obj(id); + if(obj.type == "dynamicPanel") return SELECTED; + + var any = function(dict) { + for(var key in dict) return true; + return false; + }; + + for(var i = 0; i < viewChain.length; i++) { + var viewId = viewChain[i]; + // Need to check seperately for images. + if(obj.adaptiveStyles && obj.adaptiveStyles[viewId] && any(obj.adaptiveStyles[viewId]) + || obj.images && obj.images['selected~' + viewId]) return SELECTED; + } + var selectedStyle = obj.style && obj.style.stateStyles && obj.style.stateStyles.selected; + if(selectedStyle && any(selectedStyle)) return SELECTED; + } + + // Not using selected + return mouseState; + }; + + $ax.style.SetWidgetSelected = function(id, value, alwaysApply) { + if(_isWidgetDisabled(id)) return; + //NOTE: not firing select events if state didn't change + var raiseSelectedEvents = $ax.style.IsWidgetSelected(id) != value; + + if(value) { + var group = $('#' + id).attr('selectiongroup'); + if(group) { + $("[selectiongroup='" + group + "']").each(function() { + var otherId = this.id; + if(otherId == id) return; + if ($ax.visibility.isScriptIdLimbo($ax.repeater.getScriptIdFromElementId(otherId))) return; + + $ax.style.SetWidgetSelected(otherId, false); + }); + } + } + var obj = $obj(id); + if(obj) { + var actionId = id; + if ($ax.public.fn.IsDynamicPanel(obj.type) || $ax.public.fn.IsLayer(obj.type)) { + if(!value) $jobj(id).removeClass('selected'); + var children = $axure('#' + id).getChildren()[0].children; + for(var i = 0; i < children.length; i++) { + var childId = children[i]; + // Special case for trees + var childObj = $jobj(childId); + if(childObj.hasClass('treeroot')) { + var treenodes = childObj.find('.treenode'); + for(var j = 0; j < treenodes.length; j++) { + $axure('#' + treenodes[j].id).selected(value); + } + } else $axure('#' + childId).selected(value); + } + } else { + var widgetHasSelectedState = _widgetHasState(id, SELECTED); + while(obj.isContained && !widgetHasSelectedState) obj = obj.parent; + var itemId = $ax.repeater.getItemIdFromElementId(id); + var path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(id)); + path[path.length - 1] = obj.id; + actionId = $ax.getElementIdFromPath(path, { itemNum: itemId }); + if(alwaysApply || widgetHasSelectedState) { + var state = _generateSelectedState(actionId, value); + _applyImageAndTextJson(actionId, state); + _updateElementIdImageStyle(actionId, state); + } + //added actionId and this hacky logic because we set style state on child, but interaction on parent + //then the id saved in _selectedWidgets would be depended on widgetHasSelectedState... more see case 1818143 + while(obj.isContained && !$ax.getObjectFromElementId(id).interactionMap) obj = obj.parent; + path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(id)); + path[path.length - 1] = obj.id; + actionId = $ax.getElementIdFromPath(path, { itemNum: itemId }); + } + } + + // ApplyImageAndTextJson(id, value ? 'selected' : 'normal'); + _selectedWidgets[id] = value; + if(raiseSelectedEvents) $ax.event.raiseSelectedEvents(actionId, value); + }; + + var _generateSelectedState = function(id, selected) { + var mouseState = $ax.event.mouseDownObjectId == id ? MOUSE_DOWN : $.inArray(id, $ax.event.mouseOverIds) != -1 ? MOUSE_OVER : NORMAL; + //var mouseState = $ax.event.mouseDownObjectId == id ? MOUSE_DOWN : $ax.event.mouseOverIds.indexOf(id) != -1 ? MOUSE_OVER : NORMAL; + return _generateMouseState(id, mouseState, selected); + }; + + $ax.style.IsWidgetSelected = function(id) { + return Boolean(_selectedWidgets[id]) || $('#'+id).hasClass('selected'); + }; + + $ax.style.SetWidgetEnabled = function(id, value) { + _disabledWidgets[id] = !value; + $('#' + id).find('a').css('cursor', value ? 'pointer' : 'default'); + + if(!_widgetHasState(id, DISABLED)) return; + if(!value) { + _applyImageAndTextJson(id, DISABLED); + _updateElementIdImageStyle(id, DISABLED); + } else $ax.style.SetWidgetSelected(id, $ax.style.IsWidgetSelected(id), true); + }; + + $ax.style.SetWidgetPlaceholder = function(id, value, text, password) { + var inputId = $ax.repeater.applySuffixToElementId(id, '_input'); + + // Right now this is the only style on the widget. If other styles (ex. Rollover), are allowed + // on TextBox/TextArea, or Placeholder is applied to more widgets, this may need to do more. + var obj = $jobj(inputId); + + var height = document.getElementById(inputId).style['height']; + var width = document.getElementById(inputId).style['width']; + obj.attr('style', ''); + //removing all styles, but now we can change the size, so we should add them back + //this is more like a quick hack + if (height) obj.css('height', height); + if (width) obj.css('width', width); + + if(!value) { + try { //ie8 and below error + if(password) document.getElementById(inputId).type = 'password'; + } catch(e) { } + } else { + var element = $('#' + inputId)[0]; + var style = _computeAllOverrides(id, undefined, HINT, $ax.adaptive.currentViewId); + var styleProperties = _getCssStyleProperties(style); + + //moved this out of GetCssStyleProperties for now because it was breaking un/rollovers with gradient fills + if(style.fill) styleProperties.allProps.backgroundColor = _getColorFromFill(style.fill); + + _applyCssProps(element, styleProperties, true); + try { //ie8 and below error + if(password) document.getElementById(inputId).type = 'text'; + } catch(e) { } + } + obj.val(text); + }; + + var _isWidgetDisabled = $ax.style.IsWidgetDisabled = function(id) { + return Boolean(_disabledWidgets[id]); + }; + + var _elementIdsToImageOverrides = {}; + $ax.style.mapElementIdToImageOverrides = function (elementId, override) { + for(var key in override) _addImageOverride(elementId, key, override[key]); + }; + + var _addImageOverride = function (elementId, state, val) { + if (!_elementIdsToImageOverrides[elementId]) _elementIdsToImageOverrides[elementId] = {}; + _elementIdsToImageOverrides[elementId][state] = val; + } + + $ax.style.deleteElementIdToImageOverride = function(elementId) { + delete _elementIdsToImageOverrides[elementId]; + }; + + $ax.style.getElementImageOverride = function(elementId, state) { + var url = _elementIdsToImageOverrides[elementId] && _elementIdsToImageOverrides[elementId][state]; + return url; + }; + + $ax.style.elementHasAnyImageOverride = function(elementId) { + return Boolean(_elementIdsToImageOverrides[elementId]); + }; + + var NORMAL = 'normal'; + var MOUSE_OVER = 'mouseOver'; + var MOUSE_DOWN = 'mouseDown'; + var SELECTED = 'selected'; + var DISABLED = 'disabled'; + var HINT = 'hint'; + + var _generateState = _style.generateState = function(id) { + return $ax.placeholderManager.isActive(id) ? HINT : _style.IsWidgetDisabled(id) ? DISABLED : _generateSelectedState(id, _style.IsWidgetSelected(id)); + }; + + var _progressState = _style.progessState = function(state) { + if(state == NORMAL) return false; + if(state == MOUSE_DOWN) return MOUSE_OVER; + return NORMAL; + }; + + var _unprogressState = function(state, goal) { + state = state || NORMAL; + if(state == goal) return undefined; + if(state == NORMAL && goal == MOUSE_DOWN) return MOUSE_OVER; + return goal; + }; + + var _updateElementIdImageStyle = _style.updateElementIdImageStyle = function(elementId, state) { + if(!_style.elementHasAnyImageOverride(elementId)) return; + + if(!state) state = _generateState(elementId); + + var style = _computeFullStyle(elementId, state, $ax.adaptive.currentViewId); + + var query = $jobj($ax.repeater.applySuffixToElementId(elementId, '_img')); + style.size.width = query.width(); + style.size.height = query.height(); + var borderId = $ax.repeater.applySuffixToElementId(elementId, '_border'); + var borderQuery = $jobj(borderId); + if(!borderQuery.length) { + borderQuery = $('
    '); + borderQuery.attr('id', borderId); + query.after(borderQuery); + } + + borderQuery.attr('style', ''); + borderQuery.css('position', 'absolute'); + query.attr('style', ''); + + var borderWidth = Number(style.borderWidth); + var hasBorderWidth = borderWidth > 0; + if(hasBorderWidth) { + borderQuery.css('border-style', 'solid'); + borderQuery.css('border-width', borderWidth + 'px'); // If images start being able to turn off borders on specific sides, need to update this. + borderQuery.css('width', style.size.width - borderWidth * 2); + borderQuery.css('height', style.size.height - borderWidth * 2); + } + + var linePattern = style.linePattern; + if(hasBorderWidth && linePattern) borderQuery.css('border-style', linePattern); + + var borderFill = style.borderFill; + if(hasBorderWidth && borderFill) { + var color = borderFill.fillType == 'solid' ? borderFill.color : + borderFill.fillType == 'linearGradient' ? borderFill.colors[0].color : 0; + + var alpha = Math.floor(color / 256 / 256 / 256); + color -= alpha * 256 * 256 * 256; + alpha = alpha / 255; + + var red = Math.floor(color / 256 / 256); + color -= red * 256 * 256; + var green = Math.floor(color / 256); + var blue = color - green * 256; + + borderQuery.css('border-color', _rgbaToFunc(red, green, blue, alpha)); + } + + var cornerRadiusTopLeft = style.cornerRadius; + if(cornerRadiusTopLeft) { + query.css('border-radius', cornerRadiusTopLeft + 'px'); + borderQuery.css('border-radius', cornerRadiusTopLeft + 'px'); + } + + var outerShadow = style.outerShadow; + if(outerShadow && outerShadow.on) { + var arg = ''; + arg += outerShadow.offsetX + 'px' + ' ' + outerShadow.offsetY + 'px' + ' '; + var rgba = outerShadow.color; + arg += outerShadow.blurRadius + 'px' + ' 0px ' + _rgbaToFunc(rgba.r, rgba.g, rgba.b, rgba.a); + query.css('-moz-box-shadow', arg); + query.css('-wibkit-box-shadow', arg); + query.css('box-shadow', arg); + query.css('left', '0px'); + query.css('top', '0px'); + } + + query.css({ width: style.size.width, height: style.size.height }); + }; + + var _rgbaToFunc = function(red, green, blue, alpha) { + return 'rgba(' + red + ',' + green + ',' + blue + ',' + alpha + ')'; + }; + + var _applyImageAndTextJson = function(id, event) { + var textId = $ax.GetTextPanelId(id, true); + if(textId) _resetTextJson(id, textId); + + // This should never be the case + //if(event != '') { + var imgQuery = $jobj($ax.GetImageIdFromShape(id)); + var e = imgQuery.data('events'); + if(e && e[event]) imgQuery.trigger(event); + + var imageUrl = $ax.adaptive.getImageForStateAndView(id, event); + if(imageUrl) _applyImage(id, imageUrl, event); + + var style = _computeAllOverrides(id, undefined, event, $ax.adaptive.currentViewId); + if(!$.isEmptyObject(style)) _applyTextStyle(textId, style); + + _updateStateClasses(id, event); + _updateStateClasses($ax.repeater.applySuffixToElementId(id, '_div'), event); + }; + + var _updateStateClasses = function(id, event) { + var jobj = $jobj(id); + + //if(jobj[0] && jobj[0].hasAttribute('widgetwidth')) { + // for (var x = 0; x < jobj[0].children.length; x++) { + // var childId = jobj[0].children[x].id; + // if (childId.indexOf('p') < 0) continue; + + // _updateStateClasses(childId, event) ; + // } + //} else { + for (var i = 0; i < ALL_STATES.length; i++) jobj.removeClass(ALL_STATES[i]); + if (event == 'mouseDown') jobj.addClass('mouseOver'); + if(event != 'normal') jobj.addClass(event); + //} + } + + /* ------------------- + + here's the algorithm in a nutshell: + [DOWN] -- refers to navigation down the view inheritance heirarchy (default to most specific) + [UP] -- navigate up the heirarchy + + ComputeAllOverrides (object): + All view styles [DOWN] + If hyperlink + - DO ComputeStateStyle for parent object + - if (MouseOver || MouseDown) + - linkMouseOver Style + - if (MouseDown) + - linkMouseDown style + - ComputeStateStyleForViewChain (parent, STATE) + + if (MouseDown) DO ComputeStateStyleForViewChain for object, mouseOver + DO ComputeStateStyleForViewChain for object, style + + + ComputeStateStyleForViewChain (object, STATE) + FIRST STATE state style [UP] the chain OR default object STATE style + + ------------------- */ + + var FONT_PROPS = { + 'typeface': true, + 'fontName': true, + 'fontWeight': true, + 'fontStyle': true, + 'fontStretch': true, + 'fontSize': true, + 'underline': true, + 'foreGroundFill': true, + 'horizontalAlignment': true + }; + + var _computeAllOverrides = $ax.style.computeAllOverrides = function(id, parentId, state, currentViewId) { + var computedStyle = {}; + if(parentId) computedStyle = _computeAllOverrides(parentId, null, state, currentViewId); + + var diagramObject = $ax.getObjectFromElementId(id); + var viewIdChain = $ax.adaptive.getAdaptiveIdChain(currentViewId); + + var excludeFont = _shapesWithSetRichText[id]; + for(var i = 0; i < viewIdChain.length; i++) { + var viewId = viewIdChain[i]; + var style = diagramObject.adaptiveStyles[viewId]; + if(style) { + // we want to exclude the normal font style for shapes where the rich text has been set with an interaction + // so we copy the style so we don't modify the original, then delete all the font props. + if(excludeFont) { + style = $ax.deepCopy(style); + for(var prop in FONT_PROPS) delete style[prop]; + } + + if(style) { + var customStyle = style.baseStyle && $ax.document.stylesheet.stylesById[style.baseStyle]; + //make sure not to extend the customStyle this can mutate it for future use + $.extend(computedStyle, customStyle); + } + $.extend(computedStyle, style); + } + } + + var currState = NORMAL; + while(currState) { + $.extend(computedStyle, _computeStateStyleForViewChain(diagramObject, currState, viewIdChain, true)); + currState = _unprogressState(currState, state); + } + + return _removeUnsupportedProperties(computedStyle, diagramObject.type); + }; + + var _computeStateStyleForViewChain = function(diagramObject, state, viewIdChain, excludeNormal) { + var styleObject = diagramObject; + while(styleObject.isContained) styleObject = styleObject.parent; + + var adaptiveStyles = styleObject.adaptiveStyles; + + for(var i = viewIdChain.length - 1; i >= 0; i--) { + var viewId = viewIdChain[i]; + var viewStyle = adaptiveStyles[viewId]; + var stateStyle = viewStyle && _getFullStateStyle(viewStyle, state, excludeNormal); + if(stateStyle) return $.extend({}, stateStyle); + } + + // we dont want to actually include the object style because those are not overrides, hence the true for "excludeNormal" and not passing the val through + var stateStyleFromDefault = _getFullStateStyle(styleObject.style, state, true); + return $.extend({}, stateStyleFromDefault); + }; + + // returns the full effective style for an object in a state state and view + var _computeFullStyle = function(id, state, currentViewId) { + var obj = $obj(id); + var overrides = _computeAllOverrides(id, undefined, state, currentViewId); + // todo: account for image box + var objStyle = obj.style; + var customStyle = objStyle.baseStyle && $ax.document.stylesheet.stylesById[objStyle.baseStyle]; + var returnVal = $.extend({}, $ax.document.stylesheet.defaultStyle, customStyle, objStyle, overrides); + return _removeUnsupportedProperties(returnVal, obj.type); + }; + + var _removeUnsupportedProperties = function(style, objectType) { + // for now all we need to do is remove padding from checkboxes and radio buttons + if ($ax.public.fn.IsRadioButton(objectType) || $ax.public.fn.IsCheckBox(objectType)) { + style.paddingTop = 0; + style.paddingLeft = 0; + style.paddingRight = 0; + style.paddingBottom = 0; + } + return style; + }; + + var _getFullStateStyle = function(style, state, excludeNormal) { + //'normal' is needed because now DiagramObjects get their image from the Style and unapplying a rollover needs the image + var stateStyle = state == 'normal' && !excludeNormal ? style : style && style.stateStyles && style.stateStyles[state]; + if(stateStyle) { + var customStyle = stateStyle.baseStyle && $ax.document.stylesheet.stylesById[stateStyle.baseStyle]; + //make sure not to extend the customStyle this can mutate it for future use + return $.extend({}, customStyle, stateStyle); + } + return undefined; + }; + + // commented this out for now... we actually will probably need it for ie + var _applyOpacityFromStyle = $ax.style.applyOpacityFromStyle = function(id, style) { + return; + var opacity = style.opacity || ''; + $jobj(id).children().css('opacity', opacity); + }; + + var _initialize = function() { + //being handled at on window.load + //$ax.style.initializeObjectTextAlignment($ax('*')); + }; + $ax.style.initialize = _initialize; + + var _initTextAlignment = function(elementId) { + var textId = $ax.GetTextPanelId(elementId); + if(textId) { + _storeIdToAlignProps(textId); + // now handle vertical alignment + if(_getObjVisible(textId)) { + _setTextAlignment(textId, _idToAlignProps[textId], false); + } + } + }; + + $ax.style.initializeObjectTextAlignment = function(query) { + query.filter(function(diagramObject) { + return $ax.public.fn.IsVector(diagramObject.type) || $ax.public.fn.IsImageBox(diagramObject.type); + }).each(function(diagramObject, elementId) { + if($jobj(elementId).length == 0) return; + _initTextAlignment(elementId); + }); + }; + + var _storeIdToAlignProps = function(textId) { + var shapeId = $ax.GetShapeIdFromText(textId); + var shapeObj = $obj(shapeId); + var state = _generateState(shapeId); + + var style = _computeFullStyle(shapeId, state, $ax.adaptive.currentViewId); + var vAlign = style.verticalAlignment || 'middle'; + + var paddingLeft = Number(style.paddingLeft) || 0; + paddingLeft += (Number(shapeObj && shapeObj.extraLeft) || 0); + var paddingTop = style.paddingTop || 0; + var paddingRight = style.paddingRight || 0; + var paddingBottom = style.paddingBottom || 0; + _idToAlignProps[textId] = { vAlign: vAlign, paddingLeft: paddingLeft, paddingTop: paddingTop, paddingRight: paddingRight, paddingBottom: paddingBottom }; + }; + + var ALL_STATES = ['mouseOver', 'mouseDown', 'selected', 'disabled']; + var _applyImage = $ax.style.applyImage = function (id, imgUrl, state) { + var object = $obj(id); + if (object.generateCompound) { + for (var i = 0; i < object.compoundChildren.length; i++) { + var componentId = object.compoundChildren[i]; + var childId = $ax.public.fn.getComponentId(id, componentId); + var childImgQuery = $jobj(childId + '_img'); + var childQuery = $jobj(childId); + childImgQuery.attr('src', imgUrl[componentId]); + for (var j = 0; j < ALL_STATES.length; j++) { + childImgQuery.removeClass(ALL_STATES[j]); + childQuery.removeClass(ALL_STATES[j]); + } + if (state != 'normal') { + childImgQuery.addClass(state); + childQuery.addClass(state); + } + } + } else { + var imgQuery = $jobj($ax.GetImageIdFromShape(id)); + var idQuery = $jobj(id); + //it is hard to tell if setting the image or the class first causing less flashing when adding shadows. + imgQuery.attr('src', imgUrl); + for (var i = 0; i < ALL_STATES.length; i++) { + idQuery.removeClass(ALL_STATES[i]); + imgQuery.removeClass(ALL_STATES[i]); + } + if (state != 'normal') { + idQuery.addClass(state); + imgQuery.addClass(state); + } + if (imgQuery.parents('a.basiclink').length > 0) imgQuery.css('border', 'none'); + if (imgUrl.indexOf(".png") > -1) $ax.utils.fixPng(imgQuery[0]); + } + + }; + + $ax.public.fn.getComponentId = function (id, componentId) { + var idParts = id.split('-'); + idParts[0] = idParts[0] + componentId; + return idParts.join('-'); + } + + var _resetTextJson = function(id, textid) { + // reset the opacity + $jobj(id).children().css('opacity', ''); + + var cacheObject = _originalTextCache[textid]; + if(cacheObject) { + _transformTextWithVerticalAlignment(textid, function() { + var styleCache = cacheObject.styleCache; + var textQuery = $('#' + textid); + textQuery.find('*').each(function(index, element) { + element.style.cssText = styleCache[element.id]; + }); + }); + } + }; + + // Preserves the alingment for the element textid after executing transformFn + + var _getRtfElementHeight = function(rtfElement) { + if(rtfElement.innerHTML == '') rtfElement.innerHTML = ' '; + + // To handle render text as image + var images = $(rtfElement).children('img'); + if(images.length) return images.height(); + return rtfElement.offsetHeight; + }; + + // why microsoft decided to default to round to even is beyond me... + var _roundToEven = function(number) { + var numString = number.toString(); + var parts = numString.split('.'); + if(parts.length == 1) return number; + if(parts[1].length == 1 && parts[1] == '5') { + var wholePart = Number(parts[0]); + return wholePart % 2 == 0 ? wholePart : wholePart + 1; + } else return Math.round(number); + }; + + var _transformTextWithVerticalAlignment = $ax.style.transformTextWithVerticalAlignment = function(textId, transformFn) { + if(!_originalTextCache[textId]) { + $ax.style.CacheOriginalText(textId); + } + + var rtfElement = window.document.getElementById(textId); + if(!rtfElement) return; + + transformFn(); + + _storeIdToAlignProps(textId); + + $ax.style.updateTextAlignmentForVisibility(textId); + }; + + // this is for vertical alignments set on hidden objects + var _idToAlignProps = {}; + + $ax.style.updateTextAlignmentForVisibility = function (textId) { + var textObj = $jobj(textId); + // must check if parent id exists. Doesn't exist for text objs in check boxes, and potentially elsewhere. + var parentId = textObj.parent().attr('id'); + if (parentId && $ax.visibility.isContainer(parentId)) return; + + var alignProps = _idToAlignProps[textId]; + if(!alignProps || !_getObjVisible(textId)) return; + + _setTextAlignment(textId, alignProps); + }; + + var _getObjVisible = _style.getObjVisible = function (id) { + var element = document.getElementById(id); + return element && (element.offsetWidth || element.offsetHeight); + }; + + var _setTextAlignment = function(textId, alignProps, updateProps) { + if(updateProps) _storeIdToAlignProps(textId); + if(!alignProps) return; + + var vAlign = alignProps.vAlign; + var paddingTop = Number(alignProps.paddingTop); + var paddingBottom = Number(alignProps.paddingBottom); + var paddingLeft = Number(alignProps.paddingLeft); + var paddingRight = Number(alignProps.paddingRight); + + var topParam = 0.0; + var bottomParam = 1.0; + var leftParam = 0.0; + var rightParam = 1.0; + + var textObj = $jobj(textId); + var textObjParent = textObj.offsetParent(); + var parentId = textObjParent.attr('id'); + var isConnector = false; + if(parentId) { + parentId = $ax.visibility.getWidgetFromContainer(textObjParent.attr('id')); + textObjParent = $jobj(parentId); + var parentObj = $obj(parentId); + if(parentObj['bottomTextPadding']) bottomParam = parentObj['bottomTextPadding']; + if(parentObj['topTextPadding']) topParam = parentObj['topTextPadding']; + if(parentObj['leftTextPadding']) leftParam = parentObj['leftTextPadding']; + if(parentObj['rightTextPadding']) rightParam = parentObj['rightTextPadding']; + + // smart shapes are mutually exclusive from compound vectors. + isConnector = parentObj.type == $ax.constants.CONNECTOR_TYPE; + } + if(isConnector) return; + + var axTextObjectParent = $ax('#' + textObjParent.attr('id')); + + var oldWidth = $ax.getNumFromPx(textObj.css('width')); + var oldLeft = $ax.getNumFromPx(textObj.css('left')); + var oldTop = $ax.getNumFromPx(textObj.css('top')); + + var newTop = 0; + var newLeft = 0.0; + + var width = axTextObjectParent.width(); + var height = axTextObjectParent.height(); + + // If text rotated need to handle getting the correct width for text based on bounding rect of rotated parent. + var boundingRotation = -$ax.move.getRotationDegreeFromElement(textObj[0]); + var boundingParent = $axure.fn.getBoundingSizeForRotate(width, height, boundingRotation); + var extraLeftPadding = (width - boundingParent.width) / 2; + width = boundingParent.width; + var relativeTop = 0.0; + relativeTop = height * topParam; + var containerHeight = height * bottomParam - relativeTop; + + + newLeft = paddingLeft + extraLeftPadding + width * leftParam; + + var newWidth = width * (rightParam - leftParam) - paddingLeft - paddingRight; + + var horizChange = newWidth != oldWidth || newLeft != oldLeft; + if(horizChange) { + textObj.css('left', newLeft); + textObj.width(newWidth); + } + + var textHeight = _getRtfElementHeight(textObj[0]); + + if(vAlign == "middle") newTop = _roundToEven(relativeTop + (containerHeight - textHeight + paddingTop - paddingBottom) / 2); + else if(vAlign == "bottom") newTop = _roundToEven(relativeTop + containerHeight - textHeight - paddingBottom); + else newTop = _roundToEven(paddingTop + relativeTop); + var vertChange = oldTop != newTop; + if(vertChange) textObj.css('top', newTop + 'px'); + + if((vertChange || horizChange)) _updateTransformOrigin(textId); + }; + + var _updateTransformOrigin = function(textId) { + var textObj = $jobj(textId); + var transformOrigin = textObj.css('-webkit-transform-origin') || + textObj.css('-moz-transform-origin') || + textObj.css('-ms-transform-origin') || + textObj.css('transform-origin'); + if(transformOrigin) { + var textObjParent = $ax('#' + textObj.parent().attr('id')); + var newX = (textObjParent.width() / 2 - textObj.css('left').replace('px', '')); + var newY = (textObjParent.height() / 2 - textObj.css('top').replace('px', '')); + var newOrigin = newX + 'px ' + newY + 'px'; + textObj.css('-webkit-transform-origin', newOrigin); + textObj.css('-moz-transform-origin', newOrigin); + textObj.css('-ms-transform-origin', newOrigin); + textObj.css('transform-origin', newOrigin); + } + }; + + $ax.style.reselectElements = function() { + for(var id in _selectedWidgets) { + // Only looking for the selected widgets that don't have their class set + if(!_selectedWidgets[id] || $jobj(id).hasClass('selected')) continue; + + $jobj(id).addClass('selected'); + _applyImageAndTextJson(id, $ax.style.generateState(id)); + } + + for(id in _disabledWidgets) { + // Only looking for the disabled widgets that don't have their class yet + if (!_disabledWidgets[id] || $jobj(id).hasClass('disabled')) continue; + + $jobj(id).addClass('disabled'); + _applyImageAndTextJson(id, $ax.style.generateState(id)); + } + } + + $ax.style.clearAdaptiveStyles = function() { + for(var shapeId in _adaptiveStyledWidgets) { + var repeaterId = $ax.getParentRepeaterFromScriptId(shapeId); + if(repeaterId) continue; + var elementId = $ax.GetButtonShapeId(shapeId); + if(elementId) _applyImageAndTextJson(elementId, $ax.style.generateState(elementId)); + } + + _adaptiveStyledWidgets = {}; + }; + + $ax.style.setAdaptiveStyle = function(shapeId, style) { + _adaptiveStyledWidgets[$ax.repeater.getScriptIdFromElementId(shapeId)] = style; + + var textId = $ax.GetTextPanelId(shapeId); + if(textId) _applyTextStyle(textId, style); + + $ax.placeholderManager.refreshPlaceholder(shapeId); + + // removing this for now + // if(style.location) { + // $jobj(shapeId).css('top', style.location.x + "px") + // .css('left', style.location.y + "px"); + // } + }; + + //------------------------------------------------------------------------- + // _applyTextStyle + // + // Applies a rollover style to a text element. + // id : the id of the text object to set. + // styleProperties : an object mapping style properties to values. eg: + // { 'fontWeight' : 'bold', + // 'fontStyle' : 'italic' } + //------------------------------------------------------------------------- + var _applyTextStyle = function(id, style) { + _transformTextWithVerticalAlignment(id, function() { + var styleProperties = _getCssStyleProperties(style); + $('#' + id).find('*').each(function(index, element) { + _applyCssProps(element, styleProperties); + }); + }); + }; + + var _applyCssProps = function(element, styleProperties, applyAllStyle) { + if(applyAllStyle) { + var allProps = styleProperties.allProps; + for(var prop in allProps) element.style[prop] = allProps[prop]; + } else { + var nodeName = element.nodeName.toLowerCase(); + if(nodeName == 'p') { + var parProps = styleProperties.parProps; + for(prop in parProps) element.style[prop] = parProps[prop]; + } else if(nodeName != 'a') { + var runProps = styleProperties.runProps; + for(prop in runProps) element.style[prop] = runProps[prop]; + } + } + }; + + var _getCssShadow = function(shadow) { + return !shadow.on ? "none" + : shadow.offsetX + "px " + shadow.offsetY + "px " + shadow.blurRadius + "px " + _getCssColor(shadow.color); + }; + + var _getCssStyleProperties = function(style) { + var toApply = {}; + toApply.runProps = {}; + toApply.parProps = {}; + toApply.allProps = {}; + + if(style.fontName) toApply.allProps.fontFamily = toApply.runProps.fontFamily = style.fontName; + // we need to set font size on both runs and pars because otherwise it well mess up the measure and thereby vertical alignment + if(style.fontSize) toApply.allProps.fontSize = toApply.runProps.fontSize = toApply.parProps.fontSize = style.fontSize; + if(style.fontWeight !== undefined) toApply.allProps.fontWeight = toApply.runProps.fontWeight = style.fontWeight; + if(style.fontStyle !== undefined) toApply.allProps.fontStyle = toApply.runProps.fontStyle = style.fontStyle; + if(style.underline !== undefined) toApply.allProps.textDecoration = toApply.runProps.textDecoration = style.underline ? 'underline' : 'none'; + if(style.foreGroundFill) { + toApply.allProps.color = toApply.runProps.color = _getColorFromFill(style.foreGroundFill); + //if(style.foreGroundFill.opacity) toApply.allProps.opacity = toApply.runProps.opacity = style.foreGroundFill.opacity; + } + if(style.horizontalAlignment) toApply.allProps.textAlign = toApply.parProps.textAlign = toApply.runProps.textAlign = style.horizontalAlignment; + if(style.lineSpacing) toApply.allProps.lineHeight = toApply.parProps.lineHeight = style.lineSpacing; + if(style.textShadow) toApply.allProps.textShadow = toApply.parProps.textShadow = _getCssShadow(style.textShadow); + + return toApply; + }; + + var _getColorFromFill = function(fill) { + //var fillString = '00000' + fill.color.toString(16); + //return '#' + fillString.substring(fillString.length - 6); + var val = fill.color; + var color = {}; + color.b = val % 256; + val = Math.floor(val / 256); + color.g = val % 256; + val = Math.floor(val / 256); + color.r = val % 256; + color.a = typeof (fill.opacity) == 'number' ? fill.opacity : 1; + return _getCssColor(color); + }; + + var _getCssColor = function(rgbaObj) { + return "rgba(" + rgbaObj.r + ", " + rgbaObj.g + ", " + rgbaObj.b + ", " + rgbaObj.a + ")"; + }; + + // //-------------------------------------------------------------------------- + // // ApplyStyleRecursive + // // + // // Applies a style recursively to all span and div tags including elementNode + // // and all of its children. + // // + // // element : the element to apply the style to + // // styleName : the name of the style property to set (eg. 'font-weight') + // // styleValue : the value of the style to set (eg. 'bold') + // //-------------------------------------------------------------------------- + // function ApplyStyleRecursive(element, styleName, styleValue) { + // var nodeName = element.nodeName.toLowerCase(); + + // if (nodeName == 'div' || nodeName == 'span' || nodeName == 'p') { + // element.style[styleName] = styleValue; + // } + + // for (var i = 0; i < element.childNodes.length; i++) { + // ApplyStyleRecursive(element.childNodes[i], styleName, styleValue); + // } + // } + + // //--------------------------------------------------------------------------- + // // ApplyTextProperty + // // + // // Applies a text property to rtfElement. + // // + // // rtfElement : the the root text element of the rtf object (this is the + // // element named _rtf + // // prop : the style property to set. + // // value : the style value to set. + // //--------------------------------------------------------------------------- + // function ApplyTextProperty(rtfElement, prop, value) { + // /* + // var oldHtml = rtfElement.innerHTML; + // if (prop == 'fontWeight') { + // rtfElement.innerHTML = oldHtml.replace(/< *b *\/?>/gi, ""); + // } else if (prop == 'fontStyle') { + // rtfElement.innerHTML = oldHtml.replace(/< *i *\/?>/gi, ""); + // } else if (prop == 'textDecoration') { + // rtfElement.innerHTML = oldHtml.replace(/< *u *\/?>/gi, ""); + // } + // */ + + // for (var i = 0; i < rtfElement.childNodes.length; i++) { + // ApplyStyleRecursive(rtfElement.childNodes[i], prop, value); + // } + // } + //} + + //--------------------------------------------------------------------------- + // GetAndCacheOriginalText + // + // Gets the html for the pre-rollover state and returns the Html representing + // the Rich text. + //--------------------------------------------------------------------------- + var CACHE_COUNTER = 0; + + $ax.style.CacheOriginalText = function(textId, hasRichTextBeenSet) { + var rtfQuery = $('#' + textId); + if(rtfQuery.length > 0) { + + var styleCache = {}; + rtfQuery.find('*').each(function(index, element) { + var elementId = element.id; + if(!elementId) element.id = elementId = 'cache' + CACHE_COUNTER++; + styleCache[elementId] = element.style.cssText; + }); + + _originalTextCache[textId] = { + styleCache: styleCache + }; + if(hasRichTextBeenSet) { + var shapeId = $ax.GetShapeIdFromText(textId); + _shapesWithSetRichText[shapeId] = true; + } + } + }; + + $ax.style.ClearCacheForRepeater = function(repeaterId) { + for(var elementId in _originalTextCache) { + var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); + if($ax.getParentRepeaterFromScriptId(scriptId) == repeaterId) delete _originalTextCache[elementId]; + } + }; + + + + $ax.style.prefetch = function() { + var scriptIds = $ax.getAllScriptIds(); + var image = new Image(); + for(var i = 0; i < scriptIds.length; i++) { + var obj = $obj(scriptIds[i]); + if (!$ax.public.fn.IsImageBox(obj.type)) continue; + var images = obj.images; + for (var key in images) image.src = images[key]; + + var imageOverrides = obj.imageOverrides; + for(var elementId in imageOverrides) { + var override = imageOverrides[elementId]; + for (var state in override) { + _addImageOverride(elementId, state, override[state]); + image.src = override[state]; + } + } + } + }; +}); +//***** adaptive.js *****// +$axure.internal(function($ax) { + $ax.adaptive = {}; + + $axure.utils.makeBindable($ax.adaptive, ["viewChanged"]); + + var _auto = true; + var _autoIsHandledBySidebar = false; + + var _views; + var _idToView; + var _enabledViews = []; + + var _initialViewToLoad; + var _initialViewSizeToLoad; + + var _loadFinished = false; + $ax.adaptive.loadFinished = function() { + if(_loadFinished) return; + _loadFinished = true; + if($ax.adaptive.currentViewId) $ax.viewChangePageAndMasters(); + else $ax.postAdaptiveViewChanged(); + }; + + var _handleResize = function(forceSwitchTo) { + if(!_auto) return; + if(_auto && _autoIsHandledBySidebar && !forceSwitchTo) return; + + var $window = $(window); + var height = $window.height(); + var width = $window.width(); + + var toView = _getAdaptiveView(width, height); + var toViewId = toView && toView.id; + + _switchView(toViewId, forceSwitchTo); + }; + + var _setAuto = $ax.adaptive.setAuto = function(val) { + if(_auto != val) { + _auto = Boolean(val); + } + }; + + var _setLineImage = function(id, imageUrl) { + var imageQuery = $jobj(id).attr('src', imageUrl); + if(imageUrl.indexOf(".png") > -1) $ax.utils.fixPng(imageQuery[0]); + }; + + var _switchView = function (viewId, forceSwitchTo) { + if(!$ax.pageData.isAdaptiveEnabled) return; + + var previousViewId = $ax.adaptive.currentViewId; + if(typeof previousViewId == 'undefined') previousViewId = ''; + if(typeof viewId == 'undefined') viewId = ''; + if (viewId == previousViewId) { + if(forceSwitchTo) $ax.postAdaptiveViewChanged(forceSwitchTo); + return; + } + + $ax('*').each(function(obj, elementId) { + if (!$ax.public.fn.IsTreeNodeObject(obj.type)) return; + if(!obj.hasOwnProperty('isExpanded')) return; + + var query = $ax('#' + elementId); + var defaultExpanded = obj.isExpanded; + + query.expanded(defaultExpanded); + }); + + // reset all the inline positioning from move and rotate actions including size and transformation + $axure('*').each(function (diagramObject, elementId) { + if(diagramObject.isContained) return; + if($ax.getParentRepeaterFromElementIdExcludeSelf(elementId)) return; + + var element = document.getElementById(elementId); + if(element) { + var resetCss = { + top: "", left: "", width: "", height: "", opacity: "", + transform: "", webkitTransform: "", MozTransform: "", msTransform: "", OTransform: "" + }; + var query = $(element); + query.css(resetCss); + var isPanel = $ax.public.fn.IsDynamicPanel(diagramObject.type); + if(!isPanel || diagramObject.fitToContent) { //keeps size on the panel states when switching adaptive views to optimize fit to panel + if(diagramObject.fitToContent) $ax.dynamicPanelManager.setFitToContentCss(elementId, true); + var children = query.children(); + if(children.length) children.css(resetCss); + } + + $ax.dynamicPanelManager.resetFixedPanel(diagramObject, element); + $ax.dynamicPanelManager.resetAdaptivePercentPanel(diagramObject, element); + } + }); + + $ax.adaptive.currentViewId = viewId; // we need to set this so the enabled and selected styles will apply properly + if(previousViewId) { + $ax.style.clearAdaptiveStyles(); + $('*').removeClass(previousViewId); + } else { + $ax.style.reselectElements(); + } + + $axure('*').each(function (obj, elementId) { + if($ax.getParentRepeaterFromElementIdExcludeSelf(elementId)) return; + + $ax.style.updateElementIdImageStyle(elementId); // When image override exists, fix styling/borders + }); + + // reset all the images only if we're going back to the default view + if(!viewId) { + _updateInputVisibility('', $axure('*')); + $axure('*').each(function (diagramObject, elementId) { + if($ax.getParentRepeaterFromElementIdExcludeSelf(elementId)) return; + + $ax.placeholderManager.refreshPlaceholder(elementId); + + var images = diagramObject.images; + if(diagramObject.type == 'horizontalLine' || diagramObject.type == 'verticalLine') { + var startImg = images['start~']; + _setLineImage(elementId + "_start", startImg); + var endImg = images['end~']; + _setLineImage(elementId + "_end", endImg); + var lineImg = images['line~']; + _setLineImage(elementId + "_line", lineImg); + } else if(diagramObject.type == $ax.constants.CONNECTOR_TYPE) { + _setAdaptiveConnectorImages(elementId, images, ''); + } else if(images) { + if (diagramObject.generateCompound) { + + if($ax.style.IsWidgetDisabled(elementId)) { + disabledImage = _getImageWithTag(images, 'disabled~'); + if(disabledImage) $ax.style.applyImage(elementId, disabledImage, 'disabled'); + return; + } + if($ax.style.IsWidgetSelected(elementId)) { + selectedImage = _getImageWithTag(images, 'selected~'); + if(selectedImage) $ax.style.applyImage(elementId, selectedImage, 'selected'); + return; + } + $ax.style.applyImage(elementId, _getImageWithTag(images, 'normal~')); + } else { + if ($ax.style.IsWidgetDisabled(elementId)) { + var disabledImage = $ax.style.getElementImageOverride(elementId, 'disabled') || images['disabled~']; + if (disabledImage) $ax.style.applyImage(elementId, disabledImage, 'disabled'); + return; + } + if ($ax.style.IsWidgetSelected(elementId)) { + var selectedImage = $ax.style.getElementImageOverride(elementId, 'selected') || images['selected~']; + if (selectedImage) $ax.style.applyImage(elementId, selectedImage, 'selected'); + return; + } + $ax.style.applyImage(elementId, $ax.style.getElementImageOverride(elementId, 'normal') || images['normal~']); + } + } + + //align all text + var child = $jobj(elementId).children('.text'); + if(child.length) $ax.style.transformTextWithVerticalAlignment(child[0].id, function() { }); + }); + // we have to reset visibility if we aren't applying a new view + $ax.visibility.resetLimboAndHiddenToDefaults(); + $ax.repeater.refreshAllRepeaters(); + $ax.dynamicPanelManager.updateParentsOfNonDefaultFitPanels(); + $ax.dynamicPanelManager.updatePercentPanelCache($ax('*')); + } else { + $ax.visibility.clearLimboAndHidden(); + _applyView(viewId); + $ax.repeater.refreshAllRepeaters(); + $ax.dynamicPanelManager.updateParentsOfNonDefaultFitPanels(); + } + + $ax.adaptive.triggerEvent('viewChanged', {}); + if(_loadFinished) $ax.viewChangePageAndMasters(forceSwitchTo); + }; + + var _getImageWithTag = function(image, tag) { + var flattened = {}; + for (var component in image) { + var componentImage = image[component][tag]; + if(componentImage) flattened[component] = componentImage; + } + return flattened; + } + + // gets if input is hidden due to sketch + var BORDER_WIDTH = "borderWidth"; + var COLOR_STYLE = "colorStyle"; + var SKETCH_FACTOR = "sketchFactor"; + var _areInputsHidden = function(viewId) { + var chain = _getAdaptiveIdChain(viewId); + var page = $ax.pageData.page; + var adaptiveStyles = page.adaptiveStyles; + // keep track of props that are not sketchy, as you continue to climb up your parents; + var notSketch = []; + for(var i = chain.length - 1; i >= -1; i--) { + var style = i == -1 ? page.style : adaptiveStyles[chain[i]]; + if(notSketch.indexOf(BORDER_WIDTH) == -1 && style.hasOwnProperty(BORDER_WIDTH)) { + if(style[BORDER_WIDTH] != 0) return true; + notSketch.push(BORDER_WIDTH); + } + if(notSketch.indexOf(COLOR_STYLE) == -1 && style.hasOwnProperty(COLOR_STYLE)) { + if(style[COLOR_STYLE] != 'appliedColor') return true; + notSketch.push(COLOR_STYLE); + } + if(notSketch.indexOf(SKETCH_FACTOR) == -1 && style.hasOwnProperty(SKETCH_FACTOR)) { + if(style[SKETCH_FACTOR] != 0) return true; + notSketch.push(SKETCH_FACTOR); + } + } + return false; + }; + + var _updateInputVisibility = function(viewId, query) { + var func = _areInputsHidden(viewId) ? 'addClass' : 'removeClass'; + query.each(function(obj, elementId) { + var input = $jobj($ax.repeater.applySuffixToElementId(elementId, '_input')); + if(input.length == 0) return; + input[func]('form_sketch'); + }); + }; + + // gets the inheritance chain of a particular view. + var _getAdaptiveIdChain = $ax.adaptive.getAdaptiveIdChain = function(viewId) { + if(!viewId) return []; + var view = _idToView[viewId]; + var chain = []; + var current = view; + while(current) { + chain[chain.length] = current.id; + current = _idToView[current.baseViewId]; + } + return chain.reverse(); + }; + + var _getPageStyle = $ax.adaptive.getPageStyle = function() { + var currentViewId = $ax.adaptive.currentViewId; + var adaptiveChain = _getAdaptiveIdChain(currentViewId); + + var currentStyle = $.extend({}, $ax.pageData.page.style); + for(var i = 0; i < adaptiveChain.length; i++) { + var viewId = adaptiveChain[i]; + $.extend(currentStyle, $ax.pageData.page.adaptiveStyles[viewId]); + } + + return currentStyle; + }; + + var _setAdaptiveLineImages = function(elementId, images, viewIdChain) { + for(var i = viewIdChain.length - 1; i >= 0; i--) { + var viewId = viewIdChain[i]; + var startImg = images['start~' + viewId]; + if(startImg) { + _setLineImage(elementId + "_start", startImg); + var endImg = images['end~' + viewId]; + _setLineImage(elementId + "_end", endImg); + var lineImg = images['line~' + viewId]; + _setLineImage(elementId + "_line", lineImg); + break; + } + } + }; + + var _setAdaptiveConnectorImages = function (elementId, images, view) { + var conn = $jobj(elementId); + var count = conn.children().length-1; // -1 for rich text panel + for(var i = 0; i < count; i++) { + var img = images['' + i + '~' + view]; + $jobj(elementId + '_seg' + i).attr('src', img); + } + }; + + var _applyView = $ax.adaptive.applyView = function(viewId, query) { + var limboIds = {}; + var hiddenIds = {}; + + var jquery; + if(query) { + jquery = query.jQuery(); + jquery = jquery.add(jquery.find('*')); + var jqueryAnn = $ax.annotation.jQueryAnn(query); + jquery = jquery.add(jqueryAnn); + } else { + jquery = $('*'); + query = $ax('*'); + } + jquery.addClass(viewId); + _updateInputVisibility(viewId, query); + var viewIdChain = _getAdaptiveIdChain(viewId); + // this could be made more efficient by computing it only once per object + query.each(function(diagramObject, elementId) { + _applyAdaptiveViewOnObject(diagramObject, elementId, viewIdChain, viewId, limboIds, hiddenIds); + }); + + $ax.visibility.addLimboAndHiddenIds(limboIds, hiddenIds, query); + //$ax.dynamicPanelManager.updateAllFitPanelsAndLayerSizeCaches(); + $ax.dynamicPanelManager.updatePercentPanelCache(query); + }; + + var _applyAdaptiveViewOnObject = function(diagramObject, elementId, viewIdChain, viewId, limboIds, hiddenIds) { + var adaptiveChain = []; + for(var i = 0; i < viewIdChain.length; i++) { + var viewId = viewIdChain[i]; + var viewStyle = diagramObject.adaptiveStyles[viewId]; + if(viewStyle) { + adaptiveChain[adaptiveChain.length] = viewStyle; + if (viewStyle.size) $ax.public.fn.convertToSingleImage($jobj(elementId)); + } + } + + var state = $ax.style.generateState(elementId); + + // set the image + var images = diagramObject.images; + if(images) { + if(diagramObject.type == 'horizontalLine' || diagramObject.type == 'verticalLine') { + _setAdaptiveLineImages(elementId, images, viewIdChain); + } else if (diagramObject.type == $ax.constants.CONNECTOR_TYPE) { + _setAdaptiveConnectorImages(elementId, images, viewId); + } else if (diagramObject.generateCompound) { + var compoundUrl = _matchImageCompound(diagramObject, elementId, viewIdChain, state); + if (compoundUrl) $ax.style.applyImage(elementId, compoundUrl, state); + }else { + var imgUrl = _matchImage(elementId, images, viewIdChain, state); + if(imgUrl) $ax.style.applyImage(elementId, imgUrl, state); + } + // for(var i = viewIdChain.length - 1; i >= 0; i--) { + // var viewId = viewIdChain[i]; + // var imgUrl = $ax.style.getElementImageOverride(elementId, state) || images[state + '~' + viewId] || images['normal~' + viewId]; + // if(imgUrl) { + // $ax.style.applyImage(elementId, imgUrl, state); + // break; + // } + // } + + // } + } + // addaptive override style (not including default style props) + var adaptiveStyle = $ax.style.computeAllOverrides(elementId, undefined, state, viewId); + + // this style INCLUDES the object's my style + var compoundStyle = $.extend({}, diagramObject.style, adaptiveStyle); + + //$ax.style.setAdaptiveStyle(elementId, adaptiveStyle); + if(!diagramObject.isContained) { + $ax.style.setAdaptiveStyle(elementId, adaptiveStyle); + } + + var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); + if(compoundStyle.limbo && !diagramObject.isContained) limboIds[scriptId] = true; + // sigh, javascript. we need the === here because undefined means not overriden + if(compoundStyle.visible === false) hiddenIds[scriptId] = true; + }; + + var _matchImage = function(id, images, viewIdChain, state) { + var override = $ax.style.getElementImageOverride(id, state); + if(override) return override; + + if(!images) return undefined; + + // first check all the images for this state + for(var i = viewIdChain.length - 1; i >= 0; i--) { + var viewId = viewIdChain[i]; + var img = images[state + "~" + viewId]; + if(img) return img; + } + // check for the default state style + var defaultStateImage = images[state + '~']; + if(defaultStateImage) return defaultStateImage; + + state = $ax.style.progessState(state); + if(state) return _matchImage(id, images, viewIdChain, state); + + // SHOULD NOT REACH HERE! NORMAL SHOULD ALWAYS CATCH AT THE DEFAULT! + return images['normal~']; // this is the default + }; + + var _matchImageCompound = function(diagramObject, id, viewIdChain, state) { + var images = []; + for(var i = 0; i < diagramObject.compoundChildren.length; i++) { + var component = diagramObject.compoundChildren[i]; + images[component] = _matchImage(id, diagramObject.images[component], viewIdChain, state); + } + return images; + }; + + + + $ax.adaptive.getImageForStateAndView = function(id, state) { + var viewIdChain = _getAdaptiveIdChain($ax.adaptive.currentViewId); + var diagramObject = $ax.getObjectFromElementId(id); + if (diagramObject.generateCompound) return _matchImageCompound(diagramObject, id, viewIdChain, state); + else return _matchImage(id, diagramObject.images, viewIdChain, state); + }; + + var _getAdaptiveView = function(winWidth, winHeight) { + var _isViewOneGreaterThanTwo = function(view1, view2) { + return view1.size.width > view2.size.width || (view1.size.width == view2.size.width && view1.size.height > view2.size.height); + }; + + var _isViewOneLessThanTwo = function(view1, view2) { + var width2 = view2.size.width || 1000000; // artificially large number + var height2 = view2.size.height || 1000000; + + var width1 = view1.size.width || 1000000; + var height1 = view1.size.height || 1000000; + + return width1 < width2 || (width1 == width2 && height1 < height2); + }; + + var _isWindowGreaterThanView = function(view, width, height) { + return width >= view.size.width && height >= view.size.height; + }; + + var _isWindowLessThanView = function(view1, width, height) { + var viewWidth = view1.size.width || 1000000; + var viewHeight = view1.size.height || 1000000; + + return width <= viewWidth && height <= viewHeight; + }; + + var greater = undefined; + var less = undefined; + + for(var i = 0; i < _enabledViews.length; i++) { + var view = _enabledViews[i]; + if(view.condition == ">=") { + if(_isWindowGreaterThanView(view, winWidth, winHeight)) { + if(!greater || _isViewOneGreaterThanTwo(view, greater)) greater = view; + } + } else { + if(_isWindowLessThanView(view, winWidth, winHeight)) { + if(!less || _isViewOneLessThanTwo(view, less)) less = view; + } + } + } + return less || greater; + }; + + var _isAdaptiveInitialized = function() { + return typeof _idToView != 'undefined'; + }; + + $ax.messageCenter.addMessageListener(function(message, data) { + //If the adaptive plugin hasn't been initialized yet then + //save the view to load so that it can get set when initialize occurs + if(message == 'switchAdaptiveView') { + var href = window.location.href.split('#')[0]; + var lastSlash = href.lastIndexOf('/'); + href = href.substring(lastSlash + 1); + if(href != data.src) return; + + var view = data.view == 'auto' ? undefined : (data.view == 'default' ? '' : data.view); + + if(!_isAdaptiveInitialized()) { + _initialViewToLoad = view; + } else _handleLoadViewId(view); + } else if(message == 'setAdaptiveViewForSize') { + _autoIsHandledBySidebar = true; + if(!_isAdaptiveInitialized()) { + _initialViewSizeToLoad = data; + } else _handleSetViewForSize(data.width, data.height); + } + }); + + $ax.adaptive.setAdaptiveView = function(view) { + var viewIdForSitemapToUnderstand = view == 'auto' ? undefined : (view == 'default' ? '' : view); + + if(!_isAdaptiveInitialized()) { + _initialViewToLoad = viewIdForSitemapToUnderstand; + } else _handleLoadViewId(viewIdForSitemapToUnderstand); + }; + + $ax.adaptive.initialize = function() { + _views = $ax.document.adaptiveViews; + _idToView = {}; + + if(_views && _views.length > 0) { + for(var i = 0; i < _views.length; i++) { + var view = _views[i]; + _idToView[view.id] = view; + } + + var enabledViewIds = $ax.document.configuration.enabledViewIds; + for(var i = 0; i < enabledViewIds.length; i++) { + _enabledViews[_enabledViews.length] = _idToView[enabledViewIds[i]]; + } + + if(_autoIsHandledBySidebar && _initialViewSizeToLoad) _handleSetViewForSize(_initialViewSizeToLoad.width, _initialViewSizeToLoad.height); + else _handleLoadViewId(_initialViewToLoad); + } + + $axure.resize(function(e) { + _handleResize(); + $ax.postResize(e); //window resize fires after view changed + }); + }; + + var _handleLoadViewId = function (loadViewId, forceSwitchTo) { + if(typeof loadViewId != 'undefined') { + _setAuto(false); + _switchView(loadViewId != 'default' ? loadViewId : '', forceSwitchTo); + } else { + _setAuto(true); + _handleResize(forceSwitchTo); + } + }; + + var _handleSetViewForSize = function (width, height) { + if(!_auto) return; + + var toView = _getAdaptiveView(width, height); + var toViewId = toView && toView.id; + _switchView(toViewId); + }; + + $ax.adaptive.getSketchKey = function() { + return $ax.pageData.sketchKeys[$ax.adaptive.currentViewId || '']; + } +}); +//***** tree.js *****// +// This is actually for BOTH trees and menus +$axure.internal(function($ax) { + var _tree = $ax.tree = {}; + var _menu = $ax.menu = {}; + + $ax.menu.InitializeSubmenu = function(subMenuId, cellId) { + var $submenudiv = $('#' + subMenuId); + + //mouseenter and leave for parent table cell + $('#' + cellId).mouseenter(function(e) { + //show current submenu +// var submenuElement = document.getElementById(subMenuId); +// if($ax.visibility.IsVisible(submenuElement) && submenuElement.style.display !== 'none') return; + $ax.visibility.SetIdVisible(subMenuId, true); + $ax.legacy.BringToFront(subMenuId); + $submenudiv.find('.menu_item').each(function() { + $ax.style.updateTextAlignmentForVisibility($ax.GetTextPanelId($(this).attr('id'))); + }); + _fireEventForSubmenu(subMenuId, "onShow"); + + }).mouseleave(function (e) { + var offset = $submenudiv.offset(); + var subcontwidth = $submenudiv.width(); + var subcontheight = $submenudiv.height(); + //If mouse is not within the submenu (added 3 pixel margin to top and left calculations), then close the submenu... + if(e.pageX + 3 < offset.left || e.pageX > offset.left + subcontwidth || e.pageY + 3 < offset.top || e.pageY > offset.top + subcontheight) { + $submenudiv.find('.sub_menu').andSelf().each(function () { +// if(!$ax.visibility.IsVisible(this)) return; + $ax.visibility.SetVisible(this, false); + _fireEventForSubmenu(subMenuId, "onHide"); + }); + $ax.style.SetWidgetHover(cellId, false); + } + }); + + $submenudiv.css('display', 'none'); + + //mouseleave for submenu + $submenudiv.mouseleave(function(e) { + //close this menu and all menus below it + $(this).find('.sub_menu').andSelf().css({ 'visibility': 'hidden', 'display': 'none' }).each(function () { +// if(!$ax.visibility.IsVisible(this)) return; + _fireEventForSubmenu(this.id, "onHide"); + }); + $ax.style.SetWidgetHover(cellId, false); + }); + }; + + var _fireEventForSubmenu = function(targetId, eventName) { + var diagramObject = $ax.getObjectFromElementId(targetId); + var event = diagramObject.interactionMap && diagramObject.interactionMap[eventName]; + if(event) { + var eventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, targetId); + $ax.event.handleEvent(targetId, eventInfo, event, false, true); + } + } + + function IsNodeVisible(nodeId) { + var current = window.document.getElementById(nodeId); + var parent = current.parentNode; + + //move all the parent's children that are below the node and their annotations + while(!$(current).hasClass("treeroot")) { + if(!$ax.visibility.IsVisible(parent)) return false; + current = parent; + parent = parent.parentNode; + } + return true; + } + + $ax.tree.ExpandNode = function(nodeId, childContainerId, plusMinusId) { + var container = window.document.getElementById(childContainerId); + if(!container || $ax.visibility.IsVisible(container)) return; + $ax.visibility.SetVisible(container, true); + + if(plusMinusId != '') $ax.style.SetWidgetSelected(plusMinusId, true); + + var delta = _getExpandCollapseDelta(nodeId, childContainerId); + + var isVisible = IsNodeVisible(nodeId); + var current = window.document.getElementById(nodeId); + var parent = current.parentNode; + + //move all the parent's children that are below the node and their annotations + while(!$(current).hasClass("treeroot")) { + var after = false; + var i = 0; + for(i = 0; i < parent.childNodes.length; i++) { + var child = parent.childNodes[i]; + if(after && child.id && $(child).hasClass("treenode")) { + var elementId = child.id; + child.style.top = Number($(child).css('top').replace("px", "")) + delta + 'px'; + var ann = window.document.getElementById(elementId + "_ann"); + if(ann) ann.style.top = Number($(ann).css('top').replace("px", "")) + delta + 'px'; + } + if(child == current) after = true; + } + current = parent; + parent = parent.parentNode; + if(!isVisible && $ax.visibility.IsVisible(parent)) break; + } + }; + + $ax.tree.CollapseNode = function(nodeId, childContainerId, plusMinusId) { + var container = window.document.getElementById(childContainerId); + if(!container || !$ax.visibility.IsVisible(container)) return; + + if(plusMinusId != '') $ax.style.SetWidgetSelected(plusMinusId, false); + + var delta = _getExpandCollapseDelta(nodeId, childContainerId); + + //hide it after getting the delta, otherwise the delta can't be calculated (offsetParent is null) + $ax.visibility.SetVisible(container, false); + + var isVisible = IsNodeVisible(nodeId); + var current = window.document.getElementById(nodeId); + var parent = current.parentNode; + + //move all the parent's children that are below the node and their annotations + while(!$(current).hasClass("treeroot")) { + var after = false; + var i = 0; + for(i = 0; i < parent.childNodes.length; i++) { + var child = parent.childNodes[i]; + if(after && child.id && $(child).hasClass("treenode")) { + var elementId = child.id; + child.style.top = Number($(child).css('top').replace("px", "")) - delta + 'px'; + var ann = window.document.getElementById(elementId + "_ann"); + if(ann) ann.style.top = Number($(ann).css('top').replace("px", "")) - delta + 'px'; + } + if(child == current) after = true; + } + current = parent; + parent = current.parentNode; + if(!isVisible && $ax.visibility.IsVisible(parent)) break; + } + }; + + var _getExpandCollapseDelta = function(nodeId, childContainerId) { + return _getChildContainerHeightHelper(childContainerId); + }; + + var _getChildContainerHeightHelper = function(childContainerId) { + var height = 0; + $('#' + childContainerId).children().each(function() { + if($(this).hasClass("treenode")) { + height += $(this).height(); + var subContainer = window.document.getElementById(this.id + '_children'); + if(subContainer && $ax.visibility.IsVisible(subContainer)) { + height += _getChildContainerHeightHelper(subContainer.id); + } + } + }); + return height; + }; + + $ax.tree.InitializeTreeNode = function(nodeId, plusminusid, childContainerId, selectText) { + var childContainer = window.document.getElementById(childContainerId); + if(childContainer) { + //relying on the html generator to put this inline so we know to collapse by default + var isCollapsed = childContainer.style.visibility == "hidden"; + if(isCollapsed) $ax.visibility.SetVisible(childContainer, false); + + if(!isCollapsed && plusminusid != '') $ax.style.SetWidgetSelected(plusminusid, true); + } + + if(plusminusid != '') { + $jobj(plusminusid).click(function() { + var visibleSet = $ax.visibility.IsIdVisible(childContainerId); + + if(visibleSet) $ax.tree.CollapseNode(nodeId, childContainerId, plusminusid); + else $ax.tree.ExpandNode(nodeId, childContainerId, plusminusid); + $ax.tree.SelectTreeNode(nodeId, true); + + return false; + }).css('cursor', 'default'); + } + }; + + var _getButtonShapeId = function(id) { + var obj = $obj(id); + return $ax.public.fn.IsTreeNodeObject(obj.type) ? $ax.getElementIdFromPath([obj.buttonShapeId], { relativeTo: id }) : id; + }; + + $ax.tree.SelectTreeNode = function(id, selected) { + $ax.style.SetWidgetSelected(_getButtonShapeId(id), selected); + }; + +}); +//***** init.temp.js *****// +$axure.internal(function($ax) { + + $(window.document).ready(function() { + var readyStart = (new Date()).getTime(); + + //this is because the page id is not formatted as a guid + var pageId = $ax.pageData.page.packageId; + + var pageData = { + id: pageId, + pageName: $ax.pageData.page.name, + location: window.location.toString(), + notes: $ax.pageData.page.notes + }; + + var anns = []; + $ax('*').each(function (dObj, elementId) { + pushAnnotation(dObj, elementId); + }); + + function pushAnnotation(dObj, elementId) { + var ann = dObj.annotation; + if(ann) { + ann = $ax.deepCopy(ann); + ann["id"] = elementId; + ann["label"] = dObj.label + " (" + dObj.friendlyType + ")"; + anns.push(ann); + } + + if(dObj.type === 'repeater' && dObj.objects) { + //if it's repeater, save the id as repeaterId@scriptId + for(var i = 0, len = dObj.objects.length; i < len; i++) { + var child = dObj.objects[i]; + var scriptId = $ax.getScriptIdFromPath([child.id], elementId); + pushAnnotation(child, elementId + '@' + scriptId); + } + } + } + + pageData.widgetNotes = anns; + + //only trigger the page.data setting if the window is on the mainframe + var isMainFrame = false; + try { + if(window.name == 'mainFrame' || + (!CHROME_5_LOCAL && window.parent.$ && window.parent.$('#mainFrame').length > 0)) { + isMainFrame = true; + + $ax.messageCenter.addMessageListener(function(message, data) { + if(message == 'finishInit') { + _processTempInit(); + } + }); + + $axure.messageCenter.setState('page.data', pageData); + window.focus(); + } + } catch(e) { } + + //attach here for chrome local + $(window).load(function() { + $ax.style.initializeObjectTextAlignment($ax('*')); + }); + + if(!isMainFrame) _processTempInit(); + }); + + + var _processTempInit = function() { + //var start = (new Date()).getTime(); + //var end = (new Date()).getTime(); + //window.alert('elapsed ' + (end - start)); + + $('iframe').each(function() { + var origSrc = $(this).attr('basesrc'); + + var $this = $(this); + if(origSrc) { + var newSrcUrl = origSrc.toLowerCase().indexOf('http://') == -1 ? $ax.globalVariableProvider.getLinkUrl(origSrc) : origSrc; + $this.attr('src', newSrcUrl); + } + + if(IOS) { + $this.parent().css('overflow', 'auto').css('-webkit-overflow-scrolling', 'touch').css('-ms-overflow-x', 'hidden').css('overflow-x', 'hidden'); + } + }); + + $axure.messageCenter.addMessageListener(function(message, data) { + if(message == 'setGlobalVar') { + $ax.globalVariableProvider.setVariableValue(data.globalVarName, data.globalVarValue, true); + } + }); + + window.lastFocusedClickable = null; + var _lastFocusedClickableSelector = 'input, a'; + var shouldOutline = true; + + $ax(function (dObj) { return dObj.tabbable; }).each(function (dObj, elementId) { + if ($ax.public.fn.IsLayer(dObj.type)) $ax.event.layerMapFocus(dObj, elementId); + var focusableId = $ax.event.getFocusableWidgetOrChildId(elementId); + var $focusable = $('#' + focusableId); + $focusable.attr("tabIndex", 0); + if($focusable.is('div') || $focusable.is('img')) { + $focusable.bind($ax.features.eventNames.mouseDownName, function() { + shouldOutline = false; + }); + attachFocusAndBlur($focusable); + } + }); + + $(window.document).bind($ax.features.eventNames.mouseUpName, function() { + shouldOutline = true; + }); + + attachFocusAndBlur($(_lastFocusedClickableSelector)); + + function attachFocusAndBlur($query) { + $query.focus(function () { + if(shouldOutline) { + $(this).css('outline', ''); + } else { + $(this).css('outline', 'none'); + } + window.lastFocusedClickable = this; + }).blur(function () { + if(window.lastFocusedClickable == this) window.lastFocusedClickable = null; + }); + } + + $(window.document).bind('keyup', function(e) { + if(e.keyCode == '13' || e.keyCode == '32') { + if(window.lastFocusedClickable) $(window.lastFocusedClickable).click(); + } + }); + + if($ax.document.configuration.hideAddress) { + $(window).load(function() { + window.setTimeout(function() { + window.scrollTo(0, 0.9); + }, 0); + }); + } + + if($ax.document.configuration.preventScroll) { + $(window.document).bind('touchmove', function(e) { + var inScrollable = $ax.legacy.GetScrollable(e.target) != window.document.body; + if(!inScrollable) { + e.preventDefault(); + } + }); + + $ax(function(diagramObject) { + return $ax.public.fn.IsDynamicPanel(diagramObject.type) && diagramObject.scrollbars != 'none'; + }).$().children().bind('touchstart', function() { + var target = this; + var top = target.scrollTop; + if(top <= 0) target.scrollTop = 1; + if(top + target.offsetHeight >= target.scrollHeight) target.scrollTop = target.scrollHeight - target.offsetHeight - 1; + }); + } + + if(OS_MAC && WEBKIT) { + $ax(function(diagramObject) { + return $ax.public.fn.IsComboBox(diagramObject.type); + }).each(function(obj, id) { + $jobj($ax.INPUT(id)).css('-webkit-appearance', 'menulist-button'); + }); + } + + $ax.legacy.BringFixedToFront(); + $ax.event.initialize(); + $ax.style.initialize(); + $ax.visibility.initialize(); + $ax.repeater.initialize(); + $ax.dynamicPanelManager.initialize(); //needs to be called after visibility is initialized + $ax.adaptive.initialize(); + $ax.loadDynamicPanelsAndMasters(); + $ax.adaptive.loadFinished(); + var start = (new Date()).getTime(); + $ax.repeater.initRefresh(); + var end = (new Date()).getTime(); + console.log('loadTime: ' + (end - start) / 1000); + $ax.style.prefetch(); + + $(window).resize(); + + //var readyEnd = (new Date()).getTime(); + //window.alert('elapsed ' + (readyEnd - readyStart)); + }; +}); + +/* extend canvas */ +var gv_hasCanvas = false; +(function() { + var _canvas = document.createElement('canvas'), proto, abbrev; + if(gv_hasCanvas = !!(_canvas.getContext && _canvas.getContext('2d')) && typeof (CanvasGradient) !== 'undefined') { + function chain(func) { + return function() { + return func.apply(this, arguments) || this; + }; + } + + with(proto = CanvasRenderingContext2D.prototype) for(var func in abbrev = { + a: arc, + b: beginPath, + n: clearRect, + c: clip, + p: closePath, + g: createLinearGradient, + f: fill, + j: fillRect, + z: function(s) { this.fillStyle = s; }, + l: lineTo, + w: function(w) { this.lineWidth = w; }, + m: moveTo, + q: quadraticCurveTo, + h: rect, + r: restore, + o: rotate, + s: save, + x: scale, + y: function(s) { this.strokeStyle = s; }, + u: setTransform, + k: stroke, + i: strokeRect, + t: translate + }) proto[func] = chain(abbrev[func]); + CanvasGradient.prototype.a = chain(CanvasGradient.prototype.addColorStop); + } +})(); + +//***** legacy.js *****// +//stored on each browser event +var windowEvent; + +$axure.internal(function($ax) { + var _legacy = {}; + $ax.legacy = _legacy; + + + // ************************** GLOBAL VARS *********************************// + + // ************************************************************************// + //Check if IE + //var bIE = false; + //if ((index = navigator.userAgent.indexOf("MSIE")) >= 0) { + // bIE = true; + //} + + var Forms = window.document.getElementsByTagName("FORM"); + for(var i = 0; i < Forms.length; i++) { + var Form = Forms[i]; + Form.onclick = $ax.legacy.SuppressBubble; + } + + $ax.legacy.SuppressBubble = function(event) { + if(IE_10_AND_BELOW) { + window.event.cancelBubble = true; + window.event.returnValue = false; + } else { + if(event) { + event.stopPropagation(); + } + } + }; + + // function InsertAfterBegin(dom, html) { + // if(!IE) { + // var phtml; + // var range = dom.ownerDocument.createRange(); + // range.selectNodeContents(dom); + // range.collapse(true); + // phtml = range.createContextualFragment(html); + // dom.insertBefore(phtml, dom.firstChild); + // } else { + // dom.insertAdjacentHTML("afterBegin", html); + // } + // } + + // function InsertBeforeEnd(dom, html) { + // if(!IE) { + // var phtml; + // var range = dom.ownerDocument.createRange(); + // range.selectNodeContents(dom); + // range.collapse(dom); + // phtml = range.createContextualFragment(html); + // dom.appendChild(phtml); + // } else { + // dom.insertAdjacentHTML("beforeEnd", html); + // } + // } + + //Get the id of the Workflow Dialog belonging to element with id = id + + // function Workflow(id) { + // return id + 'WF'; + // } + + $ax.legacy.BringToFront = function(id, skipFixed) { + _bringToFrontHelper(id); + if(!skipFixed) $ax.legacy.BringFixedToFront(); + }; + + var _bringToFrontHelper = function(id) { + var target = window.document.getElementById(id); + if(target == null) return; + $ax.globals.MaxZIndex = $ax.globals.MaxZIndex + 1; + target.style.zIndex = $ax.globals.MaxZIndex; + }; + + $ax.legacy.BringFixedToFront = function() { + $ax(function(diagramObject) { return diagramObject.fixedKeepInFront; }).each(function(diagramObject, scriptId) { + _bringToFrontHelper(scriptId); + }); + }; + + $ax.legacy.SendToBack = function(id) { + var target = window.document.getElementById(id); + if(target == null) return; + target.style.zIndex = $ax.globals.MinZIndex = $ax.globals.MinZIndex - 1; + }; + + $ax.legacy.RefreshScreen = function() { + var oldColor = window.document.body.style.backgroundColor; + var setColor = (oldColor == "rgb(0,0,0)") ? "#FFFFFF" : "#000000"; + window.document.body.style.backgroundColor = setColor; + window.document.body.style.backgroundColor = oldColor; + }; + + $ax.legacy.getAbsoluteLeft = function(currentNode, elementId) { + var oldDisplay = currentNode.css('display'); + var displaySet = false; + if(oldDisplay == 'none') { + currentNode.css('display', ''); + displaySet = true; + } + var left = currentNode.offset().left; + + // Special Layer code + if($ax.getTypeFromElementId(elementId) == 'layer') { + var first = true; + var children = currentNode.children(); + for(var i = 0; i < children.length; i++) { + var child = $(children[i]); + var subDisplaySet = false; + if(child.css('display') == 'none') { + child.css('display', ''); + subDisplaySet = true; + } + if(first) left = child.offset().left; + else left = Math.min(child.offset().left, left); + first = false; + + if(subDisplaySet) child.css('display', 'none'); + } + } + + if (displaySet) currentNode.css('display', oldDisplay); + + return $axure.fn.bodyToWorld(left, true); + }; + + $ax.legacy.getAbsoluteTop = function(currentNode, elementId) { + var oldDisplay = currentNode.css('display'); + var displaySet = false; + if(oldDisplay == 'none') { + currentNode.css('display', ''); + displaySet = true; + } + var top = currentNode.offset().top; + + // Special Layer code + if ($ax.getTypeFromElementId(elementId) == 'layer') { + var first = true; + var children = currentNode.children(); + for (var i = 0; i < children.length; i++) { + var child = $(children[i]); + var subDisplaySet = false; + if (child.css('display') == 'none') { + child.css('display', ''); + subDisplaySet = true; + } + if (first) top = child.offset().top; + else top = Math.min(child.offset().top, top); + first = false; + + if (subDisplaySet) child.css('display', 'none'); + } + } + + if(displaySet) currentNode.css('display', oldDisplay); + return top; + }; + + // ****************** Annotation and Link Functions ****************** // + + $ax.legacy.GetAnnotationHtml = function(annJson) { + var retVal = ""; + for(var noteName in annJson) { + if(noteName != "label" && noteName != "id") { + retVal += "
    " + noteName + "
    "; + retVal += "
    " + linkify(annJson[noteName]) + "
    "; + } + } + return retVal; + + function linkify(text) { + var urlRegex = /(\b(((https?|ftp|file):\/\/)|(www\.))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; + return text.replace(urlRegex, function (url, b, c) { + var url2 = (c == 'www.') ? 'http://' + url : url; + return '' + url + ''; + }); + } + }; + + + $ax.legacy.GetScrollable = function(target) { + var $target = $(target); + var last = $target; + // Start past inital target. Can't scroll to target in itself, must be some ancestor. + var current = last.parent(); + + while(!current.is('body') && !current.is('html')) { + var elementId = current.attr('id'); + var diagramObject = elementId && $ax.getObjectFromElementId(elementId); + if(diagramObject && $ax.public.fn.IsDynamicPanel(diagramObject.type) && diagramObject.scrollbars != 'none') { + //returns the panel diagram div which handles scrolling + return $ax.dynamicPanelManager.getShownState(current.attr('id'))[0]; + } + last = current; + current = current.parent(); + } + // Need to do this because of ie + if(IE_10_AND_BELOW) return window.document.documentElement; + else return window.document.body; + }; + + + +}); +//***** viewer.js *****// +// ******* SITEMAP TOOLBAR VIEWER ACTIONS ******** // +$axure.internal(function ($ax) { + var userTriggeredEventNames = ['onClick', 'onDoubleClick', 'onMouseOver', 'onMouseMove', 'onMouseOut', 'onMouseDown', 'onMouseUp', + 'onKeyDown', 'onKeyUp', 'onFocus', 'onLostFocus', 'onTextChange', 'onSelectionChange', 'onSelectedChange', 'onSelect', 'onUnselect', + 'onSwipeLeft', 'onSwipeRight', 'onSwipeUp', 'onSwipeDown', 'onDragStart', 'onDrag', 'onDragDrop', 'onScroll', 'onContextMenu', 'onMouseHover', 'onLongClick']; + + $ax.messageCenter.addMessageListener(function(message, data) { + //If annotation toggle message received from sitemap, toggle footnotes + if(message == 'annotationToggle') { + if(data == true) { + $('div.annotation').show(); + $('div.annnotelabel').show(); + $('div.annnoteimage').show(); + } else { + $('div.annotation').hide(); + $('div.annnotelabel').hide(); + $('div.annnoteimage').hide(); + } + } + }); + + var _toggleSelectWidgetNoteForRepeater = function (repeaterId, scriptId, select) { + var itemIds = $ax.getItemIdsForRepeater(repeaterId); + + for(var i = 0; i < itemIds.length; i++) { + var itemId = itemIds[i]; + var elementId = $ax.repeater.createElementId(scriptId, itemId); + if(select) $('#' + elementId).addClass('widgetNoteSelected'); + else $('#' + elementId).removeClass('widgetNoteSelected'); + } + } + + var lastSelectedWidgetNote; + $ax.messageCenter.addMessageListener(function (message, data) { + //If annotation toggle message received from sitemap, toggle footnotes + if(message == 'toggleSelectWidgetNote') { + var dataSplit = data.split('@'); + + if(lastSelectedWidgetNote == data) { + if(dataSplit.length === 2) { + _toggleSelectWidgetNoteForRepeater(dataSplit[0], dataSplit[1], false); + } else { + $('#' + lastSelectedWidgetNote).removeClass('widgetNoteSelected'); + } + lastSelectedWidgetNote = null; + return; + } + + if(lastSelectedWidgetNote) { + var lastDataSplit = lastSelectedWidgetNote.split('@'); + if(lastDataSplit.length === 2) { + _toggleSelectWidgetNoteForRepeater(lastDataSplit[0], lastDataSplit[1], false); + } else { + $('#' + lastSelectedWidgetNote).removeClass('widgetNoteSelected'); + } + } + + if(dataSplit.length > 1) { + _toggleSelectWidgetNoteForRepeater(dataSplit[0], dataSplit[1], true); + } else { + $('#' + data).addClass('widgetNoteSelected'); + } + + lastSelectedWidgetNote = data; + } + }); + + var highlightEnabled = false; + $ax.messageCenter.addMessageListener(function(message, data) { + if(message == 'highlightInteractive') { + highlightEnabled = data == true; + _applyHighlight($ax('*')); + } + }); + + var _applyHighlight = $ax.applyHighlight = function(query, ignoreUnset) { + if(ignoreUnset && !highlightEnabled) return; + + var pulsateClassName = 'legacyPulsateBorder'; + //Determine if the widget has a defined userTriggeredEventName specified in the array above + var _isInteractive = function(diagramObject) { + if(diagramObject && diagramObject.interactionMap) { + for(var index in userTriggeredEventNames) { + if(diagramObject.interactionMap[userTriggeredEventNames[index]]) return true; + } + } + return false; + }; + + //Traverse through parent layers (if any) of an element and see if any have a defined userTriggeredEventName + var _findMatchInParent = function(id) { + var parents = $ax('#' + id).getParents(true, ['layer'])[0]; + for(var i in parents) { + var parentId = parents[i]; + var parentObj = $ax.getObjectFromScriptId(parentId); + if(_isInteractive(parentObj)) return true; + } + return false; + }; + + //Find all widgets with a defined userTriggeredEventName specified in the array above + var $matchingElements = query.filter(function (obj, id) { + + //This prevents the top left corner of the page from highlighting with everything else + if($ax.public.fn.IsLayer(obj.type)) return false; + + if(_isInteractive(obj)) return true; + else if($ax.public.fn.IsVector(obj.type) && obj.referencePageUrl) return true; + + //Last check on the object's parent layer(s), if a layer has a defined userTriggeredEventName + //then we shall highlight each member of that layer TODO This is a design decision and is subject to change + return _findMatchInParent(id); + }).$(); + + var isHighlighted = $matchingElements.is('.' + pulsateClassName); + + //Toggle the pulsate class on the matched elements + if(highlightEnabled && !isHighlighted) { + $matchingElements.addClass(pulsateClassName); + } else if(!highlightEnabled && isHighlighted) { + $matchingElements.removeClass(pulsateClassName); + } + }; +}); +//***** math.js *****// +$axure.internal(function($ax) { + $ax.public.fn.matrixMultiply = function(matrix, vector) { + if(!matrix.tx) matrix.tx = 0; + if(!matrix.ty) matrix.ty = 0; + var outX = matrix.m11 * vector.x + matrix.m12 * vector.y + matrix.tx; + var outY = matrix.m21 * vector.x + matrix.m22 * vector.y + matrix.ty; + return { x: outX, y: outY }; + } + + $ax.public.fn.matrixInverse = function(matrix) { + if(!matrix.tx) matrix.tx = 0; + if(!matrix.ty) matrix.ty = 0; + + var determinant = matrix.m11*matrix.m22 - matrix.m12*matrix.m21; + //var threshold = (M11 * M11 + M22 *M22 + M12 *M12+ M21 *M21) / 100000; + //if(determinant.DeltaEquals(0, threshold) && determinant < 0.01) { + // return Invalid; + //} + return { + m11 : matrix.m22/determinant, + m12 : -matrix.m12/determinant, + tx : (matrix.ty*matrix.m12 - matrix.tx*matrix.m22)/determinant, + m21: -matrix.m21 / determinant, + m22: matrix.m11 / determinant, + ty: (matrix.tx * matrix.m21 - matrix.ty * matrix.m11) / determinant + }; + } + + + $ax.public.fn.matrixMultiplyMatrix = function (matrix1, matrix2) { + if (!matrix1.tx) matrix1.tx = 0; + if (!matrix1.ty) matrix1.ty = 0; + if (!matrix2.tx) matrix2.tx = 0; + if (!matrix2.ty) matrix2.ty = 0; + + return { + m11: matrix1.m12*matrix2.m21 + matrix1.m11*matrix2.m11, + m12: matrix1.m12*matrix2.m22 + matrix1.m11*matrix2.m12, + tx: matrix1.m12 * matrix2.ty + matrix1.m11 * matrix2.tx + matrix1.tx, + m21: matrix1.m22 * matrix2.m21 + matrix1.m21 * matrix2.m11, + m22: matrix1.m22 * matrix2.m22 + matrix1.m21 * matrix2.m12, + ty: matrix1.m22 * matrix2.ty + matrix1.m21 * matrix2.tx + matrix1.ty, + }; + } + + + $ax.public.fn.transformFromElement = function (element) { + var st = window.getComputedStyle(element, null); + + var tr = st.getPropertyValue("-webkit-transform") || + st.getPropertyValue("-moz-transform") || + st.getPropertyValue("-ms-transform") || + st.getPropertyValue("-o-transform") || + st.getPropertyValue("transform"); + + if (tr.indexOf('none') < 0) { + var matrix = tr.split('(')[1]; + matrix = matrix.split(')')[0]; + matrix = matrix.split(','); + for (var l = 0; l < matrix.length; l++) { + matrix[l] = Number(matrix[l]); + } + + } else { matrix = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0]; } + + return matrix; + // matrix[0] = cosine, matrix[1] = sine. + // Assuming the element is still orthogonal. + } + + $ax.public.fn.vectorMinus = function(vector1, vector2) { return { x: vector1.x - vector2.x, y: vector1.y - vector2.y }; } + + $ax.public.fn.vectorPlus = function (vector1, vector2) { return { x: vector1.x + vector2.x, y: vector1.y + vector2.y }; } + + $ax.public.fn.vectorMidpoint = function (vector1, vector2) { return { x: (vector1.x + vector2.x) / 2.0, y: (vector1.y + vector2.y) / 2.0 }; } + + $ax.public.fn.fourCornersToBasis = function (fourCorners) { + return { + widthVector: $ax.public.fn.vectorMinus(fourCorners.widgetTopRight, fourCorners.widgetTopLeft), + heightVector: $ax.public.fn.vectorMinus(fourCorners.widgetBottomLeft, fourCorners.widgetTopLeft) + }; + } + + $ax.public.fn.matrixString = function(m11, m21, m12, m22, tx, ty) { + return "Matrix(" + m11 + "," + m21 + "," + m12 + "," + m22 + ", " + tx + ", " + ty + ")"; + } + + $ax.public.fn.getWidgetBoundingRect = function (widgetId) { + var emptyRect = { left: 0, top: 0, centerPoint: { x: 0, y: 0 }, width: 0, height: 0 }; + var element = document.getElementById(widgetId); + if (!element) return emptyRect; + + var object = $obj(widgetId); + if (object && object.type && $ax.public.fn.IsLayer(object.type)) { + var layerChildren = _getLayerChildrenDeep(widgetId); + if (!layerChildren) return emptyRect; + else return _getBoundingRectForMultipleWidgets(layerChildren); + } + return _getBoundingRectForSingleWidget(widgetId); + }; + + var _getLayerChildrenDeep = $ax.public.fn.getLayerChildrenDeep = function (layerId, includeLayers, includeHidden) { + var deep = []; + var children = $ax('#' + layerId).getChildren()[0].children; + for (var index = 0; index < children.length; index++) { + var childId = children[index]; + if(!includeHidden && !$ax.visibility.IsIdVisible(childId)) continue; + if ($ax.public.fn.IsLayer($obj(childId).type)) { + if (includeLayers) deep.push(childId); + var recursiveChildren = _getLayerChildrenDeep(childId, includeLayers, includeHidden); + for (var j = 0; j < recursiveChildren.length; j++) deep.push(recursiveChildren[j]); + } else deep.push(childId); + } + return deep; + }; + + var _getBoundingRectForMultipleWidgets = function (widgetsIdArray, relativeToPage) { + if (!widgetsIdArray || widgetsIdArray.constructor !== Array) return undefined; + if (widgetsIdArray.length == 0) return { left: 0, top: 0, centerPoint: { x: 0, y: 0 }, width: 0, height: 0 }; + var widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[0], relativeToPage, true); + var boundingRect = { left: widgetRect.left, right: widgetRect.right, top: widgetRect.top, bottom: widgetRect.bottom }; + + for (var index = 1; index < widgetsIdArray.length; index++) { + widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[index], relativeToPage); + boundingRect.left = Math.min(boundingRect.left, widgetRect.left); + boundingRect.top = Math.min(boundingRect.top, widgetRect.top); + boundingRect.right = Math.max(boundingRect.right, widgetRect.right); + boundingRect.bottom = Math.max(boundingRect.bottom, widgetRect.bottom); + } + + boundingRect.centerPoint = { x: (boundingRect.right + boundingRect.left) / 2.0, y: (boundingRect.bottom + boundingRect.top) / 2.0 }; + boundingRect.width = boundingRect.right - boundingRect.left; + boundingRect.height = boundingRect.bottom - boundingRect.top; + return boundingRect; + }; + + var _getBoundingRectForSingleWidget = function (widgetId, relativeToPage, justSides) { + var element = document.getElementById(widgetId); + var boundingRect, tempBoundingRect, position; + var displayChanged = _displayHackStart(element); + + if (_isCompoundVectorHtml(element)) { + //tempBoundingRect = _getCompoundImageBoundingClientSize(widgetId); + //position = { left: tempBoundingRect.left, top: tempBoundingRect.top }; + position = $(element).position(); + tempBoundingRect = {}; + tempBoundingRect.left = position.left; //= _getCompoundImageBoundingClientSize(widgetId); + tempBoundingRect.top = position.top; + tempBoundingRect.width = Number(element.getAttribute('WidgetWidth')); + tempBoundingRect.height = Number(element.getAttribute('WidgetHeight')); + } else { + var boundingElement = element; + if($ax.dynamicPanelManager.isIdFitToContent(widgetId)) { + var stateId = $ax.visibility.GetPanelState(widgetId); + if(stateId != '') boundingElement = document.getElementById(stateId); + } + tempBoundingRect = boundingElement.getBoundingClientRect(); + + var jElement = $(element); + position = jElement.position(); + if(jElement.css('position') == 'fixed') { + position.left += Number(jElement.css('margin-left').replace("px", "")); + position.top += Number(jElement.css('margin-top').replace("px", "")); + } + } + + var layers = $ax('#' + widgetId).getParents(true, ['layer'])[0]; + var flip = ''; + var mirrorWidth = 0; + var mirrorHeight = 0; + for (var i = 0; i < layers.length; i++) { + + //should always be 0,0 + var layerPos = $jobj(layers[i]).position(); + position.left += layerPos.left; + position.top += layerPos.top; + + var outer = $ax.visibility.applyWidgetContainer(layers[i], true, true); + if (outer.length) { + var outerPos = outer.position(); + position.left += outerPos.left; + position.top += outerPos.top; + } + + //when a group is flipped we find the unflipped position + var inner = $jobj(layers[i] + '_container_inner'); + var taggedFlip = inner.data('flip'); + if (inner.length && taggedFlip) { + //only account for flip if transform is applied + var matrix = taggedFlip && (inner.css("-webkit-transform") || inner.css("-moz-transform") || + inner.css("-ms-transform") || inner.css("-o-transform") || inner.css("transform")); + if (matrix !== 'none') { + flip = taggedFlip; + mirrorWidth = $ax.getNumFromPx(inner.css('width')); + mirrorHeight = $ax.getNumFromPx(inner.css('height')); + } + } + } + //Now account for flip + if (flip == 'x') position.top = mirrorHeight - position.top - element.getBoundingClientRect().height; + else if (flip == 'y') position.left = mirrorWidth - position.left - element.getBoundingClientRect().width; + + boundingRect = { + left: position.left, + right: position.left + tempBoundingRect.width, + top: position.top, + bottom: position.top + tempBoundingRect.height + }; + + _displayHackEnd(displayChanged); + if (justSides) return boundingRect; + + boundingRect.width = boundingRect.right - boundingRect.left; + boundingRect.height = boundingRect.bottom - boundingRect.top; + + boundingRect.centerPoint = { + x: boundingRect.width / 2 + boundingRect.left, + y: boundingRect.height / 2 + boundingRect.top + }; + + return boundingRect; + }; + + var _getPointAfterRotate = $ax.public.fn.getPointAfterRotate = function (angleInDegrees, pointToRotate, centerPoint) { + var displacement = $ax.public.fn.vectorMinus(pointToRotate, centerPoint); + var rotationMatrix = $ax.public.fn.rotationMatrix(angleInDegrees); + rotationMatrix.tx = centerPoint.x; + rotationMatrix.ty = centerPoint.y; + return $ax.public.fn.matrixMultiply(rotationMatrix, displacement); + }; + + $ax.public.fn.getBoundingSizeForRotate = function(width, height, rotation) { + // point to rotate around doesn't matter since we just care about size, if location matter we need more args and location matters. + + var origin = { x: 0, y: 0 }; + + var corner1 = { x: width, y: 0 }; + var corner2 = { x: 0, y: height }; + var corner3 = { x: width, y: height }; + + corner1 = _getPointAfterRotate(rotation, corner1, origin); + corner2 = _getPointAfterRotate(rotation, corner2, origin); + corner3 = _getPointAfterRotate(rotation, corner3, origin); + + var left = Math.min(0, corner1.x, corner2.x, corner3.x); + var right = Math.max(0, corner1.x, corner2.x, corner3.x); + var top = Math.min(0, corner1.y, corner2.y, corner3.y); + var bottom = Math.max(0, corner1.y, corner2.y, corner3.y); + + return { width: right - left, height: bottom - top }; + } + + $ax.public.fn.getPositionRelativeToParent = function (elementId) { + var element = document.getElementById(elementId); + var list = _displayHackStart(element); + var position = $(element).position(); + _displayHackEnd(list); + return position; + }; + + var _displayHackStart = $ax.public.fn.displayHackStart = function (element) { + // TODO: Options: 1) stop setting display none. Big change for this late in the game. 2) Implement our own bounding. + // TODO: 3) Current method is look for any parents that are set to none, and and temporarily unblock. Don't like it, but it works. + var parent = element; + var displays = []; + while (parent) { + if (parent.style.display == 'none') { + displays.push(parent); + //use block to overwrites default hidden objects' display + parent.style.display = 'block'; + } + parent = parent.parentElement; + } + + return displays; + }; + + var _displayHackEnd = $ax.public.fn.displayHackEnd = function (displayChangedList) { + for (var i = 0; i < displayChangedList.length; i++) displayChangedList[i].style.display = 'none'; + }; + + + var _isCompoundVectorHtml = $ax.public.fn.isCompoundVectorHtml = function(hElement) { + return hElement.hasAttribute('compoundmode') && hElement.getAttribute('compoundmode') == "true"; + } + + $ax.public.fn.removeCompound = function (jobj) { if(_isCompoundVectorHtml(jobj[0])) jobj.removeClass('compound'); } + $ax.public.fn.restoreCompound = function (jobj) { if (_isCompoundVectorHtml(jobj[0])) jobj.addClass('compound'); } + + $ax.public.fn.compoundIdFromComponent = function(id) { + + var pPos = id.indexOf('p'); + var dashPos = id.indexOf('-'); + if (pPos < 1) return id; + else if (dashPos < 0) return id.substring(0, pPos); + else return id.substring(0, pPos) + id.substring(dashPos); + } + + $ax.public.fn.l2 = function (x, y) { return Math.sqrt(x * x + y * y); } + + $ax.public.fn.convertToSingleImage = function (jobj) { + if(!jobj[0]) return; + + var widgetId = jobj[0].id; + var object = $obj(widgetId); + + if ($ax.public.fn.IsLayer(object.type)) { + var recursiveChildren = _getLayerChildrenDeep(widgetId, true); + for (var j = 0; j < recursiveChildren.length; j++) + $ax.public.fn.convertToSingleImage($jobj(recursiveChildren[j])); + return; + } + + //var layer = + + if(!_isCompoundVectorHtml(jobj[0])) return; + + + $('#' + widgetId).removeClass("compound"); + $('#' + widgetId + '_img').removeClass("singleImg"); + jobj[0].setAttribute('compoundmode', 'false'); + + var components = object.compoundChildren; + delete object.generateCompound; + for (var i = 0; i < components.length; i++) { + var componentJobj = $jobj($ax.public.fn.getComponentId(widgetId, components[i])); + componentJobj.css('display', 'none'); + componentJobj.css('visibility', 'hidden'); + } + } + + + $ax.public.fn.getContainerDimensions = function(query) { + // returns undefined if no containers found. + var containerDimensions; + for (var i = 0; i < query[0].children.length; i++) { + var node = query[0].children[i]; + if (node.id.indexOf(query[0].id) >= 0 && node.id.indexOf('container') >= 0) { + containerDimensions = node.style; + } + } + return containerDimensions; + } + + + $ax.public.fn.rotationMatrix = function (angleInDegrees) { + var angleInRadians = angleInDegrees * (Math.PI / 180); + var cosTheta = Math.cos(angleInRadians); + var sinTheta = Math.sin(angleInRadians); + + return { m11: cosTheta, m12: -sinTheta, m21: sinTheta, m22: cosTheta, tx: 0.0, ty: 0.0 }; + } + + $ax.public.fn.GetFieldFromStyle = function (query, field) { + var raw = query[0].style[field]; + if (!raw) raw = query.css(field); + return Number(raw.replace('px', '')); + } + + + $ax.public.fn.setTransformHowever = function (transformString) { + return { + '-webkit-transform': transformString, + '-moz-transform': transformString, + '-ms-transform': transformString, + '-o-transform': transformString, + 'transform': transformString + }; + } + + $ax.public.fn.getCornersFromComponent = function (id) { + var element = document.getElementById(id); + var matrix = $ax.public.fn.transformFromElement(element); + var currentMatrix = { m11: matrix[0], m21: matrix[1], m12: matrix[2], m22: matrix[3], tx: matrix[4], ty: matrix[5] }; + var dimensions = {}; + var axObj = $ax('#' + id); + dimensions.left = axObj.left(true); + dimensions.top = axObj.top(true); + var size = axObj.size(); + dimensions.width = size.width; + dimensions.height = size.height; + //var transformMatrix1 = { m11: 1, m12: 0, m21: 0, m22: 1, tx: -invariant.x, ty: -invariant.y }; + //var transformMatrix2 = { m11: 1, m12: 0, m21: 0, m22: 1, tx: 500, ty: 500 }; + + var halfWidth = dimensions.width * 0.5; + var halfHeight = dimensions.height * 0.5; + //var preTransformTopLeft = { x: -halfWidth, y: -halfHeight }; + //var preTransformBottomLeft = { x: -halfWidth, y: halfHeight }; + var preTransformTopRight = { x: halfWidth, y: -halfHeight }; + var preTransformBottomRight = { x: halfWidth, y: halfHeight }; + + return { + //relativeTopLeft: $ax.public.fn.matrixMultiply(currentMatrix, preTransformTopLeft), + //relativeBottomLeft: $ax.public.fn.matrixMultiply(currentMatrix, preTransformBottomLeft), + relativeTopRight: $ax.public.fn.matrixMultiply(currentMatrix, preTransformTopRight), + relativeBottomRight: $ax.public.fn.matrixMultiply(currentMatrix, preTransformBottomRight), + centerPoint: { x: dimensions.left + halfWidth, y: dimensions.top + halfHeight } + //originalDimensions: dimensions, + //transformShift: { x: matrix[4], y: matrix[5] } + } + } +}); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/prototypePre.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/prototypePre.js new file mode 100644 index 0000000..804989a --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/prototypePre.js @@ -0,0 +1,3073 @@ +// 8.0.0.3355. Generated 8/24/2017 4:38:58 AM UTC + +//***** axQuery.js *****// +$axure = function(query) { + return $axure.query(query); +}; + +// ******* AxQuery and Page metadata ******** // +(function() { + var $ax = function() { + var returnVal = $axure.apply(this, arguments); + var axFn = $ax.fn; + for (var key in axFn) { + returnVal[key] = axFn[key]; + } + + return returnVal; + }; + + $ax.public = $axure; + $ax.fn = {}; + + $axure.internal = function(initFunction) { + //Attach messagecenter to $ax object so that it can be used in viewer.js, etc in internal scope + if(!$ax.messageCenter) $ax.messageCenter = $axure.messageCenter; + + return initFunction($ax); + }; + + var _lastFiredResize = 0; + var _resizeFunctions = []; + var _lastTimeout; + var _fireResize = function() { + if (_lastTimeout) window.clearTimeout(_lastTimeout); + _lastTimeout = undefined; + _lastFiredResize = new Date().getTime(); + for(var i = 0; i < _resizeFunctions.length; i++) _resizeFunctions[i](); + }; + + $axure.resize = function(fn) { + if(fn) _resizeFunctions[_resizeFunctions.length] = fn; + else $(window).resize(); + }; + + $(window).resize(function() { + var THRESHOLD = 50; + var now = new Date().getTime(); + if(now - _lastFiredResize > THRESHOLD) { + _fireResize(); + } else if(!_lastTimeout) { + _lastTimeout = window.setTimeout(_fireResize, THRESHOLD); + } + }); + + window.$obj = function(id) { + return $ax.getObjectFromElementId(id); + }; + + window.$id = function(obj) { + return obj.scriptIds[0]; + }; + + window.$jobj = function(id) { + return $(document.getElementById(id)); + }; + + window.$jobjAll = function(id) { + return $addAll($jobj(id), id); + }; + + window.$addAll = function(jobj, id) { + return jobj.add($jobj(id + '_ann')).add($jobj(id + '_ref')); + }; + + $ax.INPUT = function(id) { return id + "_input"; }; + $ax.IsImageFocusable = function (type) { return $ax.public.fn.IsImageBox(type) || $ax.public.fn.IsVector(type) || $ax.public.fn.IsTreeNodeObject(type) || $ax.public.fn.IsTableCell(type); }; + $ax.IsTreeNodeObject = function (type) { return $ax.public.fn.IsTreeNodeObject(type); }; + $ax.IsSelectionButton = function (type) { return $ax.public.fn.IsCheckBox(type) || $ax.public.fn.IsRadioButton(type); }; + + var _fn = {}; + $axure.fn = _fn; + $axure.fn.jQuery = function() { + var elements = this.getElements(); + return $(elements); + }; + $axure.fn.$ = $axure.fn.jQuery; + + var _query = function(query, queryArg) { + var returnVal = {}; + var _axQueryObject = returnVal.query = { }; + _axQueryObject.filterFunctions = []; + + if (query == '*') { + _axQueryObject.filterFunctions[0] = function() { return true; }; + } else if (typeof(query) === 'function') { + _axQueryObject.filterFunctions[0] = query; + } else { + var firstString = $.trim(query.toString()); + if (firstString.charAt(0) == '@') { + _axQueryObject.filterFunctions[0] = function(diagramObject) { + return diagramObject.label == firstString.substring(1); + }; + } else if (firstString.charAt(0) == '#') { + _axQueryObject.elementId = firstString.substring(1); + } else { + if (firstString == 'label') { + _axQueryObject.filterFunctions[0] = function(diagramObject) { + return queryArg instanceof Array && queryArg.indexOf(diagramObject.label) > 0 || + queryArg instanceof RegExp && queryArg.test(diagramObject.label) || + diagramObject.label == queryArg; + }; + } else if(firstString == 'elementId') { + _axQueryObject.filterFunctions[0] = function(diagramObject, elementId) { + return queryArg instanceof Array && queryArg.indexOf(elementId) > 0 || + elementId == queryArg; + }; + } + } + } + + var axureFn = $axure.fn; + for (var key in axureFn) { + returnVal[key] = axureFn[key]; + } + return returnVal; + }; + $axure.query = _query; + + var _getFilterFnFromQuery = function(query) { + var filter = function(diagramObject, elementId) { + // Non diagram objects are allowed to be queryed, such as text inputs. + if (diagramObject && !$ax.public.fn.IsReferenceDiagramObject(diagramObject.type) && !document.getElementById(elementId)) return false; + var retVal = true; + for(var i = 0; i < query.filterFunctions.length && retVal; i++) { + retVal = query.filterFunctions[i](diagramObject, elementId); + } + return retVal; + }; + return filter; + }; + + $ax.public.fn.filter = function(query, queryArg) { + var returnVal = _query(query, queryArg); + + if(this.query.elementId) returnVal.query.elementId = this.query.elementId; + + //If there is already a function, offset by 1 when copying other functions over. + var offset = returnVal.query.filterFunctions[0] ? 1 : 0; + + //Copy all functions over to new array. + for(var i = 0; i < this.query.filterFunctions.length; i++) returnVal.query.filterFunctions[i+offset] = this.query.filterFunctions[i]; + + //Functions are in reverse order now + returnVal.query.filterFunctions.reverse(); + + return returnVal; + }; + + $ax.public.fn.each = function(fn) { + var filter = _getFilterFnFromQuery(this.query); + var elementIds = this.query.elementId ? [this.query.elementId] : $ax.getAllElementIds(); + for (var i = 0; i < elementIds.length; i++) { + var elementId = elementIds[i]; + var diagramObject = $ax.getObjectFromElementId(elementId); + if (filter(diagramObject, elementId)) { + fn.apply(diagramObject, [diagramObject, elementId]); + } + } + }; + + $ax.public.fn.getElements = function() { + var elements = []; + this.each(function(dObj, elementId) { + var elementById = document.getElementById(elementId); + if(elementById) elements[elements.length] = elementById; + }); + return elements; + }; + + $ax.public.fn.getElementIds = function() { + var elementIds = []; + this.each(function(dObj, elementId) { elementIds[elementIds.length] = elementId; }); + return elementIds; + }; + + // Deep means to keep getting parents parent until at the root parent. Parent is then an array instead of an id. + // Filter options: layer, rdo, repeater, item, dynamicPanel, state + $ax.public.fn.getParents = function (deep, filter) { + if(filter == '*') filter = ['layer', 'rdo', 'repeater', 'item', 'dynamicPanel', 'state']; + var elementIds = this.getElementIds(); + var parentIds = []; + + var getParent = function(elementId) { + var containerIndex = elementId.indexOf('_container'); + if(containerIndex !== -1) elementId = elementId.substring(0, containerIndex); + if(elementId.indexOf('_text') !== -1) elementId = $ax.GetShapeIdFromText(elementId); + + // Check repeater item before layer, because repeater item detects it's parent layer, but wants to go directly to it's repeater first. + // if repeater item, then just return repeater + var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); + var itemNum = $ax.repeater.getItemIdFromElementId(elementId); + var parentRepeater = $ax.getParentRepeaterFromScriptId(scriptId); + + // scriptId is item or repeater itself + if (parentRepeater == scriptId) { + // If you are repeater item, return your repeater + if (itemNum) return filter.indexOf('repeater') != -1 ? scriptId : getParent(scriptId); + // Otherwise you are actually at repeater, clean parentRepeater, or else you loop + parentRepeater = undefined; + } + + // Layer only references it if it is a direct layer to it + var parent = $ax.getLayerParentFromElementId(elementId); + // If layer is allowed we found parent, otherwise ignore and keep climbing + if (parent) return filter.indexOf('layer') != -1 ? parent : getParent(parent); + + // if state, then just return panel + if(scriptId.indexOf('_state') != -1) { + var panelId = $ax.repeater.createElementId(scriptId.split('_')[0], itemNum); + // If dynamic panel is allowed we found parent, otherwise ignore and keep climbing + return filter.indexOf('dynamicPanel') != -1 ? panelId : getParent(panelId); + } + + var parentType = ''; + if(parentRepeater) { + parentType = 'item'; + parent = $ax.repeater.createElementId(parentRepeater, itemNum); + } + + var masterPath = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); + masterPath.pop(); + if(masterPath.length > 0) { + var masterId = $ax.getElementIdFromPath(masterPath, { itemNum: itemNum }); + if(!masterId) return undefined; + var masterRepeater = $ax.getParentRepeaterFromElementId($ax.repeater.getScriptIdFromElementId(masterId)); + if(!parentRepeater || masterRepeater) { + parentType = 'rdo'; + parent = masterId; + } + } + + var obj = $obj(elementId); + var parentDynamicPanel = obj.parentDynamicPanel; + if(parentDynamicPanel) { + // Make sure the parent if not parentRepeater, or dynamic panel is also in that repeater + // If there is a parent master, the dynamic panel must be in it, otherwise parentDynamicPanel would be undefined. + var panelPath = masterPath; + panelPath[panelPath.length] = parentDynamicPanel; + panelId = $ax.getElementIdFromPath(panelPath, { itemNum: itemNum }); + if(!panelId) return undefined; + var panelRepeater = $ax.getParentRepeaterFromElementId(panelId); + if(!parentRepeater || panelRepeater) { + parentType = 'state'; + parent = panelId + '_state' + obj.panelIndex; + } + } + + // If at top or parent type is desired, then return parent, otherwise keep climbing + return !parent || filter.indexOf(parentType) != -1 ? parent : getParent(parent); + }; + + for(var i = 0; i < elementIds.length; i++) { + var parent = getParent(elementIds[i]); + if(deep) { + var parents = []; + while(parent) { + parents[parents.length] = parent; + // If id is not a valid object, you are either repeater item or dynamic panel state + //if(!$obj(parent)) parent = $ax.visibility.getWidgetFromContainer($jobj(parent).parent().attr('id')); + + parent = getParent(parent); + } + parent = parents; + } + parentIds[parentIds.length] = parent; + } + return parentIds; + }; + + // Get the path to the child, where non leaf nodes can be masters, layers, dynamic panels, and repeaters. + $ax.public.fn.getChildren = function(deep) { + var elementIds = this.getElementIds(); + var children = []; + + var getChildren = function(elementId) { + var obj = $obj(elementId); + if(!obj) return undefined; + + var isRepeater = obj.type == $ax.constants.REPEATER_TYPE; + var isDynamicPanel = obj.type == $ax.constants.DYNAMIC_PANEL_TYPE; + var isLayer = obj.type == $ax.constants.LAYER_TYPE; + var isMaster = obj.type == $ax.constants.MASTER_TYPE; + + var isMenu = obj.type == $ax.constants.MENU_OBJECT_TYPE; + var isTreeNode = obj.type == $ax.constants.TREE_NODE_OBJECT_TYPE; + var isTable = obj.type == $ax.constants.TABLE_TYPE; + //var isCompoundVector = obj.type == $ax.constants.VECTOR_SHAPE_TYPE && obj.generateCompound; + + if (isRepeater || isDynamicPanel || isLayer || isMaster || isMenu || isTreeNode || isTable) {// || isCompoundVector) { + // Find parent that children should be pulled from. Default is just the elementId query (used by table and master) + var parent = $jobj(elementId); + if(isRepeater) { + parent = $(); + var itemIds = $ax.getItemIdsForRepeater(elementId); + for(var itemIndex = 0; itemIndex < itemIds.length; itemIndex++) parent = parent.add($jobj($ax.repeater.createElementId(elementId, itemIds[itemIndex]))); + } else if(isDynamicPanel) { + // Really only need to do active state probably... + parent = $jobj(elementId).children(); + // Get through all containers + while ($(parent[0]).attr('id').indexOf('container') != -1) parent = parent.children(); + // Now at states, but want states content + parent = parent.children(); + } else if(isTreeNode) parent = $jobj($ax.repeater.applySuffixToElementId(elementId, '_children')); + + // Menu doesn't want all children, only tables and menus, so it must be handled specially + var children = isMenu ? parent.children('.ax_table').add(parent.children('.ax_menu')) : parent.children(); + children = $ax.visibility.getRealChildren(_fixForBasicLinks(children)); + + // For tree nodes you want the the button shape contained by the elementQuery too + if(isTreeNode) { + var treeNodeChildren = $jobj(elementId).children(); + for(var treeNodeIndex = 0; treeNodeIndex < treeNodeChildren.length; treeNodeIndex++) { + var treeNodeChild = $(treeNodeChildren[treeNodeIndex]); + var childObj = $obj(treeNodeChild.attr('id')); + if (childObj && $ax.public.fn.IsVector(childObj.type)) children = children.add(treeNodeChild); + } + } + + + var childrenIds = []; + for(var childIndex = 0; childIndex < children.length; childIndex++) { + var childObj = $(children[childIndex]); + var id = childObj.attr('id'); + if(typeof(id) == 'undefined' && childObj.is('a')) id = $(childObj.children()[0]).attr('id'); + // Ignore annotations and any other children that are not elements + if (id.split('_').length > 1) continue; + + childrenIds.push(id); + } + + if(deep) { + var childObjs = []; + for(var i = 0; i < childrenIds.length; i++) { + var childId = childrenIds[i]; + childObjs[i] = { id: childId, children: getChildren(childId) }; + } + childrenIds = childObjs; + } + + return childrenIds; + } + + return undefined; + }; + + for(var i = 0; i < elementIds.length; i++) { + children[children.length] = { id : elementIds[i], children : getChildren(elementIds[i])}; + } + return children; + }; + + var _fixForBasicLinks = function(query) { + var hasBasicLinks = query.filter('.basiclink').length > 0; + if(!hasBasicLinks) return query; + + var retval = $(); + for(var i = 0; i < query.length; i++) { + var child = $(query[i]); + if(child.hasClass('basiclink')) retval = retval.add(child.children()); + else retval = retval.add(child); + } + return retval; + }; + +})(); +//***** globals.js *****// +$axure.internal(function($ax) { + var _globals = $ax.globals = {}; + + $ax.globals.MaxZIndex = 1000; + $ax.globals.MinZIndex = -1000; + +}); +//***** axutils.js *****// +/* + * + * + * + * + */ + + (function() { + // define the root namespace object + if(!window.$axure) window.$axure = {}; + + $axure.utils = {}; + + // ------------------------------------------------------------------------ + // Makes an object bindable + // ------------------------------------------------------------------------ + $axure.utils.makeBindable = function(obj, events) { + if(obj.registeredBindings != null) return; + + // copy the events + obj.bindableEvents = events.slice(); + obj.registeredBindings = {}; + + obj.bind = function(eventName, fn) { + var binding = {}; + binding.eventName = eventName; + binding.action = fn; + + var bindingList = this.registeredBindings[eventName]; + if(bindingList == null) { + bindingList = []; + this.registeredBindings[eventName] = bindingList; + } + bindingList[bindingList.length] = binding; + }; + + obj.unbind = function(eventName) { + if(eventName.indexOf('.') >= 0) { + this.registeredBindings[eventName] = null; + } else { + var event = eventName.split('.')[0]; + for(var bindingKey in this.registeredBindings) { + if(bindingKey.split('.')[0] == event) { + this.registeredBindings[bindingKey] = null; + } + } + } + }; + + obj.triggerEvent = function(eventName, arg) { + for(var bindingKey in this.registeredBindings) { + if(bindingKey.split('.')[0] == eventName) { + var bindings = this.registeredBindings[bindingKey]; + for(var i = 0; i < bindings.length; i++) { + if(arg == null) { + bindings[i].action(); + } else { + bindings[i].action(arg); + } + } + } + } + }; + }; + + + $axure.utils.loadCSS = function(url) { + $('head').append(''); + }; + + $axure.utils.loadJS = function(url) { + $('head').append(''); + }; + + $axure.utils.curry = function(fn) { + var curriedArgs = Array.prototype.slice.call(arguments, [1]); + return function() { + fn.apply(this, curriedArgs.concat(Array.prototype.slice.call(arguments))); + }; + }; + + $axure.utils.succeeded = function(result) { + return result && result.success; + }; + + $axure.utils.createUniqueTag = function() { + return Math.random().toString().substring(2) + + Math.random().toString().substring(2) + + Math.random().toString().substring(2) + + Math.random().toString().substring(2); + }; + + $axure.utils.formatDate = function(date) { + var months = [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + var hours = date.getHours(); + var amPm = (hours > 11 ? 'PM' : 'AM'); + hours = hours % 12; + if(hours == '0') hours = '12'; + var minutes = date.getMinutes() + ''; + if(minutes.length == 1) { + minutes = '0' + minutes; + } + return [ + months[date.getMonth()], ' ', date.getDate(), ' ', date.getFullYear(), ' ', + hours, ':', minutes, ' ', amPm].join(''); + + }; + + $axure.utils.quickObject = function() { + var returnVal = {}; + for(var i = 0; i < arguments.length; i += 2) { + returnVal[arguments[i]] = arguments[i + 1]; + } + return returnVal; + }; + + var matrixBase = { + mul: function(val) { + if(val.x !== undefined) { + return $axure.utils.Vector2D( + this.m11 * val.x + this.m12 * val.y + this.tx, + this.m21 * val.x + this.m22 * val.y + this.ty); + } else if(val.m11) { + return $axure.utils.Matrix2D( + this.m11 * val.m11 + this.m12 * val.m21, + this.m11 * val.m12 + this.m12 * val.m22, + this.m21 * val.m11 + this.m22 * val.m21, + this.m21 * val.m12 + this.m22 * val.m22, + val.tx + this.tx * val.m11 + this.ty * val.m21, + val.ty + this.tx * val.m12 + this.ty * val.m22 + ); + } else if(Number(val)) { + var num = Number(val); + return $axure.utils.Matrix2D(this.m11 * num, this.m12 * num, + this.m21 * num, this.m22 * num, + this.tx * num, this.ty * num); + } else return undefined; + }, + rotate: function(angle) { + var angleRad = angle * Math.PI / 180; + var c = Math.cos(angleRad); + var s = Math.sin(angleRad); + + return this.mul($axure.utils.Matrix2D(c, -s, s, c)); + }, + translate: function(tx, ty) { + return this.mul($axure.utils.Matrix2D(1, 0, 0, 1, tx, ty)); + } + }; + + $axure.utils.Matrix2D = function(m11, m12, m21, m22, tx, ty) { + return $.extend({ + m11: m11 || 0, + m12: m12 || 0, + m21: m21 || 0, + m22: m22 || 0, + tx: tx || 0, + ty: ty || 0 + }, matrixBase); + }; + + $axure.utils.Vector2D = function(x, y) { + return { x: x || 0, y: y || 0 }; + }; + + $axure.utils.Matrix2D.identity = function() { + return $axure.utils.Matrix2D(1, 0, 0, 1, 0, 0); + }; + + $axure.utils.fixPng = function(png) { + if(!(/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32")) return; + + var src = png.src; + if(!png.style.width) { png.style.width = $(png).width(); } + if(!png.style.height) { png.style.height = $(png).height(); } + png.onload = function() { }; + png.src = $axure.utils.getTransparentGifPath(); + png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')"; + }; + })(); + + // TODO: [mas] simplify this + if(window.$axure && window.$axure.internal) { + $axure.internal(function($ax) { $ax.utils = $axure.utils; }); + } + + // Its too much of a pain to escape everything and use regular expresions, just replace manually + (function () { + var original = String.prototype.replace; + // TODO: maybe use flags or object instead to pass options in + String.prototype.replace = function (search, newVal, replaceFirst, ignoreCase) { + // Use original is some cases + if (search instanceof RegExp) return original.apply(this, arguments); + + search = String(search); + var searchCompare = ignoreCase ? this.toLowerCase() : this; + if (ignoreCase) search = search.toLowerCase(); + + var searchLength = search.length; + var thisLength = this.length; + + var index = 0; + var retVal = ''; + while (index != -1) { + var nextIndex = searchCompare.indexOf(search, index); + if (nextIndex != -1) { + retVal += this.substring(index, nextIndex) + newVal; + index = nextIndex + searchLength; + if (index >= thisLength) index = -1; + } else { + retVal += this.substring(index); + index = -1; + } + if (replaceFirst) break; + } + + return retVal; + }; + + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (elt /*, from*/) { + var len = this.length >>> 0; + + var from = trunc(Number(arguments[1]) || 0); + if(from < 0) from += len; + + for(; from < len; from++) { + if(from in this && this[from] === elt) return from; + } + return -1; + }; + } + + var trunc = function(num) { + return num < 0 ? Math.ceil(num) : Math.floor(num); + }; + + + })(); + +//***** annotation.js *****// +// ******* Annotation MANAGER ******** // +$axure.internal(function($ax) { + var NOTE_SIZE = 10; + + var _annotationManager = $ax.annotation = {}; + + var _updateLinkLocations = $ax.annotation.updateLinkLocations = function(elementId) { + var textId = $ax.GetTextPanelId(elementId); + if(!textId) return; + + var rotation = $ax.getObjectFromElementId(elementId).style.textRotation; + //we have to do this because webkit reports the post-transform position but when you set positions it's pre-transform + if(WEBKIT && rotation) { + //we can dynamiclly rotate a widget now, show need to remember the transform rather than just remove it + //here jquery.css will return 'none' if element is display none + var oldShapeTransform = document.getElementById(elementId).style['-webkit-transform']; + var oldTextTransform = document.getElementById(textId).style['-webkit-transform']; + $('#' + elementId).css('-webkit-transform', 'scale(1)'); + $('#' + textId).css('-webkit-transform', 'scale(1)'); + } + + $('#' + textId).find('span[id$="_ann"]').each(function(index, value) { + var elementId = value.id.replace('_ann', ''); + + var annPos = $(value).position(); + var left = annPos.left - NOTE_SIZE; + var top = annPos.top; + + $('#' + elementId + 'Note').css('left', left).css('top', top); + }); + + //undo the transform reset + if(WEBKIT && rotation) { + $('#' + elementId).css('-webkit-transform', oldShapeTransform || ''); + $('#' + textId).css('-webkit-transform', oldTextTransform || ''); + } + }; + + var dialogs = {}; + $ax.annotation.ToggleWorkflow = function(event, id, width, height) { + + if(dialogs[id]) { + var $dialog = dialogs[id]; + // reset the dialog + dialogs[id] = undefined; + if($dialog.dialog("isOpen")) { + $dialog.dialog("close"); + return; + } + } + + // we'll need to save the scroll position just for stupid IE which will skip otherwise + var win = $(window); + var scrollY = win.scrollTop(); + var scrollX = win.scrollLeft(); + + var bufferH = 10; + var bufferV = 10; + var blnLeft = false; + var blnAbove = false; + var sourceTop = event.pageY - scrollY; + var sourceLeft = event.pageX - scrollX; + + if(sourceLeft > width + bufferH) { + blnLeft = true; + } + if(sourceTop > height + bufferV) { + blnAbove = true; + } + + var top = 0; + var left = 0; + if(blnAbove) top = sourceTop - height - 20; + else top = sourceTop + 10; + if(blnLeft) left = sourceLeft - width - 4; + else left = sourceLeft - 6; + + $ax.globals.MaxZIndex = $ax.globals.MaxZIndex + 1; + if(IE_10_AND_BELOW) height += 50; + + var dObj = $ax.getObjectFromElementId(id); + var ann = dObj.annotation; + var $dialog = $('
    ') + .appendTo('body') + .html($ax.legacy.GetAnnotationHtml(ann)) + .dialog({ + title: dObj.label, + width: width, + height: height, + minHeight: 150, + zIndex: $ax.globals.MaxZIndex, + position: [left, top], + dialogClass: 'dialogFix', + autoOpen: false + }); + $dialog.parent().appendTo('#base'); + $dialog.dialog('open'); + dialogs[id] = $dialog; + + // scroll ... just for IE + window.scrollTo(scrollX, scrollY); + }; + + $ax.annotation.InitializeAnnotations = function (query) { + if(!$ax.document.configuration.showAnnotations) return; + + query.each(function(dObj, elementId) { + if(!dObj.annotation) return; + + if(dObj.type == 'hyperlink') { + var textId = $ax.GetParentIdFromLink(elementId); + + var elementIdQuery = $('#' + elementId); + elementIdQuery.after(""); + + if($ax.document.configuration.useLabels) { + var label = $('#' + elementId).attr("data-label"); + if(!label || label == "") label = "?"; + $('#' + textId).append("
    " + label + "
    "); + } else { + $('#' + textId).append("
    "); + } + $('#' + elementId + 'Note').click(function(e) { + $ax.annotation.ToggleWorkflow(e, elementId, 300, 200, false); + return false; + }); + + _updateLinkLocations(elementId); + } else { + if($ax.document.configuration.useLabels) { + var label = $('#' + elementId).attr("data-label"); + if(!label || label == "") label = "?"; + $('#' + elementId + "_ann").append("
    " + label + "
    "); + } else { + $('#' + elementId + "_ann").append("
    "); + } + $('#' + elementId + 'Note').click(function(e) { + $ax.annotation.ToggleWorkflow(e, elementId, 300, 200, false); + return false; + }); + } + + $('#' + elementId + 'Note.annnoteimage').append("
    "); + }); + }; + + $ax.annotation.jQueryAnn = function(query) { + var elementIds = []; + query.each(function(diagramObject, elementId) { + if(diagramObject.annotation) elementIds[elementIds.length] = elementId; + }); + var elementIdSelectors = jQuery.map(elementIds, function(elementId) { return '#' + elementId + '_ann'; }); + var jQuerySelectorText = (elementIdSelectors.length > 0) ? elementIdSelectors.join(', ') : ''; + return $(jQuerySelectorText); + }; + + $(window.document).ready(function() { + $ax.annotation.InitializeAnnotations($ax(function(dObj) { return dObj.annotation; })); + + $ax.messageCenter.addMessageListener(function(message, data) { + //If the annotations are being hidden via the Sitemap toggle button, hide any open dialogs + if(message == 'annotationToggle') { + if(data == false) { + for(var index in dialogs) { + var $dialog = dialogs[index]; + if($dialog.dialog("isOpen")) { + $dialog.dialog("close"); + } + } + } + } + }); + }); + + //adjust annotation location to a element's top right corner + $ax.annotation.adjustIconLocation = function(id) { + var ann = document.getElementById(id + "_ann"); + if(ann) { + var corners = $ax.public.fn.getCornersFromComponent(id); + var newTopRight = $ax.public.fn.vectorPlus(corners.relativeTopRight, corners.centerPoint); + //note size is 14x8, this is how rp calculated it as well + ann.style.left = (newTopRight.x - 7) + "px"; + ann.style.top = (newTopRight.y - 4) + "px"; + } + + var ref = document.getElementById(id + "_ref"); + if(ref) { + if(!corners) corners = $ax.public.fn.getCornersFromComponent(id); + var newBottomRight = $ax.public.fn.vectorPlus(corners.relativeBottomRight, corners.centerPoint); + + ref.style.left = (newBottomRight.x - 8) + 'px'; + ref.style.top = (newBottomRight.y - 10) + 'px'; + } + } +}); +//***** axQuery.std.js *****// +// ******* AxQuery Plugins ******** // + +$axure.internal(function($ax) { + $ax.constants = {}; + + $ax.constants.TABLE_TYPE = 'table'; + $ax.constants.MENU_OBJECT_TYPE = 'menuObject'; + $ax.constants.MASTER_TYPE = 'master'; + $ax.constants.PAGE_TYPE = 'page'; + $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE = 'referenceDiagramObject'; + $ax.constants.REPEATER_TYPE = 'repeater'; + $ax.constants.DYNAMIC_PANEL_TYPE = 'dynamicPanel'; + $ax.constants.LAYER_TYPE = 'layer'; + $ax.constants.TEXT_BOX_TYPE = 'textBox'; + $ax.constants.TEXT_AREA_TYPE = 'textArea'; + $ax.constants.LIST_BOX_TYPE = 'listBox'; + $ax.constants.COMBO_BOX_TYPE = 'comboBox'; + $ax.constants.CHECK_BOX_TYPE = 'checkbox'; + $ax.constants.RADIO_BUTTON_TYPE = 'radioButton'; + $ax.constants.BUTTON_TYPE = 'button'; //html button + $ax.constants.IMAGE_MAP_REGION_TYPE = 'imageMapRegion'; + $ax.constants.IMAGE_BOX_TYPE = 'imageBox'; + $ax.constants.VECTOR_SHAPE_TYPE = 'vectorShape'; + $ax.constants.SNAPSHOT_TYPE = 'screenshot'; + $ax.constants.TREE_NODE_OBJECT_TYPE = 'treeNodeObject'; + $ax.constants.TABLE_CELL_TYPE = 'tableCell'; + $ax.constants.VERTICAL_LINE_TYPE = 'verticalLine'; + $ax.constants.HORIZONTAL_LINE_TYPE = 'horizontalLine'; + $ax.constants.INLINE_FRAME_TYPE = 'inlineFrame'; + $ax.constants.CONNECTOR_TYPE = 'connector'; + $ax.constants.ALL_TYPE = '*'; + + $ax.constants.TEXT_TYPE = 'richTextPanel'; + $ax.constants.LINK_TYPE = 'hyperlink'; + + $ax.public.fn.IsTable = function (type) { return type == $ax.constants.TABLE_TYPE; } + $ax.public.fn.IsMenuObject = function (type) { return type == $ax.constants.MENU_OBJECT_TYPE; } + $ax.public.fn.IsMaster = function (type) { return type == $ax.constants.MASTER_TYPE; } + $ax.public.fn.IsPage = function (type) { return type == $ax.constants.PAGE_TYPE; } + $ax.public.fn.IsReferenceDiagramObject = function (type) { return type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE; } + $ax.public.fn.IsRepeater = function (type) { return type == $ax.constants.REPEATER_TYPE; } + $ax.public.fn.IsDynamicPanel = function (type) { return type == $ax.constants.DYNAMIC_PANEL_TYPE; } + $ax.public.fn.IsLayer = function (type) { return type == $ax.constants.LAYER_TYPE; } + $ax.public.fn.IsTextBox = function (type) { return type == $ax.constants.TEXT_BOX_TYPE; } + $ax.public.fn.IsTextArea = function (type) { return type == $ax.constants.TEXT_AREA_TYPE; } + $ax.public.fn.IsListBox = function (type) { return type == $ax.constants.LIST_BOX_TYPE; } + $ax.public.fn.IsComboBox = function (type) { return type == $ax.constants.COMBO_BOX_TYPE; } + $ax.public.fn.IsCheckBox = function (type) { return type == $ax.constants.CHECK_BOX_TYPE; } + $ax.public.fn.IsRadioButton = function (type) { return type == $ax.constants.RADIO_BUTTON_TYPE; } + $ax.public.fn.IsButton = function (type) { return type == $ax.constants.BUTTON_TYPE; } + $ax.public.fn.IsIamgeMapRegion = function (type) { return type == $ax.constants.IMAGE_MAP_REGION_TYPE; } + $ax.public.fn.IsImageBox = function (type) { return type == $ax.constants.IMAGE_BOX_TYPE; } + $ax.public.fn.IsVector = function (type) { return type == $ax.constants.VECTOR_SHAPE_TYPE; } + $ax.public.fn.IsSnapshot = function (type) { return type == $ax.constants.SNAPSHOT_TYPE; } + $ax.public.fn.IsTreeNodeObject = function (type) { return type == $ax.constants.TREE_NODE_OBJECT_TYPE; } + $ax.public.fn.IsTableCell = function (type) { return type == $ax.constants.TABLE_CELL_TYPE; } + $ax.public.fn.IsInlineFrame = function (type) { return type == $ax.constants.INLINE_FRAME_TYPE; } + $ax.public.fn.IsConnector = function (type) { return type == $ax.constants.CONNECTOR_TYPE; } + $ax.public.fn.IsContainer = function (type) { return type== $ax.constants.VECTOR_SHAPE_TYPE || type == $ax.constants.TABLE_TYPE || type == $ax.constants.MENU_OBJECT_TYPE || type == $ax.constants.TREE_NODE_OBJECT_TYPE; } + + var PLAIN_TEXT_TYPES = [$ax.constants.TEXT_BOX_TYPE, $ax.constants.TEXT_AREA_TYPE, $ax.constants.LIST_BOX_TYPE, + $ax.constants.COMBO_BOX_TYPE, $ax.constants.CHECK_BOX_TYPE, $ax.constants.RADIO_BUTTON_TYPE, $ax.constants.BUTTON_TYPE]; + + $ax.public.fn.IsResizable = function (type) { return $.inArray(type, RESIZABLE_TYPES) !== -1; } + var RESIZABLE_TYPES = [ + $ax.constants.BUTTON_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.IMAGE_BOX_TYPE, $ax.constants.IMAGE_MAP_REGION_TYPE, + $ax.constants.INLINE_FRAME_TYPE, $ax.constants.LAYER_TYPE, $ax.constants.LIST_BOX_TYPE, $ax.constants.COMBO_BOX_TYPE, + $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.TEXT_AREA_TYPE, $ax.constants.TEXT_BOX_TYPE, $ax.constants.SNAPSHOT_TYPE + ]; + + $ax.public.fn.SupportsRichText = function() { + var obj = $obj(this.getElementIds()[0]); + // Catch root tree nodes as they are not supported. + if(obj.type == $ax.constants.TREE_NODE_OBJECT_TYPE) return obj.friendlyType == 'Tree Node'; + // Do the same for tree node icons maybe? + + return $.inArray(obj.type, SUPPORTS_RICH_TEXT_TYPES) != -1; + } + var SUPPORTS_RICH_TEXT_TYPES = [$ax.constants.CHECK_BOX_TYPE, $ax.constants.RADIO_BUTTON_TYPE, + $ax.constants.IMAGE_BOX_TYPE, $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.TABLE_CELL_TYPE, $ax.constants.CONNECTOR_TYPE]; + + var _addJQueryFunction = function(name) { + $ax.public.fn[name] = function() { + var val = $.fn[name].apply(this.jQuery(), arguments); + return arguments[0] ? this : val; + }; + }; + var _jQueryFunctionsToAdd = ['text', 'val', 'css']; + for (var jqueryFunctionIndex = 0; jqueryFunctionIndex < _jQueryFunctionsToAdd.length; jqueryFunctionIndex++) _addJQueryFunction(_jQueryFunctionsToAdd[jqueryFunctionIndex]); + + + // var _addJQueryEventFunction = function(name) { + // $ax.public.fn[name] = function() { + // $.fn[name].apply(this.jQuery(), arguments); + // return this; + // }; + // }; + + // var _addJQueryEventFunction = function(name) { + // $ax.public.fn[name] = (function(nn) { + // return function() { + // $.fn[nn].apply(this.jQuery(), arguments); + // return this; + // }; + // })(name); + // }; + + var _addJQueryEventFunction = function(name) { + $ax.public.fn[name] = function() { + //With Martin - No idea why this is necessary. We tried encapsulating the function thinking it was related to closure (above), + //but that didn't fix the problem. If we don't add this Repeaters will give "Uncaught TypeError: Object # has no method 'apply'" + //here (but Indeterminately, often on larger/slower Repeaters) because it is Undefined. However it seems the catch is never hit + //if we surround the statement with the try/catch. Perhaps the try/catch block creates a scope or closure. + try { + $.fn[name].apply(this.jQuery(), arguments); + } catch(e) { + console.log("Couldn't find the event: " + name); + } + + return this; + }; + }; + var _jQueryEventFunctionsToAdd = ['click', 'mouseenter', 'mouseleave', 'bind']; + for(var jqueryEventIndex = 0; jqueryEventIndex < _jQueryEventFunctionsToAdd.length; jqueryEventIndex++) _addJQueryEventFunction(_jQueryEventFunctionsToAdd[jqueryEventIndex]); + + + $ax.public.fn.openLink = function(url, includeVariables) { + this.jQuery().each(function() { + if(!($(this).is('iframe'))) { + return; + } + + var objIframe = $(this).get(0); + + $ax.navigate({ + url: url, + target: "frame", + includeVariables: includeVariables, + frame: objIframe + }); + }); + + return this; + }; + + $ax.public.fn.SetPanelState = function(stateNumber, options, showWhenSet) { + + var animateInInfo = _getAnimateInfo(options && options.animateIn, 500); + var animateOutInfo = _getAnimateInfo(options && options.animateOut, 500); + + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + if ($ax.public.fn.IsDynamicPanel($ax.getTypeFromElementId(elementId))) { + var stateName = $ax.visibility.GetPanelStateId(elementId, Number(stateNumber) - 1); + var wasVisible = $ax.visibility.IsIdVisible(elementId); + // If compressing because you are fit to content and the change of state may change size, must be before the change. + if(options.compress && $ax.dynamicPanelManager.isIdFitToContent(elementId) && wasVisible) { + $ax.dynamicPanelManager.compressDelta(elementId, $ax.visibility.GetPanelState(elementId), stateName, options.vertical, options.compressEasing, options.compressDuration); + } + $ax.visibility.SetPanelState(elementId, stateName, animateOutInfo.easingType, animateOutInfo.direction, animateOutInfo.duration, + animateInInfo.easingType, animateInInfo.direction, animateInInfo.duration, showWhenSet); + // If compressing because of a show, must be after state is set. + if(options.compress && !wasVisible && showWhenSet) { + $ax.dynamicPanelManager.compressToggle(elementId, options.vertical, true, options.compressEasing, options.compressDuration); + } + } + } + + return this; + }; + + $ax.public.fn.show = function(options, eventInfo) { + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + + var lightboxId = $ax.repeater.applySuffixToElementId(elementId, '_lightbox'); + var lightbox = $jobj(lightboxId); + if(options && options.showType == 'lightbox') { + $ax.flyoutManager.unregisterPanel(elementId, true); + // Add lightbox if there isn't one + if(lightbox.length == 0) { + lightbox = $('
    '); + lightbox.attr('id', lightboxId); + var color = 'rgb(' + options.lightbox.r + ',' + options.lightbox.g + ',' + options.lightbox.b + ')'; + lightbox.css({ + position: 'fixed', + left: '0px', + top: '0px', + width: '10000px', + height: '10000px', + 'background-color': color, + opacity: options.lightbox.a / 255 + }); + + var parents = $ax('#' + elementId).getParents(true, ['dynamicPanel'])[0]; + var fixedParentPanelId = undefined; + for(var j = 0; j < parents.length; j++) { + var parentId = parents[j]; + if($jobj(parentId).css('z-index') != 'auto' || $ax.features.supports.mobile) { + fixedParentPanelId = parents[j]; + break; + } + } + + if(!fixedParentPanelId) $('#base').append(lightbox); + else $jobj(fixedParentPanelId).append(lightbox); + + var wasVisible = $ax.visibility.IsIdVisible(elementId); + + (function(lightbox, query) { + $ax.event.attachClick(lightbox, function() { + $ax.action.addAnimation(elementId, $ax.action.queueTypes.fade, function() { + if(!wasVisible) query.hide(); + else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade); + lightbox.remove(); + }); + }); + })(lightbox, this); + } + $ax.legacy.BringToFront(lightboxId, true); + $ax.legacy.BringToFront(elementId, true); + } else if(options && options.showType == 'flyout') { + // Remove lightbox if there is one + lightbox.remove(); + + var src = eventInfo.thiswidget; + var target = $ax.getWidgetInfo(elementId); + var rects = {}; + if(src.valid) rects.src = $ax.geometry.genRect(src, true); + if(target.valid) rects.target = $ax.geometry.genRect(target, true); + $ax.flyoutManager.registerFlyout(rects, elementId, eventInfo.srcElement); + //$ax.style.AddRolloverOverride(elementId); + $ax.legacy.BringToFront(elementId); + } else { + // Remove lightbox, unregister flyout + lightbox.remove(); + $ax.flyoutManager.unregisterPanel(elementId, true); + } + _setVisibility(elementId, true, options); + } + + return this; + }; + + var _getAnimateInfo = function (options, defaultDuration, useHide) { + var animateInfo = { + duration: options && (useHide ? options.durationHide : options.duration) || defaultDuration + }; + + var easing = options && (useHide ? options.easingHide : options.easing) || 'none'; + switch (easing) { + case 'fade': + animateInfo.easingType = 'fade'; + animateInfo.direction = ''; + break; + case 'slideLeft': + animateInfo.easingType = 'swing'; + animateInfo.direction = 'left'; + break; + case 'slideRight': + animateInfo.easingType = 'swing'; + animateInfo.direction = 'right'; + break; + case 'slideUp': + animateInfo.easingType = 'swing'; + animateInfo.direction = 'up'; + break; + case 'slideDown': + ; + animateInfo.easingType = 'swing'; + animateInfo.direction = 'down'; + break; + case 'flipLeft': + animateInfo.easingType = 'flip'; + animateInfo.direction = 'left'; + break; + case 'flipRight': + animateInfo.easingType = 'flip'; + animateInfo.direction = 'right'; + break; + case 'flipUp': + animateInfo.easingType = 'flip'; + animateInfo.direction = 'up'; + break; + case 'flipDown': + animateInfo.easingType = 'flip'; + animateInfo.direction = 'down'; + break; + default: + animateInfo.easingType = 'none'; + animateInfo.direction = ''; + } + + return animateInfo; + }; + + $ax.public.fn.hide = function(options) { + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; +// var wasShown = $ax.visibility.IsIdVisible(elementId); + _setVisibility(elementId, false, options); + } + + return this; + }; + + $ax.public.fn.toggleVisibility = function(options) { + var elementIds = this.getElementIds(); + + for (var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + var show = !$ax.visibility.IsIdVisible(elementId); + _setVisibility(elementId, show, options, !show); + } + + return this; + }; + + var _setVisibility = function (elementId, value, options, useHide) { + var animateInfo = _getAnimateInfo(options, 0, useHide); + + var wasShown = $ax.visibility.IsIdVisible(elementId); + var compress = options && options.showType == 'compress' && wasShown != value; + if (compress) $ax.dynamicPanelManager.compressToggle(elementId, options.vertical, value, options.compressEasing, options.compressDuration); + + var onComplete = function () { + $ax.dynamicPanelManager.fitParentPanel(elementId); + }; + $ax.visibility.SetWidgetVisibility(elementId, { + value: value, + easing: animateInfo.easingType, + direction: animateInfo.direction, + duration: animateInfo.duration, + fire: true, + onComplete: onComplete + }); + + if(options && options.bringToFront) $ax.legacy.BringToFront(elementId); + }; + + $ax.public.fn.setOpacity = function(opacity, easing, duration) { + if(!easing || ! duration) { + easing = 'none'; + duration = 0; + } + + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + var onComplete = function() { + $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade); + }; + + var query = $jobj(elementId); + if(duration == 0 || easing == 'none') { + query.css('opacity', opacity); + onComplete(); + } else query.animate({ opacity: opacity }, { duration: duration, easing: easing, queue: false, complete: onComplete }); + } + } + //move one widget. I didn't combine moveto and moveby, since this is in .public, and separate them maybe more clear for the user + var _move = function (elementId, x, y, options, moveTo) { + if(!options.easing) options.easing = 'none'; + if(!options.duration) options.duration = 500; + var obj = $obj(elementId); + + // Layer move using container now. + if($ax.public.fn.IsLayer(obj.type)) { + $ax.move.MoveWidget(elementId, x, y, options, moveTo, + function () { + if(options.onComplete) options.onComplete(); + $ax.dynamicPanelManager.fitParentPanel(elementId); + }, false); + } else { + var xDelta = x; + var yDelta = y; + if (moveTo) { + var jobj = $jobj(elementId); + + var left = Number(jobj.css('left').replace('px', '')); + var top = Number(jobj.css('top').replace('px', '')); + xDelta = x - left; + yDelta = y - top; + } + $ax.move.MoveWidget(elementId, xDelta, yDelta, options, false, + function () { $ax.dynamicPanelManager.fitParentPanel(elementId); }, true); + } + }; + + $ax.public.fn.moveTo = function (x, y, options) { + var elementIds = this.getElementIds(); + for(var index = 0; index < elementIds.length; index++) { + _move(elementIds[index], x, y, options, true); + } + + return this; + }; + + $ax.public.fn.moveBy = function (x, y, options) { + var elementIds = this.getElementIds(); + + if(x == 0 && y == 0) { + for(var i = 0; i < elementIds.length; i++) { + var elementId = elementIds[i]; + $ax.move.nopMove(elementId, options); + + //$ax.event.raiseSyntheticEvent(elementId, "onMove"); + $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move); + + //if($axure.fn.IsLayer($obj(elementId).type)) { + // var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true); + // for(var j = 0; j < childrenIds.length; j++) $ax.event.raiseSyntheticEvent(childrenIds[j], 'onMove'); + //} + } + return this; + } + + for(var index = 0; index < elementIds.length; index++) { + _move(elementIds[index], x, y, options, false); + } + return this; + }; + + $ax.public.fn.circularMoveAndRotate = function(degreeChange, options, centerPointLeft, centerPointTop, doRotation, moveDelta, resizeOffset, rotatableMove, moveComplete) { + if(!rotatableMove) rotatableMove = { x: 0, y: 0 }; + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + + var onComplete = function () { + $ax.dynamicPanelManager.fitParentPanel(elementId); + if (moveComplete) moveComplete(); + } + + $ax.move.circularMove(elementId, degreeChange, { x: centerPointLeft, y: centerPointTop }, moveDelta, rotatableMove, resizeOffset, options, true, onComplete, doRotation); + if(doRotation) $ax.move.rotate(elementId, degreeChange, options.easing, options.duration, false, true, function () { $ax.dynamicPanelManager.fitParentPanel(elementId); }); + else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.rotate); + } + }; + + $ax.public.fn.rotate = function (degree, easing, duration, to, axShouldFire) { + var elementIds = this.getElementIds(); + // this function will no longer handle compound vectors. + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + degree = parseFloat(degree); + $ax.move.rotate(elementId, degree, easing, duration, to, axShouldFire, function () { $ax.dynamicPanelManager.fitParentPanel(elementId); }); + } + }; + + $ax.public.fn.resize = function(newLocationAndSizeCss, resizeInfo, axShouldFire, moves, onCompletedFunc) { + var elementIds = this.getElementIds(); + if(!elementIds) return; + + var completeAndFire = function(moved, id) { + if(axShouldFire) { + $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.resize); + if(moves) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); + } + + if(onCompletedFunc) onCompletedFunc(); + }; + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + + var obj = $obj(elementId); + if(!$ax.public.fn.IsResizable(obj.type)) { + //$ax.dynamicPanelManager.fitParentPanel(elementId); + completeAndFire(moves, elementId); + continue; + } + + var oldSize = $ax('#' + elementId).size(); + var oldWidth = oldSize.width; + var oldHeight = oldSize.height; + var query = $jobj(elementId); + + var isDynamicPanel = $ax.public.fn.IsDynamicPanel(obj.type); + if(isDynamicPanel) { + // No longer fitToContent, calculate additional styling that needs to be done. + $ax.dynamicPanelManager.setFitToContentCss(elementId, false, oldWidth, oldHeight); + + if (query.css('position') == 'fixed' && ((obj.fixedHorizontal && obj.fixedHorizontal == 'center') || (obj.fixedVertical && obj.fixedVertical == 'middle'))) { + moves = true; + var loc = $ax.dynamicPanelManager.getFixedPosition(elementId, oldWidth, oldHeight, newLocationAndSizeCss.width, newLocationAndSizeCss.height); + if(loc) { + if (loc[0] != 0 && !$ax.dynamicPanelManager.isPercentWidthPanel(obj)) newLocationAndSizeCss['margin-left'] = '+=' + (Number(newLocationAndSizeCss['margin-left'].substr(2)) + loc[0]); + if (loc[1] != 0) newLocationAndSizeCss['margin-top'] = '+=' + (Number(newLocationAndSizeCss['margin-top'].substr(2)) + loc[1]); + } + } + + var onComplete = function() { + $ax.flyoutManager.updateFlyout(elementId); + $ax.dynamicPanelManager.fitParentPanel(elementId); + $ax.dynamicPanelManager.updatePanelPercentWidth(elementId); + $ax.dynamicPanelManager.updatePanelContentPercentWidth(elementId); + + completeAndFire(moves, elementId); + $ax.event.raiseSyntheticEvent(elementId, 'onResize'); + }; + + } else { + //if contains text + var textChildren = query.children('div.text'); + if(textChildren && textChildren.length != 0) { + var textDivId = textChildren.attr('id'); + var textObj = $ax('#' + textDivId); + var leftPadding = textObj.left(true); + var rightPadding = oldWidth - leftPadding - textObj.width(); + //greater or equal to 1px + var newTextWidth = Math.max(newLocationAndSizeCss.width - leftPadding - rightPadding, 1); + var textChildCss = { width: newTextWidth }; + + var textStepFunction = function() { + //change the width of the text div may effect the height + //var currentTextHeight = Number($(textChildren.children('p')[0]).css('height').replace('px', '')); + //textChildren.css('height', currentTextHeight); + var display = $ax.public.fn.displayHackStart(document.getElementById(textDivId)); + $ax.style.updateTextAlignmentForVisibility(textDivId); + $ax.public.fn.displayHackEnd(display); + }; + } + + //get all the other children that matters + onComplete = function() { + $ax.dynamicPanelManager.fitParentPanel(elementId); + completeAndFire(moves, elementId); + + $ax.annotation.adjustIconLocation(elementId); + $ax.event.raiseSyntheticEvent(elementId, 'onResize'); + }; + } + + var children = query.children().not('div.text'); + while(children && children.length && $(children[0]).attr('id').indexOf('container') != -1) { + children = children.children().not('div.text'); + } + + if(children && children.length !== 0) { + var childAnimationArray = []; + var isConnector = $ax.public.fn.IsConnector(obj.type); + children.each(function (i, child) { + var childCss = { + width: newLocationAndSizeCss.width, + height: newLocationAndSizeCss.height + }; + + //$ax.size() use outerWidth/Height(false), which include padding and borders(no margins) + var childSizingObj = $ax('#' + child.id).size(); + var differentSizedImage = childSizingObj.width - oldWidth != 0 || childSizingObj.height - oldHeight != 0; + if ((differentSizedImage || isConnector) && child.tagName == 'IMG') { + //oldwidth is zero for connectors + var widthOffset = oldWidth ? (childSizingObj.width - oldWidth) * newLocationAndSizeCss.width / oldWidth : childSizingObj.width; + var heightOffset = oldHeight ? (childSizingObj.height - oldHeight) * newLocationAndSizeCss.height / oldHeight : childSizingObj.height; + + childCss.width += widthOffset; + childCss.height += heightOffset; + } + //there are elements like inputs, come with a padding and border, so need to use outerwidth for starting point, due to jquery 1.7 css() on width/height bugs + if($(child).css('position') === 'absolute') { + if(child.offsetLeft) { + childSizingObj.left = child.offsetLeft; + childCss.left = oldWidth ? child.offsetLeft * newLocationAndSizeCss.width / oldWidth : child.offsetLeft; //- transformedShift.x; + } + if(child.offsetTop) { + childSizingObj.top = child.offsetTop; + childCss.top = oldHeight ? child.offsetTop * newLocationAndSizeCss.height / oldHeight : child.offsetTop; //- transformedShift.y; + } + } + childAnimationArray.push({ obj: child, sizingObj: childSizingObj, sizingCss: childCss }); + }); + } + + if(!resizeInfo.easing || resizeInfo.easing == 'none') { + query.animate(newLocationAndSizeCss, 0); + if(childAnimationArray) { + $(childAnimationArray).each(function (i, animationObj) { + if(animationObj.resizeMatrixFunction) { + $(animationObj.obj).css($ax.public.fn.setTransformHowever(animationObj.resizeMatrixFunction(animationObj.width, animationObj.height))); + } else { + $(animationObj.obj).animate(animationObj.sizingCss, 0); + } + }); + } + //if(childCss) children.animate(childCss, 0); + //if(sketchyImage && sketchyImageCss) $(sketchyImage).animate(sketchyImageCss, 0); + if(textChildCss) { + textChildren.animate(textChildCss, { + duration: 0, + step: textStepFunction + }); + } + onComplete(); + } else { + if(childAnimationArray) { + $(childAnimationArray).each(function (i, animationObj) { + if(animationObj.resizeMatrixFunction) { + $(animationObj.sizingObj).animate(animationObj.sizingCss, { + queue: false, + duration: resizeInfo.duration, + easing: resizeInfo.easing, + step: function (now) { + var widthRatio = (animationObj.width - 1.0) * now + 1.0; + var heightRatio = (animationObj.height - 1.0) * now + 1.0; + $(animationObj.obj).css($ax.public.fn.setTransformHowever(animationObj.resizeMatrixFunction(widthRatio, heightRatio))); + } + }); + } else { + $(animationObj.sizingObj).animate(animationObj.sizingCss, { + queue: false, + duration: resizeInfo.duration, + easing: resizeInfo.easing, + step: function (now, tween) { + $(animationObj.obj).css(tween.prop, now); + } + }); + } + }); + } + + if(textChildCss) { + textChildren.animate(textChildCss, { + queue: false, + duration: resizeInfo.duration, + easing: resizeInfo.easing, + step: textStepFunction + }); + } + + if(isDynamicPanel) { + query.animate(newLocationAndSizeCss, { queue: false, duration: resizeInfo.duration, easing: resizeInfo.easing, complete: onComplete }); + } else { + var locObj = { + left: $ax.public.fn.GetFieldFromStyle(query, 'left'), top: $ax.public.fn.GetFieldFromStyle(query, 'top'), + width: $ax.public.fn.GetFieldFromStyle(query, 'width'), height: $ax.public.fn.GetFieldFromStyle(query, 'height'), + }; + $(locObj).animate(newLocationAndSizeCss, { + queue: false, + duration: resizeInfo.duration, + easing: resizeInfo.easing, + step: function (now, tween) { + query.css(tween.prop, now); + }, + complete: onComplete + }); + } + } + } + }; + + $ax.public.fn.bringToFront = function() { + var elementIds = this.getElementIds(); + for(var index = 0; index < elementIds.length; index++) { $ax.legacy.BringToFront(elementIds[index]); } + return this; + }; + + $ax.public.fn.sendToBack = function() { + var elementIds = this.getElementIds(); + for(var index = 0; index < elementIds.length; index++) { $ax.legacy.SendToBack(elementIds[index]); } + return this; + }; + + $ax.public.fn.text = function() { + if(arguments[0] == undefined) { + var firstId = this.getElementIds()[0]; + + if(!firstId) { return undefined; } + + return getWidgetText(firstId); + } else { + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var currentItem = elementIds[index]; + + var widgetType = $ax.getTypeFromElementId(currentItem); + + if($ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)) { //For non rtf + SetWidgetFormText(currentItem, arguments[0]); + } else { + var idRtf = '#' + currentItem; + if($(idRtf).length == 0) idRtf = '#u' + (Number(currentItem.substring(1)) + 1); + + if($(idRtf).length != 0) { + //If the richtext div already has some text in it, + //preserve only the first style and get rid of the rest + //If no pre-existing p-span tags, don't do anything + if($(idRtf).find('p').find('span').length > 0) { + $(idRtf).find('p:not(:first)').remove(); + $(idRtf).find('p').find('span:not(:first)').remove(); + + //Replace new-lines with NEWLINE token, then html encode the string, + //finally replace NEWLINE token with linebreak + var textWithLineBreaks = arguments[0].replace(/\n/g, '--NEWLINE--'); + var textHtml = $('
    ').text(textWithLineBreaks).html(); + $(idRtf).find('span').html(textHtml.replace(/--NEWLINE--/g, '
    ')); + } + } + } + } + + return this; + } + }; + + var getWidgetText = function(id) { + var idQuery = $jobj(id); + var inputQuery = $jobj($ax.INPUT(id)); + if(inputQuery.length) idQuery = inputQuery; + + if (idQuery.is('input') && ($ax.public.fn.IsCheckBox(idQuery.attr('type')) || idQuery.attr('type') == 'radio')) { + idQuery = idQuery.parent().find('label').find('div'); + } + + if(idQuery.is('div')) { + var $rtfObj = idQuery.hasClass('text') ? idQuery : idQuery.find('.text'); + if($rtfObj.length == 0) return ''; + + var textOut = ''; + $rtfObj.children('p').each(function(index) { + if(index != 0) textOut += '\n'; + + var htmlContent = $(this).html(); + if(isSoloBr(htmlContent)) return; // It has a solo br, then it was just put in for a newline, and paragraph already added the new line. + + //Replace line breaks (set in SetWidgetRichText) with newlines and nbsp's with regular spaces. + htmlContent = htmlContent.replace(/]*>/ig, '\n').replace(/ /ig, ' '); + textOut += $(htmlContent).text(); + }); + + return textOut; + } else { + var val = idQuery.val(); + return val == undefined ? '' : val; + } + }; + + var isSoloBr = function(html) { + html = $(html); + // Html needs one and only one span + var spanChildren = html.length == 1 && html.is('span') ? html.children() : false; + // Span children needs exactly one br and no text in the span + return spanChildren && spanChildren.length == 1 && spanChildren.is('br') && spanChildren.text().trim() == ''; + }; + + $ax.public.fn.setRichTextHtml = function() { + if(arguments[0] == undefined) { + //No getter function, so just return undefined + return undefined; + } else { + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var currentItem = elementIds[index]; + + var widgetType = $ax.getTypeFromElementId(currentItem); + if ($ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)) { //Do nothing for non rtf + continue; + } else { + //TODO -- [mas] fix this! + var idRtf = '#' + currentItem; + if($(idRtf).length == 0) idRtf = '#u' + (parseInt(currentItem.substring(1)) + 1); + if($(idRtf).length != 0) SetWidgetRichText(idRtf, arguments[0]); + } + } + + return this; + } + }; + + $ax.public.fn.value = function() { + if(arguments[0] == undefined) { + var firstId = this.getElementIds()[0]; + + if(!firstId) { + return undefined; + } + + var widgetType = $ax.getTypeFromElementId(firstId); + + if ($ax.public.fn.IsComboBox(widgetType) || $ax.public.fn.IsListBox(widgetType)) { //for select lists and drop lists + return $('#' + firstId + ' :selected').text(); + } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { //for radio/checkboxes + return $('#' + firstId + '_input').is(':checked'); + } else if ($ax.public.fn.IsTextBox(widgetType)) { //for text box + return $('#' + firstId + '_input').val(); + } else { //for text based form elements + return this.jQuery().first().val(); + } + } else { + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var widgetType = $ax.getTypeFromElementId(elementIds[index]); + + var elementIdQuery = $('#' + elementIds[index]); + + if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { //for radio/checkboxes + if(arguments[0] == true) { + elementIdQuery.attr('checked', true); + } else if(arguments[0] == false) { + elementIdQuery.removeAttr('checked'); + } + } else { //For select lists, drop lists, text based form elements + elementIdQuery.val(arguments[0]); + } + } + + return this; + } + }; + + $ax.public.fn.checked = function() { + if(arguments[0] == undefined) { + return this.selected(); + } else { + this.selected(arguments[0]); + return this; + } + }; + + var _getRelativeLeft = function (id, parent) { + var currentNode = window.document.getElementById(id).offsetParent; + var left = $ax('#' + id).left(true); + while (currentNode != null && currentNode.tagName != "BODY" && currentNode != parent) { + left += currentNode.offsetLeft; + currentNode = currentNode.offsetParent; + } + return left; + }; + + var _getRelativeTop = function(id, parent) { + var currentNode = window.document.getElementById(id).offsetParent; + var top = $ax('#' + id).top(true); + while(currentNode != null && currentNode.tagName != "BODY" && currentNode != parent) { + top += currentNode.offsetTop; + currentNode = currentNode.offsetParent; + } + return top; + }; + + var _scrollHelper = function(id, scrollX, scrollY, easing, duration) { + var target = window.document.getElementById(id); + var scrollable = $ax.legacy.GetScrollable(target); + var targetLeft = _getRelativeLeft(id, scrollable); + var targetTop = _getRelativeTop(id, scrollable); + if(!scrollX) targetLeft = scrollable.scrollLeft; + if(!scrollY) targetTop = scrollable.scrollTop; + + var $scrollable = $(scrollable); + if($scrollable.is('body')) { + $scrollable = $('html,body'); + } + + if(easing == 'none') { + if(scrollY) $scrollable.scrollTop(targetTop); + if(scrollX) $scrollable.scrollLeft(targetLeft); + } else { + if(!scrollX) { + $scrollable.animate({ scrollTop: targetTop }, duration, easing); + } else if(!scrollY) { + $scrollable.animate({ scrollLeft: targetLeft }, duration, easing); + } else { + $scrollable.animate({ scrollTop: targetTop, scrollLeft: targetLeft }, duration, easing); + } + } + }; + + $ax.public.fn.scroll = function(scrollOption) { + var easing = 'none'; + var duration = 500; + + if(scrollOption && scrollOption.easing) { + easing = scrollOption.easing; + + if(scrollOption.duration) { + duration = scrollOption.duration; + } + } + + var scrollX = true; + var scrollY = true; + + if(scrollOption.direction == 'vertical') { + scrollX = false; + } else if(scrollOption.direction == 'horizontal') { + scrollY = false; + } + + var elementIds = this.getElementIds(); + for(var index = 0; index < elementIds.length; index++) { + // if($ax.getTypeFromElementId(elementIds[index]) == IMAGE_MAP_REGION_TYPE) { + _scrollHelper(elementIds[index], scrollX, scrollY, easing, duration); + // } + } + + return this; + }; + + $ax.public.fn.enabled = function() { + if(arguments[0] == undefined) { + var firstId = this.getElementIds()[0]; + if(!firstId) return undefined; + + var widgetType = $ax.getTypeFromElementId(firstId); + if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType)) return !$ax.style.IsWidgetDisabled(firstId); + else return this.jQuery().first().not(':disabled').length > 0; + } else { + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + var widgetType = $ax.getTypeFromElementId(elementId); + + var enabled = arguments[0]; + if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType)) $ax.style.SetWidgetEnabled(elementId, enabled); + if ($ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)) { + $ax.style.SetWidgetEnabled(elementId, enabled); + var children = this.getChildren()[index].children; + for(var i = 0; i < children.length; i++) { + $axure('#' + children[i]).enabled(enabled); + } + } + var obj = $obj(elementId); + var images = obj.images; + if(PLAIN_TEXT_TYPES.indexOf(widgetType) != -1 && images) { + var img = $jobj($ax.repeater.applySuffixToElementId(elementId, '_image_sketch')); + var key = (enabled ? 'normal~' : 'disabled~') + ($ax.adaptive.currentViewId || ''); + img.attr('src', images[key]); + + } + var jobj = $jobj(elementId); + var input = $jobj($ax.INPUT(elementId)); + if(input.length) jobj = input; + + if (OS_MAC && WEBKIT && $ax.public.fn.IsComboBox(widgetType)) jobj.css('color', enabled ? '' : 'grayText'); + + if(enabled) jobj.removeAttr('disabled'); + else jobj.attr('disabled', 'disabled'); + } + + return this; + } + }; + + $ax.public.fn.visible = function() { + var ids = this.getElementIds(); + for(var index = 0; index < ids.length; index++) $ax.visibility.SetIdVisible(ids[index], arguments[0]); + return this; + }; + + $ax.public.fn.selected = function() { + if(arguments[0] == undefined) { + var firstId = this.getElementIds()[0]; + if(!firstId) return undefined; + + var widgetType = $ax.getTypeFromElementId(firstId); + if ($ax.public.fn.IsTreeNodeObject(widgetType)) { + var treeNodeButtonShapeId = ''; + var allElementIds = $ax.getAllElementIds(); + for(var i = 0; i < allElementIds.length; i++) { + var elementId = allElementIds[i]; + var currObj = $ax.getObjectFromElementId(elementId); + + if ($ax.public.fn.IsVector(currObj.type) && currObj.parent && currObj.parent.scriptIds && currObj.parent.scriptIds[0] == firstId) { + treeNodeButtonShapeId = elementId; + break; + } + } + + if(treeNodeButtonShapeId == '') return undefined; + return $ax.style.IsWidgetSelected(treeNodeButtonShapeId); + } else if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsTableCell(widgetType) || $ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)) { + return $ax.style.IsWidgetSelected(firstId); + } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { + return $jobj($ax.INPUT(firstId)).prop('checked'); + } + return this; + } + var elementIds = this.getElementIds(); + var func = typeof (arguments[0]) === 'function' ? arguments[0] : null; + var enabled = arguments[0]; // If this is a function it will be overridden with the return value; + + for(var index = 0; index < elementIds.length; index++) { + var elementId = elementIds[index]; + if(func) { + enabled = func($axure('#' + elementId)); + } + + var widgetType = $ax.getTypeFromElementId(elementId); + + if ($ax.public.fn.IsTreeNodeObject(widgetType)) { //for tree node + var treeRootId = $('#' + elementIds[index]).parents('.treeroot').attr('id'); + + var treeNodeButtonShapeId = ''; + var childElementIds = $jobj(elementId).children(); + for(var i = 0; i < childElementIds.length; i++) { + var elementId = childElementIds[i].id; + var currObj = $ax.getObjectFromElementId(elementId); + + if (currObj && currObj.type == $ax.constants.VECTOR_SHAPE_TYPE && currObj.parent && + currObj.parent.scriptIds && currObj.parent.scriptIds[0] == elementIds[index]) { + treeNodeButtonShapeId = elementId; + break; + } + } + + if(treeNodeButtonShapeId == '') continue; + + $ax.tree.SelectTreeNode(elementId, enabled); + } else if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsTableCell(widgetType) || $ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)) { + $ax.style.SetWidgetSelected(elementIds[index], enabled); + } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { + var query = $jobj($ax.INPUT(elementId)); + var curr = query.prop('checked'); + //NOTE: won't fire onselect nore onunselect event if states didn't changes + if(curr != enabled) { + query.prop('checked', enabled); + $ax.event.TryFireCheckChanged(elementId, enabled); + } + } + } + return this; + }; + + $ax.public.fn.focus = function() { + var firstId = this.getElementIds()[0]; + var focusableId = $ax.event.getFocusableWidgetOrChildId(firstId); + $('#' + focusableId).focus(); + + return this; + }; + + $ax.public.fn.expanded = function() { + if(arguments[0] == undefined) { + var firstId = this.getElementIds()[0]; + return firstId && !$ax.public.fn.IsTreeNodeObject($ax.getTypeFromElementId(firstId)) && $ax.visibility.IsIdVisible(firstId + '_children'); + } else { + var elementIds = this.getElementIds(); + + for(var index = 0; index < elementIds.length; index++) { + if ($ax.public.fn.IsTreeNodeObject($ax.getTypeFromElementId(elementIds[index]))) { + var treeNodeId = elementIds[index]; + var childContainerId = treeNodeId + '_children'; + + var scriptId = $ax.repeater.getScriptIdFromElementId(treeNodeId); + var itemId = $ax.repeater.getItemIdFromElementId(treeNodeId); + var plusMinusId = 'u' + (parseInt(scriptId.substring(1)) + 1); + if(itemId) plusMinusId = $ax.repeater.createElementId(plusMinusId, itemId); + if($('#' + childContainerId).length == 0 || !$jobj(plusMinusId).children().first().is('img')) + plusMinusId = ''; + + if(arguments[0] == true) { + $ax.tree.ExpandNode(treeNodeId, childContainerId, plusMinusId); + } else if(arguments[0] == false) { + $ax.tree.CollapseNode(treeNodeId, childContainerId, plusMinusId); + } + } + } + + return this; + } + }; + + $ax.public.fn.size = function () { + var firstId = this.getElementIds()[0]; + if(!firstId) return undefined; + + var object = $ax.getObjectFromElementIdDisregardHex(firstId); + if(object && (object.type == 'layer' || object.generateCompound)) { + var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId); + return { width: boundingRect.width, height: boundingRect.height }; + } + + var firstIdObject = $jobj(firstId); + var trap = _displayWidget($ax.repeater.removeSuffixFromElementId(firstId)); + var size = { width: firstIdObject.outerWidth(), height: firstIdObject.outerHeight() }; + trap(); + return size; + }; + + $ax.public.fn.width = function() { + var firstId = this.getElementIds()[0]; + if(!firstId) return undefined; + + var object = $ax.getObjectFromElementIdDisregardHex(firstId); + if (object && (object.type == 'layer' || object.generateCompound)) { + var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId); + return boundingRect.width; + } + + var firstIdObject = $jobj(firstId); + + return firstIdObject.outerWidth(); + }; + + $ax.public.fn.height = function() { + var firstId = this.getElementIds()[0]; + if(!firstId) return undefined; + + var object = $ax.getObjectFromElementIdDisregardHex(firstId); + if (object && (object.type == 'layer' || object.generateCompound)) { + var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId); + return boundingRect.height; + } + + var firstIdObject = $jobj(firstId); + + return firstIdObject.outerHeight(); + }; + + $ax.public.fn.readAttribute = function(object, attribute) { + if(object && object.hasAttribute(attribute)) { + return object.getAttribute(attribute); + } + return null; + }; + + $ax.public.fn.locRelativeIgnoreLayer = function (vert) { + var elementId = this.getElementIds()[0]; + if(!elementId) return undefined; + + var parents = this.getParents(true, '*')[0]; + + for(var i = 0; i < parents.length; i++) { + var type = $ax.getTypeFromElementId(parents[i]); + if(!$axure.fn.IsLayer(type) && !$axure.fn.IsReferenceDiagramObject(type)) { + var func = vert ? _getRelativeTop : _getRelativeLeft; + return func(elementId, $jobj(parents[i])[0]); + } + } + var axThis = $ax('#' + elementId); + return vert ? axThis.top() : _bodyToWorld(axThis.left(), true); + }; + + var _bodyToWorld = $axure.fn.bodyToWorld = function(x, from) { + var body = $('body'); + if (body.css('position') != 'relative') return x; + var offset = (Number(body.css('left').replace('px', '')) + Math.max(0, ($(window).width() - body.width()) / 2)); + if(from) offset *= -1; + return x + offset; + } + + $ax.public.fn.left = function (relative) { + var firstId = this.getElementIds()[0]; + if(!firstId) return undefined; + + var left = _getLoc(firstId, false, false, relative); + + // If you are absolute, unless your are a pinned panel... + if(relative || $obj(firstId) && $obj(firstId).fixedVertical) return left; + + // ... or you are in one... + var parentPanels = $ax('#' + firstId).getParents(true, 'dynamicPanel')[0]; + for(var i = 0; i < parentPanels.length; i++) if ($obj(parentPanels[i]).fixedVertical) return left; + + // ... you must convert from body to world coordinates + return _bodyToWorld(left); + }; + + $ax.public.fn.top = function(relative) { + var firstId = this.getElementIds()[0]; + return firstId && _getLoc(firstId, true, false, relative); + }; + + var _getLoc = function(id, vert, high, relative) { + var mathFunc = high ? 'max' : 'min'; + var prop = vert ? 'top' : 'left'; + var dim = vert ? 'height' : 'width'; + + var obj = $jobj(id); + var strippedId = $ax.repeater.removeSuffixFromElementId(id); + var axObj = $obj(strippedId); + var oldDisplay = obj.css('display'); + var displaySet = false; + if(oldDisplay == 'none') { + obj.css('display', ''); + displaySet = true; + } + var loc = Math.NaN; + var rdo = axObj.type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE; + + if (!rdo) loc = $ax.getNumFromPx(obj.css(prop)); + + var fixed = _fixedOffset(id, vert); + if(fixed.valid) loc = !vert && fixed.fullWidth ? 0 : fixed.offset; + else if (!relative) { + var parents = []; + var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent + while($ax.public.fn.IsContainer(parObj.type)) { + parents.push($ax.getScriptIdFromPath([parObj.id], strippedId)); + parObj = parObj.parent; + } + var otherParents = $ax('#' + id).getParents(true, ['item', 'repeater', 'dynamicPanel', 'layer'])[0]; + for(var i = 0; i < otherParents.length; i++) { + parents.push(otherParents[i]); + } + + for(var i = 0; i < parents.length; i++) { + var parentId = $ax.visibility.getWidgetFromContainer(parents[i]); + var parent = $ax.visibility.applyWidgetContainer(parentId, true); + + // Layer may not have container, and will be at 0,0 otherwise. + if (!parent.length) continue; + + fixed = _fixedOffset(parentId, vert); + if(fixed.valid) { + loc += fixed.offset; + break; // If fixed ignore any parents if there are any, they don't matter. + } else loc += $ax.getNumFromPx(parent.css(prop)); + } + } + + if (high) loc += obj[dim](); + + // Special Layer code + if (axObj.type == 'layer') { + // If layer has a container, then use that. Otherwise must deal with children. Children can move in container after created, but ignoring for now. + var container = $ax.visibility.applyWidgetContainer(id, true, true); + if(container.length) loc += $ax.getNumFromPx(container.css(prop)); + else loc += (_getChildLoc(axObj.objs, vert, high, dim, true, id) || 0); + } + + if(displaySet) obj.css('display', oldDisplay); + return loc; + }; + + var _getChildLoc = function (children, vert, high, dim, root, path, itemId) { + if (typeof (path) == 'string') { + itemId = $ax.repeater.getItemIdFromElementId(path); + path = $ax.getPathFromScriptId(path); + path.pop(); // Remove object id, only want rdo path. + } + var mathFunc = high ? 'max' : 'min'; + var childLoc = NaN; + for (var i = 0; i < children.length; i++) { + var childObj = children[i]; + var childId = $ax.getElementIdFromPath([childObj.id], { relativeTo: path }); + if (!childId) continue; + childId = $ax.repeater.createElementId(childId, itemId); + if($ax.public.fn.IsReferenceDiagramObject(childObj.type)) { + path.push(childObj.id); + var childProp = _getChildLoc($ax.pageData.masters[$obj(childId).masterId].diagram.objects, vert, high, dim, false, path, itemId); + path.pop(); + if(isNaN(childProp)) continue; + } else if($ax.public.fn.IsLayer(childObj.type)) { + childProp = _getChildLoc(childObj.objs, vert, high, dim, false, path, itemId); + } else { + if(!$ax.visibility.IsIdVisible(childId)) continue; + childProp = $ax('#' + childId).locRelativeIgnoreLayer(vert); + if(high) childProp += $jobj(childId)[dim](); + } + + if(isNaN(childLoc)) childLoc = childProp; + else if(!isNaN(childProp)) childLoc = Math[mathFunc](childLoc, childProp); + } + + return root && isNaN(childLoc) ? 0 : childLoc; + }; + + var _fixedOffset = function (id, vert) { + var axObj = $obj(id); + //I think this is only for pinned panels? So why are we coming through here for rtps? + if(!axObj) return { valid: false }; + + var dim = vert ? 'height' : 'width'; + var alignment = axObj['fixed' + (vert ? 'Vertical' : 'Horizontal')]; + if(!alignment) return { valid: false }; + var loc = 0; + + // TODO: This returns 0 for width/height it or any parent is display none. Similar issue when using axquery width/height + // TODO: Look into replacing this with axquery width/height and fixing that to use this hack. Potentially want to make js generic trapper. + var trap = _displayWidget(id); + var query = $jobj(id); + var objSize = query[dim](); + trap(); + + if(alignment == 'center' || alignment == 'middle') { + loc = $ax.getNumFromPx(query.css('margin-' + (vert ? 'top' : 'left'))); + loc += ($(window)[dim]()) / 2; + } else if(alignment == 'bottom' || alignment == 'right') { + loc = $ax.getNumFromPx(query.css(vert ? 'bottom' : 'right')); + loc = $(window)[dim]() - objSize - loc; // subract loc because margin here moves farther left/up as it gets bigger. + } else { + loc = $ax.getNumFromPx(query.css(vert ? 'top' : 'left')); + } + + var scrollKey = 'scroll' + (vert ? 'Top' : 'Left'); + return { offset: $(window)[scrollKey]() + loc, valid: true, fullWidth: axObj.percentWidth == 1 }; + }; + + var _displayWidget = function(id) { + var parents = $ax('#' + id).getParents(true, '*')[0]; + parents.push(id); // also need to show self + + var displayed = []; + for(var i = 0; i < parents.length; i++) { + var currId = parents[i]; + var currObj = $jobj(currId); + if(currObj.css('display') == 'none') { + currObj.css('display', 'block'); + displayed.push(currId); + } + } + + return function() { + for(var i = 0; i < displayed.length; i++) { + $jobj(displayed[i]).css('display', 'none'); + } + }; + } +}); + +//***** doc.js *****// +$axure.internal(function($ax) { + var _pageData; + + + var _initializePageFragment = function(pageFragment, objIdToObject) { + var objectArrayHelper = function(objects, parent) { + for(var i = 0; i < objects.length; i++) { + diagramObjectHelper(objects[i], parent); + } + }; + + var diagramObjectHelper = function(diagramObject, parent) { + $ax.initializeObject('diagramObject', diagramObject); + objIdToObject[pageFragment.packageId + '~' + diagramObject.id] = diagramObject; + diagramObject.parent = parent; + diagramObject.owner = pageFragment; + diagramObject.scriptIds = []; + if(diagramObject.diagrams) { //dynamic panel + for(var i = 0; i < diagramObject.diagrams.length; i++) { + var diagram = diagramObject.diagrams[i]; + objectArrayHelper(diagram.objects, diagram); + } + } else if($ax.public.fn.IsLayer(diagramObject.type)) { + var layerObjs = diagramObject.objs; + objectArrayHelper(layerObjs, parent); + } + if(diagramObject.objects) objectArrayHelper(diagramObject.objects, diagramObject); + }; + objectArrayHelper(pageFragment.diagram.objects, pageFragment.diagram); + }; + + var _initalizeStylesheet = function(stylesheet) { + var stylesById = {}; + var customStyles = stylesheet.customStyles; + for(var key in customStyles) { + var style = customStyles[key]; + stylesById[style.id] = style; + } + var duplicateStyles = stylesheet.duplicateStyles; + for(var duplicateKey in duplicateStyles) { + stylesById[duplicateKey] = stylesById[duplicateStyles[duplicateKey]]; + } + + stylesheet.stylesById = stylesById; + }; + + + var _initializeDocumentData = function() { + _initalizeStylesheet($ax.document.stylesheet); + }; + + + var _initializePageData; + // ******* Dictionaries ******** // + (function() { + var scriptIdToParentLayer = {}; + var elementIdToObject = {}; + var scriptIdToObject = {}; + var scriptIdToRepeaterId = {}; + var repeaterIdToScriptIds = {}; + var repeaterIdToItemIds = {}; + var scriptIdToPath = {}; + var _scriptIds = []; + var elementIdToText = {}; + var radioGroupToSelectedElementId = {}; + _initializePageData = function() { + if(!_pageData || !_pageData.page || !_pageData.page.diagram) return; + + var objIdToObject = {}; + _initializePageFragment(_pageData.page, objIdToObject); + for(var masterId in _pageData.masters) { + var master = _pageData.masters[masterId]; + _initializePageFragment(master, objIdToObject); + } + + var _pathsToScriptIds = []; + _pathToScriptIdHelper(_pageData.objectPaths, [], _pathsToScriptIds, scriptIdToPath); + + for(var i = 0; i < _pathsToScriptIds.length; i++) { + var path = _pathsToScriptIds[i].idPath; + var scriptId = _pathsToScriptIds[i].scriptId; + + var packageId = _pageData.page.packageId; + if(path.length > 1) { + for(var j = 0; j < path.length - 1; j++) { + var rdoId = path[j]; + var rdo = objIdToObject[packageId + '~' + rdoId]; + packageId = rdo.masterId; + } + } + var diagramObject = objIdToObject[packageId + '~' + path[path.length - 1]]; + diagramObject.scriptIds[diagramObject.scriptIds.length] = scriptId; + + scriptIdToObject[scriptId] = diagramObject; + _scriptIds[_scriptIds.length] = scriptId; + } + + // Now map scriptIds to repeaters and layers + var mapScriptIdToRepeaterId = function(scriptId, repeaterId) { + scriptIdToRepeaterId[scriptId] = repeaterId; + var scriptIds = repeaterIdToScriptIds[repeaterId]; + if(scriptIds) scriptIds[scriptIds.length] = scriptId; + else repeaterIdToScriptIds[repeaterId] = [scriptId]; + }; + var mapScriptIdToLayerId = function(obj, layerId, path) { + var pathCopy = $ax.deepCopy(path); + pathCopy[path.length] = obj.id; + var scriptId = $ax.getScriptIdFromPath(pathCopy); + scriptIdToParentLayer[scriptId] = layerId; + } + var mapIdsToRepeaterAndLayer = function(path, objs, repeaterId) { + var pathCopy = $ax.deepCopy(path); + + for(var i = 0; i < objs.length; i++) { + var obj = objs[i]; + pathCopy[path.length] = obj.id; + var scriptId = $ax.getScriptIdFromPath(pathCopy); + // Rdo have no element on page and are not mapped to the repeater + if(repeaterId) mapScriptIdToRepeaterId(scriptId, repeaterId); + + if($ax.public.fn.IsDynamicPanel(obj.type)) { + for(var j = 0; j < obj.diagrams.length; j++) mapIdsToRepeaterAndLayer(path, obj.diagrams[j].objects, repeaterId); + } else if($ax.public.fn.IsReferenceDiagramObject(obj.type)) { + mapIdsToRepeaterAndLayer(pathCopy, $ax.pageData.masters[obj.masterId].diagram.objects, repeaterId); + } else if($ax.public.fn.IsRepeater(obj.type)) { + mapScriptIdToRepeaterId(scriptId, scriptId); + mapIdsToRepeaterAndLayer(path, obj.objects, scriptId); + } else if($ax.public.fn.IsLayer(obj.type)) { + var layerObjs = obj.objs; + for(var j = 0; j < layerObjs.length; j++) { + mapScriptIdToLayerId(layerObjs[j], scriptId, path); + } + mapIdsToRepeaterAndLayer(path, layerObjs, repeaterId); + } else if(obj.objects && obj.objects.length) { + if(repeaterId) { + for(var j = 0; j < obj.objects.length; j++) { + mapIdsToRepeaterAndLayer(path, obj.objects, repeaterId); + } + } + } + } + }; + mapIdsToRepeaterAndLayer([], $ax.pageData.page.diagram.objects); + }; + + + $ax.getPathFromScriptId = function(scriptId) { + var reversedPath = []; + var path = scriptIdToPath[scriptId]; + while(path && path.uniqueId) { + reversedPath[reversedPath.length] = path.uniqueId; + path = path.parent; + } + return reversedPath.reverse(); + }; + + var _getScriptIdFromFullPath = function(path) { + var current = $ax.pageData.objectPaths; + for(var i = 0; i < path.length; i++) { + current = current[path[i]]; + if(!current) return current; + } + return current && current.scriptId; + }; + + + var _getScriptIdFromPath = function(path, relativeTo) { + var relativePath = []; + var includeMasterInPath = false; + if(relativeTo) { + var relativeToScriptId; + if(relativeTo.srcElement) { //this is eventInfo + relativeToScriptId = $ax.repeater.getScriptIdFromElementId(relativeTo.srcElement); + includeMasterInPath = relativeTo.isMasterEvent; + } else if(typeof relativeTo === 'string') { //this is an element id + relativeToScriptId = relativeTo; + } + + if(relativeToScriptId) { + relativePath = $ax.getPathFromScriptId(relativeToScriptId); + if(!includeMasterInPath) relativePath = relativePath.slice(0, relativePath.length - 1); + } else if(relativeTo instanceof Array) { //this is a path + relativePath = relativeTo; + } + } + var fullPath = relativePath.concat(path); + var scriptId = _getScriptIdFromFullPath(fullPath); + return !$ax.visibility.isScriptIdLimbo(scriptId) && scriptId; + }; + $ax.getScriptIdFromPath = _getScriptIdFromPath; + + var _getElementIdsFromPath = function(path, eventInfo) { + var scriptId = _getScriptIdFromPath(path, eventInfo); + if(!scriptId) return []; + // Don't need placed check hear. If unplaced, scriptId will be undefined and exit out before here. + return $ax.getElementIdsFromEventAndScriptId(eventInfo, scriptId); + }; + $ax.getElementIdsFromPath = _getElementIdsFromPath; + + var _getElementIdFromPath = function(path, params) { + var scriptId = _getScriptIdFromPath(path, params.relativeTo); + if(!scriptId) return scriptId; + + var itemNum = params.itemNum; + if(params.relativeTo && typeof params.relativeTo === 'string') { + if($jobj(params.relativeTo)) itemNum = $ax.repeater.getItemIdFromElementId(params.relativeTo); + } + return $ax.repeater.createElementId(scriptId, itemNum); + }; + $ax.getElementIdFromPath = _getElementIdFromPath; + + var _getElementsIdFromEventAndScriptId = function(eventInfo, scriptId) { + var itemId = eventInfo && $ax.repeater.getItemIdFromElementId(eventInfo.srcElement); + var target = false; + // Try to get itemId from target if you can't get it from source. + if(!itemId) { + itemId = eventInfo && eventInfo.targetElement && $ax.repeater.getItemIdFromElementId(eventInfo.targetElement); + if(itemId) target = true; + } + + var parentRepeater = $ax.getParentRepeaterFromScriptId(scriptId); + if(parentRepeater && scriptId != parentRepeater) { + if(itemId && (!eventInfo || parentRepeater == $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(target ? eventInfo.targetElement : eventInfo.srcElement)))) { + return [$ax.repeater.createElementId(scriptId, itemId)]; + } + var elementIds = []; + var itemIds = $ax.getItemIdsForRepeater(parentRepeater); + if(!itemIds) return []; + + for(var i = 0; i < itemIds.length; i++) elementIds[i] = $ax.repeater.createElementId(scriptId, itemIds[i]); + return elementIds; + } + return [scriptId]; + }; + $ax.getElementIdsFromEventAndScriptId = _getElementsIdFromEventAndScriptId; + + var _getSrcElementIdFromEvent = function(event) { + var currentQuery = $(event.srcElement || event.target); + while(currentQuery && currentQuery.length && (!$obj(currentQuery.attr('id')) || $jobj(currentQuery.attr('id')).hasClass('text'))) { + currentQuery = currentQuery.parent(); + }; + return currentQuery.attr('id'); + }; + $ax.getSrcElementIdFromEvent = _getSrcElementIdFromEvent; + + var _getEventInfoFromEvent = function(event, skipShowDescriptions, elementId) { + var eventInfo = {}; + eventInfo.srcElement = elementId; + eventInfo.now = new Date(); + + if(event != null) { + //elementId can be empty string, so can't simple use "or" assignment here. + eventInfo.srcElement = elementId || elementId == '' ? elementId : _getSrcElementIdFromEvent(event); + eventInfo.which = event.which; + + // When getting locations in mobile, need to extract the touch object to get the mouse location attributes + var mouseEvent = (event.originalEvent && event.originalEvent.changedTouches && event.originalEvent.changedTouches[0]) || event.originalEvent; + if(mouseEvent && !mouseEvent.type) mouseEvent.type = event.type; + + if(skipShowDescriptions) eventInfo.skipShowDescriptions = true; + + // Always update mouse location if possible + $ax.event.updateMouseLocation(mouseEvent); + } + + // Always set event info about cursor + var _cursor = eventInfo.cursor = {}; + _cursor.x = $ax.mouseLocation.x; + _cursor.y = $ax.mouseLocation.y; + + var body = $('body'); + if(body.css('position') == 'relative') { + _cursor.x -= (Number(body.css('left').replace('px', '')) + Math.max(0, ($(window).width() - body.width()) / 2)); + } + + eventInfo.pageX = _cursor.x + 'px'; + eventInfo.pageY = _cursor.y + 'px'; + + // Do Keyboard Info + eventInfo.keyInfo = $ax.event.keyState(); + + eventInfo.window = _getWindowInfo(); + + eventInfo.thiswidget = _getWidgetInfo(eventInfo.srcElement); + eventInfo.item = _getItemInfo(eventInfo.srcElement); + eventInfo.dragInfo = $ax.drag.GetWidgetDragInfo(); + + return eventInfo; + }; + $ax.getEventInfoFromEvent = _getEventInfoFromEvent; + + $ax.getBasicEventInfo = function() { + var eventInfo = {}; + eventInfo.now = new Date(); + eventInfo.window = _getWindowInfo(); + eventInfo.cursor = { x: 0, y: 0}; + return eventInfo; + + }; + + var _getWindowInfo = function() { + var win = {}; + win.width = $(window).width(); + win.height = $(window).height(); + win.scrollx = $(window).scrollLeft(); + win.scrolly = $(window).scrollTop(); + return win; + }; + $ax.getWindowInfo = _getWindowInfo; + + var repeaterInfoCache = []; + $ax.cacheRepeaterInfo = function(repeaterId, repeaterInfo) { + repeaterInfoCache[repeaterId] = repeaterInfo; + } + $ax.removeCachedRepeaterInfo = function(repeaterId) { + repeaterInfoCache[repeaterId] = undefined; + } + + var _getItemInfo = function(elementId) { + if(!elementId) return { valid: false }; + + elementId = _getParentElement(elementId); + + var index = $ax.repeater.getItemIdFromElementId(elementId); + if(!index) return { valid: false }; + + var item = { valid: true }; + + var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); + var repeaterId = $ax.getParentRepeaterFromScriptId(scriptId); + item.repeater = repeaterInfoCache[repeaterId] ? repeaterInfoCache[repeaterId] : _getWidgetInfo(repeaterId); + $ax.repeater.setDisplayProps(item, repeaterId, index); + item.ismarked = $ax.repeater.isEditItem(repeaterId, index); + item.isvisible = Boolean($jobj(elementId).length); + + return item; + }; + $ax.getItemInfo = _getItemInfo; + + var _getWidgetInfo = function(elementId) { + if(!elementId) return { valid: false }; + + elementId = _getParentElement(elementId); + + var elementAxQuery = $ax('#' + elementId); + var elementQuery = $jobj(elementId); + var obj = $obj(elementId); + var widget = { valid: true, isWidget: true, obj: obj, elementQuery: elementQuery, isLayer: $ax.public.fn.IsLayer(obj.type) }; + widget.elementId = elementId; + widget.name = widget.label = (elementQuery.data('label') ? elementQuery.data('label') : ''); + widget.text = $ax('#' + elementId).text(); + widget.opacity = Number(elementQuery.css('opacity')) * 100; + widget.rotation = $ax.move.getRotationDegree(widget.elementId); + var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); + var repeaterId = $ax.getParentRepeaterFromScriptId(scriptId); + if(repeaterId) widget.repeater = $ax.public.fn.IsRepeater(obj.type) ? widget : _getWidgetInfo(repeaterId); + + //if($ax.public.fn.IsLayer(obj.type)) { + // var boundingRect = $ax.public.fn.getWidgetBoundingRect(elementId); + // widget.x = boundingRect.left; + // widget.y = boundingRect.top; + // widget.width = boundingRect.width; + // widget.height = boundingRect.height; + // if(elementQuery.length != 0) { + // widget.pagex = elementAxQuery.left(); + // widget.pagey = elementAxQuery.top(); + // } + //} else { + // var elementExists = elementQuery.length > 0; + // var x = elementExists ? elementAxQuery.locRelativeIgnoreLayer(false) : 0; + // var y = elementExists ? elementAxQuery.locRelativeIgnoreLayer(true) : 0; + + // widget.x = x; + // widget.y = y; + + // if(elementExists) { + // widget.pagex = elementAxQuery.left(); + // widget.pagey = elementAxQuery.top(); + // widget.width = elementAxQuery.width(); + // widget.height = elementAxQuery.height(); + // } + + // //if (obj.generateCompound) { + // // // assume this means that this is a compound vector. + // // widget.x = boundingRect.left; + // // widget.y = boundingRect.top; + + // // //widget.pagex += boundingRect.left; + // // //widget.pagey += boundingRect.top; + // //} + + //} + + + // Right now only dynamic panel can scroll + if($ax.public.fn.IsDynamicPanel(obj.type)) { + var stateQuery = $('#' + $ax.visibility.GetPanelState(elementId)); + widget.scrollx = stateQuery.scrollLeft(); + widget.scrolly = stateQuery.scrollTop(); + widget.stateQuery = stateQuery; + + //if($ax.dynamicPanelManager.isIdFitToContent(elementId)) { + // widget.width = stateQuery.width(); + // widget.height = stateQuery.height(); + //} + } else { + widget.scrollx = 0; + widget.scrolly = 0; + } + + // repeater only props + if($ax.public.fn.IsRepeater(obj.type)) { + widget.visibleitemcount = repeaterIdToItemIds[scriptId] ? repeaterIdToItemIds[scriptId].length : $ax.repeater.getVisibleDataCount(scriptId); + widget.itemcount = $ax.repeater.getFilteredDataCount(scriptId); + widget.datacount = $ax.repeater.getDataCount(scriptId); + widget.pagecount = $ax.repeater.getPageCount(scriptId); + widget.pageindex = $ax.repeater.getPageIndex(scriptId); + } + + //widget.left = widget.leftfixed = widget.x; + //widget.top = widget.topfixed = widget.y; + //widget.right = widget.rightfixed = widget.x + widget.width; + //widget.bottom = widget.bottomfixed = widget.y + widget.height; + + //if(elementQuery.css('position') == 'fixed') { + // var windowScrollLeft = $(window).scrollLeft(); + // var windowScrollTop = $(window).scrollTop(); + // widget.leftfixed = widget.left - windowScrollLeft; + // widget.topfixed = widget.top - windowScrollTop; + // widget.rightfixed = widget.right - windowScrollLeft; + // widget.bottomfixed = widget.bottom - windowScrollTop; + //} + + // Get widget info funcs + widget.elementAxQuery = function () { + return this.elementAxQueryProp || (this.elementAxQueryProp = $ax('#' + this.elementId)); + } + + widget.isFitToContent = function () { + if (this.isFitToContentProp === undefined) { + if (!this.stateQuery) this.isFitToContentProp = false; + else this.isFitToContentProp = $ax.dynamicPanelManager.isIdFitToContent(this.elementId); + } + return this.isFitToContentProp; + } + + widget.x = function () { return this.getProp('x'); } + widget.y = function () { return this.getProp('y'); } + widget.pagex = function () { return this.getProp('pagex'); } + widget.pagey = function () { return this.getProp('pagey'); } + widget.width = function () { return this.getProp('width'); } + widget.height = function () { return this.getProp('height'); } + widget.left = function () { return this.x(); } + widget.top = function () { return this.y(); } + widget.right = function () { return this.x() + this.width(); } + widget.bottom = function () { return this.y() + this.height(); } + + widget.getProp = function (prop) { + var propName = prop + 'Prop'; + if (typeof (this[propName]) != 'undefined') return this[propName]; + return this[propName] = this.cacheProp(prop); + }; + + widget.cacheProp = function (prop) { + // I'm keeping the returned undefineds the same as before, but really I could probably return undefined right away if elementQuery is empty + if (this.isLayer) { + if (prop == 'pagex' || prop == 'pagey') { + if (this.elementQuery.length > 0) { + if (prop == 'pagex') return this.elementAxQuery().left(); + else return this.elementAxQuery().top(); + } + return undefined; // Otherwise, it is undefined as there is no element + } + var boundingRect = $ax.public.fn.getWidgetBoundingRect(this.elementId); + this.xProp = boundingRect.left; + this.yProp = boundingRect.top; + this.widthProp = boundingRect.width; + this.heightProp = boundingRect.height; + return this[prop + 'Prop']; + } + + if (this.elementQuery.length <= 0) return prop == 'x' || prop == 'y' ? 0 : undefined; + + switch (prop) { + case 'x': return this.elementAxQuery().locRelativeIgnoreLayer(false); + case 'y': return this.elementAxQuery().locRelativeIgnoreLayer(true); + case 'pagex': return this.elementAxQuery().left(); + case 'pagey': return this.elementAxQuery().top(); + } + + var val = this.elementAxQuery()[prop](); + if (this.isFitToContent()) val = this.stateQuery[prop](); + + return val; + }; + + widget.leftfixed = function() { this.getFixed('left'); } + widget.topfixed = function() { this.getFixed('top'); } + widget.rightfixed = function() { this.getFixed('right'); } + widget.bottomfixed = function() { this.getFixed('bottom'); } + + widget.isFixed = function() { + if(this.isFixedProp === undefined) this.isFixedProp = this.elementQuery.css('position') == 'fixed)'; + return this.isFixedProp; + } + + widget.getFixed = function (prop) { + var fixed = prop + 'fixedProp'; + if(!this.isFixed()) widget[fixed] = widget[prop](); + if(widget[fixed] === undefined) { + + if(prop == 'left' || prop == 'right') { + if(this.windowScrollX === undefined) this.windowScrollX = $(window).scrollLeft(); + var windowScroll = this.windowScrollX; + } else { + if(this.windowScrollY === undefined) this.windowScrollY = $(window).scrollTop(); + windowScroll = this.windowScrollY; + } + widget[fixed] = widget[prop]() - windowScroll; + } + return widget[fixed]; + } + + return widget; + }; + $ax.getWidgetInfo = _getWidgetInfo; + + $ax.GetTextPanelId = function (id, create) { + if(!$ax('#' + id).SupportsRichText()) return ''; + var buttonShape = $ax.GetButtonShape(id); + var panelDiv = buttonShape.find('.text')[0]; + if(!panelDiv) { + if(!create) return ""; + + var newId = id + "_text"; + //var newDiv = $('
    '); + var newDiv = $('

    '); + buttonShape.append(newDiv); + + var adaptiveId = $ax.adaptive.currentViewId; + if(adaptiveId) $ax.style.setAdaptiveStyle(id, $ax.style.computeAllOverrides(id, undefined, $ax.style.generateState(id), adaptiveId)); + + panelDiv = newDiv[0]; + } + + return panelDiv.id; + } + + $ax.GetParentIdFromLink = function(id) { + return $ax.GetShapeIdFromText($jobj(id).parentsUntil('.text').parent().attr('id')); + }; + + $ax.GetButtonShapeId = function(id) { + var obj = $obj(id); + switch(obj.type) { + case $ax.constants.TREE_NODE_OBJECT_TYPE: + return obj.buttonShapeId ? $ax.getElementIdFromPath([obj.buttonShapeId], { relativeTo: id }) : ""; + case $ax.constants.LINK_TYPE: + return ""; + default: + return id; + } + }; + + $ax.GetButtonShape = function(id) { + return $jobj($ax.GetButtonShapeId(id)); + }; + + $ax.GetShapeIdFromText = function(id) { + if(!id) return undefined; // this is to prevent an infinite loop. + + var current = document.getElementById(id); + if(!current) return undefined; + current = current.parentElement; + while(current && current.tagName != 'BODY') { + var currentId = current.id; + if(currentId && currentId != 'base') return $ax.visibility.getWidgetFromContainer(currentId); + current = current.parentElement; + } + + return undefined; + }; + + $ax.GetImageIdFromShape = function(id) { + var image = $ax.GetButtonShape(id).find('img[id$=img]'); + if(!image.length) image = $jobj(id).find('img[id$=image_sketch]'); + return image.attr('id'); + }; + + var _getParentElement = $ax.getParentElement = function(elementId) { + var obj = $obj(elementId); + while(obj.isContained) { + var path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); + var itemId = $ax.repeater.getItemIdFromElementId(elementId); + path[path.length - 1] = obj.parent.id; + elementId = $ax.getElementIdFromPath(path, { itemNum: itemId }); + obj = $obj(elementId); + } + + return elementId; + }; + + $ax.addItemIdToRepeater = function(itemId, repeaterId) { + var itemIds = repeaterIdToItemIds[repeaterId]; + if(itemIds) itemIds[itemIds.length] = itemId; + else repeaterIdToItemIds[repeaterId] = [itemId]; + + var scriptIds = repeaterIdToScriptIds[repeaterId]; + for(var i = 0; i < scriptIds.length; i++) elementIdToObject[$ax.repeater.createElementId(scriptIds[i], itemId)] = $ax.getObjectFromScriptId(scriptIds[i]); + }; + + $ax.getAllElementIds = function() { + var elementIds = []; + for(var i = 0; i < _scriptIds.length; i++) { + var scriptId = _scriptIds[i]; + var repeaterId = scriptIdToRepeaterId[scriptId]; + if(repeaterId && repeaterId != scriptId) { + var itemIds = repeaterIdToItemIds[repeaterId] || []; + for(var j = 0; j < itemIds.length; j++) elementIds[elementIds.length] = $ax.repeater.createElementId(scriptId, itemIds[j]); + } else elementIds[elementIds.length] = scriptId; + } + return elementIds; + }; + + $ax.getAllScriptIds = function() { + return _scriptIds; + }; + + $ax.getObjectFromElementId = function(elementId) { + return $ax.getObjectFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); + }; + + $ax.getObjectFromScriptId = function(scriptId) { + return scriptIdToObject[scriptId]; + }; + + $ax.getParentRepeaterFromElementId = function(elementId) { + return $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); + }; + + $ax.getParentRepeaterFromElementIdExcludeSelf = function (elementId) { + var repeaterId = $ax.getParentRepeaterFromElementId(elementId); + return repeaterId != elementId ? repeaterId : undefined; + }; + + $ax.getParentRepeaterFromScriptId = function(scriptId) { + return scriptIdToRepeaterId[scriptId]; + }; + + var _getChildScriptIdsForRepeater = function(repeaterId) { + return repeaterIdToScriptIds[repeaterId]; + }; + + var _getItemIdsForRepeater = function(repeaterId) { + return repeaterIdToItemIds[repeaterId] || []; + }; + $ax.getItemIdsForRepeater = _getItemIdsForRepeater; + + var _clearItemIdsForRepeater = function(repeaterId) { + repeaterIdToItemIds[repeaterId] = []; + }; + $ax.clearItemsForRepeater = _clearItemIdsForRepeater; + + $ax.getChildElementIdsForRepeater = function(repeaterId) { + var scriptIds = _getChildScriptIdsForRepeater(repeaterId); + var itemIds = _getItemIdsForRepeater(repeaterId); + + var retVal = []; + if(!itemIds || !scriptIds) return retVal; + + for(var i = 0; i < scriptIds.length; i++) { + for(var j = 0; j < itemIds.length; j++) { + retVal[retVal.length] = $ax.repeater.createElementId(scriptIds[i], itemIds[j]); + } + } + return retVal; + }; + + $ax.getRdoParentFromElementId = function(elementId) { + var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); + var rdoId = scriptIdToPath[scriptId].parent.scriptId; + if($ax.getParentRepeaterFromScriptId(rdoId)) rdoId = $ax.repeater.createElementId(rdoId, $ax.repeater.getItemIdFromElementId(elementId)); + return rdoId; + }; + + $ax.getLayerParentFromElementId = function (elementId) { + var itemId = $ax.repeater.getItemIdFromElementId(elementId); + var scriptId = scriptIdToParentLayer[$ax.repeater.getScriptIdFromElementId(elementId)]; + return $ax.getParentRepeaterFromElementId(scriptId) ? $ax.repeater.createElementId(scriptId, itemId) : scriptId; + } + + $ax.updateElementText = function(elementId, text) { + elementIdToText[elementId] = text; + }; + + $ax.hasElementTextChanged = function(elementId, text) { + return elementIdToText[elementId] != text; + }; + + $ax.updateRadioButtonSelected = function(group, elementId) { + var old = radioGroupToSelectedElementId[group]; + radioGroupToSelectedElementId[group] = elementId; + return old; + }; + + $ax.hasRadioButtonSelectedChanged = function(group, elementId) { + return radioGroupToSelectedElementId[group] != elementId; + }; + })(); + + //Recursively populates fullPathArray with: + // [ { idPath, scriptId }, ... ] + //for every scriptId in the object + //also populates an object of scriptId -> path + var _pathToScriptIdHelper = function(currentPath, currentChain, fullPathArray, scriptIdToPath) { + for(var key in currentPath) { + if(key != "scriptId") { + var nextPath = currentPath[key]; + _pathToScriptIdHelper(nextPath, currentChain.concat(key), fullPathArray, scriptIdToPath); + nextPath.parent = currentPath; + nextPath.uniqueId = key; + } else { + fullPathArray[fullPathArray.length] = { idPath: currentChain, scriptId: currentPath.scriptId }; + scriptIdToPath[currentPath.scriptId] = currentPath; + } + } + }; + + $ax.public.loadCurrentPage = $ax.loadCurrentPage = function(pageData) { + $ax.pageData = _pageData = pageData; + _initializePageData(); + }; + + $ax.public.loadDocument = $ax.loadDocument = function(document) { + $ax.document = document; + _initializeDocumentData(); + }; + + + /** + Navigates to a page + + + */ + $ax.public.navigate = $ax.navigate = function(to) { //url, includeVariables, type) { + var targetUrl; + if(typeof (to) === 'object') { + includeVariables = to.includeVariables; + targetUrl = !includeVariables ? to.url : $ax.globalVariableProvider.getLinkUrl(to.url); + + if(to.target == "new") { + window.open(targetUrl, ""); + } else if(to.target == "popup") { + var features = _getPopupFeatures(to.popupOptions); + window.open(targetUrl, "", features); + } else { + var targetLocation = window.location; + if(to.target == "current") { + } else if(to.target == "parent") { + if(!top.opener) return; + targetLocation = top.opener.window.location; + } else if(to.target == "parentFrame") { + targetLocation = parent.location; + } else if(to.target == "frame") { + // targetLocation = to.frame.contentWindow.location; + $(to.frame).attr('src', targetUrl || 'about:blank'); + return; + } + + if (!_needsReload(targetLocation, to.url)) { + targetLocation.href = targetUrl || 'about:blank'; + } else { + targetLocation.href = $axure.utils.getReloadPath() + "#" + encodeURI(targetUrl); + } + } + } else { + $ax.navigate({ + url: to, + target: "current", + includeVariables: arguments[1] + }); + } + }; + + var _needsReload = function(oldLocation, newBaseUrl) { + var reload = false; + try { + var oldUrl = oldLocation.href; + var oldBaseUrl = oldUrl.split("#")[0]; + var lastslash = oldBaseUrl.lastIndexOf("/"); + if(lastslash > 0) { + oldBaseUrl = oldBaseUrl.substring(lastslash + 1, oldBaseUrl.length); + if(oldBaseUrl == encodeURI(newBaseUrl)) { + reload = true; + } + } + } catch(e) { + } + return reload; + }; + + var _getPopupFeatures = function(options) { + var defaultOptions = { + toolbar: true, + scrollbars: true, + location: true, + status: true, + menubar: true, + directories: true, + resizable: true, + centerwindow: true, + left: -1, + top: -1, + height: -1, + width: -1 + }; + + var selectedOptions = $.extend({}, defaultOptions, options); + + var optionsList = []; + optionsList.push('toolbar=' + (selectedOptions.toolbar ? 'yes' : 'no')); + optionsList.push('scrollbars=' + (selectedOptions.scrollbars ? 'yes' : 'no')); + optionsList.push('location=' + (selectedOptions.location ? 'yes' : 'no')); + optionsList.push('status=' + (selectedOptions.status ? 'yes' : 'no')); + optionsList.push('menubar=' + (selectedOptions.menubar ? 'yes' : 'no')); + optionsList.push('directories=' + (selectedOptions.directories ? 'yes' : 'no')); + optionsList.push('resizable=' + (selectedOptions.resizable ? 'yes' : 'no')); + + if(selectedOptions.centerwindow == false) { + if(selectedOptions.left > -1) { + optionsList.push('left=' + selectedOptions.left); + } + + if(selectedOptions.top > -1) { + optionsList.push('top=' + selectedOptions.top); + } + } + + var height = 0; + var width = 0; + if(selectedOptions.height > 0) { + optionsList.push('height=' + selectedOptions.height); + height = selectedOptions.height; + } + + if(selectedOptions.width > 0) { + optionsList.push('width=' + selectedOptions.width); + width = selectedOptions.width; + } + + var features = optionsList.join(','); + if(selectedOptions.centerwindow) { + var winl = (window.screen.width - width) / 2; + var wint = (window.screen.height - height) / 2; + features = features + ',left=' + winl + ',top=' + wint; + } + + return features; + }; + + /** + Closes a window + + + */ + $ax.public.closeWindow = $ax.closeWindow = function() { + parent.window.close(); + }; + + /** + Goes back + + + */ + $ax.public.back = $ax.back = function() { + window.history.go(-1); + }; + + /** + Reloads the current page. + # includeVariables: true if it should re-include the variables when the page is reloaded + */ + $ax.public.reload = $ax.reload = function(includeVariables) { + var targetUrl = (includeVariables === false) + ? $axure.utils.getReloadPath() + "#" + encodeURI($ax.pageData.url) + : $axure.utils.getReloadPath() + "#" + encodeURI($ax.globalVariableProvider.getLinkUrl($ax.pageData.url)); + window.location.href = targetUrl; + }; + + /** + Sets a variable. + # name: The name of the global variable to set + # value: The value that should be set + */ + $ax.public.setGlobalVariable = $ax.setGlobalVariable = function(name, value) { + if(!name || !value) { + return; + } + + $ax.globalVariableProvider.setVariableValue(name, value); + }; + + /** + Gets the value of a global variable + # name: The name of the global variable value to get + */ + $ax.public.getGlobalVariable = $ax.getGlobalVariable = function(name) { + $ax.globalVariableProvider.getVariableValue(name); + }; + + $ax.getObjectFromElementIdDisregardHex = function (elementId) { + var elementIdInput = elementId.charAt(0) == '#' ? elementId.substring(1) : elementId; + return this.getObjectFromElementId(elementIdInput); + } + + + $ax.getTypeFromElementId = function(elementId) { + var obj = this.getObjectFromElementIdDisregardHex(elementId); + return obj && obj.type; + }; + + $ax.getNumFromPx = function(pxNum) { + return Number(pxNum.replace('px', '')); + } + +}); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/startPost.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/startPost.js new file mode 100644 index 0000000..d52da38 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/startPost.js @@ -0,0 +1,818 @@ +// 8.0.0.3355. Generated 8/24/2017 4:38:58 AM UTC + +//***** sitemap.js *****// +var currentNodeUrl = ''; +var allNodeUrls = []; + +function openNextPage() { + var index = allNodeUrls.indexOf(currentNodeUrl) + 1; + if(index >= allNodeUrls.length) return; + var nextNodeUrl = allNodeUrls[index]; + $('.sitemapPageLink[nodeUrl="' + nextNodeUrl + '"]').click(); +} + +function openPreviousPage() { + var index = allNodeUrls.indexOf(currentNodeUrl) - 1; + if(index < 0) return; + var nextNodeUrl = allNodeUrls[index]; + $('.sitemapPageLink[nodeUrl="' + nextNodeUrl + '"]').click(); +} + +// use this to isolate the scope +(function() { + + var SHOW_HIDE_ANIMATION_DURATION = 0; + + var HIGHLIGHT_INTERACTIVE_VAR_NAME = 'hi'; + + var currentPageLoc = ''; + var currentPlayerLoc = ''; + var currentPageHashString = ''; + + $(window.document).ready(function() { + $axure.player.createPluginHost({ + id: 'sitemapHost', + context: 'interface', + title: 'PAGES', + gid: 1 + }); + + generateSitemap(); + + $('.sitemapPlusMinusLink').toggle(collapse_click, expand_click); + $('.sitemapPageLink').click(node_click); + + $('#sitemapLinksContainer').hide(); + $('#linksButton').click(links_click); + $('#adaptiveButton').click(adaptive_click); + $('#adaptiveViewsContainer').hide(); + + $('#highlightInteractiveButton').click(highlight_interactive); + $('#searchButton').click(search_click); + $('#searchBox').keyup(search_input_keyup); + $('.sitemapLinkField').click(function() { this.select(); }); + $('input[value="withoutmap"]').click(withoutSitemapRadio_click); + $('input[value="withmap"]').click(withSitemapRadio_click); + $('#minimizeBox, #collapseBox, #footnotesBox, #highlightBox').change(sitemapUrlOptions_change); + $('#viewSelect').change(sitemapUrlViewSelect_change); + + $(document).on('ContainerHeightChange', function() { + updateContainerHeight(); + }); + + // bind to the page load + $axure.page.bind('load.sitemap', function() { + currentPageLoc = $axure.page.location.split("#")[0]; + var decodedPageLoc = decodeURI(currentPageLoc); + currentNodeUrl = decodedPageLoc.substr(decodedPageLoc.lastIndexOf('/') ? decodedPageLoc.lastIndexOf('/') + 1 : 0); + currentPlayerLoc = $(location).attr('href').split("#")[0].split("?")[0]; + currentPageHashString = '#p=' + currentNodeUrl.substr(0, currentNodeUrl.lastIndexOf('.')); + + setVarInCurrentUrlHash('p', currentNodeUrl.substring(0, currentNodeUrl.lastIndexOf('.html'))); + + $('.sitemapPageLink').parent().parent().removeClass('sitemapHighlight'); + $('.sitemapPageLink[nodeUrl="' + currentNodeUrl + '"]').parent().parent().addClass('sitemapHighlight'); + + var pageName = $axure.page.pageName; + $('.pageNameHeader').html(pageName); + + $('#sitemapLinksPageName').html($('.sitemapHighlight > .sitemapPageLinkContainer > .sitemapPageLink > .sitemapPageName').html()); + + //Click the "Without sitemap" radio button so that it's selected by default + $('input[value="withoutmap"]').click(); + + //If highlight var is present and set to 1 or else if + //sitemap highlight button is selected then highlight interactive elements + var hiVal = getHashStringVar(HIGHLIGHT_INTERACTIVE_VAR_NAME); + if(hiVal.length > 0 && hiVal == 1) { + $('#highlightInteractiveButton').addClass('sitemapToolbarButtonSelected'); + $axure.messageCenter.postMessage('highlightInteractive', true); + } else if($('#highlightInteractiveButton').is('.sitemapToolbarButtonSelected')) { + $axure.messageCenter.postMessage('highlightInteractive', true); + } + + //Set the current view if it is defined in the hash string + //If the view is invalid, set it to 'auto' in the string + //ELSE set the view based on the currently selected view in the toolbar menu + var viewStr = getHashStringVar(ADAPTIVE_VIEW_VAR_NAME); + if(viewStr.length > 0) { + var $view = $('.adaptiveViewOption[val="' + viewStr + '"]'); + if($view.length > 0) $view.click(); + else $('.adaptiveViewOption[val="auto"]').click(); + } else if($('.checkedAdaptive').length > 0) { + var $viewOption = $('.checkedAdaptive').parents('.adaptiveViewOption'); + if($viewOption.attr('val') != 'auto') $viewOption.click(); + } + + $axure.messageCenter.postMessage('finishInit'); + + return false; + }); + + var $adaptiveViewsContainer = $('#adaptiveViewsContainer'); + var $viewSelect = $('#viewSelect'); + + //Fill out adaptive view container with prototype's defined adaptive views, as well as the default, and Auto + $adaptiveViewsContainer.append('
    Auto
    '); + $viewSelect.append(''); + if(typeof $axure.document.defaultAdaptiveView.name != 'undefined') { + //If the name is a blank string, make the view name the width if non-zero, else 'any' + var defaultViewName = $axure.document.defaultAdaptiveView.name; + $adaptiveViewsContainer.append('
    ' + defaultViewName + '
    '); + $viewSelect.append(''); + } + + var enabledViewIds = $axure.document.configuration.enabledViewIds; + for(var viewIndex = 0; viewIndex < $axure.document.adaptiveViews.length; viewIndex++) { + var currView = $axure.document.adaptiveViews[viewIndex]; + if(enabledViewIds.indexOf(currView.id) < 0) continue; + + var widthString = currView.size.width == 0 ? 'any' : currView.size.width; + var heightString = currView.size.height == 0 ? 'any' : currView.size.height; + var conditionString = ''; + if(currView.condition == '>' || currView.condition == '>=') { + conditionString = ' and above'; + } else if(currView.condition == '<' || currView.condition == '<=') { + conditionString = ' and below'; + } + + var viewString = currView.name + ' (' + widthString + ' x ' + heightString + conditionString + ')'; + $adaptiveViewsContainer.append('
    ' + viewString + '
    '); + $viewSelect.append(''); + } + + $('.adaptiveViewOption').click(adaptiveViewOption_click); + + $('.adaptiveViewOption').mouseup(function(event) { + event.stopPropagation(); + }); + + $('#searchBox').focusin(function() { + if($(this).is('.searchBoxHint')) { + $(this).val(''); + $(this).removeClass('searchBoxHint'); + } + }).focusout(function() { + if($(this).val() == '') { + $(this).addClass('searchBoxHint'); + $(this).val('Search'); + } + }); + + + $('#searchBox').focusout(); + }); + + function updateContainerHeight() { + $('#sitemapTreeContainer').height($('#sitemapHost').height() - $('#sitemapHeader').outerHeight()); + } + + function hideAllContainersExcept(exceptContainer) { + //1 - adaptive container, 3 - links container + if(exceptContainer != 1) { + $('#adaptiveViewsContainer').hide(); + $('#adaptiveButton').removeClass('sitemapToolbarButtonSelected'); + } + if(exceptContainer != 3) { + $('#sitemapLinksContainer').hide(); + $('#linksButton').removeClass('sitemapToolbarButtonSelected'); + } + } + + function collapse_click(event) { + $(this) + .children('.sitemapMinus').removeClass('sitemapMinus').addClass('sitemapPlus').end() + .closest('li').children('ul').hide(SHOW_HIDE_ANIMATION_DURATION); + } + + function expand_click(event) { + $(this) + .children('.sitemapPlus').removeClass('sitemapPlus').addClass('sitemapMinus').end() + .closest('li').children('ul').show(SHOW_HIDE_ANIMATION_DURATION); + } + + function node_click(event) { + $axure.page.navigate(this.getAttribute('nodeUrl'), true); + } + + function links_click(event) { + hideAllContainersExcept(3); + $('#sitemapLinksContainer').toggle(); + updateContainerHeight(); + if($('#sitemapLinksContainer').is(":visible")) { + $('#linksButton').addClass('sitemapToolbarButtonSelected'); + } else { + $('#linksButton').removeClass('sitemapToolbarButtonSelected'); + } + } + + $axure.messageCenter.addMessageListener(function(message, data) { + if(message == 'adaptiveViewChange') { + $('.adaptiveViewOption').removeClass('currentAdaptiveView'); + if(data.viewId) {$('div[val="' + data.viewId + '"]').addClass('currentAdaptiveView');} + else $('div[val="default"]').addClass('currentAdaptiveView'); + + //when we set adaptive view through user event, we want to update the checkmark on sitemap + if(data.forceSwitchTo) { + $('.checkedAdaptive').removeClass('checkedAdaptive'); + $('div[val="' + data.forceSwitchTo + '"]').find('.adaptiveCheckboxDiv').addClass('checkedAdaptive'); + } + } + }); + + $(document).on('pluginShown', function (event, data) { + if(data == 1) { + hideAllContainersExcept(1); + updateContainerHeight(); + } + }); + + $(document).on('sidebarExpanded', function (event, data) { + hideAllContainersExcept(1); + updateContainerHeight(); + }); + + function highlight_interactive(event) { + if($('#highlightInteractiveButton').is('.sitemapToolbarButtonSelected')) { + $('#highlightInteractiveButton').removeClass('sitemapToolbarButtonSelected'); + $axure.messageCenter.postMessage('highlightInteractive', false); + //Delete 'hi' hash string var if it exists since default is unselected + deleteVarFromCurrentUrlHash(HIGHLIGHT_INTERACTIVE_VAR_NAME); + } else { + $('#highlightInteractiveButton').addClass('sitemapToolbarButtonSelected'); + $axure.messageCenter.postMessage('highlightInteractive', true); + //Add 'hi' hash string var so that stay highlighted across reloads + setVarInCurrentUrlHash(HIGHLIGHT_INTERACTIVE_VAR_NAME, 1); + } + } + + function adaptive_click(event) { + hideAllContainersExcept(1); + $('#adaptiveViewsContainer').toggle(); + updateContainerHeight(); + if(!$('#adaptiveViewsContainer').is(":visible")) { + $('#adaptiveButton').removeClass('sitemapToolbarButtonSelected'); + } else { + $('#adaptiveButton').addClass('sitemapToolbarButtonSelected'); + } + } + + function adaptiveViewOption_click(event) { + var currVal = $(this).attr('val'); + + $('.checkedAdaptive').removeClass('checkedAdaptive'); + $(this).find('.adaptiveCheckboxDiv').addClass('checkedAdaptive'); + + currentPageLoc = $axure.page.location.split("#")[0]; + var decodedPageLoc = decodeURI(currentPageLoc); + var nodeUrl = decodedPageLoc.substr(decodedPageLoc.lastIndexOf('/') ? decodedPageLoc.lastIndexOf('/') + 1 : 0); + var adaptiveData = { + src: nodeUrl + }; + + adaptiveData.view = currVal; + $axure.messageCenter.postMessage('switchAdaptiveView', adaptiveData); + + if(currVal == 'auto') { + //Remove view in hash string if one is set + deleteVarFromCurrentUrlHash(ADAPTIVE_VIEW_VAR_NAME); + } else { + //Set current view in hash string so that it can be maintained across reloads + setVarInCurrentUrlHash(ADAPTIVE_VIEW_VAR_NAME, currVal); + } + } + + function search_click(event) { + $('#searchDiv').toggle(); + if(!$('#searchDiv').is(":visible")) { + $('#searchButton').removeClass('sitemapToolbarButtonSelected'); + $('#searchBox').val(''); + $('#searchBox').keyup(); + //$('#sitemapToolbar').css('height', '22px'); + $('#sitemapTreeContainer').css('top', '31px'); + } else { + $('#searchButton').addClass('sitemapToolbarButtonSelected'); + $('#searchBox').focus(); + //$('#sitemapToolbar').css('height', '50px'); + $('#sitemapTreeContainer').css('top', '63px'); + } + } + + function search_input_keyup(event) { + var searchVal = $(this).val().toLowerCase(); + //If empty search field, show all nodes, else grey+hide all nodes and + //ungrey+unhide all matching nodes, as well as unhide their parent nodes + if(searchVal == '') { + $('.sitemapPageName').removeClass('sitemapGreyedName'); + $('.sitemapNode').show(); + } else { + $('.sitemapNode').hide(); + + $('.sitemapPageName').addClass('sitemapGreyedName').each(function() { + var nodeName = $(this).text().toLowerCase(); + if(nodeName.indexOf(searchVal) != -1) { + $(this).removeClass('sitemapGreyedName').parents('.sitemapNode:first').show().parents('.sitemapExpandableNode').show(); + } + }); + } + } + + function withoutSitemapRadio_click() { + $('#sitemapLinkWithPlayer').val(currentPageLoc); + $('#sitemapOptionsDiv').hide(); + $('#minimizeBox').attr('disabled', 'disabled'); + $('#collapseBox').attr('disabled', 'disabled'); + $('#footnotesBox').attr('disabled', 'disabled'); + $('#highlightBox').attr('disabled', 'disabled'); + $('#viewSelect').attr('disabled', 'disabled'); + $('input[value="withmap"]').parent().removeClass('sitemapRadioSelected'); + + updateContainerHeight(); + } + + function withSitemapRadio_click() { + $('#sitemapLinkWithPlayer').val(currentPlayerLoc + currentPageHashString); + $('#minimizeBox').removeAttr('disabled').change(); + $('#collapseBox').removeAttr('disabled').change(); + $('#footnotesBox').removeAttr('disabled').change(); + $('#highlightBox').removeAttr('disabled').change(); + $('#viewSelect').removeAttr('disabled').change(); + $('#sitemapOptionsDiv').show(); + $('input[value="withmap"]').parent().addClass('sitemapRadioSelected'); + + updateContainerHeight(); + } + + function sitemapUrlOptions_change() { + var currLinkHash = '#' + $('#sitemapLinkWithPlayer').val().split("#")[1]; + var newHash = null; + var varName = ''; + var defVal = 1; + if($(this).is('#minimizeBox')) { + varName = SITEMAP_COLLAPSE_VAR_NAME; + } else if($(this).is('#collapseBox')) { + varName = PLUGIN_VAR_NAME; + defVal = 0; + } else if($(this).is('#footnotesBox')) { + varName = FOOTNOTES_VAR_NAME; + defVal = 0; + } else if($(this).is('#highlightBox')) { + varName = HIGHLIGHT_INTERACTIVE_VAR_NAME; + } + + newHash = $(this).is(':checked') ? setHashStringVar(currLinkHash, varName, defVal) : deleteHashStringVar(currLinkHash, varName); + + if(newHash != null) { + $('#sitemapLinkWithPlayer').val(currentPlayerLoc + newHash); + } + } + + function sitemapUrlViewSelect_change() { + var currLinkHash = '#' + $('#sitemapLinkWithPlayer').val().split("#")[1]; + var newHash = null; + var $selectedOption = $(this).find('option:selected'); + if($selectedOption.length == 0) return; + var selectedVal = $selectedOption.attr('value'); + + newHash = selectedVal == 'auto' ? deleteHashStringVar(currLinkHash, ADAPTIVE_VIEW_VAR_NAME) : setHashStringVar(currLinkHash, ADAPTIVE_VIEW_VAR_NAME, selectedVal); + + if(newHash != null) { + $('#sitemapLinkWithPlayer').val(currentPlayerLoc + newHash); + } + } + + function generateSitemap() { + var treeUl = "
    "; + treeUl += "
    "; + treeUl += "
    PAGES
    "; + treeUl += "
    "; + + treeUl += "
    "; + + if($axure.document.configuration.enabledViewIds.length > 0) { + treeUl += ""; + } + + treeUl += ""; + treeUl += ""; + treeUl += "
    "; + + treeUl += "
    "; + + if($axure.document.adaptiveViews.length > 0) { + treeUl += "
    Adaptive Views
    "; + } + + //linkcontainer + treeUl += ""; + ///////////////// + + treeUl += "
    "; + + treeUl += "
    "; + + treeUl += '
    '; + + treeUl += "
      "; + var rootNodes = $axure.document.sitemap.rootNodes; + for(var i = 0; i < rootNodes.length; i++) { + treeUl += generateNode(rootNodes[i], 0); + } + treeUl += "
    "; + + $('#sitemapHost').html(treeUl); + if($axure.document.adaptiveViews.length <= 0) { + $('#sitemapHost .pageNameHeader').css('padding-right', '55px'); + } + } + + function generateNode(node, level) { + var hasChildren = (node.children && node.children.length > 0); + var margin, returnVal; + if(hasChildren) { + margin = (9 + level * 17); + returnVal = "
  • "; + + if(hasChildren) { + returnVal += "
      "; + for(var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + returnVal += generateNode(child, level + 1); + } + returnVal += "
    "; + } + returnVal += "
  • "; + return returnVal; + } +})(); + +//***** page_notes.js *****// +// use this to isolate the scope +(function () { + if(!$axure.document.configuration.showPageNotes && !$axure.document.configuration.showAnnotationsSidebar) { return; } + + $(window.document).ready(function () { + $axure.player.createPluginHost({ + id: 'pageNotesHost', + context: 'interface', + title: 'NOTES', + gid: 2 + }); + + generatePageNotes(); + + $(document).on('ContainerHeightChange', function () { + updateContainerHeight(); + }); + + $('#footnotesButton').click(footnotes_click).addClass('sitemapToolbarButtonSelected'); + $('#notesNextButton').click(notesNext_click); + $('#notesPreviousButton').click(notesPrevious_click); + + // bind to the page load + $axure.page.bind('load.page_notes', function () { + + var hasNotes = false; + + $('#pageNotesContent').html(""); + + if($axure.document.configuration.showPageNotes) { + //populate the notes + var notes = $axure.page.notes; + if(notes) { + var showNames = $axure.document.configuration.showPageNoteNames; + + for(var noteName in notes) { + var pageNoteUi = "
    "; + if(showNames) { + pageNoteUi += "
    " + noteName + "
    "; + } + pageNoteUi += "
    " + linkify(notes[noteName]) + "
    "; + pageNoteUi += "
    "; + pageNoteUi += "
    "; + $('#pageNotesContent').append(pageNoteUi); + + hasNotes = true; + } + } + } + + if($axure.document.configuration.showAnnotationsSidebar) { + var widgetNotes = $axure.page.widgetNotes; + if(widgetNotes) { + for(var i = 0; i < widgetNotes.length; i++) { + var widgetNote = widgetNotes[i]; + var widgetNoteUi = "
    "; + widgetNoteUi += "
    "; + widgetNoteUi += "
    " + widgetNote["label"] + "
    "; + + for(var widgetNoteName in widgetNote) { + if(widgetNoteName != "label" && widgetNoteName != "id") { + widgetNoteUi += "
    " + widgetNoteName + "
    "; + widgetNoteUi += "
    " + linkify(widgetNote[widgetNoteName]) + "
    "; + widgetNoteUi += "
    "; + } + } + widgetNoteUi += "
    "; + widgetNoteUi += "
    "; + $('#pageNotesContent').append(widgetNoteUi); + hasNotes = true; + } + $('.widgetNoteContainer').children(':last-child').remove(); + $('.widgetNoteFootnote').append("
    "); + $('.widgetNoteContainer').click(function () { + var wasSelected = $(this).hasClass('widgetNoteContainerSelected'); + $('.widgetNoteContainerSelected').removeClass('widgetNoteContainerSelected'); + if(!wasSelected) $(this).addClass('widgetNoteContainerSelected'); + $axure.messageCenter.postMessage('toggleSelectWidgetNote', this.getAttribute('data-id')); + }); + } + } + + if(hasNotes) $('#pageNotesEmptyState').hide(); + else $('#pageNotesEmptyState').show(); + + //If footnotes enabled for this prototype... + if($axure.document.configuration.showAnnotations == true) { + //If the fn var is defined and set to 0, hide footnotes + //else if hide-footnotes button selected, hide them + var fnVal = getHashStringVar(FOOTNOTES_VAR_NAME); + if(fnVal.length > 0 && fnVal == 0) { + $('#footnotesButton').removeClass('sitemapToolbarButtonSelected'); + $axure.messageCenter.postMessage('annotationToggle', false); + } else if(!$('#footnotesButton').is('.sitemapToolbarButtonSelected')) { + //If the footnotes button isn't selected, hide them on this loaded page + $axure.messageCenter.postMessage('annotationToggle', false); + } + } + + + return false; + }); + + function linkify(text) { + var urlRegex = /(\b(((https?|ftp|file):\/\/)|(www\.))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; + return text.replace(urlRegex, function(url, b, c) { + var url2 = (c == 'www.') ? 'http://' + url : url; + return '' + url + ''; + }); + } + }); + + function updateContainerHeight() { + $('#pageNotesScrollContainer').height($('#pageNotesHost').height() - $('#pageNotesHeader').outerHeight()); + } + + $(document).on('sidebarCollapse', function (event, data) { + clearSelection(); + }); + + $(document).on('pluginShown', function (event, data) { + if(data != 2) { + clearSelection(); + } + }); + + function clearSelection() { + $('.widgetNoteContainerSelected').removeClass('widgetNoteContainerSelected'); + $axure.messageCenter.postMessage('toggleSelectWidgetNote', ''); + } + + function footnotes_click(event) { + if($('#footnotesButton').is('.sitemapToolbarButtonSelected')) { + $('#footnotesButton').removeClass('sitemapToolbarButtonSelected'); + $axure.messageCenter.postMessage('annotationToggle', false); + //Add 'fn' hash string var so that footnotes stay hidden across reloads + setVarInCurrentUrlHash(FOOTNOTES_VAR_NAME, 0); + } else { + $('#footnotesButton').addClass('sitemapToolbarButtonSelected'); + $axure.messageCenter.postMessage('annotationToggle', true); + //Delete 'fn' hash string var if it exists since default is visible + deleteVarFromCurrentUrlHash(FOOTNOTES_VAR_NAME); + } + } + + function notesNext_click(event) { + openNextPage(); + } + + function notesPrevious_click(event) { + openPreviousPage(); + } + + function generatePageNotes() { + var pageNotesUi = "
    "; + + pageNotesUi += "
    "; + pageNotesUi += "
    NOTES
    "; + pageNotesUi += "
    "; + + pageNotesUi += "
    "; + + pageNotesUi += ""; + pageNotesUi += ""; + + if($axure.document.configuration.showAnnotations == true) { + pageNotesUi += ""; + } + + pageNotesUi += "
    "; + pageNotesUi += "
    "; + pageNotesUi += "
    "; + + + pageNotesUi += "
    "; + pageNotesUi += "
    "; + pageNotesUi += "
    No notes for this page.
    Notes added in Axure RP will appear here.
    "; + pageNotesUi += ""; + pageNotesUi += "
    "; + + $('#pageNotesHost').html(pageNotesUi); + updateContainerHeight(); + + if(!$axure.document.configuration.showAnnotations) { + $('#pageNotesHost .pageNameHeader').css('padding-right', '55px'); + } + } + +})(); +//***** debug.js *****// +// use this to isolate the scope +(function () { + + if(!$axure.document.configuration.showConsole) { return; } + + $(document).ready(function () { + $axure.player.createPluginHost({ + id: 'debugHost', + context: 'interface', + title: 'CONSOLE', + gid: 3 + }); + + generateDebug(); + + $('#variablesClearLink').click(clearvars_click); + $('#traceClearLink').click(cleartrace_click); + + + $(document).on('ContainerHeightChange', function () { + updateContainerHeight(); + }); + + //$('#traceContainer').hide(); + //$('#debugTraceLink').click(function () { + // $('#variablesContainer').hide(); + // $('#traceContainer').show(); + //}); + //$('#debugVariablesLink').click(function () { + // $('#variablesContainer').show(); + // $('#traceContainer').hide(); + //}); + + var currentStack= []; + var finishedStack = []; + + $axure.messageCenter.addMessageListener(function (message, data) { + if(message == 'axCompositeEventMessage') { + for(var i = 0; i < data.length; i++) { + processMessages(data[i].message, data[i].data); + } + } else processMessages(message, data); + }); + + var processMessages = function(message, data) { + if(message == 'globalVariableValues') { + $('#variablesDiv').empty(); + for(var key in data) { + var value = data[key] == '' ? '(blank)' : data[key]; + $('#variablesDiv').append('
    ' + key + '
    ' + value + '
    '); + } + } else if(message == 'axEvent') { + var addToStack = "
    "; + addToStack += "
    " + new Date().toLocaleTimeString() + "
    "; + addToStack += "
    " + data.label + " (" + data.type + ")
    "; + addToStack += "
    " + data.event.description + "
    "; + currentStack.push(addToStack); + } else if (message == 'axEventComplete') { + currentStack[currentStack.length - 1] += "
    "; + finishedStack.push(currentStack.pop()); + if(currentStack.length == 0) { + $('#traceClearLinkContainer').show(); + $('#traceEmptyState').hide(); + + $('.lastAxEvent').removeClass('lastAxEvent'); + for(var i = finishedStack.length - 1; i >= 0; i--) { + if($('#traceDiv').children().length > 99) $('#traceDiv').children().last().remove(); + $('#traceDiv').prepend(finishedStack[i]); + if(i == finishedStack.length - 1) $('#traceDiv').children().first().addClass('lastAxEvent'); + } + finishedStack = []; + } + } else if (message == 'axCase') { + currentStack[currentStack.length - 1] += "
    " + data.description + "
    "; + } else if (message == 'axAction') { + currentStack[currentStack.length - 1] += "
    " + data.description + "
    "; + } + } + + // bind to the page load + $axure.page.bind('load.debug', function () { + + $axure.messageCenter.postMessage('getGlobalVariables', ''); + + return false; + }); + + function clearvars_click(event) { + $axure.messageCenter.postMessage('resetGlobalVariables', ''); + } + + function cleartrace_click(event) { + $('#traceDiv').html(''); + $('#traceClearLinkContainer').hide(); + $('#traceEmptyState').show(); + } + }); + + function updateContainerHeight() { + $('#debugScrollContainer').height($('#debugHost').height() - $('#debugHeader').outerHeight()); + } + + function generateDebug() { + var pageNotesUi = "
    "; + + pageNotesUi += "
    "; + pageNotesUi += "
    CONSOLE
    "; + pageNotesUi += "
    "; + + //pageNotesUi += "
    "; + + //pageNotesUi += ""; + //pageNotesUi += ""; + //pageNotesUi += ""; + + //pageNotesUi += "
    "; + pageNotesUi += "
    "; + pageNotesUi += "
    "; + + //var pageNotesUi = ""; + pageNotesUi += "
    "; + pageNotesUi += "
    "; + pageNotesUi += "
    "; + pageNotesUi += ""; + pageNotesUi += "
    "; + pageNotesUi += "
    "; + pageNotesUi += "
    "; + pageNotesUi += ""; + pageNotesUi += "
    No interactions in the trace.
    Triggered interactions will appear here.
    "; + pageNotesUi += "
    "; + pageNotesUi += "
    "; + + $('#debugHost').html(pageNotesUi); + updateContainerHeight(); + + $('#traceClearLinkContainer').hide(); + $('#traceEmptyState').show(); + } + +})(); \ No newline at end of file diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/startPre.js b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/startPre.js new file mode 100644 index 0000000..5cce375 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/resources/scripts/startPre.js @@ -0,0 +1,952 @@ +// 8.0.0.3355. Generated 8/24/2017 4:38:58 AM UTC + +//***** splitter.js *****// +/* +* jQuery.splitter.js - two-pane splitter window plugin +* +* version 1.51 (2009/01/09) +* +* Dual licensed under the MIT and GPL licenses: +* http://www.opensource.org/licenses/mit-license.php +* http://www.gnu.org/licenses/gpl.html +*/ + +/** +* The splitter() plugin implements a two-pane resizable splitter window. +* The selected elements in the jQuery object are converted to a splitter; +* each selected element should have two child elements, used for the panes +* of the splitter. The plugin adds a third child element for the splitbar. +* +* For more details see: http://methvin.com/splitter/ +* +* +* @example $('#MySplitter').splitter(); +* @desc Create a vertical splitter with default settings +* +* @example $('#MySplitter').splitter({type: 'h', accessKey: 'M'}); +* @desc Create a horizontal splitter resizable via Alt+Shift+M +* +* @name splitter +* @type jQuery +* @param Object options Options for the splitter (not required) +* @cat Plugins/Splitter +* @return jQuery +* @author Dave Methvin (dave.methvin@gmail.com) +*/ +;(function($){ + +$.fn.splitter = function(args){ + args = args || {}; + return this.each(function() { + var zombie; // left-behind splitbar for outline resizes + function startSplitMouse(evt) { + if ( opts.outline ) + zombie = zombie || bar.clone(false).insertAfter(A); + panes.css("-webkit-user-select", "none"); // Safari selects A/B text on a move + bar.addClass(opts.activeClass); + $('
    ').insertAfter(bar); + A._posSplit = A[0][opts.pxSplit] - evt[opts.eventPos]; + $(document) + .bind("mousemove", doSplitMouse) + .bind("mouseup", endSplitMouse); + } + function doSplitMouse(evt) { + var newPos = A._posSplit+evt[opts.eventPos]; + if ( opts.outline ) { + newPos = Math.max(0, Math.min(newPos, splitter._DA - bar._DA)); + bar.css(opts.origin, newPos); + } else + resplit(newPos); + } + function endSplitMouse(evt) { + $('div.splitterMask').remove(); + bar.removeClass(opts.activeClass); + var newPos = A._posSplit+evt[opts.eventPos]; + if ( opts.outline ) { + zombie.remove(); zombie = null; + resplit(newPos); + } + panes.css("-webkit-user-select", "text"); // let Safari select text again + $(document) + .unbind("mousemove", doSplitMouse) + .unbind("mouseup", endSplitMouse); + } + function resplit(newPos) { + // Constrain new splitbar position to fit pane size limits + newPos = Math.max(A._min, splitter._DA - B._max, + Math.min(newPos, A._max, splitter._DA - bar._DA - B._min)); + // Resize/position the two panes + bar._DA = bar[0][opts.pxSplit]; // bar size may change during dock + + var posOffset = bar.is(':visible') ? bar._DA - 1 : 0; + + bar.css(opts.origin, newPos - posOffset).css(opts.fixed, splitter._DF); + A.css(opts.origin, 0).css(opts.split, newPos).css(opts.fixed, splitter._DF); + B.css(opts.origin, newPos + bar._DA - posOffset) + .css(opts.split, splitter._DA-bar._DA-newPos).css(opts.fixed, splitter._DF); + // IE fires resize for us; all others pay cash + if ( !IE_10_AND_BELOW ) + panes.trigger("resize"); + } + function dimSum(jq, dims) { + // Opera returns -1 for missing min/max width, turn into 0 + var sum = 0; + for ( var i=1; i < arguments.length; i++ ) + sum += Math.max(parseInt(jq.css(arguments[i])) || 0, 0); + return sum; + } + + // Determine settings based on incoming opts, element classes, and defaults + var vh = (args.splitHorizontal? 'h' : args.splitVertical? 'v' : args.type) || 'v'; + var opts = $.extend({ + activeClass: 'active', // class name for active splitter + pxPerKey: 8, // splitter px moved per keypress + tabIndex: 0, // tab order indicator + accessKey: '' // accessKey for splitbar + },{ + v: { // Vertical splitters: + keyLeft: 39, keyRight: 37, cursor: "col-resize", + splitbarClass: "vsplitbar", outlineClass: "voutline", + type: 'v', eventPos: "pageX", origin: "left", + split: "width", pxSplit: "offsetWidth", side1: "Left", side2: "Right", + fixed: "height", pxFixed: "offsetHeight", side3: "Top", side4: "Bottom" + }, + h: { // Horizontal splitters: + keyTop: 40, keyBottom: 38, cursor: "row-resize", + splitbarClass: "hsplitbar", outlineClass: "houtline", + type: 'h', eventPos: "pageY", origin: "top", + split: "height", pxSplit: "offsetHeight", side1: "Top", side2: "Bottom", + fixed: "width", pxFixed: "offsetWidth", side3: "Left", side4: "Right" + } + }[vh], args); + + // Create jQuery object closures for splitter and both panes + var splitter = $(this).css({position: "relative"}); + var panes = $(">*", splitter[0]).css({ + position: "absolute", // positioned inside splitter container + "z-index": "1", // splitbar is positioned above + "-moz-outline-style": "none" // don't show dotted outline + }); + var A = $(panes[0]); // left or top + var B = $(panes[1]); // right or bottom + + // Focuser element, provides keyboard support; title is shown by Opera accessKeys + var focuser = $('') + .attr({accessKey: opts.accessKey, tabIndex: opts.tabIndex, title: opts.splitbarClass}) + .bind($.browser.opera?"click":"focus", function(){ this.focus(); bar.addClass(opts.activeClass) }) + .bind("keydown", function(e){ + var key = e.which || e.keyCode; + var dir = key==opts["key"+opts.side1]? 1 : key==opts["key"+opts.side2]? -1 : 0; + if ( dir ) + resplit(A[0][opts.pxSplit]+dir*opts.pxPerKey, false); + }) + .bind("blur", function(){ bar.removeClass(opts.activeClass) }); + + // Splitbar element, can be already in the doc or we create one + var bar = $(panes[2] || '
    ') + .insertAfter(A).css("z-index", "100").append(focuser) + .attr({"class": opts.splitbarClass, unselectable: "on"}) + .css({position: "absolute", "user-select": "none", "-webkit-user-select": "none", + "-khtml-user-select": "none", "-moz-user-select": "none", "top": "0px"}) + .bind("mousedown", startSplitMouse); + // Use our cursor unless the style specifies a non-default cursor + if ( /^(auto|default|)$/.test(bar.css("cursor")) ) + bar.css("cursor", opts.cursor); + + // Cache several dimensions for speed, rather than re-querying constantly + bar._DA = bar[0][opts.pxSplit]; + splitter._PBF = $.boxModel? dimSum(splitter, "border"+opts.side3+"Width", "border"+opts.side4+"Width") : 0; + splitter._PBA = $.boxModel? dimSum(splitter, "border"+opts.side1+"Width", "border"+opts.side2+"Width") : 0; + A._pane = opts.side1; + B._pane = opts.side2; + $.each([A,B], function(){ + this._min = opts["min"+this._pane] || dimSum(this, "min-"+opts.split); + this._max = opts["max"+this._pane] || dimSum(this, "max-"+opts.split) || 9999; + this._init = opts["size"+this._pane]===true ? + parseInt($.curCSS(this[0],opts.split)) : opts["size"+this._pane]; + }); + + // Determine initial position, get from cookie if specified + var initPos = A._init; + if ( !isNaN(B._init) ) // recalc initial B size as an offset from the top or left side + initPos = splitter[0][opts.pxSplit] - splitter._PBA - B._init - bar._DA; + if ( opts.cookie ) { + if ( !$.cookie ) + alert('jQuery.splitter(): jQuery cookie plugin required'); + var ckpos = parseInt($.cookie(opts.cookie)); + if ( !isNaN(ckpos) ) + initPos = ckpos; + $(window).bind("unload", function(){ + var state = String(bar.css(opts.origin)); // current location of splitbar + $.cookie(opts.cookie, state, {expires: opts.cookieExpires || 365, + path: opts.cookiePath || document.location.pathname}); + }); + } + if ( isNaN(initPos) ) // King Solomon's algorithm + initPos = Math.round((splitter[0][opts.pxSplit] - splitter._PBA - bar._DA)/2); + + // Resize event propagation and splitter sizing + if ( opts.anchorToWindow ) { + // Account for margin or border on the splitter container and enforce min height + splitter._hadjust = dimSum(splitter, "borderTopWidth", "borderBottomWidth", "marginBottom"); + splitter._hmin = Math.max(dimSum(splitter, "minHeight"), 20); + $(window).bind("resize", function(){ + var top = splitter.offset().top; + var wh = $(window).height(); + splitter.css("height", Math.max(wh-top-splitter._hadjust, splitter._hmin)+"px"); + if ( !IE_10_AND_BELOW ) splitter.trigger("resize"); + }).trigger("resize"); + } + else if ( opts.resizeToWidth && !IE_10_AND_BELOW ) + $(window).bind("resize", function(){ + splitter.trigger("resize"); + }); + + // Resize event handler; triggered immediately to set initial position + splitter.bind("resize", function(e, size){ + // Custom events bubble in jQuery 1.3; don't Yo Dawg + if ( e.target != this ) return; + // Determine new width/height of splitter container + splitter._DF = splitter[0][opts.pxFixed] - splitter._PBF; + splitter._DA = splitter[0][opts.pxSplit] - splitter._PBA; + // Bail if splitter isn't visible or content isn't there yet + if ( splitter._DF <= 0 || splitter._DA <= 0 ) return; + // Re-divvy the adjustable dimension; maintain size of the preferred pane + resplit(!isNaN(size)? size : (!(opts.sizeRight||opts.sizeBottom)? A[0][opts.pxSplit] : + splitter._DA-B[0][opts.pxSplit]-bar._DA)); + }).trigger("resize" , [initPos]); + }); +}; + +})(jQuery); +//***** axutils.js *****// +/* + * + * + * + * + */ + + (function() { + // define the root namespace object + if(!window.$axure) window.$axure = {}; + + $axure.utils = {}; + + // ------------------------------------------------------------------------ + // Makes an object bindable + // ------------------------------------------------------------------------ + $axure.utils.makeBindable = function(obj, events) { + if(obj.registeredBindings != null) return; + + // copy the events + obj.bindableEvents = events.slice(); + obj.registeredBindings = {}; + + obj.bind = function(eventName, fn) { + var binding = {}; + binding.eventName = eventName; + binding.action = fn; + + var bindingList = this.registeredBindings[eventName]; + if(bindingList == null) { + bindingList = []; + this.registeredBindings[eventName] = bindingList; + } + bindingList[bindingList.length] = binding; + }; + + obj.unbind = function(eventName) { + if(eventName.indexOf('.') >= 0) { + this.registeredBindings[eventName] = null; + } else { + var event = eventName.split('.')[0]; + for(var bindingKey in this.registeredBindings) { + if(bindingKey.split('.')[0] == event) { + this.registeredBindings[bindingKey] = null; + } + } + } + }; + + obj.triggerEvent = function(eventName, arg) { + for(var bindingKey in this.registeredBindings) { + if(bindingKey.split('.')[0] == eventName) { + var bindings = this.registeredBindings[bindingKey]; + for(var i = 0; i < bindings.length; i++) { + if(arg == null) { + bindings[i].action(); + } else { + bindings[i].action(arg); + } + } + } + } + }; + }; + + + $axure.utils.loadCSS = function(url) { + $('head').append(''); + }; + + $axure.utils.loadJS = function(url) { + $('head').append(''); + }; + + $axure.utils.curry = function(fn) { + var curriedArgs = Array.prototype.slice.call(arguments, [1]); + return function() { + fn.apply(this, curriedArgs.concat(Array.prototype.slice.call(arguments))); + }; + }; + + $axure.utils.succeeded = function(result) { + return result && result.success; + }; + + $axure.utils.createUniqueTag = function() { + return Math.random().toString().substring(2) + + Math.random().toString().substring(2) + + Math.random().toString().substring(2) + + Math.random().toString().substring(2); + }; + + $axure.utils.formatDate = function(date) { + var months = [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + var hours = date.getHours(); + var amPm = (hours > 11 ? 'PM' : 'AM'); + hours = hours % 12; + if(hours == '0') hours = '12'; + var minutes = date.getMinutes() + ''; + if(minutes.length == 1) { + minutes = '0' + minutes; + } + return [ + months[date.getMonth()], ' ', date.getDate(), ' ', date.getFullYear(), ' ', + hours, ':', minutes, ' ', amPm].join(''); + + }; + + $axure.utils.quickObject = function() { + var returnVal = {}; + for(var i = 0; i < arguments.length; i += 2) { + returnVal[arguments[i]] = arguments[i + 1]; + } + return returnVal; + }; + + var matrixBase = { + mul: function(val) { + if(val.x !== undefined) { + return $axure.utils.Vector2D( + this.m11 * val.x + this.m12 * val.y + this.tx, + this.m21 * val.x + this.m22 * val.y + this.ty); + } else if(val.m11) { + return $axure.utils.Matrix2D( + this.m11 * val.m11 + this.m12 * val.m21, + this.m11 * val.m12 + this.m12 * val.m22, + this.m21 * val.m11 + this.m22 * val.m21, + this.m21 * val.m12 + this.m22 * val.m22, + val.tx + this.tx * val.m11 + this.ty * val.m21, + val.ty + this.tx * val.m12 + this.ty * val.m22 + ); + } else if(Number(val)) { + var num = Number(val); + return $axure.utils.Matrix2D(this.m11 * num, this.m12 * num, + this.m21 * num, this.m22 * num, + this.tx * num, this.ty * num); + } else return undefined; + }, + rotate: function(angle) { + var angleRad = angle * Math.PI / 180; + var c = Math.cos(angleRad); + var s = Math.sin(angleRad); + + return this.mul($axure.utils.Matrix2D(c, -s, s, c)); + }, + translate: function(tx, ty) { + return this.mul($axure.utils.Matrix2D(1, 0, 0, 1, tx, ty)); + } + }; + + $axure.utils.Matrix2D = function(m11, m12, m21, m22, tx, ty) { + return $.extend({ + m11: m11 || 0, + m12: m12 || 0, + m21: m21 || 0, + m22: m22 || 0, + tx: tx || 0, + ty: ty || 0 + }, matrixBase); + }; + + $axure.utils.Vector2D = function(x, y) { + return { x: x || 0, y: y || 0 }; + }; + + $axure.utils.Matrix2D.identity = function() { + return $axure.utils.Matrix2D(1, 0, 0, 1, 0, 0); + }; + + $axure.utils.fixPng = function(png) { + if(!(/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32")) return; + + var src = png.src; + if(!png.style.width) { png.style.width = $(png).width(); } + if(!png.style.height) { png.style.height = $(png).height(); } + png.onload = function() { }; + png.src = $axure.utils.getTransparentGifPath(); + png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')"; + }; + })(); + + // TODO: [mas] simplify this + if(window.$axure && window.$axure.internal) { + $axure.internal(function($ax) { $ax.utils = $axure.utils; }); + } + + // Its too much of a pain to escape everything and use regular expresions, just replace manually + (function () { + var original = String.prototype.replace; + // TODO: maybe use flags or object instead to pass options in + String.prototype.replace = function (search, newVal, replaceFirst, ignoreCase) { + // Use original is some cases + if (search instanceof RegExp) return original.apply(this, arguments); + + search = String(search); + var searchCompare = ignoreCase ? this.toLowerCase() : this; + if (ignoreCase) search = search.toLowerCase(); + + var searchLength = search.length; + var thisLength = this.length; + + var index = 0; + var retVal = ''; + while (index != -1) { + var nextIndex = searchCompare.indexOf(search, index); + if (nextIndex != -1) { + retVal += this.substring(index, nextIndex) + newVal; + index = nextIndex + searchLength; + if (index >= thisLength) index = -1; + } else { + retVal += this.substring(index); + index = -1; + } + if (replaceFirst) break; + } + + return retVal; + }; + + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (elt /*, from*/) { + var len = this.length >>> 0; + + var from = trunc(Number(arguments[1]) || 0); + if(from < 0) from += len; + + for(; from < len; from++) { + if(from in this && this[from] === elt) return from; + } + return -1; + }; + } + + var trunc = function(num) { + return num < 0 ? Math.ceil(num) : Math.floor(num); + }; + + + })(); + +//***** axplayer.js *****// +if (!window.$axure) window.$axure = function () { }; +if (typeof console == 'undefined') console = { + log: function () { } +}; +if(window._axUtils) $axure.utils = _axUtils; + +$axure.loadDocument = function(document) { + $axure.document = document; +}; + +function setUpController() { + + //$axure.utils = _axUtils; + + var _page = {}; + $axure.page = _page; + + $axure.utils.makeBindable(_page, ['load']); + + var _player = function() { + }; + $axure.player = _player; + + //----------------------------------------- + //Global Var array, getLinkUrl function and setGlobalVar listener are + //for use in setting global vars in page url string when clicking a + //page in the sitemap + //----------------------------------------- + var _globalVars = {}; + + //----------------------------------------- + //Used by getLinkUrl below to check if local server is running + //in order to send back the global variables as a query string + //in the page url + //----------------------------------------- + var _shouldSendVarsToServer = function () { + //If exception occurs (due to page in content frame being from a different domain, etc) + //then run the check without the url (which will end up checking against sitemap url) + try { + var mainFrame = document.getElementById("mainFrame"); + return $axure.shouldSendVarsToServer(mainFrame.contentWindow.location.href); + } catch (e) { + return $axure.shouldSendVarsToServer(); + } + }; + + var _getLinkUrl = function (baseUrl) { + var toAdd = ''; + for(var globalVarName in _globalVars) { + var val = _globalVars[globalVarName]; + if(val != null) { + if(toAdd.length > 0) toAdd += '&'; + toAdd += globalVarName + '=' + encodeURIComponent(val); + } + } + return toAdd.length > 0 ? baseUrl + (_shouldSendVarsToServer() ? '?' : '#') + toAdd + "&CSUM=1" : baseUrl; + }; + $axure.getLinkUrlWithVars = _getLinkUrl; + + $axure.messageCenter.addMessageListener(function(message, data) { + if (message == 'setGlobalVar'){ + _globalVars[data.globalVarName] = data.globalVarValue; + } + }); + + $axure.messageCenter.addStateListener('page.data', function (key, value) { + for (var subKey in value) { + _page[subKey] = value[subKey]; + } + $axure.page.triggerEvent('load'); + }); + + // --------------------------------------------- + // Navigates the main frame (setting the currently visible page). If the link is relative, + // this method should test if it is actually a axure rp page being loaded and properly set + // up all the controller for the page if it is + // --------------------------------------------- + _page.navigate = function (url, includeVariables) { + var mainFrame = document.getElementById("mainFrame"); + //var mainFrame = window.parent.mainFrame; + // if this is a relative url... + var urlToLoad; + if (url.indexOf(':') < 0 || url[0] == '/') { + var winHref = window.location.href; + var page = winHref.substring(0, winHref.lastIndexOf('/') + 1) + url; + urlToLoad = page; + } else { + urlToLoad = url; + } + if (!includeVariables) { + mainFrame.contentWindow.location.href = urlToLoad; + return; + } + var urlWithVars = $axure.getLinkUrlWithVars(urlToLoad); + var currentData = $axure.messageCenter.getState('page.data'); + var currentUrl = currentData && currentData.location; + if(currentUrl && currentUrl.indexOf('#') != -1) currentUrl = currentUrl.substring(0, currentUrl.indexOf('#')) + + // this is so we can make sure the current frame reloads if the variables have changed + // by default, if the location is the same but the hash code is different, the browser will not + // trigger a reload + mainFrame.contentWindow.location.href = + currentUrl && urlToLoad.toLowerCase() != currentUrl.toLowerCase() + ? urlWithVars + : 'resources/reload.html#' + encodeURI(urlWithVars); + + }; + + var pluginIds = []; + var plugins = {}; + var currentVisibleHostId = null; + // --------------------------------------------- + // Adds a tool box frame from a url to the interface. This is useful for loading plugins + // settings is an object that supports the following properties: + // - id : the id of the element for the plugin + // - context : the context to create the plugin host for + // - title : the user-visible caption for the plugin + // --------------------------------------------- + _player.createPluginHost = function (settings) { + // right now we only understand an interface context + if (!(!settings.context || settings.context === 'interface')) { + throw ('unknown context type'); + } + if (!settings.id) throw ('each plugin host needs an id'); + + var host = $('
    ') + .appendTo('#interfaceControlFrameHostContainer'); + + host.hide(); + + var headerLink = $('' + settings.title.toUpperCase() + ''); + + headerLink + .click($axure.utils.curry(interfaceControlHeaderButton_click, settings.id)).wrap('
  • '); + + if((settings.id == 'feedbackHost' || settings.id == 'feedbackContainer') && pluginIds[pluginIds.length - 1] == 'debugHost') headerLink.parent().insertBefore('#debugHostBtn'); + else headerLink.parent().appendTo('#interfaceControlFrameHeader'); + + pluginIds[pluginIds.length] = settings.id; + plugins[settings.id] = settings; + + $(document).trigger('pluginCreated', [settings.gid]); + }; + + // private methods + var interfaceControlHeaderButton_click = function (id) { + var clickedPlugin = $('#interfaceControlFrameHeader a[pluginId=' + id + ']'); + if(clickedPlugin.hasClass('selected')) { + clickedPlugin.removeClass('selected'); + $('#' + id).hide(); + _player.collapseToBar(); + + $(document).trigger('pluginShown',['']); + } else { + $('#interfaceControlFrameHeader a').removeClass('selected'); + clickedPlugin.addClass('selected'); + + $('#' + currentVisibleHostId).hide(); + $('#' + id).show(); + currentVisibleHostId = id; + _player.expandFromBar(); + + $(document).trigger('pluginShown', [plugins[id].gid]); + } + + $(document).trigger('ContainerHeightChange'); + }; + + $axure.player.showPlugin = function(gid) { + for(var id in plugins) { + if(plugins[id].gid == gid) { + $('a[pluginId="' + id + '"]').click(); + break; + } + } + }; +} + +function setUpDocumentStateManager() { + var mgr = $axure.prototype.documentStateManager = {}; + $axure.utils.makeBindable(mgr, ['globalVariableChanged']); + + mgr.globalVariableValues = {}; + + mgr.setGlobalVariable = function(varname, value, source) { + var arg = {}; + arg.variableName = varname; + arg.newValue = value; + arg.oldValue = this.getGlobalVariable(varname); + arg.source = source; + + mgr.globalVariableValues[varname] = value; + this.triggerEvent('globalVariableChanged', arg); + }; + + mgr.getGlobalVariable = function(varname) { + return mgr.globalVariableValues[varname]; + }; +} + + +function setUpPageStateManager() { + var mgr = $axure.prototype.pageStateManager = {}; + + mgr.panelToStateIds = {}; +} + +//***** messagecenter.js *****// +if (typeof console == 'undefined') console = { + log: function () { } +}; + +// sniff chrome +var CHROME_5_LOCAL = false; +var CHROME = false; +var SAFARI = false; +var FIREFOX = false; +var WEBKIT = false; +var OS_MAC = false; +var IOS = false; +var ANDROID = false; +var MOBILE_DEVICE = false; + +var IE = false; +var IE_10_AND_BELOW = false; //ie 10 and lower +var IE_11_AND_ABOVE = false; //ie 11 and above +var BROWSER_VERSION = 5000; +(function () { + if(!window.$axure) window.$axure = function() {}; + var useragent = window.navigator.userAgent; + + var edgeRegex = /Edge\/([0-9]+)/g; + var edgeMatch = edgeRegex.exec(useragent); + $axure.browser = { isEdge: Boolean(edgeMatch) }; + + if(!$axure.browser.isEdge) { + var chromeRegex = /Chrome\/([0-9]+).([0-9]+)/g; + var chromeMatch = chromeRegex.exec(useragent); + CHROME = Boolean(chromeMatch); + CHROME_5_LOCAL = chromeMatch && + Number(chromeMatch[1]) >= 5 && + location.href.indexOf('file://') >= 0; + } + + var safariRegex = /Safari\/([0-9]+)/g; + var safariMatch = safariRegex.exec(useragent); + SAFARI = Boolean(safariMatch) && !CHROME; //because chrome also inserts safari string into user agent + + var webkitRegex = /WebKit\//g ; + WEBKIT = Boolean(webkitRegex.exec(useragent)); + + FIREFOX = useragent.toLowerCase().indexOf('firefox') > -1; + + var macRegex = /Mac/g ; + OS_MAC = Boolean(macRegex.exec(window.navigator.platform)); + + IOS = useragent.match(/iPhone/i) || useragent.match(/iPad/i) || useragent.match(/iPod/i); + ANDROID = useragent.match(/Android/i); + + MOBILE_DEVICE = ANDROID || IOS + || navigator.userAgent.match(/webOS/i) + || navigator.userAgent.match(/BlackBerry/i) + || navigator.userAgent.match(/Tablet PC/i) + || navigator.userAgent.match(/Windows Phone/i); + + if($.browser) { + if($.browser.msie) IE_10_AND_BELOW = true; + else IE_11_AND_ABOVE = useragent.toLowerCase().indexOf('trident') > -1; + + BROWSER_VERSION = $.browser.version; + } + + IE = IE_10_AND_BELOW || IE_11_AND_ABOVE; + + //Used by sitemap and variables.js getLinkUrl functions so that they know + //whether to embed global variables in URL as query string or hash string + //_shouldSendVars persists the value for sitemap instead of re-checking every time + var _shouldSendVars; + var _shouldSendVarsToServer = function(url) { + if(typeof _shouldSendVars != 'undefined') { + return _shouldSendVars; + } + + if(SAFARI || (IE_10_AND_BELOW && BROWSER_VERSION < 10)) { + var urlToCheck = typeof url != 'undefined' ? url : window.location.href; + var serverRegex = /http:\/\/127\.0\.0\.1:[0-9]{5}/g; + var serverMatch = serverRegex.exec(urlToCheck); + var previewRegex = /[0-9]{2}\.[0-9]{2}\.[0-9]{2}/g; + var previewMatch = previewRegex.exec(urlToCheck); + if(Boolean(serverMatch) && Boolean(previewMatch)) { + _shouldSendVars = true; + return _shouldSendVars; + } + } + + _shouldSendVars = false; + return _shouldSendVars; + }; + $axure.shouldSendVarsToServer = _shouldSendVarsToServer; +})(); + +(function() { + var _topMessageCenter; + var _messageCenter = {}; + var _listeners = []; + var _stateListeners = []; + var _state = {}; + var _eventObject = null; + + var _queuedMessages = []; + var _initialized = false; + + // this is for the non Chrome 5 local scenarios. The "top" message center will dispatch to all the bottom ones + var _childrenMessageCenters = []; + + // create $axure if it hasn't been created + if (!window.$axure) window.$axure = function() {}; + $axure.messageCenter = _messageCenter; + + // isolate scope, and initialize _topMessageCenter. + (function() { + if (!CHROME_5_LOCAL) { + var topAxureWindow = window; + try { + while(topAxureWindow.parent && topAxureWindow.parent !== topAxureWindow + && topAxureWindow.parent.$axure) topAxureWindow = topAxureWindow.parent; + } catch(e) {} + _topMessageCenter = topAxureWindow.$axure.messageCenter; + } + })(); + + $(window.document).ready(function() { + if (CHROME_5_LOCAL) { + $('body').append("" + + ""); + + _eventObject = window.document.createEvent('Event'); + _eventObject.initEvent('axureMessageSenderEvent', true, true); + + $('#axureEventReceiverDiv').bind('axureMessageReceiverEvent', function () { + var request = JSON.parse($(this).text()); + _handleRequest(request); + }); + } else { + if (_topMessageCenter != _messageCenter) { + _topMessageCenter.addChildMessageCenter(_messageCenter); + console.log('adding from ' + window.location.toString()); + } + } + }); + + var _handleRequest = function (request) { + // route the request to all the listeners + for(var i = 0; i < _listeners.length; i++) _listeners[i](request.message, request.data); + + // now handle the queued messages if we're initializing + if (request.message == 'initialize') { + _initialized = true; + // send all the queued messages and return + for (var i = 0; i < _queuedMessages.length; i++) { + var qRequest = _queuedMessages[i]; + _messageCenter.postMessage(qRequest.message, qRequest.data); + } + _queuedMessages = []; + } + + // and then handle the set state messages, if necessary + if (request.message == 'setState') { + _state[request.data.key] = request.data.value; + for (var i = 0; i < _stateListeners.length; i++) { + var keyListener = _stateListeners[i]; + // if thep passed a null or empty value, always post the message + if (!keyListener.key || keyListener.key == request.data.key) { + keyListener.listener(request.data.key, request.data.value); + } + } + } + + }; + + // ----------------------------------------------------------------------------------------- + // This method allows for dispatching messages in the non-chromelocal scenario. + // Each child calls this on _topMessageCenter + // ----------------------------------------------------------------------------------------- + _messageCenter.addChildMessageCenter = function(messageCenter) { + _childrenMessageCenters[_childrenMessageCenters.length] = messageCenter; + }; + + // ----------------------------------------------------------------------------------------- + // This method allows for dispatching messages in the non-chromelocal scenario. + // Each child calls this on _topMessageCenter + // ----------------------------------------------------------------------------------------- + _messageCenter.dispatchMessage = function(message, data) { + _handleRequest({ + message: message, + data: data + }); + }; + + // ----------------------------------------------------------------------------------------- + // ----------------------------------------------------------------------------------------- + _messageCenter.dispatchMessageRecursively = function(message, data) { + console.log("dispatched to " + window.location.toString()); + + // dispatch to the top center first + _messageCenter.dispatchMessage(message, data); + + $('iframe').each(function(index, frame) { + //try,catch to handle permissions error in FF when loading pages from another domain + try { + if (frame.contentWindow.$axure && frame.contentWindow.$axure.messageCenter) { + frame.contentWindow.$axure.messageCenter.dispatchMessageRecursively(message, data); + } + }catch(e) {} + }); + }; + + var _combineEventMessages = false; + var _compositeEventMessageData = []; + _messageCenter.startCombineEventMessages = function() { + _combineEventMessages = true; + } + + _messageCenter.endCombineEventMessages = function () { + _messageCenter.sendCompositeEventMessage(); + _combineEventMessages = false; + } + + _messageCenter.sendCompositeEventMessage = function () { + _messageCenter.postMessage('axCompositeEventMessage', _compositeEventMessageData); + _compositeEventMessageData = []; + } + + _messageCenter.postMessage = function (message, data) { + if(_combineEventMessages) { + if(message == 'axEvent' || message == 'axCase' || message == 'axAction' || message == 'axEventComplete') { + _compositeEventMessageData.push({ 'message': message, 'data': data }); + if(_compositeEventMessageData.length >= 10) _messageCenter.sendCompositeEventMessage(); + return; + } + } + + if(!CHROME_5_LOCAL) { + _topMessageCenter.dispatchMessageRecursively(message, data); + } else { + var request = { + message: message, + data: data + }; + + if(_initialized) { + var senderDiv = window.document.getElementById('axureEventSenderDiv'); + var messageText = JSON.stringify(request); + // console.log('sending event: ' + messageText); + senderDiv.innerText = messageText; + senderDiv.dispatchEvent(_eventObject); + // console.log('event sent'); + } else { + _queuedMessages[_queuedMessages.length] = request; + } + } + }; + + _messageCenter.setState = function(key, value) { + var data = { + key: key, + value: value + }; + _messageCenter.postMessage('setState', data); + }; + + _messageCenter.getState = function(key) { + return _state[key]; + }; + + _messageCenter.addMessageListener = function(listener) { + _listeners[_listeners.length] = listener; + }; + + _messageCenter.addStateListener = function(key, listener) { + _stateListeners[_stateListeners.length] = { + key: key, + listener: listener + }; + }; + +})(); diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start.html new file mode 100644 index 0000000..37974b1 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start.html @@ -0,0 +1,503 @@ + + + + Untitled Document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +   +
    +
    +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + CLOSE +
      +
      +
      +
      + +
      + +
      + +
      + +
      + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start_c_1.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start_c_1.html new file mode 100644 index 0000000..82de5fd --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start_c_1.html @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start_g_0.html b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start_g_0.html new file mode 100644 index 0000000..82aa640 --- /dev/null +++ b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/3_Prototype/Prototype_HTML_1642019_1642021_1642040_1642049_1642051/start_g_0.html @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Change-Management.xlsx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Change-Management.xlsx new file mode 100644 index 0000000..46f860a Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Change-Management.xlsx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Priority.xlsx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Priority.xlsx new file mode 100644 index 0000000..eb45cf0 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Priority.xlsx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Risk_Management.docx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Risk_Management.docx new file mode 100644 index 0000000..22e5385 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Edit Risk_Management.docx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Slide.pptx b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Slide.pptx new file mode 100644 index 0000000..95b5449 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/Slide.pptx differ diff --git a/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/video-gioi-thieu.mp4 b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/video-gioi-thieu.mp4 new file mode 100644 index 0000000..1d577c7 Binary files /dev/null and b/HK3/PhanTichVaQuanLyYeuCauPhanMem/YCPM-HCDH/DoAn16HCB/FinalDocument/video-gioi-thieu.mp4 differ