Merge branch 'themes' of https://github.com/M2Ys4U/KiwiIRC into M2Ys4U-themes
authorDarren <darren@darrenwhitlen.com>
Thu, 16 Jan 2014 11:18:21 +0000 (11:18 +0000)
committerDarren <darren@darrenwhitlen.com>
Thu, 16 Jan 2014 11:18:21 +0000 (11:18 +0000)
Conflicts:
client/assets/css/style.css
client/src/applets/settings.js
client/src/index.html.tmpl
server/httphandler.js

1  2 
client/assets/css/style.css
client/assets/themes/basic/style.css
client/assets/themes/cli/style.css
client/assets/themes/mini/style.css
client/assets/themes/relaxed/style.css
client/src/applets/settings.js
client/src/index.html.tmpl
client/src/models/application.js
client/src/views/application.js
config.example.js
server/httphandler.js

Simple merge
index 0000000000000000000000000000000000000000,9eed0f458e99c413479b01c073bb022b4063c017..64e2e8a954840eb0077c17f6fcdfeb37b1e19d75
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,286 +1,306 @@@
 -    background: url(../../img/background-light.png) left top repeat-x #E3E3E3;
+ #kiwi {
 -    
++    background: url(../img/background-light.png) left top repeat-x #E3E3E3;
+     color: #555555;
+ }
+ #kiwi,
+ #kiwi input,
+ #kiwi button,
+ #kiwi textarea {
+     font-family:Arial, Helvetica, sans-serif;
+     font-size:14px; line-height:1.4em;
+ }
+ #kiwi button, #kiwi input { padding: 3px 7px; }
+ #kiwi input, #kiwi textarea {
+     box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5),0 1px 0px rgba(255, 255, 255, 0.3);
+     border: none;
+     border-radius: 3px;
+ }
++#kiwi button {
++    border-radius: 2px;
++    border: none;
++    background: #8ab746;
++    cursor: pointer;
++    color: #1b1b1b;
++}
++#kiwi button:disabled { color: #464646; background:#9cc164; }
++
+ #kiwi .toolbar {
+     background-color:#1B1B1B; font-size:0.9em;
+ }
+ #kiwi .controlbox { background-color:#1B1B1B; }
+ #kiwi .memberlists_resize_handle {
+     /*display:none; width:0;*/
+ }
+ #kiwi .toolbar .panellist li {
+     line-height: 1.4em;
+     vertical-align: middle;
 -#kiwi .controlbox .nickchange input { padding:0.3em 0.5em; }
 -#kiwi .controlbox .nickchange button { padding:0.5em; }
++
+     border-radius:5px;
+     -moz-border-radius:5px;
+     -webkit-border-radius:5px;
+     -khtml-border-radius:5px;
+     border: 1px solid #333;
+     background-color: #eee;
+ }
+ #kiwi .toolbar .tabs { margin-right:0 !important; }
+ #kiwi .toolbar .panellist .alert_highlight { font-weight:bold; color:red; }
+ #kiwi .toolbar .panellist .alert_activity { font-weight:normal; color:green; }
+ #kiwi .toolbar .panellist .alert_action { font-weight:normal; color:green; }
+ #kiwi .toolbar .panellist .active { padding-right:25px; border-top:2px solid #df6b26; border-bottom:none; }
+ #kiwi .toolbar .panellist li .part {}
+ #kiwi .toolbar .panellist li .part:before { content:"[x]"; }
+ #kiwi .toolbar .panellist li.server span { padding-left: 5px; }
+ #kiwi.connected .toolbar .panellist li.server:before { content: "\f0ec"; color:#3F9532; }
+ #kiwi .toolbar .panellist li.server:before { content: "\f06a"; color:#900; font-size:1.5em; line-height:1em; vertical-align:middle; }
+ /* Tab texts are within a span */
+ #kiwi .toolbar .panellist li span  { line-height:20px; vertical-align:middle; display:inline-block; }
+ #kiwi .toolbar .panellist li .activity { display:inline; margin-left:0.5em; font-style:italic; font-size:0.8em; }
+ #kiwi .toolbar .panellist li .activity:before { content:"("; }
+ #kiwi .toolbar .panellist li .activity:after { content:")"; }
+ #kiwi .status_message {
+     background: #FEEFB3; color: #9F6000;
+     border-bottom: 1px solid;
+     padding: 0.9em;
+     text-align: center; font-size:1.1em;
+ }
+ #kiwi .status_message.err { color:#D8000C; background:#FFBABA; }
+ #kiwi .messages {  }
+ #kiwi .messages.active { }
+ #kiwi .messages a { text-decoration:underline; }
+ #kiwi .messages .msg { border: none; padding: 2px 5px; }
+ #kiwi .messages .msg > div { font-family: Consolas, "Lucida Console", monospace; font-size:0.9em; }
+ #kiwi .messages .msg .time { display:none; margin-right:1em; margin-left:2px; color:gray; }
+ #kiwi .messages .msg .nick { display:inline; margin-right:1em; }
+ #kiwi .messages .msg .nick:before { content:"<"; }
+ #kiwi .messages .msg .nick:after { content:">"; }
+ #kiwi .messages .msg .text { white-space:pre-wrap; word-wrap:break-word; color:#1e1e1e; }
+ #kiwi .messages .msg.action .nick,
+ #kiwi .messages .msg.static .nick,
+ #kiwi .messages .msg.topic .nick { display:none; }
+ #kiwi .messages .msg.action .text { color:#009900; font-style:italic; }
+ #kiwi .messages .msg.action.join { color:#009900; }
+ #kiwi .messages .msg.action.part .text { color:#900; }
+ #kiwi .messages .msg.action.quit .text { color:#900; }
+ #kiwi .messages .msg.action.kick .text { color:#900; }
+ #kiwi .messages .msg.motd { border:none; }
+ /*#kiwi .messages .msg.motd .nick { display:none; }*/
+ #kiwi .messages .msg.motd .text { color:#666; }
+ #kiwi .messages .msg.whois .nick { font-weight:normal; }
+ #kiwi .messages .msg.whois .text { padding-left:1em; border-left:1px dashed #999; }
+ #kiwi .messages .msg.error .text {
+     border:1px solid #A33F3F; background-color:#D28A8A;
+     padding:0.5em; margin-top:1em; margin-bottom:1em; margin-right:2em;
+ }
+ #kiwi.timestamps .messages .msg .time { display:inline; }
+ #kiwi.timestamps .messages .msg .text { }
+ #kiwi .messages .msg.global_nick_highlight,
+ #kiwi .messages .msg.highlight { background:#D9D9D9; }
+ /* Narrow styling (window width < 400px) */
+ #kiwi.narrow .messages .msg .nick { width: auto; }
+ #kiwi.narrow .messages .msg .text { margin-left: 1em; border:none; }
+ #kiwi.narrow .messages .msg.action .text { margin-left: 1em; }
+ #kiwi .messages .msg .media { margin-left:0.5em; }
+ #kiwi .messages .msg .media a { text-decoration:none; }
+ #kiwi .messages .msg .media .media_close { font-size:0.9em; }
+ #kiwi .messages .msg .media .media_content { margin:10px 0 0 2em; overflow:hidden; }
+ #kiwi .messages .msg .media .media_content img { padding:3px; border:1px solid gray; }
+ #kiwi .messages .msg .media .media_content > .content {
+     background: white;
+     overflow: hidden;
+     padding: 10px;
+     border: #DDD 1px solid;
+     border-top-color: #EEE;
+     border-bottom-color: #BBB;
+     -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+     -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.15);
+     box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+     border-radius: 5px;
+     float: left;
+ }
+ #kiwi .messages .msg .media.twitter .media_content > .content {
+     background: transparent;
+     border:none;
+     overflow: hidden;
+     box-shadow: none;
+     padding: 0;
+ }
+ #kiwi .messages .msg .media.reddit .thumbnail_nsfw {
+     display: inline-block;
+     float: left;
+ }
+ #kiwi .messages .msg .media.reddit .thumbnail { float:left; margin-right: 0.5em; }
+ #kiwi .memberlists {
+     background-color: #DADADA;
+     border-left: 1px dashed #8A8A8A;
+ }
+ #kiwi .memberlists ul { list-style: none; margin-left:2px; }
+ #kiwi .memberlists ul.active { }
+ #kiwi .memberlists ul li { padding:0 2px; }
+ #kiwi .memberlists ul li:hover {}
+ #kiwi .memberlists ul li a.nick { display:block; color:black; }
+ #kiwi .userbox { margin:0 1em 5px 1em; padding-bottom:0.7em; font-size:.9em; }
+ #kiwi .userbox a { display:block; text-decoration:none; margin-bottom:2px; }
+ #kiwi .userbox a i { font-size:1.1em; margin-right:5px; }
+ #kiwi .controlbox .input {
+     background:#fff; margin:3px;
+     height:1.7em;
+ }
+ #kiwi .controlbox .input .nick {
+     text-align: right;
+     width: 11em;
+     left: 0px;
+     position: absolute;
+     padding: 2px;
+     overflow: hidden;
+ }
+ #kiwi .controlbox .input .nick:after { content:">"; margin-left:3px; top:2px; }
+ #kiwi .controlbox .input .nick a { text-decoration:none; color:black; }
+ #kiwi .controlbox .input .input_wrap {
+     position:absolute;
+     right:3px; left:12em;
+     height:1.7em;
+ }
+ #kiwi .controlbox .input .inp {
+     line-height:1.7em;
+     border: medium none;
+     box-shadow: none;
+     border-radius: 0;
+     resize:none;
+     overflow:hidden;
+     position:relative;
+     height:100%; width:100%;
+     display: block;
+     outline: none;
+ }
+ #kiwi .controlbox .nickchange {
+     padding:10px; left: 0px;
+     background: #1B1B1B; color:#eeeeee;
+ }
 -#kiwi .server_select button { float:right; padding:3px 7px; }
