Fixed reported CSS issues and added support for IE

Jovan Strika committed Apr 19, 2019 at 14:27 UTC 7305c119039253b9f3fc16e191b52677c46c8c23
3 files changed +1384 -890
public/styles/style.css
+580 -54
@@ -1,4 +1,9 @@
1 -body {
1 +
2 +html, body {
3 + width: 100%;
4 + height: 100%;
5 +}
6 +body {
7 margin: 0;
8 padding: 0;
9 border: 0;
@@ -6,7 +11,7 @@
11 font-size: 13px;
12 font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
13 background-color: #d3d9d6;
9 - overflow-y: hidden;
14 + /* overflow-y: hidden; */
15 }
16
17 #container {
@@ -21,22 +26,79 @@
26 border-left: 1px solid #b7b7b7;
27 padding: 0;
28 }
24 -
29 + .fullscreen.login #container {
30 + -ms-grid-rows: 66px 24px 1fr 45px;
31 + grid-template-rows: 66px 24px auto 45px;
32 + -ms-grid-columns: 90px 1fr;
33 + grid-template-columns: 90px repeat(auto-fit, minmax(900px, 1fr));
34 + grid-template-areas:
35 + "header header"
36 + "nav nav"
37 + "content content"
38 + "footer footer";
39 + }
40 + .fullscreen.arg_hide #container {
41 + -ms-grid-rows: 66px 24px 1fr 45px;
42 + grid-template-rows: 66px 24px auto 45px;
43 + -ms-grid-columns: 90px 1fr;
44 + grid-template-columns: 90px repeat(auto-fit, minmax(900px, 1fr));
45 + grid-template-areas:
46 + "header header"
47 + "nav nav"
48 + "content content"
49 + "footer footer";
50 + }
51 + .fullscreen.menu_stack #container {
52 + -ms-grid-rows: 66px minmax(24px, max-content) 1fr 45px;
53 + grid-template-rows: 66px minmax(24px, max-content) auto 45px;
54 + -ms-grid-columns: 90px 1fr;
55 + grid-template-columns: 90px repeat(auto-fit, minmax(900px, 1fr));
56 + grid-template-areas:
57 + "header header"
58 + "nav nav"
59 + "content content"
60 + "footer footer";
61 + }
62 .fullscreen #container {
63 width: 100%;
27 - min-width: 700px;
64 + min-width: 100%;
65 min-height: 0px;
66 border-right: 0px none #b7b7b7;
67 border-left: 0px none #b7b7b7;
31 - }
68
69 + height: calc(100% - 0px);
70 + position: relative;
71 + display: -ms-grid;
72 + display: grid;
73 + grid-gap: 0px;
74 + grid-template-areas:
75 + "header header"
76 + "sidebar nav"
77 + "sidebar content"
78 + "sidebar footer";
79 + -ms-grid-columns: 90px 1fr;
80 + grid-template-columns: 90px auto;
81 + -ms-grid-rows: 66px 24px 1fr 45px;
82 + grid-template-rows: 66px 24px auto 45px;
83 + }
84 +
85 .fulldesk #container {
86 width: 100%;
87 + height: 100%;
88 min-width: 700px;
89 min-height: 0px;
90 border-right: 0px none #b7b7b7;
91 border-left: 0px none #b7b7b7;
92 position: unset;
93 + position: relative;
94 + display: -ms-grid !important;
95 + display: grid !important;
96 + grid-gap: 0px;
97 + grid-template-areas: "content"!important;
98 + -ms-grid-columns: 1fr;
99 + grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)) !important;
100 + -ms-grid-rows: 1fr;
101 + grid-template-rows: repeat(auto-fit, minmax(100px, 1fr))!important;
102 }
103
104 #masthead {
@@ -57,8 +119,11 @@
119
120 .fullscreen #masthead {
121 width: 100%;
122 + grid-area: header;
123 + -ms-grid-column: 1;
124 + -ms-grid-column-span: 2;
125 + -ms-grid-row: 1;
126 }
61 -
127 .fulldesk #masthead {
128 display: none;
129 }
@@ -91,39 +156,26 @@
156 font-weight: bold;
157 }
158
94 -#page_content {
95 - /*max-height: calc(100vh - 108px);*/
96 -}
97 - .fullscreen #page_content {
98 - position: absolute;
99 - top: 66px;
100 - left: 90px;
101 - right: 0px;
102 - bottom: 0px;
103 - }
104 - .arg_hide #page_content {
105 - left: 0px;
106 - }
107 - .fulldesk #page_content {
108 - position: static;
109 - top: 0;
110 - left: 0;
111 - right: 0;
112 - bottom: 0;
113 - }
114 -
159 #page_leftbar {
116 - height: calc(100vh - 66px);
160 + -ms-grid-column: 1;
161 + -ms-grid-row: 2;
162 + -ms-grid-row-span: 3;
163 + /* height: calc(100vh - 66px); */
164 width: 90px;
118 - position: absolute;
165 z-index: 1000;
166 background: #113962;
167 background: linear-gradient(to bottom, #104893 0%,#113962 100%);
168 color: white;
169 + overflow-y: hidden;
170 + display: none;
171 }
172 .fullscreen #page_leftbar {
173 + grid-area: sidebar;
174 display: block;
175 }
176 + .menu_stack #page_leftbar {
177 + display: none;
178 + }
179 .arg_hide #page_leftbar {
180 display: none;
181 }
@@ -131,14 +183,22 @@
183 display: none;
184 }
185
186 +
187 #topbar {
135 - /* height: 24px; */
188 position: relative;
189 + grid-area: nav;
190 + -ms-grid-column: 2;
191 + -ms-grid-row: 2;
192 }
193
194 .fulldesk #topbar {
195 display: none;
196 }
197 + .menu_stack #topbar, .login #topbar, .arg_hide #topbar {
198 + -ms-grid-column: 1;
199 + -ms-grid-column-span: 2;
200 + -ms-grid-row: 2;
201 + }
202
203 .topbar_td {
204 width: 100px;
@@ -157,54 +217,95 @@
217 top: 3px;
218 right: 6px
219 }
220 +#toggle2 {
221 + cursor: pointer;
222 + color: white;
223 + position: absolute;
224 + top: 3px;
225 + right: 26px;
226 + display: none;
227 +}
228 + .fullscreen #toggle2 {
229 + display: block;
230 + }
231
161 -#MainMenuSpan, #MainSubMenu, #MeshSubMenu, #UserSubMenu, #ServerSubMenu, #UserDummyMenu {
232 + /* #UserDummyMenuSpan, */
233 +#MainSubMenuSpan, #MeshSubMenuSpan, #UserSubMenuSpan, #ServerSubMenuSpan, #MainMenuSpan, #MainSubMenu, #MeshSubMenu, #UserSubMenu, #ServerSubMenu, #UserDummyMenu {
234 width: 100%;
163 - height: 22px
235 + height: 24px;
236 + color: white;
237 + background-color: #808080;
238 }
239 + .menu_stack #UserDummyMenu {
240 + display: none;
241 + }
242
243 #MainMenuSpan {
244 display: table;
245 }
246 +
247 .fullscreen #MainMenuSpan {
248 display: none;
249 }
250 .fulldesk #MainMenuSpan {
251 display: none;
252 }
253 + .menu_stack #MainMenuSpan {
254 + display: block;
255 + }
256
257 #column_l {
258 position: relative;
259 float: left;
179 - width: 930px;
260 + width: 100%;
261 + box-sizing: border-box;
262 margin: 0;
263 padding: 0 15px;
264 background-color: #fff;
183 - /*max-height: calc(100vh - 111px);*/
265 + /* max-height: calc(100vh - 151px); */
266 min-width: unset;
267 }
186 -.room4submenu {
187 - max-height: calc(100vh - 159px) !important;
188 -}
268
269 + .menu_stack.fullscreen.fulldesk #column_l {
270 + -ms-grid-column: 1;
271 + -ms-grid-row: 1;
272 + -ms-grid-column-span: 2;
273 + -ms-grid-row-span: 4;
274 + }
275 .fullscreen #column_l {
191 - height: calc(100vh - 135px);
192 - width: calc(100% - 30px);
276 + -ms-grid-column: 2;
277 + -ms-grid-row: 3;
278 + grid-area: content;
279 + width: unset;
280 + /* height: calc(100vh - 111px);
281 + width: calc(100% - 30px); */
282 overflow-y: auto;
283 }
284
285 + .menu_stack.fullscreen #column_l, .login #column_l, .arg_hide #column_l {
286 + -ms-grid-column: 1;
287 + -ms-grid-column-span: 2;
288 + -ms-grid-row: 3;
289 + }
290 .fulldesk #column_l {
291 + height: 100%;
292 width: 100%;
293 height: unset;
294 margin-left: unset;
295 overflow-y: unset;
296 padding: 0;
202 - max-height: unset;
297 + max-height: none;
298 + -ms-grid-column: 1;
299 + -ms-grid-row: 1;
300 }
301 .fulldesk #column_l_bottomgap {
302 display: none;
303 }
304
305 +.room4submenu {
306 + min-height: calc(100vh - 159px);
307 +}
308 +
309 #centralTable {
310 width: 100%;
311 }
@@ -254,6 +355,9 @@
355 }
356
357 #footer {
358 + -ms-grid-column: 2;
359 + -ms-grid-row: 4;
360 + grid-area: footer;
361 clear: both;
362 overflow: auto;
363 width: 100%;
@@ -265,6 +369,11 @@
369 .fulldesk #footer {
370 display: none;
371 }
372 + .menu_stack.fullscreen #footer, .login #footer, .arg_hide #footer {
373 + -ms-grid-column: 1;
374 + -ms-grid-column-span: 2;
375 + -ms-grid-row: 4;
376 + }
377
378 /* Support for footer made with table */
379 #footer table {
@@ -315,6 +424,12 @@
424 text-decoration: none;
425 }
426
427 +#verifyEmailId2 {
428 + color:yellow;
429 + margin-left:3px;
430 + cursor:pointer;
431 +}
432 +
433 #dialog {
434 z-index: 1000;
435 background-color: #EEE;
@@ -332,6 +447,18 @@
447 background-color: #003366;
448 color: #FFF;
449 border-radius: 5px 5px 0 0;
450 + margin-bottom: 6px;
451 +}
452 +
453 +#id_dialogclose {
454 + float: right;
455 + padding: 3px;
456 + margin-right: 3px;
457 + cursor: pointer;
458 +}
459 +
460 +#id_dialogtitle {
461 + padding: 5px;
462 }
463
464 #dialogBody {
@@ -360,14 +487,63 @@
487 padding:10px;
488 }
489
363 -#dialog2, #dialog3 {
364 - margin: auto;
490 +#dialog2, #dialog3, #dialog7 {
491 margin: 3px;
492 }
493
494 +#d3uploadMode, #d3localFile {
495 + float:right;
496 + width:260px;
497 +}
498 +
499 +#d3serveraction {
500 + width: 100%;
501 + background-color: #d3d9d6;
502 + text-align: left;
503 + padding: 3px;
504 +}
505 +
506 +#d3serverfiles {
507 + width: 100%;
508 + height: 150px;
509 + background-color: white;
510 + padding: 2px;
511 + border: 1px solid gray;
512 + overflow-y: scroll;
513 +}
514 +
515 +
516 +#d7bitmapquality, #d7bitmapquality, #d7bitmapscaling, #d7framelimiter, #d7desktopmode {
517 + float: right;
518 + width: 200px;
519 + height: 20px;
520 +}
521 +
522 +#dialog7 h4 {
523 + width:100%;
524 + border-bottom: 1px solid gray;
525 +}
526 +
527 +#d7meshkvm div, #d7amtkvm div, #d3upload, #d3localmode {
528 + margin:3px 0 3px 0;
529 + display: flex;
530 + justify-content: space-between;
531 +}
532 +
533 +#d7otherset {
534 + display: block;
535 + border: 1px solid #666;
536 + width: 200px;
537 + height: 60px;
538 + overflow-y: scroll;
539 + background-color: white;
540 +}
541 +
542 #idx_dlgButtonBar {
543 padding: 10px;
370 - margin-bottom: 20px;
544 + margin-bottom: 5px;
545 + overflow: auto;
546 + float: right;
547 }
548
549 #idx_dlgCancelButton {
@@ -398,7 +574,7 @@
574
575 #idx_deskFullBtn2 {
576 float: left;
401 - font-size: large;
577 + font-size: 16px;
578 cursor: pointer;
579 display: none;
580 }
@@ -543,6 +719,14 @@
719 font-size: 10px;
720 }
721
722 +#p2AccountActions .mL {
723 + margin-left: 40px;
724 +}
725 +
726 +#p2ServerActions .mL {
727 + margin-left: 40px;
728 +}
729 +
730 .newMeshBtn {
731 background: url(../images/icon-addnew.png) no-repeat 0px 0px;
732 height: 12px;
@@ -552,10 +736,14 @@
736 padding-left: 15px;
737 }
738
555 -#p2noMeshFound, #p2ServerActionsBackup, #p2ServerActionsRestore, #p2ServerActionsVersion, #p2ServerActionsErrors, #serverStats {
739 +#p2noMeshFound, #serverStats {
740 margin-left:40px;
741 }
742
743 +#p2ServerActionsBackup, #p2ServerActionsRestore, #p2ServerActionsVersion, #p2ServerActionsErrors {
744 + margin-left:0px;
745 +}
746 +
747 .pTable {
748 width: 100%;
749 height: 24px;
@@ -580,7 +768,7 @@
768 }
769
770 #p3events {
583 - height: calc(100vh - 243px);
771 + height: calc(100vh - 245px);
772 overflow-y: scroll
773 }
774
@@ -599,6 +787,10 @@
787 width: 230px;
788 }
789
790 +#p5toolbar {
791 + width: 100%;
792 +}
793 +
794 #p5filehead {
795 width: 100%;
796 background-color: #d3d9d6;
@@ -618,7 +810,7 @@
810
811 #p5filetable {
812 width: 100%;
621 - height: calc(100vh - 294px);
813 + height: calc(100vh - 295px);
814 overflow: auto;
815 -webkit-user-select: none;
816 position: relative;
@@ -631,6 +823,9 @@
823 -webkit-user-select: none;
824 background-color: lightsteelblue;
825 }
826 + #p5PublicShare div {
827 + padding: 4px;
828 + }
829
830 #bigok {
831 width: 256px;
@@ -669,6 +864,12 @@
864 height: 60px;
865 }
866
867 +#serverMainStats {
868 + height:calc(100vh - 251px);
869 + max-height:calc(100vh - 251px);
870 + width:100%
871 +}
872 +
873 #p10BackButton, #p11BackButton {
874 float:left
875 }
@@ -723,6 +924,14 @@
924 font-size: x-small;
925 }
926
927 +#dp10devicevalue {
928 + width: 230px;
929 +}
930 +
931 +.fulldesk #p11 {
932 + height: 100%;
933 +}
934 +
935 #MainComputerImage {
936 border-width: 0px;
937 height: 200px;
@@ -763,7 +972,6 @@
972 top: 0;
973 right: 0;
974 border-left: 2px solid lightgray;
766 - display: none;
975 }
976 #DeskToolsRefreshButton {
977 float: right;
@@ -774,6 +982,7 @@
982 a {
983 color: #036;
984 text-decoration: underline;
985 + cursor: pointer;
986 }
987
988 .i1 {
@@ -1071,11 +1280,20 @@ a {
1280 background-color: #D3D9D6;
1281 }
1282
1283 +/* .pTable .style14 {
1284 + float: left;
1285 +} */
1286 +
1287 .auto-style1 {
1288 text-align: right;
1289 background-color: #D3D9D6;
1290 }
1291
1292 +#pTable .auto-style1 {
1293 + height: 100%;
1294 + float: right;
1295 +}
1296 +
1297 .icon2 {
1298 float: left;
1299 margin: 7px;
@@ -1215,7 +1433,7 @@ a {
1433 .h1 {
1434 background-position: 0% 0%;
1435 width: 14px;
1218 - height: 100%;
1436 + height: 24px;
1437 /* fallback (Opera) */
1438 /* Mozilla: */
1439 /* Chrome, Safari:*/
@@ -1229,13 +1447,13 @@ a {
1447 height: 100%;
1448 width: 20px;
1449 float: right;
1232 - background-color: #ffffff
1450 + background-color: #ffffff;
1451 }
1452
1453 .h2 {
1454 background-position: 0% 0%;
1455 width: 14px;
1238 - height: 100%;
1456 + height: 24px;
1457 /* fallback (Opera) */
1458 /* Mozilla: */
1459 /* Chrome, Safari:*/
@@ -1362,6 +1580,10 @@ a {
1580 /*filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");*/ /* Firefox 10+, Firefox on Android */
1581 filter: gray; /* IE6-9 */
1582 -webkit-filter: grayscale(100%) opacity(60%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */
1583 + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
1584 + -moz-opacity: 0.60;
1585 + opacity:.60;
1586 + filter: alpha(opacity=60);
1587 }
1588
1589 .unselectable {
@@ -1433,13 +1655,117 @@ a {
1655 padding: 4px
1656 }
1657
1658 +
1659 +.deskareaicon {
1660 + cursor: pointer;
1661 + border: none;
1662 + float: right;
1663 + font-size: 130%;
1664 + margin-right: 4px;
1665 +}
1666 +
1667 +.areaHead {
1668 + padding-left: 4px;
1669 + padding-top: 2px;
1670 + padding-bottom: 2px;
1671 + background: #C0C0C0;
1672 +}
1673 +
1674 +.areaProgress {
1675 + background-color: gray;
1676 +}
1677 +
1678 +.areaProgress div {
1679 + height: 2px;
1680 + width: 0%;
1681 + background-color:red;
1682 +}
1683 +
1684 +.areaFoot {
1685 + padding-top: 2px;
1686 + padding-bottom: 2px;
1687 + background: #C0C0C0;
1688 +}
1689 +
1690 +.toright2 {
1691 + float: right;
1692 + text-align: right;
1693 + padding-right: 4px;
1694 +}
1695 +
1696 +#deskarea0 {
1697 + width: 100%;
1698 + padding: 0px;
1699 + padding: 0px;
1700 + margin-top: 0px;
1701 +}
1702 +
1703 + .fulldesk #deskarea0 {
1704 + min-width: 100%;
1705 + min-height: 0px;
1706 + height: 100%;
1707 + position: relative;
1708 + display: -ms-grid;
1709 + display: grid;
1710 + grid-gap: 0px;
1711 + grid-template-areas:
1712 + "deskarea1"
1713 + "deskarea2"
1714 + "deskarea3"
1715 + "deskarea4";
1716 + /* grid-template-columns: 90px auto; */
1717 + grid-template-rows: 24px max-content auto max-content;
1718 + -ms-grid-columns: 1fr;
1719 + -ms-grid-rows: 24px max-content 1fr max-content;
1720 + }
1721 +
1722 + #deskarea0 .mR {
1723 + margin-right: 3px;
1724 + }
1725 +
1726 +#deskarea1 {
1727 + grid-area: deskarea1;
1728 + -ms-grid-column: 1;
1729 + -ms-grid-row: 1;
1730 +}
1731 +
1732 +
1733 +#deskarea2 {
1734 + grid-area: deskarea2;
1735 + background-color: gray;
1736 + -ms-grid-column: 1;
1737 + -ms-grid-row: 2;
1738 +}
1739 +
1740 +#progressbar {
1741 + height:2px;
1742 + width:0%;
1743 + background-color:red;
1744 +}
1745 +
1746 #deskarea3x {
1747 background: black;
1748 text-align: center;
1749 position: relative;
1750 overflow: hidden;
1751 + width: 100%;
1752 + max-height: calc(100vh - 296px); /* + 24px hight of submenu */
1753 + height: calc(100vh - 296px);
1754 }
1755
1756 + .room4submenu #deskarea3x {
1757 + max-height: calc(100vh - 296px);
1758 + height: calc(100vh - 296px);
1759 + }
1760 +
1761 + .fulldesk #deskarea3x {
1762 + grid-area: deskarea3;
1763 + max-height: none;
1764 + height: calc(100vh - 56px);
1765 + -ms-grid-column: 1;
1766 + -ms-grid-row: 3;
1767 + }
1768 +
1769 #DeskFocus {
1770 overflow: hidden;
1771 color: transparent;
@@ -1449,17 +1775,27 @@ a {
1775 }
1776
1777 #DeskParent {
1452 - overflow:hidden
1778 + margin: 0;
1779 + overflow:hidden;
1780 + height: 100%;
1781 + width: 100%;
1782 + position: absolute;
1783 + right: 0;
1784 + top: 0;
1785 }
1786
1787 #Desk {
1788 overflow: hidden;
1789 width: 100%;
1790 -ms-touch-action: none;
1459 - margin-left: 0px;
1791 + position: absolute;
1792 + top: 0px;
1793 + bottom: 0px;
1794 + left: 0px;
1795 + right: 0px;
1796 + margin: auto;
1797 }
1798
1462 -
1799 #deskToolsBar {
1800 position: absolute;
1801 padding: 3px;
@@ -1471,6 +1807,27 @@ a {
1807 cursor: pointer;
1808 }
1809
1810 +#deskToolsArea {
1811 + position: absolute;
1812 + top: 26px;
1813 + left: 4px;
1814 + right: 4px;
1815 + bottom: 4px;
1816 + background-color: lightgray;
1817 + text-align: left;
1818 +}
1819 +
1820 +#deskToolsHeader {
1821 + border-bottom: 1px solid darkgray;
1822 + padding: 3px;
1823 +}
1824 +
1825 +#deskToolsHeader .colmn1 {
1826 + width: 50px;
1827 + padding-right: 5px;
1828 + float: left;
1829 +}
1830 +
1831 #DeskToolsProcesses {
1832 overflow-y: scroll;
1833 position: absolute;
@@ -1486,6 +1843,22 @@ a {
1843 background-color: #EFE8B6;
1844 }
1845
1846 +#deskarea4 {
1847 + grid-area: deskarea4;
1848 + -ms-grid-column: 1;
1849 + -ms-grid-row: 4;
1850 +}
1851 +
1852 +#DeskChatButton, #DeskNotifyButton, #DeskOpenWebButton {
1853 + float: right;
1854 + margin-top: 1px;
1855 + margin-right: 4px;
1856 + cursor: pointer;
1857 +}
1858 +
1859 +#DeskClip, #DeskControlSpan, #specialkeylist {
1860 + margin-left:6px;
1861 +}
1862
1863 .userTableHeader {
1864 border-bottom: 1pt solid lightgray;
@@ -1493,6 +1866,159 @@ a {
1866 padding-bottom: 4px;
1867 }
1868
1869 +#deskkeys {
1870 + margin-left: 6px;
1871 +}
1872 +
1873 +#p12BackButton {
1874 + float: left;
1875 +}
1876 +
1877 +#termTable {
1878 + width: 100%;
1879 + padding: 0px;
1880 + padding: 0px;
1881 + margin-top: 0px;
1882 +}
1883 +
1884 +#termarea3x {
1885 + background: black;
1886 + text-align: center;
1887 + height: 500px;
1888 + position: relative;
1889 +}
1890 +
1891 +#Term {
1892 + background: black;
1893 + margin: 0;
1894 + padding: 0;
1895 +}
1896 +
1897 +#p13toolbar {
1898 + width: 100%
1899 +}
1900 +#p13toolbar .areaHead {
1901 + border-bottom: 2px solid black;
1902 +}
1903 +
1904 +#p13toolbar .areaHead2 {
1905 + width: 100%;
1906 + background-color: #d3d9d6;
1907 + text-align: left;
1908 + padding: 4px;
1909 +}
1910 +
1911 +#p13toolbar .areaHead3 {
1912 + background-color:#E4E9E7;
1913 + height:28px;
1914 +}
1915 +
1916 +#p13filetable {
1917 + width: 100%;
1918 + height: calc(100vh - 349px);
1919 + overflow: auto;
1920 + -webkit-user-select: none;
1921 +}
1922 +
1923 +#p13bigok {
1924 + width: 256px;
1925 + overflow: hidden;
1926 + position: absolute;
1927 + left: 337px;
1928 + top: 200px;
1929 + text-align: center;
1930 + font-size: 1600%;
1931 + color: #AAAAAA;
1932 +}
1933 +
1934 +#p13bigfail {
1935 + width: 256px;
1936 + overflow: hidden;
1937 + position: absolute;
1938 + left: 337px;
1939 + top: 200px;
1940 + text-align: center;
1941 + font-size: 1600%;
1942 + color: #AAAAAA;
1943 +}
1944 +
1945 +#p14iframe {
1946 + width: 100%;
1947 + height: calc(100vh - 242px);
1948 + border: 0;
1949 + overflow: hidden;
1950 +}
1951 +
1952 +#p13toolbarBottom, #p13toolbar {
1953 + width: 100%;
1954 +}
1955 +
1956 +#consoleTable {
1957 + width: 100%;
1958 + padding: 0px;
1959 + padding: 0px;
1960 + margin-top: 0px;
1961 +}
1962 +
1963 +#p15statetext {
1964 + padding: 4px;
1965 + height: 15px;
1966 +}
1967 +
1968 +#p15agentConsole {
1969 + background: black;
1970 + margin: 0;
1971 + padding: 0;
1972 + color: lightgray;
1973 + width: 100%;
1974 + /* */
1975 + height: calc(100vh - 299px);
1976 + max-height: calc(100vh - 299px);
1977 + position: relative;
1978 +}
1979 +
1980 + .menu_stack.fullscreen #p15agentConsole {
1981 + height: calc(100vh - 305px);
1982 + max-height: calc(100vh - 305px);
1983 + }
1984 +
1985 +#p15coreName {
1986 + padding: 4px;
1987 + display: inline-block;
1988 +}
1989 +
1990 +#p15agentConsoleText {
1991 + /* position: absolute; */
1992 + margin: 0;
1993 + padding: 0;
1994 + top: 0;
1995 + bottom: 0;
1996 + /* left: 0;
1997 + right: 0; */
1998 + overflow-y: scroll;
1999 + overflow-x: auto;
2000 + height: calc(100vh - 299px);
2001 + max-height: calc(100vh - 299px);
2002 + width: 930px;
2003 +}
2004 + .menu_stack.fullscreen #p15agentConsoleText {
2005 + width: calc(100vw - 30px);
2006 + height: calc(100vh - 305px);
2007 + max-height: calc(100vh - 305px);
2008 + }
2009 + .fullscreen #p15agentConsoleText {
2010 + width: calc(100vw - 120px);
2011 + }
2012 +
2013 +#p16events, #p31events {
2014 + max-height: calc(100vh - 269px);
2015 + overflow-y: auto;
2016 +}
2017 +
2018 +#p40 {
2019 + height:calc(100vh - 191px)
2020 +}
2021 +
2022 .viewSelector {
2023 width:32px;
2024 height:32px;
views/default.handlebars
+800 -831
@@ -53,7 +53,6 @@
53 <!-- main page -->
54 <div id=container>
55 <div id="notifiyBox" class="notifiyBox" style="display:none"></div>
56 - <div id=mastheadx></div>
56 <div id=masthead class=noselect>
57 <div class="title">{{{title}}}</div>
58 <div class="title2">{{{title2}}}</div>
@@ -83,593 +82,588 @@
82 <div class="lb6"></div>
83 </div>
84 </div>
86 - <div id="page_content">
87 - <div id=topbarmaster>
88 - <div id=topbar class=noselect>
89 - <div>
90 - <div style="position:relative">
91 - <div id=toggle title="Toggle full width" onclick="toggleFullScreen(1)">&harr;</div>
92 - <table id=MainMenuSpan cellpadding=0 cellspacing=0 class=style1>
93 - <tr>
94 - <td id=MainMenuMyDevices class="topbar_td style3x" onclick=go(1)>My Devices</td>
95 - <td id=MainMenuMyAccount class="topbar_td style3x" onclick=go(2)>My Account</td>
96 - <td id=MainMenuMyEvents class="topbar_td style3x" onclick=go(3)>My Events</td>
97 - <td id=MainMenuMyFiles class="topbar_td style3x" onclick=go(5)>My Files</td>
98 - <td id=MainMenuMyUsers class="topbar_td style3x" onclick=go(4)>My Users</td>
99 - <td id=MainMenuMyServer class="topbar_td style3x" onclick=go(6)>My Server</td>
100 - <td class="topbar_td_end style3">&nbsp;</td>
101 - </tr>
102 - </table>
103 - <div id=MainSubMenuSpan style="display:none">
104 - <table id=MainSubMenu cellpadding=0 cellspacing=0 class=style1>
105 - <tr>
106 - <td id=MainDev class="topbar_td style3x" onclick=go(10)>General</td>
107 - <td id=MainDevDesktop class="topbar_td style3x" onclick=go(11)>Desktop</td>
108 - <td id=MainDevTerminal class="topbar_td style3x" onclick=go(12)>Terminal</td>
109 - <td id=MainDevFiles class="topbar_td style3x" onclick=go(13)>Files</td>
110 - <td id=MainDevEvents class="topbar_td style3x" onclick=go(16)>Events</td>
111 - <td id=MainDevAmt class="topbar_td style3x" onclick=go(14)>Intel&reg; AMT</td>
112 - <td id=MainDevConsole class="topbar_td style3x" onclick=go(15)>Console</td>
113 - <td class="topbar_td_end style3">&nbsp;</td>
114 - </tr>
115 - </table>
116 - </div>
117 - <div id=MeshSubMenuSpan style="display:none">
118 - <table id=MeshSubMenu cellpadding=0 cellspacing=0 class=style1>
119 - <tr>
120 - <td id=MeshGeneral class="topbar_td style3x" onclick=go(20)>General</td>
121 - <td class="topbar_td_end style3">&nbsp;</td>
122 - </tr>
123 - </table>
124 - </div>
125 - <div id=UserSubMenuSpan style="display:none">
126 - <table id=UserSubMenu cellpadding=0 cellspacing=0 class=style1>
127 - <tr>
128 - <td id=UserGeneral class="topbar_td style3x" onclick=go(30)>General</td>
129 - <td id=UserEvents class="topbar_td style3x" onclick=go(31)>Events</td>
130 - <td class="topbar_td_end style3">&nbsp;</td>
131 - </tr>
132 - </table>
133 - </div>
134 - <div id=ServerSubMenuSpan style="display:none">
135 - <table id=ServerSubMenu cellpadding=0 cellspacing=0 class=style1>
136 - <tr>
137 - <td id=ServerGeneral class="topbar_td style3x" onclick=go(6)>General</td>
138 - <td id=ServerStats class="topbar_td style3x" onclick=go(40)>Stats</td>
139 - <td id=ServerConsole class="topbar_td style3x" onclick=go(115)>Console</td>
140 - <td class="topbar_td_end style3">&nbsp;</td>
141 - </tr>
142 - </table>
143 - </div>
144 - <div id=UserDummyMenuSpan>
145 - <table id=UserDummyMenu cellpadding=0 cellspacing=0 class=style1>
146 - <tr><td class=style3 style="text-align:right;height:24px">&nbsp;</td></tr>
147 - </table>
148 - </div>
149 - </div>
150 - </div>
151 - </div>
152 - </div>
153 - <div id="column_l">
154 - <div id=p0 style="display:none">
155 - <div id=p0message><span id=p0span>Server disconnected</span>, <href onclick=reload() style=cursor:pointer><u>click to reconnect</u></href>.</div>
156 - </div>
157 - <div id=p1 style="display:none">
158 - <div style="display:none" id="devListToolbarViewIcons">
159 - <div id=devViewButton1 class="viewSelector" onclick=onDeviceViewChange(1) title="Columns"><div class="viewSelector2"></div></div>
160 - <div id=devViewButton2 class=viewSelector onclick=onDeviceViewChange(2) title="List"><div class="viewSelector1"></div></div>
161 - <div id=devViewButton3 class=viewSelector onclick=onDeviceViewChange(3) title="Desktops"><div class="viewSelector3"></div></div>
162 - <div id=devViewButton4 class=viewSelector onclick=onDeviceViewChange(4) title="Map"><div class="viewSelector4"></div></div>
163 - </div><div><h1>My Devices</h1></div>
164 - <table id="devListToolbarSpan" class="noselect">
85 + <div id=topbar class=noselect>
86 + <div>
87 + <div style="position:relative">
88 + <div id=toggle title="Toggle full width" onclick="toggleFullScreen(1)">&harr;</div>
89 + <div id=toggle2 title="Toggle Main Menu position" onclick="toggleStackMenu(1)">&varr;</div>
90 + <table id=MainMenuSpan cellpadding=0 cellspacing=0 class=style1>
91 <tr>
166 - <td class=h1></td>
167 - <td id=devListToolbar class=style14 style="display:none">
168 - &nbsp;&nbsp;<input type="button" id="SelectAllButton" onclick="selectallButtonFunction();" value="Select All" />&nbsp;
169 - <input type=button id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />&nbsp;
170 - <input id=SearchInput type=text placeholder=Filter onchange=masterUpdate(5) onkeyup=masterUpdate(5) autocomplete=off onfocus=onSearchFocus(1) onblur=onSearchFocus(0) />&nbsp;
171 - <label><input type=checkbox id=RealNameCheckBox onclick=onRealNameCheckBox() /><span title="Show devices operating system name">OS Name</span></label>
172 - </td>
173 - <td id=kvmListToolbar class=style14 style="display:none">
174 - &nbsp;&nbsp;<input type="button" onclick="connectAllKvmFunction()" value="Connect All" />&nbsp;
175 - <input type="button" onclick="disconnectAllKvmFunction()" value="Disconnect All" />&nbsp;
176 - <label><input type="checkbox" id="autoConnectDesktopCheckbox" onclick="autoConnectDesktops(event)" title="Automatic connect" />Auto&nbsp;</label>
177 - <input type="button" onclick="showMultiDesktopSettings()" value="Settings" />&nbsp;
178 - </td>
179 - <td id=devMapToolbar class=style14 style="display:none">
180 - &nbsp;&nbsp;<input type=text id=mapSearchLocation placeholder="Search Location" onfocus=onMapSearchFocus(1) onblur=onMapSearchFocus(0) />
181 - <input type=button value=Search title="Search for location" onclick=getSearchLocation() />
182 - <input type=button id=refreshmap title="Reset map view" value=Reset onclick=refreshMap(false,true) />
183 - </td>
184 - <td class="auto-style1" style=height:100%>
185 - <div style="display:none" id=devListToolbarView>
186 - View
187 - <select id=viewselect onchange=onDeviceViewChange()>
188 - <option value=1>Columns</option>
189 - <option value=2>List</option>
190 - <option value=3>Desktops</option>
191 - <option id=viewselectmapoption value=4>Map</option>
192 - </select>
193 - </div>
194 - <div style="display:none" id=devListToolbarSort>
195 - Sort
196 - <select id=sortselect onchange=masterUpdate(6)>
197 - <option>Group</option>
198 - <option>Power</option>
199 - <option>Device</option>
200 - <option>Tags</option>
201 - </select>
202 - &nbsp;
203 - </div>
204 - <div style="display:none" id=devListToolbarSize>
205 - Size
206 - <select id=sizeselect onchange=onDeviceViewChange()>
207 - <option value=0>Small</option>
208 - <option value=1>Medium</option>
209 - <option value=2>Large</option>
210 - </select>
211 - &nbsp;
212 - </div>
213 - </td>
214 - <td class=h2></td>
92 + <td id=MainMenuMyDevices class="topbar_td style3x" onclick=go(1)>My Devices</td>
93 + <td id=MainMenuMyAccount class="topbar_td style3x" onclick=go(2)>My Account</td>
94 + <td id=MainMenuMyEvents class="topbar_td style3x" onclick=go(3)>My Events</td>
95 + <td id=MainMenuMyFiles class="topbar_td style3x" onclick=go(5)>My Files</td>
96 + <td id=MainMenuMyUsers class="topbar_td style3x" onclick=go(4)>My Users</td>
97 + <td id=MainMenuMyServer class="topbar_td style3x" onclick=go(6)>My Server</td>
98 + <td class="topbar_td_end style3">&nbsp;</td>
99 </tr>
100 </table>
217 - <div id=NoMeshesPanel style="display:none">
218 - <table>
101 + <div id=MainSubMenuSpan style="display:none">
102 + <table id=MainSubMenu cellpadding=0 cellspacing=0 class=style1>
103 <tr>
220 - <td valign="top" style="width: 50px">
221 - <img src="images/info.png" />
222 - </td>
223 - <td>
224 - <div id="getStarted1">To get started, <a onclick=account_createMesh()><strong>click here to create a device group</strong></a>.</div>
225 - <div id="getStarted2">No device groups.</div>
226 - </td>
104 + <td id=MainDev class="topbar_td style3x" onclick=go(10)>General</td>
105 + <td id=MainDevDesktop class="topbar_td style3x" onclick=go(11)>Desktop</td>
106 + <td id=MainDevTerminal class="topbar_td style3x" onclick=go(12)>Terminal</td>
107 + <td id=MainDevFiles class="topbar_td style3x" onclick=go(13)>Files</td>
108 + <td id=MainDevEvents class="topbar_td style3x" onclick=go(16)>Events</td>
109 + <td id=MainDevAmt class="topbar_td style3x" onclick=go(14)>Intel&reg; AMT</td>
110 + <td id=MainDevConsole class="topbar_td style3x" onclick=go(15)>Console</td>
111 + <td class="topbar_td_end style3">&nbsp;</td>
112 </tr>
113 </table>
114 </div>
230 - <div id="xdevices" class="noselect" style="display:none"></div>
231 - <div id="xdevicesmap" style="display:none">
232 - <div id=xmapSearchResultsDlg style="display:none">
233 - <div id=xmapSearchResultsBck>
234 - <div id=xmapSearchClose onclick=mapCloseSearchWindow()><b>X</b></div>
235 - <div style=padding:5px>Location Results</div>
236 - <div style=width:100%;margin:6px></div>
237 - </div>
238 - <div id=xmapSearchResults style=margin:6px></div>
239 - </div>
115 + <div id=MeshSubMenuSpan style="display:none">
116 + <table id=MeshSubMenu cellpadding=0 cellspacing=0 class=style1>
117 + <tr>
118 + <td id=MeshGeneral class="topbar_td style3x" onclick=go(20)>General</td>
119 + <td class="topbar_td_end style3">&nbsp;</td>
120 + </tr>
121 + </table>
122 </div>
241 - <div id="xmap-info-window"></div>
242 - </div>
243 - <div id=p2 style="display:none">
244 - <h1>My Account</h1>
245 - <img id="p2AccountImage" alt="" src="images/mainaccount.jpg"/>
246 - <div id="p2AccountSecurity" style="display:none">
247 - <p><strong>Account security</strong></p>
248 - <div style="margin-left:25px">
249 - <div id="manageAuthApp"><div class="p2AccountActions"><span id="authAppSetupCheck"><strong>&#x2713;</strong></span></div><span><a onclick="account_manageAuthApp()">Manage authenticator app</a><br /></span></div>
250 - <div id="manageHardwareOtp"><div class="p2AccountActions"><span id="authKeySetupCheck"><strong>&#x2713;</strong></span></div><span><a onclick="account_manageHardwareOtp(0)">Manage security keys</a><br /></span></div>
251 - <div id="manageOtp"><div class="p2AccountActions"><span id="authCodesSetupCheck"><strong>&#x2713;</strong></span></div><span><a onclick="account_manageOtp(0)">Manage backup codes</a><br /></span></div>
252 - </div>
123 + <div id=UserSubMenuSpan style="display:none">
124 + <table id=UserSubMenu cellpadding=0 cellspacing=0 class=style1>
125 + <tr>
126 + <td id=UserGeneral class="topbar_td style3x" onclick=go(30)>General</td>
127 + <td id=UserEvents class="topbar_td style3x" onclick=go(31)>Events</td>
128 + <td class="topbar_td_end style3">&nbsp;</td>
129 + </tr>
130 + </table>
131 </div>
254 - <div id="p2AccountActions">
255 - <p><strong>Account actions</strong></p>
256 - <p style="margin-left:40px">
257 - <span id="verifyEmailId" style="display:none"><a onclick="account_showVerifyEmail()">Verify email</a><br /></span>
258 - <a onclick="account_showChangeEmail()">Change email address</a><br />
259 - <a onclick="account_showChangePassword()">Change password</a><span id="p2nextPasswordUpdateTime"></span><br />
260 - <a onclick="account_showDeleteAccount()">Delete account</a><br />
261 - </p>
262 - <br style=clear:both />
132 + <div id=ServerSubMenuSpan style="display:none">
133 + <table id=ServerSubMenu cellpadding=0 cellspacing=0 class=style1>
134 + <tr>
135 + <td id=ServerGeneral class="topbar_td style3x" onclick=go(6)>General</td>
136 + <td id=ServerStats class="topbar_td style3x" onclick=go(40)>Stats</td>
137 + <td id=ServerConsole class="topbar_td style3x" onclick=go(115)>Console</td>
138 + <td class="topbar_td_end style3">&nbsp;</td>
139 + </tr>
140 + </table>
141 + </div>
142 + <div id=UserDummyMenuSpan>
143 + <table id=UserDummyMenu cellpadding=0 cellspacing=0 class=style1>
144 + <tr><td class=style3 style="">&nbsp;</td></tr>
145 + </table>
146 </div>
264 - <strong>Device Groups</strong>
265 - <span id="p2createMeshLink1">( <a onclick=account_createMesh() class="newMeshBtn"> New</a> )</span>
266 - <br /><br />
267 - <div id=p2meshes></div>
268 - <div id=p2noMeshFound style="display:none">No device groups.<span id="p2createMeshLink2"> <a onclick=account_createMesh()><strong>Get started here!</strong></a></span></div>
269 - <br style=clear:both />
147 </div>
271 - <div id=p3 style="display:none">
272 - <h1>My Events</h1>
273 - <table class="pTable">
274 - <tr>
275 - <td class=h1></td>
276 - <td>&nbsp;<input id=p2deleteall type=button onclick=showDeleteAllEventsDialog() style="display:none" value="Delete All..." /></td>
277 - <td class=auto-style1>
278 - Show
279 - <select id=p3limitdropdown onchange=refreshEvents()>
280 - <option value=60>Last 60</option>
281 - <option value=120>Last 120</option>
282 - <option value=250>Last 250</option>
283 - <option value=500>Last 500</option>
284 - <option value=1000>Last 1000</option>
148 + </div>
149 + </div>
150 + <div id="column_l">
151 + <div id=p0 style="display:none">
152 + <div id=p0message><span id=p0span>Server disconnected</span>, <href onclick=reload() style=cursor:pointer><u>click to reconnect</u></href>.</div>
153 + </div>
154 + <div id=p1 style="display:none">
155 + <div style="display:none" id="devListToolbarViewIcons">
156 + <div id=devViewButton1 class="viewSelector" onclick=onDeviceViewChange(1) title="Columns"><div class="viewSelector2"></div></div>
157 + <div id=devViewButton2 class=viewSelector onclick=onDeviceViewChange(2) title="List"><div class="viewSelector1"></div></div>
158 + <div id=devViewButton3 class=viewSelector onclick=onDeviceViewChange(3) title="Desktops"><div class="viewSelector3"></div></div>
159 + <div id=devViewButton4 class=viewSelector onclick=onDeviceViewChange(4) title="Map"><div class="viewSelector4"></div></div>
160 + </div><div><h1>My Devices</h1></div>
161 + <table id="devListToolbarSpan" class="noselect">
162 + <tr>
163 + <td class=h1></td>
164 + <td id=devListToolbar class=style14 style="display:none">
165 + &nbsp;&nbsp;<input type="button" id="SelectAllButton" onclick="selectallButtonFunction();" value="Select All" />&nbsp;
166 + <input type=button id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />&nbsp;
167 + <input id=SearchInput type=text placeholder=Filter onchange=masterUpdate(5) onkeyup=masterUpdate(5) autocomplete=off onfocus=onSearchFocus(1) onblur=onSearchFocus(0) />&nbsp;
168 + <label><input type=checkbox id=RealNameCheckBox onclick=onRealNameCheckBox() /><span title="Show devices operating system name">OS Name</span></label>
169 + </td>
170 + <td id=kvmListToolbar class=style14 style="display:none">
171 + &nbsp;&nbsp;<input type="button" onclick="connectAllKvmFunction()" value="Connect All" />&nbsp;
172 + <input type="button" onclick="disconnectAllKvmFunction()" value="Disconnect All" />&nbsp;
173 + <label><input type="checkbox" id="autoConnectDesktopCheckbox" onclick="autoConnectDesktops(event)" title="Automatic connect" />Auto&nbsp;</label>
174 + <input type="button" onclick="showMultiDesktopSettings()" value="Settings" />&nbsp;
175 + </td>
176 + <td id=devMapToolbar class=style14 style="display:none">
177 + &nbsp;&nbsp;<input type=text id=mapSearchLocation placeholder="Search Location" onfocus=onMapSearchFocus(1) onblur=onMapSearchFocus(0) />
178 + <input type=button value=Search title="Search for location" onclick=getSearchLocation() />
179 + <input type=button id=refreshmap title="Reset map view" value=Reset onclick=refreshMap(false,true) />
180 + </td>
181 + <td class="auto-style1" style=height:100%>
182 + <div style="display:none" id=devListToolbarView>
183 + View
184 + <select id=viewselect onchange=onDeviceViewChange()>
185 + <option value=1>Columns</option>
186 + <option value=2>List</option>
187 + <option value=3>Desktops</option>
188 + <option id=viewselectmapoption value=4>Map</option>
189 </select>
286 - </td>
287 - <td class=h2></td>
288 - </tr>
289 - </table>
290 - <div id=p3events style=""></div>
291 - </div>
292 - <div id=p4 style="display:none">
293 - <h1>My Users</h1>
294 - <table class="pTable">
295 - <tr>
296 - <td class=h1></td>
297 - <td class=style14>
298 - <div style="float:right">
299 - <input type=button onclick=showUserBroadcastDialog() style=margin-right:6px value="Broadcast" />
300 - </div>
301 - <div>
302 - <input id=UserNewAccountButton type=button style=margin-left:6px onclick=showCreateNewAccountDialog() value="New Account..." />
303 - <input id=UserSearchInput type=text style=width:120px;margin-left:6px placeholder=Filter onchange=onUserSearchInputChanged() onkeyup=onUserSearchInputChanged() autocomplete=off onfocus=onUserSearchFocus(1) onblur=onUserSearchFocus(0) />
304 - </div>
305 - </td>
306 - <td class=h2></td>
307 - </tr>
308 - </table>
309 - <div id="p3users"></div>
310 - </div>
311 - <div id=p5 style="display:none">
312 - <h1>My Files</h1>
313 - <table id="p5toolbar" style="width:100%" cellpadding="0" cellspacing="0">
190 + </div>
191 + <div style="display:none" id=devListToolbarSort>
192 + Sort
193 + <select id=sortselect onchange=masterUpdate(6)>
194 + <option>Group</option>
195 + <option>Power</option>
196 + <option>Device</option>
197 + <option>Tags</option>
198 + </select>
199 + &nbsp;
200 + </div>
201 + <div style="display:none" id=devListToolbarSize>
202 + Size
203 + <select id=sizeselect onchange=onDeviceViewChange()>
204 + <option value=0>Small</option>
205 + <option value=1>Medium</option>
206 + <option value=2>Large</option>
207 + </select>
208 + &nbsp;
209 + </div>
210 + </td>
211 + <td class=h2></td>
212 + </tr>
213 + </table>
214 + <div id=NoMeshesPanel style="display:none">
215 + <table>
216 <tr>
315 - <td id="p5filehead" valign=bottom>
316 - <div id="p5rightOfButtons"></div>
317 - <div>
318 - <input type=button id=p5FolderUp disabled="disabled" onclick="p5folderup();" value="Up" />&nbsp;
319 - <input type=button id=p5SelectAllButton disabled="disabled" onclick="p5selectallfile();" value="Select All" onkeypress="return false;" onkeydown="return false;" />&nbsp;
320 - <input type=button id=p5RenameFileButton disabled="disabled" value="Rename" onclick="p5renamefile();" onkeypress="return false;" onkeydown="return false;" />&nbsp;
321 - <input type=button id=p5DeleteFileButton disabled="disabled" value="Delete" onclick="p5deletefile();" onkeypress="return false;" onkeydown="return false;" />&nbsp;
322 - <input type=button id=p5NewFolderButton disabled="disabled" value="New Folder" onclick="p5createfolder();" onkeypress="return false;" onkeydown="return false;" />&nbsp;
323 - <input type=button id=p5UploadButton disabled="disabled" value="Upload" onclick="p5uploadFile()" onkeypress="return false;" onkeydown="return false;" />&nbsp;
324 - <input type=button id=p5CutButton disabled="disabled" value="Cut" onclick="p5copyFile(1)" onkeypress="return false" onkeydown="return false" />&nbsp;
325 - <input type=button id=p5CopyButton disabled="disabled" value="Copy" onclick="p5copyFile(0)" onkeypress="return false" onkeydown="return false" />&nbsp;
326 - <input type=button id=p5PasteButton disabled="disabled" value="Paste" onclick="p5pasteFile()" onkeypress="return false" onkeydown="return false" />&nbsp;
327 - </div>
217 + <td valign="top" style="width: 50px">
218 + <img src="images/info.png" />
219 </td>
329 - </tr>
330 - <tr>
331 - <td id="p5filesubhead">
332 - <div style=float:right>
333 - <select id=p5sortdropdown onchange=updateFiles()>
334 - <option value="1" selected="selected">Sort by name</option>
335 - <option value="2">Sort by size</option>
336 - <option value="3">Sort by date</option>
337 - <option value="4">Descend by name</option>
338 - <option value="5">Descend by size</option>
339 - <option value="6">Descend by date</option>
340 - </select>
341 - </div>
342 - <div>&nbsp;&nbsp;<span id="p5currentpath"></span></div>
220 + <td>
221 + <div id="getStarted1">To get started, <a onclick=account_createMesh()><strong>click here to create a device group</strong></a>.</div>
222 + <div id="getStarted2">No device groups.</div>
223 </td>
224 </tr>
225 </table>
346 - <div id="p5filetable">
347 - <!--
348 - <form id=p5fileCatchAll method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame>
349 - <input type=file id=p5fileCatchAllInput name=files style="position:absolute;left:0;width:100%;top:0;bottom:0;opacity:0;display:none" onchange="p5fileCatchAllInputChanged(event)" />
350 - <input id=p5fileDragLink2 name="link" style="display:none" />
351 - <input type=submit id=p5fileCatchAllSubmit style="display:none" />
352 - </form>
353 - -->
354 - <div id="p5PublicShare" style=""><div style="padding:4px">These files are shared publicly, click "link" to get public url.</div></div>
355 - <div id="bigok" style="display:none"><b>&checkmark;</b></div>
356 - <div id="bigfail" style="display:none"><b>&#10007;</b></div>
357 - <span id="p5files"></span>
226 + </div>
227 + <div id="xdevices" class="noselect" style="display:none"></div>
228 + <div id="xdevicesmap" style="display:none">
229 + <div id=xmapSearchResultsDlg style="display:none">
230 + <div id=xmapSearchResultsBck>
231 + <div id=xmapSearchClose onclick=mapCloseSearchWindow()><b>X</b></div>
232 + <div style=padding:5px>Location Results</div>
233 + <div style=width:100%;margin:6px></div>
234 + </div>
235 + <div id=xmapSearchResults style=margin:6px></div>
236 + </div>
237 + </div>
238 + <div id="xmap-info-window"></div>
239 + </div>
240 + <div id=p2 style="display:none">
241 + <h1>My Account</h1>
242 + <img id="p2AccountImage" alt="" src="images/mainaccount.jpg"/>
243 + <div id="p2AccountSecurity" style="display:none">
244 + <p><strong>Account security</strong></p>
245 + <div style="margin-left:25px">
246 + <div id="manageAuthApp"><div class="p2AccountActions"><span id="authAppSetupCheck"><strong>&#x2713;</strong></span></div><span><a onclick="account_manageAuthApp()">Manage authenticator app</a><br /></span></div>
247 + <div id="manageHardwareOtp"><div class="p2AccountActions"><span id="authKeySetupCheck"><strong>&#x2713;</strong></span></div><span><a onclick="account_manageHardwareOtp(0)">Manage security keys</a><br /></span></div>
248 + <div id="manageOtp"><div class="p2AccountActions"><span id="authCodesSetupCheck"><strong>&#x2713;</strong></span></div><span><a onclick="account_manageOtp(0)">Manage backup codes</a><br /></span></div>
249 </div>
359 - <table id="p5toolbarBottom" style=width:100% cellpadding=0 cellspacing=0>
360 - <tr><td class=style6>&nbsp;<span id="p5bottomstatus"></span></td></tr>
361 - </table>
250 </div>
363 - <div id=p6 style="display:none">
364 - <img id=MainMeshImage src="serverpic.ashx">
365 - <h1>My Server</h1>
366 - <p id="p2ServerActions"><strong>Server actions</strong></p>
367 - <p style="margin-left:40px">
251 + <div id="p2AccountActions">
252 + <p><strong>Account actions</strong></p>
253 + <p class="mL">
254 + <span id="verifyEmailId" style="display:none"><a onclick="account_showVerifyEmail()">Verify email</a><br /></span>
255 + <a onclick="account_showChangeEmail()">Change email address</a><br />
256 + <a onclick="account_showChangePassword()">Change password</a><span id="p2nextPasswordUpdateTime"></span><br />
257 + <a onclick="account_showDeleteAccount()">Delete account</a><br />
258 + </p>
259 + <br style=clear:both />
260 + </div>
261 + <strong>Device Groups</strong>
262 + <span id="p2createMeshLink1">( <a onclick=account_createMesh() class="newMeshBtn"> New</a> )</span>
263 + <br /><br />
264 + <div id=p2meshes></div>
265 + <div id=p2noMeshFound style="display:none">No device groups.<span id="p2createMeshLink2"> <a onclick=account_createMesh()><strong>Get started here!</strong></a></span></div>
266 + <br style=clear:both />
267 + </div>
268 + <div id=p3 style="display:none">
269 + <h1>My Events</h1>
270 + <table class="pTable">
271 + <tr>
272 + <td class="h1"></td>
273 + <td>&nbsp;<input id="p2deleteall" type=button onclick=showDeleteAllEventsDialog() style="display:none" value="Delete All..." /></td>
274 + <td class="auto-style1">
275 + Show
276 + <select id=p3limitdropdown onchange=refreshEvents()>
277 + <option value=60>Last 60</option>
278 + <option value=120>Last 120</option>
279 + <option value=250>Last 250</option>
280 + <option value=500>Last 500</option>
281 + <option value=1000>Last 1000</option>
282 + </select>
283 + </td>
284 + <td class="h2"></td>
285 + </tr>
286 + </table>
287 + <div id=p3events style=""></div>
288 + </div>
289 + <div id=p4 style="display:none">
290 + <h1>My Users</h1>
291 + <table class="pTable">
292 + <tr>
293 + <td class="h1"></td>
294 + <td class="style14">
295 + <div style="float:right">
296 + <input type=button onclick=showUserBroadcastDialog() style=margin-right:6px value="Broadcast" />
297 + </div>
298 + <div>
299 + <input id=UserNewAccountButton type=button style=margin-left:6px onclick=showCreateNewAccountDialog() value="New Account..." />
300 + <input id=UserSearchInput type=text style=width:120px;margin-left:6px placeholder=Filter onchange=onUserSearchInputChanged() onkeyup=onUserSearchInputChanged() autocomplete=off onfocus=onUserSearchFocus(1) onblur=onUserSearchFocus(0) />
301 + </div>
302 + </td>
303 + <td class="h2"></td>
304 + </tr>
305 + </table>
306 + <div id="p3users"></div>
307 + </div>
308 + <div id=p5 style="display:none">
309 + <h1>My Files</h1>
310 + <table id="p5toolbar" cellpadding="0" cellspacing="0">
311 + <tr>
312 + <td id="p5filehead" valign=bottom>
313 + <div id="p5rightOfButtons"></div>
314 + <div>
315 + <input type=button id=p5FolderUp disabled="disabled" onclick="p5folderup();" value="Up" />&nbsp;
316 + <input type=button id=p5SelectAllButton disabled="disabled" onclick="p5selectallfile();" value="Select All" onkeypress="return false;" onkeydown="return false;" />&nbsp;
317 + <input type=button id=p5RenameFileButton disabled="disabled" value="Rename" onclick="p5renamefile();" onkeypress="return false;" onkeydown="return false;" />&nbsp;
318 + <input type=button id=p5DeleteFileButton disabled="disabled" value="Delete" onclick="p5deletefile();" onkeypress="return false;" onkeydown="return false;" />&nbsp;
319 + <input type=button id=p5NewFolderButton disabled="disabled" value="New Folder" onclick="p5createfolder();" onkeypress="return false;" onkeydown="return false;" />&nbsp;
320 + <input type=button id=p5UploadButton disabled="disabled" value="Upload" onclick="p5uploadFile()" onkeypress="return false;" onkeydown="return false;" />&nbsp;
321 + <input type=button id=p5CutButton disabled="disabled" value="Cut" onclick="p5copyFile(1)" onkeypress="return false" onkeydown="return false" />&nbsp;
322 + <input type=button id=p5CopyButton disabled="disabled" value="Copy" onclick="p5copyFile(0)" onkeypress="return false" onkeydown="return false" />&nbsp;
323 + <input type=button id=p5PasteButton disabled="disabled" value="Paste" onclick="p5pasteFile()" onkeypress="return false" onkeydown="return false" />&nbsp;
324 + </div>
325 + </td>
326 + </tr>
327 + <tr>
328 + <td id="p5filesubhead">
329 + <div style=float:right>
330 + <select id=p5sortdropdown onchange=updateFiles()>
331 + <option value="1" selected="selected">Sort by name</option>
332 + <option value="2">Sort by size</option>
333 + <option value="3">Sort by date</option>
334 + <option value="4">Descend by name</option>
335 + <option value="5">Descend by size</option>
336 + <option value="6">Descend by date</option>
337 + </select>
338 + </div>
339 + <div>&nbsp;&nbsp;<span id="p5currentpath"></span></div>
340 + </td>
341 + </tr>
342 + </table>
343 + <div id="p5filetable">
344 + <!--
345 + <form id=p5fileCatchAll method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame>
346 + <input type=file id=p5fileCatchAllInput name=files style="position:absolute;left:0;width:100%;top:0;bottom:0;opacity:0;display:none" onchange="p5fileCatchAllInputChanged(event)" />
347 + <input id=p5fileDragLink2 name="link" style="display:none" />
348 + <input type=submit id=p5fileCatchAllSubmit style="display:none" />
349 + </form>
350 + -->
351 + <div id="p5PublicShare" style=""><div>These files are shared publicly, click "link" to get public url.</div></div>
352 + <div id="bigok" style="display:none"><b>&checkmark;</b></div>
353 + <div id="bigfail" style="display:none"><b>&#10007;</b></div>
354 + <span id="p5files"></span>
355 + </div>
356 + <table id="p5toolbarBottom" style=width:100% cellpadding=0 cellspacing=0>
357 + <tr><td class=style6>&nbsp;<span id="p5bottomstatus"></span></td></tr>
358 + </table>
359 + </div>
360 + <div id=p6 style="display:none">
361 + <img id=MainMeshImage src="serverpic.ashx">
362 + <h1>My Server</h1>
363 + <div id="p2ServerActions">
364 + <p><strong>Server actions</strong></p>
365 + <div class="mL">
366 <div id="p2ServerActionsBackup"><a href="/backup.zip" rel="noreferrer noopener" target="_blank">Download server backup</a></div>
367 <div id="p2ServerActionsRestore"><a onclick="server_showRestoreDlg()">Restore server with backup</a></div>
368 <div id="p2ServerActionsVersion"><a onclick="server_showVersionDlg()">Check server version</a></div>
369 <div id="p2ServerActionsErrors"><a onclick="server_showErrorsDlg()">Show server error log</a></div>
372 - </p>
373 - <br /><strong>Server Statistics</strong><br /><br />
374 - <div id="serverStats">
375 - <div id="serverCpuChartView" style="display:none">
376 - <div class="chartViewCanvas"><canvas id="serverCpuChart"></canvas></div>
377 - <div class="chartViewText" id="serverCpuChartText"></div>
378 - </div>
379 - <div id="serverMemoryChartView" style="display:none">
380 - <div class="chartViewCanvas"><canvas id="serverMemoryChart"></canvas></div>
381 - <div class="chartViewText" id="serverMemoryChartText"></div>
382 - </div><br /><br />
383 - <div id="serverStatsTable"></div>
370 </div>
371 </div>
386 - <div id=p10 style="display:none">
387 - <table style="width:100%" cellpadding="0" cellspacing="0">
388 - <tr>
389 - <td style=width:auto valign=top>
390 - <div id=p10title>
391 - <div id="p10BackButton"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
392 - <h1>General - <span id=p10deviceName></span></h1>
393 - </div>
394 - <div id=p10html></div>
395 - </td>
396 - <td style=width:20px></td>
397 - <td style=width:200px>
398 - <a onclick=p10showiconselector()><img id=MainComputerImage></a>
399 - <div id=MainComputerState></div>
400 - </td>
401 - </tr>
402 - </table><br>
403 - <div id=p10html2></div>
404 - <div id=p10html3></div>
405 - </div>
406 - <div id=p11 class="noselect" style="display:none">
407 - <div id="p11title">
408 - <div id=p11deviceNameHeader>
409 - <div id="p11BackButton"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
410 - <div id="devListToolbarViewIcons"><div class="viewSelector" onclick=deskToggleFull(event) title="Full Screen. Hold shift to browser full screen."><div class="viewSelector5"></div></div></div>
411 - <h1>Desktop - <span id=p11deviceName></span></h1>
412 - </div>
413 - </div>
414 - <div id="p14warning" onclick="showFeaturesDlg()">
415 - <div class="icon2"></div>
416 - <div class="warningbox">Intel&reg; AMT Redirection port or KVM feature is disabled<span id="p14warninga">, click here to enable it.</span></div>
417 - </div>
418 - <div id="p14warning2" onclick="showPowerActionDlg()">
419 - <div class="icon2"></div>
420 - <div class="warningbox">Remote computer is not powered on, click here to issue a power command.</div>
372 + <br /><strong>Server Statistics</strong><br /><br />
373 + <div id="serverStats">
374 + <div id="serverCpuChartView" style="display:none">
375 + <div class="chartViewCanvas"><canvas id="serverCpuChart"></canvas></div>
376 + <div class="chartViewText" id="serverCpuChartText"></div>
377 </div>
422 - <table id=deskarea0 cellpadding=0 cellspacing=0 style="width:100%;padding:0px;padding:0px;margin-top:0px">
423 - <tr id=deskarea1>
424 - <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0">
425 - <div style="float:right;text-align:right">
426 - <span id="p14power"></span>&nbsp;
427 - <div style='cursor:pointer;border:none;float:right;font-size:130%;margin-right:4px' title="Rotate Left" onclick="drotate(-1)">&olarr;</div>
428 - <div style='cursor:pointer;border:none;float:right;font-size:130%;margin-right:4px' title="Rotate Right" onclick="drotate(1)">&orarr;</div>
429 - <input id="deskFocusBtn" type="button" title="Toggle focus mode, when active only the region around the mouse is updated" onkeypress="return false" onkeydown="return false" value="Focus All" onclick="deskToggleFocus()" style="margin-right:3px;display:none">
430 - <input id="deskSaveBtn" type="button" title="Save a screenshot of the remote desktop" onkeypress="return false" onkeydown="return false" value="Save..." onclick=deskSaveImage() style=margin-right:3px>
431 - <input id="deskActionsBtn" type=button title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value=Actions onclick=deviceActionFunction() style=margin-right:3px />
432 - <input id="deskActionsSettings" type="button" value="Settings..." title="Edit remote desktop settings" onkeypress="return false" onkeydown="return false" onclick="showDesktopSettings()" style="margin-right:3px">
433 - <input type="button" title="Change the power state of the remote machine" onkeypress="return false" onkeydown="return false" value="Power Actions..." onclick="showPowerActionDlg()" style="margin-right:3px;display:none">
434 - </div>
435 - <div>
436 - <div id="idx_deskFullBtn2" onclick=deskToggleFull(event)>&nbsp;&#x2716;</div>
437 - <input type="button" id="autoconnectbutton1" value="AutoConnect" onclick=autoConnectDesktop(event) onkeypress="return false" onkeydown="return false" style="display:none">
438 - <span id=connectbutton1span>&nbsp;<input type=button id=connectbutton1 value="Connect" onclick=connectDesktop(event,1) onkeypress="return false" onkeydown="return false" disabled="disabled"></span>
439 - <span id=connectbutton1hspan>&nbsp;<input type=button id=connectbutton1h value="HW Connect" onclick=connectDesktop(event,2) onkeypress="return false" onkeydown="return false" disabled="disabled"></span>
440 - <span id=disconnectbutton1span>&nbsp;<input type=button id=disconnectbutton1 value="Disconnect" onclick=connectDesktop(event,0) onkeypress="return false" onkeydown="return false"></span>
441 - &nbsp;<span id="deskstatus">Disconnected</span>
442 - </div>
443 - </td>
444 - </tr>
445 - <tr id=deskarea2>
446 - <td>
447 - <div style=background-color:gray><div id=progressbar style=height:2px;width:0%;background-color:red></div></div>
448 - </td>
449 - </tr>
450 - <tr id=deskarea3>
451 - <td id=deskarea3x style="">
452 - <div id=DeskFocus oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></div>
453 - <div id=DeskParent>
454 - <canvas id=Desk width=640 height=480 oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event) onmousewheel=dmousewheel(event)></canvas>
455 - </div>
456 - <div id=DeskTools>
457 - <a id=DeskToolsRefreshButton style="" onclick="refreshDeskTools()">Refresh</a>
458 - <div id=DeskToolsBar>Processes</div>
459 - <div style="position:absolute;top:26px;left:4px;right:4px;bottom:4px;background-color:lightgray;text-align:left">
460 - <div style="border-bottom:1px solid darkgray;padding:3px"><a style=width:50px;padding-right:5px;float:left;cursor:pointer title="Sort by process id" onclick=sortProcess(0)>PID</a><a style=cursor:pointer title="Sort by name" onclick=sortProcess(1)>Name</a></div>
461 - <div id="DeskToolsProcesses" style=""></div>
462 - </div>
463 - </div>
464 - </td>
465 - </tr>
466 - <tr id=deskarea4>
467 - <td style=padding-top:2px;padding-bottom:2px;background:#C0C0C0>
468 - <div style=float:right;text-align:right>
469 - <select id=termdisplays style="display:none" onchange=deskSetDisplay(event) onclick=deskGetDisplayNumbers(event)></select>&nbsp;
470 - <input id=DeskToolsButton type=button value=Tools title="Toggle tools view" onkeypress="return false" onkeydown="return false" onclick="toggleDeskTools()">&nbsp;
471 - <span id=DeskChatButton style="float:right;margin-top:1px;margin-right:4px;cursor:pointer" title="Open chat window to this computer"><img src='images/icon-chat.png' onclick=deviceChat() height=16 width=16 style=padding-top:2px /></span>
472 - <span id=DeskNotifyButton style="float:right;margin-top:1px;margin-right:4px;cursor:pointer" title="Display a notification on the remote computer"><img src='images/icon-notify.png' onclick=deviceToastFunction() height=16 width=16 style=padding-top:2px /></span>
473 - <span id=DeskOpenWebButton style="float:right;margin-top:1px;margin-right:4px;cursor:pointer" title="Open a web address on remote computer"><img src='images/icon-url2.png' onclick=deviceUrlFunction() height=16 width=16 style=padding-top:2px /></span>
474 - </div>
475 - <div>
476 - <select style="margin-left:6px" id="deskkeys">
477 - <option value=5>Win</option>
478 - <option value=0>Win+Down</option>
479 - <option value=1>Win+Up</option>
480 - <option value=2>Win+L</option>
481 - <option value=3>Win+M</option>
482 - <option value=4>Shift+Win+M</option>
483 - <option value=6>Win+R</option>
484 - </select>
485 - <input id="DeskWD" type=button value="Send" onkeypress="return false" onkeydown="return false" onclick="deskSendKeys()">
486 - <input id="DeskClip" style="margin-left:6px;display:none" type="button" value="Clipboard" onkeypress="return false" onkeydown="return false" onclick="showDeskClip()">
487 - <input id="DeskCAD" type="button" value="Ctrl-Alt-Del" onkeypress="return false" onkeydown="return false" onclick="sendCAD()">
488 - <label><span id="DeskControlSpan" style="margin-left:6px" title="Toggle mouse and keyboard input"><input id="DeskControl" type="checkbox" onkeypress="return false" onkeydown="return false" onclick="toggleKvmControl()">Input</span></label>&nbsp;
489 - </div>
490 - </td>
491 - </tr>
492 - </table>
378 + <div id="serverMemoryChartView" style="display:none">
379 + <div class="chartViewCanvas"><canvas id="serverMemoryChart"></canvas></div>
380 + <div class="chartViewText" id="serverMemoryChartText"></div>
381 + </div><br /><br />
382 + <div id="serverStatsTable"></div>
383 </div>
494 - <div id=p12 style="display:none">
495 - <div id="p12title">
496 - <div id="p12BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
497 - <h1>Terminal - <span id=p12deviceName></span></h1>
384 + </div>
385 + <div id=p10 style="display:none">
386 + <table style="width:100%" cellpadding="0" cellspacing="0">
387 + <tr>
388 + <td style=width:auto valign=top>
389 + <div id=p10title>
390 + <div id="p10BackButton"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
391 + <h1>General - <span id=p10deviceName></span></h1>
392 + </div>
393 + <div id=p10html></div>
394 + </td>
395 + <td style=width:20px></td>
396 + <td style=width:200px>
397 + <a onclick=p10showiconselector()><img id=MainComputerImage></a>
398 + <div id=MainComputerState></div>
399 + </td>
400 + </tr>
401 + </table><br>
402 + <div id=p10html2></div>
403 + <div id=p10html3></div>
404 + </div>
405 + <div id=p11 class="noselect" style="display:none">
406 + <div id="p11title">
407 + <div id=p11deviceNameHeader>
408 + <div id="p11BackButton"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
409 + <div id="devListToolbarViewIcons"><div class="viewSelector" onclick=deskToggleFull(event) title="Full Screen. Hold shift to browser full screen."><div class="viewSelector5"></div></div></div>
410 + <h1>Desktop - <span id=p11deviceName></span></h1>
411 </div>
499 - <div id="p12warning" onclick=showFeaturesDlg()>
500 - <div class="icon2"></div>
501 - <div class="warningbox">Intel&reg; AMT Redirection port or KVM feature is disabled<span id="p14warninga">, click here to enable it.</span></div>
412 + </div>
413 + <div id="p14warning" onclick="showFeaturesDlg()">
414 + <div class="icon2"></div>
415 + <div class="warningbox">Intel&reg; AMT Redirection port or KVM feature is disabled<span id="p14warninga">, click here to enable it.</span></div>
416 + </div>
417 + <div id="p14warning2" onclick="showPowerActionDlg()">
418 + <div class="icon2"></div>
419 + <div class="warningbox">Remote computer is not powered on, click here to issue a power command.</div>
420 + </div>
421 +
422 + <div id=deskarea0 cellpadding=0 cellspacing=0>
423 + <div id=deskarea1 class="areaHead">
424 + <div class="toright2">
425 + <span id="p14power"></span>&nbsp;
426 + <div class='deskareaicon' title="Toggle Aspect Ratio" onclick="toggleAspectRatio(1)">&#8690;</div>
427 + <div class='deskareaicon' title="Rotate Left" onclick="drotate(-1)">&olarr;</div>
428 + <div class='deskareaicon' title="Rotate Right" onclick="drotate(1)">&orarr;</div>
429 + <input id="deskFocusBtn" type="button" title="Toggle focus mode, when active only the region around the mouse is updated" onkeypress="return false" onkeydown="return false" value="Focus All" onclick="deskToggleFocus()" style="margin-right:3px;display:none">
430 + <input id="deskSaveBtn" type="button" title="Save a screenshot of the remote desktop" onkeypress="return false" onkeydown="return false" value="Save..." onclick=deskSaveImage() class="mR">
431 + <input id="deskActionsBtn" type=button title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value=Actions onclick=deviceActionFunction() class="mR" />
432 + <input id="deskActionsSettings" type="button" value="Settings..." title="Edit remote desktop settings" onkeypress="return false" onkeydown="return false" onclick="showDesktopSettings()" class="mR">
433 + <input type="button" title="Change the power state of the remote machine" onkeypress="return false" onkeydown="return false" value="Power Actions..." onclick="showPowerActionDlg()" style="display:none">
434 + </div>
435 + <div>
436 + <div id="idx_deskFullBtn2" onclick=deskToggleFull(event)>&nbsp;&#x2716;</div>
437 + <input type="button" id="autoconnectbutton1" value="AutoConnect" onclick=autoConnectDesktop(event) onkeypress="return false" onkeydown="return false" style="display:none">
438 + <span id=connectbutton1span><input type=button id=connectbutton1 value="Connect" onclick=connectDesktop(event,1) onkeypress="return false" onkeydown="return false" disabled="disabled"></span>
439 + <span id=connectbutton1hspan>&nbsp;<input type=button id=connectbutton1h value="HW Connect" onclick=connectDesktop(event,2) onkeypress="return false" onkeydown="return false" disabled="disabled"></span>
440 + <span id=disconnectbutton1span>&nbsp;<input type=button id=disconnectbutton1 value="Disconnect" onclick=connectDesktop(event,0) onkeypress="return false" onkeydown="return false"></span>
441 + &nbsp;<span id="deskstatus">Disconnected</span>
442 + </div>
443 </div>
503 - <div id="p12warning2" onclick=showPowerActionDlg()>
504 - <div class="icon2"></div>
505 - <div class="warningbox">Remote computer is not powered on, click here to issue a power command.</div>
444 + <div id=deskarea2 style="">
445 + <div class="areaProgress"><div id="progressbar" style=""></div></div>
446 </div>
507 - <table cellpadding=0 cellspacing=0 style="width:100%;padding:0px;padding:0px;margin-top:0px">
508 - <tr>
509 - <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0">
510 - <div style="float:right;text-align:right">
511 - <input id="termActionsBtn" type=button title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value=Actions onclick=deviceActionFunction() style=margin-right:3px />
512 - </div>
513 - <div>
514 - <input type="button" id="autoconnectbutton2" value="AutoConnect" onclick=autoConnectTerminal(event) onkeypress="return false" onkeydown="return false" style="display:none">
515 - <span id="connectbutton2span">&nbsp;<input type="button" id="connectbutton2" value="Connect" onclick=connectTerminal(event,1) onkeypress="return false" onkeydown="return false" disabled="disabled"></span>
516 - <span id="connectbutton2hspan">&nbsp;<input type="button" id="connectbutton2h" value="HW Connect" onclick=connectTerminal(event,2) onkeypress="return false" onkeydown="return false" disabled="disabled"></span>
517 - <span id="disconnectbutton2span">&nbsp;<input type="button" id="disconnectbutton2" value="Disconnect" onclick=connectTerminal(event,0) onkeypress="return false" onkeydown="return false"></span>
518 - &nbsp;<span id="termstatus">Disconnected</span>
519 - </div>
520 - </td>
521 - </tr>
522 - <tr>
523 - <td>
524 - <div style="background-color:gray"><div id="termprogressbar" style="height:2px;width:0%;background-color:red"></div></div>
525 - </td>
526 - </tr>
527 - <tr>
528 - <td style="background:black;text-align:center;height:500px;position:relative">
529 - <pre id="Term" style="background:black;margin:0;padding:0"></pre>
530 - </td>
531 - </tr>
532 - <tr>
533 - <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0">
534 - <div style="float:right;text-align:right">
535 - <span id="terminalSettingsButtons" style="display:none">
536 - <input id="id_tcrbutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="CR+LF" title="Toggle what the return key will send" onclick="termToggleCr()">
537 - <input id="id_tfxkeysbutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Intel (F10 = ESC+[OM)" title="Toggle F1 to F10 keys emulation type" onclick="termToggleFx()">
538 - <input id="id_ttypebutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Extended Ascii" title="Toggle terminal emulation type" onclick="termToggleType()">
539 - </span>
540 - <select id="specialkeylist" onkeypress="return false" style="margin-left:5px"></select>
541 - <input id="specialkeylistinput" type="button" onkeypress="return false" class="bottombutton" value="Send" title="Send the selected special key" onclick="sendSpecialKey()" />
542 - </div>
543 - <div>
544 - &nbsp;
545 - <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="ctrlcbutton" value="Ctl-C" onclick="termSendKey(3,'ctrlcbutton')" />
546 - <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="ctrlxbutton" value="Ctl-X" onclick="termSendKey(24,'ctrlxbutton')" />
547 - <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="escbutton" value="ESC" onclick="termSendKey(27,'escbutton')" />
548 - <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="bsbutton" value="Backspace" onclick="termSendKey(8,'bsbutton')" />
549 - <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="pastebutton" value="Paste" title="Paste text into the terminal" onclick="showTermPasteDialog()" />
550 - </div>
551 - </td>
552 - </tr>
553 - </table>
554 - </div>
555 - <div id=p13 style="display:none">
556 - <div id="p13title">
557 - <div id="p13BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
558 - <h1>Files - <span id=p13deviceName></span></h1>
447 + <div id=deskarea3x>
448 + <div id=DeskFocus oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></div>
449 + <div id=DeskParent>
450 + <canvas id=Desk width=640 height=480 oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event) onmousewheel=dmousewheel(event)></canvas>
451 + </div>
452 + <div id=DeskTools>
453 + <a id=DeskToolsRefreshButton style="" onclick="refreshDeskTools()">Refresh</a>
454 + <div id=DeskToolsBar>Processes</div>
455 + <div id=deskToolsArea>
456 + <div id=deskToolsHeader>
457 + <a class="colmn1" title="Sort by process id" onclick=sortProcess(0)>PID</a>
458 + <a class="colmn2" title="Sort by name" onclick=sortProcess(1)>Name</a></div>
459 + <div id="DeskToolsProcesses" style=""></div>
460 + </div>
461 + </div>
462 </div>
560 - <table id="p13toolbar" style="width: 100%" cellpadding="0" cellspacing="0">
561 - <tr>
562 - <td style="background-color:#C0C0C0;border-bottom:2px solid black;padding:2px">
563 - <div style="float:right;text-align:right">
564 - <input id="filesActionsBtn" type=button title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value=Actions onclick=deviceActionFunction() style=margin-right:3px />
565 - </div>
566 - <div>
567 - <input id=p13AutoConnect value="AutoConnect" onclick=autoConnectFiles(event) onkeypress="return false" onkeydown="return false" type="button" style="display:none">
568 - <input id=p13Connect value="Connect" onclick=connectFiles(event) onkeypress="return false" onkeydown="return false" type="button">
569 - <span id=p13Status>Disconnected</span>
570 - </div>
571 - </td>
572 - </tr>
573 - <tr>
574 - <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign=bottom>
575 - <div id="p13rightOfButtons" style="float:right;margin-top:3px"></div>
576 - <div>
577 - <input type=button id=p13FolderUp disabled="disabled" onclick="p13folderup()" value="Up" />&nbsp;
578 - <input type=button id=p13SelectAllButton disabled="disabled" onclick="p13selectallfile()" value="Select All" onkeypress="return false" onkeydown="return false" />&nbsp;
579 - <input type=button id=p13RenameFileButton disabled="disabled" value="Rename" onclick="p13renamefile()" onkeypress="return false" onkeydown="return false" />&nbsp;
580 - <input type=button id=p13DeleteFileButton disabled="disabled" value="Delete" onclick="p13deletefile()" onkeypress="return false" onkeydown="return false" />&nbsp;
581 - <input type=button id=p13NewFolderButton disabled="disabled" value="New Folder" onclick="p13createfolder()" onkeypress="return false" onkeydown="return false" />&nbsp;
582 - <input type=button id=p13UploadButton disabled="disabled" value="Upload" onclick="p13uploadFile()" onkeypress="return false" onkeydown="return false" />&nbsp;
583 - <input type=button id=p13CutButton disabled="disabled" value="Cut" onclick="p13copyFile(1)" onkeypress="return false" onkeydown="return false" />&nbsp;
584 - <input type=button id=p13CopyButton disabled="disabled" value="Copy" onclick="p13copyFile(0)" onkeypress="return false" onkeydown="return false" />&nbsp;
585 - <input type=button id=p13PasteButton disabled="disabled" value="Paste" onclick="p13pasteFile()" onkeypress="return false" onkeydown="return false" />&nbsp;
586 - <input type=button id=p13RefreshButton disabled="disabled" value="Refresh" onclick="p13folderup(9999)" onkeypress="return false" onkeydown="return false" />&nbsp;
587 - </div>
588 - </td>
589 - </tr>
590 - <tr>
591 - <td style="background-color:#E4E9E7;height:28px">
592 - <div style=float:right>
593 - <select id=p13sortdropdown onchange=p13updateFiles()>
594 - <option value=1 selected="selected">Sort by name</option>
595 - <option value=2>Sort by size</option>
596 - <option value=3>Sort by date</option>
597 - <option value=4>Descend by name</option>
598 - <option value=5>Descend by size</option>
599 - <option value=6>Descend by date</option>
600 - </select>
601 - </div>
602 - <div>&nbsp;&nbsp;<span id="p13currentpath"></span></div>
603 - </td>
604 - </tr>
605 - </table>
606 - <div id="p13filetable" style="width:100%;height:calc(100vh - 346px);overflow:auto;-webkit-user-select:none">
607 - <div id="p13bigok" style="width:256px;overflow:hidden;position:absolute;left:337px;top:200px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>&checkmark;</b></div>
608 - <div id="p13bigfail" style="width:256px;overflow:hidden;position:absolute;left:337px;top:200px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>&#10007;</b></div>
609 - <span id="p13files"></span>
463 + <div id=deskarea4 class="areaFoot">
464 + <div class="toright2">
465 + <select id=termdisplays style="display:none" onchange=deskSetDisplay(event) onclick=deskGetDisplayNumbers(event)></select>&nbsp;
466 + <input id=DeskToolsButton type=button value=Tools title="Toggle tools view" onkeypress="return false" onkeydown="return false" onclick="toggleDeskTools()">&nbsp;
467 + <span id=DeskChatButton class="deskarea" title="Open chat window to this computer"><img src='images/icon-chat.png' onclick=deviceChat() height=16 width=16 style=padding-top:2px /></span>
468 + <span id=DeskNotifyButton title="Display a notification on the remote computer"><img src='images/icon-notify.png' onclick=deviceToastFunction() height=16 width=16 style=padding-top:2px /></span>
469 + <span id=DeskOpenWebButton title="Open a web address on remote computer"><img src='images/icon-url2.png' onclick=deviceUrlFunction() height=16 width=16 style=padding-top:2px /></span>
470 + </div>
471 + <div>
472 + <select id="deskkeys">
473 + <option value=5>Win</option>
474 + <option value=0>Win+Down</option>
475 + <option value=1>Win+Up</option>
476 + <option value=2>Win+L</option>
477 + <option value=3>Win+M</option>
478 + <option value=4>Shift+Win+M</option>
479 + <option value=6>Win+R</option>
480 + </select>
481 + <input id="DeskWD" type=button value="Send" onkeypress="return false" onkeydown="return false" onclick="deskSendKeys()">
482 + <input id="DeskClip" style="" type="button" value="Clipboard" onkeypress="return false" onkeydown="return false" onclick="showDeskClip()">
483 + <input id="DeskCAD" type="button" value="Ctrl-Alt-Del" onkeypress="return false" onkeydown="return false" onclick="sendCAD()">
484 + <label><span id="DeskControlSpan" title="Toggle mouse and keyboard input"><input id="DeskControl" type="checkbox" onkeypress="return false" onkeydown="return false" onclick="toggleKvmControl()">Input</span></label>&nbsp;
485 + </div>
486 </div>
611 - <table id="p13toolbarBottom" style=width:100% cellpadding=0 cellspacing=0>
612 - <tr><td class=style6>&nbsp;<span id="p13bottomstatus"></span></td></tr>
613 - </table>
487 </div>
615 - <div id=p14 style="display:none">
616 - <div id="p14title">
617 - <div id="p14BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
618 - <h1>Intel&reg; AMT - <span id=p14deviceName></span></h1>
619 - </div>
620 - <iframe id=p14iframe style="width:100%;height:calc(100vh - 242px);border:0;overflow:hidden" src="/commander.htm"></iframe>
488 + </div>
489 + <div id=p12 style="display:none">
490 + <div id="p12title">
491 + <div id="p12BackButton"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
492 + <h1>Terminal - <span id=p12deviceName></span></h1>
493 </div>
622 - <div id=p15 style="display:none">
623 - <div id="p15title">
624 - <div id="p15BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
625 - <h1><span id=p15deviceName></span></h1>
626 - </div>
627 - <table cellpadding=0 cellspacing=0 style="width:100%;padding:0px;padding:0px;margin-top:0px">
628 - <tr>
629 - <td style=background:#C0C0C0>
630 - <div style=float:right;padding-right:4px>
631 - <div style=padding:4px;display:inline-block id=p15coreName title="Information about current core running on this agent"></div>
632 - <input type=button id=p15uploadCore value="Agent Action" onclick=p15uploadCore(event) title="Change the agent Java Script code module" />
633 - </div>
634 - <div id="p15statetext" style=padding:4px></div>
635 - </td>
636 - </tr>
637 - <tr>
638 - <td>
639 - <div style="background-color:gray"><div id="consoleprogressbar" style="height:2px;width:0%;background-color:red"></div></div>
640 - </td>
641 - </tr>
642 - <tr>
643 - <td id=p15agentConsole style="background:black;margin:0;padding:0;color:lightgray;width:100%;height:calc(100vh - 296px);max-height:500px;position:relative">
644 - <pre id=p15agentConsoleText style="position:absolute;margin:0;padding:0;top:0;bottom:0;left:0;right:0;overflow-y:scroll;overflow-x:auto"></pre>
645 - </td>
646 - </tr>
647 - <tr>
648 - <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0">
649 - <table style="width:100%">
650 - <tr>
651 - <td style="width:99%">
652 - <input id=p15consoleText style=width:100% onkeyup=p15consoleSend(event) onfocus=onConsoleFocus(1) onblur=onConsoleFocus(0) />
653 - </td>
654 - <td>&nbsp;</td>
655 - <td style="width:1%"><input id="id_p15consoleClear" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Clear" onclick="p15consoleClear()"></td>
656 - </tr>
657 - </table>
658 - </td>
659 - </tr>
660 - </table>
494 + <div id="p12warning" onclick=showFeaturesDlg()>
495 + <div class="icon2"></div>
496 + <div class="warningbox">Intel&reg; AMT Redirection port or KVM feature is disabled<span id="p14warninga">, click here to enable it.</span></div>
497 </div>
662 - <div id=p16 style="display:none">
663 - <div id="p16title">
664 - <div id="p16BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
665 - <h1>Events - <span id=p16deviceName></span></h1>
666 - </div>
667 - <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px">
668 - <div class="h1pre">&nbsp;</div>
669 - <div class="h1" style="float:left">&nbsp;</div>
670 - <!--<div class=style14 style=height:100%;float:left>&nbsp;&nbsp;<input id=p31deleteall type=button style="display:none" value="Delete All..." />&nbsp;</div>-->
671 - <div class="style14" style="float:left">&nbsp;&nbsp;<input type=button value=Refresh onclick=refreshDeviceEvents() />&nbsp;</div>
672 - <div class="auto-style1" style="height:100%;float:right">
498 + <div id="p12warning2" onclick=showPowerActionDlg()>
499 + <div class="icon2"></div>
500 + <div class="warningbox">Remote computer is not powered on, click here to issue a power command.</div>
501 + </div>
502 + <table id=termTable cellpadding=0 cellspacing=0>
503 + <tr>
504 + <td class="areaHead">
505 + <div class="toright2">
506 + <input id="termActionsBtn" type=button title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value=Actions onclick=deviceActionFunction()/>
507 + </div>
508 + <div>
509 + <input type="button" id="autoconnectbutton2" value="AutoConnect" onclick=autoConnectTerminal(event) onkeypress="return false" onkeydown="return false" style="display:none">
510 + <span id="connectbutton2span"><input type="button" id="connectbutton2" value="Connect" onclick=connectTerminal(event,1) onkeypress="return false" onkeydown="return false" disabled="disabled"></span>
511 + <span id="connectbutton2hspan">&nbsp;<input type="button" id="connectbutton2h" value="HW Connect" onclick=connectTerminal(event,2) onkeypress="return false" onkeydown="return false" disabled="disabled"></span>
512 + <span id="disconnectbutton2span">&nbsp;<input type="button" id="disconnectbutton2" value="Disconnect" onclick=connectTerminal(event,0) onkeypress="return false" onkeydown="return false"></span>
513 + &nbsp;<span id="termstatus">Disconnected</span>
514 + </div>
515 + </td>
516 + </tr>
517 + <tr>
518 + <td>
519 + <div class="areaProgress"><div id="termprogressbar" style=""></div></div>
520 + </td>
521 + </tr>
522 + <tr>
523 + <td id="termarea3x">
524 + <pre id="Term"></pre>
525 + </td>
526 + </tr>
527 + <tr>
528 + <td class="areaFoot">
529 + <div class="toright2">
530 + <span id="terminalSettingsButtons" style="display:none">
531 + <input id="id_tcrbutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="CR+LF" title="Toggle what the return key will send" onclick="termToggleCr()">
532 + <input id="id_tfxkeysbutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Intel (F10 = ESC+[OM)" title="Toggle F1 to F10 keys emulation type" onclick="termToggleFx()">
533 + <input id="id_ttypebutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Extended Ascii" title="Toggle terminal emulation type" onclick="termToggleType()">
534 + </span>
535 + <select id="specialkeylist" onkeypress="return false"></select>
536 + <input id="specialkeylistinput" type="button" onkeypress="return false" class="bottombutton" value="Send" title="Send the selected special key" onclick="sendSpecialKey()" />
537 + </div>
538 + <div>
539 + &nbsp;
540 + <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="ctrlcbutton" value="Ctl-C" onclick="termSendKey(3,'ctrlcbutton')" />
541 + <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="ctrlxbutton" value="Ctl-X" onclick="termSendKey(24,'ctrlxbutton')" />
542 + <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="escbutton" value="ESC" onclick="termSendKey(27,'escbutton')" />
543 + <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="bsbutton" value="Backspace" onclick="termSendKey(8,'bsbutton')" />
544 + <input type=button onkeypress="return false" onkeydown="return false" class="bottombutton" id="pastebutton" value="Paste" title="Paste text into the terminal" onclick="showTermPasteDialog()" />
545 + </div>
546 + </td>
547 + </tr>
548 + </table>
549 + </div>
550 + <div id=p13 style="display:none">
551 + <div id="p13title">
552 + <div id="p13BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
553 + <h1>Files - <span id=p13deviceName></span></h1>
554 + </div>
555 + <table id="p13toolbar" cellpadding="0" cellspacing="0">
556 + <tr>
557 + <td class="areaHead">
558 + <div class="toright2">
559 + <input id="filesActionsBtn" type=button title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value=Actions onclick=deviceActionFunction() />
560 + </div>
561 + <div>
562 + <input id=p13AutoConnect value="AutoConnect" onclick=autoConnectFiles(event) onkeypress="return false" onkeydown="return false" type="button" style="display:none">
563 + <input id=p13Connect value="Connect" onclick=connectFiles(event) onkeypress="return false" onkeydown="return false" type="button">
564 + <span id=p13Status>Disconnected</span>
565 + </div>
566 + </td>
567 + </tr>
568 + <tr>
569 + <td class="areaHead2" valign=bottom>
570 + <div id="p13rightOfButtons" class="toright2"></div>
571 + <div>
572 + <input type=button id=p13FolderUp disabled="disabled" onclick="p13folderup()" value="Up" />&nbsp;
573 + <input type=button id=p13SelectAllButton disabled="disabled" onclick="p13selectallfile()" value="Select All" onkeypress="return false" onkeydown="return false" />&nbsp;
574 + <input type=button id=p13RenameFileButton disabled="disabled" value="Rename" onclick="p13renamefile()" onkeypress="return false" onkeydown="return false" />&nbsp;
575 + <input type=button id=p13DeleteFileButton disabled="disabled" value="Delete" onclick="p13deletefile()" onkeypress="return false" onkeydown="return false" />&nbsp;
576 + <input type=button id=p13NewFolderButton disabled="disabled" value="New Folder" onclick="p13createfolder()" onkeypress="return false" onkeydown="return false" />&nbsp;
577 + <input type=button id=p13UploadButton disabled="disabled" value="Upload" onclick="p13uploadFile()" onkeypress="return false" onkeydown="return false" />&nbsp;
578 + <input type=button id=p13CutButton disabled="disabled" value="Cut" onclick="p13copyFile(1)" onkeypress="return false" onkeydown="return false" />&nbsp;
579 + <input type=button id=p13CopyButton disabled="disabled" value="Copy" onclick="p13copyFile(0)" onkeypress="return false" onkeydown="return false" />&nbsp;
580 + <input type=button id=p13PasteButton disabled="disabled" value="Paste" onclick="p13pasteFile()" onkeypress="return false" onkeydown="return false" />&nbsp;
581 + <input type=button id=p13RefreshButton disabled="disabled" value="Refresh" onclick="p13folderup(9999)" onkeypress="return false" onkeydown="return false" />&nbsp;
582 + </div>
583 + </td>
584 + </tr>
585 + <tr>
586 + <td class="areaHead3">
587 + <div class="toright2">
588 + <select id=p13sortdropdown onchange=p13updateFiles()>
589 + <option value=1 selected="selected">Sort by name</option>
590 + <option value=2>Sort by size</option>
591 + <option value=3>Sort by date</option>
592 + <option value=4>Descend by name</option>
593 + <option value=5>Descend by size</option>
594 + <option value=6>Descend by date</option>
595 + </select>
596 + </div>
597 + <div>&nbsp;&nbsp;<span id="p13currentpath"></span></div>
598 + </td>
599 + </tr>
600 + </table>
601 + <div id="p13filetable" style="">
602 + <div id="p13bigok" style="display:none"><b>&checkmark;</b></div>
603 + <div id="p13bigfail" style="display:none"><b>&#10007;</b></div>
604 + <span id="p13files"></span>
605 + </div>
606 + <table id="p13toolbarBottom" cellpadding=0 cellspacing=0>
607 + <tr><td class=style6>&nbsp;<span id="p13bottomstatus"></span></td></tr>
608 + </table>
609 + </div>
610 + <div id=p14 style="display:none">
611 + <div id="p14title">
612 + <div id="p14BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
613 + <h1>Intel&reg; AMT - <span id=p14deviceName></span></h1>
614 + </div>
615 + <iframe id=p14iframe src="/commander.htm"></iframe>
616 + </div>
617 + <div id=p15 style="display:none">
618 + <div id="p15title">
619 + <div id="p15BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
620 + <h1><span id=p15deviceName></span></h1>
621 + </div>
622 + <table id="consoleTable" cellpadding=0 cellspacing=0>
623 + <tr>
624 + <td class="areaHead">
625 + <div class="toright2">
626 + <div id=p15coreName title="Information about current core running on this agent"></div>
627 + <input type=button id=p15uploadCore value="Agent Action" onclick=p15uploadCore(event) title="Change the agent Java Script code module" />
628 + </div>
629 + <div id="p15statetext"></div>
630 + </td>
631 + </tr>
632 + <tr>
633 + <td>
634 + <div class="areaProgress"><div id="consoleprogressbar" style=""></div></div>
635 + </td>
636 + </tr>
637 + <tr>
638 + <td id=p15agentConsole>
639 + <pre id=p15agentConsoleText></pre>
640 + </td>
641 + </tr>
642 + <tr>
643 + <td class="areaFoot">
644 + <table style="width:100%">
645 + <tr>
646 + <td style="width:99%">
647 + <input id=p15consoleText style=width:100% onkeyup=p15consoleSend(event) onfocus=onConsoleFocus(1) onblur=onConsoleFocus(0) />
648 + </td>
649 + <td>&nbsp;</td>
650 + <td style="width:1%"><input id="id_p15consoleClear" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Clear" onclick="p15consoleClear()"></td>
651 + </tr>
652 + </table>
653 + </td>
654 + </tr>
655 + </table>
656 + </div>
657 + <div id=p16 style="display:none">
658 + <div id="p16title">
659 + <div id="p16BackButton" style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
660 + <h1>Events - <span id=p16deviceName></span></h1>
661 + </div>
662 + <table class="pTable">
663 + <tr>
664 + <td class="h1"></td>
665 + <td>&nbsp;<input type=button onclick=refreshDeviceEvents() value="Refresh" /></td>
666 + <td class="auto-style1">
667 Show
668 <select id=p16limitdropdown onchange=refreshDeviceEvents()>
669 <option value=60>Last 60</option>
@@ -678,53 +672,52 @@
672 <option value=500>Last 500</option>
673 <option value=1000>Last 1000</option>
674 </select>
681 - <div class="h2end"></div>
682 - <div class="h2" style="height:100%;float:right">&nbsp;</div>
683 - </div>
684 - </div>
685 - <div id=p16events style="max-height:calc(100vh - 267px);overflow-y:auto"></div>
686 - </div>
687 - <div id=p20 style="display:none">
688 - <picture id=MainMeshImage style=border-width:0px;height:200px;width:200px;float:right>
689 - <source type="image/webp" width=200 height=200 srcset="images/webp/mesh-200.webp">
690 - <img alt="" width=200 height=200 src=images/mesh-200.jpg />
691 - </picture>
692 - <div style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
693 - <h1>General - <span id=p20meshName></span></h1>
694 - <p id=p20info></p>
695 - </div>
696 - <div id=p30 style="display:none">
697 - <table style="width:100%" cellpadding="0" cellspacing="0">
698 - <tr>
699 - <td style=width:auto valign=top>
700 - <div id="p30title">
701 - <div style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
702 - <h1>General - <span id=p30userName></span></h1>
703 - </div>
704 - <div id=p30html></div>
705 - </td>
706 - <td style=width:20px></td>
707 - <td style=width:200px>
708 - <picture id=MainUserImage style=border-width:0px;height:200px;width:200px;float:right>
709 - <source type="image/webp" width=200 height=200 srcset="images/webp/user-200.webp">
710 - <img alt="" width=200 height=200 src=images/user-200.jpg />
711 - </picture>
712 - <div style="width:100%;text-align:center"><strong><span id=MainUserState></span></strong></div>
713 - </td>
714 - </tr>
715 - </table><br>
716 - <div id=p30html2></div>
717 - <div id=p30html3></div>
718 - </div>
719 - <div id=p31 style="display:none">
720 - <div style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
721 - <h1>Events - <span id=p31userName></span></h1>
722 - <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px">
723 - <div class="h1pre">&nbsp;</div>
724 - <div class="h1" style="height:100%;float:left">&nbsp;</div>
725 - <!--<div class=style14 style=float:left>&nbsp;&nbsp;<input id=p31deleteall type=button style="display:none" value="Delete All..." />&nbsp;</div>-->
726 - <div class="style14" style="float:left">&nbsp;&nbsp;<input type=button value=Refresh onclick=refreshUsersEvents() />&nbsp;</div>
727 - <div class="auto-style1" style="height:100%;float:right">
675 + </td>
676 + <td class="h2"></td>
677 + </tr>
678 + </table>
679 + <div id=p16events></div>
680 + </div>
681 + <div id=p20 style="display:none">
682 + <picture id=MainMeshImage style=border-width:0px;height:200px;width:200px;float:right>
683 + <source type="image/webp" width=200 height=200 srcset="images/webp/mesh-200.webp">
684 + <img alt="" width=200 height=200 src=images/mesh-200.jpg />
685 + </picture>
686 + <div style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
687 + <h1>General - <span id=p20meshName></span></h1>
688 + <p id=p20info></p>
689 + </div>
690 + <div id=p30 style="display:none">
691 + <table style="width:100%" cellpadding="0" cellspacing="0">
692 + <tr>
693 + <td style=width:auto valign=top>
694 + <div id="p30title">
695 + <div style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
696 + <h1>General - <span id=p30userName></span></h1>
697 + </div>
698 + <div id=p30html></div>
699 + </td>
700 + <td style=width:20px></td>
701 + <td style=width:200px>
702 + <picture id=MainUserImage style=border-width:0px;height:200px;width:200px;float:right>
703 + <source type="image/webp" width=200 height=200 srcset="images/webp/user-200.webp">
704 + <img alt="" width=200 height=200 src=images/user-200.jpg />
705 + </picture>
706 + <div style="width:100%;text-align:center"><strong><span id=MainUserState></span></strong></div>
707 + </td>
708 + </tr>
709 + </table><br>
710 + <div id=p30html2></div>
711 + <div id=p30html3></div>
712 + </div>
713 + <div id=p31 style="display:none">
714 + <div style="float:left"><div class="backButton" onclick=goBack() title="Back"><div class="backButtonEx"></div></div></div>
715 + <h1>Events - <span id=p31userName></span></h1>
716 + <table class="pTable">
717 + <tr>
718 + <td class="h1"></td>
719 + <td>&nbsp;<input type=button onclick=refreshUsersEvents() value="Refresh" /></td>
720 + <td class="auto-style1">
721 Show
722 <select id=p31limitdropdown onchange=refreshUsersEvents()>
723 <option value=60>Last 60</option>
@@ -733,151 +726,142 @@
726 <option value=500>Last 500</option>
727 <option value=1000>Last 1000</option>
728 </select>
736 - <div class="h2end"></div>
737 - <div class="h2" style="height:100%;float:right;">&nbsp;</div>
738 - </div>
729 + </td>
730 + <td class="h2"></td>
731 + </tr>
732 + </table>
733 + <div id=p31events></div>
734 + </div>
735 + <div id=p40 style="display:none;">
736 + <h1>My Server Stats</h1>
737 + <div class="areaHead">
738 + <div class="toright2">
739 + <select id=p40type onchange=updateServerTimelineStats()>
740 + <option value=0>Connections</option>
741 + <option value=1>Memory</option>
742 + </select>&nbsp;
743 + <select id=p40time onchange=updateServerTimelineHours()>
744 + <option value=3>Last 3 hours</option>
745 + <option value=8>Last 8 hours</option>
746 + <option value=24>Last day</option>
747 + <option value=168>Last week</option>
748 + <option value=720>Last 30 days</option>
749 + </select>&nbsp;
750 + <img src=images/link4.png height=10 width=10 title="Download data points (.csv)" style=cursor:pointer onclick=p40downloadEvents()>&nbsp;
751 </div>
740 - <div id=p31events style="max-height:calc(100vh - 267px);overflow-y:scroll"></div>
741 - </div>
742 - <div id=p40 style="display:none;height:calc(100vh - 170px)">
743 - <h1>My Server Stats</h1>
744 - <div style=width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px>
745 - <div style="float:right">
746 - <select id=p40type onchange=updateServerTimelineStats()>
747 - <option value=0>Connections</option>
748 - <option value=1>Memory</option>
749 - </select>&nbsp;
750 - <select id=p40time onchange=updateServerTimelineHours()>
751 - <option value=3>Last 3 hours</option>
752 - <option value=8>Last 8 hours</option>
753 - <option value=24>Last day</option>
754 - <option value=168>Last week</option>
755 - <option value=720>Last 30 days</option>
756 - </select>&nbsp;
757 - <img src=images/link4.png height=10 width=10 title="Download data points (.csv)" style=cursor:pointer onclick=p40downloadEvents()>&nbsp;
758 - </div>
759 - <div>
760 - &nbsp;<input value="Refresh" type="button" onclick="refreshServerTimelineStats()" />
761 - &nbsp;<input id=p40log type="checkbox" onclick="updateServerTimelineHours()" />Log-X
762 - </div>
752 + <div>
753 + <input value="Refresh" type="button" onclick="refreshServerTimelineStats()" />
754 + &nbsp;<input id=p40log type="checkbox" onclick="updateServerTimelineHours()" />Log-X
755 </div>
764 - <canvas id=serverMainStats style="height:calc(100vh - 250px);max-height:calc(100vh - 250px);width:100%"></canvas>
756 </div>
766 - <br id="column_l_bottomgap" />
757 + <canvas id=serverMainStats style=""></canvas>
758 </div>
768 - <div id=footer class=noselect>
769 - <table cellpadding=0 cellspacing=10 style="width:100%">
770 - <tr>
771 - <td style="text-align:left;color:white">
772 - {{{footer}}}
773 - </td>
774 - <td style="text-align:right">
775 - <a id="verifyEmailId2" style="color:yellow;margin-left:3px;cursor:pointer;display:none" onclick="account_showVerifyEmail()">Verify Email</a>
776 - <a style="margin-left:3px" href="terms">Terms &amp; Privacy</a>
777 - </td>
778 - </tr>
779 - </table>
759 + <br id="column_l_bottomgap" />
760 + </div>
761 + <div id="footer">
762 + <div class="footer1">{{{footer}}}</div>
763 + <div class="footer2">
764 + <a id="verifyEmailId2" style="display:none" onclick="account_showVerifyEmail()">Verify Email</a>
765 + &nbsp;<a href=terms>Terms &amp; Privacy</a>
766 + </div>
767 + </div>
768 + <div id=dialog style="display:none">
769 + <div id=dialogHeader>
770 + <div id=id_dialogclose onclick=setDialogMode()>&#x2716;</div>
771 + <div id=id_dialogtitle></div>
772 </div>
781 - <div id=dialog style="display:none">
782 - <div id=dialogHeader>
783 - <div id=id_dialogclose style=float:right;padding:3px;margin-right:3px;cursor:pointer onclick=setDialogMode()>&#x2716;</div>
784 - <div id=id_dialogtitle style=padding:5px></div>
785 - <div style=width:100%;margin:6px></div>
773 + <div id=dialogBody>
774 + <div id=dialog1>
775 + <div id=id_dialogMessage style=""></div>
776 </div>
787 - <div id=dialogBody>
788 - <div id=dialog1>
789 - <div id=id_dialogMessage style=""></div>
777 + <div id=dialog2 style="">
778 + <div id=id_dialogOptions></div>
779 + </div>
780 + <div id=dialog3 style="">
781 + <div id=d3upload>
782 + <div>File Selection</div>
783 + <select id=d3uploadMode onchange=d3modechange()>
784 + <option value=1>Local file upload</option>
785 + <option value=2>Server file selection</option>
786 + </select>
787 </div>
791 - <div id=dialog2 style="">
792 - <div id=id_dialogOptions></div>
788 + <div id=d3localmode style="display:none">
789 + <div>Upload File</div>
790 + <form id=d3localmodeform method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame>
791 + <input type=text id=d3attrib name=attrib style="display:none" />
792 + <input type=file id=d3localFile name=files onchange=d3setActions() />
793 + <input type=submit id=d3submit style="display:none" />
794 + </form>
795 </div>
794 - <div id=dialog3 style="">
795 - <div style=height:26px>
796 - <select id=d3uploadMode style=float:right;width:260px onchange=d3modechange()>
797 - <option value=1>Local file upload</option>
798 - <option value=2>Server file selection</option>
799 - </select>
800 - <div>File Selection</div>
796 + <div id=d3servermode>
797 + <div id=d3serveraction valign=bottom>
798 + <input type=button id=p3FolderUp disabled="disabled" onclick=d3folderup() value="Up" />&nbsp;
799 </div>
802 - <div id=d3localmode style=height:26px;display:none>
803 - <form id=d3localmodeform method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame>
804 - <input type=text id=d3attrib name=attrib style="display:none" />
805 - <input type=file id=d3localFile name=files style=float:right;width:260px onchange=d3setActions() />
806 - <input type=submit id=d3submit style="display:none" />
807 - </form>
808 - <div>Upload File</div>
800 + <div id=d3serverfiles></div>
801 + </div>
802 + </div>
803 + <div id=dialog7 style="">
804 + <div id="d7meshkvm">
805 + <h4>Agent Remote Desktop</h4>
806 + <div>
807 + <div>Quality</div>
808 + <select id="d7bitmapquality" dir="rtl"></select>
809 </div>
810 - <div id=d3servermode>
811 - <div style="width:100%;background-color:#d3d9d6;text-align:left;padding:3px" valign=bottom>
812 - <input type=button id=p3FolderUp disabled="disabled" onclick=d3folderup() value="Up" />&nbsp;
813 - </div>
814 - <div id=d3serverfiles style="width:100%;height:150px;background-color:white;padding:2px;border:1px solid gray;overflow-y:scroll"></div>
810 + <div>
811 + <div>Scaling</div>
812 + <select id="d7bitmapscaling" style="" dir="rtl">
813 + <option selected=selected value=1024>100%</option>
814 + <option value=896>87.5%</option>
815 + <option value=768>75%</option>
816 + <option value=640>62.5%</option>
817 + <option value=512>50%</option>
818 + <option value=384>37.5%</option>
819 + <option value=256>25%</option>
820 + <option value=128>12.5%</option>
821 + </select>
822 + </div>
823 + <div>
824 + <div>Frame rate</div>
825 + <select id="d7framelimiter" dir="rtl">
826 + <option selected=selected value=50>Fast</option>
827 + <option value=100>Medium</option>
828 + <option value=400>Slow</option>
829 + <option value=1000>Very slow</option>
830 + </select>
831 </div>
832 </div>
817 - <div id=dialog7 style="margin:auto;margin:3px">
818 -
819 - <div id="d7meshkvm">
820 - <h4 style="width:100%;border-bottom:1px solid gray">Agent Remote Desktop</h4>
821 - <div style="margin:3px 0 3px 0">
822 - <select id="d7bitmapquality" style="float:right;width:200px;height:20px" dir="rtl"></select>
823 - <div style="height:20px">Quality</div>
824 - </div>
825 - <div style="margin:3px 0 3px 0">
826 - <select id="d7bitmapscaling" style="float:right;width:200px;height:20px" dir="rtl">
827 - <option selected=selected value=1024>100%</option>
828 - <option value=896>87.5%</option>
829 - <option value=768>75%</option>
830 - <option value=640>62.5%</option>
831 - <option value=512>50%</option>
832 - <option value=384>37.5%</option>
833 - <option value=256>25%</option>
834 - <option value=128>12.5%</option>
835 - </select>
836 - <div style="height:20px">Scaling</div>
837 - </div>
838 - <div style="margin:3px 0 3px 0">
839 - <select id="d7framelimiter" style="float:right;width:200px;height:20px" dir="rtl">
840 - <option selected=selected value=50>Fast</option>
841 - <option value=100>Medium</option>
842 - <option value=400>Slow</option>
843 - <option value=1000>Very slow</option>
844 - </select>
845 - <div style="height:20px">Frame rate</div>
846 - </div>
833 + <div id="d7amtkvm">
834 + <h4>Intel&reg; AMT Hardware KVM</h4>
835 + <div>
836 + <div>Image Encoding</div>
837 + <select id="d7desktopmode">
838 + <option value="1">RLE8, Fastest</option>
839 + <option value="2">RLE16, Recommended</option>
840 + <option value="3">RAW8, Slow</option>
841 + <option value="4">RAW16, Very Slow</option>
842 + </select>
843 </div>
848 - <div id="d7amtkvm">
849 - <h4 style="width:100%;border-bottom:1px solid gray">Intel&reg; AMT Hardware KVM</h4>
850 - <div style='height:26px'>
851 - <select id="d7desktopmode" style="float:right;width:200px">
852 - <option value="1">RLE8, Fastest</option>
853 - <option value="2">RLE16, Recommended</option>
854 - <option value="3">RAW8, Slow</option>
855 - <option value="4">RAW16, Very Slow</option>
856 - </select>
857 - <div>Image Encoding</div>
858 - </div>
859 - <div style="height:60px">
860 - <div style="float:right;border:1px solid #666;width:200px;height:60px;overflow-y:scroll;background-color:white">
861 - <label><input type="checkbox" id='d7showfocus'>Show Focus Tool<br></label>
862 - <label><input type="checkbox" id='d7showcursor'>Show Local Mouse Cursor<br></label>
863 - <label><input type="checkbox" id='d7localKeyMap'>Local Keyboard Map<br></label>
864 - </div>
865 - <div>Other Settings</div>
844 + <div>
845 + <div>Other Settings</div>
846 + <div id="d7otherset">
847 + <label><input type="checkbox" id='d7showfocus'>Show Focus Tool<br></label>
848 + <label><input type="checkbox" id='d7showcursor'>Show Local Mouse Cursor<br></label>
849 + <label><input type="checkbox" id='d7localKeyMap'>Local Keyboard Map<br></label>
850 </div>
851 </div>
852 </div>
853 </div>
870 - <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:4px">
871 - <input id="idx_dlgCancelButton" type="button" value="Cancel" style="" onclick="dialogclose(0)">
872 - <input id="idx_dlgOkButton" type="button" value="OK" style="" onclick="dialogclose(1)">
873 - <div style="height:25px"><input id=idx_dlgDeleteButton type=button value=Delete style="display:none" onclick="dialogclose(2)"></div>
874 - </div>
854 </div>
876 - <iframe name="fileUploadFrame" style="display:none"></iframe>
877 - <form style="display:none" method=post action=uploadfile.ashx enctype=multipart/form-data target=fileUploadFrame><input id=p5fileDragName name="name"><input id=p5fileDragSize name="size"><input id=p5fileDragType name="type"><input id=p5fileDragData name="data"><input id=p5fileDragLink name="link"><input type=submit id=p5loginSubmit2 style="display:none" /></form>
878 - <form style="display:none" method=post action=uploadnodefile.ashx enctype=multipart/form-data target=fileUploadFrame><input id=p13fileDragName name="name"><input id=p13fileDragSize name="size"><input id=p13fileDragType name="type"><input id=p13fileDragData name="data"><input id=p13fileDragLink name="link"><input type=submit id=p13loginSubmit2 style="display:none" /></form>
879 - <audio id="chimes"><source src="sounds/chimes.mp3" type="audio/mp3"></audio>
855 + <div id="idx_dlgButtonBar">
856 + <input id="idx_dlgCancelButton" type="button" value="Cancel" style="" onclick="dialogclose(0)">
857 + <input id="idx_dlgOkButton" type="button" value="OK" style="" onclick="dialogclose(1)">
858 + <div><input id=idx_dlgDeleteButton type=button value=Delete style="display:none" onclick="dialogclose(2)"></div>
859 + </div>
860 </div>
861 + <iframe name="fileUploadFrame" style="display:none"></iframe>
862 + <form style="display:none" method=post action=uploadfile.ashx enctype=multipart/form-data target=fileUploadFrame><input id=p5fileDragName name="name"><input id=p5fileDragSize name="size"><input id=p5fileDragType name="type"><input id=p5fileDragData name="data"><input id=p5fileDragLink name="link"><input type=submit id=p5loginSubmit2 style="display:none" /></form>
863 + <form style="display:none" method=post action=uploadnodefile.ashx enctype=multipart/form-data target=fileUploadFrame><input id=p13fileDragName name="name"><input id=p13fileDragSize name="size"><input id=p13fileDragType name="type"><input id=p13fileDragData name="data"><input id=p13fileDragLink name="link"><input type=submit id=p13loginSubmit2 style="display:none" /></form>
864 + <audio id="chimes"><source src="sounds/chimes.mp3" type="audio/mp3"></audio>
865 </div>
866 <script type="text/javascript">
867 'use strict';
@@ -927,6 +911,11 @@
911 var passRequirements = "{{{passRequirements}}}";
912 if (passRequirements != "") { passRequirements = JSON.parse(decodeURIComponent(passRequirements)); }
913
914 + var deskAspectRatio = getstore('deskAspectRatio', false);
915 + var webPageStackMenu = getstore('webPageStackMenu', false);
916 + if (webPageStackMenu == true || webPageStackMenu == 'true') { webPageStackMenu = true } else { webPageStackMenu = false };
917 + toggleStackMenu(0)
918 +
919 function startup() {
920 if ((features & 32) == 0) {
921 // Guard against other site's top frames (web bugs).
@@ -950,7 +939,7 @@
939 if (args.hide) {
940 var hide = parseInt(args.hide);
941 QV('masthead', !(hide & 1));
953 - QV('topbarmaster', !(hide & 2));
942 + QV('topbar', !(hide & 2));
943 QV('footer', !(hide & 4));
944 QV('p10title', !(hide & 8));
945 QV('p11title', !(hide & 8));
@@ -1039,54 +1028,47 @@
1028 setupServerTimelineStats();
1029 }
1030
1031 + // Toggle the web page to full screen
1032 + function toggleAspectRatio(toggle) {
1033 + if (toggle === 1) { deskAspectRatio = !deskAspectRatio; putstore('deskAspectRatio', deskAspectRatio); }
1034 + deskAdjust()
1035 + }
1036 +
1037 + // If FullScreen, toggle menu to be horisontal or vertical
1038 + function toggleStackMenu(toggle) {
1039 + if (webPageFullScreen == true) {
1040 + if (toggle === 1) {
1041 + webPageStackMenu = !webPageStackMenu;
1042 + putstore('webPageStackMenu', webPageStackMenu);
1043 + }
1044 + if (webPageStackMenu == false) {
1045 + QC('body').remove("menu_stack");
1046 + } else {
1047 + QC('body').add("menu_stack");
1048 + if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
1049 + }
1050 + deskAdjust();
1051 + }
1052 + }
1053 +
1054 // Toggle the web page to full screen
1055 function toggleFullScreen(toggle) {
1056 if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
1057 var hide = 0;
1058 if (args.hide) { hide = parseInt(args.hide); }
1059 if (webPageFullScreen == false) {
1060 + QC('body').remove("menu_stack");
1061 QC('body').remove("fullscreen");
1062 QC('body').remove("arg_hide");
1050 - /* QS('container').width = '960px';
1051 - QS('container')['border-right'] = '1px solid #b7b7b7';
1052 - QS('container')['border-left'] = '1px solid #b7b7b7';
1053 - QS('container')['min-width'] = '960px';
1054 - QS('container')['overflow'] = '';
1055 - QS('column_l').width = '930px';
1056 - QS('column_l').height = '';
1057 - QS('column_l')['margin-left'] = '';
1058 - QS('column_l')["overflow-y"] = '';
1059 - QS('column_l')["max-height"] = (xxcurrentView >= 10) ? 'calc(100vh - 159px)' : 'calc(100vh - 135px)';
1060 - QS('container').position = '';
1061 - QS('page_content').position = '';
1062 - QV('MainMenuSpan', true); */
1063 + if (xxcurrentView >= 10) QC('column_l').add('room4submenu');
1064 QV('UserDummyMenuSpan', false);
1064 - QV('page_leftbar', false);
1065 + //QV('page_leftbar', false);
1066 } else {
1067 QC('body').add("fullscreen");
1067 - if (hide & 16) QC('body').add("arg_hide");
1068 - /* QS('container').position = 'absolute';
1069 - QS('container').width = '100%';
1070 - QS('container').top = '0px';
1071 - QS('container').bottom = '0px';
1072 - QS('container')['border-right'] = '0';
1073 - QS('container')['border-left'] = '0';
1074 - QS('container')['min-width'] = '700px';
1075 - QS('container')['overflow'] = 'hidden';
1076 - QS('page_content').position = 'absolute';
1077 - QS('page_content').top = '66px';
1078 - QS('page_content').left = (hide & 16)?'0px':'90px';
1079 - QS('page_content').right = '0px';
1080 - QS('page_content').bottom = '0px';
1081 - QS('column_l').height = 'calc(100vh - 135px)';
1082 - QS('column_l').width = 'calc(100% - 30px)';
1083 - QS('column_l')["overflow-y"] = 'auto';
1084 - QS('column_l')["max-height"] = 'calc(100vh - 135px)';
1085 - QV('MainMenuSpan', false); */
1068 + if (hide & 16) QC('body').add("arg_hide"); // This is replacement for QV('page_leftbar', !(hide & 16));
1069 + if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
1070 QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
1087 - QV('page_leftbar', !(hide & 16));
1071 }
1089 - //center();
1072 masterUpdate(512);
1073 QV('body', true);
1074 }
@@ -1449,7 +1431,7 @@
1431 case 'getcookie': {
1432 if (message.tag == 'clickonce') {
1433 var basicPort = "{{{serverRedirPort}}}" == "" ? "{{{serverPublicPort}}}" : "{{{serverRedirPort}}}";
1452 - var rdpurl = "http://" + window.location.hostname + ":" + basicPort + "/clickonce/minirouter/MeshMiniRouter.application?WS=wss%3A%2F%2F" + window.location.hostname + "%2Fmeshrelay.ashx%3Fauth=" + message.cookie + "&CH={{{webcerthash}}}&AP=" + message.protocol + ((debugmode == 1) ? "" : "&HOL=1");
1434 + var rdpurl = "http://" + window.location.hostname + ":" + basicPort + "/clickonce/minirouter/MeshMiniRouter.application?WS=wss%3A%2F%2F" + window.location.hostname + "%2Fmeshrelay.ashx%3Fauth=" + message.cookie + "&CH={{{webcerthash}}}&AP=" + message.protocol + ((debugmode == 1) ? "" : "&XHOL=1");
1435 var newWindow = window.open(rdpurl, '_blank');
1436 newWindow.opener = null;
1437 }
@@ -1609,12 +1591,32 @@
1591 var newsiteadmin = message.event.account.siteadmin?message.event.account.siteadmin:0;
1592 var oldsiteadmin = userinfo.siteadmin?userinfo.siteadmin:0;
1593 if ((message.event.account.quota != userinfo.quota) || (((userinfo.siteadmin & 8) == 0) && ((message.event.account.siteadmin & 8) != 0))) { meshserver.send({ action: 'files' }); }
1594 + var oldgroups = userinfo.groups;
1595 userinfo = message.event.account;
1596 if (oldsiteadmin != newsiteadmin) updateSiteAdmin();
1597 updateSelf();
1598 +
1599 + if ((userinfo.siteadmin & 2) != 0) {
1600 + // Compare our groups
1601 + var og = oldgroups ? oldgroups : [];
1602 + var ng = userinfo.groups ? userinfo.groups : [];
1603 + if (og.join(',') != ng.join(',')) {
1604 + // Our groups have changed, re-ask for a list of users.
1605 + users = wssessions = null;
1606 + meshserver.send({ action: 'users' });
1607 + meshserver.send({ action: 'wssessioncount' });
1608 + }
1609 + }
1610 }
1611 if (users == null) break;
1617 - users[message.event.account._id] = message.event.account;
1612 +
1613 + // Check if the account if part of our user group
1614 + if ((userinfo.groups == null) || (userinfo.groups.length == 0) || (findOne(message.event.account.groups, userinfo.groups) == true)) {
1615 + users[message.event.account._id] = message.event.account; // Part of our groups, update this user.
1616 + } else {
1617 + delete users[message.event.account._id]; // No longer part of our groups, remove this user.
1618 + }
1619 +
1620 updateUsers();
1621 break;
1622 }
@@ -2322,7 +2324,7 @@
2324 multiDesktop[id] = desktop;
2325 desktop = desktopNode = currentNode = null;
2326 // Setup a replacement desktop
2325 - QH('DeskParent', '<canvas id="Desk" width="640" height="480" style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>');
2327 + QH('DeskParent', '<canvas id="Desk" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>');
2328 } else {
2329 // This is a new device, create a canvas for it.
2330 var c = document.createElement('canvas');
@@ -4154,7 +4156,7 @@
4156 var showEditNodeValueDialog_modes3 = ['', '', '', 'Tag1, Tag2, Tag3'];
4157 function showEditNodeValueDialog(mode) {
4158 if (xxdialogMode) return;
4157 - var x = addHtmlValue(showEditNodeValueDialog_modes[mode], '<input id=dp10devicevalue style=width:230px maxlength=64 placeholder="' + showEditNodeValueDialog_modes3[mode] + '" onchange=p10editdevicevalueValidate(' + mode + ',event) onkeyup=p10editdevicevalueValidate(' + mode + ',event) />');
4159 + var x = addHtmlValue(showEditNodeValueDialog_modes[mode], '<input id=dp10devicevalue maxlength=64 placeholder="' + showEditNodeValueDialog_modes3[mode] + '" onchange=p10editdevicevalueValidate(' + mode + ',event) onkeyup=p10editdevicevalueValidate(' + mode + ',event) />');
4160 setDialogMode(2, "Edit Device", 3, showEditNodeValueDialogEx, x, mode);
4161 var v = currentNode[showEditNodeValueDialog_modes2[mode]];
4162 if (v == null) v = '';
@@ -4193,7 +4195,6 @@
4195 QH('DeskParent', '');
4196 var c = xdesk.m.CanvasId;
4197 c.setAttribute('id', 'Desk');
4196 - c.setAttribute('style', 'width:100%;-ms-touch-action:none;margin-left:0px');
4198 c.setAttribute('onmousedown', 'dmousedown(event)');
4199 c.setAttribute('onmouseup', 'dmouseup(event)');
4200 c.setAttribute('onmousemove', 'dmousemove(event)');
@@ -4207,7 +4208,7 @@
4208 delete multiDesktop[currentNode._id];
4209 } else {
4210 // Device is not already connected, just setup a blank canvas
4210 - QH('DeskParent', '<canvas id=Desk width=640 height=480 style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>');
4211 + QH('DeskParent', '<canvas id=Desk oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>');
4212 desktopNode = currentNode;
4213 }
4214 // Setup the mouse wheel
@@ -4503,45 +4504,19 @@
4504 var browserfullscreen = false;
4505 function deskToggleFull(e) {
4506 fullscreen = !fullscreen;
4506 - /* QV('mastheadx', !fullscreen);
4507 - QV('masthead', !fullscreen);
4508 - QV('topbar', !fullscreen);
4509 - QV('p11deviceNameHeader', !fullscreen);
4510 - QV('footer', !fullscreen);
4511 - QV('column_l_bottomgap', !fullscreen);
4512 - QV('idx_deskFullBtn2', fullscreen);
4513 - QV('deskFullBtn', !fullscreen);
4514 - QV('page_leftbar', !fullscreen); */
4507 if (fullscreen) {
4508 QC('body').add("fulldesk");
4509 + QS('deskarea3x').height = null;
4510 // If shift is pressed, enter browser full screen.
4511 if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
4519 - /* QS('column_l').width = '930px';
4520 - QS('column_l').height = '';
4521 - QS('column_l')['margin-left'] = '';
4522 - QS('column_l')['overflow-y'] = '';
4523 - QS('container').position = '';
4524 - QS('page_content').position = '';
4525 - QV('MainMenuSpan', true);
4526 - QS('container').width = '100%';
4527 - QS('container')['border-right'] = '0';
4528 - QS('container')['border-left'] = '0';
4529 - QS('column_l').padding = '0';
4530 - QS('column_l').width = '100%';
4531 - QS('column_l')["max-height"] = ''; */
4512 } else {
4513 QC('body').remove("fulldesk");
4514 exitBrowserFullscreen();
4515 browserfullscreen = false;
4536 - /* QS('container').width = '960px';
4537 - QS('container')['border-right'] = '1px solid #b7b7b7';
4538 - QS('container')['border-left'] = '1px solid #b7b7b7';
4539 - QS('column_l').padding = '0 15px';
4540 - QS('column_l').width = '930px'; */
4516 toggleFullScreen();
4517 }
4518 deskAdjust();
4544 - deskAdjust();
4519 + //deskAdjust();
4520 updateDesktopButtons();
4521 }
4522
@@ -4551,33 +4526,34 @@
4526 }
4527
4528 function deskAdjust() {
4554 - var x = (Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - (Q('deskarea1').clientHeight + Q('deskarea2').clientHeight + Q('Desk').clientHeight + Q('deskarea4').clientHeight + 2)) / 2;
4555 - if (fullscreen) {
4556 - document.documentElement.style.overflow = 'hidden';
4529 + if (deskAspectRatio) {
4530 + QS('Desk').width = '100%';
4531 + QS('Desk').height = '100%';
4532 QS('deskarea3x').height = null;
4558 - if (x < 0) {
4559 - var mh = (Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - (Q('deskarea1').clientHeight + Q('deskarea2').clientHeight + Q('deskarea4').clientHeight));
4560 - var mw = 9999;
4561 - if (desktop) { mw = (desktop.m.width / desktop.m.height) * mh; }
4562 - if (webRtcDesktop && webRtcDesktop.softdesktop) { mw = (webRtcDesktop.softdesktop.m.width / webRtcDesktop.softdesktop.m.height) * mh; }
4563 - QS('Desk')['max-height'] = mh + 'px';
4564 - QS('Desk')['max-width'] = mw + 'px';
4565 - x = 0;
4533 + } else {
4534 + var parentH = Q('DeskParent').clientHeight;
4535 + var parentW = Q('DeskParent').clientWidth;
4536 + var deskH = Q('Desk').height;
4537 + var deskW = Q('Desk').width;
4538 + if (parentH / parentW > deskH / deskW) {
4539 + var hNew = (deskH * parentW / deskW) + 'px';
4540 + if (webPageFullScreen || fullscreen) {
4541 + QS('deskarea3x').height = null;
4542 + } else {
4543 + // QS('deskarea3x').height = hNew;
4544 + QS('deskarea3x').height = null;
4545 + }
4546 + QS('Desk').height = hNew;
4547 + QS('Desk').width = '100%';
4548 } else {
4567 - QS('Desk')['max-height'] = null;
4568 - QS('Desk')['max-width'] = null;
4549 + var wNew = (deskW * parentH / deskH) + 'px';
4550 + if (webPageFullScreen || fullscreen) {
4551 + QS('Desk').height = null;
4552 + } else {
4553 + QS('Desk').height = '100%';
4554 + }
4555 + QS('Desk').width = wNew;
4556 }
4570 - QS('Desk')['margin-top'] = x + 'px';
4571 - QS('Desk')['margin-bottom'] = x + 'px';
4572 - } else {
4573 - var mw = 9999, mh = (Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - (webPageFullScreen?276:290));
4574 - if (desktop) { mw = (desktop.m.width / desktop.m.height) * mh; }
4575 - if (webRtcDesktop && webRtcDesktop.softdesktop) { mw = (webRtcDesktop.softdesktop.m.width / webRtcDesktop.softdesktop.m.height) * mh; }
4576 - document.documentElement.style.overflow = 'auto';
4577 - QS('Desk')['max-height'] = mh + 'px';
4578 - QS('Desk')['max-width'] = mw + 'px';
4579 - QS('Desk')['margin-top'] = '0';
4580 - QS('Desk')['margin-bottom'] = '0';
4557 }
4558 }
4559
@@ -7037,7 +7013,7 @@
7013 var removeMultiFactor = false;
7014 if ((tag == 1) && (Q('p4twoFactorRemove').checked == true)) { removeMultiFactor = true; }
7015 if (Q('p4pass1').value == Q('p4pass2').value) {
7040 - var r = { action: 'changeuserpass', user: currentUser.name, pass: Q('p4pass1').value, removeMultiFactor: removeMultiFactor, resetNextLogin: Q('p4resetNextLogin').checked };
7016 + var r = { action: 'changeuserpass', userid: currentUser._id, pass: Q('p4pass1').value, removeMultiFactor: removeMultiFactor, resetNextLogin: Q('p4resetNextLogin').checked };
7017 if (features & 0x00010000) { r.hint = Q('p4hint').value; }
7018 meshserver.send(r);
7019 }
@@ -7549,7 +7525,7 @@
7525 }
7526
7527 function center() {
7552 - if (xxcurrentView == 11) { deskAdjust(); } //deskAdjust(); }
7528 + if (xxcurrentView == 11) { deskAdjust(); }
7529 else if (xxcurrentView == 10) { masterUpdate(256); }
7530 else if (xxcurrentView == 1) { masterUpdate(4); }
7531 }
@@ -7622,14 +7598,6 @@
7598 QV('topbar', x != 0);
7599 if ((x == 0) && (webPageFullScreen)) {
7600 QC('body').add("arg_hide");
7625 - QS('column_l').height = 'calc(100vh - 111px)';
7626 -
7627 - // Please check. I think this part is not needed anymore. Removing class will revert to default style
7628 - //QS('page_content').position = '';
7629 - //QV('page_leftbar', false);
7630 - //QS('column_l')["max-height"] = '';
7631 - //QV('column_l').left = 0;
7632 - //QV('page_content').left = 0;
7601 }
7602
7603 QV('MainSubMenuSpan', x >= 10 && x < 20);
@@ -7694,7 +7662,8 @@
7662 function validateEmail(v) { var emailReg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return emailReg.test(v); } // New version
7663 function isPrivateIP(a) { return (a.startsWith('10.') || a.startsWith('172.16.') || a.startsWith('192.168.')); }
7664 function u2fSupported() { return (window.u2f && ((navigator.userAgent.indexOf('Chrome/') > 0) || (navigator.userAgent.indexOf('Firefox/') > 0) || (navigator.userAgent.indexOf('Opera/') > 0) || (navigator.userAgent.indexOf('Safari/') > 0))); }
7665 + function findOne(arr1, arr2) { if ((arr1 == null) || (arr2 == null)) return false; return arr2.some(function (v) { return arr1.indexOf(v) >= 0; }); };
7666
7667 </script>
7668 </body>
7700 -</html>
\ No newline at end of file
7669 +</html>
views/login.handlebars
+4 -5
@@ -11,18 +11,17 @@
11 <script keeplink=1 type="text/javascript" src="scripts/u2f-api.js"></script>
12 <title>{{{title}}} - Login</title>
13 </head>
14 -<body id="body" onload="if (typeof(startup) !== 'undefined') startup();" class="arg_hide">
14 +<body id="body" onload="if (typeof(startup) !== 'undefined') startup();" class="arg_hide login">
15 <div id=container>
16 - <div id=mastheadx></div>
16 <div id=masthead>
17 <div class="title">{{{title}}}</div>
18 <div class="title2">{{{title2}}}</div>
19 </div>
21 - <div id=page_content>
20 +
21 <div id=topbar class="noselect style3">
22 <div id=toggle title="Toggle full width" onclick="toggleFullScreen(1)">&harr;</div>
23 </div>
25 - <div id=column_l style="height:calc(100vh - 111px)">
24 + <div id=column_l>
25 <h1>Welcome</h1>
26 <div id="welcomeText" style="display:none">Connect to your home or office devices from anywhere in the world using <a href="http://www.meshcommander.com/meshcentral2">MeshCentral</a>, the real time, open source remote monitoring and management web site. You will need to download and install a management agent on your computers. Once installed, computers will show up in the &quot;My Devices&quot; section of this web site and you will be able to monitor them and take control of them.</div>
27 <table id="centralTable" style="">
@@ -216,7 +215,7 @@
215 &nbsp;<a href=terms>Terms &amp; Privacy</a>
216 </div>
217 </div>
219 - </div>
218 +
219 </div>
220 <div id=dialog style="display:none">
221 <div id=dialogHeader>