[fusion-commits] r1970 - in sandbox/jxlib-3.0: lib
templates/mapserver/standard/themes/crispin
templates/mapserver/standard/themes/delicious widgets
widgets/CursorPosition widgets/EditableScale
widgets/SelectionInfo widgets/ViewSize
svn_fusion at osgeo.org
svn_fusion at osgeo.org
Wed Nov 11 10:31:48 EST 2009
Author: pagameba
Date: 2009-11-11 10:31:46 -0500 (Wed, 11 Nov 2009)
New Revision: 1970
Added:
sandbox/jxlib-3.0/widgets/CursorPosition/
sandbox/jxlib-3.0/widgets/CursorPosition/CursorPosition.css
sandbox/jxlib-3.0/widgets/SelectionInfo/
sandbox/jxlib-3.0/widgets/SelectionInfo/SelectionInfo.css
sandbox/jxlib-3.0/widgets/ViewSize/
sandbox/jxlib-3.0/widgets/ViewSize/ViewSize.css
Modified:
sandbox/jxlib-3.0/lib/ApplicationDefinition.js
sandbox/jxlib-3.0/lib/jxlib.uncompressed.js
sandbox/jxlib-3.0/templates/mapserver/standard/themes/crispin/jxtheme.css
sandbox/jxlib-3.0/templates/mapserver/standard/themes/crispin/jxtheme.uncompressed.css
sandbox/jxlib-3.0/templates/mapserver/standard/themes/delicious/jxtheme.css
sandbox/jxlib-3.0/templates/mapserver/standard/themes/delicious/jxtheme.uncompressed.css
sandbox/jxlib-3.0/widgets/CursorPosition.js
sandbox/jxlib-3.0/widgets/EditableScale/EditableScale.css
sandbox/jxlib-3.0/widgets/Measure.js
sandbox/jxlib-3.0/widgets/SelectionInfo.js
sandbox/jxlib-3.0/widgets/ViewSize.js
Log:
updating some widgets, updating to latest jxlib build
Modified: sandbox/jxlib-3.0/lib/ApplicationDefinition.js
===================================================================
--- sandbox/jxlib-3.0/lib/ApplicationDefinition.js 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/lib/ApplicationDefinition.js 2009-11-11 15:31:46 UTC (rev 1970)
@@ -746,7 +746,11 @@
var container;
if (this.type == 'Toolbar' || this.type == 'Statusbar') {
if ($(this.name)) {
- container = new Jx.Toolbar({parent: this.name, position: this.position});
+ if ($(this.name).retrieve('jxToolbar')) {
+ container = $(this.name).retrieve('jxToolbar');
+ } else {
+ container = new Jx.Toolbar({parent: this.name, position: this.position});
+ }
$(this.name).container = container;
this.createWidgets(widgetSet, container);
}
Modified: sandbox/jxlib-3.0/lib/jxlib.uncompressed.js
===================================================================
--- sandbox/jxlib-3.0/lib/jxlib.uncompressed.js 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/lib/jxlib.uncompressed.js 2009-11-11 15:31:46 UTC (rev 1970)
@@ -13842,7 +13842,7 @@
startMonth: 'Välj en start månad',
sameMonth: 'Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.'
-});// $Id: common.js 555 2009-10-23 05:23:59Z jonlb at comcast.net $
+});// $Id: common.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx
* Jx is a global singleton object that contains the entire Jx library
@@ -13895,7 +13895,7 @@
};
function $unlink(object){
if (object && object.jxFamily){
- return object
+ return object;
}
var unlinked;
switch ($type(object)){
@@ -13913,7 +13913,7 @@
default: return object;
}
return unlinked;
-};
+}
/* Setup global namespace
* If jxcore is loaded by jx.js, then the namespace and baseURL are
@@ -14090,7 +14090,7 @@
Jx.getNumber = function(n, def) {
var result = n===null||isNaN(parseInt(n,10))?(def||0):parseInt(n,10);
return result;
-}
+};
/**
* Method: getPageDimensions
@@ -14102,14 +14102,15 @@
*/
Jx.getPageDimensions = function() {
return {width: window.getWidth(), height: window.getHeight()};
-}
+};
Jx.type = function(obj){
if (typeof obj == 'undefined'){
return false;
}
return obj.jxFamily ? obj.jxFamily : $type(obj);
-}
+};
+
/**
* Class: Element
*
@@ -14731,9 +14732,14 @@
* Option: contentURL
* the URL to load content from
*/
- contentURL: null
+ contentURL: null,
+ template: '<div class="jxWidget"></div>'
},
+ classes: new Hash({
+ domObj: 'jxWidget'
+ }),
+
/**
* Property: domObj
* The HTMLElement that represents this widget.
@@ -15298,7 +15304,23 @@
this.parent();
},
- render: $empty
+ render: function() {
+ this.elements = this.processElements(this.options.template,
+ this.classes);
+ },
+
+ elements: null,
+
+ processElements: function(template, classes) {
+ var keys = classes.getValues();
+ elements = this.processTemplate(template, keys);
+ classes.each(function(value, key) {
+ if (key != 'elements' && elements.get(value)) {
+ this[key] = elements.get(value);
+ }
+ }, this);
+ return elements;
+ }
});
@@ -15623,7 +15645,7 @@
* an integer position in the list or another item to place this item after
*/
add: function(item, position) {
- if ($type(item) == 'array') {
+ if (Jx.type(item) == 'array') {
item.each(function(what){ this.add(what, position); }.bind(this) );
return;
}
@@ -16077,766 +16099,767 @@
this.comparator = fn;
}
});
+// $Id: $
+/**
+ * Class: Jx.Store
+ *
+ * Extends: <Jx.Object>
+ *
+ * This class is the base store. It keeps track of data. It
+ * allows adding, deleting, iterating, sorting etc...
+ *
+ * Events: onLoadFinished(store) - fired when the store finishes loading the
+ * data onLoadError(store,data) - fired when there is an error loading the data
+ *
+ * Example:
+ * (code)
+ * (end)
+ *
+ * License:
+ * Copyright (c) 2009, Jon Bomgardner.
+ *
+ * This file is licensed under an MIT style license
+ */
+
+Jx.Store = new Class({
+
+ Extends : Jx.Object,
+
+ Family : "Jx.Store",
+
+ options : {
+ /**
+ * Option: id
+ * the identifier for this store
+ */
+ id : null,
+ /**
+ * Option: columns
+ * an array listing the columns of the store in order of their
+ * appearance in the data object formatted as an object
+ * {name: 'column name', type: 'column type'}
+ * where type can be one of alphanumeric, numeric, date, boolean,
+ * or currency.
+ */
+ columns : [],
+ /**
+ * Option: defaultSort
+ * The default sorting type, currently set to merge but can be any of the
+ * sorters available
+ */
+ defaultSort : 'merge',
+ /**
+ * Option: separator
+ * The separator to pass to the comparator
+ * constructor (<Jx.Compare>) - defaults to '.'
+ */
+ separator : '.',
+ /**
+ * Option: sortCols
+ * An array of columns to sort by arranged in the order you want
+ * them sorted.
+ */
+ sortCols : [],
+ /**
+ * Event: onLoadFinished(store)
+ * event for a completed, successful data load
+ */
+ onLoadFinished : $empty,
+ /**
+ * Event: onLoadError(store,data)
+ * event for an unsuccessful load
+ */
+ onLoadError : $empty,
+ /**
+ * Event: onColumnChanged
+ * event fired for changes to a column
+ */
+ onColumnChanged : $empty,
+ /**
+ * Option: paginate
+ * Set to true to enable pagination
+ */
+ paginate: false,
+ /**
+ * Option: pageSize
+ * Sets the size of each page. Only used if paginate is true.
+ */
+ pageSize: 0
+
+ },
+
+ /**
+ * Property: sorters
+ * an object listing the different sorters available
+ */
+ sorters : {
+ quick : "Quicksort",
+ merge : "Mergesort",
+ heap : "Heapsort",
+ 'native' : "Nativesort"
+ },
+ /**
+ * Property: data
+ * Holds the data for this store
+ */
+ data : null,
+ /**
+ * Property: index
+ * Holds the current position of the store relative to the data and the pageIndex.
+ * Zero-based index.
+ */
+ index : 0,
+ /**
+ * Property: pageIndex
+ * Holds the current page index
+ */
+ pageIndex: 0,
+ /**
+ * Property: dirty
+ * Tells us if the store is dirty
+ */
+ dirty : false,
+ /**
+ * Property: id
+ * The id of this store.
+ */
+ id : null,
+ /**
+ * Property: loaded
+ * Tells whether the store has been loaded or not
+ */
+ loaded: false,
+
+ /**
+ * APIMethod: load
+ * Loads data into the store.
+ *
+ * Parameters:
+ * data - the data to load
+ */
+ load : function (data) {
+ if ($defined(data)) {
+ this.loaded = false;
+ this.processData(data);
+
+ } else {
+ this.loaded = false;
+ }
+ },
+
+ /**
+ * APIMethod: hasNext
+ * Determines if there are more records past the current
+ * one.
+ *
+ * Returns: true | false (Null if there's a problem)
+ */
+ hasNext : function () {
+ if ($defined(this.data)) {
+ if (this.index < this.data[this.pageIndex].length - 1) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: hasPrevious
+ * Determines if there are records before the current
+ * one.
+ *
+ * Returns: true | false
+ */
+ hasPrevious : function () {
+ if ($defined(this.data)) {
+ if (this.index > 0) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: valid
+ * Tells us if the current index has any data (i.e. that the
+ * index is valid).
+ *
+ * Returns: true | false
+ */
+ valid : function () {
+ return ($defined(this.data[this.pageIndex][this.index]));
+ },
+
+ /**
+ * APIMethod: next
+ * Moves the store to the next record
+ *
+ * Returns: nothing | null if error
+ */
+ next : function () {
+ if ($defined(this.data)) {
+ this.index++;
+ if (this.index === this.data[this.pageIndex].length) {
+ this.index = this.data[this.pageIndex].length - 1;
+ }
+ this.fireEvent('storeMove', this);
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: previous
+ * moves the store to the previous record
+ *
+ * Returns: nothing | null if error
+ *
+ */
+ previous : function () {
+ if ($defined(this.data)) {
+ this.index--;
+ if (this.index < 0) {
+ this.index = 0;
+ }
+ this.fireEvent('storeMove', this);
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: first
+ * Moves the store to the first record
+ *
+ * Returns: nothing | null if error
+ *
+ */
+ first : function () {
+ if ($defined(this.data)) {
+ this.index = 0;
+ this.fireEvent('storeMove', this);
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: last
+ * Moves to the last record in the store
+ *
+ * Returns: nothing | null if error
+ */
+ last : function () {
+ if ($defined(this.data)) {
+ this.index = this.data[this.pageIndex].length - 1;
+ this.fireEvent('storeMove', this);
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: count
+ * Returns the number of records in the store
+ *
+ * Returns: an integer indicating the number of records in the store or null
+ * if there's an error
+ */
+ count : function () {
+ if ($defined(this.data)) {
+ return this.data[this.pageIndex].length;
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: getPosition
+ * Tells us where we are in the store
+ *
+ * Returns: an integer indicating the position in the store or null if
+ * there's an error
+ */
+ getPosition : function () {
+ if ($defined(this.data[this.pageIndex])) {
+ return this.index;
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: moveTo
+ * Moves the index to a specific record in the store
+ *
+ * Parameters:
+ * index - the record to move to
+ *
+ * Returns: true - if successful false - if not successful null - on error
+ */
+ moveTo : function (index) {
+ if ($defined(this.data) && index >= 0 && index < this.data[this.pageIndex].length) {
+ this.index = index;
+ this.fireEvent('storeMove', this);
+ return true;
+ } else if (!$defined(this.data)) {
+ return null;
+ } else {
+ return false;
+ }
+ },
+
+ /**
+ * APIMethod: get
+ * Retrieves the data for a specific column of the current
+ * record
+ *
+ * Parameters:
+ * col - the column to get (either an integer or a string)
+ *
+ * Returns: the data in the column or null if the column doesn't exist
+ */
+ get : function (col) {
+ if ($defined(this.data)) {
+ col = this.resolveCol(col);
+ var h = this.data[this.pageIndex][this.index];
+ if (h.has(col.name)) {
+ return h.get(col.name);
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: set
+ * Puts a value into a specific column of the current record and
+ * sets the dirty flag.
+ *
+ * Parameters:
+ * column - the column to put the value in value - the data to put
+ * into the column
+ *
+ * returns: nothing | null if an error
+ */
+ set : function (column, value) {
+ if ($defined(this.data)) {
+ // set the column to the value and set the dirty flag
+
+ if (Jx.type(column) === 'number' || Jx.type(column) === 'string') {
+ column = this.resolveCol(column);
+ }
+
+ var oldValue = this.data[this.pageIndex][this.index].get(column.name);
+ this.data[this.pageIndex][this.index].set(column.name, value);
+ this.data[this.pageIndex][this.index].set('dirty', true);
+ this.fireEvent('columnChanged', [ this.index, column, oldValue, value ]);
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: refresh
+ * Sets new data into the store
+ *
+ * Parameters:
+ * data - the data to set
+ * reset - flag as to whether to reset the index to 0
+ *
+ * Returns: nothing or null if no data is passed
+ */
+ refresh : function (data, reset) {
+ if ($defined(data)) {
+ this.processData(data);
+ if (reset) {
+ this.index = 0;
+ }
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: isDirty
+ * Tells us if the store is dirty and needs to be saved
+ *
+ * Returns: true | false | null on error
+ */
+ isDirty : function () {
+ if ($defined(this.data)) {
+ var dirty = false;
+ this.data.each(function (row) {
+ if (this.isRowDirty(row)) {
+ dirty = true;
+ return;
+ }
+ }, this);
+ return dirty;
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * APIMethod: newRow
+ * Adds a new row to the store. It can either be empty or made
+ * from an array of data
+ *
+ * Parameters:
+ * data - data to use in the new row (optional)
+ */
+ newRow : function (data) {
+ // check if array is not defined
+ if (!$defined(this.data)) {
+ // if not, then create a new array
+ this.data = [];
+ this.data[this.pageIndex] = [];
+ }
+
+ var d;
+
+ if (!$defined(data)) {
+ d = new Hash();
+ } else {
+ var t = Jx.type(data);
+ switch (t) {
+ case 'hash':
+ d = data;
+ break;
+ case 'object':
+ default:
+ d = new Hash(data);
+ break;
+ }
+ }
+ d.set('dirty', true);
+ this.data[this.pageIndex][this.data[this.pageIndex].length] = d;
+ this.index = this.data[this.pageIndex].length - 1;
+ this.fireEvent('newrow', this);
+ },
+
+ /**
+ * APIMethod: sort
+ * Runs the sorting and grouping
+ *
+ * Parameters:
+ * cols - Optional. An array of columns to sort/group by
+ * sort - the sort type (quick,heap,merge,native),defaults to options.defaultSort
+ * dir - the direction to sort. Set to "desc" for descending,
+ * anything else implies ascending (even null).
+ */
+ sort : function (cols, sort, dir) {
+
+ if (this.count()) {
+
+ this.fireEvent('sortStart', this);
+
+ var c;
+ if ($defined(cols) && Jx.type(cols) === 'array') {
+ c = this.options.sortCols = cols;
+ } else if ($defined(cols) && Jx.type(cols) === 'string') {
+ this.options.sortCols = [];
+ this.options.sortCols.push(cols);
+ c = this.options.sortCols;
+ } else if ($defined(this.options.sortCols)) {
+ c = this.options.sortCols;
+ } else {
+ return null;
+ }
+
+ this.sortType = sort;
+ // first sort on the first array item
+ this.data[this.pageIndex] = this.doSort(c[0], sort, this.data[this.pageIndex], true);
+
+ if (c.length > 1) {
+ this.data[this.pageIndex] = this.subSort(this.data[this.pageIndex], 0, 1);
+ }
+
+ if ($defined(dir) && dir === 'desc') {
+ this.data[this.pageIndex].reverse();
+ }
+
+ this.fireEvent('sortFinished', this);
+ }
+ },
+
+ /**
+ * Method: subSort
+ * Does the actual group sorting.
+ *
+ * Parameters:
+ * data - what to sort
+ * groupByCol - the column that determines the groups
+ * sortCol - the column to sort by
+ *
+ * returns: the result of the grouping/sorting
+ */
+ subSort : function (data, groupByCol, sortByCol) {
+
+ if (sortByCol >= this.options.sortCols.length) {
+ return data;
+ }
+ /**
+ * loop through the data array and create another array with just the
+ * items for each group. Sort that sub-array and then concat it
+ * to the result.
+ */
+ var result = [];
+ var sub = [];
+
+ var groupCol = this.options.sortCols[groupByCol];
+ var sortCol = this.options.sortCols[sortByCol];
+
+ var group = data[0].get(groupCol);
+ this.sorter.setColumn(sortCol);
+ for (var i = 0; i < data.length; i++) {
+ if (group === (data[i]).get(groupCol)) {
+ sub.push(data[i]);
+ } else {
+ // sort
+
+ if (sub.length > 1) {
+ result = result.concat(this.subSort(this.doSort(sortCol, this.sortType, sub, true), groupByCol + 1, sortByCol + 1));
+ } else {
+ result = result.concat(sub);
+ }
+
+ // change group
+ group = (data[i]).get(groupCol);
+ // clear sub
+ sub.empty();
+ // add to sub
+ sub.push(data[i]);
+ }
+ }
+
+ if (sub.length > 1) {
+ this.sorter.setData(sub);
+ result = result.concat(this.subSort(this.doSort(sortCol, this.sortType, sub, true), groupByCol + 1, sortByCol + 1));
+ } else {
+ result = result.concat(sub);
+ }
+
+ //this.data = result;
+
+ return result;
+ },
+
+ /**
+ * Method: doSort
+ * Called to change the sorting of the data
+ *
+ * Parameters:
+ * col - the column to sort by
+ * sort - the kind of sort to use (see list above)
+ * data - the data to sort (leave blank or pass null to sort data
+ * existing in the store)
+ * ret - flag that tells the function whether to pass
+ * back the sorted data or store it in the store
+ * options - any options needed to pass to the sorter upon creation
+ *
+ * returns: nothing or the data depending on the value of ret parameter.
+ */
+ doSort : function (col, sort, data, ret, options) {
+ options = {} || options;
+
+ sort = (sort) ? this.sorters[sort] : this.sorters[this.options.defaultSort];
+ data = data ? data : this.data;
+ ret = ret ? true : false;
+
+ if (!$defined(this.comparator)) {
+ this.comparator = new Jx.Compare({
+ separator : this.options.separator
+ });
+ }
+
+ this.col = col = this.resolveCol(col);
+
+ var fn = this.comparator[col.type].bind(this.comparator);
+ if (!$defined(this.sorter)) {
+ this.sorter = new Jx.Sort[sort](data, fn, col.name, options);
+ } else {
+ this.sorter.setComparator(fn);
+ this.sorter.setColumn(col.name);
+ this.sorter.setData(data);
+ }
+ var d = this.sorter.sort();
+
+ if (ret) {
+ return d;
+ } else {
+ this.data = d;
+ }
+ },
+
+ /**
+ * Method: isRowDirty
+ * Helps determine if a row is dirty
+ *
+ * Parameters:
+ * row - the row to check
+ *
+ * Returns: true | false
+ */
+ isRowDirty : function (row) {
+ if (row.has('dirty')) {
+ return row.get('dirty');
+ } else {
+ return false;
+ }
+ },
+
+ /**
+ * Method: resolveCol
+ * Determines which array index this column refers to
+ *
+ * Parameters:
+ * col - a number referencing a column in the store
+ *
+ * Returns: the name of the column
+ */
+ resolveCol : function (col) {
+ var t = Jx.type(col);
+ if (t === 'number') {
+ col = this.options.columns[col];
+ } else if (t === 'string') {
+ this.options.columns.each(function (column) {
+ if (column.name === col) {
+ col = column;
+ }
+ }, this);
+ }
+ return col;
+ },
+
+ /**
+ * Method: processData
+ * Processes the data passed into the function into the store.
+ *
+ * Parameters:
+ * data - the data to put into the store
+ */
+ processData : function (data) {
+ this.loaded = false;
+ this.fireEvent('preload', [ this, data ]);
+
+ if (!$defined(this.data)) {
+ this.data = [];
+ this.data[this.pageIndex] = [];
+ }
+
+ if ($defined(data)) {
+ this.data[this.pageIndex].empty();
+ var type = Jx.type(data);
+ // is this an array?
+ if (type === 'array') {
+ if (this.options.paginate) {
+ var i = 1;
+ var p = 0;
+ data.each(function (item) {
+ this.data[p].include(new Hash(item));
+ i++;
+ if (i === this.options.pageSize) {
+ i = 1;
+ p++;
+ this.data[p] = [];
+ }
+ }, this);
+ } else {
+ data.each(function (item, index) {
+ this.data[this.pageIndex].include(new Hash(item));
+ }, this);
+ }
+
+ this.loaded = true;
+ this.fireEvent('loadFinished', this);
+ } else {
+ this.fireEvent('loadError', [this, data]);
+ }
+
+ } else {
+ this.loaded = false;
+ this.fireEvent('loadError', [ this, data ]);
+ }
+ },
+
+ /**
+ * APIMethod: getColumns
+ * Allows retrieving the columns array
+ */
+ getColumns: function () {
+ return this.options.columns;
+ },
+
+ /**
+ * APIMethod: findByColumn
+ * Used to find a specific record by the value in a specific column. This
+ * is particularly useful for finding records by a unique id column. The search
+ * will stop on the first instance of the value
+ *
+ * Parameters:
+ * column - the name of the column to search by
+ * value - the value to look for
+ * inPage - flag telling method whether to search only in the current page.
+ * Defaults to true.
+ */
+ findByColumn: function (column, value, inPage) {
+
+ inPage = $defined(inPage) ? inPage : true;
+
+ if (!$defined(this.comparator)) {
+ this.comparator = new Jx.Compare({
+ separator : this.options.separator
+ });
+ }
+
+ column = this.resolveCol(column);
+
+ var fn = this.comparator[column.type].bind(this.comparator);
+
+
+ var i = 0;
+ var index = null;
+ if (inPage) {
+ this.data[this.pageIndex].each(function (record) {
+ if (fn(record.get(column.name), value) === 0) {
+ index = i;
+ }
+ i++;
+ }, this);
+ } else {
+ this.data.each(function (page) {
+ page.each(function (record) {
+ if (fn(record.get(column.name), value) === 0) {
+ index = i;
+ }
+ i++;
+ }, this);
+ }, this);
+ }
+ return index;
+ },
+
+ /**
+ * APIMethod: getRowObject
+ * Allows the user to get all of the data for the current row as an object.
+ *
+ */
+ getRowObject: function () {
+ return this.data[this.pageIndex][this.index].getClean();
+ }
+});
// $Id: $
/**
- * Class: Jx.Store
- *
- * Extends: <Jx.Object>
- *
- * This class is the base store. It keeps track of data. It
- * allows adding, deleting, iterating, sorting etc...
- *
- * Events: onLoadFinished(store) - fired when the store finishes loading the
- * data onLoadError(store,data) - fired when there is an error loading the data
- *
- * Example:
- * (code)
- * (end)
- *
- * License:
- * Copyright (c) 2009, Jon Bomgardner.
- *
- * This file is licensed under an MIT style license
- */
-
-Jx.Store = new Class({
-
- Extends : Jx.Object,
-
- Family : "Jx.Store",
-
- options : {
- /**
- * Option: id
- * the identifier for this store
- */
- id : null,
- /**
- * Option: columns
- * an array listing the columns of the store in order of their
- * appearance in the data object formatted as an object
- * {name: 'column name', type: 'column type'}
- * where type can be one of alphanumeric, numeric, date, boolean,
- * or currency.
- */
- columns : [],
- /**
- * Option: defaultSort
- * The default sorting type, currently set to merge but can be any of the
- * sorters available
- */
- defaultSort : 'merge',
- /**
- * Option: separator
- * The separator to pass to the comparator
- * constructor (<Jx.Compare>) - defaults to '.'
- */
- separator : '.',
- /**
- * Option: sortCols
- * An array of columns to sort by arranged in the order you want
- * them sorted.
- */
- sortCols : [],
- /**
- * Event: onLoadFinished(store)
- * event for a completed, successful data load
- */
- onLoadFinished : $empty,
- /**
- * Event: onLoadError(store,data)
- * event for an unsuccessful load
- */
- onLoadError : $empty,
- /**
- * Event: onColumnChanged
- * event fired for changes to a column
- */
- onColumnChanged : $empty,
- /**
- * Option: paginate
- * Set to true to enable pagination
- */
- paginate: false,
- /**
- * Option: pageSize
- * Sets the size of each page. Only used if paginate is true.
- */
- pageSize: 0
-
- },
-
- /**
- * Property: sorters
- * an object listing the different sorters available
- */
- sorters : {
- quick : "Quicksort",
- merge : "Mergesort",
- heap : "Heapsort",
- 'native' : "Nativesort"
- },
- /**
- * Property: data
- * Holds the data for this store
- */
- data : null,
- /**
- * Property: index
- * Holds the current position of the store relative to the data and the pageIndex.
- * Zero-based index.
- */
- index : 0,
- /**
- * Property: pageIndex
- * Holds the current page index
- */
- pageIndex: 0,
- /**
- * Property: dirty
- * Tells us if the store is dirty
- */
- dirty : false,
- /**
- * Property: id
- * The id of this store.
- */
- id : null,
- /**
- * Property: loaded
- * Tells whether the store has been loaded or not
- */
- loaded: false,
-
- /**
- * APIMethod: load
- * Loads data into the store.
- *
- * Parameters:
- * data - the data to load
- */
- load : function (data) {
- if ($defined(data)) {
- this.loaded = false;
- this.processData(data);
-
- } else {
- this.loaded = false;
- }
- },
-
- /**
- * APIMethod: hasNext
- * Determines if there are more records past the current
- * one.
- *
- * Returns: true | false (Null if there's a problem)
- */
- hasNext : function () {
- if ($defined(this.data)) {
- if (this.index < this.data[this.pageIndex].length - 1) {
- return true;
- } else {
- return false;
- }
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: hasPrevious
- * Determines if there are records before the current
- * one.
- *
- * Returns: true | false
- */
- hasPrevious : function () {
- if ($defined(this.data)) {
- if (this.index > 0) {
- return true;
- } else {
- return false;
- }
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: valid
- * Tells us if the current index has any data (i.e. that the
- * index is valid).
- *
- * Returns: true | false
- */
- valid : function () {
- return ($defined(this.data[this.pageIndex][this.index]));
- },
-
- /**
- * APIMethod: next
- * Moves the store to the next record
- *
- * Returns: nothing | null if error
- */
- next : function () {
- if ($defined(this.data)) {
- this.index++;
- if (this.index === this.data[this.pageIndex].length) {
- this.index = this.data[this.pageIndex].length - 1;
- }
- this.fireEvent('storeMove', this);
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: previous
- * moves the store to the previous record
- *
- * Returns: nothing | null if error
- *
- */
- previous : function () {
- if ($defined(this.data)) {
- this.index--;
- if (this.index < 0) {
- this.index = 0;
- }
- this.fireEvent('storeMove', this);
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: first
- * Moves the store to the first record
- *
- * Returns: nothing | null if error
- *
- */
- first : function () {
- if ($defined(this.data)) {
- this.index = 0;
- this.fireEvent('storeMove', this);
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: last
- * Moves to the last record in the store
- *
- * Returns: nothing | null if error
- */
- last : function () {
- if ($defined(this.data)) {
- this.index = this.data[this.pageIndex].length - 1;
- this.fireEvent('storeMove', this);
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: count
- * Returns the number of records in the store
- *
- * Returns: an integer indicating the number of records in the store or null
- * if there's an error
- */
- count : function () {
- if ($defined(this.data)) {
- return this.data[this.pageIndex].length;
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: getPosition
- * Tells us where we are in the store
- *
- * Returns: an integer indicating the position in the store or null if
- * there's an error
- */
- getPosition : function () {
- if ($defined(this.data[this.pageIndex])) {
- return this.index;
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: moveTo
- * Moves the index to a specific record in the store
- *
- * Parameters:
- * index - the record to move to
- *
- * Returns: true - if successful false - if not successful null - on error
- */
- moveTo : function (index) {
- if ($defined(this.data) && index >= 0 && index < this.data[this.pageIndex].length) {
- this.index = index;
- this.fireEvent('storeMove', this);
- return true;
- } else if (!$defined(this.data)) {
- return null;
- } else {
- return false;
- }
- },
-
- /**
- * APIMethod: get
- * Retrieves the data for a specific column of the current
- * record
- *
- * Parameters:
- * col - the column to get (either an integer or a string)
- *
- * Returns: the data in the column or null if the column doesn't exist
- */
- get : function (col) {
- if ($defined(this.data)) {
- col = this.resolveCol(col);
- var h = this.data[this.pageIndex][this.index];
- if (h.has(col.name)) {
- return h.get(col.name);
- } else {
- return null;
- }
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: set
- * Puts a value into a specific column of the current record and
- * sets the dirty flag.
- *
- * Parameters:
- * column - the column to put the value in value - the data to put
- * into the column
- *
- * returns: nothing | null if an error
- */
- set : function (column, value) {
- if ($defined(this.data)) {
- // set the column to the value and set the dirty flag
-
- if (Jx.type(column) === 'number' || Jx.type(column) === 'string') {
- column = this.resolveCol(column);
- }
-
- var oldValue = this.data[this.pageIndex][this.index].get(column.name);
- this.data[this.pageIndex][this.index].set(column.name, value);
- this.data[this.pageIndex][this.index].set('dirty', true);
- this.fireEvent('columnChanged', [ this.index, column, oldValue, value ]);
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: refresh
- * Sets new data into the store
- *
- * Parameters:
- * data - the data to set
- * reset - flag as to whether to reset the index to 0
- *
- * Returns: nothing or null if no data is passed
- */
- refresh : function (data, reset) {
- if ($defined(data)) {
- this.processData(data);
- if (reset) {
- this.index = 0;
- }
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: isDirty
- * Tells us if the store is dirty and needs to be saved
- *
- * Returns: true | false | null on error
- */
- isDirty : function () {
- if ($defined(this.data)) {
- var dirty = false;
- this.data.each(function (row) {
- if (this.isRowDirty(row)) {
- dirty = true;
- return;
- }
- }, this);
- return dirty;
- } else {
- return null;
- }
- },
-
- /**
- * APIMethod: newRow
- * Adds a new row to the store. It can either be empty or made
- * from an array of data
- *
- * Parameters:
- * data - data to use in the new row (optional)
- */
- newRow : function (data) {
- // check if array is not defined
- if (!$defined(this.data)) {
- // if not, then create a new array
- this.data = [];
- this.data[this.pageIndex] = [];
- }
-
- var d;
-
- if (!$defined(data)) {
- d = new Hash();
- } else {
- var t = Jx.type(data);
- switch (t) {
- case 'object':
- d = new Hash(data);
- break;
- case 'hash':
- d = data;
- break;
- }
- }
- d.set('dirty', true);
- this.data[this.pageIndex][this.data[this.pageIndex].length] = d;
- this.index = this.data[this.pageIndex].length - 1;
- this.fireEvent('newrow', this);
- },
-
- /**
- * APIMethod: sort
- * Runs the sorting and grouping
- *
- * Parameters:
- * cols - Optional. An array of columns to sort/group by
- * sort - the sort type (quick,heap,merge,native),defaults to options.defaultSort
- * dir - the direction to sort. Set to "desc" for descending,
- * anything else implies ascending (even null).
- */
- sort : function (cols, sort, dir) {
-
- if (this.count()) {
-
- this.fireEvent('sortStart', this);
-
- var c;
- if ($defined(cols) && Jx.type(cols) === 'array') {
- c = this.options.sortCols = cols;
- } else if ($defined(cols) && Jx.type(cols) === 'string') {
- this.options.sortCols = [];
- this.options.sortCols.push(cols);
- c = this.options.sortCols;
- } else if ($defined(this.options.sortCols)) {
- c = this.options.sortCols;
- } else {
- return null;
- }
-
- this.sortType = sort;
- // first sort on the first array item
- this.data[this.pageIndex] = this.doSort(c[0], sort, this.data[this.pageIndex], true);
-
- if (c.length > 1) {
- this.data[this.pageIndex] = this.subSort(this.data[this.pageIndex], 0, 1);
- }
-
- if ($defined(dir) && dir === 'desc') {
- this.data[this.pageIndex].reverse();
- }
-
- this.fireEvent('sortFinished', this);
- }
- },
-
- /**
- * Method: subSort
- * Does the actual group sorting.
- *
- * Parameters:
- * data - what to sort
- * groupByCol - the column that determines the groups
- * sortCol - the column to sort by
- *
- * returns: the result of the grouping/sorting
- */
- subSort : function (data, groupByCol, sortByCol) {
-
- if (sortByCol >= this.options.sortCols.length) {
- return data;
- }
- /**
- * loop through the data array and create another array with just the
- * items for each group. Sort that sub-array and then concat it
- * to the result.
- */
- var result = [];
- var sub = [];
-
- var groupCol = this.options.sortCols[groupByCol];
- var sortCol = this.options.sortCols[sortByCol];
-
- var group = data[0].get(groupCol);
- this.sorter.setColumn(sortCol);
- for (var i = 0; i < data.length; i++) {
- if (group === (data[i]).get(groupCol)) {
- sub.push(data[i]);
- } else {
- // sort
-
- if (sub.length > 1) {
- result = result.concat(this.subSort(this.doSort(sortCol, this.sortType, sub, true), groupByCol + 1, sortByCol + 1));
- } else {
- result = result.concat(sub);
- }
-
- // change group
- group = (data[i]).get(groupCol);
- // clear sub
- sub.empty();
- // add to sub
- sub.push(data[i]);
- }
- }
-
- if (sub.length > 1) {
- this.sorter.setData(sub);
- result = result.concat(this.subSort(this.doSort(sortCol, this.sortType, sub, true), groupByCol + 1, sortByCol + 1));
- } else {
- result = result.concat(sub);
- }
-
- //this.data = result;
-
- return result;
- },
-
- /**
- * Method: doSort
- * Called to change the sorting of the data
- *
- * Parameters:
- * col - the column to sort by
- * sort - the kind of sort to use (see list above)
- * data - the data to sort (leave blank or pass null to sort data
- * existing in the store)
- * ret - flag that tells the function whether to pass
- * back the sorted data or store it in the store
- * options - any options needed to pass to the sorter upon creation
- *
- * returns: nothing or the data depending on the value of ret parameter.
- */
- doSort : function (col, sort, data, ret, options) {
- options = {} || options;
-
- sort = (sort) ? this.sorters[sort] : this.sorters[this.options.defaultSort];
- data = data ? data : this.data;
- ret = ret ? true : false;
-
- if (!$defined(this.comparator)) {
- this.comparator = new Jx.Compare({
- separator : this.options.separator
- });
- }
-
- this.col = col = this.resolveCol(col);
-
- var fn = this.comparator[col.type].bind(this.comparator);
- if (!$defined(this.sorter)) {
- this.sorter = new Jx.Sort[sort](data, fn, col.name, options);
- } else {
- this.sorter.setComparator(fn);
- this.sorter.setColumn(col.name);
- this.sorter.setData(data);
- }
- var d = this.sorter.sort();
-
- if (ret) {
- return d;
- } else {
- this.data = d;
- }
- },
-
- /**
- * Method: isRowDirty
- * Helps determine if a row is dirty
- *
- * Parameters:
- * row - the row to check
- *
- * Returns: true | false
- */
- isRowDirty : function (row) {
- if (row.has('dirty')) {
- return row.get('dirty');
- } else {
- return false;
- }
- },
-
- /**
- * Method: resolveCol
- * Determines which array index this column refers to
- *
- * Parameters:
- * col - a number referencing a column in the store
- *
- * Returns: the name of the column
- */
- resolveCol : function (col) {
- var t = Jx.type(col);
- if (t === 'number') {
- col = this.options.columns[col];
- } else if (t === 'string') {
- this.options.columns.each(function (column) {
- if (column.name === col) {
- col = column;
- }
- }, this);
- }
- return col;
- },
-
- /**
- * Method: processData
- * Processes the data passed into the function into the store.
- *
- * Parameters:
- * data - the data to put into the store
- */
- processData : function (data) {
- this.loaded = false;
- this.fireEvent('preload', [ this, data ]);
-
- if (!$defined(this.data)) {
- this.data = [];
- this.data[this.pageIndex] = [];
- }
-
- if ($defined(data)) {
- this.data[this.pageIndex].empty();
- var type = Jx.type(data);
- // is this an array?
- if (type === 'array') {
- if (this.options.paginate) {
- var i = 1;
- var p = 0;
- data.each(function (item) {
- this.data[p].include(new Hash(item));
- i++;
- if (i === this.options.pageSize) {
- i = 1;
- p++;
- this.data[p] = [];
- }
- }, this);
- } else {
- data.each(function (item, index) {
- this.data[this.pageIndex].include(new Hash(item));
- }, this);
- }
-
- this.loaded = true;
- this.fireEvent('loadFinished', this);
- } else {
- this.fireEvent('loadError', [this, data]);
- }
-
- } else {
- this.loaded = false;
- this.fireEvent('loadError', [ this, data ]);
- }
- },
-
- /**
- * APIMethod: getColumns
- * Allows retrieving the columns array
- */
- getColumns: function () {
- return this.options.columns;
- },
-
- /**
- * APIMethod: findByColumn
- * Used to find a specific record by the value in a specific column. This
- * is particularly useful for finding records by a unique id column. The search
- * will stop on the first instance of the value
- *
- * Parameters:
- * column - the name of the column to search by
- * value - the value to look for
- * inPage - flag telling method whether to search only in the current page.
- * Defaults to true.
- */
- findByColumn: function (column, value, inPage) {
-
- inPage = $defined(inPage) ? inPage : true;
-
- if (!$defined(this.comparator)) {
- this.comparator = new Jx.Compare({
- separator : this.options.separator
- });
- }
-
- column = this.resolveCol(column);
-
- var fn = this.comparator[column.type].bind(this.comparator);
-
-
- var i = 0;
- var index = null;
- if (inPage) {
- this.data[this.pageIndex].each(function (record) {
- if (fn(record.get(column.name), value) === 0) {
- index = i;
- }
- i++;
- }, this);
- } else {
- this.data.each(function (page) {
- page.each(function (record) {
- if (fn(record.get(column.name), value) === 0) {
- index = i;
- }
- i++;
- }, this);
- }, this);
- }
- return index;
- },
-
- /**
- * APIMethod: getRowObject
- * Allows the user to get all of the data for the current row as an object.
- *
- */
- getRowObject: function () {
- return this.data[this.pageIndex][this.index].getClean();
- }
-});
-// $Id: $
-/**
* Class: Jx.Store.Remote
*
* Extends: <Jx.Store>
@@ -17492,7 +17515,7 @@
}
});
-// $Id: button.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+// $Id: button.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Button
*
@@ -17624,6 +17647,11 @@
* default true, whether the button is a toggle button or not.
*/
toggle: false,
+
+ toggleClass: 'jxButtonToggle',
+ pressedClass: 'jxButtonPressed',
+ activeClass: 'jxButtonActive',
+
/* Option: active
* optional, default false. Controls the initial state of toggle
* buttons.
@@ -17641,25 +17669,24 @@
*/
template: '<span class="jxButtonContainer"><a class="jxButton"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel"></span></span></a></span>'
},
- type: 'Button',
- classes: ['jxButtonContainer', 'jxButton','jxButtonIcon','jxButtonLabel'],
- elements: null,
+
+ classes: new Hash({
+ domObj: 'jxButtonContainer',
+ domA: 'jxButton',
+ domImg: 'jxButtonIcon',
+ domLabel: 'jxButtonLabel'
+ }),
+
/**
* APIMethod: render
* create a new button.
*/
render: function() {
this.parent();
- this.elements = this.processTemplate(this.options.template, this.classes);
- this.domObj = this.elements.get('jx'+this.type+'Container');
- this.domA = this.elements.get('jx'+this.type);
- this.domImg = this.elements.get('jx'+this.type+'Icon');
- this.domLabel = this.elements.get('jx'+this.type + 'Label');
-
/* is the button toggle-able? */
if (this.options.toggle) {
- this.domObj.addClass('jx'+this.type+'Toggle');
+ this.domObj.addClass(this.options.toggleClass);
}
// the clickable part of the button
@@ -17675,31 +17702,31 @@
click: this.clicked.bindWithEvent(this),
drag: (function(e) {e.stop();}).bindWithEvent(this),
mousedown: (function(e) {
- this.domA.addClass('jx'+this.type+'Pressed');
+ this.domA.addClass(this.options.pressedClass);
hasFocus = true;
mouseDown = true;
this.focus();
}).bindWithEvent(this),
mouseup: (function(e) {
- this.domA.removeClass('jx'+this.type+'Pressed');
+ this.domA.removeClass(this.options.pressedClass);
mouseDown = false;
}).bindWithEvent(this),
mouseleave: (function(e) {
- this.domA.removeClass('jx'+this.type+'Pressed');
+ this.domA.removeClass(this.options.pressedClass);
}).bindWithEvent(this),
mouseenter: (function(e) {
if (hasFocus && mouseDown) {
- this.domA.addClass('jx'+this.type+'Pressed');
+ this.domA.addClass(this.options.pressedClass);
}
}).bindWithEvent(this),
keydown: (function(e) {
if (e.key == 'enter') {
- this.domA.addClass('jx'+this.type+'Pressed');
+ this.domA.addClass(this.options.pressedClass);
}
}).bindWithEvent(this),
keyup: (function(e) {
if (e.key == 'enter') {
- this.domA.removeClass('jx'+this.type+'Pressed');
+ this.domA.removeClass(this.options.pressedClass);
}
}).bindWithEvent(this),
blur: function() { hasFocus = false; }
@@ -17731,10 +17758,11 @@
}
if (this.domLabel) {
- if (this.options.label) {
+ if (this.options.label || this.domA.hasClass('jxDiscloser')) {
this.domLabel.set('html',this.options.label);
} else {
- this.domLabel.removeClass('jx'+this.type+'Label');
+ //this.domLabel.removeClass('jx'+this.type+'Label');
+ this.domLabel.setStyle('display','none');
}
}
@@ -17819,13 +17847,14 @@
return;
}
this.options.active = active;
- if (this.options.active) {
- this.domA.addClass('jx'+this.type+'Active');
- this.fireEvent('down', this);
- } else {
- this.domA.removeClass('jx'+this.type+'Active');
- this.fireEvent('up', this);
+ if (this.domA) {
+ if (this.options.active) {
+ this.domA.addClass(this.options.activeClass);
+ } else {
+ this.domA.removeClass(this.options.activeClass);
+ }
}
+ this.fireEvent(active ? 'down':'up', this);
},
/**
* Method: setImage
@@ -17855,11 +17884,7 @@
this.options.label = label;
if (this.domLabel) {
this.domLabel.set('html', label);
- if (!label && this.domLabel.hasClass('jxButtonLabel')) {
- this.domLabel.removeClass('jxButtonLabel');
- } else if (label && !this.domLabel.hasClass('jxButtonLabel')) {
- this.domLabel.addClass('jxButtonLabel');
- }
+ this.domLabel.setStyle('display', label || this.domA.hasClass('jxDiscloser') ? null : 'none');
}
},
/**
@@ -17890,17 +17915,21 @@
* capture the keyboard focus on this button
*/
focus: function() {
- this.domA.focus();
+ if (this.domA) {
+ this.domA.focus();
+ }
},
/**
* Method: blur
* remove the keyboard focus from this button
*/
blur: function() {
- this.domA.blur();
+ if (this.domA) {
+ this.domA.blur();
+ }
}
});
-// $Id: flyout.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+// $Id: flyout.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Button.Flyout
*
@@ -17965,6 +17994,16 @@
Family: 'Jx.Button.Flyout',
Extends: Jx.Button,
+ options: {
+ template: '<span class="jxButtonContainer"><a class="jxButton jxButtonFlyout jxDiscloser"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel "></span></a></span>',
+ contentTemplate: '<div class="jxFlyout"><div class="jxFlyoutContent"></div></div>'
+ },
+
+ contentClasses: new Hash({
+ contentContainer: 'jxFlyout',
+ content: 'jxFlyoutContent'
+ }),
+
/**
* Property: content
* the HTML element that contains the flyout content
@@ -17979,19 +18018,11 @@
Jx.Button.Flyout.Stack = [];
}
this.parent();
- this.domA.addClass('jx'+this.type+'Flyout');
+ this.processElements(this.options.contentTemplate, this.contentClasses);
- this.contentContainer = new Element('div',{
- 'class':'jxFlyout'
- });
-
- this.content = new Element('div', {
- 'class': 'jxFlyoutContent'
- });
if (this.options.contentClass) {
this.content.addClass(this.options.contentClass);
}
- this.contentContainer.adopt(this.content);
this.content.store('jxFlyout', this);
this.loadContent(this.content);
@@ -18052,7 +18083,7 @@
Jx.Button.Flyout.Stack.push(this);
this.options.active = true;
- this.domA.addClass('jx'+this.type+'Active');
+ this.domA.addClass(this.options.activeClass);
this.contentContainer.setStyle('visibility','hidden');
document.id(document.body).adopt(this.contentContainer);
this.content.getChildren().each(function(child) {
@@ -18111,7 +18142,7 @@
Jx.Button.Flyout.Stack[Jx.Button.Flyout.Stack.length - 1].hide();
}
}
-});// $Id: layout.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+});// $Id: layout.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Layout
*
@@ -18365,7 +18396,7 @@
l = 0;
w = parentSize.width;
if (this.options.maxWidth >= 0 && w > this.options.maxWidth) {
- l = l + parseInt(w - this.options.maxWidth)/2;
+ l = l + parseInt(w - this.options.maxWidth,10)/2;
w = this.options.maxWidth;
}
} else {
@@ -18373,7 +18404,7 @@
* distribute space between left and right
*/
w = this.options.width;
- l = parseInt((parentSize.width - w)/2);
+ l = parseInt((parentSize.width - w)/2,10);
if (l < 0) {
l = 0;
}
@@ -18463,7 +18494,7 @@
h = this.options.minHeight;
}
if (this.options.maxHeight >= 0 && h > this.options.maxHeight) {
- t = parseInt((parentSize.height - this.options.maxHeight)/2);
+ t = parseInt((parentSize.height - this.options.maxHeight)/2,10);
h = this.options.maxHeight;
}
} else {
@@ -18471,7 +18502,7 @@
* distribute space between top and bottom
*/
h = this.options.height;
- t = parseInt((parentSize.height - h)/2);
+ t = parseInt((parentSize.height - h)/2,10);
if (t < 0) {
t = 0;
}
@@ -18537,7 +18568,7 @@
this.fireEvent('sizeChange',this);
}
-});// $Id: tab.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+});// $Id: tab.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Button.Tab
*
@@ -18590,10 +18621,21 @@
content: null,
options: {
- template: '<div class="jxTabContainer"><a class="jxTab"><span class="jxTabContent"><img class="jxTabIcon"><span class="jxTabLabel"></span></span></a><a class="jxTabClose"><img src="'+Jx.aPixel.src+'"></a></div>'
+ toggleClass: 'jxTabToggle',
+ pressedClass: 'jxTabPressed',
+ activeClass: 'jxTabActive',
+ activeTabClass: 'tabContentActive',
+ template: '<span class="jxTabContainer"><a class="jxTab"><span class="jxTabContent"><img class="jxTabIcon"><span class="jxTabLabel"></span></span></a><a class="jxTabClose"><img src="'+Jx.aPixel.src+'"></a></span>',
+ contentTemplate: '<div class="tabContent"></div>'
},
- type: 'Tab',
- classes: ['jxTabContainer','jxTab','jxTabIcon','jxTabLabel','jxTabClose'],
+ classes: new Hash({
+ domObj: 'jxTabContainer',
+ domA: 'jxTab',
+ domImg: 'jxTabIcon',
+ domLabel: 'jxTabLabel',
+ domClose: 'jxTabClose',
+ content: 'tabContent'
+ }),
/**
* APIMethod: render
@@ -18603,23 +18645,26 @@
render : function( ) {
this.options = $merge(this.options, {toggle:true});
this.parent();
- this.content = new Element('div', {'class':'tabContent'});
+ this.domObj.store('jxTab', this);
+ this.processElements(this.options.contentTemplate, this.classes);
new Jx.Layout(this.content, this.options);
this.loadContent(this.content);
- var that = this;
- this.addEvent('down', function(){that.content.addClass('tabContentActive');});
- this.addEvent('up', function(){that.content.removeClass('tabContentActive');});
+ this.addEvent('down', function(){
+ this.content.addClass(this.options.activeTabClass);
+ }.bind(this));
+ this.addEvent('up', function(){
+ this.content.removeClass(this.options.activeTabClass);
+ }.bind(this));
//remove the close button if necessary
- var closer = this.elements.get('jx'+this.type+'Close');
- if (closer) {
+ if (this.domClose) {
if (this.options.close) {
- this.domObj.addClass('jx'+this.type+'Close');
- closer.addEvent('click', (function(){
+ this.domObj.addClass('jxTabClose');
+ this.domClose.addEvent('click', (function(){
this.fireEvent('close');
}).bind(this));
} else {
- closer.dispose();
+ this.domClose.dispose();
}
}
},
@@ -18633,7 +18678,7 @@
this.setActive(true);
}
}
-});// $Id: colorpalette.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+});// $Id: colorpalette.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.ColorPalette
*
@@ -18789,7 +18834,7 @@
/* remainder of the columns are built
* based on the current row/column
*/
- r = parseInt(i/6)*3 + parseInt(j/6);
+ r = parseInt(i/6,10)*3 + parseInt(j/6,10);
g = j%6;
b = i%6;
}
@@ -18918,7 +18963,7 @@
this.colorInput.value = this.options.color.substring(1);
- this.alphaInput.value = parseInt(this.options.alpha*100);
+ this.alphaInput.value = parseInt(this.options.alpha*100,10);
if (this.options.alpha < 1) {
styles.opacity = this.options.alpha;
styles.filter = 'Alpha(opacity='+(this.options.alpha*100)+')';
@@ -18932,7 +18977,7 @@
}
});
-// $Id: color.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+// $Id: color.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Button.Color
*
@@ -18985,9 +19030,17 @@
* (opaque) if not specified.
*
*/
- alpha: 100
+ alpha: 100,
+ template: '<span class="jxButtonContainer"><a class="jxButton jxButtonFlyout jxDiscloser"><span class="jxButtonContent"><span class="jxButtonSwatch"><span class="jxButtonSwatchColor"></span></span><span class="jxButtonLabel"></span></span></a></span>'
},
+ classes: new Hash({
+ domObj: 'jxButtonContainer',
+ domA: 'jxButton',
+ swatch: 'jxButtonSwatchColor',
+ domLabel: 'jxButtonLabel'
+ }),
+
/**
* APIMethod: render
* creates a new color button.
@@ -18996,23 +19049,19 @@
if (!Jx.Button.Color.ColorPalette) {
Jx.Button.Color.ColorPalette = new Jx.ColorPalette(this.options);
}
- var d = new Element('span', {'class':'jxButtonSwatch'});
- this.selectedSwatch = new Element('span');
- d.appendChild(this.selectedSwatch);
-
- this.colorChangeFn = this.changed.bind(this);
- this.hideFn = this.hide.bind(this);
/* we need to have an image to replace, but if a label is
requested, there wouldn't normally be an image. */
this.options.image = Jx.aPixel.src;
/* now we can safely initialize */
this.parent();
+ this.updateSwatch();
- // now replace the image with our swatch
- d.replaces(this.domImg);
- this.updateSwatch();
+ this.bound = {
+ changed: this.changed.bind(this),
+ hide: this.hide.bind(this)
+ };
},
/**
@@ -19024,8 +19073,8 @@
Jx.Button.Color.ColorPalette.currentButton.hide();
}
Jx.Button.Color.ColorPalette.currentButton = this;
- Jx.Button.Color.ColorPalette.addEvent('change', this.colorChangeFn);
- Jx.Button.Color.ColorPalette.addEvent('click', this.hideFn);
+ Jx.Button.Color.ColorPalette.addEvent('change', this.bound.changed);
+ Jx.Button.Color.ColorPalette.addEvent('click', this.bound.hide);
this.content.appendChild(Jx.Button.Color.ColorPalette.domObj);
Jx.Button.Color.ColorPalette.domObj.setStyle('display', 'block');
Jx.Button.Flyout.prototype.clicked.apply(this, arguments);
@@ -19045,8 +19094,8 @@
*/
hide: function() {
this.setActive(false);
- Jx.Button.Color.ColorPalette.removeEvent('change', this.colorChangeFn);
- Jx.Button.Color.ColorPalette.removeEvent('click', this.hideFn);
+ Jx.Button.Color.ColorPalette.removeEvent('change', this.bound.changed);
+ Jx.Button.Color.ColorPalette.removeEvent('click', this.bound.hide);
Jx.Button.Flyout.prototype.hide.apply(this, arguments);
Jx.Button.Color.ColorPalette.currentButton = null;
},
@@ -19113,10 +19162,10 @@
styles.opacity = '';
styles.filter = '';
}
- this.selectedSwatch.setStyles(styles);
+ this.swatch.setStyles(styles);
}
});
-// $Id: menu.js 582 2009-10-30 22:03:58Z pagameba $
+// $Id: menu.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Menu
*
@@ -19162,14 +19211,17 @@
options: {
template: "<div class='jxMenuContainer'><ul class='jxMenu'></ul></div>",
- buttonTemplate: '<span class="jxButtonContainer"><a class="jxButton jxButtonMenu"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel"></span></span></a></span>',
+ buttonTemplate: '<span class="jxButtonContainer"><a class="jxButton jxButtonMenu jxDiscloser"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel"></span></span></a></span>',
position: {
horizontal: ['left left'],
vertical: ['bottom top', 'top bottom']
}
},
- classes: ['jxMenuContainer','jxMenu'],
+ classes: new Hash({
+ contentContainer: 'jxMenuContainer',
+ subDomObj: 'jxMenu'
+ }),
/**
* APIMethod: render
@@ -19181,17 +19233,9 @@
Jx.Menu.Menus = [];
}
- this.elements = this.processTemplate(this.options.template, this.classes);
-
- this.contentContainer = this.elements.get('jxMenuContainer');
this.contentContainer.addEvent('onContextmenu', function(e){e.stop();});
- this.subDomObj = this.elements.get('jxMenu');
-
this.list = new Jx.List(this.subDomObj, {
- onAdd: function(item) {
- item.setOwner(this);
- }.bind(this),
onRemove: function(item) {
item.setOwner(null);
}.bind(this)
@@ -19208,11 +19252,14 @@
this.button.domA.addEvent('mouseover', this.onMouseOver.bindWithEvent(this));
this.domObj = this.button.domObj;
+ this.domObj.store('jxMenu', this);
}
/* pre-bind the hide function for efficiency */
- this.hideWatcher = this.hide.bindWithEvent(this);
- this.keypressWatcher = this.keypressHandler.bindWithEvent(this);
+ this.bound = {
+ mousedown: this.hide.bindWithEvent(this),
+ keypress: this.keypressHandler.bindWithEvent(this)
+ };
if (this.options.parent) {
this.addTo(this.options.parent);
@@ -19225,8 +19272,17 @@
* Parameters:
* item - {<Jx.MenuItem>} the menu item to add. Multiple menu items
* can be added by passing multiple arguments to this function.
+ * position -
+ * owner -
*/
- add: function(item, position) {
+ add: function(item, position, owner) {
+ if (Jx.type(item) == 'array') {
+ item.each(function(i){
+ i.setOwner(owner||this);
+ }, this);
+ } else {
+ item.setOwner(owner||this);
+ }
this.list.add(item, position);
return this;
},
@@ -19341,12 +19397,13 @@
Jx.Menu.Menus[0] = null;
}
if (this.button && this.button.domA) {
- this.button.domA.removeClass('jx'+this.button.options.type+'Active');
+ this.button.domA.removeClass(this.button.options.activeClass);
}
this.list.each(function(item){item.retrieve('jxMenuItem').hide(e);});
- document.removeEvent('mousedown', this.hideWatcher);
- document.removeEvent('keydown', this.keypressWatcher);
+ document.removeEvent('mousedown', this.bound.mousedown);
+ document.removeEvent('keydown', this.bound.keypress);
this.contentContainer.dispose();
+ this.visibleItem = null;
this.fireEvent('hide', this);
},
/**
@@ -19391,12 +19448,12 @@
this.contentContainer.setStyle('visibility','visible');
if (this.button && this.button.domA) {
- this.button.domA.addClass('jx'+this.button.options.type+'Active');
+ this.button.domA.addClass(this.button.options.activeClass);
}
/* fix bug in IE that closes the menu as it opens because of bubbling */
- document.addEvent('mousedown', this.hideWatcher);
- document.addEvent('keydown', this.keypressWatcher);
+ document.addEvent('mousedown', this.bound.mousedown);
+ document.addEvent('keydown', this.bound.keypress);
this.fireEvent('show', this);
},
/**
@@ -19425,7 +19482,7 @@
}
});
-// $Id: set.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+// $Id: set.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.ButtonSet
*
@@ -19483,19 +19540,18 @@
*/
add : function() {
$A(arguments).each(function(button) {
- if (button.domObj.hasClass('jx'+button.options.type+'Toggle')) {
- button.domObj.removeClass('jx'+button.options.type+'Toggle');
- button.domObj.addClass('jx'+button.options.type+'Set');
+ if (button.domObj.hasClass(button.options.toggleClass)) {
+ button.domObj.removeClass(button.options.toggleClass);
+ button.domObj.addClass(button.options.toggleClass+'Set');
}
button.addEvent('down',this.buttonChangedHandler);
- var that = this;
button.setActive = function(active) {
- if (this.options.active && that.activeButton == this) {
+ if (button.options.active && this.activeButton == button) {
return;
} else {
- Jx.Button.prototype.setActive.apply(this, [active]);
+ Jx.Button.prototype.setActive.apply(button, [active]);
}
- };
+ }.bind(this);
if (!this.activeButton || button.options.active) {
button.options.active = false;
button.setActive(true);
@@ -19547,11 +19603,7 @@
this.setActiveButton(button);
this.fireEvent('change', this);
}
-});
-
-
-
-// $Id: multi.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+});// $Id: multi.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Button.Multi
*
@@ -19624,9 +19676,16 @@
buttons: null,
options: {
- template: '<span class="jxButtonContainer"><a class="jxButton jxButtonMulti"><span class="jxButtonContent"><img src="'+Jx.aPixel.src+'" class="jxButtonIcon"><span class="jxButtonLabel"></span></span></a><a class="jxButtonDisclose" href="javascript:void(0)"><img src="'+Jx.aPixel.src+'"></a></span>'
+ template: '<span class="jxButtonContainer"><a class="jxButton jxButtonMulti jxDiscloser"><span class="jxButtonContent"><img src="'+Jx.aPixel.src+'" class="jxButtonIcon"><span class="jxButtonLabel"></span></span></a><a class="jxButtonDisclose" href="javascript:void(0)"><img src="'+Jx.aPixel.src+'"></a></span>'
},
- classes: ['jxButtonContainer','jxButton','jxButtonIcon','jxButtonLabel','jxButtonDisclose'],
+ classes: new Hash({
+ domObj: 'jxButtonContainer',
+ domA: 'jxButton',
+ domImg: 'jxButtonIcon',
+ domLabel: 'jxButtonLabel',
+ domDisclose: 'jxButtonDisclose'
+ }),
+
/**
* APIMethod: render
@@ -19642,14 +19701,13 @@
this.clickHandler = this.clicked.bind(this);
- var a = this.elements.get('jxButtonDisclose');
- if (a) {
+ if (this.domDisclose) {
var button = this;
var hasFocus;
- a.addEvents({
+ this.domDisclose.addEvents({
'click': (function(e) {
- if (this.items.length === 0) {
+ if (this.list.count() === 0) {
return;
}
if (!button.options.enabled) {
@@ -19658,9 +19716,10 @@
this.contentContainer.setStyle('visibility','hidden');
this.contentContainer.setStyle('display','block');
document.id(document.body).adopt(this.contentContainer);
- /* we have to size the container for IE to render the chrome correctly
- * but just in the menu/sub menu case - there is some horrible peekaboo
- * bug in IE related to ULs that we just couldn't figure out
+ /* we have to size the container for IE to render the chrome
+ * correctly but just in the menu/sub menu case - there is
+ * some horrible peekaboo bug in IE related to ULs that we
+ * just couldn't figure out
*/
this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());
@@ -19682,49 +19741,48 @@
'mouseenter':(function(){
document.id(this.domObj.firstChild).addClass('jxButtonHover');
if (hasFocus) {
- a.addClass('jx'+this.type+'Pressed');
+ this.domDisclose.addClass(this.options.pressedClass);
}
}).bind(this),
'mouseleave':(function(){
document.id(this.domObj.firstChild).removeClass('jxButtonHover');
- a.removeClass('jx'+this.type+'Pressed');
+ this.domDisclose.removeClass(this.options.pressedClass);
}).bind(this),
mousedown: (function(e) {
- a.addClass('jx'+this.type+'Pressed');
+ this.domDisclose.addClass(this.options.pressedClass);
hasFocus = true;
this.focus();
}).bindWithEvent(this),
mouseup: (function(e) {
- a.removeClass('jx'+this.type+'Pressed');
+ this.domDisclose.removeClass(this.options.pressedClass);
}).bindWithEvent(this),
keydown: (function(e) {
if (e.key == 'enter') {
- a.addClass('jx'+this.type+'Pressed');
+ this.domDisclose.addClass(this.options.pressedClass);
}
}).bindWithEvent(this),
keyup: (function(e) {
if (e.key == 'enter') {
- a.removeClass('jx'+this.type+'Pressed');
+ this.domDisclose.removeClass(this.options.pressedClass);
}
}).bindWithEvent(this),
blur: function() { hasFocus = false; }
});
if (typeof Drag != 'undefined') {
- new Drag(a, {
+ new Drag(this.domDisclose, {
onStart: function() {this.stop();}
});
}
- this.discloser = a;
}
this.menu.addEvents({
'show': (function() {
- this.domA.addClass('jx'+this.type+'Active');
+ this.domA.addClass(this.options.activeClass);
}).bind(this),
'hide': (function() {
if (this.options.active) {
- this.domA.addClass('jx'+this.type+'Active');
+ this.domA.addClass(this.options.activeClass);
}
}).bind(this)
});
@@ -19747,6 +19805,8 @@
if (!theButton instanceof Jx.Button) {
return;
}
+ theButton.domA.addClass('jxDiscloser');
+ theButton.setLabel(theButton.options.label);
this.buttons.push(theButton);
var f = this.setButton.bind(this, theButton);
var opts = {
@@ -19815,7 +19875,7 @@
setActiveButton: function(button) {
if (this.activeButton) {
this.activeButton.domA.dispose();
- this.activeButton.domA.removeEvent(this.clickHandler);
+ this.activeButton.domA.removeEvent('click', this.clickHandler);
}
if (button && button.domA) {
this.domObj.grab(button.domA, 'top');
@@ -19840,7 +19900,7 @@
this.setActiveButton(button);
button.clicked();
}
-});// $Id: menu.item.js 582 2009-10-30 22:03:58Z pagameba $
+});// $Id: menu.item.js 605 2009-11-10 21:45:28Z pagameba $
/**
* Class: Jx.Menu.Item
*
@@ -19876,6 +19936,9 @@
options: {
//image: null,
label: ' ',
+ toggleClass: 'jxMenuItemToggle',
+ pressedClass: 'jxMenuItemPressed',
+ activeClass: 'jxMenuItemActive',
/* Option: template
* the HTML structure of the button. As a minimum, there must be a
* containing element with a class of jxMenuItemContainer and an
@@ -19885,17 +19948,23 @@
*/
template: '<li class="jxMenuItemContainer"><a class="jxMenuItem"><span class="jxMenuItemContent"><img class="jxMenuItemIcon" src="'+Jx.aPixel.src+'"><span class="jxMenuItemLabel"></span></span></a></li>'
},
- classes: ['jxMenuItemContainer', 'jxMenuItem','jxMenuItemIcon','jxMenuItemLabel'],
- type: 'MenuItem',
+ classes: new Hash({
+ domObj:'jxMenuItemContainer',
+ domA: 'jxMenuItem',
+ domImg: 'jxMenuItemIcon',
+ domLabel: 'jxMenuItemLabel'
+ }),
/**
* APIMethod: render
* Create a new instance of Jx.Menu.Item
*/
render: function() {
- this.options = $merge({image: Jx.aPixel.src}, this.options);
+ if (!this.options.image) {
+ this.options.image = Jx.aPixel.src;
+ }
this.parent();
- if (this.options.image) {
- this.domObj.removeClass('jx'+this.type+'Toggle');
+ if (this.options.image && this.options.image != Jx.aPixel.src) {
+ this.domObj.removeClass(this.options.toggleClass);
}
this.domObj.addEvent('mouseover', this.onMouseOver.bind(this));
this.domObj.store('jxMenuItem', this);
@@ -19951,7 +20020,7 @@
}
});
-// $Id: combo.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+// $Id: combo.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Button.Combo
*
@@ -20000,7 +20069,7 @@
label: '',
/* Option: template
*/
- template: '<span class="jxButtonContainer"><a class="jxButton jxButtonCombo"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel"></span></span></a></span>'
+ template: '<span class="jxButtonContainer"><a class="jxButton jxButtonCombo jxDiscloser"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel"></span></span></a></span>'
},
/**
@@ -20042,7 +20111,7 @@
}
var button = this;
this.addEvent('click', (function(e) {
- if (this.items.length === 0) {
+ if (this.list.count() === 0) {
return;
}
if (!button.options.enabled) {
@@ -20075,12 +20144,10 @@
this.menu.addEvents({
'show': (function() {
- this.domA.addClass('jxButtonActive');
+ this.setActive(true);
}).bind(this),
'hide': (function() {
- if (this.options.active) {
- this.domA.addClass('jxButtonActive');
- }
+ this.setActive(false);
}).bind(this)
});
@@ -20149,7 +20216,7 @@
remove: function(idx) {
//TODO: implement remove?
}
-});// $Id: toolbar.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+});// $Id: toolbar.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Toolbar
*
@@ -20205,10 +20272,10 @@
Family: 'Jx.Toolbar',
Extends: Jx.Widget,
/**
- * Property: items
- * {Array} an array of the things in the toolbar.
+ * Property: list
+ * {<Jx.List>} the list that holds the items in this toolbar
*/
- items : null,
+ list : null,
/**
* Property: domObj
* {HTMLElement} the HTML element that the toolbar lives in
@@ -20222,7 +20289,6 @@
*/
isActive : false,
options: {
- type: 'Toolbar',
/* Option: position
* the position of this toolbar in the container. The position
* affects some items in the toolbar, such as menus and flyouts, which
@@ -20243,19 +20309,30 @@
* if true, the toolbar may scroll if the contents are wider than
* the size of the toolbar
*/
- scroll: true
+ scroll: true,
+ template: '<ul class="jxToolbar"></ul>'
},
+ classes: new Hash({
+ domObj: 'jxToolbar'
+ }),
/**
* APIMethod: render
* Create a new instance of Jx.Toolbar.
*/
- render : function() {
+ render: function() {
this.parent();
- this.items = [];
+ this.domObj.store('jxToolbar', this);
+ if ($defined(this.options.id)) {
+ this.domObj.id = this.options.id;
+ }
- this.domObj = new Element('ul', {
- id: this.options.id,
- 'class':'jx'+this.options.type
+ this.list = new Jx.List(this.domObj, {
+ onAdd: function(item) {
+ this.fireEvent('add', this);
+ }.bind(this),
+ onRemove: function(item) {
+ this.fireEvent('remove', this);
+ }.bind(this)
});
if (this.options.parent) {
@@ -20302,23 +20379,20 @@
*/
add: function( ) {
$A(arguments).flatten().each(function(thing) {
- if (thing.domObj) {
- thing = thing.domObj;
+ var item = thing;
+ if (item.domObj) {
+ item = item.domObj;
}
- if (thing.tagName == 'LI') {
- if (!thing.hasClass('jxToolItem')) {
- thing.addClass('jxToolItem');
+
+ if (item.tagName == 'LI') {
+ if (!item.hasClass('jxToolItem')) {
+ item.addClass('jxToolItem');
}
- this.domObj.appendChild(thing);
} else {
- var item = new Jx.Toolbar.Item(thing);
- this.domObj.appendChild(item.domObj);
+ item = new Jx.Toolbar.Item(thing);
}
+ this.list.add(item);
}, this);
-
- if (arguments.length > 0) {
- this.fireEvent('add', this);
- }
return this;
},
/**
@@ -20338,20 +20412,19 @@
item = item.domObj;
}
var li = item.findElement('LI');
- if (li && li.parentNode == this.domObj) {
- item.dispose();
- li.dispose();
- this.fireEvent('remove', this);
- } else {
- return null;
- }
+ this.list.remove(li);
+ return this;
},
/**
* Method: deactivate
* Deactivate the Toolbar (when it is acting as a menu bar).
*/
deactivate: function() {
- this.items.each(function(o){o.hide();});
+ this.list.each(function(item){
+ if (item.retrieve('jxMenu')) {
+ item.retrieve('jxMenu').hide();
+ }
+ });
this.setActive(false);
},
/**
@@ -20399,7 +20472,7 @@
this.fireEvent('show', item);
}
});
-// $Id: container.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+// $Id: container.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Toolbar.Container
*
@@ -20451,21 +20524,32 @@
* container if the content exceeds the size of the container.
* Default is true.
*/
- scroll: true
+ scroll: true,
+ template: "<div class='jxBarContainer'></div>",
+ scrollerTemplate: "<div class='jxBarScroller'></div>"
},
+ classes: new Hash({
+ domObj: 'jxBarContainer',
+ scroller: 'jxBarScroller'
+ }),
/**
* APIMethod: render
* Create a new instance of Jx.Toolbar.Container
*/
render : function() {
this.parent();
+ /* if a container was passed in, use it instead of the one from the
+ * template
+ */
+ if (document.id(this.options.parent)) {
+ this.domObj = document.id(this.options.parent);
+ this.elements = new Hash({'jxBarContainer':this.domObj});
+ this.domObj.addClass('jxBarContainer');
+ this.domObj.adopt(this.scroller);
+ }
- var d = document.id(this.options.parent);
- this.domObj = d || new Element('div');
- this.domObj.addClass('jxBarContainer');
-
if (this.options.scroll) {
- this.scroller = new Element('div', {'class':'jxBarScroller'});
+ this.processElements(this.options.scrollerTemplate, this.classes);
this.domObj.adopt(this.scroller);
}
@@ -20641,7 +20725,7 @@
} else {
this.domObj.adopt(thing.domObj);
}
- this.domObj.addClass('jx'+thing.options.type+this.options.position.capitalize());
+ this.domObj.addClass('jxBar'+this.options.position.capitalize());
}, this);
if (this.options.scroll) {
this.update();
@@ -20730,7 +20814,7 @@
}
}
});
-// $Id: toolbar.item.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+// $Id: toolbar.item.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Toolbar.Item
*
@@ -20748,44 +20832,32 @@
*/
Jx.Toolbar.Item = new Class( {
Family: 'Jx.Toolbar.Item',
- Extends: Jx.Object,
+ Extends: Jx.Widget,
options: {
/* Option: active
* is this item active or not? Default is true.
*/
- active: true
+ active: true,
+ template: '<li class="jxToolItem"></li>'
},
- /**
- * Property: domObj
- * {HTMLElement} an element to contain the thing to be placed in the
- * toolbar.
- */
- domObj: null,
+ classes: new Hash({
+ domObj: 'jxToolItem'
+ }),
parameters: ['jxThing'],
/**
- * APIMethod: init
+ * APIMethod: render
* Create a new instance of Jx.Toolbar.Item.
*/
- init : function() {
- this.al = [];
- this.domObj = new Element('li', {'class':'jxToolItem'});
- if (this.options.jxThing) {
- if (this.options.jxThing.domObj) {
- this.domObj.appendChild(this.options.jxThing.domObj);
- if (this.options.jxThing instanceof Jx.Button.Tab) {
- this.domObj.addClass('jxTabItem');
- }
- } else {
- this.domObj.appendChild(this.options.jxThing);
- if (this.options.jxThing.hasClass('jxTab')) {
- this.domObj.addClass('jxTabItem');
- }
- }
+ render: function() {
+ this.parent();
+ var el = document.id(this.options.jxThing);
+ if (el) {
+ this.domObj.adopt(el);
}
}
-});// $Id: panel.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+});// $Id: panel.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Panel
*
@@ -20824,7 +20896,12 @@
options: {
position: null,
- type: 'Panel',
+ collapsedClass: 'jxPanelMin',
+ collapseClass: 'jxPanelCollapse',
+ menuClass: 'jxPanelMenu',
+ maximizeClass: 'jxPanelMaximize',
+ closeClass: 'jxPanelClose',
+
/* Option: id
* String, an id to assign to the panel's container
*/
@@ -20893,8 +20970,18 @@
* array of Jx.Toolbar objects to put in the panel. The position
* of each toolbar is used to position the toolbar within the panel.
*/
- toolbars: []
+ toolbars: [],
+ template: '<div class="jxPanel"><div class="jxPanelTitle"><img class="jxPanelIcon" src="'+Jx.aPixel.src+'" alt="" title=""/><span class="jxPanelLabel"></span><div class="jxPanelControls"></div></div><div class="jxPanelContentContainer"><div class="jxPanelContent"></div></div></div>'
},
+ classes: new Hash({
+ domObj: 'jxPanel',
+ title: 'jxPanelTitle',
+ domImg: 'jxPanelIcon',
+ domLabel: 'jxPanelLabel',
+ domControls: 'jxPanelControls',
+ contentContainer: 'jxPanelContentContainer',
+ content: 'jxPanelContent'
+ }),
/**
* APIMethod: render
@@ -20902,39 +20989,21 @@
*/
render : function(){
this.parent();
+
this.toolbars = this.options ? this.options.toolbars || [] : [];
this.options.position = ($defined(this.options.height) && !$defined(this.options.position)) ? 'relative' : 'absolute';
- /* set up the title object */
- this.title = new Element('div', {
- 'class': 'jx'+this.options.type+'Title'
- });
-
- var i = new Element('img', {
- 'class': 'jx'+this.options.type+'Icon',
- src: Jx.aPixel.src,
- alt: '',
- title: ''
- });
- if (this.options.image) {
- i.setStyle('backgroundImage', 'url('+this.options.image+')');
+ if (this.options.image && this.domImg) {
+ this.domImg.setStyle('backgroundImage', 'url('+this.options.image+')');
}
- this.title.adopt(i);
+ if (this.options.label && this.domLabel) {
+ this.domLabel.set('html',this.options.label);
+ }
- this.labelObj = new Element('span', {
- 'class': 'jx'+this.options.type+'Label',
- html: this.options.label
- });
- this.title.adopt(this.labelObj);
-
- var controls = new Element('div', {
- 'class': 'jx'+this.options.type+'Controls'
- });
var tbDiv = new Element('div');
- controls.adopt(tbDiv);
- this.toolbar = new Jx.Toolbar({parent:tbDiv});
- this.title.adopt(controls);
+ this.domControls.adopt(tbDiv);
+ this.toolbar = new Jx.Toolbar({parent:tbDiv, scroll: false});
var that = this;
@@ -20942,23 +21011,24 @@
this.menu = new Jx.Menu({
image: Jx.aPixel.src
});
- this.menu.domObj.addClass('jx'+this.options.type+'Menu');
+ this.menu.domObj.addClass(this.options.menuClass);
this.menu.domObj.addClass('jxButtonContentLeft');
this.toolbar.add(this.menu);
}
+ var b, item;
if (this.options.collapse) {
- var b = new Jx.Button({
+ b = new Jx.Button({
image: Jx.aPixel.src,
tooltip: this.options.collapseTooltip,
onClick: function() {
that.toggleCollapse();
}
});
- b.domObj.addClass('jx'+this.options.type+'Collapse');
+ b.domObj.addClass(this.options.collapseClass);
this.toolbar.add(b);
if (this.menu) {
- var item = new Jx.Menu.Item({
+ item = new Jx.Menu.Item({
label: this.options.collapseLabel,
onClick: function() { that.toggleCollapse(); }
});
@@ -20975,17 +21045,17 @@
}
if (this.options.maximize) {
- var b = new Jx.Button({
+ b = new Jx.Button({
image: Jx.aPixel.src,
tooltip: this.options.maximizeTooltip,
onClick: function() {
that.maximize();
}
});
- b.domObj.addClass('jx'+this.options.type+'Maximize');
+ b.domObj.addClass(this.options.maximizeClass);
this.toolbar.add(b);
if (this.menu) {
- var item = new Jx.Menu.Item({
+ item = new Jx.Menu.Item({
label: this.options.maximizeLabel,
onClick: function() { that.maximize(); }
});
@@ -20994,17 +21064,17 @@
}
if (this.options.close) {
- var b = new Jx.Button({
+ b = new Jx.Button({
image: Jx.aPixel.src,
tooltip: this.options.closeTooltip,
onClick: function() {
that.close();
}
});
- b.domObj.addClass('jx'+this.options.type+'Close');
+ b.domObj.addClass(this.options.closeClass);
this.toolbar.add(b);
if (this.menu) {
- var item = new Jx.Menu.Item({
+ item = new Jx.Menu.Item({
label: this.options.closeLabel,
onClick: function() {
that.close();
@@ -21019,9 +21089,6 @@
that.toggleCollapse();
});
- this.domObj = new Element('div', {
- 'class': 'jx'+this.options.type
- });
if (this.options.id) {
this.domObj.id = this.options.id;
}
@@ -21029,21 +21096,16 @@
var layoutHandler = this.layoutContent.bind(this);
jxl.addEvent('sizeChange', layoutHandler);
- if (!this.options.hideTitle) {
- this.domObj.adopt(this.title);
+ if (this.options.hideTitle) {
+ this.title.dispose();
}
- this.contentContainer = new Element('div', {
- 'class': 'jx'+this.options.type+'ContentContainer'
- });
- this.domObj.adopt(this.contentContainer);
-
if (Jx.type(this.options.toolbars) == 'array') {
this.options.toolbars.each(function(tb){
var position = tb.options.position;
var tbc = this.toolbarContainers[position];
if (!tbc) {
- var tbc = new Element('div');
+ tbc = new Element('div');
new Jx.Layout(tbc);
this.contentContainer.adopt(tbc);
this.toolbarContainers[position] = tbc;
@@ -21052,11 +21114,6 @@
}, this);
}
- this.content = new Element('div', {
- 'class': 'jx'+this.options.type+'Content'
- });
-
- this.contentContainer.adopt(this.content);
new Jx.Layout(this.contentContainer);
new Jx.Layout(this.content);
@@ -21129,9 +21186,6 @@
tbc.style.visibility = '';
}
switch(position) {
- case 'top':
- top = size.height;
- break;
case 'bottom':
bottom = size.height;
break;
@@ -21141,6 +21195,10 @@
case 'right':
right = size.width;
break;
+ case 'top':
+ default:
+ top = size.height;
+ break;
}
},this);
}
@@ -21288,8 +21346,8 @@
this.options.closed = !this.options.closed;
}
if (this.options.closed) {
- if (!this.domObj.hasClass('jx'+this.options.type+'Min')) {
- this.domObj.addClass('jx'+this.options.type+'Min');
+ if (!this.domObj.hasClass(this.options.collapsedClass)) {
+ this.domObj.addClass(this.options.collapsedClass);
this.contentContainer.setStyle('display','none');
var m = this.domObj.measure(function(){
return this.getSizes(['margin'],['top','bottom']).margin;
@@ -21302,8 +21360,8 @@
this.fireEvent('collapse', this);
}
} else {
- if (this.domObj.hasClass('jx'+this.options.type+'Min')) {
- this.domObj.removeClass('jx'+this.options.type+'Min');
+ if (this.domObj.hasClass(this.options.collapsedClass)) {
+ this.domObj.removeClass(this.options.collapsedClass);
this.contentContainer.setStyle('display','block');
this.domObj.resize({height: this.options.height});
this.fireEvent('expand', this);
@@ -21320,7 +21378,7 @@
this.fireEvent('close', this);
}
-});// $Id: dialog.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+});// $Id: dialog.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Dialog
*
@@ -21439,8 +21497,24 @@
* (optional) {Boolean} determines whether the dialog is
* closeable by the user or not. Default is true.
*/
- close: true
+ close: true,
+ collapsedClass: 'jxDialogMin',
+ collapseClass: 'jxDialogCollapse',
+ menuClass: 'jxDialogMenu',
+ maximizeClass: 'jxDialogMaximize',
+ closeClass: 'jxDialogClose',
+
+ template: '<div class="jxDialog"><div class="jxDialogTitle"><img class="jxDialogIcon" src="'+Jx.aPixel.src+'" alt="" title=""/><span class="jxDialogLabel"></span><div class="jxDialogControls"></div></div><div class="jxDialogContentContainer"><div class="jxDialogContent"></div></div></div>'
},
+ classes: new Hash({
+ domObj: 'jxDialog',
+ title: 'jxDialogTitle',
+ domImg: 'jxDialogIcon',
+ domLabel: 'jxDialogLabel',
+ domControls: 'jxDialogControls',
+ contentContainer: 'jxDialogContentContainer',
+ content: 'jxDialogContent'
+ }),
/**
* APIMethod: render
* renders Jx.Dialog
@@ -21452,7 +21526,7 @@
this.options = $merge(
{parent:document.body}, // these are defaults that can be overridden
this.options,
- {type:'Dialog', position: 'absolute'} // these override anything passed to the options
+ {position: 'absolute'} // these override anything passed to the options
);
/* initialize the panel overriding the type and position */
@@ -21612,16 +21686,16 @@
this.options.closed = !this.options.closed;
}
if (this.options.closed) {
- if (!this.domObj.hasClass('jx'+this.options.type+'Min')) {
- this.domObj.addClass('jx'+this.options.type+'Min');
+ if (!this.domObj.hasClass(this.options.collapsedClass)) {
+ this.domObj.addClass(this.options.collapsedClass);
}
this.contentContainer.setStyle('display','none');
if (this.resizeHandle) {
this.resizeHandle.setStyle('display','none');
}
} else {
- if (this.domObj.hasClass('jx'+this.options.type+'Min')) {
- this.domObj.removeClass('jx'+this.options.type+'Min');
+ if (this.domObj.hasClass(this.options.collapsedClass)) {
+ this.domObj.removeClass(this.options.collapsedClass);
}
this.contentContainer.setStyle('display','block');
if (this.resizeHandle) {
@@ -21784,7 +21858,7 @@
});
};
-// $Id: splitter.js 585 2009-11-05 20:19:59Z pagameba $
+// $Id: splitter.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Splitter
*
@@ -21911,7 +21985,7 @@
this.elements = [];
this.bars = [];
-
+ var i;
var nSplits = 2;
if (this.options.useChildren) {
this.elements = this.domObj.getChildren();
@@ -21920,7 +21994,7 @@
nSplits = this.options.elements ?
this.options.elements.length :
this.options.splitInto;
- for (var i=0; i<nSplits; i++) {
+ for (i=0; i<nSplits; i++) {
var el;
if (this.options.elements && this.options.elements[i]) {
if (this.options.elements[i].domObj) {
@@ -21940,7 +22014,7 @@
}
}
this.elements.each(function(el) { el.addClass('jxSplitArea'); });
- for (var i=0; i<nSplits; i++) {
+ for (i=0; i<nSplits; i++) {
var jxl = this.elements[i].retrieve('jxLayout');
if (!jxl) {
new Jx.Layout(this.elements[i], this.options.containerOptions[i]);
@@ -21954,7 +22028,7 @@
}
}
- for (var i=1; i<nSplits; i++) {
+ for (i=1; i<nSplits; i++) {
var bar;
if (this.options.prepareBar) {
bar = this.options.prepareBar(i-1);
@@ -21975,7 +22049,7 @@
this.establishConstraints();
}
- for (var i=0; i<this.options.barOptions.length; i++) {
+ for (i=0; i<this.options.barOptions.length; i++) {
if (!this.bars[i]) {
continue;
}
@@ -22003,7 +22077,7 @@
}
}
- for (var i=0; i<this.options.snaps.length; i++) {
+ for (i=0; i<this.options.snaps.length; i++) {
if (this.options.snaps[i]) {
new Jx.Splitter.Snap(this.options.snaps[i], this.elements[i], this);
}
@@ -22101,7 +22175,7 @@
* obj - {HTMLElement} the bar that was dragged
*/
dragHorizontal: function(obj) {
- var leftEdge = parseInt(obj.style.left);
+ var leftEdge = parseInt(obj.style.left,10);
var leftSide = obj.retrieve('leftSide');
var rightSide = obj.retrieve('rightSide');
var leftJxl = leftSide.retrieve('jxLayout');
@@ -22180,7 +22254,7 @@
/* update leftSide positions */
if (leftJxl.options.width == null) {
- var parentSize = this.domObj.getContentBoxSize();
+ parentSize = this.domObj.getContentBoxSize();
leftSide.resize({right: parentSize.width - lsLeft-lsWidth});
} else {
leftSide.resize({width: lsWidth});
@@ -22204,7 +22278,7 @@
*/
dragVertical: function(obj) {
/* top edge of the bar */
- var topEdge = parseInt(obj.style.top);
+ var topEdge = parseInt(obj.style.top,10);
/* the containers on either side of the bar */
var topSide = obj.retrieve('leftSide');
@@ -22326,8 +22400,8 @@
horizontalResize: function() {
var availableSpace = this.domObj.getContentBoxSize().width;
var overallWidth = availableSpace;
-
- for (var i=0; i<this.bars.length; i++) {
+ var i,e,jxo;
+ for (i=0; i<this.bars.length; i++) {
var bar = this.bars[i];
var size = bar.retrieve('size');
if (!size || size.width == 0) {
@@ -22337,15 +22411,14 @@
availableSpace -= size.width;
}
- var nVariable = 0;
- var jxo;
- for (var i=0; i<this.elements.length; i++) {
- var e = this.elements[i];
+ var nVariable = 0, w = 0;
+ for (i=0; i<this.elements.length; i++) {
+ e = this.elements[i];
jxo = e.retrieve('jxLayout').options;
if (jxo.width != null) {
- availableSpace -= parseInt(jxo.width);
+ availableSpace -= parseInt(jxo.width,10);
} else {
- var w = 0;
+ w = 0;
if (jxo.right != 0 ||
jxo.left != 0) {
w = e.getBorderBoxSize().width;
@@ -22363,7 +22436,7 @@
nVariable = 1;
}
- var amount = parseInt(availableSpace / nVariable);
+ var amount = parseInt(availableSpace / nVariable,10);
/* account for rounding errors */
var remainder = availableSpace % nVariable;
@@ -22374,10 +22447,10 @@
var currentPosition = 0;
- for (var i=0; i<this.elements.length; i++) {
- var e = this.elements[i];
+ for (i=0; i<this.elements.length; i++) {
+ e = this.elements[i];
var jxl = e.retrieve('jxLayout');
- var jxo = jxl.options;
+ jxo = jxl.options;
if (jxo.width != null) {
jxl.resize({left: currentPosition});
currentPosition += jxo.width;
@@ -22388,7 +22461,6 @@
}
nVariable--;
- var w = 0;
if (jxo.right != 0 || jxo.left != 0) {
w = e.getBorderBoxSize().width + a;
} else {
@@ -22433,8 +22505,8 @@
verticalResize: function() {
var availableSpace = this.domObj.getContentBoxSize().height;
var overallHeight = availableSpace;
-
- for (var i=0; i<this.bars.length; i++) {
+ var i,e,jxo;
+ for (i=0; i<this.bars.length; i++) {
var bar = this.bars[i];
var size = bar.retrieve('size');
if (!size || size.height == 0) {
@@ -22444,16 +22516,13 @@
availableSpace -= size.height;
}
- var nVariable = 0;
-
- var jxo;
- for (var i=0; i<this.elements.length; i++) {
- var e = this.elements[i];
+ var nVariable = 0, h=0;
+ for (i=0; i<this.elements.length; i++) {
+ e = this.elements[i];
jxo = e.retrieve('jxLayout').options;
if (jxo.height != null) {
- availableSpace -= parseInt(jxo.height);
+ availableSpace -= parseInt(jxo.height,10);
} else {
- var h = 0;
if (jxo.bottom != 0 || jxo.top != 0) {
h = e.getBorderBoxSize().height;
}
@@ -22470,7 +22539,7 @@
nVariable = 1;
}
- var amount = parseInt(availableSpace / nVariable);
+ var amount = parseInt(availableSpace / nVariable,10);
/* account for rounding errors */
var remainder = availableSpace % nVariable;
@@ -22481,10 +22550,10 @@
var currentPosition = 0;
- for (var i=0; i<this.elements.length; i++) {
- var e = this.elements[i];
+ for (i=0; i<this.elements.length; i++) {
+ e = this.elements[i];
var jxl = e.retrieve('jxLayout');
- var jxo = jxl.options;
+ jxo = jxl.options;
if (jxo.height != null) {
jxl.resize({top: currentPosition});
currentPosition += jxo.height;
@@ -22495,7 +22564,7 @@
}
nVariable--;
- var h = 0;
+ h = 0;
if (jxo.bottom != 0 || jxo.top != 0) {
h = e.getBorderBoxSize().height + a;
} else {
@@ -22532,7 +22601,7 @@
}
}
}
-});// $Id: panelset.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+});// $Id: panelset.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.PanelSet
*
@@ -22664,17 +22733,16 @@
var domHeight = this.domObj.getContentBoxSize().height;
var space = domHeight;
var panelSize = panel.domObj.retrieve('jxLayout').options.maxHeight;
- var panelIndex;
-
+ var panelIndex,i,p,thePanel,o,panelHeight;
/* calculate how much space might be left after setting all the panels to
* their minimum height (except the one we are resizing of course)
*/
- for (var i=1; i<this.splitter.elements.length; i++) {
- var p = this.splitter.elements[i];
+ for (i=1; i<this.splitter.elements.length; i++) {
+ p = this.splitter.elements[i];
space -= p.retrieve('leftBar').getBorderBoxSize().height;
if (p !== panel.domObj) {
- var thePanel = p.retrieve('Jx.Panel');
- var o = p.retrieve('jxLayout').options;
+ thePanel = p.retrieve('Jx.Panel');
+ o = p.retrieve('jxLayout').options;
space -= o.minHeight;
} else {
panelIndex = i;
@@ -22689,13 +22757,13 @@
space = space - panelSize;
}
var top = 0;
- for (var i=1; i<this.splitter.elements.length; i++) {
- var p = this.splitter.elements[i];
+ for (i=1; i<this.splitter.elements.length; i++) {
+ p = this.splitter.elements[i];
top += p.retrieve('leftBar').getBorderBoxSize().height;
if (p !== panel.domObj) {
- var thePanel = p.retrieve('Jx.Panel');
- var o = p.retrieve('jxLayout').options;
- var panelHeight = $chk(o.height) ? o.height : p.getBorderBoxSize().height;
+ thePanel = p.retrieve('Jx.Panel');
+ o = p.retrieve('jxLayout').options;
+ panelHeight = $chk(o.height) ? o.height : p.getBorderBoxSize().height;
if (space > 0) {
if (space >= panelHeight) {
// this panel can stay open at its current height
@@ -22727,11 +22795,11 @@
/* now work from the bottom up */
var bottom = domHeight;
- for (var i=this.splitter.elements.length - 1; i > 0; i--) {
+ for (i=this.splitter.elements.length - 1; i > 0; i--) {
p = this.splitter.elements[i];
if (p !== panel.domObj) {
- var o = p.retrieve('jxLayout').options;
- var panelHeight = $chk(o.height) ? o.height : p.getBorderBoxSize().height;
+ o = p.retrieve('jxLayout').options;
+ panelHeight = $chk(o.height) ? o.height : p.getBorderBoxSize().height;
if (space > 0) {
if (space >= panelHeight) {
// panel can stay open
@@ -23690,22 +23758,24 @@
* The classes to search for in the template. Not
* required, but we look for them.
*/
- classes : [ 'jxInputLabel', 'jxInputTag' ],
+ classes : new Hash({
+ domObj: 'jxInputContainer',
+ label: 'jxInputLabel',
+ tag: 'jxInputTag'
+ }),
/**
* APIMethod: render
*/
render : function () {
+ this.classes.set('field', 'jxInput'+this.type);
+ var name = $defined(this.options.name) ? this.options.name : '';
+ this.options.template = this.options.template.substitute({name:name});
this.parent();
this.id = ($defined(this.options.id)) ? this.options.id : this
.generateId();
this.name = this.options.name;
-
- // first the container
- this.domObj = new Element('span', {
- 'class' : 'jxInputContainer'
- });
if ($defined(this.type)) {
this.domObj.addClass('jxInputContainer'+this.type);
@@ -23723,16 +23793,8 @@
}
}
- var field = 'jxInput' + this.type;
- this.classes.push(field);
-
- var name = $defined(this.options.name) ? this.options.name : '';
- var template = this.options.template.substitute({name:name});
- var els = this.processTemplate(template, this.classes, this.domObj);
-
// LABEL
- if (els.has('jxInputLabel')) {
- this.label = els.get('jxInputLabel');
+ if (this.label) {
if ($defined(this.options.labelClass)) {
this.label.addClass(this.options.labelClass);
}
@@ -23753,8 +23815,7 @@
}
// FIELD
- if (els.has(field)) {
- this.field = els.get(field);
+ if (this.field) {
if ($defined(this.options.fieldClass)) {
this.field.addClass(this.options.fieldClass);
}
@@ -23786,8 +23847,7 @@
}
// TAG
- if (els.has('jxInputTag')) {
- this.tag = els.get('jxInputTag');
+ if (this.tag) {
if ($defined(this.options.tagClass)) {
this.tag.addClass(this.options.tagClass);
}
@@ -23880,7 +23940,7 @@
* Option: template
* The template used to render this field
*/
- template: '<label class="jxInputLabel"></label><input class="jxInputText" type="text" name="{name}"/><span class="jxInputTag"></span>'
+ template: '<span class="jxInputContainer"><label class="jxInputLabel"></label><input class="jxInputText" type="text" name="{name}"/><span class="jxInputTag"></span></span>'
},
/**
* Property: type
@@ -23931,7 +23991,7 @@
* Option: template
* The template used to render this field
*/
- template: '<input class="jxInputHidden" type="hidden" name="{name}"/>'
+ template: '<span class="jxInputContainer"><input class="jxInputHidden" type="hidden" name="{name}"/></span>'
},
/**
* Property: type
@@ -24167,7 +24227,7 @@
* Option: template
* The template used to render the field
*/
- template: '<label class="jxInputLabel"></label><div class="jxFileInputs"><input class="jxInputFile" type="file" name="{name}" /></div><span class="jxInputTag"></span>',
+ template: '<span class="jxInputContainer"><label class="jxInputLabel"></label><div class="jxFileInputs"><input class="jxInputFile" type="file" name="{name}" /></div><span class="jxInputTag"></span></span>',
/**
* Option: autoUpload
* Whether to upload the file immediatelly upon selection
@@ -24242,11 +24302,12 @@
}
//now, create the fake inputs
+
this.fake = new Element('div', {
'class' : 'jxFileFake'
});
this.text = new Jx.Field.Text({
- template : '<input class="jxInputText" type="text" />'
+ template : '<span class="jxInputContainer"><input class="jxInputText" type="text" /></span>'
});
this.browseButton = new Jx.Button({
label : 'Browse...'
@@ -24525,18 +24586,20 @@
* Option: template
* The template used to create the progressbar
*/
- template: '<div class="jxProgressBar-message"></div><div class="jxProgressBar"><div class="jxProgressBar-outline"></div><div class="jxProgressBar-fill"></div><div class="jxProgressBar-text"></div></div>'
+ template: '<div class="jxProgressBar-container"><div class="jxProgressBar-message"></div><div class="jxProgressBar"><div class="jxProgressBar-outline"></div><div class="jxProgressBar-fill"></div><div class="jxProgressBar-text"></div></div></div>'
},
/**
* Property: classes
* The classes used in the template
*/
- classes: [
- 'jxProgressBar-message',
- 'jxProgressBar',
- 'jxProgressBar-outline',
- 'jxProgressBar-fill',
- 'jxProgressBar-text'],
+ classes: new Hash({
+ domObj: 'jxProgressBar-container',
+ message: 'jxProgressBar-message',
+ container: 'jxProgressBar',
+ outline: 'jxProgressBar-outline',
+ fill: 'jxProgressBar-fill',
+ text: 'jxProgressBar-text'
+ }),
/**
* Property: bar
* the bar that is filled
@@ -24553,13 +24616,8 @@
* Creates a new progressbar.
*/
render: function () {
-
- this.domObj = new Element('div', {
- 'class': 'jxProgressBar-container'
- });
+ this.parent();
- var els = this.processTemplate(this.options.template,this.classes,this.domObj);
-
if ($defined(this.options.parent)) {
this.domObj.inject($(this.options.parent));
}
@@ -24576,8 +24634,7 @@
}
//Message
- if (els.has('jxProgressBar-message')) {
- this.message = els.get('jxProgressBar-message');
+ if (this.message) {
if ($defined(this.options.messageText)) {
this.message.set('html', this.options.messsageText);
} else {
@@ -24586,8 +24643,7 @@
}
//bar container itself
- if (els.has('jxProgressBar')) {
- this.container = els.get('jxProgressBar');
+ if (this.container) {
this.container.setStyles({
'position': 'relative',
'width': this.options.bar.width,
@@ -24596,8 +24652,7 @@
}
//Outline
- if (els.has('jxProgressBar-outline')) {
- this.outline = els.get('jxProgressBar-outline');
+ if (this.outline) {
this.outline.setStyles({
'width': this.options.bar.width,
'height' : this.options.bar.height
@@ -24605,8 +24660,7 @@
}
//Fill
- if (els.has('jxProgressBar-fill')) {
- this.fill = els.get('jxProgressBar-fill');
+ if (this.fill) {
this.fill.setStyles({
'width': 0,
'height' : this.options.bar.height
@@ -24623,8 +24677,7 @@
}
//Progress text
- if (els.has('jxProgressBar-text')) {
- this.text = els.get('jxProgressBar-text');
+ if (this.text) {
this.text.set('html', this.options.progressText.substitute(obj));
}
@@ -24758,7 +24811,7 @@
//add the file field
this.fileOpt = this.options.file;
- this.fileOpt.template = '<div class="jxFileInputs"><input class="jxInputFile" type="file" name={name} /></div>';
+ this.fileOpt.template = '<div class="jxInputContainer jxFileInputs"><input class="jxInputFile" type="file" name={name} /></div>';
this.currentFile = new Jx.Field.File(this.fileOpt);
this.currentFile.addEvent('fileSelected', this.moveToQueue.bind(this));
@@ -24973,16 +25026,16 @@
template: '<li class="jxListItemContainer jxListItem"></li>'
},
- classes: ['jxListItemContainer','jxListItem'],
+ classes: new Hash({
+ domObj: 'jxListItemContainer',
+ domContent: 'jxListItem'
+ }),
/**
* APIMethod: render
*/
render: function () {
this.parent();
- this.elements = this.processTemplate(this.options.template, this.classes);
- this.domObj = this.elements.get('jxListItemContainer');
- this.domContent = this.elements.get('jxListItem');
this.domObj.store('jxListTarget', this.domContent);
this.loadContent(this.domContent);
},
@@ -25020,15 +25073,15 @@
}
},
- classes: ['jxListView'],
+ classes: new Hash({
+ domObj: 'jxListView'
+ }),
/**
* APIMethod: render
*/
render: function () {
this.parent();
- this.elements = this.processTemplate(this.options.template, this.classes);
- this.domObj = this.elements.get('jxListView');
if (this.options.selection) {
this.selection = this.options.selection;
@@ -25220,9 +25273,9 @@
},
setWidth: function(newWidth) {
- if (this.rule && parseInt(newWidth) >= 0) {
- this.width = parseInt(newWidth);
- this.rule.style.width = parseInt(newWidth) + "px";
+ if (this.rule && parseInt(newWidth,10) >= 0) {
+ this.width = parseInt(newWidth,10);
+ this.rule.style.width = parseInt(newWidth,10) + "px";
}
},
/**
@@ -25478,9 +25531,9 @@
if ($defined(this.options.headerRowHeight)
&& this.options.headerRowHeight !== 'auto') {
this.height = this.options.headerRowHeight;
- } else {
+ } //else {
//figure out a height.
- }
+ //}
}
return this.height;
},
@@ -25547,7 +25600,7 @@
* Parameters:
* row - the row to add the headers to.
*/
- getHeaders : function (row) {
+ getHeaders : function (list) {
var r = this.grid.row.useHeaders();
var hf = this.grid.row.getRowHeaderField();
this.columns.each(function (col, idx) {
@@ -25570,31 +25623,34 @@
if (col.isSortable()) {
th.addClass('jxColSortable');
}
- // col.header = th;
- row.appendChild(th);
+ list.add(th);
+ th.store('jxCellData', {
+ column: col,
+ colHeader: true,
+ index: idx
+ });
}
}, this);
- return row;
+ return list;
},
/**
* APIMethod: getColumnCells
* Appends the cells from each column for a specific row
*
* Parameters:
- * row - the row (tr) to add the cells to.
+ * list - the Jx.List instance to add the cells to.
*/
- getColumnCells : function (row) {
+ getColumnCells : function (list) {
var r = this.grid.row;
var f = r.getRowHeaderField();
var h = r.useHeaders();
this.columns.each(function (col, idx) {
if (h && col.options.modelField !== f && !col.isHidden()) {
- row.appendChild(this.getColumnCell(col, idx));
+ list.add(this.getColumnCell(col, idx));
} else if (!h && !col.isHidden()) {
- row.appendChild(this.getColumnCell(col, idx));
+ list.add(this.getColumnCell(col, idx));
}
}, this);
- return row;
},
/**
* APIMethod: getColumnCell
@@ -25621,6 +25677,12 @@
if (col.isSortable()) {
td.addClass('jxColSortable');
}
+
+ td.store('jxCellData',{
+ col: col,
+ index: idx,
+ row: this.grid.model.getPosition()
+ });
return td;
},
@@ -25634,7 +25696,7 @@
},
/**
- * APIMethod: getColumnCOunt
+ * APIMethod: getColumnCount
* returns the number of columns in this model (including hidden).
*/
getColumnCount : function () {
@@ -25833,21 +25895,21 @@
/**
* APIMethod: getRowHeader
* creates and returns the header for the current row
+ *
+ * Parameters:
+ * list - Jx.List instance to add the header to
*/
- getRowHeader : function () {
- var rowHeight = this.getHeight();
- var tr = new Element('tr', {
- styles : {
- height : rowHeight
- }
- });
+ getRowHeader : function (list) {
var th = this.getRowHeaderCell();
if (this.grid.model.getPosition() === 0) {
var rowWidth = this.getRowHeaderWidth();
th.setStyle("width", rowWidth);
}
- tr.appendChild(th);
- return tr;
+ th.store('jxCellData', {
+ rowHeader: true,
+ row: this.grid.model.getPosition()
+ });
+ list.add(th);
},
/**
* APIMethod: getRowHeaderField
@@ -25908,7 +25970,7 @@
*
* This file is licensed under an MIT style license
*/
-Jx.Plugin.Grid = {};// $Id: grid.js 572 2009-10-29 05:53:36Z jonlb at comcast.net $
+Jx.Plugin.Grid = {};// $Id: grid.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Grid
*
@@ -25935,9 +25997,13 @@
* Jx.Grid renders data that comes from an external source. This external
* source, called the model, must be a Jx.Store or extended from it (such as
* Jx.Store.Remote).
+ *
+ * Events:
+ * gridCellEnter(cell, list) - called when the mouse enters a cell
+ * gridCellLeave(cell, list) - called when the mouse leaves a cell
+ * gridCellSelect(cell) - called when a cell is clicked
*
*
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
* This version Copyright (c) 2009, Jon Bomgardner.
@@ -26007,12 +26073,6 @@
*/
row : null,
/**
- * Property: currentCell
- * holds an object indicating the current cell that the mouse is over
- */
- currentCell : null,
-
- /**
* Property: styleSheet
* the name of the dynamic style sheet to use for manipulating styles
*/
@@ -26022,13 +26082,24 @@
* the required variable for plugins
*/
pluginNamespace: 'Grid',
+ /**
+ * Property: selection
+ * holds the Jx.Selection instance used by the cell lists
+ */
+ selection: null,
+ /**
+ * Property: lists
+ * An array of Jx.List instances, one per row. All of them use the same
+ * Jx.Selection instance
+ */
+ lists: [],
/**
* Constructor: Jx.Grid
*/
init : function () {
this.uniqueId = this.generateId('jxGrid_');
-
+ var opts;
if ($defined(this.options.model)
&& this.options.model instanceof Jx.Store) {
this.model = this.options.model;
@@ -26041,7 +26112,7 @@
if (this.options.columns instanceof Jx.Columns) {
this.columns = this.options.columns;
} else if (Jx.type(this.options.columns) === 'object') {
- var opts = this.options.columns;
+ opts = this.options.columns;
opts.grid = this;
this.columns = new Jx.Columns(opts);
}
@@ -26052,13 +26123,15 @@
if (this.options.row instanceof Jx.Row) {
this.row = this.options.row;
} else if (Jx.type(this.options.row) === "object") {
- var opts = this.options.row;
+ opts = this.options.row;
opts.grid = this;
this.row = new Jx.Row(opts);
}
} else {
this.row = new Jx.Row({grid: this});
}
+
+
//initialize the grid
this.domObj = new Element('div', {'class':this.uniqueId});
@@ -26110,6 +26183,8 @@
this.gridTableBody = new Element('tbody');
this.gridTable.appendChild(this.gridTableBody);
this.gridObj.appendChild(this.gridTable);
+
+ var target = this;
this.domObj.appendChild(this.rowColObj);
this.domObj.appendChild(this.rowObj);
@@ -26117,19 +26192,21 @@
this.domObj.appendChild(this.gridObj);
this.gridObj.addEvent('scroll', this.onScroll.bind(this));
- this.gridObj.addEvent('click', this.onGridClick
- .bindWithEvent(this));
- this.rowObj.addEvent('click', this.onGridClick
- .bindWithEvent(this));
- this.colObj.addEvent('click', this.onGridClick
- .bindWithEvent(this));
- this.gridObj.addEvent('mousemove', this.onMouseMove
- .bindWithEvent(this));
- this.rowObj.addEvent('mousemove', this.onMouseMove
- .bindWithEvent(this));
- this.colObj.addEvent('mousemove', this.onMouseMove
- .bindWithEvent(this));
-
+
+ //bind events
+ this.bound = {
+ select: this.onSelect.bind(this),
+ unselect: this.onUnselect.bind(this),
+ mouseenter: this.onMouseEnter.bind(this),
+ mouseleave: this.onMouseLeave.bind(this)
+ };
+
+ //setup the selection
+ this.selection = new Jx.Selection();
+ this.selection.addEvents({
+ select: this.bound.select,
+ unselect: this.bound.unselect
+ });
this.parent();
this.domObj.store('grid', this);
@@ -26144,111 +26221,7 @@
this.rowObj.scrollTop = this.gridObj.scrollTop;
},
- /**
- * Method: onMouseMove
- * Handle the mouse moving over the grid. This determines
- * what column and row it's over and fires the gridMove event
- * with that information for plugins to respond to.
- *
- * Parameters:
- * e - {Event} the browser event object
- */
- onMouseMove : function (e) {
- var rc = this.getRowColumnFromEvent(e);
- if (!$defined(this.currentCell)
- || (this.currentCell.row !== rc.row || this.currentCell.column !== rc.column)) {
- this.currentCell = rc;
- this.fireEvent('gridMove', rc);
- }
-
- },
- /**
- * Method: onGridClick
- * handle the user clicking on the grid. Fires gridClick
- * event for plugins to respond to.
- *
- * Parameters:
- * e - {Event} the browser event object
- */
- onGridClick : function (e) {
- var rc = this.getRowColumnFromEvent(e);
- this.fireEvent('gridClick', rc);
- },
-
- /**
- * Method: getRowColumnFromEvent
- * retrieve the row and column indexes from an event click.
- * This function is used by the grid, row header and column
- * header to safely get these numbers.
- *
- * If the event isn't valid (i.e. it wasn't on a TD or TH) then
- * the returned values will be -1, -1
- *
- * Parameters:
- * e - {Event} the browser event object
- *
- * @return Object an object with two properties, row and column,
- * that contain the row and column that was clicked
- */
- getRowColumnFromEvent : function (e) {
- var td = e.target;
- if (td.tagName === 'SPAN') {
- td = document.id(td).getParent();
- }
- if (td.tagName !== 'TD' && td.tagName !== 'TH') {
- return {
- row : -1,
- column : -1
- };
- }
-
- var colheader = false;
- var rowheader = false;
- //check if this is a header (row or column)
- if (td.descendantOf(this.colTable)) {
- colheader = true;
- }
- if (td.descendantOf(this.rowTable)) {
- rowheader = true;
- }
-
- var tr = td.parentNode;
- var col = td.cellIndex;
- var row = tr.rowIndex;
- /*
- * if this is not a header cell, then increment the row and col. We do this
- * based on whether the header is shown. This way the row/col remains consistent
- * to the grid but also takes into account the headers. It also allows
- * us to refrain from having to fire a separate event for headers.
- *
- * Plugins/event listeners should always take into account whether headers
- * are displayed or not.
- */
- if (this.row.useHeaders() && !rowheader) {
- col++;
- }
- if (this.columns.useHeaders() && !colheader) {
- row++;
- }
-
- if (Browser.Engine.webkit) {
- /* bug in safari (webkit) returns 0 for cellIndex - only choice seems
- * to be to loop through the row
- */
- for (var i = 0; i < tr.childNodes.length; i++) {
- if (tr.childNodes[i] === td) {
- col = i;
- break;
- }
- }
- }
- return {
- row : row,
- column : col
- };
- },
-
/**
* APIMethod: resize
* resize the grid to fit inside its container. This involves knowing something
@@ -26377,8 +26350,10 @@
}
});
this.colTableBody.appendChild(trBody);
+
+ var headerList = this.makeList(trBody);
- this.columns.getHeaders(trBody);
+ this.columns.getHeaders(headerList);
/* one extra column at the end for filler */
th = new Element('td', {
@@ -26400,11 +26375,20 @@
if (this.row.useHeaders()) {
this.rowTableHead.setStyle('visibility', 'visible');
- var tr;
+ var rowHeight = this.row.getHeight();
+
+
+
//loop through all rows and add header
this.model.first();
while (this.model.valid()) {
- tr = this.row.getRowHeader();
+ var tr = new Element('tr', {
+ styles : {
+ height : rowHeight
+ }
+ });
+ var rowHeaderList = this.makeList(tr);
+ this.row.getRowHeader(rowHeaderList);
this.rowTableHead.appendChild(tr);
if (this.model.hasNext()) {
this.model.next();
@@ -26428,14 +26412,20 @@
colHeight = this.columns.getHeaderHeight();
+
//This section actually adds the rows
this.model.first();
while (this.model.valid()) {
tr = this.row.getGridRowElement();
+ tr.store('jxRowData', {row: this.model.getPosition()});
+
+
+ var rl = this.makeList(tr);
this.gridTableBody.appendChild(tr);
-
+ //this.rowList.add(rl.container);
+
//Actually add the columns
- this.columns.getColumnCells(tr);
+ this.columns.getColumnCells(rl);
if (this.model.hasNext()) {
this.model.next();
@@ -26465,9 +26455,48 @@
this.model.moveTo(row);
var newTD = this.columns.getColumnCell(this.columns.getByName(col.name));
- newTD.replaces(td);
+ //get parent list
+ var list = td.getParent().retrieve('jxList');
+ list.replace(td, newTD);
+ //newTD.replaces(td);
this.model.moveTo(currentRow);
+ },
+ /**
+ * Method: makeList
+ * utility method used to make row lists
+ *
+ * Parameters:
+ * container - the row to use as the Jx.List container
+ */
+ makeList: function (container) {
+ var l = new Jx.List(container, {
+ hover: true,
+ select: true
+ }, this.selection);
+ var target = this;
+ l.addEvents({
+ mouseenter: this.bound.mouseenter,
+ mouseleave: this.bound.mouseleave
+ });
+ this.lists.push(l);
+ return l;
+ },
+
+ onSelect: function (cell, select) {
+ this.fireEvent('gridCellSelect', [cell,select,this]);
+ },
+
+ onUnselect: function (cell, select) {
+ this.fireEvent('gridCellUnselect', [cell,select,this]);
+ },
+
+ onMouseEnter: function (cell, list) {
+ this.fireEvent('gridCellEnter', [cell,list,this]);
+ },
+
+ onMouseLeave: function (cell, list) {
+ this.fireEvent('gridCellLeave', [cell,list,this]);
}
});
@@ -26526,20 +26555,30 @@
* APIMethod: attach
* Sets up the plugin and attaches the plugin to the grid events it
* will be monitoring
+ *
+ * Parameters:
+ * grid - The instance of Jx.Grid to attach to
*/
attach: function (grid) {
if (!$defined(grid) && !(grid instanceof Jx.Grid)) {
return;
}
this.grid = grid;
- this.grid.addEvent('gridClick', this.bound.select);
+ this.grid.addEvent('gridCellSelect', this.bound.select);
+ if (this.options.cell) {
+ this.oldSelectionClass = this.grid.selection.options.selectedClass;
+ this.grid.selection.options.selectClass = "jxGridCellSelected";
+ }
},
/**
* APIMethod: detach
*/
detach: function() {
if (this.grid) {
- this.grid.removeEvent('gridClick', this.bound.select);
+ this.grid.removeEvent('gridCellSelect', this.bound.select);
+ if (this.options.cell) {
+ this.grid.selection.options.selectedClass = this.oldSelectionClass;
+ }
}
this.grid = null;
},
@@ -26547,52 +26586,20 @@
* Method: select
* dispatches the grid click to the various selection methods
*/
- select : function (rc) {
- if ($defined(rc) && rc.column !== -1 && rc.row !== -1) {
- var row = rc.row;
- if (this.grid.columns.useHeaders()) {
- row--;
- }
- var column = rc.column;
- if (this.grid.row.useHeaders()) {
- column--;
- }
- if (this.options.cell) {
- this.selectCell(row, column);
- }
- if (this.options.row) {
- this.selectRow(row);
- }
- if (this.options.column) {
- this.selectColumn(column);
- }
+ select : function (cell) {
+
+ console.log('select method');
+ var data = cell.retrieve('jxCellData');
+ console.log(data);
+
+ if (this.options.row) {
+ this.selectRow(data.row);
}
- },
- /**
- * Method: selectCell
- * Select a cell and apply the jxGridCellSelected style to it.
- * This deselects a previously selected cell.
- *
- * If the model supports cell selection, it should implement
- * a cellSelected function to receive notification of the selection.
- *
- * Parameters:
- * row - {Integer} the row of the cell to select
- * col - {Integer} the column of the cell to select
- */
- selectCell : function (row, col) {
- var td = (row >= 0 && col >= 0
- && row < this.grid.gridTableBody.rows.length && col < this.grid.gridTableBody.rows[row].cells.length) ? this.grid.gridTableBody.rows[row].cells[col]
- : null;
- if (!td) {
- return;
+
+ if (this.options.column) {
+ this.selectColumn(data.index - 1);
}
-
- if (this.selectedCell) {
- this.selectedCell.removeClass('jxGridCellSelected');
- }
- this.selectedCell = td;
- this.selectedCell.addClass('jxGridCellSelected');
+
},
/**
* Method: selectRow
@@ -26601,17 +26608,23 @@
* Parameters:
* row - {Integer} the row to select
*/
- selectRow : function (row) {
- var tr = (row >= 0 && row < this.grid.gridTableBody.rows.length) ? this.grid.gridTableBody.rows[row]
- : null;
- if (this.selectedRow !== tr) {
+ selectRow: function (row) {
+ if (!this.options.row) { return; }
+
+ var tr = (row >= 0 && row < this.grid.gridTableBody.rows.length) ? this.grid.gridTableBody.rows[row] : null;
+
+ if (tr.hasClass('jxGridRowSelected')) {
+ this.selectedRow.removeClass('jxGridRowSelected');
+ this.selectedRow = null;
+ } else {
if (this.selectedRow) {
this.selectedRow.removeClass('jxGridRowSelected');
}
- this.selectedRow = tr;
+ this.selectedRow = $(tr);
this.selectedRow.addClass('jxGridRowSelected');
- this.selectRowHeader(row);
}
+ this.selectRowHeader(row);
+
},
/**
* Method: selectRowHeader
@@ -26621,22 +26634,23 @@
* Parameters:
* row - {Integer} the row header to select
*/
- selectRowHeader : function (row) {
+ selectRowHeader: function (row) {
if (!this.grid.row.useHeaders()) {
return;
}
- var cell = (row >= 0 && row < this.grid.rowTableHead.rows.length) ? this.grid.rowTableHead.rows[row].cells[0]
- : null;
+ var cell = (row >= 0 && row < this.grid.rowTableHead.rows.length) ? this.grid.rowTableHead.rows[row].cells[0] : null;
+
if (!cell) {
return;
}
+ if (this.selectedRowHead) {
+ this.selectedRowHead.removeClass('jxGridRowHeaderSelected');
+ }
if (this.selectedRowHead !== cell) {
- if (this.selectedRowHead) {
- this.selectedRowHead
- .removeClass('jxGridRowHeaderSelected');
- }
- this.selectedRowHead = cell;
+ this.selectedRowHead = $(cell);
cell.addClass('jxGridRowHeaderSelected');
+ } else if (cell.hasClass('jxgridRowHeaderSelected')) {
+ this.selectedRowHead = null;
}
},
/**
@@ -26647,22 +26661,22 @@
* Parameters:
* col - {Integer} the column to select
*/
- selectColumn : function (col) {
+ selectColumn: function (col) {
if (col >= 0 && col < this.grid.gridTable.rows[0].cells.length) {
+ if ($defined(this.selectedCol)) {
+ for (var i = 0; i < this.grid.gridTable.rows.length; i++) {
+ this.grid.gridTable.rows[i].cells[this.selectedCol].removeClass('jxGridColumnSelected');
+ }
+ }
if (col !== this.selectedCol) {
- if ($defined(this.selectedCol)) {
- for (var i = 0; i < this.grid.gridTable.rows.length; i++) {
- this.grid.gridTable.rows[i].cells[this.selectedCol]
- .removeClass('jxGridColumnSelected');
- }
- }
this.selectedCol = col;
for (i = 0; i < this.grid.gridTable.rows.length; i++) {
- this.grid.gridTable.rows[i].cells[col]
- .addClass('jxGridColumnSelected');
+ this.grid.gridTable.rows[i].cells[col].addClass('jxGridColumnSelected');
}
- this.selectColumnHeader(col);
+ } else {
+ this.selectedCol = null;
}
+ this.selectColumnHeader(col);
}
},
/**
@@ -26673,26 +26687,29 @@
* Parameters:
* col - {Integer} the column header to select
*/
- selectColumnHeader : function (col) {
+ selectColumnHeader: function (col) {
if (this.grid.colTableBody.rows.length === 0
|| !this.grid.row.useHeaders()) {
return;
}
+
var cell = (col >= 0 && col < this.grid.colTableBody.rows[0].cells.length) ? this.grid.colTableBody.rows[0].cells[col]
- : null;
+ : null;
if (cell === null) {
return;
}
- if (this.selectedColHead !== cell) {
- if (this.selectedColHead) {
- this.selectedColHead
- .removeClass('jxGridColumnHeaderSelected');
- }
- this.selectedColHead = cell;
+ if (this.selectedColHead) {
+ this.selectedColHead.removeClass('jxGridColumnHeaderSelected');
+ }
+ if (this.selectedColHead !== cell) {
+ this.selectedColHead = $(cell);
cell.addClass('jxGridColumnHeaderSelected');
+ } else {
+ this.selectedColHead = null;
}
+
}
});
// $Id: $
@@ -26759,7 +26776,8 @@
*/
init: function() {
this.parent();
- this.bound.prelight = this.prelight.bind(this);
+ this.bound.lighton = this.lighton.bind(this);
+ this.bound.lightoff = this.lightoff.bind(this);
},
/**
* APIMethod: attach
@@ -26770,50 +26788,57 @@
return;
}
this.grid = grid;
- this.grid.addEvent('gridMove', this.bound.prelight);
+ this.grid.addEvent('gridCellEnter', this.bound.lighton);
+ this.grid.addEvent('gridCellLeave', this.bound.lightoff);
},
/**
* APIMethod: detach
*/
detach: function() {
if (this.grid) {
- this.grid.removeEvent('gridMove', this.bound.prelight);
+ this.grid.removeEvent('gridCellEnter', this.bound.lighton);
+ this.grid.removeEvent('gridCellLeave', this.bound.lightoff);
}
this.grid = null;
},
/**
- * Method: prelight
+ * Method: lighton
+ */
+ lighton : function (cell, list, grid) {
+ this.light(cell, list, grid, true);
+
+ },
+ /**
+ * Method: lightoff
+ */
+ lightoff : function (cell, list, grid) {
+ this.light(cell, list, grid, false);
+
+ },
+ /**
+ * Method: light
* dispatches the event to the various prelight methods.
*/
- prelight : function (rc) {
- if ($defined(rc) && rc.column !== -1 && rc.row !== -1) {
-
- var row = rc.row;
- if (this.grid.columns.useHeaders()) {
- row--;
- }
- var column = rc.column;
- if (this.grid.row.useHeaders()) {
- column--;
- }
-
- if (this.options.cell) {
- this.prelightCell(row, column);
- }
- if (this.options.row) {
- this.prelightRow(row);
- }
- if (this.options.column) {
- this.prelightColumn(column);
- }
- if (this.options.rowHeader) {
- this.prelightRowHeader(row);
- }
- if (this.options.columnHeader) {
- this.prelightColumnHeader(column);
- }
+ light: function (cell, list, grid, on) {
+ var data = cell.retrieve('jxCellData');
+
+ if (this.options.cell) {
+ this.prelightCell(cell, on);
}
+ if (this.options.row) {
+ this.prelightRow(data.row, on);
+ }
+ if (this.options.column) {
+ this.prelightColumn(data.index - 1, on);
+ }
+ if (this.options.rowHeader) {
+ this.prelightRowHeader(data.row, on);
+ }
+ if (this.options.columnHeader) {
+ this.prelightColumnHeader(data.index - 1, on);
+ }
},
+
/**
* Method: prelightRowHeader
* apply the jxGridRowHeaderPrelight style to the header cell of a row.
@@ -26822,19 +26847,14 @@
* Parameters:
* row - {Integer} the row to pre-light the header cell of
*/
- prelightRowHeader : function (row) {
- var cell = (row >= 0 && row < this.grid.rowTableHead.rows.length) ? this.grid.rowTableHead.rows[row].cells[0]
- : null;
- if (this.prelitRowHeader !== cell) {
+ prelightRowHeader : function (row, on) {
+ if ($defined(this.prelitRowHeader) && !on) {
+ this.prelitRowHeader.removeClass('jxGridRowHeaderPrelight');
+ } else if (on) {
+ this.prelitRowHeader = (row >= 0 && row < this.grid.rowTableHead.rows.length) ? this.grid.rowTableHead.rows[row].cells[0] : null;
if (this.prelitRowHeader) {
- this.prelitRowHeader
- .removeClass('jxGridRowHeaderPrelight');
+ this.prelitRowHeader.addClass('jxGridRowHeaderPrelight');
}
- this.prelitRowHeader = cell;
- if (this.prelitRowHeader) {
- this.prelitRowHeader
- .addClass('jxGridRowHeaderPrelight');
- }
}
},
/**
@@ -26844,25 +26864,22 @@
*
* Parameters:
* col - {Integer} the column to pre-light the header cell of
+ * on - flag to tell if we're lighting on or off
*/
- prelightColumnHeader : function (col) {
+ prelightColumnHeader : function (col, on) {
if (this.grid.colTableBody.rows.length === 0) {
return;
}
- var cell = (col >= 0 && col < this.grid.colTableBody.rows[0].cells.length) ? this.grid.colTableBody.rows[0].cells[col]
- : null;
- if (this.prelitColumnHeader !== cell) {
+ if ($defined(this.prelitColumnHeader) && !on) {
+ this.prelitColumnHeader.removeClass('jxGridColumnHeaderPrelight');
+ } else if (on) {
+ this.prelitColumnHeader = (col >= 0 && col < this.grid.colTableBody.rows[0].cells.length) ? this.grid.colTableBody.rows[0].cells[col] : null;
if (this.prelitColumnHeader) {
- this.prelitColumnHeader
- .removeClass('jxGridColumnHeaderPrelight');
+ this.prelitColumnHeader.addClass('jxGridColumnHeaderPrelight');
}
- this.prelitColumnHeader = cell;
- if (this.prelitColumnHeader) {
- this.prelitColumnHeader
- .addClass('jxGridColumnHeaderPrelight');
- }
}
+
},
/**
* Method: prelightRow
@@ -26871,21 +26888,18 @@
*
* Parameters:
* row - {Integer} the row to pre-light
+ * on - flag to tell if we're lighting on or off
*/
- prelightRow : function (row) {
- var tr = (row >= 0 && row < this.grid.gridTableBody.rows.length) ? this.grid.gridTableBody.rows[row]
- : null;
-
- if (this.prelitRow !== row) {
+ prelightRow : function (row, on) {
+ if ($defined(this.prelitRow) && !on) {
+ this.prelitRow.removeClass('jxGridRowPrelight');
+ } else if (on) {
+ this.prelitRow = (row >= 0 && row < this.grid.gridTableBody.rows.length) ? this.grid.gridTableBody.rows[row] : null;
if (this.prelitRow) {
- this.prelitRow.removeClass('jxGridRowPrelight');
- }
- this.prelitRow = tr;
- if (this.prelitRow) {
- this.prelightRowHeader(row);
this.prelitRow.addClass('jxGridRowPrelight');
}
}
+ this.prelightRowHeader(row, on);
},
/**
* Method: prelightColumn
@@ -26894,21 +26908,21 @@
*
* Parameters:
* col - {Integer} the column to pre-light
+ * on - flag to tell if we're lighting on or off
*/
- prelightColumn : function (col) {
+ prelightColumn : function (col, on) {
if (col >= 0 && col < this.grid.gridTable.rows[0].cells.length) {
- if ($chk(this.prelitColumn)) {
+ if ($defined(this.prelitColumn) && !on) {
for (var i = 0; i < this.grid.gridTable.rows.length; i++) {
- this.grid.gridTable.rows[i].cells[this.prelitColumn]
- .removeClass('jxGridColumnPrelight');
+ this.grid.gridTable.rows[i].cells[this.prelitColumn].removeClass('jxGridColumnPrelight');
}
+ } else if (on) {
+ this.prelitColumn = col;
+ for (i = 0; i < this.grid.gridTable.rows.length; i++) {
+ this.grid.gridTable.rows[i].cells[col].addClass('jxGridColumnPrelight');
+ }
}
- this.prelitColumn = col;
- for (i = 0; i < this.grid.gridTable.rows.length; i++) {
- this.grid.gridTable.rows[i].cells[col]
- .addClass('jxGridColumnPrelight');
- }
- this.prelightColumnHeader(col);
+ this.prelightColumnHeader(col, on);
}
},
/**
@@ -26917,19 +26931,15 @@
* This removes the style from the previously pre-lit cell.
*
* Parameters:
- * row - {Integer} the row of the cell to pre-light
- * col - {Integer} the column of the cell to pre-light
+ * cell - the cell to lighton/off
+ * on - flag to tell if we're lighting on or off
*/
- prelightCell : function (row, col) {
- var td = (row >= 0 && col >= 0
- && row < this.grid.gridTableBody.rows.length && col < this.grid.gridTableBody.rows[row].cells.length) ? this.grid.gridTableBody.rows[row].cells[col]
- : null;
- if (this.prelitCell !== td) {
+ prelightCell : function (cell, on) {
+ if ($defined(this.prelitCell) && !on) {
+ this.prelitCell.removeClass('jxGridCellPrelight');
+ } else if (on) {
+ this.prelitCell = cell;
if (this.prelitCell) {
- this.prelitCell.removeClass('jxGridCellPrelight');
- }
- this.prelitCell = td;
- if (this.prelitCell) {
this.prelitCell.addClass('jxGridCellPrelight');
}
}
@@ -26997,7 +27007,7 @@
this.grid = grid;
- this.grid.addEvent('gridClick', this.bound.sort);
+ this.grid.addEvent('gridCellSelect', this.bound.sort);
this.boundAddHeader = this.addHeaderClass.bind(this);
},
/**
@@ -27005,7 +27015,7 @@
*/
detach: function() {
if (this.grid) {
- this.grid.removeEvent('gridClick', this.bound.sort);
+ this.grid.removeEvent('gridCellSelect', this.bound.sort);
}
this.grid = null;
},
@@ -27014,35 +27024,30 @@
* called when a grid header is clicked.
*
* Parameters:
- * rc - an object holding the row and column indexes for the clicked header
+ * cell - The cell clicked
*/
- sort : function (rc) {
- if ($defined(rc) && rc.column !== -1 && rc.row !== -1) {
- //check to find the header
- if (rc.row === 0) {
- if (this.grid.row.useHeaders()) {
- rc.column--;
+ sort : function (cell) {
+ var data = cell.retrieve('jxCellData');
+ if (data.colHeader) {
+ var column = data.column;
+ if (column.isSortable()) {
+ if (column === this.current) {
+ //reverse sort order
+ this.direction = (this.direction === 'asc') ? 'desc' : 'asc';
+ } else {
+ this.current = column;
+ this.direction = 'asc';
+ this.currentGridIndex = data.index - 1;
}
- var column = this.grid.columns.getByGridIndex(rc.column);
- if (column.isSortable()) {
- if (column === this.current) {
- //reverse sort order
- this.direction = (this.direction === 'asc') ? 'desc' : 'asc';
- } else {
- this.current = column;
- this.direction = 'asc';
- this.currentGridIndex = rc.column;
- }
+
+ //The grid should be listening for the sortFinished event and will re-render the grid
+ //we will listen for the grid's doneCreateGrid event to add the header
+ this.grid.addEvent('doneCreateGrid', this.bound.addHeaderClass);
+ //sort the store
+ var model = this.grid.getModel();
+ model.sort(this.current.name, null, this.direction);
+ }
- //The grid should be listening for the sortFinished event and will re-render the grid
- //we will listen for the grid's doneCreateGrid event to add the header
- this.grid.addEvent('doneCreateGrid', this.bound.addHeaderClass);
- //sort the store
- var model = this.grid.getModel();
- model.sort(this.current.name, null, this.direction);
- }
-
- }
}
},
/**
@@ -27178,9 +27183,9 @@
}, this);
}
- if (this.options.rows && this.grid.row.useHeaders()) {
-
- }
+ // if (this.options.rows && this.grid.row.useHeaders()) {
+ //
+ // }
}
});
/**
@@ -27851,7 +27856,7 @@
e.stop();
}
-});// $Id: menu.separator.js 586 2009-11-05 20:34:17Z pagameba $
+});// $Id: menu.separator.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Menu.Separator
*
@@ -27885,15 +27890,15 @@
options: {
template: "<li class='jxMenuItemContainer jxMenuItem'><span class='jxMenuSeparator'> </span></li>"
},
- classes: ['jxMenuItem'],
+ classes: new Hash({
+ domObj: 'jxMenuItem'
+ }),
/**
* APIMethod: render
* Create a new instance of a menu separator
*/
render: function() {
this.parent();
- this.elements = this.processTemplate(this.options.template, this.classes);
- this.domObj = this.elements.get('jxMenuItem');
this.domObj.store('jxMenuItem', this);
},
/**
@@ -27916,7 +27921,7 @@
* Show the menu item
*/
show: $empty
-});// $Id: submenu.js 582 2009-10-30 22:03:58Z pagameba $
+});// $Id: submenu.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.Menu.SubMenu
*
@@ -27971,8 +27976,6 @@
}
},
- classes: ['jxMenuItemContainer', 'jxMenuItem','jxMenuItemIcon','jxMenuItemLabel'],
-
/**
* APIMethod: render
* Create a new instance of Jx.SubMenu
@@ -28017,7 +28020,6 @@
}
return document.id(e.target).descendantOf(this.domObj) ||
this.menu.eventInMenu(e);
- document.id(e.target).descendantOf(this.menusubDomObj);
},
/**
@@ -28041,7 +28043,7 @@
* can be added by passing multiple arguments to this function.
*/
add: function(item, position) {
- this.menu.add(item, position);
+ this.menu.add(item, position, this);
return this;
},
/**
@@ -28399,7 +28401,7 @@
-// $Id: tabbox.js 524 2009-09-18 05:40:16Z jonlb at comcast.net $
+// $Id: tabbox.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.TabBox
*
@@ -28473,7 +28475,6 @@
render : function() {
this.parent();
this.tabBar = new Jx.Toolbar({
- type: 'TabBar',
position: this.options.position,
scroll: this.options.scroll
});
@@ -28495,6 +28496,7 @@
this.panel.addEvent('sizeChange', (function() {
this.tabSet.resizeTabBox();
this.tabBar.domObj.getParent('.jxBarContainer').retrieve('jxBarContainer').update();
+ this.tabBar.domObj.getParent('.jxBarContainer').addClass('jxTabBar'+this.options.position.capitalize());
}).bind(this));
/* when tabs are added or removed, we might need to layout
* the panel if the toolbar is or becomes empty
@@ -28580,8 +28582,238 @@
this.domObj.appendChild(this.domSpan);
}
});
-// $Id: treeitem.js 586 2009-11-05 20:34:17Z pagameba $
+// $Id: tree.js 602 2009-11-10 19:41:36Z pagameba $
/**
+ * Class: Jx.Tree
+ *
+ * Extends: Jx.TreeFolder
+ *
+ * Jx.Tree displays hierarchical data in a tree structure of folders and nodes.
+ *
+ * Example:
+ * (code)
+ * (end)
+ *
+ * Extends: <Jx.Widget>
+ *
+ * License:
+ * Copyright (c) 2008, DM Solutions Group Inc.
+ *
+ * This file is licensed under an MIT style license
+ */
+Jx.Tree = new Class({
+ Family: 'Jx.Tree',
+ Extends: Jx.Widget,
+ parameters: ['options','container', 'selection'],
+ selection: null,
+ ownsSelection: false,
+ isOpen: true,
+ list: null,
+ domObj: null,
+ options: {
+ /* APIProperty: select
+ * {Boolean} are items in the tree selectable? See <Jx.Selection>
+ * for other options relating to selections that can be set here.
+ */
+ select: true,
+ template: '<ul class="jxTreeRoot"></ul>'
+ },
+ classes: new Hash({domObj: 'jxTreeRoot'}),
+ /**
+ * APIMethod: render
+ * Create a new instance of Jx.Tree
+ */
+ render: function() {
+ this.parent();
+ if ($defined(this.options.container) &&
+ document.id(this.options.container)) {
+ this.domObj = this.options.container;
+ }
+
+ if (this.options.selection) {
+ this.selection = this.options.selection;
+ } else if (this.options.select) {
+ this.selection = new Jx.Selection(this.options);
+ this.ownsSelection = true;
+ }
+
+ this.bound = {
+ select: function(item) {
+ this.fireEvent('select', item.retrieve('jxTreeItem'));
+ }.bind(this),
+ unselect: function(item) {
+ this.fireEvent('unselect', item.retrieve('jxTreeItem'));
+ }.bind(this)
+ };
+
+ if (this.selection && this.ownsSelection) {
+ this.selection.addEvents({
+ select: this.bound.select,
+ unselect: this.bound.unselect
+ });
+ }
+
+ this.list = new Jx.List(this.domObj, {
+ hover: true,
+ press: true,
+ select: true,
+ onAdd: function(item) {this.update();}.bind(this),
+ onRemove: function(item) {this.update();}.bind(this)
+ }, this.selection);
+ if (this.options.parent) {
+ this.addTo(this.options.parent);
+ }
+ },
+
+ add: function(item, position) {
+ if ($type(item) == 'array') {
+ item.each(function(what){ this.add(what, position); }.bind(this) );
+ return;
+ }
+ item.addEvents({
+ add: function(what) { this.fireEvent('add', what).bind(this); },
+ remove: function(what) { this.fireEvent('remove', what).bind(this); },
+ disclose: function(what) { this.fireEvent('disclose', what).bind(this); }
+ });
+ item.setSelection(this.selection);
+ item.owner = this;
+ this.list.add(item, position);
+ return this;
+ },
+ remove: function(item) {
+ item.removeEvents('add');
+ item.removeEvents('remove');
+ item.removeEvents('disclose');
+ item.owner = null;
+ this.list.remove(item);
+ item.setSelection(null);
+ return this;
+ },
+ replace: function(item, withItem) {
+ item.owner = null;
+ withItem.owner = this;
+ this.list.replace(item, withItem);
+ withItem.setSelection(this.selection);
+ item.setSelection(null);
+ return this;
+ },
+
+ /**
+ * Method: cleanup
+ * Clean up a Jx.Tree instance
+ */
+ cleanup: function() {
+ if (this.ownsSelection) {
+ this.selection.destroy();
+ }
+ this.list.destroy();
+ this.domObj.dispose();
+ },
+ /**
+ * Method: update
+ * Update the CSS of the Tree's DOM element in case it has changed
+ * position
+ *
+ * Parameters:
+ * shouldDescend - {Boolean} propagate changes to child nodes?
+ */
+ update: function(shouldDescend, isLast) {
+
+ if ($defined(isLast)) {
+ if (isLast) {
+ this.domObj.removeClass('jxTreeNest');
+ } else {
+ this.domObj.addClass('jxTreeNest');
+ }
+ }
+ var last = this.list.count() - 1;
+ this.list.each(function(item, idx){
+ var lastItem = idx == last;
+ if (item.retrieve('jxTreeFolder')) {
+ item.retrieve('jxTreeFolder').update(shouldDescend, lastItem);
+ }
+ if (item.retrieve('jxTreeItem')) {
+ item.retrieve('jxTreeItem').update(lastItem);
+ }
+ });
+ },
+
+ /**
+ * APIMethod: items
+ * return an array of tree item instances contained in this tree.
+ * Does not descend into folders but does return a reference to the
+ * folders
+ */
+ items: function() {
+ return this.list.items().map(function(item) {
+ return item.retrieve('jxTreeItem');
+ });
+ },
+ /**
+ * APIMethod:
+ * recursively empty this tree and any folders in it
+ */
+ empty: function() {
+ this.list.items().each(function(item){
+ if (item.retrieve('jxTreeFolder')) {
+ item.retrieve('jxTreeFolder').empty();
+ }
+ if (item.retrieve('jxTreeItem')) {
+ this.remove(item.retrieve('jxTreeItem'));
+ }
+ });
+ },
+
+ /**
+ * Method: findChild
+ * Get a reference to a child node by recursively searching the tree
+ *
+ * Parameters:
+ * path - {Array} an array of labels of nodes to search for
+ *
+ * Returns:
+ * {Object} the node or null if the path was not found
+ */
+ findChild : function(path) {
+ //path is empty - we are asking for this node
+ if (path.length == 0) {
+ return false;
+ }
+ //path has more than one thing in it, find a folder and descend into it
+ var name = path.shift();
+ var result = false;
+ this.list.items().some(function(item) {
+ var treeItem = item.retrieve('jxTreeItem');
+ if (treeItem && treeItem.getLabel() == name) {
+ if (path.length > 0) {
+ var folder = item.retrieve('jxTreeFolder');
+ if (folder) {
+ result = folder.findChild(path);
+ }
+ } else {
+ result = treeItem;
+ }
+ }
+ return result;
+ });
+ return result;
+ },
+ setSelection: function(selection) {
+ if (this.selection && this.ownsSelection) {
+ this.selection.removeEvents(this.bound);
+ this.selection.destroy();
+ this.ownsSelection = false;
+ }
+ this.selection = selection;
+ this.list.setSelection(selection);
+ this.list.each(function(item) {
+ item.retrieve('jxTreeItem').setSelection(selection);
+ })
+ }
+});
+
+// $Id: treeitem.js 602 2009-11-10 19:41:36Z pagameba $
+/**
* Class: Jx.TreeItem
*
* Extends: <Jx.Widget>
@@ -28652,7 +28884,13 @@
lastLeafClass: 'jxTreeLeafLast',
template: '<li class="jxTreeContainer jxTreeLeaf"><img class="jxTreeImage" src="'+Jx.aPixel.src+'" alt="" title=""><a class="jxTreeItem" href="javascript:void(0);"><img class="jxTreeIcon" src="'+Jx.aPixel.src+'" alt="" title=""><span class="jxTreeLabel"></span></a></li>'
},
- classes: ['jxTreeContainer', 'jxTreeItem', 'jxTreeImage', 'jxTreeIcon','jxTreeLabel'],
+ classes: new Hash({
+ domObj: 'jxTreeContainer',
+ domA: 'jxTreeItem',
+ domImg: 'jxTreeImage',
+ domIcon: 'jxTreeIcon',
+ domLabel: 'jxTreeLabel'
+ }),
/**
* APIMethod: render
@@ -28660,17 +28898,13 @@
*/
render : function() {
this.parent();
- this.elements = this.processTemplate(this.options.template, this.classes);
this.domObj = this.elements.get('jxTreeContainer');
this.domObj.store('jxTreeItem', this);
- var domA = this.elements.get('jxTreeItem');
- domA.store('jxTreeItem', this);
- var domImg = this.elements.get('jxTreeIcon');
- var domLabel = this.elements.get('jxTreeLabel');
+ this.domA.store('jxTreeItem', this);
/* the target for jxPressed, jxSelected, jxHover classes */
- this.domObj.store('jxListTarget', domA);
+ this.domObj.store('jxListTarget', this.domA);
if (!this.options.selectable) {
this.domObj.addClass('jxUnselectable');
@@ -28686,28 +28920,27 @@
}
}
- if (this.options.image && domImg) {
- domImg.setStyle('backgroundImage', 'url('+this.options.image+')');
+ if (this.options.image && this.domIcon) {
+ this.domIcon.setStyle('backgroundImage', 'url('+this.options.image+')');
if (this.options.imageClass) {
- domImg.addClass(this.options.imageClass);
+ this.domIcon.addClass(this.options.imageClass);
}
}
- if (this.options.label && domLabel) {
- domLabel.set('html',this.options.label);
+ if (this.options.label && this.domLabel) {
+ this.domLabel.set('html',this.options.label);
}
- if (domA) {
- domA.addEvents({
+ if (this.domA) {
+ this.domA.addEvents({
click: this.click.bind(this),
dblclick: this.dblclick.bind(this),
drag: function(e) { e.stop(); },
- contextmenu: function(e) { e.stop(); },
+ contextmenu: function(e) { e.stop(); }
});
- domA.appendChild(domImg);
if (typeof Drag != 'undefined') {
- new Drag(domA, {
+ new Drag(this.domA, {
onStart: function() {this.stop();}
});
}
@@ -28787,22 +29020,20 @@
*/
setLabel: function(label) {
this.options.label = label;
- var el = this.elements.get('jxTreeLabel');
- if (el) {
- el.set('html',label);
+ if (this.domLabel) {
+ this.domLabel.set('html',label);
}
},
setImage: function(url, imageClass) {
- var el = this.elements.get('jxTreeIcon')
- if (el && $defined(url)) {
+ if (this.domIcon && $defined(url)) {
this.options.image = url;
- el.setStyle('backgroundImage', 'url('+this.options.image+')');
+ this.domIcon.setStyle('backgroundImage', 'url('+this.options.image+')');
}
- if (el && $defined(imageClass)) {
- el.removeClass(this.options.imageClass);
+ if (this.domIcon && $defined(imageClass)) {
+ this.domIcon.removeClass(this.options.imageClass);
this.options.imageClass = imageClass;
- el.addClass(imageClass);
+ this.domIcon.addClass(imageClass);
}
},
enable: function(state, force) {
@@ -28841,7 +29072,7 @@
this.selection = selection;
}
});
-// $Id: treefolder.js 586 2009-11-05 20:34:17Z pagameba $
+// $Id: treefolder.js 602 2009-11-10 19:41:36Z pagameba $
/**
* Class: Jx.TreeFolder
*
@@ -28880,7 +29111,14 @@
select: false,
template: '<li class="jxTreeContainer jxTreeBranch"><img class="jxTreeImage" src="'+Jx.aPixel.src+'" alt="" title=""><a class="jxTreeItem" href="javascript:void(0);"><img class="jxTreeIcon" src="'+Jx.aPixel.src+'" alt="" title=""><span class="jxTreeLabel"></span></a><ul class="jxTree"></ul></li>'
},
- classes: ['jxTreeContainer','jxTreeImage','jxTreeItem','jxTreeIcon','jxTreeLabel','jxTree'],
+ classes: new Hash({
+ domObj: 'jxTreeContainer',
+ domA: 'jxTreeItem',
+ domImg: 'jxTreeImage',
+ domIcon: 'jxTreeIcon',
+ domLabel: 'jxTreeLabel',
+ domTree: 'jxTree'
+ }),
/**
* APIMethod: render
* Create a new instance of Jx.TreeFolder
@@ -28898,9 +29136,8 @@
dblclick: this.bound.toggle
});
- var node = this.elements.get('jxTreeImage');
- if (node) {
- document.id(node).addEvent('click', this.bound.toggle);
+ if (this.domImg) {
+ this.domImg.addEvent('click', this.bound.toggle);
}
this.tree = new Jx.Tree({
@@ -28913,7 +29150,7 @@
this.update();
this.fireEvent('remove', item);
}.bind(this)
- }, this.elements.get('jxTree'));
+ }, this.domTree);
if (this.options.open) {
this.expand();
} else {
@@ -29018,233 +29255,7 @@
setSelection: function(selection) {
this.tree.setSelection(selection);
}
-});// $Id: tree.js 586 2009-11-05 20:34:17Z pagameba $
-/**
- * Class: Jx.Tree
- *
- * Extends: Jx.TreeFolder
- *
- * Jx.Tree displays hierarchical data in a tree structure of folders and nodes.
- *
- * Example:
- * (code)
- * (end)
- *
- * Extends: <Jx.Widget>
- *
- * License:
- * Copyright (c) 2008, DM Solutions Group Inc.
- *
- * This file is licensed under an MIT style license
- */
-Jx.Tree = new Class({
- Family: 'Jx.Tree',
- Extends: Jx.Widget,
- parameters: ['options','container', 'selection'],
- selection: null,
- ownsSelection: false,
- isOpen: true,
- list: null,
- domObj: null,
- options: {
- /* APIProperty: select
- * {Boolean} are items in the tree selectable? See <Jx.Selection>
- * for other options relating to selections that can be set here.
- */
- select: true,
- template: '<ul class="jxTreeRoot"></ul>'
- },
- classes: ['jxTreeRoot'],
- /**
- * APIMethod: render
- * Create a new instance of Jx.Tree
- */
- render: function() {
- this.parent();
-
- if (this.options.selection) {
- this.selection = this.options.selection;
- } else if (this.options.select) {
- this.selection = new Jx.Selection(this.options);
- this.ownsSelection = true;
- }
-
- this.bound = {
- select: function(item) {
- this.fireEvent('select', item.retrieve('jxTreeItem'));
- }.bind(this),
- unselect: function(item) {
- this.fireEvent('unselect', item.retrieve('jxTreeItem'));
- }.bind(this)
- }
-
- if (this.selection && this.ownsSelection) {
- this.selection.addEvents({
- select: this.bound.select,
- unselect: this.bound.unselect
- });
- }
-
- if ($defined(this.options.container) &&
- document.id(this.options.container)) {
- this.domObj = this.options.container;
- } else {
- this.elements = this.processTemplate(this.options.template, this.classes);
- this.domObj = this.elements.get('jxTreeRoot');
- }
- this.list = new Jx.List(this.domObj, {
- hover: true,
- press: true,
- select: true,
- onAdd: function(item) {this.update();}.bind(this),
- onRemove: function(item) {this.update();}.bind(this)
- }, this.selection);
- if (this.options.parent) {
- this.addTo(this.options.parent);
- }
- },
-
- add: function(item, position) {
- item.addEvents({
- add: function(what) { this.fireEvent('add', what).bind(this); },
- remove: function(what) { this.fireEvent('remove', what).bind(this); },
- disclose: function(what) { this.fireEvent('disclose', what).bind(this); }
- })
- item.setSelection(this.selection);
- item.owner = this;
- this.list.add(item, position);
- return this;
- },
- remove: function(item) {
- item.removeEvents('add');
- item.removeEvents('remove');
- item.removeEvents('disclose');
- item.owner = null;
- this.list.remove(item);
- item.setSelection(null);
- return this;
- },
- replace: function(item, withItem) {
- item.owner = null;
- withItem.owner = this;
- this.list.replace(item, withItem);
- withItem.setSelection(this.selection);
- item.setSelection(null);
- return this;
- },
-
- /**
- * Method: cleanup
- * Clean up a Jx.Tree instance
- */
- cleanup: function() {
- if (this.ownsSelection) {
- this.selection.destroy();
- }
- this.list.destroy();
- this.domObj.dispose();
- },
- /**
- * Method: update
- * Update the CSS of the Tree's DOM element in case it has changed
- * position
- *
- * Parameters:
- * shouldDescend - {Boolean} propagate changes to child nodes?
- */
- update: function(shouldDescend, isLast) {
-
- if ($defined(isLast)) {
- if (isLast) {
- this.domObj.removeClass('jxTreeNest');
- } else {
- this.domObj.addClass('jxTreeNest');
- }
- }
- var last = this.list.count() - 1;
- this.list.each(function(item, idx){
- var lastItem = idx == last;
- if (item.retrieve('jxTreeFolder')) {
- item.retrieve('jxTreeFolder').update(shouldDescend, lastItem);
- }
- if (item.retrieve('jxTreeItem')) {
- item.retrieve('jxTreeItem').update(lastItem);
- }
- });
- },
-
- /**
- * APIMethod: items
- * return an array of tree item instances contained in this tree.
- * Does not descend into folders but does return a reference to the
- * folders
- */
- items: function() {
- return this.list.items().map(function(item) {
- return item.retrieve('jxTreeItem');
- });
- },
- /**
- * APIMethod:
- * recursively empty this tree and any folders in it
- */
- empty: function() {
- this.list.items().each(function(item){
- if (item.retrieve('jxTreeFolder')) {
- item.retrieve('jxTreeFolder').empty();
- }
- if (item.retrieve('jxTreeItem')) {
- this.remove(item.retrieve('jxTreeItem'));
- }
- });
- },
-
- /**
- * Method: findChild
- * Get a reference to a child node by recursively searching the tree
- *
- * Parameters:
- * path - {Array} an array of labels of nodes to search for
- *
- * Returns:
- * {Object} the node or null if the path was not found
- */
- findChild : function(path) {
- //path is empty - we are asking for this node
- if (path.length == 0) {
- return false;
- }
- //path has more than one thing in it, find a folder and descend into it
- var name = path.shift();
- var result = false;
- this.list.items().some(function(item) {
- var treeItem = item.retrieve('jxTreeItem');
- if (treeItem && treeItem.getLabel() == name) {
- if (path.length > 0) {
- var folder = item.retrieve('jxTreeFolder');
- if (folder) {
- result = folder.findChild(path)
- }
- } else {
- result = treeItem;
- }
- }
- return result;
- });
- return result;
- },
- setSelection: function(selection) {
- if (this.selection && this.ownsSelection) {
- this.selection.removeEvents(this.bound);
- this.selection.destroy();
- this.ownsSelection = false;
- }
- this.selection = selection;
- this.list.setSelection(selection);
- }
});
-
-
/**
* Class: Jx.Slider
* This class wraps the mootools-more slider class to make it more Jx.Slider
@@ -29307,7 +29318,10 @@
onChange: $empty,
onComplete: $empty
},
-
+ classes: new Hash({
+ domObj: 'jxSliderContainer',
+ knob: 'jxSliderKnob'
+ }),
slider: null,
knob: null,
sliderOpts: null,
@@ -29319,15 +29333,10 @@
render: function () {
this.parent();
- var els = this.processTemplate(this.options.template, ['jxSliderContainer', 'jxSliderKnob']);
-
- if (!els.has('jxSliderContainer')) {
+ if (this.domObj) {
return;
}
- this.domObj = els.get('jxSliderContainer');
- this.knob = els.get('jxSliderKnob');
-
this.sliderOpts = {
range: [this.options.min, this.options.max],
snap: this.options.snap,
@@ -29451,22 +29460,23 @@
noticeTemplate: '<span class="jxNotice"><span class="jxNoticeClose"></span></span>',
- classes: ['jxNotificationContainer','jxNotificationMinimize', 'jxNoticeContainer'],
+ classes: new Hash({
+ domObj: 'jxNotificationContainer',
+ elements: 'jxNotificationMinimize',
+ elements: 'jxNoticeContainer'
+ }),
noticeClasses: ['jxNotice','jxNoticeClose'],
bound: {},
init: function () {
- this.elements = this.processTemplate(this.options.template, this.classes);
this.bound.closeNotice = this.closeNotice.bind(this);
this.parent();
},
render: function () {
-
this.parent();
- this.domObj = this.elements.get('jxNotificationContainer');
this.list = new Jx.List(this.elements.get('jxNoticeContainer'), this.options.listOptions);
this.containerFx = $defined(this.options.fx) ? this.options.fx : {};
@@ -29575,14 +29585,6 @@
getOpenAnchorOpts: function (state) {
var ret = {};
switch (this.options.position) {
- case 'top':
- ret.opts = {
- height: this.options.sizes[state]
- };
- ret.odOpts = {
- top : opts.height
- };
- break;
case 'bottom':
ret.opts = {
top: null,
@@ -29605,6 +29607,15 @@
};
ret.odOpts = {};
break;
+ case 'top':
+ default:
+ ret.opts = {
+ height: this.options.sizes[state]
+ };
+ ret.odOpts = {
+ top : opts.height
+ };
+ break;
}
return ret;
},
@@ -30198,6 +30209,12 @@
*/
form : null
},
+
+ classes: new Hash({
+ domObj: 'jxFieldset',
+ legend: 'jxFieldsetLegend'
+ }),
+
/**
* Property: legend
* a holder for the legend Element
@@ -30218,11 +30235,8 @@
this.form = this.options.form;
}
- var els = this.processTemplate(this.options.template, ['jxFieldset', 'jxFieldsetLegend']);
-
//FIELDSET
- if (els.has('jxFieldset')) {
- this.domObj = els.get('jxFieldset');
+ if (this.domObj) {
if ($defined(this.options.id)) {
this.domObj.set('id', this.options.id);
}
@@ -30231,8 +30245,7 @@
}
}
- if (els.has('jxFieldsetLegend')) {
- this.legend = els.get('jxFieldsetLegend');
+ if (this.legend) {
if ($defined(this.options.legend)) {
this.legend.set('html', this.options.legend);
if ($defined(this.options.legendClass)) {
@@ -30292,7 +30305,7 @@
* Option: template
* The template used for rendering this field
*/
- template : '<input class="jxInputCheck" type="checkbox" name="{name}"/><label class="jxInputLabel"></label><span class="jxInputTag"></span>',
+ template : '<span class="jxInputContainer"><input class="jxInputCheck" type="checkbox" name="{name}"/><label class="jxInputLabel"></label><span class="jxInputTag"></span></span>',
/**
* Option: checked
* Whether this field is checked or not
@@ -30408,7 +30421,7 @@
* Option: template
* The template used to create this field
*/
- template: '<input class="jxInputRadio" type="radio" name="{name}"/><label class="jxInputLabel"></label><span class="jxInputTag"></span>',
+ template: '<span class="jxInputContainer"><input class="jxInputRadio" type="radio" name="{name}"/><label class="jxInputLabel"></label><span class="jxInputTag"></span></span>',
/**
* Option: checked
* whether this radio button is checked or not
@@ -30555,7 +30568,7 @@
* Option: template
* The template for creating this select input
*/
- template: '<label class="jxInputLabel"></label><select class="jxInputSelect" name="{name}"></select><span class="jxInputTag"></span>'
+ template: '<span class="jxInputContainer"><label class="jxInputLabel"></label><select class="jxInputSelect" name="{name}"></select><span class="jxInputTag"></span></span>'
},
/**
* Property: type
@@ -30677,7 +30690,7 @@
* Option: template
* the template used to render this field
*/
- template: '<label class="jxInputLabel"></label><textarea class="jxInputTextarea" name="{name}"></textarea><span class="jxInputTag"></span>'
+ template: '<span class="jxInputContainer"><label class="jxInputLabel"></label><textarea class="jxInputTextarea" name="{name}"></textarea><span class="jxInputTag"></span></span>'
},
/**
* Property: type
@@ -30736,7 +30749,7 @@
* Option: template
* The template used to render this field
*/
- template: '<label class="jxInputLabel"></label><div class="jxInputButton"></div><span class="jxInputTag"></span>'
+ template: '<span class="jxInputContainer"><label class="jxInputLabel"></label><div class="jxInputButton"></div><span class="jxInputTag"></span></span>'
},
/**
* Property: type
@@ -30776,7 +30789,7 @@
Extends: Jx.Field,
options: {
- template: '<label class="jxInputLabel" ></label><input class="jxInputPassword" type="password" name="{name}"/><span class="jxInputTag"></span>'
+ template: '<span class="jxInputContainer"><label class="jxInputLabel" ></label><input class="jxInputPassword" type="password" name="{name}"/><span class="jxInputTag"></span></span>'
},
type: 'Password'
Modified: sandbox/jxlib-3.0/templates/mapserver/standard/themes/crispin/jxtheme.css
===================================================================
--- sandbox/jxlib-3.0/templates/mapserver/standard/themes/crispin/jxtheme.css 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/templates/mapserver/standard/themes/crispin/jxtheme.css 2009-11-11 15:31:46 UTC (rev 1970)
@@ -21,4 +21,4 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
- */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;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}.jxButtonContainer{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:2px;border:none;}.jxButton{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:0 0 0 4px;border:none;background-image:url(images/button.png);background-position:left -24px;background-repeat:no-repeat;text-decoration:none;outline:none;}a.jxButton{cursor:pointer;user-select:none;-moz-user-select:none;-khtml-user-select:none;}ul.jxToolbar .jxButton{background-position:left top;}span.jxButtonContent{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:4px 4px 4px 0;border:none;background-image:url(images/button.png);background-position:right -24px;background-repeat:no-repeat;}ul.jxToolbar span.jxButtonContent{background-position:right top;}ul.jxToolbar .jxButtonActive,.jxButtonActive{background-position:left -72px;}ul.jxToolbar .jxButtonActive span.jxButtonContent,.jxButtonActive span.jxButtonContent{background-position:right -72px;}ul.jxToolbar .jxButton:focus,.jxButton:focus{background-position:left -96px;}ul.jxToolbar .jxButton:focus span.jxButtonContent,.jxButton:focus span.jxButtonContent{background-position:right -96px;}ul.jxToolbar .jxButtonActive:focus,.jxButtonActive:focus{background-position:left -144px;}ul.jxToolbar .jxButtonActive:focus span.jxButtonContent,.jxButtonActive:focus span.jxButtonContent{background-position:right -144px;}ul.jxToolbar .jxButton:hover,ul.jxToolbar .jxButtonActive:hover,.jxButton:hover,.jxButtonActive:hover{background-position:left -48px;}ul.jxToolbar .jxButton:hover span.jxButtonContent,ul.jxToolbar .jxButtonActive:hover span.jxButtonContent,.jxButton:hover span.jxButtonContent,.jxButtonActive:hover span.jxButtonContent{background-position:right -48px;}ul.jxToolbar .jxButtonPressed,ul.jxToolbar .jxButtonPressed:focus,.jxButtonPressed,.jxButtonPressed:focus{background-position:left -120px;}ul.jxToolbar .jxButtonPressed span.jxButtonContent,ul.jxToolbar .jxButtonPressed:focus span.jxButtonContent,.jxButtonPressed span.jxButtonContent,.jxButtonPressed:focus span.jxButtonContent{background-position:right -120px;}.jxDisabled .jxButton,.jxDisabled span.jxButtonContent span{cursor:default;}ul.jxToolbar .jxDisabled .jxButton:focus,ul.jxToolbar .jxDisabled .jxButton:active,ul.jxToolbar .jxDisabled .jxButton:hover,ul.jxToolbar .jxDisabled .jxButtonPressed{background-position:left top;}.jxDisabled .jxButton:focus,.jxDisabled .jxButton:active,.jxDisabled .jxButton:hover,.jxDisabled .jxButtonPressed{background-position:left -24px;}ul.jxToolbar .jxDisabled .jxButton:focus span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButton:active span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButton:hover span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonPressed span.jxButtonContent{background-position:right top;}.jxDisabled .jxButton:focus span.jxButtonContent,.jxDisabled .jxButton:active span.jxButtonContent,.jxDisabled .jxButton:hover span.jxButtonContent,.jxDisabled .jxButtonPressed span.jxButtonContent{background-position:right -24px;}ul.jxToolbar .jxDisabled .jxButtonActive:focus,ul.jxToolbar .jxDisabled .jxButtonActive:active,ul.jxToolbar .jxDisabled .jxButtonActive:hover,.jxDisabled .jxButtonActive:focus,.jxDisabled .jxButtonActive:active,.jxDisabled .jxButtonActive:hover{background-position:left -72px;}ul.jxToolbar .jxDisabled .jxButtonActive:focus span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonActive:active span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonActive:hover span.jxButtonContent,.jxDisabled .jxButtonActive:focus span.jxButtonContent,.jxDisabled .jxButtonActive:active span.jxButtonContent,.jxDisabled .jxButtonActive:hover span.jxButtonContent{background-position:right -72px;}img.jxButtonIcon{display:-moz-inline-box;display:inline-block;position:relative;vertical-align:middle;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;}span.jxButtonContent span{display:-moz-inline-box;display:inline-block;position:relative;vertical-align:middle;cursor:pointer;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;height:16px;white-space:nowrap;}span.jxButtonContent span.jxButtonLabel{margin:0;padding:0 4px 0 4px;color:#000;font-size:11px;}.jxButtonMenu span.jxButtonContent,.jxButtonMulti span.jxButtonContent,.jxButtonFlyout span.jxButtonContent,.jxButtonCombo span.jxButtonContent,.jxButtonEditCombo span.jxButtonContent{padding-right:0;}.jxButtonMenu span.jxButtonContent span,.jxButtonFlyout span.jxButtonContent span,.jxButtonMulti span.jxButtonContent span,.jxButtonCombo span.jxButtonContent span,.jxButtonEditCombo span.jxButtonContent span{padding-right:16px;background-image:url(images/emblems.png);background-position:right -16px;background-repeat:no-repeat;}a.jxButtonDisclose{position:absolute;display:-moz-inline-box;display:inline-block;padding:4px 0;font-size:0;line-height:0;right:2px;top:2px;background-image:url(images/button_multi_disclose.png);background-position:right 0;background-repeat:no-repeat;outline:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxButtonDisclose img{width:16px;height:16px;margin:0;padding:0;border:0;background-image:url(images/emblems.png);background-position:right -16px;background-repeat:no-repeat;}a.jxButtonDisclose:focus,a.jxButtonDisclose:active{background-position:right -96px;}a.jxButtonDisclose:hover{background-position:right -48px;}a.jxButtonDisclosePressed{background-position:right -120px;}.jxDisabled a.jxButtonDisclose,.jxDisabled a.jxButtonDisclose:focus,.jxDisabled a.jxButtonDisclose:active,.jxDisabled a.jxButtonDisclose:hover,.jxDisabled a.jxButtonDisclosePressed{cursor:default;background-position:right 0;}ul.jxToolbar .jxButtonHover{background-position:left -24px!important;}ul.jxToolbar .jxButtonHover span.jxButtonContent{background-position:right -24px!important;}.jxFlyout .jxChrome{background-image:url(images/flyout_chrome.png);padding:5px 5px 7px 6px;}.jxFlyout{position:absolute;display:block;z-index:100;margin:0;padding:0;}.jxFlyoutContent{position:relative;display:block;overflow:auto;margin:6px 6px 8px 7px;background-color:#fff;border:1px solid #999;}.jxButtonMulti,.jxButtonMulti span.jxButtonContent{background-image:url(images/button_multi.png);}.jxButtonEditCombo,.jxButtonEditCombo span.jxButtonContent{background-image:url(images/button_combo.png);}.jxButtonMulti span.jxButtonContent span{padding-right:21px;}.jxButtonEditCombo span.jxButtonContent span{font-size:0;}.jxButtonComboDefault span.jxButtonContent span,.jxButtonComboDefault input{font-style:italic;color:#999;}.jxButtonEditCombo input{float:left;line-height:16px;height:16px;padding:0 4px;margin:0;border:none;font-size:11px;font-family:Arial,Helvetica,sans-serif;background-color:transparent;}.jxChrome{position:absolute;display:block;font-size:0;line-height:0;z-index:-1;width:100%;height:100%;top:0;left:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxChromeDrag{opacity:.5;-ms-filter:"Alpha(opacity=50)";}.jxChromeTL{position:absolute;overflow:hidden;left:0;top:0;width:50%;height:50%;}.jxChromeTR{position:absolute;overflow:hidden;left:50%;top:0;width:50%;height:50%;}.jxChromeBL{position:absolute;overflow:hidden;left:0;top:50%;width:50%;height:50%;}.jxChromeBR{position:absolute;overflow:hidden;left:50%;top:50%;width:50%;height:50%;}.jxChromeTL img{position:absolute;top:0;left:0;width:1000px;height:600px;}.jxChromeTR img{position:absolute;top:0;right:0;width:1000px;height:600px;}.jxChromeBL img{position:absolute;bottom:0;left:0;width:1000px;height:600px;}.jxChromeBR img{position:absolute;bottom:0;right:0;width:1000px;height:600px;}.jxColorBar{position:relative;overflow:hidden;}table.jxColorGrid{position:relative;border-collapse:collapse;empty-cells:show;clear:both;padding:0;margin:0;}.jxColorGrid tr{padding:0;margin:0;}.jxColorGrid td{border:1px solid #000;padding:0;margin:0;}.jxColorGrid td.emptyCell{border:0 solid #000;}.jxColorGrid td.emptyCell span{display:block;width:7px;height:7px;line-height:0;font-size:0;border:0 solid #000;padding:1px;margin:0;}.jxColorGrid a.colorSwatch{display:block;width:7px;height:7px;line-height:0;font-size:0;border:0 solid #000;margin:0;padding:1px;}.jxColorGrid a.borderWhite:hover{border:1px solid #fff;padding:0;}.jxColorGrid a.borderBlack:hover{border:1px solid #000;padding:0;}input.jxHexInput{width:55px;vertical-align:middle;}input.jxAlphaInput{width:30px;vertical-align:middle;}div.jxColorPreview{float:left;position:relative;width:20px;height:20px;border:1px solid #000;margin:2px;vertical-align:middle;background-image:url('images/grid.png');overflow:hidden;}.jxButtonFlyout span.jxButtonContent span.jxButtonSwatch{display:block;float:left;width:14px;height:14px;border:1px solid #000;background-image:url('images/grid.png');background-position:0 0;background-repeat:repeat;padding-right:0!important;}.jxButtonFlyout span.jxButtonContent span.jxButtonSwatch span{display:block;width:14px;height:14px;position:absolute;padding-right:0;background:none;}div.jxColorPreview img{position:absolute;z-index:0;}div.jxColorPreview div{width:20px;height:10px;position:absolute;display:block;left:0;z-index:1;font-size:10px;line-height:0;}div.jxColorPreview div.jxColorSelected{top:0;}div.jxColorPreview div.jxColorHover{bottom:0;}label.jxColorLabel,label.jxAlphaLabel{width:auto;font-family:Arial,sans-serif;font-size:11px;line-height:24px;padding:2px;vertical-align:middle;}a.jxColorClose{position:absolute;top:0;right:0;width:16px;height:16px;}a.jxColorClose img{width:16px;height:16px;}.jxClearer{display:block;position:relative;float:none;clear:both;font-size:0;line-height:0;width:0;height:0;margin:0;padding:0;}.jxDisabled{opacity:.4;-ms-filter:"Alpha(opacity=40)";}.jxDisabled *{-ms-filter:"Alpha(opacity=40)";}iframe.jxIframeShim{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;-ms-filter:"Alpha(opacity=0)";z-index:-1;}.jxConfirmQuestion{text-align:center;padding:10px;margin-top:10px;}.jxDialog .jxChrome{background-image:url(images/dialog_chrome.png);}.jxDialog{display:block;z-index:1000;overflow:hidden;}.jxDialogContentContainer{z-index:1;margin:0 11px 13px 12px;border:1px solid #b7b7b7;background-color:#f0f0f0;}.jxDialogModal{position:absolute;display:block;top:0;left:0;width:100%;height:100%;background-color:#000;opacity:.2;-ms-filter:"Alpha(opacity=20)";}.jxDialogContent{display:block;position:relative;overflow:auto;padding:0;z-index:1;}.jxDialogTitle{display:block;position:relative;background-image:url(images/a_pixel.png);text-align:center;height:24px;line-height:24px;z-index:1;margin:6px 6px 0 7px;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxDialogMin .jxDialogTitle{margin-bottom:8px;}.jxDialogMoveable,.jxDialogMoveable .jxDialogLabel{cursor:move;}.jxDialogIcon{position:absolute;left:2px;top:3px;width:16px;height:16px;border:none;padding:0;margin:0;}.jxDialogLabel{font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;line-height:21px;color:#000;white-space:nowrap;cursor:default;}.jxDialogResize{position:absolute;bottom:7px;right:6px;width:16px;height:16px;z-index:2;border:0;cursor:se-resize;background-image:url(images/dialog_resize.png);}.jxDialogControls{position:absolute;top:3px;right:2px;height:16px;width:80px;}.jxDialogControls img{background-image:url('images/panel_controls.png');background-repeat:no-repeat;border:0;margin:0;width:16px;height:16px;}.jxDialogClose img{background-position:0 -32px;}.jxDialogMenu img{background-position:0 -48px;}.jxDialogHelp img{background-position:0 -64px;}.jxDialogCollapse img{background-position:0 -16px;}.jxDialogMin .jxDialogCollapse img{background-position:0 0;}.jxDialogMax .jxDialogCollapse img{background-position:0 -16px;}.jxDialogLoading img{border:0;margin:0;width:16px;height:16px;visibility:hidden;position:absolute;top:1px;left:2px;}.jxDialogControls .jxButtonContainer,.jxDialogControls span.jxButtonContent,.jxDialogControls .jxButton:hover span.jxButtonContent,.jxDialogControls .jxButton:active span.jxButtonContent,.jxDialogControls .jxButtonActive span.jxButtonContent,.jxDialogControls .jxButtonActive:hover span.jxButtonContent,.jxDialogControls .jxButtonActive:active span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton:hover span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton:active span.jxButtonContent,.jxDialogControls .jxButton,.jxDialogControls .jxButton:hover,.jxDialogControls .jxButton:active,.jxDialogControls .jxButtonActive,.jxDialogControls .jxButtonActive:hover,.jxDialogControls .jxButtonActive:active,.jxDialogControls .jxDisabled .jxButton,.jxDialogControls .jxDisabled .jxButton:hover,.jxDialogControls .jxDisabled .jxButton:active{padding:0;margin:0;border:none;background-color:transparent;background-image:none;}.jxDialogControls .jxButtonMenu span.jxButtonContent,.jxDialogControls .jxButtonFlyout span.jxButtonContent{background-image:none;}.jxDialogControls .jxButtonMenu span.jxButtonContent span,.jxDialogControls .jxButtonFlyout span.jxButtonContent span{padding-right:0;}.jxDialogControls .jxBarContainer{position:absolute;right:0;background-image:none;background-color:transparent;margin:0;padding:0;border:none;height:16px;}.jxDialogControls .jxBarScroller{left:auto;right:0;}.jxDialogControls ul.jxToolbar{float:right;}.jxDialogControls ul.jxToolbar,.jxDialogControls li.jxToolItem{background-image:none;background-color:transparent;margin:0;padding:0;border:none;}div.jxFileInputs{position:relative;}div.jxFileFake{position:absolute;top:0;left:0;z-index:1;}div.jxFileFake span{float:left;display:block;}div.jxFileFake .jxInputContainer{width:150px;}div.jxFileFake .jxInputText{width:135px;}div.jxFileFake .jxButtonContainer{margin-top:2px;float:left;}.jxInputFile{position:relative;text-align:right;-moz-opacity:0;filter:alpha(opacity:0);opacity:0;z-index:2;margin-top:-5px;height:35px;}.jxForm{display:block;position:relative;overflow:hidden;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxFieldset{display:block;position:relative;overflow:hidden;border:1px solid #ccc;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:10px;padding:5px;}.jxFieldsetLegend,.jxFieldset legend{position:relative;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:26px;color:#000;}.jxInputContainer{display:block;position:relative;padding:0;margin:2px;border:none;}.jxInputLabel,.jxInputTag{display:-moz-inline-box;display:inline-block;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:26px;color:#000;}.jxInputLabel{vertical-align:top;}.jxInputTag{vertical-align:bottom;}.jxInputText,.jxInputPassword,.jxInputTextarea{margin:0 4px;padding:4px;border:1px solid #bbb;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputSelect{margin:0 4px;padding:3px 4px 3px 1px;border:1px solid #bbb;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputText:focus,.jxInputPassword:focus,.jxInputTextarea:focus,.jxInputSelect:focus{border:1px solid #000;}.jxInputRadio,.jxInputCheck{margin:5px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputContainer .jxButtonContainer{padding:0;margin:0 4px;}.jxInputGroup{border:none;padding:0;margin:2px;}.jxInputGroup legend{font-size:0;line-height:0;padding:0;margin:0;border:none;}.jxInputGroup .jxFieldsetLegend{font-size:12px;}.jxInputGroup .jxInputLabel{width:auto;}.jxFieldInvalid .jxInputText,.jxFieldInvalid .jxInputPassword,.jxFieldInvalid .jxInputTextarea,.jxFieldInvalid .jxInputSelect{background-color:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}.jxFieldValidated .jxInputText,.jxFieldValidated .jxInputPassword,.jxFieldValidated .jxInputTextarea,.jxFieldValidated .jxInputSelect{background-color:#E6EFC2;color:#264409;border-color:#C6D880;}.jxFieldInvalid .jxInputText:focus,.jxFieldInvalid .jxInputPassword:focus,.jxFieldInvalid .jxInputTextarea:focus,.jxFieldInvalid .jxInputSelect:focus{border-color:#8a1f11;}.jxFieldValidated .jxInputText:focus,.jxFieldValidated .jxInputPassword:focus,.jxFieldValidated .jxInputTextarea:focus,.jxFieldValidated .jxInputSelect:focus{border-color:#264409;}.jxFieldInvalid .jxInputLabel,.jxFieldInvalid .jxInputTag{color:#8a1f11;}.jxFieldValidated .jxInputLabel,.jxFieldValidated .jxInputTag{color:#264409;}.jxFormInline .jxInputContainer,form .jxFormInline .jxInputContainer,form .jxFieldset span.jxFormInline,form.jxForm span.jxFormInline{display:inline;}.jxFormInline .jxInputLabel,form .jxFormInline .jxInputLabel,form span.jxFormInline .jxInputLabel{display:inline;width:auto;}.jxFormInline .jxInputTag,form .jxFormInline .jxInputTag,form span.jxFormInline .jxInputTag{display:inline;}.jxFormInline .jxInputGroup,form .jxFormInline .jxInputGroup{padding-left:0;}.jxFormInline .jxInputGroup .jxFieldsetLegend,form .jxFormInline .jxInputGroup .jxFieldsetLegend{position:relative;left:auto;}.jxFormInline .jxInputGroup .jxInputLabel,form .jxFormInline .jxInputGroup .jxInputLabel{display:inline;width:auto;}.jxFormBlock .jxInputContainer,form .jxFormBlock .jxInputContainer,form .jxFieldset span.jxFormBlock,form.jxform span.jxFormBlock{display:block;}.jxFormBlock .jxInputLabel,form .jxFormBlock .jxInputLabel,form span.jxFormBlock .jxInputLabel{display:block;width:auto;margin-left:4px;}.jxFormBlock .jxInputContainerCheck .jxInputLabel,.jxFormBlock .jxInputContainerRadio .jxInputLabel,form .jxFormBlock .jxInputContainerCheck .jxInputLabel,form .jxFormBlock .jxInputContainerRadio .jxInputLabel,form span.jxFormBlock .jxInputContainerCheck .jxInputLabel,form span.jxFormBlock .jxInputContainerRadio .jxInputLabel{display:-moz-inline-box;display:inline-block;}.jxFormBlock .jxInputGroup,form .jxFormBlock .jxInputGroup{padding-left:0;}.jxFormBlock .jxInputGroup .jxFieldsetLegend,form .jxFormBlock .jxInputGroup .jxFieldsetLegend{position:relative;left:auto;}.jxFormBlock .jxInputGroup .jxInputLabel,form .jxFormBlock .jxInputGroup .jxInputLabel{display:-moz-inline-box;display:inline-block;width:auto;}.jxFormInlineblock .jxInputContainer,form .jxFormInlineblock .jxInputContainer,form .jxFieldset span.jxFormInlineblock,form.jxForm span.jxFormInlineblock{display:block;}.jxFormInlineblock .jxInputLabel,form .jxFormInlineblock .jxInputLabel,form span.jxFormInlineblock .jxInputLabel{display:-moz-inline-box;display:inline-block;width:200px;}.jxFormInlineblock .jxInputGroup,form .jxFormInlineblock .jxInputGroup{padding-left:200px;}.jxFormInlineblock .jxInputGroup .jxFieldsetLegend,form .jxFormInlineblock .jxInputGroup .jxFieldsetLegend{position:absolute;left:-200px;width:200px;}.jxFormInlineblock .jxInputGroup .jxInputLabel,form .jxFormInlineblock .jxInputGroup .jxInputLabel{display:-moz-inline-box;display:inline-block;width:auto;}.jxGridContainer{position:absolute;top:0;left:0;border-left:0 solid #d8d8d8;border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;overflow:hidden;}.jxGridTable{position:relative;table-layout:fixed;border-collapse:collapse;border-style:none;cursor:default;font-family:Arial,Verdana,sans-serif;font-size:11px;font-weight:normal;}.jxGridHeader{width:100%;}.jxGridTableBody{position:relative;table-layout:fixed;border-collapse:collapse;border-style:none;cursor:default;font-family:Arial,Verdana,sans-serif;font-size:11px;font-weight:normal;}.jxGridColHeadHide{height:0;line-height:0;font-size:0;background-color:#fff;white-space:normal;}.jxGridColHeadHide p,.jxGridRowHeadHide p{font-size:0;line-height:0;height:0;margin:0;padding:0;}.jxGridRowHeadHide{width:0;white-space:normal;}.jxGridCell{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;overflow:hidden;}.jxGridCellContent{position:relative;display:-moz-inline-box;display:inline-block;overflow:hidden;padding-left:3px;padding-right:3px;overflow:hidden;white-space:nowrap;cursor:cell;text-overflow:ellipsis;}.jxGridColHead{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;background-color:#f2f2f2;background-image:url('images/table_col.png');background-position:0 0;background-repeat:repeat-x;text-align:center;font-weight:bold;color:#333;cursor:default;padding-left:3px;padding-right:3px;white-space:nowrap;}.jxGridRowHead{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;background-color:#f2f2f2;background-image:url('images/table_row.png');background-position:0 0;background-repeat:repeat-y;text-align:center;font-weight:bold;color:#333;cursor:default;overflow:hidden;white-space:nowrap;}.jxGridRowAll{background-color:#fff;}.jxGridColumnHeaderSelected{background-color:#e1e1e1;background-position:0 -200px;}.jxGridRowHeaderSelected{background-color:#e1e1e1;background-position:-400px 0;}.jxGridColumnSelected{background-color:#f7f7f7;}.jxGridRowSelected td{background-color:#f7f7f7;}td.jxGridCellSelected{background-color:#ebebeb;}.jxGridColumnHeaderPrelight{background-color:#cee5ff;background-position:0 -300px;}.jxGridRowHeaderPrelight{background-color:#cee5ff;background-position:-600px 0;}.jxGridColumnPrelight{background-color:#e5f1ff;}.jxGridRowPrelight td{background-color:#e5f1ff;}td.jxGridCellPrelight{background-color:#cce3ff;}.jxColSortable{padding-right:20px;}.jxGridCell.jxColSortable{padding-right:0;}.jxColSortable span{background-image:url('images/emblems.png');padding-right:20px;background-repeat:no-repeat;background-position:right top;}.jxGridColumnSortedAsc span{background-position:right -160px;}.jxGridColumnSortedDesc span{background-position:right -16px;}.jxGridColumnResize,.jxGridRowResize{display:block;position:absolute;background-image:url(images/a_pixel.png);z-index:1;}.jxGridColumnResize{right:0;top:0;height:100%;width:4px;cursor:col-resize;}.jxGridRowResize{left:0;bottom:0;height:4px;width:100%;cursor:row-resize;}.jxListView .jxListItemContainer{position:relative;display:block;outline:none;overflow:hidden;border:none;margin:0 1px;padding:0;}.jxListItem{position:relative;display:block;cursor:pointer;outline:none;overflow:hidden;border:none;margin:0 1px;padding:0;z-index:0;font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000;text-decoration:none;line-height:20px;height:20px;}.jxListView .jxHover{margin:0;border-left:1px solid #CDDFFD;border-right:1px solid #CDDFFD;background-image:url(images/listitem.png);background-repeat:repeat-x;background-color:#CDE5FF;background-position:left -24px;}.jxListItem:focus{margin:0;border-left:1px dotted #75ADFF;border-right:1px dotted #75ADFF;background-image:url(images/listitem.png);background-repeat:repeat-x;background-position:left -72px;}.jxListView .jxPressed,.jxListView .jxSelected{margin:0;border-left:1px solid #8AABFB;border-right:1px solid #8AABFB;background-color:#CDE5FF;background-image:url(images/listitem.png);background-repeat:repeat-x;background-position:left -48px;}.jxMenuContainer .jxChrome{background-image:url(images/flyout_chrome.png);padding:5px 5px 7px 6px;}.jxButtonMenu span.jxMenuItemSpan{padding-right:16px;}.jxMenuContainer{position:absolute;top:0;left:-10000px;display:none;z-index:2000;padding:0;}ul.jxMenu{display:block;position:relative;list-style-type:none;padding:1px;margin:6px 6px 8px 7px;background-color:#fff;border:1px solid #999;}li.jxMenuItemContainer{display:block;position:relative;font-size:0;line-height:0;margin:0;padding:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxMenuItem{display:block;position:relative;overflow:hidden;text-decoration:none;cursor:pointer;outline:none;border:1px solid #fff;background-image:url(images/menuitem.png);background-repeat:no-repeat;background-position:left top;font-family:Arial,Helvetica,sans-serif;font-size:11px;text-decoration:none;margin:0;padding:0;color:#000;}a.jxMenuItemActive{background-position:left -98px;}a.jxMenuItem:focus{background-position:left -74px;}a.jxMenuItem:focus span.jxMenuItemContent{border-right:1px dotted #75ADFF;}a.jxMenuItemActive:focus{background-position:left -170px;}a.jxMenuItem:hover{background-color:#CDE5FF;background-position:left -26px;}a.jxMenuItem:hover span.jxMenuItemContent{border-right:1px solid #C5E0FF;}a.jxMenuItemActive:hover{background-position:left -122px;}a.jxMenuItemPressed,a.jxMenuItemPressed:hover{background-color:#CDE5FF;background-position:left -50px;}.jxDisabled a.jxMenuItem,.jxDisabled span.jxMenuItemContent span{cursor:default;}.jxDisabled a.jxMenuItem:focus,.jxDisabled a.jxMenuItemPressed,.jxDisabled a.jxMenuItemPressed:hover,.jxDisabled a.jxMenuItem:hover{background-color:#fff;background-position:left top;border-right:1px solid #fff;}.jxDisabled a.jxMenuItem:hover span.jxMenuItemContent{border-right:1px solid #fff;}span.jxMenuItemContent{display:block;position:relative;font-family:Arial,Helvetica,sans-serif;font-size:0;line-height:0;white-space:nowrap;padding:0 20px 0 0;margin:0;border-right:1px solid #fff;}.jxButtonSubMenu span.jxMenuItemContent,.jxButtonSubMenu:hover span.jxMenuItemContent{background-image:url(images/emblems.png);background-position:right -30px;background-repeat:no-repeat;}img.jxMenuItemIcon{position:absolute;top:2px;left:2px;width:16px;height:16px;background-position:left center;background-repeat:no-repeat;}span.jxMenuItemContent span{display:block;position:relative;cursor:pointer;margin:0;padding:2px 0 2px 22px;font-size:16px;line-height:16px;color:#000;}span.jxMenuItemContent span.jxMenuItemLabel{color:#000;font-size:11px;}.jxMenuItemToggle img.jxMenuItemIcon,.jxMenuItemSet img.jxMenuItemIcon{background-image:url(images/emblems.png);background-position:2px 0;background-repeat:no-repeat;}.jxMenuItemToggle a.jxMenuItemActive img.jxMenuItemIcon{background-position:2px -48px;}.jxMenuItemSet a.jxMenuItemActive img.jxMenuItemIcon{background-position:2px -64px;}ul.jxMenu span.jxMenuSeparator{display:block;font-size:10px;line-height:10px;background-image:url(images/toolbar_separator_v.png);background-repeat:repeat-x;background-position:left center;}.jxMessage{text-align:center;padding:10px;margin-top:10px;}.jxNotificationContainer{border:1px black solid;padding:2px;}.jxNotificationMinimize{width:100%;height:10px;margin:2px;background-color:blue;cursor:pointer;display:block;}.jxNotice{margin:5 auto;border:1px solid black;position:relative;display:block;}.jxNoticeClose{float:right;width:15px;height:15px;background-color:black;cursor:pointer;}.jxPanel{display:block;position:relative;}.jxPanelContentContainer{overflow:hidden;background-color:#f0f0f0;}.jxPanelContent{position:relative;display:block;overflow:auto;background-color:#fff;margin:0;padding:0;}.jxPanelTitle{display:block;position:relative;background-image:url(images/panelbar.png);background-repeat:repeat-x;background-position:left top;height:22px;margin:0;padding:0;text-align:center;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxPanelBar{position:absolute;line-height:1px;width:100%;height:5px;cursor:row-resize;background-color:#f0f0f0;z-index:2;}.jxPanelIcon{position:absolute;left:2px;top:3px;width:16px;height:16px;border:none;padding:0;margin:0;}.jxPanelLabel{padding-left:25px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;line-height:21px;color:#000;white-space:nowrap;}.jxPanelControls{position:absolute;top:3px;right:2px;height:16px;width:80px;overflow:hidden;}.jxPanelControls img{background-image:url('images/panel_controls.png');background-repeat:no-repeat;border:0;margin:0;width:16px;height:16px;}.jxPanelClose img{background-position:0 -32px;}.jxPanelMenu img{background-position:0 -48px;}.jxPanelHelp img{background-position:0 -64px;}.jxPanelCollapse img{background-position:0 -16px;}.jxPanelMin .jxPanelCollapse img{background-position:0 0;}.jxPanelMax .jxPanelCollapse img{background-position:0 -16px;}.jxPanelMaximize img{background-position:0 0;}.jxPanelLoading img{border:0;margin:0;width:16px;height:16px;visibility:hidden;position:absolute;top:1px;left:2px;}.jxPanelControls .jxButtonContainer,.jxPanelControls span.jxButtonContent,.jxPanelControls .jxButton:hover span.jxButtonContent,.jxPanelControls .jxButton:active span.jxButtonContent,.jxPanelControls .jxButtonActive span.jxButtonContent,.jxPanelControls .jxButtonActive:hover span.jxButtonContent,.jxPanelControls .jxButtonActive:active span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton:hover span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton:active span.jxButtonContent,.jxPanelControls .jxButton,.jxPanelControls .jxButton:hover,.jxPanelControls .jxButton:active,.jxPanelControls .jxButtonActive,.jxPanelControls .jxButtonActive:hover,.jxPanelControls .jxButtonActive:active,.jxPanelControls .jxDisabled .jxButton,.jxPanelControls .jxDisabled .jxButton:hover,.jxPanelControls .jxDisabled .jxButton:active{padding:0;margin:0;border:none;background-color:transparent;background-image:none;}.jxPanelControls .jxButtonMenu span.jxButtonContent,.jxPanelControls .jxButtonFlyout span.jxButtonContent{background-image:none;}.jxPanelControls .jxButtonMenu span.jxButtonContent span,.jxPanelControls .jxButtonFlyout span.jxButtonContent span{padding-right:0;}.jxPanelControls div.jxBarTop{position:absolute;right:0;background-image:none;background-color:transparent;margin:0;padding:0;border:none;height:16px;}.jxPanelControls .jxBarScroller{left:auto;right:0;}.jxPanelControls ul.jxToolbar{float:right;}.jxPanelControls ul.jxToolbar,.jxPanelControls li.jxToolItem{background-image:none;background-color:transparent;margin:0;padding:0;border:none;}.jxProgressBar-container{width:100%;display:block;clear:both;}.jxProgressBar-message{color:black;}.jxProgressBar-container .jxProgressBar{width:100%;clear:both;border-top:none;}.jxProgressBar-container .jxProgressBar .jxProgressBar-outline{border:1px solid #360;position:absolute;top:0;left:0;z-index:10;}.jxProgressBar-container .jxProgressBar .jxProgressBar-fill{background-color:#9c6;position:absolute;top:1px;left:1px;z-index:20;}.jxProgressBar-container .jxProgressBar .jxProgressBar-text{color:#360;margin:0;padding:2px;position:absolute;top:1px;left:1px;width:auto;z-index:30;border:none;}.jxSliderContainer{width:100%;height:10px;border:1px solid black;}.jxSliderKnob{width:10px;height:10px;background-color:black;cursor:pointer;}.jxSplitterMask{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;background-image:url(images/a_pixel.png);z-index:1;}.jxSplitBarHorizontal{display:block;position:absolute;font-size:0;line-height:0;margin:0;padding:0;border:none;width:5px;height:100%;cursor:col-resize;background-color:#f0f0f0;z-index:2;}.jxSplitBarVertical{display:block;position:absolute;font-size:0;line-height:0;margin:0;padding:0;border:none;width:100%;height:5px;cursor:row-resize;background-color:#f0f0f0;z-index:2;}.jxSplitContainer{display:block;position:relative;margin:0;padding:0;border:none;overflow:hidden;}.jxSplitArea{display:block;position:absolute;margin:0;padding:0;border:none;z-index:0;}.jxSplitBarDrag{background-color:#eee;}.jxSnapHorizontalBefore{width:5px;height:5px;position:absolute;top:0;left:0;background-color:#aaa;}.jxSnapHorizontalAfter{width:5px;height:5px;position:absolute;top:0;left:0;background-color:#aaa;}.jxTabSetContainer{position:relative;display:block;overflow:hidden;width:200px;height:200px;margin:0;padding:0;background-color:#fff;}.jxTabSetContainer .jxToolbarContainer{z-index:auto;}.tabContent{display:none;position:relative;width:100%;height:100%;overflow:auto;}.tabContentActive{display:block;}div.jxTabContainer{display:block;position:relative;margin:0;padding:2px;border:none;}a.jxTab{display:block;position:relative;cursor:pointer;user-select:none;-moz-user-select:none;-khtml-user-select:none;margin:0;padding:0;border:none;background-repeat:no-repeat;text-decoration:none;outline:none;}span.jxTabContent{display:block;font-size:0;line-height:0;margin:0;padding:0;border:none;background-repeat:no-repeat;}img.jxTabIcon{position:relative;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;}span.jxTabLabel{display:block;position:relative;cursor:pointer;margin:0;padding:0;color:#000;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;}a.jxTabClose{display:block;position:absolute;cursor:pointer;outline:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxTabClose img{width:16px;height:16px;background-image:url(images/tab_close.png);}.jxDisabled a.jxTab,.jxDisabled span.jxTabContent span,.jxDisabled a.jxTabClose{cursor:default;}.jxBarTop div.jxTabContainer,.jxBarBottom div.jxTabContainer{float:left;}.jxBarTop a.jxTab,.jxBarTop span.jxTabContent{background-image:url(images/tab_top.png);}.jxBarBottom a.jxTab,.jxBarBottom span.jxTabContent{background-image:url(images/tab_bottom.png);}.jxBarTop a.jxTabClose,.jxBarBottom a.jxTabClose{top:3px;right:3px;}.jxBarTop .jxTabClose span.jxTabContent,.jxBarBottom .jxTabClose span.jxTabContent{padding-right:16px;}.jxBarTop a.jxTab,.jxBarBottom a.jxTab{float:left;padding-left:4px;background-position:left -24px;}.jxBarTop span.jxTabContent,.jxBarBottom span.jxTabContent{float:left;padding:4px 4px 4px 0;background-position:right -24px;}.jxBarTop a.jxTabActive,.jxBarBottom a.jxTabActive{background-position:left -72px;}.jxBarTop a.jxTabActive span.jxTabContent,.jxBarBottom a.jxTabActive span.jxTabContent{background-position:right -72px;}.jxBarTop a.jxTab:focus,.jxBarBottom a.jxTab:focus{background-position:left -96px;}.jxBarTop a.jxTab:focus span.jxTabContent,.jxBarBottom a.jxTab:focus span.jxTabContent{background-position:right -96px;}.jxBarTop a.jxTabActive:focus,.jxBarBottom a.jxTabActive:focus{background-position:left -144px;}.jxBarTop a.jxTabActive:focus span.jxTabContent,.jxBarBottom a.jxTabActive:focus span.jxTabContent{background-position:right -144px;}.jxBarTop a.jxTab:hover,.jxBarTop a.jxTabActive:hover,.jxBarBottom a.jxTab:hover,.jxBarBottom a.jxTabActive:hover{background-position:left -48px;}.jxBarTop a.jxTab:hover span.jxTabContent,.jxBarTop a.jxTabActive:hover span.jxTabContent,.jxBarBottom a.jxTab:hover span.jxTabContent,.jxBarBottom a.jxTabActive:hover span.jxTabContent{background-position:right -48px;}.jxBarTop a.jxTabPressed,.jxBarTop a.jxTabPressed:focus,.jxBarBottom a.jxTabPressed,.jxBarBottom a.jxTabPressed:focus{background-position:left -120px;}.jxBarTop a.jxTabPressed span.jxTabContent,.jxBarTop a.jxTabPressed:focus span.jxTabContent,.jxBarBottom a.jxTabPressed span.jxTabContent,.jxBarBottom a.jxTabPressed:focus span.jxTabContent{background-position:right -120px;}.jxBarTop .jxDisabled a.jxTab:focus,.jxBarTop .jxDisabled a.jxTab:active,.jxBarTop .jxDisabled a.jxTab:hover,.jxBarTop .jxDisabled a.jxTabPressed,.jxBarBottom .jxDisabled a.jxTab:focus,.jxBarBottom .jxDisabled a.jxTab:active,.jxBarBottom .jxDisabled a.jxTab:hover,.jxBarBottom .jxDisabled a.jxTabPressed{background-position:left -24px;}.jxBarTop .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarTop .jxDisabled a.jxTab:active span.jxTabContent,.jxBarTop .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarTop .jxDisabled a.jxTabPressed span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:active span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabPressed span.jxTabContent{background-position:right -24px;}.jxBarTop .jxDisabled a.jxTabActive:focus,.jxBarTop .jxDisabled a.jxTabActive:active,.jxBarTop .jxDisabled a.jxTabActive:hover,.jxBarBottom .jxDisabled a.jxTabActive:focus,.jxBarBottom .jxDisabled a.jxTabActive:active,.jxBarBottom .jxDisabled a.jxTabActive:hover{background-position:left -72px;}.jxBarTop .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarTop .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarTop .jxDisabled a.jxTabActive:hover span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:hover span.jxTabContent{background-position:right -72px;}.jxBarTop img.jxTabIcon,.jxBarBottom img.jxTabIcon{float:left;}.jxBarTop span.jxTabLabel,.jxBarBottom span.jxTabLabel{float:left;height:16px;padding:0 4px 0 4px;}.jxBarLeft a.jxTab,.jxBarLeft span.jxTabContent{background-image:url(images/tab_left.png);}.jxBarRight a.jxTab,.jxBarRight span.jxTabContent{background-image:url(images/tab_right.png);}.jxBarLeft a.jxTabClose,.jxBarRight a.jxTabClose{top:3px;left:3px;}.jxBarLeft .jxTabClose span.jxTabContent,.jxBarRight .jxTabClose span.jxTabContent{padding-top:16px;}.jxBarLeft a.jxTab,.jxBarRight a.jxTab{padding-top:4px;background-position:-24px top;}.jxBarLeft span.jxTabContent,.jxBarRight span.jxTabContent{padding:0 4px 4px 4px;background-position:-24px bottom;}.jxBarLeft a.jxTabActive,.jxBarRight a.jxTabActive{background-position:-72px top;}.jxBarLeft a.jxTabActive span.jxTabContent,.jxBarRight a.jxTabActive span.jxTabContent{background-position:-72px bottom;}.jxBarLeft a.jxTab:focus,.jxBarRight a.jxTab:focus{background-position:-96px top;}.jxBarLeft a.jxTab:focus span.jxTabContent,.jxBarRight a.jxTab:focus span.jxTabContent{background-position:-96px bottom;}.jxBarLeft a.jxTabActive:focus,.jxBarRight a.jxTabActive:focus{background-position:-144px top;}.jxBarLeft a.jxTabActive:focus span.jxTabContent,.jxBarRight a.jxTabActive:focus span.jxTabContent{background-position:-144px bottom;}.jxBarLeft a.jxTab:hover,.jxBarLeft a.jxTabActive:hover,.jxBarRight a.jxTab:hover,.jxBarRight a.jxTabActive:hover{background-position:-48px top;}.jxBarLeft a.jxTab:hover span.jxTabContent,.jxBarLeft a.jxTabActive:hover span.jxTabContent,.jxBarRight a.jxTab:hover span.jxTabContent,.jxBarRight a.jxTabActive:hover span.jxTabContent{background-position:-48px bottom;}.jxBarLeft a.jxTabPressed,.jxBarLeft a.jxTabPressed:focus,.jxBarRight a.jxTabPressed,.jxBarRight a.jxTabPressed:focus{background-position:-120px top;}.jxBarLeft a.jxTabPressed span.jxTabContent,.jxBarLeft a.jxTabPressed:focus span.jxTabContent,.jxBarRight a.jxTabPressed span.jxTabContent,.jxBarRight a.jxTabPressed:focus span.jxTabContent{background-position:-120px bottom;}.jxBarLeft .jxDisabled a.jxTab:focus,.jxBarLeft .jxDisabled a.jxTab:active,.jxBarLeft .jxDisabled a.jxTab:hover,.jxBarLeft .jxDisabled a.jxTabPressed,.jxBarRight .jxDisabled a.jxTab:focus,.jxBarRight .jxDisabled a.jxTab:active,.jxBarRight .jxDisabled a.jxTab:hover,.jxBarRight .jxDisabled a.jxTabPressed{background-position:-24px top;}.jxBarLeft .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarLeft .jxDisabled a.jxTab:active span.jxTabContent,.jxBarLeft .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabPressed span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:active span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarRight .jxDisabled a.jxTabPressed span.jxTabContent{background-position:-24px bottom;}.jxBarLeft .jxDisabled a.jxTabActive:focus,.jxBarLeft .jxDisabled a.jxTabActive:active,.jxBarLeft .jxDisabled a.jxTabActive:hover,.jxBarRight .jxDisabled a.jxTabActive:focus,.jxBarRight .jxDisabled a.jxTabActive:active,.jxBarRight .jxDisabled a.jxTabActive:hover{background-position:-72px top;}.jxBarLeft .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabActive:hover span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:hover span.jxTabContent{background-position:-72px bottom;}.jxBarLeft span.jxTabLabel,.jxBarRight span.jxTabLabel{padding:4px 0 4px 0;}.jxBarContainer{display:block;position:relative;z-index:1;overflow:hidden;margin:0;padding:0;border:0;background-color:#f0f0f0;}.jxBarTop,.jxBarBottom{width:100%;height:28px;background-image:url(images/toolbar.png);background-repeat:repeat-x;background-position:0 0;overflow:hidden;}.jxTabBox .jxTabBarTop{background-image:url(images/tabbar.png);background-position:0 bottom;}.jxTabBox .jxTabBarBottom{background-image:url(images/tabbar_bottom.png);background-position:0 top;}.jxBarLeft,.jxBarRight{width:auto;height:100%;background-image:url(images/toolbar.png);background-repeat:repeat-x;background-position:0 0;float:left;overflow:hidden;}.jxTabBox .jxTabBarLeft{background-image:url(images/tabbar_left.png);background-repeat:repeat-y;background-position:right 0;}.jxTabBox .jxTabBarRight{background-image:url(images/tabbar_right.png);background-repeat:repeat-y;background-position:left 0;}.jxBarTop .jxBarScroller,.jxBarBottom .jxBarScroller{position:absolute;width:10000%;overflow:hidden;}.jxBarTop .jxBarScrollLeft,.jxBarBottom .jxBarScrollLeft{position:absolute;top:0;left:0;}.jxBarTop .jxBarScrollRight,.jxBarBottom .jxBarScrollRight{position:absolute;top:0;right:0;}.jxBarTop .jxBarScrollLeft img.jxButtonIcon,.jxBarBottom .jxBarScrollLeft img.jxButtonIcon{background-image:url(images/emblems.png);background-position:0 -80px;}.jxBarTop .jxBarScrollRight img.jxButtonIcon,.jxBarBottom .jxBarScrollRight img.jxButtonIcon{background-image:url(images/emblems.png);background-position:0 -96px;}ul.jxToolbar,ul.jxTabBar{display:block;position:relative;float:left;list-style-type:none;margin:0;padding:0;border:none;}li.jxToolItem{display:block;position:relative;float:left;font-size:0;line-height:0;padding:0;margin:0;border:none;}li.jxToolItem span.jxBarSeparator{display:block;position:relative;float:left;font-size:0;line-height:0;border:0;margin:0;padding:4px;background-repeat:no-repeat;background-position:center center;}.jxBarTop li.jxToolItem span.jxBarSeparator,.jxBarBottom li.jxToolItem span.jxBarSeparator{width:8px;height:20px;background-image:url(images/toolbar_separator_h.png);}.jxBarLeft li.jxToolItem span.jxBarSeparator,.jxBarRight li.jxToolItem span.jxBarSeparator{width:20px;height:8px;background-image:url(images/toolbar_separator_v.png);}.jxBarLeft ul.jxToolbar,.jxBarLeft ul.jxTabBar,.jxBarLeft li.jxToolItem,.jxBarRight ul.jxToolbar,.jxBarRight ul.jxTabBar,.jxBarRight li.jxToolItem{clear:both;}.jxTooltip{width:auto;height:auto;background-color:black;color:white;padding:5px;z-index:65536;}.jxTree,.jxTreeRoot{position:relative;display:block;list-style:none;margin:0;padding:0;}.jxTreeNest{list-style:none;margin:0;padding:0;background-repeat:repeat-y;background-position:left top;}li.jxTreeContainer{position:relative;display:block;margin:0;padding:0;background-repeat:no-repeat;background-position:left top;white-space:nowrap;font-size:0;line-height:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxTree li.jxTreeContainer{margin-left:16px;}a.jxTreeItem{position:relative;display:block;cursor:pointer;outline:none;overflow:hidden;background-image:url(images/tree_hover.png);background-repeat:repeat-x;background-position:left top;border:none;margin:0 1px 0 17px;padding:0 0 0 20px;z-index:0;font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000;text-decoration:none;line-height:20px;height:20px;}a.jxTreeItem:focus{border-left:1px dotted #75ADFF;border-right:1px dotted #75ADFF;margin:0 0 0 16px;background-position:left -72px;}a.jxTreeItem:hover,li.jxTreeContainer a.jxHover{border-left:1px solid #CDDFFD;border-right:1px solid #CDDFFD;margin:0 0 0 16px;background-color:#CDE5FF;background-position:left -24px;}li.jxTreeContainer a.jxSelected,li.jxTreeContainer a.jxSelected:hover,li.jxTreeContainer a.jxPressed,li.jxTreeContainer a.jxPressed:hover{border-left:1px solid #8AABFB;border-right:1px solid #8AABFB;margin:0 0 0 16px;background-color:#CDE5FF;background-position:left -48px;}li.jxDisabled a.jxTreeItem{cursor:default;}li.jxDisabled a.jxTreeItem:focus,li.jxDisabled a.jxTreeItem:hover{background-position:left top;background-color:transparent;border:none;margin:0 1px 0 17px;}.jxTreeNest{background-image:url(images/tree_vert_line.png);}img.jxTreeImage,img.jxTreeIcon{position:absolute;display:inline;left:0;top:0;width:16px;height:20px;z-index:1;background-image:url(images/tree.png);background-repeat:no-repeat;border:0;margin:0;}img.jxTreeIcon{height:16px;top:2px;left:1px;}.jxTreeBranchOpen .jxTreeIcon,.jxTreeBranchLastOpen .jxTreeIcon{background-position:left -40px;}.jxTreeBranchOpen .jxTreeImage{background-position:left -100px;}.jxTreeBranchLastOpen .jxTreeImage{background-position:left -160px;}.jxTreeBranchClosed .jxTreeIcon,.jxTreeBranchLastClosed .jxTreeIcon{background-position:left -20px;}.jxTreeBranchClosed .jxTreeImage{background-position:left -80px;}.jxTreeBranchLastClosed .jxTreeImage{background-position:left -140px;}.jxTreeLeaf .jxTreeIcon,.jxTreeLeafLast .jxTreeIcon{background-position:left 0;}.jxTreeLeaf .jxTreeImage{background-position:left -60px;}.jxTreeLeafLast .jxTreeImage{background-position:left -120px;}a.jxTreeItem,img.jxTreeImage,img.jxTreeIcon,span.jxTreeLabel,.jxTreeItemContainer input{vertical-align:middle;}.jxFileUploadPanel{padding:5px;}.jxFileUploadPanel .jxInputContainer{width:300px;}.jxUploadQueue{width:100%;margin-top:10px;}.jxUploadQueue div{position:relative;width:95%;clear:both;border-top:1px solid black;padding:2px;}.jxUploadQueue div span{display:block;}.jxUploadQueue div span.jxUploadFileName{float:left;font-size:16px;}.jxUploadQueue div span.jxUploadFileDelete,.jxUploadQueue div span.jxUploadFileProgress,.jxUploadQueue div span.jxUploadFileComplete,.jxUploadQueue div span.jxUploadFileError{float:right;width:16px;height:16px;background-repeat:no-repeat;background-position:top left;cursor:pointer;}.jxUploadQueue div span.jxUploadFileDelete{background-image:url('images/delete.gif');}.jxUploadQueue div span.jxUploadFileProgress{background-image:url('images/loading.gif');}.jxUploadQueue div span.jxUploadFileComplete{background-image:url('images/green_tick.png');}.jxUploadQueue div span.jxUploadFileError{background-image:url('images/error.png');}.jxUploadFileErrorTip{padding:4px 4px 4px 20px;border:2px solid #ddd;background:url("images/error.png") no-repeat left top;color:black;width:100px;}
\ No newline at end of file
+ */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;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}.jxButtonContainer{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:2px;border:none;}.jxButton{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:0 0 0 4px;border:none;background-image:url(images/button.png);background-position:left -24px;background-repeat:no-repeat;text-decoration:none;outline:none;}a.jxButton{cursor:pointer;user-select:none;-moz-user-select:none;-khtml-user-select:none;}ul.jxToolbar .jxButton{background-position:left top;}span.jxButtonContent{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:4px 4px 4px 0;border:none;background-image:url(images/button.png);background-position:right -24px;background-repeat:no-repeat;}ul.jxToolbar span.jxButtonContent{background-position:right top;}ul.jxToolbar .jxButtonActive,.jxButtonActive{background-position:left -72px;}ul.jxToolbar .jxButtonActive span.jxButtonContent,.jxButtonActive span.jxButtonContent{background-position:right -72px;}ul.jxToolbar .jxButton:focus,.jxButton:focus{background-position:left -96px;}ul.jxToolbar .jxButton:focus span.jxButtonContent,.jxButton:focus span.jxButtonContent{background-position:right -96px;}ul.jxToolbar .jxButtonActive:focus,.jxButtonActive:focus{background-position:left -144px;}ul.jxToolbar .jxButtonActive:focus span.jxButtonContent,.jxButtonActive:focus span.jxButtonContent{background-position:right -144px;}ul.jxToolbar .jxButton:hover,ul.jxToolbar .jxButtonActive:hover,.jxButton:hover,.jxButtonActive:hover{background-position:left -48px;}ul.jxToolbar .jxButton:hover span.jxButtonContent,ul.jxToolbar .jxButtonActive:hover span.jxButtonContent,.jxButton:hover span.jxButtonContent,.jxButtonActive:hover span.jxButtonContent{background-position:right -48px;}ul.jxToolbar .jxButtonPressed,ul.jxToolbar .jxButtonPressed:focus,.jxButtonPressed,.jxButtonPressed:focus{background-position:left -120px;}ul.jxToolbar .jxButtonPressed span.jxButtonContent,ul.jxToolbar .jxButtonPressed:focus span.jxButtonContent,.jxButtonPressed span.jxButtonContent,.jxButtonPressed:focus span.jxButtonContent{background-position:right -120px;}.jxDisabled .jxButton,.jxDisabled span.jxButtonContent span{cursor:default;}ul.jxToolbar .jxDisabled .jxButton:focus,ul.jxToolbar .jxDisabled .jxButton:active,ul.jxToolbar .jxDisabled .jxButton:hover,ul.jxToolbar .jxDisabled .jxButtonPressed{background-position:left top;}.jxDisabled .jxButton:focus,.jxDisabled .jxButton:active,.jxDisabled .jxButton:hover,.jxDisabled .jxButtonPressed{background-position:left -24px;}ul.jxToolbar .jxDisabled .jxButton:focus span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButton:active span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButton:hover span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonPressed span.jxButtonContent{background-position:right top;}.jxDisabled .jxButton:focus span.jxButtonContent,.jxDisabled .jxButton:active span.jxButtonContent,.jxDisabled .jxButton:hover span.jxButtonContent,.jxDisabled .jxButtonPressed span.jxButtonContent{background-position:right -24px;}ul.jxToolbar .jxDisabled .jxButtonActive:focus,ul.jxToolbar .jxDisabled .jxButtonActive:active,ul.jxToolbar .jxDisabled .jxButtonActive:hover,.jxDisabled .jxButtonActive:focus,.jxDisabled .jxButtonActive:active,.jxDisabled .jxButtonActive:hover{background-position:left -72px;}ul.jxToolbar .jxDisabled .jxButtonActive:focus span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonActive:active span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonActive:hover span.jxButtonContent,.jxDisabled .jxButtonActive:focus span.jxButtonContent,.jxDisabled .jxButtonActive:active span.jxButtonContent,.jxDisabled .jxButtonActive:hover span.jxButtonContent{background-position:right -72px;}img.jxButtonIcon{display:-moz-inline-box;display:inline-block;position:relative;vertical-align:middle;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;}span.jxButtonContent span{display:-moz-inline-box;display:inline-block;position:relative;vertical-align:middle;cursor:pointer;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;height:16px;white-space:nowrap;}span.jxButtonContent span.jxButtonLabel{margin:0;padding:0 4px 0 4px;color:#000;font-size:11px;}.jxDiscloser span.jxButtonContent{padding-right:0;}.jxDiscloser span.jxButtonContent span{padding-right:16px;background-image:url(images/emblems.png);background-position:right -16px;background-repeat:no-repeat;}a.jxButtonDisclose{position:absolute;display:-moz-inline-box;display:inline-block;padding:4px 0;font-size:0;line-height:0;right:2px;top:2px;background-image:url(images/button_multi_disclose.png);background-position:right 0;background-repeat:no-repeat;outline:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxButtonDisclose img{width:16px;height:16px;margin:0;padding:0;border:0;background-image:url(images/emblems.png);background-position:right -16px;background-repeat:no-repeat;}a.jxButtonDisclose:focus,a.jxButtonDisclose:active{background-position:right -96px;}a.jxButtonDisclose:hover{background-position:right -48px;}a.jxButtonDisclosePressed{background-position:right -120px;}.jxDisabled a.jxButtonDisclose,.jxDisabled a.jxButtonDisclose:focus,.jxDisabled a.jxButtonDisclose:active,.jxDisabled a.jxButtonDisclose:hover,.jxDisabled a.jxButtonDisclosePressed{cursor:default;background-position:right 0;}ul.jxToolbar .jxButtonHover{background-position:left -24px!important;}ul.jxToolbar .jxButtonHover span.jxButtonContent{background-position:right -24px!important;}.jxFlyout .jxChrome{background-image:url(images/flyout_chrome.png);padding:5px 5px 7px 6px;}.jxFlyout{position:absolute;display:block;z-index:100;margin:0;padding:0;}.jxFlyoutContent{position:relative;display:block;overflow:auto;margin:6px 6px 8px 7px;background-color:#fff;border:1px solid #999;}.jxButtonMulti,.jxButtonMulti span.jxButtonContent{background-image:url(images/button_multi.png);}.jxButtonEditCombo,.jxButtonEditCombo span.jxButtonContent{background-image:url(images/button_combo.png);}.jxButtonMulti span.jxButtonContent span{padding-right:21px;}.jxButtonEditCombo span.jxButtonContent span{font-size:0;}.jxButtonComboDefault span.jxButtonContent span,.jxButtonComboDefault input{font-style:italic;color:#999;}.jxButtonEditCombo input{float:left;line-height:16px;height:16px;padding:0 4px;margin:0;border:none;font-size:11px;font-family:Arial,Helvetica,sans-serif;background-color:transparent;}.jxChrome{position:absolute;display:block;font-size:0;line-height:0;z-index:-1;width:100%;height:100%;top:0;left:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxChromeDrag{opacity:.5;-ms-filter:"Alpha(opacity=50)";}.jxChromeTL{position:absolute;overflow:hidden;left:0;top:0;width:50%;height:50%;}.jxChromeTR{position:absolute;overflow:hidden;left:50%;top:0;width:50%;height:50%;}.jxChromeBL{position:absolute;overflow:hidden;left:0;top:50%;width:50%;height:50%;}.jxChromeBR{position:absolute;overflow:hidden;left:50%;top:50%;width:50%;height:50%;}.jxChromeTL img{position:absolute;top:0;left:0;width:1000px;height:600px;}.jxChromeTR img{position:absolute;top:0;right:0;width:1000px;height:600px;}.jxChromeBL img{position:absolute;bottom:0;left:0;width:1000px;height:600px;}.jxChromeBR img{position:absolute;bottom:0;right:0;width:1000px;height:600px;}.jxColorBar{position:relative;overflow:hidden;}table.jxColorGrid{position:relative;border-collapse:collapse;empty-cells:show;clear:both;padding:0;margin:0;}.jxColorGrid tr{padding:0;margin:0;}.jxColorGrid td{border:1px solid #000;padding:0;margin:0;}.jxColorGrid td.emptyCell{border:0 solid #000;}.jxColorGrid td.emptyCell span{display:block;width:7px;height:7px;line-height:0;font-size:0;border:0 solid #000;padding:1px;margin:0;}.jxColorGrid a.colorSwatch{display:block;width:7px;height:7px;line-height:0;font-size:0;border:0 solid #000;margin:0;padding:1px;}.jxColorGrid a.borderWhite:hover{border:1px solid #fff;padding:0;}.jxColorGrid a.borderBlack:hover{border:1px solid #000;padding:0;}input.jxHexInput{width:55px;vertical-align:middle;}input.jxAlphaInput{width:30px;vertical-align:middle;}div.jxColorPreview{float:left;position:relative;width:20px;height:20px;border:1px solid #000;margin:2px;vertical-align:middle;background-image:url('images/grid.png');overflow:hidden;}.jxButtonFlyout span.jxButtonContent span.jxButtonSwatch{display:block;float:left;width:14px;height:14px;border:1px solid #000;background-image:url('images/grid.png');background-position:0 0;background-repeat:repeat;padding-right:0!important;}.jxButtonFlyout span.jxButtonContent span.jxButtonSwatch span{display:block;width:14px;height:14px;position:absolute;padding-right:0;background:none;}div.jxColorPreview img{position:absolute;z-index:0;}div.jxColorPreview div{width:20px;height:10px;position:absolute;display:block;left:0;z-index:1;font-size:10px;line-height:0;}div.jxColorPreview div.jxColorSelected{top:0;}div.jxColorPreview div.jxColorHover{bottom:0;}label.jxColorLabel,label.jxAlphaLabel{width:auto;font-family:Arial,sans-serif;font-size:11px;line-height:24px;padding:2px;vertical-align:middle;}a.jxColorClose{position:absolute;top:0;right:0;width:16px;height:16px;}a.jxColorClose img{width:16px;height:16px;}.jxClearer{display:block;position:relative;float:none;clear:both;font-size:0;line-height:0;width:0;height:0;margin:0;padding:0;}.jxDisabled{opacity:.4;-ms-filter:"Alpha(opacity=40)";}.jxDisabled *{-ms-filter:"Alpha(opacity=40)";}iframe.jxIframeShim{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;-ms-filter:"Alpha(opacity=0)";z-index:-1;}.jxConfirmQuestion{text-align:center;padding:10px;margin-top:10px;}.jxDialog .jxChrome{background-image:url(images/dialog_chrome.png);}.jxDialog{display:block;z-index:1000;overflow:hidden;}.jxDialogContentContainer{z-index:1;margin:0 11px 13px 12px;border:1px solid #b7b7b7;background-color:#f0f0f0;}.jxDialogModal{position:absolute;display:block;top:0;left:0;width:100%;height:100%;background-color:#000;opacity:.2;-ms-filter:"Alpha(opacity=20)";}.jxDialogContent{display:block;position:relative;overflow:auto;padding:0;z-index:1;}.jxDialogTitle{display:block;position:relative;background-image:url(images/a_pixel.png);text-align:center;height:24px;line-height:24px;z-index:1;margin:6px 6px 0 7px;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxDialogMin .jxDialogTitle{margin-bottom:8px;}.jxDialogMoveable,.jxDialogMoveable .jxDialogLabel{cursor:move;}.jxDialogIcon{position:absolute;left:2px;top:3px;width:16px;height:16px;border:none;padding:0;margin:0;}.jxDialogLabel{font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;line-height:21px;color:#000;white-space:nowrap;cursor:default;}.jxDialogResize{position:absolute;bottom:7px;right:6px;width:16px;height:16px;z-index:2;border:0;cursor:se-resize;background-image:url(images/dialog_resize.png);}.jxDialogControls{position:absolute;top:3px;right:2px;height:16px;width:80px;}.jxDialogControls img{background-image:url('images/panel_controls.png');background-repeat:no-repeat;border:0;margin:0;width:16px;height:16px;}.jxDialogClose img{background-position:0 -32px;}.jxDialogMenu img{background-position:0 -48px;}.jxDialogHelp img{background-position:0 -64px;}.jxDialogCollapse img{background-position:0 -16px;}.jxDialogMin .jxDialogCollapse img{background-position:0 0;}.jxDialogMax .jxDialogCollapse img{background-position:0 -16px;}.jxDialogLoading img{border:0;margin:0;width:16px;height:16px;visibility:hidden;position:absolute;top:1px;left:2px;}.jxDialogControls .jxButtonContainer,.jxDialogControls span.jxButtonContent,.jxDialogControls .jxButton:hover span.jxButtonContent,.jxDialogControls .jxButton:active span.jxButtonContent,.jxDialogControls .jxButtonActive span.jxButtonContent,.jxDialogControls .jxButtonActive:hover span.jxButtonContent,.jxDialogControls .jxButtonActive:active span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton:hover span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton:active span.jxButtonContent,.jxDialogControls .jxButton,.jxDialogControls .jxButton:hover,.jxDialogControls .jxButton:active,.jxDialogControls .jxButtonActive,.jxDialogControls .jxButtonActive:hover,.jxDialogControls .jxButtonActive:active,.jxDialogControls .jxDisabled .jxButton,.jxDialogControls .jxDisabled .jxButton:hover,.jxDialogControls .jxDisabled .jxButton:active{padding:0;margin:0;border:none;background-color:transparent;background-image:none;}.jxDialogControls .jxButtonMenu span.jxButtonContent,.jxDialogControls .jxButtonFlyout span.jxButtonContent{background-image:none;}.jxDialogControls .jxButtonMenu span.jxButtonContent span,.jxDialogControls .jxButtonFlyout span.jxButtonContent span{padding-right:0;}.jxDialogControls .jxBarContainer{position:absolute;right:0;background-image:none;background-color:transparent;margin:0;padding:0;border:none;height:16px;}.jxDialogControls .jxBarScroller{left:auto;right:0;}.jxDialogControls ul.jxToolbar{float:right;}.jxDialogControls ul.jxToolbar,.jxDialogControls li.jxToolItem{background-image:none;background-color:transparent;margin:0;padding:0;border:none;}div.jxFileInputs{position:relative;}div.jxFileFake{position:absolute;top:0;left:0;z-index:1;}div.jxFileFake span{float:left;display:block;}div.jxFileFake .jxInputContainer{width:150px;}div.jxFileFake .jxInputText{width:135px;}div.jxFileFake .jxButtonContainer{margin-top:2px;float:left;}.jxInputFile{position:relative;text-align:right;-moz-opacity:0;filter:alpha(opacity:0);opacity:0;z-index:2;margin-top:-5px;height:35px;}.jxForm{display:block;position:relative;overflow:hidden;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxFieldset{display:block;position:relative;overflow:hidden;border:1px solid #ccc;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;margin:10px;padding:5px;}.jxFieldsetLegend,.jxFieldset legend{position:relative;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:26px;color:#000;}.jxInputContainer{display:block;position:relative;padding:0;margin:2px;border:none;}.jxInputLabel,.jxInputTag{display:-moz-inline-box;display:inline-block;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:26px;color:#000;}.jxInputLabel{vertical-align:top;}.jxInputTag{vertical-align:bottom;}.jxInputText,.jxInputPassword,.jxInputTextarea{margin:0 4px;padding:4px;border:1px solid #bbb;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputSelect{margin:0 4px;padding:3px 4px 3px 1px;border:1px solid #bbb;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputText:focus,.jxInputPassword:focus,.jxInputTextarea:focus,.jxInputSelect:focus{border:1px solid #000;}.jxInputRadio,.jxInputCheck{margin:5px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputContainer .jxButtonContainer{padding:0;margin:0 4px;}.jxInputGroup{border:none;padding:0;margin:2px;}.jxInputGroup legend{font-size:0;line-height:0;padding:0;margin:0;border:none;}.jxInputGroup .jxFieldsetLegend{font-size:12px;}.jxInputGroup .jxInputLabel{width:auto;}.jxFieldInvalid .jxInputText,.jxFieldInvalid .jxInputPassword,.jxFieldInvalid .jxInputTextarea,.jxFieldInvalid .jxInputSelect{background-color:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}.jxFieldValidated .jxInputText,.jxFieldValidated .jxInputPassword,.jxFieldValidated .jxInputTextarea,.jxFieldValidated .jxInputSelect{background-color:#E6EFC2;color:#264409;border-color:#C6D880;}.jxFieldInvalid .jxInputText:focus,.jxFieldInvalid .jxInputPassword:focus,.jxFieldInvalid .jxInputTextarea:focus,.jxFieldInvalid .jxInputSelect:focus{border-color:#8a1f11;}.jxFieldValidated .jxInputText:focus,.jxFieldValidated .jxInputPassword:focus,.jxFieldValidated .jxInputTextarea:focus,.jxFieldValidated .jxInputSelect:focus{border-color:#264409;}.jxFieldInvalid .jxInputLabel,.jxFieldInvalid .jxInputTag{color:#8a1f11;}.jxFieldValidated .jxInputLabel,.jxFieldValidated .jxInputTag{color:#264409;}.jxFormInline .jxInputContainer,form .jxFormInline .jxInputContainer,form .jxFieldset span.jxFormInline,form.jxForm span.jxFormInline{display:inline;}.jxFormInline .jxInputLabel,form .jxFormInline .jxInputLabel,form span.jxFormInline .jxInputLabel{display:inline;width:auto;}.jxFormInline .jxInputTag,form .jxFormInline .jxInputTag,form span.jxFormInline .jxInputTag{display:inline;}.jxFormInline .jxInputGroup,form .jxFormInline .jxInputGroup{padding-left:0;}.jxFormInline .jxInputGroup .jxFieldsetLegend,form .jxFormInline .jxInputGroup .jxFieldsetLegend{position:relative;left:auto;}.jxFormInline .jxInputGroup .jxInputLabel,form .jxFormInline .jxInputGroup .jxInputLabel{display:inline;width:auto;}.jxFormBlock .jxInputContainer,form .jxFormBlock .jxInputContainer,form .jxFieldset span.jxFormBlock,form.jxform span.jxFormBlock{display:block;}.jxFormBlock .jxInputLabel,form .jxFormBlock .jxInputLabel,form span.jxFormBlock .jxInputLabel{display:block;width:auto;margin-left:4px;}.jxFormBlock .jxInputContainerCheck .jxInputLabel,.jxFormBlock .jxInputContainerRadio .jxInputLabel,form .jxFormBlock .jxInputContainerCheck .jxInputLabel,form .jxFormBlock .jxInputContainerRadio .jxInputLabel,form span.jxFormBlock .jxInputContainerCheck .jxInputLabel,form span.jxFormBlock .jxInputContainerRadio .jxInputLabel{display:-moz-inline-box;display:inline-block;}.jxFormBlock .jxInputGroup,form .jxFormBlock .jxInputGroup{padding-left:0;}.jxFormBlock .jxInputGroup .jxFieldsetLegend,form .jxFormBlock .jxInputGroup .jxFieldsetLegend{position:relative;left:auto;}.jxFormBlock .jxInputGroup .jxInputLabel,form .jxFormBlock .jxInputGroup .jxInputLabel{display:-moz-inline-box;display:inline-block;width:auto;}.jxFormInlineblock .jxInputContainer,form .jxFormInlineblock .jxInputContainer,form .jxFieldset span.jxFormInlineblock,form.jxForm span.jxFormInlineblock{display:block;}.jxFormInlineblock .jxInputLabel,form .jxFormInlineblock .jxInputLabel,form span.jxFormInlineblock .jxInputLabel{display:-moz-inline-box;display:inline-block;width:200px;}.jxFormInlineblock .jxInputGroup,form .jxFormInlineblock .jxInputGroup{padding-left:200px;}.jxFormInlineblock .jxInputGroup .jxFieldsetLegend,form .jxFormInlineblock .jxInputGroup .jxFieldsetLegend{position:absolute;left:-200px;width:200px;}.jxFormInlineblock .jxInputGroup .jxInputLabel,form .jxFormInlineblock .jxInputGroup .jxInputLabel{display:-moz-inline-box;display:inline-block;width:auto;}.jxGridContainer{position:absolute;top:0;left:0;border-left:0 solid #d8d8d8;border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;overflow:hidden;}.jxGridTable{position:relative;table-layout:fixed;border-collapse:collapse;border-style:none;cursor:default;font-family:Arial,Verdana,sans-serif;font-size:11px;font-weight:normal;}.jxGridHeader{width:100%;}.jxGridTableBody{position:relative;table-layout:fixed;border-collapse:collapse;border-style:none;cursor:default;font-family:Arial,Verdana,sans-serif;font-size:11px;font-weight:normal;}.jxGridColHeadHide{height:0;line-height:0;font-size:0;background-color:#fff;white-space:normal;}.jxGridColHeadHide p,.jxGridRowHeadHide p{font-size:0;line-height:0;height:0;margin:0;padding:0;}.jxGridRowHeadHide{width:0;white-space:normal;}.jxGridCell{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;overflow:hidden;}.jxGridCellContent{position:relative;display:-moz-inline-box;display:inline-block;overflow:hidden;padding-left:3px;padding-right:3px;overflow:hidden;white-space:nowrap;cursor:cell;text-overflow:ellipsis;}.jxGridColHead{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;background-color:#f2f2f2;background-image:url('images/table_col.png');background-position:0 0;background-repeat:repeat-x;text-align:center;font-weight:bold;color:#333;cursor:default;padding-left:3px;padding-right:3px;white-space:nowrap;}.jxGridRowHead{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;background-color:#f2f2f2;background-image:url('images/table_row.png');background-position:0 0;background-repeat:repeat-y;text-align:center;font-weight:bold;color:#333;cursor:default;overflow:hidden;white-space:nowrap;}.jxGridRowAll{background-color:#fff;}.jxGridColumnHeaderSelected{background-color:#e1e1e1;background-position:0 -200px;}.jxGridRowHeaderSelected{background-color:#e1e1e1;background-position:-400px 0;}.jxGridColumnSelected{background-color:#f7f7f7;}.jxGridRowSelected td{background-color:#f7f7f7;}td.jxGridCellSelected{background-color:#ebebeb;}.jxGridColumnHeaderPrelight{background-color:#cee5ff;background-position:0 -300px;}.jxGridRowHeaderPrelight{background-color:#cee5ff;background-position:-600px 0;}.jxGridColumnPrelight{background-color:#e5f1ff;}.jxGridRowPrelight td{background-color:#e5f1ff;}td.jxGridCellPrelight{background-color:#cce3ff;}.jxColSortable{padding-right:20px;}.jxGridCell.jxColSortable{padding-right:0;}.jxColSortable span{background-image:url('images/emblems.png');padding-right:20px;background-repeat:no-repeat;background-position:right top;}.jxGridColumnSortedAsc span{background-position:right -160px;}.jxGridColumnSortedDesc span{background-position:right -16px;}.jxGridColumnResize,.jxGridRowResize{display:block;position:absolute;background-image:url(images/a_pixel.png);z-index:1;}.jxGridColumnResize{right:0;top:0;height:100%;width:4px;cursor:col-resize;}.jxGridRowResize{left:0;bottom:0;height:4px;width:100%;cursor:row-resize;}.jxListView .jxListItemContainer{position:relative;display:block;outline:none;overflow:hidden;border:none;margin:0 1px;padding:0;}.jxListItem{position:relative;display:block;cursor:pointer;outline:none;overflow:hidden;border:none;margin:0 1px;padding:0;z-index:0;font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000;text-decoration:none;line-height:20px;height:20px;}.jxListView .jxHover{margin:0;border-left:1px solid #CDDFFD;border-right:1px solid #CDDFFD;background-image:url(images/listitem.png);background-repeat:repeat-x;background-color:#CDE5FF;background-position:left -24px;}.jxListItem:focus{margin:0;border-left:1px dotted #75ADFF;border-right:1px dotted #75ADFF;background-image:url(images/listitem.png);background-repeat:repeat-x;background-position:left -72px;}.jxListView .jxPressed,.jxListView .jxSelected{margin:0;border-left:1px solid #8AABFB;border-right:1px solid #8AABFB;background-color:#CDE5FF;background-image:url(images/listitem.png);background-repeat:repeat-x;background-position:left -48px;}.jxMenuContainer .jxChrome{background-image:url(images/flyout_chrome.png);padding:5px 5px 7px 6px;}.jxButtonMenu span.jxMenuItemSpan{padding-right:16px;}.jxMenuContainer{position:absolute;top:0;left:-10000px;display:none;z-index:2000;padding:0;}ul.jxMenu{display:block;position:relative;list-style-type:none;padding:1px;margin:6px 6px 8px 7px;background-color:#fff;border:1px solid #999;}li.jxMenuItemContainer{display:block;position:relative;font-size:0;line-height:0;margin:0;padding:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxMenuItem{display:block;position:relative;overflow:hidden;text-decoration:none;cursor:pointer;outline:none;border:1px solid #fff;background-image:url(images/menuitem.png);background-repeat:no-repeat;background-position:left top;font-family:Arial,Helvetica,sans-serif;font-size:11px;text-decoration:none;margin:0;padding:0;color:#000;}a.jxMenuItemActive{background-position:left -98px;}a.jxMenuItem:focus{background-position:left -74px;}a.jxMenuItem:focus span.jxMenuItemContent{border-right:1px dotted #75ADFF;}a.jxMenuItemActive:focus{background-position:left -170px;}a.jxMenuItem:hover{background-color:#CDE5FF;background-position:left -26px;}a.jxMenuItem:hover span.jxMenuItemContent{border-right:1px solid #C5E0FF;}a.jxMenuItemActive:hover{background-position:left -122px;}a.jxMenuItemPressed,a.jxMenuItemPressed:hover{background-color:#CDE5FF;background-position:left -50px;}.jxDisabled a.jxMenuItem,.jxDisabled span.jxMenuItemContent span{cursor:default;}.jxDisabled a.jxMenuItem:focus,.jxDisabled a.jxMenuItemPressed,.jxDisabled a.jxMenuItemPressed:hover,.jxDisabled a.jxMenuItem:hover{background-color:#fff;background-position:left top;border-right:1px solid #fff;}.jxDisabled a.jxMenuItem:hover span.jxMenuItemContent{border-right:1px solid #fff;}span.jxMenuItemContent{display:block;position:relative;font-family:Arial,Helvetica,sans-serif;font-size:0;line-height:0;white-space:nowrap;padding:0 20px 0 0;margin:0;border-right:1px solid #fff;}.jxButtonSubMenu span.jxMenuItemContent,.jxButtonSubMenu:hover span.jxMenuItemContent{background-image:url(images/emblems.png);background-position:right -30px;background-repeat:no-repeat;}img.jxMenuItemIcon{position:absolute;top:2px;left:2px;width:16px;height:16px;background-position:left center;background-repeat:no-repeat;}span.jxMenuItemContent span{display:block;position:relative;cursor:pointer;margin:0;padding:2px 0 2px 22px;font-size:16px;line-height:16px;color:#000;}span.jxMenuItemContent span.jxMenuItemLabel{color:#000;font-size:11px;}.jxMenuItemToggle img.jxMenuItemIcon,.jxMenuItemToggleSet img.jxMenuItemIcon{background-image:url(images/emblems.png);background-position:2px 0;background-repeat:no-repeat;}.jxMenuItemToggle a.jxMenuItemActive img.jxMenuItemIcon{background-position:2px -48px;}.jxMenuItemToggleSet a.jxMenuItemActive img.jxMenuItemIcon{background-position:2px -64px;}ul.jxMenu span.jxMenuSeparator{display:block;font-size:10px;line-height:10px;background-image:url(images/toolbar_separator_v.png);background-repeat:repeat-x;background-position:left center;}.jxMessage{text-align:center;padding:10px;margin-top:10px;}.jxNotificationContainer{border:1px black solid;padding:2px;}.jxNotificationMinimize{width:100%;height:10px;margin:2px;background-color:blue;cursor:pointer;display:block;}.jxNotice{margin:5 auto;border:1px solid black;position:relative;display:block;}.jxNoticeClose{float:right;width:15px;height:15px;background-color:black;cursor:pointer;}.jxPanel{display:block;position:relative;}.jxPanelContentContainer{overflow:hidden;background-color:#f0f0f0;}.jxPanelContent{position:relative;display:block;overflow:auto;background-color:#fff;margin:0;padding:0;}.jxPanelTitle{display:block;position:relative;background-image:url(images/panelbar.png);background-repeat:repeat-x;background-position:left top;height:22px;margin:0;padding:0;text-align:center;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxPanelBar{position:absolute;line-height:1px;width:100%;height:5px;cursor:row-resize;background-color:#f0f0f0;z-index:2;}.jxPanelIcon{position:absolute;left:2px;top:3px;width:16px;height:16px;border:none;padding:0;margin:0;}.jxPanelLabel{padding-left:25px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;line-height:21px;color:#000;white-space:nowrap;}.jxPanelControls{position:absolute;top:3px;right:2px;height:16px;width:80px;overflow:hidden;}.jxPanelControls img{background-image:url('images/panel_controls.png');background-repeat:no-repeat;border:0;margin:0;width:16px;height:16px;}.jxPanelClose img{background-position:0 -32px;}.jxPanelMenu img{background-position:0 -48px;}.jxPanelHelp img{background-position:0 -64px;}.jxPanelCollapse img{background-position:0 -16px;}.jxPanelMin .jxPanelCollapse img{background-position:0 0;}.jxPanelMax .jxPanelCollapse img{background-position:0 -16px;}.jxPanelMaximize img{background-position:0 0;}.jxPanelLoading img{border:0;margin:0;width:16px;height:16px;visibility:hidden;position:absolute;top:1px;left:2px;}.jxPanelControls .jxButtonContainer,.jxPanelControls span.jxButtonContent,.jxPanelControls .jxButton:hover span.jxButtonContent,.jxPanelControls .jxButton:active span.jxButtonContent,.jxPanelControls .jxButtonActive span.jxButtonContent,.jxPanelControls .jxButtonActive:hover span.jxButtonContent,.jxPanelControls .jxButtonActive:active span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton:hover span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton:active span.jxButtonContent,.jxPanelControls .jxButton,.jxPanelControls .jxButton:hover,.jxPanelControls .jxButton:active,.jxPanelControls .jxButtonActive,.jxPanelControls .jxButtonActive:hover,.jxPanelControls .jxButtonActive:active,.jxPanelControls .jxDisabled .jxButton,.jxPanelControls .jxDisabled .jxButton:hover,.jxPanelControls .jxDisabled .jxButton:active{padding:0;margin:0;border:none;background-color:transparent;background-image:none;}.jxPanelControls .jxButtonMenu span.jxButtonContent,.jxPanelControls .jxButtonFlyout span.jxButtonContent{background-image:none;}.jxPanelControls .jxButtonMenu span.jxButtonContent span,.jxPanelControls .jxButtonFlyout span.jxButtonContent span{padding-right:0;}.jxPanelControls div.jxBarTop{position:absolute;right:0;background-image:none;background-color:transparent;margin:0;padding:0;border:none;height:16px;}.jxPanelControls .jxBarScroller{left:auto;right:0;}.jxPanelControls ul.jxToolbar{float:right;}.jxPanelControls ul.jxToolbar,.jxPanelControls li.jxToolItem{background-image:none;background-color:transparent;margin:0;padding:0;border:none;}.jxProgressBar-container{width:100%;display:block;clear:both;}.jxProgressBar-message{color:black;}.jxProgressBar-container .jxProgressBar{width:100%;clear:both;border-top:none;}.jxProgressBar-container .jxProgressBar .jxProgressBar-outline{border:1px solid #360;position:absolute;top:0;left:0;z-index:10;}.jxProgressBar-container .jxProgressBar .jxProgressBar-fill{background-color:#9c6;position:absolute;top:1px;left:1px;z-index:20;}.jxProgressBar-container .jxProgressBar .jxProgressBar-text{color:#360;margin:0;padding:2px;position:absolute;top:1px;left:1px;width:auto;z-index:30;border:none;}.jxSliderContainer{width:100%;height:10px;border:1px solid black;}.jxSliderKnob{width:10px;height:10px;background-color:black;cursor:pointer;}.jxSplitterMask{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;background-image:url(images/a_pixel.png);z-index:1;}.jxSplitBarHorizontal{display:block;position:absolute;font-size:0;line-height:0;margin:0;padding:0;border:none;width:5px;height:100%;cursor:col-resize;background-color:#f0f0f0;z-index:2;}.jxSplitBarVertical{display:block;position:absolute;font-size:0;line-height:0;margin:0;padding:0;border:none;width:100%;height:5px;cursor:row-resize;background-color:#f0f0f0;z-index:2;}.jxSplitContainer{display:block;position:relative;margin:0;padding:0;border:none;overflow:hidden;}.jxSplitArea{display:block;position:absolute;margin:0;padding:0;border:none;z-index:0;}.jxSplitBarDrag{background-color:#eee;}.jxSnapHorizontalBefore{width:5px;height:5px;position:absolute;top:0;left:0;background-color:#aaa;}.jxSnapHorizontalAfter{width:5px;height:5px;position:absolute;top:0;left:0;background-color:#aaa;}.jxTabSetContainer{position:relative;display:-moz-inline-box;display:inline-block;overflow:hidden;width:200px;height:200px;margin:0;padding:0;background-color:#fff;}.jxTabSetContainer .jxToolbarContainer{z-index:auto;}.tabContent{display:none;position:relative;width:100%;height:100%;overflow:auto;}.tabContentActive{display:block;}span.jxTabContainer{display:block;position:relative;margin:0;padding:2px;border:none;}a.jxTab{display:-moz-inline-box;display:inline-block;position:relative;cursor:pointer;user-select:none;-moz-user-select:none;-khtml-user-select:none;margin:0;padding:0;border:none;background-repeat:no-repeat;text-decoration:none;outline:none;}span.jxTabContent{display:-moz-inline-box;display:inline-block;font-size:0;line-height:0;margin:0;padding:0;border:none;background-repeat:no-repeat;}img.jxTabIcon{display:-moz-inline-box;display:inline-block;position:relative;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;}span.jxTabLabel{display:-moz-inline-box;display:inline-block;position:relative;cursor:pointer;margin:0;padding:0;color:#000;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;}a.jxTabClose{display:block;position:absolute;cursor:pointer;outline:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxTabClose img{width:16px;height:16px;background-image:url(images/tab_close.png);}.jxDisabled a.jxTab,.jxDisabled span.jxTabContent span,.jxDisabled a.jxTabClose{cursor:default;}.jxBarTop a.jxTab,.jxBarTop span.jxTabContent{background-image:url(images/tab_top.png);}.jxBarBottom a.jxTab,.jxBarBottom span.jxTabContent{background-image:url(images/tab_bottom.png);}.jxBarTop a.jxTabClose,.jxBarBottom a.jxTabClose{top:5px;right:5px;}.jxBarTop .jxTabClose span.jxTabContent,.jxBarBottom .jxTabClose span.jxTabContent{padding-right:16px;}.jxBarTop a.jxTab,.jxBarBottom a.jxTab{padding-left:4px;background-position:left -24px;}.jxBarTop span.jxTabContent,.jxBarBottom span.jxTabContent{padding:4px 4px 4px 0;background-position:right -24px;}.jxBarTop a.jxTabActive,.jxBarBottom a.jxTabActive{background-position:left -72px;}.jxBarTop a.jxTabActive span.jxTabContent,.jxBarBottom a.jxTabActive span.jxTabContent{background-position:right -72px;}.jxBarTop a.jxTab:focus,.jxBarBottom a.jxTab:focus{background-position:left -96px;}.jxBarTop a.jxTab:focus span.jxTabContent,.jxBarBottom a.jxTab:focus span.jxTabContent{background-position:right -96px;}.jxBarTop a.jxTabActive:focus,.jxBarBottom a.jxTabActive:focus{background-position:left -144px;}.jxBarTop a.jxTabActive:focus span.jxTabContent,.jxBarBottom a.jxTabActive:focus span.jxTabContent{background-position:right -144px;}.jxBarTop a.jxTab:hover,.jxBarTop a.jxTabActive:hover,.jxBarBottom a.jxTab:hover,.jxBarBottom a.jxTabActive:hover{background-position:left -48px;}.jxBarTop a.jxTab:hover span.jxTabContent,.jxBarTop a.jxTabActive:hover span.jxTabContent,.jxBarBottom a.jxTab:hover span.jxTabContent,.jxBarBottom a.jxTabActive:hover span.jxTabContent{background-position:right -48px;}.jxBarTop a.jxTabPressed,.jxBarTop a.jxTabPressed:focus,.jxBarBottom a.jxTabPressed,.jxBarBottom a.jxTabPressed:focus{background-position:left -120px;}.jxBarTop a.jxTabPressed span.jxTabContent,.jxBarTop a.jxTabPressed:focus span.jxTabContent,.jxBarBottom a.jxTabPressed span.jxTabContent,.jxBarBottom a.jxTabPressed:focus span.jxTabContent{background-position:right -120px;}.jxBarTop .jxDisabled a.jxTab:focus,.jxBarTop .jxDisabled a.jxTab:active,.jxBarTop .jxDisabled a.jxTab:hover,.jxBarTop .jxDisabled a.jxTabPressed,.jxBarBottom .jxDisabled a.jxTab:focus,.jxBarBottom .jxDisabled a.jxTab:active,.jxBarBottom .jxDisabled a.jxTab:hover,.jxBarBottom .jxDisabled a.jxTabPressed{background-position:left -24px;}.jxBarTop .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarTop .jxDisabled a.jxTab:active span.jxTabContent,.jxBarTop .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarTop .jxDisabled a.jxTabPressed span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:active span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabPressed span.jxTabContent{background-position:right -24px;}.jxBarTop .jxDisabled a.jxTabActive:focus,.jxBarTop .jxDisabled a.jxTabActive:active,.jxBarTop .jxDisabled a.jxTabActive:hover,.jxBarBottom .jxDisabled a.jxTabActive:focus,.jxBarBottom .jxDisabled a.jxTabActive:active,.jxBarBottom .jxDisabled a.jxTabActive:hover{background-position:left -72px;}.jxBarTop .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarTop .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarTop .jxDisabled a.jxTabActive:hover span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:hover span.jxTabContent{background-position:right -72px;}.jxBarTop img.jxTabIcon,.jxBarBottom img.jxTabIcon{vertical-align:middle;}.jxBarTop span.jxTabLabel,.jxBarBottom span.jxTabLabel{vertical-align:middle;height:16px;padding:0 4px 0 4px;}.jxBarLeft a.jxTab,.jxBarLeft span.jxTabContent{background-image:url(images/tab_left.png);}.jxBarRight a.jxTab,.jxBarRight span.jxTabContent{background-image:url(images/tab_right.png);}.jxBarLeft a.jxTabClose,.jxBarRight a.jxTabClose{top:5px;left:5px;}.jxBarLeft .jxTabClose span.jxTabContent,.jxBarRight .jxTabClose span.jxTabContent{padding-top:16px;}.jxBarLeft a.jxTab,.jxBarRight a.jxTab{padding-top:4px;background-position:-24px top;}.jxBarLeft span.jxTabContent,.jxBarRight span.jxTabContent{padding:0 4px 4px 4px;background-position:-24px bottom;}.jxBarLeft a.jxTabActive,.jxBarRight a.jxTabActive{background-position:-72px top;}.jxBarLeft a.jxTabActive span.jxTabContent,.jxBarRight a.jxTabActive span.jxTabContent{background-position:-72px bottom;}.jxBarLeft a.jxTab:focus,.jxBarRight a.jxTab:focus{background-position:-96px top;}.jxBarLeft a.jxTab:focus span.jxTabContent,.jxBarRight a.jxTab:focus span.jxTabContent{background-position:-96px bottom;}.jxBarLeft a.jxTabActive:focus,.jxBarRight a.jxTabActive:focus{background-position:-144px top;}.jxBarLeft a.jxTabActive:focus span.jxTabContent,.jxBarRight a.jxTabActive:focus span.jxTabContent{background-position:-144px bottom;}.jxBarLeft a.jxTab:hover,.jxBarLeft a.jxTabActive:hover,.jxBarRight a.jxTab:hover,.jxBarRight a.jxTabActive:hover{background-position:-48px top;}.jxBarLeft a.jxTab:hover span.jxTabContent,.jxBarLeft a.jxTabActive:hover span.jxTabContent,.jxBarRight a.jxTab:hover span.jxTabContent,.jxBarRight a.jxTabActive:hover span.jxTabContent{background-position:-48px bottom;}.jxBarLeft a.jxTabPressed,.jxBarLeft a.jxTabPressed:focus,.jxBarRight a.jxTabPressed,.jxBarRight a.jxTabPressed:focus{background-position:-120px top;}.jxBarLeft a.jxTabPressed span.jxTabContent,.jxBarLeft a.jxTabPressed:focus span.jxTabContent,.jxBarRight a.jxTabPressed span.jxTabContent,.jxBarRight a.jxTabPressed:focus span.jxTabContent{background-position:-120px bottom;}.jxBarLeft .jxDisabled a.jxTab:focus,.jxBarLeft .jxDisabled a.jxTab:active,.jxBarLeft .jxDisabled a.jxTab:hover,.jxBarLeft .jxDisabled a.jxTabPressed,.jxBarRight .jxDisabled a.jxTab:focus,.jxBarRight .jxDisabled a.jxTab:active,.jxBarRight .jxDisabled a.jxTab:hover,.jxBarRight .jxDisabled a.jxTabPressed{background-position:-24px top;}.jxBarLeft .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarLeft .jxDisabled a.jxTab:active span.jxTabContent,.jxBarLeft .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabPressed span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:active span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarRight .jxDisabled a.jxTabPressed span.jxTabContent{background-position:-24px bottom;}.jxBarLeft .jxDisabled a.jxTabActive:focus,.jxBarLeft .jxDisabled a.jxTabActive:active,.jxBarLeft .jxDisabled a.jxTabActive:hover,.jxBarRight .jxDisabled a.jxTabActive:focus,.jxBarRight .jxDisabled a.jxTabActive:active,.jxBarRight .jxDisabled a.jxTabActive:hover{background-position:-72px top;}.jxBarLeft .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabActive:hover span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:hover span.jxTabContent{background-position:-72px bottom;}.jxBarLeft span.jxTabLabel,.jxBarRight span.jxTabLabel{padding:4px 0 4px 0;}.jxBarContainer{display:block;position:relative;z-index:1;overflow:hidden;margin:0;padding:0;border:0;background-color:#f0f0f0;}.jxBarTop,.jxBarBottom{width:100%;height:28px;background-image:url(images/toolbar.png);background-repeat:repeat-x;background-position:0 0;overflow:hidden;}.jxTabBox .jxTabBarTop{background-image:url(images/tabbar.png);background-position:0 bottom;}.jxTabBox .jxTabBarBottom{background-image:url(images/tabbar_bottom.png);background-position:0 top;}.jxBarLeft,.jxBarRight{width:auto;height:100%;background-image:url(images/toolbar.png);background-repeat:repeat-x;background-position:0 0;float:left;overflow:hidden;}.jxTabBox .jxTabBarLeft{background-image:url(images/tabbar_left.png);background-repeat:repeat-y;background-position:right 0;}.jxTabBox .jxTabBarRight{background-image:url(images/tabbar_right.png);background-repeat:repeat-y;background-position:left 0;}.jxBarTop .jxBarScroller,.jxBarBottom .jxBarScroller{position:absolute;width:10000%;overflow:hidden;}.jxBarTop .jxBarScrollLeft,.jxBarBottom .jxBarScrollLeft{position:absolute;top:0;left:0;}.jxBarTop .jxBarScrollRight,.jxBarBottom .jxBarScrollRight{position:absolute;top:0;right:0;}.jxBarTop .jxBarScrollLeft img.jxButtonIcon,.jxBarBottom .jxBarScrollLeft img.jxButtonIcon{background-image:url(images/emblems.png);background-position:0 -80px;}.jxBarTop .jxBarScrollRight img.jxButtonIcon,.jxBarBottom .jxBarScrollRight img.jxButtonIcon{background-image:url(images/emblems.png);background-position:0 -96px;}ul.jxToolbar,ul.jxTabBar{display:block;position:relative;float:left;list-style-type:none;margin:0;padding:0;border:none;}li.jxToolItem{display:block;position:relative;float:left;font-size:0;line-height:0;padding:0;margin:0;border:none;}li.jxToolItem span.jxBarSeparator{display:block;position:relative;float:left;font-size:0;line-height:0;border:0;margin:0;padding:4px;background-repeat:no-repeat;background-position:center center;}.jxBarTop li.jxToolItem span.jxBarSeparator,.jxBarBottom li.jxToolItem span.jxBarSeparator{width:8px;height:20px;background-image:url(images/toolbar_separator_h.png);}.jxBarLeft li.jxToolItem span.jxBarSeparator,.jxBarRight li.jxToolItem span.jxBarSeparator{width:20px;height:8px;background-image:url(images/toolbar_separator_v.png);}.jxBarLeft ul.jxToolbar,.jxBarLeft ul.jxTabBar,.jxBarLeft li.jxToolItem,.jxBarRight ul.jxToolbar,.jxBarRight ul.jxTabBar,.jxBarRight li.jxToolItem{clear:both;}.jxTooltip{width:auto;height:auto;background-color:black;color:white;padding:5px;z-index:65536;}.jxTree,.jxTreeRoot{position:relative;display:block;list-style:none;margin:0;padding:0;}.jxTreeNest{list-style:none;margin:0;padding:0;background-repeat:repeat-y;background-position:left top;}li.jxTreeContainer{position:relative;display:block;margin:0;padding:0;background-repeat:no-repeat;background-position:left top;white-space:nowrap;font-size:0;line-height:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxTree li.jxTreeContainer{margin-left:16px;}a.jxTreeItem{position:relative;display:block;cursor:pointer;outline:none;overflow:hidden;background-image:url(images/tree_hover.png);background-repeat:repeat-x;background-position:left top;border:none;margin:0 1px 0 17px;padding:0 0 0 20px;z-index:0;font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000;text-decoration:none;line-height:20px;height:20px;}a.jxTreeItem:focus{border-left:1px dotted #75ADFF;border-right:1px dotted #75ADFF;margin:0 0 0 16px;background-position:left -72px;}a.jxTreeItem:hover,li.jxTreeContainer a.jxHover{border-left:1px solid #CDDFFD;border-right:1px solid #CDDFFD;margin:0 0 0 16px;background-color:#CDE5FF;background-position:left -24px;}li.jxTreeContainer a.jxSelected,li.jxTreeContainer a.jxSelected:hover,li.jxTreeContainer a.jxPressed,li.jxTreeContainer a.jxPressed:hover{border-left:1px solid #8AABFB;border-right:1px solid #8AABFB;margin:0 0 0 16px;background-color:#CDE5FF;background-position:left -48px;}li.jxDisabled a.jxTreeItem{cursor:default;}li.jxDisabled a.jxTreeItem:focus,li.jxDisabled a.jxTreeItem:hover{background-position:left top;background-color:transparent;border:none;margin:0 1px 0 17px;}.jxTreeNest{background-image:url(images/tree_vert_line.png);}img.jxTreeImage,img.jxTreeIcon{position:absolute;display:inline;left:0;top:0;width:16px;height:20px;z-index:1;background-image:url(images/tree.png);background-repeat:no-repeat;border:0;margin:0;}img.jxTreeIcon{height:16px;top:2px;left:1px;}.jxTreeBranchOpen .jxTreeIcon,.jxTreeBranchLastOpen .jxTreeIcon{background-position:left -40px;}.jxTreeBranchOpen .jxTreeImage{background-position:left -100px;}.jxTreeBranchLastOpen .jxTreeImage{background-position:left -160px;}.jxTreeBranchClosed .jxTreeIcon,.jxTreeBranchLastClosed .jxTreeIcon{background-position:left -20px;}.jxTreeBranchClosed .jxTreeImage{background-position:left -80px;}.jxTreeBranchLastClosed .jxTreeImage{background-position:left -140px;}.jxTreeLeaf .jxTreeIcon,.jxTreeLeafLast .jxTreeIcon{background-position:left 0;}.jxTreeLeaf .jxTreeImage{background-position:left -60px;}.jxTreeLeafLast .jxTreeImage{background-position:left -120px;}a.jxTreeItem,img.jxTreeImage,img.jxTreeIcon,span.jxTreeLabel,.jxTreeItemContainer input{vertical-align:middle;}.jxFileUploadPanel{padding:5px;}.jxFileUploadPanel .jxInputContainer{width:300px;}.jxUploadQueue{width:100%;margin-top:10px;}.jxUploadQueue div{position:relative;width:95%;clear:both;border-top:1px solid black;padding:2px;}.jxUploadQueue div span{display:block;}.jxUploadQueue div span.jxUploadFileName{float:left;font-size:16px;}.jxUploadQueue div span.jxUploadFileDelete,.jxUploadQueue div span.jxUploadFileProgress,.jxUploadQueue div span.jxUploadFileComplete,.jxUploadQueue div span.jxUploadFileError{float:right;width:16px;height:16px;background-repeat:no-repeat;background-position:top left;cursor:pointer;}.jxUploadQueue div span.jxUploadFileDelete{background-image:url('images/delete.gif');}.jxUploadQueue div span.jxUploadFileProgress{background-image:url('images/loading.gif');}.jxUploadQueue div span.jxUploadFileComplete{background-image:url('images/green_tick.png');}.jxUploadQueue div span.jxUploadFileError{background-image:url('images/error.png');}.jxUploadFileErrorTip{padding:4px 4px 4px 20px;border:2px solid #ddd;background:url("images/error.png") no-repeat left top;color:black;width:100px;}
\ No newline at end of file
Modified: sandbox/jxlib-3.0/templates/mapserver/standard/themes/crispin/jxtheme.uncompressed.css
===================================================================
--- sandbox/jxlib-3.0/templates/mapserver/standard/themes/crispin/jxtheme.uncompressed.css 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/templates/mapserver/standard/themes/crispin/jxtheme.uncompressed.css 2009-11-11 15:31:46 UTC (rev 1970)
@@ -13,7 +13,7 @@
h1,h2,h3,h4,h5,h6{font-size:100%;}
q:before,q:after{content:'';}/**
* @project Jx
- * @revision $Id: button.css 507 2009-08-06 19:19:14Z fred.warnock $
+ * @revision $Id: button.css 593 2009-11-09 20:29:54Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -253,19 +253,11 @@
/* JX BUTTON EXTENSION STYLES */
/* ========================== */
-.jxButtonMenu span.jxButtonContent,
-.jxButtonMulti span.jxButtonContent,
-.jxButtonFlyout span.jxButtonContent,
-.jxButtonCombo span.jxButtonContent,
-.jxButtonEditCombo span.jxButtonContent {
+.jxDiscloser span.jxButtonContent {
padding-right: 0px;
}
-.jxButtonMenu span.jxButtonContent span,
-.jxButtonFlyout span.jxButtonContent span,
-.jxButtonMulti span.jxButtonContent span,
-.jxButtonCombo span.jxButtonContent span,
-.jxButtonEditCombo span.jxButtonContent span {
+.jxDiscloser span.jxButtonContent span {
padding-right: 16px;
background-image: url(images/emblems.png);
background-position: right -16px;
@@ -1652,7 +1644,7 @@
}
/**
* @project Jx
- * @revision $Id: menu.css 582 2009-10-30 22:03:58Z pagameba $
+ * @revision $Id: menu.css 601 2009-11-10 18:44:35Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -1846,7 +1838,7 @@
}
.jxMenuItemToggle img.jxMenuItemIcon,
-.jxMenuItemSet img.jxMenuItemIcon {
+.jxMenuItemToggleSet img.jxMenuItemIcon {
background-image: url(images/emblems.png);
background-position: 2px 0px;
background-repeat: no-repeat;
@@ -1856,7 +1848,7 @@
background-position: 2px -48px;
}
-.jxMenuItemSet a.jxMenuItemActive img.jxMenuItemIcon {
+.jxMenuItemToggleSet a.jxMenuItemActive img.jxMenuItemIcon {
background-position: 2px -64px;
}
@@ -2293,7 +2285,7 @@
background-color: #aaa;
}/**
* @project Jx
- * @revision $Id: tab.css 241 2008-12-10 15:11:05Z pagameba $
+ * @revision $Id: tab.css 599 2009-11-10 16:06:38Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -2311,7 +2303,8 @@
the position need to be explicitly set, as well as the width and height. */
/* Base setup */
position: relative;
- display: block;
+ display: -moz-inline-box;
+ display: inline-block;
overflow: hidden;
width: 200px;
@@ -2347,7 +2340,7 @@
/* BASE TAB (BUTTON) STYLES */
/* ======================== */
-div.jxTabContainer {
+span.jxTabContainer {
/* Base setup */
display: block;
position: relative;
@@ -2359,7 +2352,8 @@
a.jxTab {
/* Base setup */
- display: block;
+ display: -moz-inline-box;
+ display: inline-block;
position: relative;
cursor: pointer;
user-select: none;
@@ -2377,7 +2371,8 @@
span.jxTabContent {
/* Base setup */
- display: block;
+ display: -moz-inline-box;
+ display: inline-block;
font-size: 0px;
line-height: 0px;
@@ -2391,6 +2386,8 @@
img.jxTabIcon {
/* Base setup */
+ display: -moz-inline-box;
+ display: inline-block;
position: relative;
width: 16px;
@@ -2401,7 +2398,8 @@
span.jxTabLabel {
/* Base setup */
- display: block;
+ display: -moz-inline-box;
+ display: inline-block;
position: relative;
cursor: pointer;
@@ -2446,7 +2444,6 @@
.jxBarTop div.jxTabContainer,
.jxBarBottom div.jxTabContainer {
/* Base setup */
- float: left;
}
.jxBarTop a.jxTab,
@@ -2462,8 +2459,8 @@
/* Closeable Tab */
.jxBarTop a.jxTabClose,
.jxBarBottom a.jxTabClose {
- top: 3px;
- right: 3px;
+ top: 5px;
+ right: 5px;
}
.jxBarTop .jxTabClose span.jxTabContent,
@@ -2475,7 +2472,6 @@
.jxBarTop a.jxTab,
.jxBarBottom a.jxTab {
/* Base setup */
- float: left;
padding-left: 4px; /* makes room for the left of the tab bg */
background-position: left -24px;
@@ -2484,7 +2480,6 @@
.jxBarTop span.jxTabContent,
.jxBarBottom span.jxTabContent {
/* Base setup */
- float: left;
padding: 4px 4px 4px 0px; /* makes space around the label */
background-position: right -24px;
@@ -2599,14 +2594,14 @@
.jxBarTop img.jxTabIcon,
.jxBarBottom img.jxTabIcon {
+ vertical-align: middle;
/* Base setup */
- float: left;
}
.jxBarTop span.jxTabLabel,
.jxBarBottom span.jxTabLabel {
/* Base setup */
- float: left;
+ vertical-align: middle;
height: 16px;
padding: 0px 4px 0px 4px;
@@ -2617,8 +2612,8 @@
/* VERTICAL TAB BAR - LEFT and RIGHT */
/* ================================= */
-.jxBarLeft div.jxTabContainer,
-.jxBarRight div.jxTabContainer {
+.jxBarLeft span.jxTabContainer,
+.jxBarRight span.jxTabContainer {
/* Base setup */
}
@@ -2635,8 +2630,8 @@
/* Closeable Tab */
.jxBarLeft a.jxTabClose,
.jxBarRight a.jxTabClose {
- top: 3px;
- left: 3px;
+ top: 5px;
+ left: 5px;
}
.jxBarLeft .jxTabClose span.jxTabContent,
@@ -2986,7 +2981,7 @@
/**
* @project Jx
- * @revision $Id: tree.css 586 2009-11-05 20:34:17Z pagameba $
+ * @revision $Id: tree.css 602 2009-11-10 19:41:36Z pagameba $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
Modified: sandbox/jxlib-3.0/templates/mapserver/standard/themes/delicious/jxtheme.css
===================================================================
--- sandbox/jxlib-3.0/templates/mapserver/standard/themes/delicious/jxtheme.css 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/templates/mapserver/standard/themes/delicious/jxtheme.css 2009-11-11 15:31:46 UTC (rev 1970)
@@ -21,4 +21,4 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
- */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;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}.jxButtonContainer{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:2px;border:none;}.jxButton{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:0 0 0 4px;border:none;background-image:url(images/button.png);background-position:left -24px;background-repeat:no-repeat;text-decoration:none;outline:none;}a.jxButton{cursor:pointer;user-select:none;-moz-user-select:none;-khtml-user-select:none;}ul.jxToolbar .jxButton{background-position:left top;}span.jxButtonContent{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:4px 4px 4px 0;border:none;background-image:url(images/button.png);background-position:right -24px;background-repeat:no-repeat;}ul.jxToolbar span.jxButtonContent{background-position:right top;}ul.jxToolbar .jxButtonActive,.jxButtonActive{background-position:left -72px;}ul.jxToolbar .jxButtonActive span.jxButtonContent,.jxButtonActive span.jxButtonContent{background-position:right -72px;}ul.jxToolbar .jxButton:focus,.jxButton:focus{background-position:left -96px;}ul.jxToolbar .jxButton:focus span.jxButtonContent,.jxButton:focus span.jxButtonContent{background-position:right -96px;}ul.jxToolbar .jxButtonActive:focus,.jxButtonActive:focus{background-position:left -144px;}ul.jxToolbar .jxButtonActive:focus span.jxButtonContent,.jxButtonActive:focus span.jxButtonContent{background-position:right -144px;}ul.jxToolbar .jxButton:hover,ul.jxToolbar .jxButtonActive:hover,.jxButton:hover,.jxButtonActive:hover{background-position:left -48px;}ul.jxToolbar .jxButton:hover span.jxButtonContent,ul.jxToolbar .jxButtonActive:hover span.jxButtonContent,.jxButton:hover span.jxButtonContent,.jxButtonActive:hover span.jxButtonContent{background-position:right -48px;}ul.jxToolbar .jxButtonPressed,ul.jxToolbar .jxButtonPressed:focus,.jxButtonPressed,.jxButtonPressed:focus{background-position:left -120px;}ul.jxToolbar .jxButtonPressed span.jxButtonContent,ul.jxToolbar .jxButtonPressed:focus span.jxButtonContent,.jxButtonPressed span.jxButtonContent,.jxButtonPressed:focus span.jxButtonContent{background-position:right -120px;}.jxDisabled .jxButton,.jxDisabled span.jxButtonContent span{cursor:default;}ul.jxToolbar .jxDisabled .jxButton:focus,ul.jxToolbar .jxDisabled .jxButton:active,ul.jxToolbar .jxDisabled .jxButton:hover,ul.jxToolbar .jxDisabled .jxButtonPressed{background-position:left top;}.jxDisabled .jxButton:focus,.jxDisabled .jxButton:active,.jxDisabled .jxButton:hover,.jxDisabled .jxButtonPressed{background-position:left -24px;}ul.jxToolbar .jxDisabled .jxButton:focus span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButton:active span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButton:hover span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonPressed span.jxButtonContent{background-position:right top;}.jxDisabled .jxButton:focus span.jxButtonContent,.jxDisabled .jxButton:active span.jxButtonContent,.jxDisabled .jxButton:hover span.jxButtonContent,.jxDisabled .jxButtonPressed span.jxButtonContent{background-position:right -24px;}ul.jxToolbar .jxDisabled .jxButtonActive:focus,ul.jxToolbar .jxDisabled .jxButtonActive:active,ul.jxToolbar .jxDisabled .jxButtonActive:hover,.jxDisabled .jxButtonActive:focus,.jxDisabled .jxButtonActive:active,.jxDisabled .jxButtonActive:hover{background-position:left -72px;}ul.jxToolbar .jxDisabled .jxButtonActive:focus span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonActive:active span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonActive:hover span.jxButtonContent,.jxDisabled .jxButtonActive:focus span.jxButtonContent,.jxDisabled .jxButtonActive:active span.jxButtonContent,.jxDisabled .jxButtonActive:hover span.jxButtonContent{background-position:right -72px;}img.jxButtonIcon{display:-moz-inline-box;display:inline-block;position:relative;vertical-align:middle;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;}span.jxButtonContent span{display:-moz-inline-box;display:inline-block;position:relative;vertical-align:middle;cursor:pointer;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;height:16px;white-space:nowrap;}span.jxButtonContent span.jxButtonLabel{margin:0;padding:0 4px 0 4px;color:#000;font-size:11px;}.jxButtonMenu span.jxButtonContent,.jxButtonMulti span.jxButtonContent,.jxButtonFlyout span.jxButtonContent,.jxButtonCombo span.jxButtonContent,.jxButtonEditCombo span.jxButtonContent{padding-right:0;}.jxButtonMenu span.jxButtonContent span,.jxButtonFlyout span.jxButtonContent span,.jxButtonMulti span.jxButtonContent span,.jxButtonCombo span.jxButtonContent span,.jxButtonEditCombo span.jxButtonContent span{padding-right:16px;background-image:url(images/emblems.png);background-position:right -16px;background-repeat:no-repeat;}a.jxButtonDisclose{position:absolute;display:-moz-inline-box;display:inline-block;padding:4px 0;font-size:0;line-height:0;right:2px;top:2px;background-image:url(images/button_multi_disclose.png);background-position:right 0;background-repeat:no-repeat;outline:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxButtonDisclose img{width:16px;height:16px;margin:0;padding:0;border:0;background-image:url(images/emblems.png);background-position:right -16px;background-repeat:no-repeat;}a.jxButtonDisclose:focus,a.jxButtonDisclose:active{background-position:right -96px;}a.jxButtonDisclose:hover{background-position:right -48px;}a.jxButtonDisclosePressed{background-position:right -120px;}.jxDisabled a.jxButtonDisclose,.jxDisabled a.jxButtonDisclose:focus,.jxDisabled a.jxButtonDisclose:active,.jxDisabled a.jxButtonDisclose:hover,.jxDisabled a.jxButtonDisclosePressed{cursor:default;background-position:right 0;}ul.jxToolbar .jxButtonHover{background-position:left -24px!important;}ul.jxToolbar .jxButtonHover span.jxButtonContent{background-position:right -24px!important;}.jxFlyout .jxChrome{background-image:url(images/flyout_chrome.png);padding:5px 5px 7px 6px;}.jxFlyout{position:absolute;display:block;z-index:100;margin:0;padding:0;}.jxFlyoutContent{position:relative;display:block;overflow:auto;margin:6px 6px 8px 7px;background-color:#fff;border:1px solid #999;}.jxButtonMulti,.jxButtonMulti span.jxButtonContent{background-image:url(images/button_multi.png);}.jxButtonEditCombo,.jxButtonEditCombo span.jxButtonContent{background-image:url(images/button_combo.png);}.jxButtonMulti span.jxButtonContent span{padding-right:21px;}.jxButtonEditCombo span.jxButtonContent span{font-size:0;}.jxButtonComboDefault span.jxButtonContent span,.jxButtonComboDefault input{font-style:italic;color:#999;}.jxButtonEditCombo input{float:left;line-height:16px;height:16px;padding:0 4px;margin:0;border:none;font-size:11px;font-family:Arial,Helvetica,sans-serif;background-color:transparent;}.jxChrome{position:absolute;display:block;font-size:0;line-height:0;z-index:-1;width:100%;height:100%;top:0;left:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxChromeDrag{opacity:.5;-ms-filter:"Alpha(opacity=50)";}.jxChromeTL{position:absolute;overflow:hidden;left:0;top:0;width:50%;height:50%;}.jxChromeTR{position:absolute;overflow:hidden;left:50%;top:0;width:50%;height:50%;}.jxChromeBL{position:absolute;overflow:hidden;left:0;top:50%;width:50%;height:50%;}.jxChromeBR{position:absolute;overflow:hidden;left:50%;top:50%;width:50%;height:50%;}.jxChromeTL img{position:absolute;top:0;left:0;width:1000px;height:600px;}.jxChromeTR img{position:absolute;top:0;right:0;width:1000px;height:600px;}.jxChromeBL img{position:absolute;bottom:0;left:0;width:1000px;height:600px;}.jxChromeBR img{position:absolute;bottom:0;right:0;width:1000px;height:600px;}.jxColorBar{position:relative;overflow:hidden;}table.jxColorGrid{position:relative;border-collapse:collapse;empty-cells:show;clear:both;padding:0;margin:0;}.jxColorGrid tr{padding:0;margin:0;}.jxColorGrid td{border:1px solid #000;padding:0;margin:0;}.jxColorGrid td.emptyCell{border:0 solid #000;}.jxColorGrid td.emptyCell span{display:block;width:7px;height:7px;line-height:0;font-size:0;border:0 solid #000;padding:1px;margin:0;}.jxColorGrid a.colorSwatch{display:block;width:7px;height:7px;line-height:0;font-size:0;border:0 solid #000;margin:0;padding:1px;}.jxColorGrid a.borderWhite:hover{border:1px solid #fff;padding:0;}.jxColorGrid a.borderBlack:hover{border:1px solid #000;padding:0;}input.jxHexInput{width:55px;vertical-align:middle;}input.jxAlphaInput{width:30px;vertical-align:middle;}div.jxColorPreview{float:left;position:relative;width:20px;height:20px;border:1px solid #000;margin:2px;vertical-align:middle;background-image:url('images/grid.png');overflow:hidden;}.jxButtonFlyout span.jxButtonContent span.jxButtonSwatch{display:block;float:left;width:14px;height:14px;border:1px solid #000;background-image:url('images/grid.png');background-position:0 0;background-repeat:repeat;padding-right:0!important;}.jxButtonFlyout span.jxButtonContent span.jxButtonSwatch span{display:block;width:14px;height:14px;position:absolute;padding-right:0;background:none;}div.jxColorPreview img{position:absolute;z-index:0;}div.jxColorPreview div{width:20px;height:10px;position:absolute;display:block;left:0;z-index:1;font-size:10px;line-height:0;}div.jxColorPreview div.jxColorSelected{top:0;}div.jxColorPreview div.jxColorHover{bottom:0;}label.jxColorLabel,label.jxAlphaLabel{width:auto;font-family:Arial,sans-serif;font-size:11px;line-height:24px;padding:2px;vertical-align:middle;}a.jxColorClose{position:absolute;top:0;right:0;width:16px;height:16px;}a.jxColorClose img{width:16px;height:16px;}.jxClearer{display:block;position:relative;float:none;clear:both;font-size:0;line-height:0;width:0;height:0;margin:0;padding:0;}.jxDisabled{opacity:.4;-ms-filter:"Alpha(opacity=40)";}.jxDisabled *{-ms-filter:"Alpha(opacity=40)";}iframe.jxIframeShim{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;-ms-filter:"Alpha(opacity=0)";z-index:-1;}@CHARSET "ISO-8859-1";.jxConfirmQuestion{text-align:center;padding:10px;margin-top:10px;}.jxDialog .jxChrome{background-image:url(images/dialog_chrome.png);}.jxDialog{display:block;z-index:1000;overflow:hidden;}.jxDialogContentContainer{z-index:1;margin:0 11px 13px 12px;border:1px solid #b7b7b7;background-color:#f0f0f0;}.jxDialogModal{position:absolute;display:block;top:0;left:0;width:100%;height:100%;background-color:#000;opacity:.2;-ms-filter:"Alpha(opacity=20)";}.jxDialogContent{display:block;position:relative;overflow:auto;padding:0;z-index:1;}.jxDialogTitle{display:block;position:relative;background-image:url(images/a_pixel.png);text-align:center;height:24px;line-height:24px;z-index:1;margin:6px 6px 0 7px;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxDialogMin .jxDialogTitle{margin-bottom:8px;}.jxDialogMoveable,.jxDialogMoveable .jxDialogLabel{cursor:move;}.jxDialogIcon{position:absolute;left:2px;top:3px;width:16px;height:16px;border:none;padding:0;margin:0;}.jxDialogLabel{font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;line-height:21px;color:#000;white-space:nowrap;cursor:default;}.jxDialogResize{position:absolute;bottom:7px;right:6px;width:16px;height:16px;z-index:2;border:0;cursor:se-resize;background-image:url(images/dialog_resize.png);}.jxDialogControls{position:absolute;top:3px;right:2px;height:16px;width:80px;}.jxDialogControls img{background-image:url('images/panel_controls.png');background-repeat:no-repeat;border:0;margin:0;width:16px;height:16px;}.jxDialogClose img{background-position:0 -32px;}.jxDialogMenu img{background-position:0 -48px;}.jxDialogHelp img{background-position:0 -64px;}.jxDialogCollapse img{background-position:0 -16px;}.jxDialogMin .jxDialogCollapse img{background-position:0 0;}.jxDialogMax .jxDialogCollapse img{background-position:0 -16px;}.jxDialogLoading img{border:0;margin:0;width:16px;height:16px;visibility:hidden;position:absolute;top:1px;left:2px;}.jxDialogControls .jxButtonContainer,.jxDialogControls span.jxButtonContent,.jxDialogControls .jxButton:hover span.jxButtonContent,.jxDialogControls .jxButton:active span.jxButtonContent,.jxDialogControls .jxButtonActive span.jxButtonContent,.jxDialogControls .jxButtonActive:hover span.jxButtonContent,.jxDialogControls .jxButtonActive:active span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton:hover span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton:active span.jxButtonContent,.jxDialogControls .jxButton,.jxDialogControls .jxButton:hover,.jxDialogControls .jxButton:active,.jxDialogControls .jxButtonActive,.jxDialogControls .jxButtonActive:hover,.jxDialogControls .jxButtonActive:active,.jxDialogControls .jxDisabled .jxButton,.jxDialogControls .jxDisabled .jxButton:hover,.jxDialogControls .jxDisabled .jxButton:active{padding:0;margin:0;border:none;background-color:transparent;background-image:none;}.jxDialogControls .jxButtonMenu span.jxButtonContent,.jxDialogControls .jxButtonFlyout span.jxButtonContent{background-image:none;}.jxDialogControls .jxButtonMenu span.jxButtonContent span,.jxDialogControls .jxButtonFlyout span.jxButtonContent span{padding-right:0;}.jxDialogControls .jxBarContainer{position:absolute;right:0;background-image:none;background-color:transparent;margin:0;padding:0;border:none;height:16px;}.jxDialogControls .jxBarScroller{left:auto;right:0;}.jxDialogControls ul.jxToolbar{float:right;}.jxDialogControls ul.jxToolbar,.jxDialogControls li.jxToolItem{background-image:none;background-color:transparent;margin:0;padding:0;border:none;}div.jxFileInputs{position:relative;}div.jxFileFake{position:absolute;top:0;left:0;z-index:1;}div.jxFileFake span{float:left;display:block;}div.jxFileFake .jxInputContainer{width:150px;}div.jxFileFake .jxInputText{width:135px;}div.jxFileFake .jxButtonContainer{margin-top:6px;float:left;}.jxInputFile{position:relative;text-align:right;-moz-opacity:0;filter:alpha(opacity:0);opacity:0;z-index:2;margin-top:3px;height:35px;width:100%;}.jxForm{display:block;position:relative;overflow:hidden;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxFieldset{display:block;position:relative;overflow:hidden;border:1px solid #ccc;margin:10px;padding:5px;}.jxFieldsetLegend,.jxFieldset legend{position:relative;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:26px;color:#000;}.jxInputContainer{display:block;position:relative;padding:0;margin:2px;border:none;}.jxInputLabel,.jxInputTag{display:-moz-inline-box;display:inline-block;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:26px;color:#000;}.jxInputLabel{vertical-align:top;}.jxInputTag{vertical-align:bottom;}.jxInputText,.jxInputPassword,.jxInputTextarea{margin:0 4px;padding:4px;border:1px solid #bbb;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputSelect{margin:0 4px;padding:3px 4px 3px 1px;border:1px solid #bbb;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputText:focus,.jxInputPassword:focus,.jxInputTextarea:focus,.jxInputSelect:focus{border:1px solid #000;}.jxInputRadio,.jxInputCheck{margin:5px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputContainer .jxButtonContainer{padding:0;margin:0 4px;}.jxInputGroup{border:none;padding:0;margin:2px;}.jxInputGroup legend{font-size:0;line-height:0;padding:0;margin:0;border:none;}.jxInputGroup .jxFieldsetLegend{font-size:12px;}.jxInputGroup .jxInputLabel{width:auto;}.jxFieldInvalid .jxInputText,.jxFieldInvalid .jxInputPassword,.jxFieldInvalid .jxInputTextarea,.jxFieldInvalid .jxInputSelect{background-color:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}.jxFieldValidated .jxInputText,.jxFieldValidated .jxInputPassword,.jxFieldValidated .jxInputTextarea,.jxFieldValidated .jxInputSelect{background-color:#E6EFC2;color:#264409;border-color:#C6D880;}.jxFieldInvalid .jxInputText:focus,.jxFieldInvalid .jxInputPassword:focus,.jxFieldInvalid .jxInputTextarea:focus,.jxFieldInvalid .jxInputSelect:focus{border-color:#8a1f11;}.jxFieldValidated .jxInputText:focus,.jxFieldValidated .jxInputPassword:focus,.jxFieldValidated .jxInputTextarea:focus,.jxFieldValidated .jxInputSelect:focus{border-color:#264409;}.jxFieldInvalid .jxInputLabel,.jxFieldInvalid .jxInputTag{color:#8a1f11;}.jxFieldValidated .jxInputLabel,.jxFieldValidated .jxInputTag{color:#264409;}.jxFormInline .jxInputContainer,form .jxFormInline .jxInputContainer,form .jxFieldset span.jxFormInline,form.jxForm span.jxFormInline{display:inline;}.jxFormInline .jxInputLabel,form .jxFormInline .jxInputLabel,form span.jxFormInline .jxInputLabel{display:inline;width:auto;}.jxFormInline .jxInputTag,form .jxFormInline .jxInputTag,form span.jxFormInline .jxInputTag{display:inline;}.jxFormInline .jxInputGroup,form .jxFormInline .jxInputGroup{padding-left:0;}.jxFormInline .jxInputGroup .jxFieldsetLegend,form .jxFormInline .jxInputGroup .jxFieldsetLegend{position:relative;left:auto;}.jxFormInline .jxInputGroup .jxInputLabel,form .jxFormInline .jxInputGroup .jxInputLabel{display:inline;width:auto;}.jxFormBlock .jxInputContainer,form .jxFormBlock .jxInputContainer,form .jxFieldset span.jxFormBlock,form.jxform span.jxFormBlock{display:block;}.jxFormBlock .jxInputLabel,form .jxFormBlock .jxInputLabel,form span.jxFormBlock .jxInputLabel{display:block;width:auto;margin-left:4px;}.jxFormBlock .jxInputContainerCheck .jxInputLabel,.jxFormBlock .jxInputContainerRadio .jxInputLabel,form .jxFormBlock .jxInputContainerCheck .jxInputLabel,form .jxFormBlock .jxInputContainerRadio .jxInputLabel,form span.jxFormBlock .jxInputContainerCheck .jxInputLabel,form span.jxFormBlock .jxInputContainerRadio .jxInputLabel{display:-moz-inline-box;display:inline-block;}.jxFormBlock .jxInputGroup,form .jxFormBlock .jxInputGroup{padding-left:0;}.jxFormBlock .jxInputGroup .jxFieldsetLegend,form .jxFormBlock .jxInputGroup .jxFieldsetLegend{position:relative;left:auto;}.jxFormBlock .jxInputGroup .jxInputLabel,form .jxFormBlock .jxInputGroup .jxInputLabel{display:-moz-inline-box;display:inline-block;width:auto;}.jxFormInlineblock .jxInputContainer,form .jxFormInlineblock .jxInputContainer,form .jxFieldset span.jxFormInlineblock,form.jxForm span.jxFormInlineblock{display:block;}.jxFormInlineblock .jxInputLabel,form .jxFormInlineblock .jxInputLabel,form span.jxFormInlineblock .jxInputLabel{display:-moz-inline-box;display:inline-block;width:200px;}.jxFormInlineblock .jxInputGroup,form .jxFormInlineblock .jxInputGroup{padding-left:200px;}.jxFormInlineblock .jxInputGroup .jxFieldsetLegend,form .jxFormInlineblock .jxInputGroup .jxFieldsetLegend{position:absolute;left:-200px;width:200px;}.jxFormInlineblock .jxInputGroup .jxInputLabel,form .jxFormInlineblock .jxInputGroup .jxInputLabel{display:-moz-inline-box;display:inline-block;width:auto;}.jxGridContainer{position:absolute;top:0;left:0;border-left:0 solid #d8d8d8;border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;overflow:hidden;}.jxGridTable{position:relative;table-layout:fixed;border-collapse:collapse;border-style:none;cursor:default;font-family:Arial,Verdana,sans-serif;font-size:11px;font-weight:normal;}.jxGridHeader{width:100%;}.jxGridTableBody{position:relative;table-layout:fixed;border-collapse:collapse;border-style:none;cursor:default;font-family:Arial,Verdana,sans-serif;font-size:11px;font-weight:normal;}.jxGridColHeadHide{height:0;line-height:0;font-size:0;background-color:#fff;white-space:normal;}.jxGridColHeadHide p,.jxGridRowHeadHide p{font-size:0;line-height:0;height:0;margin:0;padding:0;}.jxGridRowHeadHide{width:0;white-space:normal;}.jxGridCell{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;overflow:hidden;}.jxGridCellContent{position:relative;display:-moz-inline-box;display:inline-block;overflow:hidden;padding-left:3px;padding-right:3px;overflow:hidden;white-space:nowrap;cursor:cell;text-overflow:ellipsis;}.jxGridColHead{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;background-color:#f2f2f2;background-image:url('images/table_col.png');background-position:0 0;background-repeat:repeat-x;text-align:center;font-weight:bold;color:#333;cursor:default;padding-left:3px;padding-right:3px;white-space:nowrap;}.jxGridRowHead{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;background-color:#f2f2f2;background-image:url('images/table_row.png');background-position:0 0;background-repeat:repeat-y;text-align:center;font-weight:bold;color:#333;cursor:default;overflow:hidden;white-space:nowrap;}.jxGridRowAll{background-color:#fff;}.jxGridColumnHeaderSelected{background-color:#e1e1e1;background-position:0 -200px;}.jxGridRowHeaderSelected{background-color:#e1e1e1;background-position:-400px 0;}.jxGridColumnSelected{background-color:#f7f7f7;}.jxGridRowSelected td{background-color:#f7f7f7;}td.jxGridCellSelected{background-color:#ebebeb;}.jxGridColumnHeaderPrelight{background-color:#cee5ff;background-position:0 -300px;}.jxGridRowHeaderPrelight{background-color:#cee5ff;background-position:-600px 0;}.jxGridColumnPrelight{background-color:#e5f1ff;}.jxGridRowPrelight td{background-color:#e5f1ff;}td.jxGridCellPrelight{background-color:#cce3ff;}.jxColSortable{padding-right:20px;}.jxGridCell.jxColSortable{padding-right:0;}.jxColSortable span{background-image:url('images/emblems.png');padding-right:20px;background-repeat:no-repeat;background-position:right top;}.jxGridColumnSortedAsc span{background-position:right -160px;}.jxGridColumnSortedDesc span{background-position:right -16px;}.jxGridColumnResize,.jxGridRowResize{display:block;position:absolute;background-image:url(images/a_pixel.png);z-index:1;}.jxGridColumnResize{right:0;top:0;height:100%;width:4px;cursor:col-resize;}.jxGridRowResize{left:0;bottom:0;height:4px;width:100%;cursor:row-resize;}.jxListView .jxListItemContainer{position:relative;display:block;outline:none;overflow:hidden;border:none;margin:0 1px;padding:0;}.jxListItem{position:relative;display:block;cursor:pointer;outline:none;overflow:hidden;border:none;margin:0 1px;padding:0;z-index:0;font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000;text-decoration:none;line-height:20px;height:20px;}.jxListView .jxHover{margin:0;border-left:1px solid #CDDFFD;border-right:1px solid #CDDFFD;background-image:url(images/listitem.png);background-repeat:repeat-x;background-color:#CDE5FF;background-position:left -24px;}.jxListItem:focus{margin:0;border-left:1px dotted #75ADFF;border-right:1px dotted #75ADFF;background-image:url(images/listitem.png);background-repeat:repeat-x;background-position:left -72px;}.jxListView .jxPressed,.jxListView .jxSelected{margin:0;border-left:1px solid #8AABFB;border-right:1px solid #8AABFB;background-color:#CDE5FF;background-image:url(images/listitem.png);background-repeat:repeat-x;background-position:left -48px;}.jxMenuContainer .jxChrome{background-image:url(images/flyout_chrome.png);padding:5px 5px 7px 6px;}.jxButtonMenu span.jxMenuItemSpan{padding-right:16px;}.jxMenuContainer{position:absolute;top:0;left:-10000px;display:none;z-index:2000;padding:0;}ul.jxMenu{display:block;position:relative;list-style-type:none;padding:1px;margin:6px 6px 8px 7px;background-color:#fff;border:1px solid #999;}li.jxMenuItemContainer{display:block;position:relative;font-size:0;line-height:0;margin:0;padding:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxMenuItem{display:block;position:relative;overflow:hidden;text-decoration:none;cursor:pointer;outline:none;border:1px solid #fff;background-image:url(images/menuitem.png);background-repeat:no-repeat;background-position:left top;font-family:Arial,Helvetica,sans-serif;font-size:11px;text-decoration:none;margin:0;padding:0;color:#000;}a.jxMenuItemActive{background-position:left -98px;}a.jxMenuItem:focus{background-position:left -74px;}a.jxMenuItem:focus span.jxMenuItemContent{border-right:1px dotted #75ADFF;}a.jxMenuItemActive:focus{background-position:left -170px;}a.jxMenuItem:hover{background-color:#CDE5FF;background-position:left -26px;}a.jxMenuItem:hover span.jxMenuItemContent{border-right:1px solid #C5E0FF;}a.jxMenuItemActive:hover{background-position:left -122px;}a.jxMenuItemPressed,a.jxMenuItemPressed:hover{background-color:#CDE5FF;background-position:left -50px;}.jxDisabled a.jxMenuItem,.jxDisabled span.jxMenuItemContent span{cursor:default;}.jxDisabled a.jxMenuItem:focus,.jxDisabled a.jxMenuItemPressed,.jxDisabled a.jxMenuItemPressed:hover,.jxDisabled a.jxMenuItem:hover{background-color:#fff;background-position:left top;border-right:1px solid #fff;}.jxDisabled a.jxMenuItem:hover span.jxMenuItemContent{border-right:1px solid #fff;}span.jxMenuItemContent{display:block;position:relative;font-family:Arial,Helvetica,sans-serif;font-size:0;line-height:0;white-space:nowrap;padding:0 20px 0 0;margin:0;border-right:1px solid #fff;}.jxButtonSubMenu span.jxMenuItemContent,.jxButtonSubMenu:hover span.jxMenuItemContent{background-image:url(images/emblems.png);background-position:right -30px;background-repeat:no-repeat;}img.jxMenuItemIcon{position:absolute;top:2px;left:2px;width:16px;height:16px;background-position:left center;background-repeat:no-repeat;}span.jxMenuItemContent span{display:block;position:relative;cursor:pointer;margin:0;padding:2px 0 2px 22px;font-size:16px;line-height:16px;color:#000;}span.jxMenuItemContent span.jxMenuItemLabel{color:#000;font-size:11px;}.jxMenuItemToggle img.jxMenuItemIcon,.jxMenuItemSet img.jxMenuItemIcon{background-image:url(images/emblems.png);background-position:2px 0;background-repeat:no-repeat;}.jxMenuItemToggle a.jxMenuItemActive img.jxMenuItemIcon{background-position:2px -48px;}.jxMenuItemSet a.jxMenuItemActive img.jxMenuItemIcon{background-position:2px -64px;}ul.jxMenu span.jxMenuSeparator{display:block;font-size:10px;line-height:10px;background-image:url(images/toolbar_separator_v.png);background-repeat:repeat-x;background-position:left center;}@CHARSET "ISO-8859-1";.jxMessage{text-align:center;padding:10px;margin-top:10px;}.jxPanel{display:block;position:relative;}.jxPanelContentContainer{overflow:hidden;background-color:#f0f0f0;}.jxPanelContent{position:relative;display:block;overflow:auto;background-color:#fff;margin:0;padding:0;}.jxPanelTitle{display:block;position:relative;background-image:url(images/panelbar.png);background-repeat:repeat-x;background-position:left top;height:22px;margin:0;padding:0;text-align:center;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxPanelBar{position:absolute;line-height:1px;width:100%;height:5px;cursor:row-resize;background-color:#f0f0f0;z-index:2;}.jxPanelIcon{position:absolute;left:2px;top:3px;width:16px;height:16px;border:none;padding:0;margin:0;}.jxPanelLabel{padding-left:25px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;line-height:21px;color:#000;white-space:nowrap;}.jxPanelControls{position:absolute;top:3px;right:2px;height:16px;width:80px;overflow:hidden;}.jxPanelControls img{background-image:url('images/panel_controls.png');background-repeat:no-repeat;border:0;margin:0;width:16px;height:16px;}.jxPanelClose img{background-position:0 -32px;}.jxPanelMenu img{background-position:0 -48px;}.jxPanelHelp img{background-position:0 -64px;}.jxPanelCollapse img{background-position:0 -16px;}.jxPanelMin .jxPanelCollapse img{background-position:0 0;}.jxPanelMax .jxPanelCollapse img{background-position:0 -16px;}.jxPanelMaximize img{background-position:0 0;}.jxPanelLoading img{border:0;margin:0;width:16px;height:16px;visibility:hidden;position:absolute;top:1px;left:2px;}.jxPanelControls .jxButtonContainer,.jxPanelControls span.jxButtonContent,.jxPanelControls .jxButton:hover span.jxButtonContent,.jxPanelControls .jxButton:active span.jxButtonContent,.jxPanelControls .jxButtonActive span.jxButtonContent,.jxPanelControls .jxButtonActive:hover span.jxButtonContent,.jxPanelControls .jxButtonActive:active span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton:hover span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton:active span.jxButtonContent,.jxPanelControls .jxButton,.jxPanelControls .jxButton:hover,.jxPanelControls .jxButton:active,.jxPanelControls .jxButtonActive,.jxPanelControls .jxButtonActive:hover,.jxPanelControls .jxButtonActive:active,.jxPanelControls .jxDisabled .jxButton,.jxPanelControls .jxDisabled .jxButton:hover,.jxPanelControls .jxDisabled .jxButton:active{padding:0;margin:0;border:none;background-color:transparent;background-image:none;}.jxPanelControls .jxButtonMenu span.jxButtonContent,.jxPanelControls .jxButtonFlyout span.jxButtonContent{background-image:none;}.jxPanelControls .jxButtonMenu span.jxButtonContent span,.jxPanelControls .jxButtonFlyout span.jxButtonContent span{padding-right:0;}.jxPanelControls div.jxBarTop{position:absolute;right:0;background-image:none;background-color:transparent;margin:0;padding:0;border:none;height:16px;}.jxPanelControls .jxBarScroller{left:auto;right:0;}.jxPanelControls ul.jxToolbar{float:right;}.jxPanelControls ul.jxToolbar,.jxPanelControls li.jxToolItem{background-image:none;background-color:transparent;margin:0;padding:0;border:none;}@CHARSET "ISO-8859-1";.jxProgressBar-container{width:100%;display:block;clear:both;}.jxProgressBar-message{color:black;}.jxProgressBar-container .jxProgressBar{width:100%;clear:both;border-top:none;}.jxProgressBar-container .jxProgressBar .jxProgressBar-outline{border:1px solid #360;position:absolute;top:0;left:0;z-index:10;}.jxProgressBar-container .jxProgressBar .jxProgressBar-fill{background-color:#9c6;position:absolute;top:1px;left:1px;z-index:20;}.jxProgressBar-container .jxProgressBar .jxProgressBar-text{color:#360;margin:0;padding:2px;position:absolute;top:1px;left:1px;width:auto;z-index:30;border:none;}@CHARSET "ISO-8859-1";.jxSliderContainer{width:100%;height:10px;border:1px solid black;}.jxSliderKnob{width:10px;height:10px;background-color:black;cursor:pointer;}.jxSplitterMask{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;background-image:url(images/a_pixel.png);z-index:1;}.jxSplitBarHorizontal{display:block;position:absolute;font-size:0;line-height:0;margin:0;padding:0;border:none;width:5px;height:100%;cursor:col-resize;background-color:#f0f0f0;z-index:2;}.jxSplitBarVertical{display:block;position:absolute;font-size:0;line-height:0;margin:0;padding:0;border:none;width:100%;height:5px;cursor:row-resize;background-color:#f0f0f0;z-index:2;}.jxSplitContainer{display:block;position:relative;margin:0;padding:0;border:none;overflow:hidden;}.jxSplitArea{display:block;position:absolute;margin:0;padding:0;border:none;z-index:0;}.jxSplitBarDrag{background-color:#eee;}.jxSnapHorizontalBefore{width:5px;height:5px;position:absolute;top:0;left:0;background-color:#aaa;}.jxSnapHorizontalAfter{width:5px;height:5px;position:absolute;top:0;left:0;background-color:#aaa;}.jxTabSetContainer{position:relative;display:block;overflow:hidden;width:200px;height:200px;margin:0;padding:0;background-color:#fff;}.jxTabSetContainer .jxToolbarContainer{z-index:auto;}.tabContent{display:none;position:relative;width:100%;height:100%;overflow:auto;}.tabContentActive{display:block;}div.jxTabContainer{display:block;position:relative;margin:0;padding:2px;border:none;}a.jxTab{display:block;position:relative;cursor:pointer;user-select:none;-moz-user-select:none;-khtml-user-select:none;margin:0;padding:0;border:none;background-repeat:no-repeat;text-decoration:none;outline:none;}span.jxTabContent{display:block;font-size:0;line-height:0;margin:0;padding:0;border:none;background-repeat:no-repeat;}img.jxTabIcon{position:relative;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;}span.jxTabLabel{display:block;position:relative;cursor:pointer;margin:0;padding:0;color:#000;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;}a.jxTabClose{display:block;position:absolute;cursor:pointer;outline:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxTabClose img{width:16px;height:16px;background-image:url(images/tab_close.png);}.jxDisabled a.jxTab,.jxDisabled span.jxTabContent span,.jxDisabled a.jxTabClose{cursor:default;}.jxBarTop div.jxTabContainer,.jxBarBottom div.jxTabContainer{float:left;}.jxBarTop a.jxTab,.jxBarTop span.jxTabContent{background-image:url(images/tab_top.png);}.jxBarBottom a.jxTab,.jxBarBottom span.jxTabContent{background-image:url(images/tab_bottom.png);}.jxBarTop a.jxTabClose,.jxBarBottom a.jxTabClose{top:3px;right:3px;}.jxBarTop .jxTabClose span.jxTabContent,.jxBarBottom .jxTabClose span.jxTabContent{padding-right:16px;}.jxBarTop a.jxTab,.jxBarBottom a.jxTab{float:left;padding-left:4px;background-position:left -24px;}.jxBarTop span.jxTabContent,.jxBarBottom span.jxTabContent{float:left;padding:4px 4px 4px 0;background-position:right -24px;}.jxBarTop a.jxTabActive,.jxBarBottom a.jxTabActive{background-position:left -72px;}.jxBarTop a.jxTabActive span.jxTabContent,.jxBarBottom a.jxTabActive span.jxTabContent{background-position:right -72px;}.jxBarTop a.jxTab:focus,.jxBarBottom a.jxTab:focus{background-position:left -96px;}.jxBarTop a.jxTab:focus span.jxTabContent,.jxBarBottom a.jxTab:focus span.jxTabContent{background-position:right -96px;}.jxBarTop a.jxTabActive:focus,.jxBarBottom a.jxTabActive:focus{background-position:left -144px;}.jxBarTop a.jxTabActive:focus span.jxTabContent,.jxBarBottom a.jxTabActive:focus span.jxTabContent{background-position:right -144px;}.jxBarTop a.jxTab:hover,.jxBarTop a.jxTabActive:hover,.jxBarBottom a.jxTab:hover,.jxBarBottom a.jxTabActive:hover{background-position:left -48px;}.jxBarTop a.jxTab:hover span.jxTabContent,.jxBarTop a.jxTabActive:hover span.jxTabContent,.jxBarBottom a.jxTab:hover span.jxTabContent,.jxBarBottom a.jxTabActive:hover span.jxTabContent{background-position:right -48px;}.jxBarTop a.jxTabPressed,.jxBarTop a.jxTabPressed:focus,.jxBarBottom a.jxTabPressed,.jxBarBottom a.jxTabPressed:focus{background-position:left -120px;}.jxBarTop a.jxTabPressed span.jxTabContent,.jxBarTop a.jxTabPressed:focus span.jxTabContent,.jxBarBottom a.jxTabPressed span.jxTabContent,.jxBarBottom a.jxTabPressed:focus span.jxTabContent{background-position:right -120px;}.jxBarTop .jxDisabled a.jxTab:focus,.jxBarTop .jxDisabled a.jxTab:active,.jxBarTop .jxDisabled a.jxTab:hover,.jxBarTop .jxDisabled a.jxTabPressed,.jxBarBottom .jxDisabled a.jxTab:focus,.jxBarBottom .jxDisabled a.jxTab:active,.jxBarBottom .jxDisabled a.jxTab:hover,.jxBarBottom .jxDisabled a.jxTabPressed{background-position:left -24px;}.jxBarTop .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarTop .jxDisabled a.jxTab:active span.jxTabContent,.jxBarTop .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarTop .jxDisabled a.jxTabPressed span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:active span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabPressed span.jxTabContent{background-position:right -24px;}.jxBarTop .jxDisabled a.jxTabActive:focus,.jxBarTop .jxDisabled a.jxTabActive:active,.jxBarTop .jxDisabled a.jxTabActive:hover,.jxBarBottom .jxDisabled a.jxTabActive:focus,.jxBarBottom .jxDisabled a.jxTabActive:active,.jxBarBottom .jxDisabled a.jxTabActive:hover{background-position:left -72px;}.jxBarTop .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarTop .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarTop .jxDisabled a.jxTabActive:hover span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:hover span.jxTabContent{background-position:right -72px;}.jxBarTop img.jxTabIcon,.jxBarBottom img.jxTabIcon{float:left;}.jxBarTop span.jxTabLabel,.jxBarBottom span.jxTabLabel{float:left;height:16px;padding:0 4px 0 4px;}.jxBarLeft a.jxTab,.jxBarLeft span.jxTabContent{background-image:url(images/tab_left.png);}.jxBarRight a.jxTab,.jxBarRight span.jxTabContent{background-image:url(images/tab_right.png);}.jxBarLeft a.jxTabClose,.jxBarRight a.jxTabClose{top:3px;left:3px;}.jxBarLeft .jxTabClose span.jxTabContent,.jxBarRight .jxTabClose span.jxTabContent{padding-top:16px;}.jxBarLeft a.jxTab,.jxBarRight a.jxTab{padding-top:4px;background-position:-24px top;}.jxBarLeft span.jxTabContent,.jxBarRight span.jxTabContent{padding:0 4px 4px 4px;background-position:-24px bottom;}.jxBarLeft a.jxTabActive,.jxBarRight a.jxTabActive{background-position:-72px top;}.jxBarLeft a.jxTabActive span.jxTabContent,.jxBarRight a.jxTabActive span.jxTabContent{background-position:-72px bottom;}.jxBarLeft a.jxTab:focus,.jxBarRight a.jxTab:focus{background-position:-96px top;}.jxBarLeft a.jxTab:focus span.jxTabContent,.jxBarRight a.jxTab:focus span.jxTabContent{background-position:-96px bottom;}.jxBarLeft a.jxTabActive:focus,.jxBarRight a.jxTabActive:focus{background-position:-144px top;}.jxBarLeft a.jxTabActive:focus span.jxTabContent,.jxBarRight a.jxTabActive:focus span.jxTabContent{background-position:-144px bottom;}.jxBarLeft a.jxTab:hover,.jxBarLeft a.jxTabActive:hover,.jxBarRight a.jxTab:hover,.jxBarRight a.jxTabActive:hover{background-position:-48px top;}.jxBarLeft a.jxTab:hover span.jxTabContent,.jxBarLeft a.jxTabActive:hover span.jxTabContent,.jxBarRight a.jxTab:hover span.jxTabContent,.jxBarRight a.jxTabActive:hover span.jxTabContent{background-position:-48px bottom;}.jxBarLeft a.jxTabPressed,.jxBarLeft a.jxTabPressed:focus,.jxBarRight a.jxTabPressed,.jxBarRight a.jxTabPressed:focus{background-position:-120px top;}.jxBarLeft a.jxTabPressed span.jxTabContent,.jxBarLeft a.jxTabPressed:focus span.jxTabContent,.jxBarRight a.jxTabPressed span.jxTabContent,.jxBarRight a.jxTabPressed:focus span.jxTabContent{background-position:-120px bottom;}.jxBarLeft .jxDisabled a.jxTab:focus,.jxBarLeft .jxDisabled a.jxTab:active,.jxBarLeft .jxDisabled a.jxTab:hover,.jxBarLeft .jxDisabled a.jxTabPressed,.jxBarRight .jxDisabled a.jxTab:focus,.jxBarRight .jxDisabled a.jxTab:active,.jxBarRight .jxDisabled a.jxTab:hover,.jxBarRight .jxDisabled a.jxTabPressed{background-position:-24px top;}.jxBarLeft .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarLeft .jxDisabled a.jxTab:active span.jxTabContent,.jxBarLeft .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabPressed span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:active span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarRight .jxDisabled a.jxTabPressed span.jxTabContent{background-position:-24px bottom;}.jxBarLeft .jxDisabled a.jxTabActive:focus,.jxBarLeft .jxDisabled a.jxTabActive:active,.jxBarLeft .jxDisabled a.jxTabActive:hover,.jxBarRight .jxDisabled a.jxTabActive:focus,.jxBarRight .jxDisabled a.jxTabActive:active,.jxBarRight .jxDisabled a.jxTabActive:hover{background-position:-72px top;}.jxBarLeft .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabActive:hover span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:hover span.jxTabContent{background-position:-72px bottom;}.jxBarLeft span.jxTabLabel,.jxBarRight span.jxTabLabel{padding:4px 0 4px 0;}.jxBarContainer{display:block;position:relative;z-index:1;overflow:hidden;margin:0;padding:0;border:0;background-color:#f0f0f0;}.jxBarTop,.jxBarBottom{width:100%;height:28px;background-image:url(images/toolbar.png);background-repeat:repeat-x;background-position:0 0;overflow:hidden;}.jxTabBox .jxTabBarTop{background-image:url(images/tabbar.png);background-position:0 bottom;}.jxTabBox .jxTabBarBottom{background-image:url(images/tabbar_bottom.png);background-position:0 top;}.jxBarLeft,.jxBarRight{width:auto;height:100%;background-image:url(images/toolbar.png);background-repeat:repeat-x;background-position:0 0;float:left;overflow:hidden;}.jxTabBox .jxTabBarLeft{background-image:url(images/tabbar_left.png);background-repeat:repeat-y;background-position:right 0;}.jxTabBox .jxTabBarRight{background-image:url(images/tabbar_right.png);background-repeat:repeat-y;background-position:left 0;}.jxBarTop .jxBarScroller,.jxBarBottom .jxBarScroller{position:absolute;width:10000%;overflow:hidden;}.jxBarTop .jxBarScrollLeft,.jxBarBottom .jxBarScrollLeft{position:absolute;top:0;left:0;}.jxBarTop .jxBarScrollRight,.jxBarBottom .jxBarScrollRight{position:absolute;top:0;right:0;}.jxBarTop .jxBarScrollLeft img.jxButtonIcon,.jxBarBottom .jxBarScrollLeft img.jxButtonIcon{background-image:url(images/emblems.png);background-position:0 -80px;}.jxBarTop .jxBarScrollRight img.jxButtonIcon,.jxBarBottom .jxBarScrollRight img.jxButtonIcon{background-image:url(images/emblems.png);background-position:0 -96px;}ul.jxToolbar,ul.jxTabBar{display:block;position:relative;float:left;list-style-type:none;margin:0;padding:0;border:none;}li.jxToolItem{display:block;position:relative;float:left;font-size:0;line-height:0;padding:0;margin:0;border:none;}li.jxToolItem span.jxBarSeparator{display:block;position:relative;float:left;font-size:0;line-height:0;border:0;margin:0;padding:4px;background-repeat:no-repeat;background-position:center center;}.jxBarTop li.jxToolItem span.jxBarSeparator,.jxBarBottom li.jxToolItem span.jxBarSeparator{width:8px;height:20px;background-image:url(images/toolbar_separator_h.png);}.jxBarLeft li.jxToolItem span.jxBarSeparator,.jxBarRight li.jxToolItem span.jxBarSeparator{width:20px;height:8px;background-image:url(images/toolbar_separator_v.png);}.jxBarLeft ul.jxToolbar,.jxBarLeft ul.jxTabBar,.jxBarLeft li.jxToolItem,.jxBarRight ul.jxToolbar,.jxBarRight ul.jxTabBar,.jxBarRight li.jxToolItem{clear:both;}.jxTooltip{width:auto;height:auto;background-color:black;color:white;padding:5px;z-index:65536;}.jxTree,.jxTreeRoot{position:relative;display:block;list-style:none;margin:0;padding:0;}.jxTreeNest{list-style:none;margin:0;padding:0;background-repeat:repeat-y;background-position:left top;}li.jxTreeContainer{position:relative;display:block;margin:0;padding:0;background-repeat:no-repeat;background-position:left top;white-space:nowrap;font-size:0;line-height:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxTree li.jxTreeContainer{margin-left:16px;}a.jxTreeItem{position:relative;display:block;cursor:pointer;outline:none;overflow:hidden;background-image:url(images/tree_hover.png);background-repeat:repeat-x;background-position:left top;border:none;margin:0 1px 0 17px;padding:0 0 0 20px;z-index:0;font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000;text-decoration:none;line-height:20px;height:20px;}a.jxTreeItem:focus{border-left:1px dotted #75ADFF;border-right:1px dotted #75ADFF;margin:0 0 0 16px;background-position:left -72px;}a.jxTreeItem:hover,li.jxTreeContainer a.jxHover{border-left:1px solid #CDDFFD;border-right:1px solid #CDDFFD;margin:0 0 0 16px;background-color:#CDE5FF;background-position:left -24px;}li.jxTreeContainer a.jxSelected,li.jxTreeContainer a.jxSelected:hover,li.jxTreeContainer a.jxPressed,li.jxTreeContainer a.jxPressed:hover{border-left:1px solid #8AABFB;border-right:1px solid #8AABFB;margin:0 0 0 16px;background-color:#CDE5FF;background-position:left -48px;}li.jxDisabled a.jxTreeItem{cursor:default;}li.jxDisabled a.jxTreeItem:focus,li.jxDisabled a.jxTreeItem:hover{background-position:left top;background-color:transparent;border:none;margin:0 1px 0 17px;}.jxTreeNest{background-image:url(images/tree_vert_line.png);}img.jxTreeImage,img.jxTreeIcon{position:absolute;display:inline;left:0;top:0;width:16px;height:20px;z-index:1;background-image:url(images/tree.png);background-repeat:no-repeat;border:0;margin:0;}img.jxTreeIcon{height:16px;top:2px;left:1px;}.jxTreeBranchOpen .jxTreeIcon,.jxTreeBranchLastOpen .jxTreeIcon{background-position:left -40px;}.jxTreeBranchOpen .jxTreeImage{background-position:left -100px;}.jxTreeBranchLastOpen .jxTreeImage{background-position:left -160px;}.jxTreeBranchClosed .jxTreeIcon,.jxTreeBranchLastClosed .jxTreeIcon{background-position:left -20px;}.jxTreeBranchClosed .jxTreeImage{background-position:left -80px;}.jxTreeBranchLastClosed .jxTreeImage{background-position:left -140px;}.jxTreeLeaf .jxTreeIcon,.jxTreeLeafLast .jxTreeIcon{background-position:left 0;}.jxTreeLeaf .jxTreeImage{background-position:left -60px;}.jxTreeLeafLast .jxTreeImage{background-position:left -120px;}a.jxTreeItem,img.jxTreeImage,img.jxTreeIcon,span.jxTreeLabel,.jxTreeItemContainer input{vertical-align:middle;}.jxFileUploadPanel{padding:5px;}.jxFileUploadPanel .jxInputContainer{width:300px;}.jxUploadQueue{width:100%;margin-top:10px;}.jxUploadQueue div{position:relative;width:95%;clear:both;border-top:1px solid black;padding:2px;}.jxUploadQueue div span{display:block;}.jxUploadQueue div span.jxUploadFileName{float:left;font-size:16px;}.jxUploadQueue div span.jxUploadFileDelete,.jxUploadQueue div span.jxUploadFileProgress,.jxUploadQueue div span.jxUploadFileComplete,.jxUploadQueue div span.jxUploadFileError{float:right;width:16px;height:16px;background-repeat:no-repeat;background-position:top left;cursor:pointer;}.jxUploadQueue div span.jxUploadFileDelete{background-image:url('images/delete.gif');}.jxUploadQueue div span.jxUploadFileProgress{background-image:url('images/loading.gif');}.jxUploadQueue div span.jxUploadFileComplete{background-image:url('images/green_tick.png');}.jxUploadQueue div span.jxUploadFileError{background-image:url('images/error.png');}.jxUploadFileErrorTip{padding:4px 4px 4px 20px;border:2px solid #ddd;background:url("images/error.png") no-repeat left top;color:black;width:100px;}
\ No newline at end of file
+ */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;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}.jxButtonContainer{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:2px;border:none;}.jxButton{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:0 0 0 4px;border:none;background-image:url(images/button.png);background-position:left -24px;background-repeat:no-repeat;text-decoration:none;outline:none;}a.jxButton{cursor:pointer;user-select:none;-moz-user-select:none;-khtml-user-select:none;}ul.jxToolbar .jxButton{background-position:left top;}span.jxButtonContent{display:-moz-inline-box;display:inline-block;position:relative;font-size:0;line-height:0;margin:0;padding:4px 4px 4px 0;border:none;background-image:url(images/button.png);background-position:right -24px;background-repeat:no-repeat;}ul.jxToolbar span.jxButtonContent{background-position:right top;}ul.jxToolbar .jxButtonActive,.jxButtonActive{background-position:left -72px;}ul.jxToolbar .jxButtonActive span.jxButtonContent,.jxButtonActive span.jxButtonContent{background-position:right -72px;}ul.jxToolbar .jxButton:focus,.jxButton:focus{background-position:left -96px;}ul.jxToolbar .jxButton:focus span.jxButtonContent,.jxButton:focus span.jxButtonContent{background-position:right -96px;}ul.jxToolbar .jxButtonActive:focus,.jxButtonActive:focus{background-position:left -144px;}ul.jxToolbar .jxButtonActive:focus span.jxButtonContent,.jxButtonActive:focus span.jxButtonContent{background-position:right -144px;}ul.jxToolbar .jxButton:hover,ul.jxToolbar .jxButtonActive:hover,.jxButton:hover,.jxButtonActive:hover{background-position:left -48px;}ul.jxToolbar .jxButton:hover span.jxButtonContent,ul.jxToolbar .jxButtonActive:hover span.jxButtonContent,.jxButton:hover span.jxButtonContent,.jxButtonActive:hover span.jxButtonContent{background-position:right -48px;}ul.jxToolbar .jxButtonPressed,ul.jxToolbar .jxButtonPressed:focus,.jxButtonPressed,.jxButtonPressed:focus{background-position:left -120px;}ul.jxToolbar .jxButtonPressed span.jxButtonContent,ul.jxToolbar .jxButtonPressed:focus span.jxButtonContent,.jxButtonPressed span.jxButtonContent,.jxButtonPressed:focus span.jxButtonContent{background-position:right -120px;}.jxDisabled .jxButton,.jxDisabled span.jxButtonContent span{cursor:default;}ul.jxToolbar .jxDisabled .jxButton:focus,ul.jxToolbar .jxDisabled .jxButton:active,ul.jxToolbar .jxDisabled .jxButton:hover,ul.jxToolbar .jxDisabled .jxButtonPressed{background-position:left top;}.jxDisabled .jxButton:focus,.jxDisabled .jxButton:active,.jxDisabled .jxButton:hover,.jxDisabled .jxButtonPressed{background-position:left -24px;}ul.jxToolbar .jxDisabled .jxButton:focus span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButton:active span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButton:hover span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonPressed span.jxButtonContent{background-position:right top;}.jxDisabled .jxButton:focus span.jxButtonContent,.jxDisabled .jxButton:active span.jxButtonContent,.jxDisabled .jxButton:hover span.jxButtonContent,.jxDisabled .jxButtonPressed span.jxButtonContent{background-position:right -24px;}ul.jxToolbar .jxDisabled .jxButtonActive:focus,ul.jxToolbar .jxDisabled .jxButtonActive:active,ul.jxToolbar .jxDisabled .jxButtonActive:hover,.jxDisabled .jxButtonActive:focus,.jxDisabled .jxButtonActive:active,.jxDisabled .jxButtonActive:hover{background-position:left -72px;}ul.jxToolbar .jxDisabled .jxButtonActive:focus span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonActive:active span.jxButtonContent,ul.jxToolbar .jxDisabled .jxButtonActive:hover span.jxButtonContent,.jxDisabled .jxButtonActive:focus span.jxButtonContent,.jxDisabled .jxButtonActive:active span.jxButtonContent,.jxDisabled .jxButtonActive:hover span.jxButtonContent{background-position:right -72px;}img.jxButtonIcon{display:-moz-inline-box;display:inline-block;position:relative;vertical-align:middle;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;}span.jxButtonContent span{display:-moz-inline-box;display:inline-block;position:relative;vertical-align:middle;cursor:pointer;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;height:16px;white-space:nowrap;}span.jxButtonContent span.jxButtonLabel{margin:0;padding:0 4px 0 4px;color:#000;font-size:11px;}.jxDiscloser span.jxButtonContent{padding-right:0;}.jxDiscloser span.jxButtonContent span{padding-right:16px;background-image:url(images/emblems.png);background-position:right -16px;background-repeat:no-repeat;}a.jxButtonDisclose{position:absolute;display:-moz-inline-box;display:inline-block;padding:4px 0;font-size:0;line-height:0;right:2px;top:2px;background-image:url(images/button_multi_disclose.png);background-position:right 0;background-repeat:no-repeat;outline:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxButtonDisclose img{width:16px;height:16px;margin:0;padding:0;border:0;background-image:url(images/emblems.png);background-position:right -16px;background-repeat:no-repeat;}a.jxButtonDisclose:focus,a.jxButtonDisclose:active{background-position:right -96px;}a.jxButtonDisclose:hover{background-position:right -48px;}a.jxButtonDisclosePressed{background-position:right -120px;}.jxDisabled a.jxButtonDisclose,.jxDisabled a.jxButtonDisclose:focus,.jxDisabled a.jxButtonDisclose:active,.jxDisabled a.jxButtonDisclose:hover,.jxDisabled a.jxButtonDisclosePressed{cursor:default;background-position:right 0;}ul.jxToolbar .jxButtonHover{background-position:left -24px!important;}ul.jxToolbar .jxButtonHover span.jxButtonContent{background-position:right -24px!important;}.jxFlyout .jxChrome{background-image:url(images/flyout_chrome.png);padding:5px 5px 7px 6px;}.jxFlyout{position:absolute;display:block;z-index:100;margin:0;padding:0;}.jxFlyoutContent{position:relative;display:block;overflow:auto;margin:6px 6px 8px 7px;background-color:#fff;border:1px solid #999;}.jxButtonMulti,.jxButtonMulti span.jxButtonContent{background-image:url(images/button_multi.png);}.jxButtonEditCombo,.jxButtonEditCombo span.jxButtonContent{background-image:url(images/button_combo.png);}.jxButtonMulti span.jxButtonContent span{padding-right:21px;}.jxButtonEditCombo span.jxButtonContent span{font-size:0;}.jxButtonComboDefault span.jxButtonContent span,.jxButtonComboDefault input{font-style:italic;color:#999;}.jxButtonEditCombo input{float:left;line-height:16px;height:16px;padding:0 4px;margin:0;border:none;font-size:11px;font-family:Arial,Helvetica,sans-serif;background-color:transparent;}.jxChrome{position:absolute;display:block;font-size:0;line-height:0;z-index:-1;width:100%;height:100%;top:0;left:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxChromeDrag{opacity:.5;-ms-filter:"Alpha(opacity=50)";}.jxChromeTL{position:absolute;overflow:hidden;left:0;top:0;width:50%;height:50%;}.jxChromeTR{position:absolute;overflow:hidden;left:50%;top:0;width:50%;height:50%;}.jxChromeBL{position:absolute;overflow:hidden;left:0;top:50%;width:50%;height:50%;}.jxChromeBR{position:absolute;overflow:hidden;left:50%;top:50%;width:50%;height:50%;}.jxChromeTL img{position:absolute;top:0;left:0;width:1000px;height:600px;}.jxChromeTR img{position:absolute;top:0;right:0;width:1000px;height:600px;}.jxChromeBL img{position:absolute;bottom:0;left:0;width:1000px;height:600px;}.jxChromeBR img{position:absolute;bottom:0;right:0;width:1000px;height:600px;}.jxColorBar{position:relative;overflow:hidden;}table.jxColorGrid{position:relative;border-collapse:collapse;empty-cells:show;clear:both;padding:0;margin:0;}.jxColorGrid tr{padding:0;margin:0;}.jxColorGrid td{border:1px solid #000;padding:0;margin:0;}.jxColorGrid td.emptyCell{border:0 solid #000;}.jxColorGrid td.emptyCell span{display:block;width:7px;height:7px;line-height:0;font-size:0;border:0 solid #000;padding:1px;margin:0;}.jxColorGrid a.colorSwatch{display:block;width:7px;height:7px;line-height:0;font-size:0;border:0 solid #000;margin:0;padding:1px;}.jxColorGrid a.borderWhite:hover{border:1px solid #fff;padding:0;}.jxColorGrid a.borderBlack:hover{border:1px solid #000;padding:0;}input.jxHexInput{width:55px;vertical-align:middle;}input.jxAlphaInput{width:30px;vertical-align:middle;}div.jxColorPreview{float:left;position:relative;width:20px;height:20px;border:1px solid #000;margin:2px;vertical-align:middle;background-image:url('images/grid.png');overflow:hidden;}.jxButtonFlyout span.jxButtonContent span.jxButtonSwatch{display:block;float:left;width:14px;height:14px;border:1px solid #000;background-image:url('images/grid.png');background-position:0 0;background-repeat:repeat;padding-right:0!important;}.jxButtonFlyout span.jxButtonContent span.jxButtonSwatch span{display:block;width:14px;height:14px;position:absolute;padding-right:0;background:none;}div.jxColorPreview img{position:absolute;z-index:0;}div.jxColorPreview div{width:20px;height:10px;position:absolute;display:block;left:0;z-index:1;font-size:10px;line-height:0;}div.jxColorPreview div.jxColorSelected{top:0;}div.jxColorPreview div.jxColorHover{bottom:0;}label.jxColorLabel,label.jxAlphaLabel{width:auto;font-family:Arial,sans-serif;font-size:11px;line-height:24px;padding:2px;vertical-align:middle;}a.jxColorClose{position:absolute;top:0;right:0;width:16px;height:16px;}a.jxColorClose img{width:16px;height:16px;}.jxClearer{display:block;position:relative;float:none;clear:both;font-size:0;line-height:0;width:0;height:0;margin:0;padding:0;}.jxDisabled{opacity:.4;-ms-filter:"Alpha(opacity=40)";}.jxDisabled *{-ms-filter:"Alpha(opacity=40)";}iframe.jxIframeShim{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;-ms-filter:"Alpha(opacity=0)";z-index:-1;}@CHARSET "ISO-8859-1";.jxConfirmQuestion{text-align:center;padding:10px;margin-top:10px;}.jxDialog .jxChrome{background-image:url(images/dialog_chrome.png);}.jxDialog{display:block;z-index:1000;overflow:hidden;}.jxDialogContentContainer{z-index:1;margin:0 11px 13px 12px;border:1px solid #b7b7b7;background-color:#f0f0f0;}.jxDialogModal{position:absolute;display:block;top:0;left:0;width:100%;height:100%;background-color:#000;opacity:.2;-ms-filter:"Alpha(opacity=20)";}.jxDialogContent{display:block;position:relative;overflow:auto;padding:0;z-index:1;}.jxDialogTitle{display:block;position:relative;background-image:url(images/a_pixel.png);text-align:center;height:24px;line-height:24px;z-index:1;margin:6px 6px 0 7px;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxDialogMin .jxDialogTitle{margin-bottom:8px;}.jxDialogMoveable,.jxDialogMoveable .jxDialogLabel{cursor:move;}.jxDialogIcon{position:absolute;left:2px;top:3px;width:16px;height:16px;border:none;padding:0;margin:0;}.jxDialogLabel{font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;line-height:21px;color:#000;white-space:nowrap;cursor:default;}.jxDialogResize{position:absolute;bottom:7px;right:6px;width:16px;height:16px;z-index:2;border:0;cursor:se-resize;background-image:url(images/dialog_resize.png);}.jxDialogControls{position:absolute;top:3px;right:2px;height:16px;width:80px;}.jxDialogControls img{background-image:url('images/panel_controls.png');background-repeat:no-repeat;border:0;margin:0;width:16px;height:16px;}.jxDialogClose img{background-position:0 -32px;}.jxDialogMenu img{background-position:0 -48px;}.jxDialogHelp img{background-position:0 -64px;}.jxDialogCollapse img{background-position:0 -16px;}.jxDialogMin .jxDialogCollapse img{background-position:0 0;}.jxDialogMax .jxDialogCollapse img{background-position:0 -16px;}.jxDialogLoading img{border:0;margin:0;width:16px;height:16px;visibility:hidden;position:absolute;top:1px;left:2px;}.jxDialogControls .jxButtonContainer,.jxDialogControls span.jxButtonContent,.jxDialogControls .jxButton:hover span.jxButtonContent,.jxDialogControls .jxButton:active span.jxButtonContent,.jxDialogControls .jxButtonActive span.jxButtonContent,.jxDialogControls .jxButtonActive:hover span.jxButtonContent,.jxDialogControls .jxButtonActive:active span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton:hover span.jxButtonContent,.jxDialogControls .jxDisabled .jxButton:active span.jxButtonContent,.jxDialogControls .jxButton,.jxDialogControls .jxButton:hover,.jxDialogControls .jxButton:active,.jxDialogControls .jxButtonActive,.jxDialogControls .jxButtonActive:hover,.jxDialogControls .jxButtonActive:active,.jxDialogControls .jxDisabled .jxButton,.jxDialogControls .jxDisabled .jxButton:hover,.jxDialogControls .jxDisabled .jxButton:active{padding:0;margin:0;border:none;background-color:transparent;background-image:none;}.jxDialogControls .jxButtonMenu span.jxButtonContent,.jxDialogControls .jxButtonFlyout span.jxButtonContent{background-image:none;}.jxDialogControls .jxButtonMenu span.jxButtonContent span,.jxDialogControls .jxButtonFlyout span.jxButtonContent span{padding-right:0;}.jxDialogControls .jxBarContainer{position:absolute;right:0;background-image:none;background-color:transparent;margin:0;padding:0;border:none;height:16px;}.jxDialogControls .jxBarScroller{left:auto;right:0;}.jxDialogControls ul.jxToolbar{float:right;}.jxDialogControls ul.jxToolbar,.jxDialogControls li.jxToolItem{background-image:none;background-color:transparent;margin:0;padding:0;border:none;}div.jxFileInputs{position:relative;}div.jxFileFake{position:absolute;top:0;left:0;z-index:1;}div.jxFileFake span{float:left;display:block;}div.jxFileFake .jxInputContainer{width:150px;}div.jxFileFake .jxInputText{width:135px;}div.jxFileFake .jxButtonContainer{margin-top:6px;float:left;}.jxInputFile{position:relative;text-align:right;-moz-opacity:0;filter:alpha(opacity:0);opacity:0;z-index:2;margin-top:3px;height:35px;width:100%;}.jxForm{display:block;position:relative;overflow:hidden;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxFieldset{display:block;position:relative;overflow:hidden;border:1px solid #ccc;margin:10px;padding:5px;}.jxFieldsetLegend,.jxFieldset legend{position:relative;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:26px;color:#000;}.jxInputContainer{display:block;position:relative;padding:0;margin:2px;border:none;}.jxInputLabel,.jxInputTag{display:-moz-inline-box;display:inline-block;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:26px;color:#000;}.jxInputLabel{vertical-align:top;}.jxInputTag{vertical-align:bottom;}.jxInputText,.jxInputPassword,.jxInputTextarea{margin:0 4px;padding:4px;border:1px solid #bbb;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputSelect{margin:0 4px;padding:3px 4px 3px 1px;border:1px solid #bbb;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputText:focus,.jxInputPassword:focus,.jxInputTextarea:focus,.jxInputSelect:focus{border:1px solid #000;}.jxInputRadio,.jxInputCheck{margin:5px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:16px;color:#000;}.jxInputContainer .jxButtonContainer{padding:0;margin:0 4px;}.jxInputGroup{border:none;padding:0;margin:2px;}.jxInputGroup legend{font-size:0;line-height:0;padding:0;margin:0;border:none;}.jxInputGroup .jxFieldsetLegend{font-size:12px;}.jxInputGroup .jxInputLabel{width:auto;}.jxFieldInvalid .jxInputText,.jxFieldInvalid .jxInputPassword,.jxFieldInvalid .jxInputTextarea,.jxFieldInvalid .jxInputSelect{background-color:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}.jxFieldValidated .jxInputText,.jxFieldValidated .jxInputPassword,.jxFieldValidated .jxInputTextarea,.jxFieldValidated .jxInputSelect{background-color:#E6EFC2;color:#264409;border-color:#C6D880;}.jxFieldInvalid .jxInputText:focus,.jxFieldInvalid .jxInputPassword:focus,.jxFieldInvalid .jxInputTextarea:focus,.jxFieldInvalid .jxInputSelect:focus{border-color:#8a1f11;}.jxFieldValidated .jxInputText:focus,.jxFieldValidated .jxInputPassword:focus,.jxFieldValidated .jxInputTextarea:focus,.jxFieldValidated .jxInputSelect:focus{border-color:#264409;}.jxFieldInvalid .jxInputLabel,.jxFieldInvalid .jxInputTag{color:#8a1f11;}.jxFieldValidated .jxInputLabel,.jxFieldValidated .jxInputTag{color:#264409;}.jxFormInline .jxInputContainer,form .jxFormInline .jxInputContainer,form .jxFieldset span.jxFormInline,form.jxForm span.jxFormInline{display:inline;}.jxFormInline .jxInputLabel,form .jxFormInline .jxInputLabel,form span.jxFormInline .jxInputLabel{display:inline;width:auto;}.jxFormInline .jxInputTag,form .jxFormInline .jxInputTag,form span.jxFormInline .jxInputTag{display:inline;}.jxFormInline .jxInputGroup,form .jxFormInline .jxInputGroup{padding-left:0;}.jxFormInline .jxInputGroup .jxFieldsetLegend,form .jxFormInline .jxInputGroup .jxFieldsetLegend{position:relative;left:auto;}.jxFormInline .jxInputGroup .jxInputLabel,form .jxFormInline .jxInputGroup .jxInputLabel{display:inline;width:auto;}.jxFormBlock .jxInputContainer,form .jxFormBlock .jxInputContainer,form .jxFieldset span.jxFormBlock,form.jxform span.jxFormBlock{display:block;}.jxFormBlock .jxInputLabel,form .jxFormBlock .jxInputLabel,form span.jxFormBlock .jxInputLabel{display:block;width:auto;margin-left:4px;}.jxFormBlock .jxInputContainerCheck .jxInputLabel,.jxFormBlock .jxInputContainerRadio .jxInputLabel,form .jxFormBlock .jxInputContainerCheck .jxInputLabel,form .jxFormBlock .jxInputContainerRadio .jxInputLabel,form span.jxFormBlock .jxInputContainerCheck .jxInputLabel,form span.jxFormBlock .jxInputContainerRadio .jxInputLabel{display:-moz-inline-box;display:inline-block;}.jxFormBlock .jxInputGroup,form .jxFormBlock .jxInputGroup{padding-left:0;}.jxFormBlock .jxInputGroup .jxFieldsetLegend,form .jxFormBlock .jxInputGroup .jxFieldsetLegend{position:relative;left:auto;}.jxFormBlock .jxInputGroup .jxInputLabel,form .jxFormBlock .jxInputGroup .jxInputLabel{display:-moz-inline-box;display:inline-block;width:auto;}.jxFormInlineblock .jxInputContainer,form .jxFormInlineblock .jxInputContainer,form .jxFieldset span.jxFormInlineblock,form.jxForm span.jxFormInlineblock{display:block;}.jxFormInlineblock .jxInputLabel,form .jxFormInlineblock .jxInputLabel,form span.jxFormInlineblock .jxInputLabel{display:-moz-inline-box;display:inline-block;width:200px;}.jxFormInlineblock .jxInputGroup,form .jxFormInlineblock .jxInputGroup{padding-left:200px;}.jxFormInlineblock .jxInputGroup .jxFieldsetLegend,form .jxFormInlineblock .jxInputGroup .jxFieldsetLegend{position:absolute;left:-200px;width:200px;}.jxFormInlineblock .jxInputGroup .jxInputLabel,form .jxFormInlineblock .jxInputGroup .jxInputLabel{display:-moz-inline-box;display:inline-block;width:auto;}.jxGridContainer{position:absolute;top:0;left:0;border-left:0 solid #d8d8d8;border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;overflow:hidden;}.jxGridTable{position:relative;table-layout:fixed;border-collapse:collapse;border-style:none;cursor:default;font-family:Arial,Verdana,sans-serif;font-size:11px;font-weight:normal;}.jxGridHeader{width:100%;}.jxGridTableBody{position:relative;table-layout:fixed;border-collapse:collapse;border-style:none;cursor:default;font-family:Arial,Verdana,sans-serif;font-size:11px;font-weight:normal;}.jxGridColHeadHide{height:0;line-height:0;font-size:0;background-color:#fff;white-space:normal;}.jxGridColHeadHide p,.jxGridRowHeadHide p{font-size:0;line-height:0;height:0;margin:0;padding:0;}.jxGridRowHeadHide{width:0;white-space:normal;}.jxGridCell{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;overflow:hidden;}.jxGridCellContent{position:relative;display:-moz-inline-box;display:inline-block;overflow:hidden;padding-left:3px;padding-right:3px;overflow:hidden;white-space:nowrap;cursor:cell;text-overflow:ellipsis;}.jxGridColHead{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;background-color:#f2f2f2;background-image:url('images/table_col.png');background-position:0 0;background-repeat:repeat-x;text-align:center;font-weight:bold;color:#333;cursor:default;padding-left:3px;padding-right:3px;white-space:nowrap;}.jxGridRowHead{border-top:0 solid #d8d8d8;border-right:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-left:0 solid #d8d8d8;background-color:#f2f2f2;background-image:url('images/table_row.png');background-position:0 0;background-repeat:repeat-y;text-align:center;font-weight:bold;color:#333;cursor:default;overflow:hidden;white-space:nowrap;}.jxGridRowAll{background-color:#fff;}.jxGridColumnHeaderSelected{background-color:#e1e1e1;background-position:0 -200px;}.jxGridRowHeaderSelected{background-color:#e1e1e1;background-position:-400px 0;}.jxGridColumnSelected{background-color:#f7f7f7;}.jxGridRowSelected td{background-color:#f7f7f7;}td.jxGridCellSelected{background-color:#ebebeb;}.jxGridColumnHeaderPrelight{background-color:#cee5ff;background-position:0 -300px;}.jxGridRowHeaderPrelight{background-color:#cee5ff;background-position:-600px 0;}.jxGridColumnPrelight{background-color:#e5f1ff;}.jxGridRowPrelight td{background-color:#e5f1ff;}td.jxGridCellPrelight{background-color:#cce3ff;}.jxColSortable{padding-right:20px;}.jxGridCell.jxColSortable{padding-right:0;}.jxColSortable span{background-image:url('images/emblems.png');padding-right:20px;background-repeat:no-repeat;background-position:right top;}.jxGridColumnSortedAsc span{background-position:right -160px;}.jxGridColumnSortedDesc span{background-position:right -16px;}.jxGridColumnResize,.jxGridRowResize{display:block;position:absolute;background-image:url(images/a_pixel.png);z-index:1;}.jxGridColumnResize{right:0;top:0;height:100%;width:4px;cursor:col-resize;}.jxGridRowResize{left:0;bottom:0;height:4px;width:100%;cursor:row-resize;}.jxListView .jxListItemContainer{position:relative;display:block;outline:none;overflow:hidden;border:none;margin:0 1px;padding:0;}.jxListItem{position:relative;display:block;cursor:pointer;outline:none;overflow:hidden;border:none;margin:0 1px;padding:0;z-index:0;font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000;text-decoration:none;line-height:20px;height:20px;}.jxListView .jxHover{margin:0;border-left:1px solid #CDDFFD;border-right:1px solid #CDDFFD;background-image:url(images/listitem.png);background-repeat:repeat-x;background-color:#CDE5FF;background-position:left -24px;}.jxListItem:focus{margin:0;border-left:1px dotted #75ADFF;border-right:1px dotted #75ADFF;background-image:url(images/listitem.png);background-repeat:repeat-x;background-position:left -72px;}.jxListView .jxPressed,.jxListView .jxSelected{margin:0;border-left:1px solid #8AABFB;border-right:1px solid #8AABFB;background-color:#CDE5FF;background-image:url(images/listitem.png);background-repeat:repeat-x;background-position:left -48px;}.jxMenuContainer .jxChrome{background-image:url(images/flyout_chrome.png);padding:5px 5px 7px 6px;}.jxButtonMenu span.jxMenuItemSpan{padding-right:16px;}.jxMenuContainer{position:absolute;top:0;left:-10000px;display:none;z-index:2000;padding:0;}ul.jxMenu{display:block;position:relative;list-style-type:none;padding:1px;margin:6px 6px 8px 7px;background-color:#fff;border:1px solid #999;}li.jxMenuItemContainer{display:block;position:relative;font-size:0;line-height:0;margin:0;padding:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxMenuItem{display:block;position:relative;overflow:hidden;text-decoration:none;cursor:pointer;outline:none;border:1px solid #fff;background-image:url(images/menuitem.png);background-repeat:no-repeat;background-position:left top;font-family:Arial,Helvetica,sans-serif;font-size:11px;text-decoration:none;margin:0;padding:0;color:#000;}a.jxMenuItemActive{background-position:left -98px;}a.jxMenuItem:focus{background-position:left -74px;}a.jxMenuItem:focus span.jxMenuItemContent{border-right:1px dotted #75ADFF;}a.jxMenuItemActive:focus{background-position:left -170px;}a.jxMenuItem:hover{background-color:#CDE5FF;background-position:left -26px;}a.jxMenuItem:hover span.jxMenuItemContent{border-right:1px solid #C5E0FF;}a.jxMenuItemActive:hover{background-position:left -122px;}a.jxMenuItemPressed,a.jxMenuItemPressed:hover{background-color:#CDE5FF;background-position:left -50px;}.jxDisabled a.jxMenuItem,.jxDisabled span.jxMenuItemContent span{cursor:default;}.jxDisabled a.jxMenuItem:focus,.jxDisabled a.jxMenuItemPressed,.jxDisabled a.jxMenuItemPressed:hover,.jxDisabled a.jxMenuItem:hover{background-color:#fff;background-position:left top;border-right:1px solid #fff;}.jxDisabled a.jxMenuItem:hover span.jxMenuItemContent{border-right:1px solid #fff;}span.jxMenuItemContent{display:block;position:relative;font-family:Arial,Helvetica,sans-serif;font-size:0;line-height:0;white-space:nowrap;padding:0 20px 0 0;margin:0;border-right:1px solid #fff;}.jxButtonSubMenu span.jxMenuItemContent,.jxButtonSubMenu:hover span.jxMenuItemContent{background-image:url(images/emblems.png);background-position:right -30px;background-repeat:no-repeat;}img.jxMenuItemIcon{position:absolute;top:2px;left:2px;width:16px;height:16px;background-position:left center;background-repeat:no-repeat;}span.jxMenuItemContent span{display:block;position:relative;cursor:pointer;margin:0;padding:2px 0 2px 22px;font-size:16px;line-height:16px;color:#000;}span.jxMenuItemContent span.jxMenuItemLabel{color:#000;font-size:11px;}.jxMenuItemToggle img.jxMenuItemIcon,.jxMenuItemToggleSet img.jxMenuItemIcon{background-image:url(images/emblems.png);background-position:2px 0;background-repeat:no-repeat;}.jxMenuItemToggle a.jxMenuItemActive img.jxMenuItemIcon{background-position:2px -48px;}.jxMenuItemToggleSet a.jxMenuItemActive img.jxMenuItemIcon{background-position:2px -64px;}ul.jxMenu span.jxMenuSeparator{display:block;font-size:10px;line-height:10px;background-image:url(images/toolbar_separator_v.png);background-repeat:repeat-x;background-position:left center;}@CHARSET "ISO-8859-1";.jxMessage{text-align:center;padding:10px;margin-top:10px;}.jxPanel{display:block;position:relative;}.jxPanelContentContainer{overflow:hidden;background-color:#f0f0f0;}.jxPanelContent{position:relative;display:block;overflow:auto;background-color:#fff;margin:0;padding:0;}.jxPanelTitle{display:block;position:relative;background-image:url(images/panelbar.png);background-repeat:repeat-x;background-position:left top;height:22px;margin:0;padding:0;text-align:center;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxPanelBar{position:absolute;line-height:1px;width:100%;height:5px;cursor:row-resize;background-color:#f0f0f0;z-index:2;}.jxPanelIcon{position:absolute;left:2px;top:3px;width:16px;height:16px;border:none;padding:0;margin:0;}.jxPanelLabel{padding-left:25px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;line-height:21px;color:#000;white-space:nowrap;}.jxPanelControls{position:absolute;top:3px;right:2px;height:16px;width:80px;overflow:hidden;}.jxPanelControls img{background-image:url('images/panel_controls.png');background-repeat:no-repeat;border:0;margin:0;width:16px;height:16px;}.jxPanelClose img{background-position:0 -32px;}.jxPanelMenu img{background-position:0 -48px;}.jxPanelHelp img{background-position:0 -64px;}.jxPanelCollapse img{background-position:0 -16px;}.jxPanelMin .jxPanelCollapse img{background-position:0 0;}.jxPanelMax .jxPanelCollapse img{background-position:0 -16px;}.jxPanelMaximize img{background-position:0 0;}.jxPanelLoading img{border:0;margin:0;width:16px;height:16px;visibility:hidden;position:absolute;top:1px;left:2px;}.jxPanelControls .jxButtonContainer,.jxPanelControls span.jxButtonContent,.jxPanelControls .jxButton:hover span.jxButtonContent,.jxPanelControls .jxButton:active span.jxButtonContent,.jxPanelControls .jxButtonActive span.jxButtonContent,.jxPanelControls .jxButtonActive:hover span.jxButtonContent,.jxPanelControls .jxButtonActive:active span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton:hover span.jxButtonContent,.jxPanelControls .jxDisabled .jxButton:active span.jxButtonContent,.jxPanelControls .jxButton,.jxPanelControls .jxButton:hover,.jxPanelControls .jxButton:active,.jxPanelControls .jxButtonActive,.jxPanelControls .jxButtonActive:hover,.jxPanelControls .jxButtonActive:active,.jxPanelControls .jxDisabled .jxButton,.jxPanelControls .jxDisabled .jxButton:hover,.jxPanelControls .jxDisabled .jxButton:active{padding:0;margin:0;border:none;background-color:transparent;background-image:none;}.jxPanelControls .jxButtonMenu span.jxButtonContent,.jxPanelControls .jxButtonFlyout span.jxButtonContent{background-image:none;}.jxPanelControls .jxButtonMenu span.jxButtonContent span,.jxPanelControls .jxButtonFlyout span.jxButtonContent span{padding-right:0;}.jxPanelControls div.jxBarTop{position:absolute;right:0;background-image:none;background-color:transparent;margin:0;padding:0;border:none;height:16px;}.jxPanelControls .jxBarScroller{left:auto;right:0;}.jxPanelControls ul.jxToolbar{float:right;}.jxPanelControls ul.jxToolbar,.jxPanelControls li.jxToolItem{background-image:none;background-color:transparent;margin:0;padding:0;border:none;}@CHARSET "ISO-8859-1";.jxProgressBar-container{width:100%;display:block;clear:both;}.jxProgressBar-message{color:black;}.jxProgressBar-container .jxProgressBar{width:100%;clear:both;border-top:none;}.jxProgressBar-container .jxProgressBar .jxProgressBar-outline{border:1px solid #360;position:absolute;top:0;left:0;z-index:10;}.jxProgressBar-container .jxProgressBar .jxProgressBar-fill{background-color:#9c6;position:absolute;top:1px;left:1px;z-index:20;}.jxProgressBar-container .jxProgressBar .jxProgressBar-text{color:#360;margin:0;padding:2px;position:absolute;top:1px;left:1px;width:auto;z-index:30;border:none;}@CHARSET "ISO-8859-1";.jxSliderContainer{width:100%;height:10px;border:1px solid black;}.jxSliderKnob{width:10px;height:10px;background-color:black;cursor:pointer;}.jxSplitterMask{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;background-image:url(images/a_pixel.png);z-index:1;}.jxSplitBarHorizontal{display:block;position:absolute;font-size:0;line-height:0;margin:0;padding:0;border:none;width:5px;height:100%;cursor:col-resize;background-color:#f0f0f0;z-index:2;}.jxSplitBarVertical{display:block;position:absolute;font-size:0;line-height:0;margin:0;padding:0;border:none;width:100%;height:5px;cursor:row-resize;background-color:#f0f0f0;z-index:2;}.jxSplitContainer{display:block;position:relative;margin:0;padding:0;border:none;overflow:hidden;}.jxSplitArea{display:block;position:absolute;margin:0;padding:0;border:none;z-index:0;}.jxSplitBarDrag{background-color:#eee;}.jxSnapHorizontalBefore{width:5px;height:5px;position:absolute;top:0;left:0;background-color:#aaa;}.jxSnapHorizontalAfter{width:5px;height:5px;position:absolute;top:0;left:0;background-color:#aaa;}.jxTabSetContainer{position:relative;display:-moz-inline-box;display:inline-block;overflow:hidden;width:200px;height:200px;margin:0;padding:0;background-color:#fff;}.jxTabSetContainer .jxToolbarContainer{z-index:auto;}.tabContent{display:none;position:relative;width:100%;height:100%;overflow:auto;}.tabContentActive{display:block;}span.jxTabContainer{display:block;position:relative;margin:0;padding:2px;border:none;}a.jxTab{display:-moz-inline-box;display:inline-block;position:relative;cursor:pointer;user-select:none;-moz-user-select:none;-khtml-user-select:none;margin:0;padding:0;border:none;background-repeat:no-repeat;text-decoration:none;outline:none;}span.jxTabContent{display:-moz-inline-box;display:inline-block;font-size:0;line-height:0;margin:0;padding:0;border:none;background-repeat:no-repeat;}img.jxTabIcon{display:-moz-inline-box;display:inline-block;position:relative;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;}span.jxTabLabel{display:-moz-inline-box;display:inline-block;position:relative;cursor:pointer;margin:0;padding:0;color:#000;font-family:Arial,Helvetica,sans-serif;font-size:11px;line-height:16px;}a.jxTabClose{display:block;position:absolute;cursor:pointer;outline:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;}a.jxTabClose img{width:16px;height:16px;background-image:url(images/tab_close.png);}.jxDisabled a.jxTab,.jxDisabled span.jxTabContent span,.jxDisabled a.jxTabClose{cursor:default;}.jxBarTop a.jxTab,.jxBarTop span.jxTabContent{background-image:url(images/tab_top.png);}.jxBarBottom a.jxTab,.jxBarBottom span.jxTabContent{background-image:url(images/tab_bottom.png);}.jxBarTop a.jxTabClose,.jxBarBottom a.jxTabClose{top:5px;right:5px;}.jxBarTop .jxTabClose span.jxTabContent,.jxBarBottom .jxTabClose span.jxTabContent{padding-right:16px;}.jxBarTop a.jxTab,.jxBarBottom a.jxTab{padding-left:4px;background-position:left -24px;}.jxBarTop span.jxTabContent,.jxBarBottom span.jxTabContent{padding:4px 4px 4px 0;background-position:right -24px;}.jxBarTop a.jxTabActive,.jxBarBottom a.jxTabActive{background-position:left -72px;}.jxBarTop a.jxTabActive span.jxTabContent,.jxBarBottom a.jxTabActive span.jxTabContent{background-position:right -72px;}.jxBarTop a.jxTab:focus,.jxBarBottom a.jxTab:focus{background-position:left -96px;}.jxBarTop a.jxTab:focus span.jxTabContent,.jxBarBottom a.jxTab:focus span.jxTabContent{background-position:right -96px;}.jxBarTop a.jxTabActive:focus,.jxBarBottom a.jxTabActive:focus{background-position:left -144px;}.jxBarTop a.jxTabActive:focus span.jxTabContent,.jxBarBottom a.jxTabActive:focus span.jxTabContent{background-position:right -144px;}.jxBarTop a.jxTab:hover,.jxBarTop a.jxTabActive:hover,.jxBarBottom a.jxTab:hover,.jxBarBottom a.jxTabActive:hover{background-position:left -48px;}.jxBarTop a.jxTab:hover span.jxTabContent,.jxBarTop a.jxTabActive:hover span.jxTabContent,.jxBarBottom a.jxTab:hover span.jxTabContent,.jxBarBottom a.jxTabActive:hover span.jxTabContent{background-position:right -48px;}.jxBarTop a.jxTabPressed,.jxBarTop a.jxTabPressed:focus,.jxBarBottom a.jxTabPressed,.jxBarBottom a.jxTabPressed:focus{background-position:left -120px;}.jxBarTop a.jxTabPressed span.jxTabContent,.jxBarTop a.jxTabPressed:focus span.jxTabContent,.jxBarBottom a.jxTabPressed span.jxTabContent,.jxBarBottom a.jxTabPressed:focus span.jxTabContent{background-position:right -120px;}.jxBarTop .jxDisabled a.jxTab:focus,.jxBarTop .jxDisabled a.jxTab:active,.jxBarTop .jxDisabled a.jxTab:hover,.jxBarTop .jxDisabled a.jxTabPressed,.jxBarBottom .jxDisabled a.jxTab:focus,.jxBarBottom .jxDisabled a.jxTab:active,.jxBarBottom .jxDisabled a.jxTab:hover,.jxBarBottom .jxDisabled a.jxTabPressed{background-position:left -24px;}.jxBarTop .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarTop .jxDisabled a.jxTab:active span.jxTabContent,.jxBarTop .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarTop .jxDisabled a.jxTabPressed span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:active span.jxTabContent,.jxBarBottom .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabPressed span.jxTabContent{background-position:right -24px;}.jxBarTop .jxDisabled a.jxTabActive:focus,.jxBarTop .jxDisabled a.jxTabActive:active,.jxBarTop .jxDisabled a.jxTabActive:hover,.jxBarBottom .jxDisabled a.jxTabActive:focus,.jxBarBottom .jxDisabled a.jxTabActive:active,.jxBarBottom .jxDisabled a.jxTabActive:hover{background-position:left -72px;}.jxBarTop .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarTop .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarTop .jxDisabled a.jxTabActive:hover span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarBottom .jxDisabled a.jxTabActive:hover span.jxTabContent{background-position:right -72px;}.jxBarTop img.jxTabIcon,.jxBarBottom img.jxTabIcon{vertical-align:middle;}.jxBarTop span.jxTabLabel,.jxBarBottom span.jxTabLabel{vertical-align:middle;height:16px;padding:0 4px 0 4px;}.jxBarLeft a.jxTab,.jxBarLeft span.jxTabContent{background-image:url(images/tab_left.png);}.jxBarRight a.jxTab,.jxBarRight span.jxTabContent{background-image:url(images/tab_right.png);}.jxBarLeft a.jxTabClose,.jxBarRight a.jxTabClose{top:5px;left:5px;}.jxBarLeft .jxTabClose span.jxTabContent,.jxBarRight .jxTabClose span.jxTabContent{padding-top:16px;}.jxBarLeft a.jxTab,.jxBarRight a.jxTab{padding-top:4px;background-position:-24px top;}.jxBarLeft span.jxTabContent,.jxBarRight span.jxTabContent{padding:0 4px 4px 4px;background-position:-24px bottom;}.jxBarLeft a.jxTabActive,.jxBarRight a.jxTabActive{background-position:-72px top;}.jxBarLeft a.jxTabActive span.jxTabContent,.jxBarRight a.jxTabActive span.jxTabContent{background-position:-72px bottom;}.jxBarLeft a.jxTab:focus,.jxBarRight a.jxTab:focus{background-position:-96px top;}.jxBarLeft a.jxTab:focus span.jxTabContent,.jxBarRight a.jxTab:focus span.jxTabContent{background-position:-96px bottom;}.jxBarLeft a.jxTabActive:focus,.jxBarRight a.jxTabActive:focus{background-position:-144px top;}.jxBarLeft a.jxTabActive:focus span.jxTabContent,.jxBarRight a.jxTabActive:focus span.jxTabContent{background-position:-144px bottom;}.jxBarLeft a.jxTab:hover,.jxBarLeft a.jxTabActive:hover,.jxBarRight a.jxTab:hover,.jxBarRight a.jxTabActive:hover{background-position:-48px top;}.jxBarLeft a.jxTab:hover span.jxTabContent,.jxBarLeft a.jxTabActive:hover span.jxTabContent,.jxBarRight a.jxTab:hover span.jxTabContent,.jxBarRight a.jxTabActive:hover span.jxTabContent{background-position:-48px bottom;}.jxBarLeft a.jxTabPressed,.jxBarLeft a.jxTabPressed:focus,.jxBarRight a.jxTabPressed,.jxBarRight a.jxTabPressed:focus{background-position:-120px top;}.jxBarLeft a.jxTabPressed span.jxTabContent,.jxBarLeft a.jxTabPressed:focus span.jxTabContent,.jxBarRight a.jxTabPressed span.jxTabContent,.jxBarRight a.jxTabPressed:focus span.jxTabContent{background-position:-120px bottom;}.jxBarLeft .jxDisabled a.jxTab:focus,.jxBarLeft .jxDisabled a.jxTab:active,.jxBarLeft .jxDisabled a.jxTab:hover,.jxBarLeft .jxDisabled a.jxTabPressed,.jxBarRight .jxDisabled a.jxTab:focus,.jxBarRight .jxDisabled a.jxTab:active,.jxBarRight .jxDisabled a.jxTab:hover,.jxBarRight .jxDisabled a.jxTabPressed{background-position:-24px top;}.jxBarLeft .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarLeft .jxDisabled a.jxTab:active span.jxTabContent,.jxBarLeft .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabPressed span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:focus span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:active span.jxTabContent,.jxBarRight .jxDisabled a.jxTab:hover span.jxTabContent,.jxBarRight .jxDisabled a.jxTabPressed span.jxTabContent{background-position:-24px bottom;}.jxBarLeft .jxDisabled a.jxTabActive:focus,.jxBarLeft .jxDisabled a.jxTabActive:active,.jxBarLeft .jxDisabled a.jxTabActive:hover,.jxBarRight .jxDisabled a.jxTabActive:focus,.jxBarRight .jxDisabled a.jxTabActive:active,.jxBarRight .jxDisabled a.jxTabActive:hover{background-position:-72px top;}.jxBarLeft .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarLeft .jxDisabled a.jxTabActive:hover span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:focus span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:active span.jxTabContent,.jxBarRight .jxDisabled a.jxTabActive:hover span.jxTabContent{background-position:-72px bottom;}.jxBarLeft span.jxTabLabel,.jxBarRight span.jxTabLabel{padding:4px 0 4px 0;}.jxBarContainer{display:block;position:relative;z-index:1;overflow:hidden;margin:0;padding:0;border:0;background-color:#f0f0f0;}.jxBarTop,.jxBarBottom{width:100%;height:28px;background-image:url(images/toolbar.png);background-repeat:repeat-x;background-position:0 0;overflow:hidden;}.jxTabBox .jxTabBarTop{background-image:url(images/tabbar.png);background-position:0 bottom;}.jxTabBox .jxTabBarBottom{background-image:url(images/tabbar_bottom.png);background-position:0 top;}.jxBarLeft,.jxBarRight{width:auto;height:100%;background-image:url(images/toolbar.png);background-repeat:repeat-x;background-position:0 0;float:left;overflow:hidden;}.jxTabBox .jxTabBarLeft{background-image:url(images/tabbar_left.png);background-repeat:repeat-y;background-position:right 0;}.jxTabBox .jxTabBarRight{background-image:url(images/tabbar_right.png);background-repeat:repeat-y;background-position:left 0;}.jxBarTop .jxBarScroller,.jxBarBottom .jxBarScroller{position:absolute;width:10000%;overflow:hidden;}.jxBarTop .jxBarScrollLeft,.jxBarBottom .jxBarScrollLeft{position:absolute;top:0;left:0;}.jxBarTop .jxBarScrollRight,.jxBarBottom .jxBarScrollRight{position:absolute;top:0;right:0;}.jxBarTop .jxBarScrollLeft img.jxButtonIcon,.jxBarBottom .jxBarScrollLeft img.jxButtonIcon{background-image:url(images/emblems.png);background-position:0 -80px;}.jxBarTop .jxBarScrollRight img.jxButtonIcon,.jxBarBottom .jxBarScrollRight img.jxButtonIcon{background-image:url(images/emblems.png);background-position:0 -96px;}ul.jxToolbar,ul.jxTabBar{display:block;position:relative;float:left;list-style-type:none;margin:0;padding:0;border:none;}li.jxToolItem{display:block;position:relative;float:left;font-size:0;line-height:0;padding:0;margin:0;border:none;}li.jxToolItem span.jxBarSeparator{display:block;position:relative;float:left;font-size:0;line-height:0;border:0;margin:0;padding:4px;background-repeat:no-repeat;background-position:center center;}.jxBarTop li.jxToolItem span.jxBarSeparator,.jxBarBottom li.jxToolItem span.jxBarSeparator{width:8px;height:20px;background-image:url(images/toolbar_separator_h.png);}.jxBarLeft li.jxToolItem span.jxBarSeparator,.jxBarRight li.jxToolItem span.jxBarSeparator{width:20px;height:8px;background-image:url(images/toolbar_separator_v.png);}.jxBarLeft ul.jxToolbar,.jxBarLeft ul.jxTabBar,.jxBarLeft li.jxToolItem,.jxBarRight ul.jxToolbar,.jxBarRight ul.jxTabBar,.jxBarRight li.jxToolItem{clear:both;}.jxTooltip{width:auto;height:auto;background-color:black;color:white;padding:5px;z-index:65536;}.jxTree,.jxTreeRoot{position:relative;display:block;list-style:none;margin:0;padding:0;}.jxTreeNest{list-style:none;margin:0;padding:0;background-repeat:repeat-y;background-position:left top;}li.jxTreeContainer{position:relative;display:block;margin:0;padding:0;background-repeat:no-repeat;background-position:left top;white-space:nowrap;font-size:0;line-height:0;user-select:none;-moz-user-select:none;-khtml-user-select:none;}.jxTree li.jxTreeContainer{margin-left:16px;}a.jxTreeItem{position:relative;display:block;cursor:pointer;outline:none;overflow:hidden;background-image:url(images/tree_hover.png);background-repeat:repeat-x;background-position:left top;border:none;margin:0 1px 0 17px;padding:0 0 0 20px;z-index:0;font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000;text-decoration:none;line-height:20px;height:20px;}a.jxTreeItem:focus{border-left:1px dotted #75ADFF;border-right:1px dotted #75ADFF;margin:0 0 0 16px;background-position:left -72px;}a.jxTreeItem:hover,li.jxTreeContainer a.jxHover{border-left:1px solid #CDDFFD;border-right:1px solid #CDDFFD;margin:0 0 0 16px;background-color:#CDE5FF;background-position:left -24px;}li.jxTreeContainer a.jxSelected,li.jxTreeContainer a.jxSelected:hover,li.jxTreeContainer a.jxPressed,li.jxTreeContainer a.jxPressed:hover{border-left:1px solid #8AABFB;border-right:1px solid #8AABFB;margin:0 0 0 16px;background-color:#CDE5FF;background-position:left -48px;}li.jxDisabled a.jxTreeItem{cursor:default;}li.jxDisabled a.jxTreeItem:focus,li.jxDisabled a.jxTreeItem:hover{background-position:left top;background-color:transparent;border:none;margin:0 1px 0 17px;}.jxTreeNest{background-image:url(images/tree_vert_line.png);}img.jxTreeImage,img.jxTreeIcon{position:absolute;display:inline;left:0;top:0;width:16px;height:20px;z-index:1;background-image:url(images/tree.png);background-repeat:no-repeat;border:0;margin:0;}img.jxTreeIcon{height:16px;top:2px;left:1px;}.jxTreeBranchOpen .jxTreeIcon,.jxTreeBranchLastOpen .jxTreeIcon{background-position:left -40px;}.jxTreeBranchOpen .jxTreeImage{background-position:left -100px;}.jxTreeBranchLastOpen .jxTreeImage{background-position:left -160px;}.jxTreeBranchClosed .jxTreeIcon,.jxTreeBranchLastClosed .jxTreeIcon{background-position:left -20px;}.jxTreeBranchClosed .jxTreeImage{background-position:left -80px;}.jxTreeBranchLastClosed .jxTreeImage{background-position:left -140px;}.jxTreeLeaf .jxTreeIcon,.jxTreeLeafLast .jxTreeIcon{background-position:left 0;}.jxTreeLeaf .jxTreeImage{background-position:left -60px;}.jxTreeLeafLast .jxTreeImage{background-position:left -120px;}a.jxTreeItem,img.jxTreeImage,img.jxTreeIcon,span.jxTreeLabel,.jxTreeItemContainer input{vertical-align:middle;}.jxFileUploadPanel{padding:5px;}.jxFileUploadPanel .jxInputContainer{width:300px;}.jxUploadQueue{width:100%;margin-top:10px;}.jxUploadQueue div{position:relative;width:95%;clear:both;border-top:1px solid black;padding:2px;}.jxUploadQueue div span{display:block;}.jxUploadQueue div span.jxUploadFileName{float:left;font-size:16px;}.jxUploadQueue div span.jxUploadFileDelete,.jxUploadQueue div span.jxUploadFileProgress,.jxUploadQueue div span.jxUploadFileComplete,.jxUploadQueue div span.jxUploadFileError{float:right;width:16px;height:16px;background-repeat:no-repeat;background-position:top left;cursor:pointer;}.jxUploadQueue div span.jxUploadFileDelete{background-image:url('images/delete.gif');}.jxUploadQueue div span.jxUploadFileProgress{background-image:url('images/loading.gif');}.jxUploadQueue div span.jxUploadFileComplete{background-image:url('images/green_tick.png');}.jxUploadQueue div span.jxUploadFileError{background-image:url('images/error.png');}.jxUploadFileErrorTip{padding:4px 4px 4px 20px;border:2px solid #ddd;background:url("images/error.png") no-repeat left top;color:black;width:100px;}
\ No newline at end of file
Modified: sandbox/jxlib-3.0/templates/mapserver/standard/themes/delicious/jxtheme.uncompressed.css
===================================================================
--- sandbox/jxlib-3.0/templates/mapserver/standard/themes/delicious/jxtheme.uncompressed.css 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/templates/mapserver/standard/themes/delicious/jxtheme.uncompressed.css 2009-11-11 15:31:46 UTC (rev 1970)
@@ -13,7 +13,7 @@
h1,h2,h3,h4,h5,h6{font-size:100%;}
q:before,q:after{content:'';}/**
* @project Jx
- * @revision $Id: button.css 507 2009-08-06 19:19:14Z fred.warnock $
+ * @revision $Id: button.css 593 2009-11-09 20:29:54Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -253,19 +253,11 @@
/* JX BUTTON EXTENSION STYLES */
/* ========================== */
-.jxButtonMenu span.jxButtonContent,
-.jxButtonMulti span.jxButtonContent,
-.jxButtonFlyout span.jxButtonContent,
-.jxButtonCombo span.jxButtonContent,
-.jxButtonEditCombo span.jxButtonContent {
+.jxDiscloser span.jxButtonContent {
padding-right: 0px;
}
-.jxButtonMenu span.jxButtonContent span,
-.jxButtonFlyout span.jxButtonContent span,
-.jxButtonMulti span.jxButtonContent span,
-.jxButtonCombo span.jxButtonContent span,
-.jxButtonEditCombo span.jxButtonContent span {
+.jxDiscloser span.jxButtonContent span {
padding-right: 16px;
background-image: url(images/emblems.png);
background-position: right -16px;
@@ -276,7 +268,6 @@
position: absolute;
display: -moz-inline-box;
display: inline-block;
-
padding: 4px 0px;
font-size: 0px;
line-height: 0px;
@@ -1652,7 +1643,7 @@
}
/**
* @project Jx
- * @revision $Id: menu.css 582 2009-10-30 22:03:58Z pagameba $
+ * @revision $Id: menu.css 601 2009-11-10 18:44:35Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -1846,7 +1837,7 @@
}
.jxMenuItemToggle img.jxMenuItemIcon,
-.jxMenuItemSet img.jxMenuItemIcon {
+.jxMenuItemToggleSet img.jxMenuItemIcon {
background-image: url(images/emblems.png);
background-position: 2px 0px;
background-repeat: no-repeat;
@@ -1856,7 +1847,7 @@
background-position: 2px -48px;
}
-.jxMenuItemSet a.jxMenuItemActive img.jxMenuItemIcon {
+.jxMenuItemToggleSet a.jxMenuItemActive img.jxMenuItemIcon {
background-position: 2px -64px;
}
@@ -2274,7 +2265,7 @@
background-color: #aaa;
}/**
* @project Jx
- * @revision $Id: tab.css 241 2008-12-10 15:11:05Z pagameba $
+ * @revision $Id: tab.css 599 2009-11-10 16:06:38Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -2292,7 +2283,8 @@
the position need to be explicitly set, as well as the width and height. */
/* Base setup */
position: relative;
- display: block;
+ display: -moz-inline-box;
+ display: inline-block;
overflow: hidden;
width: 200px;
@@ -2328,7 +2320,7 @@
/* BASE TAB (BUTTON) STYLES */
/* ======================== */
-div.jxTabContainer {
+span.jxTabContainer {
/* Base setup */
display: block;
position: relative;
@@ -2340,7 +2332,8 @@
a.jxTab {
/* Base setup */
- display: block;
+ display: -moz-inline-box;
+ display: inline-block;
position: relative;
cursor: pointer;
user-select: none;
@@ -2358,7 +2351,8 @@
span.jxTabContent {
/* Base setup */
- display: block;
+ display: -moz-inline-box;
+ display: inline-block;
font-size: 0px;
line-height: 0px;
@@ -2372,6 +2366,8 @@
img.jxTabIcon {
/* Base setup */
+ display: -moz-inline-box;
+ display: inline-block;
position: relative;
width: 16px;
@@ -2382,7 +2378,8 @@
span.jxTabLabel {
/* Base setup */
- display: block;
+ display: -moz-inline-box;
+ display: inline-block;
position: relative;
cursor: pointer;
@@ -2427,7 +2424,6 @@
.jxBarTop div.jxTabContainer,
.jxBarBottom div.jxTabContainer {
/* Base setup */
- float: left;
}
.jxBarTop a.jxTab,
@@ -2443,8 +2439,8 @@
/* Closeable Tab */
.jxBarTop a.jxTabClose,
.jxBarBottom a.jxTabClose {
- top: 3px;
- right: 3px;
+ top: 5px;
+ right: 5px;
}
.jxBarTop .jxTabClose span.jxTabContent,
@@ -2456,7 +2452,6 @@
.jxBarTop a.jxTab,
.jxBarBottom a.jxTab {
/* Base setup */
- float: left;
padding-left: 4px; /* makes room for the left of the tab bg */
background-position: left -24px;
@@ -2465,7 +2460,6 @@
.jxBarTop span.jxTabContent,
.jxBarBottom span.jxTabContent {
/* Base setup */
- float: left;
padding: 4px 4px 4px 0px; /* makes space around the label */
background-position: right -24px;
@@ -2580,14 +2574,14 @@
.jxBarTop img.jxTabIcon,
.jxBarBottom img.jxTabIcon {
+ vertical-align: middle;
/* Base setup */
- float: left;
}
.jxBarTop span.jxTabLabel,
.jxBarBottom span.jxTabLabel {
/* Base setup */
- float: left;
+ vertical-align: middle;
height: 16px;
padding: 0px 4px 0px 4px;
@@ -2598,8 +2592,8 @@
/* VERTICAL TAB BAR - LEFT and RIGHT */
/* ================================= */
-.jxBarLeft div.jxTabContainer,
-.jxBarRight div.jxTabContainer {
+.jxBarLeft span.jxTabContainer,
+.jxBarRight span.jxTabContainer {
/* Base setup */
}
@@ -2616,8 +2610,8 @@
/* Closeable Tab */
.jxBarLeft a.jxTabClose,
.jxBarRight a.jxTabClose {
- top: 3px;
- left: 3px;
+ top: 5px;
+ left: 5px;
}
.jxBarLeft .jxTabClose span.jxTabContent,
@@ -2967,7 +2961,7 @@
/**
* @project Jx
- * @revision $Id: tree.css 586 2009-11-05 20:34:17Z pagameba $
+ * @revision $Id: tree.css 602 2009-11-10 19:41:36Z pagameba $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
Added: sandbox/jxlib-3.0/widgets/CursorPosition/CursorPosition.css
===================================================================
--- sandbox/jxlib-3.0/widgets/CursorPosition/CursorPosition.css (rev 0)
+++ sandbox/jxlib-3.0/widgets/CursorPosition/CursorPosition.css 2009-11-11 15:31:46 UTC (rev 1970)
@@ -0,0 +1,17 @@
+.spanCursorPosition {
+ display: -moz-inline-box;
+ display: inline-block;
+ padding: 2px;
+ margin: 0;
+ border: none;
+ width: 200px;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ line-height: 16px;
+ background-color: transparent;
+ color: #000;
+}
+
+.jxToolItem .spanCursorPosition {
+ padding: 6px 2px;
+}
\ No newline at end of file
Modified: sandbox/jxlib-3.0/widgets/CursorPosition.js
===================================================================
--- sandbox/jxlib-3.0/widgets/CursorPosition.js 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/widgets/CursorPosition.js 2009-11-11 15:31:46 UTC (rev 1970)
@@ -83,6 +83,9 @@
this.getMap().registerForEvent(Fusion.Event.MAP_LOADED, OpenLayers.Function.bind(this.setUnits, this));
this.registerParameter('Units');
+
+ Fusion.addWidgetStyleSheet(widgetTag.location + '/CursorPosition/CursorPosition.css');
+
},
setUiObject: function(uiObj) {
Modified: sandbox/jxlib-3.0/widgets/EditableScale/EditableScale.css
===================================================================
--- sandbox/jxlib-3.0/widgets/EditableScale/EditableScale.css 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/widgets/EditableScale/EditableScale.css 2009-11-11 15:31:46 UTC (rev 1970)
@@ -1,5 +1,28 @@
.inputEditableScale {
- border: 0;
+ margin: 2px;
+ padding: 4px;
+ border: 1px solid #bbb;
+ background-color: #fff;
+ color: #000;
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
+ line-height: 16px;
+}
+
+.inputEditableScalePrefix {
+ display: -moz-inline-box;
+ display: inline-block;
+ padding: 2px;
+ margin: 0;
+ border: none;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ line-height: 16px;
+ background-color: transparent;
+ color: #000;
+
+}
+
+.jxToolItem .inputEditableScalePrefix {
+ padding: 6px 2px;
}
\ No newline at end of file
Modified: sandbox/jxlib-3.0/widgets/Measure.js
===================================================================
--- sandbox/jxlib-3.0/widgets/Measure.js 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/widgets/Measure.js 2009-11-11 15:31:46 UTC (rev 1970)
@@ -263,6 +263,7 @@
updateArea: function(geom) {
if (!this.areaMarker) {
this.areaMarker = new Fusion.Widget.Measure.Marker(this.units, this.distPrecision, '', true);
+ this.areaMarker.domObj.addClass('divMeasureArea');
}
this.updateMarker(this.areaMarker, geom);
},
@@ -285,16 +286,18 @@
to = this.getMap().geoToPix(v[1].x,v[1].y);
at = {x: (from.x + to.x) / 2, y: (from.y + to.y) / 2};
quantity = geom.getGeodesicLength(proj);
-
measureUnits = Fusion.METERS;
if (measureUnits != this.units) {
quantity = Fusion.convert(measureUnits, this.units, quantity);
}
+ this.totalLength = quantity.toPrecision(this.distPrecision);
} else {
var cg = geom.getCentroid();
at = this.getMap().geoToPix(cg.x, cg.y);
quantity = geom.getGeodesicArea(proj);
//TODO: result is in square meters - convert to other units?
+ var q = Math.pow(Fusion.convert(measureUnits, this.units, q));
+ this.totalArea = q.toPrecision(this.areaPrecision);
}
if (quantity > 1) {
marker.setQuantity(quantity);
@@ -369,14 +372,14 @@
this.registerForEvent(Fusion.Event.MEASURE_CLEAR, OpenLayers.Function.bind(this.clearDisplay, this, outputWin));
this.registerForEvent(Fusion.Event.MEASURE_SEGMENT_UPDATE, OpenLayers.Function.bind(this.updateDisplay, this, outputWin));
this.registerForEvent(Fusion.Event.MEASURE_COMPLETE, OpenLayers.Function.bind(this.updateDisplay, this, outputWin));
- } else {
+ } else if (!this.totalDistanceMarker) {
this.totalDistanceMarker = new Fusion.Widget.Measure.Marker(this.units, this.distPrecision, 'Total:');
var oDomElem = this.getMap().getDomObj();
if (!this.totalDistanceMarker.domObj.parentNode ||
this.totalDistanceMarker.domObj.parentNode != oDomElem) {
oDomElem.appendChild(this.totalDistanceMarker.domObj);
}
- this.totalDistanceMarker.domObj.addClass = 'divMeasureTotal';
+ this.totalDistanceMarker.domObj.addClass('divMeasureTotal');
this.totalDistanceMarker.domObj.style.display = 'none';
this.registerForEvent(Fusion.Event.MEASURE_CLEAR, OpenLayers.Function.bind(this.clearTotalDistance, this));
this.registerForEvent(Fusion.Event.MEASURE_SEGMENT_UPDATE, OpenLayers.Function.bind(this.updateTotalDistance, this));
Added: sandbox/jxlib-3.0/widgets/SelectionInfo/SelectionInfo.css
===================================================================
--- sandbox/jxlib-3.0/widgets/SelectionInfo/SelectionInfo.css (rev 0)
+++ sandbox/jxlib-3.0/widgets/SelectionInfo/SelectionInfo.css 2009-11-11 15:31:46 UTC (rev 1970)
@@ -0,0 +1,17 @@
+.spanSelectionInfo {
+ display: -moz-inline-box;
+ display: inline-block;
+ padding: 2px;
+ margin: 0;
+ border: none;
+ width: 200px;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ line-height: 16px;
+ background-color: transparent;
+ color: #000;
+}
+
+.jxToolItem .spanSelectionInfo {
+ padding: 6px 2px;
+}
\ No newline at end of file
Modified: sandbox/jxlib-3.0/widgets/SelectionInfo.js
===================================================================
--- sandbox/jxlib-3.0/widgets/SelectionInfo.js 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/widgets/SelectionInfo.js 2009-11-11 15:31:46 UTC (rev 1970)
@@ -65,6 +65,9 @@
this.getMap().registerForEvent(Fusion.Event.MAP_SELECTION_ON, OpenLayers.Function.bind(this.update, this));
this.getMap().registerForEvent(Fusion.Event.MAP_SELECTION_OFF, OpenLayers.Function.bind(this.update, this));
+
+ Fusion.addWidgetStyleSheet(widgetTag.location + '/SelectionInfo/SelectionInfo.css');
+
},
setUiObject: function(uiObj) {
Added: sandbox/jxlib-3.0/widgets/ViewSize/ViewSize.css
===================================================================
--- sandbox/jxlib-3.0/widgets/ViewSize/ViewSize.css (rev 0)
+++ sandbox/jxlib-3.0/widgets/ViewSize/ViewSize.css 2009-11-11 15:31:46 UTC (rev 1970)
@@ -0,0 +1,17 @@
+.spanViewSize {
+ display: -moz-inline-box;
+ display: inline-block;
+ padding: 2px;
+ margin: 0;
+ border: none;
+ width: 200px;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ line-height: 16px;
+ background-color: transparent;
+ color: #000;
+}
+
+.jxToolItem .spanViewSize {
+ padding: 6px 2px;
+}
\ No newline at end of file
Modified: sandbox/jxlib-3.0/widgets/ViewSize.js
===================================================================
--- sandbox/jxlib-3.0/widgets/ViewSize.js 2009-11-10 19:54:32 UTC (rev 1969)
+++ sandbox/jxlib-3.0/widgets/ViewSize.js 2009-11-11 15:31:46 UTC (rev 1970)
@@ -56,6 +56,9 @@
this.getMap().registerForEvent(Fusion.Event.MAP_LOADED, OpenLayers.Function.bind(this.setUnits, this));
this.getMap().registerForEvent(Fusion.Event.MAP_EXTENTS_CHANGED, OpenLayers.Function.bind(this.updateViewSize, this));
this.registerParameter('Units');
+
+ Fusion.addWidgetStyleSheet(widgetTag.location + '/ViewSize/ViewSize.css');
+
},
setUiObject: function(uiObj) {
More information about the fusion-commits
mailing list