++#kiwi .controlbox .nickchange input { padding:0.3em 0.5em; margin-left: 0.5em; }
++#kiwi .controlbox .nickchange button { padding:0.5em; margin: 0 0.5em 0 1em; }
+ #kiwi .toolbar .topic {  }
+ #kiwi .toolbar .topic div {
+     top:2; bottom:2px; left:0; width:100%;
+     padding: 0.2em 1em;
+     text-align: center;
+     box-shadow: none;
+     border-radius: 0;
+     background-color:#FFF;
+     height: 1.5em;
+     overflow: hidden;
+     outline: none;
+ }
+ #kiwi .toolbar .topic:hover div {
+     min-height:1.5em;
+     white-space:pre-wrap; word-wrap:break-word;
+     overflow:visible;
+     background-color:#FFF;
+     z-index: 1;
+     height:auto; bottom:auto;
+     border-bottom: 1px dotted #1B1B1B;
+ }
+ #kiwi .toolbar .app_tools { padding-left:10px; color:#D4D4D4; }
+ #kiwi .toolbar .app_tools ul li {
+     font-size:26px;
+     -webkit-transition: all .3s ease;
+     -moz-transition: all .3s ease;
+     transition: all .3s ease;
+     margin-left:10px;
+ }
+ #kiwi .toolbar .app_tools ul li:hover { color:#88C56A; }
+ #kiwi .toolbar .app_tools img { }
+ /* The server select dialog */
+ #kiwi .server_select { margin-left:auto; margin-right:auto; }
+ #kiwi .server_select a { text-decoration: none; }
+ #kiwi .server_select .more { display: none; width:270px; margin:0 auto; }
+ #kiwi .server_select table tr td { padding:5px; }
++#kiwi .server_select button {
++    /*padding: 10px 25px;*/
++    padding: 0.5em 1em;
++    font-size: 1.1em;
++    width: 196px;
++    margin: 20px auto;
++    display: block;
++}
+ #kiwi .server_select input { padding:3px 7px; width:150px; }
+ #kiwi .server_select label { }
+ #kiwi .server_select br { clear:both; }
+ #kiwi .server_select .basic input, .server_select .basic button { font-size:1em; padding:0.5em 1em; }
+ #kiwi .server_select .basic input { width:170px; }
+ #kiwi .server_select .basic label { font-size:1.3em; margin-top:4px; }
+ #kiwi .server_select .basic tr.have_pass { font-size:0.8em; }
+ #kiwi .server_select .basic tr.channel td { padding-top:1em; }
+ #kiwi .server_select .basic { border-bottom: 1px dashed gray; margin-bottom:1em; }
+ #kiwi .server_select .basic .show_more { display: block; width:110px; margin:10px 0 0 0; font-size:0.8em; }
+ #kiwi .server_select.single_server .basic { border:none; }
+ #kiwi .server_select .status { text-align: center; font-weight: bold; padding:1em; }
+ #kiwi .server_select .status.ok { }
+ #kiwi .server_select .status.error {
+     border:1px solid #A33F3F; background-color:#D28A8A;
+     padding:0.5em; margin-top:1em; margin-bottom:1em; margin-right:2em;
+ }
+ #kiwi .server_select .kiwi_logo { margin-top:30px; text-align:center; display:block; }
+ #kiwi .server_select .kiwi_logo h1 {
+     font-size:14px;
+     line-height:48px; vertical-align: middle;
+     color: #555555;
+ }
+ #kiwi .server_select .kiwi_logo img { display:inline; width:24px; }
+ #kiwi.chanlist_treeview .panels { left:160px; }
+ #kiwi.chanlist_treeview .toolbar { position:static; }
+ #kiwi.chanlist_treeview .toolbar .app_tools { float:none; }
+ #kiwi.chanlist_treeview .toolbar > div { margin-left:160px; }
+ #kiwi.chanlist_treeview .toolbar .tabs { position:absolute; left:0px; bottom:0px; top:0px; margin:0; width:160px; background:#1B1B1B; overflow-y:auto; }
+ #kiwi.chanlist_treeview .tabs ul li { display:block; float:none; }
+ #kiwi.chanlist_treeview .tabs ul li .activity { float:right; }
+ #kiwi.chanlist_treeview .tabs ul li.active {
+     margin-right:0;
+     border-right-width:0;
+     border-bottom-right-radius:0;
+     border-top-right-radius:0;
+ }
+ #kiwi .ui_menu .ui_menu_foot .close { float:right; font-size:0.9em; margin-right:1em; color: #999; }
+ #kiwi .ui_menu .ui_menu_foot .close:hover { color: #222; }
++
++#kiwi .channel_info .channel-banlist table { margin-top: 10px; border-spacing: 10px 3px; }
++#kiwi .channel_info .channel-banlist thead { font-style: italic; }
++#kiwi .channel_info .remove-ban:hover { color: #900; }
index 0000000000000000000000000000000000000000,520299ad805b0c083b2a10d5b8c80d4c75a1dc00..e85c6e54ff5a05a48de8a36deba6880c2d4c9805
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,250 +1,253 @@@
 -#kiwi { background:#222222; color:#6d6d6d; }
++#kiwi { background:#191919; color:#6d6d6d; }
+ #kiwi,
+ #kiwi input,
+ #kiwi button,
+ #kiwi textarea {
+     font-family:Arial, Helvetica, sans-serif;
+     font-size:14px; line-height:1.4em;
+ }
+ #kiwi button, #kiwi input { padding: 3px 7px; }
+ #kiwi .controlbox { background:#111111; border-top:1px solid #444444; color:#909090; font-size:1.3em; line-height:2em; }
+ #kiwi .controlbox .input_wrap:before { content:"> " }
+ #kiwi .controlbox .input { background:none; border:none;}
+ #kiwi .controlbox .input .nick { line-height:1.7em; padding:0; text-align: right; width:11em; left:0px; position:absolute; overflow:hidden; }
+ #kiwi .controlbox .input .input_wrap {
+     position:absolute;
+     right:7px; left: 12.2em;
+     height:1.7em;
+ }
+ #kiwi .controlbox .input .inp {
+     line-height:1.4em;
+     font-size:1.3em;
+     background:transparent; color:#909090;
+     border: medium none;
+     box-shadow: none;
+     border-radius: 0;
+     outline:none; resize:none;
+     overflow:hidden;
+     position:absolute;
+     top: 0px;
+     height:99%; width:98%;
+     display: inline;
+     padding-left:0.5em;
+ }
+ #kiwi .toolbar .topic { background:#111111; height:2em; border-bottom:1px solid #444444; border-top:1px solid #444444; }
+ #kiwi .toolbar .topic div {
+     width:100%; height: 1.5em;
+     padding: 0.2em 1em;
+     text-align: center;
+     color:#6d6d6d;
+     border:none; outline:none;
+     overflow: hidden;
+     white-space: nowrap;
+ }
+ #kiwi .toolbar .topic:hover div {
+     min-height:1.5em;
+     white-space:pre-wrap; word-wrap:break-word;
+     overflow:visible;
+     background-color:#111111;
+     z-index: 1;
+     height:auto; bottom:auto;
+     border-bottom: 1px solid #444444;
+ }
+ #kiwi .toolbar .app_tools { width:200px; padding-left:10px; color:#D4D4D4; }
+ #kiwi .toolbar .app_tools ul li {
+     font-size:26px;
+     -webkit-transition: all .3s ease;
+     -moz-transition: all .3s ease;
+     transition: all .3s ease;
+     margin-left:10px;
+ }
+ #kiwi .toolbar .app_tools ul li:hover { color:#88C56A; }
+ #kiwi .toolbar .app_tools img { }
+ #kiwi .toolbar .panellist li {
+     line-height: 1.4em;
+     vertical-align: middle;
 -    
++
+     border: 1px solid #333;
+     background-color: #111;
+ }
+ #kiwi .toolbar .panellist .alert_highlight { font-weight:bold; }
+ #kiwi .toolbar .panellist .alert_activity { font-weight:normal; }
+ #kiwi .toolbar .panellist .alert_action { font-weight:normal; }
+ #kiwi .toolbar .panellist .active { padding-right:23px; border-top:2px solid #df6b26; border-bottom:none; }
+ #kiwi .toolbar .panellist li .part:before { content:"\f00d"; }
+ #kiwi .toolbar .panellist li.server span { padding-left:5px; }
+ #kiwi.connected .toolbar .panellist li.server:before { content: "\f0ec"; color:#3F9532; }
+ #kiwi .toolbar .panellist li.server:before { content: "\f06a"; color:#900; }
+ /* Tab texts are within a span */
+ #kiwi .toolbar .panellist li span  { line-height:20px; vertical-align:middle; display:inline-block; }
+ #kiwi .toolbar .panellist li .activity { display:inline; margin-left:0.5em; font-style:italic; font-size:0.8em; }
+ #kiwi .toolbar .panellist li .activity:before { content:"("; }
+ #kiwi .toolbar .panellist li .activity:after { content:")"; }
+ #kiwi .toolbar .panellist li.alert_highlight .activity {
+     color: #fff; background: #a60400; padding:2px; border-radius:3px;
+ }
 -#kiwi .memberlists { background:#222222; }
