";
+
+ 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 @@
+
+
+
+
+
+
+
+
+
+
+ Close
+
+
+
+
+
+
+
+
+
\ 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 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
+
+
+
+
+
+
+ 3. Check "Allow access to file URLs"
+
+
+
+
+ 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;g
0){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(;ca ",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="",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>$2>");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>$2>");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=/');
+ };
+
+ $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('');
+ $viewSelect.append('Auto ');
+ 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('');
+ $viewSelect.append('' + defaultViewName + ' ');
+ }
+
+ 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('');
+ $viewSelect.append('' + viewString + ' ');
+ }
+
+ $('.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 += '
';
+
+ 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 = "";
+ } else {
+ margin = (21 + 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 += "
";
+ $('#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 += "
";
+ 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 = "";
+
+ //var 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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