and this will get just the type
+ dynamic_type = dynamic_command_module.path.split("/").last
+
+ # get payload options in JSON
+ e = BeEF::Core::Command.const_get(dynamic_type.capitalize).new
+ payload_options_json = []
+ payload_options_json[1] = e.get_payload_options(payload_name)
+ raise WEBrick::HTTPStatus::BadRequest, "Payload JSON generation error" if payload_options_json.empty?
+
+ return {'success' => 'true', 'command_modules' => payload_options_json}.to_json
+
+ end
+
+end
+
+end
+end
+end
+end
diff --git a/extensions/admin_ui/controllers/panel/index.html b/extensions/admin_ui/controllers/panel/index.html
new file mode 100644
index 000000000..7957e2dc5
--- /dev/null
+++ b/extensions/admin_ui/controllers/panel/index.html
@@ -0,0 +1,48 @@
+
+
+
+ BeEF Control Panel
+
+
+
+ <%= script_tag 'ext-base.js' %>
+ <%= script_tag 'ext-all.js' %>
+ <%= script_tag 'ext-beef.js' %>
+ <%= script_tag 'ux/TabCloseMenu.js' %>
+ <%= script_tag 'ux/StatusBar.js' %>
+ <%= script_tag 'ux/PagingStore.js' %>
+
+ <%= script_tag 'ui/panel/common.js' %>
+ <%= script_tag 'ui/panel/DistributedEngine.js' %>
+ <%= script_tag 'ui/panel/PanelStatusBar.js' %>
+
+ <%= script_tag 'ui/panel/tabs/ZombieTabDetails.js' %>
+ <%= script_tag 'ui/panel/tabs/ZombieTabLogs.js' %>
+ <%= script_tag 'ui/panel/tabs/ZombieTabCommands.js' %>
+ <%= script_tag 'ui/panel/tabs/ZombieTabRequester.js' %>
+
+ <%= script_tag 'ui/panel/PanelViewer.js' %>
+ <%= script_tag 'ui/panel/DataGrid.js' %>
+ <%= script_tag 'ui/panel/MainPanel.js' %>
+ <%= script_tag 'ui/panel/ZombieTab.js' %>
+ <%= script_tag 'ui/panel/ZombieTabs.js' %>
+ <%= script_tag 'ui/panel/zombiesTreeList.js' %>
+ <%= script_tag 'ui/panel/ZombiesMgr.js' %>
+
+ <%= script_tag 'ui/panel/Logout.js' %>
+ <%= script_tag 'ui/panel/WelcomeTab.js' %>
+
+ <%= stylesheet_tag 'ext-all.css' %>
+ <%= stylesheet_tag 'base.css' %>
+
+
+
+ <%= nonce_tag %>
+
+
+
+
diff --git a/extensions/admin_ui/controllers/panel/panel.rb b/extensions/admin_ui/controllers/panel/panel.rb
new file mode 100644
index 000000000..909cc525e
--- /dev/null
+++ b/extensions/admin_ui/controllers/panel/panel.rb
@@ -0,0 +1,91 @@
+module BeEF
+module Extension
+module AdminUI
+module Controllers
+
+#
+#
+#
+class Panel < BeEF::Extension::AdminUI::HttpController
+
+ def initialize
+ super({
+ 'paths' => {
+ '/' => method(:index),
+ '/hooked-browser-tree-update.json' => method(:hooked_browser_tree_update)
+ }
+ })
+ end
+
+ # default index page
+ def index; end
+
+ # return a JSON object contains all the updates for the hooked browser trees
+ def hooked_browser_tree_update
+ # retrieve the hbs that are online
+ hooked_browsers_online = zombies2json_simple(BeEF::Core::Models::HookedBrowser.all(:lastseen.gte => (Time.new.to_i - 30)))
+
+ # retrieve the hbs that are offline
+ hooked_browsers_offline = zombies2json_simple(BeEF::Core::Models::HookedBrowser.all(:lastseen.lt => (Time.new.to_i - 30)))
+
+ # retrieve the distributed engine rules that are enabled
+ distributed_engine_rules = distributed_engine_rules_2_json_simple(BeEF::Core::DistributedEngine::Models::Rules.all(:enabled => true))
+
+ # hash that gets populated with all the information for the hb trees
+ ret = {
+ 'success' => true,
+
+ # the list of hb
+ 'hooked-browsers' => {
+ 'online' => hooked_browsers_online,
+ 'offline' => hooked_browsers_offline
+ },
+
+ # the rules for the distributed engine
+ 'ditributed-engine-rules' => distributed_engine_rules
+ }
+
+ @body = ret.to_json
+ end
+
+ # Takes a list distributed engine rules and format the results into JSON
+ def distributed_engine_rules_2_json_simple(rules)
+
+ end
+
+ # Takes a list of zombies and format the results in a JSON array.
+ def zombies2json_simple(zombies)
+ zombies_hash = {}
+ i = 0
+
+ zombies.each do |zombie|
+ # create hash of zombie details
+ zombies_hash[i] = (get_simple_hooked_browser_hash(zombie))
+ i+=1
+ end
+
+ zombies_hash
+ end
+
+ # create a hash of simple hooked browser details
+ def get_simple_hooked_browser_hash(hooked_browser)
+
+ browser_icon = BeEF::Extension::Initialization::Models::BrowserDetails.browser_icon(hooked_browser.session)
+ os_icon = BeEF::Extension::Initialization::Models::BrowserDetails.os_icon(hooked_browser.session)
+ domain = BeEF::Extension::Initialization::Models::BrowserDetails.get(hooked_browser.session, 'HostName')
+
+ return {
+ 'session' => hooked_browser.session,
+ 'ip' => hooked_browser.ip,
+ 'domain' => domain,
+ 'browser_icon' => browser_icon,
+ 'os_icon' => os_icon
+ }
+
+ end
+end
+
+end
+end
+end
+end
\ No newline at end of file
diff --git a/extensions/admin_ui/controllers/requester/requester.rb b/extensions/admin_ui/controllers/requester/requester.rb
new file mode 100644
index 000000000..0dc92a2a3
--- /dev/null
+++ b/extensions/admin_ui/controllers/requester/requester.rb
@@ -0,0 +1,149 @@
+module BeEF
+module Extension
+module AdminUI
+module Controllers
+
+#
+# HTTP Controller for the Requester component of BeEF.
+#
+class Requester < BeEF::Extension::AdminUI::HttpController
+
+ # Variable representing the Http DB model.
+ H = BeEF::Core::Models::Http
+
+ def initialize
+ super({
+ 'paths' => {
+ '/send' => method(:send_request),
+ '/history.json' => method(:get_zombie_history),
+ '/response.json' => method(:get_zombie_response)
+ }
+ })
+ end
+
+ # Send a new http request to the hooked browser.
+ def send_request
+ # validate that the hooked browser's session has been sent
+ zombie_session = @params['zombie_session'] || nil
+ raise WEBrick::HTTPStatus::BadRequest, "Invalid session id" if not BeEF::Filters.is_valid_hook_session_id?(zombie_session)
+
+ # validate that the hooked browser exists in the db
+ zombie = Z.first(:session => zombie_session) || nil
+ raise WEBrick::HTTPStatus::BadRequest, "Invalid hooked browser session" if zombie.nil?
+
+ # validate that the raw request has been sent
+ raw_request = @params['raw_request'] || nil
+ raise WEBrick::HTTPStatus::BadRequest, "raw_request is nil" if raw_request.nil?
+ raise WEBrick::HTTPStatus::BadRequest, "raw_request contains non-printable chars" if not BeEF::Filters.has_non_printable_char?(raw_request)
+
+ # validate nonce
+ nonce = @params['nonce'] || nil
+ raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil?
+ raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce
+
+ # validate that the raw request is correct and can be used
+ req_parts = raw_request.split(/ |\n/) # break up the request
+ verb = req_parts[0]
+ raise 'Only GET or POST requests are supported' if not BeEF::Filters.is_valid_verb?(verb) #check verb
+ uri = req_parts[1]
+ raise 'Invalid URI' if not BeEF::Filters.is_valid_url?(uri) #check uri
+ version = req_parts[2]
+ raise 'Invalid HTTP version' if not BeEF::Filters.is_valid_http_version?(version) # check http version - HTTP/1.0
+ host_str = req_parts[3]
+ raise 'Invalid HTTP version' if not BeEF::Filters.is_valid_host_str?(host_str) # check host string - Host:
+ host = req_parts[4]
+ host_parts = host.split(/:/)
+ hostname = host_parts[0]
+ raise 'Invalid hostname' if not BeEF::Filters.is_valid_hostname?(hostname) #check the target hostname
+ hostport = host_parts[1] || nil
+ if !hostport.nil?
+ raise 'Invalid hostport' if not BeEF::Filters.nums_only?(hostport) #check the target hostport
+ end
+
+ # (re)build the request
+ green_request = StringIO.new(verb + " " + uri + " " + version + "\n" + host_str + " " + host)
+ request = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
+ request.parse(green_request)
+
+ # Saves the new HTTP request.
+ http = H.new(
+ :request => raw_request,
+ :method => request.request_method,
+ :domain => request.host,
+ :path => request.unparsed_uri,
+ :date => Time.now,
+ :hooked_browser_id => zombie.id
+ )
+
+ if request.request_method.eql? 'POST'
+ http.content_length = request.content_length
+ end
+
+ http.save
+
+ @body = '{success : true}'
+ end
+
+ # Returns a JSON object containing the history of requests sent to the zombie.
+ def get_zombie_history
+ # validate nonce
+ nonce = @params['nonce'] || nil
+ raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil?
+ raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce
+
+ # validate that the hooked browser's session has been sent
+ zombie_session = @params['zombie_session'] || nil
+ raise WEBrick::HTTPStatus::BadRequest, "Zombie session is nil" if zombie_session.nil?
+
+ # validate that the hooked browser exists in the db
+ zombie = Z.first(:session => zombie_session) || nil
+ raise WEBrick::HTTPStatus::BadRequest, "Invalid hooked browser session" if zombie.nil?
+
+ history = []
+ H.all(:hooked_browser_id => zombie.id).each{|http|
+ history << {
+ 'id' => http.id,
+ 'domain' => http.domain,
+ 'path' => http.path,
+ 'has_ran' => http.has_ran,
+ 'date' => http.date
+ }
+ }
+
+ @body = {'success' => 'true', 'history' => history}.to_json
+ end
+
+ # Returns a JSON objecting containing the response of a request.
+ def get_zombie_response
+ # validate nonce
+ nonce = @params['nonce'] || nil
+ raise WEBrick::HTTPStatus::BadRequest, "nonce is nil" if nonce.nil?
+ raise WEBrick::HTTPStatus::BadRequest, "nonce incorrect" if @session.get_nonce != nonce
+
+ # validate the http id
+ http_id = @params['http_id'] || nil
+ raise WEBrick::HTTPStatus::BadRequest, "http_id is nil" if http_id.nil?
+
+ # validate that the http object exist in the dabatase
+ http_db = H.first(:id => http_id) || nil
+ raise WEBrick::HTTPStatus::BadRequest, "http object could not be found in the database" if http_db.nil?
+
+ res = {
+ 'id' => http_db.id,
+ 'request' => http_db.request,
+ 'response' => http_db.response,
+ 'domain' => http_db.domain,
+ 'path' => http_db.path,
+ 'date' => http_db.date,
+ 'has_ran' => http_db.has_ran
+ }
+
+ @body = {'success' => 'true', 'result' => res}.to_json
+ end
+
+end
+
+end
+end
+end
+end
diff --git a/extensions/admin_ui/extension.rb b/extensions/admin_ui/extension.rb
new file mode 100644
index 000000000..5e3067134
--- /dev/null
+++ b/extensions/admin_ui/extension.rb
@@ -0,0 +1,31 @@
+module BeEF
+module Extension
+module AdminUI
+
+ extend BeEF::API::Extension
+
+ @full_name = 'administration web UI'
+
+ @short_name = 'admin_ui'
+
+ @description = 'command control panel for beef using a web interface'
+
+end
+end
+end
+
+# Constants for that extension
+require 'extensions/admin_ui/constants/agents'
+require 'extensions/admin_ui/constants/icons'
+
+# Classes
+require 'extensions/admin_ui/classes/httpcontroller'
+require 'extensions/admin_ui/classes/session'
+
+# Handlers
+require 'extensions/admin_ui/handlers/media'
+require 'extensions/admin_ui/handlers/ui'
+
+# API Hooking
+require 'extensions/admin_ui/api/command'
+require 'extensions/admin_ui/api/handler'
diff --git a/extensions/admin_ui/handlers/media.rb b/extensions/admin_ui/handlers/media.rb
new file mode 100644
index 000000000..58c952890
--- /dev/null
+++ b/extensions/admin_ui/handlers/media.rb
@@ -0,0 +1,27 @@
+module BeEF
+module Extension
+module AdminUI
+module Handlers
+
+class MediaHandler < WEBrick::HTTPServlet::FileHandler
+
+ def do_GET(req, res)
+ super
+
+ # set content types
+ res.header['content-type']='text/html' # default content type for all pages
+ res.header['content-type']='text/javascript' if req.path =~ /.json$/
+ res.header['content-type']='text/javascript' if req.path =~ /.js$/
+ res.header['content-type']='text/css' if req.path =~ /.css$/
+ res.header['content-type']='image/png' if req.path =~ /.png$/
+ res.header['content-type']='image/gif' if req.path =~ /.gif$/
+ res.header['content-type']='text/xml' if req.path =~ /.xml$/
+
+ end
+
+end
+
+end
+end
+end
+end
\ No newline at end of file
diff --git a/extensions/admin_ui/handlers/ui.rb b/extensions/admin_ui/handlers/ui.rb
new file mode 100644
index 000000000..040e97e92
--- /dev/null
+++ b/extensions/admin_ui/handlers/ui.rb
@@ -0,0 +1,51 @@
+#
+# Generic Http Handler that extensions can use to register http
+# controllers into the framework.
+#
+module BeEF
+module Extension
+module AdminUI
+module Handlers
+
+ class UI < WEBrick::HTTPServlet::AbstractServlet
+
+ attr_reader :guard
+
+ #
+ # Constructor
+ #
+ def initialize(config, klass)
+ super
+ @guard = Mutex.new
+ @klass = BeEF::Extension::AdminUI::Controllers.const_get(klass.to_s.capitalize)
+ end
+
+ #
+ # Retrieves the request and forwards it to the controller
+ #
+ def do_GET(request, response)
+ @request = request
+ @response = response
+
+ controller = nil
+ @guard.synchronize {
+ controller = @klass.new
+ controller.run(@request, @response)
+ }
+
+ response.header.replace(controller.headers)
+ response.body = controller.body.to_s
+ end
+
+ private
+
+ @request
+ @response
+
+ alias do_POST do_GET
+ end
+
+end
+end
+end
+end
\ No newline at end of file
diff --git a/extensions/admin_ui/media/css/base.css b/extensions/admin_ui/media/css/base.css
new file mode 100644
index 000000000..362c09fc5
--- /dev/null
+++ b/extensions/admin_ui/media/css/base.css
@@ -0,0 +1,93 @@
+#header .right-menu {
+ float: right;
+ margin: 10px;
+ word-spacing: 5px;
+ font: 11px arial, tahoma, verdana, helvetica;
+ color:#000;
+}
+
+#header a:link,
+#header a:visited {
+ color:#000;
+ text-decoration:underline;
+}
+
+.x-grid3-cell-inner, .x-grid3-hd-inner {
+ white-space: normal; /* changed from nowrap */
+}
+
+.x-grid-empty {
+ text-align:left;
+}
+
+.feed-icon {
+ display: none;
+}
+
+#zombie-tree-tabs-panel .x-tab-panel-header {
+ font: 11px tahoma,arial,helvetica,sans-serif;
+ padding: 0 0 0 0;
+ border-bottom: none;
+ text-align: center;
+}
+
+/*
+ * Status bar
+ ****************************************/
+.x-statusbar .x-status-busy,
+.x-statusbar .x-status-error,
+.x-statusbar .x-status-valid {
+ background: transparent no-repeat 3px 2px;
+ padding-left: 25px !important;
+ padding-bottom: 2px !important;
+}
+
+.x-statusbar .x-status-busy {
+ background-image: url(../images/statusbar/loading.gif);
+}
+
+.x-statusbar .x-status-error {
+ color: #C33;
+ background-image: url(../images/statusbar/exclamation.gif);
+}
+
+.x-statusbar .x-status-valid {
+ background-image: url(../images/statusbar/accept.png);
+}
+
+.x-tree-node-leaf .x-tree-node-icon {
+ width: 13px;
+ height: 13px;
+ padding-top: 3px;
+}
+
+/*
+ * Ext.beef.msg
+ ****************************************/
+.msg .x-box-mc {
+ font-size:14px;
+}
+
+#msg-div {
+ position:absolute;
+ left:35%;
+ top:20px;
+ width:250px;
+ z-index:20000;
+}
+
+/*
+ * Exploit Panel
+ ****************************************/
+.x-form-item-label, .x-form-element {
+ font: 11px tahoma,arial,helvetica,sans-serif;
+}
+
+.command-module-panel-description {
+ margin-bottom: 10px;
+ padding-top: 4px;
+}
+
+label {
+ font: 11px tahoma,arial,helvetica,sans-serif;
+}
diff --git a/extensions/admin_ui/media/css/ext-all.css b/extensions/admin_ui/media/css/ext-all.css
new file mode 100644
index 000000000..22e51ccd4
--- /dev/null
+++ b/extensions/admin_ui/media/css/ext-all.css
@@ -0,0 +1,6969 @@
+/*!
+ * Ext JS Library 3.3.1
+ * Copyright(c) 2006-2010 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.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-forced-border-box, .ext-forced-border-box * {
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+}
+.ext-el-mask {
+ z-index: 100;
+ position: absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity: .50;
+ filter: alpha(opacity=50);
+ width: 100%;
+ height: 100%;
+ zoom: 1;
+}
+
+.ext-el-mask-msg {
+ z-index: 20001;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border:1px solid;
+ background:repeat-x 0 -16px;
+ padding:2px;
+}
+
+.ext-el-mask-msg div {
+ padding:5px 10px 5px 10px;
+ border:1px solid;
+ 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:no-repeat 5px 5px;
+ line-height:16px;
+}
+
+/* class for hiding elements without using display:none */
+.x-hidden, .x-hide-offsets {
+ position:absolute !important;
+ left:-10000px;
+ top:-10000px;
+ visibility:hidden;
+}
+
+.x-hide-display {
+ display:none !important;
+}
+
+.x-hide-nosize,
+.x-hide-nosize * /* Emulate display:none for children */
+ {
+ height:0px!important;
+ width:0px!important;
+ visibility:hidden!important;
+ border:none!important;
+ zoom:1;
+}
+
+.x-hide-visibility {
+ visibility:hidden !important;
+}
+
+.x-masked {
+ overflow: hidden !important;
+}
+.x-masked-relative {
+ position: relative !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;
+ -webkit-user-select:ignore;
+}
+
+.x-repaint {
+ zoom: 1;
+ background-color: transparent;
+ -moz-outline: none;
+ outline: none;
+}
+
+.x-item-disabled {
+ cursor: default;
+ opacity: .6;
+ -moz-opacity: .6;
+ filter: alpha(opacity=60);
+}
+
+.x-item-disabled * {
+ cursor: default !important;
+}
+
+.x-form-radio-group .x-item-disabled {
+ filter: none;
+}
+
+.x-splitbar-proxy {
+ position: absolute;
+ visibility: hidden;
+ z-index: 20001;
+ 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;
+ 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;
+}
+
+.x-color-palette em {
+ display: block;
+ border: 1px solid;
+}
+
+.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;
+ 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;
+}
+
+/* top bottom */
+.x-shadow .xstc, .x-shadow .xsbc {
+ height: 6px;
+ float: left;
+}
+
+/* corners */
+.x-shadow .xstl, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbr {
+ width: 6px;
+ height: 6px;
+ float: left;
+}
+
+/* sides */
+.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-color: transparent;
+}
+
+.x-shadow .xst, .x-shadow .xsb {
+ height: 6px;
+ overflow: hidden;
+ width: 100%;
+}
+
+.x-shadow .xsml {
+ background: transparent repeat-y 0 0;
+}
+
+.x-shadow .xsmr {
+ background: transparent repeat-y -6px 0;
+}
+
+.x-shadow .xstl {
+ background: transparent no-repeat 0 0;
+}
+
+.x-shadow .xstc {
+ background: transparent repeat-x 0 -30px;
+}
+
+.x-shadow .xstr {
+ background: transparent repeat-x 0 -18px;
+}
+
+.x-shadow .xsbl {
+ background: transparent no-repeat 0 -12px;
+}
+
+.x-shadow .xsbc {
+ background: transparent repeat-x 0 -36px;
+}
+
+.x-shadow .xsbr {
+ background: transparent repeat-x 0 -6px;
+}
+
+.loading-indicator {
+ background: no-repeat 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(../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);
+ width:0;
+ height:0;
+ zoom: 1;
+}
+
+#x-history-frame {
+ position:absolute;
+ top:-1px;
+ left:0;
+ width:1px;
+ height:1px;
+ visibility:hidden;
+}
+
+#x-history-field {
+ position:absolute;
+ top:0;
+ left:-1px;
+ width:1px;
+ height:1px;
+ visibility:hidden;
+}
+.x-resizable-handle {
+ position:absolute;
+ z-index:100;
+ /* ie needs these */
+ font-size:1px;
+ line-height:6px;
+ overflow:hidden;
+ 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; /*IE rounding error*/
+}
+
+.x-resizable-handle-south{
+ width:100%;
+ cursor:s-resize;
+ left:0;
+ bottom:0;
+ height:6px;
+}
+
+.ext-ie .x-resizable-handle-south {
+ margin-bottom:-1px; /*IE rounding error*/
+}
+
+.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,
+.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west
+{
+ background-position: left;
+}
+
+.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north
+{
+ background-position: top;
+}
+
+.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{
+ background-position: top left;
+}
+
+.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{
+ background-position:bottom right;
+}
+
+.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{
+ background-position: bottom left;
+}
+
+.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{
+ background-position: top right;
+}
+
+.x-resizable-proxy{
+ border: 1px dashed;
+ 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;
+ z-index:200000;
+ -moz-opacity: 0;
+ opacity:0;
+ filter: alpha(opacity=0);
+}
+.x-tab-panel {
+ overflow:hidden;
+}
+
+.x-tab-panel-header, .x-tab-panel-footer {
+ border: 1px solid;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tab-panel-header {
+ border: 1px solid;
+ padding-bottom: 2px;
+}
+
+.x-tab-panel-footer {
+ border: 1px solid;
+ 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: repeat-x bottom;
+ border-bottom: 1px solid;
+}
+
+ul.x-tab-strip-bottom{
+ padding-bottom: 1px;
+ background: repeat-x top;
+ border-top: 1px solid;
+ 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,
+.x-tab-panel-footer-plain .x-tab-strip-spacer {
+ border:1px solid;
+ height:2px;
+ font-size:1px;
+ line-height:1px;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer {
+ border-top: 0 none;
+}
+
+.x-tab-panel-footer-plain .x-tab-strip-spacer {
+ border-bottom: 0 none;
+}
+
+.x-tab-panel-footer-plain .x-tab-strip-bottom {
+ background:transparent !important;
+ padding-bottom:0 !important;
+}
+
+.x-tab-panel-footer-plain {
+ background:transparent !important;
+ border-width:0 !important;
+ padding-top:0 !important;
+}
+
+.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer,
+.ext-border-box .x-tab-panel-footer-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 {
+ white-space: nowrap;
+ cursor:pointer;
+ padding:4px 0;
+}
+
+.x-tab-strip-top .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-active, .x-tab-strip-active a.x-tab-right {
+ cursor:default;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+ cursor:default;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+ cursor:default;
+}
+
+.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;
+}
+
+/*
+ * Horrible hack for IE8 in quirks mode
+ */
+.ext-ie8 .x-tab-strip li {
+ position: relative;
+}
+.ext-border-box .ext-ie8 .x-tab-strip-top .x-tab-right {
+ top: 1px;
+}
+.ext-ie8 .x-tab-strip-top {
+ padding-top: 1;
+}
+.ext-border-box .ext-ie8 .x-tab-strip-top {
+ padding-top: 0;
+}
+.ext-ie8 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ top:3px;
+}
+.ext-border-box .ext-ie8 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ top:4px;
+}
+.ext-ie8 .x-tab-strip-bottom .x-tab-right{
+ top:0;
+}
+
+
+.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 no-repeat 0 -51px;
+ padding-left:10px;
+}
+
+.x-tab-strip-top .x-tab-left {
+ background: transparent no-repeat right -351px;
+ padding-right:10px;
+}
+
+.x-tab-strip-top .x-tab-strip-inner {
+ background: transparent 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: no-repeat bottom right;
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background: no-repeat bottom left;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background: no-repeat bottom right;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background: no-repeat bottom left;
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ margin-right: 3px;
+ 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 {
+ 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{
+ opacity:1;
+ -moz-opacity:1;
+}
+
+.x-tab-panel-body {
+ border: 1px solid;
+}
+
+.x-tab-panel-body-top {
+ border-top: 0 none;
+}
+
+.x-tab-panel-body-bottom {
+ border-bottom: 0 none;
+}
+
+.x-tab-scroller-left {
+ background: transparent no-repeat -18px 0;
+ border-bottom: 1px solid;
+ 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 no-repeat 0 0;
+ border-bottom: 1px solid;
+ 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-bottom .x-tab-scroller-left, .x-tab-scrolling-bottom .x-tab-scroller-right{
+ margin-top: 1px;
+}
+
+.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;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-tab-panel-tbar .x-toolbar {
+ border:1px solid;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}/* all fields */
+.x-form-field{
+ margin: 0 0 0 0;
+}
+
+.ext-webkit *:focus{
+ outline: none !important;
+}
+
+/* ---- text fields ---- */
+.x-form-text, textarea.x-form-field{
+ padding:1px 3px;
+ background:repeat-x 0 0;
+ border:1px solid;
+}
+
+textarea.x-form-field {
+ padding:2px 3px;
+}
+
+.x-form-text, .ext-ie .x-form-file {
+ height:22px;
+ line-height:18px;
+ vertical-align:middle;
+}
+
+.ext-ie6 .x-form-text, .ext-ie7 .x-form-text {
+ margin:-1px 0; /* ie bogus margin bug */
+ height:22px; /* ie quirks */
+ line-height:18px;
+}
+
+.ext-ie6 .x-form-field-wrap .x-form-file-btn, .ext-ie7 .x-form-field-wrap .x-form-file-btn {
+ top: -1px; /* because of all these margin hacks, these buttons are off by one pixel in IE6,7 */
+}
+
+.ext-ie6 textarea.x-form-field, .ext-ie7 textarea.x-form-field {
+ margin:-1px 0; /* ie bogus margin bug */
+}
+
+.ext-strict .x-form-text {
+ height:18px;
+}
+
+.ext-safari.ext-mac textarea.x-form-field {
+ margin-bottom:-2px; /* another bogus margin bug, safari/mac only */
+}
+
+/*
+.ext-strict .ext-ie8 .x-form-text, .ext-strict .ext-ie8 textarea.x-form-field {
+ margin-bottom: 1px;
+}
+*/
+
+.ext-gecko .x-form-text , .ext-ie8 .x-form-text {
+ padding-top:2px; /* FF won't center the text vertically */
+ padding-bottom:0;
+}
+
+.ext-ie6 .x-form-composite .x-form-text.x-box-item, .ext-ie7 .x-form-composite .x-form-text.x-box-item {
+ margin: 0 !important; /* clear ie bogus margin bug fix */
+}
+
+textarea {
+ resize: none; /* Disable browser resizable textarea */
+}
+
+/* select boxes */
+.x-form-select-one {
+ height:20px;
+ line-height:18px;
+ vertical-align:middle;
+ border: 1px solid;
+}
+
+/* multi select boxes */
+
+/* --- TODO --- */
+
+/* 2.0.2 style */
+.x-form-check-wrap {
+ line-height:18px;
+ height: auto;
+}
+
+.ext-ie .x-form-check-wrap input {
+ width:15px;
+ height:15px;
+}
+
+.x-form-check-wrap input{
+ vertical-align: bottom;
+}
+
+.x-editor .x-form-check-wrap {
+ padding:3px;
+}
+
+.x-editor .x-form-checkbox {
+ height:13px;
+}
+
+.x-form-check-group-label {
+ border-bottom: 1px solid;
+ margin-bottom: 5px;
+ padding-left: 3px !important;
+ float: none !important;
+}
+
+/* wrapped fields and triggers */
+.x-form-field-wrap .x-form-trigger{
+ width:17px;
+ height:21px;
+ border:0;
+ background:transparent no-repeat 0 0;
+ cursor:pointer;
+ border-bottom: 1px solid;
+ position:absolute;
+ top:0;
+}
+
+.x-form-field-wrap .x-form-date-trigger, .x-form-field-wrap .x-form-clear-trigger, .x-form-field-wrap .x-form-search-trigger{
+ cursor:pointer;
+}
+
+.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{
+ position:static;
+ top:auto;
+ vertical-align:top;
+}
+
+.x-form-field-wrap {
+ position:relative;
+ left:0;top:0;
+ text-align: left;
+ zoom:1;
+ white-space: nowrap;
+}
+
+.ext-strict .ext-ie8 .x-toolbar-cell .x-form-field-trigger-wrap .x-form-trigger {
+ right: 0; /* IE8 Strict mode trigger bug */
+}
+
+.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;
+}
+
+.x-item-disabled .x-form-trigger-over{
+ background-position:0 0 !important;
+ border-bottom: 1px solid;
+}
+
+.x-item-disabled .x-form-trigger-click{
+ background-position:0 0 !important;
+ border-bottom: 1px solid;
+}
+
+.x-trigger-noedit{
+ cursor:pointer;
+}
+
+/* field focus style */
+.x-form-focus, textarea.x-form-focus{
+ border: 1px solid;
+}
+
+/* invalid fields */
+.x-form-invalid, textarea.x-form-invalid{
+ background:repeat-x bottom;
+ border: 1px solid;
+}
+
+.x-form-inner-invalid, textarea.x-form-inner-invalid{
+ background:repeat-x bottom;
+}
+
+/* editors */
+.x-editor {
+ visibility:hidden;
+ padding:0;
+ margin:0;
+}
+
+.x-form-grow-sizer {
+ 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;
+}
+
+/* Form Items CSS */
+
+.x-form-item {
+ display:block;
+ margin-bottom:4px;
+ zoom:1;
+}
+
+.x-form-item label.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 {
+ padding:2px;
+ padding-left:18px;
+ background: transparent no-repeat 0 2px;
+ line-height:16px;
+ width:200px;
+}
+
+.x-form-label-left label.x-form-item-label {
+ text-align:left;
+}
+
+.x-form-label-right label.x-form-item-label {
+ text-align:right;
+}
+
+.x-form-label-top .x-form-item label.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;
+}
+
+/* Editor small font for grid, toolbar and tree */
+.x-small-editor .x-form-text {
+ height:20px;
+ line-height:16px;
+ vertical-align:middle;
+}
+
+.ext-ie6 .x-small-editor .x-form-text, .ext-ie7 .x-small-editor .x-form-text {
+ margin-top:-1px !important; /* ie bogus margin bug */
+ margin-bottom:-1px !important;
+ height:20px !important; /* ie quirks */
+ line-height:16px !important;
+}
+
+.ext-strict .x-small-editor .x-form-text {
+ height:16px !important;
+}
+
+.ext-ie6 .x-small-editor .x-form-text, .ext-ie7 .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;
+}
+
+.ext-webkit .x-small-editor .x-form-text{padding-top:3px;font-size:100%;}
+
+.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;
+}
+
+.ext-ie6 .x-form-check-wrap input, .ext-border-box .x-form-check-wrap input{
+ margin-top: 3px;
+}
+
+.x-form-cb-label {
+ position: relative;
+ margin-left:4px;
+ top: 2px;
+}
+
+.ext-ie .x-form-cb-label{
+ top: 1px;
+}
+
+.ext-ie6 .x-form-cb-label, .ext-border-box .x-form-cb-label{
+ top: 3px;
+}
+
+.x-form-display-field{
+ padding-top: 2px;
+}
+
+.ext-gecko .x-form-display-field, .ext-strict .ext-ie7 .x-form-display-field{
+ padding-top: 1px;
+}
+
+.ext-ie .x-form-display-field{
+ padding-top: 3px;
+}
+
+.ext-strict .ext-ie8 .x-form-display-field{
+ padding-top: 0;
+}
+
+.x-form-column {
+ float:left;
+ padding:0;
+ margin:0;
+ width:48%;
+ overflow:hidden;
+ zoom:1;
+}
+
+/* buttons */
+.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; /*ie*/
+}
+
+.x-form .x-form-btns-ct .x-form-btns-center table{
+ margin:0 auto; /*everyone else*/
+}
+
+.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 no-repeat 0 2px;
+}
+
+/* fieldsets */
+.x-fieldset {
+ border:1px solid;
+ padding:10px;
+ margin-bottom:10px;
+ display:block; /* preserve margins in IE */
+}
+
+/* make top of checkbox/tools visible in webkit */
+.ext-webkit .x-fieldset-header {
+ padding-top: 1px;
+}
+
+.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 1px 0 1px !important;
+ border-left-color: transparent;
+ border-right-color: transparent;
+}
+
+.ext-ie6 fieldset.x-panel-collapsed{
+ padding-bottom:0 !important;
+ border-width: 1px 0 0 0 !important;
+ margin-left: 1px;
+ margin-right: 1px;
+}
+
+fieldset.x-panel-collapsed .x-fieldset-bwrap {
+ visibility:hidden;
+ position:absolute;
+ left:-1000px;
+ top:-1000px;
+}
+
+.ext-ie .x-fieldset-bwrap {
+ zoom:1;
+}
+
+.x-fieldset-noborder {
+ border:0px none transparent;
+}
+
+.x-fieldset-noborder legend {
+ margin-left:-3px;
+}
+
+/* IE legend positioning bug */
+.ext-ie .x-fieldset-noborder legend {
+ position: relative;
+ margin-bottom:23px;
+}
+.ext-ie .x-fieldset-noborder legend span {
+ position: absolute;
+ left:16px;
+}
+
+.ext-gecko .x-window-body .x-form-item {
+ -moz-outline: none;
+ outline: none;
+ overflow: auto;
+}
+
+.ext-mac.ext-gecko .x-window-body .x-form-item {
+ overflow:hidden;
+}
+
+.ext-gecko .x-form-item {
+ -moz-outline: none;
+ outline: none;
+}
+
+.x-hide-label label.x-form-item-label {
+ display:none;
+}
+
+.x-hide-label .x-form-element {
+ padding-left: 0 !important;
+}
+
+.x-form-label-top .x-hide-label label.x-form-item-label{
+ display: none;
+}
+
+.x-fieldset {
+ overflow:hidden;
+}
+
+.x-fieldset-bwrap {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-fieldset-body {
+ overflow:hidden;
+}
+.x-btn{
+ cursor:pointer;
+ white-space: nowrap;
+}
+
+.x-btn button{
+ border:0 none;
+ background-color:transparent;
+ 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, .ext-webkit .x-btn button {
+ padding-left:0;
+ padding-right:0;
+}
+
+.ext-gecko .x-btn button::-moz-focus-inner {
+ padding:0;
+}
+
+.ext-ie .x-btn button {
+ padding-top:2px;
+}
+
+.x-btn td {
+ padding:0 !important;
+}
+
+.x-btn-text {
+ cursor:pointer;
+ white-space: nowrap;
+ padding:0;
+}
+
+/* icon placement and sizing styles */
+
+/* Only text */
+.x-btn-noicon .x-btn-small .x-btn-text{
+ height: 16px;
+}
+
+.x-btn-noicon .x-btn-medium .x-btn-text{
+ height: 24px;
+}
+
+.x-btn-noicon .x-btn-large .x-btn-text{
+ height: 32px;
+}
+
+/* Only icons */
+.x-btn-icon .x-btn-text{
+ background-position: center;
+ background-repeat: no-repeat;
+}
+
+.x-btn-icon .x-btn-small .x-btn-text{
+ height: 16px;
+ width: 16px;
+}
+
+.x-btn-icon .x-btn-medium .x-btn-text{
+ height: 24px;
+ width: 24px;
+}
+
+.x-btn-icon .x-btn-large .x-btn-text{
+ height: 32px;
+ width: 32px;
+}
+
+/* Icons and text */
+/* left */
+.x-btn-text-icon .x-btn-icon-small-left .x-btn-text{
+ background-position: 0 center;
+ background-repeat: no-repeat;
+ padding-left:18px;
+ height:16px;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-left .x-btn-text{
+ background-position: 0 center;
+ background-repeat: no-repeat;
+ padding-left:26px;
+ height:24px;
+}
+
+.x-btn-text-icon .x-btn-icon-large-left .x-btn-text{
+ background-position: 0 center;
+ background-repeat: no-repeat;
+ padding-left:34px;
+ height:32px;
+}
+
+/* top */
+.x-btn-text-icon .x-btn-icon-small-top .x-btn-text{
+ background-position: center 0;
+ background-repeat: no-repeat;
+ padding-top:18px;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-top .x-btn-text{
+ background-position: center 0;
+ background-repeat: no-repeat;
+ padding-top:26px;
+}
+
+.x-btn-text-icon .x-btn-icon-large-top .x-btn-text{
+ background-position: center 0;
+ background-repeat: no-repeat;
+ padding-top:34px;
+}
+
+/* right */
+.x-btn-text-icon .x-btn-icon-small-right .x-btn-text{
+ background-position: right center;
+ background-repeat: no-repeat;
+ padding-right:18px;
+ height:16px;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-right .x-btn-text{
+ background-position: right center;
+ background-repeat: no-repeat;
+ padding-right:26px;
+ height:24px;
+}
+
+.x-btn-text-icon .x-btn-icon-large-right .x-btn-text{
+ background-position: right center;
+ background-repeat: no-repeat;
+ padding-right:34px;
+ height:32px;
+}
+
+/* bottom */
+.x-btn-text-icon .x-btn-icon-small-bottom .x-btn-text{
+ background-position: center bottom;
+ background-repeat: no-repeat;
+ padding-bottom:18px;
+}
+
+.x-btn-text-icon .x-btn-icon-medium-bottom .x-btn-text{
+ background-position: center bottom;
+ background-repeat: no-repeat;
+ padding-bottom:26px;
+}
+
+.x-btn-text-icon .x-btn-icon-large-bottom .x-btn-text{
+ background-position: center bottom;
+ background-repeat: no-repeat;
+ padding-bottom:34px;
+}
+
+/* background positioning */
+.x-btn-tr i, .x-btn-tl i, .x-btn-mr i, .x-btn-ml i, .x-btn-br i, .x-btn-bl i{
+ font-size:1px;
+ line-height:1px;
+ width:3px;
+ display:block;
+ overflow:hidden;
+}
+
+.x-btn-tr i, .x-btn-tl i, .x-btn-br i, .x-btn-bl i{
+ height:3px;
+}
+
+.x-btn-tl{
+ width:3px;
+ height:3px;
+ background:no-repeat 0 0;
+}
+.x-btn-tr{
+ width:3px;
+ height:3px;
+ background:no-repeat -3px 0;
+}
+.x-btn-tc{
+ height:3px;
+ background:repeat-x 0 -6px;
+}
+
+.x-btn-ml{
+ width:3px;
+ background:no-repeat 0 -24px;
+}
+.x-btn-mr{
+ width:3px;
+ background:no-repeat -3px -24px;
+}
+
+.x-btn-mc{
+ background:repeat-x 0 -1096px;
+ vertical-align: middle;
+ text-align:center;
+ padding:0 5px;
+ cursor:pointer;
+ white-space:nowrap;
+}
+
+/* Fixes an issue with the button height */
+.ext-strict .ext-ie6 .x-btn-mc, .ext-strict .ext-ie7 .x-btn-mc {
+ height: 100%;
+}
+
+.x-btn-bl{
+ width:3px;
+ height:3px;
+ background:no-repeat 0 -3px;
+}
+
+.x-btn-br{
+ width:3px;
+ height:3px;
+ background:no-repeat -3px -3px;
+}
+
+.x-btn-bc{
+ height:3px;
+ background:repeat-x 0 -15px;
+}
+
+.x-btn-over .x-btn-tl{
+ background-position: -6px 0;
+}
+
+.x-btn-over .x-btn-tr{
+ background-position: -9px 0;
+}
+
+.x-btn-over .x-btn-tc{
+ background-position: 0 -9px;
+}
+
+.x-btn-over .x-btn-ml{
+ background-position: -6px -24px;
+}
+
+.x-btn-over .x-btn-mr{
+ background-position: -9px -24px;
+}
+
+.x-btn-over .x-btn-mc{
+ background-position: 0 -2168px;
+}
+
+.x-btn-over .x-btn-bl{
+ background-position: -6px -3px;
+}
+
+.x-btn-over .x-btn-br{
+ background-position: -9px -3px;
+}
+
+.x-btn-over .x-btn-bc{
+ background-position: 0 -18px;
+}
+
+.x-btn-click .x-btn-tl, .x-btn-menu-active .x-btn-tl, .x-btn-pressed .x-btn-tl{
+ background-position: -12px 0;
+}
+
+.x-btn-click .x-btn-tr, .x-btn-menu-active .x-btn-tr, .x-btn-pressed .x-btn-tr{
+ background-position: -15px 0;
+}
+
+.x-btn-click .x-btn-tc, .x-btn-menu-active .x-btn-tc, .x-btn-pressed .x-btn-tc{
+ background-position: 0 -12px;
+}
+
+.x-btn-click .x-btn-ml, .x-btn-menu-active .x-btn-ml, .x-btn-pressed .x-btn-ml{
+ background-position: -12px -24px;
+}
+
+.x-btn-click .x-btn-mr, .x-btn-menu-active .x-btn-mr, .x-btn-pressed .x-btn-mr{
+ background-position: -15px -24px;
+}
+
+.x-btn-click .x-btn-mc, .x-btn-menu-active .x-btn-mc, .x-btn-pressed .x-btn-mc{
+ background-position: 0 -3240px;
+}
+
+.x-btn-click .x-btn-bl, .x-btn-menu-active .x-btn-bl, .x-btn-pressed .x-btn-bl{
+ background-position: -12px -3px;
+}
+
+.x-btn-click .x-btn-br, .x-btn-menu-active .x-btn-br, .x-btn-pressed .x-btn-br{
+ background-position: -15px -3px;
+}
+
+.x-btn-click .x-btn-bc, .x-btn-menu-active .x-btn-bc, .x-btn-pressed .x-btn-bc{
+ background-position: 0 -21px;
+}
+
+.x-btn-disabled *{
+ cursor:default !important;
+}
+
+
+/* With a menu arrow */
+/* right */
+.x-btn-mc em.x-btn-arrow {
+ display:block;
+ background:transparent no-repeat right center;
+ padding-right:10px;
+}
+
+.x-btn-mc em.x-btn-split {
+ display:block;
+ background:transparent no-repeat right center;
+ padding-right:14px;
+}
+
+/* bottom */
+.x-btn-mc em.x-btn-arrow-bottom {
+ display:block;
+ background:transparent no-repeat center bottom;
+ padding-bottom:14px;
+}
+
+.x-btn-mc em.x-btn-split-bottom {
+ display:block;
+ background:transparent no-repeat center bottom;
+ padding-bottom:14px;
+}
+
+/* height adjustment class */
+.x-btn-as-arrow .x-btn-mc em {
+ display:block;
+ background-color:transparent;
+ padding-bottom:14px;
+}
+
+/* groups */
+.x-btn-group {
+ padding:1px;
+}
+
+.x-btn-group-header {
+ padding:2px;
+ text-align:center;
+}
+
+.x-btn-group-tc {
+ background: transparent repeat-x 0 0;
+ overflow:hidden;
+}
+
+.x-btn-group-tl {
+ background: transparent no-repeat 0 0;
+ padding-left:3px;
+ zoom:1;
+}
+
+.x-btn-group-tr {
+ background: transparent no-repeat right 0;
+ zoom:1;
+ padding-right:3px;
+}
+
+.x-btn-group-bc {
+ background: transparent repeat-x 0 bottom;
+ zoom:1;
+}
+
+.x-btn-group-bc .x-panel-footer {
+ zoom:1;
+}
+
+.x-btn-group-bl {
+ background: transparent no-repeat 0 bottom;
+ padding-left:3px;
+ zoom:1;
+}
+
+.x-btn-group-br {
+ background: transparent no-repeat right bottom;
+ padding-right:3px;
+ zoom:1;
+}
+
+.x-btn-group-mc {
+ border:0 none;
+ padding:1px 0 0 0;
+ margin:0;
+}
+
+.x-btn-group-mc .x-btn-group-body {
+ background-color:transparent;
+ border: 0 none;
+}
+
+.x-btn-group-ml {
+ background: transparent repeat-y 0 0;
+ padding-left:3px;
+ zoom:1;
+}
+
+.x-btn-group-mr {
+ background: transparent repeat-y right 0;
+ padding-right:3px;
+ zoom:1;
+}
+
+.x-btn-group-bc .x-btn-group-footer {
+ padding-bottom:6px;
+}
+
+.x-panel-nofooter .x-btn-group-bc {
+ height:3px;
+ font-size:0;
+ line-height:0;
+}
+
+.x-btn-group-bwrap {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-btn-group-body {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-btn-group-notitle .x-btn-group-tc {
+ background: transparent repeat-x 0 0;
+ overflow:hidden;
+ height:2px;
+}.x-toolbar{
+ border-style:solid;
+ border-width:0 0 1px 0;
+ display: block;
+ padding:2px;
+ background:repeat-x top left;
+ position:relative;
+ left:0;
+ top:0;
+ zoom:1;
+ overflow:hidden;
+}
+
+.x-toolbar-left {
+ width: 100%;
+}
+
+.x-toolbar .x-item-disabled .x-btn-icon {
+ opacity: .35;
+ -moz-opacity: .35;
+ filter: alpha(opacity=35);
+}
+
+.x-toolbar td {
+ vertical-align:middle;
+}
+
+.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{
+ white-space: nowrap;
+}
+
+.x-toolbar .x-item-disabled {
+ cursor:default;
+ opacity:.6;
+ -moz-opacity:.6;
+ filter:alpha(opacity=60);
+}
+
+.x-toolbar .x-item-disabled * {
+ cursor:default;
+}
+
+.x-toolbar .x-toolbar-cell {
+ vertical-align:middle;
+}
+
+.x-toolbar .x-btn-tl, .x-toolbar .x-btn-tr, .x-toolbar .x-btn-tc, .x-toolbar .x-btn-ml, .x-toolbar .x-btn-mr,
+.x-toolbar .x-btn-mc, .x-toolbar .x-btn-bl, .x-toolbar .x-btn-br, .x-toolbar .x-btn-bc
+{
+ background-position: 500px 500px;
+}
+
+/* These rules are duplicated from button.css to give priority of x-toolbar rules above */
+.x-toolbar .x-btn-over .x-btn-tl{
+ background-position: -6px 0;
+}
+
+.x-toolbar .x-btn-over .x-btn-tr{
+ background-position: -9px 0;
+}
+
+.x-toolbar .x-btn-over .x-btn-tc{
+ background-position: 0 -9px;
+}
+
+.x-toolbar .x-btn-over .x-btn-ml{
+ background-position: -6px -24px;
+}
+
+.x-toolbar .x-btn-over .x-btn-mr{
+ background-position: -9px -24px;
+}
+
+.x-toolbar .x-btn-over .x-btn-mc{
+ background-position: 0 -2168px;
+}
+
+.x-toolbar .x-btn-over .x-btn-bl{
+ background-position: -6px -3px;
+}
+
+.x-toolbar .x-btn-over .x-btn-br{
+ background-position: -9px -3px;
+}
+
+.x-toolbar .x-btn-over .x-btn-bc{
+ background-position: 0 -18px;
+}
+
+.x-toolbar .x-btn-click .x-btn-tl, .x-toolbar .x-btn-menu-active .x-btn-tl, .x-toolbar .x-btn-pressed .x-btn-tl{
+ background-position: -12px 0;
+}
+
+.x-toolbar .x-btn-click .x-btn-tr, .x-toolbar .x-btn-menu-active .x-btn-tr, .x-toolbar .x-btn-pressed .x-btn-tr{
+ background-position: -15px 0;
+}
+
+.x-toolbar .x-btn-click .x-btn-tc, .x-toolbar .x-btn-menu-active .x-btn-tc, .x-toolbar .x-btn-pressed .x-btn-tc{
+ background-position: 0 -12px;
+}
+
+.x-toolbar .x-btn-click .x-btn-ml, .x-toolbar .x-btn-menu-active .x-btn-ml, .x-toolbar .x-btn-pressed .x-btn-ml{
+ background-position: -12px -24px;
+}
+
+.x-toolbar .x-btn-click .x-btn-mr, .x-toolbar .x-btn-menu-active .x-btn-mr, .x-toolbar .x-btn-pressed .x-btn-mr{
+ background-position: -15px -24px;
+}
+
+.x-toolbar .x-btn-click .x-btn-mc, .x-toolbar .x-btn-menu-active .x-btn-mc, .x-toolbar .x-btn-pressed .x-btn-mc{
+ background-position: 0 -3240px;
+}
+
+.x-toolbar .x-btn-click .x-btn-bl, .x-toolbar .x-btn-menu-active .x-btn-bl, .x-toolbar .x-btn-pressed .x-btn-bl{
+ background-position: -12px -3px;
+}
+
+.x-toolbar .x-btn-click .x-btn-br, .x-toolbar .x-btn-menu-active .x-btn-br, .x-toolbar .x-btn-pressed .x-btn-br{
+ background-position: -15px -3px;
+}
+
+.x-toolbar .x-btn-click .x-btn-bc, .x-toolbar .x-btn-menu-active .x-btn-bc, .x-toolbar .x-btn-pressed .x-btn-bc{
+ background-position: 0 -21px;
+}
+
+.x-toolbar div.xtb-text{
+ padding:2px 2px 0;
+ line-height:16px;
+ display:block;
+}
+
+.x-toolbar .xtb-sep {
+ 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 .xtb-spacer {
+ width:2px;
+}
+
+/* Paging Toolbar */
+.x-tbar-page-number{
+ width:30px;
+ height:14px;
+}
+
+.ext-ie .x-tbar-page-number{
+ margin-top: 2px;
+}
+
+.x-paging-info {
+ position:absolute;
+ top:5px;
+ right: 8px;
+}
+
+/* floating */
+.x-toolbar-ct {
+ width:100%;
+}
+
+.x-toolbar-right td {
+ text-align: center;
+}
+
+.x-panel-tbar, .x-panel-bbar, .x-window-tbar, .x-window-bbar, .x-tab-panel-tbar, .x-tab-panel-bbar, .x-plain-tbar, .x-plain-bbar {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-toolbar-more .x-btn-small .x-btn-text{
+ height: 16px;
+ width: 12px;
+}
+
+.x-toolbar-more em.x-btn-arrow {
+ display:inline;
+ background-color:transparent;
+ padding-right:0;
+}
+
+.x-toolbar-more .x-btn-mc em.x-btn-arrow {
+ background-image: none;
+}
+
+div.x-toolbar-no-items {
+ color:gray !important;
+ padding:5px 10px !important;
+}
+
+/* fix ie toolbar form items */
+.ext-border-box .x-toolbar-cell .x-form-text {
+ margin-bottom:-1px !important;
+}
+
+.ext-border-box .x-toolbar-cell .x-form-field-wrap .x-form-text {
+ margin:0 !important;
+}
+
+.ext-ie .x-toolbar-cell .x-form-field-wrap {
+ height:21px;
+}
+
+.ext-ie .x-toolbar-cell .x-form-text {
+ position:relative;
+ top:-1px;
+}
+
+.ext-strict .ext-ie8 .x-toolbar-cell .x-form-field-trigger-wrap .x-form-text, .ext-strict .ext-ie .x-toolbar-cell .x-form-text {
+ top: 0px;
+}
+
+.x-toolbar-right td .x-form-field-trigger-wrap{
+ text-align: left;
+}
+
+.x-toolbar-cell .x-form-checkbox, .x-toolbar-cell .x-form-radio{
+ margin-top: 5px;
+}
+
+.x-toolbar-cell .x-form-cb-label{
+ vertical-align: bottom;
+ top: 1px;
+}
+
+.ext-ie .x-toolbar-cell .x-form-checkbox, .ext-ie .x-toolbar-cell .x-form-radio{
+ margin-top: 4px;
+}
+
+.ext-ie .x-toolbar-cell .x-form-cb-label{
+ top: 0;
+}
+/* Grid3 styles */
+.x-grid3 {
+ position:relative;
+ overflow:hidden;
+}
+
+.x-grid-panel .x-panel-body {
+ overflow:hidden !important;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+ border:1px solid;
+}
+
+.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{
+ -moz-outline: none;
+ 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;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+}
+
+.x-grid3-cell{
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+}
+
+.x-grid3-hd-row td {
+ line-height:15px;
+ vertical-align:middle;
+ border-left:1px solid;
+ border-right:1px solid;
+}
+
+.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;
+}
+
+/* ActionColumn, reduce padding to accommodate 16x16 icons in normal row height */
+.x-action-col-cell .x-grid3-cell-inner {
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.x-action-col-icon {
+ cursor: pointer;
+}
+
+.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;
+}
+
+/* IE Quirks to clip */
+.ext-ie .x-grid3-cell-inner, .ext-ie .x-grid3-hd-inner{
+ width:100%;
+}
+
+/* reverse above in strict mode */
+.ext-strict .x-grid3-cell-inner, .ext-strict .x-grid3-hd-inner{
+ width:auto;
+}
+
+.x-grid-row-loading {
+ background: no-repeat center center;
+}
+
+.x-grid-page {
+ overflow:hidden;
+}
+
+.x-grid3-row {
+ cursor: default;
+ border: 1px solid;
+ width:100%;
+}
+
+.x-grid3-row-over {
+ border:1px solid;
+ background: repeat-x left top;
+}
+
+.x-grid3-resize-proxy {
+ width:1px;
+ left:0;
+ 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;
+ position:absolute;
+ top:0;
+ height:100px;
+ overflow:hidden;
+ visibility:hidden;
+ border:0 none;
+ z-index:7;
+}
+
+.x-grid3-focus {
+ position:absolute;
+ left:0;
+ top:0;
+ width:1px;
+ height:1px;
+ line-height:1px;
+ font-size:1px;
+ -moz-outline:0 none;
+ outline:0 none;
+ -moz-user-select: text;
+ -khtml-user-select: text;
+ -webkit-user-select:ignore;
+}
+
+/* header styles */
+.x-grid3-header{
+ background: repeat-x 0 bottom;
+ cursor:default;
+ zoom:1;
+ padding:1px 0 0 0;
+}
+
+.x-grid3-header-pop {
+ border-left:1px solid;
+ float:right;
+ clear:none;
+}
+
+.x-grid3-header-pop-inner {
+ border-left:1px solid;
+ width:14px;
+ height:19px;
+ background: transparent 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;
+ text-align: left;
+}
+
+td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open {
+ border-left:1px solid;
+ border-right:1px solid;
+}
+
+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: 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, .sort-desc .x-grid3-sort-icon {
+ display: inline;
+}
+
+/* Header position fixes for IE strict mode */
+.ext-strict .ext-ie .x-grid3-header-inner, .ext-strict .ext-ie6 .x-grid3-hd {
+ position:relative;
+}
+
+.ext-strict .ext-ie6 .x-grid3-hd-inner{
+ position:static;
+}
+
+/* Body Styles */
+.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;
+ -webkit-user-select:ignore;
+}
+
+.x-grid3-split {
+ 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;
+}
+
+/* Column Reorder DD */
+.x-dd-drag-proxy .x-grid3-hd-inner{
+ background: repeat-x left bottom;
+ width:120px;
+ padding:3px;
+ border:1px solid;
+ 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;
+ background:transparent no-repeat left top;
+}
+
+/* Selection Styles */
+.x-grid3-row-selected {
+ border:1px dotted;
+}
+
+.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{
+ background: repeat-x 0 bottom !important;
+ vertical-align:middle !important;
+ padding:0;
+ border-top:1px solid;
+ border-bottom:none !important;
+ border-right:1px solid !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;
+ text-align:center;
+}
+
+/* dirty cells */
+.x-grid3-dirty-cell {
+ background: transparent no-repeat 0 0;
+}
+
+/* Grid Toolbars */
+.x-grid3-topbar, .x-grid3-bottombar{
+ 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;
+}
+
+/* Props Grid Styles */
+.x-props-grid .x-grid3-cell{
+ padding:1px;
+}
+
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{
+ background:transparent repeat-y -16px !important;
+ padding-left:12px;
+}
+
+.x-props-grid .x-grid3-body .x-grid3-td-name{
+ padding:1px;
+ padding-right:0;
+ border:0 none;
+ border-right:1px solid;
+}
+
+/* dd */
+.x-grid3-col-dd {
+ border:0 none;
+ padding:0;
+ background-color:transparent;
+}
+
+.x-dd-drag-ghost .x-grid3-dd-wrap {
+ padding:1px 3px 3px 1px;
+}
+
+.x-grid3-hd {
+ -moz-user-select:none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+}
+
+.x-grid3-hd-btn {
+ display:none;
+ position:absolute;
+ width:14px;
+ background: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;
+}
+
+/* Expanders */
+.x-grid3-body .x-grid3-td-expander {
+ background:transparent 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;
+}
+
+.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;
+}
+
+/* Checkers */
+.x-grid3-body .x-grid3-td-checker {
+ background:transparent 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;
+}
+
+.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,.x-grid3-row-checked .x-grid3-row-checker {
+ background-position:-23px 2px;
+}
+
+.x-grid3-hd-checker {
+ background-position:2px 1px;
+}
+
+.ext-border-box .x-grid3-hd-checker {
+ background-position:2px 3px;
+}
+
+.x-grid3-hd-checker-on .x-grid3-hd-checker {
+ background-position:-23px 1px;
+}
+
+.ext-border-box .x-grid3-hd-checker-on .x-grid3-hd-checker {
+ background-position:-23px 3px;
+}
+
+/* Numberer */
+.x-grid3-body .x-grid3-td-numberer {
+ background:transparent repeat-y right;
+}
+
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
+ padding:3px 5px 0 0 !important;
+ text-align:right;
+}
+
+/* Row Icon */
+
+.x-grid3-body .x-grid3-td-row-icon {
+ background:transparent repeat-y right;
+ vertical-align:top;
+ text-align:center;
+}
+
+.x-grid3-body .x-grid3-td-row-icon .x-grid3-cell-inner {
+ padding:0 !important;
+ background-position:center center;
+ background-repeat:no-repeat;
+ width:16px;
+ height:16px;
+ margin-left:2px;
+ margin-top:3px;
+}
+
+/* All specials */
+.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 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;
+}
+
+.x-grid3-check-col-on {
+ width:100%;
+ height:16px;
+ background-position:center center;
+ background-repeat:no-repeat;
+ background-color:transparent;
+}
+
+/* Grouping classes */
+.x-grid-group, .x-grid-group-body, .x-grid-group-hd {
+ zoom:1;
+}
+
+.x-grid-group-hd {
+ border-bottom: 2px solid;
+ cursor:pointer;
+ padding-top:6px;
+}
+
+.x-grid-group-hd div.x-grid-group-title {
+ background:transparent no-repeat 3px 3px;
+ padding:4px 4px 4px 17px;
+}
+
+.x-grid-group-collapsed .x-grid-group-body {
+ display:none;
+}
+
+.ext-ie6 .x-grid3 .x-editor .x-form-text, .ext-ie7 .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;
+}
+
+/* fix floating toolbar issue */
+.ext-ie7 .x-grid-panel .x-panel-bbar {
+ position:relative;
+}
+
+
+/* Reset position to static when Grid Panel has been framed */
+/* to resolve 'snapping' from top to bottom behavior. */
+/* @forumThread 86656 */
+.ext-ie7 .x-grid-panel .x-panel-mc .x-panel-bbar {
+ position: static;
+}
+
+.ext-ie6 .x-grid3-header {
+ position: relative;
+}
+
+/* Fix WebKit bug in Grids */
+.ext-webkit .x-grid-panel .x-panel-bwrap{
+ -webkit-user-select:none;
+}
+.ext-webkit .x-tbar-page-number{
+ -webkit-user-select:ignore;
+}
+/* end*/
+
+/* column lines */
+.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell {
+ padding-right:0;
+ border-right:1px solid;
+}
+.x-pivotgrid .x-grid3-header-offset table {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.x-pivotgrid .x-grid3-header-offset table td {
+ padding: 4px 3px 4px 5px;
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-size: 11px;
+ line-height: 13px;
+ font-family: tahoma;
+}
+
+.x-pivotgrid .x-grid3-row-headers {
+ display: block;
+ float: left;
+}
+
+.x-pivotgrid .x-grid3-row-headers table {
+ height: 100%;
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.x-pivotgrid .x-grid3-row-headers table td {
+ height: 18px;
+ padding: 2px 7px 0 0;
+ text-align: right;
+ text-overflow: ellipsis;
+ font-size: 11px;
+ font-family: tahoma;
+}
+
+.ext-gecko .x-pivotgrid .x-grid3-row-headers table td {
+ height: 21px;
+}
+
+.x-grid3-header-title {
+ top: 0%;
+ left: 0%;
+ position: absolute;
+ text-align: center;
+ vertical-align: middle;
+ font-family: tahoma;
+ font-size: 11px;
+ padding: auto 1px;
+ display: table-cell;
+}
+
+.x-grid3-header-title span {
+ position: absolute;
+ top: 50%;
+ left: 0%;
+ width: 100%;
+ margin-top: -6px;
+}.x-dd-drag-proxy{
+ position:absolute;
+ left:0;
+ top:0;
+ visibility:hidden;
+ z-index:15000;
+}
+
+.x-dd-drag-ghost{
+ -moz-opacity: 0.85;
+ opacity:.85;
+ filter: alpha(opacity=85);
+ border: 1px solid;
+ padding:3px;
+ padding-left:20px;
+ 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-view-selector {
+ position:absolute;
+ left:0;
+ top:0;
+ width:0;
+ border:1px dotted;
+ opacity: .5;
+ -moz-opacity: .5;
+ filter:alpha(opacity=50);
+ zoom:1;
+}.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;
+}
+
+.ext-strict .ext-ie8 .x-tree-node-indent img, .ext-strict .ext-ie8 .x-tree-node-icon, .ext-strict .ext-ie8 .x-tree-ec-icon {
+ vertical-align: top !important;
+}
+
+/* checkboxes */
+
+input.x-tree-node-cb {
+ margin-left:1px;
+ height: 19px;
+ vertical-align: bottom;
+}
+
+.ext-ie input.x-tree-node-cb {
+ margin-left:0;
+ margin-top: 1px;
+ width: 16px;
+ height: 16px;
+ vertical-align: middle;
+}
+
+.ext-strict .ext-ie8 input.x-tree-node-cb{
+ margin: 1px 1px;
+ height: 14px;
+ vertical-align: bottom;
+}
+
+.ext-strict .ext-ie8 input.x-tree-node-cb + a{
+ vertical-align: bottom;
+}
+
+.ext-opera input.x-tree-node-cb {
+ height: 14px;
+ vertical-align: middle;
+}
+
+.x-tree-noicon .x-tree-node-icon{
+ width:0; height:0;
+}
+
+/* No line styles */
+.x-tree-no-lines .x-tree-elbow{
+ background-color:transparent;
+}
+
+.x-tree-no-lines .x-tree-elbow-end{
+ background-color:transparent;
+}
+
+.x-tree-no-lines .x-tree-elbow-line{
+ background-color:transparent;
+}
+
+/* Arrows */
+.x-tree-arrows .x-tree-elbow{
+ background-color:transparent;
+}
+
+.x-tree-arrows .x-tree-elbow-plus{
+ background:transparent no-repeat 0 0;
+}
+
+.x-tree-arrows .x-tree-elbow-minus{
+ background:transparent no-repeat -16px 0;
+}
+
+.x-tree-arrows .x-tree-elbow-end{
+ background-color:transparent;
+}
+
+.x-tree-arrows .x-tree-elbow-end-plus{
+ background:transparent no-repeat 0 0;
+}
+
+.x-tree-arrows .x-tree-elbow-end-minus{
+ background:transparent no-repeat -16px 0;
+}
+
+.x-tree-arrows .x-tree-elbow-line{
+ background-color: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{
+ white-space: nowrap;
+}
+
+.x-tree-node-el {
+ line-height:18px;
+ cursor:pointer;
+}
+
+.x-tree-node a, .x-dd-drag-ghost a{
+ text-decoration:none;
+ -khtml-user-select:none;
+ -moz-user-select:none;
+ -webkit-user-select:ignore;
+ -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;
+ padding:1px 3px 1px 2px;
+}
+
+.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-color: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;
+}
+
+.x-tree-node div.x-tree-drag-insert-above{
+ border-top:1px dotted;
+}
+
+.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;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{
+ border-top:2px solid;
+}
+
+.x-tree-node .x-tree-drag-append a span{
+ border:1px dotted;
+}
+
+.x-dd-drag-ghost .x-tree-node-indent, .x-dd-drag-ghost .x-tree-ec-icon{
+ display:none !important;
+}
+
+/* Fix for ie rootVisible:false issue */
+.x-tree-root-ct {
+ zoom:1;
+}
+.x-date-picker {
+ border: 1px solid;
+ border-top:0 none;
+ 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: repeat-x 0 -83px;
+ overflow:hidden;
+}
+
+.x-date-middle .x-btn-tc,.x-date-middle .x-btn-tl,.x-date-middle .x-btn-tr,
+.x-date-middle .x-btn-mc,.x-date-middle .x-btn-ml,.x-date-middle .x-btn-mr,
+.x-date-middle .x-btn-bc,.x-date-middle .x-btn-bl,.x-date-middle .x-btn-br{
+ background:transparent !important;
+ vertical-align:middle;
+}
+
+.x-date-middle .x-btn-mc em.x-btn-arrow {
+ background:transparent 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;
+ width:130px; /* FF3 */
+}
+
+.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-item-disabled .x-date-right a:hover, .x-item-disabled .x-date-left a:hover{
+ -moz-opacity: 0.6;
+ opacity:.6;
+ filter: alpha(opacity=60);
+}
+
+.x-date-right a {
+ margin-right:2px;
+ text-decoration:none !important;
+}
+
+.x-date-left a{
+ margin-left:2px;
+ text-decoration:none !important;
+}
+
+table.x-date-inner {
+ width: 100%;
+ table-layout:fixed;
+}
+
+.ext-webkit table.x-date-inner{
+ /* Fix for webkit browsers */
+ width: 175px;
+}
+
+
+.x-date-inner th {
+ width:25px;
+}
+
+.x-date-inner th {
+ background: repeat-x left top;
+ text-align:right !important;
+ border-bottom: 1px solid;
+ 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;
+ text-align:right;
+ padding:0;
+}
+
+.x-date-inner a {
+ padding:2px 5px;
+ display:block;
+ text-decoration:none;
+ text-align:right;
+ zoom:1;
+}
+
+.x-date-inner .x-date-active{
+ cursor:pointer;
+ color:black;
+}
+
+.x-date-inner .x-date-selected a{
+ background: repeat-x left top;
+ border:1px solid;
+ padding:1px 4px;
+}
+
+.x-date-inner .x-date-today a{
+ border: 1px solid;
+ padding:1px 4px;
+}
+
+.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a {
+ text-decoration:none !important;
+}
+
+.x-date-bottom {
+ padding:4px;
+ border-top: 1px solid;
+ background: repeat-x left top;
+}
+
+.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{
+ text-decoration:none !important;
+}
+
+.x-item-disabled .x-date-inner a:hover{
+ background: none;
+}
+
+.x-date-inner .x-date-disabled a {
+ cursor:default;
+}
+
+.x-date-menu .x-menu-item {
+ padding:1px 24px 1px 4px;
+ white-space: nowrap;
+}
+
+.x-date-menu .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;
+ 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;
+ border:1px solid;
+ padding:1px 3px 1px;
+ cursor:pointer;
+}
+
+.x-date-mp-btns {
+ background: repeat-x left top;
+}
+
+.x-date-mp-btns td {
+ border-top: 1px solid;
+ 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;
+}
+
+td.x-date-mp-month a:hover,td.x-date-mp-year a:hover {
+ text-decoration:none;
+ cursor:pointer;
+}
+
+td.x-date-mp-sel a {
+ padding:1px 3px;
+ background: repeat-x left top;
+ border:1px solid;
+}
+
+.x-date-mp-ybtn a {
+ overflow:hidden;
+ width:15px;
+ height:15px;
+ cursor:pointer;
+ background:transparent 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;
+}.x-tip{
+ position: absolute;
+ top: 0;
+ left:0;
+ visibility: hidden;
+ z-index: 20002;
+ border:0 none;
+}
+
+.x-tip .x-tip-close{
+ height: 15px;
+ float:right;
+ width: 15px;
+ margin:0 0 2px 2px;
+ cursor:pointer;
+ display:none;
+}
+
+.x-tip .x-tip-tc {
+ background: transparent no-repeat 0 -62px;
+ padding-top:3px;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tip .x-tip-tl {
+ background: transparent no-repeat 0 0;
+ padding-left:6px;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tip .x-tip-tr {
+ background: transparent no-repeat right 0;
+ padding-right:6px;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tip .x-tip-bc {
+ background: transparent no-repeat 0 -121px;
+ height:3px;
+ overflow:hidden;
+}
+
+.x-tip .x-tip-bl {
+ background: transparent no-repeat 0 -59px;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-tip .x-tip-br {
+ background: transparent no-repeat right -59px;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-tip .x-tip-mc {
+ border:0 none;
+}
+
+.x-tip .x-tip-ml {
+ background: no-repeat 0 -124px;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-tip .x-tip-mr {
+ background: transparent 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;
+}
+
+.ext-border-box .x-tip .x-tip-header, .ext-border-box .x-tip .x-tip-tc{
+ line-height: 1px;
+}
+
+.x-tip .x-tip-header-text {
+ padding:0;
+ margin:0 0 2px 0;
+}
+
+.x-tip .x-tip-body {
+ margin:0 !important;
+ line-height:14px;
+ 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: repeat-x 0 -12px;
+ padding-top:6px;
+}
+
+.x-form-invalid-tip .x-tip-bc {
+ background: repeat-x 0 -18px;
+ height:6px;
+}
+
+.x-form-invalid-tip .x-tip-bl {
+ background: no-repeat 0 -6px;
+}
+
+.x-form-invalid-tip .x-tip-br {
+ background: no-repeat right -6px;
+}
+
+.x-form-invalid-tip .x-tip-body {
+ padding:2px;
+}
+
+.x-form-invalid-tip .x-tip-body {
+ padding-left:24px;
+ background:transparent no-repeat 2px 2px;
+}
+
+.x-tip-anchor {
+ position: absolute;
+ width: 9px;
+ height: 10px;
+ overflow:hidden;
+ background: transparent no-repeat 0 0;
+ zoom:1;
+}
+.x-tip-anchor-bottom {
+ background-position: -9px 0;
+}
+.x-tip-anchor-right {
+ background-position: -18px 0;
+ width: 10px;
+}
+.x-tip-anchor-left {
+ background-position: -28px 0;
+ width: 10px;
+}.x-menu {
+ z-index: 15000;
+ zoom: 1;
+ background: repeat-y;
+}
+
+.x-menu-floating{
+ border: 1px solid;
+}
+
+.x-menu a {
+ text-decoration: none !important;
+}
+
+.ext-ie .x-menu {
+ zoom:1;
+ overflow:hidden;
+}
+
+.x-menu-list{
+ padding: 2px;
+ background-color:transparent;
+ border:0 none;
+ overflow:hidden;
+ overflow-y: hidden;
+}
+
+.ext-strict .ext-ie .x-menu-list{
+ position: relative;
+}
+
+.x-menu li{
+ line-height:100%;
+}
+
+.x-menu li.x-menu-sep-li{
+ font-size:1px;
+ line-height:1px;
+}
+
+.x-menu-list-item{
+ white-space: nowrap;
+ display:block;
+ padding:1px;
+}
+
+.x-menu-item{
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+}
+
+.x-menu-item-arrow{
+ background:transparent no-repeat right;
+}
+
+.x-menu-sep {
+ display:block;
+ font-size:1px;
+ line-height:1px;
+ margin: 2px 3px;
+ border-bottom:1px solid;
+ overflow:hidden;
+}
+
+.x-menu-focus {
+ position:absolute;
+ left:-1px;
+ top:-1px;
+ width:1px;
+ height:1px;
+ line-height:1px;
+ font-size:1px;
+ -moz-outline:0 none;
+ outline:0 none;
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+ overflow:hidden;
+ display:block;
+}
+
+a.x-menu-item {
+ cursor: pointer;
+ display: block;
+ line-height: 16px;
+ outline-color: -moz-use-text-color;
+ outline-style: none;
+ outline-width: 0;
+ padding: 3px 21px 3px 27px;
+ position: relative;
+ text-decoration: none;
+ white-space: nowrap;
+}
+
+.x-menu-item-active {
+ background-repeat: repeat-x;
+ background-position: left bottom;
+ border-style:solid;
+ border-width: 1px 0;
+ margin:0 1px;
+ padding: 0;
+}
+
+.x-menu-item-active a.x-menu-item {
+ border-style:solid;
+ border-width:0 1px;
+ margin:0 -1px;
+}
+
+.x-menu-item-icon {
+ border: 0 none;
+ height: 16px;
+ padding: 0;
+ vertical-align: top;
+ width: 16px;
+ position: absolute;
+ left: 3px;
+ top: 3px;
+ margin: 0;
+ background-position:center;
+}
+
+.ext-ie .x-menu-item-icon {
+ left: -24px;
+}
+.ext-strict .x-menu-item-icon {
+ left: 3px;
+}
+
+.ext-ie6 .x-menu-item-icon {
+ left: -24px;
+}
+
+.ext-ie .x-menu-item-icon {
+ vertical-align: middle;
+}
+
+.x-menu-check-item .x-menu-item-icon{
+ background: transparent no-repeat center;
+}
+
+.x-menu-group-item .x-menu-item-icon{
+ background-color: transparent;
+}
+
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{
+ background: transparent no-repeat center;
+}
+
+.x-date-menu .x-menu-list{
+ padding: 0;
+}
+
+.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;
+ 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;
+}
+
+/*
+ * fixes separator visibility problem in IE 6
+ */
+.ext-strict .ext-ie6 .x-menu-sep-li {
+ padding: 3px 4px;
+}
+.ext-strict .ext-ie6 .x-menu-sep {
+ margin: 0;
+ height: 1px;
+}
+
+/*
+ * Fixes an issue with "fat" separators in webkit
+ */
+.ext-webkit .x-menu-sep{
+ height: 1px;
+}
+
+/*
+ * Ugly mess to remove the white border under the picker
+ */
+.ext-ie .x-date-menu{
+ height: 199px;
+}
+
+.ext-strict .ext-ie .x-date-menu, .ext-border-box .ext-ie8 .x-date-menu{
+ height: 197px;
+}
+
+.ext-strict .ext-ie7 .x-date-menu{
+ height: 195px;
+}
+
+.ext-strict .ext-ie8 .x-date-menu{
+ height: auto;
+}
+
+.x-cycle-menu .x-menu-item-checked {
+ border:1px dotted !important;
+ padding:0;
+}
+
+.x-menu .x-menu-scroller {
+ width: 100%;
+ background-repeat:no-repeat;
+ background-position:center;
+ height:8px;
+ line-height: 8px;
+ cursor:pointer;
+ margin: 0;
+ padding: 0;
+}
+
+.x-menu .x-menu-scroller-active{
+ height: 6px;
+ line-height: 6px;
+}
+
+.x-menu-list-item-indent{
+ padding-left: 27px;
+}/*
+ Creates rounded, raised boxes like on the Ext website - the markup isn't pretty:
+
+
+
+
YOUR TITLE HERE (optional)
+
YOUR CONTENT HERE
+
+
+
+ */
+
+.x-box-tl {
+ background: transparent no-repeat 0 0;
+ zoom:1;
+}
+
+.x-box-tc {
+ height: 8px;
+ background: transparent repeat-x 0 0;
+ overflow: hidden;
+}
+
+.x-box-tr {
+ background: transparent no-repeat right -8px;
+}
+
+.x-box-ml {
+ background: transparent repeat-y 0;
+ padding-left: 4px;
+ overflow: hidden;
+ zoom:1;
+}
+
+.x-box-mc {
+ background: repeat-x 0 -16px;
+ padding: 4px 10px;
+}
+
+.x-box-mc h3 {
+ margin: 0 0 4px 0;
+ zoom:1;
+}
+
+.x-box-mr {
+ background: transparent repeat-y right;
+ padding-right: 4px;
+ overflow: hidden;
+}
+
+.x-box-bl {
+ background: transparent no-repeat 0 -16px;
+ zoom:1;
+}
+
+.x-box-bc {
+ background: transparent repeat-x 0 -8px;
+ height: 8px;
+ overflow: hidden;
+}
+
+.x-box-br {
+ background: transparent 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-combo-list {
+ border:1px solid;
+ zoom:1;
+ overflow:hidden;
+}
+
+.x-combo-list-inner {
+ overflow:auto;
+ position:relative; /* for calculating scroll offsets */
+ zoom:1;
+ overflow-x:hidden;
+}
+
+.x-combo-list-hd {
+ border-bottom:1px solid;
+ padding:3px;
+}
+
+.x-resizable-pinned .x-combo-list-inner {
+ border-bottom:1px solid;
+}
+
+.x-combo-list-item {
+ padding:2px;
+ border:1px solid;
+ white-space: nowrap;
+ overflow:hidden;
+ text-overflow: ellipsis;
+}
+
+.x-combo-list .x-combo-selected{
+ border:1px dotted !important;
+ cursor:pointer;
+}
+
+.x-combo-list .x-toolbar {
+ border-top:1px solid;
+ border-bottom:0 none;
+}.x-panel {
+ border-style: solid;
+ border-width:0;
+}
+
+.x-panel-header {
+ overflow:hidden;
+ zoom:1;
+ padding:5px 3px 4px 5px;
+ border:1px solid;
+ line-height: 15px;
+ background: transparent repeat-x 0 -1px;
+}
+
+.x-panel-body {
+ border:1px solid;
+ border-top:0 none;
+ overflow:hidden;
+ position: relative; /* added for item scroll positioning */
+}
+
+.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar {
+ border:1px solid;
+ 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;
+ border-bottom: 0 none;
+}
+
+.x-panel-body-noheader, .x-panel-mc .x-panel-body {
+ border-top:1px solid;
+}
+
+.x-panel-header {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-panel-tl .x-panel-header {
+ padding:5px 0 4px 0;
+ border:0 none;
+ background:transparent no-repeat;
+}
+
+.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 repeat-x 0 0;
+ overflow:hidden;
+}
+
+/* fix ie7 strict mode bug */
+.ext-strict .ext-ie7 .x-panel-tc {
+ overflow: visible;
+}
+
+.x-panel-tl {
+ background: transparent no-repeat 0 0;
+ padding-left:6px;
+ zoom:1;
+ border-bottom:1px solid;
+}
+
+.x-panel-tr {
+ background: transparent no-repeat right 0;
+ zoom:1;
+ padding-right:6px;
+}
+
+.x-panel-bc {
+ background: transparent repeat-x 0 bottom;
+ zoom:1;
+}
+
+.x-panel-bc .x-panel-footer {
+ zoom:1;
+}
+
+.x-panel-bl {
+ background: transparent no-repeat 0 bottom;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-panel-br {
+ background: transparent no-repeat right bottom;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-panel-mc {
+ border:0 none;
+ padding:0;
+ margin:0;
+ padding-top:6px;
+}
+
+.x-panel-mc .x-panel-body {
+ background-color:transparent;
+ border: 0 none;
+}
+
+.x-panel-ml {
+ background: repeat-y 0 0;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-panel-mr {
+ background: transparent repeat-y right 0;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-panel-bc .x-panel-footer {
+ padding-bottom:6px;
+}
+
+.x-panel-nofooter .x-panel-bc, .x-panel-nofooter .x-window-bc {
+ height:6px;
+ font-size:0;
+ line-height:0;
+}
+
+.x-panel-bwrap {
+ overflow:hidden;
+ zoom:1;
+ left:0;
+ top:0;
+}
+.x-panel-body {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-panel-collapsed .x-resizable-handle{
+ display:none;
+}
+
+.ext-gecko .x-panel-animated div {
+ overflow:hidden !important;
+}
+
+/* Plain */
+.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;
+}
+
+/* Tools */
+.x-tool {
+ overflow:hidden;
+ width:15px;
+ height:15px;
+ float:right;
+ cursor:pointer;
+ background:transparent no-repeat;
+ margin-left:2px;
+}
+
+/* expand / collapse tools */
+.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-prev {
+ background-position:0 -105px;
+}
+
+.x-tool-prev-over {
+ background-position:-15px -105px;
+}
+
+.x-tool-next {
+ background-position:0 -120px;
+}
+
+.x-tool-next-over {
+ background-position:-15px -120px;
+}
+
+.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-down {
+ background-position:0 -195px;
+}
+
+.x-tool-down-over {
+ background-position:-15px -195px;
+}
+
+.x-tool-up {
+ background-position:0 -210px;
+}
+
+.x-tool-up-over {
+ background-position:-15px -210px;
+}
+
+.x-tool-refresh {
+ background-position:0 -225px;
+}
+
+.x-tool-refresh-over {
+ background-position:-15px -225px;
+}
+
+.x-tool-plus {
+ background-position:0 -240px;
+}
+
+.x-tool-plus-over {
+ background-position:-15px -240px;
+}
+
+.x-tool-minus {
+ background-position:0 -255px;
+}
+
+.x-tool-minus-over {
+ background-position:-15px -255px;
+}
+
+.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-tool-expand {
+ background-position:0 -330px;
+}
+
+.x-tool-expand-over {
+ background-position:-15px -330px;
+}
+
+.x-tool-collapse {
+ background-position:0 -345px;
+}
+
+.x-tool-collapse-over {
+ background-position:-15px -345px;
+}
+
+.x-tool-resize {
+ background-position:0 -360px;
+}
+
+.x-tool-resize-over {
+ background-position:-15px -360px;
+}
+
+.x-tool-move {
+ background-position:0 -375px;
+}
+
+.x-tool-move-over {
+ background-position:-15px -375px;
+}
+
+/* Ghosting */
+.x-panel-ghost {
+ 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;
+ border-top:0 none;
+ display:block;
+}
+
+.x-panel-ghost * {
+ cursor:move !important;
+}
+
+.x-panel-dd-spacer {
+ border:2px dashed;
+}
+
+/* Buttons */
+.x-panel-btns {
+ padding:5px;
+ overflow:hidden;
+}
+
+.x-panel-btns td.x-toolbar-cell{
+ padding:3px;
+}
+
+.x-panel-btns .x-btn-focus .x-btn-left{
+ background-position:0 -147px;
+}
+
+.x-panel-btns .x-btn-focus .x-btn-right{
+ background-position:0 -168px;
+}
+
+.x-panel-btns .x-btn-focus .x-btn-center{
+ background-position:0 -189px;
+}
+
+.x-panel-btns .x-btn-over .x-btn-left{
+ background-position:0 -63px;
+}
+
+.x-panel-btns .x-btn-over .x-btn-right{
+ background-position:0 -84px;
+}
+
+.x-panel-btns .x-btn-over .x-btn-center{
+ background-position:0 -105px;
+}
+
+.x-panel-btns .x-btn-click .x-btn-center{
+ background-position:0 -126px;
+}
+
+.x-panel-btns .x-btn-click .x-btn-right{
+ background-position:0 -84px;
+}
+
+.x-panel-btns .x-btn-click .x-btn-left{
+ background-position:0 -63px;
+}
+
+.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{
+ white-space: nowrap;
+}
+/**
+ * W3C Suggested Default style sheet for HTML 4
+ * http://www.w3.org/TR/CSS21/sample.html
+ *
+ * Resets for Ext.Panel @cfg normal: true
+ */
+.x-panel-reset .x-panel-body html,
+.x-panel-reset .x-panel-body address,
+.x-panel-reset .x-panel-body blockquote,
+.x-panel-reset .x-panel-body body,
+.x-panel-reset .x-panel-body dd,
+.x-panel-reset .x-panel-body div,
+.x-panel-reset .x-panel-body dl,
+.x-panel-reset .x-panel-body dt,
+.x-panel-reset .x-panel-body fieldset,
+.x-panel-reset .x-panel-body form,
+.x-panel-reset .x-panel-body frame, frameset,
+.x-panel-reset .x-panel-body h1,
+.x-panel-reset .x-panel-body h2,
+.x-panel-reset .x-panel-body h3,
+.x-panel-reset .x-panel-body h4,
+.x-panel-reset .x-panel-body h5,
+.x-panel-reset .x-panel-body h6,
+.x-panel-reset .x-panel-body noframes,
+.x-panel-reset .x-panel-body ol,
+.x-panel-reset .x-panel-body p,
+.x-panel-reset .x-panel-body ul,
+.x-panel-reset .x-panel-body center,
+.x-panel-reset .x-panel-body dir,
+.x-panel-reset .x-panel-body hr,
+.x-panel-reset .x-panel-body menu,
+.x-panel-reset .x-panel-body pre { display: block }
+.x-panel-reset .x-panel-body li { display: list-item }
+.x-panel-reset .x-panel-body head { display: none }
+.x-panel-reset .x-panel-body table { display: table }
+.x-panel-reset .x-panel-body tr { display: table-row }
+.x-panel-reset .x-panel-body thead { display: table-header-group }
+.x-panel-reset .x-panel-body tbody { display: table-row-group }
+.x-panel-reset .x-panel-body tfoot { display: table-footer-group }
+.x-panel-reset .x-panel-body col { display: table-column }
+.x-panel-reset .x-panel-body colgroup { display: table-column-group }
+.x-panel-reset .x-panel-body td,
+.x-panel-reset .x-panel-body th { display: table-cell }
+.x-panel-reset .x-panel-body caption { display: table-caption }
+.x-panel-reset .x-panel-body th { font-weight: bolder; text-align: center }
+.x-panel-reset .x-panel-body caption { text-align: center }
+.x-panel-reset .x-panel-body body { margin: 8px }
+.x-panel-reset .x-panel-body h1 { font-size: 2em; margin: .67em 0 }
+.x-panel-reset .x-panel-body h2 { font-size: 1.5em; margin: .75em 0 }
+.x-panel-reset .x-panel-body h3 { font-size: 1.17em; margin: .83em 0 }
+.x-panel-reset .x-panel-body h4,
+.x-panel-reset .x-panel-body p,
+.x-panel-reset .x-panel-body blockquote,
+.x-panel-reset .x-panel-body ul,
+.x-panel-reset .x-panel-body fieldset,
+.x-panel-reset .x-panel-body form,
+.x-panel-reset .x-panel-body ol,
+.x-panel-reset .x-panel-body dl,
+.x-panel-reset .x-panel-body dir,
+.x-panel-reset .x-panel-body menu { margin: 1.12em 0 }
+.x-panel-reset .x-panel-body h5 { font-size: .83em; margin: 1.5em 0 }
+.x-panel-reset .x-panel-body h6 { font-size: .75em; margin: 1.67em 0 }
+.x-panel-reset .x-panel-body h1,
+.x-panel-reset .x-panel-body h2,
+.x-panel-reset .x-panel-body h3,
+.x-panel-reset .x-panel-body h4,
+.x-panel-reset .x-panel-body h5,
+.x-panel-reset .x-panel-body h6,
+.x-panel-reset .x-panel-body b,
+.x-panel-reset .x-panel-body strong { font-weight: bolder }
+.x-panel-reset .x-panel-body blockquote { margin-left: 40px; margin-right: 40px }
+.x-panel-reset .x-panel-body i,
+.x-panel-reset .x-panel-body cite,
+.x-panel-reset .x-panel-body em,
+.x-panel-reset .x-panel-body var,
+.x-panel-reset .x-panel-body address { font-style: italic }
+.x-panel-reset .x-panel-body pre,
+.x-panel-reset .x-panel-body tt,
+.x-panel-reset .x-panel-body code,
+.x-panel-reset .x-panel-body kbd,
+.x-panel-reset .x-panel-body samp { font-family: monospace }
+.x-panel-reset .x-panel-body pre { white-space: pre }
+.x-panel-reset .x-panel-body button,
+.x-panel-reset .x-panel-body textarea,
+.x-panel-reset .x-panel-body input,
+.x-panel-reset .x-panel-body select { display: inline-block }
+.x-panel-reset .x-panel-body big { font-size: 1.17em }
+.x-panel-reset .x-panel-body small,
+.x-panel-reset .x-panel-body sub,
+.x-panel-reset .x-panel-body sup { font-size: .83em }
+.x-panel-reset .x-panel-body sub { vertical-align: sub }
+.x-panel-reset .x-panel-body sup { vertical-align: super }
+.x-panel-reset .x-panel-body table { border-spacing: 2px; }
+.x-panel-reset .x-panel-body thead,
+.x-panel-reset .x-panel-body tbody,
+.x-panel-reset .x-panel-body tfoot { vertical-align: middle }
+.x-panel-reset .x-panel-body td,
+.x-panel-reset .x-panel-body th { vertical-align: inherit }
+.x-panel-reset .x-panel-body s,
+.x-panel-reset .x-panel-body strike,
+.x-panel-reset .x-panel-body del { text-decoration: line-through }
+.x-panel-reset .x-panel-body hr { border: 1px inset }
+.x-panel-reset .x-panel-body ol,
+.x-panel-reset .x-panel-body ul,
+.x-panel-reset .x-panel-body dir,
+.x-panel-reset .x-panel-body menu,
+.x-panel-reset .x-panel-body dd { margin-left: 40px }
+.x-panel-reset .x-panel-body ul, .x-panel-reset .x-panel-body menu, .x-panel-reset .x-panel-body dir { list-style-type: disc;}
+.x-panel-reset .x-panel-body ol { list-style-type: decimal }
+.x-panel-reset .x-panel-body ol ul,
+.x-panel-reset .x-panel-body ul ol,
+.x-panel-reset .x-panel-body ul ul,
+.x-panel-reset .x-panel-body ol ol { margin-top: 0; margin-bottom: 0 }
+.x-panel-reset .x-panel-body u,
+.x-panel-reset .x-panel-body ins { text-decoration: underline }
+.x-panel-reset .x-panel-body br:before { content: "\A" }
+.x-panel-reset .x-panel-body :before, .x-panel-reset .x-panel-body :after { white-space: pre-line }
+.x-panel-reset .x-panel-body center { text-align: center }
+.x-panel-reset .x-panel-body :link, .x-panel-reset .x-panel-body :visited { text-decoration: underline }
+.x-panel-reset .x-panel-body :focus { outline: invert dotted thin }
+
+/* Begin bidirectionality settings (do not change) */
+.x-panel-reset .x-panel-body BDO[DIR="ltr"] { direction: ltr; unicode-bidi: bidi-override }
+.x-panel-reset .x-panel-body BDO[DIR="rtl"] { direction: rtl; unicode-bidi: bidi-override }
+.x-window {
+ zoom:1;
+}
+
+.x-window .x-window-handle {
+ opacity:0;
+ -moz-opacity:0;
+ filter:alpha(opacity=0);
+}
+
+.x-window-proxy {
+ border:1px solid;
+ 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;
+ left:0;top:0;
+}
+
+.x-window-tl .x-window-header {
+ padding:5px 0 4px 0;
+}
+
+.x-window-header-text {
+ cursor:pointer;
+}
+
+.x-window-tc {
+ background: transparent repeat-x 0 0;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-window-tl {
+ background: transparent no-repeat 0 0;
+ padding-left:6px;
+ zoom:1;
+ z-index:1;
+ position:relative;
+}
+
+.x-window-tr {
+ background: transparent no-repeat right 0;
+ padding-right:6px;
+}
+
+.x-window-bc {
+ background: transparent 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 no-repeat 0 bottom;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-window-br {
+ background: transparent no-repeat right bottom;
+ padding-right:6px;
+ zoom:1;
+}
+
+.x-window-mc {
+ border:1px solid;
+ padding:0;
+ margin:0;
+}
+
+.x-window-ml {
+ background: transparent repeat-y 0 0;
+ padding-left:6px;
+ zoom:1;
+}
+
+.x-window-mr {
+ background: transparent repeat-y right 0;
+ padding-right:6px;
+ zoom:1;
+}
+
+.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;
+}
+
+.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;
+ 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-color:transparent;
+}
+
+.x-panel-ghost .x-window-tl {
+ border-bottom:1px solid;
+}
+
+.x-panel-collapsed .x-window-tl {
+ border-bottom:1px solid;
+}
+
+.x-window-maximized-ct {
+ overflow:hidden;
+}
+
+.x-window-maximized .x-window-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;
+}
+
+.ext-webkit .x-dlg-focus{
+ width: 1px;
+ height: 1px;
+}
+
+.x-dlg-mask{
+ z-index:10000;
+ display:none;
+ position:absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity:.50;
+ filter: alpha(opacity=50);
+}
+
+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 {
+ border: 1px solid;
+}
+
+.x-window-plain .x-window-body {
+ border: 1px solid;
+ background:transparent !important;
+}.x-html-editor-wrap {
+ border:1px solid;
+}
+
+.x-html-editor-tb .x-btn-text {
+ background:transparent no-repeat;
+}
+
+.x-html-editor-tb .x-edit-bold, .x-menu-item img.x-edit-bold {
+ background-position:0 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-italic, .x-menu-item img.x-edit-italic {
+ background-position:-16px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-underline, .x-menu-item img.x-edit-underline {
+ background-position:-32px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-forecolor, .x-menu-item img.x-edit-forecolor {
+ background-position:-160px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-backcolor, .x-menu-item img.x-edit-backcolor {
+ background-position:-176px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-justifyleft, .x-menu-item img.x-edit-justifyleft {
+ background-position:-112px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-justifycenter, .x-menu-item img.x-edit-justifycenter {
+ background-position:-128px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-justifyright, .x-menu-item img.x-edit-justifyright {
+ background-position:-144px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-insertorderedlist, .x-menu-item img.x-edit-insertorderedlist {
+ background-position:-80px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-insertunorderedlist, .x-menu-item img.x-edit-insertunorderedlist {
+ background-position:-96px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-increasefontsize, .x-menu-item img.x-edit-increasefontsize {
+ background-position:-48px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-decreasefontsize, .x-menu-item img.x-edit-decreasefontsize {
+ background-position:-64px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-sourceedit, .x-menu-item img.x-edit-sourceedit {
+ background-position:-192px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.x-html-editor-tb .x-edit-createlink, .x-menu-item img.x-edit-createlink {
+ background-position:-208px 0;
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}
+
+.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 0 1px;
+ border-style:solid;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+ border-width:0 0 1px;
+ border-style:solid;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+ border-width:1px 0 0 0;
+ border-style:solid;
+}
+
+.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-width: 0 0 1px 0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-footer-noborder {
+ border-width: 1px 0 0 0;
+}
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+ border-width: 1px 0 0 0;
+ border-style:solid;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+ border-width:0 0 1px;
+ border-style:solid;
+}.x-border-layout-ct {
+ position: relative;
+}
+
+.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 2px;
+}
+
+.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 {
+ padding-top:4px;
+ padding-bottom:3px;
+ border-top:0 none;
+ background: transparent repeat-x 0 -9px;
+}
+
+.x-layout-collapsed{
+ position:absolute;
+ left:-10000px;
+ top:-10000px;
+ visibility:hidden;
+ width:20px;
+ height:20px;
+ overflow:hidden;
+ border:1px solid;
+ z-index:20;
+}
+
+.ext-border-box .x-layout-collapsed{
+ width:22px;
+ height:22px;
+}
+
+.x-layout-collapsed-over{
+ cursor:pointer;
+}
+
+.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;
+}
+
+/* IE6 strict won't drag w/out a color */
+.ext-strict .ext-ie6 .x-layout-split{
+ background-color: #fff !important;
+ filter: alpha(opacity=1);
+}
+
+.x-layout-split-h{
+ background-image:url(../images/default/s.gif);
+ background-position: left;
+}
+
+.x-layout-split-v{
+ background-image:url(../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-column-inner {
+ overflow:hidden;
+ zoom:1;
+}
+
+/* mini mode */
+.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%;
+}
+
+.x-layout-split-east .x-layout-mini {
+ top:48%;
+}
+
+.x-layout-split-north .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+}
+
+.x-layout-split-south .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+}
+
+.x-layout-cmini-west .x-layout-mini {
+ top:48%;
+}
+
+.x-layout-cmini-east .x-layout-mini {
+ top:48%;
+}
+
+.x-layout-cmini-north .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+}
+
+.x-layout-cmini-south .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+}
+
+.x-layout-cmini-west, .x-layout-cmini-east {
+ border:0 none;
+ width:5px !important;
+ padding:0;
+ background-color:transparent;
+}
+
+.x-layout-cmini-north, .x-layout-cmini-south {
+ border:0 none;
+ height:5px !important;
+ padding:0;
+ background-color: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-box-layout-ct {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-box-inner {
+ overflow:hidden;
+ zoom:1;
+ position:relative;
+ left:0;
+ top:0;
+}
+
+.x-box-item {
+ position:absolute;
+ left:0;
+ top:0;
+}.x-progress-wrap {
+ border:1px solid;
+ overflow:hidden;
+}
+
+.x-progress-inner {
+ height:18px;
+ background:repeat-x;
+ position:relative;
+}
+
+.x-progress-bar {
+ height:18px;
+ float:left;
+ width:0;
+ background: repeat-x left center;
+ border-top:1px solid;
+ border-bottom:1px solid;
+ border-right:1px solid;
+}
+
+.x-progress-text {
+ padding:1px 5px;
+ overflow:hidden;
+ position:absolute;
+ left:0;
+ text-align:center;
+}
+
+.x-progress-text-back {
+ line-height:16px;
+}
+
+.ext-ie .x-progress-text-back {
+ line-height:15px;
+}
+
+.ext-strict .ext-ie7 .x-progress-text-back{
+ width: 100%;
+}
+.x-list-header{
+ background: repeat-x 0 bottom;
+ cursor:default;
+ zoom:1;
+ height:22px;
+}
+
+.x-list-header-inner div {
+ display:block;
+ float:left;
+ overflow:hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.x-list-header-inner div em {
+ display:block;
+ border-left:1px solid;
+ padding:4px 4px;
+ overflow:hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ line-height:14px;
+}
+
+.x-list-body {
+ overflow:auto;
+ overflow-x:hidden;
+ overflow-y:auto;
+ zoom:1;
+ float: left;
+ width: 100%;
+}
+
+.x-list-body dl {
+ zoom:1;
+}
+
+.x-list-body dt {
+ display:block;
+ float:left;
+ overflow:hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ cursor:pointer;
+ zoom:1;
+}
+
+.x-list-body dt em {
+ display:block;
+ padding:3px 4px;
+ overflow:hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+}
+
+.x-list-resizer {
+ border-left:1px solid;
+ border-right:1px solid;
+ position:absolute;
+ left:0;
+ top:0;
+}
+
+.x-list-header-inner em.sort-asc {
+ background: transparent no-repeat center 0;
+ border-style:solid;
+ border-width: 0 1px 1px;
+ padding-bottom:3px;
+}
+
+.x-list-header-inner em.sort-desc {
+ background: transparent no-repeat center -23px;
+ border-style:solid;
+ border-width: 0 1px 1px;
+ padding-bottom:3px;
+}
+
+/* Shared styles */
+.x-slider {
+ zoom:1;
+}
+
+.x-slider-inner {
+ position:relative;
+ left:0;
+ top:0;
+ overflow:visible;
+ zoom:1;
+}
+
+.x-slider-focus {
+ position:absolute;
+ left:0;
+ top:0;
+ width:1px;
+ height:1px;
+ line-height:1px;
+ font-size:1px;
+ -moz-outline:0 none;
+ outline:0 none;
+ -moz-user-select: none;
+ -khtml-user-select:none;
+ -webkit-user-select:ignore;
+ display:block;
+ overflow:hidden;
+}
+
+/* Horizontal styles */
+.x-slider-horz {
+ padding-left:7px;
+ background:transparent no-repeat 0 -22px;
+}
+
+.x-slider-horz .x-slider-end {
+ padding-right:7px;
+ zoom:1;
+ background:transparent no-repeat right -44px;
+}
+
+.x-slider-horz .x-slider-inner {
+ background:transparent repeat-x 0 0;
+ height:22px;
+}
+
+.x-slider-horz .x-slider-thumb {
+ width:14px;
+ height:15px;
+ position:absolute;
+ left:0;
+ top:3px;
+ background:transparent no-repeat 0 0;
+}
+
+.x-slider-horz .x-slider-thumb-over {
+ background-position: -14px -15px;
+}
+
+.x-slider-horz .x-slider-thumb-drag {
+ background-position: -28px -30px;
+}
+
+/* Vertical styles */
+.x-slider-vert {
+ padding-top:7px;
+ background:transparent no-repeat -44px 0;
+ width:22px;
+}
+
+.x-slider-vert .x-slider-end {
+ padding-bottom:7px;
+ zoom:1;
+ background:transparent no-repeat -22px bottom;
+}
+
+.x-slider-vert .x-slider-inner {
+ background:transparent repeat-y 0 0;
+}
+
+.x-slider-vert .x-slider-thumb {
+ width:15px;
+ height:14px;
+ position:absolute;
+ left:3px;
+ bottom:0;
+ background:transparent no-repeat 0 0;
+}
+
+.x-slider-vert .x-slider-thumb-over {
+ background-position: -15px -14px;
+}
+
+.x-slider-vert .x-slider-thumb-drag {
+ background-position: -30px -28px;
+}.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-input {
+ margin-top:4px;
+ width:95%;
+}
+
+.x-window-dlg .ext-mb-textarea {
+ margin-top:4px;
+}
+
+.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 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;
+}
+
+.x-window-dlg .x-dlg-icon .ext-mb-content{
+ zoom: 1;
+ margin-left: 47px;
+}
+
+.x-window-dlg .ext-mb-info, .x-window-dlg .ext-mb-warning, .x-window-dlg .ext-mb-question, .x-window-dlg .ext-mb-error {
+ background:transparent no-repeat top left;
+}
+
+.ext-gecko2 .ext-mb-fix-cursor {
+ overflow:auto;
+}.ext-el-mask {
+ background-color: #ccc;
+}
+
+.ext-el-mask-msg {
+ border-color:#6593cf;
+ background-color:#c3daf9;
+ background-image:url(../images/default/box/tb-blue.gif);
+}
+.ext-el-mask-msg div {
+ background-color: #eee;
+ border-color:#a3bad9;
+ color:#222;
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-mask-loading div {
+ background-color:#fbfbfb;
+ background-image:url(../images/default/grid/loading.gif);
+}
+
+.x-item-disabled {
+ color: gray;
+}
+
+.x-item-disabled * {
+ color: gray !important;
+}
+
+.x-splitbar-proxy {
+ background-color: #aaa;
+}
+
+.x-color-palette a {
+ border-color:#fff;
+}
+
+.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel {
+ border-color:#8bb8f3;
+ background-color: #deecfd;
+}
+
+/*
+.x-color-palette em:hover, .x-color-palette span:hover{
+ background-color: #deecfd;
+}
+*/
+
+.x-color-palette em {
+ border-color:#aca899;
+}
+
+.x-ie-shadow {
+ background-color:#777;
+}
+
+.x-shadow .xsmc {
+ background-image: url(../images/default/shadow-c.png);
+}
+
+.x-shadow .xsml, .x-shadow .xsmr {
+ background-image: url(../images/default/shadow-lr.png);
+}
+
+.x-shadow .xstl, .x-shadow .xstc, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbc, .x-shadow .xsbr{
+ background-image: url(../images/default/shadow.png);
+}
+
+.loading-indicator {
+ font-size: 11px;
+ background-image: url(../images/default/grid/loading.gif);
+}
+
+.x-spotlight {
+ background-color: #ccc;
+}
+.x-tab-panel-header, .x-tab-panel-footer {
+ background-color: #deecfd;
+ border-color:#8db2e3;
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-tab-panel-header, .x-tab-panel-footer {
+ border-color:#8db2e3;
+}
+
+ul.x-tab-strip-top{
+ background-color:#cedff5;
+ background-image: url(../images/default/tabs/tab-strip-bg.gif);
+ border-bottom-color:#8db2e3;
+}
+
+ul.x-tab-strip-bottom{
+ background-color:#cedff5;
+ background-image: url(../images/default/tabs/tab-strip-btm-bg.gif);
+ border-top-color:#8db2e3;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer,
+.x-tab-panel-footer-plain .x-tab-strip-spacer {
+ border-color:#8db2e3;
+ background-color: #deecfd;
+}
+
+.x-tab-strip span.x-tab-strip-text {
+ font:normal 11px tahoma,arial,helvetica;
+ color:#416aa3;
+}
+
+.x-tab-strip-over span.x-tab-strip-text {
+ color:#15428b;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+ color:#15428b;
+ font-weight:bold;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+ color:#aaaaaa;
+}
+
+.x-tab-strip-top .x-tab-right, .x-tab-strip-top .x-tab-left, .x-tab-strip-top .x-tab-strip-inner{
+ background-image: url(../images/default/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ background-image: url(../images/default/tabs/tab-btm-inactive-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background-image: url(../images/default/tabs/tab-btm-inactive-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-over .x-tab-right {
+ background-image: url(../images/default/tabs/tab-btm-over-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-over .x-tab-left {
+ background-image: url(../images/default/tabs/tab-btm-over-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background-image: url(../images/default/tabs/tab-btm-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background-image: url(../images/default/tabs/tab-btm-left-bg.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ background-image:url(../images/default/tabs/tab-close.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
+ background-image:url(../images/default/tabs/tab-close.gif);
+}
+
+.x-tab-panel-body {
+ border-color:#8db2e3;
+ background-color:#fff;
+}
+
+.x-tab-panel-body-top {
+ border-top: 0 none;
+}
+
+.x-tab-panel-body-bottom {
+ border-bottom: 0 none;
+}
+
+.x-tab-scroller-left {
+ background-image:url(../images/default/tabs/scroll-left.gif);
+ border-bottom-color:#8db2e3;
+}
+
+.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-image:url(../images/default/tabs/scroll-right.gif);
+ border-bottom-color:#8db2e3;
+}
+
+.x-tab-panel-bbar .x-toolbar, .x-tab-panel-tbar .x-toolbar {
+ border-color:#99bbe8;
+}.x-form-field {
+ font:normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-text, textarea.x-form-field {
+ background-color:#fff;
+ background-image:url(../images/default/form/text-bg.gif);
+ border-color:#b5b8c8;
+}
+
+.x-form-select-one {
+ background-color:#fff;
+ border-color:#b5b8c8;
+}
+
+.x-form-check-group-label {
+ border-bottom: 1px solid #99bbe8;
+ color: #15428b;
+}
+
+.x-editor .x-form-check-wrap {
+ background-color:#fff;
+}
+
+.x-form-field-wrap .x-form-trigger {
+ background-image:url(../images/default/form/trigger.gif);
+ border-bottom-color:#b5b8c8;
+}
+
+.x-form-field-wrap .x-form-date-trigger {
+ background-image: url(../images/default/form/date-trigger.gif);
+}
+
+.x-form-field-wrap .x-form-clear-trigger {
+ background-image: url(../images/default/form/clear-trigger.gif);
+}
+
+.x-form-field-wrap .x-form-search-trigger {
+ background-image: url(../images/default/form/search-trigger.gif);
+}
+
+.x-trigger-wrap-focus .x-form-trigger {
+ border-bottom-color:#7eadd9;
+}
+
+.x-item-disabled .x-form-trigger-over {
+ border-bottom-color:#b5b8c8;
+}
+
+.x-item-disabled .x-form-trigger-click {
+ border-bottom-color:#b5b8c8;
+}
+
+.x-form-focus, textarea.x-form-focus {
+ border-color:#7eadd9;
+}
+
+.x-form-invalid, textarea.x-form-invalid {
+ background-color:#fff;
+ background-image:url(../images/default/grid/invalid_line.gif);
+ border-color:#c30;
+}
+
+.x-form-invalid.x-form-composite {
+ border: none;
+ background-image: none;
+}
+
+.x-form-invalid.x-form-composite .x-form-invalid {
+ background-color:#fff;
+ background-image:url(../images/default/grid/invalid_line.gif);
+ border-color:#c30;
+}
+
+.x-form-inner-invalid, textarea.x-form-inner-invalid {
+ background-color:#fff;
+ background-image:url(../images/default/grid/invalid_line.gif);
+}
+
+.x-form-grow-sizer {
+ font:normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-item {
+ font:normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-form-invalid-msg {
+ color:#c0272b;
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+ background-image:url(../images/default/shared/warning.gif);
+}
+
+.x-form-empty-field {
+ color:gray;
+}
+
+.x-small-editor .x-form-field {
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.ext-webkit .x-small-editor .x-form-field {
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-form-invalid-icon {
+ background-image:url(../images/default/form/exclamation.gif);
+}
+
+.x-fieldset {
+ border-color:#b5b8c8;
+}
+
+.x-fieldset legend {
+ font:bold 11px tahoma, arial, helvetica, sans-serif;
+ color:#15428b;
+}
+.x-btn{
+ font:normal 11px tahoma, verdana, helvetica;
+}
+
+.x-btn button{
+ font:normal 11px arial,tahoma,verdana,helvetica;
+ color:#333;
+}
+
+.x-btn em {
+ font-style:normal;
+ font-weight:normal;
+}
+
+.x-btn-tl, .x-btn-tr, .x-btn-tc, .x-btn-ml, .x-btn-mr, .x-btn-mc, .x-btn-bl, .x-btn-br, .x-btn-bc{
+ background-image:url(../images/default/button/btn.gif);
+}
+
+.x-btn-click .x-btn-text, .x-btn-menu-active .x-btn-text, .x-btn-pressed .x-btn-text{
+ color:#000;
+}
+
+.x-btn-disabled *{
+ color:gray !important;
+}
+
+.x-btn-mc em.x-btn-arrow {
+ background-image:url(../images/default/button/arrow.gif);
+}
+
+.x-btn-mc em.x-btn-split {
+ background-image:url(../images/default/button/s-arrow.gif);
+}
+
+.x-btn-over .x-btn-mc em.x-btn-split, .x-btn-click .x-btn-mc em.x-btn-split, .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-btn-pressed .x-btn-mc em.x-btn-split {
+ background-image:url(../images/default/button/s-arrow-o.gif);
+}
+
+.x-btn-mc em.x-btn-arrow-bottom {
+ background-image:url(../images/default/button/s-arrow-b-noline.gif);
+}
+
+.x-btn-mc em.x-btn-split-bottom {
+ background-image:url(../images/default/button/s-arrow-b.gif);
+}
+
+.x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-btn-click .x-btn-mc em.x-btn-split-bottom, .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
+ background-image:url(../images/default/button/s-arrow-bo.gif);
+}
+
+.x-btn-group-header {
+ color: #3e6aaa;
+}
+
+.x-btn-group-tc {
+ background-image: url(../images/default/button/group-tb.gif);
+}
+
+.x-btn-group-tl {
+ background-image: url(../images/default/button/group-cs.gif);
+}
+
+.x-btn-group-tr {
+ background-image: url(../images/default/button/group-cs.gif);
+}
+
+.x-btn-group-bc {
+ background-image: url(../images/default/button/group-tb.gif);
+}
+
+.x-btn-group-bl {
+ background-image: url(../images/default/button/group-cs.gif);
+}
+
+.x-btn-group-br {
+ background-image: url(../images/default/button/group-cs.gif);
+}
+
+.x-btn-group-ml {
+ background-image: url(../images/default/button/group-lr.gif);
+}
+.x-btn-group-mr {
+ background-image: url(../images/default/button/group-lr.gif);
+}
+
+.x-btn-group-notitle .x-btn-group-tc {
+ background-image: url(../images/default/button/group-tb.gif);
+}.x-toolbar{
+ border-color:#a9bfd3;
+ background-color:#d0def0;
+ background-image:url(../images/default/toolbar/bg.gif);
+}
+
+.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{
+ font:normal 11px arial,tahoma, helvetica, sans-serif;
+}
+
+.x-toolbar .x-item-disabled {
+ color:gray;
+}
+
+.x-toolbar .x-item-disabled * {
+ color:gray;
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split {
+ background-image:url(../images/default/button/s-arrow-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split
+{
+ background-image:url(../images/default/button/s-arrow-o.gif);
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split-bottom {
+ background-image:url(../images/default/button/s-arrow-b-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom
+{
+ background-image:url(../images/default/button/s-arrow-bo.gif);
+}
+
+.x-toolbar .xtb-sep {
+ background-image: url(../images/default/grid/grid-blue-split.gif);
+}
+
+.x-tbar-page-first{
+ background-image: url(../images/default/grid/page-first.gif) !important;
+}
+
+.x-tbar-loading{
+ background-image: url(../images/default/grid/refresh.gif) !important;
+}
+
+.x-tbar-page-last{
+ background-image: url(../images/default/grid/page-last.gif) !important;
+}
+
+.x-tbar-page-next{
+ background-image: url(../images/default/grid/page-next.gif) !important;
+}
+
+.x-tbar-page-prev{
+ background-image: url(../images/default/grid/page-prev.gif) !important;
+}
+
+.x-item-disabled .x-tbar-loading{
+ background-image: url(../images/default/grid/refresh-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-first{
+ background-image: url(../images/default/grid/page-first-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-last{
+ background-image: url(../images/default/grid/page-last-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-next{
+ background-image: url(../images/default/grid/page-next-disabled.gif) !important;
+}
+
+.x-item-disabled .x-tbar-page-prev{
+ background-image: url(../images/default/grid/page-prev-disabled.gif) !important;
+}
+
+.x-paging-info {
+ color:#444;
+}
+
+.x-toolbar-more-icon {
+ background-image: url(../images/default/toolbar/more.gif) !important;
+}.x-resizable-handle {
+ background-color:#fff;
+}
+
+.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east,
+.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west
+{
+ background-image:url(../images/default/sizer/e-handle.gif);
+}
+
+.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south,
+.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north
+{
+ background-image:url(../images/default/sizer/s-handle.gif);
+}
+
+.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{
+ background-image:url(../images/default/sizer/s-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{
+ background-image:url(../images/default/sizer/se-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{
+ background-image:url(../images/default/sizer/nw-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{
+ background-image:url(../images/default/sizer/ne-handle.gif);
+}
+.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{
+ background-image:url(../images/default/sizer/sw-handle.gif);
+}
+.x-resizable-proxy{
+ border-color:#3b5a82;
+}
+.x-resizable-overlay{
+ background-color:#fff;
+}
+.x-grid3 {
+ background-color:#fff;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+ border-color:#99bbe8;
+}
+
+.x-grid3-row td, .x-grid3-summary-row td{
+ font:normal 11px/13px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-hd-row td {
+ font:normal 11px/15px arial, tahoma, helvetica, sans-serif;
+}
+
+
+.x-grid3-hd-row td {
+ border-left-color:#eee;
+ border-right-color:#d0d0d0;
+}
+
+.x-grid-row-loading {
+ background-color: #fff;
+ background-image:url(../images/default/shared/loading-balls.gif);
+}
+
+.x-grid3-row {
+ border-color:#ededed;
+ border-top-color:#fff;
+}
+
+.x-grid3-row-alt{
+ background-color:#fafafa;
+}
+
+.x-grid3-row-over {
+ border-color:#ddd;
+ background-color:#efefef;
+ background-image:url(../images/default/grid/row-over.gif);
+}
+
+.x-grid3-resize-proxy {
+ background-color:#777;
+}
+
+.x-grid3-resize-marker {
+ background-color:#777;
+}
+
+.x-grid3-header{
+ background-color:#f9f9f9;
+ background-image:url(../images/default/grid/grid3-hrow.gif);
+}
+
+.x-grid3-header-pop {
+ border-left-color:#d0d0d0;
+}
+
+.x-grid3-header-pop-inner {
+ border-left-color:#eee;
+ background-image:url(../images/default/grid/hd-pop.gif);
+}
+
+td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open {
+ border-left-color:#aaccf6;
+ border-right-color:#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-color:#ebf3fd;
+ background-image:url(../images/default/grid/grid3-hrow-over.gif);
+
+}
+
+.sort-asc .x-grid3-sort-icon {
+ background-image: url(../images/default/grid/sort_asc.gif);
+}
+
+.sort-desc .x-grid3-sort-icon {
+ background-image: url(../images/default/grid/sort_desc.gif);
+}
+
+.x-grid3-cell-text, .x-grid3-hd-text {
+ color:#000;
+}
+
+.x-grid3-split {
+ background-image: url(../images/default/grid/grid-split.gif);
+}
+
+.x-grid3-hd-text {
+ color:#15428b;
+}
+
+.x-dd-drag-proxy .x-grid3-hd-inner{
+ background-color:#ebf3fd;
+ background-image:url(../images/default/grid/grid3-hrow-over.gif);
+ border-color:#aaccf6;
+}
+
+.col-move-top{
+ background-image:url(../images/default/grid/col-move-top.gif);
+}
+
+.col-move-bottom{
+ background-image:url(../images/default/grid/col-move-bottom.gif);
+}
+
+td.grid-hd-group-cell {
+ background: url(../images/default/grid/grid3-hrow.gif) repeat-x bottom;
+}
+
+.x-grid3-row-selected {
+ background-color: #dfe8f6 !important;
+ background-image: none;
+ border-color:#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-color:#ebeadb !important;
+ background-image:url(../images/default/grid/grid-hrow.gif) !important;
+ color:#000;
+ border-top-color:#fff;
+ border-right-color:#6fa0df !important;
+}
+
+.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{
+ color:#15428b !important;
+}
+
+.x-grid3-dirty-cell {
+ background-image:url(../images/default/grid/dirty.gif);
+}
+
+.x-grid3-topbar, .x-grid3-bottombar{
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-grid3-bottombar .x-toolbar{
+ border-top-color:#a9bfd3;
+}
+
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{
+ background-image:url(../images/default/grid/grid3-special-col-bg.gif) !important;
+ color:#000 !important;
+}
+
+.x-props-grid .x-grid3-body .x-grid3-td-name{
+ background-color:#fff !important;
+ border-right-color:#eee;
+}
+
+.xg-hmenu-sort-asc .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-asc.gif);
+}
+
+.xg-hmenu-sort-desc .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-desc.gif);
+}
+
+.xg-hmenu-lock .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-lock.gif);
+}
+
+.xg-hmenu-unlock .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-unlock.gif);
+}
+
+.x-grid3-hd-btn {
+ background-color:#c3daf9;
+ background-image:url(../images/default/grid/grid3-hd-btn.gif);
+}
+
+.x-grid3-body .x-grid3-td-expander {
+ background-image:url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-row-expander {
+ background-image:url(../images/default/grid/row-expand-sprite.gif);
+}
+
+.x-grid3-body .x-grid3-td-checker {
+ background-image: url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-row-checker, .x-grid3-hd-checker {
+ background-image:url(../images/default/grid/row-check-sprite.gif);
+}
+
+.x-grid3-body .x-grid3-td-numberer {
+ background-image:url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
+ color:#444;
+}
+
+.x-grid3-body .x-grid3-td-row-icon {
+ background-image:url(../images/default/grid/grid3-special-col-bg.gif);
+}
+
+.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-image:url(../images/default/grid/grid3-special-col-sel-bg.gif);
+}
+
+.x-grid3-check-col {
+ background-image:url(../images/default/menu/unchecked.gif);
+}
+
+.x-grid3-check-col-on {
+ background-image:url(../images/default/menu/checked.gif);
+}
+
+.x-grid-group, .x-grid-group-body, .x-grid-group-hd {
+ zoom:1;
+}
+
+.x-grid-group-hd {
+ border-bottom-color:#99bbe8;
+}
+
+.x-grid-group-hd div.x-grid-group-title {
+ background-image:url(../images/default/grid/group-collapse.gif);
+ color:#3764a0;
+ font:bold 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title {
+ background-image:url(../images/default/grid/group-expand.gif);
+}
+
+.x-group-by-icon {
+ background-image:url(../images/default/grid/group-by.gif);
+}
+
+.x-cols-icon {
+ background-image:url(../images/default/grid/columns.gif);
+}
+
+.x-show-groups-icon {
+ background-image:url(../images/default/grid/group-by.gif);
+}
+
+.x-grid-empty {
+ color:gray;
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell {
+ border-right-color:#ededed;
+}
+
+.x-grid-with-col-lines .x-grid3-row-selected {
+ border-top-color:#a3bae9;
+}.x-pivotgrid .x-grid3-header-offset table td {
+ background: url(../images/default/grid/grid3-hrow.gif) repeat-x 50% 100%;
+ border-left: 1px solid;
+ border-right: 1px solid;
+ border-left-color: #EEE;
+ border-right-color: #D0D0D0;
+}
+
+.x-pivotgrid .x-grid3-row-headers {
+ background-color: #f9f9f9;
+}
+
+.x-pivotgrid .x-grid3-row-headers table td {
+ background: #EEE url(../images/default/grid/grid3-rowheader.gif) repeat-x left top;
+ border-left: 1px solid;
+ border-right: 1px solid;
+ border-left-color: #EEE;
+ border-right-color: #D0D0D0;
+ border-bottom: 1px solid;
+ border-bottom-color: #D0D0D0;
+ height: 18px;
+}
+.x-dd-drag-ghost{
+ color:#000;
+ font: normal 11px arial, helvetica, sans-serif;
+ border-color: #ddd #bbb #bbb #ddd;
+ background-color:#fff;
+}
+
+.x-dd-drop-nodrop .x-dd-drop-icon{
+ background-image: url(../images/default/dd/drop-no.gif);
+}
+
+.x-dd-drop-ok .x-dd-drop-icon{
+ background-image: url(../images/default/dd/drop-yes.gif);
+}
+
+.x-dd-drop-ok-add .x-dd-drop-icon{
+ background-image: url(../images/default/dd/drop-add.gif);
+}
+
+.x-view-selector {
+ background-color:#c3daf9;
+ border-color:#3399bb;
+}.x-tree-node-expanded .x-tree-node-icon{
+ background-image:url(../images/default/tree/folder-open.gif);
+}
+
+.x-tree-node-leaf .x-tree-node-icon{
+ background-image:url(../images/default/tree/folder.gif);
+}
+
+.x-tree-node-collapsed .x-tree-node-icon{
+ background-image:url(../images/default/tree/folder.gif);
+}
+
+.x-tree-node-loading .x-tree-node-icon{
+ background-image:url(../images/default/tree/loading.gif) !important;
+}
+
+.x-tree-node .x-tree-node-inline-icon {
+ background-image: none;
+}
+
+.x-tree-node-loading a span{
+ font-style: italic;
+ color:#444444;
+}
+
+.x-tree-lines .x-tree-elbow{
+ background-image:url(../images/default/tree/elbow.gif);
+}
+
+.x-tree-lines .x-tree-elbow-plus{
+ background-image:url(../images/default/tree/elbow-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-minus{
+ background-image:url(../images/default/tree/elbow-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end{
+ background-image:url(../images/default/tree/elbow-end.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-plus{
+ background-image:url(../images/default/tree/elbow-end-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-minus{
+ background-image:url(../images/default/tree/elbow-end-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-line{
+ background-image:url(../images/default/tree/elbow-line.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-plus{
+ background-image:url(../images/default/tree/elbow-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-minus{
+ background-image:url(../images/default/tree/elbow-minus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-plus{
+ background-image:url(../images/default/tree/elbow-end-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-minus{
+ background-image:url(../images/default/tree/elbow-end-minus-nl.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-plus{
+ background-image:url(../images/default/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-minus{
+ background-image:url(../images/default/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-plus{
+ background-image:url(../images/default/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-minus{
+ background-image:url(../images/default/tree/arrows.gif);
+}
+
+.x-tree-node{
+ color:#000;
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-tree-node a, .x-dd-drag-ghost a{
+ color:#000;
+}
+
+.x-tree-node a span, .x-dd-drag-ghost a span{
+ color:#000;
+}
+
+.x-tree-node .x-tree-node-disabled a span{
+ color:gray !important;
+}
+
+.x-tree-node div.x-tree-drag-insert-below{
+ border-bottom-color:#36c;
+}
+
+.x-tree-node div.x-tree-drag-insert-above{
+ border-top-color:#36c;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{
+ border-bottom-color:#36c;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{
+ border-top-color:#36c;
+}
+
+.x-tree-node .x-tree-drag-append a span{
+ background-color:#ddd;
+ border-color:gray;
+}
+
+.x-tree-node .x-tree-node-over {
+ background-color: #eee;
+}
+
+.x-tree-node .x-tree-selected {
+ background-color: #d9e8fb;
+}
+
+.x-tree-drop-ok-append .x-dd-drop-icon{
+ background-image: url(../images/default/tree/drop-add.gif);
+}
+
+.x-tree-drop-ok-above .x-dd-drop-icon{
+ background-image: url(../images/default/tree/drop-over.gif);
+}
+
+.x-tree-drop-ok-below .x-dd-drop-icon{
+ background-image: url(../images/default/tree/drop-under.gif);
+}
+
+.x-tree-drop-ok-between .x-dd-drop-icon{
+ background-image: url(../images/default/tree/drop-between.gif);
+}.x-date-picker {
+ border-color: #1b376c;
+ background-color:#fff;
+}
+
+.x-date-middle,.x-date-left,.x-date-right {
+ background-image: url(../images/default/shared/hd-sprite.gif);
+ color:#fff;
+ font:bold 11px "sans serif", tahoma, verdana, helvetica;
+}
+
+.x-date-middle .x-btn .x-btn-text {
+ color:#fff;
+}
+
+.x-date-middle .x-btn-mc em.x-btn-arrow {
+ background-image:url(../images/default/toolbar/btn-arrow-light.gif);
+}
+
+.x-date-right a {
+ background-image: url(../images/default/shared/right-btn.gif);
+}
+
+.x-date-left a{
+ background-image: url(../images/default/shared/left-btn.gif);
+}
+
+.x-date-inner th {
+ background-color:#dfecfb;
+ background-image:url(../images/default/shared/glass-bg.gif);
+ border-bottom-color:#a3bad9;
+ font:normal 10px arial, helvetica,tahoma,sans-serif;
+ color:#233d6d;
+}
+
+.x-date-inner td {
+ border-color:#fff;
+}
+
+.x-date-inner a {
+ font:normal 11px arial, helvetica,tahoma,sans-serif;
+ color:#000;
+}
+
+.x-date-inner .x-date-active{
+ color:#000;
+}
+
+.x-date-inner .x-date-selected a{
+ background-color:#dfecfb;
+ background-image:url(../images/default/shared/glass-bg.gif);
+ border-color:#8db2e3;
+}
+
+.x-date-inner .x-date-today a{
+ border-color:darkred;
+}
+
+.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;
+}
+
+.x-date-bottom {
+ border-top-color:#a3bad9;
+ background-color:#dfecfb;
+ background-image:url(../images/default/shared/glass-bg.gif);
+}
+
+.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{
+ color:#000;
+ background-color:#ddecfe;
+}
+
+.x-date-inner .x-date-disabled a {
+ background-color:#eee;
+ color:#bbb;
+}
+
+.x-date-mmenu{
+ background-color:#eee !important;
+}
+
+.x-date-mmenu .x-menu-item {
+ font-size:10px;
+ color:#000;
+}
+
+.x-date-mp {
+ background-color:#fff;
+}
+
+.x-date-mp td {
+ font:normal 11px arial, helvetica,tahoma,sans-serif;
+}
+
+.x-date-mp-btns button {
+ background-color:#083772;
+ color:#fff;
+ border-color: #3366cc #000055 #000055 #3366cc;
+ font:normal 11px arial, helvetica,tahoma,sans-serif;
+}
+
+.x-date-mp-btns {
+ background-color: #dfecfb;
+ background-image: url(../images/default/shared/glass-bg.gif);
+}
+
+.x-date-mp-btns td {
+ border-top-color: #c5d2df;
+}
+
+td.x-date-mp-month a,td.x-date-mp-year a {
+ color:#15428b;
+}
+
+td.x-date-mp-month a:hover,td.x-date-mp-year a:hover {
+ color:#15428b;
+ background-color: #ddecfe;
+}
+
+td.x-date-mp-sel a {
+ background-color: #dfecfb;
+ background-image: url(../images/default/shared/glass-bg.gif);
+ border-color:#8db2e3;
+}
+
+.x-date-mp-ybtn a {
+ background-image:url(../images/default/panel/tool-sprites.gif);
+}
+
+td.x-date-mp-sep {
+ border-right-color:#c5d2df;
+}.x-tip .x-tip-close{
+ background-image: url(../images/default/qtip/close.gif);
+}
+
+.x-tip .x-tip-tc, .x-tip .x-tip-tl, .x-tip .x-tip-tr, .x-tip .x-tip-bc, .x-tip .x-tip-bl, .x-tip .x-tip-br, .x-tip .x-tip-ml, .x-tip .x-tip-mr {
+ background-image: url(../images/default/qtip/tip-sprite.gif);
+}
+
+.x-tip .x-tip-mc {
+ font: normal 11px tahoma,arial,helvetica,sans-serif;
+}
+.x-tip .x-tip-ml {
+ background-color: #fff;
+}
+
+.x-tip .x-tip-header-text {
+ font: bold 11px tahoma,arial,helvetica,sans-serif;
+ color:#444;
+}
+
+.x-tip .x-tip-body {
+ font: normal 11px tahoma,arial,helvetica,sans-serif;
+ color:#444;
+}
+
+.x-form-invalid-tip .x-tip-tc, .x-form-invalid-tip .x-tip-tl, .x-form-invalid-tip .x-tip-tr, .x-form-invalid-tip .x-tip-bc,
+.x-form-invalid-tip .x-tip-bl, .x-form-invalid-tip .x-tip-br, .x-form-invalid-tip .x-tip-ml, .x-form-invalid-tip .x-tip-mr
+{
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+
+.x-form-invalid-tip .x-tip-body {
+ background-image:url(../images/default/form/exclamation.gif);
+}
+
+.x-tip-anchor {
+ background-image:url(../images/default/qtip/tip-anchor-sprite.gif);
+}.x-menu {
+ background-color:#f0f0f0;
+ background-image:url(../images/default/menu/menu.gif);
+}
+
+.x-menu-floating{
+ border-color:#718bb7;
+}
+
+.x-menu-nosep {
+ background-image:none;
+}
+
+.x-menu-list-item{
+ font:normal 11px arial,tahoma,sans-serif;
+}
+
+.x-menu-item-arrow{
+ background-image:url(../images/default/menu/menu-parent.gif);
+}
+
+.x-menu-sep {
+ background-color:#e0e0e0;
+ border-bottom-color:#fff;
+}
+
+a.x-menu-item {
+ color:#222;
+}
+
+.x-menu-item-active {
+ background-image: url(../images/default/menu/item-over.gif);
+ background-color: #dbecf4;
+ border-color:#aaccf6;
+}
+
+.x-menu-item-active a.x-menu-item {
+ border-color:#aaccf6;
+}
+
+.x-menu-check-item .x-menu-item-icon{
+ background-image:url(../images/default/menu/unchecked.gif);
+}
+
+.x-menu-item-checked .x-menu-item-icon{
+ background-image:url(../images/default/menu/checked.gif);
+}
+
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{
+ background-image:url(../images/default/menu/group-checked.gif);
+}
+
+.x-menu-group-item .x-menu-item-icon{
+ background-image:none;
+}
+
+.x-menu-plain {
+ background-color:#f0f0f0 !important;
+ background-image: none;
+}
+
+.x-date-menu, .x-color-menu{
+ background-color: #fff !important;
+}
+
+.x-menu .x-date-picker{
+ border-color:#a3bad9;
+}
+
+.x-cycle-menu .x-menu-item-checked {
+ border-color:#a3bae9 !important;
+ background-color:#def8f6;
+}
+
+.x-menu-scroller-top {
+ background-image:url(../images/default/layout/mini-top.gif);
+}
+
+.x-menu-scroller-bottom {
+ background-image:url(../images/default/layout/mini-bottom.gif);
+}
+.x-box-tl {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-tc {
+ background-image: url(../images/default/box/tb.gif);
+}
+
+.x-box-tr {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-ml {
+ background-image: url(../images/default/box/l.gif);
+}
+
+.x-box-mc {
+ background-color: #eee;
+ background-image: url(../images/default/box/tb.gif);
+ 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;
+}
+
+.x-box-mr {
+ background-image: url(../images/default/box/r.gif);
+}
+
+.x-box-bl {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.x-box-bc {
+ background-image: url(../images/default/box/tb.gif);
+}
+
+.x-box-br {
+ background-image: url(../images/default/box/corners.gif);
+}
+
+.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(../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(../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(../images/default/box/l-blue.gif);
+}
+
+.x-box-blue .x-box-mr {
+ background-image: url(../images/default/box/r-blue.gif);
+}.x-combo-list {
+ border-color:#98c0f4;
+ background-color:#ddecfe;
+ font:normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+.x-combo-list-inner {
+ background-color:#fff;
+}
+
+.x-combo-list-hd {
+ font:bold 11px tahoma, arial, helvetica, sans-serif;
+ color:#15428b;
+ background-image: url(../images/default/layout/panel-title-light-bg.gif);
+ border-bottom-color:#98c0f4;
+}
+
+.x-resizable-pinned .x-combo-list-inner {
+ border-bottom-color:#98c0f4;
+}
+
+.x-combo-list-item {
+ border-color:#fff;
+}
+
+.x-combo-list .x-combo-selected{
+ border-color:#a3bae9 !important;
+ background-color:#dfe8f6;
+}
+
+.x-combo-list .x-toolbar {
+ border-top-color:#98c0f4;
+}
+
+.x-combo-list-small {
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+}.x-panel {
+ border-color: #99bbe8;
+}
+
+.x-panel-header {
+ color:#15428b;
+ font-weight:bold;
+ font-size: 11px;
+ font-family: tahoma,arial,verdana,sans-serif;
+ border-color:#99bbe8;
+ background-image: url(../images/default/panel/white-top-bottom.gif);
+}
+
+.x-panel-body {
+ border-color:#99bbe8;
+ background-color:#fff;
+}
+
+.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar {
+ border-color:#99bbe8;
+}
+
+.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar {
+ border-top-color:#99bbe8;
+}
+
+.x-panel-body-noheader, .x-panel-mc .x-panel-body {
+ border-top-color:#99bbe8;
+}
+
+.x-panel-tl .x-panel-header {
+ color:#15428b;
+ font:bold 11px tahoma,arial,verdana,sans-serif;
+}
+
+.x-panel-tc {
+ background-image: url(../images/default/panel/top-bottom.gif);
+}
+
+.x-panel-tl, .x-panel-tr, .x-panel-bl, .x-panel-br{
+ background-image: url(../images/default/panel/corners-sprite.gif);
+ border-bottom-color:#99bbe8;
+}
+
+.x-panel-bc {
+ background-image: url(../images/default/panel/top-bottom.gif);
+}
+
+.x-panel-mc {
+ font: normal 11px tahoma,arial,helvetica,sans-serif;
+ background-color:#dfe8f6;
+}
+
+.x-panel-ml {
+ background-color: #fff;
+ background-image:url(../images/default/panel/left-right.gif);
+}
+
+.x-panel-mr {
+ background-image: url(../images/default/panel/left-right.gif);
+}
+
+.x-tool {
+ background-image:url(../images/default/panel/tool-sprites.gif);
+}
+
+.x-panel-ghost {
+ background-color:#cbddf3;
+}
+
+.x-panel-ghost ul {
+ border-color:#99bbe8;
+}
+
+.x-panel-dd-spacer {
+ border-color:#99bbe8;
+}
+
+.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{
+ font:normal 11px arial,tahoma, helvetica, sans-serif;
+}
+.x-window-proxy {
+ background-color:#c7dffc;
+ border-color:#99bbe8;
+}
+
+.x-window-tl .x-window-header {
+ color:#15428b;
+ font:bold 11px tahoma,arial,verdana,sans-serif;
+}
+
+.x-window-tc {
+ background-image: url(../images/default/window/top-bottom.png);
+}
+
+.x-window-tl {
+ background-image: url(../images/default/window/left-corners.png);
+}
+
+.x-window-tr {
+ background-image: url(../images/default/window/right-corners.png);
+}
+
+.x-window-bc {
+ background-image: url(../images/default/window/top-bottom.png);
+}
+
+.x-window-bl {
+ background-image: url(../images/default/window/left-corners.png);
+}
+
+.x-window-br {
+ background-image: url(../images/default/window/right-corners.png);
+}
+
+.x-window-mc {
+ border-color:#99bbe8;
+ font: normal 11px tahoma,arial,helvetica,sans-serif;
+ background-color:#dfe8f6;
+}
+
+.x-window-ml {
+ background-image: url(../images/default/window/left-right.png);
+}
+
+.x-window-mr {
+ background-image: url(../images/default/window/left-right.png);
+}
+
+.x-window-maximized .x-window-tc {
+ background-color:#fff;
+}
+
+.x-window-bbar .x-toolbar {
+ border-top-color:#99bbe8;
+}
+
+.x-panel-ghost .x-window-tl {
+ border-bottom-color:#99bbe8;
+}
+
+.x-panel-collapsed .x-window-tl {
+ border-bottom-color:#84a0c4;
+}
+
+.x-dlg-mask{
+ background-color:#ccc;
+}
+
+.x-window-plain .x-window-mc {
+ background-color: #ccd9e8;
+ border-color: #a3bae9 #dfe8f6 #dfe8f6 #a3bae9;
+}
+
+.x-window-plain .x-window-body {
+ border-color: #dfe8f6 #a3bae9 #a3bae9 #dfe8f6;
+}
+
+body.x-body-masked .x-window-plain .x-window-mc {
+ background-color: #ccd9e8;
+}.x-html-editor-wrap {
+ border-color:#a9bfd3;
+ background-color:#fff;
+}
+.x-html-editor-tb .x-btn-text {
+ background-image:url(../images/default/editor/tb-sprite.gif);
+}.x-panel-noborder .x-panel-header-noborder {
+ border-bottom-color:#99bbe8;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+ border-bottom-color:#99bbe8;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+ border-top-color:#99bbe8;
+}
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+ border-top-color:#99bbe8;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+ border-bottom-color:#99bbe8;
+}.x-border-layout-ct {
+ background-color:#dfe8f6;
+}
+
+.x-accordion-hd {
+ color:#222;
+ font-weight:normal;
+ background-image: url(../images/default/panel/light-hd.gif);
+}
+
+.x-layout-collapsed{
+ background-color:#d2e0f2;
+ border-color:#98c0f4;
+}
+
+.x-layout-collapsed-over{
+ background-color:#d9e8fb;
+}
+
+.x-layout-split-west .x-layout-mini {
+ background-image:url(../images/default/layout/mini-left.gif);
+}
+.x-layout-split-east .x-layout-mini {
+ background-image:url(../images/default/layout/mini-right.gif);
+}
+.x-layout-split-north .x-layout-mini {
+ background-image:url(../images/default/layout/mini-top.gif);
+}
+.x-layout-split-south .x-layout-mini {
+ background-image:url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-west .x-layout-mini {
+ background-image:url(../images/default/layout/mini-right.gif);
+}
+
+.x-layout-cmini-east .x-layout-mini {
+ background-image:url(../images/default/layout/mini-left.gif);
+}
+
+.x-layout-cmini-north .x-layout-mini {
+ background-image:url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-south .x-layout-mini {
+ background-image:url(../images/default/layout/mini-top.gif);
+}.x-progress-wrap {
+ border-color:#6593cf;
+}
+
+.x-progress-inner {
+ background-color:#e0e8f3;
+ background-image:url(../images/default/qtip/bg.gif);
+}
+
+.x-progress-bar {
+ background-color:#9cbfee;
+ background-image:url(../images/default/progress/progress-bg.gif);
+ border-top-color:#d1e4fd;
+ border-bottom-color:#7fa9e4;
+ border-right-color:#7fa9e4;
+}
+
+.x-progress-text {
+ font-size:11px;
+ font-weight:bold;
+ color:#fff;
+}
+
+.x-progress-text-back {
+ color:#396095;
+}.x-list-header{
+ background-color:#f9f9f9;
+ background-image:url(../images/default/grid/grid3-hrow.gif);
+}
+
+.x-list-header-inner div em {
+ border-left-color:#ddd;
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-list-body dt em {
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-list-over {
+ background-color:#eee;
+}
+
+.x-list-selected {
+ background-color:#dfe8f6;
+}
+
+.x-list-resizer {
+ border-left-color:#555;
+ border-right-color:#555;
+}
+
+.x-list-header-inner em.sort-asc, .x-list-header-inner em.sort-desc {
+ background-image:url(../images/default/grid/sort-hd.gif);
+ border-color: #99bbe8;
+}.x-slider-horz, .x-slider-horz .x-slider-end, .x-slider-horz .x-slider-inner {
+ background-image:url(../images/default/slider/slider-bg.png);
+}
+
+.x-slider-horz .x-slider-thumb {
+ background-image:url(../images/default/slider/slider-thumb.png);
+}
+
+.x-slider-vert, .x-slider-vert .x-slider-end, .x-slider-vert .x-slider-inner {
+ background-image:url(../images/default/slider/slider-v-bg.png);
+}
+
+.x-slider-vert .x-slider-thumb {
+ background-image:url(../images/default/slider/slider-v-thumb.png);
+}.x-window-dlg .ext-mb-text,
+.x-window-dlg .x-window-header-text {
+ font-size:12px;
+}
+
+.x-window-dlg .ext-mb-textarea {
+ font:normal 12px tahoma,arial,helvetica,sans-serif;
+}
+
+.x-window-dlg .x-msg-box-wait {
+ background-image:url(../images/default/grid/loading.gif);
+}
+
+.x-window-dlg .ext-mb-info {
+ background-image:url(../images/default/window/icon-info.gif);
+}
+
+.x-window-dlg .ext-mb-warning {
+ background-image:url(../images/default/window/icon-warning.gif);
+}
+
+.x-window-dlg .ext-mb-question {
+ background-image:url(../images/default/window/icon-question.gif);
+}
+
+.x-window-dlg .ext-mb-error {
+ background-image:url(../images/default/window/icon-error.gif);
+}
\ No newline at end of file
diff --git a/extensions/admin_ui/media/images/default/box/corners-blue.gif b/extensions/admin_ui/media/images/default/box/corners-blue.gif
new file mode 100644
index 000000000..fa419b50a
Binary files /dev/null and b/extensions/admin_ui/media/images/default/box/corners-blue.gif differ
diff --git a/extensions/admin_ui/media/images/default/box/corners.gif b/extensions/admin_ui/media/images/default/box/corners.gif
new file mode 100644
index 000000000..8aa8cae5c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/box/corners.gif differ
diff --git a/extensions/admin_ui/media/images/default/box/l-blue.gif b/extensions/admin_ui/media/images/default/box/l-blue.gif
new file mode 100644
index 000000000..5ed7f0043
Binary files /dev/null and b/extensions/admin_ui/media/images/default/box/l-blue.gif differ
diff --git a/extensions/admin_ui/media/images/default/box/l.gif b/extensions/admin_ui/media/images/default/box/l.gif
new file mode 100644
index 000000000..0160f97fe
Binary files /dev/null and b/extensions/admin_ui/media/images/default/box/l.gif differ
diff --git a/extensions/admin_ui/media/images/default/box/r-blue.gif b/extensions/admin_ui/media/images/default/box/r-blue.gif
new file mode 100644
index 000000000..3ea5cae3b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/box/r-blue.gif differ
diff --git a/extensions/admin_ui/media/images/default/box/r.gif b/extensions/admin_ui/media/images/default/box/r.gif
new file mode 100644
index 000000000..34237f629
Binary files /dev/null and b/extensions/admin_ui/media/images/default/box/r.gif differ
diff --git a/extensions/admin_ui/media/images/default/box/tb-blue.gif b/extensions/admin_ui/media/images/default/box/tb-blue.gif
new file mode 100644
index 000000000..562fecca8
Binary files /dev/null and b/extensions/admin_ui/media/images/default/box/tb-blue.gif differ
diff --git a/extensions/admin_ui/media/images/default/box/tb.gif b/extensions/admin_ui/media/images/default/box/tb.gif
new file mode 100644
index 000000000..435889bff
Binary files /dev/null and b/extensions/admin_ui/media/images/default/box/tb.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/arrow.gif b/extensions/admin_ui/media/images/default/button/arrow.gif
new file mode 100644
index 000000000..3ab4f71ac
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/arrow.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/btn.gif b/extensions/admin_ui/media/images/default/button/btn.gif
new file mode 100644
index 000000000..06b404dd7
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/btn.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/group-cs.gif b/extensions/admin_ui/media/images/default/button/group-cs.gif
new file mode 100644
index 000000000..3d1dca8f0
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/group-cs.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/group-lr.gif b/extensions/admin_ui/media/images/default/button/group-lr.gif
new file mode 100644
index 000000000..7c549f96d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/group-lr.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/group-tb.gif b/extensions/admin_ui/media/images/default/button/group-tb.gif
new file mode 100644
index 000000000..adeb0a4cf
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/group-tb.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/s-arrow-b-noline.gif b/extensions/admin_ui/media/images/default/button/s-arrow-b-noline.gif
new file mode 100644
index 000000000..a4220ee90
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/s-arrow-b-noline.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/s-arrow-b.gif b/extensions/admin_ui/media/images/default/button/s-arrow-b.gif
new file mode 100644
index 000000000..84b647030
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/s-arrow-b.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/s-arrow-bo.gif b/extensions/admin_ui/media/images/default/button/s-arrow-bo.gif
new file mode 100644
index 000000000..548700bf4
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/s-arrow-bo.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/s-arrow-noline.gif b/extensions/admin_ui/media/images/default/button/s-arrow-noline.gif
new file mode 100644
index 000000000..0953eab5c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/s-arrow-noline.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/s-arrow-o.gif b/extensions/admin_ui/media/images/default/button/s-arrow-o.gif
new file mode 100644
index 000000000..89c70f36f
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/s-arrow-o.gif differ
diff --git a/extensions/admin_ui/media/images/default/button/s-arrow.gif b/extensions/admin_ui/media/images/default/button/s-arrow.gif
new file mode 100644
index 000000000..894077478
Binary files /dev/null and b/extensions/admin_ui/media/images/default/button/s-arrow.gif differ
diff --git a/extensions/admin_ui/media/images/default/dd/drop-add.gif b/extensions/admin_ui/media/images/default/dd/drop-add.gif
new file mode 100644
index 000000000..b22cd1448
Binary files /dev/null and b/extensions/admin_ui/media/images/default/dd/drop-add.gif differ
diff --git a/extensions/admin_ui/media/images/default/dd/drop-no.gif b/extensions/admin_ui/media/images/default/dd/drop-no.gif
new file mode 100644
index 000000000..08d083355
Binary files /dev/null and b/extensions/admin_ui/media/images/default/dd/drop-no.gif differ
diff --git a/extensions/admin_ui/media/images/default/dd/drop-yes.gif b/extensions/admin_ui/media/images/default/dd/drop-yes.gif
new file mode 100644
index 000000000..8aacb307e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/dd/drop-yes.gif differ
diff --git a/extensions/admin_ui/media/images/default/editor/tb-sprite.gif b/extensions/admin_ui/media/images/default/editor/tb-sprite.gif
new file mode 100644
index 000000000..fb7057761
Binary files /dev/null and b/extensions/admin_ui/media/images/default/editor/tb-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/checkbox.gif b/extensions/admin_ui/media/images/default/form/checkbox.gif
new file mode 100644
index 000000000..835b346cc
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/checkbox.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/clear-trigger.gif b/extensions/admin_ui/media/images/default/form/clear-trigger.gif
new file mode 100644
index 000000000..da78d45b3
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/clear-trigger.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/clear-trigger.psd b/extensions/admin_ui/media/images/default/form/clear-trigger.psd
new file mode 100644
index 000000000..f637fa5d1
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/clear-trigger.psd differ
diff --git a/extensions/admin_ui/media/images/default/form/date-trigger.gif b/extensions/admin_ui/media/images/default/form/date-trigger.gif
new file mode 100644
index 000000000..25ef7b3ae
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/date-trigger.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/date-trigger.psd b/extensions/admin_ui/media/images/default/form/date-trigger.psd
new file mode 100644
index 000000000..74883b21c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/date-trigger.psd differ
diff --git a/extensions/admin_ui/media/images/default/form/error-tip-corners.gif b/extensions/admin_ui/media/images/default/form/error-tip-corners.gif
new file mode 100644
index 000000000..6ea4c3838
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/error-tip-corners.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/exclamation.gif b/extensions/admin_ui/media/images/default/form/exclamation.gif
new file mode 100644
index 000000000..ea31a3060
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/exclamation.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/radio.gif b/extensions/admin_ui/media/images/default/form/radio.gif
new file mode 100644
index 000000000..36bb91d0c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/radio.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/search-trigger.gif b/extensions/admin_ui/media/images/default/form/search-trigger.gif
new file mode 100644
index 000000000..db8802beb
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/search-trigger.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/search-trigger.psd b/extensions/admin_ui/media/images/default/form/search-trigger.psd
new file mode 100644
index 000000000..b11f27300
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/search-trigger.psd differ
diff --git a/extensions/admin_ui/media/images/default/form/text-bg.gif b/extensions/admin_ui/media/images/default/form/text-bg.gif
new file mode 100644
index 000000000..4179607cc
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/text-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/trigger-tpl.gif b/extensions/admin_ui/media/images/default/form/trigger-tpl.gif
new file mode 100644
index 000000000..e3701a383
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/trigger-tpl.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/trigger.gif b/extensions/admin_ui/media/images/default/form/trigger.gif
new file mode 100644
index 000000000..fa563147f
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/trigger.gif differ
diff --git a/extensions/admin_ui/media/images/default/form/trigger.psd b/extensions/admin_ui/media/images/default/form/trigger.psd
new file mode 100644
index 000000000..1f1ed6460
Binary files /dev/null and b/extensions/admin_ui/media/images/default/form/trigger.psd differ
diff --git a/extensions/admin_ui/media/images/default/gradient-bg.gif b/extensions/admin_ui/media/images/default/gradient-bg.gif
new file mode 100644
index 000000000..8134e4994
Binary files /dev/null and b/extensions/admin_ui/media/images/default/gradient-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/arrow-left-white.gif b/extensions/admin_ui/media/images/default/grid/arrow-left-white.gif
new file mode 100644
index 000000000..63088f56e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/arrow-left-white.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/arrow-right-white.gif b/extensions/admin_ui/media/images/default/grid/arrow-right-white.gif
new file mode 100644
index 000000000..e9e067890
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/arrow-right-white.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/col-move-bottom.gif b/extensions/admin_ui/media/images/default/grid/col-move-bottom.gif
new file mode 100644
index 000000000..cc1e473ec
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/col-move-bottom.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/col-move-top.gif b/extensions/admin_ui/media/images/default/grid/col-move-top.gif
new file mode 100644
index 000000000..58ff32cc8
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/col-move-top.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/columns.gif b/extensions/admin_ui/media/images/default/grid/columns.gif
new file mode 100644
index 000000000..2d3a82393
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/columns.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/dirty.gif b/extensions/admin_ui/media/images/default/grid/dirty.gif
new file mode 100644
index 000000000..4f217a479
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/dirty.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/done.gif b/extensions/admin_ui/media/images/default/grid/done.gif
new file mode 100644
index 000000000..a937cb22c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/done.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/drop-no.gif b/extensions/admin_ui/media/images/default/grid/drop-no.gif
new file mode 100644
index 000000000..31a332bf7
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/drop-no.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/drop-yes.gif b/extensions/admin_ui/media/images/default/grid/drop-yes.gif
new file mode 100644
index 000000000..926010e17
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/drop-yes.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/footer-bg.gif b/extensions/admin_ui/media/images/default/grid/footer-bg.gif
new file mode 100644
index 000000000..126120f71
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/footer-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid-blue-hd.gif b/extensions/admin_ui/media/images/default/grid/grid-blue-hd.gif
new file mode 100644
index 000000000..862094e68
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid-blue-hd.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid-blue-split.gif b/extensions/admin_ui/media/images/default/grid/grid-blue-split.gif
new file mode 100644
index 000000000..5286f58f6
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid-blue-split.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid-hrow.gif b/extensions/admin_ui/media/images/default/grid/grid-hrow.gif
new file mode 100644
index 000000000..637410420
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid-hrow.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid-loading.gif b/extensions/admin_ui/media/images/default/grid/grid-loading.gif
new file mode 100644
index 000000000..d112c5401
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid-loading.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid-split.gif b/extensions/admin_ui/media/images/default/grid/grid-split.gif
new file mode 100644
index 000000000..c76a16e95
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid-split.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid-vista-hd.gif b/extensions/admin_ui/media/images/default/grid/grid-vista-hd.gif
new file mode 100644
index 000000000..d0972638e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid-vista-hd.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid3-hd-btn.gif b/extensions/admin_ui/media/images/default/grid/grid3-hd-btn.gif
new file mode 100644
index 000000000..21126075e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid3-hd-btn.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid3-hrow-over.gif b/extensions/admin_ui/media/images/default/grid/grid3-hrow-over.gif
new file mode 100644
index 000000000..f9c07af13
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid3-hrow-over.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid3-hrow.gif b/extensions/admin_ui/media/images/default/grid/grid3-hrow.gif
new file mode 100644
index 000000000..8d459a304
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid3-hrow.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid3-special-col-bg.gif b/extensions/admin_ui/media/images/default/grid/grid3-special-col-bg.gif
new file mode 100644
index 000000000..0b4d6ca3b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid3-special-col-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/grid3-special-col-sel-bg.gif b/extensions/admin_ui/media/images/default/grid/grid3-special-col-sel-bg.gif
new file mode 100644
index 000000000..1dfe9a69e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/grid3-special-col-sel-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/group-by.gif b/extensions/admin_ui/media/images/default/grid/group-by.gif
new file mode 100644
index 000000000..d6075bba2
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/group-by.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/group-collapse.gif b/extensions/admin_ui/media/images/default/grid/group-collapse.gif
new file mode 100644
index 000000000..495bb051d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/group-collapse.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/group-expand-sprite.gif b/extensions/admin_ui/media/images/default/grid/group-expand-sprite.gif
new file mode 100644
index 000000000..9c1653b48
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/group-expand-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/group-expand.gif b/extensions/admin_ui/media/images/default/grid/group-expand.gif
new file mode 100644
index 000000000..a33ac30bd
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/group-expand.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/hd-pop.gif b/extensions/admin_ui/media/images/default/grid/hd-pop.gif
new file mode 100644
index 000000000..eb8ba7967
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/hd-pop.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/hmenu-asc.gif b/extensions/admin_ui/media/images/default/grid/hmenu-asc.gif
new file mode 100644
index 000000000..8917e0eee
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/hmenu-asc.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/hmenu-desc.gif b/extensions/admin_ui/media/images/default/grid/hmenu-desc.gif
new file mode 100644
index 000000000..f26b7c2fc
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/hmenu-desc.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/hmenu-lock.gif b/extensions/admin_ui/media/images/default/grid/hmenu-lock.gif
new file mode 100644
index 000000000..159612610
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/hmenu-lock.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/hmenu-lock.png b/extensions/admin_ui/media/images/default/grid/hmenu-lock.png
new file mode 100644
index 000000000..8b81e7ff2
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/hmenu-lock.png differ
diff --git a/extensions/admin_ui/media/images/default/grid/hmenu-unlock.gif b/extensions/admin_ui/media/images/default/grid/hmenu-unlock.gif
new file mode 100644
index 000000000..af59cf92a
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/hmenu-unlock.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/hmenu-unlock.png b/extensions/admin_ui/media/images/default/grid/hmenu-unlock.png
new file mode 100644
index 000000000..9dd5df34b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/hmenu-unlock.png differ
diff --git a/extensions/admin_ui/media/images/default/grid/invalid_line.gif b/extensions/admin_ui/media/images/default/grid/invalid_line.gif
new file mode 100644
index 000000000..fb7e0f34d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/invalid_line.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/loading.gif b/extensions/admin_ui/media/images/default/grid/loading.gif
new file mode 100644
index 000000000..e846e1d6c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/loading.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/mso-hd.gif b/extensions/admin_ui/media/images/default/grid/mso-hd.gif
new file mode 100644
index 000000000..669f3cf08
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/mso-hd.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/nowait.gif b/extensions/admin_ui/media/images/default/grid/nowait.gif
new file mode 100644
index 000000000..4c5862cd5
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/nowait.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/page-first-disabled.gif b/extensions/admin_ui/media/images/default/grid/page-first-disabled.gif
new file mode 100644
index 000000000..1e02c419f
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/page-first-disabled.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/page-first.gif b/extensions/admin_ui/media/images/default/grid/page-first.gif
new file mode 100644
index 000000000..d84f41a91
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/page-first.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/page-last-disabled.gif b/extensions/admin_ui/media/images/default/grid/page-last-disabled.gif
new file mode 100644
index 000000000..869706777
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/page-last-disabled.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/page-last.gif b/extensions/admin_ui/media/images/default/grid/page-last.gif
new file mode 100644
index 000000000..3df5c2ba5
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/page-last.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/page-next-disabled.gif b/extensions/admin_ui/media/images/default/grid/page-next-disabled.gif
new file mode 100644
index 000000000..90a7756f6
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/page-next-disabled.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/page-next.gif b/extensions/admin_ui/media/images/default/grid/page-next.gif
new file mode 100644
index 000000000..960163530
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/page-next.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/page-prev-disabled.gif b/extensions/admin_ui/media/images/default/grid/page-prev-disabled.gif
new file mode 100644
index 000000000..37154d624
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/page-prev-disabled.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/page-prev.gif b/extensions/admin_ui/media/images/default/grid/page-prev.gif
new file mode 100644
index 000000000..eb70cf8f6
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/page-prev.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/pick-button.gif b/extensions/admin_ui/media/images/default/grid/pick-button.gif
new file mode 100644
index 000000000..6957924a8
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/pick-button.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/refresh-disabled.gif b/extensions/admin_ui/media/images/default/grid/refresh-disabled.gif
new file mode 100644
index 000000000..607800b85
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/refresh-disabled.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/refresh.gif b/extensions/admin_ui/media/images/default/grid/refresh.gif
new file mode 100644
index 000000000..110f6844b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/refresh.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/row-check-sprite.gif b/extensions/admin_ui/media/images/default/grid/row-check-sprite.gif
new file mode 100644
index 000000000..610116465
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/row-check-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/row-expand-sprite.gif b/extensions/admin_ui/media/images/default/grid/row-expand-sprite.gif
new file mode 100644
index 000000000..6f4d874f5
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/row-expand-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/row-over.gif b/extensions/admin_ui/media/images/default/grid/row-over.gif
new file mode 100644
index 000000000..b288e3873
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/row-over.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/row-sel.gif b/extensions/admin_ui/media/images/default/grid/row-sel.gif
new file mode 100644
index 000000000..98209e6e7
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/row-sel.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/sort-hd.gif b/extensions/admin_ui/media/images/default/grid/sort-hd.gif
new file mode 100644
index 000000000..45e545f74
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/sort-hd.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/sort_asc.gif b/extensions/admin_ui/media/images/default/grid/sort_asc.gif
new file mode 100644
index 000000000..67a2a4c66
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/sort_asc.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/sort_desc.gif b/extensions/admin_ui/media/images/default/grid/sort_desc.gif
new file mode 100644
index 000000000..34db47c3b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/sort_desc.gif differ
diff --git a/extensions/admin_ui/media/images/default/grid/wait.gif b/extensions/admin_ui/media/images/default/grid/wait.gif
new file mode 100644
index 000000000..471c1a4f9
Binary files /dev/null and b/extensions/admin_ui/media/images/default/grid/wait.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/collapse.gif b/extensions/admin_ui/media/images/default/layout/collapse.gif
new file mode 100644
index 000000000..d87b0a9dd
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/collapse.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/expand.gif b/extensions/admin_ui/media/images/default/layout/expand.gif
new file mode 100644
index 000000000..7b6e1c1ef
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/expand.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/gradient-bg.gif b/extensions/admin_ui/media/images/default/layout/gradient-bg.gif
new file mode 100644
index 000000000..8134e4994
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/gradient-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/mini-bottom.gif b/extensions/admin_ui/media/images/default/layout/mini-bottom.gif
new file mode 100644
index 000000000..c18f9e34a
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/mini-bottom.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/mini-left.gif b/extensions/admin_ui/media/images/default/layout/mini-left.gif
new file mode 100644
index 000000000..99f7993f2
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/mini-left.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/mini-right.gif b/extensions/admin_ui/media/images/default/layout/mini-right.gif
new file mode 100644
index 000000000..5b13c5a8b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/mini-right.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/mini-top.gif b/extensions/admin_ui/media/images/default/layout/mini-top.gif
new file mode 100644
index 000000000..a4ca2bb20
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/mini-top.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/ns-collapse.gif b/extensions/admin_ui/media/images/default/layout/ns-collapse.gif
new file mode 100644
index 000000000..df2a77e9c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/ns-collapse.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/ns-expand.gif b/extensions/admin_ui/media/images/default/layout/ns-expand.gif
new file mode 100644
index 000000000..77ab9dad2
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/ns-expand.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/panel-close.gif b/extensions/admin_ui/media/images/default/layout/panel-close.gif
new file mode 100644
index 000000000..2bdd62399
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/panel-close.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/panel-title-bg.gif b/extensions/admin_ui/media/images/default/layout/panel-title-bg.gif
new file mode 100644
index 000000000..d1daef54c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/panel-title-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/panel-title-light-bg.gif b/extensions/admin_ui/media/images/default/layout/panel-title-light-bg.gif
new file mode 100644
index 000000000..8c2c83d82
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/panel-title-light-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/stick.gif b/extensions/admin_ui/media/images/default/layout/stick.gif
new file mode 100644
index 000000000..5a1e8ba19
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/stick.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/stuck.gif b/extensions/admin_ui/media/images/default/layout/stuck.gif
new file mode 100644
index 000000000..0a8de4db9
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/stuck.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/tab-close-on.gif b/extensions/admin_ui/media/images/default/layout/tab-close-on.gif
new file mode 100644
index 000000000..eacea39b6
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/tab-close-on.gif differ
diff --git a/extensions/admin_ui/media/images/default/layout/tab-close.gif b/extensions/admin_ui/media/images/default/layout/tab-close.gif
new file mode 100644
index 000000000..45db61e60
Binary files /dev/null and b/extensions/admin_ui/media/images/default/layout/tab-close.gif differ
diff --git a/extensions/admin_ui/media/images/default/menu/checked.gif b/extensions/admin_ui/media/images/default/menu/checked.gif
new file mode 100644
index 000000000..fad589372
Binary files /dev/null and b/extensions/admin_ui/media/images/default/menu/checked.gif differ
diff --git a/extensions/admin_ui/media/images/default/menu/group-checked.gif b/extensions/admin_ui/media/images/default/menu/group-checked.gif
new file mode 100644
index 000000000..d30b3e5a8
Binary files /dev/null and b/extensions/admin_ui/media/images/default/menu/group-checked.gif differ
diff --git a/extensions/admin_ui/media/images/default/menu/item-over.gif b/extensions/admin_ui/media/images/default/menu/item-over.gif
new file mode 100644
index 000000000..016783932
Binary files /dev/null and b/extensions/admin_ui/media/images/default/menu/item-over.gif differ
diff --git a/extensions/admin_ui/media/images/default/menu/menu-parent.gif b/extensions/admin_ui/media/images/default/menu/menu-parent.gif
new file mode 100644
index 000000000..1e375622f
Binary files /dev/null and b/extensions/admin_ui/media/images/default/menu/menu-parent.gif differ
diff --git a/extensions/admin_ui/media/images/default/menu/menu.gif b/extensions/admin_ui/media/images/default/menu/menu.gif
new file mode 100644
index 000000000..30a2c4b6c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/menu/menu.gif differ
diff --git a/extensions/admin_ui/media/images/default/menu/unchecked.gif b/extensions/admin_ui/media/images/default/menu/unchecked.gif
new file mode 100644
index 000000000..43823e52d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/menu/unchecked.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/corners-sprite.gif b/extensions/admin_ui/media/images/default/panel/corners-sprite.gif
new file mode 100644
index 000000000..aa0d0ed8f
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/corners-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/left-right.gif b/extensions/admin_ui/media/images/default/panel/left-right.gif
new file mode 100644
index 000000000..9fae2d594
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/left-right.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/light-hd.gif b/extensions/admin_ui/media/images/default/panel/light-hd.gif
new file mode 100644
index 000000000..58d6747b5
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/light-hd.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/tool-sprite-tpl.gif b/extensions/admin_ui/media/images/default/panel/tool-sprite-tpl.gif
new file mode 100644
index 000000000..e6478670e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/tool-sprite-tpl.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/tool-sprites.gif b/extensions/admin_ui/media/images/default/panel/tool-sprites.gif
new file mode 100644
index 000000000..9a3c5b9ac
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/tool-sprites.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/tools-sprites-trans.gif b/extensions/admin_ui/media/images/default/panel/tools-sprites-trans.gif
new file mode 100644
index 000000000..ead931ef6
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/tools-sprites-trans.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/top-bottom.gif b/extensions/admin_ui/media/images/default/panel/top-bottom.gif
new file mode 100644
index 000000000..be6c50e1c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/top-bottom.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/top-bottom.png b/extensions/admin_ui/media/images/default/panel/top-bottom.png
new file mode 100644
index 000000000..578ffb609
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/top-bottom.png differ
diff --git a/extensions/admin_ui/media/images/default/panel/white-corners-sprite.gif b/extensions/admin_ui/media/images/default/panel/white-corners-sprite.gif
new file mode 100644
index 000000000..22d4bbab4
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/white-corners-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/white-left-right.gif b/extensions/admin_ui/media/images/default/panel/white-left-right.gif
new file mode 100644
index 000000000..d82c33784
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/white-left-right.gif differ
diff --git a/extensions/admin_ui/media/images/default/panel/white-top-bottom.gif b/extensions/admin_ui/media/images/default/panel/white-top-bottom.gif
new file mode 100644
index 000000000..fe7dd1c1e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/panel/white-top-bottom.gif differ
diff --git a/extensions/admin_ui/media/images/default/progress/progress-bg.gif b/extensions/admin_ui/media/images/default/progress/progress-bg.gif
new file mode 100644
index 000000000..1c1abeb4b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/progress/progress-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/qtip/bg.gif b/extensions/admin_ui/media/images/default/qtip/bg.gif
new file mode 100644
index 000000000..43488afdb
Binary files /dev/null and b/extensions/admin_ui/media/images/default/qtip/bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/qtip/close.gif b/extensions/admin_ui/media/images/default/qtip/close.gif
new file mode 100644
index 000000000..69ab915e4
Binary files /dev/null and b/extensions/admin_ui/media/images/default/qtip/close.gif differ
diff --git a/extensions/admin_ui/media/images/default/qtip/tip-anchor-sprite.gif b/extensions/admin_ui/media/images/default/qtip/tip-anchor-sprite.gif
new file mode 100644
index 000000000..9cf485060
Binary files /dev/null and b/extensions/admin_ui/media/images/default/qtip/tip-anchor-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/qtip/tip-sprite.gif b/extensions/admin_ui/media/images/default/qtip/tip-sprite.gif
new file mode 100644
index 000000000..9810acac5
Binary files /dev/null and b/extensions/admin_ui/media/images/default/qtip/tip-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/s.gif b/extensions/admin_ui/media/images/default/s.gif
new file mode 100644
index 000000000..1d11fa9ad
Binary files /dev/null and b/extensions/admin_ui/media/images/default/s.gif differ
diff --git a/extensions/admin_ui/media/images/default/shadow-c.png b/extensions/admin_ui/media/images/default/shadow-c.png
new file mode 100644
index 000000000..d435f80ae
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shadow-c.png differ
diff --git a/extensions/admin_ui/media/images/default/shadow-lr.png b/extensions/admin_ui/media/images/default/shadow-lr.png
new file mode 100644
index 000000000..bb88b6f2b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shadow-lr.png differ
diff --git a/extensions/admin_ui/media/images/default/shadow.png b/extensions/admin_ui/media/images/default/shadow.png
new file mode 100644
index 000000000..75c0eba3e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shadow.png differ
diff --git a/extensions/admin_ui/media/images/default/shared/blue-loading.gif b/extensions/admin_ui/media/images/default/shared/blue-loading.gif
new file mode 100644
index 000000000..3bbf639ef
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/blue-loading.gif differ
diff --git a/extensions/admin_ui/media/images/default/shared/calendar.gif b/extensions/admin_ui/media/images/default/shared/calendar.gif
new file mode 100644
index 000000000..133cf232b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/calendar.gif differ
diff --git a/extensions/admin_ui/media/images/default/shared/glass-bg.gif b/extensions/admin_ui/media/images/default/shared/glass-bg.gif
new file mode 100644
index 000000000..26fbbae3b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/glass-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/shared/hd-sprite.gif b/extensions/admin_ui/media/images/default/shared/hd-sprite.gif
new file mode 100644
index 000000000..42da1ea1a
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/hd-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/shared/large-loading.gif b/extensions/admin_ui/media/images/default/shared/large-loading.gif
new file mode 100644
index 000000000..b36b555b4
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/large-loading.gif differ
diff --git a/extensions/admin_ui/media/images/default/shared/left-btn.gif b/extensions/admin_ui/media/images/default/shared/left-btn.gif
new file mode 100644
index 000000000..a0ddd9ee8
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/left-btn.gif differ
diff --git a/extensions/admin_ui/media/images/default/shared/loading-balls.gif b/extensions/admin_ui/media/images/default/shared/loading-balls.gif
new file mode 100644
index 000000000..9ce214beb
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/loading-balls.gif differ
diff --git a/extensions/admin_ui/media/images/default/shared/right-btn.gif b/extensions/admin_ui/media/images/default/shared/right-btn.gif
new file mode 100644
index 000000000..dee63e211
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/right-btn.gif differ
diff --git a/extensions/admin_ui/media/images/default/shared/warning.gif b/extensions/admin_ui/media/images/default/shared/warning.gif
new file mode 100644
index 000000000..806d4bc09
Binary files /dev/null and b/extensions/admin_ui/media/images/default/shared/warning.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/e-handle-dark.gif b/extensions/admin_ui/media/images/default/sizer/e-handle-dark.gif
new file mode 100644
index 000000000..b5486c1a9
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/e-handle-dark.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/e-handle.gif b/extensions/admin_ui/media/images/default/sizer/e-handle.gif
new file mode 100644
index 000000000..00ba83500
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/e-handle.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/ne-handle-dark.gif b/extensions/admin_ui/media/images/default/sizer/ne-handle-dark.gif
new file mode 100644
index 000000000..04e5ecf7d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/ne-handle-dark.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/ne-handle.gif b/extensions/admin_ui/media/images/default/sizer/ne-handle.gif
new file mode 100644
index 000000000..09405c7ac
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/ne-handle.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/nw-handle-dark.gif b/extensions/admin_ui/media/images/default/sizer/nw-handle-dark.gif
new file mode 100644
index 000000000..6e49d6967
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/nw-handle-dark.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/nw-handle.gif b/extensions/admin_ui/media/images/default/sizer/nw-handle.gif
new file mode 100644
index 000000000..2fcea8a92
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/nw-handle.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/s-handle-dark.gif b/extensions/admin_ui/media/images/default/sizer/s-handle-dark.gif
new file mode 100644
index 000000000..4eb5f0fcc
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/s-handle-dark.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/s-handle.gif b/extensions/admin_ui/media/images/default/sizer/s-handle.gif
new file mode 100644
index 000000000..bf069c243
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/s-handle.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/se-handle-dark.gif b/extensions/admin_ui/media/images/default/sizer/se-handle-dark.gif
new file mode 100644
index 000000000..c4c108786
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/se-handle-dark.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/se-handle.gif b/extensions/admin_ui/media/images/default/sizer/se-handle.gif
new file mode 100644
index 000000000..972055e7b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/se-handle.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/square.gif b/extensions/admin_ui/media/images/default/sizer/square.gif
new file mode 100644
index 000000000..14ce6f725
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/square.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/sw-handle-dark.gif b/extensions/admin_ui/media/images/default/sizer/sw-handle-dark.gif
new file mode 100644
index 000000000..77224b0c0
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/sw-handle-dark.gif differ
diff --git a/extensions/admin_ui/media/images/default/sizer/sw-handle.gif b/extensions/admin_ui/media/images/default/sizer/sw-handle.gif
new file mode 100644
index 000000000..3ca0ed96d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/sizer/sw-handle.gif differ
diff --git a/extensions/admin_ui/media/images/default/slider/slider-bg.png b/extensions/admin_ui/media/images/default/slider/slider-bg.png
new file mode 100644
index 000000000..999919424
Binary files /dev/null and b/extensions/admin_ui/media/images/default/slider/slider-bg.png differ
diff --git a/extensions/admin_ui/media/images/default/slider/slider-thumb.png b/extensions/admin_ui/media/images/default/slider/slider-thumb.png
new file mode 100644
index 000000000..cd654a4c1
Binary files /dev/null and b/extensions/admin_ui/media/images/default/slider/slider-thumb.png differ
diff --git a/extensions/admin_ui/media/images/default/slider/slider-v-bg.png b/extensions/admin_ui/media/images/default/slider/slider-v-bg.png
new file mode 100644
index 000000000..121450c28
Binary files /dev/null and b/extensions/admin_ui/media/images/default/slider/slider-v-bg.png differ
diff --git a/extensions/admin_ui/media/images/default/slider/slider-v-thumb.png b/extensions/admin_ui/media/images/default/slider/slider-v-thumb.png
new file mode 100644
index 000000000..7b3d7258a
Binary files /dev/null and b/extensions/admin_ui/media/images/default/slider/slider-v-thumb.png differ
diff --git a/extensions/admin_ui/media/images/default/tabs/scroll-left.gif b/extensions/admin_ui/media/images/default/tabs/scroll-left.gif
new file mode 100644
index 000000000..9f2f6d1c9
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/scroll-left.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/scroll-right.gif b/extensions/admin_ui/media/images/default/tabs/scroll-right.gif
new file mode 100644
index 000000000..4c5e7e395
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/scroll-right.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/scroller-bg.gif b/extensions/admin_ui/media/images/default/tabs/scroller-bg.gif
new file mode 100644
index 000000000..099b90d8a
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/scroller-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-btm-inactive-left-bg.gif b/extensions/admin_ui/media/images/default/tabs/tab-btm-inactive-left-bg.gif
new file mode 100644
index 000000000..188bf940c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-btm-inactive-left-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-btm-inactive-right-bg.gif b/extensions/admin_ui/media/images/default/tabs/tab-btm-inactive-right-bg.gif
new file mode 100644
index 000000000..e1f5e3c51
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-btm-inactive-right-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-btm-left-bg.gif b/extensions/admin_ui/media/images/default/tabs/tab-btm-left-bg.gif
new file mode 100644
index 000000000..dde796870
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-btm-left-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-btm-over-left-bg.gif b/extensions/admin_ui/media/images/default/tabs/tab-btm-over-left-bg.gif
new file mode 100644
index 000000000..da49c100d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-btm-over-left-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-btm-over-right-bg.gif b/extensions/admin_ui/media/images/default/tabs/tab-btm-over-right-bg.gif
new file mode 100644
index 000000000..45346ab14
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-btm-over-right-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-btm-right-bg.gif b/extensions/admin_ui/media/images/default/tabs/tab-btm-right-bg.gif
new file mode 100644
index 000000000..e695186d5
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-btm-right-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-close.gif b/extensions/admin_ui/media/images/default/tabs/tab-close.gif
new file mode 100644
index 000000000..e69987848
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-close.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-strip-bg.gif b/extensions/admin_ui/media/images/default/tabs/tab-strip-bg.gif
new file mode 100644
index 000000000..34f133345
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-strip-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-strip-bg.png b/extensions/admin_ui/media/images/default/tabs/tab-strip-bg.png
new file mode 100644
index 000000000..fa8ab3f46
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-strip-bg.png differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tab-strip-btm-bg.gif b/extensions/admin_ui/media/images/default/tabs/tab-strip-btm-bg.gif
new file mode 100644
index 000000000..5eaba1eaa
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tab-strip-btm-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/tabs/tabs-sprite.gif b/extensions/admin_ui/media/images/default/tabs/tabs-sprite.gif
new file mode 100644
index 000000000..e969fb0b7
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tabs/tabs-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/bg.gif b/extensions/admin_ui/media/images/default/toolbar/bg.gif
new file mode 100644
index 000000000..0b085bf24
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/btn-arrow-light.gif b/extensions/admin_ui/media/images/default/toolbar/btn-arrow-light.gif
new file mode 100644
index 000000000..b0e24b55e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/btn-arrow-light.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/btn-arrow.gif b/extensions/admin_ui/media/images/default/toolbar/btn-arrow.gif
new file mode 100644
index 000000000..8acb4608d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/btn-arrow.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/btn-over-bg.gif b/extensions/admin_ui/media/images/default/toolbar/btn-over-bg.gif
new file mode 100644
index 000000000..ee2dd9860
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/btn-over-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/gray-bg.gif b/extensions/admin_ui/media/images/default/toolbar/gray-bg.gif
new file mode 100644
index 000000000..bd49438f3
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/gray-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/more.gif b/extensions/admin_ui/media/images/default/toolbar/more.gif
new file mode 100644
index 000000000..02c2509fe
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/more.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/tb-bg.gif b/extensions/admin_ui/media/images/default/toolbar/tb-bg.gif
new file mode 100644
index 000000000..4969e4efe
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/tb-bg.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/tb-btn-sprite.gif b/extensions/admin_ui/media/images/default/toolbar/tb-btn-sprite.gif
new file mode 100644
index 000000000..19bbef3c6
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/tb-btn-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/tb-xl-btn-sprite.gif b/extensions/admin_ui/media/images/default/toolbar/tb-xl-btn-sprite.gif
new file mode 100644
index 000000000..1bc0420f0
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/tb-xl-btn-sprite.gif differ
diff --git a/extensions/admin_ui/media/images/default/toolbar/tb-xl-sep.gif b/extensions/admin_ui/media/images/default/toolbar/tb-xl-sep.gif
new file mode 100644
index 000000000..30555eecf
Binary files /dev/null and b/extensions/admin_ui/media/images/default/toolbar/tb-xl-sep.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/arrows.gif b/extensions/admin_ui/media/images/default/tree/arrows.gif
new file mode 100644
index 000000000..268346391
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/arrows.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/drop-add.gif b/extensions/admin_ui/media/images/default/tree/drop-add.gif
new file mode 100644
index 000000000..b22cd1448
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/drop-add.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/drop-between.gif b/extensions/admin_ui/media/images/default/tree/drop-between.gif
new file mode 100644
index 000000000..5c6c09d98
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/drop-between.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/drop-no.gif b/extensions/admin_ui/media/images/default/tree/drop-no.gif
new file mode 100644
index 000000000..9d9c6a9ce
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/drop-no.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/drop-over.gif b/extensions/admin_ui/media/images/default/tree/drop-over.gif
new file mode 100644
index 000000000..30d1ca710
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/drop-over.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/drop-under.gif b/extensions/admin_ui/media/images/default/tree/drop-under.gif
new file mode 100644
index 000000000..85f66b1e5
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/drop-under.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/drop-yes.gif b/extensions/admin_ui/media/images/default/tree/drop-yes.gif
new file mode 100644
index 000000000..8aacb307e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/drop-yes.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-end-minus-nl.gif b/extensions/admin_ui/media/images/default/tree/elbow-end-minus-nl.gif
new file mode 100644
index 000000000..928779e92
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-end-minus-nl.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-end-minus.gif b/extensions/admin_ui/media/images/default/tree/elbow-end-minus.gif
new file mode 100644
index 000000000..9a8d727d7
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-end-minus.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-end-plus-nl.gif b/extensions/admin_ui/media/images/default/tree/elbow-end-plus-nl.gif
new file mode 100644
index 000000000..9f7f69880
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-end-plus-nl.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-end-plus.gif b/extensions/admin_ui/media/images/default/tree/elbow-end-plus.gif
new file mode 100644
index 000000000..5943a01bc
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-end-plus.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-end.gif b/extensions/admin_ui/media/images/default/tree/elbow-end.gif
new file mode 100644
index 000000000..f24ddee79
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-end.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-line.gif b/extensions/admin_ui/media/images/default/tree/elbow-line.gif
new file mode 100644
index 000000000..75e6da4f8
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-line.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-minus-nl.gif b/extensions/admin_ui/media/images/default/tree/elbow-minus-nl.gif
new file mode 100644
index 000000000..928779e92
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-minus-nl.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-minus.gif b/extensions/admin_ui/media/images/default/tree/elbow-minus.gif
new file mode 100644
index 000000000..97dcc7110
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-minus.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-plus-nl.gif b/extensions/admin_ui/media/images/default/tree/elbow-plus-nl.gif
new file mode 100644
index 000000000..9f7f69880
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-plus-nl.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow-plus.gif b/extensions/admin_ui/media/images/default/tree/elbow-plus.gif
new file mode 100644
index 000000000..698de4793
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow-plus.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/elbow.gif b/extensions/admin_ui/media/images/default/tree/elbow.gif
new file mode 100644
index 000000000..b8f420838
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/elbow.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/folder-open.gif b/extensions/admin_ui/media/images/default/tree/folder-open.gif
new file mode 100644
index 000000000..56ba737bc
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/folder-open.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/folder.gif b/extensions/admin_ui/media/images/default/tree/folder.gif
new file mode 100644
index 000000000..20412f7c1
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/folder.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/leaf.gif b/extensions/admin_ui/media/images/default/tree/leaf.gif
new file mode 100644
index 000000000..445769d3f
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/leaf.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/loading.gif b/extensions/admin_ui/media/images/default/tree/loading.gif
new file mode 100644
index 000000000..e846e1d6c
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/loading.gif differ
diff --git a/extensions/admin_ui/media/images/default/tree/s.gif b/extensions/admin_ui/media/images/default/tree/s.gif
new file mode 100644
index 000000000..1d11fa9ad
Binary files /dev/null and b/extensions/admin_ui/media/images/default/tree/s.gif differ
diff --git a/extensions/admin_ui/media/images/default/window/icon-error.gif b/extensions/admin_ui/media/images/default/window/icon-error.gif
new file mode 100644
index 000000000..397b655ab
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/icon-error.gif differ
diff --git a/extensions/admin_ui/media/images/default/window/icon-info.gif b/extensions/admin_ui/media/images/default/window/icon-info.gif
new file mode 100644
index 000000000..58281c306
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/icon-info.gif differ
diff --git a/extensions/admin_ui/media/images/default/window/icon-question.gif b/extensions/admin_ui/media/images/default/window/icon-question.gif
new file mode 100644
index 000000000..08abd82ae
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/icon-question.gif differ
diff --git a/extensions/admin_ui/media/images/default/window/icon-warning.gif b/extensions/admin_ui/media/images/default/window/icon-warning.gif
new file mode 100644
index 000000000..27ff98b4f
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/icon-warning.gif differ
diff --git a/extensions/admin_ui/media/images/default/window/left-corners.png b/extensions/admin_ui/media/images/default/window/left-corners.png
new file mode 100644
index 000000000..1a518335d
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/left-corners.png differ
diff --git a/extensions/admin_ui/media/images/default/window/left-corners.psd b/extensions/admin_ui/media/images/default/window/left-corners.psd
new file mode 100644
index 000000000..3d7f0623e
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/left-corners.psd differ
diff --git a/extensions/admin_ui/media/images/default/window/left-right.png b/extensions/admin_ui/media/images/default/window/left-right.png
new file mode 100644
index 000000000..7586ff333
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/left-right.png differ
diff --git a/extensions/admin_ui/media/images/default/window/left-right.psd b/extensions/admin_ui/media/images/default/window/left-right.psd
new file mode 100644
index 000000000..59a3960a2
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/left-right.psd differ
diff --git a/extensions/admin_ui/media/images/default/window/right-corners.png b/extensions/admin_ui/media/images/default/window/right-corners.png
new file mode 100644
index 000000000..e69a3ffc9
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/right-corners.png differ
diff --git a/extensions/admin_ui/media/images/default/window/right-corners.psd b/extensions/admin_ui/media/images/default/window/right-corners.psd
new file mode 100644
index 000000000..86d509538
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/right-corners.psd differ
diff --git a/extensions/admin_ui/media/images/default/window/top-bottom.png b/extensions/admin_ui/media/images/default/window/top-bottom.png
new file mode 100644
index 000000000..33779e76b
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/top-bottom.png differ
diff --git a/extensions/admin_ui/media/images/default/window/top-bottom.psd b/extensions/admin_ui/media/images/default/window/top-bottom.psd
new file mode 100644
index 000000000..48c5395e4
Binary files /dev/null and b/extensions/admin_ui/media/images/default/window/top-bottom.psd differ
diff --git a/extensions/admin_ui/media/images/favicon.ico b/extensions/admin_ui/media/images/favicon.ico
new file mode 100644
index 000000000..9f3fb0e55
Binary files /dev/null and b/extensions/admin_ui/media/images/favicon.ico differ
diff --git a/extensions/admin_ui/media/images/icons/beef.gif b/extensions/admin_ui/media/images/icons/beef.gif
new file mode 100644
index 000000000..9a49d906a
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/beef.gif differ
diff --git a/extensions/admin_ui/media/images/icons/bsd.png b/extensions/admin_ui/media/images/icons/bsd.png
new file mode 100644
index 000000000..6bd3d29e1
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/bsd.png differ
diff --git a/extensions/admin_ui/media/images/icons/bsdfreebsd.png b/extensions/admin_ui/media/images/icons/bsdfreebsd.png
new file mode 100644
index 000000000..3b5986287
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/bsdfreebsd.png differ
diff --git a/extensions/admin_ui/media/images/icons/chrome.png b/extensions/admin_ui/media/images/icons/chrome.png
new file mode 100644
index 000000000..59262913f
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/chrome.png differ
diff --git a/extensions/admin_ui/media/images/icons/epiphany.png b/extensions/admin_ui/media/images/icons/epiphany.png
new file mode 100644
index 000000000..dc87718c5
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/epiphany.png differ
diff --git a/extensions/admin_ui/media/images/icons/firefox.png b/extensions/admin_ui/media/images/icons/firefox.png
new file mode 100644
index 000000000..eb55e7e18
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/firefox.png differ
diff --git a/extensions/admin_ui/media/images/icons/green.png b/extensions/admin_ui/media/images/icons/green.png
new file mode 100644
index 000000000..ad22db370
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/green.png differ
diff --git a/extensions/admin_ui/media/images/icons/grey.png b/extensions/admin_ui/media/images/icons/grey.png
new file mode 100644
index 000000000..a3238633a
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/grey.png differ
diff --git a/extensions/admin_ui/media/images/icons/iphone.png b/extensions/admin_ui/media/images/icons/iphone.png
new file mode 100644
index 000000000..ab4a8cc31
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/iphone.png differ
diff --git a/extensions/admin_ui/media/images/icons/konqueror.png b/extensions/admin_ui/media/images/icons/konqueror.png
new file mode 100644
index 000000000..3fb315dbf
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/konqueror.png differ
diff --git a/extensions/admin_ui/media/images/icons/linux.png b/extensions/admin_ui/media/images/icons/linux.png
new file mode 100644
index 000000000..33dace828
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/linux.png differ
diff --git a/extensions/admin_ui/media/images/icons/mac.png b/extensions/admin_ui/media/images/icons/mac.png
new file mode 100644
index 000000000..03f56f402
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/mac.png differ
diff --git a/extensions/admin_ui/media/images/icons/mozilla.png b/extensions/admin_ui/media/images/icons/mozilla.png
new file mode 100644
index 000000000..6008a31ae
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/mozilla.png differ
diff --git a/extensions/admin_ui/media/images/icons/msie.png b/extensions/admin_ui/media/images/icons/msie.png
new file mode 100644
index 000000000..6dbe4d07e
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/msie.png differ
diff --git a/extensions/admin_ui/media/images/icons/opera.ico b/extensions/admin_ui/media/images/icons/opera.ico
new file mode 100644
index 000000000..036dc5785
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/opera.ico differ
diff --git a/extensions/admin_ui/media/images/icons/orange.png b/extensions/admin_ui/media/images/icons/orange.png
new file mode 100644
index 000000000..61bc7b769
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/orange.png differ
diff --git a/extensions/admin_ui/media/images/icons/red.png b/extensions/admin_ui/media/images/icons/red.png
new file mode 100644
index 000000000..c0939bac7
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/red.png differ
diff --git a/extensions/admin_ui/media/images/icons/safari.png b/extensions/admin_ui/media/images/icons/safari.png
new file mode 100644
index 000000000..683f2ea2b
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/safari.png differ
diff --git a/extensions/admin_ui/media/images/icons/unknown.png b/extensions/admin_ui/media/images/icons/unknown.png
new file mode 100644
index 000000000..895b77138
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/unknown.png differ
diff --git a/extensions/admin_ui/media/images/icons/win.png b/extensions/admin_ui/media/images/icons/win.png
new file mode 100644
index 000000000..a3e9a9684
Binary files /dev/null and b/extensions/admin_ui/media/images/icons/win.png differ
diff --git a/extensions/admin_ui/media/images/statusbar/accept.png b/extensions/admin_ui/media/images/statusbar/accept.png
new file mode 100644
index 000000000..89c8129a4
Binary files /dev/null and b/extensions/admin_ui/media/images/statusbar/accept.png differ
diff --git a/extensions/admin_ui/media/images/statusbar/exclamation.gif b/extensions/admin_ui/media/images/statusbar/exclamation.gif
new file mode 100644
index 000000000..ea31a3060
Binary files /dev/null and b/extensions/admin_ui/media/images/statusbar/exclamation.gif differ
diff --git a/extensions/admin_ui/media/images/statusbar/loading.gif b/extensions/admin_ui/media/images/statusbar/loading.gif
new file mode 100644
index 000000000..e846e1d6c
Binary files /dev/null and b/extensions/admin_ui/media/images/statusbar/loading.gif differ
diff --git a/extensions/admin_ui/media/images/statusbar/saved.png.png b/extensions/admin_ui/media/images/statusbar/saved.png.png
new file mode 100644
index 000000000..a9925a06a
Binary files /dev/null and b/extensions/admin_ui/media/images/statusbar/saved.png.png differ
diff --git a/extensions/admin_ui/media/images/statusbar/saving.gif b/extensions/admin_ui/media/images/statusbar/saving.gif
new file mode 100644
index 000000000..122b0b48f
Binary files /dev/null and b/extensions/admin_ui/media/images/statusbar/saving.gif differ
diff --git a/extensions/admin_ui/media/javascript/ext-all-debug.js b/extensions/admin_ui/media/javascript/ext-all-debug.js
new file mode 100644
index 000000000..3befa7e76
--- /dev/null
+++ b/extensions/admin_ui/media/javascript/ext-all-debug.js
@@ -0,0 +1,47684 @@
+
+
+Ext.DomHelper = function(){
+ var tempTableEl = null,
+ emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,
+ tableRe = /^table|tbody|tr|td$/i,
+ confRe = /tag|children|cn|html$/i,
+ tableElRe = /td|tr|tbody/i,
+ cssRe = /([a-z0-9-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,
+ endRe = /end/i,
+ pub,
+
+ afterbegin = 'afterbegin',
+ afterend = 'afterend',
+ beforebegin = 'beforebegin',
+ beforeend = 'beforeend',
+ ts = '',
+ tbs = ts+'',
+ tbe = ' '+te,
+ trs = tbs + '',
+ tre = ' '+tbe;
+
+
+ function doInsert(el, o, returnElement, pos, sibling, append){
+ var newNode = pub.insertHtml(pos, Ext.getDom(el), createHtml(o));
+ return returnElement ? Ext.get(newNode, true) : newNode;
+ }
+
+
+ function createHtml(o){
+ var b = '',
+ attr,
+ val,
+ key,
+ keyVal,
+ cn;
+
+ if(typeof o == "string"){
+ b = o;
+ } else if (Ext.isArray(o)) {
+ for (var i=0; i < o.length; i++) {
+ if(o[i]) {
+ b += createHtml(o[i]);
+ }
+ };
+ } else {
+ b += '<' + (o.tag = o.tag || 'div');
+ for (attr in o) {
+ val = o[attr];
+ if(!confRe.test(attr)){
+ if (typeof val == "object") {
+ b += ' ' + attr + '="';
+ for (key in val) {
+ b += key + ':' + val[key] + ';';
+ };
+ b += '"';
+ }else{
+ b += ' ' + ({cls : 'class', htmlFor : 'for'}[attr] || attr) + '="' + val + '"';
+ }
+ }
+ };
+
+ if (emptyTags.test(o.tag)) {
+ b += '/>';
+ } else {
+ b += '>';
+ if ((cn = o.children || o.cn)) {
+ b += createHtml(cn);
+ } else if(o.html){
+ b += o.html;
+ }
+ b += '' + o.tag + '>';
+ }
+ }
+ return b;
+ }
+
+ function ieTable(depth, s, h, e){
+ tempTableEl.innerHTML = [s, h, e].join('');
+ var i = -1,
+ el = tempTableEl,
+ ns;
+ while(++i < depth){
+ el = el.firstChild;
+ }
+
+ if(ns = el.nextSibling){
+ var df = document.createDocumentFragment();
+ while(el){
+ ns = el.nextSibling;
+ df.appendChild(el);
+ el = ns;
+ }
+ el = df;
+ }
+ return el;
+ }
+
+
+ function insertIntoTable(tag, where, el, html) {
+ var node,
+ before;
+
+ tempTableEl = tempTableEl || document.createElement('div');
+
+ if(tag == 'td' && (where == afterbegin || where == beforeend) ||
+ !tableElRe.test(tag) && (where == beforebegin || where == afterend)) {
+ return;
+ }
+ before = where == beforebegin ? el :
+ where == afterend ? el.nextSibling :
+ where == afterbegin ? el.firstChild : null;
+
+ if (where == beforebegin || where == afterend) {
+ el = el.parentNode;
+ }
+
+ if (tag == 'td' || (tag == 'tr' && (where == beforeend || where == afterbegin))) {
+ node = ieTable(4, trs, html, tre);
+ } else if ((tag == 'tbody' && (where == beforeend || where == afterbegin)) ||
+ (tag == 'tr' && (where == beforebegin || where == afterend))) {
+ node = ieTable(3, tbs, html, tbe);
+ } else {
+ node = ieTable(2, ts, html, te);
+ }
+ el.insertBefore(node, before);
+ return node;
+ }
+
+
+ pub = {
+
+ markup : function(o){
+ return createHtml(o);
+ },
+
+
+ applyStyles : function(el, styles){
+ if(styles){
+ var i = 0,
+ len,
+ style,
+ matches;
+
+ el = Ext.fly(el);
+ if(typeof styles == "function"){
+ styles = styles.call();
+ }
+ if(typeof styles == "string"){
+ while((matches = cssRe.exec(styles))){
+ el.setStyle(matches[1], matches[2]);
+ }
+ }else if (typeof styles == "object"){
+ el.setStyle(styles);
+ }
+ }
+ },
+
+
+ insertHtml : function(where, el, html){
+ var hash = {},
+ hashVal,
+ setStart,
+ range,
+ frag,
+ rangeEl,
+ rs;
+
+ where = where.toLowerCase();
+
+ hash[beforebegin] = ['BeforeBegin', 'previousSibling'];
+ hash[afterend] = ['AfterEnd', 'nextSibling'];
+
+ if (el.insertAdjacentHTML) {
+ if(tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))){
+ return rs;
+ }
+
+ hash[afterbegin] = ['AfterBegin', 'firstChild'];
+ hash[beforeend] = ['BeforeEnd', 'lastChild'];
+ if ((hashVal = hash[where])) {
+ el.insertAdjacentHTML(hashVal[0], html);
+ return el[hashVal[1]];
+ }
+ } else {
+ range = el.ownerDocument.createRange();
+ setStart = 'setStart' + (endRe.test(where) ? 'After' : 'Before');
+ if (hash[where]) {
+ range[setStart](el);
+ frag = range.createContextualFragment(html);
+ el.parentNode.insertBefore(frag, where == beforebegin ? el : el.nextSibling);
+ return el[(where == beforebegin ? 'previous' : 'next') + 'Sibling'];
+ } else {
+ rangeEl = (where == afterbegin ? 'first' : 'last') + 'Child';
+ if (el.firstChild) {
+ range[setStart](el[rangeEl]);
+ frag = range.createContextualFragment(html);
+ if(where == afterbegin){
+ el.insertBefore(frag, el.firstChild);
+ }else{
+ el.appendChild(frag);
+ }
+ } else {
+ el.innerHTML = html;
+ }
+ return el[rangeEl];
+ }
+ }
+ throw 'Illegal insertion point -> "' + where + '"';
+ },
+
+
+ insertBefore : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, beforebegin);
+ },
+
+
+ insertAfter : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, afterend, 'nextSibling');
+ },
+
+
+ insertFirst : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, afterbegin, 'firstChild');
+ },
+
+
+ append : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, beforeend, '', true);
+ },
+
+
+ overwrite : function(el, o, returnElement){
+ el = Ext.getDom(el);
+ el.innerHTML = createHtml(o);
+ return returnElement ? Ext.get(el.firstChild) : el.firstChild;
+ },
+
+ createHtml : createHtml
+ };
+ return pub;
+}();
+
+Ext.apply(Ext.DomHelper,
+function(){
+ var pub,
+ afterbegin = 'afterbegin',
+ afterend = 'afterend',
+ beforebegin = 'beforebegin',
+ beforeend = 'beforeend',
+ confRe = /tag|children|cn|html$/i;
+
+
+ function doInsert(el, o, returnElement, pos, sibling, append){
+ el = Ext.getDom(el);
+ var newNode;
+ if (pub.useDom) {
+ newNode = createDom(o, null);
+ if (append) {
+ el.appendChild(newNode);
+ } else {
+ (sibling == 'firstChild' ? el : el.parentNode).insertBefore(newNode, el[sibling] || el);
+ }
+ } else {
+ newNode = Ext.DomHelper.insertHtml(pos, el, Ext.DomHelper.createHtml(o));
+ }
+ return returnElement ? Ext.get(newNode, true) : newNode;
+ }
+
+
+
+ function createDom(o, parentNode){
+ var el,
+ doc = document,
+ useSet,
+ attr,
+ val,
+ cn;
+
+ if (Ext.isArray(o)) {
+ el = doc.createDocumentFragment();
+ for (var i = 0, l = o.length; i < l; i++) {
+ createDom(o[i], el);
+ }
+ } else if (typeof o == 'string') {
+ el = doc.createTextNode(o);
+ } else {
+ el = doc.createElement( o.tag || 'div' );
+ useSet = !!el.setAttribute;
+ for (var attr in o) {
+ if(!confRe.test(attr)){
+ val = o[attr];
+ if(attr == 'cls'){
+ el.className = val;
+ }else{
+ if(useSet){
+ el.setAttribute(attr, val);
+ }else{
+ el[attr] = val;
+ }
+ }
+ }
+ }
+ Ext.DomHelper.applyStyles(el, o.style);
+
+ if ((cn = o.children || o.cn)) {
+ createDom(cn, el);
+ } else if (o.html) {
+ el.innerHTML = o.html;
+ }
+ }
+ if(parentNode){
+ parentNode.appendChild(el);
+ }
+ return el;
+ }
+
+ pub = {
+
+ createTemplate : function(o){
+ var html = Ext.DomHelper.createHtml(o);
+ return new Ext.Template(html);
+ },
+
+
+ useDom : false,
+
+
+ insertBefore : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, beforebegin);
+ },
+
+
+ insertAfter : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, afterend, 'nextSibling');
+ },
+
+
+ insertFirst : function(el, o, returnElement){
+ return doInsert(el, o, returnElement, afterbegin, 'firstChild');
+ },
+
+
+ append: function(el, o, returnElement){
+ return doInsert(el, o, returnElement, beforeend, '', true);
+ },
+
+
+ createDom: createDom
+ };
+ return pub;
+}());
+
+Ext.Template = function(html){
+ var me = this,
+ a = arguments,
+ buf = [],
+ v;
+
+ if (Ext.isArray(html)) {
+ html = html.join("");
+ } else if (a.length > 1) {
+ for(var i = 0, len = a.length; i < len; i++){
+ v = a[i];
+ if(typeof v == 'object'){
+ Ext.apply(me, v);
+ } else {
+ buf.push(v);
+ }
+ };
+ html = buf.join('');
+ }
+
+
+ me.html = html;
+
+ if (me.compiled) {
+ me.compile();
+ }
+};
+Ext.Template.prototype = {
+
+ re : /\{([\w-]+)\}/g,
+
+
+
+ applyTemplate : function(values){
+ var me = this;
+
+ return me.compiled ?
+ me.compiled(values) :
+ me.html.replace(me.re, function(m, name){
+ return values[name] !== undefined ? values[name] : "";
+ });
+ },
+
+
+ set : function(html, compile){
+ var me = this;
+ me.html = html;
+ me.compiled = null;
+ return compile ? me.compile() : me;
+ },
+
+
+ compile : function(){
+ var me = this,
+ sep = Ext.isGecko ? "+" : ",";
+
+ function fn(m, name){
+ name = "values['" + name + "']";
+ return "'"+ sep + '(' + name + " == undefined ? '' : " + name + ')' + sep + "'";
+ }
+
+ eval("this.compiled = function(values){ return " + (Ext.isGecko ? "'" : "['") +
+ me.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn) +
+ (Ext.isGecko ? "';};" : "'].join('');};"));
+ return me;
+ },
+
+
+ insertFirst: function(el, values, returnElement){
+ return this.doInsert('afterBegin', el, values, returnElement);
+ },
+
+
+ insertBefore: function(el, values, returnElement){
+ return this.doInsert('beforeBegin', el, values, returnElement);
+ },
+
+
+ insertAfter : function(el, values, returnElement){
+ return this.doInsert('afterEnd', el, values, returnElement);
+ },
+
+
+ append : function(el, values, returnElement){
+ return this.doInsert('beforeEnd', el, values, returnElement);
+ },
+
+ doInsert : function(where, el, values, returnEl){
+ el = Ext.getDom(el);
+ var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values));
+ return returnEl ? Ext.get(newNode, true) : newNode;
+ },
+
+
+ overwrite : function(el, values, returnElement){
+ el = Ext.getDom(el);
+ el.innerHTML = this.applyTemplate(values);
+ return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
+ }
+};
+
+Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
+
+
+Ext.Template.from = function(el, config){
+ el = Ext.getDom(el);
+ return new Ext.Template(el.value || el.innerHTML, config || '');
+};
+
+Ext.apply(Ext.Template.prototype, {
+
+ disableFormats : false,
+
+
+
+ re : /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
+ argsRe : /^\s*['"](.*)["']\s*$/,
+ compileARe : /\\/g,
+ compileBRe : /(\r\n|\n)/g,
+ compileCRe : /'/g,
+
+ /**
+ * Returns an HTML fragment of this template with the specified values applied.
+ * @param {Object/Array} values The template values. Can be an array if your params are numeric (i.e. {0}) or an object (i.e. {foo: 'bar'})
+ * @return {String} The HTML fragment
+ * @hide repeat doc
+ */
+ applyTemplate : function(values){
+ var me = this,
+ useF = me.disableFormats !== true,
+ fm = Ext.util.Format,
+ tpl = me;
+
+ if(me.compiled){
+ return me.compiled(values);
+ }
+ function fn(m, name, format, args){
+ if (format && useF) {
+ if (format.substr(0, 5) == "this.") {
+ return tpl.call(format.substr(5), values[name], values);
+ } else {
+ if (args) {
+ // quoted values are required for strings in compiled templates,
+ // but for non compiled we need to strip them
+ // quoted reversed for jsmin
+ var re = me.argsRe;
+ args = args.split(',');
+ for(var i = 0, len = args.length; i < len; i++){
+ args[i] = args[i].replace(re, "$1");
+ }
+ args = [values[name]].concat(args);
+ } else {
+ args = [values[name]];
+ }
+ return fm[format].apply(fm, args);
+ }
+ } else {
+ return values[name] !== undefined ? values[name] : "";
+ }
+ }
+ return me.html.replace(me.re, fn);
+ },
+
+ /**
+ * Compiles the template into an internal function, eliminating the RegEx overhead.
+ * @return {Ext.Template} this
+ * @hide repeat doc
+ */
+ compile : function(){
+ var me = this,
+ fm = Ext.util.Format,
+ useF = me.disableFormats !== true,
+ sep = Ext.isGecko ? "+" : ",",
+ body;
+
+ function fn(m, name, format, args){
+ if(format && useF){
+ args = args ? ',' + args : "";
+ if(format.substr(0, 5) != "this."){
+ format = "fm." + format + '(';
+ }else{
+ format = 'this.call("'+ format.substr(5) + '", ';
+ args = ", values";
+ }
+ }else{
+ args= ''; format = "(values['" + name + "'] == undefined ? '' : ";
+ }
+ return "'"+ sep + format + "values['" + name + "']" + args + ")"+sep+"'";
+ }
+
+ // branched to use + in gecko and [].join() in others
+ if(Ext.isGecko){
+ body = "this.compiled = function(values){ return '" +
+ me.html.replace(me.compileARe, '\\\\').replace(me.compileBRe, '\\n').replace(me.compileCRe, "\\'").replace(me.re, fn) +
+ "';};";
+ }else{
+ body = ["this.compiled = function(values){ return ['"];
+ body.push(me.html.replace(me.compileARe, '\\\\').replace(me.compileBRe, '\\n').replace(me.compileCRe, "\\'").replace(me.re, fn));
+ body.push("'].join('');};");
+ body = body.join('');
+ }
+ eval(body);
+ return me;
+ },
+
+ // private function used to call members
+ call : function(fnName, value, allValues){
+ return this[fnName](value, allValues);
+ }
+});
+Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
+/*
+ * This is code is also distributed under MIT license for use
+ * with jQuery and prototype JavaScript libraries.
+ */
+/**
+ * @class Ext.DomQuery
+Provides high performance selector/xpath processing by compiling queries into reusable functions. New pseudo classes and matchers can be plugged. It works on HTML and XML documents (if a content node is passed in).
+
+DomQuery supports most of the CSS3 selectors spec , along with some custom selectors and basic XPath.
+
+
+All selectors, attribute filters and pseudos below can be combined infinitely in any order. For example "div.foo:nth-child(odd)[@foo=bar].bar:first" would be a perfectly valid selector. Node filters are processed in the order in which they appear, which allows you to optimize your queries for your document structure.
+
+Element Selectors:
+
+ * any element
+ E an element with the tag E
+ E F All descendent elements of E that have the tag F
+ E > F or E/F all direct children elements of E that have the tag F
+ E + F all elements with the tag F that are immediately preceded by an element with the tag E
+ E ~ F all elements with the tag F that are preceded by a sibling element with the tag E
+
+Attribute Selectors:
+The use of @ and quotes are optional. For example, div[@foo='bar'] is also a valid attribute selector.
+
+ E[foo] has an attribute "foo"
+ E[foo=bar] has an attribute "foo" that equals "bar"
+ E[foo^=bar] has an attribute "foo" that starts with "bar"
+ E[foo$=bar] has an attribute "foo" that ends with "bar"
+ E[foo*=bar] has an attribute "foo" that contains the substring "bar"
+ E[foo%=2] has an attribute "foo" that is evenly divisible by 2
+ E[foo!=bar] has an attribute "foo" that does not equal "bar"
+
+Pseudo Classes:
+
+ E:first-child E is the first child of its parent
+ E:last-child E is the last child of its parent
+ E:nth-child(n ) E is the n th child of its parent (1 based as per the spec)
+ E:nth-child(odd) E is an odd child of its parent
+ E:nth-child(even) E is an even child of its parent
+ E:only-child E is the only child of its parent
+ E:checked E is an element that is has a checked attribute that is true (e.g. a radio or checkbox)
+ E:first the first E in the resultset
+ E:last the last E in the resultset
+ E:nth(n ) the n th E in the resultset (1 based)
+ E:odd shortcut for :nth-child(odd)
+ E:even shortcut for :nth-child(even)
+ E:contains(foo) E's innerHTML contains the substring "foo"
+ E:nodeValue(foo) E contains a textNode with a nodeValue that equals "foo"
+ E:not(S) an E element that does not match simple selector S
+ E:has(S) an E element that has a descendent that matches simple selector S
+ E:next(S) an E element whose next sibling matches simple selector S
+ E:prev(S) an E element whose previous sibling matches simple selector S
+ E:any(S1|S2|S2) an E element which matches any of the simple selectors S1, S2 or S3
+
+CSS Value Selectors:
+
+ E{display=none} css value "display" that equals "none"
+ E{display^=none} css value "display" that starts with "none"
+ E{display$=none} css value "display" that ends with "none"
+ E{display*=none} css value "display" that contains the substring "none"
+ E{display%=2} css value "display" that is evenly divisible by 2
+ E{display!=none} css value "display" that does not equal "none"
+
+ * @singleton
+ */
+Ext.DomQuery = function(){
+ var cache = {},
+ simpleCache = {},
+ valueCache = {},
+ nonSpace = /\S/,
+ trimRe = /^\s+|\s+$/g,
+ tplRe = /\{(\d+)\}/g,
+ modeRe = /^(\s?[\/>+~]\s?|\s|$)/,
+ tagTokenRe = /^(#)?([\w-\*]+)/,
+ nthRe = /(\d*)n\+?(\d*)/,
+ nthRe2 = /\D/,
+
+
+
+ isIE = window.ActiveXObject ? true : false,
+ key = 30803;
+
+
+
+ eval("var batch = 30803;");
+
+
+
+ function child(parent, index){
+ var i = 0,
+ n = parent.firstChild;
+ while(n){
+ if(n.nodeType == 1){
+ if(++i == index){
+ return n;
+ }
+ }
+ n = n.nextSibling;
+ }
+ return null;
+ }
+
+
+ function next(n){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ return n;
+ }
+
+
+ function prev(n){
+ while((n = n.previousSibling) && n.nodeType != 1);
+ return n;
+ }
+
+
+
+ function children(parent){
+ var n = parent.firstChild,
+ nodeIndex = -1,
+ nextNode;
+ while(n){
+ nextNode = n.nextSibling;
+
+ if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){
+ parent.removeChild(n);
+ }else{
+
+ n.nodeIndex = ++nodeIndex;
+ }
+ n = nextNode;
+ }
+ return this;
+ }
+
+
+
+
+ function byClassName(nodeSet, cls){
+ if(!cls){
+ return nodeSet;
+ }
+ var result = [], ri = -1;
+ for(var i = 0, ci; ci = nodeSet[i]; i++){
+ if((' '+ci.className+' ').indexOf(cls) != -1){
+ result[++ri] = ci;
+ }
+ }
+ return result;
+ };
+
+ function attrValue(n, attr){
+
+ if(!n.tagName && typeof n.length != "undefined"){
+ n = n[0];
+ }
+ if(!n){
+ return null;
+ }
+
+ if(attr == "for"){
+ return n.htmlFor;
+ }
+ if(attr == "class" || attr == "className"){
+ return n.className;
+ }
+ return n.getAttribute(attr) || n[attr];
+
+ };
+
+
+
+
+
+ function getNodes(ns, mode, tagName){
+ var result = [], ri = -1, cs;
+ if(!ns){
+ return result;
+ }
+ tagName = tagName || "*";
+
+ if(typeof ns.getElementsByTagName != "undefined"){
+ ns = [ns];
+ }
+
+
+
+ if(!mode){
+ for(var i = 0, ni; ni = ns[i]; i++){
+ cs = ni.getElementsByTagName(tagName);
+ for(var j = 0, ci; ci = cs[j]; j++){
+ result[++ri] = ci;
+ }
+ }
+
+
+ } else if(mode == "/" || mode == ">"){
+ var utag = tagName.toUpperCase();
+ for(var i = 0, ni, cn; ni = ns[i]; i++){
+ cn = ni.childNodes;
+ for(var j = 0, cj; cj = cn[j]; j++){
+ if(cj.nodeName == utag || cj.nodeName == tagName || tagName == '*'){
+ result[++ri] = cj;
+ }
+ }
+ }
+
+
+ }else if(mode == "+"){
+ var utag = tagName.toUpperCase();
+ for(var i = 0, n; n = ns[i]; i++){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ if(n && (n.nodeName == utag || n.nodeName == tagName || tagName == '*')){
+ result[++ri] = n;
+ }
+ }
+
+
+ }else if(mode == "~"){
+ var utag = tagName.toUpperCase();
+ for(var i = 0, n; n = ns[i]; i++){
+ while((n = n.nextSibling)){
+ if (n.nodeName == utag || n.nodeName == tagName || tagName == '*'){
+ result[++ri] = n;
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ function concat(a, b){
+ if(b.slice){
+ return a.concat(b);
+ }
+ for(var i = 0, l = b.length; i < l; i++){
+ a[a.length] = b[i];
+ }
+ return a;
+ }
+
+ function byTag(cs, tagName){
+ if(cs.tagName || cs == document){
+ cs = [cs];
+ }
+ if(!tagName){
+ return cs;
+ }
+ var result = [], ri = -1;
+ tagName = tagName.toLowerCase();
+ for(var i = 0, ci; ci = cs[i]; i++){
+ if(ci.nodeType == 1 && ci.tagName.toLowerCase() == tagName){
+ result[++ri] = ci;
+ }
+ }
+ return result;
+ }
+
+ function byId(cs, id){
+ if(cs.tagName || cs == document){
+ cs = [cs];
+ }
+ if(!id){
+ return cs;
+ }
+ var result = [], ri = -1;
+ for(var i = 0, ci; ci = cs[i]; i++){
+ if(ci && ci.id == id){
+ result[++ri] = ci;
+ return result;
+ }
+ }
+ return result;
+ }
+
+
+
+ function byAttribute(cs, attr, value, op, custom){
+ var result = [],
+ ri = -1,
+ useGetStyle = custom == "{",
+ fn = Ext.DomQuery.operators[op],
+ a,
+ innerHTML;
+ for(var i = 0, ci; ci = cs[i]; i++){
+
+ if(ci.nodeType != 1){
+ continue;
+ }
+
+ innerHTML = ci.innerHTML;
+
+ if(innerHTML !== null && innerHTML !== undefined){
+ if(useGetStyle){
+ a = Ext.DomQuery.getStyle(ci, attr);
+ } else if (attr == "class" || attr == "className"){
+ a = ci.className;
+ } else if (attr == "for"){
+ a = ci.htmlFor;
+ } else if (attr == "href"){
+
+
+ a = ci.getAttribute("href", 2);
+ } else{
+ a = ci.getAttribute(attr);
+ }
+ }else{
+ a = ci.getAttribute(attr);
+ }
+ if((fn && fn(a, value)) || (!fn && a)){
+ result[++ri] = ci;
+ }
+ }
+ return result;
+ }
+
+ function byPseudo(cs, name, value){
+ return Ext.DomQuery.pseudos[name](cs, value);
+ }
+
+ function nodupIEXml(cs){
+ var d = ++key,
+ r;
+ cs[0].setAttribute("_nodup", d);
+ r = [cs[0]];
+ for(var i = 1, len = cs.length; i < len; i++){
+ var c = cs[i];
+ if(!c.getAttribute("_nodup") != d){
+ c.setAttribute("_nodup", d);
+ r[r.length] = c;
+ }
+ }
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].removeAttribute("_nodup");
+ }
+ return r;
+ }
+
+ function nodup(cs){
+ if(!cs){
+ return [];
+ }
+ var len = cs.length, c, i, r = cs, cj, ri = -1;
+ if(!len || typeof cs.nodeType != "undefined" || len == 1){
+ return cs;
+ }
+ if(isIE && typeof cs[0].selectSingleNode != "undefined"){
+ return nodupIEXml(cs);
+ }
+ var d = ++key;
+ cs[0]._nodup = d;
+ for(i = 1; c = cs[i]; i++){
+ if(c._nodup != d){
+ c._nodup = d;
+ }else{
+ r = [];
+ for(var j = 0; j < i; j++){
+ r[++ri] = cs[j];
+ }
+ for(j = i+1; cj = cs[j]; j++){
+ if(cj._nodup != d){
+ cj._nodup = d;
+ r[++ri] = cj;
+ }
+ }
+ return r;
+ }
+ }
+ return r;
+ }
+
+ function quickDiffIEXml(c1, c2){
+ var d = ++key,
+ r = [];
+ for(var i = 0, len = c1.length; i < len; i++){
+ c1[i].setAttribute("_qdiff", d);
+ }
+ for(var i = 0, len = c2.length; i < len; i++){
+ if(c2[i].getAttribute("_qdiff") != d){
+ r[r.length] = c2[i];
+ }
+ }
+ for(var i = 0, len = c1.length; i < len; i++){
+ c1[i].removeAttribute("_qdiff");
+ }
+ return r;
+ }
+
+ function quickDiff(c1, c2){
+ var len1 = c1.length,
+ d = ++key,
+ r = [];
+ if(!len1){
+ return c2;
+ }
+ if(isIE && typeof c1[0].selectSingleNode != "undefined"){
+ return quickDiffIEXml(c1, c2);
+ }
+ for(var i = 0; i < len1; i++){
+ c1[i]._qdiff = d;
+ }
+ for(var i = 0, len = c2.length; i < len; i++){
+ if(c2[i]._qdiff != d){
+ r[r.length] = c2[i];
+ }
+ }
+ return r;
+ }
+
+ function quickId(ns, mode, root, id){
+ if(ns == root){
+ var d = root.ownerDocument || root;
+ return d.getElementById(id);
+ }
+ ns = getNodes(ns, mode, "*");
+ return byId(ns, id);
+ }
+
+ return {
+ getStyle : function(el, name){
+ return Ext.fly(el).getStyle(name);
+ },
+
+ compile : function(path, type){
+ type = type || "select";
+
+
+ var fn = ["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],
+ mode,
+ lastPath,
+ matchers = Ext.DomQuery.matchers,
+ matchersLn = matchers.length,
+ modeMatch,
+
+ lmode = path.match(modeRe);
+
+ if(lmode && lmode[1]){
+ fn[fn.length] = 'mode="'+lmode[1].replace(trimRe, "")+'";';
+ path = path.replace(lmode[1], "");
+ }
+
+
+ while(path.substr(0, 1)=="/"){
+ path = path.substr(1);
+ }
+
+ while(path && lastPath != path){
+ lastPath = path;
+ var tokenMatch = path.match(tagTokenRe);
+ if(type == "select"){
+ if(tokenMatch){
+
+ if(tokenMatch[1] == "#"){
+ fn[fn.length] = 'n = quickId(n, mode, root, "'+tokenMatch[2]+'");';
+ }else{
+ fn[fn.length] = 'n = getNodes(n, mode, "'+tokenMatch[2]+'");';
+ }
+ path = path.replace(tokenMatch[0], "");
+ }else if(path.substr(0, 1) != '@'){
+ fn[fn.length] = 'n = getNodes(n, mode, "*");';
+ }
+
+ }else{
+ if(tokenMatch){
+ if(tokenMatch[1] == "#"){
+ fn[fn.length] = 'n = byId(n, "'+tokenMatch[2]+'");';
+ }else{
+ fn[fn.length] = 'n = byTag(n, "'+tokenMatch[2]+'");';
+ }
+ path = path.replace(tokenMatch[0], "");
+ }
+ }
+ while(!(modeMatch = path.match(modeRe))){
+ var matched = false;
+ for(var j = 0; j < matchersLn; j++){
+ var t = matchers[j];
+ var m = path.match(t.re);
+ if(m){
+ fn[fn.length] = t.select.replace(tplRe, function(x, i){
+ return m[i];
+ });
+ path = path.replace(m[0], "");
+ matched = true;
+ break;
+ }
+ }
+
+ if(!matched){
+ throw 'Error parsing selector, parsing failed at "' + path + '"';
+ }
+ }
+ if(modeMatch[1]){
+ fn[fn.length] = 'mode="'+modeMatch[1].replace(trimRe, "")+'";';
+ path = path.replace(modeMatch[1], "");
+ }
+ }
+
+ fn[fn.length] = "return nodup(n);\n}";
+
+
+ eval(fn.join(""));
+ return f;
+ },
+
+
+ jsSelect: function(path, root, type){
+
+ root = root || document;
+
+ if(typeof root == "string"){
+ root = document.getElementById(root);
+ }
+ var paths = path.split(","),
+ results = [];
+
+
+ for(var i = 0, len = paths.length; i < len; i++){
+ var subPath = paths[i].replace(trimRe, "");
+
+ if(!cache[subPath]){
+ cache[subPath] = Ext.DomQuery.compile(subPath);
+ if(!cache[subPath]){
+ throw subPath + " is not a valid selector";
+ }
+ }
+ var result = cache[subPath](root);
+ if(result && result != document){
+ results = results.concat(result);
+ }
+ }
+
+
+
+ if(paths.length > 1){
+ return nodup(results);
+ }
+ return results;
+ },
+ isXml: function(el) {
+ var docEl = (el ? el.ownerDocument || el : 0).documentElement;
+ return docEl ? docEl.nodeName !== "HTML" : false;
+ },
+ select : document.querySelectorAll ? function(path, root, type) {
+ root = root || document;
+ if (!Ext.DomQuery.isXml(root)) {
+ try {
+ var cs = root.querySelectorAll(path);
+ return Ext.toArray(cs);
+ }
+ catch (ex) {}
+ }
+ return Ext.DomQuery.jsSelect.call(this, path, root, type);
+ } : function(path, root, type) {
+ return Ext.DomQuery.jsSelect.call(this, path, root, type);
+ },
+
+
+ selectNode : function(path, root){
+ return Ext.DomQuery.select(path, root)[0];
+ },
+
+
+ selectValue : function(path, root, defaultValue){
+ path = path.replace(trimRe, "");
+ if(!valueCache[path]){
+ valueCache[path] = Ext.DomQuery.compile(path, "select");
+ }
+ var n = valueCache[path](root), v;
+ n = n[0] ? n[0] : n;
+
+
+
+
+
+ if (typeof n.normalize == 'function') n.normalize();
+
+ v = (n && n.firstChild ? n.firstChild.nodeValue : null);
+ return ((v === null||v === undefined||v==='') ? defaultValue : v);
+ },
+
+
+ selectNumber : function(path, root, defaultValue){
+ var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0);
+ return parseFloat(v);
+ },
+
+
+ is : function(el, ss){
+ if(typeof el == "string"){
+ el = document.getElementById(el);
+ }
+ var isArray = Ext.isArray(el),
+ result = Ext.DomQuery.filter(isArray ? el : [el], ss);
+ return isArray ? (result.length == el.length) : (result.length > 0);
+ },
+
+
+ filter : function(els, ss, nonMatches){
+ ss = ss.replace(trimRe, "");
+ if(!simpleCache[ss]){
+ simpleCache[ss] = Ext.DomQuery.compile(ss, "simple");
+ }
+ var result = simpleCache[ss](els);
+ return nonMatches ? quickDiff(result, els) : result;
+ },
+
+
+ matchers : [{
+ re: /^\.([\w-]+)/,
+ select: 'n = byClassName(n, " {1} ");'
+ }, {
+ re: /^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,
+ select: 'n = byPseudo(n, "{1}", "{2}");'
+ },{
+ re: /^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,
+ select: 'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'
+ }, {
+ re: /^#([\w-]+)/,
+ select: 'n = byId(n, "{1}");'
+ },{
+ re: /^@([\w-]+)/,
+ select: 'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'
+ }
+ ],
+
+
+ operators : {
+ "=" : function(a, v){
+ return a == v;
+ },
+ "!=" : function(a, v){
+ return a != v;
+ },
+ "^=" : function(a, v){
+ return a && a.substr(0, v.length) == v;
+ },
+ "$=" : function(a, v){
+ return a && a.substr(a.length-v.length) == v;
+ },
+ "*=" : function(a, v){
+ return a && a.indexOf(v) !== -1;
+ },
+ "%=" : function(a, v){
+ return (a % v) == 0;
+ },
+ "|=" : function(a, v){
+ return a && (a == v || a.substr(0, v.length+1) == v+'-');
+ },
+ "~=" : function(a, v){
+ return a && (' '+a+' ').indexOf(' '+v+' ') != -1;
+ }
+ },
+
+
+ pseudos : {
+ "first-child" : function(c){
+ var r = [], ri = -1, n;
+ for(var i = 0, ci; ci = n = c[i]; i++){
+ while((n = n.previousSibling) && n.nodeType != 1);
+ if(!n){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "last-child" : function(c){
+ var r = [], ri = -1, n;
+ for(var i = 0, ci; ci = n = c[i]; i++){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ if(!n){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "nth-child" : function(c, a) {
+ var r = [], ri = -1,
+ m = nthRe.exec(a == "even" && "2n" || a == "odd" && "2n+1" || !nthRe2.test(a) && "n+" + a || a),
+ f = (m[1] || 1) - 0, l = m[2] - 0;
+ for(var i = 0, n; n = c[i]; i++){
+ var pn = n.parentNode;
+ if (batch != pn._batch) {
+ var j = 0;
+ for(var cn = pn.firstChild; cn; cn = cn.nextSibling){
+ if(cn.nodeType == 1){
+ cn.nodeIndex = ++j;
+ }
+ }
+ pn._batch = batch;
+ }
+ if (f == 1) {
+ if (l == 0 || n.nodeIndex == l){
+ r[++ri] = n;
+ }
+ } else if ((n.nodeIndex + l) % f == 0){
+ r[++ri] = n;
+ }
+ }
+
+ return r;
+ },
+
+ "only-child" : function(c){
+ var r = [], ri = -1;;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(!prev(ci) && !next(ci)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "empty" : function(c){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var cns = ci.childNodes, j = 0, cn, empty = true;
+ while(cn = cns[j]){
+ ++j;
+ if(cn.nodeType == 1 || cn.nodeType == 3){
+ empty = false;
+ break;
+ }
+ }
+ if(empty){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "contains" : function(c, v){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if((ci.textContent||ci.innerText||'').indexOf(v) != -1){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "nodeValue" : function(c, v){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(ci.firstChild && ci.firstChild.nodeValue == v){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "checked" : function(c){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(ci.checked == true){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "not" : function(c, ss){
+ return Ext.DomQuery.filter(c, ss, true);
+ },
+
+ "any" : function(c, selectors){
+ var ss = selectors.split('|'),
+ r = [], ri = -1, s;
+ for(var i = 0, ci; ci = c[i]; i++){
+ for(var j = 0; s = ss[j]; j++){
+ if(Ext.DomQuery.is(ci, s)){
+ r[++ri] = ci;
+ break;
+ }
+ }
+ }
+ return r;
+ },
+
+ "odd" : function(c){
+ return this["nth-child"](c, "odd");
+ },
+
+ "even" : function(c){
+ return this["nth-child"](c, "even");
+ },
+
+ "nth" : function(c, a){
+ return c[a-1] || [];
+ },
+
+ "first" : function(c){
+ return c[0] || [];
+ },
+
+ "last" : function(c){
+ return c[c.length-1] || [];
+ },
+
+ "has" : function(c, ss){
+ var s = Ext.DomQuery.select,
+ r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(s(ss, ci).length > 0){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "next" : function(c, ss){
+ var is = Ext.DomQuery.is,
+ r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var n = next(ci);
+ if(n && is(n, ss)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "prev" : function(c, ss){
+ var is = Ext.DomQuery.is,
+ r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var n = prev(ci);
+ if(n && is(n, ss)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ }
+ }
+ };
+}();
+
+
+Ext.query = Ext.DomQuery.select;
+
+Ext.util.DelayedTask = function(fn, scope, args){
+ var me = this,
+ id,
+ call = function(){
+ clearInterval(id);
+ id = null;
+ fn.apply(scope, args || []);
+ };
+
+
+ me.delay = function(delay, newFn, newScope, newArgs){
+ me.cancel();
+ fn = newFn || fn;
+ scope = newScope || scope;
+ args = newArgs || args;
+ id = setInterval(call, delay);
+ };
+
+
+ me.cancel = function(){
+ if(id){
+ clearInterval(id);
+ id = null;
+ }
+ };
+};(function(){
+
+var EXTUTIL = Ext.util,
+ EACH = Ext.each,
+ TRUE = true,
+ FALSE = false;
+
+EXTUTIL.Observable = function(){
+
+ var me = this, e = me.events;
+ if(me.listeners){
+ me.on(me.listeners);
+ delete me.listeners;
+ }
+ me.events = e || {};
+};
+
+EXTUTIL.Observable.prototype = {
+
+ filterOptRe : /^(?:scope|delay|buffer|single)$/,
+
+
+ fireEvent : function(){
+ var a = Array.prototype.slice.call(arguments, 0),
+ ename = a[0].toLowerCase(),
+ me = this,
+ ret = TRUE,
+ ce = me.events[ename],
+ cc,
+ q,
+ c;
+ if (me.eventsSuspended === TRUE) {
+ if (q = me.eventQueue) {
+ q.push(a);
+ }
+ }
+ else if(typeof ce == 'object') {
+ if (ce.bubble){
+ if(ce.fire.apply(ce, a.slice(1)) === FALSE) {
+ return FALSE;
+ }
+ c = me.getBubbleTarget && me.getBubbleTarget();
+ if(c && c.enableBubble) {
+ cc = c.events[ename];
+ if(!cc || typeof cc != 'object' || !cc.bubble) {
+ c.enableBubble(ename);
+ }
+ return c.fireEvent.apply(c, a);
+ }
+ }
+ else {
+ a.shift();
+ ret = ce.fire.apply(ce, a);
+ }
+ }
+ return ret;
+ },
+
+
+ addListener : function(eventName, fn, scope, o){
+ var me = this,
+ e,
+ oe,
+ isF,
+ ce;
+ if (typeof eventName == 'object') {
+ o = eventName;
+ for (e in o){
+ oe = o[e];
+ if (!me.filterOptRe.test(e)) {
+ me.addListener(e, oe.fn || oe, oe.scope || o.scope, oe.fn ? oe : o);
+ }
+ }
+ } else {
+ eventName = eventName.toLowerCase();
+ ce = me.events[eventName] || TRUE;
+ if (typeof ce == 'boolean') {
+ me.events[eventName] = ce = new EXTUTIL.Event(me, eventName);
+ }
+ ce.addListener(fn, scope, typeof o == 'object' ? o : {});
+ }
+ },
+
+
+ removeListener : function(eventName, fn, scope){
+ var ce = this.events[eventName.toLowerCase()];
+ if (typeof ce == 'object') {
+ ce.removeListener(fn, scope);
+ }
+ },
+
+
+ purgeListeners : function(){
+ var events = this.events,
+ evt,
+ key;
+ for(key in events){
+ evt = events[key];
+ if(typeof evt == 'object'){
+ evt.clearListeners();
+ }
+ }
+ },
+
+
+ addEvents : function(o){
+ var me = this;
+ me.events = me.events || {};
+ if (typeof o == 'string') {
+ var a = arguments,
+ i = a.length;
+ while(i--) {
+ me.events[a[i]] = me.events[a[i]] || TRUE;
+ }
+ } else {
+ Ext.applyIf(me.events, o);
+ }
+ },
+
+
+ hasListener : function(eventName){
+ var e = this.events[eventName.toLowerCase()];
+ return typeof e == 'object' && e.listeners.length > 0;
+ },
+
+
+ suspendEvents : function(queueSuspended){
+ this.eventsSuspended = TRUE;
+ if(queueSuspended && !this.eventQueue){
+ this.eventQueue = [];
+ }
+ },
+
+
+ resumeEvents : function(){
+ var me = this,
+ queued = me.eventQueue || [];
+ me.eventsSuspended = FALSE;
+ delete me.eventQueue;
+ EACH(queued, function(e) {
+ me.fireEvent.apply(me, e);
+ });
+ }
+};
+
+var OBSERVABLE = EXTUTIL.Observable.prototype;
+
+OBSERVABLE.on = OBSERVABLE.addListener;
+
+OBSERVABLE.un = OBSERVABLE.removeListener;
+
+
+EXTUTIL.Observable.releaseCapture = function(o){
+ o.fireEvent = OBSERVABLE.fireEvent;
+};
+
+function createTargeted(h, o, scope){
+ return function(){
+ if(o.target == arguments[0]){
+ h.apply(scope, Array.prototype.slice.call(arguments, 0));
+ }
+ };
+};
+
+function createBuffered(h, o, l, scope){
+ l.task = new EXTUTIL.DelayedTask();
+ return function(){
+ l.task.delay(o.buffer, h, scope, Array.prototype.slice.call(arguments, 0));
+ };
+};
+
+function createSingle(h, e, fn, scope){
+ return function(){
+ e.removeListener(fn, scope);
+ return h.apply(scope, arguments);
+ };
+};
+
+function createDelayed(h, o, l, scope){
+ return function(){
+ var task = new EXTUTIL.DelayedTask();
+ if(!l.tasks) {
+ l.tasks = [];
+ }
+ l.tasks.push(task);
+ task.delay(o.delay || 10, h, scope, Array.prototype.slice.call(arguments, 0));
+ };
+};
+
+EXTUTIL.Event = function(obj, name){
+ this.name = name;
+ this.obj = obj;
+ this.listeners = [];
+};
+
+EXTUTIL.Event.prototype = {
+ addListener : function(fn, scope, options){
+ var me = this,
+ l;
+ scope = scope || me.obj;
+ if(!me.isListening(fn, scope)){
+ l = me.createListener(fn, scope, options);
+ if(me.firing){
+ me.listeners = me.listeners.slice(0);
+ }
+ me.listeners.push(l);
+ }
+ },
+
+ createListener: function(fn, scope, o){
+ o = o || {}, scope = scope || this.obj;
+ var l = {
+ fn: fn,
+ scope: scope,
+ options: o
+ }, h = fn;
+ if(o.target){
+ h = createTargeted(h, o, scope);
+ }
+ if(o.delay){
+ h = createDelayed(h, o, l, scope);
+ }
+ if(o.single){
+ h = createSingle(h, this, fn, scope);
+ }
+ if(o.buffer){
+ h = createBuffered(h, o, l, scope);
+ }
+ l.fireFn = h;
+ return l;
+ },
+
+ findListener : function(fn, scope){
+ var list = this.listeners,
+ i = list.length,
+ l;
+
+ scope = scope || this.obj;
+ while(i--){
+ l = list[i];
+ if(l){
+ if(l.fn == fn && l.scope == scope){
+ return i;
+ }
+ }
+ }
+ return -1;
+ },
+
+ isListening : function(fn, scope){
+ return this.findListener(fn, scope) != -1;
+ },
+
+ removeListener : function(fn, scope){
+ var index,
+ l,
+ k,
+ me = this,
+ ret = FALSE;
+ if((index = me.findListener(fn, scope)) != -1){
+ if (me.firing) {
+ me.listeners = me.listeners.slice(0);
+ }
+ l = me.listeners[index];
+ if(l.task) {
+ l.task.cancel();
+ delete l.task;
+ }
+ k = l.tasks && l.tasks.length;
+ if(k) {
+ while(k--) {
+ l.tasks[k].cancel();
+ }
+ delete l.tasks;
+ }
+ me.listeners.splice(index, 1);
+ ret = TRUE;
+ }
+ return ret;
+ },
+
+
+ clearListeners : function(){
+ var me = this,
+ l = me.listeners,
+ i = l.length;
+ while(i--) {
+ me.removeListener(l[i].fn, l[i].scope);
+ }
+ },
+
+ fire : function(){
+ var me = this,
+ listeners = me.listeners,
+ len = listeners.length,
+ i = 0,
+ l;
+
+ if(len > 0){
+ me.firing = TRUE;
+ var args = Array.prototype.slice.call(arguments, 0);
+ for (; i < len; i++) {
+ l = listeners[i];
+ if(l && l.fireFn.apply(l.scope || me.obj || window, args) === FALSE) {
+ return (me.firing = FALSE);
+ }
+ }
+ }
+ me.firing = FALSE;
+ return TRUE;
+ }
+
+};
+})();
+
+Ext.apply(Ext.util.Observable.prototype, function(){
+
+
+
+ function getMethodEvent(method){
+ var e = (this.methodEvents = this.methodEvents ||
+ {})[method], returnValue, v, cancel, obj = this;
+
+ if (!e) {
+ this.methodEvents[method] = e = {};
+ e.originalFn = this[method];
+ e.methodName = method;
+ e.before = [];
+ e.after = [];
+
+ var makeCall = function(fn, scope, args){
+ if((v = fn.apply(scope || obj, args)) !== undefined){
+ if (typeof v == 'object') {
+ if(v.returnValue !== undefined){
+ returnValue = v.returnValue;
+ }else{
+ returnValue = v;
+ }
+ cancel = !!v.cancel;
+ }
+ else
+ if (v === false) {
+ cancel = true;
+ }
+ else {
+ returnValue = v;
+ }
+ }
+ };
+
+ this[method] = function(){
+ var args = Array.prototype.slice.call(arguments, 0),
+ b;
+ returnValue = v = undefined;
+ cancel = false;
+
+ for(var i = 0, len = e.before.length; i < len; i++){
+ b = e.before[i];
+ makeCall(b.fn, b.scope, args);
+ if (cancel) {
+ return returnValue;
+ }
+ }
+
+ if((v = e.originalFn.apply(obj, args)) !== undefined){
+ returnValue = v;
+ }
+
+ for(var i = 0, len = e.after.length; i < len; i++){
+ b = e.after[i];
+ makeCall(b.fn, b.scope, args);
+ if (cancel) {
+ return returnValue;
+ }
+ }
+ return returnValue;
+ };
+ }
+ return e;
+ }
+
+ return {
+
+
+
+ beforeMethod : function(method, fn, scope){
+ getMethodEvent.call(this, method).before.push({
+ fn: fn,
+ scope: scope
+ });
+ },
+
+
+ afterMethod : function(method, fn, scope){
+ getMethodEvent.call(this, method).after.push({
+ fn: fn,
+ scope: scope
+ });
+ },
+
+ removeMethodListener: function(method, fn, scope){
+ var e = this.getMethodEvent(method);
+ for(var i = 0, len = e.before.length; i < len; i++){
+ if(e.before[i].fn == fn && e.before[i].scope == scope){
+ e.before.splice(i, 1);
+ return;
+ }
+ }
+ for(var i = 0, len = e.after.length; i < len; i++){
+ if(e.after[i].fn == fn && e.after[i].scope == scope){
+ e.after.splice(i, 1);
+ return;
+ }
+ }
+ },
+
+
+ relayEvents : function(o, events){
+ var me = this;
+ function createHandler(ename){
+ return function(){
+ return me.fireEvent.apply(me, [ename].concat(Array.prototype.slice.call(arguments, 0)));
+ };
+ }
+ for(var i = 0, len = events.length; i < len; i++){
+ var ename = events[i];
+ me.events[ename] = me.events[ename] || true;
+ o.on(ename, createHandler(ename), me);
+ }
+ },
+
+
+ enableBubble : function(events){
+ var me = this;
+ if(!Ext.isEmpty(events)){
+ events = Ext.isArray(events) ? events : Array.prototype.slice.call(arguments, 0);
+ for(var i = 0, len = events.length; i < len; i++){
+ var ename = events[i];
+ ename = ename.toLowerCase();
+ var ce = me.events[ename] || true;
+ if (typeof ce == 'boolean') {
+ ce = new Ext.util.Event(me, ename);
+ me.events[ename] = ce;
+ }
+ ce.bubble = true;
+ }
+ }
+ }
+ };
+}());
+
+
+
+Ext.util.Observable.capture = function(o, fn, scope){
+ o.fireEvent = o.fireEvent.createInterceptor(fn, scope);
+};
+
+
+
+Ext.util.Observable.observeClass = function(c, listeners){
+ if(c){
+ if(!c.fireEvent){
+ Ext.apply(c, new Ext.util.Observable());
+ Ext.util.Observable.capture(c.prototype, c.fireEvent, c);
+ }
+ if(typeof listeners == 'object'){
+ c.on(listeners);
+ }
+ return c;
+ }
+};
+
+
+Ext.EventManager = function(){
+ var docReadyEvent,
+ docReadyProcId,
+ docReadyState = false,
+ DETECT_NATIVE = Ext.isGecko || Ext.isWebKit || Ext.isSafari,
+ E = Ext.lib.Event,
+ D = Ext.lib.Dom,
+ DOC = document,
+ WINDOW = window,
+ DOMCONTENTLOADED = "DOMContentLoaded",
+ COMPLETE = 'complete',
+ propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,
+
+ specialElCache = [];
+
+ function getId(el){
+ var id = false,
+ i = 0,
+ len = specialElCache.length,
+ id = false,
+ skip = false,
+ o;
+ if(el){
+ if(el.getElementById || el.navigator){
+
+ for(; i < len; ++i){
+ o = specialElCache[i];
+ if(o.el === el){
+ id = o.id;
+ break;
+ }
+ }
+ if(!id){
+
+ id = Ext.id(el);
+ specialElCache.push({
+ id: id,
+ el: el
+ });
+ skip = true;
+ }
+ }else{
+ id = Ext.id(el);
+ }
+ if(!Ext.elCache[id]){
+ Ext.Element.addToCache(new Ext.Element(el), id);
+ if(skip){
+ Ext.elCache[id].skipGC = true;
+ }
+ }
+ }
+ return id;
+ };
+
+
+ function addListener(el, ename, fn, task, wrap, scope){
+ el = Ext.getDom(el);
+ var id = getId(el),
+ es = Ext.elCache[id].events,
+ wfn;
+
+ wfn = E.on(el, ename, wrap);
+ es[ename] = es[ename] || [];
+
+
+ es[ename].push([fn, wrap, scope, wfn, task]);
+
+
+
+
+
+ if(el.addEventListener && ename == "mousewheel"){
+ var args = ["DOMMouseScroll", wrap, false];
+ el.addEventListener.apply(el, args);
+ Ext.EventManager.addListener(WINDOW, 'unload', function(){
+ el.removeEventListener.apply(el, args);
+ });
+ }
+
+
+ if(el == DOC && ename == "mousedown"){
+ Ext.EventManager.stoppedMouseDownEvent.addListener(wrap);
+ }
+ };
+
+ function doScrollChk(){
+
+ if(window != top){
+ return false;
+ }
+
+ try{
+ DOC.documentElement.doScroll('left');
+ }catch(e){
+ return false;
+ }
+
+ fireDocReady();
+ return true;
+ }
+
+ function checkReadyState(e){
+
+ if(Ext.isIE && doScrollChk()){
+ return true;
+ }
+ if(DOC.readyState == COMPLETE){
+ fireDocReady();
+ return true;
+ }
+ docReadyState || (docReadyProcId = setTimeout(arguments.callee, 2));
+ return false;
+ }
+
+ var styles;
+ function checkStyleSheets(e){
+ styles || (styles = Ext.query('style, link[rel=stylesheet]'));
+ if(styles.length == DOC.styleSheets.length){
+ fireDocReady();
+ return true;
+ }
+ docReadyState || (docReadyProcId = setTimeout(arguments.callee, 2));
+ return false;
+ }
+
+ function OperaDOMContentLoaded(e){
+ DOC.removeEventListener(DOMCONTENTLOADED, arguments.callee, false);
+ checkStyleSheets();
+ }
+
+ function fireDocReady(e){
+ if(!docReadyState){
+ docReadyState = true;
+
+ if(docReadyProcId){
+ clearTimeout(docReadyProcId);
+ }
+ if(DETECT_NATIVE) {
+ DOC.removeEventListener(DOMCONTENTLOADED, fireDocReady, false);
+ }
+ if(Ext.isIE && checkReadyState.bindIE){
+ DOC.detachEvent('onreadystatechange', checkReadyState);
+ }
+ E.un(WINDOW, "load", arguments.callee);
+ }
+ if(docReadyEvent && !Ext.isReady){
+ Ext.isReady = true;
+ docReadyEvent.fire();
+ docReadyEvent.listeners = [];
+ }
+
+ };
+
+ function initDocReady(){
+ docReadyEvent || (docReadyEvent = new Ext.util.Event());
+ if (DETECT_NATIVE) {
+ DOC.addEventListener(DOMCONTENTLOADED, fireDocReady, false);
+ }
+
+ if (Ext.isIE){
+
+
+ if(!checkReadyState()){
+ checkReadyState.bindIE = true;
+ DOC.attachEvent('onreadystatechange', checkReadyState);
+ }
+
+ }else if(Ext.isOpera ){
+
+
+
+ (DOC.readyState == COMPLETE && checkStyleSheets()) ||
+ DOC.addEventListener(DOMCONTENTLOADED, OperaDOMContentLoaded, false);
+
+ }else if (Ext.isWebKit){
+
+ checkReadyState();
+ }
+
+ E.on(WINDOW, "load", fireDocReady);
+ };
+
+ function createTargeted(h, o){
+ return function(){
+ var args = Ext.toArray(arguments);
+ if(o.target == Ext.EventObject.setEvent(args[0]).target){
+ h.apply(this, args);
+ }
+ };
+ };
+
+ function createBuffered(h, o, task){
+ return function(e){
+
+ task.delay(o.buffer, h, null, [new Ext.EventObjectImpl(e)]);
+ };
+ };
+
+ function createSingle(h, el, ename, fn, scope){
+ return function(e){
+ Ext.EventManager.removeListener(el, ename, fn, scope);
+ h(e);
+ };
+ };
+
+ function createDelayed(h, o, fn){
+ return function(e){
+ var task = new Ext.util.DelayedTask(h);
+ if(!fn.tasks) {
+ fn.tasks = [];
+ }
+ fn.tasks.push(task);
+ task.delay(o.delay || 10, h, null, [new Ext.EventObjectImpl(e)]);
+ };
+ };
+
+ function listen(element, ename, opt, fn, scope){
+ var o = (!opt || typeof opt == "boolean") ? {} : opt,
+ el = Ext.getDom(element), task;
+
+ fn = fn || o.fn;
+ scope = scope || o.scope;
+
+ if(!el){
+ throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.';
+ }
+ function h(e){
+
+ if(!Ext){
+ return;
+ }
+ e = Ext.EventObject.setEvent(e);
+ var t;
+ if (o.delegate) {
+ if(!(t = e.getTarget(o.delegate, el))){
+ return;
+ }
+ } else {
+ t = e.target;
+ }
+ if (o.stopEvent) {
+ e.stopEvent();
+ }
+ if (o.preventDefault) {
+ e.preventDefault();
+ }
+ if (o.stopPropagation) {
+ e.stopPropagation();
+ }
+ if (o.normalized) {
+ e = e.browserEvent;
+ }
+
+ fn.call(scope || el, e, t, o);
+ };
+ if(o.target){
+ h = createTargeted(h, o);
+ }
+ if(o.delay){
+ h = createDelayed(h, o, fn);
+ }
+ if(o.single){
+ h = createSingle(h, el, ename, fn, scope);
+ }
+ if(o.buffer){
+ task = new Ext.util.DelayedTask(h);
+ h = createBuffered(h, o, task);
+ }
+
+ addListener(el, ename, fn, task, h, scope);
+ return h;
+ };
+
+ var pub = {
+
+ addListener : function(element, eventName, fn, scope, options){
+ if(typeof eventName == 'object'){
+ var o = eventName, e, val;
+ for(e in o){
+ val = o[e];
+ if(!propRe.test(e)){
+ if(Ext.isFunction(val)){
+
+ listen(element, e, o, val, o.scope);
+ }else{
+
+ listen(element, e, val);
+ }
+ }
+ }
+ } else {
+ listen(element, eventName, options, fn, scope);
+ }
+ },
+
+
+ removeListener : function(el, eventName, fn, scope){
+ el = Ext.getDom(el);
+ var id = getId(el),
+ f = el && (Ext.elCache[id].events)[eventName] || [],
+ wrap, i, l, k, len, fnc;
+
+ for (i = 0, len = f.length; i < len; i++) {
+
+
+ if (Ext.isArray(fnc = f[i]) && fnc[0] == fn && (!scope || fnc[2] == scope)) {
+ if(fnc[4]) {
+ fnc[4].cancel();
+ }
+ k = fn.tasks && fn.tasks.length;
+ if(k) {
+ while(k--) {
+ fn.tasks[k].cancel();
+ }
+ delete fn.tasks;
+ }
+ wrap = fnc[1];
+ E.un(el, eventName, E.extAdapter ? fnc[3] : wrap);
+
+
+ if(wrap && el.addEventListener && eventName == "mousewheel"){
+ el.removeEventListener("DOMMouseScroll", wrap, false);
+ }
+
+
+ if(wrap && el == DOC && eventName == "mousedown"){
+ Ext.EventManager.stoppedMouseDownEvent.removeListener(wrap);
+ }
+
+ f.splice(i, 1);
+ if (f.length === 0) {
+ delete Ext.elCache[id].events[eventName];
+ }
+ for (k in Ext.elCache[id].events) {
+ return false;
+ }
+ Ext.elCache[id].events = {};
+ return false;
+ }
+ }
+ },
+
+
+ removeAll : function(el){
+ el = Ext.getDom(el);
+ var id = getId(el),
+ ec = Ext.elCache[id] || {},
+ es = ec.events || {},
+ f, i, len, ename, fn, k, wrap;
+
+ for(ename in es){
+ if(es.hasOwnProperty(ename)){
+ f = es[ename];
+
+ for (i = 0, len = f.length; i < len; i++) {
+ fn = f[i];
+ if(fn[4]) {
+ fn[4].cancel();
+ }
+ if(fn[0].tasks && (k = fn[0].tasks.length)) {
+ while(k--) {
+ fn[0].tasks[k].cancel();
+ }
+ delete fn.tasks;
+ }
+ wrap = fn[1];
+ E.un(el, ename, E.extAdapter ? fn[3] : wrap);
+
+
+ if(el.addEventListener && wrap && ename == "mousewheel"){
+ el.removeEventListener("DOMMouseScroll", wrap, false);
+ }
+
+
+ if(wrap && el == DOC && ename == "mousedown"){
+ Ext.EventManager.stoppedMouseDownEvent.removeListener(wrap);
+ }
+ }
+ }
+ }
+ if (Ext.elCache[id]) {
+ Ext.elCache[id].events = {};
+ }
+ },
+
+ getListeners : function(el, eventName) {
+ el = Ext.getDom(el);
+ var id = getId(el),
+ ec = Ext.elCache[id] || {},
+ es = ec.events || {},
+ results = [];
+ if (es && es[eventName]) {
+ return es[eventName];
+ } else {
+ return null;
+ }
+ },
+
+ purgeElement : function(el, recurse, eventName) {
+ el = Ext.getDom(el);
+ var id = getId(el),
+ ec = Ext.elCache[id] || {},
+ es = ec.events || {},
+ i, f, len;
+ if (eventName) {
+ if (es && es.hasOwnProperty(eventName)) {
+ f = es[eventName];
+ for (i = 0, len = f.length; i < len; i++) {
+ Ext.EventManager.removeListener(el, eventName, f[i][0]);
+ }
+ }
+ } else {
+ Ext.EventManager.removeAll(el);
+ }
+ if (recurse && el && el.childNodes) {
+ for (i = 0, len = el.childNodes.length; i < len; i++) {
+ Ext.EventManager.purgeElement(el.childNodes[i], recurse, eventName);
+ }
+ }
+ },
+
+ _unload : function() {
+ var el;
+ for (el in Ext.elCache) {
+ Ext.EventManager.removeAll(el);
+ }
+ delete Ext.elCache;
+ delete Ext.Element._flyweights;
+
+
+ var c,
+ conn,
+ tid,
+ ajax = Ext.lib.Ajax;
+ (typeof ajax.conn == 'object') ? conn = ajax.conn : conn = {};
+ for (tid in conn) {
+ c = conn[tid];
+ if (c) {
+ ajax.abort({conn: c, tId: tid});
+ }
+ }
+ },
+
+ onDocumentReady : function(fn, scope, options){
+ if(Ext.isReady){
+ docReadyEvent || (docReadyEvent = new Ext.util.Event());
+ docReadyEvent.addListener(fn, scope, options);
+ docReadyEvent.fire();
+ docReadyEvent.listeners = [];
+ }else{
+ if(!docReadyEvent){
+ initDocReady();
+ }
+ options = options || {};
+ options.delay = options.delay || 1;
+ docReadyEvent.addListener(fn, scope, options);
+ }
+ },
+
+
+ fireDocReady : fireDocReady
+ };
+
+ pub.on = pub.addListener;
+
+ pub.un = pub.removeListener;
+
+ pub.stoppedMouseDownEvent = new Ext.util.Event();
+ return pub;
+}();
+
+Ext.onReady = Ext.EventManager.onDocumentReady;
+
+
+
+(function(){
+
+ var initExtCss = function(){
+
+ var bd = document.body || document.getElementsByTagName('body')[0];
+ if(!bd){ return false; }
+ var cls = [' ',
+ Ext.isIE ? "ext-ie " + (Ext.isIE6 ? 'ext-ie6' : (Ext.isIE7 ? 'ext-ie7' : 'ext-ie8'))
+ : Ext.isGecko ? "ext-gecko " + (Ext.isGecko2 ? 'ext-gecko2' : 'ext-gecko3')
+ : Ext.isOpera ? "ext-opera"
+ : Ext.isWebKit ? "ext-webkit" : ""];
+
+ if(Ext.isSafari){
+ cls.push("ext-safari " + (Ext.isSafari2 ? 'ext-safari2' : (Ext.isSafari3 ? 'ext-safari3' : 'ext-safari4')));
+ }else if(Ext.isChrome){
+ cls.push("ext-chrome");
+ }
+
+ if(Ext.isMac){
+ cls.push("ext-mac");
+ }
+ if(Ext.isLinux){
+ cls.push("ext-linux");
+ }
+
+ if(Ext.isStrict || Ext.isBorderBox){
+ var p = bd.parentNode;
+ if(p){
+ p.className += Ext.isStrict ? ' ext-strict' : ' ext-border-box';
+ }
+ }
+ bd.className += cls.join(' ');
+ return true;
+ }
+
+ if(!initExtCss()){
+ Ext.onReady(initExtCss);
+ }
+})();
+
+
+
+Ext.EventObject = function(){
+ var E = Ext.lib.Event,
+
+ safariKeys = {
+ 3 : 13,
+ 63234 : 37,
+ 63235 : 39,
+ 63232 : 38,
+ 63233 : 40,
+ 63276 : 33,
+ 63277 : 34,
+ 63272 : 46,
+ 63273 : 36,
+ 63275 : 35
+ },
+
+ btnMap = Ext.isIE ? {1:0,4:1,2:2} :
+ (Ext.isWebKit ? {1:0,2:1,3:2} : {0:0,1:1,2:2});
+
+ Ext.EventObjectImpl = function(e){
+ if(e){
+ this.setEvent(e.browserEvent || e);
+ }
+ };
+
+ Ext.EventObjectImpl.prototype = {
+
+ setEvent : function(e){
+ var me = this;
+ if(e == me || (e && e.browserEvent)){
+ return e;
+ }
+ me.browserEvent = e;
+ if(e){
+
+ me.button = e.button ? btnMap[e.button] : (e.which ? e.which - 1 : -1);
+ if(e.type == 'click' && me.button == -1){
+ me.button = 0;
+ }
+ me.type = e.type;
+ me.shiftKey = e.shiftKey;
+
+ me.ctrlKey = e.ctrlKey || e.metaKey || false;
+ me.altKey = e.altKey;
+
+ me.keyCode = e.keyCode;
+ me.charCode = e.charCode;
+
+ me.target = E.getTarget(e);
+
+ me.xy = E.getXY(e);
+ }else{
+ me.button = -1;
+ me.shiftKey = false;
+ me.ctrlKey = false;
+ me.altKey = false;
+ me.keyCode = 0;
+ me.charCode = 0;
+ me.target = null;
+ me.xy = [0, 0];
+ }
+ return me;
+ },
+
+
+ stopEvent : function(){
+ var me = this;
+ if(me.browserEvent){
+ if(me.browserEvent.type == 'mousedown'){
+ Ext.EventManager.stoppedMouseDownEvent.fire(me);
+ }
+ E.stopEvent(me.browserEvent);
+ }
+ },
+
+
+ preventDefault : function(){
+ if(this.browserEvent){
+ E.preventDefault(this.browserEvent);
+ }
+ },
+
+
+ stopPropagation : function(){
+ var me = this;
+ if(me.browserEvent){
+ if(me.browserEvent.type == 'mousedown'){
+ Ext.EventManager.stoppedMouseDownEvent.fire(me);
+ }
+ E.stopPropagation(me.browserEvent);
+ }
+ },
+
+
+ getCharCode : function(){
+ return this.charCode || this.keyCode;
+ },
+
+
+ getKey : function(){
+ return this.normalizeKey(this.keyCode || this.charCode)
+ },
+
+
+ normalizeKey: function(k){
+ return Ext.isSafari ? (safariKeys[k] || k) : k;
+ },
+
+
+ getPageX : function(){
+ return this.xy[0];
+ },
+
+
+ getPageY : function(){
+ return this.xy[1];
+ },
+
+
+ getXY : function(){
+ return this.xy;
+ },
+
+
+ getTarget : function(selector, maxDepth, returnEl){
+ return selector ? Ext.fly(this.target).findParent(selector, maxDepth, returnEl) : (returnEl ? Ext.get(this.target) : this.target);
+ },
+
+
+ getRelatedTarget : function(){
+ return this.browserEvent ? E.getRelatedTarget(this.browserEvent) : null;
+ },
+
+
+ getWheelDelta : function(){
+ var e = this.browserEvent;
+ var delta = 0;
+ if(e.wheelDelta){
+ delta = e.wheelDelta/120;
+ }else if(e.detail){
+ delta = -e.detail/3;
+ }
+ return delta;
+ },
+
+
+ within : function(el, related, allowEl){
+ if(el){
+ var t = this[related ? "getRelatedTarget" : "getTarget"]();
+ return t && ((allowEl ? (t == Ext.getDom(el)) : false) || Ext.fly(el).contains(t));
+ }
+ return false;
+ }
+ };
+
+ return new Ext.EventObjectImpl();
+}();
+
+Ext.apply(Ext.EventManager, function(){
+ var resizeEvent,
+ resizeTask,
+ textEvent,
+ textSize,
+ D = Ext.lib.Dom,
+ propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,
+ curWidth = 0,
+ curHeight = 0,
+
+
+
+ useKeydown = Ext.isWebKit ?
+ Ext.num(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1]) >= 525 :
+ !((Ext.isGecko && !Ext.isWindows) || Ext.isOpera);
+
+ return {
+
+ doResizeEvent: function(){
+ var h = D.getViewHeight(),
+ w = D.getViewWidth();
+
+
+ if(curHeight != h || curWidth != w){
+ resizeEvent.fire(curWidth = w, curHeight = h);
+ }
+ },
+
+
+ onWindowResize : function(fn, scope, options){
+ if(!resizeEvent){
+ resizeEvent = new Ext.util.Event();
+ resizeTask = new Ext.util.DelayedTask(this.doResizeEvent);
+ Ext.EventManager.on(window, "resize", this.fireWindowResize, this);
+ }
+ resizeEvent.addListener(fn, scope, options);
+ },
+
+
+ fireWindowResize : function(){
+ if(resizeEvent){
+ resizeTask.delay(100);
+ }
+ },
+
+
+ onTextResize : function(fn, scope, options){
+ if(!textEvent){
+ textEvent = new Ext.util.Event();
+ var textEl = new Ext.Element(document.createElement('div'));
+ textEl.dom.className = 'x-text-resize';
+ textEl.dom.innerHTML = 'X';
+ textEl.appendTo(document.body);
+ textSize = textEl.dom.offsetHeight;
+ setInterval(function(){
+ if(textEl.dom.offsetHeight != textSize){
+ textEvent.fire(textSize, textSize = textEl.dom.offsetHeight);
+ }
+ }, this.textResizeInterval);
+ }
+ textEvent.addListener(fn, scope, options);
+ },
+
+
+ removeResizeListener : function(fn, scope){
+ if(resizeEvent){
+ resizeEvent.removeListener(fn, scope);
+ }
+ },
+
+
+ fireResize : function(){
+ if(resizeEvent){
+ resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
+ }
+ },
+
+
+ textResizeInterval : 50,
+
+
+ ieDeferSrc : false,
+
+
+
+ useKeydown: useKeydown
+ };
+}());
+
+Ext.EventManager.on = Ext.EventManager.addListener;
+
+
+Ext.apply(Ext.EventObjectImpl.prototype, {
+
+ BACKSPACE: 8,
+
+ TAB: 9,
+
+ NUM_CENTER: 12,
+
+ ENTER: 13,
+
+ RETURN: 13,
+
+ SHIFT: 16,
+
+ CTRL: 17,
+ CONTROL : 17,
+
+ ALT: 18,
+
+ PAUSE: 19,
+
+ CAPS_LOCK: 20,
+
+ ESC: 27,
+
+ SPACE: 32,
+
+ PAGE_UP: 33,
+ PAGEUP : 33,
+
+ PAGE_DOWN: 34,
+ PAGEDOWN : 34,
+
+ END: 35,
+
+ HOME: 36,
+
+ LEFT: 37,
+
+ UP: 38,
+
+ RIGHT: 39,
+
+ DOWN: 40,
+
+ PRINT_SCREEN: 44,
+
+ INSERT: 45,
+
+ DELETE: 46,
+
+ ZERO: 48,
+
+ ONE: 49,
+
+ TWO: 50,
+
+ THREE: 51,
+
+ FOUR: 52,
+
+ FIVE: 53,
+
+ SIX: 54,
+
+ SEVEN: 55,
+
+ EIGHT: 56,
+
+ NINE: 57,
+
+ A: 65,
+
+ B: 66,
+
+ C: 67,
+
+ D: 68,
+
+ E: 69,
+
+ F: 70,
+
+ G: 71,
+
+ H: 72,
+
+ I: 73,
+
+ J: 74,
+
+ K: 75,
+
+ L: 76,
+
+ M: 77,
+
+ N: 78,
+
+ O: 79,
+
+ P: 80,
+
+ Q: 81,
+
+ R: 82,
+
+ S: 83,
+
+ T: 84,
+
+ U: 85,
+
+ V: 86,
+
+ W: 87,
+
+ X: 88,
+
+ Y: 89,
+
+ Z: 90,
+
+ CONTEXT_MENU: 93,
+
+ NUM_ZERO: 96,
+
+ NUM_ONE: 97,
+
+ NUM_TWO: 98,
+
+ NUM_THREE: 99,
+
+ NUM_FOUR: 100,
+
+ NUM_FIVE: 101,
+
+ NUM_SIX: 102,
+
+ NUM_SEVEN: 103,
+
+ NUM_EIGHT: 104,
+
+ NUM_NINE: 105,
+
+ NUM_MULTIPLY: 106,
+
+ NUM_PLUS: 107,
+
+ NUM_MINUS: 109,
+
+ NUM_PERIOD: 110,
+
+ NUM_DIVISION: 111,
+
+ F1: 112,
+
+ F2: 113,
+
+ F3: 114,
+
+ F4: 115,
+
+ F5: 116,
+
+ F6: 117,
+
+ F7: 118,
+
+ F8: 119,
+
+ F9: 120,
+
+ F10: 121,
+
+ F11: 122,
+
+ F12: 123,
+
+
+ isNavKeyPress : function(){
+ var me = this,
+ k = this.normalizeKey(me.keyCode);
+ return (k >= 33 && k <= 40) ||
+ k == me.RETURN ||
+ k == me.TAB ||
+ k == me.ESC;
+ },
+
+ isSpecialKey : function(){
+ var k = this.normalizeKey(this.keyCode);
+ return (this.type == 'keypress' && this.ctrlKey) ||
+ this.isNavKeyPress() ||
+ (k == this.BACKSPACE) ||
+ (k >= 16 && k <= 20) ||
+ (k >= 44 && k <= 46);
+ },
+
+ getPoint : function(){
+ return new Ext.lib.Point(this.xy[0], this.xy[1]);
+ },
+
+
+ hasModifier : function(){
+ return ((this.ctrlKey || this.altKey) || this.shiftKey);
+ }
+});
+(function(){
+var DOC = document;
+
+Ext.Element = function(element, forceNew){
+ var dom = typeof element == "string" ?
+ DOC.getElementById(element) : element,
+ id;
+
+ if(!dom) return null;
+
+ id = dom.id;
+
+ if(!forceNew && id && Ext.elCache[id]){
+ return Ext.elCache[id].el;
+ }
+
+
+ this.dom = dom;
+
+
+ this.id = id || Ext.id(dom);
+};
+
+var D = Ext.lib.Dom,
+ DH = Ext.DomHelper,
+ E = Ext.lib.Event,
+ A = Ext.lib.Anim,
+ El = Ext.Element,
+ EC = Ext.elCache;
+
+El.prototype = {
+
+ set : function(o, useSet){
+ var el = this.dom,
+ attr,
+ val,
+ useSet = (useSet !== false) && !!el.setAttribute;
+
+ for(attr in o){
+ if (o.hasOwnProperty(attr)) {
+ val = o[attr];
+ if (attr == 'style') {
+ DH.applyStyles(el, val);
+ } else if (attr == 'cls') {
+ el.className = val;
+ } else if (useSet) {
+ el.setAttribute(attr, val);
+ } else {
+ el[attr] = val;
+ }
+ }
+ }
+ return this;
+ },
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ defaultUnit : "px",
+
+
+ is : function(simpleSelector){
+ return Ext.DomQuery.is(this.dom, simpleSelector);
+ },
+
+
+ focus : function(defer, dom) {
+ var me = this,
+ dom = dom || me.dom;
+ try{
+ if(Number(defer)){
+ me.focus.defer(defer, null, [null, dom]);
+ }else{
+ dom.focus();
+ }
+ }catch(e){}
+ return me;
+ },
+
+
+ blur : function() {
+ try{
+ this.dom.blur();
+ }catch(e){}
+ return this;
+ },
+
+
+ getValue : function(asNumber){
+ var val = this.dom.value;
+ return asNumber ? parseInt(val, 10) : val;
+ },
+
+
+ addListener : function(eventName, fn, scope, options){
+ Ext.EventManager.on(this.dom, eventName, fn, scope || this, options);
+ return this;
+ },
+
+
+ removeListener : function(eventName, fn, scope){
+ Ext.EventManager.removeListener(this.dom, eventName, fn, scope || this);
+ return this;
+ },
+
+
+ removeAllListeners : function(){
+ Ext.EventManager.removeAll(this.dom);
+ return this;
+ },
+
+
+ purgeAllListeners : function() {
+ Ext.EventManager.purgeElement(this, true);
+ return this;
+ },
+
+ addUnits : function(size){
+ if(size === "" || size == "auto" || size === undefined){
+ size = size || '';
+ } else if(!isNaN(size) || !unitPattern.test(size)){
+ size = size + (this.defaultUnit || 'px');
+ }
+ return size;
+ },
+
+
+ load : function(url, params, cb){
+ Ext.Ajax.request(Ext.apply({
+ params: params,
+ url: url.url || url,
+ callback: cb,
+ el: this.dom,
+ indicatorText: url.indicatorText || ''
+ }, Ext.isObject(url) ? url : {}));
+ return this;
+ },
+
+
+ isBorderBox : function(){
+ return noBoxAdjust[(this.dom.tagName || "").toLowerCase()] || Ext.isBorderBox;
+ },
+
+
+ remove : function(){
+ var me = this,
+ dom = me.dom;
+
+ if (dom) {
+ delete me.dom;
+ Ext.removeNode(dom);
+ }
+ },
+
+
+ hover : function(overFn, outFn, scope, options){
+ var me = this;
+ me.on('mouseenter', overFn, scope || me.dom, options);
+ me.on('mouseleave', outFn, scope || me.dom, options);
+ return me;
+ },
+
+
+ contains : function(el){
+ return !el ? false : Ext.lib.Dom.isAncestor(this.dom, el.dom ? el.dom : el);
+ },
+
+
+ getAttributeNS : function(ns, name){
+ return this.getAttribute(name, ns);
+ },
+
+
+ getAttribute : Ext.isIE ? function(name, ns){
+ var d = this.dom,
+ type = typeof d[ns + ":" + name];
+
+ if(['undefined', 'unknown'].indexOf(type) == -1){
+ return d[ns + ":" + name];
+ }
+ return d[name];
+ } : function(name, ns){
+ var d = this.dom;
+ return d.getAttributeNS(ns, name) || d.getAttribute(ns + ":" + name) || d.getAttribute(name) || d[name];
+ },
+
+
+ update : function(html) {
+ if (this.dom) {
+ this.dom.innerHTML = html;
+ }
+ return this;
+ }
+};
+
+var ep = El.prototype;
+
+El.addMethods = function(o){
+ Ext.apply(ep, o);
+};
+
+
+ep.on = ep.addListener;
+
+
+ep.un = ep.removeListener;
+
+
+ep.autoBoxAdjust = true;
+
+
+var unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,
+ docEl;
+
+
+
+
+El.get = function(el){
+ var ex,
+ elm,
+ id;
+ if(!el){ return null; }
+ if (typeof el == "string") {
+ if (!(elm = DOC.getElementById(el))) {
+ return null;
+ }
+ if (EC[el] && EC[el].el) {
+ ex = EC[el].el;
+ ex.dom = elm;
+ } else {
+ ex = El.addToCache(new El(elm));
+ }
+ return ex;
+ } else if (el.tagName) {
+ if(!(id = el.id)){
+ id = Ext.id(el);
+ }
+ if (EC[id] && EC[id].el) {
+ ex = EC[id].el;
+ ex.dom = el;
+ } else {
+ ex = El.addToCache(new El(el));
+ }
+ return ex;
+ } else if (el instanceof El) {
+ if(el != docEl){
+
+
+
+
+ if (Ext.isIE && (el.id == undefined || el.id == '')) {
+ el.dom = el.dom;
+ } else {
+ el.dom = DOC.getElementById(el.id) || el.dom;
+ }
+ }
+ return el;
+ } else if(el.isComposite) {
+ return el;
+ } else if(Ext.isArray(el)) {
+ return El.select(el);
+ } else if(el == DOC) {
+
+ if(!docEl){
+ var f = function(){};
+ f.prototype = El.prototype;
+ docEl = new f();
+ docEl.dom = DOC;
+ }
+ return docEl;
+ }
+ return null;
+};
+
+El.addToCache = function(el, id){
+ id = id || el.id;
+ EC[id] = {
+ el: el,
+ data: {},
+ events: {}
+ };
+ return el;
+};
+
+
+El.data = function(el, key, value){
+ el = El.get(el);
+ if (!el) {
+ return null;
+ }
+ var c = EC[el.id].data;
+ if(arguments.length == 2){
+ return c[key];
+ }else{
+ return (c[key] = value);
+ }
+};
+
+
+
+
+function garbageCollect(){
+ if(!Ext.enableGarbageCollector){
+ clearInterval(El.collectorThreadId);
+ } else {
+ var eid,
+ el,
+ d,
+ o;
+
+ for(eid in EC){
+ o = EC[eid];
+ if(o.skipGC){
+ continue;
+ }
+ el = o.el;
+ d = el.dom;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if(!d || !d.parentNode || (!d.offsetParent && !DOC.getElementById(eid))){
+ if(Ext.enableListenerCollection){
+ Ext.EventManager.removeAll(d);
+ }
+ delete EC[eid];
+ }
+ }
+
+ if (Ext.isIE) {
+ var t = {};
+ for (eid in EC) {
+ t[eid] = EC[eid];
+ }
+ EC = Ext.elCache = t;
+ }
+ }
+}
+El.collectorThreadId = setInterval(garbageCollect, 30000);
+
+var flyFn = function(){};
+flyFn.prototype = El.prototype;
+
+
+El.Flyweight = function(dom){
+ this.dom = dom;
+};
+
+El.Flyweight.prototype = new flyFn();
+El.Flyweight.prototype.isFlyweight = true;
+El._flyweights = {};
+
+
+El.fly = function(el, named){
+ var ret = null;
+ named = named || '_global';
+
+ if (el = Ext.getDom(el)) {
+ (El._flyweights[named] = El._flyweights[named] || new El.Flyweight()).dom = el;
+ ret = El._flyweights[named];
+ }
+ return ret;
+};
+
+
+Ext.get = El.get;
+
+
+Ext.fly = El.fly;
+
+
+var noBoxAdjust = Ext.isStrict ? {
+ select:1
+} : {
+ input:1, select:1, textarea:1
+};
+if(Ext.isIE || Ext.isGecko){
+ noBoxAdjust['button'] = 1;
+}
+
+})();
+
+Ext.Element.addMethods({
+
+ swallowEvent : function(eventName, preventDefault){
+ var me = this;
+ function fn(e){
+ e.stopPropagation();
+ if(preventDefault){
+ e.preventDefault();
+ }
+ }
+ if(Ext.isArray(eventName)){
+ Ext.each(eventName, function(e) {
+ me.on(e, fn);
+ });
+ return me;
+ }
+ me.on(eventName, fn);
+ return me;
+ },
+
+
+ relayEvent : function(eventName, observable){
+ this.on(eventName, function(e){
+ observable.fireEvent(eventName, e);
+ });
+ },
+
+
+ clean : function(forceReclean){
+ var me = this,
+ dom = me.dom,
+ n = dom.firstChild,
+ ni = -1;
+
+ if(Ext.Element.data(dom, 'isCleaned') && forceReclean !== true){
+ return me;
+ }
+
+ while(n){
+ var nx = n.nextSibling;
+ if(n.nodeType == 3 && !/\S/.test(n.nodeValue)){
+ dom.removeChild(n);
+ }else{
+ n.nodeIndex = ++ni;
+ }
+ n = nx;
+ }
+ Ext.Element.data(dom, 'isCleaned', true);
+ return me;
+ },
+
+
+ load : function(){
+ var um = this.getUpdater();
+ um.update.apply(um, arguments);
+ return this;
+ },
+
+
+ getUpdater : function(){
+ return this.updateManager || (this.updateManager = new Ext.Updater(this));
+ },
+
+
+ update : function(html, loadScripts, callback){
+ if (!this.dom) {
+ return this;
+ }
+ html = html || "";
+
+ if(loadScripts !== true){
+ this.dom.innerHTML = html;
+ if(typeof callback == 'function'){
+ callback();
+ }
+ return this;
+ }
+
+ var id = Ext.id(),
+ dom = this.dom;
+
+ html += ' ';
+
+ Ext.lib.Event.onAvailable(id, function(){
+ var DOC = document,
+ hd = DOC.getElementsByTagName("head")[0],
+ re = /(?:
+
+
+
+ You should be hooked into BeEF .
+
+ Have fun while your browser is working against you.
+
+
+
+ These links are for demonstrating the "collect links" command module
+
+
+
+ Have a go at the event logger.
+ Insert your secret here:
+
+
+ You can also load up a more advanced demo page here
+
+
+
+