++#kiwi .memberlists { background:#252525; }
+ #kiwi .memberlists ul li { padding: 0.2em 1em; }
+ #kiwi .memberlists ul li a.nick { color:#6d6d6d; }
+ #kiwi .memberlists ul li:hover {
+     border-left: 5px solid #88C56A;
+     -webkit-transition: 0.2s ease;
+     -moz-transition: 0.2s ease;
+     -ms-transition: 0.2s ease;
+     -o-transition: 0.2s ease;
 -    transition: 0.2s ease; 
++    transition: 0.2s ease;
+ }
+ #kiwi .userbox { margin:0 1em 0 1em; padding-bottom:0.4em; font-size:.9em; }
+ #kiwi .userbox a { display:block; text-decoration:none; margin-bottom:2px; }
+ #kiwi .userbox a i { font-size:1.1em; margin-right:5px; }
+ #kiwi .userbox .divider-horizontal { display:none; }
+ #kiwi .messages .msg > div { color:#6d6d6d; font-family: Inconsolata, Consolas, 'courier new', monospace; }
+ #kiwi .messages .msg { border: none; padding: 2px 5px; }
+ #kiwi .messages .msg .time { display:inline; margin-right:1em; color:#777; }
+ #kiwi .messages .msg .nick { display:inline; margin-right:1em; }
+ #kiwi .messages .msg .nick:before { content:"<"; }
+ #kiwi .messages .msg .nick:after { content:">"; }
+ #kiwi .messages .msg .text { white-space:pre-wrap; word-wrap:break-word; }
+ #kiwi .messages .msg.action .nick { display:none; }
+ #kiwi .messages .msg.action .text { color:#009900; border-left:none; font-style:italic; }
+ #kiwi .messages .msg.action.join { color:#009900; }
+ #kiwi .messages .msg.action.part .text { color:#900; }
+ #kiwi .messages .msg.action.quit .text { color:#900; }
+ #kiwi .messages .msg.action.kick .text { color:#900; }
+ #kiwi .messages .msg.status .nick { display:none; }
+ #kiwi .messages .msg.status .text { color:#990000; border-left:none; font-weight:bold; }
+ #kiwi .messages .msg.topic .nick { display:none; }
+ #kiwi .messages .msg.topic .text { color:#009900; font-style: italic; border-left:none; }
+ /*#kiwi .messages .msg.motd .nick { display:none; }*/
+ #kiwi .messages .msg.motd { border:none; }
+ #kiwi .messages .msg.motd .text { color:#666; }
+ #kiwi .messages .msg.whois .nick { font-weight:normal; }
+ #kiwi .messages .msg.whois .text { padding-left:1em; border-left:1px dashed #999; }
+ #kiwi .messages .msg.error .text {
+     border:1px solid #A33F3F; background-color:#D28A8A;
+     padding:0.5em; margin-top:1em; margin-bottom:1em; margin-right:2em;
+ }
+ #kiwi .messages .msg.global_nick_highlight { background:#111111; }
+ #kiwi .messages .msg.highlight { background:#111111; }
+ #kiwi .messages .msg .media { margin-left:0.5em; }
+ #kiwi .messages .msg .media .media_close { font-size:0.9em; }
+ #kiwi .messages .msg .media .media_content { margin:10px 0 0 6em; overflow:hidden; }
+ #kiwi .messages .msg .media .media_content img { padding:3px; border:1px solid gray; }
+ #kiwi .messages .msg .media .media_content > .content {
+     background: white;
+     overflow: hidden;
+     padding: 10px;
+     border: #DDD 1px solid;
+     border-top-color: #EEE;
+     border-bottom-color: #BBB;
+     -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+     -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.15);
+     box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+     border-radius: 5px;
+     float: left;
+ }
+ #kiwi .messages .msg .media.twitter .media_content > .content {
+     background: transparent;
+     border:none;
+     overflow: hidden;
+     box-shadow: none;
+     padding: 0;
+ }
+ #kiwi .messages .msg .media.reddit .thumbnail_nsfw {
+     display: inline-block;
+     float: left;
+ }
+ #kiwi .messages .msg .media.reddit .thumbnail { float:left; margin-right: 0.5em; }
+ /* The server select dialog */
+ #kiwi .server_select { margin-left:auto; margin-right:auto; color:#eee; }
+ #kiwi .server_select .more { display: none; width:270px; margin:0 auto; }
+ #kiwi .server_select table tr td { padding:5px; }
+ #kiwi .server_select button { float:right; padding:3px 7px; margin-top:10px; }
+ #kiwi .server_select input { padding:3px 7px; width:150px; }
+ #kiwi .server_select label { width:5em; padding-top:3px }
+ #kiwi .server_select br { clear:both; }
+ #kiwi .server_select .basic input, .server_select .basic button { font-size:1em; padding:0.5em 1em; }
+ #kiwi .server_select .basic input { width:170px; }
+ #kiwi .server_select .basic label { font-size:1.3em; margin-top:4px; }
+ #kiwi .server_select .basic tr.have_pass { font-size:0.8em; }
+ #kiwi .server_select .basic tr.channel td { padding-top:1em; }
+ #kiwi .server_select .basic { border-bottom: 1px dashed gray; margin-bottom:1em; }
+ #kiwi .server_select .basic .show_more { display: block; width:116px; margin:10px 0 0 0; font-size:0.8em; }
+ #kiwi .server_select.single_server .basic { border:none; }
+ #kiwi .server_select .status { text-align: center; font-weight: bold; padding:1em; }
+ #kiwi .server_select .status.ok { }
+ #kiwi .server_select .status.error {
+     border:1px solid #A33F3F; background-color:#D28A8A;
+     padding:0.5em; margin-top:1em; margin-bottom:1em; margin-right:2em;
+ }
+ #kiwi .server_select .basic tr.channel .icon-key { color:#555; }
+ #kiwi .server_select .kiwi_logo { margin-top:30px; text-align:center; display:block; }
+ #kiwi .server_select .kiwi_logo h1 {
+     font-size:20px;
+     line-height:48px; vertical-align: middle;
+     color: #bbb;
+ }
+ #kiwi .server_select .kiwi_logo img { display:inline; width:24px; }
+ #kiwi .divider-verticle {
+     border-left: 1px solid #303030;
+     border-right: 1px solid #1B1B1B;
+ }
+ #kiwi .divider-horizontal {
+     border-top: 1px solid #303030;
+     border-bottom: 1px solid #1B1B1B;
+ }
+ #kiwi.chanlist_treeview .panels { left:200px; }
+ #kiwi.chanlist_treeview .toolbar { position:static; }
+ #kiwi.chanlist_treeview .toolbar .app_tools { float:none; }
+ #kiwi.chanlist_treeview .toolbar > div { }
+ #kiwi.chanlist_treeview .toolbar .tabs { position:absolute; left:0px; bottom:0px; top:0px; margin:0; width:200px; background:#1B1B1B; overflow-y:auto; }
+ #kiwi.chanlist_treeview .tabs ul li { display:block; float:none; }
+ #kiwi.chanlist_treeview .tabs ul li .activity { float:right; }
+ #kiwi.chanlist_treeview .tabs ul li.active { padding-left:1em; }
+ #kiwi .ui_menu {
+     color: #333;
+ }
+ #kiwi .ui_menu .ui_menu_title { }
+ #kiwi .ui_menu .ui_menu_content { }
+ #kiwi .ui_menu .ui_menu_content.hover:hover { background:#f7f7f7; }
+ #kiwi .ui_menu .ui_menu_foot {
+     border-bottom-left-radius: 3px;
+     border-bottom-right-radius: 3px;
+ }
+ #kiwi .ui_menu .ui_menu_foot .close { float:right; font-size:0.9em; margin-right:1em; color: #999; }
+ #kiwi .ui_menu .ui_menu_foot .close:hover { color: #222; }
++#kiwi .channel_info .channel-banlist table { margin-top: 10px; border-spacing: 10px 3px; }
++#kiwi .channel_info .channel-banlist thead { font-style: italic; }
++#kiwi .channel_info .remove-ban:hover { color: #900; }
index 0000000000000000000000000000000000000000,1d9a2c1dae95b090ef6d5201ad20334976d988a5..c181abc80ec20be70a013a37e91c02c6f8b4ac81
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,235 +1,251 @@@
 -    
+ #kiwi {
+     background: #FFF;
+     color: #555555;
+ }
+ #kiwi,
+ #kiwi input,
+ #kiwi button,
+ #kiwi textarea {
+     font-family:Arial, Helvetica, sans-serif;
+     font-size:14px; line-height:1.4em;
+ }
+ #kiwi button, #kiwi input { padding: 3px 7px; }
+ #kiwi input, #kiwi textarea {
+     box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5),0 1px 0px rgba(255, 255, 255, 0.3);
+     border: none;
+     border-radius: 3px;
+ }
++#kiwi button {
++    border-radius: 2px;
++    border: none;
++    background: #8ab746;
++    cursor: pointer;
++    color: #1b1b1b;
++}
++#kiwi button:disabled { color: #464646; background:#9cc164; }
++
+ #kiwi .toolbar {
+     background-color:#1B1B1B; font-size:0.9em;
+ }
+ #kiwi .controlbox { background-color:#1B1B1B; }
+ #kiwi .memberlists_resize_handle {
+     display:none; width:0;
+ }
+ #kiwi .toolbar .panellist li {
+     line-height: 1.4em;
+     vertical-align: middle;
 -#kiwi .messages .msg .nick { display:block; font-family:Arial; text-transform:capitalize; }
