[kune-commits] r813 - in trunk: script src/main/java/org/ourproject/kune/app src/main/java/org/ourproject/kune/app/public src/main/java/org/ourproject/kune/app/public/css src/main/java/org/ourproject/kune/chat/client src/main/java/org/ourproject/kune/chat/client/actions src/main/java/org/ourproject/kune/docs/client src/main/java/org/ourproject/kune/docs/client/actions src/main/java/org/ourproject/kune/docs/client/ctx/admin src/main/java/org/ourproject/kune/docs/client/ui src/main/java/org/ourproject/kune/platf/client/app src/main/java/org/ourproject/kune/platf/client/services src/main/java/org/ourproject/kune/platf/client/state src/main/java/org/ourproject/kune/workspace/client src/main/java/org/ourproject/kune/workspace/client/actions src/main/java/org/ourproject/kune/workspace/client/presence/ui src/main/java/org/ourproject/kune/workspace/client/sitebar src/main/java/org/ourproject/kune/workspace/client/sitebar/bar src/main/java/org/ourproject/kune/workspace/client/sitebar/login src/main/java/org/ourproject/kune/workspace/client/sitebar/msg src/main/java/org/ourproject/kune/workspace/client/socialnet src/main/java/org/ourproject/kune/workspace/client/socialnet/ui src/main/java/org/ourproject/kune/workspace/client/tags src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign src/test/java/org/ourproject/kune/platf/client/state src/test/java/org/ourproject/kune/sitebar/client/ui

vjrj vjrj at ourproject.org
Wed Jul 23 06:12:39 CEST 2008


Author: vjrj
Date: 2008-07-23 06:11:58 +0200 (Wed, 23 Jul 2008)
New Revision: 813

Added:
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteToken.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignIn.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInForm.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java
Removed:
   trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLoginAction.java
   trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLogoutAction.java
   trunk/src/main/java/org/ourproject/kune/chat/client/actions/InitChatEngineAction.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/actions/InitAction.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedInAction.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedOutAction.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/actions/StopAction.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLoginAction.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLogoutAction.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserRegisterAction.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginListener.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java
   trunk/src/test/java/org/ourproject/kune/sitebar/client/ui/LoginPresenterTest.java
Modified:
   trunk/script/css-compact-and-tidy.css
   trunk/script/deploy_gwt.sh
   trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
   trunk/src/main/java/org/ourproject/kune/app/public/Kune.html
   trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
   trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
   trunk/src/main/java/org/ourproject/kune/app/public/css/richtext.css
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java
   trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java
   trunk/src/main/java/org/ourproject/kune/docs/client/actions/SaveDocumentAction.java
   trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java
   trunk/src/main/java/org/ourproject/kune/docs/client/ui/DocumentFactory.java
   trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java
   trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java
   trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java
   trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
   trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java
   trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionImpl.java
   trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java
   trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceClientModule.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceEvents.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/presence/ui/GroupSummaryPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/Site.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteBarFactory.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/RegisterForm.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/msg/SiteMessagePanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanelNew.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ui/ParticipationSummaryPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkView.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkView.java
   trunk/src/test/java/org/ourproject/kune/platf/client/state/StateManagerTest.java
Log:
Workspace refactorization

Modified: trunk/script/css-compact-and-tidy.css
===================================================================
--- trunk/script/css-compact-and-tidy.css	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/script/css-compact-and-tidy.css	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,10 +1,11 @@
 #!/bin/bash
+#!/bin/bash
 ORIG=src/main/java/org/ourproject/kune/app/public/
 CATTMPFILE=`mktemp -t css.1.XXX` || exit 1
 CSSTMPFILE=`mktemp -t css.2.XXX` || exit 1
 DEST=src/main/java/org/ourproject/kune/app/public/css/all.css
 DEST2=src/main/java/org/ourproject/kune/app/public/css/richtext.css
-CSS='css/reset.css css/fonts-min.css js/ext/resources/css/ext-all.css js/ext/resources/css/xtheme-gray.css css/kune.css css/workspace.css css/chat.css css/docs.css'
+CSS='css/reset.css css/fonts-min.css js/ext/resources/css/ext-all.css js/ext/resources/css/xtheme-gray.css css/kune.css css/workspace.css css/chat.css css/docs.css css/kune-new.css'
 CSS2='css/reset.css css/fonts-min.css css/base-min.css css/rte.css'
 
 function concat {
@@ -16,13 +17,19 @@
 }
 
 function tidy {
-# Dependency csstidy (apt-get install csstidy)
-csstidy $CATTMPFILE \
-  --template=highest \
-  --optimise_shorthands=2 \
-  --preserve_css=true \
-  --silent=true \
-  $CSSTMPFILE
+ls `which csstidy | cut -d " " -f 1` 2> /dev/null
+if [[ $? -eq 0 ]]
+then
+  csstidy $CATTMPFILE \
+    --template=highest \
+    --optimise_shorthands=2 \
+    --preserve_css=true \
+    --silent=true \
+    $CSSTMPFILE
+else
+  echo Waring: Dependency csstidy, in debian: apt-get install csstidy
+  cp $CATTMPFILE $CSSTMPFILE
+fi
 cat $CSSTMPFILE | sed 's/\.\.\/images/\.\.\/js\/ext\/resources\/images/g' > $1
 }
 

Modified: trunk/script/deploy_gwt.sh
===================================================================
--- trunk/script/deploy_gwt.sh	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/script/deploy_gwt.sh	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,7 +1,9 @@
 #!/bin/bash
 find target/kune-0.0.4/org.ourproject.kune.app.Kune/ -name .DS_Store -exec rm {} \;
 
-#script/css-compact-and-tidy.css
+script/css-compact-and-tidy.css
 script/css-update.sh
 
+cp target/kune-0.0.4/org.ourproject.kune.app.Kune/js/ext/ext-all-debug.js target/kune-0.0.4/org.ourproject.kune.app.Kune/js/ext/ext-all.js 
 unison -silent -batch -auto -ui text target/kune-0.0.4/org.ourproject.kune.app.Kune src/main/webapp/gwt/org.ourproject.kune.app.Kune
+

Modified: trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml	2008-07-23 04:11:58 UTC (rev 813)
@@ -3,34 +3,21 @@
 	<inherits name='com.google.gwt.user.User' />
 	<inherits name="org.cafesip.gwtcomp.GWTComponents" />
 
+    <inherits name="com.calclab.suco.Suco" />
 
+    <inherits name='org.ourproject.kune.platf.Kune-Platform' />
+    <inherits name='org.ourproject.kune.docs.Kune-Docs' />
+    <inherits name='org.ourproject.kune.chat.Kune-Chat' />
+
 	<!-- gwt-ext -->
 	<inherits name='com.gwtext.GwtExt' />
 	<script src="js/ext/adapter/ext/ext-base.js" />
 	<script src="js/ext/ext-all.js" />
 
 	<!-- kune css -->
-	<!-- when build a unique css with csstidy use all.css -->
-	<!--   <stylesheet src="css/all.css" /> -->
-	
-	<stylesheet src="css/reset.css" />
-	<stylesheet src="css/fonts-min.css" />
-	<stylesheet src="js/ext/resources/css/ext-all.css" />
-	<stylesheet src="js/ext/resources/css/xtheme-gray.css" />
-	<stylesheet src="css/workspace.css" />
-	<stylesheet src="css/chat.css" />
-	<stylesheet src="css/docs.css" />
-	<stylesheet src="css/kune.css" />
-	<stylesheet src="css/kune-new.css" />
+	<stylesheet src="css/all.css" />
 
-	<inherits name="com.calclab.suco.Suco" />
-
-	<inherits name='org.ourproject.kune.platf.Kune-Platform' />
-	<inherits name='org.ourproject.kune.docs.Kune-Docs' />
-	<inherits name='org.ourproject.kune.chat.Kune-Chat' />
-
 	<inherits name="com.allen_sauer.gwt.log.gwt-log" />
-
 	<extend-property name="log_level" values="DEBUG" />
 	<set-property name="log_level" value="DEBUG" />
 	<set-property name="log_DivLogger" value="DISABLED" />
@@ -44,9 +31,8 @@
 	<!-- Specify the app entry point class. -->
 	<entry-point class='org.ourproject.kune.app.client.KuneEntryPoint' />
 
-	<!-- <script src="js/ext/ext-custom.js" /> -->
-
 	<!--http://code.google.com/p/google-web-toolkit/issues/detail?id=42 -->
 
-	<!--  <set-property name="user.agent" value="gecko" /> -->
+	<!-- <set-property name="user.agent" value="gecko" /> -->
+	
 </module>

Modified: trunk/src/main/java/org/ourproject/kune/app/public/Kune.html
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/Kune.html	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/public/Kune.html	2008-07-23 04:11:58 UTC (rev 813)
@@ -14,7 +14,6 @@
 <link rel="stylesheet" type="text/css" href="css/workspace.css">
 <link rel="stylesheet" type="text/css" href="css/chat.css">
 <link rel="stylesheet" type="text/css" href="css/docs.css">
-<link rel="stylesheet" type="text/css" href="css/kune.css">
 -->
 
 <link rel="shortcut icon" href="images/favicon.ico" />

Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css	2008-07-23 04:11:58 UTC (rev 813)
@@ -3,25 +3,2131 @@
 Code licensed under the BSD License:
 http://developer.yahoo.net/yui/license.txt
 version: 2.3.1
-*/body{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}/*
+*/
+body{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input, textarea, select{font-family:inherit;font-size:inherit;font-weight:inherit;}
+
+/*
 Copyright (c) 2007, Yahoo! Inc. All rights reserved.
 Code licensed under the BSD License:
 http://developer.yahoo.net/yui/license.txt
 version: 2.3.1
-*/body{font:13px/1.22 arial,helvetica,clean,sans-serif;font-size:small;font:x-small;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;font-size:108%;line-height:99%;}/*
- * Ext JS Library 2.0.2
- * Copyright(c) 2006-2008, Ext JS, LLC.
- * licensing at extjs.com
- * 
- * http://extjs.com/license
- */html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400;}ol,ul{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}.ext-el-mask{z-index:20000;position:absolute;top:0;left:0;-moz-opacity:.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:100%;height:100%;zoom:1;}.ext-el-mask-msg{z-index:20001;position:absolute;top:0;left:0;border:1px solid #6593cf;background:#c3daf9 url(../js/ext/resources/images/default/box/tb-blue.gif) repeat-x 0 -16px;padding:2px;}.ext-el-mask-msg div{padding:5px 10px;background:#eee;border:1px solid #a3bad9;color:#222;font:normal 11px tahoma,arial,helvetica,sans-serif;cursor:wait;}.ext-shim{position:absolute;visibility:hidden;left:0;top:0;overflow:hidden;}.ext-ie .ext-shim{filter:alpha(opacity=0);}.ext-ie6 .ext-shim{margin-left:5px;margin-top:3px;}.x-mask-loading div{padding:5px 10px 5px 25px;background:#fbfbfb url(../js/ext/resources/images/default/grid/loading.gif) no-repeat 5px 5px;line-height:16px;}.x-hidden,.x-hide-offsets{position:absolute;left:-10000px;top:-10000px;visibility:hidden;}.x-hide-display{display:none!important;}.x-hide-visibility{visibility:hidden!important;}.x-masked{overflow:hidden!important;}.x-masked select,.x-masked object,.x-masked embed{visibility:hidden;}.x-layer{visibility:hidden;}.x-unselectable,.x-unselectable *{-moz-user-select:none;-khtml-user-select:none;}.x-repaint{zoom:1;background-color:transparent;-moz-outline:none;}.x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}.x-item-disabled *{color:gray!important;cursor:default!important;}.x-splitbar-proxy{position:absolute;visibility:hidden;z-index:20001;background:#aaa;zoom:1;line-height:1px;font-size:1px;overflow:hidden;}.x-splitbar-h,.x-splitbar-proxy-h{cursor:e-resize;cursor:col-resize;}.x-splitbar-v,.x-splitbar-proxy-v{cursor:s-resize;cursor:row-resize;}.x-color-palette{width:150px;height:92px;cursor:pointer;}.x-color-palette a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer;}.x-color-palette a:hover,.x-color-palette a.x-color-palette-sel{border:1px solid #8BB8F3;background:#deecfd;}.x-color-palette em{display:block;border:1px solid #ACA899;}.x-color-palette em span{cursor:pointer;display:block;height:10px;line-height:10px;width:10px;}.x-ie-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;background:#777;zoom:1;}.x-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;}.x-shadow *{overflow:hidden;}.x-shadow *{padding:0;border:0;margin:0;clear:none;zoom:1;}.x-shadow .xstc,.x-shadow .xsbc{height:6px;float:left;}.x-shadow .xstl,.x-shadow .xstr,.x-shadow .xsbl,.x-shadow .xsbr{width:6px;height:6px;float:left;}.x-shadow .xsc{width:100%;}.x-shadow .xsml,.x-shadow .xsmr{width:6px;float:left;height:100%;}.x-shadow .xsmc{float:left;height:100%;background:transparent url(../js/ext/resources/images/default/shadow-c.png);}.x-shadow .xst,.x-shadow .xsb{height:6px;overflow:hidden;width:100%;}.x-shadow .xsml{background:transparent url(../js/ext/resources/images/default/shadow-lr.png) repeat-y 0 0;}.x-shadow .xsmr{background:transparent url(../js/ext/resources/images/default/shadow-lr.png) repeat-y -6px 0;}.x-shadow .xstl{background:transparent url(../js/ext/resources/images/default/shadow.png) no-repeat 0 0;}.x-shadow .xstc{background:transparent url(../js/ext/resources/images/default/shadow.png) repeat-x 0 -30px;}.x-shadow .xstr{background:transparent url(../js/ext/resources/images/default/shadow.png) repeat-x 0 -18px;}.x-shadow .xsbl{background:transparent url(../js/ext/resources/images/default/shadow.png) no-repeat 0 -12px;}.x-shadow .xsbc{background:transparent url(../js/ext/resources/images/default/shadow.png) repeat-x 0 -36px;}.x-shadow .xsbr{background:transparent url(../js/ext/resources/images/default/shadow.png) repeat-x 0 -6px;}.loading-indicator{font-size:11px;background-image:url(../js/ext/resources/images/default/grid/loading.gif);background-repeat:no-repeat;background-position:left;padding-left:20px;line-height:16px;margin:3px;}.x-text-resize{position:absolute;left:-1000px;top:-1000px;visibility:hidden;zoom:1;}.x-drag-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background-image:url(../js/ext/resources/images/default/s.gif);z-index:20000;}.x-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}.x-spotlight{z-index:8999;position:absolute;top:0;left:0;-moz-opacity:.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:0;height:0;zoom:1;}.x-tab-panel{overflow:hidden;}.x-tab-panel-header,.x-tab-panel-footer{background:#deecfd;border:1px solid #8db2e3;overflow:hidden;zoom:1;}.x-tab-panel-header{border:1px solid #8db2e3;padding-bottom:2px;}.x-tab-panel-footer{border:1px solid #8db2e3;padding-top:2px;}.x-tab-strip-wrap{width:100%;overflow:hidden;position:relative;zoom:1;}ul.x-tab-strip{display:block;width:5000px;zoom:1;}ul.x-tab-strip-top{padding-top:1px;background:url(../js/ext/resources/images/default/tabs/tab-strip-bg.gif) #cedff5 repeat-x bottom;border-bottom:1px solid #8db2e3;}ul.x-tab-strip-bottom{padding-bottom:1px;background:url(../js/ext/resources/images/default/tabs/tab-strip-btm-bg.gif) #cedff5 repeat-x top;border-top:1px solid #8db2e3;border-bottom:0 none;}.x-tab-panel-header-plain .x-tab-strip-top{background:transparent!important;padding-top:0!important;}.x-tab-panel-header-plain{background:transparent!important;border-width:0!important;padding-bottom:0!important;}.x-tab-panel-header-plain .x-tab-strip-spacer{border:1px solid #8db2e3;border-top:0 none;height:2px;background:#deecfd;font-size:1px;line-height:1px;}.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer{height:3px;}ul.x-tab-strip li{float:left;margin-left:2px;}ul.x-tab-strip li.x-tab-edge{float:left;margin:0!important;padding:0!important;border:0 none!important;font-size:1px!important;line-height:1px!important;overflow:hidden;zoom:1;background:transparent!important;width:1px;}.x-tab-strip a,.x-tab-strip span,.x-tab-strip em{display:block;}.x-tab-strip a{text-decoration:none!important;-moz-outline:none;outline:none;cursor:pointer;}.x-tab-strip-inner{overflow:hidden;text-overflow:ellipsis;}.x-tab-strip span.x-tab-strip-text{font:normal 11px tahoma,arial,helvetica;color:#416aa3;white-space:nowrap;cursor:pointer;padding:4px 0;}.x-tab-strip .x-tab-with-icon .x-tab-right{padding-left:6px;}.x-tab-strip .x-tab-with-icon span.x-tab-strip-text{padding-left:20px;background-position:0 3px;background-repeat:no-repeat;}.x-tab-strip-over span.x-tab-strip-text{color:#15428b;}.x-tab-strip-active{cursor:default;}.x-tab-strip-active span.x-tab-strip-text{cursor:default;color:#15428b;font-weight:700;}.x-tab-strip-disabled .x-tabs-text{cursor:default;color:#aaa;}.x-tab-panel-body{overflow:hidden;}.x-tab-panel-bwrap{overflow:hidden;}.ext-ie .x-tab-strip .x-tab-right{position:relative;}.x-tab-strip-top .x-tab-strip-active .x-tab-right{margin-bottom:-1px;}.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-bottom:5px;}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{margin-top:-1px;}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-top:5px;}.x-tab-strip-top .x-tab-right{background:transparent url(../js/ext/resources/images/default/tabs/tabs-sprite.gif) no-repeat 0 -51px;padding-left:10px;}.x-tab-strip-top .x-tab-left{background:transparent url(../js/ext/resources/images/default/tabs/tabs-sprite.gif) no-repeat right -351px;padding-right:10px;}.x-tab-strip-top .x-tab-strip-inner{background:transparent url(../js/ext/resources/images/default/tabs/tabs-sprite.gif) repeat-x 0 -201px;}.x-tab-strip-top .x-tab-strip-over .x-tab-right{background-position:0 -101px;}.x-tab-strip-top .x-tab-strip-over .x-tab-left{background-position:right -401px;}.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner{background-position:0 -251px;}.x-tab-strip-top .x-tab-strip-active .x-tab-right{background-position:0 0;}.x-tab-strip-top .x-tab-strip-active .x-tab-left{background-position:right -301px;}.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner{background-position:0 -151px;}.x-tab-strip-bottom .x-tab-right{background:url(../js/ext/resources/images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;}.x-tab-strip-bottom .x-tab-left{background:url(../js/ext/resources/images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left;}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background:url(../js/ext/resources/images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left;}.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background:url(../js/ext/resources/images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right;}.x-tab-strip-bottom .x-tab-left{padding:0 10px;}.x-tab-strip-bottom .x-tab-right{padding:0;}.x-tab-strip .x-tab-strip-close{display:none;}.x-tab-strip-closable{position:relative;}.x-tab-strip-closable .x-tab-left{padding-right:19px;}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{background-image:url(../js/ext/resources/images/default/tabs/tab-close.gif);opacity:.6;-moz-opacity:.6;background-repeat:no-repeat;display:block;width:11px;height:11px;position:absolute;top:3px;right:3px;cursor:pointer;z-index:2;}.x-tab-strip .x-tab-strip-active a.x-tab-strip-close{opacity:.8;-moz-opacity:.8;}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{background-image:url(../js/ext/resources/images/default/tabs/tab-close.gif);opacity:1;-moz-opacity:1;}.x-tab-panel-body{border:1px solid #8db2e3;background:#fff;}.x-tab-panel-body-top{border-top:0 none;}.x-tab-panel-body-bottom{border-bottom:0 none;}.x-tab-scroller-left{background:transparent url(../js/ext/resources/images/default/tabs/scroll-left.gif) no-repeat -18px 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;left:0;top:0;z-index:10;cursor:pointer;}.x-tab-scroller-left-over{background-position:0 0;}.x-tab-scroller-left-disabled{background-position:-18px 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}.x-tab-scroller-right{background:transparent url(../js/ext/resources/images/default/tabs/scroll-right.gif) no-repeat 0 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;right:0;top:0;z-index:10;cursor:pointer;}.x-tab-scroller-right-over{background-position:-18px 0;}.x-tab-scroller-right-disabled{background-position:0 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}.x-tab-scrolling .x-tab-strip-wrap{margin-left:18px;margin-right:18px;}.x-tab-scrolling{position:relative;}.x-tab-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}.x-tab-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}.x-border-layout-ct .x-tab-panel{background:#FFF;}.x-form-field{margin:0;font:normal 12px tahoma,arial,helvetica,sans-serif;}.x-form-text,textarea.x-form-field{padding:1px 3px;background:#fff url(../js/ext/resources/images/default/form/text-bg.gif) repeat-x 0 0;border:1px solid #B5B8C8;}textarea.x-form-field{padding:2px 3px;}.x-form-text{height:22px;line-height:18px;vertical-align:middle;}.ext-ie .x-form-text{margin:-1px 0;height:22px;line-height:18px;}.ext-ie textarea.x-form-field{margin:-1px 0;}.ext-strict .x-form-text{height:18px;}.ext-safari .x-form-text{height:20px;padding:0 3px;}.ext-safari.ext-mac textarea.x-form-field{margin-bottom:-2px;}.ext-gecko .x-form-text{padding-top:2px;padding-bottom:0;}textarea{resize:none;}.x-form-select-one{height:20px;line-height:18px;vertical-align:middle;background-color:#fff;border:1px solid #B5B8C8;}.x-form-field-wrap{position:relative;zoom:1;white-space:nowrap;}.x-editor .x-form-check-wrap{background:#fff;}.x-form-field-wrap .x-form-trigger{width:17px;height:21px;border:0;background:transparent url(../js/ext/resources/images/default/form/trigger.gif) no-repeat 0 0;cursor:pointer;border-bottom:1px solid #B5B8C8;position:absolute;top:0;}.ext-safari .x-form-field-wrap .x-form-trigger{height:21px;}.x-form-field-wrap .x-form-date-trigger{background-image:url(../js/ext/resources/images/default/form/date-trigger.gif);cursor:pointer;}.x-form-field-wrap .x-form-clear-trigger{background-image:url(../js/ext/resources/images/default/form/clear-trigger.gif);cursor:pointer;}.x-form-field-wrap .x-form-search-trigger{background-image:url(../js/ext/resources/images/default/form/search-trigger.gif);cursor:pointer;}.ext-safari .x-form-field-wrap .x-form-trigger{right:0;}.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{position:static;top:auto;vertical-align:top;}.x-form-field-wrap .x-form-trigger-over{background-position:-17px 0;}.x-form-field-wrap .x-form-trigger-click{background-position:-34px 0;}.x-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;}.x-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;}.x-trigger-wrap-focus .x-form-trigger-click{background-position:-85px 0;}.x-trigger-wrap-focus .x-form-trigger{border-bottom:1px solid #7eadd9;}.x-item-disabled .x-form-trigger-over{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}.x-item-disabled .x-form-trigger-click{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}.x-form-focus,textarea.x-form-focus{border:1px solid #7eadd9;}.x-form-invalid,textarea.x-form-invalid{background:#fff url(../js/ext/resources/images/default/grid/invalid_line.gif) repeat-x bottom;border:1px solid #dd7870;}.ext-safari .x-form-invalid{background-color:#fee;border:1px solid #ff7870;}.x-editor{visibility:hidden;padding:0;margin:0;}.x-form-check-wrap{line-height:18px;}.ext-ie .x-form-check-wrap input{width:15px;height:15px;}.x-editor .x-form-check-wrap{padding:3px;}.x-editor .x-form-checkbox{height:13px;}.x-form-grow-sizer{font:normal 12px tahoma,arial,helvetica,sans-serif;left:-10000px;padding:8px 3px;position:absolute;visibility:hidden;top:-10000px;white-space:pre-wrap;white-space:0;white-space:0;white-space:0;word-wrap:break-word;zoom:1;}.x-form-grow-sizer p{margin:0!important;border:0 none!important;padding:0!important;}.x-form-item{font:normal 12px tahoma,arial,helvetica,sans-serif;display:block;margin-bottom:4px;}.x-form-item label{display:block;float:left;width:100px;padding:3px;padding-left:0;clear:left;z-index:2;position:relative;}.x-form-element{padding-left:105px;position:relative;}.x-form-invalid-msg{color:#e00;padding:2px;padding-left:18px;font:normal 11px tahoma,arial,helvetica,sans-serif;background:transparent url(../js/ext/resources/images/default/shared/warning.gif) no-repeat 0 2px;line-height:16px;width:200px;}.x-form-label-right label{text-align:right;}.x-form-label-top .x-form-item label{width:auto;float:none;clear:none;display:inline;margin-bottom:4px;position:static;}.x-form-label-top .x-form-element{padding-left:0;padding-top:4px;}.x-form-label-top .x-form-item{padding-bottom:4px;}.x-form-empty-field{color:gray;}.x-small-editor .x-form-field{font:normal 11px arial,tahoma,helvetica,sans-serif;}.x-small-editor .x-form-text{height:20px;line-height:16px;vertical-align:middle;}.ext-ie .x-small-editor .x-form-text{margin-top:-1px!important;margin-bottom:-1px!important;height:20px!important;line-height:16px!important;}.ext-strict .x-small-editor .x-form-text{height:16px!important;}.ext-safari .x-small-editor .x-form-field{font:normal 12px arial,tahoma,helvetica,sans-serif;}.ext-ie .x-small-editor .x-form-text{height:20px;line-height:16px;}.ext-border-box .x-small-editor .x-form-text{height:20px;}.x-small-editor .x-form-select-one{height:20px;line-height:16px;vertical-align:middle;}.x-small-editor .x-form-num-field{text-align:right;}.x-small-editor .x-form-field-wrap .x-form-trigger{height:19px;}.x-form-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}.x-form-clear-left{clear:left;height:0;overflow:hidden;line-height:0;font-size:0;}.x-form-cb-label{width:auto!important;float:none!important;clear:none!important;display:inline!important;margin-left:4px;}.x-form-column{float:left;padding:0;margin:0;width:48%;overflow:hidden;zoom:1;}.x-form .x-form-btns-ct .x-btn{float:right;clear:none;}.x-form .x-form-btns-ct .x-form-btns td{border:0;padding:0;}.x-form .x-form-btns-ct .x-form-btns-right table{float:right;clear:none;}.x-form .x-form-btns-ct .x-form-btns-left table{float:left;clear:none;}.x-form .x-form-btns-ct .x-form-btns-center{text-align:center;}.x-form .x-form-btns-ct .x-form-btns-center table{margin:0 auto;}.x-form .x-form-btns-ct table td.x-form-btn-td{padding:3px;}.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}.x-form .x-form-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}.x-form .x-form-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}.x-form .x-form-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}.x-form-invalid-icon{width:16px;height:18px;visibility:hidden;position:absolute;left:0;top:0;display:block;background:transparent url(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 0 2px;}.x-fieldset{border:1px solid #B5B8C8;padding:10px;margin-bottom:10px;}.x-fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}.ext-ie .x-fieldset legend{margin-bottom:10px;}.ext-ie .x-fieldset{padding-top:0;padding-bottom:10px;}.x-fieldset legend .x-tool-toggle{margin-right:3px;margin-left:0;float:left!important;}.x-fieldset legend input{margin-right:3px;float:left!important;height:13px;width:13px;}fieldset.x-panel-collapsed{padding-bottom:0!important;border-width:1px 0 0!important;}fieldset.x-panel-collapsed .x-fieldset-bwrap{visibility:hidden;position:absolute;left:-1000px;top:-1000px;}.ext-ie .x-fieldset-bwrap{zoom:1;}.ext-ie td .x-form-text{position:relative;top:-1px;}.x-fieldset-noborder{border:0 none transparent;}.x-fieldset-noborder legend{margin-left:-3px;}.ext-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px;}.ext-ie .x-fieldset-noborder legend span{position:absolute;left:-5px;}.ext-gecko .x-window-body .x-form-item{-moz-outline:none;overflow:auto;}.ext-gecko .x-form-item{-moz-outline:none;}.x-hide-label label.x-form-item-label{display:none;}.x-hide-label .x-form-element{padding-left:0!important;}.x-fieldset{overflow:hidden;}.x-fieldset-bwrap{overflow:hidden;zoom:1;}.x-fieldset-body{overflow:hidden;}.x-btn{font:normal 11px tahoma,verdana,helvetica;cursor:pointer;white-space:nowrap;}.x-btn button{border:0 none;background:transparent;font:normal 11px tahoma,verdana,helvetica;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;}* html .ext-ie .x-btn button{width:1px;}.ext-gecko .x-btn button{padding-left:0;padding-right:0;}.ext-ie .x-btn button{padding-top:2px;}.x-btn-icon .x-btn-center .x-btn-text{background-position:center;background-repeat:no-repeat;height:16px;width:16px;cursor:pointer;white-space:nowrap;padding:0;}.x-btn-icon .x-btn-center{padding:1px;}.x-btn em{font-style:normal;font-weight:400;}.x-btn-text-icon .x-btn-center .x-btn-text{background-position:0 2px;background-repeat:no-repeat;padding-left:18px;padding-top:3px;padding-bottom:2px;padding-right:0;}.x-btn-left,.x-btn-right{font-size:1px;line-height:1px;}.x-btn-left{width:3px;height:21px;background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 0;}.x-btn-right{width:3px;height:21px;background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -21px;}.x-btn-left i,.x-btn-right i{display:block;width:3px;overflow:hidden;font-size:1px;line-height:1px;}.x-btn-center{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) repeat-x 0 -42px;vertical-align:middle;text-align:center;padding:0 5px;cursor:pointer;white-space:nowrap;}.x-btn-over .x-btn-left{background-position:0 -63px;}.x-btn-over .x-btn-right{background-position:0 -84px;}.x-btn-over .x-btn-center{background-position:0 -105px;}.x-btn-click .x-btn-center,.x-btn-menu-active .x-btn-center{background-position:0 -126px;}.x-btn-disabled *{color:gray!important;cursor:default!important;}.x-btn-menu-text-wrap .x-btn-center{padding:0 3px;}.ext-gecko .x-btn-menu-text-wrap .x-btn-center{padding:0 1px;}.x-btn-menu-arrow-wrap .x-btn-center{padding:0;}.x-btn-menu-arrow-wrap .x-btn-center button{width:12px!important;height:21px;padding:0!important;display:block;background:transparent url(../js/ext/resources/images/default/button/btn-arrow.gif) no-repeat left 3px;}.x-btn-with-menu .x-btn-center{padding-right:2px!important;}.x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat right 0;padding-right:10px;}.x-btn-text-icon .x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat right 3px;padding-right:10px;}.x-btn-pressed .x-btn-left{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -63px;}.x-btn-pressed .x-btn-right{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -84px;}.x-btn-pressed .x-btn-center{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) repeat-x 0 -126px;}.x-toolbar{border-color:#a9bfd3;border-style:solid;border-width:0 0 1px;display:block;padding:2px;background:#d0def0 url(../js/ext/resources/images/default/toolbar/bg.gif) repeat-x top left;position:relative;zoom:1;}.x-toolbar .x-item-disabled .x-btn-icon{opacity:.35;-moz-opacity:.35;filter:alpha(opacity=35);}.x-toolbar td{vertical-align:middle;}.mso .x-toolbar,.x-grid-mso .x-toolbar{border:0 none;background:url(../js/ext/resources/images/default/grid/mso-hd.gif);}.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 11px tahoma,arial,helvetica,sans-serif;}.x-toolbar .x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}.x-toolbar .x-item-disabled *{color:gray;cursor:default;}.x-toolbar .x-btn-left{background:none;}.x-toolbar .x-btn-right{background:none;}.x-toolbar .x-btn-center{background:none;padding:0;}.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:2px;}.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:0;}.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{padding:0 2px;}.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button{background-position:0 -47px;}.x-toolbar .x-btn-over .x-btn-left{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0;}.x-toolbar .x-btn-over .x-btn-right{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px;}.x-toolbar .x-btn-over .x-btn-center{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px;}.x-toolbar .x-btn-click .x-btn-left,.x-toolbar .x-btn-pressed .x-btn-left,.x-toolbar .x-btn-menu-active .x-btn-left{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px;}.x-toolbar .x-btn-click .x-btn-right,.x-toolbar .x-btn-pressed .x-btn-right,.x-toolbar .x-btn-menu-active .x-btn-right{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px;}.x-toolbar .x-btn-click .x-btn-center,.x-toolbar .x-btn-pressed .x-btn-center,.x-toolbar .x-btn-menu-active .x-btn-center{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px;}.x-toolbar .x-btn-with-menu .x-btn-center em{padding-right:8px;}.x-toolbar .ytb-text{padding:2px;}.x-toolbar .ytb-sep{background-image:url(../js/ext/resources/images/default/grid/grid-blue-split.gif);background-position:center;background-repeat:no-repeat;display:block;font-size:1px;height:16px;width:4px;overflow:hidden;cursor:default;margin:0 2px;border:0;}.x-toolbar .ytb-spacer{width:2px;}.x-tbar-page-number{width:24px;height:14px;}.x-tbar-page-first{background-image:url(../js/ext/resources/images/default/grid/page-first.gif)!important;}.x-tbar-loading{background-image:url(../js/ext/resources/images/default/grid/done.gif)!important;}.x-tbar-page-last{background-image:url(../js/ext/resources/images/default/grid/page-last.gif)!important;}.x-tbar-page-next{background-image:url(../js/ext/resources/images/default/grid/page-next.gif)!important;}.x-tbar-page-prev{background-image:url(../js/ext/resources/images/default/grid/page-prev.gif)!important;}.x-item-disabled .x-tbar-loading{background-image:url(../js/ext/resources/images/default/grid/loading.gif)!important;}.x-item-disabled .x-tbar-page-first{background-image:url(../js/ext/resources/images/default/grid/page-first-disabled.gif)!important;}.x-item-disabled .x-tbar-page-last{background-image:url(../js/ext/resources/images/default/grid/page-last-disabled.gif)!important;}.x-item-disabled .x-tbar-page-next{background-image:url(../js/ext/resources/images/default/grid/page-next-disabled.gif)!important;}.x-item-disabled .x-tbar-page-prev{background-image:url(../js/ext/resources/images/default/grid/page-prev-disabled.gif)!important;}.x-paging-info{position:absolute;top:5px;right:8px;color:#444;}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;background:#FFF;filter:alpha(opacity=0);opacity:0;zoom:1;}.x-resizable-handle-east{width:6px;cursor:e-resize;right:0;top:0;height:100%;}.ext-ie .x-resizable-handle-east{margin-right:-1px;}.x-resizable-handle-south{width:100%;cursor:s-resize;left:0;bottom:0;height:6px;}.ext-ie .x-resizable-handle-south{margin-bottom:-1px;}.x-resizable-handle-west{width:6px;cursor:w-resize;left:0;top:0;height:100%;}.x-resizable-handle-north{width:100%;cursor:n-resize;left:0;top:0;height:6px;}.x-resizable-handle-southeast{width:6px;cursor:se-resize;right:0;bottom:0;height:6px;z-index:101;}.x-resizable-handle-northwest{width:6px;cursor:nw-resize;left:0;top:0;height:6px;z-index:101;}.x-resizable-handle-northeast{width:6px;cursor:ne-resize;right:0;top:0;height:6px;z-index:101;}.x-resizable-handle-southwest{width:6px;cursor:sw-resize;left:0;bottom:0;height:6px;z-index:101;}.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1;}.x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east{background:url(../js/ext/resources/images/default/sizer/e-handle.gif);background-position:left;}.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west{background:url(../js/ext/resources/images/default/sizer/e-handle.gif);background-position:left;}.x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south{background:url(../js/ext/resources/images/default/sizer/s-handle.gif);background-position:top;}.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north{background:url(../js/ext/resources/images/default/sizer/s-handle.gif);background-position:top;}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background:url(../js/ext/resources/images/default/sizer/se-handle.gif);background-position:top left;}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background:url(../js/ext/resources/images/default/sizer/nw-handle.gif);background-position:bottom right;}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background:url(../js/ext/resources/images/default/sizer/ne-handle.gif);background-position:bottom left;}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background:url(../js/ext/resources/images/default/sizer/sw-handle.gif);background-position:top right;}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;display:none;left:0;top:0;z-index:50000;}.x-resizable-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background:#FFF;z-index:200000;-moz-opacity:0;opacity:0;filter:alpha(opacity=0);}.x-grid3{position:relative;overflow:hidden;background-color:#fff;}.x-grid-panel .x-panel-body{overflow:hidden!important;}.x-grid-panel .x-panel-mc .x-panel-body{border:1px solid #99bbe8;}.ext-ie .x-grid3 table,.ext-safari .x-grid3 table{table-layout:fixed;}.x-grid3-viewport{overflow:hidden;}.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td{font:normal 11px arial,tahoma,helvetica,sans-serif;-moz-outline:none;-moz-user-focus:normal;}.x-grid3-row td,.x-grid3-summary-row td{line-height:13px;vertical-align:top;padding-left:1px;padding-right:1px;-moz-user-select:none;}.x-grid3-hd-row td{line-height:15px;vertical-align:middle;border-left:1px solid #eee;border-right:1px solid #d0d0d0;}.x-grid3-hd-row .x-grid3-marker-hd{padding:3px;}.x-grid3-row .x-grid3-marker{padding:3px;}.x-grid3-cell-inner,.x-grid3-hd-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:3px 3px 3px 5px;white-space:nowrap;}.x-grid3-hd-inner{position:relative;cursor:inherit;padding:4px 3px 4px 5px;}.x-grid3-row-body{white-space:normal;}.x-grid3-body-cell{-moz-outline:0 none;outline:0 none;}.ext-ie .x-grid3-cell-inner,.ext-ie .x-grid3-hd-inner{width:100%;}.ext-strict .x-grid3-cell-inner,.ext-strict .x-grid3-hd-inner{width:auto;}.x-grid-row-loading{background:#fff url(../js/ext/resources/images/default/shared/loading-balls.gif) no-repeat center center;}.x-grid-page{overflow:hidden;}.x-grid3-row{cursor:default;border:1px solid #ededed;border-top-color:#fff;width:100%;}.x-grid3-row-alt{background-color:#fafafa;}.x-grid3-row-over{border:1px solid #ddd;background:#efefef url(../js/ext/resources/images/default/grid/row-over.gif) repeat-x left top;}.x-grid3-resize-proxy{width:1px;left:0;background-color:#777;cursor:e-resize;cursor:col-resize;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}.x-grid3-resize-marker{width:1px;left:0;background-color:#777;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}.x-grid3-focus{position:absolute;top:0;-moz-outline:0 none;outline:0 none;-moz-user-select:normal;-khtml-user-select:normal;}.x-grid3-header{background:#f9f9f9 url(../js/ext/resources/images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;cursor:default;zoom:1;padding:1px 0 0;}.x-grid3-header-pop{border-left:1px solid #d0d0d0;float:right;clear:none;}.x-grid3-header-pop-inner{border-left:1px solid #eee;width:14px;height:19px;background:transparent url(../js/ext/resources/images/default/grid/hd-pop.gif) no-repeat center center;}.ext-ie .x-grid3-header-pop-inner{width:15px;}.ext-strict .x-grid3-header-pop-inner{width:14px;}.x-grid3-header-inner{overflow:hidden;zoom:1;float:left;}.x-grid3-header-offset{padding-left:1px;width:10000px;}td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open{border-left:1px solid #aaccf6;border-right:1px solid #aaccf6;}td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner{background:#ebf3fd url(../js/ext/resources/images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;}.x-grid3-sort-icon{background-repeat:no-repeat;display:none;height:4px;width:13px;margin-left:3px;vertical-align:middle;}.sort-asc .x-grid3-sort-icon{background-image:url(../js/ext/resources/images/default/grid/sort_asc.gif);display:inline;}.sort-desc .x-grid3-sort-icon{background-image:url(../js/ext/resources/images/default/grid/sort_desc.gif);display:inline;}.ext-strict .ext-ie .x-grid3-header-inner{position:relative;}.ext-strict .ext-ie6 .x-grid3-hd{position:relative;}.ext-strict .ext-ie6 .x-grid3-hd-inner{position:static;}.x-grid3-body{zoom:1;}.x-grid3-scroller{overflow:auto;zoom:1;position:relative;}.x-grid3-cell-text,.x-grid3-hd-text{display:block;padding:3px 5px;-moz-user-select:none;-khtml-user-select:none;color:#000;}.x-grid3-split{background-image:url(../js/ext/resources/images/default/grid/grid-split.gif);background-position:center;background-repeat:no-repeat;cursor:e-resize;cursor:col-resize;display:block;font-size:1px;height:16px;overflow:hidden;position:absolute;top:2px;width:6px;z-index:3;}.x-grid3-hd-text{color:#15428b;}.x-dd-drag-proxy .x-grid3-hd-inner{background:#ebf3fd url(../js/ext/resources/images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;width:120px;padding:3px;border:1px solid #aaccf6;overflow:hidden;}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:1px;font-size:1px;overflow:hidden;visibility:hidden;z-index:20000;}.col-move-top{background:transparent url(../js/ext/resources/images/default/grid/col-move-top.gif) no-repeat left top;}.col-move-bottom{background:transparent url(../js/ext/resources/images/default/grid/col-move-bottom.gif) no-repeat left top;}.x-grid3-row-selected{background:#DFE8F6!important;border:1px dotted #a3bae9;}.x-grid3-cell-selected{background-color:#B8CFEE!important;color:#000;}.x-grid3-cell-selected span{color:#000!important;}.x-grid3-cell-selected .x-grid3-cell-text{color:#000;}.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background:#ebeadb url(../js/ext/resources/images/default/grid/grid-hrow.gif) repeat-x 0 bottom!important;vertical-align:middle!important;color:#000;padding:0;border-top:1px solid #FFF;border-bottom:none!important;border-right:1px solid #6fa0df!important;text-align:center;}.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{padding:0 4px;color:#15428b!important;text-align:center;}.x-grid3-dirty-cell{background:transparent url(../js/ext/resources/images/default/grid/dirty.gif) no-repeat 0 0;}.x-grid3-topbar,.x-grid3-bottombar{font:normal 11px arial,tahoma,helvetica,sans-serif;overflow:hidden;display:none;zoom:1;position:relative;}.x-grid3-topbar .x-toolbar{border-right:0 none;}.x-grid3-bottombar .x-toolbar{border-right:0 none;border-bottom:0 none;border-top:1px solid #a9bfd3;}.x-props-grid .x-grid3-cell{padding:1px;}.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y -16px!important;padding-left:12px;color:#000!important;}.x-props-grid .x-grid3-body .x-grid3-td-name{padding:1px;padding-right:0;background:#FFF!important;border:0 none;border-right:1px solid #eee;}.xg-hmenu-sort-asc .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-asc.gif);}.xg-hmenu-sort-desc .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-desc.gif);}.xg-hmenu-lock .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-lock.gif);}.xg-hmenu-unlock .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-unlock.gif);}.x-grid3-col-dd{border:0 none;padding:0;background:transparent;}.x-dd-drag-ghost .x-grid3-dd-wrap{padding:1px 3px 3px 1px;}.x-grid3-hd{-moz-user-select:none;}.x-grid3-hd-btn{display:none;position:absolute;width:14px;background:#c3daf9 url(../js/ext/resources/images/default/grid/grid3-hd-btn.gif) no-repeat left center;right:0;top:0;z-index:2;cursor:pointer;}.x-grid3-hd-over .x-grid3-hd-btn,.x-grid3-hd-menu-open .x-grid3-hd-btn{display:block;}a.x-grid3-hd-btn:hover{background-position:-14px center;}.x-grid3-body .x-grid3-td-expander{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y right;}.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner{padding:0!important;height:100%;}.x-grid3-row-expander{width:100%;height:18px;background-position:4px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/grid/row-expand-sprite.gif);}.x-grid3-row-collapsed .x-grid3-row-expander{background-position:4px 2px;}.x-grid3-row-expanded .x-grid3-row-expander{background-position:-21px 2px;}.x-grid3-row-collapsed .x-grid3-row-body{display:none!important;}.x-grid3-row-expanded .x-grid3-row-body{display:block!important;}.x-grid3-body .x-grid3-td-checker{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y right;}.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner,.x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner{padding:0!important;height:100%;}.x-grid3-row-checker,.x-grid3-hd-checker{width:100%;height:18px;background-position:2px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/grid/row-check-sprite.gif);}.x-grid3-row .x-grid3-row-checker{background-position:2px 2px;}.x-grid3-row-selected .x-grid3-row-checker,.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 2px;}.x-grid3-hd-checker{background-position:2px 3px;}.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 3px;}.x-grid3-body .x-grid3-td-numberer{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y right;}.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner{padding:3px 5px 0 0!important;text-align:right;color:#444;}.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-sel-bg.gif) repeat-y right;}.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner{padding:1px 0 0!important;}.x-grid3-check-col{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/menu/unchecked.gif);}.x-grid3-check-col-on{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/menu/checked.gif);}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1;}.x-grid-group-hd{border-bottom:2px solid #99bbe8;cursor:pointer;padding-top:6px;}.x-grid-group-hd div{background:transparent url(../js/ext/resources/images/default/grid/group-expand-sprite.gif) no-repeat 3px -47px;padding:4px 4px 4px 17px;color:#3764a0;font:bold 11px tahoma,arial,helvetica,sans-serif;}.x-grid-group-collapsed .x-grid-group-hd div{background-position:3px 3px;}.x-grid-group-collapsed .x-grid-group-body{display:none;}.x-group-by-icon{background-image:url(../js/ext/resources/images/default/grid/group-by.gif);}.x-cols-icon{background-image:url(../js/ext/resources/images/default/grid/columns.gif);}.x-show-groups-icon{background-image:url(../js/ext/resources/images/default/grid/group-by.gif);}.ext-ie .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}.ext-ie .x-props-grid .x-editor .x-form-text{position:static;top:0;}.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}.ext-ie7 .x-grid-panel .x-panel-bbar{position:relative;}.x-dd-drag-proxy{position:absolute;left:0;top:0;visibility:hidden;z-index:15000;}.x-dd-drag-ghost{color:#000;font:normal 11px arial,helvetica,sans-serif;-moz-opacity:.85;opacity:.85;filter:alpha(opacity=85);border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #bbb;border-bottom:1px solid #bbb;padding:3px;padding-left:20px;background-color:#FFF;white-space:nowrap;}.x-dd-drag-repair .x-dd-drag-ghost{-moz-opacity:.4;opacity:.4;filter:alpha(opacity=40);border:0 none;padding:0;background-color:transparent;}.x-dd-drag-repair .x-dd-drop-icon{visibility:hidden;}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1;}.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/dd/drop-no.gif);}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/dd/drop-yes.gif);}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/dd/drop-add.gif);}.x-view-selector{position:absolute;left:0;top:0;width:0;background:#c3daf9;border:1px dotted #39b;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);zoom:1;}.x-tree .x-panel-body{background-color:#fff;}.ext-strict .ext-ie .x-tree .x-panel-bwrap{position:relative;overflow:hidden;}.x-tree-icon,.x-tree-ec-icon,.x-tree-elbow-line,.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-repeat:no-repeat;}.x-tree-node-collapsed .x-tree-node-icon,.x-tree-node-expanded .x-tree-node-icon,.x-tree-node-leaf .x-tree-node-icon{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-position:center;background-repeat:no-repeat;}.ext-ie .x-tree-node-indent img,.ext-ie .x-tree-node-icon,.ext-ie .x-tree-ec-icon{vertical-align:middle!important;}.x-tree-node-expanded .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/folder-open.gif);}.x-tree-node-leaf .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/leaf.gif);}.x-tree-node-collapsed .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/folder.gif);}.ext-ie input.x-tree-node-cb{width:15px;height:15px;}input.x-tree-node-cb{margin-left:1px;}.ext-ie input.x-tree-node-cb{margin-left:0;}.x-tree-noicon .x-tree-node-icon{width:0;height:0;}.x-tree-node-loading .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/loading.gif)!important;}.x-tree-node-loading a span{font-style:italic;color:#444;}.ext-ie .x-tree-node-el input{width:15px;height:15px;}.x-tree-lines .x-tree-elbow{background-image:url(../js/ext/resources/images/default/tree/elbow.gif);}.x-tree-lines .x-tree-elbow-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-plus.gif);}.x-tree-lines .x-tree-elbow-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-minus.gif);}.x-tree-lines .x-tree-elbow-end{background-image:url(../js/ext/resources/images/default/tree/elbow-end.gif);}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-plus.gif);}.x-tree-lines .x-tree-elbow-end-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-minus.gif);}.x-tree-lines .x-tree-elbow-line{background-image:url(../js/ext/resources/images/default/tree/elbow-line.gif);}.x-tree-no-lines .x-tree-elbow{background:transparent;}.x-tree-no-lines .x-tree-elbow-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-plus-nl.gif);}.x-tree-no-lines .x-tree-elbow-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-minus-nl.gif);}.x-tree-no-lines .x-tree-elbow-end{background:transparent;}.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-plus-nl.gif);}.x-tree-no-lines .x-tree-elbow-end-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-minus-nl.gif);}.x-tree-no-lines .x-tree-elbow-line{background:transparent;}.x-tree-arrows .x-tree-elbow{background:transparent;}.x-tree-arrows .x-tree-elbow-plus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat 0 0;}.x-tree-arrows .x-tree-elbow-minus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat -16px 0;}.x-tree-arrows .x-tree-elbow-end{background:transparent;}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat 0 0;}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat -16px 0;}.x-tree-arrows .x-tree-elbow-line{background:transparent;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{background-position:-32px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{background-position:-48px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{background-position:-32px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:-48px 0;}.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer;}.ext-ie ul.x-tree-node-ct{font-size:0;line-height:0;zoom:1;}.x-tree-node{color:#000;font:normal 11px arial,tahoma,helvetica,sans-serif;white-space:nowrap;}.x-tree-node-el{line-height:18px;cursor:pointer;}.x-tree-node a,.x-dd-drag-ghost a{text-decoration:none;color:#000;-khtml-user-select:none;-moz-user-select:none;-kthml-user-focus:normal;-moz-user-focus:normal;-moz-outline:0 none;outline:0 none;}.x-tree-node a span,.x-dd-drag-ghost a span{text-decoration:none;color:#000;padding:1px 3px 1px 2px;}.x-tree-node .x-tree-node-disabled a span{color:gray!important;}.x-tree-node .x-tree-node-disabled .x-tree-node-icon{-moz-opacity:.5;opacity:.5;filter:alpha(opacity=50);}.x-tree-node .x-tree-node-inline-icon{background:transparent;}.x-tree-node a:hover,.x-dd-drag-ghost a:hover{text-decoration:none;}.x-tree-node div.x-tree-drag-insert-below{border-bottom:1px dotted #36c;}.x-tree-node div.x-tree-drag-insert-above{border-top:1px dotted #36c;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{border-bottom:0 none;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{border-top:0 none;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{border-bottom:2px solid #36c;}.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{border-top:2px solid #36c;}.x-tree-node .x-tree-drag-append a span{background:#ddd;border:1px dotted gray;}.x-tree-node .x-tree-node-over{background-color:#eee;}.x-tree-node .x-tree-selected{background-color:#d9e8fb;}.x-dd-drag-ghost .x-tree-node-indent,.x-dd-drag-ghost .x-tree-ec-icon{display:none!important;}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-add.gif);}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-over.gif);}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-under.gif);}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-between.gif);}.x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;}.x-date-picker a{-moz-outline:0 none;outline:0 none;}.x-date-inner,.x-date-inner td,.x-date-inner th{border-collapse:separate;}.x-date-middle,.x-date-left,.x-date-right{background:url(../js/ext/resources/images/default/shared/hd-sprite.gif) repeat-x 0 -83px;color:#FFF;font:bold 11px "sans serif",tahoma,verdana,helvetica;overflow:hidden;}.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{background:transparent!important;vertical-align:middle;}.x-date-middle .x-btn .x-btn-text{color:#fff;}.x-date-middle .x-btn-with-menu .x-btn-center em{background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow-light.gif) no-repeat right 0;}.x-date-right,.x-date-left{width:18px;}.x-date-right{text-align:right;}.x-date-middle{padding-top:2px;padding-bottom:2px;}.x-date-right a,.x-date-left a{display:block;width:16px;height:16px;background-position:center;background-repeat:no-repeat;cursor:pointer;-moz-opacity:.6;opacity:.6;filter:alpha(opacity=60);}.x-date-right a:hover,.x-date-left a:hover{-moz-opacity:1;opacity:1;filter:alpha(opacity=100);}.x-date-right a{background-image:url(../js/ext/resources/images/default/shared/right-btn.gif);margin-right:2px;text-decoration:none!important;}.x-date-left a{background-image:url(../js/ext/resources/images/default/shared/left-btn.gif);margin-left:2px;text-decoration:none!important;}table.x-date-inner{width:100%;table-layout:fixed;}.x-date-inner th{width:25px;}.x-date-inner th{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;text-align:right!important;border-bottom:1px solid #a3bad9;font:normal 10px arial,helvetica,tahoma,sans-serif;color:#233d6d;cursor:default;padding:0;border-collapse:separate;}.x-date-inner th span{display:block;padding:2px;padding-right:7px;}.x-date-inner td{border:1px solid #fff;text-align:right;padding:0;}.x-date-inner a{padding:2px 5px;display:block;font:normal 11px arial,helvetica,tahoma,sans-serif;text-decoration:none;color:#000;text-align:right;zoom:1;}.x-date-inner .x-date-active{cursor:pointer;color:#000;}.x-date-inner .x-date-selected a{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;padding:1px 4px;}.x-date-inner .x-date-today a{border:1px solid #8B0000;padding:1px 4px;}.x-date-inner .x-date-selected span{font-weight:700;}.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a{color:#aaa;text-decoration:none!important;}.x-date-bottom{padding:4px;border-top:1px solid #a3bad9;background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;}.x-date-inner a:hover,.x-date-inner .x-date-disabled a:hover{text-decoration:none!important;color:#000;background:#ddecfe;}.x-date-inner .x-date-disabled a{cursor:default;background:#eee;color:#bbb;}.x-date-mmenu{background:#eee!important;}.x-date-mmenu .x-menu-item{font-size:10px;padding:1px 24px 1px 4px;white-space:nowrap;color:#000;}.x-date-mmenu .x-menu-item .x-menu-item-icon{width:10px;height:10px;margin-right:5px;background-position:center -4px!important;}.x-date-mp{position:absolute;left:0;top:0;background:#FFF;display:none;}.x-date-mp td{padding:2px;font:normal 11px arial,helvetica,tahoma,sans-serif;}td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn{border:0 none;text-align:center;vertical-align:middle;width:25%;}.x-date-mp-ok{margin-right:3px;}.x-date-mp-btns button{text-decoration:none;text-align:center;text-decoration:none!important;background:#083772;color:#FFF;border:1px solid;border-color:#36c #005 #005 #36c;padding:1px 3px;font:normal 11px arial,helvetica,tahoma,sans-serif;cursor:pointer;}.x-date-mp-btns{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;}.x-date-mp-btns td{border-top:1px solid #c5d2df;text-align:center;}td.x-date-mp-month a,td.x-date-mp-year a{display:block;padding:2px 4px;text-decoration:none;text-align:center;color:#15428b;}td.x-date-mp-month a:hover,td.x-date-mp-year a:hover{color:#15428b;text-decoration:none;cursor:pointer;background:#ddecfe;}td.x-date-mp-sel a{padding:1px 3px;background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;}.x-date-mp-ybtn a{overflow:hidden;width:15px;height:15px;cursor:pointer;background:transparent url(../js/ext/resources/images/default/panel/tool-sprites.gif) no-repeat;display:block;margin:0 auto;}.x-date-mp-ybtn a.x-date-mp-next{background-position:0 -120px;}.x-date-mp-ybtn a.x-date-mp-next:hover{background-position:-15px -120px;}.x-date-mp-ybtn a.x-date-mp-prev{background-position:0 -105px;}.x-date-mp-ybtn a.x-date-mp-prev:hover{background-position:-15px -105px;}.x-date-mp-ybtn{text-align:center;}td.x-date-mp-sep{border-right:1px solid #c5d2df;}.x-tip{position:absolute;top:0;left:0;visibility:hidden;z-index:20000;border:0 none;}.x-tip .x-tip-close{background-image:url(../js/ext/resources/images/default/qtip/close.gif);height:15px;float:right;width:15px;margin:0 0 2px 2px;cursor:pointer;display:none;}.x-tip .x-tip-tc{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -62px;padding-top:3px;overflow:hidden;zoom:1;}.x-tip .x-tip-tl{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 0;padding-left:6px;overflow:hidden;zoom:1;}.x-tip .x-tip-tr{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat right 0;padding-right:6px;overflow:hidden;zoom:1;}.x-tip .x-tip-bc{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;height:3px;overflow:hidden;}.x-tip .x-tip-bl{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;padding-left:6px;zoom:1;}.x-tip .x-tip-br{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat right -59px;padding-right:6px;zoom:1;}.x-tip .x-tip-mc{border:0 none;font:normal 11px tahoma,arial,helvetica,sans-serif;}.x-tip .x-tip-ml{background:#fff url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;padding-left:6px;zoom:1;}.x-tip .x-tip-mr{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat right -124px;padding-right:6px;zoom:1;}.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc{font-size:0;line-height:0;}.x-tip .x-tip-header-text{font:bold 11px tahoma,arial,helvetica,sans-serif;padding:0;margin:0 0 2px;color:#444;}.x-tip .x-tip-body{font:normal 11px tahoma,arial,helvetica,sans-serif;margin:0!important;line-height:14px;color:#444;padding:0;}.x-tip .x-tip-body .loading-indicator{margin:0;}.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text{cursor:move;}.x-form-invalid-tip .x-tip-tc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -12px;padding-top:6px;}.x-form-invalid-tip .x-tip-tl{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-tr{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-bc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -18px;height:6px;}.x-form-invalid-tip .x-tip-bl{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) no-repeat 0 -6px;}.x-form-invalid-tip .x-tip-br{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) no-repeat right -6px;}.x-form-invalid-tip .x-tip-ml{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-mr{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-body{padding:2px;}.x-form-invalid-tip .x-tip-body{padding-left:24px;background:transparent url(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 2px 2px;}.x-menu{border:1px solid #718bb7;z-index:15000;zoom:1;background:#f0f0f0 url(../js/ext/resources/images/default/menu/menu.gif) repeat-y;padding:2px;}.x-menu a{text-decoration:none!important;}.ext-ie .x-menu{zoom:1;overflow:hidden;}.x-menu-list{background:transparent;border:0 none;}.x-menu li{line-height:100%;}.x-menu li.x-menu-sep-li{font-size:1px;line-height:1px;}.x-menu-list-item{font:normal 11px tahoma,arial,sans-serif;white-space:nowrap;-moz-user-select:none;-khtml-user-select:none;display:block;padding:1px;}.x-menu-item-arrow{background:transparent url(../js/ext/resources/images/default/menu/menu-parent.gif) no-repeat right;}.x-menu-sep{display:block;font-size:1px;line-height:1px;margin:2px 3px;background-color:#e0e0e0;border-bottom:1px solid #fff;overflow:hidden;}.x-menu-focus{position:absolute;left:0;top:-5px;width:0;height:0;line-height:1px;}.x-menu a.x-menu-item{display:block;line-height:16px;padding:3px 21px 3px 3px;white-space:nowrap;text-decoration:none;color:#222;-moz-outline:0 none;outline:0 none;cursor:pointer;}.x-menu-item-active{background:#ebf3fd url(../js/ext/resources/images/default/menu/item-over.gif) repeat-x left bottom;border:1px solid #aaccf6;padding:0;}.x-menu-item-active a.x-menu-item{color:#233d6d;}.x-menu-item-icon{border:0 none;height:16px;padding:0;vertical-align:top;width:16px;margin:0 8px 0 0;background-position:center;}.x-menu-check-item .x-menu-item-icon{background:transparent url(../js/ext/resources/images/default/menu/unchecked.gif) no-repeat center;}.x-menu-item-checked .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/menu/checked.gif);}.x-menu-group-item .x-menu-item-icon{background:transparent;}.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{background:transparent url(../js/ext/resources/images/default/menu/group-checked.gif) no-repeat center;}.x-menu-plain{background:#fff!important;}.x-menu-date-item{padding:0;}.x-menu .x-color-palette,.x-menu .x-date-picker{margin-left:26px;margin-right:4px;}.x-menu .x-date-picker{border:1px solid #a3bad9;margin-top:2px;margin-bottom:2px;}.x-menu-plain .x-color-palette,.x-menu-plain .x-date-picker{margin:0;border:0 none;}.x-date-menu{padding:0!important;}.x-cycle-menu .x-menu-item-checked{border:1px dotted #a3bae9!important;background:#DFE8F6;padding:0;}.x-box-tl{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 0;zoom:1;}.x-box-tc{height:8px;background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 0;overflow:hidden;}.x-box-tr{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat right -8px;}.x-box-ml{background:transparent url(../js/ext/resources/images/default/box/l.gif) repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}.x-box-mc{background:#eee url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 -16px;padding:4px 10px;font-family:"Myriad Pro","Myriad Web",Tahoma,Helvetica,Arial,sans-serif;color:#393939;font-size:12px;}.x-box-mc h3{font-size:14px;font-weight:700;margin:0 0 4px;zoom:1;}.x-box-mr{background:transparent url(../js/ext/resources/images/default/box/r.gif) repeat-y right;padding-right:4px;overflow:hidden;}.x-box-bl{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 -16px;zoom:1;}.x-box-bc{background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 -8px;height:8px;overflow:hidden;}.x-box-br{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat right -24px;}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden;}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden;}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(../js/ext/resources/images/default/box/corners-blue.gif);}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(../js/ext/resources/images/default/box/tb-blue.gif);}.x-box-blue .x-box-mc{background-color:#c3daf9;}.x-box-blue .x-box-mc h3{color:#17385b;}.x-box-blue .x-box-ml{background-image:url(../js/ext/resources/images/default/box/l-blue.gif);}.x-box-blue .x-box-mr{background-image:url(../js/ext/resources/images/default/box/r-blue.gif);}#x-debug-browser .x-tree .x-tree-node a span{color:#222297;font-size:11px;padding-top:2px;font-family:monotype,"courier new",sans-serif;line-height:18px;}#x-debug-browser .x-tree a i{color:#FF4545;font-style:normal;}#x-debug-browser .x-tree a em{color:#999;}#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{background:#c3daf9;}#x-debug-browser .x-tool-toggle{background-position:0 -75px;}#x-debug-browser .x-tool-toggle-over{background-position:-15px -75px;}#x-debug-browser.x-panel-collapsed .x-tool-toggle{background-position:0 -60px;}#x-debug-browser.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -60px;}.x-combo-list{border:1px solid #98c0f4;background:#ddecfe;zoom:1;overflow:hidden;}.x-combo-list-inner{overflow:auto;background:#FFF;position:relative;zoom:1;overflow-x:hidden;}.x-combo-list-hd{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;background-image:url(../js/ext/resources/images/default/layout/panel-title-light-bg.gif);border-bottom:1px solid #98c0f4;padding:3px;}.x-resizable-pinned .x-combo-list-inner{border-bottom:1px solid #98c0f4;}.x-combo-list-item{font:normal 12px tahoma,arial,helvetica,sans-serif;padding:2px;border:1px solid #fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.x-combo-list .x-combo-selected{border:1px dotted #a3bae9!important;background:#DFE8F6;cursor:pointer;}.x-combo-noedit{cursor:pointer;}.x-combo-list .x-toolbar{border-top:1px solid #98c0f4;border-bottom:0 none;}.x-combo-list-small .x-combo-list-item{font:normal 11px tahoma,arial,helvetica,sans-serif;}.x-panel{border-style:solid;border-color:#99bbe8;border-width:0;}.x-panel-header{overflow:hidden;zoom:1;color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 3px 4px 5px;border:1px solid #99bbe8;line-height:15px;background:transparent url(../js/ext/resources/images/default/panel/white-top-bottom.gif) repeat-x 0 -1px;}.x-panel-body{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;background:#FFF;position:relative;}.x-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}.x-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}.x-panel-body-noheader,.x-panel-mc .x-panel-body{border-top:1px solid #99bbe8;}.x-panel-header{overflow:hidden;zoom:1;}.x-panel-tl .x-panel-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px;border:0 none;background:transparent;}.x-panel-tl .x-panel-icon,.x-window-tl .x-panel-icon{padding-left:20px!important;background-repeat:no-repeat;background-position:0 4px;zoom:1;}.x-panel-inline-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px;margin-top:-1px;margin-bottom:-1px;}.x-panel-tc{background:transparent url(../js/ext/resources/images/default/panel/top-bottom.gif) repeat-x 0 0;overflow:hidden;}.ext-strict .ext-ie7 .x-panel-tc{overflow:visible;}.x-panel-tl{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat 0 0;padding-left:6px;zoom:1;border-bottom:1px solid #99bbe8;}.x-panel-tr{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat right 0;zoom:1;padding-right:6px;}.x-panel-bc{background:transparent url(../js/ext/resources/images/default/panel/top-bottom.gif) repeat-x 0 bottom;zoom:1;}.x-panel-bc .x-panel-footer{zoom:1;}.x-panel-bl{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat 0 bottom;padding-left:6px;zoom:1;}.x-panel-br{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat right bottom;padding-right:6px;zoom:1;}.x-panel-mc{border:0 none;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;padding-top:6px;background:#dfe8f6;}.x-panel-mc .x-panel-body{background:transparent;border:0 none;}.x-panel-ml{background:#fff url(../js/ext/resources/images/default/panel/left-right.gif) repeat-y 0 0;padding-left:6px;zoom:1;}.x-panel-mr{background:transparent url(../js/ext/resources/images/default/panel/left-right.gif) repeat-y right 0;padding-right:6px;zoom:1;}.x-panel-bc .x-panel-footer{padding-bottom:6px;}.x-panel-nofooter .x-panel-bc{height:6px;font-size:0;line-height:0;}.x-panel-bwrap{overflow:hidden;zoom:1;}.x-panel-body{overflow:hidden;zoom:1;}.x-panel-collapsed .x-resizable-handle{display:none;}.ext-gecko .x-panel-animated div{overflow:hidden!important;}.x-plain-body{overflow:hidden;}.x-plain-bbar .x-toolbar{overflow:hidden;padding:2px;}.x-plain-tbar .x-toolbar{overflow:hidden;padding:2px;}.x-plain-bwrap{overflow:hidden;zoom:1;}.x-plain{overflow:hidden;}.x-tool{overflow:hidden;width:15px;height:15px;float:right;cursor:pointer;background:transparent url(../js/ext/resources/images/default/panel/tool-sprites.gif) no-repeat;margin-left:2px;}.x-tool-toggle{background-position:0 -60px;}.x-tool-toggle-over{background-position:-15px -60px;}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px;}.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -75px;}.x-tool-close{background-position:0 0;}.x-tool-close-over{background-position:-15px 0;}.x-tool-minimize{background-position:0 -15px;}.x-tool-minimize-over{background-position:-15px -15px;}.x-tool-maximize{background-position:0 -30px;}.x-tool-maximize-over{background-position:-15px -30px;}.x-tool-restore{background-position:0 -45px;}.x-tool-restore-over{background-position:-15px -45px;}.x-tool-gear{background-position:0 -90px;}.x-tool-gear-over{background-position:-15px -90px;}.x-tool-pin{background-position:0 -135px;}.x-tool-pin-over{background-position:-15px -135px;}.x-tool-unpin{background-position:0 -150px;}.x-tool-unpin-over{background-position:-15px -150px;}.x-tool-right{background-position:0 -165px;}.x-tool-right-over{background-position:-15px -165px;}.x-tool-left{background-position:0 -180px;}.x-tool-left-over{background-position:-15px -180px;}.x-tool-up{background-position:0 -210px;}.x-tool-up-over{background-position:-15px -210px;}.x-tool-down{background-position:0 -195px;}.x-tool-down-over{background-position:-15px -195px;}.x-tool-refresh{background-position:0 -225px;}.x-tool-refresh-over{background-position:-15px -225px;}.x-tool-minus{background-position:0 -255px;}.x-tool-minus-over{background-position:-15px -255px;}.x-tool-plus{background-position:0 -240px;}.x-tool-plus-over{background-position:-15px -240px;}.x-tool-search{background-position:0 -270px;}.x-tool-search-over{background-position:-15px -270px;}.x-tool-save{background-position:0 -285px;}.x-tool-save-over{background-position:-15px -285px;}.x-tool-help{background-position:0 -300px;}.x-tool-help-over{background-position:-15px -300px;}.x-tool-print{background-position:0 -315px;}.x-tool-print-over{background-position:-15px -315px;}.x-panel-ghost{background:#cbddf3;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;opacity:.65;-moz-opacity:.65;filter:alpha(opacity=65);}.x-panel-ghost ul{margin:0;padding:0;overflow:hidden;font-size:0;line-height:0;border:1px solid #99bbe8;border-top:0 none;display:block;}.x-panel-ghost *{cursor:move!important;}.x-panel-dd-spacer{border:2px dashed #99bbe8;}.x-panel-btns-ct{padding:5px;}.x-panel-btns-ct .x-btn{float:right;clear:none;}.x-panel-btns-ct .x-panel-btns td{border:0;padding:0;}.x-panel-btns-ct .x-panel-btns-right table{float:right;clear:none;}.x-panel-btns-ct .x-panel-btns-left table{float:left;clear:none;}.x-panel-btns-ct .x-panel-btns-center{text-align:center;}.x-panel-btns-ct .x-panel-btns-center table{margin:0 auto;}.x-panel-btns-ct table td.x-panel-btn-td{padding:3px;}.x-panel-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}.x-panel-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}.x-panel-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}.x-panel-btns-ct .x-btn-over .x-btn-left{background-position:0 -63px;}.x-panel-btns-ct .x-btn-over .x-btn-right{background-position:0 -84px;}.x-panel-btns-ct .x-btn-over .x-btn-center{background-position:0 -105px;}.x-panel-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}.x-panel-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}.x-panel-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}.x-window{zoom:1;}.x-window .x-resizable-handle{opacity:0;-moz-opacity:0;filter:alpha(opacity=0);}.x-window-proxy{background:#C7DFFC;border:1px solid #99bbe8;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;display:none;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}.x-window-header{overflow:hidden;zoom:1;}.x-window-bwrap{z-index:1;position:relative;zoom:1;}.x-window-tl .x-window-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px;}.x-window-header-text{cursor:pointer;}.x-window-tc{background:transparent url(../js/ext/resources/images/default/window/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;}.x-window-tl{background:transparent url(../js/ext/resources/images/default/window/left-corners.png) no-repeat 0 0;padding-left:6px;zoom:1;z-index:1;position:relative;}.x-window-tr{background:transparent url(../js/ext/resources/images/default/window/right-corners.png) no-repeat right 0;padding-right:6px;}.x-window-bc{background:transparent url(../js/ext/resources/images/default/window/top-bottom.png) repeat-x 0 bottom;zoom:1;}.x-window-bc .x-window-footer{padding-bottom:6px;zoom:1;font-size:0;line-height:0;}.x-window-bl{background:transparent url(../js/ext/resources/images/default/window/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;}.x-window-br{background:transparent url(../js/ext/resources/images/default/window/right-corners.png) no-repeat right bottom;padding-right:6px;zoom:1;}.x-window-mc{border:1px solid #99bbe8;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;background:#dfe8f6;}.x-window-ml{background:transparent url(../js/ext/resources/images/default/window/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;}.x-window-mr{background:transparent url(../js/ext/resources/images/default/window/left-right.png) repeat-y right 0;padding-right:6px;zoom:1;}.x-panel-nofooter .x-window-bc{height:6px;}.x-window-body{overflow:hidden;}.x-window-bwrap{overflow:hidden;}.x-window-maximized .x-window-bl,.x-window-maximized .x-window-br,.x-window-maximized .x-window-ml,.x-window-maximized .x-window-mr,.x-window-maximized .x-window-tl,.x-window-maximized .x-window-tr{padding:0;}.x-window-maximized .x-window-footer{padding-bottom:0;}.x-window-maximized .x-window-tc{padding-left:3px;padding-right:3px;background-color:#FFF;}.x-window-maximized .x-window-mc{border-left:0 none;border-right:0 none;}.x-window-tbar .x-toolbar,.x-window-bbar .x-toolbar{border-left:0 none;border-right:0 none;}.x-window-bbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}.x-window-draggable,.x-window-draggable .x-window-header-text{cursor:move;}.x-window-maximized .x-window-draggable,.x-window-maximized .x-window-draggable .x-window-header-text{cursor:default;}.x-window-body{background:transparent;}.x-panel-ghost .x-window-tl{border-bottom:1px solid #99bbe8;}.x-panel-collapsed .x-window-tl{border-bottom:1px solid #84a0c4;}.x-window-maximized-ct{overflow:hidden;}.x-window-maximized .x-resizable-handle{display:none;}.x-window-sizing-ghost ul{border:0 none!important;}.x-dlg-focus{-moz-outline:0 none;outline:0 none;width:0;height:0;overflow:hidden;position:absolute;top:0;left:0;}.x-dlg-mask{z-index:10000;display:none;position:absolute;top:0;left:0;-moz-opacity:.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;}body.ext-ie6.x-body-masked select{visibility:hidden;}body.ext-ie6.x-body-masked .x-window select{visibility:visible;}.x-window-plain .x-window-mc{background:#CAD9EC;border-right:1px solid #DFE8F6;border-bottom:1px solid #DFE8F6;border-top:1px solid #a3bae9;border-left:1px solid #a3bae9;}.x-window-plain .x-window-body{border-left:1px solid #DFE8F6;border-top:1px solid #DFE8F6;border-bottom:1px solid #a3bae9;border-right:1px solid #a3bae9;background:transparent!important;}body.x-body-masked .x-window-plain .x-window-mc{background:#C7D6E9;}.x-html-editor-wrap{border:1px solid #a9bfd3;background:#FFF;}.x-html-editor-tb .x-btn-text{background:transparent url(../js/ext/resources/images/default/editor/tb-sprite.gif) no-repeat;}.x-html-editor-tb .x-edit-bold .x-btn-text{background-position:0 0;}.x-html-editor-tb .x-edit-italic .x-btn-text{background-position:-16px 0;}.x-html-editor-tb .x-edit-underline .x-btn-text{background-position:-32px 0;}.x-html-editor-tb .x-edit-forecolor .x-btn-text{background-position:-160px 0;}.x-html-editor-tb .x-edit-backcolor .x-btn-text{background-position:-176px 0;}.x-html-editor-tb .x-edit-justifyleft .x-btn-text{background-position:-112px 0;}.x-html-editor-tb .x-edit-justifycenter .x-btn-text{background-position:-128px 0;}.x-html-editor-tb .x-edit-justifyright .x-btn-text{background-position:-144px 0;}.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text{background-position:-80px 0;}.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text{background-position:-96px 0;}.x-html-editor-tb .x-edit-increasefontsize .x-btn-text{background-position:-48px 0;}.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text{background-position:-64px 0;}.x-html-editor-tb .x-edit-sourceedit .x-btn-text{background-position:-192px 0;}.x-html-editor-tb .x-edit-createlink .x-btn-text{background-position:-208px 0;}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px;}.x-html-editor-tb .x-toolbar{position:static!important;}.x-panel-noborder .x-panel-body-noborder{border-width:0;}.x-panel-noborder .x-panel-header-noborder{border-width:0;border-bottom:1px solid #99bbe8;}.x-panel-noborder .x-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}.x-panel-noborder .x-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}.x-window-noborder .x-window-mc{border-width:0;}.x-window-plain .x-window-body-noborder{border-width:0;}.x-tab-panel-noborder .x-tab-panel-body-noborder{border-width:0;}.x-tab-panel-noborder .x-tab-panel-header-noborder{border-top-width:0;border-left-width:0;border-right-width:0;}.x-tab-panel-noborder .x-tab-panel-footer-noborder{border-bottom-width:0;border-left-width:0;border-right-width:0;}.x-tab-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}.x-tab-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}.x-border-layout-ct{background:#dfe8f6;}.x-border-panel{position:absolute;left:0;top:0;}.x-tool-collapse-south{background-position:0 -195px;}.x-tool-collapse-south-over{background-position:-15px -195px;}.x-tool-collapse-north{background-position:0 -210px;}.x-tool-collapse-north-over{background-position:-15px -210px;}.x-tool-collapse-west{background-position:0 -180px;}.x-tool-collapse-west-over{background-position:-15px -180px;}.x-tool-collapse-east{background-position:0 -165px;}.x-tool-collapse-east-over{background-position:-15px -165px;}.x-tool-expand-south{background-position:0 -210px;}.x-tool-expand-south-over{background-position:-15px -210px;}.x-tool-expand-north{background-position:0 -195px;}.x-tool-expand-north-over{background-position:-15px -195px;}.x-tool-expand-west{background-position:0 -165px;}.x-tool-expand-west-over{background-position:-15px -165px;}.x-tool-expand-east{background-position:0 -180px;}.x-tool-expand-east-over{background-position:-15px -180px;}.x-tool-expand-north,.x-tool-expand-south{float:right;margin:3px;}.x-tool-expand-east,.x-tool-expand-west{float:none;margin:3px auto;}.x-accordion-hd .x-tool-toggle{background-position:0 -255px;}.x-accordion-hd .x-tool-toggle-over{background-position:-15px -255px;}.x-panel-collapsed .x-accordion-hd .x-tool-toggle{background-position:0 -240px;}.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over{background-position:-15px -240px;}.x-accordion-hd{color:#222;padding-top:4px;padding-bottom:3px;border-top:0 none;font-weight:400;background:transparent url(../js/ext/resources/images/default/panel/light-hd.gif) repeat-x 0 -9px;}.x-layout-collapsed{position:absolute;left:-10000px;top:-10000px;visibility:hidden;background-color:#d2e0f2;width:20px;height:20px;overflow:hidden;border:1px solid #98c0f4;z-index:20;}.ext-border-box .x-layout-collapsed{width:22px;height:22px;}.x-layout-collapsed-over{cursor:pointer;background-color:#d9e8fb;}.x-layout-collapsed-west .x-layout-collapsed-tools,.x-layout-collapsed-east .x-layout-collapsed-tools{position:absolute;top:0;left:0;width:20px;height:20px;}.x-layout-split{position:absolute;height:5px;width:5px;line-height:1px;font-size:1px;z-index:3;background-color:transparent;}.x-layout-split-h{background-image:url(../js/ext/resources/images/default/s.gif);background-position:left;}.x-layout-split-v{background-image:url(../js/ext/resources/images/default/s.gif);background-position:top;}.x-column-layout-ct{overflow:hidden;zoom:1;}.x-column{float:left;padding:0;margin:0;overflow:hidden;zoom:1;}.x-layout-mini{position:absolute;top:0;left:0;display:block;width:5px;height:35px;cursor:pointer;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}.x-layout-mini-over,.x-layout-collapsed-over .x-layout-mini{opacity:1;-moz-opacity:1;filter:none;}.x-layout-split-west .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-left.gif);}.x-layout-split-east .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-right.gif);}.x-layout-split-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-top.gif);}.x-layout-split-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-bottom.gif);}.x-layout-cmini-west .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-right.gif);}.x-layout-cmini-east .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-left.gif);}.x-layout-cmini-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-bottom.gif);}.x-layout-cmini-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-top.gif);}.x-layout-cmini-west,.x-layout-cmini-east{border:0 none;width:5px!important;padding:0;background:transparent;}.x-layout-cmini-north,.x-layout-cmini-south{border:0 none;height:5px!important;padding:0;background:transparent;}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;}.x-abs-layout-item{position:absolute;left:0;top:0;}.ext-ie input.x-abs-layout-item,.ext-ie textarea.x-abs-layout-item{margin:0;}.x-progress-wrap{border:1px solid #6593cf;overflow:hidden;}.x-progress-inner{height:18px;background:#e0e8f3 url(../js/ext/resources/images/default/qtip/bg.gif) repeat-x;position:relative;}.x-progress-bar{height:18px;float:left;width:0;background:#9CBFEE url(../js/ext/resources/images/default/progress/progress-bg.gif) repeat-x left center;border-top:1px solid #D1E4FD;border-bottom:1px solid #7FA9E4;border-right:1px solid #7FA9E4;}.x-progress-text{font-size:11px;font-weight:700;color:#fff;padding:1px 5px;overflow:hidden;position:absolute;left:0;text-align:center;}.x-progress-text-back{color:#396095;line-height:16px;}.ext-ie .x-progress-text-back{line-height:15px;}.x-window-dlg .x-window-body{border:0 none!important;padding:5px 10px;overflow:hidden!important;}.x-window-dlg .x-window-mc{border:0 none!important;}.x-window-dlg .ext-mb-text,.x-window-dlg .x-window-header-text{font-size:12px;}.x-window-dlg .ext-mb-input{margin-top:4px;width:95%;}.x-window-dlg .ext-mb-textarea{margin-top:4px;font:normal 12px tahoma,arial,helvetica,sans-serif;}.x-window-dlg .x-progress-wrap{margin-top:4px;}.ext-ie .x-window-dlg .x-progress-wrap{margin-top:6px;}.x-window-dlg .x-msg-box-wait{background:transparent url(../js/ext/resources/images/default/grid/loading.gif) no-repeat left;display:block;width:300px;padding-left:18px;line-height:18px;}.x-window-dlg .ext-mb-icon{float:left;width:47px;height:32px;}.ext-ie .x-window-dlg .ext-mb-icon{width:44px;}.x-window-dlg .ext-mb-info{background:transparent url(../js/ext/resources/images/default/window/icon-info.gif) no-repeat top left;}.x-window-dlg .ext-mb-warning{background:transparent url(../js/ext/resources/images/default/window/icon-warning.gif) no-repeat top left;}.x-window-dlg .ext-mb-question{background:transparent url(../js/ext/resources/images/default/window/icon-question.gif) no-repeat top left;}.x-window-dlg .ext-mb-error{background:transparent url(../js/ext/resources/images/default/window/icon-error.gif) no-repeat top left;}/*
- * Ext JS Library 2.0.2
- * Copyright(c) 2006-2008, Ext JS, LLC.
- * licensing at extjs.com
- * 
- * http://extjs.com/license
- */.x-panel{border-style:solid;border-color:#d0d0d0;}.x-panel-header{color:#333;border:1px solid #d0d0d0;background-image:url(../js/ext/resources/images/gray/panel/white-top-bottom.gif);}.x-panel-body{border-color:#d0d0d0;}.x-panel-bbar .x-toolbar{border-color:#d0d0d0;}.x-panel-tbar .x-toolbar{border-color:#d0d0d0;}.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-color:#d0d0d0;}.x-panel-body-noheader,.x-panel-mc .x-panel-body{border-color:#d0d0d0;}.x-panel-tl .x-panel-header{color:#333;}.x-panel-tc{background-image:url(../js/ext/resources/images/gray/panel/top-bottom.gif);}.x-panel-tl{background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);border-color:#d0d0d0;}.x-panel-tr{background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);}.x-panel-bc{background-image:url(../js/ext/resources/images/gray/panel/top-bottom.gif);}.x-panel-bl{background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);}.x-panel-br{background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);}.x-panel-mc{background:#f1f1f1;}.x-panel-mc .x-panel-body{background:transparent;border:0 none;}.x-panel-ml{background-image:url(../js/ext/resources/images/gray/panel/left-right.gif);}.x-panel-mr{background-image:url(../js/ext/resources/images/gray/panel/left-right.gif);}/* Tools */.x-tool{background-image:url(../js/ext/resources/images/gray/panel/tool-sprites.gif);}/* Ghosting */.x-panel-ghost{background:#e0e0e0;}.x-panel-ghost ul{border-color:#b0b0b0;}.x-grid-panel .x-panel-mc .x-panel-body{border:1px solid #d0d0d0;}/* Buttons */.x-btn-left{background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);}.x-btn-right{background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);}.x-btn-center{background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);}/* Layout classes */.x-border-layout-ct{background:#f0f0f0;}.x-accordion-hd{background-image:url(../js/ext/resources/images/gray/panel/light-hd.gif);}.x-layout-collapsed{background-color:#eee;border-color:#e0e0e0;}.x-layout-collapsed-over{background-color:#fbfbfb;}/* qtips */.x-tip .x-tip-top{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-top-left{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-top-right{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-ft{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-ft-left{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-ft-right{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-bd-left{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-bd-right{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}/* Toolbars */.x-toolbar{border-color:#d0d0d0;background:#f0f4f5 url(../js/ext/resources/images/gray/toolbar/bg.gif) repeat-x top left;}.x-toolbar button{color:#444;}.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{background-image:url(../js/ext/resources/images/gray/toolbar/btn-arrow.gif);}.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button{background-image:url(../js/ext/resources/images/gray/toolbar/btn-arrow.gif);}.x-toolbar .x-btn-over .x-btn-left{background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .x-btn-over .x-btn-right{background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .x-btn-over .x-btn-center{background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .x-btn-over button{color:#111;}.x-toolbar .x-btn-click .x-btn-left,.x-toolbar .x-btn-pressed .x-btn-left,.x-toolbar .x-btn-menu-active .x-btn-left{background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .x-btn-click .x-btn-right,.x-toolbar .x-btn-pressed .x-btn-right,.x-toolbar .x-btn-menu-active .x-btn-right{background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .x-btn-click .x-btn-center,.x-toolbar .x-btn-pressed .x-btn-center,.x-toolbar .x-btn-menu-active .x-btn-center{background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .ytb-sep{background-image:url(../js/ext/resources/images/default/grid/grid-split.gif);}/* Tabs */.x-tab-panel-header,.x-tab-panel-footer{background:#EAEAEA;border-color:#d0d0d0;}.x-tab-panel-header{border-color:#d0d0d0;}.x-tab-panel-footer{border-color:#d0d0d0;}ul.x-tab-strip-top{background:#dbdbdb url(../js/ext/resources/images/gray/tabs/tab-strip-bg.gif) repeat-x left top;border-color:#d0d0d0;padding-top:2px;}ul.x-tab-strip-bottom{background-image:url(../js/ext/resources/images/gray/tabs/tab-strip-btm-bg.gif);border-color:#d0d0d0;}.x-tab-strip span.x-tab-strip-text{color:#333;}.x-tab-strip-over span.x-tab-strip-text{color:#111;}.x-tab-strip-active span.x-tab-strip-text{color:#333;}.x-tab-strip-disabled .x-tabs-text{color:#AAA;}.x-tab-strip-top .x-tab-right{background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);}.x-tab-strip-top .x-tab-left{background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);}.x-tab-strip-top .x-tab-strip-inner{background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);}.x-tab-strip-bottom .x-tab-right{background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif);}.x-tab-strip-bottom .x-tab-left{background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif);}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-right-bg.gif);}.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-left-bg.gif);}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{background-image:url(../js/ext/resources/images/gray/tabs/tab-close.gif);}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{background-image:url(../js/ext/resources/images/gray/tabs/tab-close.gif);}.x-tab-panel-body{border-color:#d0d0d0;background:#fff;}.x-tab-panel-bbar .x-toolbar{border-color:#d0d0d0;}.x-tab-panel-tbar .x-toolbar{border-color:#d0d0d0;}.x-tab-panel-header-plain .x-tab-strip-spacer{border-color:#d0d0d0;background:#eaeaea;}.x-tab-scroller-left{background-image:url(../js/ext/resources/images/gray/tabs/scroll-left.gif);border-color:#aeaeae;}.x-tab-scroller-right{background-image:url(../js/ext/resources/images/gray/tabs/scroll-right.gif);border-color:#aeaeae;}/* Window */.x-window-proxy{background:#e0e0e0;border-color:#b0b0b0;}.x-window-tl .x-window-header{color:#555;}.x-window-tc{background-image:url(../js/ext/resources/images/gray/window/top-bottom.png);}.x-window-tl{background-image:url(../js/ext/resources/images/gray/window/left-corners.png);}.x-window-tr{background-image:url(../js/ext/resources/images/gray/window/right-corners.png);}.x-window-bc{background-image:url(../js/ext/resources/images/gray/window/top-bottom.png);}.x-window-bl{background-image:url(../js/ext/resources/images/gray/window/left-corners.png);}.x-window-br{background-image:url(../js/ext/resources/images/gray/window/right-corners.png);}.x-window-mc{border:1px solid #d0d0d0;background:#e8e8e8;}.x-window-ml{background-image:url(../js/ext/resources/images/gray/window/left-right.png);}.x-window-mr{background-image:url(../js/ext/resources/images/gray/window/left-right.png);}.x-panel-ghost .x-window-tl{border-color:#d0d0d0;}.x-panel-collapsed .x-window-tl{border-color:#d0d0d0;}.x-window-plain .x-window-mc{background:#e8e8e8;border-right:1px solid #eee;border-bottom:1px solid #eee;border-top:1px solid #d0d0d0;border-left:1px solid #d0d0d0;}.x-window-plain .x-window-body{border-left:1px solid #eee;border-top:1px solid #eee;border-bottom:1px solid #d0d0d0;border-right:1px solid #d0d0d0;background:transparent!important;}body.x-body-masked .x-window-mc,body.x-body-masked .x-window-plain .x-window-mc{background-color:#e4e4e4;}/* misc */.x-html-editor-wrap{border-color:#d0d0d0;}/* Borders go last for specificity */.x-panel-noborder .x-panel-body-noborder{border-width:0;}.x-panel-noborder .x-panel-header-noborder{border-width:0;border-bottom:1px solid #d0d0d0;}.x-panel-noborder .x-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #d0d0d0;}.x-panel-noborder .x-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #d0d0d0;}.x-window-noborder .x-window-mc{border-width:0;}.x-window-plain .x-window-body-noborder{border-width:0;}.x-tab-panel-noborder .x-tab-panel-body-noborder{border-width:0;}.x-tab-panel-noborder .x-tab-panel-header-noborder{border-top-width:0;border-left-width:0;border-right-width:0;}.x-tab-panel-noborder .x-tab-panel-footer-noborder{border-bottom-width:0;border-left-width:0;border-right-width:0;}.x-tab-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #d0d0d0;}.x-tab-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #d0d0d0;}.kunebody{background-color:#FFF;color:#000;font-family:arial, sans;margin:5px;}#kuneinitialcurtain{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#FFF;z-index:9999;}/* Global styles */.gwt-HorizontalSplitPanel .hsplitter{cursor:e-resize;width:6px;}.gwt-DialogBox{border:8px solid #C3D9FF;border:2px outset;background-color:#FFF;}.gwt-DialogBox .Caption{background-color:#C3D9FF;font-size:85%;font-weight:700;padding:3px;margin:2px;cursor:default;}.gwt-MenuBar{background-color:#F2F2F2;border:1px solid #999;vertical-align:middle;padding:5px 0;}.gwt-MenuBar .gwt-MenuItem{cursor:pointer;padding:1px 10px;white-space:nowrap;}.gwt-MenuBar .gwt-MenuItem img{vertical-align:middle;margin-right:3px;}.gwt-MenuBar .gwt-MenuItem{background-color:#F2F2F2;}.gwt-MenuBar .gwt-MenuItem-selected{background-color:#FFB958;}.kune-MenuBar .gwt-MenuItem{background:transparent url(img/button-bg-hard.gif) repeat-x 0 0;border-left:1px solid #AAA;border-right:1px solid #AAA;color:#999;cursor:pointer;cursor:hand;white-space:nowrap;padding:0 10px;}.kune-MenuBar .gwt-MenuItem-selected{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#963;}.kune-expandHoriz{width:100%;}.kune-expandVert{height:100%;}.kune-floatleft{float:left;}.kune-floatright{float:right;}/* Deprecated */.kune-Default-Form{margin:10px;}.kune-valignmiddle{vertical-align:middle;}fieldset{border:1px solid #B5B8C8;/* margin-bottom:10px; */padding:10px 10px 5px;}legend{color:#15428B;font-size:85%;font-size-adjust:none;font-style:normal;font-variant:normal;font-weight:700;line-height:normal;}.gwt-RadioButton input{margin:0 3px;vertical-align:middle;}.gwt-RadioButton label{margin:0 3px;vertical-align:middle;}.kune-pointer{cursor:pointer;}.kuneLabelPre{white-space:pre!important;}/* Buttons */.kune-CustomPushButton-space{margin-top:3px;margin-bottom:3px;}.kune-CustomPushButton{background:transparent url(img/button-bg-hard.gif) repeat-x 0 0;border-left:1px solid #AAA;border-right:1px solid #AAA;color:#999;cursor:pointer;white-space:nowrap;padding:0 12px;}.kune-CustomPushButton-up{color:#161616;}.kune-CustomPushButton-down{color:#000;}.kune-CustomPushButton-up-hovering{color:#161616;background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;}.kune-CustomPushButton-down-hovering{color:#000;}.kune-CustomPushButton-up-disabled{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#E0E0E0;cursor:normal;}.kune-CustomPushButton-down-disabled{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#E0E0E0;cursor:normal;}.kune-Button-Large-lrSpace{margin-left:12px;margin-right:12px;}.kune-Button-Large-rSpace{margin-right:12px;}.kune-Button-Large-lSpace{margin-left:12px;}.kune-Button-Large-tbSpace{margin-top:12px;margin-bottom:12px;}.kune-Button-Small-lrSpace{margin-left:10px;margin-right:10px;}.kune-Button-Small-rSpace{margin-right:10px;}.kune-Button-Small-lSpace{margin-left:10px;}.kune-Button-Small-tbSpace{margin-top:10px;margin-bottom:10px;}.kune-Button-Mini-lSpace{margin-left:8px;}.kune-Button-Mini-lrSpace{margin-left:8px;margin-right:8px;}.kune-Button-Mini-rSpace{margin-right:8px;}.kune-Button-Mini-tbSpace{margin-top:8px;margin-bottom:8px;}.kune-IconHyperlink{}.kune-IconHyperlink a:link{/* text-decoration: underline; */color:green;}.kune-IconHyperlink a:hover{text-decoration:underline;}.kune-IconHyperlink a:visited{color:olive;}.kune-IconHyperlink img{margin-right:4px;vertical-align:middle;}.kune-IconLabel{}.kune-IconLabel img{margin-right:4px;vertical-align:middle;}.kune-link{text-decoration:underline;color:green;cursor:pointer;}/* DropDowns */.kune-DropDownOuter{background-color:green;}.kune-DropDownInner{margin:0 3px 1px;background:green;background-color:#FFF;padding:3px;}.kune-DropDownLabel{color:#FFF;cursor:pointer;}.kune-DropDownLabel .gwt-Label{margin:0 5px 0 0;width:100%;}.kune-DropDownLabel img{margin:0 3px 0 1px;}.kune-IconLabel{color:green;}.kune-IconLabel img{margin-right:4px;vertical-align:middle;}/* Used in multi chat panel status change */.x-menu-item img{margin-right:4px;vertical-align:middle;}/* Margins */.kune-Margin-40-trbl{margin:40px;}.kune-Margin-40-lr{margin-left:40px;margin-right:40px;}.kune-Margin-40-tl{margin-top:40px;margin-left:40px;}.kune-Margin-40-tb{margin-top:40px;margin-bottom:40px;}.kune-Margin-40-t{margin-top:40px;}.kune-Margin-40-r{margin-right:40px;}.kune-Margin-40-l{margin-left:40px;}.kune-Margin-20-trbl{margin:20px;}.kune-Margin-20-lr{margin-left:20px;margin-right:20px;}.kune-Margin-20-tl{margin-top:20px;margin-left:20px;}.kune-Margin-20-tb{margin-top:20px;margin-bottom:20px;}.kune-Margin-20-t{margin-top:20px;}.kune-Margin-20-r{margin-right:20px;}.kune-Margin-20-l{margin-left:20px;}.kune-Margin-Large-trbl{margin:10px;}.kune-Margin-Large-lr{margin-left:10px;margin-right:10px;}.kune-Margin-Large-tl{margin-top:10px;margin-left:10px;}.kune-Margin-Large-tb{margin-top:10px;margin-bottom:: 10px;}.kune-Margin-Large-t{margin-top:10px;}.kune-Margin-Large-r{margin-right:10px;}.kune-Margin-Large-l{margin-left:10px;}.kune-Margin-Medium-trbl{margin:5px;}.kune-Margin-Medium-lr{margin-left:5px;margin-right:5px;}.kune-Margin-Medium-tl{margin-top:5px;margin-left:5px;}.kune-Margin-Medium-tb{margin-top:5px;margin-bottom:5px;}.kune-Margin-Medium-t{margin-top:5px;}.kune-Margin-Medium-r{margin-right:5px;}.kune-Margin-Medium-b{margin-bottom:5px;}.kune-Margin-Medium-l{margin-left:5px;}.kune-Margin-Small-trbl{margin:3px;}.kune-Margin-Small-lr{margin-left:3px;margin-right:3px;}.kune-Margin-Small-tl{margin-top:3px;margin-left:3px;}.kune-Margin-Small-tb{margin-top:3px;margin-bottom:3px;}.kune-Margin-Small-t{margin-top:3px;}.kune-Margin-Mini-trbl{margin:1px;}.kune-Margin-Mini-lr{margin-left:1px;margin-right:1px;}.kune-Margin-Mini-tl{margin-top:1px;margin-left:1px;}.kune-Margin-Mini-tb{margin-top:1px;margin-bottom:1px;}.kune-Margin-Mini-t{margin-top:1px;}.kune-Margin-Mini-r{margin-right:1px;}.kune-Margin-Mini-l{margin-left:1px;}/* Fonts
-see: http://developer.yahoo.com/yui/fonts/ */.kune-ft10px{font-size:77%;}.kune-ft11px{font-size:85%;}.kune-ft12px{font-size:93%;}.kune-ft13px{font-size:100%;}.kune-ft14px{font-size:108%;}.kune-ft15px{font-size:116%;}.kune-ft16px{font-size:123.099998%;}.kune-ft17px{font-size:131%;}.kune-ft18px{font-size:138.5%;}.kune-ft19px{font-size:146.5%;}.kune-ft20px{font-size:153.899994%;}.kune-ft21px{font-size:161.600006%;}.kune-ft22px{font-size:167%;}.kune-ft23px{font-size:174%;}.kune-ft24px{font-size:182%;}.kune-ft25px{font-size:189%;}.kune-ft26px{font-size:197px %;}/* Sitebar */#kuneprogresspanel{position:absolute;top:2px;left:2px;z-index:30000;}.kune-Progress{background:#E5FF80;border:1px solid #E5FF80;white-space:nowrap;height:16px;padding:0 3px;}.kune-SiteBarPanel .kune-IconHyperlink{white-space:nowrap;}.kune-SiteBarPanel .kune-IconHyperlink a:link{cursor:pointer;text-decoration:underline;color:#B3B3B3;}.kune-SiteBarPanel .kune-IconHyperlink a:hover{text-decoration:underline;}.kune-SiteBarPanel .kune-IconHyperlink a:visited{color:#B3B3B3;}.kune-SiteBarPanel{margin-right:10px;height:16px;}.kune-SiteBarPanel .gwt-TextBox{border:1px solid #E4A374;margin:0 15px 0 3px;padding-left:3px;color:#B3B3B3;}.kune-SiteBarPanel .gwt-Hyperlink a{white-space:nowrap;color:#B3B3B3;text-decoration:underline;cursor:pointer;}.kune-SiteBarPanel .gwt-PushButton{cursor:pointer;}.kune-SiteBarPanel-Separator{color:#E4A374;margin:0 5px;}.kune-SiteBarPanel-SpaceSeparator{width:10px;}.kune-SiteBarPanel-LabelLink{white-space:nowrap;color:#B3B3B3;margin-left:3px;cursor:pointer;text-decoration:underline;}.kune-SiteMessagePanel{color:#250;position:absolute;z-index:10000;vertical-align:middle;}.kune-SiteMessagePanel .gwt-HTML{margin:15px 5px 15px 2px;}.kune-SiteMessagePanel .gwt-Image{margin:5px;}.kune-SiteMessagePanel-error{background-color:#FFB380;border:1px solid #F06;}.kune-SiteMessagePanel-veryimp{background-color:#FFD4AA;border:1px solid #F59;}.kune-SiteMessagePanel-imp{background-color:#FFE6D5;border:1px solid #DE87AA;}.kune-SiteMessagePanel-info{background-color:#E5FF80;border:1px solid #87DE87;}/* Workspace styles */.kune-WorkspacePanel{width:100%;background-color:#FFF;}.kune-WokspacePanel .Tab{}.kune-WorkspacePanel .GeneralHP{}.kune-WorkspacePanel .ContextPanel{width:100%;border-right:3px solid #DD8A3D;}.kune-EntityTextLogo{border:2px solid #F2F2F2;height:60px;margin-bottom:4px;overflow:hidden;width:468px;}.kune-EntityTextLogo .gwt-Label{color:#A40;font-size:167%;font-weight:700;margin:5px;height:27px;}.kune-EntityTextLogo .gwt-Hyperlink a{color:#CCC;font-size:85%;margin:5px;text-decoration:underline;white-space:nowrap;background-color:#FFF;}.kune-GroupSummaryPanel{margin:5px 0 0 5px;width:100%;}.kune-GroupToolsBar{width:150px;}.kune-GroupToolsBar-itemSelected{margin-bottom:5px;}.kune-GroupToolsBar-itemSelected .gwt-Hyperlink a{color:#FFF;padding:0 9px;text-decoration:none;}.kune-GroupToolsBar-itemSelected .gwt-Hyperlink a:hover{text-decoration:none;}.kune-GroupToolsBar-itemNotSelected{margin-bottom:5px;}.kune-GroupToolsBar-itemNotSelected .gwt-Hyperlink a{color:green;padding:0 9px;text-decoration:none;}.kune-GroupToolsBar-itemNotSelected .gwt-Hyperlink a:hover{text-decoration:none;}/* Content titles */.kune-ContentTitleBar{border-left:2px solid #DD8A3D;width:100%;height:25px;vertical-align:middle;}.kune-ContentTitleBar .gwt-Label{width:100%;}.kune-ContentTitleBar-l{float:left;}.kune-ContentTitleBar-r{float:right;}.kune-ContentSubTitleBar{vertical-align:middle;font-weight:700;width:100%;height:23px;}.kune-ContentSubTitleBar .gwt-Label{width:100%;white-space:nowrap;}.kune-ContentSubTitleBar-l{float:left;}.kune-ContentSubTitleBar-r{float:right;}.kune-ContentToolBarPanel{background-color:#F2F2F2;padding:2px;height:24px;vertical-align:middle;}.kune-ContentBottomBar{vertical-align:middle;height:24px;}.kune-ContentBottomBar .gwt-Image{margin-left:5px;cursor:pointer;float:left;}.kune-ContentBottomBar .gwt-Label a{}.kune-LicensePanel-licensetext{cursor:pointer;margin-left:5px;text-decoration:underline;}/* Main Content & Context */.kune-WorkspacePanel-Content{background-color:#FCFCFC;width:100%;height:100%;}.kune-WorkspacePanel-Content .main-content{margin:7px 5px 5px 10px;}.kune-WorkspacePanel-Context{background-color:#CFA;width:100%;height:100%;}.kune-NavigationBar{width:100%;}.kune-NavigationBar .topBar{background-color:#ececec;background:#ececec;border-bottom:1px solid #e3dbdb;vertical-align:middle;}.kune-NavigationBar .topBar .gwt-PushButton{margin:1px 3px 1px 0;}.kune-NavigationBar .topBar .gwt-Label{vertical-align:middle;}.kune-NavigationBar .kune-topBar-iconBar{margin:2px 0 2px 5px;}.kune-NavigationBar .kune-ContextItemsPanel-LabelLink{/*  text-decoration: underline; */color:green;cursor:pointer;margin-left:3px;}/*
+*/
+body {font:13px/1.22 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:99%;}
+
+
+/*
+ * Ext JS Library 2.0.2
+ * Copyright(c) 2006-2008, Ext JS, LLC.
+ * licensing at extjs.com
+ * 
+ * http://extjs.com/license
+ */
+
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}
+img,body,html{border:0;}
+address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
+ol,ul{list-style:none;}
+caption,th{text-align:left;}
+h1,h2,h3,h4,h5,h6{font-size:100%;}
+q:before,q:after{content:'';}
+
+.ext-el-mask{z-index:20000;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:100%;height:100%;zoom:1;}
+.ext-el-mask-msg{z-index:20001;position:absolute;top:0;left:0;border:1px solid #6593cf;background:#c3daf9 url(../js/ext/resources/images/default/box/tb-blue.gif) repeat-x 0 -16px;padding:2px;}
+.ext-el-mask-msg div{padding:5px 10px 5px 10px;background:#eee;border:1px solid #a3bad9;color:#222;font:normal 11px tahoma,arial,helvetica,sans-serif;cursor:wait;}
+.ext-shim{position:absolute;visibility:hidden;left:0;top:0;overflow:hidden;}
+.ext-ie .ext-shim{filter:alpha(opacity=0);}
+.ext-ie6 .ext-shim{margin-left:5px;margin-top:3px;}
+.x-mask-loading div{padding:5px 10px 5px 25px;background:#fbfbfb url( '../js/ext/resources/images/default/grid/loading.gif' ) no-repeat 5px 5px;line-height:16px;}
+.x-hidden,.x-hide-offsets{position:absolute;left:-10000px;top:-10000px;visibility:hidden;}
+.x-hide-display{display:none!important;}
+.x-hide-visibility{visibility:hidden!important;}
+.x-masked{overflow:hidden!important;}
+.x-masked select,.x-masked object,.x-masked embed{visibility:hidden;}
+.x-layer{visibility:hidden;}
+.x-unselectable,.x-unselectable *{-moz-user-select:none;-khtml-user-select:none;}
+.x-repaint{zoom:1;background-color:transparent;-moz-outline:none;}
+.x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
+.x-item-disabled *{color:gray!important;cursor:default!important;}
+.x-splitbar-proxy{position:absolute;visibility:hidden;z-index:20001;background:#aaa;zoom:1;line-height:1px;font-size:1px;overflow:hidden;}
+.x-splitbar-h,.x-splitbar-proxy-h{cursor:e-resize;cursor:col-resize;}
+.x-splitbar-v,.x-splitbar-proxy-v{cursor:s-resize;cursor:row-resize;}
+.x-color-palette{width:150px;height:92px;cursor:pointer;}
+.x-color-palette a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer;}
+.x-color-palette a:hover,.x-color-palette a.x-color-palette-sel{border:1px solid #8BB8F3;background:#deecfd;}
+.x-color-palette em{display:block;border:1px solid #ACA899;}
+.x-color-palette em span{cursor:pointer;display:block;height:10px;line-height:10px;width:10px;}
+.x-ie-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;background:#777;zoom:1;}
+.x-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;}
+.x-shadow *{overflow:hidden;}
+.x-shadow *{padding:0;border:0;margin:0;clear:none;zoom:1;}
+.x-shadow .xstc,.x-shadow .xsbc{height:6px;float:left;}
+.x-shadow .xstl,.x-shadow .xstr,.x-shadow .xsbl,.x-shadow .xsbr{width:6px;height:6px;float:left;}
+.x-shadow .xsc{width:100%;}
+.x-shadow .xsml,.x-shadow .xsmr{width:6px;float:left;height:100%;}
+.x-shadow .xsmc{float:left;height:100%;background:transparent url( ../js/ext/resources/images/default/shadow-c.png );}
+.x-shadow .xst,.x-shadow .xsb{height:6px;overflow:hidden;width:100%;}
+.x-shadow .xsml{background:transparent url( ../js/ext/resources/images/default/shadow-lr.png ) repeat-y 0 0;}
+.x-shadow .xsmr{background:transparent url( ../js/ext/resources/images/default/shadow-lr.png ) repeat-y -6px 0;}
+.x-shadow .xstl{background:transparent url( ../js/ext/resources/images/default/shadow.png ) no-repeat 0 0;}
+.x-shadow .xstc{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -30px;}
+.x-shadow .xstr{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -18px;}
+.x-shadow .xsbl{background:transparent url( ../js/ext/resources/images/default/shadow.png ) no-repeat 0 -12px;}
+.x-shadow .xsbc{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -36px;}
+.x-shadow .xsbr{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -6px;}
+.loading-indicator{font-size:11px;background-image:url(../js/ext/resources/images/default/grid/loading.gif);background-repeat:no-repeat;background-position:left;padding-left:20px;line-height:16px;margin:3px;}
+.x-text-resize{position:absolute;left:-1000px;top:-1000px;visibility:hidden;zoom:1;}
+.x-drag-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background-image:url(../js/ext/resources/images/default/s.gif);z-index:20000;}
+.x-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-spotlight{z-index:8999;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:0;height:0;zoom:1;}
+
+.x-tab-panel{overflow:hidden;}
+.x-tab-panel-header,.x-tab-panel-footer{background:#deecfd;border:1px solid #8db2e3;overflow:hidden;zoom:1;}
+.x-tab-panel-header{border:1px solid #8db2e3;padding-bottom:2px;}
+.x-tab-panel-footer{border:1px solid #8db2e3;padding-top:2px;}
+.x-tab-strip-wrap{width:100%;overflow:hidden;position:relative;zoom:1;}
+ul.x-tab-strip{display:block;width:5000px;zoom:1;}
+ul.x-tab-strip-top{padding-top:1px;background:url(../js/ext/resources/images/default/tabs/tab-strip-bg.gif) #cedff5 repeat-x bottom;border-bottom:1px solid #8db2e3;}
+ul.x-tab-strip-bottom{padding-bottom:1px;background:url(../js/ext/resources/images/default/tabs/tab-strip-btm-bg.gif) #cedff5 repeat-x top;border-top:1px solid #8db2e3;border-bottom:0 none;}
+.x-tab-panel-header-plain .x-tab-strip-top{background:transparent!important;padding-top:0!important;}
+.x-tab-panel-header-plain{background:transparent!important;border-width:0!important;padding-bottom:0!important;}
+.x-tab-panel-header-plain .x-tab-strip-spacer{border:1px solid #8db2e3;border-top:0 none;height:2px;background:#deecfd;font-size:1px;line-height:1px;}
+.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer{height:3px;}
+ul.x-tab-strip li{float:left;margin-left:2px;}
+ul.x-tab-strip li.x-tab-edge{float:left;margin:0!important;padding:0!important;border:0 none!important;font-size:1px!important;line-height:1px!important;overflow:hidden;zoom:1;background:transparent!important;width:1px;}
+.x-tab-strip a,.x-tab-strip span,.x-tab-strip em{display:block;}
+.x-tab-strip a{text-decoration:none!important;-moz-outline:none;outline:none;cursor:pointer;}
+.x-tab-strip-inner{overflow:hidden;text-overflow:ellipsis;}
+.x-tab-strip span.x-tab-strip-text{font:normal 11px tahoma,arial,helvetica;color:#416aa3;white-space:nowrap;cursor:pointer;padding:4px 0;}
+.x-tab-strip .x-tab-with-icon .x-tab-right{padding-left:6px;}
+.x-tab-strip .x-tab-with-icon span.x-tab-strip-text{padding-left:20px;background-position:0 3px;background-repeat:no-repeat;}
+.x-tab-strip-over span.x-tab-strip-text{color:#15428b;}
+.x-tab-strip-active{cursor:default;}
+.x-tab-strip-active span.x-tab-strip-text{cursor:default;color:#15428b;font-weight:bold;}
+.x-tab-strip-disabled .x-tabs-text{cursor:default;color:#aaa;}
+.x-tab-panel-body{overflow:hidden;}
+.x-tab-panel-bwrap{overflow:hidden;}
+.ext-ie .x-tab-strip .x-tab-right{position:relative;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right{margin-bottom:-1px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-bottom:5px;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{margin-top:-1px;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-top:5px;}
+.x-tab-strip-top .x-tab-right{background:transparent url(../js/ext/resources/images/default/tabs/tabs-sprite.gif) no-repeat 0 -51px;padding-left:10px;}
+.x-tab-strip-top .x-tab-left{background:transparent url(../js/ext/resources/images/default/tabs/tabs-sprite.gif) no-repeat right -351px;padding-right:10px;}
+.x-tab-strip-top .x-tab-strip-inner{background:transparent url(../js/ext/resources/images/default/tabs/tabs-sprite.gif) repeat-x 0 -201px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-right{background-position:0 -101px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-left{background-position:right -401px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner{background-position:0 -251px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right{background-position:0 0;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-left{background-position:right -301px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner{background-position:0 -151px;}
+.x-tab-strip-bottom .x-tab-right{background:url(../js/ext/resources/images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;}
+.x-tab-strip-bottom .x-tab-left{background:url(../js/ext/resources/images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background:url(../js/ext/resources/images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background:url(../js/ext/resources/images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right;}
+.x-tab-strip-bottom .x-tab-left{padding:0 10px;}
+.x-tab-strip-bottom .x-tab-right{padding:0;}
+.x-tab-strip .x-tab-strip-close{display:none;}
+.x-tab-strip-closable{position:relative;}
+.x-tab-strip-closable .x-tab-left{padding-right:19px;}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{background-image:url(../js/ext/resources/images/default/tabs/tab-close.gif);opacity:.6;-moz-opacity:.6;background-repeat:no-repeat;display:block;width:11px;height:11px;position:absolute;top:3px;right:3px;cursor:pointer;z-index:2;}
+.x-tab-strip .x-tab-strip-active a.x-tab-strip-close{opacity:.8;-moz-opacity:.8;}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{background-image:url(../js/ext/resources/images/default/tabs/tab-close.gif);opacity:1;-moz-opacity:1;}
+.x-tab-panel-body{border:1px solid #8db2e3;background:#fff;}
+.x-tab-panel-body-top{border-top:0 none;}
+.x-tab-panel-body-bottom{border-bottom:0 none;}
+.x-tab-scroller-left{background:transparent url(../js/ext/resources/images/default/tabs/scroll-left.gif) no-repeat -18px 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;left:0;top:0;z-index:10;cursor:pointer;}
+.x-tab-scroller-left-over{background-position:0 0;}
+.x-tab-scroller-left-disabled{background-position:-18px 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}
+.x-tab-scroller-right{background:transparent url(../js/ext/resources/images/default/tabs/scroll-right.gif) no-repeat 0 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;right:0;top:0;z-index:10;cursor:pointer;}
+.x-tab-scroller-right-over{background-position:-18px 0;}
+.x-tab-scroller-right-disabled{background-position:0 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}
+.x-tab-scrolling .x-tab-strip-wrap{margin-left:18px;margin-right:18px;}
+.x-tab-scrolling{position:relative;}
+.x-tab-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-tab-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-border-layout-ct .x-tab-panel{background:white;}
+
+ .x-form-field{margin:0;font:normal 12px tahoma,arial,helvetica,sans-serif;}
+.x-form-text,textarea.x-form-field{padding:1px 3px;background:#fff url(../js/ext/resources/images/default/form/text-bg.gif) repeat-x 0 0;border:1px solid #B5B8C8;}
+textarea.x-form-field{padding:2px 3px;}
+.x-form-text{height:22px;line-height:18px;vertical-align:middle;}
+.ext-ie .x-form-text{margin:-1px 0;height:22px;line-height:18px;}
+.ext-ie textarea.x-form-field{margin:-1px 0;}
+.ext-strict .x-form-text{height:18px;}
+.ext-safari .x-form-text{height:20px;padding:0 3px;}
+.ext-safari.ext-mac textarea.x-form-field{margin-bottom:-2px;}
+.ext-gecko .x-form-text{padding-top:2px;padding-bottom:0;}
+textarea{resize:none;}
+.x-form-select-one{height:20px;line-height:18px;vertical-align:middle;background-color:#fff;border:1px solid #B5B8C8;}
+.x-form-field-wrap{position:relative;zoom:1;white-space:nowrap;}
+.x-editor .x-form-check-wrap{background:#fff;}
+.x-form-field-wrap .x-form-trigger{width:17px;height:21px;border:0;background:transparent url(../js/ext/resources/images/default/form/trigger.gif) no-repeat 0 0;cursor:pointer;border-bottom:1px solid #B5B8C8;position:absolute;top:0;}
+.ext-safari .x-form-field-wrap .x-form-trigger{height:21px;}
+.x-form-field-wrap .x-form-date-trigger{background-image:url(../js/ext/resources/images/default/form/date-trigger.gif);cursor:pointer;}
+.x-form-field-wrap .x-form-clear-trigger{background-image:url(../js/ext/resources/images/default/form/clear-trigger.gif);cursor:pointer;}
+.x-form-field-wrap .x-form-search-trigger{background-image:url(../js/ext/resources/images/default/form/search-trigger.gif);cursor:pointer;}
+.ext-safari .x-form-field-wrap .x-form-trigger{right:0;}
+.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{position:static;top:auto;vertical-align:top;}
+.x-form-field-wrap .x-form-trigger-over{background-position:-17px 0;}
+.x-form-field-wrap .x-form-trigger-click{background-position:-34px 0;}
+.x-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;}
+.x-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;}
+.x-trigger-wrap-focus .x-form-trigger-click{background-position:-85px 0;}
+.x-trigger-wrap-focus .x-form-trigger{border-bottom:1px solid #7eadd9;}
+.x-item-disabled .x-form-trigger-over{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}
+.x-item-disabled .x-form-trigger-click{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}
+.x-form-focus,textarea.x-form-focus{border:1px solid #7eadd9;}
+.x-form-invalid,textarea.x-form-invalid{background:#fff url(../js/ext/resources/images/default/grid/invalid_line.gif) repeat-x bottom;border:1px solid #dd7870;}
+.ext-safari .x-form-invalid{background-color:#fee;border:1px solid #ff7870;}
+.x-editor{visibility:hidden;padding:0;margin:0;}
+.x-form-check-wrap{line-height:18px;}
+.ext-ie .x-form-check-wrap input{width:15px;height:15px;}
+.x-editor .x-form-check-wrap{padding:3px;}
+.x-editor .x-form-checkbox{height:13px;}
+.x-form-grow-sizer{font:normal 12px tahoma,arial,helvetica,sans-serif;left:-10000px;padding:8px 3px;position:absolute;visibility:hidden;top:-10000px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;zoom:1;}
+.x-form-grow-sizer p{margin:0!important;border:0 none!important;padding:0!important;}
+.x-form-item{font:normal 12px tahoma,arial,helvetica,sans-serif;display:block;margin-bottom:4px;}
+.x-form-item label{display:block;float:left;width:100px;padding:3px;padding-left:0;clear:left;z-index:2;position:relative;}
+.x-form-element{padding-left:105px;position:relative;}
+.x-form-invalid-msg{color:#e00;padding:2px;padding-left:18px;font:normal 11px tahoma,arial,helvetica,sans-serif;background:transparent url(../js/ext/resources/images/default/shared/warning.gif) no-repeat 0 2px;line-height:16px;width:200px;}
+.x-form-label-right label{text-align:right;}
+.x-form-label-top .x-form-item label{width:auto;float:none;clear:none;display:inline;margin-bottom:4px;position:static;}
+.x-form-label-top .x-form-element{padding-left:0;padding-top:4px;}
+.x-form-label-top .x-form-item{padding-bottom:4px;}
+.x-form-empty-field{color:gray;}
+.x-small-editor .x-form-field{font:normal 11px arial,tahoma,helvetica,sans-serif;}
+.x-small-editor .x-form-text{height:20px;line-height:16px;vertical-align:middle;}
+.ext-ie .x-small-editor .x-form-text{margin-top:-1px!important;margin-bottom:-1px!important;height:20px!important;line-height:16px!important;}
+.ext-strict .x-small-editor .x-form-text{height:16px!important;}
+.ext-safari .x-small-editor .x-form-field{font:normal 12px arial,tahoma,helvetica,sans-serif;}
+.ext-ie .x-small-editor .x-form-text{height:20px;line-height:16px;}
+.ext-border-box .x-small-editor .x-form-text{height:20px;}
+.x-small-editor .x-form-select-one{height:20px;line-height:16px;vertical-align:middle;}
+.x-small-editor .x-form-num-field{text-align:right;}
+.x-small-editor .x-form-field-wrap .x-form-trigger{height:19px;}
+.x-form-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-form-clear-left{clear:left;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-form-cb-label{width:'auto'!important;float:none!important;clear:none!important;display:inline!important;margin-left:4px;}
+.x-form-column{float:left;padding:0;margin:0;width:48%;overflow:hidden;zoom:1;}
+.x-form .x-form-btns-ct .x-btn{float:right;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns td{border:0;padding:0;}
+.x-form .x-form-btns-ct .x-form-btns-right table{float:right;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns-left table{float:left;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns-center{text-align:center;}
+.x-form .x-form-btns-ct .x-form-btns-center table{margin:0 auto;}
+.x-form .x-form-btns-ct table td.x-form-btn-td{padding:3px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
+.x-form-invalid-icon{width:16px;height:18px;visibility:hidden;position:absolute;left:0;top:0;display:block;background:transparent url(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 0 2px;}
+.x-fieldset{border:1px solid #B5B8C8;padding:10px;margin-bottom:10px;}
+.x-fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}
+.ext-ie .x-fieldset legend{margin-bottom:10px;}
+.ext-ie .x-fieldset{padding-top:0;padding-bottom:10px;}
+.x-fieldset legend .x-tool-toggle{margin-right:3px;margin-left:0;float:left!important;}
+.x-fieldset legend input{margin-right:3px;float:left!important;height:13px;width:13px;}
+fieldset.x-panel-collapsed{padding-bottom:0!important;border-width:1px 0 0 0!important;}
+fieldset.x-panel-collapsed .x-fieldset-bwrap{visibility:hidden;position:absolute;left:-1000px;top:-1000px;}
+.ext-ie .x-fieldset-bwrap{zoom:1;}
+.ext-ie td .x-form-text{position:relative;top:-1px;}
+.x-fieldset-noborder{border:0 none transparent;}
+.x-fieldset-noborder legend{margin-left:-3px;}
+.ext-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px;}
+.ext-ie .x-fieldset-noborder legend span{position:absolute;left:-5px;}
+.ext-gecko .x-window-body .x-form-item{-moz-outline:none;overflow:auto;}
+.ext-gecko .x-form-item{-moz-outline:none;}
+.x-hide-label label.x-form-item-label{display:none;}
+.x-hide-label .x-form-element{padding-left:0!important;}
+.x-fieldset{overflow:hidden;}
+.x-fieldset-bwrap{overflow:hidden;zoom:1;}
+.x-fieldset-body{overflow:hidden;}
+
+.x-btn{font:normal 11px tahoma,verdana,helvetica;cursor:pointer;white-space:nowrap;}
+.x-btn button{border:0 none;background:transparent;font:normal 11px tahoma,verdana,helvetica;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;}
+* html .ext-ie .x-btn button{width:1px;}
+.ext-gecko .x-btn button{padding-left:0;padding-right:0;}
+.ext-ie .x-btn button{padding-top:2px;}
+.x-btn-icon .x-btn-center .x-btn-text{background-position:center;background-repeat:no-repeat;height:16px;width:16px;cursor:pointer;white-space:nowrap;padding:0;}
+.x-btn-icon .x-btn-center{padding:1px;}
+.x-btn em{font-style:normal;font-weight:normal;}
+.x-btn-text-icon .x-btn-center .x-btn-text{background-position:0 2px;background-repeat:no-repeat;padding-left:18px;padding-top:3px;padding-bottom:2px;padding-right:0;}
+.x-btn-left,.x-btn-right{font-size:1px;line-height:1px;}
+.x-btn-left{width:3px;height:21px;background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 0;}
+.x-btn-right{width:3px;height:21px;background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -21px;}
+.x-btn-left i,.x-btn-right i{display:block;width:3px;overflow:hidden;font-size:1px;line-height:1px;}
+.x-btn-center{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) repeat-x 0 -42px;vertical-align:middle;text-align:center;padding:0 5px;cursor:pointer;white-space:nowrap;}
+.x-btn-over .x-btn-left{background-position:0 -63px;}
+.x-btn-over .x-btn-right{background-position:0 -84px;}
+.x-btn-over .x-btn-center{background-position:0 -105px;}
+.x-btn-click .x-btn-center,.x-btn-menu-active .x-btn-center{background-position:0 -126px;}
+.x-btn-disabled *{color:gray!important;cursor:default!important;}
+.x-btn-menu-text-wrap .x-btn-center{padding:0 3px;}
+.ext-gecko .x-btn-menu-text-wrap .x-btn-center{padding:0 1px;}
+.x-btn-menu-arrow-wrap .x-btn-center{padding:0;}
+.x-btn-menu-arrow-wrap .x-btn-center button{width:12px!important;height:21px;padding:0!important;display:block;background:transparent url(../js/ext/resources/images/default/button/btn-arrow.gif) no-repeat left 3px;}
+.x-btn-with-menu .x-btn-center{padding-right:2px!important;}
+.x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat right 0;padding-right:10px;}
+.x-btn-text-icon .x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat right 3px;padding-right:10px;}
+.x-btn-pressed .x-btn-left{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -63px;}
+.x-btn-pressed .x-btn-right{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -84px;}
+.x-btn-pressed .x-btn-center{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) repeat-x 0 -126px;}
+
+.x-toolbar{border-color:#a9bfd3;border-style:solid;border-width:0 0 1px 0;display:block;padding:2px;background:#d0def0 url(../js/ext/resources/images/default/toolbar/bg.gif) repeat-x top left;position:relative;zoom:1;}
+.x-toolbar .x-item-disabled .x-btn-icon{opacity:.35;-moz-opacity:.35;filter:alpha(opacity=35);}
+.x-toolbar td{vertical-align:middle;}
+.mso .x-toolbar,.x-grid-mso .x-toolbar{border:0 none;background:url(../js/ext/resources/images/default/grid/mso-hd.gif);}
+.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-toolbar .x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
+.x-toolbar .x-item-disabled *{color:gray;cursor:default;}
+.x-toolbar .x-btn-left{background:none;}
+.x-toolbar .x-btn-right{background:none;}
+.x-toolbar .x-btn-center{background:none;padding:0;}
+.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:2px;}
+.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:0;}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{padding:0 2px;}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}
+.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}
+.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button{background-position:0 -47px;}
+.x-toolbar .x-btn-over .x-btn-left{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0;}
+.x-toolbar .x-btn-over .x-btn-right{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px;}
+.x-toolbar .x-btn-over .x-btn-center{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px;}
+.x-toolbar .x-btn-click .x-btn-left,.x-toolbar .x-btn-pressed .x-btn-left,.x-toolbar .x-btn-menu-active .x-btn-left{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px;}
+.x-toolbar .x-btn-click .x-btn-right,.x-toolbar .x-btn-pressed .x-btn-right,.x-toolbar .x-btn-menu-active .x-btn-right{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px;}
+.x-toolbar .x-btn-click .x-btn-center,.x-toolbar .x-btn-pressed .x-btn-center,.x-toolbar .x-btn-menu-active .x-btn-center{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px;}
+.x-toolbar .x-btn-with-menu .x-btn-center em{padding-right:8px;}
+.x-toolbar .ytb-text{padding:2px;}
+.x-toolbar .ytb-sep{background-image:url(../js/ext/resources/images/default/grid/grid-blue-split.gif);background-position:center;background-repeat:no-repeat;display:block;font-size:1px;height:16px;width:4px;overflow:hidden;cursor:default;margin:0 2px 0;border:0;}
+.x-toolbar .ytb-spacer{width:2px;}
+.x-tbar-page-number{width:24px;height:14px;}
+.x-tbar-page-first{background-image:url(../js/ext/resources/images/default/grid/page-first.gif)!important;}
+.x-tbar-loading{background-image:url(../js/ext/resources/images/default/grid/done.gif)!important;}
+.x-tbar-page-last{background-image:url(../js/ext/resources/images/default/grid/page-last.gif)!important;}
+.x-tbar-page-next{background-image:url(../js/ext/resources/images/default/grid/page-next.gif)!important;}
+.x-tbar-page-prev{background-image:url(../js/ext/resources/images/default/grid/page-prev.gif)!important;}
+.x-item-disabled .x-tbar-loading{background-image:url(../js/ext/resources/images/default/grid/loading.gif)!important;}
+.x-item-disabled .x-tbar-page-first{background-image:url(../js/ext/resources/images/default/grid/page-first-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-last{background-image:url(../js/ext/resources/images/default/grid/page-last-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-next{background-image:url(../js/ext/resources/images/default/grid/page-next-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-prev{background-image:url(../js/ext/resources/images/default/grid/page-prev-disabled.gif)!important;}
+.x-paging-info{position:absolute;top:5px;right:8px;color:#444;}
+
+.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;background:white;filter:alpha(opacity=0);opacity:0;zoom:1;}
+.x-resizable-handle-east{width:6px;cursor:e-resize;right:0;top:0;height:100%;}
+.ext-ie .x-resizable-handle-east{margin-right:-1px;}
+.x-resizable-handle-south{width:100%;cursor:s-resize;left:0;bottom:0;height:6px;}
+.ext-ie .x-resizable-handle-south{margin-bottom:-1px;}
+.x-resizable-handle-west{width:6px;cursor:w-resize;left:0;top:0;height:100%;}
+.x-resizable-handle-north{width:100%;cursor:n-resize;left:0;top:0;height:6px;}
+.x-resizable-handle-southeast{width:6px;cursor:se-resize;right:0;bottom:0;height:6px;z-index:101;}
+.x-resizable-handle-northwest{width:6px;cursor:nw-resize;left:0;top:0;height:6px;z-index:101;}
+.x-resizable-handle-northeast{width:6px;cursor:ne-resize;right:0;top:0;height:6px;z-index:101;}
+.x-resizable-handle-southwest{width:6px;cursor:sw-resize;left:0;bottom:0;height:6px;z-index:101;}
+.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1;}
+.x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east{background:url(../js/ext/resources/images/default/sizer/e-handle.gif);background-position:left;}
+.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west{background:url(../js/ext/resources/images/default/sizer/e-handle.gif);background-position:left;}
+.x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south{background:url(../js/ext/resources/images/default/sizer/s-handle.gif);background-position:top;}
+.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north{background:url(../js/ext/resources/images/default/sizer/s-handle.gif);background-position:top;}
+.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background:url(../js/ext/resources/images/default/sizer/se-handle.gif);background-position:top left;}
+.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background:url(../js/ext/resources/images/default/sizer/nw-handle.gif);background-position:bottom right;}
+.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background:url(../js/ext/resources/images/default/sizer/ne-handle.gif);background-position:bottom left;}
+.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background:url(../js/ext/resources/images/default/sizer/sw-handle.gif);background-position:top right;}
+.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;display:none;left:0;top:0;z-index:50000;}
+.x-resizable-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background:white;z-index:200000;-moz-opacity:0;opacity:0;filter:alpha(opacity=0);}
+
+ .x-grid3{position:relative;overflow:hidden;background-color:#fff;}
+.x-grid-panel .x-panel-body{overflow:hidden!important;}
+.x-grid-panel .x-panel-mc .x-panel-body{border:1px solid #99bbe8;}
+.ext-ie .x-grid3 table,.ext-safari .x-grid3 table{table-layout:fixed;}
+.x-grid3-viewport{overflow:hidden;}
+.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td{font:normal 11px arial,tahoma,helvetica,sans-serif;-moz-outline:none;-moz-user-focus:normal;}
+.x-grid3-row td,.x-grid3-summary-row td{line-height:13px;vertical-align:top;padding-left:1px;padding-right:1px;-moz-user-select:none;}
+.x-grid3-hd-row td{line-height:15px;vertical-align:middle;border-left:1px solid #eee;border-right:1px solid #d0d0d0;}
+.x-grid3-hd-row .x-grid3-marker-hd{padding:3px;}
+.x-grid3-row .x-grid3-marker{padding:3px;}
+.x-grid3-cell-inner,.x-grid3-hd-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:3px 3px 3px 5px;white-space:nowrap;}
+.x-grid3-hd-inner{position:relative;cursor:inherit;padding:4px 3px 4px 5px;}
+.x-grid3-row-body{white-space:normal;}
+.x-grid3-body-cell{-moz-outline:0 none;outline:0 none;}
+.ext-ie .x-grid3-cell-inner,.ext-ie .x-grid3-hd-inner{width:100%;}
+.ext-strict .x-grid3-cell-inner,.ext-strict .x-grid3-hd-inner{width:auto;}
+.x-grid-row-loading{background:#fff url(../js/ext/resources/images/default/shared/loading-balls.gif) no-repeat center center;}
+.x-grid-page{overflow:hidden;}
+.x-grid3-row{cursor:default;border:1px solid #ededed;border-top-color:#fff;width:100%;}
+.x-grid3-row-alt{background-color:#fafafa;}
+.x-grid3-row-over{border:1px solid #ddd;background:#efefef url(../js/ext/resources/images/default/grid/row-over.gif) repeat-x left top;}
+.x-grid3-resize-proxy{width:1px;left:0;background-color:#777;cursor:e-resize;cursor:col-resize;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}
+.x-grid3-resize-marker{width:1px;left:0;background-color:#777;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}
+.x-grid3-focus{position:absolute;top:0;-moz-outline:0 none;outline:0 none;-moz-user-select:normal;-khtml-user-select:normal;}
+.x-grid3-header{background:#f9f9f9 url(../js/ext/resources/images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;cursor:default;zoom:1;padding:1px 0 0 0;}
+.x-grid3-header-pop{border-left:1px solid #d0d0d0;float:right;clear:none;}
+.x-grid3-header-pop-inner{border-left:1px solid #eee;width:14px;height:19px;background:transparent url(../js/ext/resources/images/default/grid/hd-pop.gif) no-repeat center center;}
+.ext-ie .x-grid3-header-pop-inner{width:15px;}
+.ext-strict .x-grid3-header-pop-inner{width:14px;}
+.x-grid3-header-inner{overflow:hidden;zoom:1;float:left;}
+.x-grid3-header-offset{padding-left:1px;width:10000px;}
+td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open{border-left:1px solid #aaccf6;border-right:1px solid #aaccf6;}
+td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner{background:#ebf3fd url(../js/ext/resources/images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;}
+.x-grid3-sort-icon{background-repeat:no-repeat;display:none;height:4px;width:13px;margin-left:3px;vertical-align:middle;}
+.sort-asc .x-grid3-sort-icon{background-image:url(../js/ext/resources/images/default/grid/sort_asc.gif);display:inline;}
+.sort-desc .x-grid3-sort-icon{background-image:url(../js/ext/resources/images/default/grid/sort_desc.gif);display:inline;}
+.ext-strict .ext-ie .x-grid3-header-inner{position:relative;}
+.ext-strict .ext-ie6 .x-grid3-hd{position:relative;}
+.ext-strict .ext-ie6 .x-grid3-hd-inner{position:static;}
+.x-grid3-body{zoom:1;}
+.x-grid3-scroller{overflow:auto;zoom:1;position:relative;}
+.x-grid3-cell-text,.x-grid3-hd-text{display:block;padding:3px 5px 3px 5px;-moz-user-select:none;-khtml-user-select:none;color:black;}
+.x-grid3-split{background-image:url(../js/ext/resources/images/default/grid/grid-split.gif);background-position:center;background-repeat:no-repeat;cursor:e-resize;cursor:col-resize;display:block;font-size:1px;height:16px;overflow:hidden;position:absolute;top:2px;width:6px;z-index:3;}
+.x-grid3-hd-text{color:#15428b;}
+.x-dd-drag-proxy .x-grid3-hd-inner{background:#ebf3fd url(../js/ext/resources/images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;width:120px;padding:3px;border:1px solid #aaccf6;overflow:hidden;}
+.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:1px;font-size:1px;overflow:hidden;visibility:hidden;z-index:20000;}
+.col-move-top{background:transparent url(../js/ext/resources/images/default/grid/col-move-top.gif) no-repeat left top;}
+.col-move-bottom{background:transparent url(../js/ext/resources/images/default/grid/col-move-bottom.gif) no-repeat left top;}
+.x-grid3-row-selected{background:#DFE8F6!important;border:1px dotted #a3bae9;}
+.x-grid3-cell-selected{background-color:#B8CFEE!important;color:black;}
+.x-grid3-cell-selected span{color:black!important;}
+.x-grid3-cell-selected .x-grid3-cell-text{color:black;}
+.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background:#ebeadb url(../js/ext/resources/images/default/grid/grid-hrow.gif) repeat-x 0 bottom!important;vertical-align:middle!important;color:black;padding:0;border-top:1px solid white;border-bottom:none!important;border-right:1px solid #6fa0df!important;text-align:center;}
+.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{padding:0 4px;color:#15428b!important;text-align:center;}
+.x-grid3-dirty-cell{background:transparent url(../js/ext/resources/images/default/grid/dirty.gif) no-repeat 0 0;}
+.x-grid3-topbar,.x-grid3-bottombar{font:normal 11px arial,tahoma,helvetica,sans-serif;overflow:hidden;display:none;zoom:1;position:relative;}
+.x-grid3-topbar .x-toolbar{border-right:0 none;}
+.x-grid3-bottombar .x-toolbar{border-right:0 none;border-bottom:0 none;border-top:1px solid #a9bfd3;}
+.x-props-grid .x-grid3-cell{padding:1px;}
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y -16px!important;padding-left:12px;color:black!important;}
+.x-props-grid .x-grid3-body .x-grid3-td-name{padding:1px;padding-right:0;background:white!important;border:0 none;border-right:1px solid #eee;}
+.xg-hmenu-sort-asc .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-asc.gif);}
+.xg-hmenu-sort-desc .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-desc.gif);}
+.xg-hmenu-lock .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-lock.gif);}
+.xg-hmenu-unlock .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-unlock.gif);}
+.x-grid3-col-dd{border:0 none;padding:0;background:transparent;}
+.x-dd-drag-ghost .x-grid3-dd-wrap{padding:1px 3px 3px 1px;}
+.x-grid3-hd{-moz-user-select:none;}
+.x-grid3-hd-btn{display:none;position:absolute;width:14px;background:#c3daf9 url(../js/ext/resources/images/default/grid/grid3-hd-btn.gif) no-repeat left center;right:0;top:0;z-index:2;cursor:pointer;}
+.x-grid3-hd-over .x-grid3-hd-btn,.x-grid3-hd-menu-open .x-grid3-hd-btn{display:block;}
+a.x-grid3-hd-btn:hover{background-position:-14px center;}
+.x-grid3-body .x-grid3-td-expander{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner{padding:0!important;height:100%;}
+.x-grid3-row-expander{width:100%;height:18px;background-position:4px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/grid/row-expand-sprite.gif);}
+.x-grid3-row-collapsed .x-grid3-row-expander{background-position:4px 2px;}
+.x-grid3-row-expanded .x-grid3-row-expander{background-position:-21px 2px;}
+.x-grid3-row-collapsed .x-grid3-row-body{display:none!important;}
+.x-grid3-row-expanded .x-grid3-row-body{display:block!important;}
+.x-grid3-body .x-grid3-td-checker{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner,.x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner{padding:0!important;height:100%;}
+.x-grid3-row-checker,.x-grid3-hd-checker{width:100%;height:18px;background-position:2px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/grid/row-check-sprite.gif);}
+.x-grid3-row .x-grid3-row-checker{background-position:2px 2px;}
+.x-grid3-row-selected .x-grid3-row-checker,.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 2px;}
+.x-grid3-hd-checker{background-position:2px 3px;}
+.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 3px;}
+.x-grid3-body .x-grid3-td-numberer{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner{padding:3px 5px 0 0!important;text-align:right;color:#444;}
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander{background:transparent url(../js/ext/resources/images/default/grid/grid3-special-col-sel-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner{padding:1px 0 0 0!important;}
+.x-grid3-check-col{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/menu/unchecked.gif);}
+.x-grid3-check-col-on{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/menu/checked.gif);}
+.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1;}
+.x-grid-group-hd{border-bottom:2px solid #99bbe8;cursor:pointer;padding-top:6px;}
+.x-grid-group-hd div{background:transparent url(../js/ext/resources/images/default/grid/group-expand-sprite.gif) no-repeat 3px -47px;padding:4px 4px 4px 17px;color:#3764a0;font:bold 11px tahoma,arial,helvetica,sans-serif;}
+.x-grid-group-collapsed .x-grid-group-hd div{background-position:3px 3px;}
+.x-grid-group-collapsed .x-grid-group-body{display:none;}
+.x-group-by-icon{background-image:url(../js/ext/resources/images/default/grid/group-by.gif);}
+.x-cols-icon{background-image:url(../js/ext/resources/images/default/grid/columns.gif);}
+.x-show-groups-icon{background-image:url(../js/ext/resources/images/default/grid/group-by.gif);}
+.ext-ie .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}
+.ext-ie .x-props-grid .x-editor .x-form-text{position:static;top:0;}
+.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.ext-ie7 .x-grid-panel .x-panel-bbar{position:relative;}
+
+.x-dd-drag-proxy{position:absolute;left:0;top:0;visibility:hidden;z-index:15000;}
+.x-dd-drag-ghost{color:black;font:normal 11px arial,helvetica,sans-serif;-moz-opacity:0.85;opacity:.85;filter:alpha(opacity=85);border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #bbb;border-bottom:1px solid #bbb;padding:3px;padding-left:20px;background-color:white;white-space:nowrap;}
+.x-dd-drag-repair .x-dd-drag-ghost{-moz-opacity:0.4;opacity:.4;filter:alpha(opacity=40);border:0 none;padding:0;background-color:transparent;}
+.x-dd-drag-repair .x-dd-drop-icon{visibility:hidden;}
+.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1;}
+.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/dd/drop-no.gif);}
+.x-dd-drop-ok .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/dd/drop-yes.gif);}
+.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/dd/drop-add.gif);}
+.x-view-selector{position:absolute;left:0;top:0;width:0;background:#c3daf9;border:1px dotted #39b;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);zoom:1;}
+
+.x-tree .x-panel-body{background-color:#fff;}
+.ext-strict .ext-ie .x-tree .x-panel-bwrap{position:relative;overflow:hidden;}
+.x-tree-icon,.x-tree-ec-icon,.x-tree-elbow-line,.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-repeat:no-repeat;}
+.x-tree-node-collapsed .x-tree-node-icon,.x-tree-node-expanded .x-tree-node-icon,.x-tree-node-leaf .x-tree-node-icon{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-position:center;background-repeat:no-repeat;}
+.ext-ie .x-tree-node-indent img,.ext-ie .x-tree-node-icon,.ext-ie .x-tree-ec-icon{vertical-align:middle!important;}
+.x-tree-node-expanded .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/folder-open.gif);}
+.x-tree-node-leaf .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/leaf.gif);}
+.x-tree-node-collapsed .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/folder.gif);}
+.ext-ie input.x-tree-node-cb{width:15px;height:15px;}
+input.x-tree-node-cb{margin-left:1px;}
+.ext-ie input.x-tree-node-cb{margin-left:0;}
+.x-tree-noicon .x-tree-node-icon{width:0;height:0;}
+.x-tree-node-loading .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/loading.gif)!important;}
+.x-tree-node-loading a span{font-style:italic;color:#444;}
+.ext-ie .x-tree-node-el input{width:15px;height:15px;}
+.x-tree-lines .x-tree-elbow{background-image:url(../js/ext/resources/images/default/tree/elbow.gif);}
+.x-tree-lines .x-tree-elbow-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-plus.gif);}
+.x-tree-lines .x-tree-elbow-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-minus.gif);}
+.x-tree-lines .x-tree-elbow-end{background-image:url(../js/ext/resources/images/default/tree/elbow-end.gif);}
+.x-tree-lines .x-tree-elbow-end-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-plus.gif);}
+.x-tree-lines .x-tree-elbow-end-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-minus.gif);}
+.x-tree-lines .x-tree-elbow-line{background-image:url(../js/ext/resources/images/default/tree/elbow-line.gif);}
+.x-tree-no-lines .x-tree-elbow{background:transparent;}
+.x-tree-no-lines .x-tree-elbow-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-plus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-minus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-end{background:transparent;}
+.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-plus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-end-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-minus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-line{background:transparent;}
+.x-tree-arrows .x-tree-elbow{background:transparent;}
+.x-tree-arrows .x-tree-elbow-plus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat 0 0;}
+.x-tree-arrows .x-tree-elbow-minus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat -16px 0;}
+.x-tree-arrows .x-tree-elbow-end{background:transparent;}
+.x-tree-arrows .x-tree-elbow-end-plus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat 0 0;}
+.x-tree-arrows .x-tree-elbow-end-minus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat -16px 0;}
+.x-tree-arrows .x-tree-elbow-line{background:transparent;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{background-position:-32px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{background-position:-48px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{background-position:-32px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:-48px 0;}
+.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer;}
+.ext-ie ul.x-tree-node-ct{font-size:0;line-height:0;zoom:1;}
+.x-tree-node{color:black;font:normal 11px arial,tahoma,helvetica,sans-serif;white-space:nowrap;}
+.x-tree-node-el{line-height:18px;cursor:pointer;}
+.x-tree-node a,.x-dd-drag-ghost a{text-decoration:none;color:black;-khtml-user-select:none;-moz-user-select:none;-kthml-user-focus:normal;-moz-user-focus:normal;-moz-outline:0 none;outline:0 none;}
+.x-tree-node a span,.x-dd-drag-ghost a span{text-decoration:none;color:black;padding:1px 3px 1px 2px;}
+.x-tree-node .x-tree-node-disabled a span{color:gray!important;}
+.x-tree-node .x-tree-node-disabled .x-tree-node-icon{-moz-opacity:0.5;opacity:.5;filter:alpha(opacity=50);}
+.x-tree-node .x-tree-node-inline-icon{background:transparent;}
+.x-tree-node a:hover,.x-dd-drag-ghost a:hover{text-decoration:none;}
+.x-tree-node div.x-tree-drag-insert-below{border-bottom:1px dotted #36c;}
+.x-tree-node div.x-tree-drag-insert-above{border-top:1px dotted #36c;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{border-bottom:0 none;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{border-top:0 none;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{border-bottom:2px solid #36c;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{border-top:2px solid #36c;}
+.x-tree-node .x-tree-drag-append a span{background:#ddd;border:1px dotted gray;}
+.x-tree-node .x-tree-node-over{background-color:#eee;}
+.x-tree-node .x-tree-selected{background-color:#d9e8fb;}
+.x-dd-drag-ghost .x-tree-node-indent,.x-dd-drag-ghost .x-tree-ec-icon{display:none!important;}
+.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-add.gif);}
+.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-over.gif);}
+.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-under.gif);}
+.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-between.gif);}
+
+.x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;}
+.x-date-picker a{-moz-outline:0 none;outline:0 none;}
+.x-date-inner,.x-date-inner td,.x-date-inner th{border-collapse:separate;}
+.x-date-middle,.x-date-left,.x-date-right{background:url(../js/ext/resources/images/default/shared/hd-sprite.gif) repeat-x 0 -83px;color:#FFF;font:bold 11px "sans serif",tahoma,verdana,helvetica;overflow:hidden;}
+.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{background:transparent!important;vertical-align:middle;}
+.x-date-middle .x-btn .x-btn-text{color:#fff;}
+.x-date-middle .x-btn-with-menu .x-btn-center em{background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow-light.gif) no-repeat right 0;}
+.x-date-right,.x-date-left{width:18px;}
+.x-date-right{text-align:right;}
+.x-date-middle{padding-top:2px;padding-bottom:2px;}
+.x-date-right a,.x-date-left a{display:block;width:16px;height:16px;background-position:center;background-repeat:no-repeat;cursor:pointer;-moz-opacity:0.6;opacity:.6;filter:alpha(opacity=60);}
+.x-date-right a:hover,.x-date-left a:hover{-moz-opacity:1;opacity:1;filter:alpha(opacity=100);}
+.x-date-right a{background-image:url(../js/ext/resources/images/default/shared/right-btn.gif);margin-right:2px;text-decoration:none!important;}
+.x-date-left a{background-image:url(../js/ext/resources/images/default/shared/left-btn.gif);margin-left:2px;text-decoration:none!important;}
+table.x-date-inner{width:100%;table-layout:fixed;}
+.x-date-inner th{width:25px;}
+.x-date-inner th{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;text-align:right!important;border-bottom:1px solid #a3bad9;font:normal 10px arial,helvetica,tahoma,sans-serif;color:#233d6d;cursor:default;padding:0;border-collapse:separate;}
+.x-date-inner th span{display:block;padding:2px;padding-right:7px;}
+.x-date-inner td{border:1px solid #fff;text-align:right;padding:0;}
+.x-date-inner a{padding:2px 5px;display:block;font:normal 11px arial,helvetica,tahoma,sans-serif;text-decoration:none;color:black;text-align:right;zoom:1;}
+.x-date-inner .x-date-active{cursor:pointer;color:black;}
+.x-date-inner .x-date-selected a{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;padding:1px 4px;}
+.x-date-inner .x-date-today a{border:1px solid darkred;padding:1px 4px;}
+.x-date-inner .x-date-selected span{font-weight:bold;}
+.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a{color:#aaa;text-decoration:none!important;}
+.x-date-bottom{padding:4px;border-top:1px solid #a3bad9;background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;}
+.x-date-inner a:hover,.x-date-inner .x-date-disabled a:hover{text-decoration:none!important;color:black;background:#ddecfe;}
+.x-date-inner .x-date-disabled a{cursor:default;background:#eee;color:#bbb;}
+.x-date-mmenu{background:#eee!important;}
+.x-date-mmenu .x-menu-item{font-size:10px;padding:1px 24px 1px 4px;white-space:nowrap;color:#000;}
+.x-date-mmenu .x-menu-item .x-menu-item-icon{width:10px;height:10px;margin-right:5px;background-position:center -4px!important;}
+.x-date-mp{position:absolute;left:0;top:0;background:white;display:none;}
+.x-date-mp td{padding:2px;font:normal 11px arial,helvetica,tahoma,sans-serif;}
+td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn{border:0 none;text-align:center;vertical-align:middle;width:25%;}
+.x-date-mp-ok{margin-right:3px;}
+.x-date-mp-btns button{text-decoration:none;text-align:center;text-decoration:none!important;background:#083772;color:white;border:1px solid;border-color:#36c #005 #005 #36c;padding:1px 3px 1px;font:normal 11px arial,helvetica,tahoma,sans-serif;cursor:pointer;}
+.x-date-mp-btns{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;}
+.x-date-mp-btns td{border-top:1px solid #c5d2df;text-align:center;}
+td.x-date-mp-month a,td.x-date-mp-year a{display:block;padding:2px 4px;text-decoration:none;text-align:center;color:#15428b;}
+td.x-date-mp-month a:hover,td.x-date-mp-year a:hover{color:#15428b;text-decoration:none;cursor:pointer;background:#ddecfe;}
+td.x-date-mp-sel a{padding:1px 3px;background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;}
+.x-date-mp-ybtn a{overflow:hidden;width:15px;height:15px;cursor:pointer;background:transparent url(../js/ext/resources/images/default/panel/tool-sprites.gif) no-repeat;display:block;margin:0 auto;}
+.x-date-mp-ybtn a.x-date-mp-next{background-position:0 -120px;}
+.x-date-mp-ybtn a.x-date-mp-next:hover{background-position:-15px -120px;}
+.x-date-mp-ybtn a.x-date-mp-prev{background-position:0 -105px;}
+.x-date-mp-ybtn a.x-date-mp-prev:hover{background-position:-15px -105px;}
+.x-date-mp-ybtn{text-align:center;}
+td.x-date-mp-sep{border-right:1px solid #c5d2df;}
+
+.x-tip{position:absolute;top:0;left:0;visibility:hidden;z-index:20000;border:0 none;}
+.x-tip .x-tip-close{background-image:url(../js/ext/resources/images/default/qtip/close.gif);height:15px;float:right;width:15px;margin:0 0 2px 2px;cursor:pointer;display:none;}
+.x-tip .x-tip-tc{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -62px;padding-top:3px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-tl{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 0;padding-left:6px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-tr{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat right 0;padding-right:6px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-bc{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;height:3px;overflow:hidden;}
+.x-tip .x-tip-bl{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;padding-left:6px;zoom:1;}
+.x-tip .x-tip-br{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat right -59px;padding-right:6px;zoom:1;}
+.x-tip .x-tip-mc{border:0 none;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-tip .x-tip-ml{background:#fff url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;padding-left:6px;zoom:1;}
+.x-tip .x-tip-mr{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat right -124px;padding-right:6px;zoom:1;}
+.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc{font-size:0;line-height:0;}
+.x-tip .x-tip-header-text{font:bold 11px tahoma,arial,helvetica,sans-serif;padding:0;margin:0 0 2px 0;color:#444;}
+.x-tip .x-tip-body{font:normal 11px tahoma,arial,helvetica,sans-serif;margin:0!important;line-height:14px;color:#444;padding:0;}
+.x-tip .x-tip-body .loading-indicator{margin:0;}
+.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text{cursor:move;}
+.x-form-invalid-tip .x-tip-tc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -12px;padding-top:6px;}
+.x-form-invalid-tip .x-tip-tl{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-tr{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-bc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -18px;height:6px;}
+.x-form-invalid-tip .x-tip-bl{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) no-repeat 0 -6px;}
+.x-form-invalid-tip .x-tip-br{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) no-repeat right -6px;}
+.x-form-invalid-tip .x-tip-ml{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-mr{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-body{padding:2px;}
+.x-form-invalid-tip .x-tip-body{padding-left:24px;background:transparent url(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 2px 2px;}
+
+.x-menu{border:1px solid #718bb7;z-index:15000;zoom:1;background:#f0f0f0 url(../js/ext/resources/images/default/menu/menu.gif) repeat-y;padding:2px;}
+.x-menu a{text-decoration:none!important;}
+.ext-ie .x-menu{zoom:1;overflow:hidden;}
+.x-menu-list{background:transparent;border:0 none;}
+.x-menu li{line-height:100%;}
+.x-menu li.x-menu-sep-li{font-size:1px;line-height:1px;}
+.x-menu-list-item{font:normal 11px tahoma,arial,sans-serif;white-space:nowrap;-moz-user-select:none;-khtml-user-select:none;display:block;padding:1px;}
+.x-menu-item-arrow{background:transparent url(../js/ext/resources/images/default/menu/menu-parent.gif) no-repeat right;}
+.x-menu-sep{display:block;font-size:1px;line-height:1px;margin:2px 3px;background-color:#e0e0e0;border-bottom:1px solid #fff;overflow:hidden;}
+.x-menu-focus{position:absolute;left:0;top:-5px;width:0;height:0;line-height:1px;}
+.x-menu a.x-menu-item{display:block;line-height:16px;padding:3px 21px 3px 3px;white-space:nowrap;text-decoration:none;color:#222;-moz-outline:0 none;outline:0 none;cursor:pointer;}
+.x-menu-item-active{background:#ebf3fd url(../js/ext/resources/images/default/menu/item-over.gif) repeat-x left bottom;border:1px solid #aaccf6;padding:0;}
+.x-menu-item-active a.x-menu-item{color:#233d6d;}
+.x-menu-item-icon{border:0 none;height:16px;padding:0;vertical-align:top;width:16px;margin:0 8px 0 0;background-position:center;}
+.x-menu-check-item .x-menu-item-icon{background:transparent url(../js/ext/resources/images/default/menu/unchecked.gif) no-repeat center;}
+.x-menu-item-checked .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/menu/checked.gif);}
+.x-menu-group-item .x-menu-item-icon{background:transparent;}
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{background:transparent url(../js/ext/resources/images/default/menu/group-checked.gif) no-repeat center;}
+.x-menu-plain{background:#fff!important;}
+.x-menu-date-item{padding:0;}
+.x-menu .x-color-palette,.x-menu .x-date-picker{margin-left:26px;margin-right:4px;}
+.x-menu .x-date-picker{border:1px solid #a3bad9;margin-top:2px;margin-bottom:2px;}
+.x-menu-plain .x-color-palette,.x-menu-plain .x-date-picker{margin:0;border:0 none;}
+.x-date-menu{padding:0!important;}
+.x-cycle-menu .x-menu-item-checked{border:1px dotted #a3bae9!important;background:#DFE8F6;padding:0;}
+
+ .x-box-tl{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 0;zoom:1;}
+.x-box-tc{height:8px;background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 0;overflow:hidden;}
+.x-box-tr{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat right -8px;}
+.x-box-ml{background:transparent url(../js/ext/resources/images/default/box/l.gif) repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}
+.x-box-mc{background:#eee url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 -16px;padding:4px 10px;font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:12px;}
+.x-box-mc h3{font-size:14px;font-weight:bold;margin:0 0 4px 0;zoom:1;}
+.x-box-mr{background:transparent url(../js/ext/resources/images/default/box/r.gif) repeat-y right;padding-right:4px;overflow:hidden;}
+.x-box-bl{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 -16px;zoom:1;}
+.x-box-bc{background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 -8px;height:8px;overflow:hidden;}
+.x-box-br{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat right -24px;}
+.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden;}
+.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden;}
+.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(../js/ext/resources/images/default/box/corners-blue.gif);}
+.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(../js/ext/resources/images/default/box/tb-blue.gif);}
+.x-box-blue .x-box-mc{background-color:#c3daf9;}
+.x-box-blue .x-box-mc h3{color:#17385b;}
+.x-box-blue .x-box-ml{background-image:url(../js/ext/resources/images/default/box/l-blue.gif);}
+.x-box-blue .x-box-mr{background-image:url(../js/ext/resources/images/default/box/r-blue.gif);}
+
+#x-debug-browser .x-tree .x-tree-node a span{color:#222297;font-size:11px;padding-top:2px;font-family:"monotype","courier new",sans-serif;line-height:18px;}
+#x-debug-browser .x-tree a i{color:#FF4545;font-style:normal;}
+#x-debug-browser .x-tree a em{color:#999;}
+#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{background:#c3daf9;}
+#x-debug-browser .x-tool-toggle{background-position:0 -75px;}
+#x-debug-browser .x-tool-toggle-over{background-position:-15px -75px;}
+#x-debug-browser.x-panel-collapsed .x-tool-toggle{background-position:0 -60px;}
+#x-debug-browser.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -60px;}
+
+.x-combo-list{border:1px solid #98c0f4;background:#ddecfe;zoom:1;overflow:hidden;}
+.x-combo-list-inner{overflow:auto;background:white;position:relative;zoom:1;overflow-x:hidden;}
+.x-combo-list-hd{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;background-image:url(../js/ext/resources/images/default/layout/panel-title-light-bg.gif);border-bottom:1px solid #98c0f4;padding:3px;}
+.x-resizable-pinned .x-combo-list-inner{border-bottom:1px solid #98c0f4;}
+.x-combo-list-item{font:normal 12px tahoma,arial,helvetica,sans-serif;padding:2px;border:1px solid #fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
+.x-combo-list .x-combo-selected{border:1px dotted #a3bae9!important;background:#DFE8F6;cursor:pointer;}
+.x-combo-noedit{cursor:pointer;}
+.x-combo-list .x-toolbar{border-top:1px solid #98c0f4;border-bottom:0 none;}
+.x-combo-list-small .x-combo-list-item{font:normal 11px tahoma,arial,helvetica,sans-serif;}
+
+.x-panel{border-style:solid;border-color:#99bbe8;border-width:0;}
+.x-panel-header{overflow:hidden;zoom:1;color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 3px 4px 5px;border:1px solid #99bbe8;line-height:15px;background:transparent url(../js/ext/resources/images/default/panel/white-top-bottom.gif) repeat-x 0 -1px;}
+.x-panel-body{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;background:white;position:relative;}
+.x-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
+.x-panel-body-noheader,.x-panel-mc .x-panel-body{border-top:1px solid #99bbe8;}
+.x-panel-header{overflow:hidden;zoom:1;}
+.x-panel-tl .x-panel-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;border:0 none;background:transparent;}
+.x-panel-tl .x-panel-icon,.x-window-tl .x-panel-icon{padding-left:20px!important;background-repeat:no-repeat;background-position:0 4px;zoom:1;}
+.x-panel-inline-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px;margin-top:-1px;margin-bottom:-1px;}
+.x-panel-tc{background:transparent url(../js/ext/resources/images/default/panel/top-bottom.gif) repeat-x 0 0;overflow:hidden;}
+.ext-strict .ext-ie7 .x-panel-tc{overflow:visible;}
+.x-panel-tl{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat 0 0;padding-left:6px;zoom:1;border-bottom:1px solid #99bbe8;}
+.x-panel-tr{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat right 0;zoom:1;padding-right:6px;}
+.x-panel-bc{background:transparent url(../js/ext/resources/images/default/panel/top-bottom.gif) repeat-x 0 bottom;zoom:1;}
+.x-panel-bc .x-panel-footer{zoom:1;}
+.x-panel-bl{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat 0 bottom;padding-left:6px;zoom:1;}
+.x-panel-br{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat right bottom;padding-right:6px;zoom:1;}
+.x-panel-mc{border:0 none;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;padding-top:6px;background:#dfe8f6;}
+.x-panel-mc .x-panel-body{background:transparent;border:0 none;}
+.x-panel-ml{background:#fff url(../js/ext/resources/images/default/panel/left-right.gif) repeat-y 0 0;padding-left:6px;zoom:1;}
+.x-panel-mr{background:transparent url(../js/ext/resources/images/default/panel/left-right.gif) repeat-y right 0;padding-right:6px;zoom:1;}
+.x-panel-bc .x-panel-footer{padding-bottom:6px;}
+.x-panel-nofooter .x-panel-bc{height:6px;font-size:0;line-height:0;}
+.x-panel-bwrap{overflow:hidden;zoom:1;}
+.x-panel-body{overflow:hidden;zoom:1;}
+.x-panel-collapsed .x-resizable-handle{display:none;}
+.ext-gecko .x-panel-animated div{overflow:hidden!important;}
+.x-plain-body{overflow:hidden;}
+.x-plain-bbar .x-toolbar{overflow:hidden;padding:2px;}
+.x-plain-tbar .x-toolbar{overflow:hidden;padding:2px;}
+.x-plain-bwrap{overflow:hidden;zoom:1;}
+.x-plain{overflow:hidden;}
+.x-tool{overflow:hidden;width:15px;height:15px;float:right;cursor:pointer;background:transparent url(../js/ext/resources/images/default/panel/tool-sprites.gif) no-repeat;margin-left:2px;}
+.x-tool-toggle{background-position:0 -60px;}
+.x-tool-toggle-over{background-position:-15px -60px;}
+.x-panel-collapsed .x-tool-toggle{background-position:0 -75px;}
+.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -75px;}
+.x-tool-close{background-position:0 -0;}
+.x-tool-close-over{background-position:-15px 0;}
+.x-tool-minimize{background-position:0 -15px;}
+.x-tool-minimize-over{background-position:-15px -15px;}
+.x-tool-maximize{background-position:0 -30px;}
+.x-tool-maximize-over{background-position:-15px -30px;}
+.x-tool-restore{background-position:0 -45px;}
+.x-tool-restore-over{background-position:-15px -45px;}
+.x-tool-gear{background-position:0 -90px;}
+.x-tool-gear-over{background-position:-15px -90px;}
+.x-tool-pin{background-position:0 -135px;}
+.x-tool-pin-over{background-position:-15px -135px;}
+.x-tool-unpin{background-position:0 -150px;}
+.x-tool-unpin-over{background-position:-15px -150px;}
+.x-tool-right{background-position:0 -165px;}
+.x-tool-right-over{background-position:-15px -165px;}
+.x-tool-left{background-position:0 -180px;}
+.x-tool-left-over{background-position:-15px -180px;}
+.x-tool-up{background-position:0 -210px;}
+.x-tool-up-over{background-position:-15px -210px;}
+.x-tool-down{background-position:0 -195px;}
+.x-tool-down-over{background-position:-15px -195px;}
+.x-tool-refresh{background-position:0 -225px;}
+.x-tool-refresh-over{background-position:-15px -225px;}
+.x-tool-minus{background-position:0 -255px;}
+.x-tool-minus-over{background-position:-15px -255px;}
+.x-tool-plus{background-position:0 -240px;}
+.x-tool-plus-over{background-position:-15px -240px;}
+.x-tool-search{background-position:0 -270px;}
+.x-tool-search-over{background-position:-15px -270px;}
+.x-tool-save{background-position:0 -285px;}
+.x-tool-save-over{background-position:-15px -285px;}
+.x-tool-help{background-position:0 -300px;}
+.x-tool-help-over{background-position:-15px -300px;}
+.x-tool-print{background-position:0 -315px;}
+.x-tool-print-over{background-position:-15px -315px;}
+.x-panel-ghost{background:#cbddf3;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;opacity:.65;-moz-opacity:.65;filter:alpha(opacity=65);}
+.x-panel-ghost ul{margin:0;padding:0;overflow:hidden;font-size:0;line-height:0;border:1px solid #99bbe8;border-top:0 none;display:block;}
+.x-panel-ghost *{cursor:move!important;}
+.x-panel-dd-spacer{border:2px dashed #99bbe8;}
+.x-panel-btns-ct{padding:5px;}
+.x-panel-btns-ct .x-btn{float:right;clear:none;}
+.x-panel-btns-ct .x-panel-btns td{border:0;padding:0;}
+.x-panel-btns-ct .x-panel-btns-right table{float:right;clear:none;}
+.x-panel-btns-ct .x-panel-btns-left table{float:left;clear:none;}
+.x-panel-btns-ct .x-panel-btns-center{text-align:center;}
+.x-panel-btns-ct .x-panel-btns-center table{margin:0 auto;}
+.x-panel-btns-ct table td.x-panel-btn-td{padding:3px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}
+.x-panel-btns-ct .x-btn-over .x-btn-left{background-position:0 -63px;}
+.x-panel-btns-ct .x-btn-over .x-btn-right{background-position:0 -84px;}
+.x-panel-btns-ct .x-btn-over .x-btn-center{background-position:0 -105px;}
+.x-panel-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}
+.x-panel-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}
+.x-panel-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
+
+.x-window{zoom:1;}
+.x-window .x-resizable-handle{opacity:0;-moz-opacity:0;filter:alpha(opacity=0);}
+.x-window-proxy{background:#C7DFFC;border:1px solid #99bbe8;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;display:none;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
+.x-window-header{overflow:hidden;zoom:1;}
+.x-window-bwrap{z-index:1;position:relative;zoom:1;}
+.x-window-tl .x-window-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;}
+.x-window-header-text{cursor:pointer;}
+.x-window-tc{background:transparent url(../js/ext/resources/images/default/window/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;}
+.x-window-tl{background:transparent url(../js/ext/resources/images/default/window/left-corners.png) no-repeat 0 0;padding-left:6px;zoom:1;z-index:1;position:relative;}
+.x-window-tr{background:transparent url(../js/ext/resources/images/default/window/right-corners.png) no-repeat right 0;padding-right:6px;}
+.x-window-bc{background:transparent url(../js/ext/resources/images/default/window/top-bottom.png) repeat-x 0 bottom;zoom:1;}
+.x-window-bc .x-window-footer{padding-bottom:6px;zoom:1;font-size:0;line-height:0;}
+.x-window-bl{background:transparent url(../js/ext/resources/images/default/window/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;}
+.x-window-br{background:transparent url(../js/ext/resources/images/default/window/right-corners.png) no-repeat right bottom;padding-right:6px;zoom:1;}
+.x-window-mc{border:1px solid #99bbe8;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;background:#dfe8f6;}
+.x-window-ml{background:transparent url(../js/ext/resources/images/default/window/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;}
+.x-window-mr{background:transparent url(../js/ext/resources/images/default/window/left-right.png) repeat-y right 0;padding-right:6px;zoom:1;}
+.x-panel-nofooter .x-window-bc{height:6px;}
+.x-window-body{overflow:hidden;}
+.x-window-bwrap{overflow:hidden;}
+.x-window-maximized .x-window-bl,.x-window-maximized .x-window-br,.x-window-maximized .x-window-ml,.x-window-maximized .x-window-mr,.x-window-maximized .x-window-tl,.x-window-maximized .x-window-tr{padding:0;}
+.x-window-maximized .x-window-footer{padding-bottom:0;}
+.x-window-maximized .x-window-tc{padding-left:3px;padding-right:3px;background-color:white;}
+.x-window-maximized .x-window-mc{border-left:0 none;border-right:0 none;}
+.x-window-tbar .x-toolbar,.x-window-bbar .x-toolbar{border-left:0 none;border-right:0 none;}
+.x-window-bbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
+.x-window-draggable,.x-window-draggable .x-window-header-text{cursor:move;}
+.x-window-maximized .x-window-draggable,.x-window-maximized .x-window-draggable .x-window-header-text{cursor:default;}
+.x-window-body{background:transparent;}
+.x-panel-ghost .x-window-tl{border-bottom:1px solid #99bbe8;}
+.x-panel-collapsed .x-window-tl{border-bottom:1px solid #84a0c4;}
+.x-window-maximized-ct{overflow:hidden;}
+.x-window-maximized .x-resizable-handle{display:none;}
+.x-window-sizing-ghost ul{border:0 none!important;}
+.x-dlg-focus{-moz-outline:0 none;outline:0 none;width:0;height:0;overflow:hidden;position:absolute;top:0;left:0;}
+.x-dlg-mask{z-index:10000;display:none;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;}
+body.ext-ie6.x-body-masked select{visibility:hidden;}
+body.ext-ie6.x-body-masked .x-window select{visibility:visible;}
+.x-window-plain .x-window-mc{background:#CAD9EC;border-right:1px solid #DFE8F6;border-bottom:1px solid #DFE8F6;border-top:1px solid #a3bae9;border-left:1px solid #a3bae9;}
+.x-window-plain .x-window-body{border-left:1px solid #DFE8F6;border-top:1px solid #DFE8F6;border-bottom:1px solid #a3bae9;border-right:1px solid #a3bae9;background:transparent!important;}
+body.x-body-masked .x-window-plain .x-window-mc{background:#C7D6E9;}
+
+.x-html-editor-wrap{border:1px solid #a9bfd3;background:white;}
+.x-html-editor-tb .x-btn-text{background:transparent url(../js/ext/resources/images/default/editor/tb-sprite.gif) no-repeat;}
+.x-html-editor-tb .x-edit-bold .x-btn-text{background-position:0 0;}
+.x-html-editor-tb .x-edit-italic .x-btn-text{background-position:-16px 0;}
+.x-html-editor-tb .x-edit-underline .x-btn-text{background-position:-32px 0;}
+.x-html-editor-tb .x-edit-forecolor .x-btn-text{background-position:-160px 0;}
+.x-html-editor-tb .x-edit-backcolor .x-btn-text{background-position:-176px 0;}
+.x-html-editor-tb .x-edit-justifyleft .x-btn-text{background-position:-112px 0;}
+.x-html-editor-tb .x-edit-justifycenter .x-btn-text{background-position:-128px 0;}
+.x-html-editor-tb .x-edit-justifyright .x-btn-text{background-position:-144px 0;}
+.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text{background-position:-80px 0;}
+.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text{background-position:-96px 0;}
+.x-html-editor-tb .x-edit-increasefontsize .x-btn-text{background-position:-48px 0;}
+.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text{background-position:-64px 0;}
+.x-html-editor-tb .x-edit-sourceedit .x-btn-text{background-position:-192px 0;}
+.x-html-editor-tb .x-edit-createlink .x-btn-text{background-position:-208px 0;}
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px;}
+.x-html-editor-tb .x-toolbar{position:static!important;}
+
+.x-panel-noborder .x-panel-body-noborder{border-width:0;}
+.x-panel-noborder .x-panel-header-noborder{border-width:0;border-bottom:1px solid #99bbe8;}
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}
+.x-window-noborder .x-window-mc{border-width:0;}
+.x-window-plain .x-window-body-noborder{border-width:0;}
+.x-tab-panel-noborder .x-tab-panel-body-noborder{border-width:0;}
+.x-tab-panel-noborder .x-tab-panel-header-noborder{border-top-width:0;border-left-width:0;border-right-width:0;}
+.x-tab-panel-noborder .x-tab-panel-footer-noborder{border-bottom-width:0;border-left-width:0;border-right-width:0;}
+.x-tab-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}
+.x-tab-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}
+
+.x-border-layout-ct{background:#dfe8f6;}
+.x-border-panel{position:absolute;left:0;top:0;}
+.x-tool-collapse-south{background-position:0 -195px;}
+.x-tool-collapse-south-over{background-position:-15px -195px;}
+.x-tool-collapse-north{background-position:0 -210px;}
+.x-tool-collapse-north-over{background-position:-15px -210px;}
+.x-tool-collapse-west{background-position:0 -180px;}
+.x-tool-collapse-west-over{background-position:-15px -180px;}
+.x-tool-collapse-east{background-position:0 -165px;}
+.x-tool-collapse-east-over{background-position:-15px -165px;}
+.x-tool-expand-south{background-position:0 -210px;}
+.x-tool-expand-south-over{background-position:-15px -210px;}
+.x-tool-expand-north{background-position:0 -195px;}
+.x-tool-expand-north-over{background-position:-15px -195px;}
+.x-tool-expand-west{background-position:0 -165px;}
+.x-tool-expand-west-over{background-position:-15px -165px;}
+.x-tool-expand-east{background-position:0 -180px;}
+.x-tool-expand-east-over{background-position:-15px -180px;}
+.x-tool-expand-north,.x-tool-expand-south{float:right;margin:3px;}
+.x-tool-expand-east,.x-tool-expand-west{float:none;margin:3px auto;}
+.x-accordion-hd .x-tool-toggle{background-position:0 -255px;}
+.x-accordion-hd .x-tool-toggle-over{background-position:-15px -255px;}
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle{background-position:0 -240px;}
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over{background-position:-15px -240px;}
+.x-accordion-hd{color:#222;padding-top:4px;padding-bottom:3px;border-top:0 none;font-weight:normal;background:transparent url(../js/ext/resources/images/default/panel/light-hd.gif) repeat-x 0 -9px;}
+.x-layout-collapsed{position:absolute;left:-10000px;top:-10000px;visibility:hidden;background-color:#d2e0f2;width:20px;height:20px;overflow:hidden;border:1px solid #98c0f4;z-index:20;}
+.ext-border-box .x-layout-collapsed{width:22px;height:22px;}
+.x-layout-collapsed-over{cursor:pointer;background-color:#d9e8fb;}
+.x-layout-collapsed-west .x-layout-collapsed-tools,.x-layout-collapsed-east .x-layout-collapsed-tools{position:absolute;top:0;left:0;width:20px;height:20px;}
+.x-layout-split{position:absolute;height:5px;width:5px;line-height:1px;font-size:1px;z-index:3;background-color:transparent;}
+.x-layout-split-h{background-image:url(../js/ext/resources/images/default/s.gif);background-position:left;}
+.x-layout-split-v{background-image:url(../js/ext/resources/images/default/s.gif);background-position:top;}
+.x-column-layout-ct{overflow:hidden;zoom:1;}
+.x-column{float:left;padding:0;margin:0;overflow:hidden;zoom:1;}
+.x-layout-mini{position:absolute;top:0;left:0;display:block;width:5px;height:35px;cursor:pointer;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
+.x-layout-mini-over,.x-layout-collapsed-over .x-layout-mini{opacity:1;-moz-opacity:1;filter:none;}
+.x-layout-split-west .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-left.gif);}
+.x-layout-split-east .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-right.gif);}
+.x-layout-split-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-top.gif);}
+.x-layout-split-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-bottom.gif);}
+.x-layout-cmini-west .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-right.gif);}
+.x-layout-cmini-east .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-left.gif);}
+.x-layout-cmini-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-bottom.gif);}
+.x-layout-cmini-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-top.gif);}
+.x-layout-cmini-west,.x-layout-cmini-east{border:0 none;width:5px!important;padding:0;background:transparent;}
+.x-layout-cmini-north,.x-layout-cmini-south{border:0 none;height:5px!important;padding:0;background:transparent;}
+.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;}
+.x-abs-layout-item{position:absolute;left:0;top:0;}
+.ext-ie input.x-abs-layout-item,.ext-ie textarea.x-abs-layout-item{margin:0;}
+
+.x-progress-wrap{border:1px solid #6593cf;overflow:hidden;}
+.x-progress-inner{height:18px;background:#e0e8f3 url(../js/ext/resources/images/default/qtip/bg.gif) repeat-x;position:relative;}
+.x-progress-bar{height:18px;float:left;width:0;background:#9CBFEE url( ../js/ext/resources/images/default/progress/progress-bg.gif ) repeat-x left center;border-top:1px solid #D1E4FD;border-bottom:1px solid #7FA9E4;border-right:1px solid #7FA9E4;}
+.x-progress-text{font-size:11px;font-weight:bold;color:#fff;padding:1px 5px;overflow:hidden;position:absolute;left:0;text-align:center;}
+.x-progress-text-back{color:#396095;line-height:16px;}
+.ext-ie .x-progress-text-back{line-height:15px;}
+
+.x-window-dlg .x-window-body{border:0 none!important;padding:5px 10px;overflow:hidden!important;}
+.x-window-dlg .x-window-mc{border:0 none!important;}
+.x-window-dlg .ext-mb-text,.x-window-dlg .x-window-header-text{font-size:12px;}
+.x-window-dlg .ext-mb-input{margin-top:4px;width:95%;}
+.x-window-dlg .ext-mb-textarea{margin-top:4px;font:normal 12px tahoma,arial,helvetica,sans-serif;}
+.x-window-dlg .x-progress-wrap{margin-top:4px;}
+.ext-ie .x-window-dlg .x-progress-wrap{margin-top:6px;}
+.x-window-dlg .x-msg-box-wait{background:transparent url(../js/ext/resources/images/default/grid/loading.gif) no-repeat left;display:block;width:300px;padding-left:18px;line-height:18px;}
+.x-window-dlg .ext-mb-icon{float:left;width:47px;height:32px;}
+.ext-ie .x-window-dlg .ext-mb-icon{width:44px;}
+.x-window-dlg .ext-mb-info{background:transparent url(../js/ext/resources/images/default/window/icon-info.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-warning{background:transparent url(../js/ext/resources/images/default/window/icon-warning.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-question{background:transparent url(../js/ext/resources/images/default/window/icon-question.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-error{background:transparent url(../js/ext/resources/images/default/window/icon-error.gif) no-repeat top left;}
+
+
+
+/*
+ * Ext JS Library 2.0.2
+ * Copyright(c) 2006-2008, Ext JS, LLC.
+ * licensing at extjs.com
+ * 
+ * http://extjs.com/license
+ */
+
+.x-panel {
+    border-style: solid;
+    border-color: #d0d0d0;
+}
+.x-panel-header {
+    color:#333;
+	border:1px solid #d0d0d0;
+    background-image:url(../js/ext/resources/images/gray/panel/white-top-bottom.gif);
+}
+
+.x-panel-body {
+    border-color:#d0d0d0;
+}
+
+.x-panel-bbar .x-toolbar {
+    border-color:#d0d0d0;
+}
+
+.x-panel-tbar .x-toolbar {
+    border-color:#d0d0d0;
+}
+
+.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar {
+    border-color:#d0d0d0;
+}
+.x-panel-body-noheader, .x-panel-mc .x-panel-body {
+    border-color:#d0d0d0;
+}
+.x-panel-tl .x-panel-header {
+    color:#333;
+}
+.x-panel-tc {
+	background-image:url(../js/ext/resources/images/gray/panel/top-bottom.gif);
+}
+.x-panel-tl {
+	background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);
+    border-color:#d0d0d0;
+}
+.x-panel-tr {
+	background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);
+}
+.x-panel-bc {
+	background-image:url(../js/ext/resources/images/gray/panel/top-bottom.gif);
+}
+.x-panel-bl {
+	background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);
+}
+.x-panel-br {
+	background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);
+}
+.x-panel-mc {
+    background:#f1f1f1;
+}
+.x-panel-mc .x-panel-body {
+    background:transparent;
+    border: 0 none;
+}
+.x-panel-ml {
+	background-image:url(../js/ext/resources/images/gray/panel/left-right.gif);
+}
+.x-panel-mr {
+	background-image:url(../js/ext/resources/images/gray/panel/left-right.gif);
+}
+
+/* Tools */
+.x-tool {
+    background-image:url(../js/ext/resources/images/gray/panel/tool-sprites.gif);
+}
+
+/* Ghosting */
+.x-panel-ghost {
+    background:#e0e0e0;
+}
+
+.x-panel-ghost ul {
+    border-color:#b0b0b0;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+    border:1px solid #d0d0d0;
+}
+
+/* Buttons */
+
+.x-btn-left{
+	background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);
+}
+.x-btn-right{
+	background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);
+}
+.x-btn-center{
+	background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);
+}
+
+/* Layout classes */
+
+.x-border-layout-ct {
+    background:#f0f0f0;
+}
+
+.x-accordion-hd {
+	background-image:url(../js/ext/resources/images/gray/panel/light-hd.gif);
+}
+
+.x-layout-collapsed{
+    background-color:#eee;
+    border-color:#e0e0e0;
+}
+.x-layout-collapsed-over{
+	 background-color:#fbfbfb;
+}
+
+
+/* qtips */
+.x-tip .x-tip-top {
+	background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-top-left {
+	background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-top-right {
+	background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft {
+	background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft-left {
+	background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft-right {
+	background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-bd-left {
+	background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-bd-right {
+	background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+
+/* Toolbars */
+
+.x-toolbar{
+	border-color:#d0d0d0;
+    background:#f0f4f5 url(../js/ext/resources/images/gray/toolbar/bg.gif) repeat-x top left;
+}
+.x-toolbar button {
+    color:#444;
+}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button {
+    background-image:url(../js/ext/resources/images/gray/toolbar/btn-arrow.gif);
+}
+.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button {
+    background-image:url(../js/ext/resources/images/gray/toolbar/btn-arrow.gif);
+}
+.x-toolbar .x-btn-over .x-btn-left{
+	background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-over .x-btn-right{
+	background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-over .x-btn-center{
+	background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-over button {
+    color:#111;
+}
+.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{
+	background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{
+	background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+
+.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{
+	background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .ytb-sep {
+	background-image: url(../js/ext/resources/images/default/grid/grid-split.gif);
+}
+
+/* Tabs */
+
+.x-tab-panel-header, .x-tab-panel-footer {
+	background: #EAEAEA;
+	border-color:#d0d0d0;
+}
+
+
+.x-tab-panel-header {
+	border-color:#d0d0d0;
+}
+
+.x-tab-panel-footer {
+	border-color:#d0d0d0;
+}
+
+ul.x-tab-strip-top{
+	background:#dbdbdb url(../js/ext/resources/images/gray/tabs/tab-strip-bg.gif) repeat-x left top;
+	border-color:#d0d0d0;
+    padding-top: 2px;
+}
+
+ul.x-tab-strip-bottom{
+	background-image:url(../js/ext/resources/images/gray/tabs/tab-strip-btm-bg.gif);
+	border-color:#d0d0d0;
+}
+
+.x-tab-strip span.x-tab-strip-text {
+	color:#333;
+}
+.x-tab-strip-over span.x-tab-strip-text {
+	color:#111;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+	color:#333;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+	color:#aaaaaa;
+}
+
+.x-tab-strip-top .x-tab-right {
+	background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-top .x-tab-left {
+	background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);
+}
+.x-tab-strip-top .x-tab-strip-inner {
+	background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-bottom .x-tab-right {
+	background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-left {
+	background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+	background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+	background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-left-bg.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+	background-image:url(../js/ext/resources/images/gray/tabs/tab-close.gif);
+}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
+	background-image:url(../js/ext/resources/images/gray/tabs/tab-close.gif);
+}
+
+.x-tab-panel-body {
+    border-color:#d0d0d0;
+    background:#fff;
+}
+.x-tab-panel-bbar .x-toolbar {
+    border-color: #d0d0d0;
+}
+
+.x-tab-panel-tbar .x-toolbar {
+    border-color: #d0d0d0;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer {
+    border-color:#d0d0d0;
+    background: #eaeaea;
+}
+
+.x-tab-scroller-left {
+    background-image: url(../js/ext/resources/images/gray/tabs/scroll-left.gif);
+    border-color:#aeaeae;
+}
+.x-tab-scroller-right {
+    background-image: url(../js/ext/resources/images/gray/tabs/scroll-right.gif);
+    border-color:#aeaeae;
+}
+
+/* Window */
+
+.x-window-proxy {
+    background:#e0e0e0;
+    border-color:#b0b0b0;
+}
+
+.x-window-tl .x-window-header {
+    color:#555;
+}
+.x-window-tc {
+	background-image:url(../js/ext/resources/images/gray/window/top-bottom.png);
+}
+.x-window-tl {
+	background-image:url(../js/ext/resources/images/gray/window/left-corners.png);
+}
+.x-window-tr {
+	background-image:url(../js/ext/resources/images/gray/window/right-corners.png);
+}
+.x-window-bc {
+	background-image:url(../js/ext/resources/images/gray/window/top-bottom.png);
+}
+.x-window-bl {
+	background-image:url(../js/ext/resources/images/gray/window/left-corners.png);
+}
+.x-window-br {
+	background-image:url(../js/ext/resources/images/gray/window/right-corners.png);
+}
+.x-window-mc {
+    border:1px solid #d0d0d0;
+    background:#e8e8e8;
+}
+
+.x-window-ml {
+	background-image:url(../js/ext/resources/images/gray/window/left-right.png);
+}
+.x-window-mr {
+	background-image:url(../js/ext/resources/images/gray/window/left-right.png);
+}
+.x-panel-ghost .x-window-tl {
+    border-color:#d0d0d0;
+}
+.x-panel-collapsed .x-window-tl {
+    border-color:#d0d0d0;
+}
+
+.x-window-plain .x-window-mc {
+    background: #e8e8e8;
+    border-right:1px solid #eee;
+    border-bottom:1px solid #eee;
+    border-top:1px solid #d0d0d0;
+    border-left:1px solid #d0d0d0;
+}
+
+.x-window-plain .x-window-body {
+    border-left:1px solid #eee;
+    border-top:1px solid #eee;
+    border-bottom:1px solid #d0d0d0;
+    border-right:1px solid #d0d0d0;
+    background:transparent !important;
+}
+
+body.x-body-masked .x-window-mc, body.x-body-masked .x-window-plain .x-window-mc {
+    background-color: #e4e4e4;
+}
+
+
+/* misc */
+.x-html-editor-wrap {
+    border-color:#d0d0d0;
+}
+
+/* Borders go last for specificity */
+.x-panel-noborder .x-panel-body-noborder {
+    border-width:0;
+}
+
+.x-panel-noborder .x-panel-header-noborder {
+    border-width:0;
+    border-bottom:1px solid #d0d0d0;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+    border-width:0;
+    border-bottom:1px solid #d0d0d0;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+    border-width:0;
+    border-top:1px solid #d0d0d0;
+}
+
+.x-window-noborder .x-window-mc {
+    border-width:0;
+}
+.x-window-plain .x-window-body-noborder {
+    border-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-body-noborder {
+	border-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-header-noborder {
+	border-top-width:0;
+	border-left-width:0;
+	border-right-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-footer-noborder {
+	border-bottom-width:0;
+	border-left-width:0;
+	border-right-width:0;
+}
+
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+    border-width:0;
+    border-top:1px solid #d0d0d0;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+    border-width:0;
+    border-bottom:1px solid #d0d0d0;
+}
+
+.kunebody {
+  background-color: #FFF;
+  color: #000;
+  font-family: arial, sans;
+  margin: 5px 5px 5px 5px;
+}
+
+#kuneinitialcurtain {
+  position: absolute;
+  left: 0px;
+  top: 0px;
+  width: 100%;
+  height: 100%;
+  background-color: #FFF;
+  z-index: 9999;
+}
+
+/* Global styles */
+
+.gwt-HorizontalSplitPanel .hsplitter {
+  cursor: e-resize;
+  width: 6px;
+}
+
+.gwt-DialogBox {
+  border: 8px solid #C3D9FF;
+  border: 2px outset;
+  background-color: white;
+}
+
+.gwt-DialogBox .Caption {
+  background-color: #C3D9FF;
+  font-size: 85%;
+  font-weight: 700;
+  padding: 3px;
+  margin: 2px;
+  cursor: default;
+}
+
+.gwt-MenuBar {
+  background-color: #F2F2F2;
+  border: 1px solid #999;
+  vertical-align: middle;
+  padding: 5px 0;
+}
+
+.gwt-MenuBar .gwt-MenuItem {
+  cursor: pointer;
+  padding: 1px 10px;
+  white-space: nowrap;
+}
+
+.gwt-MenuBar .gwt-MenuItem img {
+  vertical-align: middle;
+  margin-right: 3px;
+}
+
+.gwt-MenuBar .gwt-MenuItem {
+  background-color: #F2F2F2;
+}
+
+.gwt-MenuBar .gwt-MenuItem-selected {
+  background-color: #FFB958;
+}
+
+.kune-MenuBar .gwt-MenuItem {
+  background: transparent url(img/button-bg-hard.gif) repeat-x 0 0;
+  border-left: 1px solid #AAA;
+  border-right: 1px solid #AAA;
+  color: #999;
+  cursor: pointer;
+  cursor: hand;
+  white-space: nowrap;
+  padding: 0 10px;
+}
+
+.kune-MenuBar .gwt-MenuItem-selected {
+  background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+  color: #996633;
+}
+
+.kune-expandHoriz {
+  width: 100%;
+}
+
+.kune-expandVert {
+  height: 100%;
+}
+
+.kune-floatleft {
+  float: left;
+}
+
+.kune-floatright {
+  float: right;
+}
+
+/* Deprecated */
+.kune-Default-Form {
+  margin: 10px;
+}
+
+.kune-valignmiddle {
+  vertical-align: middle;
+}
+
+fieldset {
+  border:1px solid #B5B8C8;
+  /* margin-bottom:10px; */
+  padding:10px 10px 5px;
+}
+
+legend {
+  color:#15428B;
+  font-size: 85%;
+  font-size-adjust:none;
+  font-style:normal;
+  font-variant:normal;
+  font-weight:bold;
+  line-height:normal;
+}
+
+.gwt-RadioButton input {
+  margin: 0 3px;
+  vertical-align:middle;
+}
+
+.gwt-RadioButton label {
+  margin: 0 3px;
+  vertical-align:middle;
+}
+
+.kune-pointer {
+  cursor: pointer;
+}
+
+.kuneLabelPre {
+  white-space: pre !important;
+}
+
+/* Buttons */
+
+.kune-CustomPushButton-space {
+  margin-top: 3px;
+  margin-bottom: 3px;
+}
+
+.kune-CustomPushButton {
+  background: transparent url(img/button-bg-hard.gif) repeat-x 0 0;
+  border-left: 1px solid #AAA;
+  border-right: 1px solid #AAA;
+  color: #999;
+  cursor: pointer;
+  white-space: nowrap;
+  padding: 0px 12px;
+}
+
+.kune-CustomPushButton-up {
+  color: #161616;
+}
+
+.kune-CustomPushButton-down {
+  color: black;
+}
+
+.kune-CustomPushButton-up-hovering {
+  color: #161616;
+  background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+}
+
+.kune-CustomPushButton-down-hovering {
+  color: black;
+}
+
+.kune-CustomPushButton-up-disabled {
+  background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+  color: #E0E0E0;
+  cursor: default;
+}
+
+.kune-CustomPushButton-down-disabled {
+  background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+  color: #E0E0E0;
+  cursor: default;
+}
+
+.kune-Button-Large-lrSpace {
+  margin-left: 12px;
+  margin-right: 12px;
+}
+
+.kune-Button-Large-rSpace {
+  margin-right: 12px;
+}
+
+.kune-Button-Large-lSpace {
+  margin-left: 12px;
+}
+
+.kune-Button-Large-tbSpace {
+  margin-top: 12px;
+  margin-bottom: 12px;
+}
+
+.kune-Button-Small-lrSpace {
+  margin-left: 10px;
+  margin-right: 10px;
+}
+
+.kune-Button-Small-rSpace {
+  margin-right: 10px;
+}
+
+.kune-Button-Small-lSpace {
+  margin-left: 10px;
+}
+
+.kune-Button-Small-tbSpace {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+
+.kune-Button-Mini-lSpace {
+  margin-left: 8px;
+}
+
+.kune-Button-Mini-lrSpace {
+  margin-left: 8px;
+  margin-right: 8px;
+}
+
+.kune-Button-Mini-rSpace {
+  margin-right: 8px;
+}
+
+.kune-Button-Mini-tbSpace {
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+
+.kune-IconHyperlink {
+}
+
+.kune-IconHyperlink a:link {
+  /* text-decoration: underline; */
+  color: green;
+}
+
+.kune-IconHyperlink a:hover {
+  text-decoration: underline;
+}
+
+.kune-IconHyperlink a:visited {
+  color: #808000;
+}
+
+.kune-IconHyperlink img {
+  margin-right: 4px;
+  vertical-align: middle;
+}
+
+.kune-IconLabel {
+
+}
+
+.kune-IconLabel img {
+  margin-right: 4px;
+  vertical-align: middle;
+}
+
+.kune-link {
+  text-decoration: underline;
+  color: green;
+  cursor: pointer;
+}
+
+/* DropDowns */
+
+.kune-DropDownOuter {
+  background-color: green;
+}
+
+.kune-DropDownInner {
+  margin: 0 3px 1px 3px;
+  background: green;
+  background-color: #FFF;
+  padding: 3px;
+}
+
+.kune-DropDownLabel {
+  color: #FFF;
+  cursor: pointer;
+}
+
+.kune-DropDownLabel .gwt-Label {
+  margin: 0 5px 0 0;
+  width: 100%;
+}
+
+.kune-DropDownLabel img {
+  margin: 0 3px 0 1px;
+}
+
+.kune-IconLabel {
+  color: green;
+}
+
+.kune-IconLabel img {
+  margin-right: 4px;
+  vertical-align: middle;
+}
+
+/* Used in multi chat panel status change */
+.x-menu-item img {
+  margin-right: 4px;
+  vertical-align: middle;
+}
+
+/* Margins */
+
+.kune-Margin-40-trbl {
+  margin: 40px;
+}
+
+.kune-Margin-40-lr {
+  margin-left: 40px;
+  margin-right: 40px;
+}
+
+.kune-Margin-40-tl {
+  margin-top: 40px;
+  margin-left: 40px;
+}
+
+.kune-Margin-40-tb {
+  margin-top: 40px;
+  margin-bottom: 40px;
+}
+
+.kune-Margin-40-t {
+  margin-top: 40px;
+}
+
+.kune-Margin-40-r {
+  margin-right: 40px;
+}
+
+.kune-Margin-40-l {
+  margin-left: 40px;
+}
+
+.kune-Margin-20-trbl {
+  margin: 20px;
+}
+
+.kune-Margin-20-lr {
+  margin-left: 20px;
+  margin-right: 20px;
+}
+
+.kune-Margin-20-tl {
+  margin-top: 20px;
+  margin-left: 20px;
+}
+
+.kune-Margin-20-tb {
+  margin-top: 20px;
+  margin-bottom: 20px;
+}
+
+.kune-Margin-20-t {
+  margin-top: 20px;
+}
+
+.kune-Margin-20-r {
+  margin-right: 20px;
+}
+
+.kune-Margin-20-l {
+  margin-left: 20px;
+}
+
+.kune-Margin-Large-trbl {
+  margin: 10px;
+}
+
+.kune-Margin-Large-lr {
+  margin-left: 10px;
+  margin-right: 10px;
+}
+
+.kune-Margin-Large-tl {
+  margin-top: 10px;
+  margin-left: 10px;
+}
+
+.kune-Margin-Large-tb {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+
+.kune-Margin-Large-t {
+  margin-top: 10px;
+}
+
+.kune-Margin-Large-r {
+  margin-right: 10px;
+}
+
+.kune-Margin-Large-l {
+  margin-left: 10px;
+}
+
+.kune-Margin-Medium-trbl {
+  margin: 5px;
+}
+
+.kune-Margin-Medium-lr {
+  margin-left: 5px;
+  margin-right: 5px;
+}
+
+.kune-Margin-Medium-tl {
+  margin-top: 5px;
+  margin-left: 5px;
+}
+
+.kune-Margin-Medium-tb {
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+
+.kune-Margin-Medium-t {
+  margin-top: 5px;
+}
+
+.kune-Margin-Medium-r {
+  margin-right: 5px;
+}
+
+.kune-Margin-Medium-b {
+  margin-bottom: 5px;
+}
+
+.kune-Margin-Medium-l {
+  margin-left: 5px;
+}
+
+.kune-Margin-Small-trbl {
+  margin: 3px;
+}
+
+.kune-Margin-Small-lr {
+  margin-left: 3px;
+  margin-right: 3px;
+}
+
+.kune-Margin-Small-tl {
+  margin-top: 3px;
+  margin-left: 3px;
+}
+
+.kune-Margin-Small-tb {
+  margin-top: 3px;
+  margin-bottom: 3px;
+}
+
+.kune-Margin-Small-t {
+  margin-top: 3px;
+}
+
+.kune-Margin-Mini-trbl {
+  margin: 1px;
+}
+
+.kune-Margin-Mini-lr {
+  margin-left: 1px;
+  margin-right: 1px;
+}
+
+.kune-Margin-Mini-tl {
+  margin-top: 1px;
+  margin-left: 1px;
+}
+
+.kune-Margin-Mini-tb {
+  margin-top: 1px;
+  margin-bottom: 1px;
+}
+
+.kune-Margin-Mini-t {
+  margin-top: 1px;
+}
+
+.kune-Margin-Mini-r {
+  margin-right: 1px;
+}
+
+.kune-Margin-Mini-l {
+  margin-left: 1px;
+}
+
+/* Fonts
+see: http://developer.yahoo.com/yui/fonts/ */
+
+.kune-ft10px {
+  font-size: 77%
+}
+
+.kune-ft11px {
+  font-size: 85%
+}
+
+.kune-ft12px {
+  font-size: 93%
+}
+
+.kune-ft13px {
+  font-size: 100%
+}
+
+.kune-ft14px {
+  font-size: 108%
+}
+
+.kune-ft15px {
+  font-size: 116%
+}
+
+.kune-ft16px {
+  font-size: 123.1%
+}
+
+.kune-ft17px {
+  font-size: 131%
+}
+
+.kune-ft18px {
+  font-size: 138.5%
+}
+
+.kune-ft19px {
+  font-size: 146.5%
+}
+
+.kune-ft20px {
+  font-size: 153.9%
+}
+
+.kune-ft21px {
+  font-size: 161.6%
+}
+
+.kune-ft22px {
+  font-size: 167%
+}
+
+.kune-ft23px {
+  font-size: 174%
+}
+
+.kune-ft24px {
+  font-size: 182%
+}
+
+.kune-ft25px {
+  font-size: 189%
+}
+
+.kune-ft26px {
+  font-size: 197%
+}
+
+
+/* Sitebar */
+
+#kuneprogresspanel {
+  position: absolute;
+  top: 2px;
+  left: 2px;
+  z-index: 30000;
+}
+
+.kune-Progress {
+  background: #E5FF80;
+  border: 1px solid #E5FF80;
+  white-space: nowrap;
+  height: 16px;
+  padding: 0 3px;
+}
+
+.kune-SiteBarPanel .kune-IconHyperlink {
+  white-space: nowrap;
+}
+
+.kune-SiteBarPanel .kune-IconHyperlink a:link {
+  cursor: pointer;
+  text-decoration: underline;
+  color: #B3B3B3;
+}
+
+.kune-SiteBarPanel .kune-IconHyperlink a:hover {
+  text-decoration: underline;
+}
+
+.kune-SiteBarPanel .kune-IconHyperlink a:visited {
+  color: #B3B3B3;
+}
+
+.kune-SiteBarPanel {
+  margin-right: 10px;
+  height: 16px;
+}
+
+.kune-SiteBarPanel .gwt-TextBox {
+  border: 1px solid #E4A374;
+  margin: 0 15px 0 3px;
+  padding-left: 3px;
+  color: #B3B3B3;
+}
+
+.kune-SiteBarPanel .gwt-Hyperlink a {
+  white-space: nowrap;
+  color: #B3B3B3;
+  text-decoration: underline;
+  cursor: pointer;
+}
+
+.kune-SiteBarPanel .gwt-PushButton {
+  cursor: pointer;
+}
+
+.kune-SiteBarPanel-Separator {
+  color: #E4A374;
+  margin: 0 5px;
+}
+
+.kune-SiteBarPanel-SpaceSeparator {
+  width: 10px;
+}
+
+.kune-SiteBarPanel-LabelLink {
+  white-space: nowrap;
+  color: #B3B3B3;
+  margin-left: 3px;
+  cursor: pointer;
+  text-decoration: underline;
+}
+
+.kune-SiteMessagePanel {
+  color: #250;
+  position: absolute;
+  z-index: 10000;
+  vertical-align: middle;
+}
+
+.kune-SiteMessagePanel .gwt-HTML {
+  margin: 15px 5px 15px 2px;
+}
+
+.kune-SiteMessagePanel .gwt-Image {
+  margin: 5px;
+}
+
+.kune-SiteMessagePanel-error {
+  background-color: #FFB380;
+  border: 1px solid #FF0066;
+}
+
+.kune-SiteMessagePanel-veryimp {
+  background-color: #FFD4AA;
+  border: 1px solid #FF5599;
+}
+
+.kune-SiteMessagePanel-imp {
+  background-color: #FFE6D5;
+  border: 1px solid #DE87AA;
+}
+
+.kune-SiteMessagePanel-info {
+  background-color: #E5FF80;
+  border: 1px solid #87DE87;
+}
+
+/* Workspace styles */
+.kune-WorkspacePanel {
+  width: 100%;
+  background-color: #FFF;
+}
+
+.kune-WokspacePanel .Tab {
+
+}
+
+.kune-WorkspacePanel .GeneralHP {
+
+}
+
+.kune-WorkspacePanel .ContextPanel {
+  width: 100%;
+  border-right: 3px solid #DD8A3D;
+}
+
+.kune-GroupSummaryPanel {
+  margin: 5px 0 0 5px;
+  width: 100%;
+}
+
+.kune-GroupToolsBar {
+  width: 150px;
+}
+
+.kune-GroupToolsBar-itemSelected {
+  margin-bottom: 5px;
+}
+
+.kune-GroupToolsBar-itemSelected .gwt-Hyperlink a {
+  color: #FFF;
+  padding: 0 9px;
+  text-decoration: none;
+}
+
+.kune-GroupToolsBar-itemSelected .gwt-Hyperlink a:hover {
+  text-decoration: none;
+}
+
+.kune-GroupToolsBar-itemNotSelected {
+  margin-bottom: 5px;
+}
+
+.kune-GroupToolsBar-itemNotSelected  .gwt-Hyperlink a {
+  color: green;
+  padding: 0 9px;
+  text-decoration: none;
+}
+
+.kune-GroupToolsBar-itemNotSelected  .gwt-Hyperlink a:hover {
+  text-decoration: none;
+}
+
+/* Content titles */
+
+.kune-ContentToolBarPanel {
+  background-color: #F2F2F2;
+  padding: 2px;
+  height: 24px;
+  vertical-align: middle;
+}
+
+.kune-ContentBottomBar {
+  vertical-align: middle;
+  height: 24px;
+}
+
+.kune-ContentBottomBar .gwt-Image {
+  margin-left: 5px;
+  cursor: pointer;
+  float: left;
+}
+
+.kune-ContentBottomBar .gwt-Label a {
+
+}
+
+/* Main Content & Context */
+.kune-WorkspacePanel-Content {
+  background-color: #FCFCFC;
+  width: 100%;
+  height: 100%;
+}
+
+.kune-WorkspacePanel-Content .main-content {
+  margin: 7px 5px 5px 10px;
+}
+
+.kune-WorkspacePanel-Context {
+  background-color: #CFA;
+  width: 100%;
+  height: 100%;
+}
+
+.kune-NavigationBar {
+  width: 100%;
+}
+
+.kune-NavigationBar .topBar {
+  background-color: #ececec;
+  background: #ececec;
+  border-bottom: 1px solid #e3dbdb;
+  vertical-align: middle;
+}
+
+.kune-NavigationBar .topBar .gwt-PushButton {
+  margin: 1px 3px 1px 0;
+}
+
+.kune-NavigationBar .topBar .gwt-Label {
+  vertical-align: middle;
+}
+
+.kune-NavigationBar .kune-topBar-iconBar {
+  margin: 2px 0 2px 5px;
+}
+
+.kune-NavigationBar .kune-ContextItemsPanel-LabelLink {
+  /*  text-decoration: underline; */
+  color: green;
+  cursor: pointer;
+  margin-left: 3px;
+}
+
+/*
 .topBar .gwt-PushButton-up-disabled {
   filter: alpha(opacity =             20);
   -moz-opacity: 0.2;
@@ -33,6 +2139,1052 @@
   -moz-opacity: 0.2;
   opacity: 0.2;
 }
-*/.kune-NavigationBar .topBar .gwt-Image{margin:0 2px 0 5px;}.kune-NavigationBar .Items{margin:2px 0;}.kune-NavigationBar .Items .gwt-Image{margin:2px 0;vertical-align:middle;}.kune-NavigationBar .Items .gwt-Hyperlink a{color:green;/* FIXME: other color */}.kune-NavigationBar .topBar .topBar-margin{margin-left:5px;}.kune-NavigationBar .pathMenu{vertical-align:middle;}.kune-NavigationBar .pathMenu .gwt-MenuItem{background:transparent url(img/button-bg-hard.gif) repeat-x 0 0;border-left:1px solid #AAA;border-right:1px solid #AAA;color:#999;cursor:pointer;white-space:nowrap;padding:3px 6px;}.kune-NavigationBar .pathMenu .gwt-MenuItem-selected{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#000;}.kune-NavigationBar .kune-IconHyperlink{vertical-align:middle;margin-left:5px;}.kune-NavigationBar .kune-IconHyperlink a{color:green;text-decoration:none;}.kune-NavigationBar .kune-IconHyperlink .gwt-Image{margin-right:3px;vertical-align:middle;}/* Social Network */.kune-StackedDropDownPanel{}.kune-StackedDropDownPanel .gwt-StackPanelItem{border-top:1px solid #CCC;border-bottom:1px solid #CCC;background-color:#EFA;cursor:pointer;padding:1px 3px 0 6px;overflow:hidden;}.kune-StackedDropDownPanel .gwt-StackPanelItem img{margin:0 0 0 3px;vertical-align:middle;}.kune-StackedDropDownPanel .kune-DropDownInner table{width:100%;}.kune-StackedDropDownPanel .gwt-StackPanelItem-selected{}.kune-StackedDropDownPanelLink{background-color:#E6E6E6;border-top:1px solid #CCC;border-bottom:1px solid #F2F2F2;/*  white-space: nowrap; */cursor:pointer;}.kune-StackedDropDownPanel .kune-DropDownInner{padding:0;}/* StackedDropDownPanel Members */.kune-StackSubItemLabel{overflow:hidden;}.kune-StackSubItemLabel .gwt-MenuItem{white-space:nowrap;cursor:pointer;border-bottom:1px solid #F2F2F2;}.kune-StackSubItemLabel table{width:100%;}.kune-StackSubItemLabel .gwt-MenuItem img{vertical-align:middle;margin-top:1px;margin-bottom:1px;margin-left:5px;margin-right:3px;}.kune-StackSubItemLabel .gwt-MenuItem-selected{background-color:#FFE6D5;}.kune-StackSubItemActions{background-color:#F2F2F2;border:1px solid #999;vertical-align:middle;padding:5px 0;margin-left:-120px;margin-top:-2px;}.kune-StackSubItemActions .gwt-MenuItem{cursor:pointer;padding:1px 10px;white-space:nowrap;}.kune-StackSubItemActions .gwt-MenuItem img{vertical-align:middle;margin-right:3px;}.kune-StackSubItemActions .gwt-MenuItem-selected{background-color:#FFB958;}/* AccessList */.kune-AccessListSubLabel{font-style:italic;}.kune-AccessList{margin:5px;width:100%;}.kune-AccessList .gwt-DisclosurePanel{margin:5px;width:100%;}.kune-AccessList .gwt-DisclosurePanel-open{width:100%;}.kune-AccessList .gwt-DisclosurePanel-closed{width:100%;}.kune-AccessList .header{margin:0 0 3px;text-decoration:none;width:100%;background-color:#8DD35F;}.kune-AccessList .header table{margin:0 5px 0 0;width:100%;color:#FFF;}.kune-AccessList .header img{margin:0 3px 0 0;}.kune-AccessList .content{margin:0 0 0 7px;width:100%;}.kune-AccessList .content table{margin-bottom:5px;width:100%;}/* Rate */.kune-RatePanel-Label{white-space:nowrap;vertical-align:middle;}.kune-RatePanel-Stars{margin-left:5px;vertical-align:middle;}.kune-RatePanel-Stars-RateIt{cursor:pointer;}/* Licenses */.kune-License-CC-Header{color:#15428B;font-weight:700;font-size:85%;margin-top:5px;}.kune-License-CC-Header .gwt-Label{color:#15428B;font-weight:700;font-size:85%;margin-top:5px;}/* Theme */.kune-IconBottomPanel .gwt-MenuItem{cursor:pointer;background-color:#FFF;margin:2px 2px 2px 5px;}.kune-IconBottomPanel .gwt-MenuItem-selected{background-color:#F2F2F2;}.gwt-MenuBar-bottomMenu{margin-left:-60px;margin-top:-120px;}/* i18n */.kune-I18nTranslatorCell{white-space:normal;}.kune-i18nTranslator-recommend{margin:10px;}.kune-i18nTranslator-recommend h1{font-size:131%;font-weight:700;}.kune-i18nTranslator-recommend h2{font-size:116%;font-weight:700;}.kune-i18nTranslator-recommend h3{font-size:108%;font-weight:700;font-style:italic;}.kune-i18nTranslator-recommend em{font-weight:700;}.kune-i18nTranslator-recommend strong{font-weight:700;}/* Admin Context */.kune-AdminContextPanel{margin:6px;width:100%;}.kune-AdminContextPanel .gwt-StackPanelItem{background:transparent url(img/arrow-right-white.gif) no-repeat scroll 3px 2px;cursor:pointer;padding:3px 10px 1px 20px;owerflow:hidden;width:100%;}.kune-AdminContextPanel .gwt-StackPanelItem img{margin:0 0 0 3px;vertical-align:middle;}.kune-AdminContextPanel .gwt-StackPanelItem-selected{background:transparent url(img/arrow-down-white.gif) no-repeat scroll 3px 2px;background-color:#DEE3DB;}.kune-AdminContextPanelLink{background-color:#E6E6E6;border-top:1px solid #CCC;border-bottom:1px solid #F2F2F2;/* white-space: nowrap; */cursor:pointer;}.kune-AdminContextPanel-inner{background-color:#FFF;}.kune-AdminContextPanel-inner-wrap{margin:5px;}.kune-EditableLabel{}.kune-EditableLabel .kune-EditableLabel-editable{}.kune-EditableLabel-high{background-color:#FFFBC1;cursor:pointer;}.kune-EditableLabel-high span{background-color:#FFFBC1;}.kune-EditableLabel a{margin-left:5px;}.kune-EditableLabel a:link{color:green;}.kune-EditableLabel a:hover{text-decoration:underline;}.kune-EditableLabel a:visited{color:olive;}.kune-EditableLabel img{margin-right:4px;vertical-align:middle;}.kune-EditableLabel-editable img{margin-right:4px;vertical-align:middle;}.kune-EditableLabel-editable span{margin:3px;}.kune-EditableLabel span{margin:3px;}.kune-BottomIconsTrayPanel{width:165px;height:21px;vertical-align:middle;background-color:#EFEFEF;}.kune-TagsPanel-tag{float:left;margin-right:5px;cursor:pointer;}.kune-Content-Main{margin:5px;}/* Yahoo ui base.css */.kune-Content-Main h1{font-size:138.5%;}.kune-Content-Main h2{font-size:123.099998%;}.kune-Content-Main h3{font-size:108%;}.kune-Content-Main h1{margin:1em 0;}.kune-Content-Main h2{margin:1em 0;}.kune-Content-Main h3{margin:1em 0;}.kune-Content-Main h1{font-weight:700;}.kune-Content-Main h2{font-weight:700;}.kune-Content-Main h3{font-weight:700;}.kune-Content-Main h4{font-weight:700;}.kune-Content-Main h5{font-weight:700;}.kune-Content-Main h6{font-weight:700;}.kune-Content-Main strong{font-weight:700;}.kune-Content-Main abbr{border-bottom:1px dotted #000;cursor:help;}.kune-Content-Main acronym{border-bottom:1px dotted #000;cursor:help;}.kune-Content-Main em{font-style:italic;}.kune-Content-Main blockquote{margin:1em;}.kune-Content-Main ul{margin:1em;}.kune-Content-Main ol{margin:1em;}.kune-Content-Main dl{margin:1em;}.kune-Content-Main ol{margin-left:2em;}.kune-Content-Main ul{margin-left:2em;}.kune-Content-Main dl{margin-left:2em;}.kune-Content-Main ol{list-style:decimal outside;}.kune-Content-Main li{list-style:decimal outside;}.kune-Content-Main li{list-style:disc outside;}.kune-Content-Main ul{list-style:disc outside;}.kune-Content-Main dl{margin-left:1em;}.kune-Content-Main dd{margin-left:1em;}.kune-Content-Main th{border:1px solid #000;padding:.5em;font-weight:700;text-align:center;}.kune-Content-Main td{border:1px solid #000;padding:.5em;}.kune-Content-Main caption{margin-bottom:.5em;text-align:center;}.kune-Content-Main p{margin-bottom:1em;}.kune-Content-Main fieldset{margin-bottom:1em;}.kune-Content-Main table{margin-bottom:1em;}.kune-Content-Main pre{margin-bottom:1em;}.kune-Content-Main input[type=text]{width:12.25em;width:11.9em;}.kune-Content-Main input[type=password]{width:12.25em;width:11.9em;}.kune-Content-Main textarea{width:12.25em;width:11.9em;}.search-icon{background-image:url(img/search.gif)!important;}.i18n-icon{background-image:url(img/language.gif)!important;}.chat-icon{background-image:url(img/chat.gif)!important;}.group-icon{background-image:url(img/group.gif)!important;}.user-icon{background-image:url(img/user.gif)!important;}.userf-icon{background-image:url(img/userf.gif)!important;}.kune-RoomPanel-HorizDelimiter{white-space:nowrap;color:#B3B3B3;}.kune-MultiRoomPanel-Subject{font-size:108%;color:#2E5492;}.kune-MultiRoomPanel-User{}.kune-MultiRoomPanel-User .kune-IconLabel{overflow:hidden;white-space:nowrap;}.kune-RoomPanel-Conversation{}.kune-RoomPanel-Message{margin:0 7px;}.kune-RoomPanel-EventMessage{font-style:italic;color:#69C;margin:0 5px;}.kune-MultiRoomPanel-EmoticonPalette{background-color:#FFF;border:1px solid #AAA;margin:1px solid red;z-index:10000;position:absolute;}.kune-MultiRoomPanel-EmoticonPalette td{width:30px;height:30px;}/* RTE Text editor */.kune-TexEditorPanel-TextArea{margin:3px;}.gwt-RichTextArea{/* border: 1px solid #000;
-    background-color: #FFF; */border:1px solid #4D4D4D;background-color:#FFF;margin:5px 0 5px 10px;}.gwt-RichTextToolbar{/* background-color: #F2F2F2;
-  padding: 5px; */height:24px;vertical-align:middle;}.gwt-RichTextToolbar table{vertical-align:middle;}.gwt-RichTextToolbar .gwt-ToggleButton{float:left;margin-top:2px;}.gwt-RichTextToolbar .gwt-PushButton{float:left;margin-top:2px;}.gwt-RichTextToolbar .gwt-PushButton-up{margin-right:2px;border:1px solid #F2F2F2;}.gwt-RichTextToolbar .gwt-PushButton-up-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#E8F1FF #9daecd #9daecd #e8f1ff;}.gwt-RichTextToolbar .gwt-PushButton-down{margin-right:2px;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-PushButton-down-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-ToggleButton-up{margin-right:2px;border:1px solid #F2F2F2;}.gwt-RichTextToolbar .gwt-ToggleButton-up-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#E8F1FF #9daecd #9daecd #e8f1ff;}.gwt-RichTextToolbar .gwt-ToggleButton-down{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-ToggleButton-down-hovering{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .x-btn{float:left;}.gwt-RichTextToolbar .kune-Button-Large-lSpace{float:left;}.gwt-RichTextToolbar .kune-Button-Large-lrSpace{float:left;}.RichTextToolbar-menu{float:left;margin-top:2px;}.RichTextToolbar-menu table{border-collapse:collapse;border-spacing:0;margin:0;}.RichTextToolbar-menu .gwt-MenuItem{margin-right:2px;border:1px solid #F2F2F2;}.RichTextToolbar-menu .gwt-MenuItem-selected{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.RichTextToolbar-submenu{background-color:#FFFCD5;border:1px solid #D38D5F;cursor:default;}.RichTextToolbar-submenu .gwt-MenuItem{cursor:default;white-space:nowrap;border:1px solid #FFFCD5;padding:0 4px;}.RichTextToolbar-submenu .gwt-MenuItem-selected{background-color:#FFB958;border:1px solid #C83737;}.kune-WebSafePalette{background-color:#FFF;border:1px solid #AAA;margin:1px solid red;}.kune-WebSafePalette td{width:12px;height:10px;}
\ No newline at end of file
+*/
+.kune-NavigationBar .topBar .gwt-Image {
+  margin: 0 2px 0 5px;
+}
+
+.kune-NavigationBar .Items {
+  margin: 2px 0;
+}
+
+.kune-NavigationBar .Items .gwt-Image {
+  margin: 2px 0;
+  vertical-align: middle;
+}
+
+.kune-NavigationBar .Items .gwt-Hyperlink a {
+  color: green; /* FIXME: other color */
+}
+
+.kune-NavigationBar .topBar .topBar-margin {
+  margin-left: 5px;
+}
+
+.kune-NavigationBar .pathMenu {
+  vertical-align: middle;
+}
+
+.kune-NavigationBar .pathMenu .gwt-MenuItem {
+  background: transparent url(img/button-bg-hard.gif) repeat-x 0 0;
+  border-left: 1px solid #AAA;
+  border-right: 1px solid #AAA;
+  color: #999;
+  cursor: pointer;
+  white-space: nowrap;
+  padding: 3px 6px;
+}
+
+.kune-NavigationBar .pathMenu .gwt-MenuItem-selected {
+  background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+  color: #000;
+}
+
+.kune-NavigationBar .kune-IconHyperlink {
+  vertical-align: middle;
+  margin-left: 5px;
+}
+
+.kune-NavigationBar .kune-IconHyperlink a {
+  color: green;
+  text-decoration: none;
+}
+
+.kune-NavigationBar .kune-IconHyperlink .gwt-Image {
+  margin-right: 3px;
+  vertical-align: middle;
+}
+
+/* Social Network */
+.kune-StackedDropDownPanel {
+
+}
+
+.kune-StackedDropDownPanel .gwt-StackPanelItem {
+  border-top: 1px solid #CCC;
+  border-bottom: 1px solid #CCC;
+  background-color: #EEFFAA;
+  cursor: pointer;
+  padding: 1px 3px 0 6px;
+  overflow: hidden;
+}
+
+.kune-StackedDropDownPanel .gwt-StackPanelItem img {
+  margin: 0 0 0 3px;
+  vertical-align: middle;
+}
+
+.kune-StackedDropDownPanel .kune-DropDownInner table {
+  width: 100%;
+}
+
+.kune-StackedDropDownPanel .gwt-StackPanelItem-selected {
+
+}
+
+.kune-StackedDropDownPanelLink {
+  background-color: #E6E6E6;
+  border-top: 1px solid #CCC;
+  border-bottom: 1px solid #F2F2F2;
+/*  white-space: nowrap; */
+  cursor: pointer;
+}
+
+.kune-StackedDropDownPanel .kune-DropDownInner {
+  padding: 0px;
+}
+
+/* StackedDropDownPanel Members */
+.kune-StackSubItemLabel {
+  overflow: hidden;
+}
+
+.kune-StackSubItemLabel .gwt-MenuItem {
+  white-space: nowrap;
+  cursor: pointer;
+  border-bottom: 1px solid #F2F2F2;
+}
+
+.kune-StackSubItemLabel table {
+  width: 100%;
+}
+
+.kune-StackSubItemLabel .gwt-MenuItem img {
+  vertical-align: middle;
+  margin-top: 1px;
+  margin-bottom: 1px;
+  margin-left: 5px;
+  margin-right: 3px;
+}
+
+.kune-StackSubItemLabel .gwt-MenuItem-selected {
+  background-color: #FFE6D5;
+}
+
+.kune-StackSubItemActions {
+  background-color: #F2F2F2;
+  border: 1px solid #999;
+  vertical-align: middle;
+  padding: 5px 0;
+  margin-left: -120px;
+  margin-top: -2px;
+}
+
+.kune-StackSubItemActions .gwt-MenuItem {
+  cursor: pointer;
+  padding: 1px 10px;
+  white-space: nowrap;
+}
+
+.kune-StackSubItemActions .gwt-MenuItem img {
+  vertical-align: middle;
+  margin-right: 3px;
+}
+
+.kune-StackSubItemActions .gwt-MenuItem-selected {
+  background-color: #FFB958;
+}
+
+/* AccessList */
+.kune-AccessListSubLabel {
+  font-style: italic;
+}
+
+.kune-AccessList {
+  margin: 5px;
+  width: 100%;
+}
+
+.kune-AccessList .gwt-DisclosurePanel {
+  margin: 5px;
+  width: 100%;
+}
+
+.kune-AccessList .gwt-DisclosurePanel-open {
+  width: 100%;
+}
+
+.kune-AccessList .gwt-DisclosurePanel-closed {
+  width: 100%;
+}
+
+.kune-AccessList .header {
+  margin: 0 0 3px 0;
+  text-decoration: none;
+  width: 100%;
+  background-color: #8DD35F;
+}
+
+.kune-AccessList .header table {
+  margin: 0 5px 0 0;
+  width: 100%;
+  color: #FFF;
+}
+
+.kune-AccessList .header img {
+  margin: 0 3px 0 0;
+}
+
+.kune-AccessList .content {
+  margin: 0 0 0 7px;
+  width: 100%;
+}
+
+.kune-AccessList .content table {
+  margin-bottom: 5px;
+  width: 100%;
+}
+
+/* Rate */
+.kune-RatePanel-Label {
+  white-space: nowrap;
+  vertical-align: middle;
+}
+
+.kune-RatePanel-Stars {
+  margin-left: 5px;
+  vertical-align: middle;
+}
+
+.kune-RatePanel-Stars-RateIt {
+  cursor: pointer;
+}
+
+/* Licenses */
+.kune-License-CC-Header {
+  color: #15428B;
+  font-weight: bold;
+  font-size: 85%;
+  margin-top: 5px;
+}
+
+.kune-License-CC-Header .gwt-Label {
+  color: #15428B;
+  font-weight: bold;
+  font-size: 85%;
+  margin-top: 5px;
+}
+
+/* Theme */
+.kune-IconBottomPanel .gwt-MenuItem {
+  cursor: pointer;
+  background-color: #FFF;
+  margin: 2px 2px 2px 5px;
+}
+
+.kune-IconBottomPanel .gwt-MenuItem-selected {
+  background-color: #F2F2F2;
+}
+
+.gwt-MenuBar-bottomMenu {
+  margin-left: -60px;
+  margin-top: -120px;
+}
+
+/* i18n */
+.kune-I18nTranslatorCell {
+  white-space: normal;
+}
+
+.kune-i18nTranslator-recommend {
+  margin: 10px;
+}
+
+.kune-i18nTranslator-recommend h1 {
+  font-size: 131%;
+  font-weight: bold;
+}
+
+.kune-i18nTranslator-recommend h2 {
+  font-size: 116%;
+  font-weight: bold;
+}
+
+.kune-i18nTranslator-recommend h3 {
+  font-size: 108%;
+  font-weight: bold;
+  font-style: italic;
+}
+
+.kune-i18nTranslator-recommend em {
+  font-weight: bold;
+}
+
+.kune-i18nTranslator-recommend strong {
+  font-weight: bold;
+}
+
+/* Admin Context */
+.kune-AdminContextPanel {
+  margin: 6px;
+  width: 100%;
+}
+
+.kune-AdminContextPanel .gwt-StackPanelItem {
+  background: transparent url(img/arrow-right-white.gif) no-repeat scroll 3px 2px;
+  cursor: pointer;
+  padding: 3px 10px 1px 20px;
+  overflow: hidden;
+  width: 100%;
+}
+
+.kune-AdminContextPanel .gwt-StackPanelItem img {
+  margin: 0 0 0 3px;
+  vertical-align: middle;
+}
+
+.kune-AdminContextPanel .gwt-StackPanelItem-selected {
+  background: transparent url(img/arrow-down-white.gif) no-repeat scroll 3px 2px;
+  background-color: #DEE3DB;
+}
+
+.kune-AdminContextPanelLink {
+  background-color: #E6E6E6;
+  border-top: 1px solid #CCC;
+  border-bottom: 1px solid #F2F2F2;
+  /* white-space: nowrap; */
+  cursor: pointer;
+}
+
+.kune-AdminContextPanel-inner {
+  background-color: #FFF;
+}
+
+.kune-AdminContextPanel-inner-wrap {
+  margin: 5px;
+}
+
+.kune-EditableLabel {
+
+}
+
+.kune-EditableLabel .kune-EditableLabel-editable {
+
+}
+
+.kune-EditableLabel-high {
+  background-color: #FFFBC1;
+  cursor: pointer;
+}
+
+.kune-EditableLabel-high span {
+  background-color: #FFFBC1;
+}
+
+.kune-EditableLabel a {
+  margin-left: 5px;
+}
+
+.kune-EditableLabel a:link {
+  color: green;
+}
+
+.kune-EditableLabel a:hover {
+  text-decoration: underline;
+}
+
+.kune-EditableLabel a:visited {
+  color: #808000;
+}
+
+.kune-EditableLabel img {
+  margin-right: 4px;
+  vertical-align: middle;
+}
+
+.kune-EditableLabel-editable img {
+  margin-right: 4px;
+  vertical-align: middle;
+}
+
+.kune-EditableLabel-editable span {
+  margin: 3px;
+}
+
+.kune-EditableLabel span {
+  margin: 3px;
+}
+
+.kune-BottomIconsTrayPanel {
+  width: 165px;
+  height: 21px;
+  vertical-align: middle;
+  background-color: #EFEFEF;
+}
+
+.kune-TagsPanel-tag {
+  float: left;
+  margin-right: 5px;
+  cursor: pointer;
+}
+
+.kune-Content-Main {
+  margin: 5px;
+}
+
+/* Yahoo ui base.css */
+
+.kune-Content-Main h1 {
+  font-size: 138.5%;
+}
+
+.kune-Content-Main h2 {
+  font-size: 123.1%;
+}
+
+.kune-Content-Main h3 {
+  font-size: 108%;
+}
+
+.kune-Content-Main h1 {
+  margin: 1em 0;
+}
+
+.kune-Content-Main h2 {
+  margin: 1em 0;
+}
+
+.kune-Content-Main h3 {
+  margin: 1em 0;
+}
+
+.kune-Content-Main h1 {
+  font-weight: bold;
+}
+
+.kune-Content-Main h2 {
+  font-weight: bold;
+}
+
+.kune-Content-Main h3 {
+  font-weight: bold;
+}
+
+.kune-Content-Main h4 {
+  font-weight: bold;
+}
+
+.kune-Content-Main h5 {
+  font-weight: bold;
+}
+
+.kune-Content-Main h6 {
+  font-weight: bold;
+}
+
+.kune-Content-Main strong {
+  font-weight: bold;
+}
+
+.kune-Content-Main abbr {
+  border-bottom: 1px dotted #000;
+  cursor: help;
+}
+
+.kune-Content-Main acronym {
+  border-bottom: 1px dotted #000;
+  cursor: help;
+}
+
+.kune-Content-Main em {
+  font-style: italic;
+}
+
+.kune-Content-Main blockquote {
+  margin: 1em;
+}
+
+.kune-Content-Main ul {
+  margin: 1em;
+}
+
+.kune-Content-Main ol {
+  margin: 1em;
+}
+
+.kune-Content-Main dl {
+  margin: 1em;
+}
+
+.kune-Content-Main ol {
+  margin-left: 2em;
+}
+
+.kune-Content-Main ul {
+  margin-left: 2em;
+}
+
+.kune-Content-Main dl {
+  margin-left: 2em;
+}
+
+.kune-Content-Main ol {
+  list-style: decimal outside;
+}
+
+.kune-Content-Main li {
+  list-style: decimal outside;
+}
+
+.kune-Content-Main li {
+  list-style: disc outside;
+}
+
+.kune-Content-Main ul {
+  list-style: disc outside;
+}
+
+
+.kune-Content-Main dl {
+  margin-left: 1em;
+}
+
+.kune-Content-Main dd {
+  margin-left: 1em;
+}
+
+.kune-Content-Main th {
+  border: 1px solid #000;
+  padding: .5em;
+  font-weight: bold;
+  text-align: center;
+}
+
+.kune-Content-Main td {
+  border: 1px solid #000;
+  padding: .5em;
+}
+
+.kune-Content-Main caption {
+  margin-bottom: .5em;
+  text-align: center;
+}
+
+.kune-Content-Main p {
+  margin-bottom: 1em;
+}
+
+.kune-Content-Main fieldset {
+  margin-bottom: 1em;
+}
+.kune-Content-Main table {
+  margin-bottom: 1em;
+}
+
+.kune-Content-Main pre {
+  margin-bottom: 1em;
+}
+
+.kune-Content-Main input[type=text] {
+  width: 12.25em;*width: 11.9em;}
+
+.kune-Content-Main input[type=password] {
+  width: 12.25em;*width: 11.9em;}
+
+.kune-Content-Main textarea {width: 12.25em;*width: 11.9em;}
+
+.search-icon {
+  background-image: url(img/search.gif) !important;
+}
+
+.i18n-icon {
+  background-image: url(img/language.gif) !important;
+}
+
+.chat-icon {
+  background-image: url(img/chat.gif) !important;
+}
+
+.group-icon {
+  background-image: url(img/group.gif) !important;
+}
+
+.user-icon {
+  background-image: url(img/user.gif) !important;
+}
+
+.userf-icon {
+  background-image: url(img/userf.gif) !important;
+}
+
+
+
+
+/* RTE Text editor */
+.kune-TexEditorPanel-TextArea {
+  margin: 3px;
+}
+
+.gwt-RichTextArea { /* border: 1px solid #000;
+    background-color: #FFF; */
+  border: 1px solid #4D4D4D;
+  background-color: #FFF;
+  margin: 5px 0px 5px 10px;
+}
+
+.gwt-RichTextToolbar {
+  /* background-color: #F2F2F2;
+  padding: 5px; */
+  height: 24px;
+  vertical-align: middle;
+}
+
+.gwt-RichTextToolbar table {
+  vertical-align: middle;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton {
+  float: left;
+  margin-top: 2px;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton {
+  float: left;
+  margin-top: 2px;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton-up {
+  margin-right: 2px;
+  border: 1px solid #F2F2F2;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton-up-hovering {
+  margin-right: 2px;
+  border: 1px solid #C3D9FF;
+  border-color: #E8F1FF #9daecd #9daecd #e8f1ff;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton-down {
+  margin-right: 2px;
+  border: 1px solid #C3D9FF;
+  border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton-down-hovering {
+  margin-right: 2px;
+  border: 1px solid #C3D9FF;
+  border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton-up {
+  margin-right: 2px;
+  border: 1px solid #F2F2F2;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton-up-hovering {
+  margin-right: 2px;
+  border: 1px solid #C3D9FF;
+  border-color: #E8F1FF #9daecd #9daecd #e8f1ff;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton-down {
+  margin-right: 2px;
+  background-color: #E8F1FF;
+  border: 1px solid #C3D9FF;
+  border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton-down-hovering {
+  margin-right: 2px;
+  background-color: #E8F1FF;
+  border: 1px solid #C3D9FF;
+  border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.gwt-RichTextToolbar .x-btn {
+  float: left;
+}
+
+.gwt-RichTextToolbar .kune-Button-Large-lSpace {
+  float: left;
+}
+
+.gwt-RichTextToolbar .kune-Button-Large-lrSpace {
+  float: left;
+}
+
+.RichTextToolbar-menu {
+  float: left;
+  margin-top: 2px;
+}
+
+.RichTextToolbar-menu table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  margin: 0;
+}
+
+.RichTextToolbar-menu .gwt-MenuItem {
+  margin-right: 2px;
+  border: 1px solid #F2F2F2;
+}
+
+.RichTextToolbar-menu .gwt-MenuItem-selected {
+  margin-right: 2px;
+  background-color: #E8F1FF;
+  border: 1px solid #C3D9FF;
+  border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.RichTextToolbar-submenu {
+  background-color: #FFFCD5;
+  border: 1px solid #D38D5F;
+  cursor: default;
+}
+
+.RichTextToolbar-submenu .gwt-MenuItem {
+  cursor: default;
+  white-space: nowrap;
+  border: 1px solid #FFFCD5;
+  padding: 0 4px;
+}
+
+.RichTextToolbar-submenu .gwt-MenuItem-selected {
+  background-color: #FFB958;
+  border: 1px solid #C83737;
+}
+
+.kune-WebSafePalette {
+  background-color: #FFF;
+  border: 1px solid #AAA;
+  margin: 1px;
+}
+
+.kune-WebSafePalette td {
+  width: 12px;
+  height: 10px;
+}
+
+
+.k-site-traybar {
+    background: #FFF none repeat scroll 0% 50%;
+}
+
+.k-sitebar .kune-IconHyperlink {
+    white-space: nowrap;
+}
+
+.k-sitebar .kune-IconHyperlink a:link {
+    cursor: pointer;
+    text-decoration: underline;
+    color: #B3B3B3;
+}
+
+.k-sitebar .kune-IconHyperlink a:hover {
+    text-decoration: underline;
+}
+
+.k-sitebar .kune-IconHyperlink a:visited {
+    color: #B3B3B3;
+}
+
+.k-sitebar {
+    margin-right: 10px;
+    height: 16px;
+}
+
+.k-sitebar .gwt-TextBox {
+    border: 1px solid #E4A374;
+    margin: 0 15px 0 3px;
+    padding-left: 3px;
+    color: #B3B3B3;
+}
+
+.k-sitebar .gwt-Hyperlink a {
+    white-space: nowrap;
+    color: #B3B3B3;
+    text-decoration: underline;
+    cursor: pointer;
+}
+
+.k-sitebar .gwt-PushButton {
+    cursor: pointer;
+}
+
+.k-sitebar-LabelLink {
+    white-space: nowrap;
+    color: #B3B3B3;
+    margin-left: 3px;
+    cursor: pointer;
+    text-decoration: underline;
+}
+
+.k-entity-summary {
+    border-left-color: #FFF;
+    border-left-width: 5px;
+}
+
+.k-EntityTextLogo {
+    border: 2px solid #F2F2F2;
+    height: 60px;
+    margin: 0 0 4px -1px;
+    overflow: hidden;
+    width: 468px;
+}
+
+.k-entitytextlogo .gwt-Label {
+    font-size: 167%;
+    font-weight: 700;
+    margin: 5px;
+    height: 27px;
+}
+
+.k-entitytextlogo-def .gwt-Label {
+    color: #69312F;
+}
+
+.k-entitytextlogo-green .gwt-Label {
+    color: #000080;
+}
+
+.k-entitytextlogo .gwt-Hyperlink a {
+    color: #CCC;
+    font-size: 85%;
+    margin: 5px;
+    text-decoration: underline;
+    white-space: nowrap;
+    background-color: #FFF;
+}
+
+.k-entity-def .x-layout-split {
+    background: #DD8A3D none repeat scroll 0% 50%;
+}
+
+.k-entity-green .x-layout-split {
+    background: #5FD35F none repeat scroll 0% 50%;
+}
+
+.k-entityworkspace .x-layout-split {
+    background: transparent none repeat scroll 0% 50%;
+}
+
+.k-entityworkspace-def .x-layout-split {
+    background: #DEAA87 none repeat scroll 0% 50%;
+}
+
+.k-entityworkspace-green .x-layout-split {
+    background: #DCE8AB none repeat scroll 0% 50%;
+}
+
+.k-entity-title {
+    border-left-style: solid;
+    border-left-width: 2px;
+}
+
+.k-entity-title div {
+    line-height: 22px;
+    white-space: nowrap;
+}
+
+.k-entity-subtitle {
+}
+
+.k-entity-subtitle div {
+    line-height: 22px;
+    white-space: nowrap;
+}
+
+.k-entity-title-rd-def {
+    background: #DD8A3D;
+}
+
+.k-entity-title-rd-green {
+    background: #5FD35F;
+}
+
+.k-entity-title-def {
+    background: #F1BB59 none repeat scroll 0% 50%;
+    border-left-color: #DD8A3D;
+}
+
+.k-entity-title-def div {
+    color: #69312F;
+}
+
+.k-entity-title-green {
+    background: #AFA none repeat scroll 0% 50%;
+    border-left-color: #5FD35F;
+}
+
+.k-entity-title-green div {
+    color: #250;
+}
+
+.k-entity-subtitle-def {
+    background: #DD8A3D none repeat scroll 0% 50%;
+}
+
+.k-entity-subtitle-def div {
+    color: #FFF;
+}
+
+.k-entity-subtitle-green {
+    background: #5FD35F none repeat scroll 0% 50%;
+}
+
+.k-entity-subtitle-green div {
+    color: #FFF;
+}
+
+.k-entity-bottom-rd-def {
+    background: #DD8A3D;
+}
+
+.k-entity-bottom-rd-green {
+    background: #5FD35F;
+}
+
+.k-entitylicensepanel-licensetext {
+    cursor: pointer;
+    margin-left: 5px;
+    text-decoration: underline;
+}
+
+.k-entity-container-def div {
+    background: #FFD09D none repeat scroll 0% 50%;
+}
+
+.k-entity-container-green div {
+    background: #CFA none repeat scroll 0% 50%;
+}
+
+.k-entity-bottom div {
+    line-height: 2em;
+}
+
+.k-entity-bottom-def {
+    background: #DD8A3D;
+}
+
+.k-entity-bottom-def div {
+    color: #FFF;
+}
+
+.k-entity-bottom-green {
+    background: #5FD35F;
+}
+
+.k-entity-bottom-green div {
+    color: #FFF;
+}
+
+.k-toolbar-top-line {
+    border-top-color: rgb( 208, 208, 208 );
+    border-top-style: solid;
+    border-top-width: 1px;
+}
+
+.k-toolbar-bottom-line {
+    border-bottom-color: rgb( 208, 208, 208 );
+    border-bottom-style: solid;
+    border-bottom-width: 1px;
+}
+
+.x-toolbar td, .x-toolbar span, .x-toolbar input, .x-toolbar div, .x-toolbar select, .x-toolbar label {
+    white-space: nowrap;
+    font: normal 13px arial, sans;
+    line-height: 19px;
+}
+
+.k-toolbar-sep {
+    padding-top: 4px;
+}
+
+/* Custom gwt-ext styles */
+
+.ytb-sep {
+    background-image: url(../js/ext/resources/images/default/grid/grid-split.gif);
+    background-position: center;
+    background-repeat: no-repeat;
+    display: block;
+    font-size: 1px;
+    height: 16px;
+    width: 4px;
+    overflow: hidden;
+    cursor: default;
+    margin: 0 2px 0;
+    border: 0;
+}
+
+.ytb-spacer {
+    width: 2px;
+}
+
+.x-grid-group-hd {
+    border-bottom: 2px solid grey;
+    cursor: pointer;
+    padding-top: 3px;
+}
+
+/* Drop down */
+
+.k-dropdownouter {
+    background-color: gray;
+}
+
+.k-dropdownouter-members {
+}
+
+.k-dropdownouter-members-def {
+    background-color: #DF5244;
+}
+
+.k-dropdownouter-members-green {
+    background-color: #008000;
+}
+
+.k-dropdownouter-part {
+}
+
+.k-dropdownouter-part-def {
+    background-color: #CA5842;
+}
+
+.k-dropdownouter-part-green {
+    background-color: #00AA00;
+}
+
+.k-dropdownouter-tags {
+}
+
+.k-dropdownouter-tags-def {
+    background-color: #87501E;
+}
+
+.k-dropdownouter-tags-green {
+    background-color: #00D400;
+}
+
+.k-dropdownouter-summary {
+}
+
+.k-dropdownouter-summary-def {
+    background-color: #9F734B;
+}
+
+.k-dropdownouter-summary-green {
+    background-color: #4CE14C;
+}
+
+.k-dropdowninner {
+    margin: 0 3px 1px 3px;
+    background: green;
+    background-color: #FFF;
+    /* padding: 3px; */
+}
+
+.k-dropdownlabel {
+    color: #FFF;
+    cursor: pointer;
+}
+
+.k-dropdownlabel .gwt-Label {
+    margin: 0 5px 0 0;
+    width: 100%;
+}
+
+.k-dropdownlabel img {
+    margin: 0 3px 0 1px;
+}
+
+

Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css	2008-07-23 04:11:58 UTC (rev 813)
@@ -232,6 +232,8 @@
     padding-top: 4px;
 }
 
+/* Custom gwt-ext styles */
+
 .ytb-sep {
     background-image: url(../js/ext/resources/images/default/grid/grid-split.gif);
     background-position: center;
@@ -249,7 +251,15 @@
 .ytb-spacer {
     width: 2px;
 }
+
+.x-grid-group-hd {
+    border-bottom: 2px solid grey;
+    cursor: pointer;
+    padding-top: 3px;
+}
+
 /* Drop down */
+
 .k-dropdownouter {
     background-color: gray;
 }

Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/richtext.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/richtext.css	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/richtext.css	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,3 +1,4 @@
+
 /*
 Copyright (c) 2007, Yahoo! Inc. All rights reserved.
 Code licensed under the BSD License:
@@ -3,13 +4,28 @@
 http://developer.yahoo.net/yui/license.txt
 version: 2.3.1
-*/body{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}/*
+*/
+body{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input, textarea, select{font-family:inherit;font-size:inherit;font-weight:inherit;}
+
+/*
 Copyright (c) 2007, Yahoo! Inc. All rights reserved.
 Code licensed under the BSD License:
 http://developer.yahoo.net/yui/license.txt
 version: 2.3.1
-*/body{font:13px/1.22 arial,helvetica,clean,sans-serif;font-size:small;font:x-small;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;font-size:108%;line-height:99%;}/*
+*/
+body {font:13px/1.22 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:99%;}
+
+
+/*
 Copyright (c) 2007, Yahoo! Inc. All rights reserved.
 Code licensed under the BSD License:
 http://developer.yahoo.net/yui/license.txt
 version: 2.4.1
-*/h1{font-size:138.5%;}h2{font-size:123.099998%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong{font-weight:700;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;}em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:700;text-align:center;}caption{margin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}input[type=text],input[type=password],textarea{width:12.25em;width:11.9em;}body{font-family:arial, sans;margin:5px;}
\ No newline at end of file
+*/
+h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong{font-weight:bold;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;} em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:bold;text-align:center;}caption{margin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}input[type=text],input[type=password],textarea{width:12.25em;*width:11.9em;}
+
+
+body {
+  font-family: arial, sans;
+  margin: 5px;
+}
+

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -21,33 +21,22 @@
 package org.ourproject.kune.chat.client;
 
 import org.ourproject.kune.chat.client.actions.AddRoomAction;
-import org.ourproject.kune.chat.client.actions.ChatLoginAction;
-import org.ourproject.kune.chat.client.actions.ChatLogoutAction;
-import org.ourproject.kune.chat.client.actions.InitChatEngineAction;
 import org.ourproject.kune.platf.client.extend.ClientModule;
 import org.ourproject.kune.platf.client.extend.Register;
 import org.ourproject.kune.platf.client.state.Session;
 import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
 
 public class ChatClientModule implements ClientModule {
 
     private final Session session;
     private final StateManager stateManager;
-    private final ChatClientTool chatTool;
 
     public ChatClientModule(final Session session, final StateManager stateManager, final ChatClientTool chatTool) {
-        this.session = session;
-        this.stateManager = stateManager;
-        this.chatTool = chatTool;
+	this.session = session;
+	this.stateManager = stateManager;
     }
 
     public void configure(final Register register) {
-        register.addAction(WorkspaceEvents.INIT_DATA_RECEIVED, new InitChatEngineAction(chatTool));
-        register.addAction(WorkspaceEvents.USER_LOGGED_IN, new ChatLoginAction(chatTool));
-        ChatLogoutAction logoutAction = new ChatLogoutAction(chatTool);
-        register.addAction(WorkspaceEvents.USER_LOGGED_OUT, logoutAction);
-        register.addAction(WorkspaceEvents.STOP_APP, logoutAction);
-        register.addAction(ChatEvents.ADD_ROOM, new AddRoomAction(session, stateManager));
+	register.addAction(ChatEvents.ADD_ROOM, new AddRoomAction(session, stateManager));
     }
 }

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,9 +1,11 @@
 package org.ourproject.kune.chat.client;
 
 import org.ourproject.kune.platf.client.KunePlatform;
+import org.ourproject.kune.platf.client.app.Application;
 import org.ourproject.kune.platf.client.state.Session;
 import org.ourproject.kune.platf.client.state.StateManager;
 import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
 import com.calclab.emiteuimodule.client.EmiteUIDialog;
 import com.calclab.suco.client.container.Container;
@@ -24,17 +26,16 @@
     public void onLoad(final ModuleBuilder builder) {
 	builder.registerProvider(ChatClientTool.class, new Provider<ChatClientTool>() {
 	    public ChatClientTool get() {
-		return new ChatClientTool(builder.getInstance(I18nUITranslationService.class), builder
-			.getInstance(EmiteUIDialog.class));
+		return new ChatClientTool(builder.getInstance(Session.class), builder.getInstance(Application.class),
+			builder.getInstance(I18nUITranslationService.class), builder.getInstance(EmiteUIDialog.class),
+			builder.getInstance(WorkspaceSkeleton.class));
 	    }
 	}, SingletonScope.class);
 
-	final KunePlatform platform = builder.getInstance(KunePlatform.class);
 	final ChatClientTool chatClientTool = getChatClientTool(builder);
-	platform.addTool(chatClientTool);
-
-	final Session session = builder.getInstance(Session.class);
-	final StateManager stateManager = builder.getInstance(StateManager.class);
-	platform.install(new ChatClientModule(session, stateManager, chatClientTool));
+	builder.getInstance(KunePlatform.class).addTool(chatClientTool);
+	builder.getInstance(KunePlatform.class).install(
+		new ChatClientModule(builder.getInstance(Session.class), builder.getInstance(StateManager.class),
+			chatClientTool));
     }
 }

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -20,57 +20,77 @@
 
 package org.ourproject.kune.chat.client;
 
+import org.ourproject.kune.platf.client.app.Application;
+import org.ourproject.kune.platf.client.dto.InitDataDTO;
 import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
 import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.state.Session;
 import org.ourproject.kune.platf.client.tool.AbstractClientTool;
 import org.ourproject.kune.workspace.client.component.WorkspaceComponent;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
 import com.calclab.emiteuimodule.client.EmiteUIDialog;
+import com.calclab.suco.client.signal.Slot;
 
 public class ChatClientTool extends AbstractClientTool implements ChatProvider {
     public static final String NAME = "chats";
     public static final String TYPE_ROOT = "chat.root";
     public static final String TYPE_ROOM = "chat.room";
     public static final String TYPE_CHAT = "chat.chat";
-
     private final ChatToolComponents components;
     private ChatEngine chat;
-    private final EmiteUIDialog emiteUIDialog;
-    private final I18nTranslationService i18n;
 
-    public ChatClientTool(final I18nTranslationService i18n, final EmiteUIDialog emiteUIDialog) {
-        super(i18n.t("chat rooms"));
-        this.i18n = i18n;
-        this.emiteUIDialog = emiteUIDialog;
-        components = new ChatToolComponents(emiteUIDialog, i18n);
+    public ChatClientTool(final Session session, final Application application, final I18nTranslationService i18n,
+	    final EmiteUIDialog emiteUIDialog, final WorkspaceSkeleton ws) {
+	super(i18n.t("chat rooms"));
+	components = new ChatToolComponents(emiteUIDialog, i18n);
+	session.onInitDataReceived(new Slot<InitDataDTO>() {
+	    public void onEvent(final InitDataDTO initData) {
+		final ChatOptions chatOptions = new ChatOptions(initData.getChatHttpBase(), initData.getChatDomain(),
+			initData.getChatRoomHost());
+		chat = new ChatEngineXmpp(emiteUIDialog, chatOptions, i18n, ws);
+	    }
+	});
+	application.onApplicationStop(new Slot<Object>() {
+	    public void onEvent(final Object parameter) {
+		chat.logout();
+	    }
+	});
+	session.onUserSignOut(new Slot<Object>() {
+	    public void onEvent(final Object parameter) {
+		chat.logout();
+	    }
+	});
+	session.onUserSignIn(new Slot<UserInfoDTO>() {
+	    public void onEvent(final UserInfoDTO user) {
+		chat.login(user.getChatName(), user.getChatPassword());
+	    }
+	});
     }
 
     public ChatEngine getChat() {
-        return chat;
+	return chat;
     }
 
     public WorkspaceComponent getContent() {
-        return components.getContent();
+	return components.getContent();
     }
 
     public WorkspaceComponent getContext() {
-        return components.getContext();
+	return components.getContext();
     }
 
     public String getName() {
-        return NAME;
+	return NAME;
     }
 
-    public void initEngine(final ChatOptions options) {
-        this.chat = new ChatEngineXmpp(emiteUIDialog, options, i18n);
-    }
-
     public void setContent(final StateDTO state) {
-        components.getContent().setState(state);
+	components.getContent().setState(state);
     }
 
     public void setContext(final StateDTO state) {
-        components.getContext().setState(state);
+	components.getContext().setState(state);
     }
 
 }

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -24,7 +24,7 @@
 
     void joinRoom(String roomName, String userAlias);
 
-    void login(String chatName, String chatPassword);
+    void login(String jid, String passwd);
 
     void logout();
 }

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -22,6 +22,7 @@
 import java.util.Date;
 
 import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
 import com.calclab.emite.client.im.roster.RosterManager.SubscriptionMode;
 import com.calclab.emite.client.xmpp.stanzas.XmppURI;
@@ -31,17 +32,24 @@
 import com.calclab.emiteuimodule.client.status.OwnPresence.OwnStatus;
 import com.calclab.suco.client.signal.Slot;
 import com.google.gwt.user.client.Window;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
 
 class ChatEngineXmpp implements ChatEngine {
     private final ChatOptions chatOptions;
     private final EmiteUIDialog emiteDialog;
     private final I18nTranslationService i18n;
+    private final WorkspaceSkeleton ws;
+    private ToolbarButton traybarButton;
 
     public ChatEngineXmpp(final EmiteUIDialog emiteUIDialog, final ChatOptions chatOptions,
-	    final I18nTranslationService i18n) {
+	    final I18nTranslationService i18n, final WorkspaceSkeleton ws) {
 	this.emiteDialog = emiteUIDialog;
 	this.chatOptions = chatOptions;
 	this.i18n = i18n;
+	this.ws = ws;
     }
 
     public ChatOptions getChatOptions() {
@@ -54,24 +62,36 @@
 	emiteDialog.joinRoom(roomURI);
     }
 
-    public void login(final String chatName, final String chatPassword) {
-	final String resource = "emiteui-" + new Date().getTime() + "-kune"; // +
-	// getGwtMetaProperty(GWT_PROPERTY_RELEASE);
-	// FIXME, get this from user profile
-	final UserChatOptions userChatOptions = new UserChatOptions(chatName + "@" + chatOptions.domain, chatPassword,
-		resource, "blue", SubscriptionMode.autoAcceptAll, true);
+    public void login(final String jid, final String passwd) {
+	final UserChatOptions userChatOptions = getUserChatOptions(jid, passwd);
 	// FIXME: Avatar provider
 	final AvatarProvider avatarProvider = new AvatarProvider() {
 	    public String getAvatarURL(XmppURI userURI) {
 		return "images/person-def.gif";
 	    }
 	};
-
 	final String initialWindowTitle = Window.getTitle();
 	chatOptions.userOptions = userChatOptions;
 	emiteDialog.start(userChatOptions, chatOptions.httpBase, chatOptions.roomHost, avatarProvider, i18n.t("Chat"));
 	emiteDialog.show(OwnStatus.online);
-	// emiteDialog.hide();
+	if (traybarButton == null) {
+	    traybarButton = new ToolbarButton();
+	    traybarButton.setTooltip(i18n.t("Show/hide the chat window"));
+	    traybarButton.setIcon("images/emite-chat.gif");
+	    traybarButton.addListener(new ButtonListenerAdapter() {
+		@Override
+		public void onClick(final Button button, final EventObject e) {
+		    if (emiteDialog.isVisible()) {
+			emiteDialog.hide();
+		    } else {
+			emiteDialog.show();
+		    }
+		}
+
+	    });
+	    ws.getSiteTraybar().addButton(traybarButton);
+	}
+	emiteDialog.hide();
 	emiteDialog.onChatAttended(new Slot<String>() {
 	    public void onEvent(final String parameter) {
 		Window.setTitle(initialWindowTitle);
@@ -88,6 +108,17 @@
 	if (!emiteDialog.isDialogNotStarted()) {
 	    emiteDialog.closeAllChats(false);
 	    emiteDialog.setOwnPresence(OwnStatus.offline);
+	    final UserChatOptions userChatOptions = getUserChatOptions("reset at example.com", "");
+	    emiteDialog.refreshUserInfo(userChatOptions);
+	    chatOptions.userOptions = userChatOptions;
 	}
     }
+
+    private UserChatOptions getUserChatOptions(final String jid, final String passwd) {
+	final String resource = "emiteui-" + new Date().getTime() + "-kune"; // +
+	// getGwtMetaProperty(GWT_PROPERTY_RELEASE);
+	// FIXME, get this from user profile
+	return new UserChatOptions(jid + "@" + chatOptions.domain, passwd, resource, "blue",
+		SubscriptionMode.autoAcceptAll, true);
+    }
 }

Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLoginAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLoginAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLoginAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.chat.client.actions;
-
-import org.ourproject.kune.chat.client.ChatProvider;
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-
-public class ChatLoginAction implements Action<UserInfoDTO> {
-    private final ChatProvider provider;
-
-    public ChatLoginAction(final ChatProvider provider) {
-        this.provider = provider;
-    }
-
-    public void execute(final UserInfoDTO value) {
-        login(value);
-    }
-
-    private void login(final UserInfoDTO user) {
-        provider.getChat().login(user.getChatName(), user.getChatPassword());
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLogoutAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLogoutAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLogoutAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,37 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.chat.client.actions;
-
-import org.ourproject.kune.chat.client.ChatProvider;
-import org.ourproject.kune.platf.client.dispatch.Action;
-
- at SuppressWarnings("unchecked")
-public class ChatLogoutAction implements Action {
-    private final ChatProvider provider;
-
-    public ChatLogoutAction(final ChatProvider provider) {
-        this.provider = provider;
-    }
-
-    public void execute(final Object value) {
-        provider.getChat().logout();
-    }
-
-}

Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/actions/InitChatEngineAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/actions/InitChatEngineAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/actions/InitChatEngineAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.chat.client.actions;
-
-import org.ourproject.kune.chat.client.ChatClientTool;
-import org.ourproject.kune.chat.client.ChatOptions;
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.InitDataDTO;
-
-public class InitChatEngineAction implements Action<InitDataDTO> {
-
-    private final ChatClientTool chatTool;
-
-    public InitChatEngineAction(final ChatClientTool chatTool) {
-        this.chatTool = chatTool;
-    }
-
-    public void execute(final InitDataDTO value) {
-        InitDataDTO initData = value;
-        ChatOptions chatOptions = new ChatOptions(initData.getChatHttpBase(), initData.getChatDomain(), initData
-                .getChatRoomHost());
-        chatTool.initEngine(chatOptions);
-    }
-
-}

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -28,7 +28,7 @@
 	builder.registerProvider(DocumentFactory.class, new Provider<DocumentFactory>() {
 	    public DocumentFactory get() {
 		return new DocumentFactory(builder.getInstance(I18nUITranslationService.class), builder
-			.getInstance(Session.class), builder.getInstance(TagsSummary.class), builder
+			.getInstance(Session.class), builder.getProvider(TagsSummary.class), builder
 			.getInstance(WorkspaceSkeleton.class));
 	    }
 	}, SingletonScope.class);

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/actions/SaveDocumentAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/actions/SaveDocumentAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/actions/SaveDocumentAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -38,43 +38,44 @@
     private final I18nTranslationService i18n;
 
     public SaveDocumentAction(final Session session, final I18nTranslationService i18n) {
-        this.session = session;
-        this.i18n = i18n;
+	this.session = session;
+	this.i18n = i18n;
     }
 
     public void execute(final SaveDocumentActionParams params) {
-        save(params);
+	save(params);
     }
 
     private void save(final SaveDocumentActionParams params) {
-        Site.showProgressSaving();
-        ContentServiceAsync server = ContentService.App.getInstance();
-        server.save(session.getUserHash(), session.getCurrentState().getGroup().getShortName(), params.getStateDTO()
-                .getDocumentId(), params.getStateDTO().getContent(), new AsyncCallback<Integer>() {
-            public void onFailure(final Throwable caught) {
-                Site.hideProgress();
-                try {
-                    throw caught;
-                } catch (final SessionExpiredException e) {
-                    Site.doLogout();
-                    MessageBox.alert(i18n.t("Alert"), i18n.t("Your session has expired. Please login again."),
-                            new AlertCallback() {
-                                public void execute() {
-                                    Site.doLogin(null);
-                                }
-                            });
-                } catch (final Throwable e) {
-                    Site.error(i18n.t("Error saving document. Retrying..."));
-                    params.getDocumentContent().onSaveFailed();
-                }
-            }
+	Site.showProgressSaving();
+	final ContentServiceAsync server = ContentService.App.getInstance();
+	server.save(session.getUserHash(), session.getCurrentState().getGroup().getShortName(), params.getStateDTO()
+		.getDocumentId(), params.getStateDTO().getContent(), new AsyncCallback<Integer>() {
+	    public void onFailure(final Throwable caught) {
+		// User error codes and KuneErrorHandler
+		Site.hideProgress();
+		try {
+		    throw caught;
+		} catch (final SessionExpiredException e) {
+		    // FIXME Logout ???
+		    MessageBox.alert(i18n.t("Alert"), i18n.t("Your session has expired. Please login again."),
+			    new AlertCallback() {
+				public void execute() {
+				    // FIXME Login ???
+				}
+			    });
+		} catch (final Throwable e) {
+		    Site.error(i18n.t("Error saving document. Retrying..."));
+		    params.getDocumentContent().onSaveFailed();
+		}
+	    }
 
-            public void onSuccess(final Integer result) {
-                Site.hideProgress();
-                params.getDocumentContent().onSaved();
-            }
+	    public void onSuccess(final Integer result) {
+		Site.hideProgress();
+		params.getDocumentContent().onSaved();
+	    }
 
-        });
+	});
     }
 
 }

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -39,15 +39,17 @@
 import org.ourproject.kune.workspace.client.sitebar.Site;
 import org.ourproject.kune.workspace.client.workspace.TagsSummary;
 
+import com.calclab.suco.client.container.Provider;
+
 public class AdminContextPresenter extends AbstractPresenter implements AdminContext {
 
     private AdminContextView view;
     private final Session session;
-    private final TagsSummary tags;
+    private final Provider<TagsSummary> tagsSummaryProvider;
 
-    public AdminContextPresenter(final Session session, final TagsSummary tags) {
+    public AdminContextPresenter(final Session session, final Provider<TagsSummary> tagsSummaryProvider) {
 	this.session = session;
-	this.tags = tags;
+	this.tagsSummaryProvider = tagsSummaryProvider;
     }
 
     public void doChangeLanguage(final String langCode) {
@@ -110,7 +112,7 @@
 	server.setTags(session.getUserHash(), currentState.getGroup().getShortName(), currentState.getDocumentId(),
 		tagsString, new AsyncCallbackSimple<List<TagResultDTO>>() {
 		    public void onSuccess(final List<TagResultDTO> result) {
-			tags.setGroupTags(result);
+			tagsSummaryProvider.get().setGroupTags(result);
 			Site.hideProgress();
 		    }
 		});

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/ui/DocumentFactory.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ui/DocumentFactory.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ui/DocumentFactory.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -55,23 +55,25 @@
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 import org.ourproject.kune.workspace.client.workspace.TagsSummary;
 
+import com.calclab.suco.client.container.Provider;
+
 public class DocumentFactory {
 
     private final I18nTranslationService i18n;
     private final Session session;
-    private final TagsSummary tags;
+    private final Provider<TagsSummary> tagsSummaryProvider;
     private final WorkspaceSkeleton ws;
 
-    public DocumentFactory(final I18nTranslationService i18n, final Session session, final TagsSummary tags,
-	    final WorkspaceSkeleton ws) {
+    public DocumentFactory(final I18nTranslationService i18n, final Session session,
+	    final Provider<TagsSummary> tagsSummaryProvider, final WorkspaceSkeleton ws) {
 	this.i18n = i18n;
 	this.session = session;
-	this.tags = tags;
+	this.tagsSummaryProvider = tagsSummaryProvider;
 	this.ws = ws;
     }
 
     public AdminContext createAdminContext() {
-	final AdminContextPresenter presenter = new AdminContextPresenter(session, tags);
+	final AdminContextPresenter presenter = new AdminContextPresenter(session, tagsSummaryProvider);
 	final AdminContextView view = new AdminContextPanel(presenter, i18n);
 	presenter.init(view);
 	return presenter;

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -27,6 +27,8 @@
 import org.ourproject.kune.platf.client.tool.ClientTool;
 import org.ourproject.kune.workspace.client.workspace.Workspace;
 
+import com.calclab.suco.client.signal.Slot;
+
 public interface Application {
 
     ClientTool getTool(String toolName);
@@ -35,11 +37,10 @@
 
     void init(DefaultDispatcher dispatcher, StateManager stateManager, HashMap<String, ClientTool> tools);
 
-    /**
-     * Communicates to every tool the current group
-     * 
-     * @param group
-     */
+    void onApplicationStart(Slot<Object> slot);
+
+    void onApplicationStop(Slot<Object> slot);
+
     void setGroupState(String groupShortName);
 
     void start();

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -25,40 +25,47 @@
 import java.util.Map;
 
 import org.ourproject.kune.platf.client.dispatch.DefaultDispatcher;
-import org.ourproject.kune.platf.client.dispatch.Dispatcher;
+import org.ourproject.kune.platf.client.dto.InitDataDTO;
 import org.ourproject.kune.platf.client.extend.ExtensibleWidgetsManager;
+import org.ourproject.kune.platf.client.rpc.SiteService;
+import org.ourproject.kune.platf.client.rpc.SiteServiceAsync;
 import org.ourproject.kune.platf.client.services.ColorTheme;
 import org.ourproject.kune.platf.client.services.I18nTranslationService;
 import org.ourproject.kune.platf.client.services.KuneErrorHandler;
 import org.ourproject.kune.platf.client.state.Session;
 import org.ourproject.kune.platf.client.state.StateManager;
 import org.ourproject.kune.platf.client.tool.ClientTool;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
+import org.ourproject.kune.platf.client.ui.WindowUtils;
+import org.ourproject.kune.platf.client.utils.PrefetchUtilities;
 import org.ourproject.kune.workspace.client.WorkspaceFactory;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 import org.ourproject.kune.workspace.client.workspace.Workspace;
 
+import com.allen_sauer.gwt.log.client.Log;
+import com.calclab.suco.client.signal.Signal;
+import com.calclab.suco.client.signal.Slot;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
 public class ApplicationDefault implements Application {
     private final Workspace workspace;
     private Map<String, ClientTool> tools;
-    private Dispatcher dispatcher;
+    private final Session session;
+    private final Signal<Object> onApplicationStart;
+    private final Signal<Object> onApplicationStop;
+    private final WorkspaceSkeleton ws;
     private StateManager stateManager;
 
     public ApplicationDefault(final Session session, final ExtensibleWidgetsManager extensionPointManager,
-	    final I18nTranslationService i18n, final ColorTheme colorTheme, final KuneErrorHandler errorHandler) {
+	    final I18nTranslationService i18n, final ColorTheme colorTheme, final KuneErrorHandler errorHandler,
+	    final WorkspaceSkeleton ws) {
+	this.session = session;
+	this.ws = ws;
 	workspace = WorkspaceFactory.createWorkspace(session, extensionPointManager, i18n, colorTheme, errorHandler);
 	tools = new HashMap<String, ClientTool>();
-	// DesktopView desktop = WorkspaceFactory.createDesktop(workspace, new
-	// SiteBarListener() {
-	// public void onChangeState(StateToken token) {
-	// stateManager.setState(token);
-	// }
-	//
-	// public void onUserLoggedOut() {
-	// dispatcher.fire(WorkspaceEvents.USER_LOGGED_OUT, null);
-	// }
-	// }, session);
-	// desktop.attach();
-
+	this.onApplicationStart = new Signal<Object>("onApplicationStart");
+	this.onApplicationStop = new Signal<Object>("onApplicationStop");
     }
 
     public ClientTool getTool(final String toolName) {
@@ -71,12 +78,19 @@
 
     public void init(final DefaultDispatcher dispatcher, final StateManager stateManager,
 	    final HashMap<String, ClientTool> tools) {
-	this.dispatcher = dispatcher;
 	this.stateManager = stateManager;
 	this.tools = tools;
 	workspace.attachTools(tools.values().iterator());
     }
 
+    public void onApplicationStart(final Slot<Object> slot) {
+	onApplicationStart.add(slot);
+    }
+
+    public void onApplicationStop(final Slot<Object> slot) {
+	onApplicationStop.add(slot);
+    }
+
     public void setGroupState(final String groupShortName) {
 	final Iterator<ClientTool> iterator = tools.values().iterator();
 	while (iterator.hasNext()) {
@@ -86,10 +100,46 @@
     }
 
     public void start() {
-	dispatcher.fireDeferred(WorkspaceEvents.START_APP, null);
+	onApplicationStart.fire(null);
+	PrefetchUtilities.preFetchImpImages();
+	getInitData();
+	final Timer prefetchTimer = new Timer() {
+	    public void run() {
+		PrefetchUtilities.doTasksDeferred(workspace);
+	    }
+	};
+	prefetchTimer.schedule(20000);
     }
 
     public void stop() {
-	dispatcher.fire(WorkspaceEvents.STOP_APP, null);
+	onApplicationStop.fire(null);
     }
+
+    private void getInitData() {
+	final SiteServiceAsync server = SiteService.App.getInstance();
+	server.getInitData(session.getUserHash(), new AsyncCallback<InitDataDTO>() {
+	    public void onFailure(final Throwable error) {
+		Site.error("Error fetching initial data");
+		Log.debug(error.getMessage());
+		ws.unMask();
+	    }
+
+	    public void onSuccess(final InitDataDTO initData) {
+		checkChatDomain(initData.getChatDomain());
+		session.setInitData(initData);
+		session.setCurrentUserInfo(initData.getUserInfo());
+		stateManager.reload();
+		ws.unMask();
+	    }
+
+	    private void checkChatDomain(final String chatDomain) {
+		final String httpDomain = WindowUtils.getLocation().getHostName();
+		if (!chatDomain.equals(httpDomain)) {
+		    Log.error("Your http domain (" + httpDomain + ") is different from the chat domain (" + chatDomain
+			    + "). This will produce problems with the chat functionality. "
+			    + "Check kune.properties on the server.");
+		}
+	    }
+	});
+    }
 }

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -34,24 +34,32 @@
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
 import com.calclab.suco.client.container.Provider;
+import com.calclab.suco.client.signal.Signal;
+import com.calclab.suco.client.signal.Slot;
 import com.google.gwt.core.client.GWT;
 
 public class KuneErrorHandler {
     private final Session session;
     private final I18nTranslationService i18n;
     private final Provider<WorkspaceSkeleton> wsProvider;
+    private final Signal<Object> onSessionExpired;
 
     public KuneErrorHandler(final Session session, final I18nTranslationService i18n,
 	    final Provider<WorkspaceSkeleton> wsProvider) {
 	this.session = session;
 	this.i18n = i18n;
 	this.wsProvider = wsProvider;
+	this.onSessionExpired = new Signal<Object>("onSessionExpired");
     }
 
     public WorkspaceSkeleton getWorkspaceSkeleton() {
 	return wsProvider.get();
     }
 
+    public void onSessionExpired(final Slot<Object> slot) {
+	onSessionExpired.add(slot);
+    }
+
     public void process(final Throwable caught) {
 	Site.hideProgress();
 	try {
@@ -89,7 +97,7 @@
     }
 
     private void doSessionExpired() {
-	Site.doLogout();
+	onSessionExpired.fire(null);
 	getWorkspaceSkeleton().showAlertMessage(i18n.t("Session expired"),
 		i18n.t("Your session has expired. Please login again."));
     }

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -5,9 +5,9 @@
 import org.ourproject.kune.platf.client.KunePlatform;
 import org.ourproject.kune.platf.client.app.Application;
 import org.ourproject.kune.platf.client.app.ApplicationDefault;
-import org.ourproject.kune.platf.client.app.HistoryWrapper;
 import org.ourproject.kune.platf.client.app.HistoryWrapperImpl;
 import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
 import org.ourproject.kune.platf.client.extend.ExtensibleWidgetsManager;
 import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
 import org.ourproject.kune.platf.client.rpc.ContentService;
@@ -18,16 +18,24 @@
 import org.ourproject.kune.platf.client.state.StateManager;
 import org.ourproject.kune.platf.client.state.StateManagerDefault;
 import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.newgroup.NewGroup;
+import org.ourproject.kune.workspace.client.newgroup.NewGroupPresenter;
+import org.ourproject.kune.workspace.client.newgroup.ui.NewGroupPanel;
 import org.ourproject.kune.workspace.client.presence.ui.GroupSummaryPanel;
 import org.ourproject.kune.workspace.client.search.SiteSearcher;
 import org.ourproject.kune.workspace.client.search.SiteSearcherPanel;
 import org.ourproject.kune.workspace.client.search.SiteSearcherPresenter;
 import org.ourproject.kune.workspace.client.search.SiteSearcherView;
 import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.sitebar.SiteToken;
+import org.ourproject.kune.workspace.client.sitebar.login.SignIn;
+import org.ourproject.kune.workspace.client.sitebar.login.SignInPanel;
+import org.ourproject.kune.workspace.client.sitebar.login.SignInPresenter;
 import org.ourproject.kune.workspace.client.sitebar.msg.SiteMessage;
 import org.ourproject.kune.workspace.client.sitebar.msg.SiteMessagePanel;
 import org.ourproject.kune.workspace.client.sitebar.msg.SiteMessagePresenter;
 import org.ourproject.kune.workspace.client.sitebar.msg.SiteMessageView;
+import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
 import org.ourproject.kune.workspace.client.socialnet.GroupMembersSummaryPanelNew;
 import org.ourproject.kune.workspace.client.socialnet.GroupMembersSummaryPresenterNew;
 import org.ourproject.kune.workspace.client.socialnet.GroupMembersSummaryViewNew;
@@ -83,6 +91,7 @@
 import com.calclab.suco.client.modules.Module;
 import com.calclab.suco.client.modules.ModuleBuilder;
 import com.calclab.suco.client.scopes.SingletonScope;
+import com.calclab.suco.client.signal.Slot;
 import com.google.gwt.user.client.Cookies;
 import com.google.gwt.user.client.History;
 
@@ -117,7 +126,7 @@
 
 	builder.registerProvider(Session.class, new Provider<Session>() {
 	    public Session get() {
-		return new SessionImpl(Cookies.getCookie("userHash"), initialLang);
+		return new SessionImpl(Cookies.getCookie(Site.USERHASH), initialLang);
 	    }
 	}, SingletonScope.class);
 
@@ -168,19 +177,19 @@
 	    }
 	}, SingletonScope.class);
 
+	final WorkspaceSkeleton ws = builder.getInstance(WorkspaceSkeleton.class);
+	final Images images = builder.getInstance(Images.class);
+
 	builder.registerProvider(Application.class, new Provider<Application>() {
 	    public Application get() {
 		final Session session = builder.getInstance(Session.class);
 		final ExtensibleWidgetsManager extensionPointManager = builder
 			.getInstance(ExtensibleWidgetsManager.class);
 		return new ApplicationDefault(session, extensionPointManager, i18n, builder
-			.getInstance(ColorTheme.class), builder.getInstance(KuneErrorHandler.class));
+			.getInstance(ColorTheme.class), builder.getInstance(KuneErrorHandler.class), ws);
 	    }
 	}, SingletonScope.class);
 
-	final WorkspaceSkeleton ws = builder.getInstance(WorkspaceSkeleton.class);
-	final Images images = builder.getInstance(Images.class);
-
 	builder.registerProvider(SitePublicSpaceLink.class, new Provider<SitePublicSpaceLink>() {
 	    public SitePublicSpaceLink get() {
 		final SitePublicSpaceLinkPresenter presenter = new SitePublicSpaceLinkPresenter();
@@ -220,8 +229,9 @@
 
 	builder.registerProvider(SiteSignInLink.class, new Provider<SiteSignInLink>() {
 	    public SiteSignInLink get() {
-		final SiteSignInLinkPresenter presenter = new SiteSignInLinkPresenter();
-		final SiteSignInLinkPanel panel = new SiteSignInLinkPanel(presenter, ws);
+		final SiteSignInLinkPresenter presenter = new SiteSignInLinkPresenter(builder
+			.getInstance(Session.class));
+		final SiteSignInLinkPanel panel = new SiteSignInLinkPanel(presenter, i18n, ws);
 		presenter.init(panel);
 		return presenter;
 	    }
@@ -229,8 +239,10 @@
 
 	builder.registerProvider(SiteSignOutLink.class, new Provider<SiteSignOutLink>() {
 	    public SiteSignOutLink get() {
-		final SiteSignOutLinkPresenter presenter = new SiteSignOutLinkPresenter();
-		final SiteSignOutLinkPanel panel = new SiteSignOutLinkPanel(presenter, ws);
+		final SiteSignOutLinkPresenter presenter = new SiteSignOutLinkPresenter(builder
+			.getInstance(Session.class), UserService.App.getInstance(), builder
+			.getInstance(KuneErrorHandler.class));
+		final SiteSignOutLinkPanel panel = new SiteSignOutLinkPanel(presenter, i18n, ws);
 		presenter.init(panel);
 		return presenter;
 	    }
@@ -281,9 +293,27 @@
 	    }
 	}, SingletonScope.class);
 
+	builder.registerProvider(SignIn.class, new Provider<SignIn>() {
+	    public SignIn get() {
+		final SignInPresenter presenter = new SignInPresenter(builder.getInstance(Session.class), builder
+			.getInstance(StateManager.class), i18n, UserService.App.getInstance());
+		final SignInPanel view = new SignInPanel(presenter, i18n, ws);
+		presenter.init(view);
+		return presenter;
+	    }
+	}, SingletonScope.class);
+
+	builder.registerProvider(NewGroup.class, new Provider<NewGroup>() {
+	    public NewGroup get() {
+		final NewGroupPresenter presenter = new NewGroupPresenter(null, i18n);
+		final NewGroupPanel view = new NewGroupPanel(presenter, i18n);
+		presenter.init(view);
+		return presenter;
+	    }
+	}, SingletonScope.class);
+
 	builder.getInstance(SitePublicSpaceLink.class);
 	builder.getInstance(SiteSignInLink.class);
-
 	builder.getInstance(SiteSignOutLink.class);
 	builder.getInstance(SiteNewGroupLink.class);
 	builder.getInstance(SiteSearch.class);
@@ -346,6 +376,16 @@
 	    }
 	}, SingletonScope.class);
 
+	builder.registerProvider(StateManager.class, new Provider<StateManager>() {
+	    public StateManager get() {
+		final StateManagerDefault stateManager = new StateManagerDefault(new ContentProviderImpl(
+			ContentService.App.getInstance()), builder.getInstance(Session.class),
+			new HistoryWrapperImpl(), builder.getInstance(WorkspaceManager.class));
+		History.addHistoryListener(stateManager);
+		return stateManager;
+	    }
+	}, SingletonScope.class);
+
 	builder.registerProvider(GroupMembersSummary.class, new Provider<GroupMembersSummary>() {
 	    public GroupMembersSummary get() {
 		final GroupMembersSummaryPresenterNew presenter = new GroupMembersSummaryPresenterNew(i18n, builder
@@ -387,23 +427,16 @@
 	    }
 	}, SingletonScope.class);
 
+	// Register of tokens like "signin", "newgroup", "translate" etcetera
+	builder.getInstance(StateManager.class).addSiteToken(SiteToken.signin.toString(), new Slot<StateToken>() {
+	    public void onEvent(final StateToken previousStateToken) {
+		builder.getInstance(SignIn.class).doSignIn(previousStateToken);
+	    }
+	});
+
 	// builder.registerProvider(type, new Provider<>() {},
-	// SingletonScope.class);
+	// SingletonScope.class)
 
-	builder.registerProvider(StateManager.class, new Provider<StateManager>() {
-	    public StateManager get() {
-		final Session session = builder.getInstance(Session.class);
-		final ContentProviderImpl provider = new ContentProviderImpl(ContentService.App.getInstance());
-		final HistoryWrapper historyWrapper = new HistoryWrapperImpl();
-		final Application application = builder.getInstance(Application.class);
-		final WorkspaceManager wm = builder.getInstance(WorkspaceManager.class);
-		final StateManagerDefault stateManager = new StateManagerDefault(provider, application, session,
-			historyWrapper, wm);
-		History.addHistoryListener(stateManager);
-		return stateManager;
-	    }
-	}, SingletonScope.class);
-
     }
 
 }

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,7 +1,7 @@
 /*
  *
+ * This file is part of kune.
  * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -27,6 +27,7 @@
 import org.ourproject.kune.platf.client.dto.InitDataDTO;
 import org.ourproject.kune.platf.client.dto.LicenseDTO;
 import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
 
 import com.calclab.suco.client.signal.Slot;
 
@@ -67,6 +68,12 @@
 
     void onInitDataReceived(Slot<InitDataDTO> slot);
 
+    void onUserSignIn(Slot<UserInfoDTO> slot);
+
+    void onUserSignOut(Slot<Object> slot);
+
+    void setCurrentUserInfo(UserInfoDTO currentUserInfo);
+
     void setUserHash(String userHash);
 
 }
\ No newline at end of file

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionImpl.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionImpl.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionImpl.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -29,32 +29,31 @@
 import org.ourproject.kune.platf.client.dto.InitDataDTO;
 import org.ourproject.kune.platf.client.dto.LicenseDTO;
 import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
 
 import com.calclab.suco.client.signal.Signal;
 import com.calclab.suco.client.signal.Slot;
 
-/**
- * RESPONSABILITIES: - Store the user's application state - Generates URLable's
- * historyTokens
- * 
- * @author danigb
- * 
- */
 public class SessionImpl implements Session {
     private String userHash;
+    private InitDataDTO initData;
+    private UserInfoDTO currentUserInfo;
     private Object[][] languagesArray;
     private Object[][] countriesArray;
     private Object[][] timezonesArray;
     private StateDTO currentState;
     private I18nLanguageDTO currentLanguage;
-    private InitDataDTO initData;
     private final Signal<InitDataDTO> onInitDataReceived;
+    private final Signal<UserInfoDTO> onUserSignIn;
+    private final Signal<Object> onUserSignOut;
 
     public SessionImpl(final String userHash, final I18nLanguageDTO initialLanguage) {
 	this.userHash = userHash;
 	currentLanguage = initialLanguage;
 	languagesArray = null;
 	this.onInitDataReceived = new Signal<InitDataDTO>("initDataReceived");
+	this.onUserSignIn = new Signal<UserInfoDTO>("onUserSignIn");
+	this.onUserSignOut = new Signal<Object>("onUserSignOut");
     }
 
     public List<I18nCountryDTO> getCountries() {
@@ -76,6 +75,10 @@
 	return currentState;
     }
 
+    public UserInfoDTO getCurrentUserInfo() {
+	return currentUserInfo;
+    }
+
     public List<I18nLanguageSimpleDTO> getLanguages() {
 	return initData.getLanguages();
     }
@@ -110,6 +113,14 @@
 	onInitDataReceived.add(slot);
     }
 
+    public void onUserSignIn(final Slot<UserInfoDTO> slot) {
+	onUserSignIn.add(slot);
+    }
+
+    public void onUserSignOut(final Slot<Object> slot) {
+	onUserSignOut.add(slot);
+    }
+
     public void setCurrent(final StateDTO currentState) {
 	this.currentState = currentState;
     }
@@ -122,6 +133,15 @@
 	this.currentState = currentState;
     }
 
+    public void setCurrentUserInfo(final UserInfoDTO currentUserInfo) {
+	this.currentUserInfo = currentUserInfo;
+	if (currentUserInfo != null) {
+	    onUserSignIn.fire(currentUserInfo);
+	} else {
+	    onUserSignOut.fire(null);
+	}
+    }
+
     public void setInitData(final InitDataDTO initData) {
 	this.initData = initData;
 	onInitDataReceived.fire(initData);
@@ -132,9 +152,9 @@
     }
 
     private Object[][] mapCountries() {
-	final Object[][] objs = new Object[getCountries().size()][1];
+	final Object[][] objs = new Object[initData.getCountries().size()][1];
 	int i = 0;
-	for (final Iterator<I18nCountryDTO> iterator = getCountries().iterator(); iterator.hasNext();) {
+	for (final Iterator<I18nCountryDTO> iterator = initData.getCountries().iterator(); iterator.hasNext();) {
 	    final I18nCountryDTO country = iterator.next();
 	    final Object[] obj = new Object[] { country.getCode(), country.getEnglishName() };
 	    objs[i++] = obj;
@@ -143,9 +163,9 @@
     }
 
     private Object[][] mapLangs() {
-	final Object[][] objs = new Object[getLanguages().size()][1];
+	final Object[][] objs = new Object[initData.getLanguages().size()][1];
 	int i = 0;
-	for (final Iterator<I18nLanguageSimpleDTO> iterator = getLanguages().iterator(); iterator.hasNext();) {
+	for (final Iterator<I18nLanguageSimpleDTO> iterator = initData.getLanguages().iterator(); iterator.hasNext();) {
 	    final I18nLanguageSimpleDTO language = iterator.next();
 	    final Object[] obj = new Object[] { language.getCode(), language.getEnglishName() };
 	    objs[i++] = obj;
@@ -154,9 +174,9 @@
     }
 
     private void mapTimezones() {
-	timezonesArray = new Object[getTimezones().length][1];
+	timezonesArray = new Object[initData.getTimezones().length][1];
 	for (int i = 0; i < getTimezones().length; i++) {
-	    final Object[] obj = new Object[] { getTimezones()[i] };
+	    final Object[] obj = new Object[] { initData.getTimezones()[i] };
 	    timezonesArray[i] = obj;
 	}
     }

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -24,16 +24,21 @@
 import org.ourproject.kune.platf.client.dto.StateDTO;
 import org.ourproject.kune.platf.client.dto.StateToken;
 
+import com.calclab.suco.client.signal.Slot;
 import com.google.gwt.user.client.HistoryListener;
 
 public interface StateManager extends HistoryListener {
 
+    void addSiteToken(String token, Slot<StateToken> whenToken);
+
     void gotoToken(String token);
 
     void reload();
 
     void reloadContextAndTitles();
 
+    void removeSiteToken(String token);
+
     void setRetrievedState(StateDTO content);
 
     void setSocialNetwork(SocialNetworkResultDTO socialNet);

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -20,65 +20,73 @@
 
 package org.ourproject.kune.platf.client.state;
 
-import org.ourproject.kune.platf.client.app.Application;
+import java.util.HashMap;
+
 import org.ourproject.kune.platf.client.app.HistoryWrapper;
-import org.ourproject.kune.platf.client.dispatch.DefaultDispatcher;
-import org.ourproject.kune.platf.client.dto.GroupDTO;
 import org.ourproject.kune.platf.client.dto.ParticipationDataDTO;
 import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
 import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
 import org.ourproject.kune.platf.client.dto.StateDTO;
 import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
 import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
-import org.ourproject.kune.platf.client.tool.ClientTool;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
 import org.ourproject.kune.workspace.client.sitebar.Site;
 import org.ourproject.kune.workspace.client.ui.newtmp.WorkspaceManager;
-import org.ourproject.kune.workspace.client.workspace.Workspace;
 
+import com.allen_sauer.gwt.log.client.Log;
+import com.calclab.suco.client.signal.Slot;
+
 public class StateManagerDefault implements StateManager {
-    private final Application app;
-    private final ContentProvider provider;
-    private final Workspace workspace;
+    private final ContentProvider contentProvider;
     private StateDTO oldState;
     private final Session session;
     private final HistoryWrapper history;
-    private final WorkspaceManager ws;
+    private final WorkspaceManager workspaceManager;
+    private final HashMap<String, Slot<StateToken>> siteTokens;
 
-    public StateManagerDefault(final ContentProvider provider, final Application app, final Session session,
-	    final HistoryWrapper history, final WorkspaceManager ws) {
-	this.provider = provider;
-	this.app = app;
+    public StateManagerDefault(final ContentProvider contentProvider, final Session session,
+	    final HistoryWrapper history, final WorkspaceManager workspaceManager) {
+	this.contentProvider = contentProvider;
 	this.session = session;
 	this.history = history;
-	this.ws = ws;
-	this.workspace = app.getWorkspace();
+	this.workspaceManager = workspaceManager;
 	this.oldState = null;
+	session.onUserSignIn(new Slot<UserInfoDTO>() {
+	    public void onEvent(final UserInfoDTO parameter) {
+		restorePreviousState();
+	    }
+	});
+	session.onUserSignOut(new Slot<Object>() {
+	    public void onEvent(final Object parameter) {
+		reload();
+	    }
+	});
+	siteTokens = new HashMap<String, Slot<StateToken>>();
     }
 
+    public void addSiteToken(final String token, final Slot<StateToken> slot) {
+	siteTokens.put(token, slot);
+    }
+
     public void gotoToken(final String token) {
 	setState(new StateToken(token));
     }
 
     public void onHistoryChanged(final String historyToken) {
-	String oldStateEncoded = "";
-	if (oldState != null) {
-	    oldStateEncoded = oldState.getStateToken().getEncoded();
-	}
-	if (historyToken.equals(Site.NEWGROUP_TOKEN)) {
-	    Site.doNewGroup(oldStateEncoded);
-	} else if (historyToken.equals(Site.LOGIN_TOKEN)) {
-	    Site.doLogin(oldStateEncoded);
-	} else if (historyToken.equals(Site.TRANSLATE_TOKEN)) {
-	    DefaultDispatcher.getInstance().fire(WorkspaceEvents.SHOW_TRANSLATOR, null);
-	} else if (historyToken.equals(Site.FIXME_TOKEN)) {
+	final Slot<StateToken> tokenSlot = siteTokens.get(historyToken);
+	Log.debug("history token: " + historyToken);
+	if (tokenSlot == null) {
+	    onHistoryChanged(new StateToken(historyToken));
+	} else {
+	    StateToken stateToken;
 	    if (oldState == null) {
-		onHistoryChanged(new StateToken());
+		// Starting with some token like "signin": load defContent also
+		stateToken = new StateToken();
+		onHistoryChanged(stateToken);
 	    } else {
-		loadContent(oldState);
+		stateToken = oldState.getStateToken();
 	    }
-	} else {
-	    onHistoryChanged(new StateToken(historyToken));
+	    tokenSlot.onEvent(stateToken);
 	}
     }
 
@@ -92,21 +100,25 @@
     }
 
     public void reloadContextAndTitles() {
-	provider.getContent(session.getUserHash(), new StateToken(history.getToken()),
+	contentProvider.getContent(session.getUserHash(), new StateToken(history.getToken()),
 		new AsyncCallbackSimple<StateDTO>() {
 		    public void onSuccess(final StateDTO newStateDTO) {
 			loadContextOnly(newStateDTO);
 			oldState = newStateDTO;
-			workspace.getContentTitleComponent().setState(oldState);
-			workspace.getContentSubTitleComponent().setState(oldState);
+			// workspace.getContentTitleComponent().setState(oldState);
+			// workspace.getContentSubTitleComponent().setState(oldState);
 			Site.hideProgress();
 		    }
 		});
     }
 
+    public void removeSiteToken(final String token) {
+	siteTokens.remove(token);
+    }
+
     public void setRetrievedState(final StateDTO content) {
 	final StateToken state = content.getStateToken();
-	provider.cache(state, content);
+	contentProvider.cache(state, content);
 	setState(state);
     }
 
@@ -120,7 +132,7 @@
 	    final ParticipationDataDTO userParticipation = socialNet.getUserParticipation();
 	    state.setGroupMembers(groupMembers);
 	    state.setParticipation(userParticipation);
-	    ws.setSocialNetwork(state);
+	    workspaceManager.setSocialNetwork(state);
 	}
     }
 
@@ -130,46 +142,55 @@
 
     private void loadContent(final StateDTO state) {
 	session.setCurrent(state);
-	final GroupDTO group = state.getGroup();
-	app.setGroupState(group.getShortName());
-	final boolean isAdmin = state.getGroupRights().isAdministrable();
-	if (isAdmin) {
-	    workspace.getThemeMenuComponent().setVisible(true);
-	} else {
-	    workspace.getThemeMenuComponent().setVisible(false);
-	}
-	workspace.showGroup(group, isAdmin);
+	workspaceManager.setState(state);
+	// final GroupDTO group = state.getGroup();
+	// app.setGroupState(group.getShortName());
+	// final boolean isAdmin = state.getGroupRights().isAdministrable();
+	// if (isAdmin) {
+	// workspace.getThemeMenuComponent().setVisible(true);
+	// } else {
+	// workspace.getThemeMenuComponent().setVisible(false);
+	// }
+	// workspace.showGroup(group, isAdmin);
 
-	final String toolName = state.getToolName();
-	workspace.setTool(toolName);
+	// final String toolName = state.getToolName();
+	// workspace.setTool(toolName);
 
-	final ClientTool clientTool = app.getTool(toolName);
-	clientTool.setContent(state);
-	clientTool.setContext(state);
-	ws.setState(state);
-	workspace.getContentTitleComponent().setState(state);
-	workspace.getContentSubTitleComponent().setState(state);
-	workspace.getContentBottomToolBarComponent().setRate(state, session.isLogged());
-	workspace.setContent(clientTool.getContent());
-	workspace.setContext(clientTool.getContext());
-	workspace.getLicenseComponent().setLicense(state);
+	// final ClientTool clientTool = app.getTool(toolName);
+	// clientTool.setContent(state);
+	// clientTool.setContext(state);
+	// workspace.getContentTitleComponent().setState(state);
+	// workspace.getContentSubTitleComponent().setState(state);
+	// workspace.getContentBottomToolBarComponent().setRate(state,
+	// session.isLogged());
+	// workspace.setContent(clientTool.getContent());
+	// workspace.setContext(clientTool.getContext());
+	// workspace.getLicenseComponent().setLicense(state);
 	Site.hideProgress();
     }
 
     private void loadContextOnly(final StateDTO state) {
 	session.setCurrent(state);
-	final String toolName = state.getToolName();
-	final ClientTool clientTool = app.getTool(toolName);
-	clientTool.setContext(state);
-	workspace.setContext(clientTool.getContext());
+	// /final String toolName = state.getToolName();
+	// /final ClientTool clientTool = app.getTool(toolName);
+	// /clientTool.setContext(state);
+	// /workspace.setContext(clientTool.getContext());
     }
 
     private void onHistoryChanged(final StateToken newState) {
-	provider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateDTO>() {
+	contentProvider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateDTO>() {
 	    public void onSuccess(final StateDTO newStateDTO) {
 		loadContent(newStateDTO);
 		oldState = newStateDTO;
 	    }
 	});
     }
+
+    private void restorePreviousState() {
+	if (oldState == null) {
+	    onHistoryChanged(new StateToken());
+	} else {
+	    loadContent(oldState);
+	}
+    }
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceClientModule.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceClientModule.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -35,17 +35,10 @@
 import org.ourproject.kune.workspace.client.actions.DetachFromExtensibleWidgetAction;
 import org.ourproject.kune.workspace.client.actions.DisableRateItAction;
 import org.ourproject.kune.workspace.client.actions.EnableRateItAction;
-import org.ourproject.kune.workspace.client.actions.InitAction;
-import org.ourproject.kune.workspace.client.actions.LoggedInAction;
-import org.ourproject.kune.workspace.client.actions.LoggedOutAction;
 import org.ourproject.kune.workspace.client.actions.OnlyCheckUserSessionAction;
 import org.ourproject.kune.workspace.client.actions.RateContentAction;
 import org.ourproject.kune.workspace.client.actions.RecalculateWorkspaceAction;
 import org.ourproject.kune.workspace.client.actions.ReloadContextAction;
-import org.ourproject.kune.workspace.client.actions.StopAction;
-import org.ourproject.kune.workspace.client.actions.UserLoginAction;
-import org.ourproject.kune.workspace.client.actions.UserLogoutAction;
-import org.ourproject.kune.workspace.client.actions.UserRegisterAction;
 import org.ourproject.kune.workspace.client.actions.i18n.DoTranslationAction;
 import org.ourproject.kune.workspace.client.actions.i18n.GetLexiconAction;
 import org.ourproject.kune.workspace.client.actions.i18n.GetTranslationAction;
@@ -81,10 +74,6 @@
     }
 
     public void configure(final Register register) {
-	register.addAction(WorkspaceEvents.START_APP, new InitAction(session, dispacher, workspace));
-	register.addAction(WorkspaceEvents.STOP_APP, new StopAction(workspace));
-	register.addAction(WorkspaceEvents.USER_LOGGED_IN, new LoggedInAction(session, stateManager, i18n));
-	register.addAction(WorkspaceEvents.USER_LOGGED_OUT, new LoggedOutAction(session, stateManager));
 	register.addAction(WorkspaceEvents.ONLY_CHECK_USER_SESSION, new OnlyCheckUserSessionAction(session));
 	register.addAction(PlatformEvents.ATTACH_TO_EXTENSIBLE_WIDGET, new AttachToExtensibleWidgetAction(workspace));
 	register.addAction(PlatformEvents.DETACH_FROM_EXTENSIBLE_WIDGET,
@@ -115,9 +104,6 @@
 	register.addAction(WorkspaceEvents.SHOW_TRANSLATOR, new ShowTranslatorAction(session, workspace, i18n));
 	register.addAction(WorkspaceEvents.DO_TRANSLATION, new DoTranslationAction(session, i18n));
 	register.addAction(WorkspaceEvents.GET_LEXICON, new GetLexiconAction(i18n));
-	register.addAction(WorkspaceEvents.USER_LOGIN, new UserLoginAction());
-	register.addAction(WorkspaceEvents.USER_LOGOUT, new UserLogoutAction(session));
-	register.addAction(WorkspaceEvents.USER_REGISTER, new UserRegisterAction());
 	register.addAction(WorkspaceEvents.CREATE_NEW_GROUP, new CreateNewGroupAction(session));
 	register.addAction(WorkspaceEvents.RELOAD_CONTEXT, new ReloadContextAction(stateManager));
 	register.addAction(WorkspaceEvents.RECALCULATE_WORKSPACE_SIZE, new RecalculateWorkspaceAction(workspace));

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceEvents.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceEvents.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceEvents.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -21,12 +21,7 @@
 package org.ourproject.kune.workspace.client;
 
 public interface WorkspaceEvents {
-    public static final String START_APP = "platf.StartApplication";
-    public static final String STOP_APP = "platf.StopApplication";
-    public static final String USER_LOGGED_IN = "ws.UserLoggedIn";
-    public static final String USER_LOGGED_OUT = "ws.UserLoggedOut";
     public static final String ONLY_CHECK_USER_SESSION = "ws_OnlyCheckUserSession";
-    public static final String INIT_DATA_RECEIVED = "ws.InitDataReceived";
     public static final String REQ_JOIN_GROUP = "ws.RequestJoinGroup";
     public static final String DEL_MEMBER = "ws.DeleteMember";
     public static final String DENY_JOIN_GROUP = "ws.DenyJoinGroup";
@@ -48,9 +43,6 @@
     public static final String SHOW_SEARCHER = "ws.ShowSearcher";
     public static final String GET_TRANSLATION = "i18n.GetTranslation";
     public static final String DO_TRANSLATION = "i18n.doTranslation";
-    public static final String USER_LOGIN = "ws.UserLogin";
-    public static final String USER_LOGOUT = "ws.UserLogout";
-    public static final String USER_REGISTER = "ws.UserRegister";
     public static final String CREATE_NEW_GROUP = "ws.CreateNewGroup";
     public static final String RELOAD_CONTEXT = "ws.ReoloadContext";
     public static final String WS_SPLITTER_STARTRESIZING = "ws.SplitterStartResizing";

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/InitAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/InitAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/InitAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,94 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dispatch.Dispatcher;
-import org.ourproject.kune.platf.client.dto.InitDataDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.rpc.SiteService;
-import org.ourproject.kune.platf.client.rpc.SiteServiceAsync;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.ui.WindowUtils;
-import org.ourproject.kune.platf.client.utils.PrefetchUtilities;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.workspace.Workspace;
-
-import com.allen_sauer.gwt.log.client.Log;
-import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class InitAction implements Action<Object> {
-    private final Session session;
-    private final Dispatcher dispatcher;
-    private final Workspace workspace;
-
-    public InitAction(final Session session, final Dispatcher dispatcher, final Workspace workspace) {
-	this.session = session;
-	this.dispatcher = dispatcher;
-	this.workspace = workspace;
-    }
-
-    public void execute(final Object value) {
-	PrefetchUtilities.preFetchImpImages();
-	getInitData();
-	dispatcher.fire(WorkspaceEvents.RECALCULATE_WORKSPACE_SIZE, null);
-	final Timer prefetchTimer = new Timer() {
-	    public void run() {
-		PrefetchUtilities.doTasksDeferred(workspace);
-	    }
-	};
-	prefetchTimer.schedule(20000);
-    }
-
-    private void getInitData() {
-	final SiteServiceAsync server = SiteService.App.getInstance();
-	server.getInitData(session.getUserHash(), new AsyncCallback<InitDataDTO>() {
-	    public void onFailure(final Throwable error) {
-		Site.error("Error fetching initial data");
-		Log.debug(error.getMessage());
-	    }
-
-	    public void onSuccess(final InitDataDTO initData) {
-		checkChatDomain(initData.getChatDomain());
-		session.setInitData(initData);
-		final UserInfoDTO currentUser = initData.getUserInfo();
-		// use signals:
-		dispatcher.fire(WorkspaceEvents.INIT_DATA_RECEIVED, initData);
-		if (currentUser == null) {
-		    dispatcher.fire(WorkspaceEvents.USER_LOGGED_OUT, null);
-		} else {
-		    dispatcher.fire(WorkspaceEvents.USER_LOGGED_IN, currentUser);
-		}
-	    }
-
-	    private void checkChatDomain(final String chatDomain) {
-		final String httpDomain = WindowUtils.getLocation().getHostName();
-		if (!chatDomain.equals(httpDomain)) {
-		    Log.error("Your http domain (" + httpDomain + ") is different from the chat domain (" + chatDomain
-			    + "). This will produce problems with the chat functionality. "
-			    + "Check kune.properties on the server.");
-		}
-	    }
-	});
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedInAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedInAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedInAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,65 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import java.util.Date;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
-
-import com.google.gwt.user.client.Cookies;
-
-public class LoggedInAction implements Action<UserInfoDTO> {
-    private final Session session;
-    private final StateManager stateManager;
-    private final I18nUITranslationService i18n;
-
-    public LoggedInAction(final Session session, final StateManager stateManager, final I18nUITranslationService i18n) {
-	this.session = session;
-	this.stateManager = stateManager;
-	this.i18n = i18n;
-    }
-
-    public void execute(final UserInfoDTO value) {
-	onLoggedIn(value);
-    }
-
-    private void onLoggedIn(final UserInfoDTO userInfoDTO) {
-	setCookie(userInfoDTO);
-	session.setUserHash(userInfoDTO.getUserHash());
-	// FIXME ite.sitebar.showLoggedUser(userInfoDTO);
-	final I18nLanguageDTO language = userInfoDTO.getLanguage();
-	stateManager.reload();
-	i18n.changeCurrentLanguage(language.getCode());
-	session.setCurrentLanguage(language);
-    }
-
-    private void setCookie(final UserInfoDTO userInfoDTO) {
-	// http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
-	final String sessionId = userInfoDTO.getUserHash();
-	final long duration = Session.SESSION_DURATION;
-	final Date expires = new Date(System.currentTimeMillis() + duration);
-	Cookies.setCookie("userHash", sessionId, expires, null, "/", false);
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedOutAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedOutAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedOutAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,52 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import java.util.Date;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.state.StateManager;
-
-import com.google.gwt.user.client.Cookies;
-
- at SuppressWarnings("unchecked")
-public class LoggedOutAction implements Action {
-
-    private final Session session;
-    private final StateManager stateManager;
-
-    public LoggedOutAction(final Session session, final StateManager stateManager) {
-	this.session = session;
-	this.stateManager = stateManager;
-    }
-
-    public void execute(final Object value) {
-	// FIXME: Remove cookie doesn't works in all browsers, know issue:
-	// http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded86778ee56690/515dc513c7d085eb?lnk=st&q=remove+cookie#515dc513c7d085eb
-	// http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeCookie
-	Cookies.removeCookie("userHash");
-	// Workaround:
-	Cookies.setCookie("userHash", null, new Date(0), null, "/", false);
-	session.setUserHash(null);
-	// FIXME Site.sitebar.showLoggedUser(null);
-	stateManager.reload();
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/StopAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/StopAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/StopAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.workspace.client.workspace.Workspace;
-
- at SuppressWarnings("unchecked")
-public class StopAction implements Action {
-
-    private final Workspace workspace;
-
-    public StopAction(final Workspace workspace) {
-        this.workspace = workspace;
-    }
-
-    public void execute(final Object value) {
-        onStop();
-    }
-
-    private void onStop() {
-        workspace.setVisible(false);
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLoginAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLoginAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLoginAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.UserDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.rpc.ParamCallback;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class UserLoginAction implements Action<ParamCallback<UserDTO, UserInfoDTO>> {
-
-    public void execute(final ParamCallback<UserDTO, UserInfoDTO> paramCall) {
-        onLogin(paramCall.getParam(), paramCall.getCallback());
-    }
-
-    private void onLogin(final UserDTO user, final AsyncCallback<UserInfoDTO> callback) {
-        UserServiceAsync siteBarService = UserService.App.getInstance();
-        siteBarService.login(user.getShortName(), user.getPassword(), callback);
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLogoutAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLogoutAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLogoutAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,46 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class UserLogoutAction implements Action<AsyncCallback<Object>> {
-
-    private final Session session;
-
-    public UserLogoutAction(final Session session) {
-        this.session = session;
-    }
-
-    @SuppressWarnings("unchecked")
-    public void execute(final AsyncCallback<Object> value) {
-        onLogout(value);
-    }
-
-    private void onLogout(final AsyncCallback<Object> callback) {
-        UserServiceAsync userService = UserService.App.getInstance();
-        userService.logout(session.getUserHash(), callback);
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserRegisterAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserRegisterAction.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserRegisterAction.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.UserDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.rpc.ParamCallback;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class UserRegisterAction implements Action<ParamCallback<UserDTO, UserInfoDTO>> {
-
-    @SuppressWarnings("unchecked")
-    public void execute(final ParamCallback<UserDTO, UserInfoDTO> paramCall) {
-	onRegister(paramCall.getParam(), paramCall.getCallback());
-    }
-
-    private void onRegister(final UserDTO user, final AsyncCallback<UserInfoDTO> callback) {
-	final UserServiceAsync userService = UserService.App.getInstance();
-	userService.createUser(user, callback);
-    }
-}

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/presence/ui/GroupSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/presence/ui/GroupSummaryPanel.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/presence/ui/GroupSummaryPanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -42,9 +42,8 @@
 	super.setContent(vp);
 	super.setContentVisible(true);
 	super.setBorderStylePrimaryName("k-dropdownouter-summary");
-	addStyleName("kune-Margin-Medium-tl");
+	addStyleName("kune-Margin-Medium-t");
 	ws.getEntitySummary().addInSummary(this);
-	ws.unMask();
     }
 
     public void setComment(final String comment) {

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/Site.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/Site.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/Site.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -28,26 +28,13 @@
 import com.calclab.suco.client.container.Provider;
 
 public class Site {
-    public static final String LOGIN_TOKEN = "login";
-    public static final String NEWGROUP_TOKEN = "newgroup";
-    public static final String FIXME_TOKEN = "fixme";
-    public static final String TRANSLATE_TOKEN = "translate";
+    public static final String USERHASH = "userHash";
     public static final String IN_DEVELOPMENT = " (in development)";
     private static I18nTranslationService i18n;
     private static SiteProgress progress;
     private static Provider<SiteMessage> siteMessageProvider;
 
     @Deprecated
-    public static void doLogin(final String returnToken) {
-	// sitebar.doLogin(returnToken);
-    }
-
-    @Deprecated
-    public static void doLogout() {
-	// sitebar.doLogout();
-    }
-
-    @Deprecated
     public static void doNewGroup(final String returnToken) {
 	// sitebar.doNewGroup(returnToken);
     }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteBarFactory.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteBarFactory.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteBarFactory.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -33,13 +33,10 @@
 import org.ourproject.kune.workspace.client.newgroup.NewGroupListener;
 import org.ourproject.kune.workspace.client.newgroup.NewGroupPresenter;
 import org.ourproject.kune.workspace.client.newgroup.ui.NewGroupPanel;
-import org.ourproject.kune.workspace.client.sitebar.login.Login;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginListener;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginPanel;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginPresenter;
+import org.ourproject.kune.workspace.client.sitebar.login.SignIn;
 
 public class SiteBarFactory {
-    private static Login login;
+    private static SignIn login;
     private static NewGroup newGroup;
     private static Session session;
     private static I18nUITranslationService i18n;
@@ -60,16 +57,6 @@
 	return presenter;
     }
 
-    public static Login getLoginForm(final LoginListener listener) {
-	if (login == null) {
-	    final LoginPresenter presenter = new LoginPresenter(session, listener, i18n);
-	    final LoginPanel view = new LoginPanel(presenter, i18n);
-	    presenter.init(view);
-	    login = presenter;
-	}
-	return login;
-    }
-
     public static NewGroup getNewGroupForm(final NewGroupListener listener) {
 	if (newGroup == null) {
 	    final NewGroupPresenter presenter = new NewGroupPresenter(listener, i18n);

Added: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteToken.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteToken.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteToken.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.workspace.client.sitebar;
+
+public enum SiteToken {
+    signin, newgroup, translate
+}

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPanel.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -31,8 +31,8 @@
 import org.ourproject.kune.workspace.client.newgroup.ui.NewGroupPanel;
 import org.ourproject.kune.workspace.client.sitebar.Site;
 import org.ourproject.kune.workspace.client.sitebar.SiteBarFactory;
-import org.ourproject.kune.workspace.client.sitebar.login.Login;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginPanel;
+import org.ourproject.kune.workspace.client.sitebar.SiteToken;
+import org.ourproject.kune.workspace.client.sitebar.login.SignInPanel;
 
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.DOM;
@@ -75,7 +75,7 @@
     private TextBox searchTextBox;
 
     private final Label logoutLabel;
-    private LoginPanel loginPanel;
+    private SignInPanel signInPanel;
     private final Images img;
     private final MenuBar optionsSubmenu;
     private MenuItem linkHelpInTrans;
@@ -157,14 +157,14 @@
 	gotoPublic.addStyleName("kune-SiteBarPanel-LabelLink");
 	contentNoPublic.addStyleName("kune-Margin-Medium-r");
 	newGroupHyperlink.setText(i18n.t("Create New Group"));
-	newGroupHyperlink.setTargetHistoryToken(Site.NEWGROUP_TOKEN);
+	newGroupHyperlink.setTargetHistoryToken(SiteToken.newgroup.toString());
 	loggedUserHyperlink.setVisible(false);
 	pipeSeparatorHtml.setHTML("|");
 	pipeSeparatorHtml.setStyleName("kune-SiteBarPanel-Separator");
 	pipeSeparatorHtml2.setHTML("|");
 	pipeSeparatorHtml2.setStyleName("kune-SiteBarPanel-Separator");
 	loginHyperlink.setText(i18n.t("Sign in to collaborate"));
-	loginHyperlink.setTargetHistoryToken(Site.LOGIN_TOKEN);
+	loginHyperlink.setTargetHistoryToken(SiteToken.signin.toString());
 	logoutLabel.setText(i18n.t("Sign out"));
 	logoutLabel.addStyleName("kune-SiteBarPanel-LabelLink");
 	options.addItem(i18n.t("Options"), true, optionsSubmenu);
@@ -186,7 +186,7 @@
     }
 
     public void centerLoginDialog() {
-	loginPanel.center();
+	signInPanel.center();
     }
 
     public void centerNewGroupDialog() {
@@ -206,7 +206,7 @@
     }
 
     public void hideLoginDialog() {
-	loginPanel.hide();
+	signInPanel.hide();
     }
 
     public void hideNewGroupDialog() {
@@ -235,7 +235,7 @@
     public void restoreLoginLink() {
 	loginHyperlink.setVisible(true);
 	loggedUserHyperlink.setVisible(false);
-	loginHyperlink.setTargetHistoryToken(Site.LOGIN_TOKEN);
+	loginHyperlink.setTargetHistoryToken(SiteToken.signin.toString());
     }
 
     public void setContentGotoPublicUrl(final String publicUrl) {
@@ -308,9 +308,9 @@
     }
 
     public void showLoginDialog() {
-	final Login login = SiteBarFactory.getLoginForm(presenter);
-	loginPanel = (LoginPanel) login.getView();
-	loginPanel.show();
+	// final SignIn login = SiteBarFactory.getLoginForm(presenter);
+	// signInPanel = (SignInPanel) login.getView();
+	// signInPanel.show();
 
     }
 

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPresenter.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPresenter.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -33,14 +33,13 @@
 import org.ourproject.kune.workspace.client.WorkspaceEvents;
 import org.ourproject.kune.workspace.client.newgroup.NewGroupListener;
 import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginListener;
 import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
 import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
-public class SiteBarPresenter implements SiteBar, LoginListener, NewGroupListener {
+public class SiteBarPresenter implements SiteBar, NewGroupListener {
 
     private SiteBarView view;
     private final SiteBarListener listener;
@@ -94,8 +93,7 @@
 		listener.onUserLoggedOut();
 	    }
 	};
-
-	DefaultDispatcher.getInstance().fire(WorkspaceEvents.USER_LOGOUT, callback);
+	UserService.App.getInstance().logout(session.getUserHash(), callback);
     }
 
     public void doNewGroup(final String previousTokenOrig) {
@@ -218,12 +216,6 @@
 	view.unMask();
     }
 
-    public void userLoggedIn(final UserInfoDTO userInfoDTO) {
-	DefaultDispatcher.getInstance().fire(WorkspaceEvents.USER_LOGGED_IN, userInfoDTO);
-	view.hideLoginDialog();
-	returnToPreviousState();
-    }
-
     protected void onSearchFocus() {
 	view.setTextSearchBig();
 	view.clearSearchText();

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,33 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.View;
-
-public interface Login {
-
-    public void onCancel();
-
-    public void doLogin();
-
-    public View getView();
-
-    public void doRegister();
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,46 +0,0 @@
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
-
-import com.gwtext.client.widgets.form.TextField;
-
-public class LoginForm extends DefaultForm {
-    private static final String NICKOREMAIL_FIELD = "nickOrEmail";
-    private static final String PASSWORD_FIELD = "password";
-
-    private final TextField loginNickOrEmailField;
-    private final TextField loginPassField;
-
-    public LoginForm(final I18nTranslationService i18n) {
-        loginNickOrEmailField = new TextField();
-        loginNickOrEmailField.setFieldLabel(i18n.t("Nickname or email"));
-        loginNickOrEmailField.setName(NICKOREMAIL_FIELD);
-        loginNickOrEmailField.setWidth(DEF_FIELD_WIDTH);
-        loginNickOrEmailField.setAllowBlank(false);
-        loginNickOrEmailField.setValidationEvent(false);
-        super.add(loginNickOrEmailField);
-
-        loginPassField = new TextField();
-        loginPassField.setFieldLabel(i18n.t("Password"));
-        loginPassField.setName(PASSWORD_FIELD);
-        loginPassField.setWidth(DEF_FIELD_WIDTH);
-        loginPassField.setPassword(true);
-        loginPassField.setAllowBlank(false);
-        loginPassField.setValidationEvent(false);
-        super.add(loginPassField);
-    }
-
-    public void focusLogin() {
-        loginNickOrEmailField.focus();
-    }
-
-    public String getLoginPassword() {
-        return loginPassField.getValueAsString();
-    }
-
-    public String getNickOrEmail() {
-        return loginNickOrEmailField.getValueAsString();
-    }
-
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginListener.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginListener.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginListener.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,30 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-
-public interface LoginListener {
-    void userLoggedIn(UserInfoDTO user);
-
-    void onLoginCancelled();
-
-    void onLoginClose();
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,344 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.ui.dialogs.BasicDialog;
-import org.ourproject.kune.platf.client.ui.dialogs.InfoDialog;
-import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.sitebar.msg.SimpleMessagePanel;
-
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.Widget;
-import com.gwtext.client.core.EventObject;
-import com.gwtext.client.core.RegionPosition;
-import com.gwtext.client.widgets.Button;
-import com.gwtext.client.widgets.Component;
-import com.gwtext.client.widgets.Panel;
-import com.gwtext.client.widgets.TabPanel;
-import com.gwtext.client.widgets.event.ButtonListenerAdapter;
-import com.gwtext.client.widgets.event.PanelListenerAdapter;
-import com.gwtext.client.widgets.event.WindowListenerAdapter;
-import com.gwtext.client.widgets.form.Field;
-import com.gwtext.client.widgets.layout.BorderLayout;
-import com.gwtext.client.widgets.layout.BorderLayoutData;
-import com.gwtext.client.widgets.layout.FitLayout;
-
-public class LoginPanel implements LoginView, View {
-    private class MessagePanel extends Panel {
-        private final SimpleMessagePanel messagesPanel;
-
-        public MessagePanel() {
-            setPaddings(10);
-            setBorder(false);
-            setHeight(60);
-            messagesPanel = new SimpleMessagePanel();
-            messagesPanel.setMessage("", SiteErrorType.info, SiteErrorType.error);
-            add(messagesPanel);
-        }
-
-        public void hide() {
-            messagesPanel.hide();
-            super.hide();
-        }
-
-        public void setMessage(final String message, final SiteErrorType lastMessageType, final SiteErrorType type) {
-            messagesPanel.setMessage(message, lastMessageType, type);
-        }
-
-        public void show() {
-            messagesPanel.show();
-            super.show();
-        }
-    }
-
-    private BasicDialog dialog;
-    private final LoginPresenter presenter;
-    private LoginForm signInForm;
-    private RegisterForm registerForm;
-    private MessagePanel messagesSignInPanel;
-    private InfoDialog welcomeDialog;
-    private TabPanel centerPanel;
-    private MessagePanel messagesRegisterPanel;
-    private final I18nTranslationService i18n;
-
-    public LoginPanel(final LoginPresenter initialPresenter, final I18nTranslationService i18n) {
-        this.i18n = i18n;
-        Field.setMsgTarget("side");
-        this.presenter = initialPresenter;
-        createPanel();
-    }
-
-    public void center() {
-        dialog.center();
-    }
-
-    public String getCountry() {
-        return registerForm.getCountry();
-    }
-
-    public String getEmail() {
-        return registerForm.getEmail();
-    }
-
-    public String getLanguage() {
-        return registerForm.getLanguage();
-    }
-
-    public String getLoginPassword() {
-        return signInForm.getLoginPassword();
-    }
-
-    public String getLongName() {
-        return registerForm.getLongName();
-    }
-
-    public String getNickOrEmail() {
-        return signInForm.getNickOrEmail();
-    }
-
-    public String getRegisterPassword() {
-        return registerForm.getRegisterPassword();
-    }
-
-    public String getRegisterPasswordDup() {
-        return registerForm.getRegisterPasswordDup();
-    }
-
-    public String getShortName() {
-        return registerForm.getShortName();
-    }
-
-    public String getTimezone() {
-        return registerForm.getTimezone();
-    }
-
-    public void hide() {
-        dialog.hide();
-    }
-
-    public void hideMessages() {
-        messagesSignInPanel.hide();
-        if (messagesRegisterPanel != null) {
-            messagesRegisterPanel.hide();
-        }
-        renderDialogIfNeeded();
-    }
-
-    public boolean isRegisterFormValid() {
-        return registerForm.isValid();
-    }
-
-    public boolean isSignInFormValid() {
-        return signInForm.isValid();
-    }
-
-    public void maskProcessing() {
-        mask(i18n.t("Processing"));
-    }
-
-    public void reset() {
-        DeferredCommand.addCommand(new Command() {
-            public void execute() {
-                signInForm.reset();
-                if (registerForm != null) {
-                    registerForm.reset();
-                }
-            }
-        });
-    }
-
-    public void setRegisterMessage(final String message, final SiteErrorType type) {
-        messagesRegisterPanel.setMessage(message, type, type);
-        messagesRegisterPanel.show();
-        renderDialogIfNeeded();
-    }
-
-    public void setSignInMessage(final String message, final SiteErrorType type) {
-        messagesSignInPanel.setMessage(message, type, type);
-        messagesSignInPanel.show();
-        renderDialogIfNeeded();
-    }
-
-    public void show() {
-        centerPanel.activate(0);
-        dialog.setVisible(true);
-        dialog.show();
-        Site.hideProgress();
-        dialog.focus();
-        signInForm.focusLogin();
-    }
-
-    public void showWelcolmeDialog() {
-        if (welcomeDialog == null) {
-            welcomeDialog = new InfoDialog(i18n.t("Welcome"), i18n.t("Thanks for registering"), i18n
-                    .t("Now you can participate more actively in this site with other people and groups. "
-                            + "You can also use your personal space to publish contents. "
-                            + "Your email is not verified, please follow the instructions you will receive by email."),
-                    i18n.t("Ok"), true, true, 400, 270);
-        }
-        welcomeDialog.show();
-    }
-
-    public void unMask() {
-        dialog.enable();
-    }
-
-    private void confPanel(final Panel panel) {
-        // panel.setLayout(new FormLayout());
-        // panel.setAutoWidth(true);
-        // anel.setAutoHeight(true);
-    }
-
-    private Panel createNoAccountRegister() {
-        final Panel noAccRegisterPanel = new Panel();
-        noAccRegisterPanel.setBorder(false);
-        noAccRegisterPanel.setMargins(0, 90, 0, 0);
-        final Label dontHaveAccountLabel = new Label(i18n.t("Don't have an account?"));
-        final Label registerLabel = new Label(i18n.t("Create one."));
-        registerLabel.addClickListener(new ClickListener() {
-            public void onClick(final Widget arg0) {
-                centerPanel.activate(1);
-            }
-        });
-        registerLabel.addStyleName("kune-Margin-Medium-l");
-        registerLabel.addStyleName("kune-link");
-        noAccRegisterPanel.add(dontHaveAccountLabel);
-        noAccRegisterPanel.add(registerLabel);
-        return noAccRegisterPanel;
-    }
-
-    private void createPanel() {
-        dialog = new BasicDialog(i18n.t("Sign in"), true, false, 370, 400);
-        dialog.setLayout(new FitLayout());
-        final Panel dialogPanel = new Panel();
-        dialogPanel.setLayout(new BorderLayout());
-        // dialog.setAutoHeight(false);
-        // dialog.setAutoWidth(false);
-        // dialog.setAutoHeight(true);
-        // dialog.setAutoWidth(true);
-        dialogPanel.setHeight("100%");
-        dialogPanel.setWidth("auto");
-        // dialog.setCollapsible(false);
-
-        centerPanel = new TabPanel();
-        centerPanel.setActiveTab(0);
-        // centerPanel.setAutoWidth(true);
-        // centerPanel.setAutoHeight(true);
-        centerPanel.setClosable(false);
-
-        final Panel signInPanel = new Panel(i18n.t("Sign in"));
-        confPanel(signInPanel);
-        signInForm = new LoginForm(i18n);
-        signInPanel.add(signInForm.getForm());
-        signInPanel.add(createNoAccountRegister());
-        messagesSignInPanel = new MessagePanel();
-        signInPanel.add(messagesSignInPanel);
-
-        final Panel registerPanel = new Panel(i18n.t("Register"));
-        confPanel(registerPanel);
-
-        centerPanel.add(signInPanel);
-        centerPanel.add(registerPanel);
-        dialogPanel.add(centerPanel, new BorderLayoutData(RegionPosition.CENTER));
-        dialog.add(dialogPanel);
-
-        final Button signInBtn = new Button(i18n.t("Sign in"));
-        signInBtn.addListener(new ButtonListenerAdapter() {
-            public void onClick(final Button button, final EventObject e) {
-                signInForm.validate();
-                if (signInForm.isValid()) {
-                    presenter.doLogin();
-                }
-            }
-        });
-        dialog.addButton(signInBtn);
-
-        final Button registerBtn = new Button(i18n.t("Register"));
-        registerBtn.addListener(new ButtonListenerAdapter() {
-            public void onClick(final Button button, final EventObject e) {
-                registerForm.validate();
-                if (registerForm.isValid()) {
-                    presenter.doRegister();
-                }
-            }
-        });
-        dialog.addButton(registerBtn);
-        registerBtn.hide();
-
-        final Button cancel = new Button();
-        dialog.addButton(cancel);
-        cancel.setText(i18n.tWithNT("Cancel", "used in button"));
-        cancel.addListener(new ButtonListenerAdapter() {
-            public void onClick(final Button button, final EventObject e) {
-                presenter.onCancel();
-            }
-        });
-
-        signInPanel.addListener(new PanelListenerAdapter() {
-            public void onActivate(final Panel panel) {
-                dialog.setTitle(i18n.t("Sign in"));
-                registerBtn.hide();
-                signInBtn.show();
-            }
-        });
-
-        registerPanel.addListener(new PanelListenerAdapter() {
-            public void onActivate(final Panel panel) {
-                if (registerForm == null) {
-                    maskProcessing();
-                    registerForm = new RegisterForm(presenter, i18n);
-                    registerPanel.add(registerForm.getForm());
-                    messagesRegisterPanel = new MessagePanel();
-                    registerPanel.add(messagesRegisterPanel);
-                    messagesRegisterPanel.hide();
-                    renderDialogIfNeeded();
-                    unMask();
-                }
-                dialog.setTitle(i18n.t("Register"));
-                signInBtn.hide();
-                registerBtn.show();
-            }
-        });
-
-        dialog.addListener(new WindowListenerAdapter() {
-            public void onHide(final Component component) {
-                presenter.onClose();
-            }
-        });
-        hideMessages();
-        renderDialogIfNeeded();
-    }
-
-    private void mask(final String message) {
-        dialog.disable();
-    }
-
-    private void renderDialogIfNeeded() {
-        if (dialog.isRendered()) {
-            dialog.doLayout();
-        }
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,186 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.PlatformEvents;
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.dispatch.DefaultDispatcher;
-import org.ourproject.kune.platf.client.dto.I18nCountryDTO;
-import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
-import org.ourproject.kune.platf.client.dto.TimeZoneDTO;
-import org.ourproject.kune.platf.client.dto.UserDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.errors.EmailAddressInUseException;
-import org.ourproject.kune.platf.client.errors.GroupNameInUseException;
-import org.ourproject.kune.platf.client.errors.UserAuthException;
-import org.ourproject.kune.platf.client.rpc.ParamCallback;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
-import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-
-import com.calclab.emite.client.im.roster.RosterManager.SubscriptionMode;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class LoginPresenter implements Login {
-
-    LoginView view;
-
-    final LoginListener listener;
-
-    private final Session session;
-
-    private final I18nTranslationService i18n;
-
-    public LoginPresenter(final Session session, final LoginListener listener, final I18nTranslationService i18n) {
-        this.session = session;
-        this.listener = listener;
-        this.i18n = i18n;
-    }
-
-    public void doLogin() {
-        if (view.isSignInFormValid()) {
-            view.maskProcessing();
-
-            final String nickOrEmail = view.getNickOrEmail();
-            final String passwd = view.getLoginPassword();
-
-            final UserDTO user = new UserDTO();
-            user.setShortName(nickOrEmail);
-            user.setPassword(passwd);
-
-            final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
-                public void onFailure(final Throwable caught) {
-                    view.unMask();
-                    Site.hideProgress();
-                    try {
-                        throw caught;
-                    } catch (final UserAuthException e) {
-                        view.setSignInMessage(i18n.t("Incorrect nickname/email or password"), SiteErrorType.error);
-                    } catch (final Throwable e) {
-                        view.setSignInMessage("Error in login", SiteErrorType.error);
-                        GWT.log("Other kind of exception in LoginFormPresenter/doLogin", null);
-                        throw new RuntimeException();
-                    }
-                }
-
-                public void onSuccess(final UserInfoDTO response) {
-                    listener.userLoggedIn(response);
-                    view.unMask();
-                }
-            };
-
-            DefaultDispatcher.getInstance().fire(WorkspaceEvents.USER_LOGIN,
-                    new ParamCallback<UserDTO, UserInfoDTO>(user, callback));
-        }
-    }
-
-    public void doRegister() {
-        if (view.isRegisterFormValid()) {
-            view.maskProcessing();
-
-            final I18nLanguageDTO language = new I18nLanguageDTO();
-            language.setCode(view.getLanguage());
-
-            final I18nCountryDTO country = new I18nCountryDTO();
-            country.setCode(view.getCountry());
-
-            final TimeZoneDTO timezone = new TimeZoneDTO();
-            timezone.setId(view.getTimezone());
-
-            final UserDTO user = new UserDTO(view.getLongName(), view.getShortName(), view.getRegisterPassword(), view
-                    .getEmail(), language, country, timezone, null, true, SubscriptionMode.manual, "blue");
-            final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
-                public void onFailure(final Throwable caught) {
-                    view.unMask();
-                    try {
-                        throw caught;
-                    } catch (final EmailAddressInUseException e) {
-                        view.setRegisterMessage(i18n.t("This email in in use by other person, try with another."),
-                                SiteErrorType.error);
-                    } catch (final GroupNameInUseException e) {
-                        view.setRegisterMessage(i18n.t("This name in already in use, try with a different name."),
-                                SiteErrorType.error);
-                    } catch (final Throwable e) {
-                        view.setRegisterMessage(i18n.t("Error during registration."), SiteErrorType.error);
-                        GWT.log("Other kind of exception in user registration", null);
-                        throw new RuntimeException();
-                    }
-                }
-
-                public void onSuccess(final UserInfoDTO userInfoDTO) {
-                    listener.userLoggedIn(userInfoDTO);
-                    view.unMask();
-                    view.showWelcolmeDialog();
-                    DefaultDispatcher.getInstance().fire(PlatformEvents.GOTO, userInfoDTO.getShortName());
-                }
-            };
-            DefaultDispatcher.getInstance().fire(WorkspaceEvents.USER_REGISTER,
-                    new ParamCallback<UserDTO, UserInfoDTO>(user, callback));
-        }
-    }
-
-    public Object[][] getCountries() {
-        return session.getCountriesArray();
-    }
-
-    public I18nLanguageDTO getCurrentLanguage() {
-        return session.getCurrentLanguage();
-    }
-
-    public Object[][] getLanguages() {
-        return session.getLanguagesArray();
-    }
-
-    public Object[][] getTimezones() {
-        return session.getTimezones();
-    }
-
-    public View getView() {
-        return view;
-    }
-
-    public void init(final LoginView loginview) {
-        this.view = loginview;
-    }
-
-    public void onCancel() {
-        resetMessages();
-        reset();
-        listener.onLoginCancelled();
-    }
-
-    public void onClose() {
-        reset();
-        view.hideMessages();
-        listener.onLoginClose();
-    }
-
-    private void reset() {
-        view.reset();
-    }
-
-    private void resetMessages() {
-        view.hideMessages();
-    }
-
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,65 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
-
-public interface LoginView extends View {
-
-    public String getCountry();
-
-    public String getEmail();
-
-    public String getLanguage();
-
-    public String getLoginPassword();
-
-    public String getLongName();
-
-    public String getNickOrEmail();
-
-    public String getRegisterPassword();
-
-    public String getRegisterPasswordDup();
-
-    public String getShortName();
-
-    public String getTimezone();
-
-    public void hideMessages();
-
-    public boolean isRegisterFormValid();
-
-    public boolean isSignInFormValid();
-
-    public void maskProcessing();
-
-    public void reset();
-
-    public void showWelcolmeDialog();
-
-    public void unMask();
-
-    void setRegisterMessage(String message, SiteErrorType type);
-
-    void setSignInMessage(String message, SiteErrorType type);
-
-}

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/RegisterForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/RegisterForm.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/RegisterForm.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,7 +1,7 @@
 package org.ourproject.kune.workspace.client.sitebar.login;
 
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
 import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
 
 import com.gwtext.client.data.SimpleStore;
 import com.gwtext.client.data.Store;
@@ -33,172 +33,172 @@
     private final ComboBox countryCombo;
     private final ComboBox timezoneCombo;
 
-    public RegisterForm(final LoginPresenter presenter, final I18nTranslationService i18n) {
-        shortNameRegField = new TextField();
-        shortNameRegField.setFieldLabel(i18n.t("Nickname"));
-        shortNameRegField.setName(NICK_FIELD);
-        shortNameRegField.setWidth(DEF_FIELD_WIDTH);
-        shortNameRegField.setAllowBlank(false);
-        shortNameRegField.setMinLength(3);
-        shortNameRegField.setMaxLength(15);
-        shortNameRegField.setRegex("^[a-z0-9_\\-]+$");
-        shortNameRegField.setMinLengthText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
-        shortNameRegField.setMaxLengthText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
-        shortNameRegField.setRegexText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
-        shortNameRegField.setValidationEvent(false);
-        add(shortNameRegField);
+    public RegisterForm(final SignInPresenter presenter, final I18nUITranslationService i18n) {
+	shortNameRegField = new TextField();
+	shortNameRegField.setFieldLabel(i18n.t("Nickname"));
+	shortNameRegField.setName(NICK_FIELD);
+	shortNameRegField.setWidth(DEF_FIELD_WIDTH);
+	shortNameRegField.setAllowBlank(false);
+	shortNameRegField.setMinLength(3);
+	shortNameRegField.setMaxLength(15);
+	shortNameRegField.setRegex("^[a-z0-9_\\-]+$");
+	shortNameRegField.setMinLengthText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
+	shortNameRegField.setMaxLengthText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
+	shortNameRegField.setRegexText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
+	shortNameRegField.setValidationEvent(false);
+	add(shortNameRegField);
 
-        longNameRegField = new TextField();
-        longNameRegField.setFieldLabel(i18n.t("Full Name"));
-        longNameRegField.setName(LONGNAME_FIELD);
-        longNameRegField.setWidth(DEF_FIELD_WIDTH);
-        longNameRegField.setAllowBlank(false);
-        longNameRegField.setMinLength(3);
-        longNameRegField.setMaxLength(50);
-        longNameRegField.setValidationEvent(false);
-        add(longNameRegField);
+	longNameRegField = new TextField();
+	longNameRegField.setFieldLabel(i18n.t("Full Name"));
+	longNameRegField.setName(LONGNAME_FIELD);
+	longNameRegField.setWidth(DEF_FIELD_WIDTH);
+	longNameRegField.setAllowBlank(false);
+	longNameRegField.setMinLength(3);
+	longNameRegField.setMaxLength(50);
+	longNameRegField.setValidationEvent(false);
+	add(longNameRegField);
 
-        passwdRegField = new TextField();
-        passwdRegField.setFieldLabel(i18n.t("Password"));
-        passwdRegField.setName(PASSWORD_FIELD);
-        passwdRegField.setPassword(true);
-        passwdRegField.setAllowBlank(false);
-        passwdRegField.setMaxLength(40);
-        passwdRegField.setWidth(DEF_FIELD_WIDTH);
-        passwdRegField.setValidationEvent(false);
-        add(passwdRegField);
+	passwdRegField = new TextField();
+	passwdRegField.setFieldLabel(i18n.t("Password"));
+	passwdRegField.setName(PASSWORD_FIELD);
+	passwdRegField.setPassword(true);
+	passwdRegField.setAllowBlank(false);
+	passwdRegField.setMaxLength(40);
+	passwdRegField.setWidth(DEF_FIELD_WIDTH);
+	passwdRegField.setValidationEvent(false);
+	add(passwdRegField);
 
-        passwdRegFieldDup = new TextField();
-        passwdRegFieldDup.setFieldLabel(i18n.t("Retype password"));
-        passwdRegFieldDup.setName(PASSWORD_FIELD_DUP);
-        passwdRegFieldDup.setPassword(true);
-        passwdRegFieldDup.setAllowBlank(false);
-        passwdRegFieldDup.setMinLength(6);
-        passwdRegFieldDup.setMaxLength(40);
-        passwdRegFieldDup.setWidth(DEF_FIELD_WIDTH);
-        passwdRegFieldDup.setInvalidText(i18n.t("Passwords do not match"));
-        passwdRegFieldDup.setValidator(new Validator() {
-            public boolean validate(final String value) throws ValidationException {
-                return passwdRegField.getValueAsString().equals(passwdRegFieldDup.getValueAsString());
-            }
-        });
-        passwdRegFieldDup.setValidationEvent(false);
-        add(passwdRegFieldDup);
+	passwdRegFieldDup = new TextField();
+	passwdRegFieldDup.setFieldLabel(i18n.t("Retype password"));
+	passwdRegFieldDup.setName(PASSWORD_FIELD_DUP);
+	passwdRegFieldDup.setPassword(true);
+	passwdRegFieldDup.setAllowBlank(false);
+	passwdRegFieldDup.setMinLength(6);
+	passwdRegFieldDup.setMaxLength(40);
+	passwdRegFieldDup.setWidth(DEF_FIELD_WIDTH);
+	passwdRegFieldDup.setInvalidText(i18n.t("Passwords do not match"));
+	passwdRegFieldDup.setValidator(new Validator() {
+	    public boolean validate(final String value) throws ValidationException {
+		return passwdRegField.getValueAsString().equals(passwdRegFieldDup.getValueAsString());
+	    }
+	});
+	passwdRegFieldDup.setValidationEvent(false);
+	add(passwdRegFieldDup);
 
-        emailRegField = new TextField();
-        emailRegField.setFieldLabel(i18n.t("Email"));
-        emailRegField.setName(EMAIL_FIELD);
-        emailRegField.setVtype(VType.EMAIL);
-        emailRegField.setWidth(DEF_FIELD_WIDTH);
-        emailRegField.setAllowBlank(false);
-        emailRegField.setValidationEvent(false);
+	emailRegField = new TextField();
+	emailRegField.setFieldLabel(i18n.t("Email"));
+	emailRegField.setName(EMAIL_FIELD);
+	emailRegField.setVtype(VType.EMAIL);
+	emailRegField.setWidth(DEF_FIELD_WIDTH);
+	emailRegField.setAllowBlank(false);
+	emailRegField.setValidationEvent(false);
 
-        add(emailRegField);
+	add(emailRegField);
 
-        final Store langStore = new SimpleStore(new String[] { "abbr", "language" }, presenter.getLanguages());
-        langStore.load();
+	final Store langStore = new SimpleStore(new String[] { "abbr", "language" }, presenter.getLanguages());
+	langStore.load();
 
-        languageCombo = new ComboBox();
-        languageCombo.setName(LANG_FIELD);
-        languageCombo.setMinChars(1);
-        languageCombo.setFieldLabel(i18n.t("Language"));
-        languageCombo.setStore(langStore);
-        languageCombo.setDisplayField("language");
-        languageCombo.setMode(ComboBox.LOCAL);
-        languageCombo.setTriggerAction(ComboBox.ALL);
-        languageCombo.setEmptyText(i18n.t("Enter language"));
-        languageCombo.setLoadingText(i18n.t("Searching..."));
-        languageCombo.setTypeAhead(true);
-        languageCombo.setTypeAheadDelay(1000);
-        languageCombo.setSelectOnFocus(false);
-        languageCombo.setWidth(186);
-        languageCombo.setAllowBlank(false);
-        languageCombo.setValueField("abbr");
-        languageCombo.setValue(presenter.getCurrentLanguage().getCode());
-        languageCombo.setPageSize(7);
-        languageCombo.setForceSelection(true);
-        languageCombo.setValidationEvent(false);
-        add(languageCombo);
+	languageCombo = new ComboBox();
+	languageCombo.setName(LANG_FIELD);
+	languageCombo.setMinChars(1);
+	languageCombo.setFieldLabel(i18n.t("Language"));
+	languageCombo.setStore(langStore);
+	languageCombo.setDisplayField("language");
+	languageCombo.setMode(ComboBox.LOCAL);
+	languageCombo.setTriggerAction(ComboBox.ALL);
+	languageCombo.setEmptyText(i18n.t("Enter language"));
+	languageCombo.setLoadingText(i18n.t("Searching..."));
+	languageCombo.setTypeAhead(true);
+	languageCombo.setTypeAheadDelay(1000);
+	languageCombo.setSelectOnFocus(false);
+	languageCombo.setWidth(186);
+	languageCombo.setAllowBlank(false);
+	languageCombo.setValueField("abbr");
+	languageCombo.setValue(presenter.getCurrentLanguage().getCode());
+	languageCombo.setPageSize(7);
+	languageCombo.setForceSelection(true);
+	languageCombo.setValidationEvent(false);
+	add(languageCombo);
 
-        final Store countryStore = new SimpleStore(new String[] { "abbr", "country" }, presenter.getCountries());
-        countryStore.load();
+	final Store countryStore = new SimpleStore(new String[] { "abbr", "country" }, presenter.getCountries());
+	countryStore.load();
 
-        countryCombo = new ComboBox();
-        countryCombo.setName(COUNTRY_FIELD);
-        countryCombo.setMinChars(1);
-        countryCombo.setFieldLabel(i18n.t("Country"));
-        countryCombo.setStore(countryStore);
-        countryCombo.setDisplayField("country");
-        countryCombo.setMode(ComboBox.LOCAL);
-        countryCombo.setTriggerAction(ComboBox.ALL);
-        countryCombo.setEmptyText(i18n.t("Enter your country"));
-        countryCombo.setLoadingText(i18n.t("Searching..."));
-        countryCombo.setTypeAhead(true);
-        countryCombo.setTypeAheadDelay(1000);
-        countryCombo.setSelectOnFocus(false);
-        countryCombo.setWidth(186);
-        countryCombo.setAllowBlank(false);
-        countryCombo.setValueField("abbr");
-        countryCombo.setPageSize(7);
-        countryCombo.setForceSelection(true);
-        countryCombo.setValidationEvent(false);
-        add(countryCombo);
+	countryCombo = new ComboBox();
+	countryCombo.setName(COUNTRY_FIELD);
+	countryCombo.setMinChars(1);
+	countryCombo.setFieldLabel(i18n.t("Country"));
+	countryCombo.setStore(countryStore);
+	countryCombo.setDisplayField("country");
+	countryCombo.setMode(ComboBox.LOCAL);
+	countryCombo.setTriggerAction(ComboBox.ALL);
+	countryCombo.setEmptyText(i18n.t("Enter your country"));
+	countryCombo.setLoadingText(i18n.t("Searching..."));
+	countryCombo.setTypeAhead(true);
+	countryCombo.setTypeAheadDelay(1000);
+	countryCombo.setSelectOnFocus(false);
+	countryCombo.setWidth(186);
+	countryCombo.setAllowBlank(false);
+	countryCombo.setValueField("abbr");
+	countryCombo.setPageSize(7);
+	countryCombo.setForceSelection(true);
+	countryCombo.setValidationEvent(false);
+	add(countryCombo);
 
-        final Store timezoneStore = new SimpleStore(new String[] { "id" }, presenter.getTimezones());
-        timezoneStore.load();
+	final Store timezoneStore = new SimpleStore(new String[] { "id" }, presenter.getTimezones());
+	timezoneStore.load();
 
-        timezoneCombo = new ComboBox();
-        timezoneCombo.setName(TIMEZONE_FIELD);
-        timezoneCombo.setMinChars(1);
-        timezoneCombo.setFieldLabel(i18n.t("Timezone"));
-        timezoneCombo.setStore(timezoneStore);
-        timezoneCombo.setDisplayField("id");
-        timezoneCombo.setMode(ComboBox.LOCAL);
-        timezoneCombo.setTriggerAction(ComboBox.ALL);
-        timezoneCombo.setEmptyText(i18n.t("Enter your timezone"));
-        timezoneCombo.setLoadingText(i18n.t("Searching..."));
-        timezoneCombo.setTypeAhead(true);
-        timezoneCombo.setTypeAheadDelay(1000);
-        timezoneCombo.setSelectOnFocus(false);
-        timezoneCombo.setWidth(186);
-        timezoneCombo.setAllowBlank(false);
-        timezoneCombo.setValueField("id");
-        timezoneCombo.setPageSize(7);
-        timezoneCombo.setForceSelection(true);
-        timezoneCombo.setValidationEvent(false);
-        add(timezoneCombo);
+	timezoneCombo = new ComboBox();
+	timezoneCombo.setName(TIMEZONE_FIELD);
+	timezoneCombo.setMinChars(1);
+	timezoneCombo.setFieldLabel(i18n.t("Timezone"));
+	timezoneCombo.setStore(timezoneStore);
+	timezoneCombo.setDisplayField("id");
+	timezoneCombo.setMode(ComboBox.LOCAL);
+	timezoneCombo.setTriggerAction(ComboBox.ALL);
+	timezoneCombo.setEmptyText(i18n.t("Enter your timezone"));
+	timezoneCombo.setLoadingText(i18n.t("Searching..."));
+	timezoneCombo.setTypeAhead(true);
+	timezoneCombo.setTypeAheadDelay(1000);
+	timezoneCombo.setSelectOnFocus(false);
+	timezoneCombo.setWidth(186);
+	timezoneCombo.setAllowBlank(false);
+	timezoneCombo.setValueField("id");
+	timezoneCombo.setPageSize(7);
+	timezoneCombo.setForceSelection(true);
+	timezoneCombo.setValidationEvent(false);
+	add(timezoneCombo);
     }
 
     public String getCountry() {
-        return countryCombo.getValueAsString();
+	return countryCombo.getValueAsString();
     }
 
     public String getEmail() {
-        return emailRegField.getValueAsString();
+	return emailRegField.getValueAsString();
     }
 
     public String getLanguage() {
-        return languageCombo.getValueAsString();
+	return languageCombo.getValueAsString();
     }
 
     public String getLongName() {
-        return longNameRegField.getValueAsString();
+	return longNameRegField.getValueAsString();
     }
 
     public String getRegisterPassword() {
-        return passwdRegField.getValueAsString();
+	return passwdRegField.getValueAsString();
     }
 
     public String getRegisterPasswordDup() {
-        return passwdRegFieldDup.getValueAsString();
+	return passwdRegFieldDup.getValueAsString();
     }
 
     public String getShortName() {
-        return shortNameRegField.getValueAsString();
+	return shortNameRegField.getValueAsString();
     }
 
     public String getTimezone() {
-        return timezoneCombo.getValueAsString();
+	return timezoneCombo.getValueAsString();
     }
 
 }

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignIn.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java	2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignIn.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,28 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import org.ourproject.kune.platf.client.dto.StateToken;
+
+public interface SignIn {
+
+    void doSignIn(StateToken previousStateToken);
+
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInForm.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java	2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInForm.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,46 @@
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
+
+import com.gwtext.client.widgets.form.TextField;
+
+public class SignInForm extends DefaultForm {
+    private static final String NICKOREMAIL_FIELD = "nickOrEmail";
+    private static final String PASSWORD_FIELD = "password";
+
+    private final TextField loginNickOrEmailField;
+    private final TextField loginPassField;
+
+    public SignInForm(final I18nTranslationService i18n) {
+	loginNickOrEmailField = new TextField();
+	loginNickOrEmailField.setFieldLabel(i18n.t("Nickname or email"));
+	loginNickOrEmailField.setName(NICKOREMAIL_FIELD);
+	loginNickOrEmailField.setWidth(DEF_FIELD_WIDTH);
+	loginNickOrEmailField.setAllowBlank(false);
+	loginNickOrEmailField.setValidationEvent(false);
+	super.add(loginNickOrEmailField);
+
+	loginPassField = new TextField();
+	loginPassField.setFieldLabel(i18n.t("Password"));
+	loginPassField.setName(PASSWORD_FIELD);
+	loginPassField.setWidth(DEF_FIELD_WIDTH);
+	loginPassField.setPassword(true);
+	loginPassField.setAllowBlank(false);
+	loginPassField.setValidationEvent(false);
+	super.add(loginPassField);
+    }
+
+    public void focusLogin() {
+	loginNickOrEmailField.focus();
+    }
+
+    public String getLoginPassword() {
+	return loginPassField.getValueAsString();
+    }
+
+    public String getNickOrEmail() {
+	return loginNickOrEmailField.getValueAsString();
+    }
+
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java	2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,344 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import org.ourproject.kune.platf.client.ui.dialogs.BasicDialog;
+import org.ourproject.kune.platf.client.ui.dialogs.InfoDialog;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.sitebar.msg.SimpleMessagePanel;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.RegionPosition;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.Component;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.TabPanel;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.event.PanelListenerAdapter;
+import com.gwtext.client.widgets.event.WindowListenerAdapter;
+import com.gwtext.client.widgets.form.Field;
+import com.gwtext.client.widgets.layout.BorderLayout;
+import com.gwtext.client.widgets.layout.BorderLayoutData;
+import com.gwtext.client.widgets.layout.FitLayout;
+
+public class SignInPanel implements SignInView {
+    private class MessagePanel extends Panel {
+	private final SimpleMessagePanel messagesPanel;
+
+	public MessagePanel() {
+	    setPaddings(10);
+	    setBorder(false);
+	    setHeight(60);
+	    messagesPanel = new SimpleMessagePanel();
+	    messagesPanel.setMessage("", SiteErrorType.info, SiteErrorType.error);
+	    add(messagesPanel);
+	}
+
+	public void hide() {
+	    messagesPanel.hide();
+	    super.hide();
+	}
+
+	public void setMessage(final String message, final SiteErrorType lastMessageType, final SiteErrorType type) {
+	    messagesPanel.setMessage(message, lastMessageType, type);
+	}
+
+	public void show() {
+	    messagesPanel.show();
+	    super.show();
+	}
+    }
+
+    private BasicDialog dialog;
+    private final SignInPresenter presenter;
+    private SignInForm signInForm;
+    private RegisterForm registerForm;
+    private MessagePanel messagesSignInPanel;
+    private InfoDialog welcomeDialog;
+    private TabPanel centerPanel;
+    private MessagePanel messagesRegisterPanel;
+    private final I18nUITranslationService i18n;
+
+    public SignInPanel(final SignInPresenter presenter, final I18nUITranslationService i18n, final WorkspaceSkeleton ws) {
+	this.i18n = i18n;
+	Field.setMsgTarget("side");
+	this.presenter = presenter;
+	createPanel();
+    }
+
+    public void center() {
+	dialog.center();
+    }
+
+    public String getCountry() {
+	return registerForm.getCountry();
+    }
+
+    public String getEmail() {
+	return registerForm.getEmail();
+    }
+
+    public String getLanguage() {
+	return registerForm.getLanguage();
+    }
+
+    public String getLoginPassword() {
+	return signInForm.getLoginPassword();
+    }
+
+    public String getLongName() {
+	return registerForm.getLongName();
+    }
+
+    public String getNickOrEmail() {
+	return signInForm.getNickOrEmail();
+    }
+
+    public String getRegisterPassword() {
+	return registerForm.getRegisterPassword();
+    }
+
+    public String getRegisterPasswordDup() {
+	return registerForm.getRegisterPasswordDup();
+    }
+
+    public String getShortName() {
+	return registerForm.getShortName();
+    }
+
+    public String getTimezone() {
+	return registerForm.getTimezone();
+    }
+
+    public void hide() {
+	dialog.hide();
+    }
+
+    public void hideMessages() {
+	messagesSignInPanel.hide();
+	if (messagesRegisterPanel != null) {
+	    messagesRegisterPanel.hide();
+	}
+	renderDialogIfNeeded();
+    }
+
+    public boolean isRegisterFormValid() {
+	return registerForm.isValid();
+    }
+
+    public boolean isSignInFormValid() {
+	return signInForm.isValid();
+    }
+
+    public void mask(final String message) {
+	dialog.getEl().mask(message, "x-mask-loading");
+    }
+
+    public void maskProcessing() {
+	mask(i18n.t("Processing"));
+    }
+
+    public void reset() {
+	DeferredCommand.addCommand(new Command() {
+	    public void execute() {
+		signInForm.reset();
+		if (registerForm != null) {
+		    registerForm.reset();
+		}
+	    }
+	});
+    }
+
+    public void setRegisterMessage(final String message, final SiteErrorType type) {
+	messagesRegisterPanel.setMessage(message, type, type);
+	messagesRegisterPanel.show();
+	renderDialogIfNeeded();
+    }
+
+    public void setSignInMessage(final String message, final SiteErrorType type) {
+	messagesSignInPanel.setMessage(message, type, type);
+	messagesSignInPanel.show();
+	renderDialogIfNeeded();
+    }
+
+    public void show() {
+	centerPanel.activate(0);
+	dialog.setVisible(true);
+	dialog.show();
+	Site.hideProgress();
+	dialog.focus();
+	signInForm.focusLogin();
+    }
+
+    public void showWelcolmeDialog() {
+	if (welcomeDialog == null) {
+	    welcomeDialog = new InfoDialog(i18n.t("Welcome"), i18n.t("Thanks for registering"), i18n
+		    .t("Now you can participate more actively in this site with other people and groups. "
+			    + "You can also use your personal space to publish contents. "
+			    + "Your email is not verified, please follow the instructions you will receive by email."),
+		    i18n.t("Ok"), true, true, 400, 270);
+	}
+	welcomeDialog.show();
+    }
+
+    public void unMask() {
+	dialog.getEl().unmask();
+    }
+
+    private void confPanel(final Panel panel) {
+	// panel.setLayout(new FormLayout());
+	// panel.setAutoWidth(true);
+	// anel.setAutoHeight(true);
+    }
+
+    private Panel createNoAccountRegister() {
+	final Panel noAccRegisterPanel = new Panel();
+	noAccRegisterPanel.setBorder(false);
+	noAccRegisterPanel.setMargins(0, 90, 0, 0);
+	final Label dontHaveAccountLabel = new Label(i18n.t("Don't have an account?"));
+	final Label registerLabel = new Label(i18n.t("Create one."));
+	registerLabel.addClickListener(new ClickListener() {
+	    public void onClick(final Widget arg0) {
+		centerPanel.activate(1);
+	    }
+	});
+	registerLabel.addStyleName("kune-Margin-Medium-l");
+	registerLabel.addStyleName("kune-link");
+	noAccRegisterPanel.add(dontHaveAccountLabel);
+	noAccRegisterPanel.add(registerLabel);
+	return noAccRegisterPanel;
+    }
+
+    private void createPanel() {
+	dialog = new BasicDialog(i18n.t("Sign in"), true, false, 370, 400);
+	dialog.setLayout(new FitLayout());
+	final Panel dialogPanel = new Panel();
+	dialogPanel.setLayout(new BorderLayout());
+	// dialog.setAutoHeight(false);
+	// dialog.setAutoWidth(false);
+	// dialog.setAutoHeight(true);
+	// dialog.setAutoWidth(true);
+	dialogPanel.setHeight("100%");
+	dialogPanel.setWidth("auto");
+	// dialog.setCollapsible(false);
+
+	centerPanel = new TabPanel();
+	centerPanel.setActiveTab(0);
+	// centerPanel.setAutoWidth(true);
+	// centerPanel.setAutoHeight(true);
+	centerPanel.setClosable(false);
+
+	final Panel signInPanel = new Panel(i18n.t("Sign in"));
+	confPanel(signInPanel);
+	signInForm = new SignInForm(i18n);
+	signInPanel.add(signInForm.getForm());
+	signInPanel.add(createNoAccountRegister());
+	messagesSignInPanel = new MessagePanel();
+	signInPanel.add(messagesSignInPanel);
+
+	final Panel registerPanel = new Panel(i18n.t("Register"));
+	confPanel(registerPanel);
+
+	centerPanel.add(signInPanel);
+	centerPanel.add(registerPanel);
+	dialogPanel.add(centerPanel, new BorderLayoutData(RegionPosition.CENTER));
+	dialog.add(dialogPanel);
+
+	final Button signInBtn = new Button(i18n.t("Sign in"));
+	signInBtn.addListener(new ButtonListenerAdapter() {
+	    public void onClick(final Button button, final EventObject e) {
+		signInForm.validate();
+		if (signInForm.isValid()) {
+		    presenter.onFormSignIn();
+		}
+	    }
+	});
+	dialog.addButton(signInBtn);
+
+	final Button registerBtn = new Button(i18n.t("Register"));
+	registerBtn.addListener(new ButtonListenerAdapter() {
+	    public void onClick(final Button button, final EventObject e) {
+		registerForm.validate();
+		if (registerForm.isValid()) {
+		    presenter.onFormRegister();
+		}
+	    }
+	});
+	dialog.addButton(registerBtn);
+	registerBtn.hide();
+
+	final Button cancel = new Button();
+	dialog.addButton(cancel);
+	cancel.setText(i18n.tWithNT("Cancel", "used in button"));
+	cancel.addListener(new ButtonListenerAdapter() {
+	    public void onClick(final Button button, final EventObject e) {
+		presenter.onCancel();
+	    }
+	});
+
+	signInPanel.addListener(new PanelListenerAdapter() {
+	    public void onActivate(final Panel panel) {
+		dialog.setTitle(i18n.t("Sign in"));
+		registerBtn.hide();
+		signInBtn.show();
+	    }
+	});
+
+	registerPanel.addListener(new PanelListenerAdapter() {
+	    public void onActivate(final Panel panel) {
+		if (registerForm == null) {
+		    maskProcessing();
+		    registerForm = new RegisterForm(presenter, i18n);
+		    registerPanel.add(registerForm.getForm());
+		    messagesRegisterPanel = new MessagePanel();
+		    registerPanel.add(messagesRegisterPanel);
+		    messagesRegisterPanel.hide();
+		    renderDialogIfNeeded();
+		    unMask();
+		}
+		dialog.setTitle(i18n.t("Register"));
+		signInBtn.hide();
+		registerBtn.show();
+	    }
+	});
+
+	dialog.addListener(new WindowListenerAdapter() {
+	    public void onHide(final Component component) {
+		presenter.onClose();
+	    }
+	});
+	hideMessages();
+	renderDialogIfNeeded();
+    }
+
+    private void renderDialogIfNeeded() {
+	if (dialog.isRendered()) {
+	    dialog.doLayout();
+	}
+    }
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java	2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,218 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import java.util.Date;
+
+import org.ourproject.kune.platf.client.dto.I18nCountryDTO;
+import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.TimeZoneDTO;
+import org.ourproject.kune.platf.client.dto.UserDTO;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.errors.EmailAddressInUseException;
+import org.ourproject.kune.platf.client.errors.GroupNameInUseException;
+import org.ourproject.kune.platf.client.errors.UserAuthException;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
+
+import com.calclab.emite.client.im.roster.RosterManager.SubscriptionMode;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Cookies;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+public class SignInPresenter implements SignIn {
+
+    SignInView view;
+    private final Session session;
+    private final I18nUITranslationService i18n;
+    private final UserServiceAsync userService;
+    private final StateManager stateManager;
+    private StateToken previousStateToken;
+
+    public SignInPresenter(final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
+	    final UserServiceAsync userService) {
+	this.session = session;
+	this.stateManager = stateManager;
+	this.userService = userService;
+	this.i18n = i18n;
+    }
+
+    public void doSignIn(final StateToken previousStateToken) {
+	this.previousStateToken = previousStateToken;
+	if (!session.isLogged()) {
+	    Site.showProgressProcessing();
+	    view.show();
+	    view.center();
+	    Site.hideProgress();
+	} else {
+	    stateManager.setState(previousStateToken);
+	}
+    }
+
+    public Object[][] getCountries() {
+	return session.getCountriesArray();
+    }
+
+    public I18nLanguageDTO getCurrentLanguage() {
+	return session.getCurrentLanguage();
+    }
+
+    public Object[][] getLanguages() {
+	return session.getLanguagesArray();
+    }
+
+    public Object[][] getTimezones() {
+	return session.getTimezones();
+    }
+
+    public void init(final SignInView loginview) {
+	this.view = loginview;
+    }
+
+    public void onCancel() {
+	resetMessages();
+	reset();
+	view.hide();
+	stateManager.setState(previousStateToken);
+    }
+
+    public void onClose() {
+	reset();
+	view.hideMessages();
+	if (!session.isLogged()) {
+	    stateManager.setState(previousStateToken);
+	}
+    }
+
+    public void onFormRegister() {
+	if (view.isRegisterFormValid()) {
+	    view.maskProcessing();
+
+	    final I18nLanguageDTO language = new I18nLanguageDTO();
+	    language.setCode(view.getLanguage());
+
+	    final I18nCountryDTO country = new I18nCountryDTO();
+	    country.setCode(view.getCountry());
+
+	    final TimeZoneDTO timezone = new TimeZoneDTO();
+	    timezone.setId(view.getTimezone());
+
+	    final UserDTO user = new UserDTO(view.getLongName(), view.getShortName(), view.getRegisterPassword(), view
+		    .getEmail(), language, country, timezone, null, true, SubscriptionMode.manual, "blue");
+	    final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
+		public void onFailure(final Throwable caught) {
+		    view.unMask();
+		    try {
+			throw caught;
+		    } catch (final EmailAddressInUseException e) {
+			view.setRegisterMessage(i18n.t("This email in in use by other person, try with another."),
+				SiteErrorType.error);
+		    } catch (final GroupNameInUseException e) {
+			view.setRegisterMessage(i18n.t("This name in already in use, try with a different name."),
+				SiteErrorType.error);
+		    } catch (final Throwable e) {
+			view.setRegisterMessage(i18n.t("Error during registration."), SiteErrorType.error);
+			GWT.log("Other kind of exception in user registration" + e.getMessage() + ", "
+				+ e.getLocalizedMessage(), null);
+			e.printStackTrace();
+			throw new RuntimeException();
+		    }
+		}
+
+		public void onSuccess(final UserInfoDTO userInfoDTO) {
+		    stateManager.gotoToken(userInfoDTO.getHomePage());
+		    onSignIn(userInfoDTO);
+		    view.hide();
+		    view.unMask();
+		    view.showWelcolmeDialog();
+		}
+	    };
+	    userService.createUser(user, callback);
+	}
+    }
+
+    protected void onFormSignIn() {
+	if (view.isSignInFormValid()) {
+	    view.maskProcessing();
+
+	    final String nickOrEmail = view.getNickOrEmail();
+	    final String passwd = view.getLoginPassword();
+
+	    final UserDTO user = new UserDTO();
+	    user.setShortName(nickOrEmail);
+	    user.setPassword(passwd);
+
+	    final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
+		public void onFailure(final Throwable caught) {
+		    view.unMask();
+		    Site.hideProgress();
+		    try {
+			throw caught;
+		    } catch (final UserAuthException e) {
+			view.setSignInMessage(i18n.t("Incorrect nickname/email or password"), SiteErrorType.error);
+		    } catch (final Throwable e) {
+			view.setSignInMessage("Error in login", SiteErrorType.error);
+			GWT.log("Other kind of exception in LoginFormPresenter/doLogin", null);
+			throw new RuntimeException();
+		    }
+		}
+
+		public void onSuccess(final UserInfoDTO userInfoDTO) {
+		    stateManager.setState(previousStateToken);
+		    onSignIn(userInfoDTO);
+		    view.hide();
+		    view.unMask();
+		}
+	    };
+	    userService.login(user.getShortName(), user.getPassword(), callback);
+	}
+    }
+
+    private void onSignIn(final UserInfoDTO userInfoDTO) {
+	setCookie(userInfoDTO);
+	session.setUserHash(userInfoDTO.getUserHash());
+	session.setCurrentUserInfo(userInfoDTO);
+	final I18nLanguageDTO language = userInfoDTO.getLanguage();
+	i18n.changeCurrentLanguage(language.getCode());
+	session.setCurrentLanguage(language);
+    }
+
+    private void reset() {
+	view.reset();
+    }
+
+    private void resetMessages() {
+	view.hideMessages();
+    }
+
+    private void setCookie(final UserInfoDTO userInfoDTO) {
+	// http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
+	final String sessionId = userInfoDTO.getUserHash();
+	final long duration = Session.SESSION_DURATION;
+	final Date expires = new Date(System.currentTimeMillis() + duration);
+	Cookies.setCookie(Site.USERHASH, sessionId, expires, null, "/", false);
+    }
+
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java	2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,71 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
+
+public interface SignInView extends View {
+
+    public void center();
+
+    public String getCountry();
+
+    public String getEmail();
+
+    public String getLanguage();
+
+    public String getLoginPassword();
+
+    public String getLongName();
+
+    public String getNickOrEmail();
+
+    public String getRegisterPassword();
+
+    public String getRegisterPasswordDup();
+
+    public String getShortName();
+
+    public String getTimezone();
+
+    public void hide();
+
+    public void hideMessages();
+
+    public boolean isRegisterFormValid();
+
+    public boolean isSignInFormValid();
+
+    public void maskProcessing();
+
+    public void reset();
+
+    public void show();
+
+    public void showWelcolmeDialog();
+
+    public void unMask();
+
+    void setRegisterMessage(String message, SiteErrorType type);
+
+    void setSignInMessage(String message, SiteErrorType type);
+
+}

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/msg/SiteMessagePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/msg/SiteMessagePanel.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/msg/SiteMessagePanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -79,8 +79,9 @@
 		adjustWidth(width);
 	    }
 	});
+	super.reset();
+	super.show();
 	extElem.setVisible(false, false);
-	hide();
 	RootPanel.get().add(this, calculateX(clientWidth), calculateY());
     }
 
@@ -96,9 +97,7 @@
     }
 
     public void show() {
-	if (!extElem.isVisible()) {
-	    extElem.show(true);
-	}
+	extElem.show(false);
 	// super.show();
 	timer.schedule(TIMEVISIBLE);
     }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanelNew.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanelNew.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanelNew.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -12,7 +12,6 @@
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 import org.ourproject.kune.workspace.client.ui.newtmp.themes.WsTheme;
 
-import com.allen_sauer.gwt.log.client.Log;
 import com.gwtext.client.core.EventObject;
 import com.gwtext.client.widgets.BoxComponent;
 import com.gwtext.client.widgets.Button;
@@ -35,7 +34,7 @@
 	super.setHeaderText(i18n.t("Group members"));
 	super.setHeaderTitle(i18n.t("People and groups collaborating in this group"));
 	super.setBorderStylePrimaryName("k-dropdownouter-members");
-	super.addStyleName("kune-Margin-Medium-tl");
+	super.addStyleName("kune-Margin-Medium-t");
 	gridMenuPanel = new GridMenuPanel<GroupDTO>(i18n.t("This is an orphaned project, if you are interested "
 		+ "please request to join to work on it"), true, true, false, true, false);
 	final EntitySummary entitySummary = ws.getEntitySummary();
@@ -105,7 +104,6 @@
     }
 
     public void setVisible(final boolean visible) {
-	Log.debug("Set visible: " + visible + " in GroupMembers");
 	super.setVisible(visible);
     }
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ui/ParticipationSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ui/ParticipationSummaryPanel.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ui/ParticipationSummaryPanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -42,7 +42,7 @@
 	super.setHeaderText(i18n.t("Participates as..."));
 	super.setHeaderTitle(i18n.t("Groups in which participates"));
 	super.setBorderStylePrimaryName("k-dropdownouter-part");
-	super.addStyleName("kune-Margin-Medium-tl");
+	super.addStyleName("kune-Margin-Medium-t");
 	gridMenuPanel = new GridMenuPanel<GroupDTO>(i18n.t("This user is not member of any group"), true, false, false,
 		false, false);
 	final EntitySummary entitySummary = ws.getEntitySummary();

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -56,7 +56,7 @@
 	vp.setCellWidth(flowPanel, "100%");
 	super.setContent(vp);
 	super.setBorderStylePrimaryName("k-dropdownouter-tags");
-	addStyleName("kune-Margin-Medium-tl");
+	addStyleName("kune-Margin-Medium-t");
 	flowPanel.addStyleName("kune-Margin-Small-trbl");
 	ws.getEntitySummary().addInSummary(this);
     }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPanel.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,5 +1,7 @@
 package org.ourproject.kune.workspace.client.ui.newtmp.sitebar.sitesign;
 
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.sitebar.SiteToken;
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
 import com.google.gwt.user.client.ui.Hyperlink;
@@ -9,8 +11,26 @@
     private final ToolbarButton loggedUserMenu;
     private final Hyperlink signInHyperlink;
 
-    public SiteSignInLinkPanel(final SiteSignInLinkPresenter presenter, final WorkspaceSkeleton ws) {
+    public SiteSignInLinkPanel(final SiteSignInLinkPresenter presenter, final I18nUITranslationService i18n,
+	    final WorkspaceSkeleton ws) {
 	signInHyperlink = new Hyperlink();
-	loggedUserMenu = new ToolbarButton();
+	signInHyperlink.setText(i18n.t("Sign in to collaborate"));
+	signInHyperlink.setTargetHistoryToken(SiteToken.signin.toString());
+	loggedUserMenu = new ToolbarButton("user");
+	ws.getSiteBar().add(signInHyperlink);
+	// ws.getSiteBar().add(loggedUserMenu);
     }
+
+    public void setLoggedUserMenuVisible(final boolean visible) {
+	loggedUserMenu.setVisible(visible);
+    }
+
+    public void setLoggedUserName(final String name, final String homePage) {
+	loggedUserMenu.setText(name);
+    }
+
+    public void setVisibleSignInLink(final boolean visible) {
+	signInHyperlink.setVisible(visible);
+    }
+
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPresenter.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPresenter.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,22 +1,50 @@
 package org.ourproject.kune.workspace.client.ui.newtmp.sitebar.sitesign;
 
 import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.state.Session;
 
+import com.calclab.suco.client.signal.Slot;
+
 public class SiteSignInLinkPresenter implements SiteSignInLink {
 
-private SiteSignInLinkView view;
+    private SiteSignInLinkView view;
 
-public SiteSignInLinkPresenter() {
-}
+    public SiteSignInLinkPresenter(final Session session) {
+	session.onUserSignIn(new Slot<UserInfoDTO>() {
+	    public void onEvent(final UserInfoDTO user) {
+		doAfterSignIn(user);
+	    }
+	});
+	session.onUserSignOut(new Slot<Object>() {
+	    public void onEvent(final Object parameter) {
+		setLogged(false);
+		view.setLoggedUserName("", "");
+	    }
+	});
+    }
 
-public void init(SiteSignInLinkView view) {
-this.view = view;
-}
+    public View getView() {
+	return view;
+    }
 
+    public void init(final SiteSignInLinkView view) {
+	this.view = view;
+	setLogged(false);
+    }
 
-    public View getView() {
-        return view;
+    private void doAfterSignIn(final UserInfoDTO user) {
+	if (user == null) {
+	    setLogged(false);
+	} else {
+	    setLogged(true);
+	    view.setLoggedUserName(user.getShortName(), user.getHomePage());
+	}
     }
 
+    private void setLogged(boolean logged) {
+	view.setVisibleSignInLink(!logged);
+	view.setLoggedUserMenuVisible(logged);
+    }
+
 }
-

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkView.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkView.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -3,5 +3,11 @@
 import org.ourproject.kune.platf.client.View;
 
 public interface SiteSignInLinkView extends View {
+
+    void setLoggedUserMenuVisible(boolean visible);
+
+    void setLoggedUserName(String shortName, String homePage);
+
+    void setVisibleSignInLink(boolean visible);
+
 }
-

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPanel.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPanel.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,14 +1,32 @@
 package org.ourproject.kune.workspace.client.ui.newtmp.sitebar.sitesign;
 
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.sitebar.Site;
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
+import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
 
 public class SiteSignOutLinkPanel implements SiteSignOutLinkView {
 
     private final Label signOutLabel;
 
-    public SiteSignOutLinkPanel(final SiteSignOutLinkPresenter presenter, final WorkspaceSkeleton ws) {
+    public SiteSignOutLinkPanel(final SiteSignOutLinkPresenter presenter, final I18nUITranslationService i18n,
+	    final WorkspaceSkeleton ws) {
 	signOutLabel = new Label();
+	signOutLabel.setText(i18n.t("Sign out"));
+	signOutLabel.addStyleName("kune-SiteBarPanel-LabelLink");
+	ws.getSiteBar().add(signOutLabel);
+	signOutLabel.addClickListener(new ClickListener() {
+	    public void onClick(final Widget arg0) {
+		Site.showProgressProcessing();
+		presenter.doSignOut();
+	    }
+	});
     }
+
+    public void setVisible(final boolean visible) {
+	signOutLabel.setVisible(visible);
+    }
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPresenter.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPresenter.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,22 +1,92 @@
 package org.ourproject.kune.workspace.client.ui.newtmp.sitebar.sitesign;
 
+import java.util.Date;
+
 import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.errors.SessionExpiredException;
+import org.ourproject.kune.platf.client.errors.UserMustBeLoggedException;
+import org.ourproject.kune.platf.client.services.KuneErrorHandler;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
 
+import com.calclab.suco.client.signal.Slot;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Cookies;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
 public class SiteSignOutLinkPresenter implements SiteSignOutLink {
 
-private SiteSignOutLinkView view;
+    private SiteSignOutLinkView view;
+    private final Session session;
+    private final UserServiceAsync userService;
 
-public SiteSignOutLinkPresenter() {
-}
+    public SiteSignOutLinkPresenter(final Session session, final UserServiceAsync userService,
+	    final KuneErrorHandler errorHandler) {
+	this.session = session;
+	this.userService = userService;
+	session.onUserSignIn(new Slot<UserInfoDTO>() {
+	    public void onEvent(final UserInfoDTO parameter) {
+		view.setVisible(true);
+	    }
+	});
+	session.onUserSignOut(new Slot<Object>() {
+	    public void onEvent(final Object parameter) {
+		view.setVisible(false);
+	    }
+	});
+	errorHandler.onSessionExpired(new Slot<Object>() {
+	    public void onEvent(final Object parameter) {
+		clientUIsignOut();
+	    }
+	});
+    }
 
-public void init(SiteSignOutLinkView view) {
-this.view = view;
-}
+    public void doSignOut() {
+	final AsyncCallback<Object> callback = new AsyncCallback<Object>() {
+	    public void onFailure(final Throwable caught) {
+		Site.hideProgress();
+		try {
+		    throw caught;
+		} catch (final SessionExpiredException e) {
+		    clientUIsignOut();
+		} catch (final UserMustBeLoggedException e) {
+		    clientUIsignOut();
+		} catch (final Throwable e) {
+		    GWT.log("Other kind of exception in doLogout", null);
+		    throw new RuntimeException();
+		}
+	    }
 
+	    public void onSuccess(final Object arg0) {
+		Site.hideProgress();
+		clientUIsignOut();
+	    }
 
+	};
+	userService.logout(session.getUserHash(), callback);
+    }
+
     public View getView() {
-        return view;
+	return view;
     }
 
+    public void init(final SiteSignOutLinkView view) {
+	this.view = view;
+	view.setVisible(false);
+    }
+
+    private void clientUIsignOut() {
+	// FIXME: Remove cookie doesn't works in all browsers, know
+	// issue:
+	// http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded86778ee56690/515dc513c7d085eb?lnk=st&q=remove+cookie#515dc513c7d085eb
+	// http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeCookie
+	Cookies.removeCookie(Site.USERHASH);
+	// Workaround:
+	Cookies.setCookie(Site.USERHASH, null, new Date(0), null, "/", false);
+	session.setUserHash(null);
+	session.setCurrentUserInfo(null);
+    }
+
 }
-

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkView.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkView.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -3,5 +3,6 @@
 import org.ourproject.kune.platf.client.View;
 
 public interface SiteSignOutLinkView extends View {
+
+    void setVisible(boolean visible);
 }
-

Modified: trunk/src/test/java/org/ourproject/kune/platf/client/state/StateManagerTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/client/state/StateManagerTest.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/test/java/org/ourproject/kune/platf/client/state/StateManagerTest.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,46 +1,64 @@
 package org.ourproject.kune.platf.client.state;
 
-import org.easymock.EasyMock;
 import org.junit.Before;
 import org.junit.Test;
-import org.ourproject.kune.platf.client.app.Application;
+import org.mockito.Mockito;
 import org.ourproject.kune.platf.client.app.HistoryWrapper;
-import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.workspace.client.sitebar.SiteToken;
 import org.ourproject.kune.workspace.client.ui.newtmp.WorkspaceManager;
 
+import com.calclab.suco.client.signal.Slot;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
 public class StateManagerTest {
 
-    private StateManager stateManager;
+    private static final String HASH = "someUserHash";
+    private StateManagerDefault stateManager;
     private HistoryWrapper history;
+    private ContentProvider contentProvider;
+    private Session session;
 
+    @SuppressWarnings("unchecked")
     @Test
-    public void fixmeToken() {
-	stateManager.onHistoryChanged(Site.FIXME_TOKEN);
-    }
-
-    @Test
     public void getDefGroup() {
 	stateManager.onHistoryChanged("site.docs");
+	Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
+		(StateToken) Mockito.anyObject(), (AsyncCallback<StateDTO>) Mockito.anyObject());
     }
 
+    @SuppressWarnings("unchecked")
     @Before
     public void init() {
-	final ContentProvider contentProvider = EasyMock.createStrictMock(ContentProvider.class);
-	final Application application = EasyMock.createStrictMock(Application.class);
-	final Session session = EasyMock.createStrictMock(Session.class);
-	history = EasyMock.createStrictMock(HistoryWrapper.class);
-	final WorkspaceManager ws = EasyMock.createStrictMock(WorkspaceManager.class);
-	stateManager = new StateManagerDefault(contentProvider, application, session, history, ws);
+	contentProvider = Mockito.mock(ContentProvider.class);
+	session = Mockito.mock(Session.class);
+	history = Mockito.mock(HistoryWrapper.class);
+	final WorkspaceManager ws = Mockito.mock(WorkspaceManager.class);
+	stateManager = new StateManagerDefault(contentProvider, session, history, ws);
+	Mockito.stub(session.getUserHash()).toReturn(HASH);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void normalStartLoggedUser() {
 	// When a user enter reload state, also if the application is starting
 	// (and the user was logged)
-	EasyMock.expect(history.getToken()).andReturn("");
-	EasyMock.replay(history);
+	Mockito.stub(history.getToken()).toReturn("");
 	stateManager.reload();
-	EasyMock.verify(history);
+	Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
+		(StateToken) Mockito.anyObject(), (AsyncCallback<StateDTO>) Mockito.anyObject());
     }
 
+    @SuppressWarnings("unchecked")
+    @Test
+    public void siteTokenFirstLoadDefContentAndFireSlot() {
+	final Slot slot = Mockito.mock(Slot.class);
+	final String token = SiteToken.signin.toString();
+	stateManager.addSiteToken(token, slot);
+	stateManager.onHistoryChanged(token);
+	Mockito.verify(slot, Mockito.times(1)).onEvent(Mockito.anyObject());
+	Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
+		(StateToken) Mockito.anyObject(), (AsyncCallback<StateDTO>) Mockito.anyObject());
+    }
 }

Deleted: trunk/src/test/java/org/ourproject/kune/sitebar/client/ui/LoginPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/sitebar/client/ui/LoginPresenterTest.java	2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/test/java/org/ourproject/kune/sitebar/client/ui/LoginPresenterTest.java	2008-07-23 04:11:58 UTC (rev 813)
@@ -1,52 +0,0 @@
-package org.ourproject.kune.sitebar.client.ui;
-
-import org.easymock.EasyMock;
-import org.junit.Before;
-import org.junit.Test;
-import org.ourproject.kune.platf.client.services.I18nTranslationServiceMocked;
-import org.ourproject.kune.platf.client.state.SessionImpl;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginListener;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginPresenter;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginView;
-
-public class LoginPresenterTest {
-    private LoginPresenter presenter;
-    private LoginView view;
-    private LoginListener listener;
-
-    @Before
-    public void createObjects() {
-        listener = EasyMock.createStrictMock(LoginListener.class);
-        presenter = new LoginPresenter(new SessionImpl("foo", null), listener, new I18nTranslationServiceMocked());
-        view = EasyMock.createStrictMock(LoginView.class);
-    }
-
-    @Test
-    public void nickPassTyped() {
-        // view.setEnabledLoginButton(false);
-        // view.setEnabledLoginButton(true);
-        EasyMock.replay(view);
-
-        presenter.init(view);
-        // presenter.onDataChanged("luther.b", "somepass");
-        EasyMock.verify(view);
-    }
-
-    @Test
-    public void noUserInput() {
-        // view.setEnabledLoginButton(false);
-        EasyMock.replay(view);
-
-        presenter.init(view);
-        // presenter.onDataChanged("", "");
-        EasyMock.verify(view);
-    }
-
-    @Test
-    public void testViewInitialization() {
-        // view.setEnabledLoginButton(false);
-        EasyMock.replay(view);
-        presenter.init(view);
-        EasyMock.verify(view);
-    }
-}




More information about the kune-commits mailing list