Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • smradius/smradius
  • centiva-shail/smradius
  • nkukard/smradius
3 results
Show changes
Showing
with 389 additions and 39504 deletions
/*
WiSP Users
Copyright (C) 2007-2011, AllWorldIT
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
function showWiSPUserWindow() { function showWiSPUserWindow() {
...@@ -6,12 +24,13 @@ function showWiSPUserWindow() { ...@@ -6,12 +24,13 @@ function showWiSPUserWindow() {
// Window config // Window config
{ {
title: "Users", title: "Users",
iconCls: 'silk-user',
width: 600, width: 600,
height: 335, height: 335,
minWidth: 600, minWidth: 600,
minHeight: 335, minHeight: 335
}, },
// Grid config // Grid config
{ {
...@@ -20,22 +39,22 @@ function showWiSPUserWindow() { ...@@ -20,22 +39,22 @@ function showWiSPUserWindow() {
{ {
text:'Add', text:'Add',
tooltip:'Add user', tooltip:'Add user',
iconCls:'add', iconCls:'silk-user_add',
handler: function() { handler: function() {
showWiSPUserAddEditWindow(); showWiSPUserAddEditWindow(WiSPUserWindow);
} }
}, },
'-', '-',
{ {
text:'Edit', text:'Edit',
tooltip:'Edit user', tooltip:'Edit user',
iconCls:'option', iconCls:'silk-user_edit',
handler: function() { handler: function() {
var selectedItem = WiSPUserWindow.getComponent('gridpanel').getSelectionModel().getSelected(); var selectedItem = Ext.getCmp(WiSPUserWindow.gridPanelID).getSelectionModel().getSelected();
// Check if we have selected item // Check if we have selected item
if (selectedItem) { if (selectedItem) {
// If so display window // If so display window
showWiSPUserAddEditWindow(selectedItem.data.ID); showWiSPUserAddEditWindow(WiSPUserWindow,selectedItem.data.ID);
} else { } else {
WiSPUserWindow.getEl().mask(); WiSPUserWindow.getEl().mask();
...@@ -57,9 +76,9 @@ function showWiSPUserWindow() { ...@@ -57,9 +76,9 @@ function showWiSPUserWindow() {
{ {
text:'Remove', text:'Remove',
tooltip:'Remove user', tooltip:'Remove user',
iconCls:'remove', iconCls:'silk-user_delete',
handler: function() { handler: function() {
var selectedItem = WiSPUserWindow.getComponent('gridpanel').getSelectionModel().getSelected(); var selectedItem = Ext.getCmp(WiSPUserWindow.gridPanelID).getSelectionModel().getSelected();
// Check if we have selected item // Check if we have selected item
if (selectedItem) { if (selectedItem) {
// If so display window // If so display window
...@@ -85,9 +104,9 @@ function showWiSPUserWindow() { ...@@ -85,9 +104,9 @@ function showWiSPUserWindow() {
{ {
text:'Logs', text:'Logs',
tooltip:'User logs', tooltip:'User logs',
iconCls:'logs', iconCls: 'silk-page_white_text',
handler: function() { handler: function() {
var selectedItem = WiSPUserWindow.getComponent('gridpanel').getSelectionModel().getSelected(); var selectedItem = Ext.getCmp(WiSPUserWindow.gridPanelID).getSelectionModel().getSelected();
// Check if we have selected item // Check if we have selected item
if (selectedItem) { if (selectedItem) {
// If so display window // If so display window
...@@ -95,6 +114,34 @@ function showWiSPUserWindow() { ...@@ -95,6 +114,34 @@ function showWiSPUserWindow() {
} else { } else {
WiSPUserWindow.getEl().mask(); WiSPUserWindow.getEl().mask();
// Display error
Ext.Msg.show({
title: "Nothing selected",
msg: "No user selected",
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.CANCEL,
modal: false,
fn: function() {
WiSPUserWindow.getEl().unmask();
}
});
}
}
},
'-',
{
text:'Topups',
tooltip:'User topups',
iconCls:'silk-chart_bar',
handler: function() {
var selectedItem = Ext.getCmp(WiSPUserWindow.gridPanelID).getSelectionModel().getSelected();
// Check if we have selected item
if (selectedItem) {
// If so display window
showWiSPUserTopupsWindow(selectedItem.data.ID);
} else {
WiSPUserWindow.getEl().mask();
// Display error // Display error
Ext.Msg.show({ Ext.Msg.show({
title: "Nothing selected", title: "Nothing selected",
...@@ -123,11 +170,6 @@ function showWiSPUserWindow() { ...@@ -123,11 +170,6 @@ function showWiSPUserWindow() {
sortable: true, sortable: true,
dataIndex: 'Username' dataIndex: 'Username'
}, },
{
header: "Disabled",
sortable: true,
dataIndex: 'Disabled'
},
{ {
header: "First Name", header: "First Name",
sortable: true, sortable: true,
...@@ -147,6 +189,11 @@ function showWiSPUserWindow() { ...@@ -147,6 +189,11 @@ function showWiSPUserWindow() {
header: "Phone", header: "Phone",
sortable: true, sortable: true,
dataIndex: 'Phone' dataIndex: 'Phone'
},
{
header: "Disabled",
sortable: true,
dataIndex: 'Disabled'
} }
]), ]),
autoExpandColumn: 'Username' autoExpandColumn: 'Username'
...@@ -181,61 +228,177 @@ function showWiSPUserWindow() { ...@@ -181,61 +228,177 @@ function showWiSPUserWindow() {
// Display edit/add form // Display edit/add form
function showWiSPUserAddEditWindow(id) { function showWiSPUserAddEditWindow(WiSPUserWindow,id) {
var submitAjaxConfig; var submitAjaxConfig;
var editMode; var editMode;
var icon;
// Arrays for removed items
var RemovedAttributes = new Array();
var RemovedGroups = new Array();
// To identify newly inserted rows
var attributeInsertID = -1;
var groupInsertID = -1;
// Attribute record that can be added to below store
var attributeRecord = Ext.data.Record.create([
{name: 'ID'},
{name: 'Name'},
{name: 'Operator'},
{name: 'Value'},
{name: 'Modifier'}
]);
// Attribute store // Attribute store
var attributeStore; var attributeStore;
attributeStore = new Ext.data.SimpleStore({ // If this is an update we need to pull in record
fields: [ if (id) {
'name', 'operator', 'value', 'modifier' attributeStore = new Ext.ux.JsonStore({
], pruneModifiedRecords: true,
}); baseParams: {
// Attribute record that can be added to above store ID: id,
var attributeRecord = Ext.data.Record.create([ SOAPUsername: globalConfig.soap.username,
{name: 'name'}, SOAPPassword: globalConfig.soap.password,
{name: 'operator'}, SOAPAuthType: globalConfig.soap.authtype,
{name: 'value'}, SOAPModule: 'WiSPUsers',
{name: 'modifier'} SOAPFunction: 'getWiSPUserAttributes',
SOAPParams: 'ID'
}
});
} else {
attributeStore = new Ext.data.SimpleStore({
pruneModifiedRecords: true,
fields: ['ID', 'Name', 'Operator', 'Value', 'Modifer']
});
}
// Group record that can be added to below store
var groupRecord = Ext.data.Record.create([
{name: 'Name'}
]); ]);
// Group store // Group store
var groupStore; var groupStore;
groupStore = new Ext.data.SimpleStore({ // If this is an update we need to pull in record
fields: [ if (id) {
'name' groupStore = new Ext.ux.JsonStore({
], pruneModifiedRecords: true,
}); baseParams: {
// Group record that can be added to above store ID: id,
var groupRecord = Ext.data.Record.create([ SOAPUsername: globalConfig.soap.username,
{name: 'name'} SOAPPassword: globalConfig.soap.password,
]); SOAPAuthType: globalConfig.soap.authtype,
SOAPModule: 'WiSPUsers',
SOAPFunction: 'getWiSPUserGroups',
SOAPParams: 'ID'
}
});
} else {
groupStore = new Ext.data.SimpleStore({
pruneModifiedRecords: true,
fields: [
'Name'
]
});
}
// We doing an update // We doing an update
if (id) { if (id) {
icon = 'silk-user_edit';
submitAjaxConfig = { submitAjaxConfig = {
ID: id, params: {
SOAPFunction: 'updateWiSPUser', ID: id,
SOAPParams: SOAPFunction: 'updateWiSPUser',
'0:ID,'+ SOAPParams:
'0:Username,'+ '0:ID,'+
'0:Password,'+ '0:Username,'+
'0:Firstname,'+ '0:Password,'+
'0:Lastname,'+ '0:Disabled,'+
'0:Phone,'+ '0:Firstname,'+
'0:Email' '0:Lastname,'+
}; '0:Phone,'+
'0:LocationID,'+
'0:Attributes,'+
'0:Groups,'+
'0:Email,'+
'0:RGroups,'+
'0:RAttributes'
},
onSuccess: function() {
var store = Ext.getCmp(WiSPUserWindow.gridPanelID).getStore();
store.load({
params: {
limit: 25
}
});
},
hook: function() {
// Get modified attribute records
var attributes = attributeStore.getModifiedRecords();
// Get modified group records
var groups = groupStore.getModifiedRecords();
var ret = { };
// Set attributes we will be adding
for (var i = 0, len = attributes.length; i < len; i++) {
var attribute = attributes[i];
// Safe to add this attribute
ret['Attributes['+i+'][ID]'] = attribute.get('ID');
ret['Attributes['+i+'][Name]'] = attribute.get('Name');
ret['Attributes['+i+'][Operator]'] = attribute.get('Operator');
ret['Attributes['+i+'][Value]'] = attribute.get('Value');
ret['Attributes['+i+'][Modifier]'] = attribute.get('Modifier');
}
// Set groups we will be adding
for (var i = 0, len = groups.length; i < len; i++) {
var group = groups[i];
// Safe to add this attribute
ret['Groups['+i+'][Name]'] = group.get('Name');
}
// Add removed attributes
if ((id) && (RemovedAttributes.length > 0)) {
var c = 0;
var len = RemovedAttributes.length;
for (var i = 0; i < len; i++) {
// If this is a new add then the user has no attributes
if (RemovedAttributes[i] >= 0) {
ret['RAttributes['+c+']'] = RemovedAttributes[i];
c++;
}
}
}
// Add removed groups
if ((id) && (RemovedGroups.length > 0)) {
var c = 0;
var len = RemovedGroups.length;
for (var i = 0; i < len; i++) {
// If this is a new add then the user has no attributes
if (RemovedGroups[i] >= 0) {
ret['RGroups['+c+']'] = RemovedGroups[i];
c++;
}
}
}
return ret;
}
};
// We doing an Add // We doing an Add
} else { } else {
icon = 'silk-user_add';
submitAjaxConfig = { submitAjaxConfig = {
params: { params: {
SOAPFunction: 'createWiSPUser', SOAPFunction: 'createWiSPUser',
SOAPParams: SOAPParams:
'0:Username,'+ '0:Username,'+
'0:Disabled,'+
'0:Password,'+ '0:Password,'+
'0:Firstname,'+ '0:Firstname,'+
'0:Lastname,'+ '0:Lastname,'+
...@@ -243,7 +406,17 @@ function showWiSPUserAddEditWindow(id) { ...@@ -243,7 +406,17 @@ function showWiSPUserAddEditWindow(id) {
'0:Email,'+ '0:Email,'+
'0:LocationID,'+ '0:LocationID,'+
'0:Attributes,'+ '0:Attributes,'+
'0:Groups' '0:Groups,'+
'0:Number,'+
'0:Prefix'
},
onSuccess: function() {
var store = Ext.getCmp(WiSPUserWindow.gridPanelID).getStore();
store.load({
params: {
limit: 25
}
});
}, },
hook: function() { hook: function() {
...@@ -253,20 +426,24 @@ function showWiSPUserAddEditWindow(id) { ...@@ -253,20 +426,24 @@ function showWiSPUserAddEditWindow(id) {
var groups = groupStore.getModifiedRecords(); var groups = groupStore.getModifiedRecords();
var ret = { }; var ret = { };
// Loop and add to our hash // Set attributes we will be adding
for(var i = 0, len = attributes.length; i < len; i++){ for (var i = 0, len = attributes.length; i < len; i++) {
var attribute = attributes[i]; var attribute = attributes[i];
ret['Attributes['+i+'][Name]'] = attribute.get('name');
ret['Attributes['+i+'][Operator]'] = attribute.get('operator'); // Safe to add this attribute
ret['Attributes['+i+'][Value]'] = attribute.get('value'); ret['Attributes['+i+'][ID]'] = attribute.get('ID');
ret['Attributes['+i+'][Modifier]'] = attribute.get('modifier'); ret['Attributes['+i+'][Name]'] = attribute.get('Name');
} ret['Attributes['+i+'][Operator]'] = attribute.get('Operator');
// Loop and add to our hash ret['Attributes['+i+'][Value]'] = attribute.get('Value');
for(var i = 0, len = groups.length; i < len; i++){ ret['Attributes['+i+'][Modifier]'] = attribute.get('Modifier');
}
// Set groups we will be adding
for (var i = 0, len = groups.length; i < len; i++) {
var group = groups[i]; var group = groups[i];
ret['Groups['+i+'][Name]'] = group.get('name');
}
// Safe to add this attribute
ret['Groups['+i+'][Name]'] = group.get('Name');
}
return ret; return ret;
} }
}; };
...@@ -276,43 +453,49 @@ function showWiSPUserAddEditWindow(id) { ...@@ -276,43 +453,49 @@ function showWiSPUserAddEditWindow(id) {
// Build the attribute editor grid // Build the attribute editor grid
var attributeEditor = new Ext.grid.EditorGridPanel({ var attributeEditor = new Ext.grid.EditorGridPanel({
plain: true, plain: true,
height: 120, autoHeight: true,
autoScroll: true,
// Set row selection model // Set row selection model
selModel: new Ext.grid.RowSelectionModel({ selModel: new Ext.grid.RowSelectionModel({
singleSelect: true singleSelect: true
}), }),
// Inline toolbars // Inline toolbars
tbar: [ tbar: [
{ {
text:'Add', text:'Add',
tooltip:'Add attribute', tooltip:'Add attribute',
iconCls:'add', iconCls:'silk-table_add',
handler: function() { handler: function() {
var newAttrStoreRecord = new attributeRecord({ var newAttrStoreRecord = new attributeRecord({
name: '', ID: attributeInsertID,
operator: '', Name: '',
value: '', Operator: '',
modifier: '' Value: '',
Modifier: ''
}); });
attributeStore.insert(0,newAttrStoreRecord); attributeStore.insert(0,newAttrStoreRecord);
attributeInsertID -= 1;
} }
}, },
'-', '-',
{ {
text:'Remove', text:'Remove',
tooltip:'Remove attribute', tooltip:'Remove attribute',
iconCls:'remove', iconCls:'silk-table_delete',
handler: function() { handler: function() {
var selectedItem = attributeEditor.getSelectionModel().getSelected(); var selectedItem = attributeEditor.getSelectionModel().getSelected();
// Check if we have selected item // Check if we have selected item
if (selectedItem) { if (selectedItem) {
// If so remove // Get selected item value
var attributeID = selectedItem.get('ID');
// Remove selected
attributeStore.remove(selectedItem); attributeStore.remove(selectedItem);
// Add to list of removed attributes
RemovedAttributes.push(attributeID);
} else { } else {
wispUserFormWindow.getEl().mask(); wispUserFormWindow.getEl().mask();
...@@ -329,40 +512,47 @@ function showWiSPUserAddEditWindow(id) { ...@@ -329,40 +512,47 @@ function showWiSPUserAddEditWindow(id) {
}); });
} }
} }
}, }
], ],
cm: new Ext.grid.ColumnModel([ cm: new Ext.grid.ColumnModel([
{ {
id: 'name', id: 'ID',
header: 'ID',
dataIndex: 'ID',
hidden: true,
width: 30
},
{
id: 'Name',
header: 'Name', header: 'Name',
dataIndex: 'name', dataIndex: 'Name',
width: 150, width: 150,
editor: new Ext.form.ComboBox({ editor: new Ext.form.ComboBox({
allowBlank: false, allowBlank: false,
mode: 'local', mode: 'local',
store: [ store: [
[ 'SMRadius-Capping-Traffic-Limit', 'Traffic Limit' ], [ 'SMRadius-Capping-Traffic-Limit', 'Traffic Limit' ],
[ 'SMRadius-Capping-Uptime-Limit', 'Uptime Limit' ], [ 'SMRadius-Capping-Uptime-Limit', 'Uptime Limit' ],
[ 'Framed-IP-Address', 'IP Address' ], [ 'Framed-IP-Address', 'IP Address' ],
[ 'Calling-Station-Id', 'MAC Address' ] [ 'Calling-Station-Id', 'MAC Address' ]
], ],
triggerAction: 'all', triggerAction: 'all',
editable: false, editable: false
}) })
}, },
{ {
id: 'operator', id: 'Operator',
header: 'Operator', header: 'Operator',
dataIndex: 'operator', dataIndex: 'Operator',
width: 300, width: 300,
editor: new Ext.form.ComboBox({ editor: new Ext.form.ComboBox({
allowBlank: false, allowBlank: false,
mode: 'local', mode: 'local',
store: [ store: [
[ '=', 'Add as reply if unique' ], [ '=', 'Add as reply if unique' ],
[ ':=', 'Set configuration value' ], [ ':=', 'Set configuration value' ],
[ '==', 'Match value in request' ], [ '==', 'Match value in request' ],
[ '+=', 'Add reply and set configuration' ], [ '+=', 'Add reply and set configuration' ],
[ '!=', 'Inverse match value in request' ], [ '!=', 'Inverse match value in request' ],
[ '<', 'Match less-than value in request' ], [ '<', 'Match less-than value in request' ],
...@@ -376,28 +566,28 @@ function showWiSPUserAddEditWindow(id) { ...@@ -376,28 +566,28 @@ function showWiSPUserAddEditWindow(id) {
[ '||==', 'Match any of these values in request' ] [ '||==', 'Match any of these values in request' ]
], ],
triggerAction: 'all', triggerAction: 'all',
editable: true, editable: true
}) })
}, },
{ {
id: 'value', id: 'Value',
header: 'Value', header: 'Value',
dataIndex: 'value', dataIndex: 'Value',
width: 100, width: 100,
editor: new Ext.form.TextField({ editor: new Ext.form.TextField({
allowBlank: false, allowBlank: false
}) })
}, },
{ {
id: 'modifier', id: 'Modifier',
header: 'Modifier', header: 'Modifier',
dataIndex: 'modifier', dataIndex: 'Modifier',
width: 80, width: 80,
editor: new Ext.form.ComboBox({ editor: new Ext.form.ComboBox({
allowBlank: false, allowBlank: false,
mode: 'local', mode: 'local',
store: [ store: [
[ 'Seconds', 'Seconds' ], [ 'Seconds', 'Seconds' ],
[ 'Minutes', 'Minutes' ], [ 'Minutes', 'Minutes' ],
[ 'Hours', 'Hours' ], [ 'Hours', 'Hours' ],
[ 'Days', 'Days' ], [ 'Days', 'Days' ],
...@@ -405,21 +595,32 @@ function showWiSPUserAddEditWindow(id) { ...@@ -405,21 +595,32 @@ function showWiSPUserAddEditWindow(id) {
[ 'Months', 'Months' ], [ 'Months', 'Months' ],
[ 'MBytes', 'MBytes' ], [ 'MBytes', 'MBytes' ],
[ 'GBytes', 'GBytes' ], [ 'GBytes', 'GBytes' ],
[ 'TBytes', 'TBytes' ], [ 'TBytes', 'TBytes' ]
], ],
triggerAction: 'all', triggerAction: 'all',
editable: true, editable: true
}) })
}, }
]), ]),
store: attributeStore store: attributeStore
}); });
// Editor combobox ID
var editorComboBoxID = Ext.id();
// Render display value
editorComboBoxRenderer = function(editorComboBoxID) {
var combo = Ext.getCmp(editorComboBoxID);
return function(value){
var record = combo.findRecord(combo.valueField, value);
return record ? record.get(combo.displayField) : value;
}
}
// Build the group editor grid // Build the group editor grid
var groupEditor = new Ext.grid.EditorGridPanel({ var groupEditor = new Ext.grid.EditorGridPanel({
plain: true, plain: true,
height: 120, autoHeight: true,
autoScroll: true,
// Set row selection model // Set row selection model
selModel: new Ext.grid.RowSelectionModel({ selModel: new Ext.grid.RowSelectionModel({
...@@ -431,27 +632,34 @@ function showWiSPUserAddEditWindow(id) { ...@@ -431,27 +632,34 @@ function showWiSPUserAddEditWindow(id) {
{ {
text:'Add', text:'Add',
tooltip:'Add group', tooltip:'Add group',
iconCls:'add', iconCls:'silk-group_add',
handler: function() { handler: function() {
var newGroupStoreRecord = new groupRecord({ var newGroupStoreRecord = new groupRecord({
name: '' ID: groupInsertID,
Name: ''
}); });
groupStore.insert(0,newGroupStoreRecord); groupStore.insert(0,newGroupStoreRecord);
groupInsertID -= 1;
} }
}, },
'-', '-',
{ {
text:'Remove', text:'Remove',
tooltip:'Remove group', tooltip:'Remove group',
iconCls:'remove', iconCls:'silk-group_delete',
handler: function() { handler: function() {
var selectedItem = groupEditor.getSelectionModel().getSelected(); var selectedItem = groupEditor.getSelectionModel().getSelected();
// Check if we have selected item // Check if we have selected item
if (selectedItem) { if (selectedItem) {
// If so remove // Get selected item value
var groupID = selectedItem.get('ID');
// Remove selected
groupStore.remove(selectedItem); groupStore.remove(selectedItem);
// Add to our removed groups hash
RemovedGroups.push(groupID);
} else { } else {
wispUserFormWindow.getEl().mask(); wispUserFormWindow.getEl().mask();
...@@ -468,16 +676,24 @@ function showWiSPUserAddEditWindow(id) { ...@@ -468,16 +676,24 @@ function showWiSPUserAddEditWindow(id) {
}); });
} }
} }
}, }
], ],
cm: new Ext.grid.ColumnModel([ cm: new Ext.grid.ColumnModel([
{ {
id: 'name', id: 'ID',
header: 'ID',
dataIndex: 'ID',
hidden: true,
width: 30
},
{
id: 'Name',
header: 'Name', header: 'Name',
dataIndex: 'name', dataIndex: 'Name',
width: 150, width: 150,
editor: new Ext.form.ComboBox({ editor: new Ext.form.ComboBox({
id: editorComboBoxID,
allowBlank: false, allowBlank: false,
store: new Ext.ux.JsonStore({ store: new Ext.ux.JsonStore({
sortInfo: { field: "Name", direction: "ASC" }, sortInfo: { field: "Name", direction: "ASC" },
...@@ -495,23 +711,37 @@ function showWiSPUserAddEditWindow(id) { ...@@ -495,23 +711,37 @@ function showWiSPUserAddEditWindow(id) {
forceSelection: true, forceSelection: true,
triggerAction: 'all', triggerAction: 'all',
editable: false editable: false
}) }),
}, renderer: editorComboBoxRenderer(editorComboBoxID)
}
]), ]),
store: groupStore store: groupStore
}); });
var locationStore = new Ext.ux.JsonStore({
sortInfo: { field: "Name", direction: "ASC" },
baseParams: {
SOAPUsername: globalConfig.soap.username,
SOAPPassword: globalConfig.soap.password,
SOAPAuthType: globalConfig.soap.authtype,
SOAPModule: 'WiSPUsers',
SOAPFunction: 'getWiSPLocations',
SOAPParams: '__null,__search'
}
})
// Create window // Create window
var wispUserFormWindow = new Ext.ux.GenericFormWindow( var wispUserFormWindow = new Ext.ux.GenericFormWindow(
// Window config // Window config
{ {
title: "User Information", title: "User Information",
iconCls: icon,
width: 700, width: 700,
height: 342, height: 362,
minWidth: 700, minWidth: 700,
minHeight: 342 minHeight: 362
}, },
// Form panel config // Form panel config
{ {
...@@ -526,16 +756,20 @@ function showWiSPUserAddEditWindow(id) { ...@@ -526,16 +756,20 @@ function showWiSPUserAddEditWindow(id) {
{ {
fieldLabel: 'Username', fieldLabel: 'Username',
name: 'Username', name: 'Username',
vtype: 'usernamePart', vtype: 'usernameRadius',
maskRe: usernamePartRe, maskRe: usernameRadiusPartRe,
allowBlank: false, allowBlank: true
}, },
{ {
fieldLabel: 'Password', fieldLabel: 'Password',
name: 'Password', name: 'Password',
vtype: 'usernamePart', allowBlank: true
maskRe: usernamePartRe, },
allowBlank: false, {
fieldLabel: 'Disabled',
name: 'Disabled',
xtype: 'checkbox',
inputValue: '1'
}, },
{ {
xtype: 'tabpanel', xtype: 'tabpanel',
...@@ -543,27 +777,27 @@ function showWiSPUserAddEditWindow(id) { ...@@ -543,27 +777,27 @@ function showWiSPUserAddEditWindow(id) {
deferredRender: false, // Load all panels! deferredRender: false, // Load all panels!
activeTab: 0, activeTab: 0,
height: 200, height: 200,
maxHeight: 200,
defaults: { defaults: {
layout: 'form', layout: 'form',
bodyStyle: 'padding: 10px;' bodyStyle: 'padding: 10px;'
}, },
items: [ items: [
{ {
title: 'Personal', title: 'Personal',
iconCls: 'silk-user_comment',
layout: 'form', layout: 'form',
defaultType: 'textfield', defaultType: 'textfield',
items: [ items: [
{ {
fieldLabel: 'First Name', fieldLabel: 'First Name',
name: 'Firstname', name: 'Firstname',
vtype: 'usernamePart',
allowBlank: true allowBlank: true
}, },
{ {
fieldLabel: 'Last Name', fieldLabel: 'Last Name',
name: 'Lastname', name: 'Lastname',
vtype: 'usernamePart',
allowBlank: true allowBlank: true
}, },
{ {
...@@ -579,36 +813,26 @@ function showWiSPUserAddEditWindow(id) { ...@@ -579,36 +813,26 @@ function showWiSPUserAddEditWindow(id) {
}, },
{ {
xtype: 'combo', xtype: 'combo',
//id: 'combo',
fieldLabel: 'Location', fieldLabel: 'Location',
name: 'Location', name: 'Location',
allowBlank: false, allowBlank: true,
width: 140, width: 140,
store: new Ext.ux.JsonStore({ store: locationStore,
sortInfo: { field: "Name", direction: "ASC" },
baseParams: {
SOAPUsername: globalConfig.soap.username,
SOAPPassword: globalConfig.soap.password,
SOAPAuthType: globalConfig.soap.authtype,
SOAPModule: 'WiSPLocations',
SOAPFunction: 'getWiSPLocations',
SOAPParams: '__null,__search'
}
}),
displayField: 'Name', displayField: 'Name',
valueField: 'ID', valueField: 'ID',
hiddenName: 'LocationID', hiddenName: 'LocationID',
forceSelection: true, forceSelection: true,
triggerAction: 'all', triggerAction: 'all',
allowBlank: true,
editable: false editable: false
}, }
] ]
}, },
{ {
title: 'Groups', title: 'Groups',
iconCls: 'silk-group',
layout: 'form', layout: 'form',
autoScroll: true,
defaultType: 'textfield', defaultType: 'textfield',
items: [ items: [
groupEditor groupEditor
...@@ -616,7 +840,9 @@ function showWiSPUserAddEditWindow(id) { ...@@ -616,7 +840,9 @@ function showWiSPUserAddEditWindow(id) {
}, },
{ {
title: 'Attributes', title: 'Attributes',
iconCls: 'silk-table',
layout: 'form', layout: 'form',
autoScroll: true,
defaultType: 'textfield', defaultType: 'textfield',
items: [ items: [
attributeEditor attributeEditor
...@@ -624,28 +850,26 @@ function showWiSPUserAddEditWindow(id) { ...@@ -624,28 +850,26 @@ function showWiSPUserAddEditWindow(id) {
}, },
{ {
title: 'Add Many', title: 'Add Many',
iconCls: 'silk-user_suit',
layout: 'form', layout: 'form',
defaultType: 'textfield', defaultType: 'textfield',
items: [ items: [
{ {
fieldLabel: 'Prefix', fieldLabel: 'Prefix',
name: 'Prefix', name: 'Prefix',
vtype: 'usernamePart', allowBlank: true
maskRe: usernamePartRe,
allowBlank: true,
}, },
{ {
fieldLabel: 'Number', fieldLabel: 'Number',
name: 'Number', name: 'Number',
vtype: 'usernamePart', vtype: 'number',
maskRe: usernamePartRe, allowBlank: true
allowBlank: true, }
},
] ]
}, }
] ]
}, }
], ]
}, },
// Submit button config // Submit button config
submitAjaxConfig submitAjaxConfig
...@@ -653,7 +877,7 @@ function showWiSPUserAddEditWindow(id) { ...@@ -653,7 +877,7 @@ function showWiSPUserAddEditWindow(id) {
wispUserFormWindow.show(); wispUserFormWindow.show();
if (id) { if (id) {
wispUserFormWindow.getComponent('formpanel').load({ Ext.getCmp(wispUserFormWindow.formPanelID).load({
params: { params: {
ID: id, ID: id,
SOAPUsername: globalConfig.soap.username, SOAPUsername: globalConfig.soap.username,
...@@ -664,16 +888,19 @@ function showWiSPUserAddEditWindow(id) { ...@@ -664,16 +888,19 @@ function showWiSPUserAddEditWindow(id) {
SOAPParams: 'ID' SOAPParams: 'ID'
} }
}); });
locationStore.load();
attributeStore.load();
groupStore.load();
} }
} }
// Display edit/add form // Display remove form
function showWiSPUserRemoveWindow(parent,id) { function showWiSPUserRemoveWindow(WiSPUserWindow,id) {
// Mask parent window // Mask WiSPUserWindow window
parent.getEl().mask(); WiSPUserWindow.getEl().mask();
// Display remove confirm window // Display remove confirm window
Ext.Msg.show({ Ext.Msg.show({
...@@ -687,7 +914,7 @@ function showWiSPUserRemoveWindow(parent,id) { ...@@ -687,7 +914,7 @@ function showWiSPUserRemoveWindow(parent,id) {
if (buttonId == 'yes') { if (buttonId == 'yes') {
// Do ajax request // Do ajax request
uxAjaxRequest(parent,{ uxAjaxRequest(WiSPUserWindow,{
params: { params: {
ID: id, ID: id,
SOAPUsername: globalConfig.soap.username, SOAPUsername: globalConfig.soap.username,
...@@ -696,13 +923,21 @@ function showWiSPUserRemoveWindow(parent,id) { ...@@ -696,13 +923,21 @@ function showWiSPUserRemoveWindow(parent,id) {
SOAPModule: 'WiSPUsers', SOAPModule: 'WiSPUsers',
SOAPFunction: 'removeWiSPUser', SOAPFunction: 'removeWiSPUser',
SOAPParams: 'ID' SOAPParams: 'ID'
},
customSuccess: function() {
var store = Ext.getCmp(WiSPUserWindow.gridPanelID).getStore();
store.load({
params: {
limit: 25
}
});
} }
}); });
// Unmask if user answered no // Unmask if user answered no
} else { } else {
parent.getEl().unmask(); WiSPUserWindow.getEl().unmask();
} }
} }
}); });
...@@ -717,3 +952,5 @@ function showWiSPUserRemoveWindow(parent,id) { ...@@ -717,3 +952,5 @@ function showWiSPUserRemoveWindow(parent,id) {
// vim: ts=4
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.grid.GridFilters = function(config){
this.filters = new Ext.util.MixedCollection();
this.filters.getKey = function(o) {return o ? o.dataIndex : null};
for(var i=0, len=config.filters.length; i<len; i++) {
this.addFilter(config.filters[i]);
}
this.deferredUpdate = new Ext.util.DelayedTask(this.reload, this);
delete config.filters;
Ext.apply(this, config);
};
Ext.extend(Ext.grid.GridFilters, Ext.util.Observable, {
/**
* @cfg {Integer} updateBuffer
* Number of milisecond to defer store updates since the last filter change.
*/
updateBuffer: 500,
/**
* @cfg {String} paramPrefix
* The url parameter prefix for the filters.
*/
paramPrefix: 'filter',
/**
* @cfg {String} fitlerCls
* The css class to be applied to column headers that active filters. Defaults to 'ux-filterd-column'
*/
filterCls: 'ux-filtered-column',
/**
* @cfg {Boolean} local
* True to use Ext.data.Store filter functions instead of server side filtering.
*/
local: false,
/**
* @cfg {Boolean} autoReload
* True to automagicly reload the datasource when a filter change happens.
*/
autoReload: true,
/**
* @cfg {String} stateId
* Name of the Ext.data.Store value to be used to store state information.
*/
stateId: undefined,
/**
* @cfg {Boolean} showMenu
* True to show the filter menus
*/
showMenu: true,
init: function(grid){
if(grid instanceof Ext.grid.GridPanel){
this.grid = grid;
this.store = this.grid.getStore();
if(this.local){
this.store.on('load', function(store) {
store.filterBy(this.getRecordFilter());
}, this);
} else {
this.store.on('beforeload', this.onBeforeLoad, this);
}
this.grid.filters = this;
this.grid.addEvents('filterupdate');
grid.on("render", this.onRender, this);
grid.on("beforestaterestore", this.applyState, this);
grid.on("beforestatesave", this.saveState, this);
} else if(grid instanceof Ext.PagingToolbar) {
this.toolbar = grid;
}
},
/** private **/
applyState: function(grid, state) {
this.suspendStateStore = true;
this.clearFilters();
if(state.filters) {
for(var key in state.filters) {
var filter = this.filters.get(key);
if(filter) {
filter.setValue(state.filters[key]);
filter.setActive(true);
}
}
}
this.deferredUpdate.cancel();
if(this.local) {
this.reload();
}
this.suspendStateStore = false;
},
/** private **/
saveState: function(grid, state){
var filters = {};
this.filters.each(function(filter) {
if(filter.active) {
filters[filter.dataIndex] = filter.getValue();
}
});
return state.filters = filters;
},
/** private **/
onRender: function(){
var hmenu;
if(this.showMenu) {
hmenu = this.grid.getView().hmenu;
this.sep = hmenu.addSeparator();
this.menu = hmenu.add(new Ext.menu.CheckItem({
text: 'Filters',
menu: new Ext.menu.Menu()
}));
this.menu.on('checkchange', this.onCheckChange, this);
this.menu.on('beforecheckchange', this.onBeforeCheck, this);
hmenu.on('beforeshow', this.onMenu, this);
}
this.grid.getView().on("refresh", this.onRefresh, this);
this.updateColumnHeadings(this.grid.getView());
},
/** private **/
onMenu: function(filterMenu) {
var filter = this.getMenuFilter();
if(filter) {
this.menu.menu = filter.menu;
this.menu.setChecked(filter.active, false);
}
this.menu.setVisible(filter !== undefined);
this.sep.setVisible(filter !== undefined);
},
/** private **/
onCheckChange: function(item, value) {
this.getMenuFilter().setActive(value);
},
/** private **/
onBeforeCheck: function(check, value) {
return !value || this.getMenuFilter().isActivatable();
},
/** private **/
onStateChange: function(event, filter) {
if(event == "serialize") {
return;
}
if(filter == this.getMenuFilter()) {
this.menu.setChecked(filter.active, false);
}
if(this.autoReload || this.local) {
this.deferredUpdate.delay(this.updateBuffer);
}
var view = this.grid.getView();
this.updateColumnHeadings(view);
this.grid.saveState();
this.grid.fireEvent('filterupdate', this, filter);
},
/** private **/
onBeforeLoad: function(store, options) {
options.params = options.params || {};
this.cleanParams(options.params);
var params = this.buildQuery(this.getFilterData());
Ext.apply(options.params, params);
},
/** private **/
onRefresh: function(view) {
this.updateColumnHeadings(view);
},
/** private **/
getMenuFilter: function() {
var view = this.grid.getView();
if(!view || view.hdCtxIndex === undefined) {
return null;
}
return this.filters.get(view.cm.config[view.hdCtxIndex].dataIndex);
},
/** private **/
updateColumnHeadings: function(view) {
if(!view || !view.mainHd) {
return;
}
var hds = view.mainHd.select('td').removeClass(this.filterCls);
for(var i=0, len=view.cm.config.length; i<len; i++) {
var filter = this.getFilter(view.cm.config[i].dataIndex);
if(filter && filter.active) {
hds.item(i).addClass(this.filterCls);
}
}
},
/** private **/
reload: function() {
if(this.local){
this.grid.store.clearFilter(true);
this.grid.store.filterBy(this.getRecordFilter());
} else {
this.deferredUpdate.cancel();
var store = this.grid.store;
if(this.toolbar) {
var start = this.toolbar.paramNames.start;
if(store.lastOptions && store.lastOptions.params && store.lastOptions.params[start]) {
store.lastOptions.params[start] = 0;
}
}
store.reload();
}
},
/**
* Method factory that generates a record validator for the filters active at the time
* of invokation.
*
* @private
*/
getRecordFilter: function() {
var f = [];
this.filters.each(function(filter) {
if(filter.active) {
f.push(filter);
}
});
var len = f.length;
return function(record) {
for(var i=0; i<len; i++) {
if(!f[i].validateRecord(record)) {
return false;
}
}
return true;
};
},
/**
* Adds a filter to the collection.
*
* @param {Object/Ext.grid.filter.Filter} config A filter configuration or a filter object.
*
* @return {Ext.grid.filter.Filter} The existing or newly created filter object.
*/
addFilter: function(config) {
var filter = config.menu ? config : new (this.getFilterClass(config.type))(config);
this.filters.add(filter);
Ext.util.Observable.capture(filter, this.onStateChange, this);
return filter;
},
/**
* Returns a filter for the given dataIndex, if on exists.
*
* @param {String} dataIndex The dataIndex of the desired filter object.
*
* @return {Ext.grid.filter.Filter}
*/
getFilter: function(dataIndex){
return this.filters.get(dataIndex);
},
/**
* Turns all filters off. This does not clear the configuration information.
*/
clearFilters: function() {
this.filters.each(function(filter) {
filter.setActive(false);
});
},
/** private **/
getFilterData: function() {
var filters = [];
this.filters.each(function(f) {
if(f.active) {
var d = [].concat(f.serialize());
for(var i=0, len=d.length; i<len; i++) {
filters.push({field: f.dataIndex, data: d[i]});
}
}
});
return filters;
},
/**
* Function to take structured filter data and 'flatten' it into query parameteres. The default function
* will produce a query string of the form:
* filters[0][field]=dataIndex&filters[0][data][param1]=param&filters[0][data][param2]=param...
*
* @param {Array} filters A collection of objects representing active filters and their configuration.
* Each element will take the form of {field: dataIndex, data: filterConf}. dataIndex is not assured
* to be unique as any one filter may be a composite of more basic filters for the same dataIndex.
*
* @return {Object} Query keys and values
*/
buildQuery: function(filters) {
var p = {};
for(var i=0, len=filters.length; i<len; i++) {
var f = filters[i];
var root = [this.paramPrefix, '[', i, ']'].join('');
p[root + '[field]'] = f.field;
var dataPrefix = root + '[data]';
for(var key in f.data) {
p[[dataPrefix, '[', key, ']'].join('')] = f.data[key];
}
}
return p;
},
/**
* Removes filter related query parameters from the provided object.
*
* @param {Object} p Query parameters that may contain filter related fields.
*/
cleanParams: function(p) {
var regex = new RegExp("^" + this.paramPrefix + "\[[0-9]+\]");
for(var key in p) {
if(regex.test(key)) {
delete p[key];
}
}
},
/**
* Function for locating filter classes, overwrite this with your favorite
* loader to provide dynamic filter loading.
*
* @param {String} type The type of filter to load.
*
* @return {Class}
*/
getFilterClass: function(type){
return Ext.grid.filter[type.substr(0, 1).toUpperCase() + type.substr(1) + 'Filter'];
}
});
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.grid.filter.BooleanFilter = Ext.extend(Ext.grid.filter.Filter, {
defaultValue: false,
init: function(){
var gId = Ext.id();
this.options = [
new Ext.menu.CheckItem({text: "Yes", group: gId, checked: this.defaultValue === true}),
new Ext.menu.CheckItem({text: "No", group: gId, checked: this.defaultValue === false})
];
this.menu.add(this.options[0], this.options[1]);
for(var i=0; i<this.options.length; i++) {
this.options[i].on('click', this.fireUpdate, this);
this.options[i].on('checkchange', this.fireUpdate, this);
}
},
isActivatable: function() {
return true;
},
fireUpdate: function() {
this.fireEvent("update", this);
this.setActive(true);
},
setValue: function(value) {
this.options[value ? 0 : 1].setChecked(true);
},
getValue: function() {
return this.options[0].checked;
},
serialize: function() {
var args = {type: 'boolean', value: this.getValue()};
this.fireEvent('serialize', args, this);
return args;
},
validateRecord: function(record) {
return record.get(this.dataIndex) == this.getValue();
}
});
\ No newline at end of file
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.grid.filter.DateFilter = Ext.extend(Ext.grid.filter.Filter, {
dateFormat: 'Y-m-d', // ISO 8601 standard date format
pickerOpts: {},
init: function() {
var opts = Ext.apply(this.pickerOpts, {
minDate: this.minDate,
maxDate: this.maxDate,
format: this.dateFormat
});
var dates = this.dates = {
'after': new Ext.menu.CheckItem({text: "From", menu: new Ext.menu.DateMenu(opts)}),
'before': new Ext.menu.CheckItem({text: "To", menu: new Ext.menu.DateMenu(opts)}),
'on': new Ext.menu.CheckItem({text: "On", menu: new Ext.menu.DateMenu(opts)})
};
this.menu.add(dates.after, dates.before, "-", dates.on);
for(var key in dates) {
var date = dates[key];
date.menu.on('select', this.onSelect.createDelegate(this, [date]), this);
date.on('checkchange', function(){
this.setActive(this.isActivatable());
}, this);
};
},
onSelect: function(date, menuItem, value, picker) {
date.setChecked(true);
var dates = this.dates;
if(date == dates.on) {
dates.before.setChecked(false, true);
dates.after.setChecked(false, true);
} else {
dates.on.setChecked(false, true);
if(date == dates.after && dates.before.menu.picker.value < value) {
dates.before.setChecked(false, true);
} else if (date == dates.before && dates.after.menu.picker.value > value) {
dates.after.setChecked(false, true);
}
}
this.fireEvent("update", this);
},
getFieldValue: function(field) {
return this.dates[field].menu.picker.getValue();
},
getPicker: function(field) {
return this.dates[field].menu.picker;
},
isActivatable: function() {
return this.dates.on.checked || this.dates.after.checked || this.dates.before.checked;
},
setValue: function(value) {
for(var key in this.dates) {
if(value[key]) {
this.dates[key].menu.picker.setValue(value[key]);
this.dates[key].setChecked(true);
} else {
this.dates[key].setChecked(false);
}
}
},
getValue: function() {
var result = {};
for(var key in this.dates) {
if(this.dates[key].checked) {
result[key] = this.dates[key].menu.picker.getValue();
}
}
return result;
},
serialize: function() {
var args = [];
if(this.dates.before.checked) {
args = [{type: 'date', comparison: 'lt', value: this.getFieldValue('before').format(this.dateFormat)}];
}
if(this.dates.after.checked) {
args.push({type: 'date', comparison: 'gt', value: this.getFieldValue('after').format(this.dateFormat)});
}
if(this.dates.on.checked) {
args = {type: 'date', comparison: 'eq', value: this.getFieldValue('on').format(this.dateFormat)};
}
this.fireEvent('serialize', args, this);
return args;
},
validateRecord: function(record) {
var val = record.get(this.dataIndex).clearTime(true).getTime();
if(this.dates.on.checked && val != this.getFieldValue('on').clearTime(true).getTime()) {
return false;
}
if(this.dates.before.checked && val >= this.getFieldValue('before').clearTime(true).getTime()) {
return false;
}
if(this.dates.after.checked && val <= this.getFieldValue('after').clearTime(true).getTime()) {
return false;
}
return true;
}
});
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.ns("Ext.grid.filter");
Ext.grid.filter.Filter = function(config){
Ext.apply(this, config);
this.events = {
/**
* @event activate
* Fires when a inactive filter becomes active
* @param {Ext.ux.grid.filter.Filter} this
*/
'activate': true,
/**
* @event deactivate
* Fires when a active filter becomes inactive
* @param {Ext.ux.grid.filter.Filter} this
*/
'deactivate': true,
/**
* @event update
* Fires when a filter configuration has changed
* @param {Ext.ux.grid.filter.Filter} this
*/
'update': true,
/**
* @event serialize
* Fires after the serialization process. Use this to apply additional parameters to the serialized data.
* @param {Array/Object} data A map or collection of maps representing the current filter configuration.
* @param {Ext.ux.grid.filter.Filter} filter The filter being serialized.
**/
'serialize': true
};
Ext.grid.filter.Filter.superclass.constructor.call(this);
this.menu = new Ext.menu.Menu();
this.init();
if(config && config.value) {
this.setValue(config.value);
this.setActive(config.active !== false, true);
delete config.value;
}
};
Ext.extend(Ext.grid.filter.Filter, Ext.util.Observable, {
/**
* @cfg {Boolean} active
* Indicates the default status of the filter (defaults to false).
*/
/**
* True if this filter is active. Read-only.
* @type Boolean
* @property
*/
active: false,
/**
* @cfg {String} dataIndex
* The {@link Ext.data.Store} data index of the field this filter represents. The dataIndex does not actually
* have to exist in the store.
*/
dataIndex: null,
/**
* The filter configuration menu that will be installed into the filter submenu of a column menu.
* @type Ext.menu.Menu
* @property
*/
menu: null,
/**
* Initialize the filter and install required menu items.
*/
init: Ext.emptyFn,
fireUpdate: function() {
this.value = this.item.getValue();
if(this.active) {
this.fireEvent("update", this);
}
this.setActive(this.value.length > 0);
},
/**
* Returns true if the filter has enough configuration information to be activated.
* @return {Boolean}
*/
isActivatable: function() {
return true;
},
/**
* Sets the status of the filter and fires that appropriate events.
* @param {Boolean} active The new filter state.
* @param {Boolean} suppressEvent True to prevent events from being fired.
*/
setActive: function(active, suppressEvent) {
if(this.active != active) {
this.active = active;
if(suppressEvent !== true) {
this.fireEvent(active ? 'activate' : 'deactivate', this);
}
}
},
/**
* Get the value of the filter
* @return {Object} The 'serialized' form of this filter
*/
getValue: Ext.emptyFn,
/**
* Set the value of the filter.
* @param {Object} data The value of the filter
*/
setValue: Ext.emptyFn,
/**
* Serialize the filter data for transmission to the server.
* @return {Object/Array} An object or collection of objects containing key value pairs representing
* the current configuration of the filter.
*/
serialize: Ext.emptyFn,
/**
* Validates the provided Ext.data.Record against the filters configuration.
* @param {Ext.data.Record} record The record to validate
* @return {Boolean} True if the record is valid with in the bounds of the filter, false otherwise.
*/
validateRecord: function(){return true;}
});
\ No newline at end of file
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.grid.filter.ListFilter = Ext.extend(Ext.grid.filter.Filter, {
labelField: 'text',
loadingText: 'Loading...',
loadOnShow: true,
value: [],
loaded: false,
phpMode: false,
init: function(){
this.menu.add('<span class="loading-indicator">' + this.loadingText + '</span>');
if(this.store && this.loadOnShow) {
this.menu.on('show', this.onMenuLoad, this);
} else if(this.options) {
var options = [];
for(var i=0, len=this.options.length; i<len; i++) {
var value = this.options[i];
switch(Ext.type(value)) {
case 'array':
options.push(value);
break;
case 'object':
options.push([value.id, value[this.labelField]]);
break;
case 'string':
options.push([value, value]);
break;
}
}
this.store = new Ext.data.Store({
reader: new Ext.data.ArrayReader({id: 0}, ['id', this.labelField])
});
this.options = options;
this.menu.on('show', this.onMenuLoad, this);
}
this.store.on('load', this.onLoad, this);
this.bindShowAdapter();
},
/**
* Lists will initially show a 'loading' item while the data is retrieved from the store. In some cases the
* loaded data will result in a list that goes off the screen to the right (as placement calculations were done
* with the loading item). This adaptor will allow show to be called with no arguments to show with the previous
* arguments and thusly recalculate the width and potentially hang the menu from the left.
*
*/
bindShowAdapter: function() {
var oShow = this.menu.show;
var lastArgs = null;
this.menu.show = function() {
if(arguments.length == 0) {
oShow.apply(this, lastArgs);
} else {
lastArgs = arguments;
oShow.apply(this, arguments);
}
};
},
onMenuLoad: function() {
if(!this.loaded) {
if(this.options) {
this.store.loadData(this.options);
} else {
this.store.load();
}
}
},
onLoad: function(store, records) {
var visible = this.menu.isVisible();
this.menu.hide(false);
this.menu.removeAll();
var gid = this.single ? Ext.id() : null;
for(var i=0, len=records.length; i<len; i++) {
var item = new Ext.menu.CheckItem({
text: records[i].get(this.labelField),
group: gid,
checked: this.value.indexOf(records[i].id) > -1,
hideOnClick: false
});
item.itemId = records[i].id;
item.on('checkchange', this.checkChange, this);
this.menu.add(item);
}
this.setActive(this.isActivatable());
this.loaded = true;
if(visible) {
this.menu.show(); //Adaptor will re-invoke with previous arguments
}
},
checkChange: function(item, checked) {
var value = [];
this.menu.items.each(function(item) {
if(item.checked) {
value.push(item.itemId);
}
},this);
this.value = value;
this.setActive(this.isActivatable());
this.fireEvent("update", this);
},
isActivatable: function() {
return this.value.length > 0;
},
setValue: function(value) {
var value = this.value = [].concat(value);
if(this.loaded) {
this.menu.items.each(function(item) {
item.setChecked(false, true);
for(var i=0, len=value.length; i<len; i++) {
if(item.itemId == value[i]) {
item.setChecked(true, true);
}
}
}, this);
}
this.fireEvent("update", this);
},
getValue: function() {
return this.value;
},
serialize: function() {
var args = {type: 'list', value: this.phpMode ? this.value.join(',') : this.value};
this.fireEvent('serialize', args, this);
return args;
},
validateRecord: function(record) {
return this.getValue().indexOf(record.get(this.dataIndex)) > -1;
}
});
\ No newline at end of file
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.grid.filter.NumericFilter = Ext.extend(Ext.grid.filter.Filter, {
init: function() {
this.menu = new Ext.menu.RangeMenu();
this.menu.on("update", this.fireUpdate, this);
},
fireUpdate: function() {
this.setActive(this.isActivatable());
this.fireEvent("update", this);
},
isActivatable: function() {
var value = this.menu.getValue();
return value.eq !== undefined || value.gt !== undefined || value.lt !== undefined;
},
setValue: function(value) {
this.menu.setValue(value);
},
getValue: function() {
return this.menu.getValue();
},
serialize: function() {
var args = [];
var values = this.menu.getValue();
for(var key in values) {
args.push({type: 'numeric', comparison: key, value: values[key]});
}
this.fireEvent('serialize', args, this);
return args;
},
validateRecord: function(record) {
var val = record.get(this.dataIndex),
values = this.menu.getValue();
if(values.eq != undefined && val != values.eq) {
return false;
}
if(values.lt != undefined && val >= values.lt) {
return false;
}
if(values.gt != undefined && val <= values.gt) {
return false;
}
return true;
}
});
\ No newline at end of file
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.grid.filter.StringFilter = Ext.extend(Ext.grid.filter.Filter, {
updateBuffer: 500,
icon: '/img/small_icons/famfamfam/find.png',
init: function() {
var value = this.value = new Ext.menu.EditableItem({icon: this.icon});
value.on('keyup', this.onKeyUp, this);
this.menu.add(value);
this.updateTask = new Ext.util.DelayedTask(this.fireUpdate, this);
},
onKeyUp: function(event) {
if(event.getKey() == event.ENTER){
this.menu.hide(true);
return;
}
this.updateTask.delay(this.updateBuffer);
},
isActivatable: function() {
return this.value.getValue().length > 0;
},
fireUpdate: function() {
if(this.active) {
this.fireEvent("update", this);
}
this.setActive(this.isActivatable());
},
setValue: function(value) {
this.value.setValue(value);
this.fireEvent("update", this);
},
getValue: function() {
return this.value.getValue();
},
serialize: function() {
var args = {type: 'string', value: this.getValue()};
this.fireEvent('serialize', args, this);
return args;
},
validateRecord: function(record) {
var val = record.get(this.dataIndex);
if(typeof val != "string") {
return this.getValue().length == 0;
}
return val.toLowerCase().indexOf(this.getValue().toLowerCase()) > -1;
}
});
\ No newline at end of file
Ext.ux.ProgressFormPanel = function(config) {
config = Ext.apply({
bodyStyle: 'border:0px;',
autoHeight: true,
loadMsg: 'Loading...',
submitMsg:'Saving...'
}, config);
Ext.ux.ProgressFormPanel.superclass.constructor.call(this, config);
// Create event handlers
this.on({
// Display failure message
actionfailed: { scope:this, fn:function(form, action){
var hideMe = 0;
// We should hide the loadmask here
if ((action.type == 'load' || action.type == 'submit') && this.rendered == true) {
this.getLoadMask().hide();
}
// If we loading hide the window
if (action.type == 'load') {
hideMe = 1;
}
printStr = '<b>Error: </b>';
// Check if we have result.msg
if (action.result && action.result.msg) {
printStr += action.result.msg;
// Check if we have result.errors
} else if (action.result && action.result.errors) {
// Add all errors
for (var i = 0; i < action.result.errors.length; i++) {
printStr += action.result.errors[i] + '<br />';
}
// Check if we just have a error code
} else if (action.result.data && action.result.data.ErrorCode) {
printStr += "Code: "+action.result.data.ErrorCode+"<br />";
printStr += "Reason: "+action.result.data.ErrorReason+"<br />";
// Check if we just have a result
} else if (action.result) {
printStr += action.result;
// Unknown
} else {
printStr += 'UNKNOWN ERROR: '+action.failureType;
}
// Display error
Ext.Msg.show({
title: "Exception occured: ",
msg: printStr,
icon: Ext.MessageBox.ERROR,
modal: true,
buttons: Ext.Msg.CANCEL,
scope: this,
fn: function() {
// Check if we must hide this
if (hideMe) {
this.ownerCt.hide();
}
}
});
}},
// Before action, fire up mask
beforeaction: { scope:this, fn:function(form, action){
if((action.type == 'load' || action.type == 'submit') && this.rendered == true){
this.getLoadMask().show();
}
}},
// Completed action, hide mask
actioncomplete: { scope:this, fn:function(form, action){
if((action.type == 'load' || action.type == 'submit') && this.rendered == true){
this.getLoadMask().hide();
}
}}
});
}
Ext.reg('progressformpanel',Ext.ux.ProgressFormPanel);
Ext.extend(Ext.ux.ProgressFormPanel, Ext.FormPanel, {
// Setup the loadmask messages
load: function(options){
this.getLoadMask().msg = this.loadMsg;
Ext.ux.ProgressFormPanel.superclass.load.call(this,options);
},
submit: function(options){
this.getLoadMask().msg = this.submitMsg;
// Ext.ux.ProgressFormPanel.superclass.submit.call(this,options);
this.getForm().submit(options);
},
// Get load mask
getLoadMask: function() {
// If we don't have a load mask ,create one
if(!this.loadmask){
this.loadmask = new Ext.LoadMask(this.ownerCt.getEl());
}
return this.loadmask;
}
});
/*
* Nigels's utility functions
*/
Ext.BLANK_IMAGE_URL = 'resources/extjs/images/default/s.gif';
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.menu.EditableItem = Ext.extend(Ext.menu.BaseItem, {
itemCls : "x-menu-item",
hideOnClick: false,
initComponent: function(){
Ext.menu.EditableItem.superclass.initComponent.call(this);
this.addEvents('keyup');
this.editor = this.editor || new Ext.form.TextField();
if(this.text) {
this.editor.setValue(this.text);
}
},
onRender: function(container){
var s = container.createChild({
cls: this.itemCls,
html: '<img src="' + this.icon + '" class="x-menu-item-icon" style="margin: 3px 3px 2px 2px;" />'
});
Ext.apply(this.config, {width: 125});
this.editor.render(s);
this.el = s;
this.relayEvents(this.editor.el, ["keyup"]);
if(Ext.isGecko) {
s.setStyle('overflow', 'auto');
}
Ext.menu.EditableItem.superclass.onRender.call(this, container);
},
getValue: function(){
return this.editor.getValue();
},
setValue: function(value){
this.editor.setValue(value);
},
isValid: function(preventMark){
return this.editor.isValid(preventMark);
}
});
\ No newline at end of file
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.menu.RangeMenu = function(config){
Ext.menu.RangeMenu.superclass.constructor.call(this, config);
this.updateTask = new Ext.util.DelayedTask(this.fireUpdate, this);
var cfg = this.fieldCfg;
var cls = this.fieldCls;
var fields = this.fields = Ext.applyIf(this.fields || {}, {
'gt': new Ext.menu.EditableItem({
icon: this.icons.gt,
editor: new cls(typeof cfg == "object" ? cfg.gt || '' : cfg)
}),
'lt': new Ext.menu.EditableItem({
icon: this.icons.lt,
editor: new cls(typeof cfg == "object" ? cfg.lt || '' : cfg)
}),
'eq': new Ext.menu.EditableItem({
icon: this.icons.eq,
editor: new cls(typeof cfg == "object" ? cfg.gt || '' : cfg)
})
});
this.add(fields.gt, fields.lt, '-', fields.eq);
for(var key in fields) {
fields[key].on('keyup', this.onKeyUp.createDelegate(this, [fields[key]], true), this);
}
this.addEvents('update');
};
Ext.extend(Ext.menu.RangeMenu, Ext.menu.Menu, {
fieldCls: Ext.form.NumberField,
fieldCfg: '',
updateBuffer: 500,
icons: {
gt: '/img/small_icons/greater_then.png',
lt: '/img/small_icons/less_then.png',
eq: '/img/small_icons/equals.png'
},
fireUpdate: function() {
this.fireEvent("update", this);
},
setValue: function(data) {
for(var key in this.fields) {
this.fields[key].setValue(data[key] !== undefined ? data[key] : '');
}
this.fireEvent("update", this);
},
getValue: function() {
var result = {};
for(var key in this.fields) {
var field = this.fields[key];
if(field.isValid() && String(field.getValue()).length > 0) {
result[key] = field.getValue();
}
}
return result;
},
onKeyUp: function(event, input, notSure, field) {
if(event.getKey() == event.ENTER && field.isValid()) {
this.hide(true);
return;
}
if(field == this.fields.eq) {
this.fields.gt.setValue(null);
this.fields.lt.setValue(null);
} else {
this.fields.eq.setValue(null);
}
this.updateTask.delay(this.updateBuffer);
}
});
\ No newline at end of file
// Domain name
var domainRe = /[a-z0-9\.\-]/;
// Local part of email address regex (or mask in this case)
var emailLocalPartRe = /[a-z0-9\._\+&]/;
// Full email address
var emailAddressRe = /[a-z0-9\._\+&@\-]/;
// Typical username
var usernamePartRe = /[a-z0-9\._]/;
// Add the additional 'advanced' VTypes
Ext.apply(Ext.form.VTypes, {
'number': function(v) {
var numberMask = /^[0-9]+$/;
return numberMask.test(v);
},
'numberText': "This field must contain a number",
'domain': function(v) {
var domainMask = /^[a-z0-9]+[a-z0-9\-]*(\.[a-z0-9\-]+)+$/;
return domainMask.test(v);
},
'domainText': "This is not a valid domain",
'emailLocalPart': function(v) {
var emailLocalPartMask = /^[a-z0-9\._\+&]+$/;
return emailLocalPartMask.test(v);
},
'emailLocalPartText': "This is not a valid local part",
'usernamePart': function(v) {
var usernamePartMask = /^[a-z0-9\._]+$/;
return usernamePartMask.test(v);
},
'usernamePartText': "This is not a valid username",
'emailAddress': function(v) {
var emailAddressMask = /^[a-z0-9\._\-\+&]+@[a-z0-9]+[a-z0-9\-]*(\.[a-z0-9\-]+)+$/;
return emailAddressMask.test(v);
},
'emailAddressPartText': "This is not a valid email address",
'daterange': function(val, field) {
var date = field.parseDate(val);
if(!date){
return;
}
// Set maximum value for date, cant be less than minimum value
if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
var start = Ext.getCmp(field.startDateField);
start.setMaxValue(date);
start.validate();
this.dateRangeMax = date;
// Set minimum value for date, cant be more than maximum value
} else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
var end = Ext.getCmp(field.endDateField);
end.setMinValue(date);
end.validate();
this.dateRangeMin = date;
}
/*
* Always return true since we're only using this vtype to set the
* min/max allowed values (these are tested for after the vtype test)
*/
return true;
}
});
Source diff could not be displayed: it is too large. Options to address this: view the blob.
/*
* Ext JS Library 2.2
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext={version:"2.2"};window["undefined"]=window["undefined"];Ext.apply=function(C,D,B){if(B){Ext.apply(C,B)}if(C&&D&&typeof D=="object"){for(var A in D){C[A]=D[A]}}return C};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isGecko3=!isSafari&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return }var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+" == \"undefined\"){"+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.length=="number"&&typeof v.splice=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7,isIE7:isIE7,isGecko:isGecko,isGecko2:isGecko&&!isGecko3,isGecko3:isGecko3,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isMac&&isGecko&&!isGecko3))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var A=arguments;var B=this;return function(){return B.apply(window,A)}},createDelegate:function(C,B,A){var D=this;return function(){var F=B||arguments;if(A===true){F=Array.prototype.slice.call(arguments,0);F=F.concat(B)}else{if(typeof A=="number"){F=Array.prototype.slice.call(arguments,0);var E=[A,0].concat(B);Array.prototype.splice.apply(F,E)}}return D.apply(C||window,F)}},defer:function(C,E,B,A){var D=this.createDelegate(E,B,A);if(C){return setTimeout(D,C)}D();return 0},createSequence:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){var D=C.apply(this||window,arguments);B.apply(A||this||window,arguments);return D}},createInterceptor:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){B.target=this;B.method=C;if(B.apply(A||this||window,arguments)===false){return }return C.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(A){return A.replace(/('|\\)/g,"\\$1")},leftPad:function(D,B,C){var A=new String(D);if(!C){C=" "}while(A.length<B){A=C+A}return A.toString()},format:function(B){var A=Array.prototype.slice.call(arguments,1);return B.replace(/\{(\d+)\}/g,function(C,D){return A[D]})}});String.prototype.toggle=function(B,A){return this==B?A:B};String.prototype.trim=function(){var A=/^\s+|\s+$/g;return function(){return this.replace(A,"")}}();Ext.applyIf(Number.prototype,{constrain:function(B,A){return Math.min(Math.max(this,B),A)}});Ext.applyIf(Array.prototype,{indexOf:function(C){for(var B=0,A=this.length;B<A;B++){if(this[B]==C){return B}}return -1},remove:function(B){var A=this.indexOf(B);if(A!=-1){this.splice(A,1)}return this}});Date.prototype.getElapsed=function(A){return Math.abs((A||new Date()).getTime()-this.getTime())};
(function(){var B;Ext.lib.Dom={getViewWidth:function(E){return E?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(E){return E?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){var E=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(E,this.getViewportHeight())},getDocumentWidth:function(){var E=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(E,this.getViewportWidth())},getViewportHeight:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientHeight:document.body.clientHeight}else{return self.innerHeight}},getViewportWidth:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientWidth:document.body.clientWidth}else{return self.innerWidth}},isAncestor:function(F,G){F=Ext.getDom(F);G=Ext.getDom(G);if(!F||!G){return false}if(F.contains&&!Ext.isSafari){return F.contains(G)}else{if(F.compareDocumentPosition){return !!(F.compareDocumentPosition(G)&16)}else{var E=G.parentNode;while(E){if(E==F){return true}else{if(!E.tagName||E.tagName.toUpperCase()=="HTML"){return false}}E=E.parentNode}return false}}},getRegion:function(E){return Ext.lib.Region.getRegion(E)},getY:function(E){return this.getXY(E)[1]},getX:function(E){return this.getXY(E)[0]},getXY:function(G){var F,K,M,N,J=(document.body||document.documentElement);G=Ext.getDom(G);if(G==J){return[0,0]}if(G.getBoundingClientRect){M=G.getBoundingClientRect();N=C(document).getScroll();return[M.left+N.left,M.top+N.top]}var O=0,L=0;F=G;var E=C(G).getStyle("position")=="absolute";while(F){O+=F.offsetLeft;L+=F.offsetTop;if(!E&&C(F).getStyle("position")=="absolute"){E=true}if(Ext.isGecko){K=C(F);var P=parseInt(K.getStyle("borderTopWidth"),10)||0;var H=parseInt(K.getStyle("borderLeftWidth"),10)||0;O+=H;L+=P;if(F!=G&&K.getStyle("overflow")!="visible"){O+=H;L+=P}}F=F.offsetParent}if(Ext.isSafari&&E){O-=J.offsetLeft;L-=J.offsetTop}if(Ext.isGecko&&!E){var I=C(J);O+=parseInt(I.getStyle("borderLeftWidth"),10)||0;L+=parseInt(I.getStyle("borderTopWidth"),10)||0}F=G.parentNode;while(F&&F!=J){if(!Ext.isOpera||(F.tagName!="TR"&&C(F).getStyle("display")!="inline")){O-=F.scrollLeft;L-=F.scrollTop}F=F.parentNode}return[O,L]},setXY:function(E,F){E=Ext.fly(E,"_setXY");E.position();var G=E.translatePoints(F);if(F[0]!==false){E.dom.style.left=G.left+"px"}if(F[1]!==false){E.dom.style.top=G.top+"px"}},setX:function(F,E){this.setXY(F,[E,false])},setY:function(E,F){this.setXY(E,[false,F])}};Ext.lib.Event=function(){var F=false;var G=[];var K=[];var I=0;var H=[];var E=0;var J=null;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,_interval:null,startInterval:function(){if(!this._interval){var L=this;var M=function(){L._tryPreloadAttach()};this._interval=setInterval(M,this.POLL_INTERVAL)}},onAvailable:function(N,L,O,M){H.push({id:N,fn:L,obj:O,override:M,checkReady:false});I=this.POLL_RETRYS;this.startInterval()},addListener:function(Q,M,P){Q=Ext.getDom(Q);if(!Q||!P){return false}if("unload"==M){K[K.length]=[Q,M,P];return true}var O=function(R){return typeof Ext!="undefined"?P(Ext.lib.Event.getEvent(R)):false};var L=[Q,M,P,O];var N=G.length;G[N]=L;this.doAdd(Q,M,O,false);return true},removeListener:function(S,O,R){var Q,N;S=Ext.getDom(S);if(!R){return this.purgeElement(S,false,O)}if("unload"==O){for(Q=0,N=K.length;Q<N;Q++){var M=K[Q];if(M&&M[0]==S&&M[1]==O&&M[2]==R){K.splice(Q,1);return true}}return false}var L=null;var P=arguments[3];if("undefined"==typeof P){P=this._getCacheIndex(S,O,R)}if(P>=0){L=G[P]}if(!S||!L){return false}this.doRemove(S,O,L[this.WFN],false);delete G[P][this.WFN];delete G[P][this.FN];G.splice(P,1);return true},getTarget:function(N,M){N=N.browserEvent||N;var L=N.target||N.srcElement;return this.resolveTextNode(L)},resolveTextNode:function(L){if(Ext.isSafari&&L&&3==L.nodeType){return L.parentNode}else{return L}},getPageX:function(M){M=M.browserEvent||M;var L=M.pageX;if(!L&&0!==L){L=M.clientX||0;if(Ext.isIE){L+=this.getScroll()[1]}}return L},getPageY:function(L){L=L.browserEvent||L;var M=L.pageY;if(!M&&0!==M){M=L.clientY||0;if(Ext.isIE){M+=this.getScroll()[0]}}return M},getXY:function(L){L=L.browserEvent||L;return[this.getPageX(L),this.getPageY(L)]},getRelatedTarget:function(M){M=M.browserEvent||M;var L=M.relatedTarget;if(!L){if(M.type=="mouseout"){L=M.toElement}else{if(M.type=="mouseover"){L=M.fromElement}}}return this.resolveTextNode(L)},getTime:function(N){N=N.browserEvent||N;if(!N.time){var M=new Date().getTime();try{N.time=M}catch(L){this.lastError=L;return M}}return N.time},stopEvent:function(L){this.stopPropagation(L);this.preventDefault(L)},stopPropagation:function(L){L=L.browserEvent||L;if(L.stopPropagation){L.stopPropagation()}else{L.cancelBubble=true}},preventDefault:function(L){L=L.browserEvent||L;if(L.preventDefault){L.preventDefault()}else{L.returnValue=false}},getEvent:function(M){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break}N=N.caller}}return L},getCharCode:function(L){L=L.browserEvent||L;return L.charCode||L.keyCode||0},_getCacheIndex:function(Q,N,P){for(var O=0,M=G.length;O<M;++O){var L=G[O];if(L&&L[this.FN]==P&&L[this.EL]==Q&&L[this.TYPE]==N){return O}}return -1},elCache:{},getEl:function(L){return document.getElementById(L)},clearCache:function(){},_load:function(M){F=true;var L=Ext.lib.Event;if(Ext.isIE){L.doRemove(window,"load",L._load)}},_tryPreloadAttach:function(){if(this.locked){return false}this.locked=true;var R=!F;if(!R){R=(I>0)}var Q=[];for(var M=0,L=H.length;M<L;++M){var P=H[M];if(P){var O=this.getEl(P.id);if(O){if(!P.checkReady||F||O.nextSibling||(document&&document.body)){var N=O;if(P.override){if(P.override===true){N=P.obj}else{N=P.override}}P.fn.call(N,P.obj);H[M]=null}}else{Q.push(P)}}}I=(Q.length===0)?0:I-1;if(R){this.startInterval()}else{clearInterval(this._interval);this._interval=null}this.locked=false;return true},purgeElement:function(P,Q,N){var R=this.getListeners(P,N);if(R){for(var O=0,L=R.length;O<L;++O){var M=R[O];this.removeListener(P,M.type,M.fn)}}if(Q&&P&&P.childNodes){for(O=0,L=P.childNodes.length;O<L;++O){this.purgeElement(P.childNodes[O],Q,N)}}},getListeners:function(M,R){var P=[],L;if(!R){L=[G,K]}else{if(R=="unload"){L=[K]}else{L=[G]}}for(var O=0;O<L.length;++O){var T=L[O];if(T&&T.length>0){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===M&&(!R||R===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.ADJ_SCOPE],index:Q})}}}}return(P.length)?P:null},_unload:function(S){var R=Ext.lib.Event,P,O,M,L,N;for(P=0,L=K.length;P<L;++P){M=K[P];if(M){var Q=window;if(M[R.ADJ_SCOPE]){if(M[R.ADJ_SCOPE]===true){Q=M[R.OBJ]}else{Q=M[R.ADJ_SCOPE]}}M[R.FN].call(Q,R.getEvent(S),M[R.OBJ]);K[P]=null;M=null;Q=null}}K=null;if(G&&G.length>0){O=G.length;while(O){N=O-1;M=G[N];if(M){R.removeListener(M[R.EL],M[R.TYPE],M[R.FN],N)}O=O-1}M=null;R.clearCache()}R.doRemove(window,"unload",R._unload)},getScroll:function(){var L=document.documentElement,M=document.body;if(L&&(L.scrollTop||L.scrollLeft)){return[L.scrollTop,L.scrollLeft]}else{if(M){return[M.scrollTop,M.scrollLeft]}else{return[0,0]}}},doAdd:function(){if(window.addEventListener){return function(O,M,N,L){O.addEventListener(M,N,(L))}}else{if(window.attachEvent){return function(O,M,N,L){O.attachEvent("on"+M,N)}}else{return function(){}}}}(),doRemove:function(){if(window.removeEventListener){return function(O,M,N,L){O.removeEventListener(M,N,(L))}}else{if(window.detachEvent){return function(N,L,M){N.detachEvent("on"+L,M)}}else{return function(){}}}}()}}();var D=Ext.lib.Event;D.on=D.addListener;D.un=D.removeListener;if(document&&document.body){D._load()}else{D.doAdd(window,"load",D._load)}D.doAdd(window,"unload",D._unload);D._tryPreloadAttach();Ext.lib.Ajax={request:function(K,I,E,J,F){if(F){var G=F.headers;if(G){for(var H in G){if(G.hasOwnProperty(H)){this.initHeader(H,G[H],false)}}}if(F.xmlData){if(!G||!G["Content-Type"]){this.initHeader("Content-Type","text/xml",false)}K=(K?K:(F.method?F.method:"POST"));J=F.xmlData}else{if(F.jsonData){if(!G||!G["Content-Type"]){this.initHeader("Content-Type","application/json",false)}K=(K?K:(F.method?F.method:"POST"));J=typeof F.jsonData=="object"?Ext.encode(F.jsonData):F.jsonData}}}return this.asyncRequest(K,I,E,J)},serializeForm:function(F){if(typeof F=="string"){F=(document.getElementById(F)||document.forms[F])}var G,E,H,J,K="",M=false;for(var L=0;L<F.elements.length;L++){G=F.elements[L];J=F.elements[L].disabled;E=F.elements[L].name;H=F.elements[L].value;if(!J&&E){switch(G.type){case"select-one":case"select-multiple":for(var I=0;I<G.options.length;I++){if(G.options[I].selected){if(Ext.isIE){K+=encodeURIComponent(E)+"="+encodeURIComponent(G.options[I].attributes["value"].specified?G.options[I].value:G.options[I].text)+"&"}else{K+=encodeURIComponent(E)+"="+encodeURIComponent(G.options[I].hasAttribute("value")?G.options[I].value:G.options[I].text)+"&"}}}break;case"radio":case"checkbox":if(G.checked){K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&"}break;case"file":case undefined:case"reset":case"button":break;case"submit":if(M==false){K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&";M=true}break;default:K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&";break}}}K=K.substr(0,K.length-1);return K},headers:{},hasHeaders:false,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",hasDefaultHeaders:true,defaultHeaders:{},poll:{},timeout:{},pollInterval:50,transactionId:0,setProgId:function(E){this.activeX.unshift(E)},setDefaultPostHeader:function(E){this.useDefaultHeader=E},setDefaultXhrHeader:function(E){this.useDefaultXhrHeader=E},setPollingInterval:function(E){if(typeof E=="number"&&isFinite(E)){this.pollInterval=E}},createXhrObject:function(I){var H,E;try{E=new XMLHttpRequest();H={conn:E,tId:I}}catch(G){for(var F=0;F<this.activeX.length;++F){try{E=new ActiveXObject(this.activeX[F]);H={conn:E,tId:I};break}catch(G){}}}finally{return H}},getConnectionObject:function(){var F;var G=this.transactionId;try{F=this.createXhrObject(G);if(F){this.transactionId++}}catch(E){}finally{return F}},asyncRequest:function(I,F,H,E){var G=this.getConnectionObject();if(!G){return null}else{G.conn.open(I,F,true);if(this.useDefaultXhrHeader){if(!this.defaultHeaders["X-Requested-With"]){this.initHeader("X-Requested-With",this.defaultXhrHeader,true)}}if(E&&this.useDefaultHeader&&(!this.hasHeaders||!this.headers["Content-Type"])){this.initHeader("Content-Type",this.defaultPostHeader)}if(this.hasDefaultHeaders||this.hasHeaders){this.setHeader(G)}this.handleReadyState(G,H);G.conn.send(E||null);return G}},handleReadyState:function(F,G){var E=this;if(G&&G.timeout){this.timeout[F.tId]=window.setTimeout(function(){E.abort(F,G,true)},G.timeout)}this.poll[F.tId]=window.setInterval(function(){if(F.conn&&F.conn.readyState==4){window.clearInterval(E.poll[F.tId]);delete E.poll[F.tId];if(G&&G.timeout){window.clearTimeout(E.timeout[F.tId]);delete E.timeout[F.tId]}E.handleTransactionResponse(F,G)}},this.pollInterval)},handleTransactionResponse:function(I,J,E){if(!J){this.releaseObject(I);return }var G,F;try{if(I.conn.status!==undefined&&I.conn.status!=0){G=I.conn.status}else{G=13030}}catch(H){G=13030}if(G>=200&&G<300){F=this.createResponseObject(I,J.argument);if(J.success){if(!J.scope){J.success(F)}else{J.success.apply(J.scope,[F])}}}else{switch(G){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:F=this.createExceptionObject(I.tId,J.argument,(E?E:false));if(J.failure){if(!J.scope){J.failure(F)}else{J.failure.apply(J.scope,[F])}}break;default:F=this.createResponseObject(I,J.argument);if(J.failure){if(!J.scope){J.failure(F)}else{J.failure.apply(J.scope,[F])}}}}this.releaseObject(I);F=null},createResponseObject:function(E,K){var H={};var M={};try{var G=E.conn.getAllResponseHeaders();var J=G.split("\n");for(var I=0;I<J.length;I++){var F=J[I].indexOf(":");if(F!=-1){M[J[I].substring(0,F)]=J[I].substring(F+2)}}}catch(L){}H.tId=E.tId;H.status=E.conn.status;H.statusText=E.conn.statusText;H.getResponseHeader=M;H.getAllResponseHeaders=G;H.responseText=E.conn.responseText;H.responseXML=E.conn.responseXML;if(typeof K!==undefined){H.argument=K}return H},createExceptionObject:function(L,H,E){var J=0;var K="communication failure";var G=-1;var F="transaction aborted";var I={};I.tId=L;if(E){I.status=G;I.statusText=F}else{I.status=J;I.statusText=K}if(H){I.argument=H}return I},initHeader:function(E,H,G){var F=(G)?this.defaultHeaders:this.headers;if(F[E]===undefined){F[E]=H}else{F[E]=H+","+F[E]}if(G){this.hasDefaultHeaders=true}else{this.hasHeaders=true}},setHeader:function(E){if(this.hasDefaultHeaders){for(var F in this.defaultHeaders){if(this.defaultHeaders.hasOwnProperty(F)){E.conn.setRequestHeader(F,this.defaultHeaders[F])}}}if(this.hasHeaders){for(var F in this.headers){if(this.headers.hasOwnProperty(F)){E.conn.setRequestHeader(F,this.headers[F])}}this.headers={};this.hasHeaders=false}},resetDefaultHeaders:function(){delete this.defaultHeaders;this.defaultHeaders={};this.hasDefaultHeaders=false},abort:function(F,G,E){if(this.isCallInProgress(F)){F.conn.abort();window.clearInterval(this.poll[F.tId]);delete this.poll[F.tId];if(E){delete this.timeout[F.tId]}this.handleTransactionResponse(F,G,true);return true}else{return false}},isCallInProgress:function(E){if(E.conn){return E.conn.readyState!=4&&E.conn.readyState!=0}else{return false}},releaseObject:function(E){E.conn=null;E=null},activeX:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]};Ext.lib.Region=function(G,H,E,F){this.top=G;this[1]=G;this.right=H;this.bottom=E;this.left=F;this[0]=F};Ext.lib.Region.prototype={contains:function(E){return(E.left>=this.left&&E.right<=this.right&&E.top>=this.top&&E.bottom<=this.bottom)},getArea:function(){return((this.bottom-this.top)*(this.right-this.left))},intersect:function(I){var G=Math.max(this.top,I.top);var H=Math.min(this.right,I.right);var E=Math.min(this.bottom,I.bottom);var F=Math.max(this.left,I.left);if(E>=G&&H>=F){return new Ext.lib.Region(G,H,E,F)}else{return null}},union:function(I){var G=Math.min(this.top,I.top);var H=Math.max(this.right,I.right);var E=Math.max(this.bottom,I.bottom);var F=Math.min(this.left,I.left);return new Ext.lib.Region(G,H,E,F)},constrainTo:function(E){this.top=this.top.constrain(E.top,E.bottom);this.bottom=this.bottom.constrain(E.top,E.bottom);this.left=this.left.constrain(E.left,E.right);this.right=this.right.constrain(E.left,E.right);return this},adjust:function(G,F,E,H){this.top+=G;this.left+=F;this.right+=H;this.bottom+=E;return this}};Ext.lib.Region.getRegion=function(H){var J=Ext.lib.Dom.getXY(H);var G=J[1];var I=J[0]+H.offsetWidth;var E=J[1]+H.offsetHeight;var F=J[0];return new Ext.lib.Region(G,I,E,F)};Ext.lib.Point=function(E,F){if(Ext.isArray(E)){F=E[1];E=E[0]}this.x=this.right=this.left=this[0]=E;this.y=this.top=this.bottom=this[1]=F};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.lib.Anim={scroll:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.Scroll)},motion:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.Motion)},color:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.ColorAnim)},run:function(I,F,K,L,E,H,G){G=G||Ext.lib.AnimBase;if(typeof L=="string"){L=Ext.lib.Easing[L]}var J=new G(I,F,K,L);J.animateX(function(){Ext.callback(E,H)});return J}};function C(E){if(!B){B=new Ext.Element.Flyweight()}B.dom=E;return B}if(Ext.isIE){function A(){var E=Function.prototype;delete E.createSequence;delete E.defer;delete E.createDelegate;delete E.createCallback;delete E.createInterceptor;window.detachEvent("onunload",A)}window.attachEvent("onunload",A)}Ext.lib.AnimBase=function(F,E,G,H){if(F){this.init(F,E,G,H)}};Ext.lib.AnimBase.prototype={toString:function(){var E=this.getEl();var F=E.id||E.tagName;return("Anim "+F)},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(E,G,F){return this.method(this.currentFrame,G,F-G,this.totalFrames)},setAttribute:function(E,G,F){if(this.patterns.noNegatives.test(E)){G=(G>0)?G:0}Ext.fly(this.getEl(),"_anim").setStyle(E,G+F)},getAttribute:function(E){var G=this.getEl();var I=C(G).getStyle(E);if(I!=="auto"&&!this.patterns.offsetUnit.test(I)){return parseFloat(I)}var F=this.patterns.offsetAttribute.exec(E)||[];var J=!!(F[3]);var H=!!(F[2]);if(H||(C(G).getStyle("position")=="absolute"&&J)){I=G["offset"+F[0].charAt(0).toUpperCase()+F[0].substr(1)]}else{I=0}return I},getDefaultUnit:function(E){if(this.patterns.defaultUnit.test(E)){return"px"}return""},animateX:function(G,E){var F=function(){this.onComplete.removeListener(F);if(typeof G=="function"){G.call(E||this,this)}};this.onComplete.addListener(F,this);this.animate()},setRuntimeAttribute:function(F){var K;var G;var H=this.attributes;this.runtimeAttributes[F]={};var J=function(L){return(typeof L!=="undefined")};if(!J(H[F]["to"])&&!J(H[F]["by"])){return false}K=(J(H[F]["from"]))?H[F]["from"]:this.getAttribute(F);if(J(H[F]["to"])){G=H[F]["to"]}else{if(J(H[F]["by"])){if(K.constructor==Array){G=[];for(var I=0,E=K.length;I<E;++I){G[I]=K[I]+H[F]["by"][I]}}else{G=K+H[F]["by"]}}}this.runtimeAttributes[F].start=K;this.runtimeAttributes[F].end=G;this.runtimeAttributes[F].unit=(J(H[F].unit))?H[F]["unit"]:this.getDefaultUnit(F)},init:function(G,L,K,E){var F=false;var H=null;var J=0;G=Ext.getDom(G);this.attributes=L||{};this.duration=K||1;this.method=E||Ext.lib.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=Ext.lib.AnimMgr.fps;this.getEl=function(){return G};this.isAnimated=function(){return F};this.getStartTime=function(){return H};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(Ext.lib.AnimMgr.fps*this.duration):this.duration;Ext.lib.AnimMgr.registerElement(this)};this.stop=function(O){if(O){this.currentFrame=this.totalFrames;this._onTween.fire()}Ext.lib.AnimMgr.stop(this)};var N=function(){this.onStart.fire();this.runtimeAttributes={};for(var O in this.attributes){this.setRuntimeAttribute(O)}F=true;J=0;H=new Date()};var M=function(){var Q={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};Q.toString=function(){return("duration: "+Q.duration+", currentFrame: "+Q.currentFrame)};this.onTween.fire(Q);var P=this.runtimeAttributes;for(var O in P){this.setAttribute(O,this.doMethod(O,P[O].start,P[O].end),P[O].unit)}J+=1};var I=function(){var O=(new Date()-H)/1000;var P={duration:O,frames:J,fps:J/O};P.toString=function(){return("duration: "+P.duration+", frames: "+P.frames+", fps: "+P.fps)};F=false;J=0;this.onComplete.fire(P)};this._onStart=new Ext.util.Event(this);this.onStart=new Ext.util.Event(this);this.onTween=new Ext.util.Event(this);this._onTween=new Ext.util.Event(this);this.onComplete=new Ext.util.Event(this);this._onComplete=new Ext.util.Event(this);this._onStart.addListener(N);this._onTween.addListener(M);this._onComplete.addListener(I)}};Ext.lib.AnimMgr=new function(){var G=null;var F=[];var E=0;this.fps=1000;this.delay=1;this.registerElement=function(J){F[F.length]=J;E+=1;J._onStart.fire();this.start()};this.unRegister=function(K,J){K._onComplete.fire();J=J||I(K);if(J!=-1){F.splice(J,1)}E-=1;if(E<=0){this.stop()}};this.start=function(){if(G===null){G=setInterval(this.run,this.delay)}};this.stop=function(L){if(!L){clearInterval(G);for(var K=0,J=F.length;K<J;++K){if(F[0].isAnimated()){this.unRegister(F[0],0)}}F=[];G=null;E=0}else{this.unRegister(L)}};this.run=function(){for(var L=0,J=F.length;L<J;++L){var K=F[L];if(!K||!K.isAnimated()){continue}if(K.currentFrame<K.totalFrames||K.totalFrames===null){K.currentFrame+=1;if(K.useSeconds){H(K)}K._onTween.fire()}else{Ext.lib.AnimMgr.stop(K,L)}}};var I=function(L){for(var K=0,J=F.length;K<J;++K){if(F[K]==L){return K}}return -1};var H=function(K){var N=K.totalFrames;var M=K.currentFrame;var L=(K.currentFrame*K.duration*1000/K.totalFrames);var J=(new Date()-K.getStartTime());var O=0;if(J<K.duration*1000){O=Math.round((J/L-1)*K.currentFrame)}else{O=N-(M+1)}if(O>0&&isFinite(O)){if(K.currentFrame+O>=N){O=N-(M+1)}K.currentFrame+=O}}};Ext.lib.Bezier=new function(){this.getPosition=function(I,H){var J=I.length;var G=[];for(var F=0;F<J;++F){G[F]=[I[F][0],I[F][1]]}for(var E=1;E<J;++E){for(F=0;F<J-E;++F){G[F][0]=(1-H)*G[F][0]+H*G[parseInt(F+1,10)][0];G[F][1]=(1-H)*G[F][1]+H*G[parseInt(F+1,10)][1]}}return[G[0][0],G[0][1]]}};(function(){Ext.lib.ColorAnim=function(I,H,J,K){Ext.lib.ColorAnim.superclass.constructor.call(this,I,H,J,K)};Ext.extend(Ext.lib.ColorAnim,Ext.lib.AnimBase);var F=Ext.lib;var G=F.ColorAnim.superclass;var E=F.ColorAnim.prototype;E.toString=function(){var H=this.getEl();var I=H.id||H.tagName;return("ColorAnim "+I)};E.patterns.color=/color$/i;E.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;E.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;E.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;E.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;E.parseColor=function(H){if(H.length==3){return H}var I=this.patterns.hex.exec(H);if(I&&I.length==4){return[parseInt(I[1],16),parseInt(I[2],16),parseInt(I[3],16)]}I=this.patterns.rgb.exec(H);if(I&&I.length==4){return[parseInt(I[1],10),parseInt(I[2],10),parseInt(I[3],10)]}I=this.patterns.hex3.exec(H);if(I&&I.length==4){return[parseInt(I[1]+I[1],16),parseInt(I[2]+I[2],16),parseInt(I[3]+I[3],16)]}return null};E.getAttribute=function(H){var J=this.getEl();if(this.patterns.color.test(H)){var K=C(J).getStyle(H);if(this.patterns.transparent.test(K)){var I=J.parentNode;K=C(I).getStyle(H);while(I&&this.patterns.transparent.test(K)){I=I.parentNode;K=C(I).getStyle(H);if(I.tagName.toUpperCase()=="HTML"){K="#fff"}}}}else{K=G.getAttribute.call(this,H)}return K};E.doMethod=function(I,M,J){var L;if(this.patterns.color.test(I)){L=[];for(var K=0,H=M.length;K<H;++K){L[K]=G.doMethod.call(this,I,M[K],J[K])}L="rgb("+Math.floor(L[0])+","+Math.floor(L[1])+","+Math.floor(L[2])+")"}else{L=G.doMethod.call(this,I,M,J)}return L};E.setRuntimeAttribute=function(I){G.setRuntimeAttribute.call(this,I);if(this.patterns.color.test(I)){var K=this.attributes;var M=this.parseColor(this.runtimeAttributes[I].start);var J=this.parseColor(this.runtimeAttributes[I].end);if(typeof K[I]["to"]==="undefined"&&typeof K[I]["by"]!=="undefined"){J=this.parseColor(K[I].by);for(var L=0,H=M.length;L<H;++L){J[L]=M[L]+J[L]}}this.runtimeAttributes[I].start=M;this.runtimeAttributes[I].end=J}}})();Ext.lib.Easing={easeNone:function(F,E,H,G){return H*F/G+E},easeIn:function(F,E,H,G){return H*(F/=G)*F+E},easeOut:function(F,E,H,G){return -H*(F/=G)*(F-2)+E},easeBoth:function(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E},easeInStrong:function(F,E,H,G){return H*(F/=G)*F*F*F+E},easeOutStrong:function(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E},easeBothStrong:function(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E},elasticIn:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}return -(F*Math.pow(2,10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I))+E},elasticOut:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}return F*Math.pow(2,-10*G)*Math.sin((G*J-H)*(2*Math.PI)/I)+K+E},elasticBoth:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J/2)==2){return E+K}if(!I){I=J*(0.3*1.5)}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}if(G<1){return -0.5*(F*Math.pow(2,10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I))+E}return F*Math.pow(2,-10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I)*0.5+K+E},backIn:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}return I*(F/=H)*F*((G+1)*F-G)+E},backOut:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}return I*((F=F/H-1)*F*((G+1)*F+G)+1)+E},backBoth:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}if((F/=H/2)<1){return I/2*(F*F*(((G*=(1.525))+1)*F-G))+E}return I/2*((F-=2)*F*(((G*=(1.525))+1)*F+G)+2)+E},bounceIn:function(F,E,H,G){return H-Ext.lib.Easing.bounceOut(G-F,0,H,G)+E},bounceOut:function(F,E,H,G){if((F/=G)<(1/2.75)){return H*(7.5625*F*F)+E}else{if(F<(2/2.75)){return H*(7.5625*(F-=(1.5/2.75))*F+0.75)+E}else{if(F<(2.5/2.75)){return H*(7.5625*(F-=(2.25/2.75))*F+0.9375)+E}}}return H*(7.5625*(F-=(2.625/2.75))*F+0.984375)+E},bounceBoth:function(F,E,H,G){if(F<G/2){return Ext.lib.Easing.bounceIn(F*2,0,H,G)*0.5+E}return Ext.lib.Easing.bounceOut(F*2-G,0,H,G)*0.5+H*0.5+E}};(function(){Ext.lib.Motion=function(K,J,L,M){if(K){Ext.lib.Motion.superclass.constructor.call(this,K,J,L,M)}};Ext.extend(Ext.lib.Motion,Ext.lib.ColorAnim);var H=Ext.lib;var I=H.Motion.superclass;var F=H.Motion.prototype;F.toString=function(){var J=this.getEl();var K=J.id||J.tagName;return("Motion "+K)};F.patterns.points=/^points$/i;F.setAttribute=function(J,L,K){if(this.patterns.points.test(J)){K=K||"px";I.setAttribute.call(this,"left",L[0],K);I.setAttribute.call(this,"top",L[1],K)}else{I.setAttribute.call(this,J,L,K)}};F.getAttribute=function(J){if(this.patterns.points.test(J)){var K=[I.getAttribute.call(this,"left"),I.getAttribute.call(this,"top")]}else{K=I.getAttribute.call(this,J)}return K};F.doMethod=function(J,N,K){var M=null;if(this.patterns.points.test(J)){var L=this.method(this.currentFrame,0,100,this.totalFrames)/100;M=H.Bezier.getPosition(this.runtimeAttributes[J],L)}else{M=I.doMethod.call(this,J,N,K)}return M};F.setRuntimeAttribute=function(S){if(this.patterns.points.test(S)){var K=this.getEl();var M=this.attributes;var J;var O=M["points"]["control"]||[];var L;var P,R;if(O.length>0&&!Ext.isArray(O[0])){O=[O]}else{var N=[];for(P=0,R=O.length;P<R;++P){N[P]=O[P]}O=N}Ext.fly(K,"_anim").position();if(G(M["points"]["from"])){Ext.lib.Dom.setXY(K,M["points"]["from"])}else{Ext.lib.Dom.setXY(K,Ext.lib.Dom.getXY(K))}J=this.getAttribute("points");if(G(M["points"]["to"])){L=E.call(this,M["points"]["to"],J);var Q=Ext.lib.Dom.getXY(this.getEl());for(P=0,R=O.length;P<R;++P){O[P]=E.call(this,O[P],J)}}else{if(G(M["points"]["by"])){L=[J[0]+M["points"]["by"][0],J[1]+M["points"]["by"][1]];for(P=0,R=O.length;P<R;++P){O[P]=[J[0]+O[P][0],J[1]+O[P][1]]}}}this.runtimeAttributes[S]=[J];if(O.length>0){this.runtimeAttributes[S]=this.runtimeAttributes[S].concat(O)}this.runtimeAttributes[S][this.runtimeAttributes[S].length]=L}else{I.setRuntimeAttribute.call(this,S)}};var E=function(J,L){var K=Ext.lib.Dom.getXY(this.getEl());J=[J[0]-K[0]+L[0],J[1]-K[1]+L[1]];return J};var G=function(J){return(typeof J!=="undefined")}})();(function(){Ext.lib.Scroll=function(I,H,J,K){if(I){Ext.lib.Scroll.superclass.constructor.call(this,I,H,J,K)}};Ext.extend(Ext.lib.Scroll,Ext.lib.ColorAnim);var F=Ext.lib;var G=F.Scroll.superclass;var E=F.Scroll.prototype;E.toString=function(){var H=this.getEl();var I=H.id||H.tagName;return("Scroll "+I)};E.doMethod=function(H,K,I){var J=null;if(H=="scroll"){J=[this.method(this.currentFrame,K[0],I[0]-K[0],this.totalFrames),this.method(this.currentFrame,K[1],I[1]-K[1],this.totalFrames)]}else{J=G.doMethod.call(this,H,K,I)}return J};E.getAttribute=function(H){var J=null;var I=this.getEl();if(H=="scroll"){J=[I.scrollLeft,I.scrollTop]}else{J=G.getAttribute.call(this,H)}return J};E.setAttribute=function(H,K,J){var I=this.getEl();if(H=="scroll"){I.scrollLeft=K[0];I.scrollTop=K[1]}else{G.setAttribute.call(this,H,K,J)}}})()})();
webgui/resources/custom/images/extjs-powered.gif

2.24 KiB

webgui/resources/custom/images/smarty_icon.gif

1.15 KiB

/*
* Ext JS Library 2.2
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
body {
font-family:helvetica,tahoma,verdana,sans-serif;
padding:20px;
padding-top:32px;
font-size:13px;
background-color:#fff !important;
}
p {
margin-bottom:15px;
}
h1 {
font-size:large;
margin-bottom:20px;
}
h2 {
font-size:14px;
color:#333;
font-weight:bold;
margin:10px 0;
}
.example-info{
width:150px;
border:1px solid #c3daf9;
border-top:1px solid #DCEAFB;
border-left:1px solid #DCEAFB;
background:#ecf5fe url( info-bg.gif ) repeat-x;
font-size:10px;
padding:8px;
}
pre.code{
background: #F8F8F8;
border: 1px solid #e8e8e8;
padding:10px;
margin:10px;
margin-left:0px;
border-left:5px solid #e8e8e8;
font-size: 12px !important;
line-height:14px !important;
}
.msg .x-box-mc {
font-size:14px;
}
#msg-div {
position:absolute;
left:35%;
top:10px;
width:250px;
z-index:20000;
}
.x-grid3-row-body p {
margin:5px 5px 10px 5px !important;
}
/*
* Ext JS Library 2.2
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}
img,body,html{border:0;}
address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
ol,ul{list-style:none;}
caption,th{text-align:left;}
h1,h2,h3,h4,h5,h6{font-size:100%;}
q:before,q:after{content:'';}
.ext-el-mask{z-index:20000;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:100%;height:100%;zoom:1;}
.ext-el-mask-msg{z-index:20001;position:absolute;top:0;left:0;border:1px solid #6593cf;background:#c3daf9 url(../images/default/box/tb-blue.gif) repeat-x 0 -16px;padding:2px;}
.ext-el-mask-msg div{padding:5px 10px 5px 10px;background:#eee;border:1px solid #a3bad9;color:#222;font:normal 11px tahoma,arial,helvetica,sans-serif;cursor:wait;}
.ext-shim{position:absolute;visibility:hidden;left:0;top:0;overflow:hidden;}
.ext-ie .ext-shim{filter:alpha(opacity=0);}
.ext-ie6 .ext-shim{margin-left:5px;margin-top:3px;}
.x-mask-loading div{padding:5px 10px 5px 25px;background:#fbfbfb url( '../images/default/grid/loading.gif' ) no-repeat 5px 5px;line-height:16px;}
.x-hidden,.x-hide-offsets{position:absolute;left:-10000px;top:-10000px;visibility:hidden;}
.x-hide-display{display:none!important;}
.x-hide-visibility{visibility:hidden!important;}
.x-masked{overflow:hidden!important;}
.x-masked select,.x-masked object,.x-masked embed{visibility:hidden;}
.x-layer{visibility:hidden;}
.x-unselectable,.x-unselectable *{-moz-user-select:none;-khtml-user-select:none;}
.x-repaint{zoom:1;background-color:transparent;-moz-outline:none;}
.x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
.x-item-disabled *{color:gray!important;cursor:default!important;}
.x-splitbar-proxy{position:absolute;visibility:hidden;z-index:20001;background:#aaa;zoom:1;line-height:1px;font-size:1px;overflow:hidden;}
.x-splitbar-h,.x-splitbar-proxy-h{cursor:e-resize;cursor:col-resize;}
.x-splitbar-v,.x-splitbar-proxy-v{cursor:s-resize;cursor:row-resize;}
.x-color-palette{width:150px;height:92px;cursor:pointer;}
.x-color-palette a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer;}
.x-color-palette a:hover,.x-color-palette a.x-color-palette-sel{border:1px solid #8BB8F3;background:#deecfd;}
.x-color-palette em{display:block;border:1px solid #ACA899;}
.x-color-palette em span{cursor:pointer;display:block;height:10px;line-height:10px;width:10px;}
.x-ie-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;background:#777;zoom:1;}
.x-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;}
.x-shadow *{overflow:hidden;}
.x-shadow *{padding:0;border:0;margin:0;clear:none;zoom:1;}
.x-shadow .xstc,.x-shadow .xsbc{height:6px;float:left;}
.x-shadow .xstl,.x-shadow .xstr,.x-shadow .xsbl,.x-shadow .xsbr{width:6px;height:6px;float:left;}
.x-shadow .xsc{width:100%;}
.x-shadow .xsml,.x-shadow .xsmr{width:6px;float:left;height:100%;}
.x-shadow .xsmc{float:left;height:100%;background:transparent url( ../images/default/shadow-c.png );}
.x-shadow .xst,.x-shadow .xsb{height:6px;overflow:hidden;width:100%;}
.x-shadow .xsml{background:transparent url( ../images/default/shadow-lr.png ) repeat-y 0 0;}
.x-shadow .xsmr{background:transparent url( ../images/default/shadow-lr.png ) repeat-y -6px 0;}
.x-shadow .xstl{background:transparent url( ../images/default/shadow.png ) no-repeat 0 0;}
.x-shadow .xstc{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -30px;}
.x-shadow .xstr{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -18px;}
.x-shadow .xsbl{background:transparent url( ../images/default/shadow.png ) no-repeat 0 -12px;}
.x-shadow .xsbc{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -36px;}
.x-shadow .xsbr{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -6px;}
.loading-indicator{font-size:11px;background-image:url(../images/default/grid/loading.gif);background-repeat:no-repeat;background-position:left;padding-left:20px;line-height:16px;margin:3px;}
.x-text-resize{position:absolute;left:-1000px;top:-1000px;visibility:hidden;zoom:1;}
.x-drag-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background-image:url(../images/default/s.gif);z-index:20000;}
.x-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
.x-spotlight{z-index:8999;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:0;height:0;zoom:1;}
.x-tab-panel{overflow:hidden;}
.x-tab-panel-header,.x-tab-panel-footer{background:#deecfd;border:1px solid #8db2e3;overflow:hidden;zoom:1;}
.x-tab-panel-header{border:1px solid #8db2e3;padding-bottom:2px;}
.x-tab-panel-footer{border:1px solid #8db2e3;padding-top:2px;}
.x-tab-strip-wrap{width:100%;overflow:hidden;position:relative;zoom:1;}
ul.x-tab-strip{display:block;width:5000px;zoom:1;}
ul.x-tab-strip-top{padding-top:1px;background:url(../images/default/tabs/tab-strip-bg.gif) #cedff5 repeat-x bottom;border-bottom:1px solid #8db2e3;}
ul.x-tab-strip-bottom{padding-bottom:1px;background:url(../images/default/tabs/tab-strip-btm-bg.gif) #cedff5 repeat-x top;border-top:1px solid #8db2e3;border-bottom:0 none;}
.x-tab-panel-header-plain .x-tab-strip-top{background:transparent!important;padding-top:0!important;}
.x-tab-panel-header-plain{background:transparent!important;border-width:0!important;padding-bottom:0!important;}
.x-tab-panel-header-plain .x-tab-strip-spacer,.x-tab-panel-footer-plain .x-tab-strip-spacer{border:1px solid #8db2e3;height:2px;background:#deecfd;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{font:normal 11px tahoma,arial,helvetica;color:#416aa3;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-over span.x-tab-strip-text{color:#15428b;}
.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;color:#15428b;font-weight:bold;}
.x-tab-strip-disabled .x-tabs-text{cursor:default;color:#aaa;}
.x-tab-panel-body{overflow:hidden;}
.x-tab-panel-bwrap{overflow:hidden;}
.ext-ie .x-tab-strip .x-tab-right{position:relative;}
.x-tab-strip-top .x-tab-strip-active .x-tab-right{margin-bottom:-1px;}
.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-bottom:5px;}
.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{margin-top:-1px;}
.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-top:5px;}
.x-tab-strip-top .x-tab-right{background:transparent url(../images/default/tabs/tabs-sprite.gif) no-repeat 0 -51px;padding-left:10px;}
.x-tab-strip-top .x-tab-left{background:transparent url(../images/default/tabs/tabs-sprite.gif) no-repeat right -351px;padding-right:10px;}
.x-tab-strip-top .x-tab-strip-inner{background:transparent url(../images/default/tabs/tabs-sprite.gif) repeat-x 0 -201px;}
.x-tab-strip-top .x-tab-strip-over .x-tab-right{background-position:0 -101px;}
.x-tab-strip-top .x-tab-strip-over .x-tab-left{background-position:right -401px;}
.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner{background-position:0 -251px;}
.x-tab-strip-top .x-tab-strip-active .x-tab-right{background-position:0 0;}
.x-tab-strip-top .x-tab-strip-active .x-tab-left{background-position:right -301px;}
.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner{background-position:0 -151px;}
.x-tab-strip-bottom .x-tab-right{background:url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;}
.x-tab-strip-bottom .x-tab-left{background:url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left;}
.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background:url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left;}
.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background:url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right;}
.x-tab-strip-bottom .x-tab-left{padding:0 10px;}
.x-tab-strip-bottom .x-tab-right{padding:0;}
.x-tab-strip .x-tab-strip-close{display:none;}
.x-tab-strip-closable{position:relative;}
.x-tab-strip-closable .x-tab-left{padding-right:19px;}
.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{background-image:url(../images/default/tabs/tab-close.gif);opacity:.6;-moz-opacity:.6;background-repeat:no-repeat;display:block;width:11px;height:11px;position:absolute;top:3px;right:3px;cursor:pointer;z-index:2;}
.x-tab-strip .x-tab-strip-active a.x-tab-strip-close{opacity:.8;-moz-opacity:.8;}
.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{background-image:url(../images/default/tabs/tab-close.gif);opacity:1;-moz-opacity:1;}
.x-tab-panel-body{border:1px solid #8db2e3;background:#fff;}
.x-tab-panel-body-top{border-top:0 none;}
.x-tab-panel-body-bottom{border-bottom:0 none;}
.x-tab-scroller-left{background:transparent url(../images/default/tabs/scroll-left.gif) no-repeat -18px 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;left:0;top:0;z-index:10;cursor:pointer;}
.x-tab-scroller-left-over{background-position:0 0;}
.x-tab-scroller-left-disabled{background-position:-18px 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}
.x-tab-scroller-right{background:transparent url(../images/default/tabs/scroll-right.gif) no-repeat 0 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;right:0;top:0;z-index:10;cursor:pointer;}
.x-tab-scroller-right-over{background-position:-18px 0;}
.x-tab-scroller-right-disabled{background-position:0 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}
.x-tab-scrolling .x-tab-strip-wrap{margin-left:18px;margin-right:18px;}
.x-tab-scrolling{position:relative;}
.x-tab-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
.x-tab-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
.x-form-field{margin:0;font:normal 12px tahoma,arial,helvetica,sans-serif;}
.x-form-text,textarea.x-form-field{padding:1px 3px;background:#fff url(../images/default/form/text-bg.gif) repeat-x 0 0;border:1px solid #B5B8C8;}
textarea.x-form-field{padding:2px 3px;}
.x-form-text{height:22px;line-height:18px;vertical-align:middle;}
.ext-ie .x-form-text{margin:-1px 0;height:22px;line-height:18px;}
.ext-ie textarea.x-form-field{margin:-1px 0;}
.ext-strict .x-form-text{height:18px;}
.ext-safari .x-form-text{height:20px;padding:0 3px;}
.ext-safari.ext-mac textarea.x-form-field{margin-bottom:-2px;}
.ext-gecko .x-form-text{padding-top:2px;padding-bottom:0;}
textarea{resize:none;}
.x-form-select-one{height:20px;line-height:18px;vertical-align:middle;background-color:#fff;border:1px solid #B5B8C8;}
.x-form-check-group,.x-form-radio-group{margin-bottom:0;}
.x-form-check-group .x-form-invalid .x-panel-body,.x-form-radio-group .x-form-invalid .x-panel-body{background-color:transparent;}
.x-form-check-wrap,.x-form-radio-wrap{padding:3px 0 0 0;line-height:18px;}
.x-form-check-group .x-form-check-wrap,.x-form-radio-group .x-form-radio-wrap{height:18px;}
.ext-ie .x-form-check-group .x-form-check-wrap,.ext-ie .x-form-radio-group .x-form-radio-wrap{height:21px;}
.ext-ie .x-form-check-wrap input,.ext-ie .x-form-radio-wrap input{width:15px;height:15px;}
.x-form-check,.x-form-radio{height:13px;width:13px;vertical-align:bottom;}
.x-form-radio{margin-bottom:3px;}
.x-form-check,.ext-ie .x-form-radio{margin-bottom:2px;}
.x-form-check-wrap-inner,.x-form-radio-wrap-inner{display:inline;padding:3px 0 0 0;}
.x-form-check{background:url('../images/default/form/checkbox.gif') no-repeat 0 0;}
.x-form-radio{background:url('../images/default/form/radio.gif') no-repeat 0 0;}
.x-form-check-focus .x-form-check,.x-form-check-over .x-form-check,.x-form-check-focus .x-form-radio,.x-form-check-over .x-form-radio{background-position:-13px 0;}
.x-form-check-down .x-form-check,.x-form-check-down .x-form-radio{background-position:-26px 0;}
.x-form-check-checked .x-form-check-focus .x-form-check,.x-form-check-checked .x-form-check-over .x-form-check{background-position:-13px -13px;}
.x-form-check-checked .x-form-check-down .x-form-check{background-position:-26px -13px;}
.x-form-check-checked .x-form-check,.x-form-check-checked .x-form-radio{background-position:0 -13px;}
.x-form-check-group-label{border-bottom:1px solid #99BBE8;color:#15428B;margin-bottom:5px;padding-left:3px!important;float:none!important;}
.x-form-field-wrap{position:relative;zoom:1;white-space:nowrap;}
.x-form-field-wrap .x-form-trigger{width:17px;height:21px;border:0;background:transparent url(../images/default/form/trigger.gif) no-repeat 0 0;cursor:pointer;border-bottom:1px solid #B5B8C8;position:absolute;top:0;}
.ext-safari .x-form-field-wrap .x-form-trigger{height:21px;}
.x-form-field-wrap .x-form-date-trigger{background-image:url(../images/default/form/date-trigger.gif);cursor:pointer;}
.x-form-field-wrap .x-form-clear-trigger{background-image:url(../images/default/form/clear-trigger.gif);cursor:pointer;}
.x-form-field-wrap .x-form-search-trigger{background-image:url(../images/default/form/search-trigger.gif);cursor:pointer;}
.ext-safari .x-form-field-wrap .x-form-trigger{right:0;}
.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{position:static;top:auto;vertical-align:top;}
.x-form-field-wrap .x-form-trigger-over{background-position:-17px 0;}
.x-form-field-wrap .x-form-trigger-click{background-position:-34px 0;}
.x-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;}
.x-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;}
.x-trigger-wrap-focus .x-form-trigger-click{background-position:-85px 0;}
.x-trigger-wrap-focus .x-form-trigger{border-bottom:1px solid #7eadd9;}
.x-item-disabled .x-form-trigger-over{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}
.x-item-disabled .x-form-trigger-click{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}
.x-form-focus,textarea.x-form-focus{border:1px solid #7eadd9;}
.x-form-invalid,textarea.x-form-invalid{background:#fff url(../images/default/grid/invalid_line.gif) repeat-x bottom;border:1px solid #dd7870;}
.ext-safari .x-form-invalid{background-color:#fee;border:1px solid #ff7870;}
.x-editor{visibility:hidden;padding:0;margin:0;}
.x-editor .x-form-check-wrap,.x-editor .x-form-radio-wrap{background:#fff;padding:3px;}
.x-editor .x-form-checkbox{height:13px;}
.x-form-grow-sizer{font:normal 12px tahoma,arial,helvetica,sans-serif;left:-10000px;padding:8px 3px;position:absolute;visibility:hidden;top:-10000px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;zoom:1;}
.x-form-grow-sizer p{margin:0!important;border:0 none!important;padding:0!important;}
.x-form-item{font:normal 12px tahoma,arial,helvetica,sans-serif;display:block;margin-bottom:4px;zoom:1;}
.x-form-item label{display:block;float:left;width:100px;padding:3px;padding-left:0;clear:left;z-index:2;position:relative;}
.x-form-element{padding-left:105px;position:relative;}
.x-form-invalid-msg{color:#e00;padding:2px;padding-left:18px;font:normal 11px tahoma,arial,helvetica,sans-serif;background:transparent url(../images/default/shared/warning.gif) no-repeat 0 2px;line-height:16px;width:200px;}
.x-form-label-right label{text-align:right;}
.x-form-label-left label{text-align:left;}
.x-form-label-top .x-form-item label{width:auto;float:none;clear:none;display:inline;margin-bottom:4px;position:static;}
.x-form-label-top .x-form-element{padding-left:0;padding-top:4px;}
.x-form-label-top .x-form-item{padding-bottom:4px;}
.x-form-empty-field{color:gray;}
.x-small-editor .x-form-field{font:normal 11px arial,tahoma,helvetica,sans-serif;}
.x-small-editor .x-form-text{height:20px;line-height:16px;vertical-align:middle;}
.ext-ie .x-small-editor .x-form-text{margin-top:-1px!important;margin-bottom:-1px!important;height:20px!important;line-height:16px!important;}
.ext-strict .x-small-editor .x-form-text{height:16px!important;}
.ext-safari .x-small-editor .x-form-field{font:normal 12px arial,tahoma,helvetica,sans-serif;}
.ext-ie .x-small-editor .x-form-text{height:20px;line-height:16px;}
.ext-border-box .x-small-editor .x-form-text{height:20px;}
.x-small-editor .x-form-select-one{height:20px;line-height:16px;vertical-align:middle;}
.x-small-editor .x-form-num-field{text-align:right;}
.x-small-editor .x-form-field-wrap .x-form-trigger{height:19px;}
.x-form-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
.x-form-clear-left{clear:left;height:0;overflow:hidden;line-height:0;font-size:0;}
.x-form-cb-label{width:'auto'!important;float:none!important;clear:none!important;display:inline!important;margin-left:4px;}
.x-form-column{float:left;padding:0;margin:0;width:48%;overflow:hidden;zoom:1;}
.x-form .x-form-btns-ct .x-btn{float:right;clear:none;}
.x-form .x-form-btns-ct .x-form-btns td{border:0;padding:0;}
.x-form .x-form-btns-ct .x-form-btns-right table{float:right;clear:none;}
.x-form .x-form-btns-ct .x-form-btns-left table{float:left;clear:none;}
.x-form .x-form-btns-ct .x-form-btns-center{text-align:center;}
.x-form .x-form-btns-ct .x-form-btns-center table{margin:0 auto;}
.x-form .x-form-btns-ct table td.x-form-btn-td{padding:3px;}
.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}
.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}
.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}
.x-form .x-form-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}
.x-form .x-form-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}
.x-form .x-form-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
.x-form-invalid-icon{width:16px;height:18px;visibility:hidden;position:absolute;left:0;top:0;display:block;background:transparent url(../images/default/form/exclamation.gif) no-repeat 0 2px;}
.x-fieldset{border:1px solid #B5B8C8;padding:10px;margin-bottom:10px;display:block;}
.x-fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}
.ext-ie .x-fieldset legend{margin-bottom:10px;}
.ext-ie .x-fieldset{padding-top:0;padding-bottom:10px;}
.x-fieldset legend .x-tool-toggle{margin-right:3px;margin-left:0;float:left!important;}
.x-fieldset legend input{margin-right:3px;float:left!important;height:13px;width:13px;}
fieldset.x-panel-collapsed{padding-bottom:0!important;border-width:1px 0 0 0!important;}
fieldset.x-panel-collapsed .x-fieldset-bwrap{visibility:hidden;position:absolute;left:-1000px;top:-1000px;}
.ext-ie .x-fieldset-bwrap{zoom:1;}
.ext-ie td .x-form-text{position:relative;top:-1px;}
.x-fieldset-noborder{border:0 none transparent;}
.x-fieldset-noborder legend{margin-left:-3px;}
.ext-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px;}
.ext-ie .x-fieldset-noborder legend span{position:absolute;left:-5px;}
.ext-gecko .x-window-body .x-form-item{-moz-outline:none;overflow:auto;}
.ext-gecko .x-form-item{-moz-outline:none;}
.x-hide-label label.x-form-item-label{display:none;}
.x-hide-label .x-form-element{padding-left:0!important;}
.x-fieldset{overflow:hidden;}
.x-fieldset-bwrap{overflow:hidden;zoom:1;}
.x-fieldset-body{overflow:hidden;}
.x-btn{font:normal 11px tahoma,verdana,helvetica;cursor:pointer;white-space:nowrap;}
.x-btn button{border:0 none;background:transparent;font:normal 11px tahoma,verdana,helvetica;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;}
* html .ext-ie .x-btn button{width:1px;}
.ext-gecko .x-btn button{padding-left:0;padding-right:0;}
.ext-ie .x-btn button{padding-top:2px;}
.x-btn-icon .x-btn-center .x-btn-text{background-position:center;background-repeat:no-repeat;height:16px;width:16px;cursor:pointer;white-space:nowrap;padding:0;}
.x-btn-icon .x-btn-center{padding:1px;}
.x-btn em{font-style:normal;font-weight:normal;}
.x-btn-text-icon .x-btn-center .x-btn-text{background-position:0 2px;background-repeat:no-repeat;padding-left:18px;padding-top:3px;padding-bottom:2px;padding-right:0;}
.ext-gecko3 .x-btn-text-icon .x-btn-center .x-btn-text{padding-top:2px;}
.x-btn-left,.x-btn-right{font-size:1px;line-height:1px;}
.x-btn-left{width:3px;height:21px;background:url(../images/default/button/btn-sprite.gif) no-repeat 0 0;}
.x-btn-right{width:3px;height:21px;background:url(../images/default/button/btn-sprite.gif) no-repeat 0 -21px;}
.x-btn-left i,.x-btn-right i{display:block;width:3px;overflow:hidden;font-size:1px;line-height:1px;}
.x-btn-center{background:url(../images/default/button/btn-sprite.gif) repeat-x 0 -42px;vertical-align:middle;text-align:center;padding:0 5px;cursor:pointer;white-space:nowrap;}
.x-btn-over .x-btn-left{background-position:0 -63px;}
.x-btn-over .x-btn-right{background-position:0 -84px;}
.x-btn-over .x-btn-center{background-position:0 -105px;}
.x-btn-click .x-btn-center,.x-btn-menu-active .x-btn-center{background-position:0 -126px;}
.x-btn-disabled *{color:gray!important;cursor:default!important;}
.x-btn-menu-text-wrap .x-btn-center{padding:0 3px;}
.ext-gecko .x-btn-menu-text-wrap .x-btn-center{padding:0 1px;}
.x-btn-menu-arrow-wrap .x-btn-center{padding:0;}
.x-btn-menu-arrow-wrap .x-btn-center button{width:12px!important;height:21px;padding:0!important;display:block;background:transparent url(../images/default/button/btn-arrow.gif) no-repeat left 3px;}
.x-btn-with-menu .x-btn-center{padding-right:2px!important;}
.x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 0;padding-right:10px;}
.x-btn-text-icon .x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 3px;padding-right:10px;}
.x-btn-pressed .x-btn-left{background:url(../images/default/button/btn-sprite.gif) no-repeat 0 -63px;}
.x-btn-pressed .x-btn-right{background:url(../images/default/button/btn-sprite.gif) no-repeat 0 -84px;}
.x-btn-pressed .x-btn-center{background:url(../images/default/button/btn-sprite.gif) repeat-x 0 -126px;}
.x-toolbar{border-color:#a9bfd3;border-style:solid;border-width:0 0 1px 0;display:block;padding:2px;background:#d0def0 url(../images/default/toolbar/bg.gif) repeat-x top left;position:relative;zoom:1;}
.x-toolbar .x-item-disabled .x-btn-icon{opacity:.35;-moz-opacity:.35;filter:alpha(opacity=35);}
.x-toolbar td{vertical-align:middle;}
.mso .x-toolbar,.x-grid-mso .x-toolbar{border:0 none;background:url(../images/default/grid/mso-hd.gif);}
.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 11px tahoma,arial,helvetica,sans-serif;}
.x-toolbar .x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
.x-toolbar .x-item-disabled *{color:gray;cursor:default;}
.x-toolbar .x-btn-left{background:none;}
.x-toolbar .x-btn-right{background:none;}
.x-toolbar .x-btn-center{background:none;padding:0;}
.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:2px;}
.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:0;}
.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{padding:0 2px;}
.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}
.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}
.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button{background-position:0 -47px;}
.x-toolbar .x-btn-over .x-btn-left{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0;}
.x-toolbar .x-btn-over .x-btn-right{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px;}
.x-toolbar .x-btn-over .x-btn-center{background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px;}
.x-toolbar .x-btn-click .x-btn-left,.x-toolbar .x-btn-pressed .x-btn-left,.x-toolbar .x-btn-menu-active .x-btn-left{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px;}
.x-toolbar .x-btn-click .x-btn-right,.x-toolbar .x-btn-pressed .x-btn-right,.x-toolbar .x-btn-menu-active .x-btn-right{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px;}
.x-toolbar .x-btn-click .x-btn-center,.x-toolbar .x-btn-pressed .x-btn-center,.x-toolbar .x-btn-menu-active .x-btn-center{background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px;}
.x-toolbar .x-btn-with-menu .x-btn-center em{padding-right:8px;}
.x-toolbar .ytb-text{padding:2px;}
.x-toolbar .ytb-sep{background-image:url(../images/default/grid/grid-blue-split.gif);background-position:center;background-repeat:no-repeat;display:block;font-size:1px;height:16px;width:4px;overflow:hidden;cursor:default;margin:0 2px 0;border:0;}
.x-toolbar .ytb-spacer{width:2px;}
.x-tbar-page-number{width:24px;height:14px;}
.x-tbar-page-first{background-image:url(../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/loading.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{position:absolute;top:5px;right:8px;color:#444;}
.x-statusbar .x-status-text{height:21px;line-height:21px;padding:0 4px;cursor:default;}
.x-statusbar .x-status-busy{padding-left:25px;background:transparent url(../images/default/grid/loading.gif) no-repeat 3px 3px;}
.x-statusbar .x-status-text-panel{border-top:1px solid #99BBE8;border-right:1px solid #fff;border-bottom:1px solid #fff;border-left:1px solid #99BBE8;padding:2px 8px 2px 5px;}
.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;background:white;filter:alpha(opacity=0);opacity:0;zoom:1;}
.x-resizable-handle-east{width:6px;cursor:e-resize;right:0;top:0;height:100%;}
.ext-ie .x-resizable-handle-east{margin-right:-1px;}
.x-resizable-handle-south{width:100%;cursor:s-resize;left:0;bottom:0;height:6px;}
.ext-ie .x-resizable-handle-south{margin-bottom:-1px;}
.x-resizable-handle-west{width:6px;cursor:w-resize;left:0;top:0;height:100%;}
.x-resizable-handle-north{width:100%;cursor:n-resize;left:0;top:0;height:6px;}
.x-resizable-handle-southeast{width:6px;cursor:se-resize;right:0;bottom:0;height:6px;z-index:101;}
.x-resizable-handle-northwest{width:6px;cursor:nw-resize;left:0;top:0;height:6px;z-index:101;}
.x-resizable-handle-northeast{width:6px;cursor:ne-resize;right:0;top:0;height:6px;z-index:101;}
.x-resizable-handle-southwest{width:6px;cursor:sw-resize;left:0;bottom:0;height:6px;z-index:101;}
.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1;}
.x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east{background:url(../images/default/sizer/e-handle.gif);background-position:left;}
.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west{background:url(../images/default/sizer/e-handle.gif);background-position:left;}
.x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south{background:url(../images/default/sizer/s-handle.gif);background-position:top;}
.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north{background:url(../images/default/sizer/s-handle.gif);background-position:top;}
.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background:url(../images/default/sizer/se-handle.gif);background-position:top left;}
.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background:url(../images/default/sizer/nw-handle.gif);background-position:bottom right;}
.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background:url(../images/default/sizer/ne-handle.gif);background-position:bottom left;}
.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background:url(../images/default/sizer/sw-handle.gif);background-position:top right;}
.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;display:none;left:0;top:0;z-index:50000;}
.x-resizable-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background:white;z-index:200000;-moz-opacity:0;opacity:0;filter:alpha(opacity=0);}
.x-grid3{position:relative;overflow:hidden;background-color:#fff;}
.x-grid-panel .x-panel-body{overflow:hidden!important;}
.x-grid-panel .x-panel-mc .x-panel-body{border:1px solid #99bbe8;}
.x-grid3 table{table-layout:fixed;}
.x-grid3-viewport{overflow:hidden;}
.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td{font:normal 11px arial,tahoma,helvetica,sans-serif;-moz-outline:none;-moz-user-focus:normal;}
.x-grid3-row td,.x-grid3-summary-row td{line-height:13px;vertical-align:top;padding-left:1px;padding-right:1px;-moz-user-select:none;}
.x-grid3-hd-row td{line-height:15px;vertical-align:middle;border-left:1px solid #eee;border-right:1px solid #d0d0d0;}
.x-grid3-hd-row .x-grid3-marker-hd{padding:3px;}
.x-grid3-row .x-grid3-marker{padding:3px;}
.x-grid3-cell-inner,.x-grid3-hd-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:3px 3px 3px 5px;white-space:nowrap;}
.x-grid3-hd-inner{position:relative;cursor:inherit;padding:4px 3px 4px 5px;}
.x-grid3-row-body{white-space:normal;}
.x-grid3-body-cell{-moz-outline:0 none;outline:0 none;}
.ext-ie .x-grid3-cell-inner,.ext-ie .x-grid3-hd-inner{width:100%;}
.ext-strict .x-grid3-cell-inner,.ext-strict .x-grid3-hd-inner{width:auto;}
.x-grid-row-loading{background:#fff url(../images/default/shared/loading-balls.gif) no-repeat center center;}
.x-grid-page{overflow:hidden;}
.x-grid3-row{cursor:default;border:1px solid #ededed;border-top-color:#fff;width:100%;}
.x-grid3-row-alt{background-color:#fafafa;}
.x-grid3-row-over{border:1px solid #ddd;background:#efefef url(../images/default/grid/row-over.gif) repeat-x left top;}
.x-grid3-resize-proxy{width:1px;left:0;background-color:#777;cursor:e-resize;cursor:col-resize;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}
.x-grid3-resize-marker{width:1px;left:0;background-color:#777;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}
.x-grid3-focus{position:absolute;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;}
.x-grid3-header{background:#f9f9f9 url(../images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;cursor:default;zoom:1;padding:1px 0 0 0;}
.x-grid3-header-pop{border-left:1px solid #d0d0d0;float:right;clear:none;}
.x-grid3-header-pop-inner{border-left:1px solid #eee;width:14px;height:19px;background:transparent url(../images/default/grid/hd-pop.gif) no-repeat center center;}
.ext-ie .x-grid3-header-pop-inner{width:15px;}
.ext-strict .x-grid3-header-pop-inner{width:14px;}
.x-grid3-header-inner{overflow:hidden;zoom:1;float:left;}
.x-grid3-header-offset{padding-left:1px;width:10000px;}
td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open{border-left:1px solid #aaccf6;border-right:1px solid #aaccf6;}
td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner{background:#ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;}
.x-grid3-sort-icon{background-repeat:no-repeat;display:none;height:4px;width:13px;margin-left:3px;vertical-align:middle;}
.sort-asc .x-grid3-sort-icon{background-image:url(../images/default/grid/sort_asc.gif);display:inline;}
.sort-desc .x-grid3-sort-icon{background-image:url(../images/default/grid/sort_desc.gif);display:inline;}
.ext-strict .ext-ie .x-grid3-header-inner{position:relative;}
.ext-strict .ext-ie6 .x-grid3-hd{position:relative;}
.ext-strict .ext-ie6 .x-grid3-hd-inner{position:static;}
.x-grid3-body{zoom:1;}
.x-grid3-scroller{overflow:auto;zoom:1;position:relative;}
.x-grid3-cell-text,.x-grid3-hd-text{display:block;padding:3px 5px 3px 5px;-moz-user-select:none;-khtml-user-select:none;color:black;}
.x-grid3-split{background-image:url(../images/default/grid/grid-split.gif);background-position:center;background-repeat:no-repeat;cursor:e-resize;cursor:col-resize;display:block;font-size:1px;height:16px;overflow:hidden;position:absolute;top:2px;width:6px;z-index:3;}
.x-grid3-hd-text{color:#15428b;}
.x-dd-drag-proxy .x-grid3-hd-inner{background:#ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;width:120px;padding:3px;border:1px solid #aaccf6;overflow:hidden;}
.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:1px;font-size:1px;overflow:hidden;visibility:hidden;z-index:20000;}
.col-move-top{background:transparent url(../images/default/grid/col-move-top.gif) no-repeat left top;}
.col-move-bottom{background:transparent url(../images/default/grid/col-move-bottom.gif) no-repeat left top;}
.x-grid3-row-selected{background:#DFE8F6!important;border:1px dotted #a3bae9;}
.x-grid3-cell-selected{background-color:#B8CFEE!important;color:black;}
.x-grid3-cell-selected span{color:black!important;}
.x-grid3-cell-selected .x-grid3-cell-text{color:black;}
.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background:#ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x 0 bottom!important;vertical-align:middle!important;color:black;padding:0;border-top:1px solid white;border-bottom:none!important;border-right:1px solid #6fa0df!important;text-align:center;}
.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{padding:0 4px;color:#15428b!important;text-align:center;}
.x-grid3-dirty-cell{background:transparent url(../images/default/grid/dirty.gif) no-repeat 0 0;}
.x-grid3-topbar,.x-grid3-bottombar{font:normal 11px arial,tahoma,helvetica,sans-serif;overflow:hidden;display:none;zoom:1;position:relative;}
.x-grid3-topbar .x-toolbar{border-right:0 none;}
.x-grid3-bottombar .x-toolbar{border-right:0 none;border-bottom:0 none;border-top:1px solid #a9bfd3;}
.x-props-grid .x-grid3-cell{padding:1px;}
.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y -16px!important;padding-left:12px;color:black!important;}
.x-props-grid .x-grid3-body .x-grid3-td-name{padding:1px;padding-right:0;background:white!important;border:0 none;border-right:1px solid #eee;}
.xg-hmenu-sort-asc .x-menu-item-icon{background-image:url(../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-col-dd{border:0 none;padding:0;background:transparent;}
.x-dd-drag-ghost .x-grid3-dd-wrap{padding:1px 3px 3px 1px;}
.x-grid3-hd{-moz-user-select:none;}
.x-grid3-hd-btn{display:none;position:absolute;width:14px;background:#c3daf9 url(../images/default/grid/grid3-hd-btn.gif) no-repeat left center;right:0;top:0;z-index:2;cursor:pointer;}
.x-grid3-hd-over .x-grid3-hd-btn,.x-grid3-hd-menu-open .x-grid3-hd-btn{display:block;}
a.x-grid3-hd-btn:hover{background-position:-14px center;}
.x-grid3-body .x-grid3-td-expander{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner{padding:0!important;height:100%;}
.x-grid3-row-expander{width:100%;height:18px;background-position:4px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/grid/row-expand-sprite.gif);}
.x-grid3-row-collapsed .x-grid3-row-expander{background-position:4px 2px;}
.x-grid3-row-expanded .x-grid3-row-expander{background-position:-21px 2px;}
.x-grid3-row-collapsed .x-grid3-row-body{display:none!important;}
.x-grid3-row-expanded .x-grid3-row-body{display:block!important;}
.x-grid3-body .x-grid3-td-checker{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner,.x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner{padding:0!important;height:100%;}
.x-grid3-row-checker,.x-grid3-hd-checker{width:100%;height:18px;background-position:2px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/grid/row-check-sprite.gif);}
.x-grid3-row .x-grid3-row-checker{background-position:2px 2px;}
.x-grid3-row-selected .x-grid3-row-checker,.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 2px;}
.x-grid3-hd-checker{background-position:2px 3px;}
.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 3px;}
.x-grid3-body .x-grid3-td-numberer{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner{padding:3px 5px 0 0!important;text-align:right;color:#444;}
.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander{background:transparent url(../images/default/grid/grid3-special-col-sel-bg.gif) repeat-y right;}
.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner{padding:1px 0 0 0!important;}
.x-grid3-check-col{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/menu/unchecked.gif);}
.x-grid3-check-col-on{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/menu/checked.gif);}
.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1;}
.x-grid-group-hd{border-bottom:2px solid #99bbe8;cursor:pointer;padding-top:6px;}
.x-grid-group-hd div{background:transparent url(../images/default/grid/group-expand-sprite.gif) no-repeat 3px -47px;padding:4px 4px 4px 17px;color:#3764a0;font:bold 11px tahoma,arial,helvetica,sans-serif;}
.x-grid-group-collapsed .x-grid-group-hd div{background-position:3px 3px;}
.x-grid-group-collapsed .x-grid-group-body{display:none;}
.x-group-by-icon{background-image:url(../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);}
.ext-ie .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}
.ext-ie .x-props-grid .x-editor .x-form-text{position:static;top:0;}
.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}
.ext-ie7 .x-grid-panel .x-panel-bbar{position:relative;}
.x-dd-drag-proxy{position:absolute;left:0;top:0;visibility:hidden;z-index:15000;}
.x-dd-drag-ghost{color:black;font:normal 11px arial,helvetica,sans-serif;-moz-opacity:0.85;opacity:.85;filter:alpha(opacity=85);border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #bbb;border-bottom:1px solid #bbb;padding:3px;padding-left:20px;background-color:white;white-space:nowrap;}
.x-dd-drag-repair .x-dd-drag-ghost{-moz-opacity:0.4;opacity:.4;filter:alpha(opacity=40);border:0 none;padding:0;background-color:transparent;}
.x-dd-drag-repair .x-dd-drop-icon{visibility:hidden;}
.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1;}
.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url(../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{position:absolute;left:0;top:0;width:0;background:#c3daf9;border:1px dotted #39b;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);zoom:1;}
.x-tree .x-panel-body{background-color:#fff;}
.ext-strict .ext-ie .x-tree .x-panel-bwrap{position:relative;overflow:hidden;}
.x-tree-icon,.x-tree-ec-icon,.x-tree-elbow-line,.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-repeat:no-repeat;}
.x-tree-node-collapsed .x-tree-node-icon,.x-tree-node-expanded .x-tree-node-icon,.x-tree-node-leaf .x-tree-node-icon{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-position:center;background-repeat:no-repeat;}
.ext-ie .x-tree-node-indent img,.ext-ie .x-tree-node-icon,.ext-ie .x-tree-ec-icon{vertical-align:middle!important;}
.x-tree-node-expanded .x-tree-node-icon{background-image:url(../images/default/tree/folder-open.gif);}
.x-tree-node-leaf .x-tree-node-icon{background-image:url(../images/default/tree/leaf.gif);}
.x-tree-node-collapsed .x-tree-node-icon{background-image:url(../images/default/tree/folder.gif);}
.ext-ie input.x-tree-node-cb{width:15px;height:15px;}
input.x-tree-node-cb{margin-left:1px;}
.ext-ie input.x-tree-node-cb{margin-left:0;}
.x-tree-noicon .x-tree-node-icon{width:0;height:0;}
.x-tree-node-loading .x-tree-node-icon{background-image:url(../images/default/tree/loading.gif)!important;}
.x-tree-node-loading a span{font-style:italic;color:#444;}
.ext-ie .x-tree-node-el input{width:15px;height:15px;}
.x-tree-lines .x-tree-elbow{background-image:url(../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{background:transparent;}
.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{background:transparent;}
.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-no-lines .x-tree-elbow-line{background:transparent;}
.x-tree-arrows .x-tree-elbow{background:transparent;}
.x-tree-arrows .x-tree-elbow-plus{background:transparent url(../images/default/tree/arrows.gif) no-repeat 0 0;}
.x-tree-arrows .x-tree-elbow-minus{background:transparent url(../images/default/tree/arrows.gif) no-repeat -16px 0;}
.x-tree-arrows .x-tree-elbow-end{background:transparent;}
.x-tree-arrows .x-tree-elbow-end-plus{background:transparent url(../images/default/tree/arrows.gif) no-repeat 0 0;}
.x-tree-arrows .x-tree-elbow-end-minus{background:transparent url(../images/default/tree/arrows.gif) no-repeat -16px 0;}
.x-tree-arrows .x-tree-elbow-line{background:transparent;}
.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{background-position:-32px 0;}
.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{background-position:-48px 0;}
.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{background-position:-32px 0;}
.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:-48px 0;}
.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer;}
.ext-ie ul.x-tree-node-ct{font-size:0;line-height:0;zoom:1;}
.x-tree-node{color:black;font:normal 11px arial,tahoma,helvetica,sans-serif;white-space:nowrap;}
.x-tree-node-el{line-height:18px;cursor:pointer;}
.x-tree-node a,.x-dd-drag-ghost a{text-decoration:none;color:black;-khtml-user-select:none;-moz-user-select:none;-kthml-user-focus:normal;-moz-user-focus:normal;-moz-outline:0 none;outline:0 none;}
.x-tree-node a span,.x-dd-drag-ghost a span{text-decoration:none;color:black;padding:1px 3px 1px 2px;}
.x-tree-node .x-tree-node-disabled a span{color:gray!important;}
.x-tree-node .x-tree-node-disabled .x-tree-node-icon{-moz-opacity:0.5;opacity:.5;filter:alpha(opacity=50);}
.x-tree-node .x-tree-node-inline-icon{background:transparent;}
.x-tree-node a:hover,.x-dd-drag-ghost a:hover{text-decoration:none;}
.x-tree-node div.x-tree-drag-insert-below{border-bottom:1px dotted #36c;}
.x-tree-node div.x-tree-drag-insert-above{border-top:1px dotted #36c;}
.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{border-bottom:0 none;}
.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{border-top:0 none;}
.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{border-bottom:2px solid #36c;}
.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{border-top:2px solid #36c;}
.x-tree-node .x-tree-drag-append a span{background:#ddd;border:1px dotted gray;}
.x-tree-node .x-tree-node-over{background-color:#eee;}
.x-tree-node .x-tree-selected{background-color:#d9e8fb;}
.x-dd-drag-ghost .x-tree-node-indent,.x-dd-drag-ghost .x-tree-ec-icon{display:none!important;}
.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(../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-tree-root-ct{zoom:1;}
.x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;}
.x-date-picker a{-moz-outline:0 none;outline:0 none;}
.x-date-inner,.x-date-inner td,.x-date-inner th{border-collapse:separate;}
.x-date-middle,.x-date-left,.x-date-right{background:url(../images/default/shared/hd-sprite.gif) repeat-x 0 -83px;color:#FFF;font:bold 11px "sans serif",tahoma,verdana,helvetica;overflow:hidden;}
.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{background:transparent!important;vertical-align:middle;}
.x-date-middle .x-btn .x-btn-text{color:#fff;}
.x-date-middle .x-btn-with-menu .x-btn-center em{background:transparent url(../images/default/toolbar/btn-arrow-light.gif) no-repeat right 0;}
.x-date-right,.x-date-left{width:18px;}
.x-date-right{text-align:right;}
.x-date-middle{padding-top:2px;padding-bottom:2px;width:130px;}
.x-date-right a,.x-date-left a{display:block;width:16px;height:16px;background-position:center;background-repeat:no-repeat;cursor:pointer;-moz-opacity:0.6;opacity:.6;filter:alpha(opacity=60);}
.x-date-right a:hover,.x-date-left a:hover{-moz-opacity:1;opacity:1;filter:alpha(opacity=100);}
.x-date-right a{background-image:url(../images/default/shared/right-btn.gif);margin-right:2px;text-decoration:none!important;}
.x-date-left a{background-image:url(../images/default/shared/left-btn.gif);margin-left:2px;text-decoration:none!important;}
table.x-date-inner{width:100%;table-layout:fixed;}
.x-date-inner th{width:25px;}
.x-date-inner th{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;text-align:right!important;border-bottom:1px solid #a3bad9;font:normal 10px arial,helvetica,tahoma,sans-serif;color:#233d6d;cursor:default;padding:0;border-collapse:separate;}
.x-date-inner th span{display:block;padding:2px;padding-right:7px;}
.x-date-inner td{border:1px solid #fff;text-align:right;padding:0;}
.x-date-inner a{padding:2px 5px;display:block;font:normal 11px arial,helvetica,tahoma,sans-serif;text-decoration:none;color:black;text-align:right;zoom:1;}
.x-date-inner .x-date-active{cursor:pointer;color:black;}
.x-date-inner .x-date-selected a{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;padding:1px 4px;}
.x-date-inner .x-date-today a{border:1px solid darkred;padding:1px 4px;}
.x-date-inner .x-date-selected span{font-weight:bold;}
.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a{color:#aaa;text-decoration:none!important;}
.x-date-bottom{padding:4px;border-top:1px solid #a3bad9;background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;}
.x-date-inner a:hover,.x-date-inner .x-date-disabled a:hover{text-decoration:none!important;color:black;background:#ddecfe;}
.x-date-inner .x-date-disabled a{cursor:default;background:#eee;color:#bbb;}
.x-date-mmenu{background:#eee!important;}
.x-date-mmenu .x-menu-item{font-size:10px;padding:1px 24px 1px 4px;white-space:nowrap;color:#000;}
.x-date-mmenu .x-menu-item .x-menu-item-icon{width:10px;height:10px;margin-right:5px;background-position:center -4px!important;}
.x-date-mp{position:absolute;left:0;top:0;background:white;display:none;}
.x-date-mp td{padding:2px;font:normal 11px arial,helvetica,tahoma,sans-serif;}
td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn{border:0 none;text-align:center;vertical-align:middle;width:25%;}
.x-date-mp-ok{margin-right:3px;}
.x-date-mp-btns button{text-decoration:none;text-align:center;text-decoration:none!important;background:#083772;color:white;border:1px solid;border-color:#36c #005 #005 #36c;padding:1px 3px 1px;font:normal 11px arial,helvetica,tahoma,sans-serif;cursor:pointer;}
.x-date-mp-btns{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;}
.x-date-mp-btns td{border-top:1px solid #c5d2df;text-align:center;}
td.x-date-mp-month a,td.x-date-mp-year a{display:block;padding:2px 4px;text-decoration:none;text-align:center;color:#15428b;}
td.x-date-mp-month a:hover,td.x-date-mp-year a:hover{color:#15428b;text-decoration:none;cursor:pointer;background:#ddecfe;}
td.x-date-mp-sel a{padding:1px 3px;background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;}
.x-date-mp-ybtn a{overflow:hidden;width:15px;height:15px;cursor:pointer;background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat;display:block;margin:0 auto;}
.x-date-mp-ybtn a.x-date-mp-next{background-position:0 -120px;}
.x-date-mp-ybtn a.x-date-mp-next:hover{background-position:-15px -120px;}
.x-date-mp-ybtn a.x-date-mp-prev{background-position:0 -105px;}
.x-date-mp-ybtn a.x-date-mp-prev:hover{background-position:-15px -105px;}
.x-date-mp-ybtn{text-align:center;}
td.x-date-mp-sep{border-right:1px solid #c5d2df;}
.x-tip{position:absolute;top:0;left:0;visibility:hidden;z-index:20000;border:0 none;}
.x-tip .x-tip-close{background-image:url(../images/default/qtip/close.gif);height:15px;float:right;width:15px;margin:0 0 2px 2px;cursor:pointer;display:none;}
.x-tip .x-tip-tc{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -62px;padding-top:3px;overflow:hidden;zoom:1;}
.x-tip .x-tip-tl{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 0;padding-left:6px;overflow:hidden;zoom:1;}
.x-tip .x-tip-tr{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right 0;padding-right:6px;overflow:hidden;zoom:1;}
.x-tip .x-tip-bc{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;height:3px;overflow:hidden;}
.x-tip .x-tip-bl{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;padding-left:6px;zoom:1;}
.x-tip .x-tip-br{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -59px;padding-right:6px;zoom:1;}
.x-tip .x-tip-mc{border:0 none;font:normal 11px tahoma,arial,helvetica,sans-serif;}
.x-tip .x-tip-ml{background:#fff url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;padding-left:6px;zoom:1;}
.x-tip .x-tip-mr{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -124px;padding-right:6px;zoom:1;}
.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc{font-size:0;line-height:0;}
.x-tip .x-tip-header-text{font:bold 11px tahoma,arial,helvetica,sans-serif;padding:0;margin:0 0 2px 0;color:#444;}
.x-tip .x-tip-body{font:normal 11px tahoma,arial,helvetica,sans-serif;margin:0!important;line-height:14px;color:#444;padding:0;}
.x-tip .x-tip-body .loading-indicator{margin:0;}
.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text{cursor:move;}
.x-form-invalid-tip .x-tip-tc{background:url(../images/default/form/error-tip-corners.gif) repeat-x 0 -12px;padding-top:6px;}
.x-form-invalid-tip .x-tip-tl{background-image:url(../images/default/form/error-tip-corners.gif);}
.x-form-invalid-tip .x-tip-tr{background-image:url(../images/default/form/error-tip-corners.gif);}
.x-form-invalid-tip .x-tip-bc{background:url(../images/default/form/error-tip-corners.gif) repeat-x 0 -18px;height:6px;}
.x-form-invalid-tip .x-tip-bl{background:url(../images/default/form/error-tip-corners.gif) no-repeat 0 -6px;}
.x-form-invalid-tip .x-tip-br{background:url(../images/default/form/error-tip-corners.gif) no-repeat right -6px;}
.x-form-invalid-tip .x-tip-ml{background-image:url(../images/default/form/error-tip-corners.gif);}
.x-form-invalid-tip .x-tip-mr{background-image:url(../images/default/form/error-tip-corners.gif);}
.x-form-invalid-tip .x-tip-body{padding:2px;}
.x-form-invalid-tip .x-tip-body{padding-left:24px;background:transparent url(../images/default/form/exclamation.gif) no-repeat 2px 2px;}
.x-menu{border:1px solid #718bb7;z-index:15000;zoom:1;background:#f0f0f0 url(../images/default/menu/menu.gif) repeat-y;padding:2px;}
.x-menu a{text-decoration:none!important;}
.ext-ie .x-menu{zoom:1;overflow:hidden;}
.x-menu-list{background:transparent;border:0 none;}
.x-menu li{line-height:100%;}
.x-menu li.x-menu-sep-li{font-size:1px;line-height:1px;}
.x-menu-list-item{font:normal 11px tahoma,arial,sans-serif;white-space:nowrap;-moz-user-select:none;-khtml-user-select:none;display:block;padding:1px;}
.x-menu-item-arrow{background:transparent url(../images/default/menu/menu-parent.gif) no-repeat right;}
.x-menu-sep{display:block;font-size:1px;line-height:1px;margin:2px 3px;background-color:#e0e0e0;border-bottom:1px solid #fff;overflow:hidden;}
.x-menu-focus{position:absolute;left:-1px;top:-1px;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;overflow:hidden;display:block;}
.x-menu a.x-menu-item{display:block;line-height:16px;padding:3px 21px 3px 3px;white-space:nowrap;text-decoration:none;color:#222;-moz-outline:0 none;outline:0 none;cursor:pointer;}
.x-menu-item-active{background:#ebf3fd url(../images/default/menu/item-over.gif) repeat-x left bottom;border:1px solid #aaccf6;padding:0;}
.x-menu-item-active a.x-menu-item{color:#233d6d;}
.x-menu-item-icon{border:0 none;height:16px;padding:0;vertical-align:top;width:16px;margin:0 8px 0 0;background-position:center;}
.x-menu-check-item .x-menu-item-icon{background:transparent url(../images/default/menu/unchecked.gif) no-repeat center;}
.x-menu-item-checked .x-menu-item-icon{background-image:url(../images/default/menu/checked.gif);}
.x-menu-group-item .x-menu-item-icon{background:transparent;}
.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{background:transparent url(../images/default/menu/group-checked.gif) no-repeat center;}
.x-menu-plain{background:#fff!important;}
.x-menu-date-item{padding:0;}
.x-menu .x-color-palette,.x-menu .x-date-picker{margin-left:26px;margin-right:4px;}
.x-menu .x-date-picker{border:1px solid #a3bad9;margin-top:2px;margin-bottom:2px;}
.x-menu-plain .x-color-palette,.x-menu-plain .x-date-picker{margin:0;border:0 none;}
.x-date-menu{padding:0!important;}
.x-cycle-menu .x-menu-item-checked{border:1px dotted #a3bae9!important;background:#DFE8F6;padding:0;}
.x-box-tl{background:transparent url(../images/default/box/corners.gif) no-repeat 0 0;zoom:1;}
.x-box-tc{height:8px;background:transparent url(../images/default/box/tb.gif) repeat-x 0 0;overflow:hidden;}
.x-box-tr{background:transparent url(../images/default/box/corners.gif) no-repeat right -8px;}
.x-box-ml{background:transparent url(../images/default/box/l.gif) repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}
.x-box-mc{background:#eee url(../images/default/box/tb.gif) repeat-x 0 -16px;padding:4px 10px;font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:12px;}
.x-box-mc h3{font-size:14px;font-weight:bold;margin:0 0 4px 0;zoom:1;}
.x-box-mr{background:transparent url(../images/default/box/r.gif) repeat-y right;padding-right:4px;overflow:hidden;}
.x-box-bl{background:transparent url(../images/default/box/corners.gif) no-repeat 0 -16px;zoom:1;}
.x-box-bc{background:transparent url(../images/default/box/tb.gif) repeat-x 0 -8px;height:8px;overflow:hidden;}
.x-box-br{background:transparent url(../images/default/box/corners.gif) no-repeat right -24px;}
.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden;}
.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden;}
.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(../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-debug-browser .x-tree .x-tree-node a span{color:#222297;font-size:11px;padding-top:2px;font-family:"monotype","courier new",sans-serif;line-height:18px;}
#x-debug-browser .x-tree a i{color:#FF4545;font-style:normal;}
#x-debug-browser .x-tree a em{color:#999;}
#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{background:#c3daf9;}
#x-debug-browser .x-tool-toggle{background-position:0 -75px;}
#x-debug-browser .x-tool-toggle-over{background-position:-15px -75px;}
#x-debug-browser.x-panel-collapsed .x-tool-toggle{background-position:0 -60px;}
#x-debug-browser.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -60px;}
.x-combo-list{border:1px solid #98c0f4;background:#ddecfe;zoom:1;overflow:hidden;}
.x-combo-list-inner{overflow:auto;background:white;position:relative;zoom:1;overflow-x:hidden;}
.x-combo-list-hd{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;background-image:url(../images/default/layout/panel-title-light-bg.gif);border-bottom:1px solid #98c0f4;padding:3px;}
.x-resizable-pinned .x-combo-list-inner{border-bottom:1px solid #98c0f4;}
.x-combo-list-item{font:normal 12px tahoma,arial,helvetica,sans-serif;padding:2px;border:1px solid #fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.x-combo-list .x-combo-selected{border:1px dotted #a3bae9!important;background:#DFE8F6;cursor:pointer;}
.x-combo-noedit{cursor:pointer;}
.x-combo-list .x-toolbar{border-top:1px solid #98c0f4;border-bottom:0 none;}
.x-combo-list-small .x-combo-list-item{font:normal 11px tahoma,arial,helvetica,sans-serif;}
.x-panel{border-style:solid;border-color:#99bbe8;border-width:0;}
.x-panel-header{overflow:hidden;zoom:1;color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 3px 4px 5px;border:1px solid #99bbe8;line-height:15px;background:transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px;}
.x-panel-body{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;background:white;position:relative;}
.x-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
.x-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
.x-panel-body-noheader,.x-panel-mc .x-panel-body{border-top:1px solid #99bbe8;}
.x-panel-header{overflow:hidden;zoom:1;}
.x-panel-tl .x-panel-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;border:0 none;background:transparent;}
.x-panel-tl .x-panel-icon,.x-window-tl .x-panel-icon{padding-left:20px!important;background-repeat:no-repeat;background-position:0 4px;zoom:1;}
.x-panel-inline-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px;margin-top:-1px;margin-bottom:-1px;}
.x-panel-tc{background:transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 0;overflow:hidden;}
.ext-strict .ext-ie7 .x-panel-tc{overflow:visible;}
.x-panel-tl{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 0;padding-left:6px;zoom:1;border-bottom:1px solid #99bbe8;}
.x-panel-tr{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat right 0;zoom:1;padding-right:6px;}
.x-panel-bc{background:transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 bottom;zoom:1;}
.x-panel-bc .x-panel-footer{zoom:1;}
.x-panel-bl{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 bottom;padding-left:6px;zoom:1;}
.x-panel-br{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat right bottom;padding-right:6px;zoom:1;}
.x-panel-mc{border:0 none;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;padding-top:6px;background:#dfe8f6;}
.x-panel-mc .x-panel-body{background:transparent;border:0 none;}
.x-panel-ml{background:#fff url(../images/default/panel/left-right.gif) repeat-y 0 0;padding-left:6px;zoom:1;}
.x-panel-mr{background:transparent url(../images/default/panel/left-right.gif) repeat-y right 0;padding-right:6px;zoom:1;}
.x-panel-bc .x-panel-footer{padding-bottom:6px;}
.x-panel-nofooter .x-panel-bc,.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;}
.x-plain-body{overflow:hidden;}
.x-plain-bbar .x-toolbar{overflow:hidden;padding:2px;}
.x-plain-tbar .x-toolbar{overflow:hidden;padding:2px;}
.x-plain-bwrap{overflow:hidden;zoom:1;}
.x-plain{overflow:hidden;}
.x-tool{overflow:hidden;width:15px;height:15px;float:right;cursor:pointer;background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat;margin-left:2px;}
.x-tool-toggle{background-position:0 -60px;}
.x-tool-toggle-over{background-position:-15px -60px;}
.x-panel-collapsed .x-tool-toggle{background-position:0 -75px;}
.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -75px;}
.x-tool-close{background-position:0 -0;}
.x-tool-close-over{background-position:-15px 0;}
.x-tool-minimize{background-position:0 -15px;}
.x-tool-minimize-over{background-position:-15px -15px;}
.x-tool-maximize{background-position:0 -30px;}
.x-tool-maximize-over{background-position:-15px -30px;}
.x-tool-restore{background-position:0 -45px;}
.x-tool-restore-over{background-position:-15px -45px;}
.x-tool-gear{background-position:0 -90px;}
.x-tool-gear-over{background-position:-15px -90px;}
.x-tool-pin{background-position:0 -135px;}
.x-tool-pin-over{background-position:-15px -135px;}
.x-tool-unpin{background-position:0 -150px;}
.x-tool-unpin-over{background-position:-15px -150px;}
.x-tool-right{background-position:0 -165px;}
.x-tool-right-over{background-position:-15px -165px;}
.x-tool-left{background-position:0 -180px;}
.x-tool-left-over{background-position:-15px -180px;}
.x-tool-up{background-position:0 -210px;}
.x-tool-up-over{background-position:-15px -210px;}
.x-tool-down{background-position:0 -195px;}
.x-tool-down-over{background-position:-15px -195px;}
.x-tool-refresh{background-position:0 -225px;}
.x-tool-refresh-over{background-position:-15px -225px;}
.x-tool-minus{background-position:0 -255px;}
.x-tool-minus-over{background-position:-15px -255px;}
.x-tool-plus{background-position:0 -240px;}
.x-tool-plus-over{background-position:-15px -240px;}
.x-tool-search{background-position:0 -270px;}
.x-tool-search-over{background-position:-15px -270px;}
.x-tool-save{background-position:0 -285px;}
.x-tool-save-over{background-position:-15px -285px;}
.x-tool-help{background-position:0 -300px;}
.x-tool-help-over{background-position:-15px -300px;}
.x-tool-print{background-position:0 -315px;}
.x-tool-print-over{background-position:-15px -315px;}
.x-panel-ghost{background:#cbddf3;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;opacity:.65;-moz-opacity:.65;filter:alpha(opacity=65);}
.x-panel-ghost ul{margin:0;padding:0;overflow:hidden;font-size:0;line-height:0;border:1px solid #99bbe8;border-top:0 none;display:block;}
.x-panel-ghost *{cursor:move!important;}
.x-panel-dd-spacer{border:2px dashed #99bbe8;}
.x-panel-btns-ct{padding:5px;}
.x-panel-btns-ct .x-btn{float:right;clear:none;}
.x-panel-btns-ct .x-panel-btns td{border:0;padding:0;}
.x-panel-btns-ct .x-panel-btns-right table{float:right;clear:none;}
.x-panel-btns-ct .x-panel-btns-left table{float:left;clear:none;}
.x-panel-btns-ct .x-panel-btns-center{text-align:center;}
.x-panel-btns-ct .x-panel-btns-center table{margin:0 auto;}
.x-panel-btns-ct table td.x-panel-btn-td{padding:3px;}
.x-panel-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}
.x-panel-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}
.x-panel-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}
.x-panel-btns-ct .x-btn-over .x-btn-left{background-position:0 -63px;}
.x-panel-btns-ct .x-btn-over .x-btn-right{background-position:0 -84px;}
.x-panel-btns-ct .x-btn-over .x-btn-center{background-position:0 -105px;}
.x-panel-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}
.x-panel-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}
.x-panel-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
.x-window{zoom:1;}
.x-window .x-resizable-handle{opacity:0;-moz-opacity:0;filter:alpha(opacity=0);}
.x-window-proxy{background:#C7DFFC;border:1px solid #99bbe8;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;display:none;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
.x-window-header{overflow:hidden;zoom:1;}
.x-window-bwrap{z-index:1;position:relative;zoom:1;left:0;top:0;}
.x-window-tl .x-window-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;}
.x-window-header-text{cursor:pointer;}
.x-window-tc{background:transparent url(../images/default/window/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;}
.x-window-tl{background:transparent url(../images/default/window/left-corners.png) no-repeat 0 0;padding-left:6px;zoom:1;z-index:1;position:relative;}
.x-window-tr{background:transparent url(../images/default/window/right-corners.png) no-repeat right 0;padding-right:6px;}
.x-window-bc{background:transparent url(../images/default/window/top-bottom.png) repeat-x 0 bottom;zoom:1;}
.x-window-bc .x-window-footer{padding-bottom:6px;zoom:1;font-size:0;line-height:0;}
.x-window-bl{background:transparent url(../images/default/window/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;}
.x-window-br{background:transparent url(../images/default/window/right-corners.png) no-repeat right bottom;padding-right:6px;zoom:1;}
.x-window-mc{border:1px solid #99bbe8;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;background:#dfe8f6;}
.x-window-ml{background:transparent url(../images/default/window/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;}
.x-window-mr{background:transparent url(../images/default/window/left-right.png) 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;background-color:white;}
.x-window-maximized .x-window-mc{border-left:0 none;border-right:0 none;}
.x-window-tbar .x-toolbar,.x-window-bbar .x-toolbar{border-left:0 none;border-right:0 none;}
.x-window-bbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
.x-window-draggable,.x-window-draggable .x-window-header-text{cursor:move;}
.x-window-maximized .x-window-draggable,.x-window-maximized .x-window-draggable .x-window-header-text{cursor:default;}
.x-window-body{background:transparent;}
.x-panel-ghost .x-window-tl{border-bottom:1px solid #99bbe8;}
.x-panel-collapsed .x-window-tl{border-bottom:1px solid #84a0c4;}
.x-window-maximized-ct{overflow:hidden;}
.x-window-maximized .x-resizable-handle{display:none;}
.x-window-sizing-ghost ul{border:0 none!important;}
.x-dlg-focus{-moz-outline:0 none;outline:0 none;width:0;height:0;overflow:hidden;position:absolute;top:0;left:0;}
.x-dlg-mask{z-index:10000;display:none;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;}
body.ext-ie6.x-body-masked select{visibility:hidden;}
body.ext-ie6.x-body-masked .x-window select{visibility:visible;}
.x-window-plain .x-window-mc{background:#CAD9EC;border-right:1px solid #DFE8F6;border-bottom:1px solid #DFE8F6;border-top:1px solid #a3bae9;border-left:1px solid #a3bae9;}
.x-window-plain .x-window-body{border-left:1px solid #DFE8F6;border-top:1px solid #DFE8F6;border-bottom:1px solid #a3bae9;border-right:1px solid #a3bae9;background:transparent!important;}
body.x-body-masked .x-window-plain .x-window-mc{background:#C7D6E9;}
.x-html-editor-wrap{border:1px solid #a9bfd3;background:white;}
.x-html-editor-tb .x-btn-text{background:transparent url(../images/default/editor/tb-sprite.gif) no-repeat;}
.x-html-editor-tb .x-edit-bold .x-btn-text{background-position:0 0;}
.x-html-editor-tb .x-edit-italic .x-btn-text{background-position:-16px 0;}
.x-html-editor-tb .x-edit-underline .x-btn-text{background-position:-32px 0;}
.x-html-editor-tb .x-edit-forecolor .x-btn-text{background-position:-160px 0;}
.x-html-editor-tb .x-edit-backcolor .x-btn-text{background-position:-176px 0;}
.x-html-editor-tb .x-edit-justifyleft .x-btn-text{background-position:-112px 0;}
.x-html-editor-tb .x-edit-justifycenter .x-btn-text{background-position:-128px 0;}
.x-html-editor-tb .x-edit-justifyright .x-btn-text{background-position:-144px 0;}
.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text{background-position:-80px 0;}
.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text{background-position:-96px 0;}
.x-html-editor-tb .x-edit-increasefontsize .x-btn-text{background-position:-48px 0;}
.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text{background-position:-64px 0;}
.x-html-editor-tb .x-edit-sourceedit .x-btn-text{background-position:-192px 0;}
.x-html-editor-tb .x-edit-createlink .x-btn-text{background-position:-208px 0;}
.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px;}
.x-html-editor-tb .x-toolbar{position:static!important;}
.x-panel-noborder .x-panel-body-noborder{border-width:0;}
.x-panel-noborder .x-panel-header-noborder{border-width:0;border-bottom:1px solid #99bbe8;}
.x-panel-noborder .x-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}
.x-panel-noborder .x-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}
.x-window-noborder .x-window-mc{border-width:0;}
.x-window-plain .x-window-body-noborder{border-width:0;}
.x-tab-panel-noborder .x-tab-panel-body-noborder{border-width:0;}
.x-tab-panel-noborder .x-tab-panel-header-noborder{border-top-width:0;border-left-width:0;border-right-width:0;}
.x-tab-panel-noborder .x-tab-panel-footer-noborder{border-bottom-width:0;border-left-width:0;border-right-width:0;}
.x-tab-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}
.x-tab-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}
.x-border-layout-ct{background:#dfe8f6;}
.x-border-panel{position:absolute;left:0;top:0;}
.x-tool-collapse-south{background-position:0 -195px;}
.x-tool-collapse-south-over{background-position:-15px -195px;}
.x-tool-collapse-north{background-position:0 -210px;}
.x-tool-collapse-north-over{background-position:-15px -210px;}
.x-tool-collapse-west{background-position:0 -180px;}
.x-tool-collapse-west-over{background-position:-15px -180px;}
.x-tool-collapse-east{background-position:0 -165px;}
.x-tool-collapse-east-over{background-position:-15px -165px;}
.x-tool-expand-south{background-position:0 -210px;}
.x-tool-expand-south-over{background-position:-15px -210px;}
.x-tool-expand-north{background-position:0 -195px;}
.x-tool-expand-north-over{background-position:-15px -195px;}
.x-tool-expand-west{background-position:0 -165px;}
.x-tool-expand-west-over{background-position:-15px -165px;}
.x-tool-expand-east{background-position:0 -180px;}
.x-tool-expand-east-over{background-position:-15px -180px;}
.x-tool-expand-north,.x-tool-expand-south{float:right;margin:3px;}
.x-tool-expand-east,.x-tool-expand-west{float:none;margin:3px auto;}
.x-accordion-hd .x-tool-toggle{background-position:0 -255px;}
.x-accordion-hd .x-tool-toggle-over{background-position:-15px -255px;}
.x-panel-collapsed .x-accordion-hd .x-tool-toggle{background-position:0 -240px;}
.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over{background-position:-15px -240px;}
.x-accordion-hd{color:#222;padding-top:4px;padding-bottom:3px;border-top:0 none;font-weight:normal;background:transparent url(../images/default/panel/light-hd.gif) repeat-x 0 -9px;}
.x-layout-collapsed{position:absolute;left:-10000px;top:-10000px;visibility:hidden;background-color:#d2e0f2;width:20px;height:20px;overflow:hidden;border:1px solid #98c0f4;z-index:20;}
.ext-border-box .x-layout-collapsed{width:22px;height:22px;}
.x-layout-collapsed-over{cursor:pointer;background-color:#d9e8fb;}
.x-layout-collapsed-west .x-layout-collapsed-tools,.x-layout-collapsed-east .x-layout-collapsed-tools{position:absolute;top:0;left:0;width:20px;height:20px;}
.x-layout-split{position:absolute;height:5px;width:5px;line-height:1px;font-size:1px;z-index:3;background-color:transparent;}
.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-layout-mini{position:absolute;top:0;left:0;display:block;width:5px;height:35px;cursor:pointer;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
.x-layout-mini-over,.x-layout-collapsed-over .x-layout-mini{opacity:1;-moz-opacity:1;filter:none;}
.x-layout-split-west .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-left.gif);}
.x-layout-split-east .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-right.gif);}
.x-layout-split-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-top.gif);}
.x-layout-split-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-bottom.gif);}
.x-layout-cmini-west .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-right.gif);}
.x-layout-cmini-east .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-left.gif);}
.x-layout-cmini-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-bottom.gif);}
.x-layout-cmini-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-top.gif);}
.x-layout-cmini-west,.x-layout-cmini-east{border:0 none;width:5px!important;padding:0;background:transparent;}
.x-layout-cmini-north,.x-layout-cmini-south{border:0 none;height:5px!important;padding:0;background:transparent;}
.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;}
.x-abs-layout-item{position:absolute;left:0;top:0;}
.ext-ie input.x-abs-layout-item,.ext-ie textarea.x-abs-layout-item{margin:0;}
.x-progress-wrap{border:1px solid #6593cf;overflow:hidden;}
.x-progress-inner{height:18px;background:#e0e8f3 url(../images/default/qtip/bg.gif) repeat-x;position:relative;}
.x-progress-bar{height:18px;float:left;width:0;background:#9CBFEE url( ../images/default/progress/progress-bg.gif ) repeat-x left center;border-top:1px solid #D1E4FD;border-bottom:1px solid #7FA9E4;border-right:1px solid #7FA9E4;}
.x-progress-text{font-size:11px;font-weight:bold;color:#fff;padding:1px 5px;overflow:hidden;position:absolute;left:0;text-align:center;}
.x-progress-text-back{color:#396095;line-height:16px;}
.ext-ie .x-progress-text-back{line-height:15px;}
.x-window-dlg .x-window-body{border:0 none!important;padding:5px 10px;overflow:hidden!important;}
.x-window-dlg .x-window-mc{border:0 none!important;}
.x-window-dlg .ext-mb-text,.x-window-dlg .x-window-header-text{font-size:12px;}
.x-window-dlg .ext-mb-input{margin-top:4px;width:95%;}
.x-window-dlg .ext-mb-textarea{margin-top:4px;font:normal 12px tahoma,arial,helvetica,sans-serif;}
.x-window-dlg .x-progress-wrap{margin-top:4px;}
.ext-ie .x-window-dlg .x-progress-wrap{margin-top:6px;}
.x-window-dlg .x-msg-box-wait{background:transparent url(../images/default/grid/loading.gif) no-repeat left;display:block;width:300px;padding-left:18px;line-height:18px;}
.x-window-dlg .ext-mb-icon{float:left;width:47px;height:32px;}
.x-window-dlg .ext-mb-icon{float:left;width:47px;height:32px;}
.ext-ie .x-window-dlg .ext-mb-icon{width:44px;}
.x-window-dlg .ext-mb-info{background:transparent url(../images/default/window/icon-info.gif) no-repeat top left;}
.x-window-dlg .ext-mb-warning{background:transparent url(../images/default/window/icon-warning.gif) no-repeat top left;}
.x-window-dlg .ext-mb-question{background:transparent url(../images/default/window/icon-question.gif) no-repeat top left;}
.x-window-dlg .ext-mb-error{background:transparent url(../images/default/window/icon-error.gif) no-repeat top left;}
.ext-gecko2 .ext-mb-fix-cursor{overflow:auto;}
.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:text;-khtml-user-select:text;}
.x-slider-horz{padding-left:7px;background:transparent url(../images/default/slider/slider-bg.png) no-repeat 0 -22px;}
.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent url(../images/default/slider/slider-bg.png) no-repeat right -44px;}
.x-slider-horz .x-slider-inner{background:transparent url(../images/default/slider/slider-bg.png) repeat-x 0 0;height:22px;}
.x-slider-horz .x-slider-thumb{width:14px;height:15px;position:absolute;left:0;top:3px;background:transparent url(../images/default/slider/slider-thumb.png) 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;}
.x-slider-vert{padding-top:7px;background:transparent url(../images/default/slider/slider-v-bg.png) no-repeat -44px 0;width:22px;}
.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent url(../images/default/slider/slider-v-bg.png) no-repeat -22px bottom;}
.x-slider-vert .x-slider-inner{background:transparent url(../images/default/slider/slider-v-bg.png) repeat-y 0 0;}
.x-slider-vert .x-slider-thumb{width:15px;height:14px;position:absolute;left:3px;bottom:0;background:transparent url(../images/default/slider/slider-v-thumb.png) 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;}