++
+     border-radius:5px;
+     -moz-border-radius:5px;
+     -webkit-border-radius:5px;
+     -khtml-border-radius:5px;
+     border: 1px solid #333;
+     background-color: #eee;
+ }
+ #kiwi .toolbar .tabs { margin-right:0 !important; }
+ #kiwi .toolbar .panellist .alert_highlight { font-weight:bold; }
+ #kiwi .toolbar .panellist .alert_activity { font-weight:normal; }
+ #kiwi .toolbar .panellist .alert_action { font-weight:normal; }
+ #kiwi .toolbar .panellist .active { padding-right:23px; border-top:2px solid #df6b26; border-bottom:none; }
+ #kiwi .toolbar .panellist li .part:before { content:"\f00d"; }
+ #kiwi .toolbar .panellist li.server span { padding-left:5px; }
+ #kiwi.connected .toolbar .panellist li.server:before { content: "\f0ec"; color:#3F9532; }
+ #kiwi .toolbar .panellist li.server:before { content: "\f06a"; color:#900; }
+ /* Tab texts are within a span */
+ #kiwi .toolbar .panellist li span  { line-height:20px; vertical-align:middle; display:inline-block; }
+ #kiwi .toolbar .panellist li .activity { display:inline; margin-left:0.5em; font-style:italic; font-size:0.8em; }
+ #kiwi .toolbar .panellist li .activity:before { content:"("; }
+ #kiwi .toolbar .panellist li .activity:after { content:")"; }
+ #kiwi .status_message {
+     background: #FEEFB3; color: #9F6000;
+     border-bottom: 1px solid;
+     padding: 0.9em;
+     text-align: center; font-size:1.1em;
+ }
+ #kiwi .status_message.err { color:#D8000C; background:#FFBABA; }
+ #kiwi .messages { color: #333333; }
+ #kiwi .messages.active { }
+ #kiwi .messages a { text-decoration:none; }
+ #kiwi .messages .msg { border-bottom: 1px solid #DEDEDE; padding: 5px; font-family:arial; font-size:0.9em; }
+ #kiwi .messages .msg .time { display:none; }
 -    transition: 0.2s ease; 
++#kiwi .messages .msg .nick { display:block; font-family:Arial; text-tranform:capitalize; }
+ #kiwi .messages .msg .text { display:block; white-space:pre-wrap; word-wrap:break-word; font-family:arial; }
+ #kiwi .messages .msg.action .nick { }
+ #kiwi .messages .msg.action .text { color:#009900; border-left:none; font-style:italic; }
+ #kiwi .messages .msg.action.join { color:#009900; }
+ #kiwi .messages .msg.action.part .text { color:#900; }
+ #kiwi .messages .msg.action.quit .text { color:#900; }
+ #kiwi .messages .msg.action.kick .text { color:#900; }
+ #kiwi .messages .msg.status .nick { }
+ #kiwi .messages .msg.status .text { color:#990000; border-left:none; font-weight:bold; }
+ #kiwi .messages .msg.topic .nick { display:none; }
+ #kiwi .messages .msg.topic .text { color:#009900; font-style: italic; border-left:none; }
+ #kiwi .messages .msg.motd { border:none; }
+ /*#kiwi .messages .msg.motd .nick { display:none; }*/
+ #kiwi .messages .msg.motd .text { color:#666; }
+ #kiwi .messages .msg.whois .nick { font-weight:normal; }
+ #kiwi .messages .msg.whois .text { padding-left:1em; border-left:1px dashed #999; }
+ #kiwi .messages .msg.error .text {
+     border:1px solid #A33F3F; background-color:#D28A8A;
+     padding:0.5em; margin-top:1em; margin-bottom:1em; margin-right:2em;
+ }
+ #kiwi .messages .msg.global_nick_highlight,
+ #kiwi .messages .msg.highlight { background:#D9D9D9; }
+ #kiwi.chanlist_treeview .panels { left:160px; }
+ #kiwi.chanlist_treeview .toolbar { position:static; }
+ #kiwi.chanlist_treeview .toolbar .app_tools { float:none; }
+ #kiwi.chanlist_treeview .toolbar > div { }
+ #kiwi.chanlist_treeview .toolbar .tabs { position:absolute; left:0px; bottom:0px; top:0px; margin:0; width:160px; background:#1B1B1B; overflow-y:auto; }
+ #kiwi.chanlist_treeview .tabs ul li { display:block; float:none; }
+ #kiwi.chanlist_treeview .tabs ul li .activity { float:right; }
+ #kiwi.chanlist_treeview .tabs ul li.active { padding-left:1em; }
+ #kiwi .memberlists {
+     background-color: #DADADA;
+     border-left: 1px solid #8A8A8A;
+     display:none;
+     width:0px;
+ }
+ #kiwi .memberlists ul { list-style: none; }
+ #kiwi .memberlists ul.active { }
+ #kiwi .memberlists ul li { padding: 0.2em 1em; }
+ #kiwi .memberlists ul li:hover {
+     border-left: 5px solid #88C56A;
+     -webkit-transition: 0.2s ease;
+     -moz-transition: 0.2s ease;
+     -ms-transition: 0.2s ease;
+     -o-transition: 0.2s ease;
 -#kiwi .server_select button { display:block; padding:3px 7px; margin:1em auto; }
++    transition: 0.2s ease;
+ }
+ #kiwi .memberlists ul li a.nick { display:block; color:black; }
+ #kiwi .userbox { margin:0 1em 5px 1em; padding-bottom:0.7em; font-size:.9em; }
+ #kiwi .userbox a { display:block; text-decoration:none; margin-bottom:2px; }
+ #kiwi .userbox a i { font-size:1.1em; margin-right:5px; }
+ #kiwi .controlbox .input {
+     background:#fff; margin:3px;
+     height:1.7em;
+ }
+ #kiwi .controlbox .input .nick { display:none; }
+ #kiwi .controlbox .input .nick a { text-decoration:none; color:black; }
+ #kiwi .controlbox .input .input_wrap {
+     position:absolute;
+     right:3px; left:3px;
+     height:1.7em;
+ }
+ #kiwi .controlbox .input .inp {
+     line-height:1.7em;
+     border: medium none;
+     box-shadow: none;
+     border-radius: 0;
+     resize:none;
+     overflow:hidden;
+     position:relative;
+     height:100%; width:100%;
+     display: block;
+ }
+ #kiwi .controlbox .nickchange {
+     padding:10px; left: 0px;
+     background: #1B1B1B; color:#eeeeee;
+ }
+ #kiwi .controlbox .nickchange input { padding:0.3em 0.5em; }
+ #kiwi .controlbox .nickchange button { padding:0.5em; }
+ #kiwi .toolbar .topic { display:none; }
+ #kiwi .toolbar .topic div {
+     top:2; bottom:2px; left:0; width:100%;
+     padding: 0.2em 1em;
+     text-align: center;
+     box-shadow: none;
+     border-radius: 0;
+     background-color:#FFF;
+     height: 1.5em;
+     overflow: hidden;
+     outline: none;
+ }
+ #kiwi .toolbar .app_tools { padding-left:10px; color:#D4D4D4; }
+ #kiwi .toolbar .app_tools ul li {
+     font-size:26px;
+     -webkit-transition: all .3s ease;
+     -moz-transition: all .3s ease;
+     transition: all .3s ease;
+     margin-left:10px;
+ }
+ #kiwi .toolbar .app_tools ul li:hover { color:#88C56A; }
+ #kiwi .toolbar .app_tools img { }
+ /* The server select dialog */
+ #kiwi .server_select { padding:3em 0 2em 0; margin: 0 auto; width:100%; }
+ #kiwi .server_select .more { display:none; }
 -}
++#kiwi .server_select button {
++    /*padding: 10px 25px;*/
++    padding: 0.5em 1em;
++    font-size: 1.1em;
++    width: 196px;
++    margin: 20px auto;
++    display: block;
++}
+ #kiwi .server_select input.nick {
+     float:none; display:block; width:80%;
+     padding:0.5em 1em; margin:0 auto;
+     text-align: center;
+ }
+ #kiwi .server_select label { display:none; }
+ #kiwi .server_select br { clear:both; }
+ #kiwi .server_select .basic { border:none; }
+ #kiwi .server_select .basic table { width:100%; }
+ #kiwi .server_select .basic table tr.channel,
+ #kiwi .server_select .basic table tr.pass,
+ #kiwi .server_select .basic table tr.have_pass { display:none; }
+ #kiwi .server_select .basic table tr.key,
+ #kiwi .server_select .basic table tr.have_key { display:none; }
+ #kiwi .server_select .basic .show_more { display:none !important; }
+ #kiwi .server_select.single_server .basic { border:none; }
+ #kiwi .server_select .status { text-align: center; font-weight: bold; padding:1em; }
+ #kiwi .server_select .status.ok { }
+ #kiwi .server_select .status.error {
+     border:1px solid #A33F3F; background-color:#D28A8A;
+     padding:0.5em; margin-top:1em; margin-bottom:1em; margin-right:2em;
+ }
+ #kiwi .server_select .kiwi_logo h1 span {
+     font-size:14px;
+     line-height:24px; vertical-align: middle;
+     color: #555555;
+ }
+ #kiwi .server_select .kiwi_logo img { display:inline; width:24px; }
+ #kiwi .server_select .side_panel { display: none; }
+ #kiwi .server_select .server_details {
+     position: relative !important;
+     float: none !important;
+     width: auto !important;
+     padding: 0 !important;
+     margin: 2em 0 0 0 !important;
++}
index 0000000000000000000000000000000000000000,4b5aa7ef1a80587444681da97eb5f0a5f0632de0..7e9f65d0056ceb4f5fe1cd92f7e5883f83314abb
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,374 +1,404 @@@
 -    background: url('../../img/background-light.png') left top repeat-x #E3E3E3;
