[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: '&nbsp;',
+        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'>&nbsp;</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