summaryrefslogtreecommitdiffstats
path: root/authz-gui/theme
diff options
context:
space:
mode:
authorsg481n <sg481n@att.com>2017-08-03 17:27:34 -0400
committersg481n <sg481n@att.com>2017-08-03 17:27:34 -0400
commit43854a9e3310ff7a92257d16c4fc0a8321eaec68 (patch)
tree46af936c5da4f9c60d7d63dade5c61a8fd5ef9f4 /authz-gui/theme
parentf691a8b8dfc9eea4c6b3bfa45ea60f07ad347e69 (diff)
 [AAF-21] Initial code import
Change-Id: I63d7d499bbd46f500b5f5a4db966166f613f327a Signed-off-by: sg481n <sg481n@att.com>
Diffstat (limited to 'authz-gui/theme')
-rw-r--r--authz-gui/theme/AAF_details.pngbin0 -> 650 bytes
-rw-r--r--authz-gui/theme/AAF_font_size.pngbin0 -> 1280 bytes
-rw-r--r--authz-gui/theme/AAF_maximize.pngbin0 -> 593 bytes
-rw-r--r--authz-gui/theme/AAFdownload.pngbin0 -> 1834 bytes
-rw-r--r--authz-gui/theme/AAFemail.pngbin0 -> 2277 bytes
-rw-r--r--authz-gui/theme/aaf5.css524
-rw-r--r--authz-gui/theme/aaf5Desktop.css92
-rw-r--r--authz-gui/theme/aaf5iPhone.css38
-rw-r--r--authz-gui/theme/aafOldIE.css162
-rw-r--r--authz-gui/theme/aaf_1_0.xsd150
-rw-r--r--authz-gui/theme/aaf_2_0.xsd394
-rw-r--r--authz-gui/theme/comm.js24
-rw-r--r--authz-gui/theme/common.js104
-rw-r--r--authz-gui/theme/console.js275
-rw-r--r--authz-gui/theme/favicon.icobin0 -> 3638 bytes
-rw-r--r--authz-gui/theme/options_down.pngbin0 -> 833 bytes
-rw-r--r--authz-gui/theme/options_up.pngbin0 -> 826 bytes
-rw-r--r--authz-gui/theme/t_bubbles.jpgbin0 -> 9157 bytes
18 files changed, 1763 insertions, 0 deletions
diff --git a/authz-gui/theme/AAF_details.png b/authz-gui/theme/AAF_details.png
new file mode 100644
index 00000000..5c187459
--- /dev/null
+++ b/authz-gui/theme/AAF_details.png
Binary files differ
diff --git a/authz-gui/theme/AAF_font_size.png b/authz-gui/theme/AAF_font_size.png
new file mode 100644
index 00000000..466cbfbc
--- /dev/null
+++ b/authz-gui/theme/AAF_font_size.png
Binary files differ
diff --git a/authz-gui/theme/AAF_maximize.png b/authz-gui/theme/AAF_maximize.png
new file mode 100644
index 00000000..706603bb
--- /dev/null
+++ b/authz-gui/theme/AAF_maximize.png
Binary files differ
diff --git a/authz-gui/theme/AAFdownload.png b/authz-gui/theme/AAFdownload.png
new file mode 100644
index 00000000..cebd9522
--- /dev/null
+++ b/authz-gui/theme/AAFdownload.png
Binary files differ
diff --git a/authz-gui/theme/AAFemail.png b/authz-gui/theme/AAFemail.png
new file mode 100644
index 00000000..6d487769
--- /dev/null
+++ b/authz-gui/theme/AAFemail.png
Binary files differ
diff --git a/authz-gui/theme/aaf5.css b/authz-gui/theme/aaf5.css
new file mode 100644
index 00000000..920bdab7
--- /dev/null
+++ b/authz-gui/theme/aaf5.css
@@ -0,0 +1,524 @@
+/*
+ Standard CSS for AAF
+*/
+
+html {
+ height: 100%;
+}
+
+body {
+ background-image:url('t_bubbles.jpg');
+ background-color: #FFFFFF;
+ background-repeat:no-repeat;
+ background-position: right top;
+ background-size:15em 4.3em;
+ color:#606060;
+ font-family: Verdana,Arial,Helvetica,sans-serif;
+ overflow: scroll;
+ }
+
+header h1,p {
+ margin: 4px auto;
+}
+
+header h1 {
+ display: inline;
+}
+
+header {
+ display: block;
+ color: #F13099;
+}
+
+p#version {
+ margin:0;
+ display:inline;
+ font-size: 0.75em;
+ float:right;
+ color: orange;
+ padding-right:4.2em;
+}
+
+header hr {
+ margin: 0;
+}
+
+hr {
+ border: 1px solid #C0C0C0;
+}
+
+#breadcrumbs {
+ padding: 5px 0 12px 0;
+}
+
+
+#breadcrumbs ul {
+ color: #DFEFFC;
+ margin: 0;
+ list-style-type:none;
+ padding: 0;
+}
+
+#breadcrumbs li {
+ border-width:2px;
+ margin: 3px 1px;
+ padding: 2px 9px;
+ border-style:solid;
+ border-top-left-radius: .8em;
+ border-bottom-left-radius: .8em;
+ background-color:#80C337;
+ display:inline;
+}
+
+#breadcrumbs a {
+ text-decoration:none;
+ color: white;
+}
+
+caption {
+ color:#FF7241;
+ text-align: center;
+ font-size:1.3em;
+ font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
+}
+
+#Pages {
+ padding: 3px 2px 10px 4px;
+ background: linear-gradient(to right, #147AB3,#FFFFFF);
+}
+
+#Pages h3,
+#Pages h4,
+h5{
+ color: #909090;
+}
+
+form {
+ padding: 10px;
+ margin: 4px;
+}
+
+
+form input[id],select#myroles {
+ margin: 4px 0;
+ width: 150%;
+}
+
+form label {
+ margin: 4px 0;
+}
+
+form label[required] {
+ color: red;
+}
+
+form input[type=submit], form input[type=reset] {
+ font-size: 1.0em;
+ margin: 12px 0 0px 0;
+ color: #F13099;
+}
+
+p.preamble, p.notfound,.expedite_request {
+ display: block;
+ margin: 30px 0px 10px 0px;
+ font: italic bold 20px/30px Georgia, serif;
+ font-size: 110%;
+ color: #0079B8;
+}
+.expedite_request {
+ margin-top: 0;
+ color: #FF7241;
+}
+
+.subtext {
+ margin-left: 10px;
+ font-size: 75%;
+ font-style: italic;
+}
+
+#Pages a {
+ display:block;
+ font-weight:bold;
+ color:#FFFFFF;
+ background-color:#80C337;
+ text-decoration:none;
+ border-top-right-radius: .8em;
+ border-bottom-right-radius: .8em;
+ border-top-left-radius: .2em;
+ border-bottom-left-radius: .2em;
+ padding: 3px 40px 3px 10px;
+ margin: 4px;
+ width: 50%;
+}
+
+#footer {
+ background-color: #FF7200;
+ color: #FFFFFF;
+ text-align:right;
+ font-size: 60%;
+ padding: 5px;
+ position:fixed;
+ bottom: 0px;
+ left: 0px;
+ right: 0px;
+}
+
+/*
+ Standard Table, with Alternating Colors
+*/
+div.std {
+ vertical-align: top;
+}
+
+div.std table, div.stdform table {
+ position: relative;
+ border-collapse:collapse;
+ table-layout:auto;
+ left: 1.3%;
+ width: 98%;
+ margin-top: 5px;
+ bottom: 4px;
+ border-radius: 4px;
+}
+
+div.std td, div.stdform td {
+ font-size:.9em;
+}
+
+.center {
+ text-align: center;
+}
+
+.right {
+ text-align: right;
+ padding-right: 4px;
+}
+
+p.double {
+ line-height: 2em;
+}
+
+p.api_comment {
+ font-size: .9em;
+ text-indent: 6px;
+}
+
+p.api_contentType {
+ font-size: .8em;
+ text-indent: 6px;
+}
+
+p.api_label {
+ font-size: .9em;
+ font-style: italic;
+}
+
+div.std h1, div.std h2, div.std h3, div.std h4, div.std h5 {
+ text-indent: 7px;
+}
+
+div.std td {
+ border:1px solid #A6C9E2;
+}
+
+div.std th, div.stdform th {
+ background-color:#6FA7D1;
+ color:#FFFFFF;
+ }
+
+div.std tr.alt, div.stdform tr.alt {
+ background-color:#DFEFFC;
+}
+
+div.std a, div.stdform a {
+ /*color: #606060;*/
+ color: #147AB3;
+}
+
+td.head {
+ font-weight:bold;
+ text-align: center;
+}
+
+td.head a {
+ color:blue;
+}
+
+/*
+ A Table representing 1 or more columns of text, i.e. Detail lists
+*/
+div.detail table {
+ width: 100%;
+}
+
+div.detail caption {
+ border-bottom: solid 1px #C0C0C0;
+}
+
+/*
+ Approval Form select all
+
+*/
+.selectAllButton {
+ background: transparent;
+ border:none;
+ color:blue;
+ text-decoration:underline;
+ font-weight:bold;
+ cursor:pointer;
+}
+
+
+/*
+ Begin Web Command Styling
+*/
+#console_and_options {
+ position:relative;
+}
+
+.maximized {
+ position:absolute;
+ top:0px;
+ bottom:50px;
+ left:0px;
+ right:0px;
+ z-index:1000;
+ background-color:white;
+}
+
+#console_area {
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+ background-color: black;
+ color: white;
+ font-family: "Lucida Console", Monaco, monospace;
+ overflow-y: scroll;
+ height: 300px;
+ min-width: 600px;
+ padding: 5px;
+ resize: vertical;
+}
+
+.command,.bold {
+ font-weight: bold;
+}
+
+.command:before {
+ content: "> ";
+}
+
+.response{
+ font-style: italic;
+ font-size: 150%;
+}
+
+#input_area {
+ margin-top: 10px;
+ clear: both;
+}
+
+#command_field, #submit {
+ font-size: 125%;
+ background-color: #333333;
+ color: white;
+ font-family: "Lucida Console", Monaco, monospace;
+ -webkit-border-radius: 1em;
+ -moz-border-radius: 1em;
+ border-radius: 1em;
+}
+
+#command_field {
+ width: 75%;
+ padding-left: 1em;
+}
+
+#submit {
+ background-color: #80C337;
+ padding: 0 5%;
+ float: right;
+}
+
+/*
+ Options Menu Styling for Web Command
+*/
+#options_link {
+ -webkit-border-radius: 0 0 20% 20%;
+ -moz-border-radius: 0 0 20% 20%;
+ border-radius: 0 0 20% 20%;
+ -webkit-transition: opacity 0.5s ease-in-out;
+ -moz-transition: opacity 0.5s ease-in-out;
+ -ms-transition: opacity 0.5s ease-in-out;
+ -o-transition: opacity 0.5s ease-in-out;
+ transition: opacity 0.5s ease-in-out;
+}
+
+.closed {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+
+#options_link:hover, .open {
+ opacity: 1.0;
+ filter: alpha(opacity=100);
+}
+
+#options_link, #options {
+ background: white;
+ position:absolute;
+ top:0;
+ right:2em;
+ padding:0.1em;
+}
+
+#options > img {
+ cursor: pointer;
+ float: right;
+ padding: 0.2em;
+}
+
+.selected {
+ border: 3px solid orange;
+}
+
+#options, #text_slider {
+ display:none;
+ padding:0.5em;
+ -webkit-border-radius: 0 0 0 10px;
+ -moz-border-radius: 0 0 0 10px;
+ border-radius: 0 0 0 10px;
+}
+#text_slider {
+ clear:both;
+}
+
+/*
+ Button styling for changing text size
+*/
+.change_font {
+ border-top: 1px solid #96d1f8;
+ background: #65a9d7;
+ background: -webkit-gradient(linear, left top, left bottom, from(#3e779d), to(#65a9d7));
+ background: -webkit-linear-gradient(top, #3e779d, #65a9d7);
+ background: -moz-linear-gradient(top, #3e779d, #65a9d7);
+ background: -ms-linear-gradient(top, #3e779d, #65a9d7);
+ background: -o-linear-gradient(top, #3e779d, #65a9d7);
+ padding: 0 2px;
+ -webkit-border-radius: 50%;
+ -moz-border-radius: 50%;
+ border-radius: 50%;
+ -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+ -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+ box-shadow: rgba(0,0,0,1) 0 1px 0;
+ text-shadow: rgba(0,0,0,.4) 0 1px 0;
+ color: white;
+ font-size: 14px;
+ font-family: monospace;
+ text-decoration: none;
+ vertical-align: middle;
+}
+.change_font:hover {
+ border-top-color: #28597a;
+ background: #28597a;
+ color: #ccc;
+}
+
+/*
+ Text Size Slider styling
+*/
+
+input[type=range] {
+ -webkit-appearance: none;
+ width: 60%;
+ margin: 0;
+}
+input[type=range]:focus {
+ outline: none;
+}
+input[type=range]::-webkit-slider-runnable-track {
+ width: 100%;
+ height: 4px;
+ cursor: pointer;
+ box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
+ background: #3071a9;
+ border-radius: 0.6px;
+ border: 0.5px solid #010101;
+}
+input[type=range]::-webkit-slider-thumb {
+ box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
+ border: 1px solid #000000;
+ height: 16px;
+ width: 16px;
+ border-radius: 30px;
+ background: #efffff;
+ cursor: pointer;
+ -webkit-appearance: none;
+ margin-top: -7.15px;
+}
+input[type=range]:focus::-webkit-slider-runnable-track {
+ background: #367ebd;
+}
+input[type=range]::-moz-range-track {
+ width: 100%;
+ height: 2.7px;
+ cursor: pointer;
+ box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
+ background: #3071a9;
+ border-radius: 0.6px;
+ border: 0.5px solid #010101;
+}
+input[type=range]::-moz-range-thumb {
+ box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
+ border: 1px solid #000000;
+ height: 16px;
+ width: 16px;
+ border-radius: 30px;
+ background: #efffff;
+ cursor: pointer;
+}
+input[type=range]::-ms-track {
+ width: 100%;
+ height: 2.7px;
+ cursor: pointer;
+ background: transparent;
+ border-color: transparent;
+ color: transparent;
+}
+input[type=range]::-ms-fill-lower {
+ background: #2a6495;
+ border: 0.5px solid #010101;
+ border-radius: 1.2px;
+ box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
+}
+input[type=range]::-ms-fill-upper {
+ background: #3071a9;
+ border: 0.5px solid #010101;
+ border-radius: 1.2px;
+ box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
+}
+input[type=range]::-ms-thumb {
+ box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
+ border: 1px solid #000000;
+ height: 16px;
+ width: 16px;
+ border-radius: 30px;
+ background: #efffff;
+ cursor: pointer;
+ height: 2.7px;
+}
+input[type=range]:focus::-ms-fill-lower {
+ background: #3071a9;
+}
+input[type=range]:focus::-ms-fill-upper {
+ background: #367ebd;
+}
+.expired {
+ color: red;
+ background-color: pink;
+}
+.blank_line {
+ padding: 10px;
+}
+#filterByUser input {
+ display: inline;
+}
diff --git a/authz-gui/theme/aaf5Desktop.css b/authz-gui/theme/aaf5Desktop.css
new file mode 100644
index 00000000..b4aa02f8
--- /dev/null
+++ b/authz-gui/theme/aaf5Desktop.css
@@ -0,0 +1,92 @@
+/*
+ Modifications for Desktop
+*/
+body {
+ background-size:23em 4.7em;
+}
+
+
+#breadcrumbs a:visited, #breadcrumbs a:link {
+ transition: padding .5s;
+}
+
+#breadcrumbs a:hover {
+ padding: 2px 2px 2px 30px;
+ transition: padding .5s;
+}
+
+#breadcrumbs, #inner {
+ margin: 3px;
+ width: 77%;
+ float: left;
+ min-width:500px;
+ background-color: #FFFFFF;
+
+}
+
+#breadcrumbs li {
+ box-shadow: 3px 3px 2px #888888;
+}
+
+#Pages {
+ margin: 20px;
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#147AB3', endColorstr='#ffffff',GradientType=1 ); /*linear gradient for IE 6-9*/
+}
+
+#Pages a:visited, #Pages a:link {
+ padding: 3px 40px 3px 10px;
+ transition: padding .5s;
+ margin: 6px;
+ box-shadow: 3px 3px 2px #888888;
+}
+
+#Pages a:hover {
+ padding: 4px 80px 4px 15px;
+ transition: box-shadow padding .5s;
+ box-shadow: 4px 4px 3px #888888;
+}
+
+
+#inner {
+ padding: 7px;
+ background: #FFFFFF;
+ overflow: hidden;
+}
+
+div.std, form {
+ border: solid 2px #D0D0D0;
+ border-radius: 5px;
+ box-shadow: 10px 10px 5px #888888;
+}
+
+div.detail {
+ border: solid 2px #C0C0C0;
+ border-radius: 14px;
+ box-shadow: 10px 10px 5px #888888;
+}
+
+#nav {
+ display: inline-block;
+ position: absolute;
+ right: 2%;
+ left: 81%;
+}
+
+#nav h2 {
+ color: #FF7200;
+ font-size: 1.2em;
+ font-family: Verdana,Arial,Helvetica,sans-serif;
+ font-style: italic;
+ font-weight: normal;
+
+}
+
+#nav ul {
+ font-style:italic;
+ font-size: .8em;
+ font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
+ color: #067ab4;
+ list-style-type: square;
+ margin: 0;
+ padding: 0;
+}
diff --git a/authz-gui/theme/aaf5iPhone.css b/authz-gui/theme/aaf5iPhone.css
new file mode 100644
index 00000000..c356983b
--- /dev/null
+++ b/authz-gui/theme/aaf5iPhone.css
@@ -0,0 +1,38 @@
+/*
+ Modifications for iPhone
+*/
+body {
+ zoom: 210%;
+}
+
+#breadcrumbs {
+ font-size: .9em;
+}
+
+
+div.std table {
+ margin: 0 0 20px 0;
+ zoom: 130%
+}
+
+
+div.stdform th {
+ font-size: 9px;
+}
+
+#content input {
+ font-size: 1.3em;
+}
+
+
+#Pages a {
+ font-size: 1.3em;
+ width: 75%;
+ height:35px;
+}
+
+#nav {
+ display: none;
+}
+
+
diff --git a/authz-gui/theme/aafOldIE.css b/authz-gui/theme/aafOldIE.css
new file mode 100644
index 00000000..5910c5cf
--- /dev/null
+++ b/authz-gui/theme/aafOldIE.css
@@ -0,0 +1,162 @@
+/*
+ Modifications for non-html5 IE
+*/
+body {
+ background-size:23em 4.7em;
+}
+
+
+body h1 {
+ margin: 4px auto;
+ color: #F13099;
+}
+
+#footer {
+ background-color: #FF7200;
+ color: #FFFFFF;
+ text-align:right;
+ font-size: 60%;
+ padding: 5px;
+ position:fixed;
+ bottom: 0px;
+ left: 0px;
+ right: 0px;
+}
+
+#breadcrumbs a:visited, #breadcrumbs a:link {
+ transition: padding .5s;
+}
+
+#breadcrumbs a:hover {
+ padding: 2px 2px 2px 30px;
+ transition: padding .5s;
+}
+
+#breadcrumbs, #content {
+ margin: 3px;
+}
+
+#breadcrumbs, #inner {
+ margin: 3px;
+ width: 77%;
+ float: left;
+ min-width:500px;
+ background-color: #FFFFFF;
+}
+
+
+#breadcrumbs li {
+ box-shadow: 3px 3px 2px #888888;
+}
+
+#inner {
+ padding: 10px;
+ overflow: hidden;
+}
+
+#inner form {
+ border: solid 2px #D0D0D0;
+}
+
+#inner form input[id] {
+ margin: 4px 0;
+}
+
+#inner form label {
+ margin: 4px 0;
+}
+
+#inner form label[required] {
+ color: red;
+}
+
+#inner form input[type=submit] {
+ font-size: 1.0em;
+ margin: 12px 0 0px 0;
+ color: #F13099;
+}
+
+p.preamble, p.notfound {
+ display: block;
+ margin: 30px 0px 10px 0px;
+ font: italic bold 20px/30px Georgia, serif;
+ font-size: 110%;
+ color: #0079B8;
+}
+
+
+#Pages {
+ margin: 20px;
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#147AB3', endColorstr='#ffffff',GradientType=1 ); /*linear gradient for IE 6-9*/
+}
+
+#Pages a:visited, #Pages a:link {
+ display: block;
+ padding: 3px 40px 3px 10px;
+ transition: padding .5s;
+ margin: 6px;
+ box-shadow: 3px 3px 2px #888888;
+ background-color: #98bf21;
+ text-decoration: none;
+ color: white;
+ font-weight: bold;
+}
+
+#Pages a:hover {
+ padding: 4px 80px 4px 20px;
+ transition: box-shadow padding 1s;
+ box-shadow: 4px 4px 3px #888888;
+}
+
+tr {
+ font-size: .9em;
+}
+
+tr.alt {
+ background-color: #EEF0F0;
+}
+
+#nav {
+
+ display: block;
+ position: absolute;
+ top: 175px;
+ right: 2%;
+ left: 81%;
+ z-index=1;
+ clear: both;
+}
+
+
+#nav h2 {
+ color: #FF7200;
+ font-size: 1.2em;
+ font-family: Verdana,Arial,Helvetica,sans-serif;
+ font-style: italic;
+ font-weight: normal;
+
+}
+
+#nav ul {
+ font-style:italic;
+ font-size: .8em;
+ font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
+ color: #067ab4;
+ list-style-type: square;
+ margin: 0;
+ padding: 0;
+}
+
+div.std {
+ border: solid 2px #D0D0D0;
+ border-radius: 5px;
+ box-shadow: 10px 10px 5px #888888;
+}
+
+
+div.detail {
+ border: solid 2px #C0C0C0;
+ border-radius: 14px;
+ box-shadow: 10px 10px 5px #888888;
+}
+
diff --git a/authz-gui/theme/aaf_1_0.xsd b/authz-gui/theme/aaf_1_0.xsd
new file mode 100644
index 00000000..a71e2ea1
--- /dev/null
+++ b/authz-gui/theme/aaf_1_0.xsd
@@ -0,0 +1,150 @@
+<!-- Used by AAF (ATT inc 2013) -->
+<xs:schema xmlns:aaf="urn:aaf:v1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:aaf:v1_0" elementFormDefault="qualified">
+ <xs:element name="error">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="response_data" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="bool">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="value" type="xs:boolean"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="permkey">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="type" type="xs:string"/>
+ <xs:element name="action" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="permkeys">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="keys" type="aaf:permkey" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="user">
+ <xs:sequence>
+ <xs:element name="userName" type="xs:string"/>
+ <xs:element name="roleName" type="xs:string"/>
+ <xs:element name="userType" type="xs:string"/>
+ <xs:element name="createUser" type="xs:string"/>
+ <xs:element name="createTimestamp" type="xs:string"/>
+ <xs:element name="modifyUser" type="xs:string"/>
+ <xs:element name="modifyTimestamp" type="xs:string"/>
+ <xs:element ref="aaf:roles" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="role">
+ <xs:sequence>
+ <xs:element name="userName" type="xs:string"/>
+ <xs:element name="roleName" type="xs:string"/>
+ <xs:element name="userType" type="xs:string"/>
+ <xs:element name="createUser" type="xs:string"/>
+ <xs:element name="createTimestamp" type="xs:string"/>
+ <xs:element name="modifyUser" type="xs:string"/>
+ <xs:element name="modifyTimestamp" type="xs:string"/>
+ <xs:element ref="aaf:permissions" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="roles">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="roles" type="aaf:role" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="permission">
+ <xs:complexContent>
+ <xs:extension base="aaf:permkey">
+ <xs:sequence>
+ <xs:element name="grantedRole" type="xs:string"/>
+ <xs:element name="createUser" type="xs:string"/>
+ <xs:element name="createTimestamp" type="xs:string"/>
+ <xs:element name="modifyUser" type="xs:string"/>
+ <xs:element name="modifyTimestamp" type="xs:string"/>
+ <xs:element name="grantingRole" type="xs:string"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="permissions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="permissions" type="aaf:permission" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="delg">
+ <xs:sequence>
+ <xs:element name="user" type="xs:string"/>
+ <xs:element name="delegate" type="xs:string"/>
+ <xs:element name="start" type="xs:date"/>
+ <xs:element name="end" type="xs:date"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="delgs">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="delgs" type="aaf:delg" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="cred">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="id" type="xs:string"/>
+ <xs:choice >
+ <xs:element name="password" type="xs:string" />
+ <xs:element name="cert" type = "xs:hexBinary" />
+ </xs:choice>
+ <xs:element name="start" type="xs:date" />
+ <xs:element name="end" type="xs:date" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!--
+ Approvals
+ -->
+ <xs:complexType name="approval">
+ <xs:sequence>
+ <xs:element name="user" type="xs:string"/>
+ <xs:element name="role" type="xs:string"/>
+ <xs:element name="status">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="approve"/>
+ <xs:enumeration value="reject"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="approvals">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="approvals" type="aaf:approval" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!--
+ Users
+ -->
+ <xs:element name="users">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
+
diff --git a/authz-gui/theme/aaf_2_0.xsd b/authz-gui/theme/aaf_2_0.xsd
new file mode 100644
index 00000000..95c8ff9e
--- /dev/null
+++ b/authz-gui/theme/aaf_2_0.xsd
@@ -0,0 +1,394 @@
+<!-- Used by AAF (ATT inc 2013) -->
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:aaf="urn:aaf:v2_0"
+ targetNamespace="urn:aaf:v2_0"
+ elementFormDefault="qualified">
+
+<!--
+ Note: jan 22, 2015. Deprecating the "force" element in the "Request" Structure. Do that
+ with Query Params.
+
+ Eliminate in 3.0
+ -->
+<!--
+ Errors
+ Note: This Error Structure has been made to conform to the AT&T TSS Policies
+
+
+ -->
+ <xs:element name="error">
+ <xs:complexType>
+ <xs:sequence>
+ <!--
+ Unique message identifier of the format ‘ABCnnnn’ where ‘ABC’ is
+ either ‘SVC’ for Service Exceptions or ‘POL’ for Policy Exception.
+ Exception numbers may be in the range of 0001 to 9999 where :
+ * 0001 to 0199 are reserved for common exception messages
+ * 0200 to 0999 are reserved for Parlay Web Services specification use
+ * 1000-9999 are available for exceptions
+ -->
+ <xs:element name="messageId" type="xs:string" minOccurs="1" maxOccurs="1"/>
+
+ <!--
+ Message text, with replacement
+ variables marked with %n, where n is
+ an index into the list of <variables>
+ elements, starting at 1
+ -->
+ <xs:element name="text" type="xs:string" minOccurs="1" maxOccurs="1"/>
+
+ <!--
+ List of zero or more strings that
+ represent the contents of the variables
+ used by the message text. -->
+ <xs:element name="variables" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+<!--
+ Requests
+ -->
+ <xs:complexType name="Request">
+ <xs:sequence>
+ <xs:element name="start" type="xs:dateTime" minOccurs="1" maxOccurs="1" />
+ <xs:element name="end" type="xs:date" minOccurs="1" maxOccurs="1"/>
+ <!-- Deprecated. Use Query Command
+ <xs:element name="force" type="xs:string" minOccurs="1" maxOccurs="1" default="false"/>
+ -->
+ </xs:sequence>
+ </xs:complexType>
+
+<!--
+ Permissions
+-->
+ <xs:complexType name = "pkey">
+ <xs:sequence>
+ <xs:element name="type" type="xs:string"/>
+ <xs:element name="instance" type="xs:string"/>
+ <xs:element name="action" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="permKey">
+ <xs:complexType >
+ <xs:complexContent>
+ <xs:extension base="aaf:pkey" />
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="perm">
+ <xs:complexType >
+ <xs:complexContent>
+ <xs:extension base="aaf:pkey">
+ <xs:sequence>
+ <xs:element name="roles" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- Note: feb 23, 2015. Added description field. Verify backward compatibility. JR -->
+ <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="perms">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="aaf:perm" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="permRequest">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="aaf:Request">
+ <xs:sequence>
+ <xs:element name="type" type="xs:string"/>
+ <xs:element name="instance" type="xs:string"/>
+ <xs:element name="action" type="xs:string"/>
+ <!-- Note: feb 23, 2015. Added description field. Verify backward compatibility. JR -->
+ <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+
+<!--
+ Roles
+-->
+ <xs:complexType name="rkey">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="roleKey">
+ <xs:complexType >
+ <xs:complexContent>
+ <xs:extension base="aaf:rkey" />
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="role">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="aaf:rkey">
+ <xs:sequence>
+ <xs:element name="perms" type="aaf:pkey" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- Note: feb 23, 2015. Added description field. Verify backward compatibility. JR -->
+ <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="roles">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="aaf:role" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="roleRequest">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="aaf:Request">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <!-- Note: feb 23, 2015. Added description field. Verify backward compatibility. JR -->
+ <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="userRoleRequest">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="aaf:Request">
+ <xs:sequence>
+ <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="rolePermRequest">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="aaf:Request">
+ <xs:sequence>
+ <xs:element name="perm" type="aaf:pkey" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:element name="nsRequest">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="aaf:Request">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="admin" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
+ <xs:element name="responsible" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
+ <xs:element name="scope" type="xs:int" minOccurs="0" maxOccurs="1"/>
+ <!-- Note: feb 23, 2015. Added description field. Verify backward compatibility. JR -->
+ <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name = "nss">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name = "ns" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name = "name" type = "xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name = "responsible" type = "xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name = "admin" type = "xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- Note: feb 23, 2015. Added description field. Verify backward compatibility. JR -->
+ <xs:element name = "description" type = "xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+<!--
+ Users
+-->
+ <xs:element name="users">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="user" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="id" type="xs:string" minOccurs="1" maxOccurs="1" />
+ <xs:element name="expires" type="xs:date" minOccurs="1" maxOccurs="1" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+
+<!--
+ Credentials
+-->
+ <xs:element name="credRequest">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="aaf:Request">
+ <xs:sequence>
+ <xs:element name="id" type="xs:string"/>
+ <xs:element name="type" type="xs:int" minOccurs="0" maxOccurs="1"/>
+ <xs:choice >
+ <xs:element name="password" type="xs:string" />
+ <xs:element name="entry" type="xs:string" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+<!--
+ History
+ -->
+ <xs:element name="history">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="YYYYMM" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="subject" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="target" type = "xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="action" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="memo" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+<!--
+ Approvals
+ -->
+ <xs:complexType name="approval">
+ <xs:sequence>
+ <!-- Note, id is set by system -->
+ <xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="ticket" type="xs:string"/>
+ <xs:element name="user" type="xs:string"/>
+ <xs:element name="approver" type="xs:string"/>
+ <xs:element name="type" type="xs:string"/>
+ <xs:element name="memo" type="xs:string"/>
+ <xs:element name="updated" type="xs:dateTime"/>
+ <xs:element name="status">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="approve"/>
+ <xs:enumeration value="reject"/>
+ <xs:enumeration value="pending"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="operation">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="C"/>
+ <xs:enumeration value="U"/>
+ <xs:enumeration value="D"/>
+ <xs:enumeration value="G"/>
+ <xs:enumeration value="UG"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="approvals">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="approvals" type="aaf:approval" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+<!--
+ Delegates
+-->
+ <xs:complexType name="delg">
+ <xs:sequence>
+ <xs:element name="user" type="xs:string"/>
+ <xs:element name="delegate" type="xs:string"/>
+ <xs:element name="expires" type="xs:date"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="delgRequest">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="aaf:Request">
+ <xs:sequence>
+ <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="delegate" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="delgs">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="delgs" type="aaf:delg" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- jg 3/11/2015 New for 2.0.8 -->
+ <xs:element name="api">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="route" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="meth" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="path" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="param" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="desc" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="comments" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="expected" type="xs:int" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="explicitErr" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema> \ No newline at end of file
diff --git a/authz-gui/theme/comm.js b/authz-gui/theme/comm.js
new file mode 100644
index 00000000..5a1ac4d8
--- /dev/null
+++ b/authz-gui/theme/comm.js
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+ *******************************************************************************/
+function http(meth, sURL, sInput, func) {
+ if (sInput != "") {
+ var http;
+ if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
+ http=new XMLHttpRequest();
+ } else {// code for IE6, IE5
+ http=new ActiveXObject('Microsoft.XMLHTTP');
+ }
+
+ http.onreadystatechange=function() {
+ if(http.readyState==4 && http.status == 200) {
+ func(http.responseText)
+ }
+ // Probably want Exception code too.
+ }
+
+ http.open(meth,sURL,false);
+ http.setRequestHeader('Content-Type','text/plain;charset=UTF-8');
+ http.send(sInput);
+ }
+} \ No newline at end of file
diff --git a/authz-gui/theme/common.js b/authz-gui/theme/common.js
new file mode 100644
index 00000000..e9af8fef
--- /dev/null
+++ b/authz-gui/theme/common.js
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+ *******************************************************************************/
+Object.defineProperty(Element.prototype, 'outerHeight', {
+ 'get': function(){
+ var height = this.clientHeight;
+ height += getStyle(this,'marginTop');
+ height += getStyle(this,'marginBottom');
+ height += getStyle(this,'borderTopWidth');
+ height += getStyle(this,'borderBottomWidth');
+ return height;
+ }
+});
+
+if (document.addEventListener) {
+ document.addEventListener('DOMContentLoaded', function () {
+ var height = document.querySelector("#footer").outerHeight;
+ document.querySelector("#inner").setAttribute("style",
+ "margin-bottom:" + height.toString()+ "px");
+ });
+} else {
+ window.attachEvent("onload", function () {
+ var height = document.querySelector("#footer").outerHeight;
+ document.querySelector("#inner").setAttribute("style",
+ "margin-bottom:" + height.toString()+ "px");
+ });
+}
+
+
+
+function getStyle(el, prop) {
+ var result = el.currentStyle ? el.currentStyle[prop] :
+ document.defaultView.getComputedStyle(el,"")[prop];
+ if (parseInt(result,10))
+ return parseInt(result,10);
+ else
+ return 0;
+}
+
+function divVisibility(divID) {
+ var element = document.querySelector("#"+divID);
+ if (element.style.display=="block")
+ element.style.display="none";
+ else
+ element.style.display="block";
+}
+
+function datesURL(histPage) {
+ var validated=true;
+ var yearStart = document.querySelector('#yearStart').value;
+ var yearEnd = document.querySelector('#yearEnd').value;
+ var monthStart = document.querySelector('#monthStart').value;
+ var monthEnd = document.querySelector('#monthEnd').value;
+ if (monthStart.length == 1) monthStart = 0 + monthStart;
+ if (monthEnd.length == 1) monthEnd = 0 + monthEnd;
+
+ validated &= validateYear(yearStart);
+ validated &= validateYear(yearEnd);
+ validated &= validateMonth(monthStart);
+ validated &= validateMonth(monthEnd);
+
+ if (validated) window.location=histPage+"&dates="+yearStart+monthStart+"-"+yearEnd+monthEnd;
+ else alert("Please correct your date selections");
+}
+
+function userFilter(approvalPage) {
+ var user = document.querySelector('#userTextBox').value;
+ if (user != "")
+ window.location=approvalPage+"?user="+user;
+ else
+ window.location=approvalPage;
+}
+
+function validateYear(year) {
+ var today = new Date();
+ if (year >= 1900 && year <= today.getFullYear()) return true;
+ else return false;
+}
+
+function validateMonth(month) {
+ if (month) return true;
+ else return false;
+}
+
+function alterLink(breadcrumbToFind, newTarget) {
+ var breadcrumbs = document.querySelector("#breadcrumbs").getElementsByTagName("A");
+ for (var i=0; i< breadcrumbs.length;i++) {
+ var breadcrumbHref = breadcrumbs[i].getAttribute('href');
+ if (breadcrumbHref.indexOf(breadcrumbToFind)>-1)
+ breadcrumbs[i].setAttribute('href', newTarget);
+ }
+}
+
+// clipBoardData object not cross-browser supported. Only IE it seems
+function copyToClipboard(controlId) {
+ var control = document.getElementById(controlId);
+ if (control == null) {
+ alert("ERROR - control not found - " + controlId);
+ } else {
+ var controlValue = control.href;
+ window.clipboardData.setData("text/plain", controlValue);
+ alert("Copied text to clipboard : " + controlValue);
+ }
+}
diff --git a/authz-gui/theme/console.js b/authz-gui/theme/console.js
new file mode 100644
index 00000000..e35becff
--- /dev/null
+++ b/authz-gui/theme/console.js
@@ -0,0 +1,275 @@
+/*******************************************************************************
+ * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+ *******************************************************************************/
+function getCommand() {
+ if(typeof String.prototype.trim !== 'function') {
+ String.prototype.trim = function() {
+ return this.replace(/^\s+|\s+$/g, '');
+ };
+ }
+
+ var cmds = [];
+ cmds = document.querySelector("#command_field").value.split(" ");
+ var cleanCmd = "";
+ if (document.querySelector("#details_img").getAttribute("class") == "selected")
+ cleanCmd += "set details=true ";
+ for (var i = 0; i < cmds.length;i++) {
+ var trimmed = cmds[i].trim();
+ if (trimmed != "")
+ cleanCmd += trimmed + " ";
+ }
+
+ return cleanCmd.trim();
+}
+
+function moveCommandToDiv() {
+
+ var textInput = document.querySelector("#command_field");
+ var content = document.createTextNode(textInput.value);
+ var parContent = document.createElement("p");
+ var consoleDiv = document.querySelector("#console_area");
+ var commandCount = consoleDiv.querySelectorAll(".command").length;
+ parContent.setAttribute("class", "command");
+ parContent.appendChild(content);
+ consoleDiv.appendChild(parContent);
+
+ textInput.value = "";
+}
+
+function printResponse(response) {
+ var parContent = document.createElement("p");
+ parContent.setAttribute("class", "response");
+ var preTag = document.createElement("pre");
+ parContent.appendChild(preTag);
+ var content = document.createTextNode(response);
+ preTag.appendChild(content);
+ var consoleDiv = document.querySelector("#console_area");
+ consoleDiv.appendChild(parContent);
+
+ consoleDiv.scrollTop = consoleDiv.scrollHeight;
+}
+
+function clearHistory() {
+ var consoleDiv = document.querySelector("#console_area");
+ var curr;
+ while (curr=consoleDiv.firstChild) {
+ consoleDiv.removeChild(curr);
+ }
+ document.querySelector("#command_field").value = "";
+ currentCmd = 0;
+}
+
+function buttonChangeFontSize(direction) {
+ var slider = document.querySelector("#text_size_slider");
+ var currentSize = parseInt(slider.value);
+ var newSize;
+ if (direction == "inc") {
+ newSize = currentSize + 10;
+ } else {
+ newSize = currentSize - 10;
+ }
+ if (newSize > slider.max) newSize = parseInt(slider.max);
+ if (newSize < slider.min) newSize = parseInt(slider.min);
+ slider.value = newSize;
+ changeFontSize(newSize);
+}
+
+function changeFontSize(size) {
+ var consoleDiv = document.querySelector("#console_area");
+ consoleDiv.style.fontSize = size + "%";
+}
+
+function handleDivHiding(id, img) {
+ var options_link = document.querySelector("#options_link");
+ var divHeight = toggleVisibility(document.querySelector("#"+id));
+
+ if (id == 'options') {
+ if (options_link.getAttribute("class") == "open") {
+ changeImg(document.querySelector("#options_img"), "../../theme/options_down.png");
+ options_link.setAttribute("class", "closed");
+ } else {
+ changeImg(document.querySelector("#options_img"), "../../theme/options_up.png");
+ options_link.setAttribute("class", "open");
+ }
+ moveToggleImg(options_link, divHeight);
+ } else { //id=text_slider
+ selectOption(img,divHeight);
+ }
+
+}
+
+function selectOption(img, divHeight) {
+ var options_link = document.querySelector("#options_link");
+ var anySelected;
+ if (img.getAttribute("class") != "selected") {
+ anySelected = document.querySelectorAll(".selected").length>0;
+ if (anySelected == false)
+ divHeight += 4;
+ img.setAttribute("class", "selected");
+ } else {
+ img.setAttribute("class", "");
+ anySelected = document.querySelectorAll(".selected").length>0;
+ if (anySelected == false)
+ divHeight -= 4;
+
+ }
+
+ moveToggleImg(options_link, divHeight);
+}
+
+function toggleVisibility(element) {
+ var divHeight;
+ if(element.style.display == 'block') {
+ divHeight = 0 - element.clientHeight;
+ element.style.display = 'none';
+ } else {
+ element.style.display = 'block';
+ divHeight = element.clientHeight;
+ }
+ return divHeight;
+}
+
+function moveToggleImg(element, height) {
+ var curTop = (element.style.top == "" ? 0 : parseInt(element.style.top));
+ element.style.top = curTop + height;
+}
+
+function changeImg(img, loc) {
+ img.src = loc;
+}
+
+var currentCmd = 0;
+function keyPressed() {
+ document.querySelector("#command_field").onkeyup=function(e) {
+ if (!e) e = window.event;
+ var keyCode = e.which || e.keyCode;
+ if (keyCode == 38 || keyCode == 40 || keyCode == 13 || keyCode == 27) {
+ var cmdHistoryList = document.querySelectorAll(".command");
+ switch (keyCode) {
+ case 13:
+ // press enter
+
+ if (getCommand().toLowerCase()=="clear") {
+ clearHistory();
+ } else {
+ currentCmd = cmdHistoryList.length + 1;
+ document.querySelector("#submit").click();
+ }
+ break;
+
+ case 27:
+ //press escape
+ currentCmd = cmdHistoryList.length;
+ document.querySelector("#command_field").value = "";
+ break;
+
+ case 38:
+ // press arrow up
+ if (currentCmd != 0)
+ currentCmd -= 1;
+ if (cmdHistoryList.length != 0)
+ document.querySelector("#command_field").value = cmdHistoryList[currentCmd].innerHTML;
+ break;
+ case 40:
+ // press arrow down
+ var cmdText = "";
+ currentCmd = (currentCmd == cmdHistoryList.length) ? currentCmd : currentCmd + 1;
+ if (currentCmd < cmdHistoryList.length)
+ cmdText = cmdHistoryList[currentCmd].innerHTML;
+
+ document.querySelector("#command_field").value = cmdText;
+ break;
+ }
+ }
+ }
+}
+
+function saveToFile() {
+ var commands = document.querySelectorAll(".command");
+ var responses = document.querySelectorAll(".response");
+ var textToWrite = "";
+ for (var i = 0; i < commands.length; i++) {
+ textToWrite += "> " + commands[i].innerHTML + "\r\n";
+ textToWrite += prettyResponse(responses[i].firstChild.innerHTML);
+ }
+
+ var ie = navigator.userAgent.match(/MSIE\s([\d.]+)/);
+ var ie11 = navigator.userAgent.match(/Trident\/7.0/) && navigator.userAgent.match(/rv:11/);
+ var ieVer=(ie ? ie[1] : (ie11 ? 11 : -1));
+
+// if (ie && ieVer<10) {
+// console.log("No blobs on IE ver<10");
+// return;
+// }
+
+ var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
+ var fileName = "AAFcommands.log";
+
+ if (ieVer >= 10) {
+// window.navigator.msSaveBlob(textFileAsBlob, fileName);
+ window.navigator.msSaveOrOpenBlob(textFileAsBlob, fileName);
+ } else {
+ var downloadLink = document.createElement("a");
+ downloadLink.download = fileName;
+ downloadLink.innerHTML = "Download File";
+ if (window.webkitURL != null) {
+ // Chrome allows the link to be clicked
+ // without actually adding it to the DOM.
+ downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
+ } else {
+ // Firefox requires the link to be added to the DOM
+ // before it can be clicked.
+ downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
+ downloadLink.onclick = destroyClickedElement;
+ downloadLink.style.display = "none";
+ document.body.appendChild(downloadLink);
+ }
+
+ downloadLink.click();
+ }
+}
+
+function prettyResponse(response) {
+ var lines = response.split('\n');
+ var cleanResponse = "";
+ for (var i=0; i < lines.length; i++) {
+ cleanResponse += lines[i] + "\r\n";
+ }
+ cleanResponse = cleanResponse.replace(/(&lt;)/g,"<").replace(/(&gt;)/g,">");
+ return cleanResponse;
+}
+
+function destroyClickedElement(event){
+ document.body.removeChild(event.target);
+}
+
+function fakePlaceholder() {
+ document.querySelector("#command_field").setAttribute("value", "Type your AAFCLI commands here");
+}
+
+function maximizeConsole(img) {
+ var footer = document.querySelector("#footer");
+ var console_area = document.querySelector("#console_area");
+ var content = document.querySelector("#content");
+ var input_area = document.querySelector("#input_area");
+ var help_msg = document.querySelector("#help_msg");
+ var console_space = document.documentElement.clientHeight;
+ console_space -= input_area.outerHeight;
+ console_space -= help_msg.outerHeight;
+ var height = getStyle(console_area,'paddingTop') + getStyle(console_area,'paddingBottom');
+ console_space -= height;
+
+
+ if (content.getAttribute("class") != "maximized") {
+ content.setAttribute("class", "maximized");
+ footer.style.display="none";
+ console_area.style.resize="none";
+ console_area.style.height=console_space.toString()+"px";
+ } else {
+ content.removeAttribute("class");
+ footer.style.display="";
+ console_area.style.resize="vertical";
+ console_area.style.height="300px";
+ }
+ selectOption(img,0);
+}
diff --git a/authz-gui/theme/favicon.ico b/authz-gui/theme/favicon.ico
new file mode 100644
index 00000000..3aea2722
--- /dev/null
+++ b/authz-gui/theme/favicon.ico
Binary files differ
diff --git a/authz-gui/theme/options_down.png b/authz-gui/theme/options_down.png
new file mode 100644
index 00000000..a20e8269
--- /dev/null
+++ b/authz-gui/theme/options_down.png
Binary files differ
diff --git a/authz-gui/theme/options_up.png b/authz-gui/theme/options_up.png
new file mode 100644
index 00000000..7414dab5
--- /dev/null
+++ b/authz-gui/theme/options_up.png
Binary files differ
diff --git a/authz-gui/theme/t_bubbles.jpg b/authz-gui/theme/t_bubbles.jpg
new file mode 100644
index 00000000..ecff55ea
--- /dev/null
+++ b/authz-gui/theme/t_bubbles.jpg
Binary files differ