+ #kiwi {
 -#kiwi .controlbox { background-color:#1B1B1B; }
++    background: url(background-light.png) left top repeat-x #E3E3E3;
+     color: #555555;
+ }
+ #kiwi,
+ #kiwi input,
+ #kiwi button,
+ #kiwi textarea {
+     font-family:Arial, Helvetica, sans-serif;
+     font-size:14px; line-height:1.4em;
+ }
++#kiwi button {
++    border-radius: 2px;
++    border: none;
++    background: #8ab746;
++    cursor: pointer;
++    color: #1b1b1b;
++}
++#kiwi button:disabled { color: #464646; background:#9cc164; }
+ #kiwi button, #kiwi input { padding: 3px 7px; }
+ #kiwi input, #kiwi textarea {
+     box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5),0 1px 0px rgba(255, 255, 255, 0.3);
+     border: none;
+     border-radius: 3px;
+ }
+ #kiwi .toolbar {
+     background-color:#1B1B1B; font-size:0.9em;
++    box-shadow: 0px 0px 10px rgba(50, 50, 50, 0.8);
++    z-index: 1;
++}
++#kiwi .controlbox {
++    background-color:#1B1B1B;
++    box-shadow: 0px 0px 10px rgba(50, 50, 50, 0.8);
+ }
 -    
+ #kiwi .memberlists_resize_handle {
+     /*background:url('../img/resize_handle.png') no-repeat; background-position:center;*/
+ }
+ #kiwi .toolbar .panellist li {
+     line-height: 1.4em;
+     vertical-align: middle;
 -    transition: 0.2s ease; 
++
+     -moz-border-radius:5px;
+     -webkit-border-radius:5px;
+     -khtml-border-radius:5px;
+     border-radius:5px;
+     behavior: url(border-radius.htc);
+     background-image: -webkit-gradient(
+         linear,
+         left top,
+         left bottom,
+         color-stop(0.38, rgb(238,238,238)),
+         color-stop(0.68, rgb(209,209,209))
+     );
+     background-image: -moz-linear-gradient(
+         center top,
+         rgb(238,238,238) 38%,
+         rgb(209,209,209) 68%
+     );
+     border: 1px solid #333;
+     background-color: #eee;
+ }
+ #kiwi .toolbar .panellist .alert_highlight { /*background: #990000;*/ }
+ #kiwi .toolbar .panellist .alert_activity { font-weight:normal; }
+ #kiwi .toolbar .panellist .alert_action { font-weight:normal; }
+ #kiwi .toolbar .panellist .active { padding-right:23px; border-top:2px solid #df6b26; border-bottom:none; }
+ #kiwi .toolbar .panellist li .part:before { content:"\f00d"; }
+ #kiwi .toolbar .panellist li.server span { padding-left: 5px; }
+ #kiwi.connected .toolbar .panellist li.server:before { content: "\f0ec"; color:#3F9532; }
+ #kiwi .toolbar .panellist li.server:before { content: "\f06a"; color:#900; font-size:1.5em; line-height:1em; vertical-align:middle; }
+ /* Tab texts are within a span */
+ #kiwi .toolbar .panellist li span  { line-height:20px; vertical-align:middle; display:inline-block; }
+ #kiwi .toolbar .panellist li.active .activity { display:none; }
+ #kiwi .toolbar .panellist li .activity.zero { visibility:hidden; }
+ #kiwi .toolbar .panellist li .activity {
+     padding: 1px 3px; margin-left:1em;
+     border-radius: 4px;
+     background: #3F9532; color:#000; /*color: #ff5300;*/
+     text-align: center; font-size: 10px;
+     display:inline-block;
+     width:2em;
+ }
+ #kiwi .toolbar .panellist li.alert_highlight .activity {
+     color: #fff; background: #a60400;
+ }
+ #kiwi .status_message {
+     background: #FEEFB3; color: #9F6000;
+     border-bottom: 1px solid;
+     padding: 0.9em;
+     text-align: center; font-size:1.1em;
+ }
+ #kiwi .status_message.err { color:#D8000C; background:#FFBABA; }
+ #kiwi .messages { color: #333333; }
+ #kiwi .messages.active { }
+ #kiwi .messages a { text-decoration:none; }
+ #kiwi .messages .msg { border-bottom: 1px solid #DEDEDE; padding: 1px; font-family:arial; font-size:0.9em; }
+ #kiwi .messages .msg .time { width:5em; float:left; color:#777; padding:5px; display:none; }
+ #kiwi .messages .msg .nick { width:11em; float:left; font-size:12px; font-family:Arial; text-align:right; padding: 5px; overflow:hidden; }
+ #kiwi .messages .msg .text { display:block; margin-left:12em; border-left: 1px solid #DEDEDE; white-space:pre-wrap; word-wrap:break-word; font-family:arial; padding:5px; }
+ #kiwi.narrow .messages .msg .nick { width: auto; }
+ #kiwi.narrow .messages .msg .text { margin-left: 1em; border:none; }
+ #kiwi .messages .msg.action .nick { }
+ #kiwi .messages .msg.action .text { color:#009900; border-left:none; font-style:italic; }
+ #kiwi .messages .msg.action.join { color:#009900; }
+ #kiwi .messages .msg.action.part .text { color:#900; }
+ #kiwi .messages .msg.action.quit .text { color:#900; }
+ #kiwi .messages .msg.action.kick .text { color:#900; }
+ #kiwi .messages .msg.status .nick { }
+ #kiwi .messages .msg.status .text { color:#990000; margin-left:9em; border-left:none; font-weight:bold; }
+ #kiwi .messages .msg.topic .nick { display:none; }
+ #kiwi .messages .msg.topic .text { color:#009900; margin-left:9em; font-style: italic; border-left:none; }
+ #kiwi .messages .msg.motd { border:none; }
+ /*#kiwi .messages .msg.motd .nick { display:none; }*/
+ #kiwi .messages .msg.motd .text { color:#666; font-family:monospace; }
+ #kiwi .messages .msg.whois .nick { font-weight:normal; }
+ #kiwi .messages .msg.whois .text { margin-left:18em; padding-left:1em; border-left:1px dashed #999; }
+ #kiwi .messages .msg.error .text {
+     border:1px solid #A33F3F; background-color:#D28A8A;
+     padding:0.5em; margin-top:1em; margin-bottom:1em; margin-right:2em;
+ }
+ #kiwi.timestamps .messages .msg .time { display:block; }
+ #kiwi.timestamps .messages .msg .text { margin-left:17em; }
+ #kiwi .messages .msg.global_nick_highlight,
+ #kiwi .messages .msg.highlight { transition: background 0.3s; background:#D9D9D9; }
+ #kiwi .messages .msg.repeated_nick .nick { visibility:hidden; }
+ /* Narrow styling (window width < 400px) */
+ #kiwi.narrow .messages .msg .nick { width: auto; }
+ #kiwi.narrow .messages .msg .text { margin-left: 1em; border:none; }
+ #kiwi.narrow .messages .msg.action .text { margin-left: 1em; }
+ #kiwi .messages .msg .media { margin-left:0.5em; }
+ #kiwi .messages .msg .media .media_close { font-size:0.9em; }
+ #kiwi .messages .msg .media .media_content { margin:10px 0 0 10px; overflow:hidden; }
+ #kiwi .messages .msg .media .media_content img { padding:3px; border:1px solid gray; }
+ #kiwi .messages .msg .media .media_content > .content {
+     background: white;
+     overflow: hidden;
+     padding: 10px;
+     border: #DDD 1px solid;
+     border-top-color: #EEE;
+     border-bottom-color: #BBB;
+     -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+     -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.15);
+     box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+     border-radius: 5px;
+     float: left;
+ }
+ #kiwi .messages .msg .media.twitter .media_content > .content {
+     background: transparent;
+     border:none;
+     overflow: hidden;
+     box-shadow: none;
+     padding: 0;
+ }
+ #kiwi .messages .msg .media.reddit .thumbnail_nsfw {
+     display: inline-block;
+     float: left;
+ }
+ #kiwi .messages .msg .media.reddit .thumbnail { float:left; margin-right: 0.5em; }
+ #kiwi .memberlists {
+     background-color: #DADADA;
+     border-left: 1px solid #8A8A8A;
+ }
+ #kiwi.narrow .memberlists { display:none; }
+ #kiwi .memberlists ul { list-style: none; }
+ #kiwi .memberlists ul.active { }
+ #kiwi .memberlists ul li { padding: 0.2em 1em; }
+ #kiwi .memberlists ul li:hover {
+     border-left: 5px solid #88C56A;
+     -webkit-transition: 0.2s ease;
+     -moz-transition: 0.2s ease;
+     -ms-transition: 0.2s ease;
+     -o-transition: 0.2s ease;
 -#kiwi .controlbox .nickchange input { padding:0.3em 0.5em; }
 -#kiwi .controlbox .nickchange button { padding:0.5em; }
