keycloak-aplcache

more refactoring done

2/7/2014 4:56:34 PM

Changes

Details

diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/index.html b/admin-ui/src/main/resources/META-INF/resources/admin/index.html
index 60b31c1..bbd60a0 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/index.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/index.html
@@ -14,6 +14,7 @@
     <!-- Page styles -->
     <link rel="stylesheet" href="/auth/admin-ui/css/admin-console.css">
     <link rel="stylesheet" href="/auth/admin-ui/css/tables.css">
+    <link rel="stylesheet" href="/auth/admin-ui/css/sprites.css">
     <link href="lib/select2-3.4.1/select2.css" rel="stylesheet">
 
     <script src="lib/jquery/jquery-1.10.2.js" type="text/javascript"></script>
@@ -26,15 +27,14 @@
     <script src="lib/jquery/jquery.idletimer.js" type="text/javascript"></script>
     <script src="lib/jquery/jquery.idletimeout.js" type="text/javascript"></script>
     <script src="lib/angular/select2.js" type="text/javascript"></script>
-    <script src="lib/fileupload/angular-file-upload.min.js"></script>     <!--
+    <script src="lib/fileupload/angular-file-upload.min.js"></script>
+    <!--
     <script src="/auth/admin-ui/bootstrap-3.0.0-wip/js/dropdown.js"></script>
     <script src="/auth/admin-ui/bootstrap-3.0.0-wip/js/tooltip.js"></script>
-    -->
-    <script src="/auth/admin-ui/js/bootstrap-tokenfield.js"></script>
-    <!--
-    <script src="/auth/admin-ui/bootstrap/js/bootstrap.js"></script>
-    -->
 
+    <script src="/auth/admin-ui/js/bootstrap-tokenfield.js"></script>
+   <script src="/auth/admin-ui/bootstrap/js/bootstrap.js"></script>
+   -->
     <script src="js/app.js"></script>
     <script src="js/controllers/realm.js"></script>
     <script src="js/controllers/applications.js"></script>
@@ -50,7 +50,7 @@
     </style>
 </head>
 