++    transition: 0.2s ease;
+ }
+ #kiwi .memberlists ul li a.nick { display:block; color:black; }
+ #kiwi .userbox { margin:4px 1em 5px 1em; padding-bottom:0.7em; font-size:.9em; }
+ #kiwi .userbox a { display:block; text-decoration:none; margin-bottom:2px; }
+ #kiwi .userbox a i { font-size:1.1em; margin-right:5px; }
+ /* User mode styles */
+ #kiwi .memberlists ul li .prefix {
+     display:none;
+     width:20px; height:20px;
+     border-radius: 5px;
+     margin: 0 7px 0 0;
+     font-size:12px; text-align: center;
+     color: #E3E3E3;
+     /* text-indent: -1000px; */
+ }
+ /* Most important modes towards the bottom - they override the top ones! */
+ #kiwi .memberlists ul li.mode.v .prefix { display:inline-block; background:#b3b3b3; }
+ #kiwi .memberlists ul li.mode.h .prefix { display:inline-block; background:#b5b447; }
+ #kiwi .memberlists ul li.mode.o .prefix { display:inline-block; background:#47b547; }
+ #kiwi .memberlists ul li.mode.a .prefix { display:inline-block; background:#b54747; }
+ #kiwi .memberlists ul li.mode.q .prefix { display:inline-block; background:#8547b5; }
+ #kiwi .controlbox .input {
+     background:#fff; margin:3px;
+     height:1.7em;
+     border-radius:5px;
+     -moz-border-radius:5px;
+     -webkit-border-radius:5px;
+     -khtml-border-radius:5px;
+ }
+ #kiwi .controlbox .input .nick a { text-decoration:none; color:black; }
+ #kiwi .controlbox .input .nick {
+     text-align: right;
+     width: 11em;
+     left: 0px;
+     position: absolute;
+     overflow: hidden;
+     background-color: #eee;
+     border-radius: 3px 0 0 3px;
+     border-right: 1px solid #ccc;
+     padding: 2px;
+     padding-right: 0.5em;
+ }
+ #kiwi.narrow .controlbox .input .nick { display:none; }
+ #kiwi.narrow .controlbox .input .input_wrap { left:7px; }
+ #kiwi .controlbox .input .input_wrap {
+     position:absolute;
+     right:7px; left: 12.2em;
+     height:1.7em;
+ }
+ #kiwi .controlbox .input .inp {
+     line-height:1.7em;
+     border: medium none;
+     box-shadow: none;
+     border-radius: 0;
+     outline:none; resize:none;
+     overflow:hidden;
+     position:relative;
+     height:100%; width:100%;
+     display: block;
+ }
+ #kiwi .controlbox .nickchange {
+     padding:10px; left: 0px;
+     background: #1B1B1B; color:#eeeeee;
+ }
 -#kiwi .server_select button { float:right; padding:3px 7px; }
++#kiwi .controlbox .nickchange input { padding:0.3em 0.5em; margin-left: 0.5em; width: 165px; }
++#kiwi .controlbox .nickchange button { padding:0.5em; margin: 0 0.5em 0 1em; }
+ #kiwi .toolbar .topic { background-color:#1B1B1B; padding-bottom:2px; }
+ #kiwi .toolbar .topic div {
+     padding: 0.2em 1em;
+     text-align: center;
+     box-shadow: none;
+     border-radius: 0;
+     background-color:#FFF;
+     height: 1.5em;
+     overflow: hidden;
+     outline: none;
+     white-space: nowrap;
+ }
+ #kiwi .toolbar .topic:hover div {
+     min-height:1.5em;
+     white-space:pre-wrap; word-wrap:break-word;
+     overflow:visible;
+     background-color:#FFF;
+     z-index: 1;
+     height:auto; bottom:auto;
+     border-bottom: 2px solid #1B1B1B;
+ }
+ #kiwi .toolbar .app_tools { width:200px; padding-left:10px; color:#D4D4D4; }
+ #kiwi.narrow .toolbar .tabs { margin-right:0; }
+ #kiwi.narrow .toolbar .app_tools { width:auto; }
+ #kiwi .toolbar .app_tools ul li {
+     font-size:26px;
+     -webkit-transition: all .3s ease;
+     -moz-transition: all .3s ease;
+     transition: all .3s ease;
+     margin-left:10px;
+ }
+ #kiwi .toolbar .app_tools ul li:hover { color:#88C56A; }
+ #kiwi .toolbar .app_tools img { }
+ /* The server select dialog */
+ #kiwi .server_select { margin-left:auto; margin-right:auto; }
+ #kiwi .server_select .more { display: none; width:270px; margin:0 auto; }
+ #kiwi .server_select table tr td { padding:5px; }
++#kiwi .server_select button {
++    /*padding: 10px 25px;*/
++    padding: 0.5em 1em;
++    font-size: 1.1em;
++    width: 196px;
++    margin: 20px auto;
++    display: block;
++}
+ #kiwi .server_select input { padding:3px 7px; width:150px; }
+ #kiwi .server_select label { }
+ #kiwi .server_select br { clear:both; }
+ #kiwi .server_select .basic input, .server_select .basic button { font-size:1em; padding:0.5em 1em; }
+ #kiwi .server_select .basic input { width:170px; }
+ #kiwi .server_select .basic label { font-size:1.3em; margin-top:4px; }
+ #kiwi .server_select .basic tr.have_pass { font-size:0.8em; }
+ #kiwi .server_select .basic tr.have_key { font-size:0.8em; }
+ #kiwi .server_select .basic tr.channel td { padding-top:1em; }
+ #kiwi .server_select .basic { border-bottom: 1px dashed gray; margin-bottom:1em; }
+ #kiwi .server_select .basic .show_more { display: block; width:110px; margin:10px 0 0 0; font-size:0.8em; }
+ #kiwi .server_select.single_server .basic { border:none; }
+ #kiwi .server_select .status { text-align: center; font-weight: bold; padding:1em; }
+ #kiwi .server_select .status.ok { }
+ #kiwi .server_select .status.error {
+     border:1px solid #A33F3F; background-color:#D28A8A;
+     padding:0.5em; margin-top:1em; margin-bottom:1em; margin-right:2em;
+ }
+ #kiwi .server_select .kiwi_logo { margin-top:30px; }
+ #kiwi .server_select .kiwi_logo h1 span {
+     font-size:14px;
+     line-height:24px; vertical-align: middle;
+     color: #555555;
+ }
+ #kiwi .server_select .kiwi_logo img { display:inline; width:24px; }
+ #kiwi.chanlist_treeview .panels { left:160px; }
+ #kiwi.chanlist_treeview .toolbar { position:static; }
+ #kiwi.chanlist_treeview .toolbar .app_tools { float:none; }
+ #kiwi.chanlist_treeview .toolbar > div { margin-left:160px; }
+ #kiwi.chanlist_treeview .toolbar .tabs { position:absolute; left:0px; bottom:0px; top:0px; margin:0; width:160px; background:#1B1B1B; overflow-y:auto; }
+ #kiwi.chanlist_treeview .tabs ul li { display:block; float:none; }
+ #kiwi.chanlist_treeview .tabs ul li .activity { position:absolute; right:5px; }
+ #kiwi.chanlist_treeview .tabs ul li.active {
+     margin-right:0;
+     border-right-width:0;
+     border-bottom-right-radius:0;
+     border-top-right-radius:0;
+ }
+ #kiwi .applet > div.settings button.save {
+     padding:1em 2em;
+     border:1px solid gray; border-radius:3px;
+ }
+ #kiwi .applet > div.settings tr {
+     border-bottom: 1px dashed black;
+ }
+ #kiwi .applet > div.settings td.label {
+     font-weight: bold;
+ }
+ #kiwi .applet > div.settings tr.save {
+     text-align: right;
+ }
+ #kiwi .ui_menu {
+     border-radius: 3px;
+     color: #333;
+     box-shadow: 0 3px 8px rgba(0, 0, 0, .25);
+ }
+ #kiwi .ui_menu .ui_menu_title {
+     border-top-left-radius: 3px;
+     border-top-right-radius: 3px;
+ }
+ #kiwi .ui_menu .ui_menu_content { }
+ #kiwi .ui_menu .ui_menu_content.hover:hover { background:#f7f7f7; }
+ #kiwi .ui_menu .ui_menu_foot {
+     border-bottom-left-radius: 3px;
+     border-bottom-right-radius: 3px;
+ }
+ #kiwi .ui_menu .ui_menu_foot .close { float:right; font-size:0.9em; margin-right:1em; color: #999; }
+ #kiwi .ui_menu .ui_menu_foot .close:hover { color: #222; }
++
++
++#kiwi .channel_info .channel_url {
++    display: block;
++    margin: 5px 1em;
++    font-style: italic;
++}
++#kiwi .channel_info .channel-banlist table { margin-top: 10px; border-spacing: 10px 3px; }
++#kiwi .channel_info .channel-banlist thead { font-style: italic; }
++#kiwi .channel_info .remove-ban:hover { color: #900; }
index c50dfd455346f91b2a61a00f45df2f81f6d0de6a,6fb7cb166e234e111c7dbf5785add54be98c7bc7..e88ce10d7c2745bbc0753178fbbe75715aefe392
@@@ -8,25 -8,28 +8,28 @@@
          },\r
  \r
          initialize: function (options) {\r
 -            var template_vars = {\r
 -                    tabs: _kiwi.global.i18n.translate('client_applets_settings_channelview_tabs').fetch(),\r
 -                    list: _kiwi.global.i18n.translate('client_applets_settings_channelview_list').fetch(),\r
 -                    large_amounts_of_chans: _kiwi.global.i18n.translate('client_applets_settings_channelview_list_notice').fetch(),\r
 -                    join_part: _kiwi.global.i18n.translate('client_applets_settings_notification_joinpart').fetch(),\r
 -                    timestamps: _kiwi.global.i18n.translate('client_applets_settings_timestamp').fetch(),\r
 -                    mute: _kiwi.global.i18n.translate('client_applets_settings_notification_sound').fetch(),\r
 -                    emoticons: _kiwi.global.i18n.translate('client_applets_settings_emoticons').fetch(),\r
 -                    scroll_history: _kiwi.global.i18n.translate('client_applets_settings_history_length').fetch(),\r
 -                    languages: _kiwi.app.translations,\r
 -                    default_client: _kiwi.global.i18n.translate('client_applets_settings_default_client').fetch(),\r
 -                    make_default: _kiwi.global.i18n.translate('client_applets_settings_default_client_enable').fetch(),\r
 -                    locale_restart_needed: _kiwi.global.i18n.translate('client_applets_settings_locale_restart_needed').fetch(),\r
 -                    default_note: _kiwi.global.i18n.translate('client_applets_settings_default_client_notice').fetch('<a href="chrome://settings/handlers">chrome://settings/handlers</a>'),\r
 -                    html5_notifications: _kiwi.global.i18n.translate('client_applets_settings_html5_notifications').fetch(),\r
 -                    enable_notifications: _kiwi.global.i18n.translate('client_applets_settings_enable_notifications').fetch(),\r
 -                    theme_thumbnails: _.map(_kiwi.app.server_settings.client.themes, function (theme) {\r
 -                        return _.template($('#tmpl_theme_thumbnail').html().trim(), theme);\r
 -                    })\r
 -                };\r
 -\r
 -            this.$el = $(_.template($('#tmpl_applet_settings').html().trim(), template_vars));\r
 +            var text = {\r
 +                tabs: _kiwi.global.i18n.translate('client_applets_settings_channelview_tabs').fetch(),\r
 +                list: _kiwi.global.i18n.translate('client_applets_settings_channelview_list').fetch(),\r
 +                large_amounts_of_chans: _kiwi.global.i18n.translate('client_applets_settings_channelview_list_notice').fetch(),\r
 +                join_part: _kiwi.global.i18n.translate('client_applets_settings_notification_joinpart').fetch(),\r
 +                count_all_activity: _kiwi.global.i18n.translate('client_applets_settings_notification_count_all_activity').fetch(),\r
 +                timestamps: _kiwi.global.i18n.translate('client_applets_settings_timestamp').fetch(),\r
 +                mute: _kiwi.global.i18n.translate('client_applets_settings_notification_sound').fetch(),\r
 +                emoticons: _kiwi.global.i18n.translate('client_applets_settings_emoticons').fetch(),\r
 +                scroll_history: _kiwi.global.i18n.translate('client_applets_settings_history_length').fetch(),\r
 +                languages: _kiwi.app.translations,\r
 +                default_client: _kiwi.global.i18n.translate('client_applets_settings_default_client').fetch(),\r
 +                make_default: _kiwi.global.i18n.translate('client_applets_settings_default_client_enable').fetch(),\r
 +                locale_restart_needed: _kiwi.global.i18n.translate('client_applets_settings_locale_restart_needed').fetch(),\r
 +                default_note: _kiwi.global.i18n.translate('client_applets_settings_default_client_notice').fetch('<a href="chrome://settings/handlers">chrome://settings/handlers</a>'),\r
 +                html5_notifications: _kiwi.global.i18n.translate('client_applets_settings_html5_notifications').fetch(),\r
-                 enable_notifications: _kiwi.global.i18n.translate('client_applets_settings_enable_notifications').fetch()\r
++                enable_notifications: _kiwi.global.i18n.translate('client_applets_settings_enable_notifications').fetch(),\r
++                theme_thumbnails: _.map(_kiwi.app.themes, function (theme) {\r
++                    return _.template($('#tmpl_theme_thumbnail').html().trim(), theme);\r
++                })\r
 +            };\r
 +            this.$el = $(_.template($('#tmpl_applet_settings').html().trim(), text));\r
  \r
              if (!navigator.registerProtocolHandler) {\r
                  this.$el.find('.protocol_handler').remove();\r
index 5b19d4fbf9ba2e8f77d1d30183cc39dffdb115ac,0ef01310d4f07feee6ee03e97a7df9da94d823e4..f0d82f5b74b04a0aa5fab55699ecce987bffd62a
          </div>\r
      </script>\r
  \r
+     <script type="text/html" id="tmpl_theme_thumbnail">\r
+         <a class="thumbnail" data-setting="theme" data-value="<%= name.toLowerCase() %>" href="#">\r
+             <div class="thumbnail_wrapper"><div class="theme_color" style="background-color: <%= thumbnail_colour %>;"></div></div>\r
+             <div class="caption"><u><%= name %></u></div>\r
+         </a>\r
+     </script>\r
\r
      <script type="text/html" id="tmpl_applet_settings">\r
          <div class="settings_container">\r
 -            <section>\r
 -                <h6>Theme</h6>\r
 -                <div class="control-group">\r
 -                    <div class="thumbnails">\r
 -                        <% _.forEach(theme_thumbnails, function(thumbnail) { %>\r
 -                            <%= thumbnail %>\r
 -                        <% }); %>\r
 +            <form>\r
 +                <section>\r
 +                    <h6>Theme</h6>\r
 +                    <div class="control-group">\r
 +                        <div class="thumbnails">\r
-                             <a class="thumbnail" data-setting="theme" data-value="relaxed" href="#">\r
-                                 <div class="thumbnail_wrapper"><div class="theme_color" style="background-color: #e7e7e7;"></div></div>\r
-                                 <div class="caption"><u>Relaxed</u></div>\r
-                             </a>\r
-                             <a class="thumbnail" data-setting="theme" data-value="mini" href="#">\r
-                                 <div class="thumbnail_wrapper"><div class="theme_color" style="background-color: #fff;"></div></div>\r
-                                 <div class="caption"><u>Mini</u></div>\r
-                             </a>\r
-                             <a class="thumbnail" data-setting="theme" data-value="cli" href="#">\r
-                                 <div class="thumbnail_wrapper"><div class="theme_color" style="background-color: #222;"></div></div>\r
-                                 <div class="caption"><u>CLI</u></div>\r
-                             </a>\r
-                             <a class="thumbnail" data-setting="theme" data-value="basic" href="#">\r
-                                 <div class="thumbnail_wrapper"><div class="theme_color" style="background-color: #e7e7e7;"></div></div>\r
-                                 <div class="caption"><u>Basic</u></div>\r
-                             </a>\r
++                            <% _.forEach(theme_thumbnails, function(thumbnail) { %>\r
++                                <%= thumbnail %>\r
++                            <% }); %>\r
 +                        </div>\r
                      </div>\r
 -                </div>\r
 -            </section>\r
 -\r
 -            <section>\r
 -                <h6>Channels</h6>\r
 -                <div class="control-group">\r
 -                    <div class="radio">\r
 -                        <label>\r
 -                            <input type="radio" name="channel_list_style" data-setting="channel_list_style" value="tabs">\r
 -                            <%= tabs %>\r
 -                        </label>\r
 +                </section>\r
 +\r
 +                <section>\r
 +                    <h6>Channels</h6>\r
 +                    <div class="control-group">\r
 +                        <div class="radio">\r
 +                            <label>\r
 +                                <input type="radio" name="channel_list_style" data-setting="channel_list_style" value="tabs">\r
 +                                <%= tabs %>\r
 +                            </label>\r
 +                        </div>\r
 +                        <div class="radio">\r
 +                            <label>\r
 +                                <input type="radio" name="channel_list_style" data-setting="channel_list_style" value="list">\r
 +                                <%= list %><small class="text-muted">(<%= large_amounts_of_chans %>)</small>\r
 +                            </label>\r
 +                        </div>\r
                      </div>\r
 -                    <div class="radio">\r
 +                </section>\r
 +\r
 +                <section>\r
 +                    <h6>Chat window</h6>\r
 +                    <div class="control-group">\r
 +                        <div class="checkbox">\r
 +                            <label>\r
 +                                <input data-setting="show_joins_parts" type="checkbox">\r
 +                                <%= join_part %>\r
 +                            </label>\r
 +                        </div>\r
 +                        <div class="checkbox">\r
 +                            <label>\r
 +                                <input data-setting="count_all_activity" type="checkbox">\r
 +                                <%= count_all_activity %>\r
 +                            </label>\r
 +                        </div>\r
 +                        <div class="checkbox">\r
 +                            <label>\r
 +                                <input data-setting="show_timestamps" type="checkbox">\r
 +                                <%= timestamps %>\r
 +                            </label>\r
 +                        </div>\r
 +                        <div class="checkbox">\r
 +                            <label>\r
 +                                <input data-setting="mute_sounds" type="checkbox">\r
 +                                <%= mute %>\r
 +                            </label>\r
 +                        </div>\r
 +                        <div class="checkbox">\r
 +                            <label>\r
 +                                <input data-setting="show_emoticons" type="checkbox">\r
 +                                <%= emoticons %>\r
 +                            </label>\r
 +                        </div>\r
                          <label>\r
 -                            <input type="radio" name="channel_list_style" data-setting="channel_list_style" value="list">\r
 -                            <%= list %><small class="text-muted">(<%= large_amounts_of_chans %>)</small>\r
 +                            <input data-setting="scrollback" class="input-small" type="text" size="4" pattern="\d*">\r
 +                            <span><%= scroll_history %></span>\r
                          </label>\r
                      </div>\r
 -                </div>\r
 -            </section>\r
 -\r
 -            <section>\r
 -                <h6>Chat window</h6>\r
 -                <div class="control-group">\r
 -                    <div class="checkbox">\r
 -                        <label>\r
 -                            <input data-setting="show_joins_parts" type="checkbox">\r
 -                            <%= join_part %>\r
 -                        </label>\r
 -                    </div>\r
 -                    <div class="checkbox">\r
 -                        <label>\r
 -                            <input data-setting="show_timestamps" type="checkbox">\r
 -                            <%= timestamps %>\r
 -                        </label>\r
 +                </section>\r
 +\r
 +                <section class="language">\r
 +                    <h6>Language</h6>\r
 +                    <div class="control-group">\r
 +                        <select data-setting="locale">\r
 +                            <% _.forEach(languages, function(lang) { %>\r
 +                                <option value="<%= lang.tag %>"><%= lang.language %></li>\r
 +                            <% }); %>\r
 +                        </select>\r
 +                        <br>\r
 +                        <small><%= locale_restart_needed %></small>\r
                      </div>\r
 -                    <div class="checkbox">\r
 -                        <label>\r
 -                            <input data-setting="mute_sounds" type="checkbox">\r
 -                            <%= mute %>\r
 -                        </label>\r
 -                    </div>\r
 -                    <div class="checkbox">\r
 -                        <label>\r
 -                            <input data-setting="show_emoticons" type="checkbox">\r
 -                            <%= emoticons %>\r
 -                        </label>\r
 +                </section>\r
 +\r
 +                <section class="protocol_handler">\r
 +                    <h6><%= default_client %></h6>\r
 +                    <div class="control-group">\r
 +                        <button class="register_protocol"><%= make_default %></button>\r
 +                        <br>\r
 +                        <small><%= default_note %></small>\r
                      </div>\r
 -                    <label>\r
 -                        <input data-setting="scrollback" class="input-small" type="text" size="4" pattern="\d*">\r
 -                        <span><%= scroll_history %></span>\r
 -                    </label>\r
 -                </div>\r
 -            </section>\r
 -\r
 -            <section class="language">\r
 -                <h6>Language</h6>\r
 -                <div class="control-group">\r
 -                    <select data-setting="locale">\r
 -                        <% _.forEach(languages, function(lang) { %>\r
 -                            <option value="<%= lang.tag %>"><%= lang.language %></li>\r
 -                        <% }); %>\r
 -                    </select>\r
 -                    <br>\r
 -                    <small><%= locale_restart_needed %></small>\r
 -                </div>\r
 -            </section>\r
 -\r
 -            <section class="protocol_handler">\r
 -                <h6><%= default_client %></h6>\r
 -                <div class="control-group">\r
 -                    <button class="register_protocol"><%= make_default %></button>\r
 -                    <br>\r
 -                    <small><%= default_note %></small>\r
 -                </div>\r
 -            </section>\r
 -\r
 -            <section class="notification_enabler">\r
 -                <h6><%= html5_notifications %></h6>\r
 -                <div class="control-group">\r
 -                    <button class="enable_notifications"><%= enable_notifications %></button>\r
 -                </div>\r
 -            </section>\r
 +                </section>\r
  \r
 +                <section class="notification_enabler">\r
 +                    <h6><%= html5_notifications %></h6>\r
 +                    <div class="control-group">\r
 +                        <button class="enable_notifications"><%= enable_notifications %></button>\r
 +                    </div>\r
 +                </section>\r
 +            </form>\r
          </div>\r
      </script>\r
  \r
              if (typeof data.kiwi_server !== 'undefined')\r
                  opts.kiwi_server = data.kiwi_server;\r
  \r
 -                opts.themes.forEach(function (theme) {\r
 -                    var disabled = (opts.server_settings.client.settings.theme !== theme),\r
 +            jobs.finishJob('load_settings');\r
 +\r
 +            // If debugging, grab the debug scripts and load them\r
 +            if (getQueryVariable('debug')) {\r
 +                scripts = scripts.concat(data.scripts);\r
 +                loadNextScript();\r
 +            }\r
++\r
+             // Load themes\r
+             if (opts.themes) {\r
 -                    var link = $.parseHTML('<link rel="' + rel + '" type="text/css" data-theme href="'+ opts.base_path + '/assets/themes/' + theme.name.toLowerCase() + '/style.css" title="' + theme.name.toLowerCase() + '"' + (disabled?'disabled':'') + '/>');\r
++                $.each(opts.themes, function (theme_idx, theme) {\r
++                    var disabled = (opts.server_settings.client.settings.theme.toLowerCase() !== theme.name.toLowerCase()),\r
+                         rel = (disabled?'alternate ':'') + 'stylesheet' /*+ (disabled?' prefetch':'')*/;\r
 -\r
 -            // Start loading scripts\r
 -            loadNextScript();\r
++\r
++                    var link = $.parseHTML('<link rel="' + rel + '" type="text/css" data-theme href="'+ opts.base_path + '/assets/themes/' + theme.name.toLowerCase() + '/style.css" title="' + theme.name.toLowerCase() + '" ' + (disabled?'disabled':'') + '/>');\r
+                     link.disabled = disabled;\r
++\r
+                     $(link).appendTo($('head'));\r
+                 });\r
+             }\r
          });\r
 -    };\r
 +\r
 +        jobs.registerJob('window_load');\r
 +        window.onload = function() {\r
 +            jobs.finishJob('window_load');\r
 +        };\r
 +    })();\r
  </script>\r
  </body>\r
  </html>\r