-<body class="admin-console" data-ng-controller="GlobalCtrl" ng-cloak>
+<body class="admin-console" data-ng-controller="GlobalCtrl" data-ng-cloak>
 <div id="idletimeout">
     You will be logged off in <strong><span></span> seconds</strong> due to inactivity.
     <a id="idletimeout-resume" href="#">Click here to continue using this web page</a>.
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
index 0e586d2..85d7fe7 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
@@ -765,7 +765,7 @@ module.directive('kcSelect', function ($compile, Notifications) {
             kcModel: '=',
             id: "="
         },
-        restrict: 'E',
+        restrict: 'EA',
         replace: true,
         templateUrl: 'templates/kc-select.html',
         link: function(scope, element, attr) {
@@ -776,6 +776,30 @@ module.directive('kcSelect', function ($compile, Notifications) {
     }
 });
 
+module.directive('kcNavigation', function ($compile, Notifications) {
+    return {
+        scope: {
+            kcCurrent: '@',
+            kcRealm: '=',
+            kcSocial: '@'
+        },
+        restrict: 'E',
+        replace: true,
+        templateUrl: 'templates/kc-navigation.html',
+
+        compile: function(element, attrs){
+            if (!attrs.kcSocial) {
+                attrs.kcSocial = false;
+            }
+        }
+         /*
+        controller: function($scope){
+            $scope.kcSocial = $scope.kcSocial || false;
+        }  */
+    }
+});
+
+
 /*
 *  Used to select the element (invoke $(elem).select()) on specified action list.
 *  Usages kc-select-action="click mouseover"
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js
index aca3e5e..af02eab 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js
@@ -3,6 +3,8 @@ module.controller('GlobalCtrl', function($scope, $http, Auth, Current, $location
         Notifications.success("test");
     };
 
+    $scope.vilko = "tralala";
+
     $scope.auth = Auth;
     $http.get('/auth/rest/admin/whoami').success(function(data, status) {
         Auth.user = data;
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
index 8bc491a..71e8ead 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
@@ -1,15 +1,6 @@
 <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
-    <ul class="nav nav-tabs nav-tabs-pf">
-        <li><a href="#/realms/{{realm.realm}}">General</a></li>
-        <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
-        <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
-        <li class="active"><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
-        <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
-        <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
-        <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
-    </ul>
+    <data-kc-navigation data-kc-current="credentials" data-kc-realm="realm.realm"></data-kc-navigation>
 
     <div id="content">
         <ol class="breadcrumb">
@@ -79,9 +70,16 @@
                                 <input ng-model="p.value" type="number" placeholder="No value assigned" class="input-small" min="1" max="50">
                             </td>
                             <td>
-                                <div class="action-div"><i class="icon-question" popover="{{policyMessages[name]}}"
-                                                           popover-placement="left" popover-trigger="mouseenter"></i></div>
-                                <div class="action-div"><i class="icon-remove" ng-click="removePolicy($index)"></i></div>
+                                <div class="action-div">
+                                    <i class="kc-icon-question"
+                                       popover="{{policyMessages[name]}}"
+                                       popover-placement="left"
+                                       popover-trigger="mouseenter"></i>
+                                </div>
+                                <div class="action-div">
+                                    <i class="kc-icon-remove"
+                                       ng-click="removePolicy($index)"></i>
+                                </div>
                             </td>
                         </tr>
                         </tbody>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
index 84a291b..ff0f904 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
@@ -1,15 +1,6 @@
 <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
-    <ul class="nav nav-tabs nav-tabs-pf">
-        <li><a href="#/realms/{{realm.realm}}">General</a></li>
-        <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
-        <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
-        <li class="active"><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
-        <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
-        <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
-        <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
-    </ul>
+    <data-kc-navigation data-kc-current="defRoles" data-kc-realm="realm.realm"></data-kc-navigation>
     <div id="content">
         <ol class="breadcrumb">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
@@ -32,10 +23,10 @@
                         </div>
                         <div class="middle-buttons">
                             <button class="kc-button" type="submit" ng-click="addRealmDefaultRole()" tooltip="Move right" tooltip-placement="right">
-                                <span class="glyphicon glyphicon-chevron-right"><span>Move right</span></span>
+                                <span class="kc-icon-arrow-right"><span>Move right</span></span>
                             </button>
                             <button class="kc-button" type="submit" ng-click="deleteRealmDefaultRole()" tooltip="Move left" tooltip-placement="right">
-                                <span class="glyphicon glyphicon-chevron-left"><span>Move left</span></span>
+                                <span class="kc-icon-arrow-left"><span>Move left</span></span>
                             </button>
                         </div>
                         <div class="select-title">
@@ -74,10 +65,10 @@
                         </div>
                         <div class="middle-buttons">
                             <button class="kc-button" type="submit" ng-click="addAppDefaultRole()" tooltip="Move right" tooltip-placement="right">
-                                <span class="glyphicon glyphicon-chevron-right"><span>Move right</span></span>
+                                <span class="kc-icon-arrow-right"><span>Move right</span></span>
                             </button>
                             <button class="kc-button" type="submit" ng-click="rmAppDefaultRole()" tooltip="Move left" tooltip-placement="right">
-                                <span class="glyphicon glyphicon-chevron-left"><span>Move left</span></span>
+                                <span class="kc-icon-arrow-left"><span>Move left</span></span>
                             </button>
                         </div>
                         <div class="select-title">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
index f2b7eb1..c776eca 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
@@ -1,15 +1,6 @@
 <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
-    <ul class="nav nav-tabs nav-tabs-pf">
-        <li class="active"><a href="#/realms/{{realm.realm}}">General</a></li>
-        <li data-ng-show="social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
-        <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
-        <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
-        <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
-        <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
-    </ul>
+    <kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation>
     <div id="content">
         <ol class="breadcrumb" data-ng-hide="createRealm">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
@@ -38,37 +29,37 @@
             </fieldset>
             <fieldset>
                 <legend uncollapsed><span class="text">Login Options</span></legend>
-                <div class="form-group clearfix block">
+                <div class="form-group">
                     <label for="social" class="col-sm-2 control-label">Social login</label>
                     <div class="col-sm-4">
                         <input ng-model="realm.social" name="social" id="social" onoffswitch />
                     </div>
                 </div>
-                <div class="form-group clearfix block" data-ng-show="realm.social">
+                <div class="form-group" data-ng-show="realm.social">
                     <label for="updateProfileOnInitialSocialLogin" class="col-sm-2 control-label">Update profile on first social login</label>
                     <div class="col-sm-4">
                         <input ng-model="realm.updateProfileOnInitialSocialLogin" name="updateProfileOnInitialSocialLogin" id="updateProfileOnInitialSocialLogin" onoffswitch />
                     </div>
                 </div>
-                <div class="form-group clearfix block">
+                <div class="form-group">
                     <label for="registrationAllowed" class="col-sm-2 control-label">User registration</label>
                     <div class="col-sm-4">
                         <input ng-model="realm.registrationAllowed" name="registrationAllowed" id="registrationAllowed" onoffswitch />
                     </div>
                 </div>
-                <div class="form-group clearfix block">
+                <div class="form-group">
                     <label for="resetPasswordAllowed" class="col-sm-2 control-label">Reset password</label>
                     <div class="col-sm-4">
                         <input ng-model="realm.resetPasswordAllowed" name="resetPasswordAllowed" id="resetPasswordAllowed" onoffswitch />
                     </div>
                 </div>
-                <div class="form-group clearfix block">
+                <div class="form-group">
                     <label for="verifyEmail" class="col-sm-2 control-label">Verify email</label>
                     <div class="col-sm-4">
                         <input ng-model="realm.verifyEmail" name="verifyEmail" id="verifyEmail" onoffswitch />
                     </div>
                 </div>
-                <div class="form-group clearfix block">
+                <div class="form-group">
                     <label for="requireSsl" class="col-sm-2 control-label">Require SSL</label>
                     <div class="col-sm-4">
                         <input ng-model="realm.requireSsl" name="requireSsl" id="requireSsl" onoffswitch />
@@ -77,16 +68,22 @@
             </fieldset>
             <fieldset>
                 <legend uncollapsed><span class="text">Optional Settings</span></legend>
-                <div class="form-group row">
+                <div class="form-group">
                     <label class="col-sm-2 control-label" for="loginTheme">Login Theme</label>
                     <div class="col-sm-4">
-                        <kc-select id="loginTheme" data-kc-model="realm.accountTheme" ng-model="realm.loginTheme" data-kc-options="serverInfo.themes.login"/>
+                        <select kc-select id="loginTheme"
+                                data-kc-model="realm.loginTheme"
+                                data-kc-options="serverInfo.themes.login">
+                        </select>
                     </div>
                 </div>
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="accountTheme">Account Theme</label>
                     <div class="col-sm-4">
-                        <kc-select id="accountTheme" data-kc-model="realm.accountTheme" ng-model="realm.accountTheme" data-kc-options="serverInfo.themes.account"/>
+                        <select kc-select id="accountTheme"
+                                data-kc-model="realm.accountTheme"
+                                data-kc-options="serverInfo.themes.account">
+                        </select>
                     </div>
                 </div>
             </fieldset>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-keys.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-keys.html
index 84f564e..9f7edb9 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-keys.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-keys.html
@@ -1,15 +1,6 @@
 <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
-    <ul class="nav nav-tabs nav-tabs-pf">
-        <li><a href="#/realms/{{realm.realm}}">General</a></li>
-        <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
-        <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
-        <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
-        <li class="active"><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
-        <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
-    </ul>
+    <data-kc-navigation data-kc-current="keys" data-kc-realm="realm.realm"></data-kc-navigation>
     <div id="content">
         <ol class="breadcrumb">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
@@ -17,17 +8,18 @@
             <li class="active">Keys</li>
         </ol>
         <h2><span>{{realm.realm}}</span> Keys</h2>
-        <form name="realmForm" novalidate>
+        <form class="form-horizontal" name="realmForm" novalidate>
             <fieldset class="border-top">
                 <div class="form-group">
-                    <label for="publicKey">Public key</label>
+                    <label class="col-sm-2 control-label" for="publicKey">Public key</label>
 
-                    <div class="controls">
-                        <textarea type="text" id="publicKey" name="publicKey" class="xlarge" rows="5"
+                    <div class="form-group">
+                        <textarea type="text" id="publicKey" name="publicKey" class="col-sm-9" rows="5"
                                   kc-select-action="click" readonly>{{realm.publicKey}}</textarea>
                     </div>
                 </div>
             </fieldset>
+            <br/>
             <div class="pull-right form-actions">
                 <button class="btn btn-primary btn-lg" type="submit" data-ng-click="generate()">Generate new keys</button>
             </div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-menu.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-menu.html
index 679e2b9..81c9fae 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-menu.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-menu.html
@@ -1,6 +1,6 @@
 <ul data-ng-hide="createRealm">
     <li data-ng-class="((!path[2] || path[1] == 'role' || path[2] == 'roles' || path[2] == 'token-settings' ||
-    path[2] == 'social-settings' || path[2] == 'required-credentials' || path[2] == 'registration-settings' ||
+    path[2] == 'social-settings' || path[2] == 'required-credentials' || path[2] == 'default-roles' || path[2] == 'registration-settings' ||
     path[2] == 'keys-settings' || path[2] == 'smtp-settings') && path[3] != 'applications') && 'active'"><a href="#/realms/{{realm.realm}}">Settings</a></li>
     <li data-ng-class="(path[2] == 'users' || path[1] == 'user') && 'active'"><a href="#/realms/{{realm.realm}}/users">Users</a>
     </li>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-smtp.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-smtp.html
index f892072..e55e4c5 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-smtp.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-smtp.html
@@ -1,15 +1,6 @@
 <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
-    <ul class="nav nav-tabs nav-tabs-pf">
-        <li><a href="#/realms/{{realm.realm}}">General</a></li>
-        <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
-        <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
-        <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
-        <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
-        <li class="active"><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
-    </ul>
+    <data-kc-navigation data-kc-current="email" data-kc-realm="realm.realm"></data-kc-navigation>
     <div id="content">
         <ol class="breadcrumb">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
@@ -78,7 +69,6 @@
                 <button data-kc-reset data-ng-show="changed">Clear changes</button>
                 <button data-kc-save data-ng-show="changed">Save</button>
             </div>
-
         </form>
     </div>
 </div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
index 1ba462f..bf2d16a 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
@@ -1,15 +1,6 @@
 <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
-    <ul class="nav nav-tabs nav-tabs-pf">
-        <li><a href="#/realms/{{realm.realm}}">General</a></li>
-        <li class="active" data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
-        <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
-        <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
-        <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
-        <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
-    </ul>
+    <data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="social"></data-kc-navigation>
     <div id="content">
         <ol class="breadcrumb">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
@@ -18,7 +9,6 @@
         </ol>
         <h2><span>{{realm.realm}}</span> Social Providers Settings</h2>
 
-
         <div class="feedback info inline">
             <p><strong>Social Callback URL:</strong> {{callbackUrl}}</p>
         </div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-tokens.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-tokens.html
index 586c23d..c4fea07 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-tokens.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-tokens.html
@@ -1,15 +1,6 @@
 <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
-    <ul class="nav nav-tabs nav-tabs-pf">
-        <li><a href="#/realms/{{realm.realm}}">General</a></li>
-        <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
-        <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
-        <li class="active"><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
-        <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
-        <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
-    </ul>
+    <data-kc-navigation data-kc-current="token" data-kc-realm="realm.realm"></data-kc-navigation>
     <div id="content">
         <ol class="breadcrumb">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
index 5340501..73012e1 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
@@ -1,15 +1,6 @@
 <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
-    <ul class="nav nav-tabs nav-tabs-pf">
-        <li><a href="#/realms/{{realm.realm}}">General</a></li>
-        <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
-        <li class="active"><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
-        <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
-        <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
-        <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
-        <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
-    </ul>
+    <data-kc-navigation data-kc-current="roles" data-kc-realm="realm.realm"></data-kc-navigation>
     <div id="content">
         <ol class="breadcrumb">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/templates/kc-navigation.html b/admin-ui/src/main/resources/META-INF/resources/admin/templates/kc-navigation.html
new file mode 100644
index 0000000..cfb83b2
--- /dev/null
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/templates/kc-navigation.html
@@ -0,0 +1,10 @@
+<ul class="nav nav-tabs nav-tabs-pf">
+    <li ng-class="{active: kcCurrent == 'general'}"><a href="#/realms/{{kcRealm}}">General</a></li>
+    <li ng-class="{active: kcCurrent == 'social'}" data-ng-show="kcSocial"><a href="#/realms/{{kcRealm}}/social-settings">Social</a></li>
+    <li ng-class="{active: kcCurrent == 'roles'}"><a href="#/realms/{{kcRealm}}/roles">Roles</a></li>
+    <li ng-class="{active: kcCurrent == 'defRoles'}"><a href="#/realms/{{kcRealm}}/default-roles">Default Roles</a></li>
+    <li ng-class="{active: kcCurrent == 'credentials'}"><a href="#/realms/{{kcRealm}}/required-credentials">Credentials</a></li>
+    <li ng-class="{active: kcCurrent == 'token'}"><a href="#/realms/{{kcRealm}}/token-settings">Token</a></li>
+    <li ng-class="{active: kcCurrent == 'keys'}"><a href="#/realms/{{kcRealm}}/keys-settings">Keys</a></li>
+    <li ng-class="{active: kcCurrent == 'email'}"><a href="#/realms/{{kcRealm}}/smtp-settings">Email</a></li>
+</ul>
diff --git a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
index 220ddba..afe641b 100644
--- a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
+++ b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
@@ -401,7 +401,7 @@ legend .kc-icon-collapse {
 
 /* Left-Rigth selector form */
 .changing-selectors.application {
-    padding-left: 12em;
+    --padding-left: 12em;
 }
 .changing-selectors .select-title {
     display: inline-block;
diff --git a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/img/sprites.png b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/img/sprites.png
new file mode 100755
index 0000000..1a37e34
Binary files /dev/null and b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/img/sprites.png differ
diff --git a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/img/sprite-table-nav.png b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/img/sprite-table-nav.png
new file mode 100644
index 0000000..250f8e3
Binary files /dev/null and b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/img/sprite-table-nav.png differ
diff --git a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/sprites.css b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/sprites.css
new file mode 100755
index 0000000..9bc1eab
--- /dev/null
+++ b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/sprites.css
@@ -0,0 +1,1347 @@
+[class*="kc-icon-"] {
+	display: inline-block;
+	width: 14px;
+	height: 14px;
+	background-image: url(img/sprites.png); /* Modified by Gabriel */
+	background-repeat: no-repeat;
+	text-indent: -99999em;
+	margin-right: 0.5em;
+	vertical-align: text-top;
+}
+.kc-icon-home {
+	background-position: 0 0;
+	width: 18px;
+}
+.kc-icon-home2 {
+	background-position: -32px 0;
+	width: 14px;
+}
+.kc-icon-home3 {
+	background-position: -60px 0;
+	width: 14px;
+}
+.kc-icon-office {
+	background-position: -88px 0;
+	width: 14px;
+}
+.kc-icon-newspaper {
+	background-position: -116px 0;
+	width: 14px;
+}
+.kc-icon-pencil {
+	background-position: -144px 0;
+	width: 14px;
+}
+.kc-icon-pencil2 {
+	background-position: -172px 0;
+	width: 14px;
+}
+.kc-icon-quill {
+	background-position: -200px 0;
+	width: 15px;
+}
+.kc-icon-pen {
+	background-position: -229px 0;
+	width: 14px;
+}
+.kc-icon-blog {
+	background-position: -257px 0;
+	width: 16px;
+}
+.kc-icon-droplet {
+	background-position: -287px 0;
+	width: 16px;
+}
+.kc-icon-paint-format {
+	background-position: -317px 0;
+	width: 16px;
+}
+.kc-icon-image {
+	background-position: -347px 0;
+	width: 16px;
+}
+.kc-icon-image2 {
+	background-position: -377px 0;
+	width: 16px;
+}
+.kc-icon-images {
+	background-position: 0 -28px;
+}
+.kc-icon-camera {
+	background-position: -32px -28px;
+}
+.kc-icon-music {
+	background-position: -60px -28px;
+}
+.kc-icon-headphones {
+	background-position: -88px -28px;
+}
+.kc-icon-play {
+	background-position: -116px -28px;
+}
+.kc-icon-film {
+	background-position: -144px -28px;
+}
+.kc-icon-camera2 {
+	background-position: -172px -28px;
+}
+.kc-icon-dice {
+	background-position: -200px -28px;
+}
+.kc-icon-pacman {
+	background-position: -229px -28px;
+}
+.kc-icon-spades {
+	background-position: -257px -28px;
+}
+.kc-icon-clubs {
+	background-position: -287px -28px;
+}
+.kc-icon-diamonds {
+	background-position: -317px -28px;
+}
+.kc-icon-pawn {
+	background-position: -347px -28px;
+}
+.kc-icon-bullhorn {
+	background-position: -377px -28px;
+}
+.kc-icon-connection {
+	background-position: 0 -56px;
+}
+.kc-icon-podcast {
+	background-position: -32px -56px;
+}
+.kc-icon-feed {
+	background-position: -60px -56px;
+}
+.kc-icon-book {
+	background-position: -88px -56px;
+}
+.kc-icon-books {
+	background-position: -116px -56px;
+}
+.kc-icon-library {
+	background-position: -144px -56px;
+}
+.kc-icon-file {
+	background-position: -172px -56px;
+}
+.kc-icon-profile {
+	background-position: -200px -56px;
+}
+.kc-icon-file2 {
+	background-position: -229px -56px;
+}
+.kc-icon-file3 {
+	background-position: -257px -56px;
+}
+.kc-icon-file4 {
+	background-position: -287px -56px;
+}
+.kc-icon-copy {
+	background-position: -317px -56px;
+}
+.kc-icon-copy2 {
+	background-position: -347px -56px;
+}
+.kc-icon-copy3 {
+	background-position: -377px -56px;
+}
+.kc-icon-paste {
+	background-position: 0 -84px;
+}
+.kc-icon-paste2 {
+	background-position: -32px -84px;
+}
+.kc-icon-paste3 {
+	background-position: -60px -84px;
+}
+.kc-icon-stack {
+	background-position: -88px -84px;
+}
+.kc-icon-folder {
+	background-position: -116px -84px;
+}
+.kc-icon-folder-open {
+	background-position: -144px -84px;
+}
+.kc-icon-tag {
+	background-position: -172px -84px;
+}
+.kc-icon-tags {
+	background-position: -200px -84px;
+}
+.kc-icon-barcode {
+	background-position: -229px -84px;
+}
+.kc-icon-qrcode {
+	background-position: -257px -84px;
+}
+.kc-icon-ticket {
+	background-position: -287px -84px;
+}
+.kc-icon-cart {
+	background-position: -317px -84px;
+}
+.kc-icon-cart2 {
+	background-position: -347px -84px;
+}
+.kc-icon-cart3 {
+	background-position: -377px -84px;
+}
+.kc-icon-coin {
+	background-position: 0 -112px;
+}
+.kc-icon-credit {
+	background-position: -32px -112px;
+}
+.kc-icon-calculate {
+	background-position: -60px -112px;
+}
+.kc-icon-support {
+	background-position: -88px -112px;
+}
+.kc-icon-phone {
+	background-position: -116px -112px;
+}
+.kc-icon-phone-hang-up {
+	background-position: -144px -112px;
+}
+.kc-icon-address-book {
+	background-position: -172px -112px;
+}
+.kc-icon-notebook {
+	background-position: -200px -112px;
+}
+.kc-icon-envelop {
+	background-position: -229px -112px;
+}
+.kc-icon-pushpin {
+	background-position: -257px -112px;
+}
+.kc-icon-location {
+	background-position: -287px -112px;
+}
+.kc-icon-location2 {
+	background-position: -317px -112px;
+}
+.kc-icon-compass {
+	background-position: -347px -112px;
+}
+.kc-icon-map {
+	background-position: -377px -112px;
+}
+.kc-icon-map2 {
+	background-position: 0 -140px;
+}
+.kc-icon-history {
+	background-position: -32px -140px;
+}
+.kc-icon-clock {
+	background-position: -60px -140px;
+}
+.kc-icon-clock2 {
+	background-position: -88px -140px;
+}
+.kc-icon-alarm {
+	background-position: -116px -140px;
+}
+.kc-icon-alarm2 {
+	background-position: -144px -140px;
+}
+.kc-icon-bell {
+	background-position: -172px -140px;
+}
+.kc-icon-stopwatch {
+	background-position: -200px -140px;
+}
+.kc-icon-calendar {
+	background-position: -229px -140px;
+}
+.kc-icon-calendar2 {
+	background-position: -257px -140px;
+}
+.kc-icon-print {
+	background-position: -287px -140px;
+}
+.kc-icon-keyboard {
+	background-position: -317px -140px;
+}
+.kc-icon-screen {
+	background-position: -347px -140px;
+}
+.kc-icon-laptop {
+	background-position: -377px -140px;
+}
+.kc-icon-mobile {
+	background-position: 0 -168px;
+}
+.kc-icon-mobile2 {
+	background-position: -32px -168px;
+}
+.kc-icon-tablet {
+	background-position: -60px -168px;
+}
+.kc-icon-tv {
+	background-position: -88px -168px;
+}
+.kc-icon-cabinet {
+	background-position: -116px -168px;
+}
+.kc-icon-drawer {
+	background-position: -144px -168px;
+}
+.kc-icon-drawer2 {
+	background-position: -172px -168px;
+}
+.kc-icon-drawer3 {
+	background-position: -200px -168px;
+}
+.kc-icon-box-add {
+	background-position: -229px -168px;
+}
+.kc-icon-box-remove {
+	background-position: -257px -168px;
+}
+.kc-icon-download {
+	background-position: -287px -168px;
+}
+.kc-icon-upload {
+	background-position: -317px -168px;
+}
+.kc-icon-disk {
+	background-position: -347px -168px;
+}
+.kc-icon-storage {
+	background-position: -377px -168px;
+}
+.kc-icon-undo {
+	background-position: 0 -196px;
+}
+.kc-icon-redo {
+	background-position: -32px -196px;
+}
+.kc-icon-flip {
+	background-position: -60px -196px;
+}
+.kc-icon-flip2 {
+	background-position: -88px -196px;
+}
+.kc-icon-undo2 {
+	background-position: -116px -196px;
+}
+.kc-icon-redo2 {
+	background-position: -144px -196px;
+}
+.kc-icon-forward {
+	background-position: -172px -196px;
+}
+.kc-icon-reply {
+	background-position: -200px -196px;
+}
+.kc-icon-bubble {
+	background-position: -229px -196px;
+}
+.kc-icon-bubbles {
+	background-position: -257px -196px;
+}
+.kc-icon-bubbles2 {
+	background-position: -287px -196px;
+}
+.kc-icon-bubble2 {
+	background-position: -317px -196px;
+}
+.kc-icon-bubbles3 {
+	background-position: -347px -196px;
+}
+.kc-icon-bubbles4 {
+	background-position: -377px -196px;
+}
+.kc-icon-user {
+	background-position: 0 -224px;
+}
+.kc-icon-users {
+	background-position: -32px -224px;
+}
+.kc-icon-user2 {
+	background-position: -60px -224px;
+}
+.kc-icon-users2 {
+	background-position: -88px -224px;
+}
+.kc-icon-user3 {
+	background-position: -116px -224px;
+}
+.kc-icon-user4 {
+	background-position: -144px -224px;
+}
+.kc-icon-quotes-left {
+	background-position: -172px -224px;
+}
+.kc-icon-busy {
+	background-position: -200px -224px;
+}
+.kc-icon-spinner {
+	background-position: -229px -224px;
+}
+.kc-icon-spinner2 {
+	background-position: -257px -224px;
+}
+.kc-icon-spinner3 {
+	background-position: -287px -224px;
+}
+.kc-icon-spinner4 {
+	background-position: -317px -224px;
+}
+.kc-icon-spinner5 {
+	background-position: -347px -224px;
+}
+.kc-icon-spinner6 {
+	background-position: -377px -224px;
+}
+.kc-icon-binoculars {
+	background-position: 0 -252px;
+}
+.kc-icon-search {
+	background-position: -32px -252px;
+}
+.kc-icon-zoom in {
+	background-position: -60px -252px;
+}
+.kc-icon-zoom out {
+	background-position: -88px -252px;
+}
+.kc-icon-expand {
+	background-position: -116px -252px;
+}
+.kc-icon-contract {
+	background-position: -144px -252px;
+}
+.kc-icon-expand2 {
+	background-position: -172px -252px;
+}
+.kc-icon-contract2 {
+	background-position: -200px -252px;
+}
+.kc-icon-key {
+	background-position: -229px -252px;
+}
+.kc-icon-key2 {
+	background-position: -257px -252px;
+}
+.kc-icon-lock {
+	background-position: -287px -252px;
+}
+.kc-icon-lock2 {
+	background-position: -317px -252px;
+}
+.kc-icon-unlocked {
+	background-position: -347px -252px;
+}
+.kc-icon-wrench {
+	background-position: -377px -252px;
+}
+.kc-icon-settings {
+	background-position: 0 -280px;
+}
+.kc-icon-equalizer {
+	background-position: -32px -280px;
+}
+.kc-icon-cog {
+	background-position: -60px -280px;
+}
+.kc-icon-cogs {
+	background-position: -88px -280px;
+}
+.kc-icon-cog2 {
+	background-position: -116px -280px;
+}
+.kc-icon-hammer {
+	background-position: -144px -280px;
+}
+.kc-icon-wand {
+	background-position: -172px -280px;
+}
+.kc-icon-aid {
+	background-position: -200px -280px;
+}
+.kc-icon-bug {
+	background-position: -229px -280px;
+}
+.kc-icon-pie {
+	background-position: -257px -280px;
+}
+.kc-icon-stats {
+	background-position: -287px -280px;
+}
+.kc-icon-bars {
+	background-position: -317px -280px;
+}
+.kc-icon-bars2 {
+	background-position: -347px -280px;
+}
+.kc-icon-gift {
+	background-position: -377px -280px;
+}
+.kc-icon-trophy {
+	background-position: 0 -308px;
+}
+.kc-icon-glass {
+	background-position: -32px -308px;
+}
+.kc-icon-mug {
+	background-position: -60px -308px;
+}
+.kc-icon-food {
+	background-position: -88px -308px;
+}
+.kc-icon-leaf {
+	background-position: -116px -308px;
+}
+.kc-icon-rocket {
+	background-position: -144px -308px;
+}
+.kc-icon-meter {
+	background-position: -172px -308px;
+}
+.kc-icon-meter2 {
+	background-position: -200px -308px;
+}
+.kc-icon-dashboard {
+	background-position: -229px -308px;
+}
+.kc-icon-hammer2 {
+	background-position: -257px -308px;
+}
+.kc-icon-fire {
+	background-position: -287px -308px;
+}
+.kc-icon-lab {
+	background-position: -317px -308px;
+}
+.kc-icon-magnet {
+	background-position: -347px -308px;
+}
+.kc-icon-remove {
+	background-position: -377px -308px;
+}
+.kc-icon-remove2 {
+	background-position: 0 -336px;
+}
+.kc-icon-briefcase {
+	background-position: -32px -336px;
+}
+.kc-icon-airplane {
+	background-position: -60px -336px;
+}
+.kc-icon-truck {
+	background-position: -88px -336px;
+}
+.kc-icon-road {
+	background-position: -116px -336px;
+}
+.kc-icon-accessibility {
+	background-position: -144px -336px;
+}
+.kc-icon-target {
+	background-position: -172px -336px;
+}
+.kc-icon-shield {
+	background-position: -200px -336px;
+}
+.kc-icon-lightning {
+	background-position: -229px -336px;
+}
+.kc-icon-switch {
+	background-position: -257px -336px;
+}
+.kc-icon-power cord {
+	background-position: -287px -336px;
+}
+.kc-icon-signup {
+	background-position: -317px -336px;
+}
+.kc-icon-list {
+	background-position: -347px -336px;
+}
+.kc-icon-list2 {
+	background-position: -377px -336px;
+}
+.kc-icon-numbered-list {
+	background-position: 0 -364px;
+}
+.kc-icon-menu {
+	background-position: -32px -364px;
+}
+.kc-icon-menu2 {
+	background-position: -60px -364px;
+}
+.kc-icon-tree {
+	background-position: -88px -364px;
+}
+.kc-icon-cloud {
+	background-position: -116px -364px;
+}
+.kc-icon-cloud-download {
+	background-position: -144px -364px;
+}
+.kc-icon-cloud-upload {
+	background-position: -172px -364px;
+}
+.kc-icon-download2 {
+	background-position: -200px -364px;
+}
+.kc-icon-upload2 {
+	background-position: -229px -364px;
+}
+.kc-icon-download3 {
+	background-position: -257px -364px;
+}
+.kc-icon-upload3 {
+	background-position: -287px -364px;
+}
+.kc-icon-globe {
+	background-position: -317px -364px;
+}
+.kc-icon-earth {
+	background-position: -347px -364px;
+}
+.kc-icon-link {
+	background-position: -377px -364px;
+}
+.kc-icon-flag {
+	background-position: 0 -392px;
+}
+.kc-icon-attachment {
+	background-position: -32px -392px;
+}
+.kc-icon-eye {
+	background-position: -60px -392px;
+}
+.kc-icon-eye-blocked {
+	background-position: -88px -392px;
+}
+.kc-icon-eye2 {
+	background-position: -116px -392px;
+}
+.kc-icon-bookmark {
+	background-position: -144px -392px;
+}
+.kc-icon-bookmarks {
+	background-position: -172px -392px;
+}
+.kc-icon-brightness-medium {
+	background-position: -200px -392px;
+}
+.kc-icon-brightness-contrast {
+	background-position: -229px -392px;
+}
+.kc-icon-contrast {
+	background-position: -257px -392px;
+}
+.kc-icon-star {
+	background-position: -287px -392px;
+}
+.kc-icon-star2 {
+	background-position: -317px -392px;
+}
+.kc-icon-star3 {
+	background-position: -347px -392px;
+}
+.kc-icon-heart {
+	background-position: -377px -392px;
+}
+.kc-icon-heart2 {
+	background-position: 0 -420px;
+}
+.kc-icon-heart-broken {
+	background-position: -32px -420px;
+}
+.kc-icon-thumbs-up {
+	background-position: -60px -420px;
+}
+.kc-icon-thumbs-up2 {
+	background-position: -88px -420px;
+}
+.kc-icon-happy {
+	background-position: -116px -420px;
+}
+.kc-icon-happy2 {
+	background-position: -144px -420px;
+}
+.kc-icon-smiley {
+	background-position: -172px -420px;
+}
+.kc-icon-smiley2 {
+	background-position: -200px -420px;
+}
+.kc-icon-tongue {
+	background-position: -229px -420px;
+}
+.kc-icon-tongue2 {
+	background-position: -257px -420px;
+}
+.kc-icon-sad {
+	background-position: -287px -420px;
+}
+.kc-icon-sad2 {
+	background-position: -317px -420px;
+}
+.kc-icon-wink {
+	background-position: -347px -420px;
+}
+.kc-icon-wink2 {
+	background-position: -377px -420px;
+}
+.kc-icon-grin {
+	background-position: 0 -448px;
+}
+.kc-icon-grin2 {
+	background-position: -32px -448px;
+}
+.kc-icon-cool {
+	background-position: -60px -448px;
+}
+.kc-icon-cool2 {
+	background-position: -88px -448px;
+}
+.kc-icon-angry {
+	background-position: -116px -448px;
+}
+.kc-icon-angry2 {
+	background-position: -144px -448px;
+}
+.kc-icon-evil {
+	background-position: -172px -448px;
+}
+.kc-icon-evil2 {
+	background-position: -200px -448px;
+}
+.kc-icon-shocked {
+	background-position: -229px -448px;
+}
+.kc-icon-shocked2 {
+	background-position: -257px -448px;
+}
+.kc-icon-confused {
+	background-position: -287px -448px;
+}
+.kc-icon-confused2 {
+	background-position: -317px -448px;
+}
+.kc-icon-neutral {
+	background-position: -347px -448px;
+}
+.kc-icon-neutral2 {
+	background-position: -377px -448px;
+}
+.kc-icon-wondering {
+	background-position: 0 -476px;
+}
+.kc-icon-wondering2 {
+	background-position: -32px -476px;
+}
+.kc-icon-point-up {
+	background-position: -60px -476px;
+}
+.kc-icon-point-right {
+	background-position: -88px -476px;
+}
+.kc-icon-point-down {
+	background-position: -116px -476px;
+}
+.kc-icon-point-left {
+	background-position: -144px -476px;
+}
+.kc-icon-warning {
+	background-position: -172px -476px;
+}
+.kc-icon-notification {
+	background-position: -200px -476px;
+}
+.kc-icon-question {
+	background-position: -229px -476px;
+}
+.kc-icon-info {
+	background-position: -257px -476px;
+}
+.kc-icon-info2 {
+	background-position: -287px -476px;
+}
+.kc-icon-blocked {
+	background-position: -317px -476px;
+}
+.kc-icon-cancel-circle {
+	background-position: -347px -476px;
+}
+.kc-icon-checkmark-circle {
+	background-position: -377px -476px;
+}
+.kc-icon-spam {
+	background-position: 0 -504px;
+}
+.kc-icon-close {
+	background-position: -32px -504px;
+}
+.kc-icon-checkmark {
+	background-position: -60px -504px;
+}
+.kc-icon-checkmark2 {
+	background-position: -88px -504px;
+}
+.kc-icon-spell-check {
+	background-position: -116px -504px;
+}
+.kc-icon-minus {
+	background-position: -144px -504px;
+}
+.kc-icon-plus {
+	background-position: -172px -504px;
+}
+.kc-icon-enter {
+	background-position: -200px -504px;
+}
+.kc-icon-exit {
+	background-position: -229px -504px;
+}
+.kc-icon-play2 {
+	background-position: -257px -504px;
+}
+.kc-icon-pause {
+	background-position: -287px -504px;
+}
+.kc-icon-stop {
+	background-position: -317px -504px;
+}
+.kc-icon-backward {
+	background-position: -347px -504px;
+}
+.kc-icon-forward2 {
+	background-position: -377px -504px;
+}
+.kc-icon-play3 {
+	background-position: 0 -532px;
+}
+.kc-icon-pause2 {
+	background-position: -32px -532px;
+}
+.kc-icon-stop2 {
+	background-position: -60px -532px;
+}
+.kc-icon-backward2 {
+	background-position: -88px -532px;
+}
+.kc-icon-forward3 {
+	background-position: -116px -532px;
+}
+.kc-icon-first {
+	background-position: -144px -532px;
+}
+.kc-icon-last {
+	background-position: -172px -532px;
+}
+.kc-icon-previous {
+	background-position: -200px -532px;
+}
+.kc-icon-next {
+	background-position: -229px -532px;
+}
+.kc-icon-eject {
+	background-position: -257px -532px;
+}
+.kc-icon-volume-high {
+	background-position: -287px -532px;
+}
+.kc-icon-volume-medium {
+	background-position: -317px -532px;
+}
+.kc-icon-volume-low {
+	background-position: -347px -532px;
+}
+.kc-icon-volume-mute {
+	background-position: -377px -532px;
+}
+.kc-icon-volume-mute2 {
+	background-position: 0 -560px;
+}
+.kc-icon-volume-increase {
+	background-position: -32px -560px;
+}
+.kc-icon-volume-decrease {
+	background-position: -60px -560px;
+}
+.kc-icon-loop {
+	background-position: -88px -560px;
+}
+.kc-icon-loop2 {
+	background-position: -116px -560px;
+}
+.kc-icon-loop3 {
+	background-position: -144px -560px;
+}
+.kc-icon-shuffle {
+	background-position: -172px -560px;
+}
+.kc-icon-arrow-up-left {
+	background-position: -200px -560px;
+}
+.kc-icon-arrow-up {
+	background-position: -229px -560px;
+}
+.kc-icon-arrow-up-right {
+	background-position: -257px -560px;
+}
+.kc-icon-arrow-right {
+	background-position: -287px -560px;
+}
+.kc-icon-arrow-down-right {
+	background-position: -317px -560px;
+}
+.kc-icon-arrow-down {
+	background-position: -347px -560px;
+}
+.kc-icon-arrow-down-left {
+	background-position: -377px -560px;
+}
+.kc-icon-arrow-left {
+	background-position: 0 -588px;
+}
+.kc-icon-arrow-up-left2 {
+	background-position: -32px -588px;
+}
+.kc-icon-arrow-up2 {
+	background-position: -60px -588px;
+}
+.kc-icon-arrow-up-right2 {
+	background-position: -88px -588px;
+}
+.kc-icon-arrow-right2 {
+	background-position: -116px -588px;
+}
+.kc-icon-arrow-down-right2 {
+	background-position: -144px -588px;
+}
+.kc-icon-arrow-down2 {
+	background-position: -172px -588px;
+}
+.kc-icon-arrow-down-left2 {
+	background-position: -200px -588px;
+}
+.kc-icon-arrow-left2 {
+	background-position: -229px -588px;
+}
+.kc-icon-arrow-up-left3 {
+	background-position: -257px -588px;
+}
+.kc-icon-arrow-up3 {
+	background-position: -287px -588px;
+}
+.kc-icon-arrow-up-right3 {
+	background-position: -317px -588px;
+}
+.kc-icon-arrow-right3 {
+	background-position: -347px -588px;
+}
+.kc-icon-arrow-down-right3 {
+	background-position: -377px -588px;
+}
+.kc-icon-arrow-down3 {
+	background-position: 0 -616px;
+}
+.kc-icon-arrow-down-left3 {
+	background-position: -32px -616px;
+}
+.kc-icon-arrow-left3 {
+	background-position: -60px -616px;
+}
+.kc-icon-tab {
+	background-position: -88px -616px;
+}
+.kc-icon-checkbox-checked {
+	background-position: -116px -616px;
+}
+.kc-icon-checkbox-unchecked {
+	background-position: -144px -616px;
+}
+.kc-icon-checkbox-partial {
+	background-position: -172px -616px;
+}
+.kc-icon-radio-checked {
+	background-position: -200px -616px;
+}
+.kc-icon-radio-unchecked {
+	background-position: -229px -616px;
+}
+.kc-icon-crop {
+	background-position: -257px -616px;
+}
+.kc-icon-scissors {
+	background-position: -287px -616px;
+}
+.kc-icon-filter {
+	background-position: -317px -616px;
+}
+.kc-icon-filter2 {
+	background-position: -347px -616px;
+}
+.kc-icon-font {
+	background-position: -377px -616px;
+}
+.kc-icon-text-height {
+	background-position: 0 -644px;
+}
+.kc-icon-text-width {
+	background-position: -32px -644px;
+}
+.kc-icon-bold {
+	background-position: -60px -644px;
+}
+.kc-icon-underline {
+	background-position: -88px -644px;
+}
+.kc-icon-italic {
+	background-position: -116px -644px;
+}
+.kc-icon-strikethrough {
+	background-position: -144px -644px;
+}
+.kc-icon-omega {
+	background-position: -172px -644px;
+}
+.kc-icon-sigma {
+	background-position: -200px -644px;
+}
+.kc-icon-table {
+	background-position: -229px -644px;
+}
+.kc-icon-table2 {
+	background-position: -257px -644px;
+}
+.kc-icon-insert-template {
+	background-position: -287px -644px;
+}
+.kc-icon-pilcrow {
+	background-position: -317px -644px;
+}
+.kc-icon-left to right {
+	background-position: -347px -644px;
+}
+.kc-icon-right to left {
+	background-position: -377px -644px;
+}
+.kc-icon-paragraph-left {
+	background-position: 0 -672px;
+}
+.kc-icon-paragraph-center {
+	background-position: -32px -672px;
+}
+.kc-icon-paragraph-right {
+	background-position: -60px -672px;
+}
+.kc-icon-paragraph-justify {
+	background-position: -88px -672px;
+}
+.kc-icon-paragraph-left2 {
+	background-position: -116px -672px;
+}
+.kc-icon-paragraph-center2 {
+	background-position: -144px -672px;
+}
+.kc-icon-paragraph-right2 {
+	background-position: -172px -672px;
+}
+.kc-icon-paragraph-justify2 {
+	background-position: -200px -672px;
+}
+.kc-icon-indent-increase {
+	background-position: -229px -672px;
+}
+.kc-icon-indent-decrease {
+	background-position: -257px -672px;
+}
+.kc-icon-new tab {
+	background-position: -287px -672px;
+}
+.kc-icon-embed {
+	background-position: -317px -672px;
+}
+.kc-icon-code {
+	background-position: -347px -672px;
+}
+.kc-icon-console {
+	background-position: -377px -672px;
+}
+.kc-icon-share {
+	background-position: 0 -700px;
+}
+.kc-icon-mail {
+	background-position: -32px -700px;
+}
+.kc-icon-mail2 {
+	background-position: -60px -700px;
+}
+.kc-icon-mail3 {
+	background-position: -88px -700px;
+}
+.kc-icon-mail4 {
+	background-position: -116px -700px;
+}
+.kc-icon-google {
+	background-position: -144px -700px;
+}
+.kc-icon-google plus {
+	background-position: -172px -700px;
+}
+.kc-icon-google plus2 {
+	background-position: -200px -700px;
+}
+.kc-icon-google plus3 {
+	background-position: -229px -700px;
+}
+.kc-icon-google plus4 {
+	background-position: -257px -700px;
+}
+.kc-icon-google-drive {
+	background-position: -287px -700px;
+}
+.kc-icon-facebook {
+	background-position: -317px -700px;
+}
+.kc-icon-facebook2 {
+	background-position: -347px -700px;
+}
+.kc-icon-facebook3 {
+	background-position: -377px -700px;
+}
+.kc-icon-instagram {
+	background-position: 0 -728px;
+}
+.kc-icon-twitter {
+	background-position: -32px -728px;
+}
+.kc-icon-twitter2 {
+	background-position: -60px -728px;
+}
+.kc-icon-twitter3 {
+	background-position: -88px -728px;
+}
+.kc-icon-feed2 {
+	background-position: -116px -728px;
+}
+.kc-icon-feed3 {
+	background-position: -144px -728px;
+}
+.kc-icon-feed4 {
+	background-position: -172px -728px;
+}
+.kc-icon-youtube {
+	background-position: -200px -728px;
+}
+.kc-icon-youtube2 {
+	background-position: -229px -728px;
+}
+.kc-icon-vimeo {
+	background-position: -257px -728px;
+}
+.kc-icon-vimeo2 {
+	background-position: -287px -728px;
+}
+.kc-icon-vimeo3 {
+	background-position: -317px -728px;
+}
+.kc-icon-lanyrd {
+	background-position: -347px -728px;
+}
+.kc-icon-flickr {
+	background-position: -377px -728px;
+}
+.kc-icon-flickr2 {
+	background-position: 0 -756px;
+}
+.kc-icon-flickr3 {
+	background-position: -32px -756px;
+}
+.kc-icon-flickr4 {
+	background-position: -60px -756px;
+}
+.kc-icon-picassa {
+	background-position: -88px -756px;
+}
+.kc-icon-picassa2 {
+	background-position: -116px -756px;
+}
+.kc-icon-dribbble {
+	background-position: -144px -756px;
+}
+.kc-icon-dribbble2 {
+	background-position: -172px -756px;
+}
+.kc-icon-dribbble3 {
+	background-position: -200px -756px;
+}
+.kc-icon-forrst {
+	background-position: -229px -756px;
+}
+.kc-icon-forrst2 {
+	background-position: -257px -756px;
+}
+.kc-icon-deviantart {
+	background-position: -287px -756px;
+}
+.kc-icon-deviantart2 {
+	background-position: -317px -756px;
+}
+.kc-icon-steam {
+	background-position: -347px -756px;
+}
+.kc-icon-steam2 {
+	background-position: -377px -756px;
+}
+.kc-icon-github {
+	background-position: 0 -784px;
+}
+.kc-icon-github2 {
+	background-position: -32px -784px;
+}
+.kc-icon-github3 {
+	background-position: -60px -784px;
+}
+.kc-icon-github4 {
+	background-position: -88px -784px;
+}
+.kc-icon-github5 {
+	background-position: -116px -784px;
+}
+.kc-icon-wordpress {
+	background-position: -144px -784px;
+}
+.kc-icon-wordpress2 {
+	background-position: -172px -784px;
+}
+.kc-icon-joomla {
+	background-position: -200px -784px;
+}
+.kc-icon-blogger {
+	background-position: -229px -784px;
+}
+.kc-icon-blogger2 {
+	background-position: -257px -784px;
+}
+.kc-icon-tumblr {
+	background-position: -287px -784px;
+}
+.kc-icon-tumblr2 {
+	background-position: -317px -784px;
+}
+.kc-icon-yahoo {
+	background-position: -347px -784px;
+}
+.kc-icon-tux {
+	background-position: -377px -784px;
+}
+.kc-icon-apple {
+	background-position: 0 -812px;
+}
+.kc-icon-finder {
+	background-position: -32px -812px;
+}
+.kc-icon-android {
+	background-position: -60px -812px;
+}
+.kc-icon-windows {
+	background-position: -88px -812px;
+}
+.kc-icon-windows8 {
+	background-position: -116px -812px;
+}
+.kc-icon-soundcloud {
+	background-position: -144px -812px;
+}
+.kc-icon-soundcloud2 {
+	background-position: -172px -812px;
+}
+.kc-icon-skype {
+	background-position: -200px -812px;
+}
+.kc-icon-reddit {
+	background-position: -229px -812px;
+}
+.kc-icon-linkedin {
+	background-position: -257px -812px;
+}
+.kc-icon-lastfm {
+	background-position: -287px -812px;
+}
+.kc-icon-lastfm2 {
+	background-position: -317px -812px;
+}
+.kc-icon-delicious {
+	background-position: -347px -812px;
+}
+.kc-icon-stumbleupon {
+	background-position: -377px -812px;
+}
+.kc-icon-stumbleupon2 {
+	background-position: 0 -840px;
+}
+.kc-icon-stackoverflow {
+	background-position: -32px -840px;
+}
+.kc-icon-pinterest {
+	background-position: -60px -840px;
+}
+.kc-icon-pinterest2 {
+	background-position: -88px -840px;
+}
+.kc-icon-xing {
+	background-position: -116px -840px;
+}
+.kc-icon-xing2 {
+	background-position: -144px -840px;
+}
+.kc-icon-flattr {
+	background-position: -172px -840px;
+}
+.kc-icon-yelp {
+	background-position: -200px -840px;
+}
+.kc-icon-libreoffice {
+	background-position: -229px -840px;
+}
+.kc-icon-file-pdf {
+	background-position: -257px -840px;
+}
+.kc-icon-file-openoffice {
+	background-position: -287px -840px;
+}
+.kc-icon-file-word {
+	background-position: -317px -840px;
+}
+.kc-icon-file-excel {
+	background-position: -347px -840px;
+}
+.kc-icon-file-zip {
+	background-position: -377px -840px;
+}
+.kc-icon-css3 {
+	background-position: 0 -868px;
+}
+.kc-icon-chrome {
+	background-position: -32px -868px;
+}
+.kc-icon-firefox {
+	background-position: -60px -868px;
+}
+.kc-icon-IE {
+	background-position: -88px -868px;
+}
+.kc-icon-opera {
+	background-position: -116px -868px;
+}
+.kc-icon-safari {
+	background-position: -144px -868px;
+}
+.kc-icon-IcoMoon {
+	background-position: -172px -868px;
+}