index abd207662cc9b54bfc9031626676f91ca0ed05f2,50d7b58d5419d83b259c28621b62b9b235048a4f..ebf8edbcec3f4fe380a9e285ee196a3b4e9b3681
@@@ -32,9 -32,12 +32,10 @@@ _kiwi.model.Application = function () 
              // Any options sent down from the server\r
              this.server_settings = options[0].server_settings || {};\r
              this.translations = options[0].translations || {};\r
++            this.themes = options[0].themes || [];\r
  \r
 -            // Best guess at where the kiwi server is\r
 -            this.detectKiwiServer();\r
 -\r
 -            // Takes instances of model_network\r
 -            this.connections = new _kiwi.model.NetworkPanelList();\r
 +            // Best guess at where the kiwi server is if not already specified\r
 +            this.kiwi_server = options[0].kiwi_server || this.detectKiwiServer();\r
  \r
              // Set any default settings before anything else is applied\r
              if (this.server_settings && this.server_settings.client && this.server_settings.client.settings) {\r
Simple merge
index 936aea9bfe66b8589354ae58835baebe3db3ff64,3d80508925ad277b591c499109dc6d386d115976..722042ac403727d6a6bfd5b359ae735a2a6c5b96
@@@ -183,12 -181,18 +183,20 @@@ conf.client = 
          show_joins_parts: true,
          show_timestamps: false,
          mute_sounds: false,
 -        show_emoticons: true
 -    }
 +        show_emoticons: true,
 +        count_all_activity: true
 +    },
 +    window_title: 'Kiwi IRC'
  };
  
+ // List of themes available for the user to choose from
+ conf.client_themes = [
+     'relaxed',
+     'mini',
+     'cli',
+     'basic'
+ ];
  
  // If set, the client may only connect to this 1 IRC server
  //conf.restrict_server = "irc.kiwiirc.com";
index 225e1842307fafe9983c3651a00c90d12062ae05,f62f6b2621a54aed2fd1265ecc3da8556da6fd29..0ee3e8c690a15a61d8bb36bf093a257b17d1f459
@@@ -313,32 -309,40 +314,40 @@@ function generateSettings(request, debu
          vars.client_plugins = config.get().client_plugins;
      }
  
-     // Get a list of available translations
-     fs.readFile(__dirname + '/../client/src/translations/translations.json', function (err, translations) {
+     // Read theme information
 -    readThemeInfo(config.get().client_themes, function (err, themes) {
++    readThemeInfo(config.get().client_themes || ['relaxed'], function (err, themes) {
          if (err) {
              return callback(err);
          }
 -        
 +
-         var translation_files;
-         translations = JSON.parse(translations);
-         fs.readdir(__dirname + '/../client/src/translations/', function (err, pofiles) {
-             var hash, settings;
+         vars.themes = themes;
+         // Get a list of available translations
 -        fs.readFile(__dirname + '/../client/assets/src/translations/translations.json', function (err, translations) {
++        fs.readFile(__dirname + '/../client/src/translations/translations.json', function (err, translations) {
              if (err) {
                  return callback(err);
              }
  
-             pofiles.forEach(function (file) {
-                 var locale = file.slice(0, -3);
-                 if ((file.slice(-3) === '.po') && (locale !== 'template')) {
-                     vars.translations.push({tag: locale, language: translations[locale]});
+             translations = JSON.parse(translations);
 -            fs.readdir(__dirname + '/../client/assets/src/translations/', function (err, pofiles) {
++            fs.readdir(__dirname + '/../client/src/translations/', function (err, pofiles) {
+                 var settings;
+                 if (err) {
+                     return callback(err);
                  }
-             });
  
-             settings = cached_settings[debug?'debug':'production'];
-             settings.settings = JSON.stringify(vars);
-             settings.hash = crypto.createHash('md5').update(settings.settings).digest('hex');
+                 pofiles.forEach(function (file) {
+                     var locale = file.slice(0, -3);
+                     if ((file.slice(-3) === '.po') && (locale !== 'template')) {
+                         vars.translations.push({tag: locale, language: translations[locale]});
+                     }
+                 });
+                 settings = cached_settings[debug?'debug':'production'];
+                 settings.settings = JSON.stringify(vars);
+                 settings.hash = crypto.createHash('md5').update(settings.settings).digest('hex');
  
-             return callback(null, settings);
+                 return callback(null, settings);
+             });
          });
      });
  }