Fixed php examples and plugins so no warnings are given with the latest versions...
authorMatt Brown <dowdybrown@yahoo.com>
Sun, 16 Sep 2012 20:10:30 +0000 (20:10 +0000)
committerMatt Brown <dowdybrown@yahoo.com>
Sun, 16 Sep 2012 20:10:30 +0000 (20:10 +0000)
git-svn-id: svn://svn.code.sf.net/p/openrico/code/trunk/rico3@98 53df2df2-7ab5-4331-af62-ea79255fa4e2

29 files changed:
bin/Rico.dll
bin/Rico.xml
examples/asp/widgets.asp
examples/dotnet/dbConnect.ascx
examples/dotnet/tree1.aspx
examples/dotnet/widgets.aspx
examples/html/controls.html
examples/php/RicoDbViewerDetail.php
examples/php/ex2editfilter.php
examples/php/ex2json.php
examples/php/ex2nosession.php
examples/php/ex2xml.php
examples/php/simplegrid.php
examples/php/tree1.php
examples/php/widgets.php
minsrc/rico.js
minsrc/ricoCalendar.js
minsrc/ricoGridCommon.js
minsrc/ricoLiveGrid.js
minsrc/ricoLiveGridAjax.js
minsrc/ricoLiveGridControls.js
minsrc/ricoSimpleGrid.js
minsrc/ricoUI.js
plugins/asp/SimpleGrid.vbs
plugins/php/SimpleGrid.php
plugins/php/dbClass3.php
plugins/php/ricoLiveGridForms.php
ricoClient/css/rico.css
ricoClient/js/rico_min.js

index 568c5d2..2b26512 100644 (file)
Binary files a/bin/Rico.dll and b/bin/Rico.dll differ
index 10d5a9c..ecead98 100644 (file)
@@ -6,25 +6,7 @@ Rico
 </name>\r
 </assembly>\r
 <members>\r
 </name>\r
 </assembly>\r
 <members>\r
-<member name="M:Rico.TableCollection.IndexOf(System.String)">\r
-       <summary>\r
- Returns the index of the table with TblAlias or -1 if not found\r
- </summary>\r
-       <param name="TblAlias"></param>\r
-</member><member name="P:Rico.My.Resources.Resources.ResourceManager">\r
-       <summary>\r
-  Returns the cached ResourceManager instance used by this class.\r
-</summary>\r
-</member><member name="P:Rico.My.Resources.Resources.Culture">\r
-       <summary>\r
-  Overrides the current thread's CurrentUICulture property for all\r
-  resource lookups using this strongly typed resource class.\r
-</summary>\r
-</member><member name="T:Rico.My.Resources.Resources">\r
-       <summary>\r
-  A strongly-typed resource class, for looking up localized strings, etc.\r
-</summary>\r
-</member><member name="T:Rico.sqlParse.sqlColumn">\r
+<member name="T:Rico.sqlParse.sqlColumn">\r
        <summary>\r
  Represents a column in the select statement\r
  </summary>\r
        <summary>\r
  Represents a column in the select statement\r
  </summary>\r
@@ -90,7 +72,6 @@ Rico
  Returns the select list part of the statement as a string\r
  </summary>\r
        <returns></returns>\r
  Returns the select list part of the statement as a string\r
  </summary>\r
        <returns></returns>\r
-       <remarks></remarks>\r
 </member><member name="M:Rico.sqlParse.UnparseWithRowNumber(System.Int32,System.Int32,System.Boolean)">\r
        <summary>\r
  Returns a "windowed" select query.\r
 </member><member name="M:Rico.sqlParse.UnparseWithRowNumber(System.Int32,System.Int32,System.Boolean)">\r
        <summary>\r
  Returns a "windowed" select query.\r
@@ -99,12 +80,10 @@ Rico
        <param name="numrows">The number of rows to return</param>\r
        <param name="includeAS">use true for SQL Server 2005+ and false for Oracle</param>\r
        <returns></returns>\r
        <param name="numrows">The number of rows to return</param>\r
        <param name="includeAS">use true for SQL Server 2005+ and false for Oracle</param>\r
        <returns></returns>\r
-       <remarks></remarks>\r
 </member><member name="M:Rico.sqlParse.Clear">\r
        <summary>\r
  Resets the object and prepares it to parse another select statement.\r
  </summary>\r
 </member><member name="M:Rico.sqlParse.Clear">\r
        <summary>\r
  Resets the object and prepares it to parse another select statement.\r
  </summary>\r
-       <remarks></remarks>\r
 </member><member name="M:Rico.sqlParse.ParseSelect(System.String)">\r
        <summary>\r
  Loads a select statement into the object.\r
 </member><member name="M:Rico.sqlParse.ParseSelect(System.String)">\r
        <summary>\r
  Loads a select statement into the object.\r
@@ -119,71 +98,60 @@ Rico
                <para>* Put union queries in a view and then write your select statement against the view.</para>\r
        </summary>\r
        <param name="sqltext"></param>\r
                <para>* Put union queries in a view and then write your select statement against the view.</para>\r
        </summary>\r
        <param name="sqltext"></param>\r
-</member><member name="T:Rico.sqlParse">\r
-       <summary>\r
- Holds a SQL select statement. Methods to load/parse a select statement from a string and to reassemble it in various ways.\r
- Does not handle union queries.\r
- </summary>\r
-</member><member name="F:Rico.LiveGridEdit.onFormOpen">\r
-       <summary>\r
- Javascript function to be called when the form opens to add or edit a record\r
- </summary>\r
-</member><member name="F:Rico.LiveGridEdit.onFormClose">\r
+</member><member name="M:Rico.sqlParse.SetSort(System.String)">\r
        <summary>\r
        <summary>\r
- Javascript function to be called when the add/edit form closes\r
+ Specifies the way the query results should be sorted.\r
+ Can specify multiple columns separated by commas. Cannot be used to specify a calculation that contains commas.\r
  </summary>\r
  </summary>\r
-</member><member name="F:Rico.LiveGridEdit.onFormSubmit">\r
+       <param name="SortSpecCSV"></param>\r
+</member><member name="M:Rico.sqlParse.AddSort(System.String)">\r
        <summary>\r
        <summary>\r
- Javascript function to be called when the add/edit form is submitted to the server\r
+ Add a single sort criteria to the beginning of the order by clause\r
  </summary>\r
  </summary>\r
-</member><member name="F:Rico.LiveGridEdit.onSubmitResponse">\r
+       <param name="NewSort">A single column name or column index followed by the sort direction</param>\r
+</member><member name="T:Rico.sqlParse">\r
        <summary>\r
        <summary>\r
- Javascript function to be called when a response is received from the server after a form submittal\r
+ Holds a SQL select statement. Methods to load/parse a select statement from a string and to reassemble it in various ways.\r
+ Does not handle union queries.\r
  </summary>\r
  </summary>\r
-</member><member name="E:Rico.LiveGridEdit.DbDelete">\r
+</member><member name="P:Rico.My.Resources.Resources.ResourceManager">\r
        <summary>\r
        <summary>\r
- Event raised right before the database deletion takes place.\r
- </summary>\r
-       <param name="TabIdx">Index into the Tables collection. 0 is the main table.</param>\r
-       <param name="WhereClause">Where clause that selects the record to be deleted.</param>\r
-</member><member name="E:Rico.LiveGridEdit.DbInsert">\r
+  Returns the cached ResourceManager instance used by this class.\r
+</summary>\r
+</member><member name="P:Rico.My.Resources.Resources.Culture">\r
        <summary>\r
        <summary>\r
- Event raised right before the database insertion takes place.\r
- </summary>\r
-       <param name="TabIdx">Index into the Tables collection. 0 is the main table.</param>\r
-       <param name="Data">Hashtable containing the data to be inserted. Key is the column name. Value is the quoted data to be written. Changing the contents of the hash does NOT change what is written to the database.</param>\r
-</member><member name="E:Rico.LiveGridEdit.DbUpdate">\r
+  Overrides the current thread's CurrentUICulture property for all\r
+  resource lookups using this strongly typed resource class.\r
+</summary>\r
+</member><member name="T:Rico.My.Resources.Resources">\r
        <summary>\r
        <summary>\r
- Event raised right before the database update takes place.\r
- </summary>\r
-       <param name="TabIdx">Index into the Tables collection. 0 is the main table.</param>\r
-       <param name="Data">Hashtable containing the data to be updated. Key is the column name. Value is the quoted data to be written. Changing the contents of the hash does NOT change what is written to the database.</param>\r
-       <param name="WhereClause">Where clause that selects the record to be updated.</param>\r
-</member><member name="M:Rico.LiveGridEdit.TableKeyWhereClause(System.Int32)">\r
+  A strongly-typed resource class, for looking up localized strings, etc.\r
+</summary>\r
+</member><member name="M:Rico.TableCollection.IndexOf(System.String)">\r
        <summary>\r
        <summary>\r
- Returns where clause based on table's primary key\r
+ Returns the index of the table with TblAlias or -1 if not found\r
  </summary>\r
  </summary>\r
-       <param name="TabIdx"></param>\r
+       <param name="TblAlias"></param>\r
 </member><member name="F:Rico.LiveGridBase.dbConnection">\r
        <summary>\r
  Database connection object (used when data source is a SQL query)\r
  </summary>\r
 </member><member name="F:Rico.LiveGridBase.dbConnection">\r
        <summary>\r
  Database connection object (used when data source is a SQL query)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.canSortDefault">\r
+</member><member name="P:Rico.LiveGridBase.canSortDefault">\r
        <summary>\r
  Controls whether columns can be sorted (default: true). \r
  Sorting can be disabled for individual columns using the canSort property.\r
  </summary>\r
        <summary>\r
  Controls whether columns can be sorted (default: true). \r
  Sorting can be disabled for individual columns using the canSort property.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.canHideDefault">\r
+</member><member name="P:Rico.LiveGridBase.canHideDefault">\r
        <summary>\r
  Controls whether columns can be hidden/shown (default: true). \r
  Hide/show can be disabled for individual columns using the canHide property.\r
  </summary>\r
        <summary>\r
  Controls whether columns can be hidden/shown (default: true). \r
  Hide/show can be disabled for individual columns using the canHide property.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.canFilterDefault">\r
+</member><member name="P:Rico.LiveGridBase.canFilterDefault">\r
        <summary>\r
  Controls whether columns can be filtered (default: true). \r
  Filtering can be disabled for individual columns using the canFilter property.\r
  </summary>\r
        <summary>\r
  Controls whether columns can be filtered (default: true). \r
  Filtering can be disabled for individual columns using the canFilter property.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.highlightElem">\r
+</member><member name="P:Rico.LiveGridBase.highlightElem">\r
        <summary>\r
  A string that specifies what gets highlighted/selected in the grid\r
  <list type="table">\r
        <summary>\r
  A string that specifies what gets highlighted/selected in the grid\r
  <list type="table">\r
@@ -195,7 +163,7 @@ Rico
                        <item><term>none</term><description>never highlight</description></item>\r
                </list>\r
        </summary>\r
                        <item><term>none</term><description>never highlight</description></item>\r
                </list>\r
        </summary>\r
-</member><member name="F:Rico.LiveGridBase.highlightMethod">\r
+</member><member name="P:Rico.LiveGridBase.highlightMethod">\r
        <summary>\r
  Method used to highlight cells and rows.\r
  <list type="table">\r
        <summary>\r
  Method used to highlight cells and rows.\r
  <list type="table">\r
@@ -204,115 +172,116 @@ Rico
                        <item><term>both</term><description>highlight using both outline and class</description></item>\r
                </list>\r
        </summary>\r
                        <item><term>both</term><description>highlight using both outline and class</description></item>\r
                </list>\r
        </summary>\r
-</member><member name="F:Rico.LiveGridBase.prefetchBuffer">\r
+</member><member name="P:Rico.LiveGridBase.prefetchBuffer">\r
        <summary>\r
  Load the buffer (and therefore the grid) on page load? (default: true)\r
  </summary>\r
        <summary>\r
  Load the buffer (and therefore the grid) on page load? (default: true)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.DisplayTimer">\r
+</member><member name="P:Rico.LiveGridBase.DisplayTimer">\r
        <summary>\r
  Display the session timer above the grid? (default: true)\r
  </summary>\r
        <summary>\r
  Display the session timer above the grid? (default: true)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.DisplayBookmark">\r
+</member><member name="P:Rico.LiveGridBase.DisplayBookmark">\r
        <summary>\r
  Display the grid bookmark, ie. "Listing records X - Y of Z" (default: true)\r
  </summary>\r
        <summary>\r
  Display the grid bookmark, ie. "Listing records X - Y of Z" (default: true)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.Caption">\r
+</member><member name="P:Rico.LiveGridBase.Caption">\r
        <summary>\r
  A caption for the grid, displayed next to the bookmark (default: nothing)\r
  </summary>\r
        <summary>\r
  A caption for the grid, displayed next to the bookmark (default: nothing)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.click">\r
+</member><member name="P:Rico.LiveGridBase.click">\r
        <summary>\r
  Javascript event handler called when the user left-clicks on a cell\r
  </summary>\r
        <summary>\r
  Javascript event handler called when the user left-clicks on a cell\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.dblclick">\r
+</member><member name="P:Rico.LiveGridBase.dblclick">\r
        <summary>\r
  Javascript event handler called when the user double-clicks on a cell\r
  </summary>\r
        <summary>\r
  Javascript event handler called when the user double-clicks on a cell\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.contextmenu">\r
+</member><member name="P:Rico.LiveGridBase.contextmenu">\r
        <summary>\r
  Javascript event handler called when the user right-clicks on a cell\r
  </summary>\r
        <summary>\r
  Javascript event handler called when the user right-clicks on a cell\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.beforeInit">\r
+</member><member name="P:Rico.LiveGridBase.beforeInit">\r
        <summary>\r
  A Javascript function to be called right before the grid is initialized.\r
  </summary>\r
        <summary>\r
  A Javascript function to be called right before the grid is initialized.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.afterInit">\r
+</member><member name="P:Rico.LiveGridBase.afterInit">\r
        <summary>\r
  A Javascript function to be called right after the grid is initialized.\r
  </summary>\r
        <summary>\r
  A Javascript function to be called right after the grid is initialized.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.TableFilter">\r
+</member><member name="P:Rico.LiveGridBase.TableFilter">\r
        <summary>\r
  For SQL data sources, this specifies a SQL condition clause to always be used when running the SQL query.\r
  </summary>\r
        <summary>\r
  For SQL data sources, this specifies a SQL condition clause to always be used when running the SQL query.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.saveColumnWidth">\r
+</member><member name="P:Rico.LiveGridBase.saveColumnWidth">\r
        <summary>\r
  Whenever the user adjusts a column width, should the new width be saved to the grid's cookie? (default: true)\r
  </summary>\r
        <summary>\r
  Whenever the user adjusts a column width, should the new width be saved to the grid's cookie? (default: true)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.saveColumnFilter">\r
+</member><member name="P:Rico.LiveGridBase.saveColumnFilter">\r
        <summary>\r
  Whenever the user filters a column, should the new filter be saved to the grid's cookie? (default: false)\r
  </summary>\r
        <summary>\r
  Whenever the user filters a column, should the new filter be saved to the grid's cookie? (default: false)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.saveColumnSort">\r
+</member><member name="P:Rico.LiveGridBase.saveColumnSort">\r
        <summary>\r
  Whenever the user sorts a column, should the new sort be saved to the grid's cookie? (default: false)\r
  </summary>\r
        <summary>\r
  Whenever the user sorts a column, should the new sort be saved to the grid's cookie? (default: false)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.cookieDays">\r
+</member><member name="P:Rico.LiveGridBase.cookieDays">\r
        <summary>\r
  Number of days before the grid's cookie expires. If you don't specify a value, \r
  then the cookie is only maintained for the current session.\r
  </summary>\r
        <summary>\r
  Number of days before the grid's cookie expires. If you don't specify a value, \r
  then the cookie is only maintained for the current session.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.DefaultSort">\r
+</member><member name="P:Rico.LiveGridBase.DefaultSort">\r
        <summary>\r
  For SQL data sources, this specifies the default way the data should be sorted. (default: use primary key)\r
        <summary>\r
  For SQL data sources, this specifies the default way the data should be sorted. (default: use primary key)\r
+ Can specify multiple columns separated by commas. Cannot be used to specify a calculation that contains commas.\r
  </summary>\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.maxPrint">\r
+</member><member name="P:Rico.LiveGridBase.maxPrint">\r
        <summary>\r
  The maximum number of rows that the user is allowed to Print/Export. Set to 0 to disable print/export.\r
  Default is to use the Rico client value (currently 5000).\r
  </summary>\r
        <summary>\r
  The maximum number of rows that the user is allowed to Print/Export. Set to 0 to disable print/export.\r
  Default is to use the Rico client value (currently 5000).\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.dndMgrIdx">\r
+</member><member name="P:Rico.LiveGridBase.dndMgrIdx">\r
        <summary>\r
  Specifies which drag-and-drop management zone should be used for drag operations (default: 0). \r
  This only needs to be specified if the web page uses multiple distinct zones.\r
  </summary>\r
        <summary>\r
  Specifies which drag-and-drop management zone should be used for drag operations (default: 0). \r
  This only needs to be specified if the web page uses multiple distinct zones.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.sessions">\r
+</member><member name="P:Rico.LiveGridBase.sessions">\r
        <summary>\r
  For SQL data sources, should the parsed query be stored in a session variable? This improves performance. (default: true)\r
  </summary>\r
        <summary>\r
  For SQL data sources, should the parsed query be stored in a session variable? This improves performance. (default: true)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.minPageRows">\r
+</member><member name="P:Rico.LiveGridBase.minPageRows">\r
        <summary>\r
  Minimum # of visible rows. Used only when visibleRows &lt; 0. (default: 2)\r
  </summary>\r
        <summary>\r
  Minimum # of visible rows. Used only when visibleRows &lt; 0. (default: 2)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.maxPageRows">\r
+</member><member name="P:Rico.LiveGridBase.maxPageRows">\r
        <summary>\r
  Maximum # of visible rows. Used only when visibleRows &lt; 0. (default: 50)\r
  </summary>\r
        <summary>\r
  Maximum # of visible rows. Used only when visibleRows &lt; 0. (default: 50)\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.ColGroupsOnTabHdr">\r
+</member><member name="P:Rico.LiveGridBase.ColGroupsOnTabHdr">\r
        <summary>\r
  Set to 'true' for ColumnGroup labels to be used as secondary headings. \r
  In LiveGrid Edit, it may be set to 'false' so that ColumnGroup labels are only used on the input form.\r
  Default: true.\r
  </summary>\r
        <summary>\r
  Set to 'true' for ColumnGroup labels to be used as secondary headings. \r
  In LiveGrid Edit, it may be set to 'false' so that ColumnGroup labels are only used on the input form.\r
  Default: true.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.sendDebugMsgs">\r
+</member><member name="P:Rico.LiveGridBase.sendDebugMsgs">\r
        <summary>\r
  Send details of sql parsing/execution in ajax response? (true/false)\r
  Default is to follow the debug value in web.config\r
  </summary>\r
        <summary>\r
  Send details of sql parsing/execution in ajax response? (true/false)\r
  Default is to follow the debug value in web.config\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.LogSqlOnError">\r
+</member><member name="P:Rico.LiveGridBase.LogSqlOnError">\r
        <summary>\r
  Include sql statement in results if an error occurs (true/false)\r
  Default is to follow the debug value in web.config\r
  </summary>\r
        <summary>\r
  Include sql statement in results if an error occurs (true/false)\r
  Default is to follow the debug value in web.config\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.fmt">\r
+</member><member name="P:Rico.LiveGridBase.fmt">\r
        <summary>\r
  Format of data returned by AJAX calls, either "xml" or "json" (defaul: xml).\r
  </summary>\r
        <summary>\r
  Format of data returned by AJAX calls, either "xml" or "json" (defaul: xml).\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.largeBufferSize">\r
+</member><member name="P:Rico.LiveGridBase.largeBufferSize">\r
        <summary>\r
  This property influences the size of the client buffer and AJAX fetch size.\r
  Default value is -1, which means use the Rico client default value.\r
  </summary>\r
        <summary>\r
  This property influences the size of the client buffer and AJAX fetch size.\r
  Default value is -1, which means use the Rico client default value.\r
  </summary>\r
-</member><member name="F:Rico.LiveGridBase.requestParameters">\r
+</member><member name="P:Rico.LiveGridBase.requestParameters">\r
        <summary>\r
  Optional parameters to be passed along during the AJAX call\r
  </summary>\r
        <summary>\r
  Optional parameters to be passed along during the AJAX call\r
  </summary>\r
@@ -341,6 +310,7 @@ Rico
  When using a SQL data source there is no need to set this property, \r
  as AJAX data fetches are sent back to the originating script by default.\r
  When setting this property to a URL, make sure the URL is enclosed in single quotes.\r
  When using a SQL data source there is no need to set this property, \r
  as AJAX data fetches are sent back to the originating script by default.\r
  When setting this property to a URL, make sure the URL is enclosed in single quotes.\r
+ If not enclosed in quotes, it is treated as the name of a Javascript function.\r
  </summary>\r
 </member><member name="P:Rico.LiveGridBase.rows">\r
        <summary>\r
  </summary>\r
 </member><member name="P:Rico.LiveGridBase.rows">\r
        <summary>\r
@@ -353,13 +323,32 @@ Rico
                        <item><description>-4: size grid to its parent node in the DOM</description></item>\r
                </list>\r
        </summary>\r
                        <item><description>-4: size grid to its parent node in the DOM</description></item>\r
                </list>\r
        </summary>\r
+</member><member name="P:Rico.LiveGridBase.action">\r
+       <summary>\r
+ Returns a string indicating the current action being taken by the grid control.\r
+ <list type="bullet">\r
+                       <item><description>table: default action. If no other grid on the page is processing an AJAX request, then this grid will be rendered to the client with a combination of html, css, and javascript.</description></item>\r
+                       <item><description>query: grid will process an AJAX query request during the prerender phase. This includes exports to Excel or HTML.</description></item>\r
+                       <item><description>ins: grid will process an AJAX insert record request during the prerender phase (LiveGridEdit only).</description></item>\r
+                       <item><description>upd: grid will process an AJAX update record request during the prerender phase (LiveGridEdit only).</description></item>\r
+                       <item><description>del: grid will process an AJAX delete record request during the prerender phase (LiveGridEdit only).</description></item>\r
+               </list>\r
+       </summary>\r
+</member><member name="P:Rico.LiveGridBase.IsAjaxRequest">\r
+       <summary>\r
+ Returns true if the grid is processing an AJAX request.\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridBase.CurrentField">\r
+       <summary>\r
+ Returns the column object for the last column in the grid.\r
+ </summary>\r
 </member><member name="F:Rico.LiveGridBase.ColGroups">\r
        <summary>\r
  Collection of ColumnGroup objects, which define the headings used above each group of columns.\r
  </summary>\r
 </member><member name="F:Rico.LiveGridBase.Tables">\r
        <summary>\r
 </member><member name="F:Rico.LiveGridBase.ColGroups">\r
        <summary>\r
  Collection of ColumnGroup objects, which define the headings used above each group of columns.\r
  </summary>\r
 </member><member name="F:Rico.LiveGridBase.Tables">\r
        <summary>\r
- Defines the tables used by the LiveGrid. The first table is primary/main table.\r
+ Defines the tables used by the LiveGrid. The first table is the primary/main table.\r
  </summary>\r
 </member><member name="M:Rico.LiveGridBase.ColClassName(System.Int32)">\r
        <summary>\r
  </summary>\r
 </member><member name="M:Rico.LiveGridBase.ColClassName(System.Int32)">\r
        <summary>\r
@@ -371,6 +360,15 @@ Rico
  Adds a new column to grid, returns column index\r
  </summary>\r
        <param name="ColumnObj"></param>\r
  Adds a new column to grid, returns column index\r
  </summary>\r
        <param name="ColumnObj"></param>\r
+</member><member name="M:Rico.LiveGridBase.AddCalculatedField(System.String,System.String,System.Int32,Rico.DataTypeValues)">\r
+       <summary>\r
+ Adds a new column to grid, returns Forumula object\r
+ </summary>\r
+       <param name="Heading"></param>\r
+       <param name="ColumnFormula"></param>\r
+       <param name="width"></param>\r
+       <param name="DataType"></param>\r
+       <returns></returns>\r
 </member><member name="M:Rico.LiveGridBase.escapeJSON(System.String)">\r
        <summary>\r
  Takes a given string and makes it JSON valid (http://json.org/)\r
 </member><member name="M:Rico.LiveGridBase.escapeJSON(System.String)">\r
        <summary>\r
  Takes a given string and makes it JSON valid (http://json.org/)\r
@@ -409,115 +407,12 @@ Rico
  Class to define a LiveGrid\r
  A LiveGrid buffers its data in a Javascript array and can retrieve that data via AJAX\r
  </summary>\r
  Class to define a LiveGrid\r
  A LiveGrid buffers its data in a Javascript array and can retrieve that data via AJAX\r
  </summary>\r
-</member><member name="P:Rico.TreeResponse.ErrorMsg">\r
-       <summary>\r
- May contain the text of an error message that occurred outside this control prior to rendering\r
- </summary>\r
-</member><member name="P:Rico.TreeResponse.dbConnection">\r
-       <summary>\r
- Database connection object. Required only if sqlText is used.\r
- </summary>\r
-</member><member name="P:Rico.TreeResponse.SqlText">\r
-       <summary>\r
- Optional sql query to execute, must return 5 columns matching WriteTreeRow parameters \r
- </summary>\r
-</member><member name="M:Rico.TreeResponse.WriteTreeRow(System.Object,System.Object,System.Object,System.Object,System.Object)">\r
-       <summary>\r
- Adds an entry that will be returned with the results. Often used to add the root node.\r
- </summary>\r
-       <param name="parentID">id of parent, "" if this is the root</param>\r
-       <param name="ID">id that uniquely identifies this node in the tree</param>\r
-       <param name="description">description displayed to the user</param>\r
-       <param name="containerORleaf">"L" or 0 = leaf, "C" or non-zero = container</param>\r
-       <param name="selectable">0=not selectable, 1=selectable</param>\r
-</member><member name="T:Rico.TreeResponse">\r
-       <summary>\r
- Use this class on a page that responds to AJAX requests from a Rico Tree Control\r
- This class automatically disables caching of the response and sets the response type to text/xml\r
- </summary>\r
-</member><member name="P:Rico.GridBase.gridVar">\r
-       <summary>\r
- Name of grid Javascript object\r
- </summary>\r
-</member><member name="P:Rico.GridBase.optionsVar">\r
-       <summary>\r
- Name of grid options Javascript object\r
- </summary>\r
-</member><member name="F:Rico.GridBase.AutoFilter">\r
-       <summary>\r
- If enabled, an additional row is added to the grid header where column filters are placed. \r
- See the EditCol.filterUI property to customize each column's filter.\r
- </summary>\r
-</member><member name="F:Rico.GridBase.FilterAllToken">\r
-       <summary>\r
- The token in select filters used to indicate "show all values" (default: "___ALL___").\r
- </summary>\r
-</member><member name="F:Rico.GridBase.defaultWidth">\r
-       <summary>\r
- if -1 (default), then use column heading width, otherwise this is the default width in pixels\r
- </summary>\r
-</member><member name="F:Rico.GridBase.allowColResize">\r
-       <summary>\r
- Allow user to resize columns? Default is true.\r
- </summary>\r
-</member><member name="F:Rico.GridBase.frozenColumns">\r
-       <summary>\r
- Number of frozen columns on the left (or right if direction=rtl). Default is 0.\r
- </summary>\r
-</member><member name="F:Rico.GridBase.RowLineHtEms">\r
-       <summary>\r
- Height of one line of text in ems. Default is 1.2, which should be fine for almost all situations.\r
- </summary>\r
-</member><member name="F:Rico.GridBase.windowResize">\r
-       <summary>\r
- Resize grid when browser window is resized? Default is true.\r
- </summary>\r
-</member><member name="P:Rico.GridBase.menuEvent">\r
-       <summary>\r
- Specifies when the grid's popup menu should be invoked \r
- </summary>\r
-</member><member name="P:Rico.GridBase.DefaultHdgStyle">\r
-       <summary>\r
- This holds the default style for headings. Use only if not using themes.\r
- </summary>\r
-</member><member name="F:Rico.GridBase.Styles">\r
-       <summary>\r
- Collection of styles used for individual headings.\r
- </summary>\r
-</member><member name="P:Rico.GridBase.HdgRowLines">\r
-       <summary>\r
- Lines of text displayed in each heading row\r
- </summary>\r
-</member><member name="P:Rico.GridBase.DefaultRowLines">\r
-       <summary>\r
- Lines of text displayed in each data row\r
- </summary>\r
-</member><member name="P:Rico.GridBase.OuterDivId">\r
-       <summary>\r
- Returns the id of the outermost grid container\r
- </summary>\r
-</member><member name="M:Rico.GridBase.GetColumnIdx(System.String)">\r
-       <summary>\r
- Returns the index of the column with the given id\r
- </summary>\r
-</member><member name="M:Rico.GridBase.GetColumn(System.String)">\r
-       <summary>\r
- Returns the column object with the given id\r
- </summary>\r
-</member><member name="M:Rico.GridBase.GridRules">\r
-       <summary>\r
- Returns the set of css rules that apply to this grid\r
- </summary>\r
-</member><member name="T:Rico.GridBase">\r
-       <summary>\r
- This class defines properties and functions used in SimpleGrid, LiveGrid and LiveGridEdit classes.\r
- </summary>\r
-</member><member name="F:Rico.LoadClient.ImgHeading">\r
+</member><member name="P:Rico.LoadClient.ImgHeading">\r
        <summary>\r
  Background image for grid headings and window titles.\r
  Should be left unset, as it is used only for the grayedout theme (in which case it is set automatically).\r
  </summary>\r
        <summary>\r
  Background image for grid headings and window titles.\r
  Should be left unset, as it is used only for the grayedout theme (in which case it is set automatically).\r
  </summary>\r
-</member><member name="F:Rico.LoadClient.BaseLib">\r
+</member><member name="P:Rico.LoadClient.BaseLib">\r
        <summary>\r
  The base Javascript library to load from http://ajax.googleapis.com/ajax/libs/, possible values include:\r
  <list type="bullet">\r
        <summary>\r
  The base Javascript library to load from http://ajax.googleapis.com/ajax/libs/, possible values include:\r
  <list type="bullet">\r
@@ -536,28 +431,28 @@ Rico
                </list>\r
                <para>Default value is "proto_min", which loads prototype 1.7 from the server control.</para>\r
        </summary>\r
                </list>\r
                <para>Default value is "proto_min", which loads prototype 1.7 from the server control.</para>\r
        </summary>\r
-</member><member name="F:Rico.LoadClient.Logging">\r
+</member><member name="P:Rico.LoadClient.Logging">\r
        <summary>\r
  Enable Javascript console logging? Useful for debugging. Default is false.\r
  </summary>\r
        <summary>\r
  Enable Javascript console logging? Useful for debugging. Default is false.\r
  </summary>\r
-</member><member name="F:Rico.LoadClient.HTML5">\r
+</member><member name="P:Rico.LoadClient.HTML5">\r
        <summary>\r
  Enable HTML5 web form elements in browsers that support them. \r
  Default is false because the quality of the HTML5 web form elements is uneven across browsers.\r
  </summary>\r
        <summary>\r
  Enable HTML5 web form elements in browsers that support them. \r
  Default is false because the quality of the HTML5 web form elements is uneven across browsers.\r
  </summary>\r
-</member><member name="F:Rico.LoadClient.Language">\r
+</member><member name="P:Rico.LoadClient.Language">\r
        <summary>\r
  Best left unset, in which case language will be set automatically based on request's HTTP_ACCEPT_LANGUAGE\r
  However, if you want to present the same locale settings to all users, then you can set this value to force the desired locale.\r
  </summary>\r
        <summary>\r
  Best left unset, in which case language will be set automatically based on request's HTTP_ACCEPT_LANGUAGE\r
  However, if you want to present the same locale settings to all users, then you can set this value to force the desired locale.\r
  </summary>\r
-</member><member name="F:Rico.LoadClient.LoadBaseLib">\r
+</member><member name="P:Rico.LoadClient.LoadBaseLib">\r
        <summary>\r
  Load base Javascript library (prototype, jQuery, etc)?\r
  Default is true.\r
  Set to false if library is being loaded another way. In this case, a BaseLib value is still required to indicate\r
  which library Rico should connect to.\r
  </summary>\r
        <summary>\r
  Load base Javascript library (prototype, jQuery, etc)?\r
  Default is true.\r
  Set to false if library is being loaded another way. In this case, a BaseLib value is still required to indicate\r
  which library Rico should connect to.\r
  </summary>\r
-</member><member name="F:Rico.LoadClient.Striping">\r
+</member><member name="P:Rico.LoadClient.Striping">\r
        <summary>\r
  Apply row striping to LiveGrids? Default is true. Applies only when themes are used.\r
  </summary>\r
        <summary>\r
  Apply row striping to LiveGrids? Default is true. Applies only when themes are used.\r
  </summary>\r
@@ -566,12 +461,17 @@ Rico
  Comma separated list of 2 letter locales that Rico supports.\r
  Do not set unless you have developed your own locale file.\r
  </summary>\r
  Comma separated list of 2 letter locales that Rico supports.\r
  Do not set unless you have developed your own locale file.\r
  </summary>\r
-</member><member name="F:Rico.LoadClient.jQueryThemePath">\r
+</member><member name="P:Rico.LoadClient.jQueryThemePath">\r
        <summary>\r
  URL to load jQuery themes from.\r
  Default is http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/\r
  Override this value if you have a jQuery theme on your own server.\r
  </summary>\r
        <summary>\r
  URL to load jQuery themes from.\r
  Default is http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/\r
  Override this value if you have a jQuery theme on your own server.\r
  </summary>\r
+</member><member name="M:Rico.LoadClient.RegisterGrid(Rico.GridBase)">\r
+       <summary>\r
+ Called automatically from Rico grids on the page\r
+ </summary>\r
+       <param name="grid"></param>\r
 </member><member name="P:Rico.LoadClient.LoadedLanguage">\r
        <summary>\r
  Returns the 2 character string representing the Rico locale file that was actually used on the client.\r
 </member><member name="P:Rico.LoadClient.LoadedLanguage">\r
        <summary>\r
  Returns the 2 character string representing the Rico locale file that was actually used on the client.\r
@@ -600,7 +500,7 @@ Rico
        </summary>\r
 </member><member name="M:Rico.LoadClient.InitLiveGrids(System.Web.UI.HtmlTextWriter)">\r
        <summary>\r
        </summary>\r
 </member><member name="M:Rico.LoadClient.InitLiveGrids(System.Web.UI.HtmlTextWriter)">\r
        <summary>\r
- Initialize all grids on the page\r
+ Initialize all LiveGrids on the page\r
  Initialize grids with fixed # of rows first,\r
  then initialize grids with variable # of rows\r
  </summary>\r
  Initialize grids with fixed # of rows first,\r
  then initialize grids with variable # of rows\r
  </summary>\r
@@ -622,224 +522,112 @@ Rico
        <summary>\r
  Loads the various Javascript, CSS, and image files required to make Rico function.\r
  </summary>\r
        <summary>\r
  Loads the various Javascript, CSS, and image files required to make Rico function.\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.bold">\r
+</member><member name="P:Rico.SimpleCol.Width">\r
        <summary>\r
        <summary>\r
- True if the text should be displayed using a bold font\r
+ Initial width of the column in pixels. Default is to use SimpleGrid.defaultWidth.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.italic">\r
+</member><member name="T:Rico.SimpleCol">\r
        <summary>\r
        <summary>\r
- True if the text should be displayed in italics\r
+ Defines a column in a SimpleGrid\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.underline">\r
+</member><member name="P:Rico.Column.canSort">\r
        <summary>\r
        <summary>\r
- True if the text should be underlined\r
+ Is the user allowed to sort the column? Default is true.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.fontsize">\r
+</member><member name="P:Rico.Column.canDrag">\r
        <summary>\r
        <summary>\r
- Font size in points\r
+ Is the user allowed to drag a column value? Default is false.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.GridOnly">\r
+</member><member name="P:Rico.Column.canFilter">\r
        <summary>\r
        <summary>\r
- If true, then style is only applied to the grid, not to html or Excel exports\r
+ Is the user allowed to filter the column? Default is true.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.BackColor">\r
+</member><member name="P:Rico.Column.noResize">\r
        <summary>\r
        <summary>\r
Specifies the background color. One of the 16 standard color names, or #rrggbb.\r
Prevent column from being resized? Default is false.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.ForeColor">\r
+</member><member name="P:Rico.Column.control">\r
        <summary>\r
        <summary>\r
- Specifies the font color. One of the 16 standard color names, or #rrggbb.\r
+ Javascript code to create a control object, which changes the way the column data is rendered.\r
+ The disadvantage of using this approach is that the altered rendering does not get reflected in exports.\r
+ A set of controls is defined in ricoLiveGridControls.js or the developer can create their own.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.HorizontalAlign">\r
+</member><member name="P:Rico.Column.filterUI">\r
        <summary>\r
        <summary>\r
- Specifies horizontal alignment: Left, Right, Center, or NotSet (default)\r
+ If the AutoFilter option is enabled for the grid, then filterUI will control how each column is filtered. If filterUI is:\r
+ <list type="bullet">\r
+                       <item><description>null or omitted, then no filter is displayed for the column.</description></item>\r
+                       <item><description>'t' - will generate a text box filter and the records being displayed are filtered as the user types. May be followed by a number to indicate the size of the text box (default size is 10). </description></item>\r
+                       <item><description>'s' - will generate a select list filter with all possible column values contained in the list. Populated using a 'select distinct' query if the grid's source is a SQL query.</description></item>\r
+                       <item><description>'m' - will generate multi-select checklist filter, with a checkbox next to each item.</description></item>\r
+                       <item><description>'n' - will generate a select list filter. By default the list will contain "&lt; 0", "= 0", "&gt; 0". However, the list can be controlled by following "n" with any combination of "-", "0", or "+".</description></item>\r
+               </list>\r
+       </summary>\r
+</member><member name="P:Rico.Column.filterColId">\r
+       <summary>\r
+ This setting allows the filterUI to filter a different column than where it is displayed.\r
+ This is particularly useful for dates, where you can show a year selection on an OrderDate date column for example,\r
+ but actually have it filter a hidden column OrderYear=year(OrderDate).\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.Overflow">\r
+</member><member name="P:Rico.Column.ConfirmDeleteColumn">\r
        <summary>\r
        <summary>\r
- Normally, overflowed content is hidden, but this allows content in the cell to scroll.\r
- Only applies to the grid, not to exports.\r
+ The text content of this column will be included in delete confirmation messages.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.StyleBase.CssStyle">\r
+</member><member name="P:Rico.Column.multiplier">\r
        <summary>\r
        <summary>\r
- Used internally. Returns the style properties as a css string.\r
+ If column is a number, this value can be used to multiply the database value by a factor before displaying it in the grid.\r
+ Default is 1. Automatically set to 100 if DataType is percent.\r
  </summary>\r
  </summary>\r
-</member><member name="M:Rico.StyleBase.UnwrappedXlStyle">\r
+</member><member name="P:Rico.Column.decPlaces">\r
        <summary>\r
        <summary>\r
- Used internally. Returns the style properties as an Excel XML string without the style tag.\r
+ If column is a number, this is the number of digits displayed to the right of the decimal point. Default is 0.\r
+ If DataType is dollar or euro, then decPlaces is automatically set to 2.\r
  </summary>\r
  </summary>\r
-</member><member name="T:Rico.StyleBase">\r
+</member><member name="P:Rico.Column.thouSep">\r
        <summary>\r
        <summary>\r
Base class for all style classes as well as the Column class.\r
If column is a number, display the value with a thousands separator? Default is true.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.Style.StyleID">\r
+</member><member name="P:Rico.Column.negSign">\r
        <summary>\r
        <summary>\r
- StyleID's should not contain spaces or other special characters.\r
- <list type="bullet">\r
-                       <item><description>Use a StyleID of Default to style the entire grid</description></item>\r
-                       <item><description>Use a StyleID of DefaultHdg to style the grid heading</description></item>\r
-                       <item><description>Use a StyleID of ricoLG_evenRow and/or ricoLG_oddRow to stripe the grid (striping does not get exported).</description></item>\r
-                       <item><description>Use a StyleID of ricoLG_selection to set the styling for the selected row.</description></item>\r
+ Specifies how negative numbers should be displayed. Possible values:\r
+ <list>\r
+                       <item><description>L=leading minus (default)</description></item>\r
+                       <item><description>T=trailing minus</description></item>\r
+                       <item><description>P=parentheses</description></item>\r
                </list>\r
        </summary>\r
                </list>\r
        </summary>\r
-</member><member name="M:Rico.Style.CssRule">\r
+</member><member name="P:Rico.Column.prefix">\r
        <summary>\r
        <summary>\r
- Returns the style properties as a CSS rule\r
+ If column is a number, this string is prepended to the number before display.\r
+ Useful for currency symbols.\r
  </summary>\r
  </summary>\r
-</member><member name="M:Rico.Style.WrappedXlStyle">\r
+</member><member name="P:Rico.Column.suffix">\r
        <summary>\r
        <summary>\r
- Returns the style properties as an Excel XML style, including the style tag\r
+ If column is a number, this string is appended to the number before display.\r
+ Useful for percentages and temperature values. Automatically set to % if DataType is percent.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.Style.xlNumberFormat">\r
+</member><member name="P:Rico.Column.HdgStyleID">\r
        <summary>\r
        <summary>\r
- For SimpleGrids only\r
+ Used to give the column heading a specific style.\r
+ In most cases this is not necessary, as the heading will be styled according to the theme.\r
  </summary>\r
  </summary>\r
-</member><member name="P:Rico.Style.NumberFormat">\r
+</member><member name="P:Rico.Column.isNullable">\r
        <summary>\r
        <summary>\r
- For SimpleGrids only\r
+ Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
  </summary>\r
  </summary>\r
-</member><member name="M:Rico.Style.WrappedXlStyleNF">\r
+</member><member name="P:Rico.Column.Writeable">\r
        <summary>\r
        <summary>\r
- Returns the style properties plus number format as an Excel XML style, including the style tag\r
+ Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
  </summary>\r
  </summary>\r
-</member><member name="T:Rico.Style">\r
-       <summary>\r
- Defines a style that can be applied to a grid cell.\r
- Using a StyleID of ricoLG_evenRow or ricoLG_oddRow will stripe the grid, however striping does not get exported.\r
- Using a StyleID of ricoLG_selection will set the styling for the selected row.\r
- </summary>\r
-</member><member name="M:Rico.StyleDictionary.Add(Rico.Style)">\r
-       <summary>\r
- Adds a Style object to the collection\r
- </summary>\r
-       <param name="new_style"></param>\r
-</member><member name="P:Rico.StyleDictionary.Item(System.String)">\r
-       <summary>\r
- Returns a Style object from the collection based on the style's StyleID\r
- </summary>\r
-       <param name="StyleId"></param>\r
-</member><member name="P:Rico.StyleDictionary.Keys">\r
-       <summary>\r
- Returns all of the StyleID's in the collection\r
- </summary>\r
-</member><member name="P:Rico.StyleDictionary.Values">\r
-       <summary>\r
- Returns all of the Style objects in the collection\r
- </summary>\r
-</member><member name="M:Rico.StyleDictionary.Contains(System.String)">\r
-       <summary>\r
- Returns true if the StyleID is in the collection\r
- </summary>\r
-       <param name="StyleId"></param>\r
-</member><member name="M:Rico.StyleDictionary.Remove(System.String)">\r
-       <summary>\r
- Removes the Style object with the given StyleID from the collection\r
- </summary>\r
-       <param name="StyleId"></param>\r
-</member><member name="T:Rico.StyleDictionary">\r
-       <summary>\r
- Container for a collection of Style objects\r
- </summary>\r
-</member><member name="P:Rico.SimpleCol.Width">\r
-       <summary>\r
- Initial width of the column in pixels. Default is to use SimpleGrid.defaultWidth.\r
- </summary>\r
-</member><member name="T:Rico.SimpleCol">\r
-       <summary>\r
- Defines a column in a SimpleGrid\r
- </summary>\r
-</member><member name="F:Rico.Column.canSort">\r
-       <summary>\r
- Is the user allowed to sort the column? Default is true.\r
- </summary>\r
-</member><member name="F:Rico.Column.canDrag">\r
-       <summary>\r
- Is the user allowed to drag a column value? Default is false.\r
- </summary>\r
-</member><member name="F:Rico.Column.canFilter">\r
-       <summary>\r
- Is the user allowed to filter the column? Default is true.\r
- </summary>\r
-</member><member name="F:Rico.Column.control">\r
-       <summary>\r
- Javascript code to create a control object, which changes the way the column data is rendered.\r
- The disadvantage of using this approach is that the altered rendering does not get reflected in exports.\r
- A set of controls is defined in ricoLiveGridControls.js or the developer can create their own.\r
- </summary>\r
-</member><member name="F:Rico.Column.filterUI">\r
-       <summary>\r
- If the AutoFilter option is enabled for the grid, then filterUI will control how each column is filtered. If filterUI is:\r
- <list type="bullet">\r
-                       <item><description>null or omitted, then no filter is displayed for the column.</description></item>\r
-                       <item><description>'t' - will generate a text box filter and the records being displayed are filtered as the user types. May be followed by a number to indicate the size of the text box (default size is 10). </description></item>\r
-                       <item><description>'s' - will generate a select list filter with all possible column values contained in the list. Populated using a 'select distinct' query if the grid's source is a SQL query.</description></item>\r
-                       <item><description>'m' - will generate multi-select checklist filter, with a checkbox next to each item.</description></item>\r
-               </list>\r
-       </summary>\r
-</member><member name="F:Rico.Column.filterColId">\r
-       <summary>\r
- This setting allows the filterUI to filter a different column than where it is displayed.\r
- This is particularly useful for dates, where you can show a year selection on an OrderDate date column for example,\r
- but actually have it filter a hidden column OrderYear=year(OrderDate).\r
- </summary>\r
-</member><member name="F:Rico.Column.ConfirmDeleteColumn">\r
-       <summary>\r
- The text content of this column will be included in delete confirmation messages.\r
- </summary>\r
-</member><member name="F:Rico.Column.multiplier">\r
-       <summary>\r
- If column is a number, this value can be used to multiply the database value by a factor before displaying it in the grid.\r
- Default is 1. Automatically set to 100 if DataType is percent.\r
- </summary>\r
-</member><member name="F:Rico.Column.decPlaces">\r
-       <summary>\r
- If column is a number, this is the number of digits displayed to the right of the decimal point. Default is 0.\r
- If DataType is dollar or euro, then decPlaces is automatically set to 2.\r
- </summary>\r
-</member><member name="F:Rico.Column.thouSep">\r
-       <summary>\r
- If column is a number, display the value with a thousands separator? Default is true.\r
- </summary>\r
-</member><member name="F:Rico.Column.negSign">\r
-       <summary>\r
- Specifies how negative numbers should be displayed. Possible values:\r
- <list>\r
-                       <item><description>L=leading minus (default)</description></item>\r
-                       <item><description>T=trailing minus</description></item>\r
-                       <item><description>P=parentheses</description></item>\r
-               </list>\r
-       </summary>\r
-</member><member name="F:Rico.Column.prefix">\r
-       <summary>\r
- If column is a number, this string is prepended to the number before display.\r
- Useful for currency symbols.\r
- </summary>\r
-</member><member name="F:Rico.Column.suffix">\r
-       <summary>\r
- If column is a number, this string is appended to the number before display.\r
- Useful for percentages and temperature values. Automatically set to % if DataType is percent.\r
- </summary>\r
-</member><member name="F:Rico.Column.HdgStyleID">\r
-       <summary>\r
- Used to give the column heading a specific style.\r
- In most cases this is not necessary, as the heading will be styled according to the theme.\r
- </summary>\r
-</member><member name="F:Rico.Column.isNullable">\r
+</member><member name="P:Rico.Column.isKey">\r
        <summary>\r
  Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
  </summary>\r
        <summary>\r
  Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
  </summary>\r
-</member><member name="F:Rico.Column.Writeable">\r
+</member><member name="P:Rico.Column.Length">\r
        <summary>\r
  Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
  </summary>\r
        <summary>\r
  Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
  </summary>\r
-</member><member name="F:Rico.Column.isKey">\r
-       <summary>\r
- Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
- </summary>\r
-</member><member name="F:Rico.Column.Length">\r
-       <summary>\r
- Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
- </summary>\r
-</member><member name="F:Rico.Column.TypeName">\r
+</member><member name="P:Rico.Column.TypeName">\r
        <summary>\r
  Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
  </summary>\r
        <summary>\r
  Database property - set automatically by LiveGrid.GetColumnInfoFromDb()\r
  </summary>\r
@@ -871,7 +659,7 @@ Rico
        <summary>\r
  Base class for a LiveGrid column\r
  </summary>\r
        <summary>\r
  Base class for a LiveGrid column\r
  </summary>\r
-</member><member name="F:Rico.FormulaCol.Formula">\r
+</member><member name="P:Rico.FormulaCol.Formula">\r
        <summary>\r
  SQL expression\r
  </summary>\r
        <summary>\r
  SQL expression\r
  </summary>\r
@@ -879,11 +667,12 @@ Rico
        <summary>\r
  Calculated Column\r
  </summary>\r
        <summary>\r
  Calculated Column\r
  </summary>\r
-</member><member name="F:Rico.TableCol.ColName">\r
+</member><member name="P:Rico.TableCol.ColName">\r
        <summary>\r
  Column name in table or view\r
        <summary>\r
  Column name in table or view\r
+ If not specified, use the control's ID instead\r
  </summary>\r
  </summary>\r
-</member><member name="F:Rico.TableCol.TblAlias">\r
+</member><member name="P:Rico.TableCol.TblAlias">\r
        <summary>\r
  This should match the TblAlias of one of the Table objects specified for the grid.\r
  If unspecified, the primary table or view is assumed.\r
        <summary>\r
  This should match the TblAlias of one of the Table objects specified for the grid.\r
  If unspecified, the primary table or view is assumed.\r
@@ -896,7 +685,7 @@ Rico
        <summary>\r
  Column from table or view\r
  </summary>\r
        <summary>\r
  Column from table or view\r
  </summary>\r
-</member><member name="F:Rico.EditCol.pattern">\r
+</member><member name="P:Rico.EditCol.pattern">\r
        <summary>\r
  Regular expression used to validate the user input. User entries will be checked to ensure they match the pattern specified. \r
  There are a few special values:\r
        <summary>\r
  Regular expression used to validate the user input. User entries will be checked to ensure they match the pattern specified. \r
  There are a few special values:\r
@@ -908,35 +697,35 @@ Rico
                        <item><term>int-signed</term><description>tests for a valid signed integer number (this is the default when EntryType is "I")</description></item>\r
                </list>\r
        </summary>\r
                        <item><term>int-signed</term><description>tests for a valid signed integer number (this is the default when EntryType is "I")</description></item>\r
                </list>\r
        </summary>\r
-</member><member name="F:Rico.EditCol.min">\r
+</member><member name="P:Rico.EditCol.min">\r
        <summary>\r
  Sets the minimum allowable value in a numeric or date field.\r
  For dates, the value should be in ISO-8601 format.\r
  </summary>\r
        <summary>\r
  Sets the minimum allowable value in a numeric or date field.\r
  For dates, the value should be in ISO-8601 format.\r
  </summary>\r
-</member><member name="F:Rico.EditCol.max">\r
+</member><member name="P:Rico.EditCol.max">\r
        <summary>\r
  Sets the maximum allowable value in a numeric or date field.\r
  For dates, the value should be in ISO-8601 format.\r
  </summary>\r
        <summary>\r
  Sets the maximum allowable value in a numeric or date field.\r
  For dates, the value should be in ISO-8601 format.\r
  </summary>\r
-</member><member name="F:Rico.EditCol.Help">\r
+</member><member name="P:Rico.EditCol.Help">\r
        <summary>\r
  Provides information to help the user understand the meaning of the field.\r
  Fields with help text will be display with a blue "i" icon next to the field name.\r
  When the user hovers their cursor over the icon, the help text will be displayed.\r
  </summary>\r
        <summary>\r
  Provides information to help the user understand the meaning of the field.\r
  Fields with help text will be display with a blue "i" icon next to the field name.\r
  When the user hovers their cursor over the icon, the help text will be displayed.\r
  </summary>\r
-</member><member name="F:Rico.EditCol.TxtAreaRows">\r
+</member><member name="P:Rico.EditCol.TxtAreaRows">\r
        <summary>\r
  For columns with entry type "TA", this is # of rows to display in the textarea when in form view (default 4)\r
  </summary>\r
        <summary>\r
  For columns with entry type "TA", this is # of rows to display in the textarea when in form view (default 4)\r
  </summary>\r
-</member><member name="F:Rico.EditCol.TxtAreaCols">\r
+</member><member name="P:Rico.EditCol.TxtAreaCols">\r
        <summary>\r
  For columns with entry type "TA", this is # of columns to display in the textarea when in form view (default 80)\r
  </summary>\r
        <summary>\r
  For columns with entry type "TA", this is # of columns to display in the textarea when in form view (default 80)\r
  </summary>\r
-</member><member name="F:Rico.EditCol.ColData">\r
+</member><member name="P:Rico.EditCol.ColData">\r
        <summary>\r
  column's default value in the form view\r
  </summary>\r
        <summary>\r
  column's default value in the form view\r
  </summary>\r
-</member><member name="F:Rico.EditCol.SelectSql">\r
+</member><member name="P:Rico.EditCol.SelectSql">\r
        <summary>\r
  Specifies the SQL select statement to use for EntryTypes of SL, CL, and RL. \r
  The select statement should return 2 columns: the first being the code and the second being the text value/description. \r
        <summary>\r
  Specifies the SQL select statement to use for EntryTypes of SL, CL, and RL. \r
  The select statement should return 2 columns: the first being the code and the second being the text value/description. \r
@@ -945,11 +734,11 @@ Rico
  EntryType="SL" ColName="CustID" SelectSql="select ID,Name from Customers"\r
  </code>\r
        </summary>\r
  EntryType="SL" ColName="CustID" SelectSql="select ID,Name from Customers"\r
  </code>\r
        </summary>\r
-</member><member name="F:Rico.EditCol.SelectCtl">\r
+</member><member name="P:Rico.EditCol.SelectCtl">\r
        <summary>\r
  For entry type "CL", this property specifies the id of the custom control.\r
  </summary>\r
        <summary>\r
  For entry type "CL", this property specifies the id of the custom control.\r
  </summary>\r
-</member><member name="F:Rico.EditCol.SelectFilter">\r
+</member><member name="P:Rico.EditCol.SelectFilter">\r
        <summary>\r
  SelectSql serves 2 purposes. First, it is used to retrieve the appropriate data to display in the grid. \r
  Second, it is used to populate the values in the select box (SL) or radio buttons (RL) on the pop-up form. \r
        <summary>\r
  SelectSql serves 2 purposes. First, it is used to retrieve the appropriate data to display in the grid. \r
  Second, it is used to populate the values in the select box (SL) or radio buttons (RL) on the pop-up form. \r
@@ -961,7 +750,7 @@ Rico
  SelectFilter="CreditHold='NO'"\r
  </code>\r
        </summary>\r
  SelectFilter="CreditHold='NO'"\r
  </code>\r
        </summary>\r
-</member><member name="F:Rico.EditCol.SelectValues">\r
+</member><member name="P:Rico.EditCol.SelectValues">\r
        <summary>\r
  Specifies the choices the user sees in form view for EntryTypes of N, S, and R. \r
  If supplied, then this should be a string of comma-separated values. \r
        <summary>\r
  Specifies the choices the user sees in form view for EntryTypes of N, S, and R. \r
  If supplied, then this should be a string of comma-separated values. \r
@@ -970,36 +759,39 @@ Rico
  SelectValues="Y,N"\r
  </code>\r
        </summary>\r
  SelectValues="Y,N"\r
  </code>\r
        </summary>\r
-</member><member name="F:Rico.EditCol.SelectRows">\r
+</member><member name="P:Rico.EditCol.SelectRows">\r
        <summary>\r
  Specifies the number of rows to display in drop down select boxes for entry types S and SL.\r
  Default is to let the browser decide.\r
  </summary>\r
        <summary>\r
  Specifies the number of rows to display in drop down select boxes for entry types S and SL.\r
  Default is to let the browser decide.\r
  </summary>\r
-</member><member name="F:Rico.EditCol.FilterFlag">\r
+</member><member name="P:Rico.EditCol.FilterFlag">\r
        <summary>\r
  If true, then the grid is filtered by the default value (ColData) for this column (default=false)\r
  </summary>\r
        <summary>\r
  If true, then the grid is filtered by the default value (ColData) for this column (default=false)\r
  </summary>\r
-</member><member name="F:Rico.EditCol.InsertOnly">\r
+</member><member name="P:Rico.EditCol.InsertOnly">\r
        <summary>\r
  If true, then only write this field to the database when peforming an insert (default=false).\r
  </summary>\r
        <summary>\r
  If true, then only write this field to the database when peforming an insert (default=false).\r
  </summary>\r
-</member><member name="F:Rico.EditCol.UpdateOnly">\r
+</member><member name="P:Rico.EditCol.UpdateOnly">\r
        <summary>\r
  If true, then only write this field to the database when peforming an update (default=false).\r
  </summary>\r
        <summary>\r
  If true, then only write this field to the database when peforming an update (default=false).\r
  </summary>\r
-</member><member name="F:Rico.EditCol.ReadOnly">\r
+</member><member name="P:Rico.EditCol.ReadOnly">\r
        <summary>\r
        <summary>\r
- If true, data is displayed on the entry form but cannot be changed, text is gray (default=false). \r
- Does not apply to entry types of S, SL, N, R, RL -- use FormView="hidden" instead.\r
+ If true, data is displayed on the entry form but cannot be changed AND IS NOT WRITTEN TO THE DATABASE.\r
+ If data must be written to the database, either use FormView="false" (if data should be displayed\r
+ in the grid), or EntryType="H" (if the grid column should be hidden).\r
+ Text is gray (default=false). \r
+ Does not apply to entry types of S, SL, N, R, RL.\r
  </summary>\r
  </summary>\r
-</member><member name="F:Rico.EditCol.FormView">\r
+</member><member name="P:Rico.EditCol.FormView">\r
        <summary>\r
                <list type="table">\r
                        <item><term>True</term><description>Item is shown on the entry form (default)</description></item>\r
                        <item><term>False</term><description>Item is not shown on the form</description></item>\r
                </list>\r
        </summary>\r
        <summary>\r
                <list type="table">\r
                        <item><term>True</term><description>Item is shown on the entry form (default)</description></item>\r
                        <item><term>False</term><description>Item is not shown on the form</description></item>\r
                </list>\r
        </summary>\r
-</member><member name="F:Rico.EditCol.AddQuotes">\r
+</member><member name="P:Rico.EditCol.AddQuotes">\r
        <summary>\r
  When false, the column value will be left unquoted when inserting or updating the database. \r
  Default is false for entry type TS, and true for all other entry types.\r
        <summary>\r
  When false, the column value will be left unquoted when inserting or updating the database. \r
  Default is false for entry type TS, and true for all other entry types.\r
@@ -1009,13 +801,13 @@ Rico
  ColName="LastEditUser" EntryType="H" AddQuotes="false" ColData="suser_sname()"\r
  </code>\r
        </summary>\r
  ColName="LastEditUser" EntryType="H" AddQuotes="false" ColData="suser_sname()"\r
  </code>\r
        </summary>\r
-</member><member name="F:Rico.EditCol.MultiSelect">\r
+</member><member name="P:Rico.EditCol.MultiSelect">\r
        <summary>\r
  If true, the user is allowed to select multiple values.\r
  For entry types R and RL, this changes the input from radio buttons to checkboxes.\r
  Default is false.\r
  </summary>\r
        <summary>\r
  If true, the user is allowed to select multiple values.\r
  For entry types R and RL, this changes the input from radio buttons to checkboxes.\r
  Default is false.\r
  </summary>\r
-</member><member name="F:Rico.EditCol.DescriptionCol">\r
+</member><member name="P:Rico.EditCol.DescriptionCol">\r
        <summary>\r
  Normally RL and SL columns are used for foreign keys, and only the key is stored in the table, not the foreign key's associated\r
  name or description. However, by specifying a value for DescriptionCol, you can store the associated description as well.\r
        <summary>\r
  Normally RL and SL columns are used for foreign keys, and only the key is stored in the table, not the foreign key's associated\r
  name or description. However, by specifying a value for DescriptionCol, you can store the associated description as well.\r
@@ -1027,7 +819,7 @@ Rico
        <summary>\r
  Used internally. Populates automatically based on DescriptionCol.\r
  </summary>\r
        <summary>\r
  Used internally. Populates automatically based on DescriptionCol.\r
  </summary>\r
-</member><member name="F:Rico.EditCol.noFormBreak">\r
+</member><member name="P:Rico.EditCol.noFormBreak">\r
        <summary>\r
  Boolean value that when true, specifies that this entry field should placed on the same form row as the last field \r
  (default: false - each form field is placed on a separate row).\r
        <summary>\r
  Boolean value that when true, specifies that this entry field should placed on the same form row as the last field \r
  (default: false - each form field is placed on a separate row).\r
@@ -1061,6 +853,352 @@ Rico
        <summary>\r
  Defines an editable column in a LiveGridEdit object\r
  </summary>\r
        <summary>\r
  Defines an editable column in a LiveGridEdit object\r
  </summary>\r
+</member><member name="P:Rico.StyleBase.bold">\r
+       <summary>\r
+ True if the text should be displayed using a bold font\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.italic">\r
+       <summary>\r
+ True if the text should be displayed in italics\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.underline">\r
+       <summary>\r
+ True if the text should be underlined\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.fontsize">\r
+       <summary>\r
+ Font size in points\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.GridOnly">\r
+       <summary>\r
+ If true, then style is only applied to the grid, not to html or Excel exports\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.BackColor">\r
+       <summary>\r
+ Specifies the background color. One of the 16 standard color names, or #rrggbb.\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.ForeColor">\r
+       <summary>\r
+ Specifies the font color. One of the 16 standard color names, or #rrggbb.\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.HorizontalAlign">\r
+       <summary>\r
+ Specifies horizontal alignment: Left, Right, Center, or NotSet (default)\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.VerticalAlign">\r
+       <summary>\r
+ Specifies vertical alignment: Bottom, Middle, Top, or NotSet (default)\r
+ Only applies to Excel export\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.Overflow">\r
+       <summary>\r
+ Normally, overflowed content is hidden, but setting this "auto" or "scroll" allows content in the cell to scroll.\r
+ Only applies to the grid, not to exports.\r
+ </summary>\r
+</member><member name="P:Rico.StyleBase.CssStyle">\r
+       <summary>\r
+ Used internally. Returns the style properties as a css string.\r
+ </summary>\r
+</member><member name="M:Rico.StyleBase.UnwrappedXlStyle">\r
+       <summary>\r
+ Used internally. Returns the style properties as an Excel XML string without the style tag.\r
+ </summary>\r
+</member><member name="T:Rico.StyleBase">\r
+       <summary>\r
+ Base class for all style classes as well as the Column class.\r
+ </summary>\r
+</member><member name="P:Rico.Style.StyleID">\r
+       <summary>\r
+ StyleID's should not contain spaces or other special characters.\r
+ <list type="bullet">\r
+                       <item><description>Use a StyleID of Default to style the entire grid</description></item>\r
+                       <item><description>Use a StyleID of DefaultHdg to style the grid heading</description></item>\r
+                       <item><description>Use a StyleID of ricoLG_evenRow and/or ricoLG_oddRow to stripe the grid (striping does not get exported).</description></item>\r
+                       <item><description>Use a StyleID of ricoLG_selection to set the styling for the selected row.</description></item>\r
+               </list>\r
+       </summary>\r
+</member><member name="M:Rico.Style.CssRule">\r
+       <summary>\r
+ Returns the style properties as a CSS rule\r
+ </summary>\r
+</member><member name="M:Rico.Style.WrappedXlStyle">\r
+       <summary>\r
+ Returns the style properties as an Excel XML style, including the style tag\r
+ </summary>\r
+</member><member name="P:Rico.Style.xlNumberFormat">\r
+       <summary>\r
+ For SimpleGrids only\r
+ </summary>\r
+</member><member name="P:Rico.Style.NumberFormat">\r
+       <summary>\r
+ For SimpleGrids only\r
+ </summary>\r
+</member><member name="M:Rico.Style.WrappedXlStyleNF">\r
+       <summary>\r
+ Returns the style properties plus number format as an Excel XML style, including the style tag\r
+ </summary>\r
+</member><member name="T:Rico.Style">\r
+       <summary>\r
+ Defines a style that can be applied to a grid cell.\r
+ Using a StyleID of ricoLG_evenRow or ricoLG_oddRow will stripe the grid, however striping does not get exported.\r
+ Using a StyleID of ricoLG_selection will set the styling for the selected row.\r
+ </summary>\r
+</member><member name="M:Rico.StyleDictionary.Add(Rico.Style)">\r
+       <summary>\r
+ Adds a Style object to the collection\r
+ </summary>\r
+       <param name="new_style"></param>\r
+</member><member name="P:Rico.StyleDictionary.Item(System.String)">\r
+       <summary>\r
+ Returns a Style object from the collection based on the style's StyleID\r
+ </summary>\r
+       <param name="StyleId"></param>\r
+</member><member name="P:Rico.StyleDictionary.Keys">\r
+       <summary>\r
+ Returns all of the StyleID's in the collection\r
+ </summary>\r
+</member><member name="P:Rico.StyleDictionary.Values">\r
+       <summary>\r
+ Returns all of the Style objects in the collection\r
+ </summary>\r
+</member><member name="M:Rico.StyleDictionary.Contains(System.String)">\r
+       <summary>\r
+ Returns true if the StyleID is in the collection\r
+ </summary>\r
+       <param name="StyleId"></param>\r
+</member><member name="M:Rico.StyleDictionary.Remove(System.String)">\r
+       <summary>\r
+ Removes the Style object with the given StyleID from the collection\r
+ </summary>\r
+       <param name="StyleId"></param>\r
+</member><member name="T:Rico.StyleDictionary">\r
+       <summary>\r
+ Container for a collection of Style objects\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.TableSelectNew">\r
+       <summary>\r
+ This is the value that Rico uses to identify when the user has selected "(new)" on fields with EntryType N.\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.TableSelectNone">\r
+       <summary>\r
+ This is the value that Rico uses to identify nulls in select lists\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.canAdd">\r
+       <summary>\r
+ True if the user is allowed to add records (default is true)\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.canEdit">\r
+       <summary>\r
+ True if the user is allowed to edit/update records (default is true)\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.canClone">\r
+       <summary>\r
+ True if the user is allowed to clone records (default is false)\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.canDelete">\r
+       <summary>\r
+ True if the user is allowed to delete records (default is true)\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.ConfirmDelete">\r
+       <summary>\r
+ True if Rico should display a confirmation message when the user tries to delete a record\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.RecordName">\r
+       <summary>\r
+ Used in menus to refer to a record (default is "record")\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.showSaveMsg">\r
+       <summary>\r
+ Controls disposition of database update responses on the client\r
+ <list type="bullet">\r
+                       <item><description>full: show full response</description></item>\r
+                       <item><description>errors: show full response for errors and short response otherwise (default)</description></item>\r
+               </list>\r
+       </summary>\r
+</member><member name="P:Rico.LiveGridEdit.panelHeight">\r
+       <summary>\r
+ Height of tabbed panels on entry form (in pixels, default is 200).\r
+ Tabbed panels are only created when ColumnGroup labels are present in the grid definition.\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.panelWidth">\r
+       <summary>\r
+ Width of tabbed panels on entry form (in pixels, default is 500).\r
+ Tabbed panels are only created when ColumnGroup labels are present in the grid definition.\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.MaxInputLen">\r
+       <summary>\r
+ Maximum displayed text field length on entry form (default is 20)\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.IsAjaxUpdate">\r
+       <summary>\r
+ Returns true if the grid is processing an AJAX request that inserts, updates, or deletes a record.\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.onFormOpen">\r
+       <summary>\r
+ Javascript function to be called when the form opens to add or edit a record\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.onFormClose">\r
+       <summary>\r
+ Javascript function to be called when the add/edit form closes\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.onFormSubmit">\r
+       <summary>\r
+ Javascript function to be called when the add/edit form is submitted to the server\r
+ </summary>\r
+</member><member name="P:Rico.LiveGridEdit.onSubmitResponse">\r
+       <summary>\r
+ Javascript function to be called when a response is received from the server after a form submittal\r
+ </summary>\r
+</member><member name="E:Rico.LiveGridEdit.DbDelete">\r
+       <summary>\r
+ Event raised right before the database deletion takes place.\r
+ </summary>\r
+       <param name="TabIdx">Index into the Tables collection. 0 is the main table.</param>\r
+       <param name="WhereClause">Where clause that selects the record to be deleted.</param>\r
+</member><member name="E:Rico.LiveGridEdit.DbInsert">\r
+       <summary>\r
+ Event raised right before the database insertion takes place.\r
+ </summary>\r
+       <param name="TabIdx">Index into the Tables collection. 0 is the main table.</param>\r
+       <param name="Data">Hashtable containing the data to be inserted. Key is the column name. Value is the quoted data to be written. Changing the contents of the hash does NOT change what is written to the database.</param>\r
+</member><member name="E:Rico.LiveGridEdit.DbUpdate">\r
+       <summary>\r
+ Event raised right before the database update takes place.\r
+ </summary>\r
+       <param name="TabIdx">Index into the Tables collection. 0 is the main table.</param>\r
+       <param name="Data">Hashtable containing the data to be updated. Key is the column name. Value is the quoted data to be written. Changing the contents of the hash does NOT change what is written to the database.</param>\r
+       <param name="WhereClause">Where clause that selects the record to be updated.</param>\r
+</member><member name="M:Rico.LiveGridEdit.TableKeyWhereClause(System.Int32)">\r
+       <summary>\r
+ Returns where clause based on table's primary key\r
+ </summary>\r
+       <param name="TabIdx"></param>\r
+</member><member name="P:Rico.GridBase.gridVar">\r
+       <summary>\r
+ Name of grid Javascript object\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.optionsVar">\r
+       <summary>\r
+ Name of grid options Javascript object\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.AutoFilter">\r
+       <summary>\r
+ If enabled, an additional row is added to the grid header where column filters are placed. \r
+ See the EditCol.filterUI property to customize each column's filter.\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.FilterAllToken">\r
+       <summary>\r
+ The token in select filters used to indicate "show all values" (default: "___ALL___").\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.defaultWidth">\r
+       <summary>\r
+ if -1 (default), then use column heading width, otherwise this is the default width in pixels\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.allowColResize">\r
+       <summary>\r
+ Allow user to resize columns? Default is true.\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.frozenColumns">\r
+       <summary>\r
+ Number of frozen columns on the left (or right if direction=rtl). Default is 0.\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.RowLineHtEms">\r
+       <summary>\r
+ Height of one line of text in ems. Default is 1.2, which should be fine for almost all situations.\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.windowResize">\r
+       <summary>\r
+ Resize grid when browser window is resized? Default is true.\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.menuEvent">\r
+       <summary>\r
+ Specifies when the grid's popup menu should be invoked \r
+ </summary>\r
+</member><member name="P:Rico.GridBase.DefaultHdgStyle">\r
+       <summary>\r
+ This holds the default style for headings. Use only if not using themes.\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.Styles">\r
+       <summary>\r
+ Collection of styles used for individual headings.\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.HdgRowLines">\r
+       <summary>\r
+ Lines of text displayed in each heading row\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.DefaultRowLines">\r
+       <summary>\r
+ Lines of text displayed in each data row\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.OuterDivId">\r
+       <summary>\r
+ Returns the id of the outermost grid container\r
+ </summary>\r
+</member><member name="P:Rico.GridBase.InitCompleteFunction">\r
+       <summary>\r
+ Name of javascript function to call when grid initialization is complete (default is gridID_InitComplete)\r
+ The grid object is passed as the single parameter to the function\r
+ </summary>\r
+</member><member name="M:Rico.GridBase.GetColumnIdx(System.String)">\r
+       <summary>\r
+ Returns the index of the column with the given id\r
+ </summary>\r
+</member><member name="M:Rico.GridBase.GetColumn(System.String)">\r
+       <summary>\r
+ Returns the column object with the given id\r
+ </summary>\r
+</member><member name="M:Rico.GridBase.GridRules">\r
+       <summary>\r
+ Returns the set of css rules that apply to this grid\r
+ </summary>\r
+</member><member name="T:Rico.GridBase">\r
+       <summary>\r
+ This class defines properties and functions used in SimpleGrid, LiveGrid and LiveGridEdit classes.\r
+ </summary>\r
+</member><member name="P:Rico.TreeResponse.ErrorMsg">\r
+       <summary>\r
+ May contain the text of an error message that occurred outside this control prior to rendering\r
+ </summary>\r
+</member><member name="P:Rico.TreeResponse.dbConnection">\r
+       <summary>\r
+ Database connection object. Required only if sqlText is used.\r
+ </summary>\r
+</member><member name="P:Rico.TreeResponse.SqlText">\r
+       <summary>\r
+ Optional sql query to execute, must return 5 columns matching WriteTreeRow parameters \r
+ </summary>\r
+</member><member name="M:Rico.TreeResponse.WriteTreeRow(System.Object,System.Object,System.Object,System.Object,System.Object)">\r
+       <summary>\r
+ Adds an entry that will be returned with the results. Often used to add the root node.\r
+ </summary>\r
+       <param name="parentID">id of parent, "" if this is the root</param>\r
+       <param name="ID">id that uniquely identifies this node in the tree</param>\r
+       <param name="description">description displayed to the user</param>\r
+       <param name="containerORleaf">"L" or 0 = leaf, "C" or non-zero = container</param>\r
+       <param name="selectable">0=not selectable, 1=selectable</param>\r
+</member><member name="T:Rico.TreeResponse">\r
+       <summary>\r
+ Use this class on a page that responds to AJAX requests from a Rico Tree Control\r
+ This class automatically disables caching of the response and sets the response type to text/xml\r
+ </summary>\r
+</member><member name="T:Rico.SimpleGrid.HtmlCell">\r
+       <summary>\r
+ Supports grid cells with html content.\r
+ Note that when exporting to Excel, only these html tags are supported: B, Font, I, S, Span, Sub, Sup, U\r
+ </summary>\r
+</member><member name="M:Rico.SimpleGrid.LinkCell.#ctor(System.String,System.String,System.String,System.String,System.String)">\r
+       <summary>\r
+ Creates a new LinkCell\r
+ </summary>\r
+       <param name="CellText">cell content</param>\r
+       <param name="href">href portion of anchor tag</param>\r
+       <param name="target">optional link target, e.g. _blank</param>\r
+       <param name="CellStyleId">optional reference to a Rico:Style element</param>\r
+</member><member name="T:Rico.SimpleGrid.LinkCell">\r
+       <summary>\r
+ Supports grid cells with html links.\r
+ When exporting, only the text is exported.\r
+ </summary>\r
 </member><member name="T:Rico.SimpleGrid">\r
        <summary>\r
  Class to define a SimpleGrid\r
 </member><member name="T:Rico.SimpleGrid">\r
        <summary>\r
  Class to define a SimpleGrid\r
index d7939e3..91f3eea 100644 (file)
@@ -33,11 +33,6 @@ Rico.onLoad( function() {
   new Rico.TabbedPanel( 'tabsExample', {panelHeight:160});\r
   var cal=new Rico.CalendarControl("ricoCal",{position:'auto'});\r
   cal.selectNow();\r
   new Rico.TabbedPanel( 'tabsExample', {panelHeight:160});\r
   var cal=new Rico.CalendarControl("ricoCal",{position:'auto'});\r
   cal.selectNow();\r
-  cal.openPopup();\r
-  var links=Rico.select('#themeGallery a');\r
-  for (var i=0; i<links.length; i++) {\r
-    links[i].onclick=themeClick;\r
-  }\r
   dialog=new Rico.Window('',{height:'250px',width:'300px',overflow:'auto'}, 'GettysburgContent');\r
 });\r
 \r
   dialog=new Rico.Window('',{height:'250px',width:'300px',overflow:'auto'}, 'GettysburgContent');\r
 });\r
 \r
@@ -58,6 +53,11 @@ function openWindow(btn) {
 div.ricoLG_cell {\r
   white-space:nowrap;\r
 }\r
 div.ricoLG_cell {\r
   white-space:nowrap;\r
 }\r
+div.population_col1 .ricoLG_cell { text-align:right; }\r
+div.population_col2 .ricoLG_cell { text-align:right; }\r
+div.population_col3 .ricoLG_cell { text-align:right; }\r
+div.population_col4 .ricoLG_cell { text-align:right; }\r
+div.population_col5 .ricoLG_cell { text-align:right; }\r
 </style>\r
 \r
 </head>\r
 </style>\r
 \r
 </head>\r
@@ -85,7 +85,7 @@ The widgets are compatible with all base libraries and themes.
 <table class="ricoLiveGrid" id="population">\r
 <thead>\r
  <tr>  <td class='ricoFrozen'></td>  <td colspan=5>Population (thousands)</td> </tr>\r
 <table class="ricoLiveGrid" id="population">\r
 <thead>\r
  <tr>  <td class='ricoFrozen'></td>  <td colspan=5>Population (thousands)</td> </tr>\r
- <tr>  <td class='ricoFrozen'>Country or area</td>  <td>1950</td>  <td>2009</td>  <td>2015</td>  <td>2025</td>  <td>2050</td> </tr>\r
+ <tr>  <th class='ricoFrozen'>Country or area</th>  <th>1950</th>  <th>2009</th>  <th>2015</th>  <th>2025</th>  <th>2050</th> </tr>\r
 </thead>\r
 </table>\r
 \r
 </thead>\r
 </table>\r
 \r
index 1a2340c..f95b09a 100644 (file)
@@ -16,7 +16,12 @@ Public dbDialect as dbDialects = dbDialects.Access
 Public Function OpenDB()\r
   try\r
     select case dbDialect\r
 Public Function OpenDB()\r
   try\r
     select case dbDialect\r
+      ' 32-bit\r
       case dbDialects.Access: dbConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("../data/" & defaultDB & ".mdb") & ";User ID=;Password=;")\r
       case dbDialects.Access: dbConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("../data/" & defaultDB & ".mdb") & ";User ID=;Password=;")\r
+      \r
+      ' 64-bit\r
+      'case dbDialects.Access: dbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & server.mappath("../data/" & defaultDB & ".mdb") & ";User ID=;Password=;")\r
+\r
       case dbDialects.TSQL:   dbConnection = new SqlConnection("Data Source=MATTSPROBOOK\SQLEXPRESS;User ID=userid;Password=password;Initial Catalog=" & defaultDB & ";")\r
       case dbDialects.Oracle: dbConnection = new OleDbConnection("Provider=OraOLEDB.Oracle;Data Source=XE;User ID=" & defaultDB & ";Password=Password;")\r
       case dbDialects.MySQL:  dbConnection = new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=" & defaultDB & ";USER=userid;PASSWORD=password;")\r
       case dbDialects.TSQL:   dbConnection = new SqlConnection("Data Source=MATTSPROBOOK\SQLEXPRESS;User ID=userid;Password=password;Initial Catalog=" & defaultDB & ";")\r
       case dbDialects.Oracle: dbConnection = new OleDbConnection("Provider=OraOLEDB.Oracle;Data Source=XE;User ID=" & defaultDB & ";Password=Password;")\r
       case dbDialects.MySQL:  dbConnection = new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=" & defaultDB & ";USER=userid;PASSWORD=password;")\r
@@ -62,7 +67,6 @@ Public sub SetGridOptions(oLiveGrid as object, optional menuevent as menuEvents
   '-------------------------------\r
   ' set application-wide defaults\r
   '-------------------------------\r
   '-------------------------------\r
   ' set application-wide defaults\r
   '-------------------------------\r
-  oLiveGrid.highlightElem="menuRow"\r
   oLiveGrid.menuEvent=menuevent\r
   'Session.Timeout=60\r
 end sub\r
   oLiveGrid.menuEvent=menuevent\r
   'Session.Timeout=60\r
 end sub\r
index d3d492a..e573364 100644 (file)
@@ -20,7 +20,7 @@ Rico.onLoad( function() {
 });\r
 \r
 function TreeClick1(e) {\r
 });\r
 \r
 function TreeClick1(e) {\r
-  if (Rico.visible(tree1.container)) {\r
+  if (tree1.visible()) {\r
     tree1.close();\r
   } else {\r
     Rico.positionCtlOverIcon(tree1.container,Rico.$('TreeButton1'));\r
     tree1.close();\r
   } else {\r
     Rico.positionCtlOverIcon(tree1.container,Rico.$('TreeButton1'));\r
@@ -51,8 +51,7 @@ Data is from the Northwind customer table.
 \r
 <pre style='border:1px solid black;padding:3px;font-size:8pt;'>\r
 Rico.onLoad( function() {\r
 \r
 <pre style='border:1px solid black;padding:3px;font-size:8pt;'>\r
 Rico.onLoad( function() {\r
-  tree1=new Rico.TreeControl("tree1", "CustTree.asp");\r
-  tree1.atLoad();\r
+  tree1=new Rico.TreeControl("tree1", "CustTree.aspx");\r
   tree1.returnValue=function(newVal) { Rico.$('TreeValue1').value=newVal; };\r
 });\r
 </pre>\r
   tree1.returnValue=function(newVal) { Rico.$('TreeValue1').value=newVal; };\r
 });\r
 </pre>\r
index e37c139..85de582 100644 (file)
@@ -18,7 +18,7 @@ Rico.onLoad( function() {
   new Rico.TabbedPanel( 'tabsExample', {panelHeight:160});\r
   var cal=new Rico.CalendarControl("ricoCal",{position:'auto'});\r
   cal.selectNow();\r
   new Rico.TabbedPanel( 'tabsExample', {panelHeight:160});\r
   var cal=new Rico.CalendarControl("ricoCal",{position:'auto'});\r
   cal.selectNow();\r
-  dialog=new Rico.Window('',{height:'250px',width:'300px',overflow:'auto'}, 'dialog');\r
+  dialog=new Rico.Window('',{height:'250px',width:'300px',overflow:'auto'}, 'GettysburgContent');\r
 });\r
 \r
 function openWindow(btn) {\r
 });\r
 \r
 function openWindow(btn) {\r
@@ -175,7 +175,7 @@ Department of Economic and Social Affairs of the United Nations Secretariat</a>
 <h2>Rico Dialog Window</h2>\r
 \r
 <p><button onclick='openWindow(this)'>Open Dialog Window</button>\r
 <h2>Rico Dialog Window</h2>\r
 \r
 <p><button onclick='openWindow(this)'>Open Dialog Window</button>\r
-<div id='dialog' title='The Gettysburg Address'>\r
+<div id='GettysburgContent' title='The Gettysburg Address'>\r
 <p>Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.\r
 <p>Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this.\r
 <p>But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground. The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract. The world will little note, nor long remember what we say here, but it can never forget what they did here. It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion -- that we here highly resolve that these dead shall not have died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from the earth.\r
 <p>Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.\r
 <p>Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this.\r
 <p>But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground. The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract. The world will little note, nor long remember what we say here, but it can never forget what they did here. It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion -- that we here highly resolve that these dead shall not have died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from the earth.\r
@@ -185,11 +185,7 @@ Department of Economic and Social Affairs of the United Nations Secretariat</a>
 \r
 <h2>Rico Calendar</h2>\r
 \r
 \r
 <h2>Rico Calendar</h2>\r
 \r
-<table border='0' cellpadding='0' cellspacing='0'>\r
-<tr><td>\r
-<div id="ricoCal" style='position:relative;'></div>\r
-</td></tr>\r
-</table>\r
+<div id="ricoCal"></div>\r
 \r
 </body>\r
 </html>\r
 \r
 </body>\r
 </html>\r
index 64b72a7..a8817e8 100644 (file)
@@ -17,25 +17,21 @@ Rico.onLoad( function() {
   cal1=new Rico.CalendarControl("cal1");\r
   cal1.addHoliday(25,12,0,'Christmas','#F55','white');\r
   cal1.addHoliday(1,1,0,'New Years','#2F2','white');\r
   cal1=new Rico.CalendarControl("cal1");\r
   cal1.addHoliday(25,12,0,'Christmas','#F55','white');\r
   cal1.addHoliday(1,1,0,'New Years','#2F2','white');\r
-  cal1.atLoad();\r
   cal1.returnValue=function(newVal) { cal1Box.value=newVal; };\r
   SetDateFormat();\r
 \r
   // initialize calendar #2 (show week #)\r
   cal2Box=Rico.$('CalendarValue2');\r
   cal2=new Rico.CalendarControl("cal2", {showWeekNumber:1});\r
   cal1.returnValue=function(newVal) { cal1Box.value=newVal; };\r
   SetDateFormat();\r
 \r
   // initialize calendar #2 (show week #)\r
   cal2Box=Rico.$('CalendarValue2');\r
   cal2=new Rico.CalendarControl("cal2", {showWeekNumber:1});\r
-  cal2.atLoad();\r
   cal2.returnValue=function(newVal) { cal2Box.value=newVal; };\r
 \r
   // initialize calendar #3 (no "Today is")\r
   cal3Box=Rico.$('CalendarValue3');\r
   cal3=new Rico.CalendarControl("cal3", {showToday:0});\r
   cal2.returnValue=function(newVal) { cal2Box.value=newVal; };\r
 \r
   // initialize calendar #3 (no "Today is")\r
   cal3Box=Rico.$('CalendarValue3');\r
   cal3=new Rico.CalendarControl("cal3", {showToday:0});\r
-  cal3.atLoad();\r
   cal3.returnValue=function(newVal) { cal3Box.value=newVal; };\r
   \r
   // initialize color picker\r
   colorpicker=new Rico.ColorPicker("colorpicker1");\r
   cal3.returnValue=function(newVal) { cal3Box.value=newVal; };\r
   \r
   // initialize color picker\r
   colorpicker=new Rico.ColorPicker("colorpicker1");\r
-  colorpicker.atLoad();\r
   colorpicker.returnValue=ProcessColorSelection;\r
   colorBox=Rico.$('ColorValue');\r
   \r
   colorpicker.returnValue=ProcessColorSelection;\r
   colorBox=Rico.$('ColorValue');\r
   \r
index 2de2648..eb2df53 100644 (file)
@@ -52,7 +52,7 @@ echo $colspecs;
 ?>\r
     ]\r
   };\r
 ?>\r
     ]\r
   };\r
-  var buffer=new Rico.Buffer.AjaxSQL('ricoQuery.php', {TimeOut:<?php print array_shift(session_get_cookie_params())/60 ?>});\r
+  var buffer=new Rico.Buffer.AjaxSQL('ricoQuery.php', {TimeOut:<?php $c=session_get_cookie_params(); print $c["lifetime"]/60; ?>});\r
   var grid=new Rico.LiveGrid ('<?php echo $id; ?>', buffer, opts);\r
   grid.menu = new Rico.GridMenu();\r
 });\r
   var grid=new Rico.LiveGrid ('<?php echo $id; ?>', buffer, opts);\r
   grid.menu = new Rico.GridMenu();\r
 });\r
index 50e6e5d..d1244a6 100644 (file)
@@ -22,10 +22,10 @@ require "../../plugins/php/ricoLiveGridForms.php";
 
 function orders_FormInit() {
   var cal=new Rico.CalendarControl("Cal");
 
 function orders_FormInit() {
   var cal=new Rico.CalendarControl("Cal");
-  Rico.EditControls.register(cal, Rico.imgDir+'calarrow.png');
+  Rico.EditControls.register(cal, 'rico-icon rico-calarrow');
   
   
-  var CustTree=new Rico.TreeControl("CustomerTree","CustTree.php");
-  Rico.EditControls.register(CustTree, Rico.imgDir+'dotbutton.gif');
+  var CustTree=new Rico.TreeControl("CustomerTree","CustTree.asp");
+  Rico.EditControls.register(CustTree, 'rico-icon rico-dotbutton');
 }
 </script>
 
 }
 </script>
 
@@ -102,10 +102,10 @@ function DefineFields() {
   $oForm->CurrentField["width"]=140;
   $oForm->CurrentField["filterUI"]="m";
 
   $oForm->CurrentField["width"]=140;
   $oForm->CurrentField["filterUI"]="m";
 
-  $oForm->AddEntryField("OrderDate", "Order Date", "D", strftime('%Y-%m-%d'));
+  $oForm->AddEntryField("OrderDate", "Order Date", "D", @strftime('%Y-%m-%d'));
   $oForm->CurrentField["SelectCtl"]="Cal";
   $oForm->CurrentField["width"]=90;
   $oForm->CurrentField["SelectCtl"]="Cal";
   $oForm->CurrentField["width"]=90;
-  $oForm->AddEntryField("RequiredDate", "Required Date", "D", strftime('%Y-%m-%d'));
+  $oForm->AddEntryField("RequiredDate", "Required Date", "D", @strftime('%Y-%m-%d'));
   $oForm->CurrentField["SelectCtl"]="Cal";
   $oForm->CurrentField["width"]=90;
   $oForm->AddCalculatedField("select sum(UnitPrice*Quantity*(1.0-Discount)) from order_details d where d.OrderID=t.OrderID","Net Sale");
   $oForm->CurrentField["SelectCtl"]="Cal";
   $oForm->CurrentField["width"]=90;
   $oForm->AddCalculatedField("select sum(UnitPrice*Quantity*(1.0-Discount)) from order_details d where d.OrderID=t.OrderID","Net Sale");
index 685e030..d85848f 100644 (file)
@@ -33,7 +33,7 @@ Rico.onLoad( function() {
     highlightElem: 'cursorRow',\r
     columnSpecs   : [,,,,,{type:'date'},{type:'date'}]\r
   };\r
     highlightElem: 'cursorRow',\r
     columnSpecs   : [,,,,,{type:'date'},{type:'date'}]\r
   };\r
-  buffer=new Rico.Buffer.AjaxSQL('ricoQuery.php', {fmt:'json', TimeOut:<?php print array_shift(session_get_cookie_params())/60 ?>});\r
+  buffer=new Rico.Buffer.AjaxSQL('ricoQuery.php', {fmt:'json', TimeOut:<?php $c=session_get_cookie_params(); print $c["lifetime"]/60; ?>});\r
   orderGrid=new Rico.LiveGrid ('ex2', buffer, opts);\r
   orderGrid.menu=new Rico.GridMenu({});\r
 });\r
   orderGrid=new Rico.LiveGrid ('ex2', buffer, opts);\r
   orderGrid.menu=new Rico.GridMenu({});\r
 });\r
index b212ba1..f57f12b 100644 (file)
@@ -52,10 +52,10 @@ require "LoadRicoClient.php";
 
 function orders_FormInit() {
   var cal=new Rico.CalendarControl("Cal");
 
 function orders_FormInit() {
   var cal=new Rico.CalendarControl("Cal");
-  Rico.EditControls.register(cal, Rico.imgDir+'calarrow.png');
+  Rico.EditControls.register(cal, 'rico-icon rico-calarrow');
   
   
-  var CustTree=new Rico.TreeControl("CustomerTree","CustTree.php");
-  Rico.EditControls.register(CustTree, Rico.imgDir+'dotbutton.gif');
+  var CustTree=new Rico.TreeControl("CustomerTree","CustTree.asp");
+  Rico.EditControls.register(CustTree, 'rico-icon rico-dotbutton');
 }
 </script>
 
 }
 </script>
 
@@ -121,10 +121,10 @@ function DefineFields() {
   $oForm->CurrentField["width"]=140;
   $oForm->CurrentField["filterUI"]="s";
 
   $oForm->CurrentField["width"]=140;
   $oForm->CurrentField["filterUI"]="s";
 
-  $oForm->AddEntryField("OrderDate", "Order Date", "D", strftime('%Y-%m-%d'));
+  $oForm->AddEntryField("OrderDate", "Order Date", "D", @strftime('%Y-%m-%d'));
   $oForm->CurrentField["SelectCtl"]="Cal";
   $oForm->CurrentField["width"]=90;
   $oForm->CurrentField["SelectCtl"]="Cal";
   $oForm->CurrentField["width"]=90;
-  $oForm->AddEntryField("RequiredDate", "Required Date", "D", strftime('%Y-%m-%d'));
+  $oForm->AddEntryField("RequiredDate", "Required Date", "D", @strftime('%Y-%m-%d'));
   $oForm->CurrentField["SelectCtl"]="Cal";
   $oForm->CurrentField["width"]=90;
   $oForm->AddCalculatedField("select sum(UnitPrice*Quantity*(1.0-Discount)) from order_details d where d.OrderID=t.OrderID","Net Sale");
   $oForm->CurrentField["SelectCtl"]="Cal";
   $oForm->CurrentField["width"]=90;
   $oForm->AddCalculatedField("select sum(UnitPrice*Quantity*(1.0-Discount)) from order_details d where d.OrderID=t.OrderID","Net Sale");
index 95eddbd..84a2ef8 100644 (file)
@@ -32,7 +32,7 @@ Rico.onLoad( function() {
     highlightElem: 'cursorRow',\r
     columnSpecs   : [,,,,,{type:'date'},{type:'date'}]\r
   };\r
     highlightElem: 'cursorRow',\r
     columnSpecs   : [,,,,,{type:'date'},{type:'date'}]\r
   };\r
-  buffer=new Rico.Buffer.AjaxSQL('ricoQuery.php', {TimeOut:<?php print array_shift(session_get_cookie_params())/60 ?>});\r
+  buffer=new Rico.Buffer.AjaxSQL('ricoQuery.php', {TimeOut:<?php $c=session_get_cookie_params(); print $c["lifetime"]/60; ?>});\r
   orderGrid=new Rico.LiveGrid ('ex2', buffer, opts);\r
   orderGrid.menu=new Rico.GridMenu({});\r
 });\r
   orderGrid=new Rico.LiveGrid ('ex2', buffer, opts);\r
   orderGrid.menu=new Rico.GridMenu({});\r
 });\r
index 9b2ab2e..44c4083 100644 (file)
@@ -129,6 +129,7 @@ function FillGrid() {
   $grid->AddCell("Avg Discount");\r
   $sqltext="select CategoryName,ProductName, SUM(od.UnitPrice*Quantity) as GrossSales, SUM(od.UnitPrice*Quantity*Discount) as Discounts from (Order_Details od inner join Products p on p.ProductID=od.ProductID) inner join Categories c on p.CategoryID=c.CategoryID group by CategoryName,ProductName order by CategoryName,ProductName";\r
   $rsMain=$oDB->RunQuery($sqltext);\r
   $grid->AddCell("Avg Discount");\r
   $sqltext="select CategoryName,ProductName, SUM(od.UnitPrice*Quantity) as GrossSales, SUM(od.UnitPrice*Quantity*Discount) as Discounts from (Order_Details od inner join Products p on p.ProductID=od.ProductID) inner join Categories c on p.CategoryID=c.CategoryID group by CategoryName,ProductName order by CategoryName,ProductName";\r
   $rsMain=$oDB->RunQuery($sqltext);\r
+  $lastCategory='';\r
   while ($oDB->db->FetchRow($rsMain,$row)) {\r
     $category=$row[0];\r
     $Gross=$row[2];\r
   while ($oDB->db->FetchRow($rsMain,$row)) {\r
     $category=$row[0];\r
     $Gross=$row[2];\r
index 89a2b28..6258f91 100644 (file)
@@ -16,13 +16,12 @@ var tree1;
 // initialize tree\r
 Rico.onLoad( function() {\r
   tree1=new Rico.TreeControl("tree1", "CustTree.php");\r
 // initialize tree\r
 Rico.onLoad( function() {\r
   tree1=new Rico.TreeControl("tree1", "CustTree.php");\r
-  tree1.atLoad();\r
   tree1.returnValue=function(newVal) { Rico.$('TreeValue1').value=newVal; };\r
   Rico.eventBind('TreeButton1', 'click', Rico.eventHandle(window,'TreeClick1'));\r
 });\r
 \r
 function TreeClick1(e) {\r
   tree1.returnValue=function(newVal) { Rico.$('TreeValue1').value=newVal; };\r
   Rico.eventBind('TreeButton1', 'click', Rico.eventHandle(window,'TreeClick1'));\r
 });\r
 \r
 function TreeClick1(e) {\r
-  if (Rico.visible(tree1.container)) {\r
+  if (tree1.visible()) {\r
     tree1.close();\r
   } else {\r
     Rico.positionCtlOverIcon(tree1.container,Rico.$('TreeButton1'));\r
     tree1.close();\r
   } else {\r
     Rico.positionCtlOverIcon(tree1.container,Rico.$('TreeButton1'));\r
index 0f3b086..305fd30 100644 (file)
@@ -27,12 +27,7 @@ Rico.onLoad( function() {
   new Rico.TabbedPanel( 'tabsExample', {panelHeight:160});\r
   var cal=new Rico.CalendarControl("ricoCal",{position:'auto'});\r
   cal.selectNow();\r
   new Rico.TabbedPanel( 'tabsExample', {panelHeight:160});\r
   var cal=new Rico.CalendarControl("ricoCal",{position:'auto'});\r
   cal.selectNow();\r
-  cal.openPopup();\r
-  var links=Rico.select('#themeGallery a');\r
-  for (var i=0; i<links.length; i++) {\r
-    links[i].onclick=themeClick;\r
-  }\r
-  dialog=new Rico.Window('',{height:'250px',width:'300px',overflow:'auto'}, 'dialog');\r
+  dialog=new Rico.Window('',{height:'250px',width:'300px',overflow:'auto'}, 'GettysburgContent');\r
 });\r
 \r
 function openWindow(btn) {\r
 });\r
 \r
 function openWindow(btn) {\r
@@ -52,20 +47,25 @@ function openWindow(btn) {
 div.ricoLG_cell {\r
   white-space:nowrap;\r
 }\r
 div.ricoLG_cell {\r
   white-space:nowrap;\r
 }\r
+div.population_col1 .ricoLG_cell { text-align:right; }\r
+div.population_col2 .ricoLG_cell { text-align:right; }\r
+div.population_col3 .ricoLG_cell { text-align:right; }\r
+div.population_col4 .ricoLG_cell { text-align:right; }\r
+div.population_col5 .ricoLG_cell { text-align:right; }\r
 </style>\r
 \r
 </head>\r
 \r
 \r
 <body>\r
 </style>\r
 \r
 </head>\r
 \r
 \r
 <body>\r
-  \r
+\r
 <table id='explanation' border='0' cellpadding='5' cellspacing='0' style='clear:both'><tr valign='top'><td>\r
 <table id='explanation' border='0' cellpadding='5' cellspacing='0' style='clear:both'><tr valign='top'><td>\r
-Base Library: \r
+Base Library:\r
 <script type='text/javascript'>\r
 document.write(Rico.Lib+' '+Rico.LibVersion);\r
 </script>\r
 <hr>\r
 <script type='text/javascript'>\r
 document.write(Rico.Lib+' '+Rico.LibVersion);\r
 </script>\r
 <hr>\r
-This example displays some of the widgets that come with Rico. \r
+This example displays some of the widgets that come with Rico.\r
 The widgets are compatible with all base libraries and themes.\r
 </td>\r
 <td>\r
 The widgets are compatible with all base libraries and themes.\r
 </td>\r
 <td>\r
@@ -85,13 +85,13 @@ require "info.php";
 <table class="ricoLiveGrid" id="population">\r
 <thead>\r
  <tr>  <td class='ricoFrozen'></td>  <td colspan=5>Population (thousands)</td> </tr>\r
 <table class="ricoLiveGrid" id="population">\r
 <thead>\r
  <tr>  <td class='ricoFrozen'></td>  <td colspan=5>Population (thousands)</td> </tr>\r
- <tr>  <td class='ricoFrozen'>Country or area</td>  <td>1950</td>  <td>2009</td>  <td>2015</td>  <td>2025</td>  <td>2050</td> </tr>\r
+ <tr>  <th class='ricoFrozen'>Country or area</th>  <th>1950</th>  <th>2009</th>  <th>2015</th>  <th>2025</th>  <th>2050</th> </tr>\r
 </thead>\r
 </table>\r
 \r
 </thead>\r
 </table>\r
 \r
-<p style='font-size:smaller;'>Data source: <a href="http://www.un.org/esa/population/unpop.htm">Population Division of the \r
-Department of Economic and Social Affairs of the United Nations Secretariat</a> (2009). \r
-<em>World Population Prospects: The 2008 Revision. Highlights.</em> New York: United Nations.  </p>                            \r
+<p style='font-size:smaller;'>Data source: <a href="http://www.un.org/esa/population/unpop.htm">Population Division of the\r
+Department of Economic and Social Affairs of the United Nations Secretariat</a> (2009).\r
+<em>World Population Prospects: The 2008 Revision. Highlights.</em> New York: United Nations.</p>\r
 \r
 \r
 <p>&nbsp;</p>\r
 \r
 \r
 <p>&nbsp;</p>\r
@@ -195,21 +195,17 @@ Department of Economic and Social Affairs of the United Nations Secretariat</a>
 <h2>Rico Dialog Window</h2>\r
 \r
 <p><button onclick='openWindow(this)'>Open Dialog Window</button>\r
 <h2>Rico Dialog Window</h2>\r
 \r
 <p><button onclick='openWindow(this)'>Open Dialog Window</button>\r
-<div id='dialog' title='The Gettysburg Address'>\r
-<p>Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. \r
-<p>Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this. \r
-<p>But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground. The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract. The world will little note, nor long remember what we say here, but it can never forget what they did here. It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion -- that we here highly resolve that these dead shall not have died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from the earth. \r
+<div id='GettysburgContent' title='The Gettysburg Address'>\r
+<p>Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.\r
+<p>Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this.\r
+<p>But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground. The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract. The world will little note, nor long remember what we say here, but it can never forget what they did here. It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion -- that we here highly resolve that these dead shall not have died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from the earth.\r
 </div>\r
 \r
 <p>&nbsp;</p>\r
 \r
 <h2>Rico Calendar</h2>\r
 \r
 </div>\r
 \r
 <p>&nbsp;</p>\r
 \r
 <h2>Rico Calendar</h2>\r
 \r
-<table border='0' cellpadding='0' cellspacing='0'>\r
-<tr>\r
-<td id="ricoCal" style='position:relative;'></td>\r
-</tr>\r
-</table>\r
+<div id="ricoCal"></div>\r
 \r
 </body>\r
 </html>\r
 \r
 </body>\r
 </html>\r
index 325e357..a2467ba 100644 (file)
@@ -1,6 +1,6 @@
 /*
 /*
- *  (c) 2005-2011 Richard Cowin (http://openrico.org)
- *  (c) 2005-2011 Matt Brown (http://dowdybrown.com)
+ *  (c) 2005-2012 Richard Cowin (http://openrico.org)
+ *  (c) 2005-2012 Matt Brown (http://dowdybrown.com)
  *
  *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
  *  file except in compliance with the License. You may obtain a copy of the License at
  *
  *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
  *  file except in compliance with the License. You may obtain a copy of the License at
@@ -13,7 +13,7 @@
  *  and limitations under the License.
  */
 
  *  and limitations under the License.
  */
 
-Rico.Version='3.0b2';
+Rico.Version='3.0';
 Rico.theme={};
 Rico.onLoadCallbacks=[];
 Rico.windowIsLoaded=false;
 Rico.theme={};
 Rico.onLoadCallbacks=[];
 Rico.windowIsLoaded=false;
@@ -242,7 +242,7 @@ Rico.zFill=function(n,slen, radix) {
 Rico.keys=function(obj) {
   var objkeys=[];
   for(var k in obj)
 Rico.keys=function(obj) {
   var objkeys=[];
   for(var k in obj)
-    objkeys.push[k];
+    objkeys.push(k);
   return objkeys;
 };
 
   return objkeys;
 };
 
@@ -568,11 +568,11 @@ Rico.formatNumber=function(n,fmt) {
  * @param fmt string specifying the output format, may be one of the following:<dl>
  * <dt>locale or localeDateTime</dt>
  *   <dd>use javascript's built-in toLocaleString() function</dd>
  * @param fmt string specifying the output format, may be one of the following:<dl>
  * <dt>locale or localeDateTime</dt>
  *   <dd>use javascript's built-in toLocaleString() function</dd>
- * <dt>localeDate</dt>
+ * <dt>localeDate or 'Long Date'</dt>
  *   <dd>use javascript's built-in toLocaleDateString() function</dd>
  * <dt>translate or translateDateTime</dt>
  *   <dd>use the formats specified in the Rico.dateFmt and Rico.timeFmt properties</dd>
  *   <dd>use javascript's built-in toLocaleDateString() function</dd>
  * <dt>translate or translateDateTime</dt>
  *   <dd>use the formats specified in the Rico.dateFmt and Rico.timeFmt properties</dd>
- * <dt>translateDate</dt>
+ * <dt>translateDate or 'Short Date'</dt>
  *   <dd>use the date format specified in the Rico.dateFmt property</dd>
  * <dt>Otherwise</dt>
  *   <dd>Any combination of: yyyy, yy, mmmm, mmm, mm, m, dddd, ddd, dd, d, hh, h, HH, H, nn, ss, a/p</dd>
  *   <dd>use the date format specified in the Rico.dateFmt property</dd>
  * <dt>Otherwise</dt>
  *   <dd>Any combination of: yyyy, yy, mmmm, mmm, mm, m, dddd, ddd, dd, d, hh, h, HH, H, nn, ss, a/p</dd>
@@ -584,12 +584,14 @@ Rico.formatDate=function(d,fmt) {
     case 'locale':
     case 'localeDateTime':
       return d.toLocaleString();
     case 'locale':
     case 'localeDateTime':
       return d.toLocaleString();
+    case 'Long Date':
     case 'localeDate':
       return d.toLocaleDateString();
     case 'translate':
     case 'translateDateTime':
       datefmt=this.dateFmt+' '+this.timeFmt;
       break;
     case 'localeDate':
       return d.toLocaleDateString();
     case 'translate':
     case 'translateDateTime':
       datefmt=this.dateFmt+' '+this.timeFmt;
       break;
+    case 'Short Date':
     case 'translateDate':
       datefmt=this.dateFmt;
       break;
     case 'translateDate':
       datefmt=this.dateFmt;
       break;
index 265ff23..8a30143 100644 (file)
@@ -52,11 +52,6 @@ Rico.CalendarControl.prototype = {
       maxDate : this.defaultMax
     });
     Rico.extend(this.options, options || {});
       maxDate : this.defaultMax
     });
     Rico.extend(this.options, options || {});
-    /**
-     * alias for closePopup
-     * @function
-     */
-    this.close=this.closePopup;
     this.bPageLoaded=false;
     this.Holidays={};
     this.re=/^\s*(\w+)(\W)(\w+)(\W)(\w+)/i;
     this.bPageLoaded=false;
     this.Holidays={};
     this.re=/^\s*(\w+)(\W)(\w+)(\W)(\w+)/i;
@@ -240,7 +235,6 @@ Rico.CalendarControl.prototype = {
     }
     
     Rico.eventBind(this.tbody,"click", Rico.eventHandle(this,'saveAndClose'));
     }
     
     Rico.eventBind(this.tbody,"click", Rico.eventHandle(this,'saveAndClose'));
-    //this.close();
     this.bPageLoaded=true;
   },
 
     this.bPageLoaded=true;
   },
 
@@ -293,7 +287,8 @@ Rico.CalendarControl.prototype = {
     return true;
   },
 
     return true;
   },
 
-  incMonth : function() {
+  incMonth : function(e) {
+    if (e) Rico.eventStop(e);
     var newMonth=this.monthSelected+1;
     var newYear=this.yearSelected;
     if (newMonth>11) {
     var newMonth=this.monthSelected+1;
     var newYear=this.yearSelected;
     if (newMonth>11) {
@@ -306,7 +301,8 @@ Rico.CalendarControl.prototype = {
     this.constructCalendar();
   },
 
     this.constructCalendar();
   },
 
-  decMonth : function() {
+  decMonth : function(e) {
+    if (e) Rico.eventStop(e);
     var newMonth=this.monthSelected-1;
     var newYear=this.yearSelected;
     if (newMonth<0) {
     var newMonth=this.monthSelected-1;
     var newYear=this.yearSelected;
     if (newMonth<0) {
@@ -394,13 +390,15 @@ Rico.CalendarControl.prototype = {
     }
   },
   
     }
   },
   
-  incYear : function() {
+  incYear : function(e) {
+    if (e) Rico.eventStop(e);
     if (this.yearSelected>=this.options.maxDate.getFullYear()) return;
     this.yearSelected++;
     this.constructCalendar();
   },
 
     if (this.yearSelected>=this.options.maxDate.getFullYear()) return;
     this.yearSelected++;
     this.constructCalendar();
   },
 
-  decYear : function() {
+  decYear : function(e) {
+    if (e) Rico.eventStop(e);
     if (this.yearSelected<=this.options.minDate.getFullYear()) return;
     this.yearSelected--;
     this.constructCalendar();
     if (this.yearSelected<=this.options.minDate.getFullYear()) return;
     this.yearSelected--;
     this.constructCalendar();
@@ -503,6 +501,11 @@ Rico.CalendarControl.prototype = {
     c.style.visibility='hidden';
   },
   
     c.style.visibility='hidden';
   },
   
+  close: function(e) {
+    if (e) Rico.eventStop(e);
+    this.closePopup();
+  },
+  
 /** @private */
   saveAndClose : function(e) {
     Rico.eventStop(e);
 /** @private */
   saveAndClose : function(e) {
     Rico.eventStop(e);
@@ -515,7 +518,7 @@ Rico.CalendarControl.prototype = {
     var dateStr=Rico.formatDate(d,this.dateFmt=='ISO8601' ? 'yyyy-mm-dd' : this.dateFmt);
     if (this.returnValue) {
       this.returnValue(dateStr);
     var dateStr=Rico.formatDate(d,this.dateFmt=='ISO8601' ? 'yyyy-mm-dd' : this.dateFmt);
     if (this.returnValue) {
       this.returnValue(dateStr);
-      this.close();
+      this.closePopup();
     }
   },
 
     }
   },
 
index 18787f2..5375846 100644 (file)
@@ -463,22 +463,6 @@ Rico.GridCommon = {
     return Rico.windowHeight()-divPos.top-2*this.options.scrollBarWidth-15;  // allow for scrollbar and some margin
   },
 
     return Rico.windowHeight()-divPos.top-2*this.options.scrollBarWidth-15;  // allow for scrollbar and some margin
   },
 
-  setHorizontalScroll: function() {
-    var newLeft=(-this.scrollDiv.scrollLeft)+'px';
-    this.hdrTabs[1].style.marginLeft=newLeft;
-  },
-
-  pluginScroll: function() {
-     if (this.scrollPluggedIn) return;
-     Rico.eventBind(this.scrollDiv,"scroll",this.scrollEventFunc, false);
-     this.scrollPluggedIn=true;
-  },
-
-  unplugScroll: function() {
-     Rico.eventUnbind(this.scrollDiv,"scroll", this.scrollEventFunc , false);
-     this.scrollPluggedIn=false;
-  },
-
   hideMsg: function() {
     this.messagePopup.closePopup();
   },
   hideMsg: function() {
     this.messagePopup.closePopup();
   },
index 7a139a1..d55f345 100644 (file)
@@ -47,8 +47,6 @@ Rico.Buffer.Base.prototype = {
     if (dataTable) {
       this.loadRowsFromTable(dataTable,this.options.fixedHdrRows);
       dataTable.parentNode.removeChild(dataTable);  // delete the data once it has been loaded
     if (dataTable) {
       this.loadRowsFromTable(dataTable,this.options.fixedHdrRows);
       dataTable.parentNode.removeChild(dataTable);  // delete the data once it has been loaded
-    } else {
-      this.clear();
     }
   },
 
     }
   },
 
@@ -209,6 +207,8 @@ Rico.Buffer.Base.prototype = {
   clear: function() {
     this.baseRows = [];
     this.rows = [];
   clear: function() {
     this.baseRows = [];
     this.rows = [];
+    this.modified = [];
+    this.attr = null;
     this.startPos = -1;
     this.size = 0;
     this.windowPos = 0;
     this.startPos = -1;
     this.size = 0;
     this.windowPos = 0;
@@ -297,8 +297,13 @@ Rico.Buffer.Base.prototype = {
     if (bufRow>=this.size) return false;
     if (!this.rows[bufRow][col]) this.rows[bufRow][col]={};
     this.rows[bufRow][col]=newval;
     if (bufRow>=this.size) return false;
     if (!this.rows[bufRow][col]) this.rows[bufRow][col]={};
     this.rows[bufRow][col]=newval;
-    if (typeof newstyle=='string') this.rows[bufRow][col]._style=newstyle;
-    this.rows[bufRow][col].modified=true;
+    if (this.options.acceptStyle && typeof newstyle=='string') {
+      if (!this.attr) this.attr=[];
+      if (!this.attr[bufRow]) this.attr[bufRow]=[];
+      this.attr[bufRow][col]=newstyle;
+    }
+    if (!this.modified[bufRow]) this.modified[bufRow]=[];
+    this.modified[bufRow][col]=true;
     return true;
   },
 
     return true;
   },
 
@@ -793,7 +798,7 @@ Rico.LiveGridMethods = {
       switch (fmt.filterUI.charAt(0)) {
         case 't':
           // text field
       switch (fmt.filterUI.charAt(0)) {
         case 't':
           // text field
-          field=Rico.createFormField(divs[1],'input',Rico.inputtypes.search ? 'search' : 'text',name,name);
+          field=Rico.createFormField(divs[1],'input',Rico.inputtypes.search ? 'search' : 'text',name,'RicoFilter');
           var size=fmt.filterUI.match(/\d+/);
           field.maxLength=fmt.Length || 50;\r
           field.size=size ? parseInt(size,10) : 10;
           var size=fmt.filterUI.match(/\d+/);
           field.maxLength=fmt.Length || 50;\r
           field.size=size ? parseInt(size,10) : 10;
@@ -812,7 +817,7 @@ Rico.LiveGridMethods = {
           // multi-select
         case 's':
           // drop-down select
           // multi-select
         case 's':
           // drop-down select
-          field=Rico.createFormField(divs[1],'select',null,name);\r
+          field=Rico.createFormField(divs[1],'select',null,name,'RicoFilter');\r
           Rico.addSelectOption(field,this.options.FilterAllToken,Rico.getPhraseById("filterAll"));\r
           col.filterField=field;
           var options={};\r
           Rico.addSelectOption(field,this.options.FilterAllToken,Rico.getPhraseById("filterAll"));\r
           col.filterField=field;
           var options={};\r
@@ -823,6 +828,16 @@ Rico.LiveGridMethods = {
           options.onComplete = this.filterValuesUpdateFunc(c);
           new Rico.ajaxRequest(this.buffer.dataSource, options);
           break;\r
           options.onComplete = this.filterValuesUpdateFunc(c);
           new Rico.ajaxRequest(this.buffer.dataSource, options);
           break;\r
+        case 'n':
+          field=Rico.createFormField(divs[1],'select',null,name,'RicoFilter');
+          Rico.addSelectOption(field,this.options.FilterAllToken,Rico.getPhraseById("filterAll"));
+          col.filterField=field;
+          var choices=fmt.filterUI.length == 1 ? "-0+" : fmt.filterUI.substr(1);
+          if (choices.indexOf("-") >= 0) Rico.addSelectOption(field,"LT0","< 0");
+          if (choices.indexOf("0") >= 0) Rico.addSelectOption(field,"EQ0","= 0");
+          if (choices.indexOf("+") >= 0) Rico.addSelectOption(field,"GT0","> 0");
+          Rico.eventBind(col.filterField,'change',Rico.eventHandle(col,'nFilterChange'));
+          break;
         case 'c':
           // custom
           if (typeof col._createFilters == 'function')
         case 'c':
           // custom
           if (typeof col._createFilters == 'function')
@@ -1087,15 +1102,18 @@ Rico.LiveGridMethods = {
   },
 
   adjustPageSize: function() {
   },
 
   adjustPageSize: function() {
+    Rico.log('adjustPageSize start');
     var remHt=this.remainingHt();
     Rico.log('adjustPageSize remHt='+remHt+' lastRow='+this.lastRowPos);
     if (remHt > this.rowHeight)
       this.autoAppendRows(remHt);
     else if (remHt < 0 || this.sizeTo=='data')
       this.autoRemoveRows(-remHt);
     var remHt=this.remainingHt();
     Rico.log('adjustPageSize remHt='+remHt+' lastRow='+this.lastRowPos);
     if (remHt > this.rowHeight)
       this.autoAppendRows(remHt);
     else if (remHt < 0 || this.sizeTo=='data')
       this.autoRemoveRows(-remHt);
+    Rico.log('adjustPageSize end');
   },
   
   setPageSize: function(newRowCount) {
   },
   
   setPageSize: function(newRowCount) {
+    Rico.log('setPageSize '+this.tableId+' newRowCount='+newRowCount);
     newRowCount=Math.min(newRowCount,this.options.maxPageRows);
     newRowCount=Math.max(newRowCount,this.options.minPageRows);
     this.sizeTo='fixed';
     newRowCount=Math.min(newRowCount,this.options.maxPageRows);
     newRowCount=Math.max(newRowCount,this.options.minPageRows);
     this.sizeTo='fixed';
@@ -1122,7 +1140,7 @@ Rico.LiveGridMethods = {
   },
 
   resizeWindow: function() {
   },
 
   resizeWindow: function() {
-    Rico.log('resizeWindow '+this.tableId+' lastRow='+this.lastRowPos);
+    Rico.log('resizeWindow '+this.tableId+' lastRow='+this.lastRowPos+' resizeState='+this.resizeState);
     if (this.resizeState=='finish') {
       Rico.log('resizeWindow postponed');
       this.resizeState='resize';
     if (this.resizeState=='finish') {
       Rico.log('resizeWindow postponed');
       this.resizeState='resize';
@@ -1133,12 +1151,14 @@ Rico.LiveGridMethods = {
       return;
     }
     if (this.sizeTo=='parent' && Rico.getStyle(this.outerDiv.parentNode,'display') == 'none') return;
       return;
     }
     if (this.sizeTo=='parent' && Rico.getStyle(this.outerDiv.parentNode,'display') == 'none') return;
+    Rico.log('resizeWindow: about to adjustPageSize')
     var oldSize=this.pageSize;
     this.adjustPageSize();
     this.finishResize(oldSize);
   },
 
   finishResize: function(oldSize) {
     var oldSize=this.pageSize;
     this.adjustPageSize();
     this.finishResize(oldSize);
   },
 
   finishResize: function(oldSize) {
+    Rico.log('finishResize '+this.tableId);
     if (this.pageSize > oldSize && this.buffer.totalRows>0) {
       this.isPartialBlank=true;
       var adjStart=this.adjustRow(this.lastRowPos);
     if (this.pageSize > oldSize && this.buffer.totalRows>0) {
       this.isPartialBlank=true;
       var adjStart=this.adjustRow(this.lastRowPos);
@@ -1152,6 +1172,7 @@ Rico.LiveGridMethods = {
   },
 
   finishResize2: function() {
   },
 
   finishResize2: function() {
+    Rico.log('finishResize2 '+this.tableId+': resizeState='+this.resizeState);
     this.sizeDivs();
     this.updateHeightDiv();
     if (this.resizeState=='resize') {
     this.sizeDivs();
     this.updateHeightDiv();
     if (this.resizeState=='resize') {
@@ -2089,6 +2110,8 @@ getFilterText: function() {
   switch (this.filterOp) {
     case 'EQ':   return '= '+vals.join(', ');
     case 'NE':   return Rico.getPhraseById('filterNot',vals.join(', '));
   switch (this.filterOp) {
     case 'EQ':   return '= '+vals.join(', ');
     case 'NE':   return Rico.getPhraseById('filterNot',vals.join(', '));
+    case 'LT':   return '< '+vals[0];
+    case 'GT':   return '> '+vals[0];
     case 'LE':   return '<= '+vals[0];
     case 'GE':   return '>= '+vals[0];
     case 'LIKE': return Rico.getPhraseById('filterLike',vals[0]);
     case 'LE':   return '<= '+vals[0];
     case 'GE':   return '>= '+vals[0];
     case 'LIKE': return Rico.getPhraseById('filterLike',vals[0]);
@@ -2170,12 +2193,23 @@ isFiltered: function() {
   return this.filterType == Rico.ColumnConst.USERFILTER;
 },
 
   return this.filterType == Rico.ColumnConst.USERFILTER;
 },
 
-filterChange: function(e) {\r
+filterChange: function(e) {
   var selbox=Rico.eventElement(e);
   var selbox=Rico.eventElement(e);
-  if (selbox.value==this.liveGrid.options.FilterAllToken)\r
-    this.setUnfiltered();\r
+  if (selbox.value==this.liveGrid.options.FilterAllToken)
+    this.setUnfiltered();
   else
   else
-    this.setFilter('EQ',selbox.value,Rico.ColumnConst.USERFILTER,function() {selbox.selectedIndex=0;});\r
+    this.setFilter('EQ',selbox.value,Rico.ColumnConst.USERFILTER,function() {selbox.selectedIndex=0;});
+},
+
+nFilterChange: function(e) {
+  var selbox=Rico.eventElement(e);
+  if (selbox.value==this.liveGrid.options.FilterAllToken) {
+    this.setUnfiltered();
+  } else {
+    var op=selbox.value.substr(0,2);
+    var value=selbox.value.substr(2);
+    this.setFilter(op,value,Rico.ColumnConst.USERFILTER,function() {selbox.selectedIndex=0;});
+  }
 },
 
 filterClear: function(e) {\r
 },
 
 filterClear: function(e) {\r
index f2273b5..44fd353 100644 (file)
@@ -92,7 +92,7 @@ Rico.Buffer.AjaxXMLMethods = {
       page_size: (typeof fetchSize=='number') ? fetchSize : this.totalRows,
       offset: startPos.toString()
     };
       page_size: (typeof fetchSize=='number') ? fetchSize : this.totalRows,
       offset: startPos.toString()
     };
-    if (!this.foundRowCount) queryHash['get_total']='true';
+    queryHash[this.liveGrid.actionId]="query";
     if (this.options.requestParameters) {
       for ( var i=0; i < this.options.requestParameters.length; i++ ) {
         var anArg = this.options.requestParameters[i];
     if (this.options.requestParameters) {
       for ( var i=0; i < this.options.requestParameters.length; i++ ) {
         var anArg = this.options.requestParameters[i];
@@ -155,6 +155,7 @@ Rico.Buffer.AjaxXMLMethods = {
       this.liveGrid.showMsg(Rico.getPhraseById("httpError",xhr.status));
       return;
     }
       this.liveGrid.showMsg(Rico.getPhraseById("httpError",xhr.status));
       return;
     }
+    Rico.log("ajaxUpdate: startPos="+startPos);
     this._responseHandler=this['processResponse'+this.options.fmt.toUpperCase()];
     if (!this._responseHandler(startPos,xhr)) return;
     if (this.options.onAjaxUpdate)
     this._responseHandler=this['processResponse'+this.options.fmt.toUpperCase()];
     if (!this._responseHandler(startPos,xhr)) return;
     if (this.options.onAjaxUpdate)
@@ -236,7 +237,6 @@ Rico.Buffer.AjaxXMLMethods = {
   },
 
   dom2jstableStyle: function(rowsElement,firstRow) {
   },
 
   dom2jstableStyle: function(rowsElement,firstRow) {
-    var acceptStyle=this.options.acceptStyle;
     Rico.log("dom2jstableStyle start");
     var newRows = [];
     var trs = rowsElement.getElementsByTagName("tr");
     Rico.log("dom2jstableStyle start");
     var newRows = [];
     var trs = rowsElement.getElementsByTagName("tr");
@@ -307,8 +307,6 @@ Rico.Buffer.AjaxXMLMethods = {
         this.setTotalRows(eofrow);
         newpos=Math.min(this.liveGrid.topOfLastPage(),offset);
         Rico.log("updateGrid: new rowcnt="+eofrow+" newpos="+newpos);
         this.setTotalRows(eofrow);
         newpos=Math.min(this.liveGrid.topOfLastPage(),offset);
         Rico.log("updateGrid: new rowcnt="+eofrow+" newpos="+newpos);
-        if (lastTotalRows==0 && this.liveGrid.sizeTo=='data')
-          Rico.runLater(100,this.liveGrid,'adjustPageSize');  // FF takes a long time to calc initial size
         this.liveGrid.scrollToRow(newpos);
         if ( this.isInRange(newpos) ) {
           this.liveGrid.refreshContents(newpos);
         this.liveGrid.scrollToRow(newpos);
         if ( this.isInRange(newpos) ) {
           this.liveGrid.refreshContents(newpos);
@@ -471,7 +469,7 @@ Rico.Buffer.AjaxSQLMethods = {
 
   formQueryHashSQL: function(startPos,fetchSize,fmt) {
     var queryHash=this.formQueryHashXML(startPos,fetchSize);
 
   formQueryHashSQL: function(startPos,fetchSize,fmt) {
     var queryHash=this.formQueryHashXML(startPos,fetchSize);
-    queryHash[this.liveGrid.actionId]="query";
+    if (!this.foundRowCount) queryHash['get_total']='true';
     if (fmt) queryHash._fmt=fmt;
 
     // sort
     if (fmt) queryHash._fmt=fmt;
 
     // sort
@@ -529,7 +527,7 @@ Rico.Buffer.AjaxSQLMethods = {
         this.startPos = start;
       } else {
         this.rows = this.rows.concat( newRows.slice(0, newRows.length));
         this.startPos = start;
       } else {
         this.rows = this.rows.concat( newRows.slice(0, newRows.length));
-        if (this.attr) this.attr = this.attr.concat( newStyle.slice(0, newStyle.length));
+        if (this.attr && newStyle) this.attr = this.attr.concat( newStyle.slice(0, newStyle.length));
         if (this.rows.length > this.maxBufferSize) {
           var fullSize = this.rows.length;
           this.rows = this.rows.slice(this.rows.length - this.maxBufferSize, this.rows.length);
         if (this.rows.length > this.maxBufferSize) {
           var fullSize = this.rows.length;
           this.rows = this.rows.slice(this.rows.length - this.maxBufferSize, this.rows.length);
index 0687f5a..9dd0da8 100644 (file)
@@ -50,7 +50,7 @@ Rico.TableColumn.checkboxKey.prototype = {
   },
 
   _onclick: function(e) {
   },
 
   _onclick: function(e) {
-    var elem=Event.element(e);
+    var elem=Rico.eventElement(e);
     var windowRow=parseInt(elem.id.substr((elem.id.lastIndexOf('_',elem.id.length)+1)));  //faster than split
     var v=this.getValue(windowRow);
     if (elem.checked)
     var windowRow=parseInt(elem.id.substr((elem.id.lastIndexOf('_',elem.id.length)+1)));  //faster than split
     var v=this.getValue(windowRow);
     if (elem.checked)
@@ -115,7 +115,7 @@ Rico.TableColumn.checkbox.prototype = {
   },
 
   _onclick: function(e) {
   },
 
   _onclick: function(e) {
-    var elem=Event.element(e);
+    var elem=Rico.eventElement(e);
     var windowRow=parseInt(elem.id.substr((elem.id.lastIndexOf('_',elem.id.length)+1)));  //faster than split
     var newval=elem.checked ? this._checkedValue : this._uncheckedValue;
     this.setValue(windowRow,newval);
     var windowRow=parseInt(elem.id.substr((elem.id.lastIndexOf('_',elem.id.length)+1)));  //faster than split
     var newval=elem.checked ? this._checkedValue : this._uncheckedValue;
     this.setValue(windowRow,newval);
index 8ccd99e..6c8a6e6 100644 (file)
@@ -65,6 +65,8 @@ Rico.SimpleGrid.prototype = {
       this.createFilters(this.options.FilterLocation);
     this.attachMenuEvents();
     this.scrollEventFunc=Rico.eventHandle(this,'handleScroll');
       this.createFilters(this.options.FilterLocation);
     this.attachMenuEvents();
     this.scrollEventFunc=Rico.eventHandle(this,'handleScroll');
+    this.scrollFrozenEventFunc=Rico.eventHandle(this,'handleScrollFrozen');
+    this.scrollHeadingEventFunc=Rico.eventHandle(this,'handleScrollHeading');
     this.pluginScroll();
     if (this.options.windowResize)
       Rico.eventBind(window,"resize", Rico.eventHandle(this,'sizeDivs'), false);
     this.pluginScroll();
     if (this.options.windowResize)
       Rico.eventBind(window,"resize", Rico.eventHandle(this,'sizeDivs'), false);
@@ -154,10 +156,38 @@ Rico.SimpleGrid.prototype = {
     this.sizeDivs();\r
   },
 
     this.sizeDivs();\r
   },
 
+  pluginScroll: function() {
+     if (this.scrollPluggedIn) return;
+     Rico.eventBind(this.scrollDiv,"scroll",this.scrollEventFunc, false);
+     Rico.eventBind(this.frozenTabs,"scroll",this.scrollFrozenEventFunc, false);
+     Rico.eventBind(this.innerDiv,"scroll",this.scrollHeadingEventFunc, false);
+     this.scrollPluggedIn=true;
+  },
+
+  unplugScroll: function() {
+     Rico.eventUnbind(this.scrollDiv,"scroll", this.scrollEventFunc , false);
+     Rico.eventUnbind(this.frozenTabs,"scroll", this.scrollFrozenEventFunc , false);
+     Rico.eventUnbind(this.innerDiv,"scroll", this.scrollHeadingEventFunc , false);
+     this.scrollPluggedIn=false;
+  },
+
   handleScroll: function(e) {
   handleScroll: function(e) {
-    var newTop=(-this.scrollDiv.scrollTop)+'px';
-    this.tabs[0].style.marginTop=newTop;
-    this.setHorizontalScroll();
+    this.frozenTabs.scrollTop=this.scrollDiv.scrollTop;
+    this.innerDiv.scrollLeft=this.scrollDiv.scrollLeft;
+  },
+
+  /**
+   * Frozen columns scrolled due to user invoking browser find
+   */
+  handleScrollFrozen: function(e) {
+    this.scrollDiv.scrollTop=this.frozenTabs.scrollTop;
+  },
+  
+  /**
+   * Heading scrolled due to user invoking browser find
+   */
+  handleScrollHeading: function(e) {
+    this.scrollDiv.scrollLeft=this.innerDiv.scrollLeft;
   },
 
   /**
   },
 
   /**
index 0c50591..48f0662 100644 (file)
@@ -244,7 +244,7 @@ Rico.Popup.prototype = {
  */
   closePopup: function() {
     Rico._RemoveOpenPopup(this);
  */
   closePopup: function() {
     Rico._RemoveOpenPopup(this);
-    if (!Rico.visible(this.container)) return;
+    if (!this.visible()) return;
     if (this.container.id) Rico.log('closePopup '+this.container.id);
     if (this.dragEnabled) this._endDrag();
     this.container.style.display="none";
     if (this.container.id) Rico.log('closePopup '+this.container.id);
     if (this.dragEnabled) this._endDrag();
     this.container.style.display="none";
index 0e956ab..ebe2069 100644 (file)
@@ -227,7 +227,7 @@ class SimpleGrid
     ' frozen columns\r
     '-------------------\r
     ' upper left\r
     ' frozen columns\r
     '-------------------\r
     ' upper left\r
-    response.write vbLf & "<table id='" & id & "_tab0h' class='ricoLG_table ricoLG_top ricoLG_left' cellspacing='0' cellpadding='0'><thead>"\r
+    response.write vbLf & "<table id='" & id & "_tab0h' class='ricoLG_table ricoLG_left' cellspacing='0' cellpadding='0'><thead class='ricoLG_top'>"\r
     for r=0 to LastHeadingRow\r
       response.write vbLf & "<tr class='" & rows(r).HeadingClass & "'"\r
       if r=ResizeRowIdx then response.write " id='" & id & "_tab0h_main'"\r
     for r=0 to LastHeadingRow\r
       response.write vbLf & "<tr class='" & rows(r).HeadingClass & "'"\r
       if r=ResizeRowIdx then response.write " id='" & id & "_tab0h_main'"\r
@@ -254,8 +254,7 @@ class SimpleGrid
 \r
     ' upper right\r
     response.write vbLf & "<td><div id='" & id & "_innerDiv'>"\r
 \r
     ' upper right\r
     response.write vbLf & "<td><div id='" & id & "_innerDiv'>"\r
-    response.write vbLf & "<div id='" & id & "_scrollTabsDiv'>"\r
-    response.write vbLf & "<table id='" & id & "_tab1h' class='ricoLG_table ricoLG_top ricoLG_right' cellspacing='0' cellpadding='0'><thead>"\r
+    response.write vbLf & "<table id='" & id & "_tab1h' class='ricoLG_table ricoLG_right' cellspacing='0' cellpadding='0'><thead class='ricoLG_top'>"\r
     for r=0 to LastHeadingRow\r
       response.write vbLf & "<tr class='" & rows(r).HeadingClass & "'"\r
       if r=ResizeRowIdx then response.write " id='" & id & "_tab1h_main'"\r
     for r=0 to LastHeadingRow\r
       response.write vbLf & "<tr class='" & rows(r).HeadingClass & "'"\r
       if r=ResizeRowIdx then response.write " id='" & id & "_tab1h_main'"\r
@@ -265,7 +264,6 @@ class SimpleGrid
     next\r
     response.write vbLf & "</thead></table>"\r
     response.write vbLf & "</div>"\r
     next\r
     response.write vbLf & "</thead></table>"\r
     response.write vbLf & "</div>"\r
-    response.write vbLf & "</div>"\r
 \r
     ' lower right\r
     response.write vbLf & "<tr valign='top'><td><div id='" & id & "_scrollDiv'>"\r
 \r
     ' lower right\r
     response.write vbLf & "<tr valign='top'><td><div id='" & id & "_scrollDiv'>"\r
index c8f8821..fe43861 100644 (file)
@@ -232,7 +232,7 @@ class SimpleGrid {
     //-------------------\r
     echo "\n<div id='".$id."_frozenTabsDiv'>";\r
     // upper left\r
     //-------------------\r
     echo "\n<div id='".$id."_frozenTabsDiv'>";\r
     // upper left\r
-    echo "\n<table id='".$id."_tab0h' class='ricoLG_table ricoLG_top ricoLG_left' cellspacing='0' cellpadding='0'><thead>";\r
+    echo "\n<table id='".$id."_tab0h' class='ricoLG_table ricoLG_left' cellspacing='0' cellpadding='0'><thead class='ricoLG_top'>";\r
     for ($r=0; $r<=$this->LastHeadingRow; $r++) {\r
       echo "\n<tr class='".$this->rows[$r]->HeadingClass()."'";\r
       if ($r == $this->ResizeRowIdx) {\r
     for ($r=0; $r<=$this->LastHeadingRow; $r++) {\r
       echo "\n<tr class='".$this->rows[$r]->HeadingClass()."'";\r
       if ($r == $this->ResizeRowIdx) {\r
@@ -255,8 +255,7 @@ class SimpleGrid {
     //-------------------\r
     // upper right\r
     echo "\n<div id='".$id."_innerDiv'>";\r
     //-------------------\r
     // upper right\r
     echo "\n<div id='".$id."_innerDiv'>";\r
-    echo "\n<div id='".$id."_scrollTabsDiv'>";\r
-    echo "\n<table id='".$id."_tab1h' class='ricoLG_table ricoLG_top ricoLG_right' cellspacing='0' cellpadding='0'><thead>";\r
+    echo "\n<table id='".$id."_tab1h' class='ricoLG_table ricoLG_right' cellspacing='0' cellpadding='0'><thead class='ricoLG_top'>";\r
     for ($r=0; $r<=$this->LastHeadingRow; $r++) {\r
       echo "\n<tr class='".$this->rows[$r]->HeadingClass()."'";\r
       if ($r == $this->ResizeRowIdx) {\r
     for ($r=0; $r<=$this->LastHeadingRow; $r++) {\r
       echo "\n<tr class='".$this->rows[$r]->HeadingClass()."'";\r
       if ($r == $this->ResizeRowIdx) {\r
@@ -268,7 +267,6 @@ class SimpleGrid {
     }\r
     echo "\n</thead></table>";\r
     echo "\n</div>";\r
     }\r
     echo "\n</thead></table>";\r
     echo "\n</div>";\r
-    echo "\n</div>";\r
     // lower right\r
     echo "\n<div id='".$id."_scrollDiv'>";\r
     echo "\n<table id='".$id."_tab1' class='ricoLG_table ricoLG_bottom ricoLG_right' cellspacing='0' cellpadding='0'>";\r
     // lower right\r
     echo "\n<div id='".$id."_scrollDiv'>";\r
     echo "\n<table id='".$id."_tab1' class='ricoLG_table ricoLG_bottom ricoLG_right' cellspacing='0' cellpadding='0'>";\r
index d7d7dc7..1083893 100644 (file)
@@ -1012,7 +1012,7 @@ class dbClass
     $this->Dialect="MySQL";\r
     $this->dbDefault = $DefDB;\r
     $this->dbMain = mysql_connect($this->Provider,$userid,$pw);\r
     $this->Dialect="MySQL";\r
     $this->dbDefault = $DefDB;\r
     $this->dbMain = mysql_connect($this->Provider,$userid,$pw);\r
-    $this->db =& new dbClass_mysql($this->dbMain);\r
+    $this->db = new dbClass_mysql($this->dbMain);\r
     if ($this->CheckForError("opening connection to " . $this->Provider)) return false;\r
     mysql_select_db($DefDB,$this->dbMain);\r
     if ($this->CheckForError("selecting database " . $DefDB)) return false;\r
     if ($this->CheckForError("opening connection to " . $this->Provider)) return false;\r
     mysql_select_db($DefDB,$this->dbMain);\r
     if ($this->CheckForError("selecting database " . $DefDB)) return false;\r
@@ -1027,7 +1027,7 @@ class dbClass
     $this->Dialect="PostgreSQL";\r
     $this->dbDefault = "";\r
     $this->dbMain = pg_connect($connection_string);\r
     $this->Dialect="PostgreSQL";\r
     $this->dbDefault = "";\r
     $this->dbMain = pg_connect($connection_string);\r
-    $this->db =& new dbClass_postgresql($this->dbMain);\r
+    $this->db = new dbClass_postgresql($this->dbMain);\r
     if ($this->CheckForError("opening connection")) return false;\r
     return true;\r
   }\r
     if ($this->CheckForError("opening connection")) return false;\r
     return true;\r
   }\r
@@ -1040,7 +1040,7 @@ class dbClass
     $this->Dialect="Oracle";\r
     $this->dbDefault = $user;\r
     $this->dbMain = ocilogon($user,$pw,$sim);\r
     $this->Dialect="Oracle";\r
     $this->dbDefault = $user;\r
     $this->dbMain = ocilogon($user,$pw,$sim);\r
-    $this->db =& new dbClass_oci($this->dbMain);\r
+    $this->db = new dbClass_oci($this->dbMain);\r
     if ($this->CheckForError("opening connection")) return false;\r
     $this->RunActionQuery("alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'");\r
     return true;\r
     if ($this->CheckForError("opening connection")) return false;\r
     $this->RunActionQuery("alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'");\r
     return true;\r
@@ -1059,7 +1059,7 @@ class dbClass
       $this->LastErrorMsg="Error while connecting to ".$servername;\r
       return false;\r
     }\r
       $this->LastErrorMsg="Error while connecting to ".$servername;\r
       return false;\r
     }\r
-    $this->db =& new dbClass_mssql($this->dbMain);\r
+    $this->db = new dbClass_mssql($this->dbMain);\r
     mssql_select_db($DefDB,$this->dbMain);\r
     return true;\r
   }\r
     mssql_select_db($DefDB,$this->dbMain);\r
     return true;\r
   }\r
index f722156..fea6476 100644 (file)
@@ -720,7 +720,8 @@ class TableEditClass {
   }\r
 \r
   function InitScript() {\r
   }\r
 \r
   function InitScript() {\r
-    $s="\n".$this->bufferVar."=new Rico.Buffer.AjaxSQL('" . $this->options["XMLprovider"] . "', {TimeOut:" . (array_shift(session_get_cookie_params())/60) . "});";\r
+    $CookieInfo = session_get_cookie_params();\r
+    $s="\n".$this->bufferVar."=new Rico.Buffer.AjaxSQL('" . $this->options["XMLprovider"] . "', {TimeOut:" . (array_shift($CookieInfo)/60) . "});";\r
     $s.="\nif(typeof ".$this->gridID."_GridInit=='function') ".$this->gridID."_GridInit();";\r
     $s.="\n".$this->gridVar."=new Rico.LiveGrid('".$this->gridID."',".$this->bufferVar.",".$this->optionsVar.");";\r
     $s.="\n".$this->gridVar.".menu=new Rico.GridMenu();";\r
     $s.="\nif(typeof ".$this->gridID."_GridInit=='function') ".$this->gridID."_GridInit();";\r
     $s.="\n".$this->gridVar."=new Rico.LiveGrid('".$this->gridID."',".$this->bufferVar.",".$this->optionsVar.");";\r
     $s.="\n".$this->gridVar.".menu=new Rico.GridMenu();";\r
index 6904f64..ad9e1cd 100644 (file)
@@ -70,6 +70,12 @@ div.ricoLG_highlightDiv {
   width:100%; \r
 }\r
 \r
   width:100%; \r
 }\r
 \r
+.ricoLG_FilterRow input, .ricoLG_FilterRow select, .ricoLG_FilterRow option {\r
+  font-weight: normal;\r
+  font-size: 90% !important;\r
+  padding: 1px;\r
+}\r
+\r
 div.ricoLG_mFilter {\r
   position:absolute;\r
   z-index:200;\r
 div.ricoLG_mFilter {\r
   position:absolute;\r
   z-index:200;\r
@@ -179,12 +185,6 @@ span.ricoSessionTimer {
   color:white;\r
 }\r
 \r
   color:white;\r
 }\r
 \r
-thead.ricoLG_top option, thead.ricoLG_top select, thead.ricoLG_top input {\r
-  font-weight: normal;\r
-  font-size: 90% !important;\r
-  padding: 1px;\r
-}\r
-\r
 /* grid column chooser */\r
 \r
 div.ricoLG_chooserDiv {\r
 /* grid column chooser */\r
 \r
 div.ricoLG_chooserDiv {\r
@@ -288,9 +288,9 @@ form .ricoEditLabel {
   -webkit-box-shadow: 3px 3px 4px #888;\r
   box-shadow: 3px 3px 4px #888;\r
   /* For IE 8 */\r
   -webkit-box-shadow: 3px 3px 4px #888;\r
   box-shadow: 3px 3px 4px #888;\r
   /* For IE 8 */\r
-  -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')";\r
+  -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=135, Color='#aaaaaa')";\r
   /* For IE 5.5 - 7 */\r
   /* For IE 5.5 - 7 */\r
-  filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');\r
+  filter: progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=135, Color='#aaaaaa');\r
 }\r
 \r
 \r
 }\r
 \r
 \r
@@ -300,22 +300,20 @@ div.ricoMenu, div.ricoMenuSafari {
 border:1px solid #666;\r
 padding:2px;\r
 cursor:default;\r
 border:1px solid #666;\r
 padding:2px;\r
 cursor:default;\r
+font-family:tahoma,arial,helvetica,sans-serif;\r
+font-size: 70%;\r
 }\r
 \r
 }\r
 \r
-div.ricoMenu {\r
+div.ricoMenu, div.ricoMenu a {\r
 background-color:menu;\r
 color: menutext;\r
 text-decoration: none;\r
 background-color:menu;\r
 color: menutext;\r
 text-decoration: none;\r
-font-family:tahoma,arial,helvetica,sans-serif;\r
-font-size: 70%;\r
 display:block;\r
 }\r
 \r
 display:block;\r
 }\r
 \r
-div.ricoMenuSafari {\r
+div.ricoMenuSafari, div.ricoMenuSafari a {\r
 background-color:#EDEDED;\r
 text-decoration: none;\r
 background-color:#EDEDED;\r
 text-decoration: none;\r
-font-family:tahoma,arial,helvetica,sans-serif;\r
-font-size: 70%;\r
 display:block;\r
 }\r
 \r
 display:block;\r
 }\r
 \r
index a1ccaaa..b5ba656 100644 (file)
@@ -1,4 +1,4 @@
-Rico.Version="3.0b2";
+Rico.Version="3.0";
 Rico.theme={};
 Rico.onLoadCallbacks=[];
 Rico.windowIsLoaded=false;
 Rico.theme={};
 Rico.onLoadCallbacks=[];
 Rico.windowIsLoaded=false;
@@ -132,7 +132,7 @@ while(a.length<c){a="0"+a
 }return a
 };
 Rico.keys=function(c){var b=[];
 }return a
 };
 Rico.keys=function(c){var b=[];
-for(var a in c){b.push[a]
+for(var a in c){b.push(a)
 }return b
 };
 Rico.eventKey=function(a){if(typeof(a.keyCode)=="number"){return a.keyCode
 }return b
 };
 Rico.eventKey=function(a){if(typeof(a.keyCode)=="number"){return a.keyCode
@@ -271,10 +271,10 @@ i=d+this.formatPosNumber(b,h,e)
 };
 Rico.formatDate=function(c,a){var b=(typeof a=="string")?a:"translateDate";
 switch(b){case"locale":case"localeDateTime":return c.toLocaleString();
 };
 Rico.formatDate=function(c,a){var b=(typeof a=="string")?a:"translateDate";
 switch(b){case"locale":case"localeDateTime":return c.toLocaleString();
-case"localeDate":return c.toLocaleDateString();
+case"Long Date":case"localeDate":return c.toLocaleDateString();
 case"translate":case"translateDateTime":b=this.dateFmt+" "+this.timeFmt;
 break;
 case"translate":case"translateDateTime":b=this.dateFmt+" "+this.timeFmt;
 break;
-case"translateDate":b=this.dateFmt;
+case"Short Date":case"translateDate":b=this.dateFmt;
 break
 }return b.replace(/(yyyy|yy|mmmm|mmm|mm|dddd|ddd|dd|d|hh|nn|ss|a\/p)/gi,function(d){var e;
 switch(d){case"yyyy":return c.getFullYear();
 break
 }return b.replace(/(yyyy|yy|mmmm|mmm|mm|dddd|ddd|dd|d|hh|nn|ss|a\/p)/gi,function(d){var e;
 switch(d){case"yyyy":return c.getFullYear();
@@ -1049,7 +1049,6 @@ this.defaultMax=new Date(b.getFullYear()+50,11,31);
 Rico.extend(this,new Rico.Popup());
 Rico.extend(this.options,{ignoreClicks:true,startAt:0,showWeekNumber:0,showToday:1,dateFmt:"ISO8601",minDate:this.defaultMin,maxDate:this.defaultMax});
 Rico.extend(this.options,c||{});
 Rico.extend(this,new Rico.Popup());
 Rico.extend(this.options,{ignoreClicks:true,startAt:0,showWeekNumber:0,showToday:1,dateFmt:"ISO8601",minDate:this.defaultMin,maxDate:this.defaultMax});
 Rico.extend(this.options,c||{});
-this.close=this.closePopup;
 this.bPageLoaded=false;
 this.Holidays={};
 this.re=/^\s*(\w+)(\W)(\w+)(\W)(\w+)/i;
 this.bPageLoaded=false;
 this.Holidays={};
 this.re=/^\s*(\w+)(\W)(\w+)(\W)(\w+)/i;
@@ -1212,20 +1211,22 @@ this.constructCalendar()
 }if(a>this.options.maxDate.getFullYear()){return false
 }if(a==this.options.maxDate.getFullYear()&&b>this.options.maxDate.getMonth()){return false
 }return true
 }if(a>this.options.maxDate.getFullYear()){return false
 }if(a==this.options.maxDate.getFullYear()&&b>this.options.maxDate.getMonth()){return false
 }return true
-},incMonth:function(){var b=this.monthSelected+1;
+},incMonth:function(b){if(b){Rico.eventStop(b)
+}var c=this.monthSelected+1;
 var a=this.yearSelected;
 var a=this.yearSelected;
-if(b>11){b=0;
+if(c>11){c=0;
 a++
 a++
-}if(!this.isValidMonth(a,b)){return
-}this.monthSelected=b;
+}if(!this.isValidMonth(a,c)){return
+}this.monthSelected=c;
 this.yearSelected=a;
 this.constructCalendar()
 this.yearSelected=a;
 this.constructCalendar()
-},decMonth:function(){var b=this.monthSelected-1;
+},decMonth:function(b){if(b){Rico.eventStop(b)
+}var c=this.monthSelected-1;
 var a=this.yearSelected;
 var a=this.yearSelected;
-if(b<0){b=11;
+if(c<0){c=11;
 a--
 a--
-}if(!this.isValidMonth(a,b)){return
-}this.monthSelected=b;
+}if(!this.isValidMonth(a,c)){return
+}this.monthSelected=c;
 this.yearSelected=a;
 this.constructCalendar()
 },selectMonth:function(b){var a=Rico.eventElement(b);
 this.yearSelected=a;
 this.constructCalendar()
 },selectMonth:function(b){var a=Rico.eventElement(b);
@@ -1270,10 +1271,12 @@ if(isNaN(a)||a<this.options.minDate.getFullYear()||a>this.options.maxDate.getFul
 }else{this.yearSelected=a;
 this.popDownYear();
 this.constructCalendar()
 }else{this.yearSelected=a;
 this.popDownYear();
 this.constructCalendar()
-}},incYear:function(){if(this.yearSelected>=this.options.maxDate.getFullYear()){return
+}},incYear:function(a){if(a){Rico.eventStop(a)
+}if(this.yearSelected>=this.options.maxDate.getFullYear()){return
 }this.yearSelected++;
 this.constructCalendar()
 }this.yearSelected++;
 this.constructCalendar()
-},decYear:function(){if(this.yearSelected<=this.options.minDate.getFullYear()){return
+},decYear:function(a){if(a){Rico.eventStop(a)
+}if(this.yearSelected<=this.options.minDate.getFullYear()){return
 }this.yearSelected--;
 this.constructCalendar()
 },WeekNbr:function(h,f,j){var g=new Date(h,f,j);
 }this.yearSelected--;
 this.constructCalendar()
 },WeekNbr:function(h,f,j){var g=new Date(h,f,j);
@@ -1333,6 +1336,8 @@ if(this.todayCell){this.todayCell.innerHTML=Rico.getPhraseById("calToday",this.d
 }},resetCell:function(a){a.innerHTML="&nbsp;";
 a.title="";
 a.style.visibility="hidden"
 }},resetCell:function(a){a.innerHTML="&nbsp;";
 a.title="";
 a.style.visibility="hidden"
+},close:function(a){if(a){Rico.eventStop(a)
+}this.closePopup()
 },saveAndClose:function(g){Rico.eventStop(g);
 var f=Rico.eventElement(g);
 var c=f.innerHTML.replace(/&nbsp;/g,"");
 },saveAndClose:function(g){Rico.eventStop(g);
 var f=Rico.eventElement(g);
 var c=f.innerHTML.replace(/&nbsp;/g,"");
@@ -1342,7 +1347,7 @@ if(isNaN(b)){return
 }var h=new Date(this.yearSelected,this.monthSelected,b);
 var a=Rico.formatDate(h,this.dateFmt=="ISO8601"?"yyyy-mm-dd":this.dateFmt);
 if(this.returnValue){this.returnValue(a);
 }var h=new Date(this.yearSelected,this.monthSelected,b);
 var a=Rico.formatDate(h,this.dateFmt=="ISO8601"?"yyyy-mm-dd":this.dateFmt);
 if(this.returnValue){this.returnValue(a);
-this.close()
+this.closePopup()
 }},open:function(c,b){if(!this.bPageLoaded){return
 }if(b){this.setDateFmt(b.format.dateFmt);
 this.options.minDate=b.format.min||this.defaultMin;
 }},open:function(c,b){if(!this.bPageLoaded){return
 }if(b){this.setDateFmt(b.format.dateFmt);
 this.options.minDate=b.format.min||this.defaultMin;
@@ -2168,13 +2173,6 @@ this.filterAnchor.innerHTML='<img src="'+Rico.imgDir+"tableFilter"+(b?"Expand":"
 },cell:function(a,b){return(0<=b&&b<this.columns.length&&a>=0)?this.columns[b].cell(a):null
 },availHt:function(){var a=Rico.cumulativeOffset(this.outerDiv);
 return Rico.windowHeight()-a.top-2*this.options.scrollBarWidth-15
 },cell:function(a,b){return(0<=b&&b<this.columns.length&&a>=0)?this.columns[b].cell(a):null
 },availHt:function(){var a=Rico.cumulativeOffset(this.outerDiv);
 return Rico.windowHeight()-a.top-2*this.options.scrollBarWidth-15
-},setHorizontalScroll:function(){var a=(-this.scrollDiv.scrollLeft)+"px";
-this.hdrTabs[1].style.marginLeft=a
-},pluginScroll:function(){if(this.scrollPluggedIn){return
-}Rico.eventBind(this.scrollDiv,"scroll",this.scrollEventFunc,false);
-this.scrollPluggedIn=true
-},unplugScroll:function(){Rico.eventUnbind(this.scrollDiv,"scroll",this.scrollEventFunc,false);
-this.scrollPluggedIn=false
 },hideMsg:function(){this.messagePopup.closePopup()
 },showMsg:function(a){this.messagePopup.setContent(a);
 this.messagePopup.centerPopup();
 },hideMsg:function(){this.messagePopup.closePopup()
 },showMsg:function(a){this.messagePopup.setContent(a);
 this.messagePopup.centerPopup();
@@ -2492,6 +2490,8 @@ this.sizeDivs();
 if(typeof(this.options.FilterLocation)=="number"){this.createFilters(this.options.FilterLocation)
 }this.attachMenuEvents();
 this.scrollEventFunc=Rico.eventHandle(this,"handleScroll");
 if(typeof(this.options.FilterLocation)=="number"){this.createFilters(this.options.FilterLocation)
 }this.attachMenuEvents();
 this.scrollEventFunc=Rico.eventHandle(this,"handleScroll");
+this.scrollFrozenEventFunc=Rico.eventHandle(this,"handleScrollFrozen");
+this.scrollHeadingEventFunc=Rico.eventHandle(this,"handleScrollHeading");
 this.pluginScroll();
 if(this.options.windowResize){Rico.eventBind(window,"resize",Rico.eventHandle(this,"sizeDivs"),false)
 }},filterId:function(a){return"RicoFilter_"+this.tableId+"_"+a
 this.pluginScroll();
 if(this.options.windowResize){Rico.eventBind(window,"resize",Rico.eventHandle(this,"sizeDivs"),false)
 }},filterId:function(a){return"RicoFilter_"+this.tableId+"_"+a
@@ -2547,9 +2547,19 @@ break
 }}if(e){this.showRow(d)
 }else{this.hideRow(d)
 }}this.sizeDivs()
 }}if(e){this.showRow(d)
 }else{this.hideRow(d)
 }}this.sizeDivs()
-},handleScroll:function(b){var a=(-this.scrollDiv.scrollTop)+"px";
-this.tabs[0].style.marginTop=a;
-this.setHorizontalScroll()
+},pluginScroll:function(){if(this.scrollPluggedIn){return
+}Rico.eventBind(this.scrollDiv,"scroll",this.scrollEventFunc,false);
+Rico.eventBind(this.frozenTabs,"scroll",this.scrollFrozenEventFunc,false);
+Rico.eventBind(this.innerDiv,"scroll",this.scrollHeadingEventFunc,false);
+this.scrollPluggedIn=true
+},unplugScroll:function(){Rico.eventUnbind(this.scrollDiv,"scroll",this.scrollEventFunc,false);
+Rico.eventUnbind(this.frozenTabs,"scroll",this.scrollFrozenEventFunc,false);
+Rico.eventUnbind(this.innerDiv,"scroll",this.scrollHeadingEventFunc,false);
+this.scrollPluggedIn=false
+},handleScroll:function(a){this.frozenTabs.scrollTop=this.scrollDiv.scrollTop;
+this.innerDiv.scrollLeft=this.scrollDiv.scrollLeft
+},handleScrollFrozen:function(a){this.scrollDiv.scrollTop=this.frozenTabs.scrollTop
+},handleScrollHeading:function(a){this.scrollDiv.scrollLeft=this.innerDiv.scrollLeft
 },registerScrollMenu:function(a){if(!this.menu){this.menu=a
 }a.grid=this;
 a.showmenu=a.showSimpleMenu;
 },registerScrollMenu:function(a){if(!this.menu){this.menu=a
 }a.grid=this;
 a.showmenu=a.showSimpleMenu;
@@ -2692,7 +2702,6 @@ this.options={fixedHdrRows:0,canFilter:true,isEncoded:true,acceptStyle:false,can
 Rico.extend(this.options,a||{});
 if(b){this.loadRowsFromTable(b,this.options.fixedHdrRows);
 b.parentNode.removeChild(b)
 Rico.extend(this.options,a||{});
 if(b){this.loadRowsFromTable(b,this.options.fixedHdrRows);
 b.parentNode.removeChild(b)
-}else{this.clear()
 }},registerGrid:function(a){this.liveGrid=a
 },setTotalRows:function(a){if(typeof(a)!="number"){a=this.size
 }if(this.totalRows==a){return
 }},registerGrid:function(a){this.liveGrid=a
 },setTotalRows:function(a){if(typeof(a)!="number"){a=this.size
 }if(this.totalRows==a){return
@@ -2795,6 +2804,8 @@ f=this.getValFunc(f)
 }return 1
 },clear:function(){this.baseRows=[];
 this.rows=[];
 }return 1
 },clear:function(){this.baseRows=[];
 this.rows=[];
+this.modified=[];
+this.attr=null;
 this.startPos=-1;
 this.size=0;
 this.windowPos=0
 this.startPos=-1;
 this.size=0;
 this.windowPos=0
@@ -2829,8 +2840,11 @@ if(a>=this.windowEnd){return false
 },setValue:function(d,b,c,a){if(d>=this.size){return false
 }if(!this.rows[d][b]){this.rows[d][b]={}
 }this.rows[d][b]=c;
 },setValue:function(d,b,c,a){if(d>=this.size){return false
 }if(!this.rows[d][b]){this.rows[d][b]={}
 }this.rows[d][b]=c;
-if(typeof a=="string"){this.rows[d][b]._style=a
-}this.rows[d][b].modified=true;
+if(this.options.acceptStyle&&typeof a=="string"){if(!this.attr){this.attr=[]
+}if(!this.attr[d]){this.attr[d]=[]
+}this.attr[d][b]=a
+}if(!this.modified[d]){this.modified[d]=[]
+}this.modified[d][b]=true;
 return true
 },getRows:function(f,d){var e=f-this.startPos;
 var a=Math.min(e+d,this.size);
 return true
 },getRows:function(f,d){var e=f-this.startPos;
 var a=Math.min(e+d,this.size);
@@ -3134,10 +3148,10 @@ var j,d=this.filterId(h);
 var i=l.getElementsByTagName("div");
 var g=Rico.getStyle(this.cell(0,h),"textAlign");
 i[1].style.textAlign=g;
 var i=l.getElementsByTagName("div");
 var g=Rico.getStyle(this.cell(0,h),"textAlign");
 i[1].style.textAlign=g;
-switch(f.filterUI.charAt(0)){case"t":j=Rico.createFormField(i[1],"input",Rico.inputtypes.search?"search":"text",d,d);
-var n=f.filterUI.match(/\d+/);
+switch(f.filterUI.charAt(0)){case"t":j=Rico.createFormField(i[1],"input",Rico.inputtypes.search?"search":"text",d,"RicoFilter");
+var o=f.filterUI.match(/\d+/);
 j.maxLength=f.Length||50;
 j.maxLength=f.Length||50;
-j.size=n?parseInt(n,10):10;
+j.size=o?parseInt(o,10):10;
 if(j.type!="search"){i[1].appendChild(Rico.clearButton(Rico.eventHandle(e,"filterClear")))
 }if(e.filterType==Rico.ColumnConst.USERFILTER&&e.filterOp=="LIKE"){var k=e.filterValues[0];
 if(k.charAt(0)=="*"){k=k.substr(1)
 if(j.type!="search"){i[1].appendChild(Rico.clearButton(Rico.eventHandle(e,"filterClear")))
 }if(e.filterType==Rico.ColumnConst.USERFILTER&&e.filterOp=="LIKE"){var k=e.filterValues[0];
 if(k.charAt(0)=="*"){k=k.substr(1)
@@ -3147,16 +3161,25 @@ e.lastKeyFilter=k
 }Rico.eventBind(j,"keyup",Rico.eventHandle(e,"filterKeypress"),false);
 e.filterField=j;
 break;
 }Rico.eventBind(j,"keyup",Rico.eventHandle(e,"filterKeypress"),false);
 e.filterField=j;
 break;
-case"m":case"s":j=Rico.createFormField(i[1],"select",null,d);
+case"m":case"s":j=Rico.createFormField(i[1],"select",null,d,"RicoFilter");
 Rico.addSelectOption(j,this.options.FilterAllToken,Rico.getPhraseById("filterAll"));
 e.filterField=j;
 Rico.addSelectOption(j,this.options.FilterAllToken,Rico.getPhraseById("filterAll"));
 e.filterField=j;
-var m={};
-Rico.extend(m,this.buffer.ajaxOptions);
+var n={};
+Rico.extend(n,this.buffer.ajaxOptions);
 var a=typeof(f.filterCol)=="number"?f.filterCol:h;
 var a=typeof(f.filterCol)=="number"?f.filterCol:h;
-m.parameters=this.buffer.formQueryHashXML(0,-1);
-m.parameters.distinct=a;
-m.onComplete=this.filterValuesUpdateFunc(h);
-new Rico.ajaxRequest(this.buffer.dataSource,m);
+n.parameters=this.buffer.formQueryHashXML(0,-1);
+n.parameters.distinct=a;
+n.onComplete=this.filterValuesUpdateFunc(h);
+new Rico.ajaxRequest(this.buffer.dataSource,n);
+break;
+case"n":j=Rico.createFormField(i[1],"select",null,d,"RicoFilter");
+Rico.addSelectOption(j,this.options.FilterAllToken,Rico.getPhraseById("filterAll"));
+e.filterField=j;
+var m=f.filterUI.length==1?"-0+":f.filterUI.substr(1);
+if(m.indexOf("-")>=0){Rico.addSelectOption(j,"LT0","< 0")
+}if(m.indexOf("0")>=0){Rico.addSelectOption(j,"EQ0","= 0")
+}if(m.indexOf("+")>=0){Rico.addSelectOption(j,"GT0","> 0")
+}Rico.eventBind(e.filterField,"change",Rico.eventHandle(e,"nFilterChange"));
 break;
 case"c":if(typeof e._createFilters=="function"){e._createFilters(i[1],d)
 }break
 break;
 case"c":if(typeof e._createFilters=="function"){e._createFilters(i[1],d)
 }break
@@ -3326,11 +3349,14 @@ if(!b||b==null){break
 if(b.tagName=="BODY"||b.tagName=="HTML"||d=="absolute"){return a-c.offsetTop
 }}while(b!=c);
 return a
 if(b.tagName=="BODY"||b.tagName=="HTML"||d=="absolute"){return a-c.offsetTop
 }}while(b!=c);
 return a
-},adjustPageSize:function(){var a=this.remainingHt();
+},adjustPageSize:function(){Rico.log("adjustPageSize start");
+var a=this.remainingHt();
 Rico.log("adjustPageSize remHt="+a+" lastRow="+this.lastRowPos);
 if(a>this.rowHeight){this.autoAppendRows(a)
 }else{if(a<0||this.sizeTo=="data"){this.autoRemoveRows(-a)
 Rico.log("adjustPageSize remHt="+a+" lastRow="+this.lastRowPos);
 if(a>this.rowHeight){this.autoAppendRows(a)
 }else{if(a<0||this.sizeTo=="data"){this.autoRemoveRows(-a)
-}}},setPageSize:function(b){b=Math.min(b,this.options.maxPageRows);
+}}Rico.log("adjustPageSize end")
+},setPageSize:function(b){Rico.log("setPageSize "+this.tableId+" newRowCount="+b);
+b=Math.min(b,this.options.maxPageRows);
 b=Math.max(b,this.options.minPageRows);
 this.sizeTo="fixed";
 var a=this.pageSize;
 b=Math.max(b,this.options.minPageRows);
 this.sizeTo="fixed";
 var a=this.pageSize;
@@ -3343,24 +3369,27 @@ Rico.eventBind(window,"resize",this.resizeWindowHandler,false)
 },unplugWindowResize:function(){if(!this.resizeWindowHandler){return
 }Rico.eventUnbind(window,"resize",this.resizeWindowHandler,false);
 this.resizeWindowHandler=null
 },unplugWindowResize:function(){if(!this.resizeWindowHandler){return
 }Rico.eventUnbind(window,"resize",this.resizeWindowHandler,false);
 this.resizeWindowHandler=null
-},resizeWindow:function(){Rico.log("resizeWindow "+this.tableId+" lastRow="+this.lastRowPos);
+},resizeWindow:function(){Rico.log("resizeWindow "+this.tableId+" lastRow="+this.lastRowPos+" resizeState="+this.resizeState);
 if(this.resizeState=="finish"){Rico.log("resizeWindow postponed");
 this.resizeState="resize";
 return
 }if(!this.sizeTo||this.sizeTo=="fixed"){this.sizeDivs();
 return
 }if(this.sizeTo=="parent"&&Rico.getStyle(this.outerDiv.parentNode,"display")=="none"){return
 if(this.resizeState=="finish"){Rico.log("resizeWindow postponed");
 this.resizeState="resize";
 return
 }if(!this.sizeTo||this.sizeTo=="fixed"){this.sizeDivs();
 return
 }if(this.sizeTo=="parent"&&Rico.getStyle(this.outerDiv.parentNode,"display")=="none"){return
-}var a=this.pageSize;
+}Rico.log("resizeWindow: about to adjustPageSize");
+var a=this.pageSize;
 this.adjustPageSize();
 this.finishResize(a)
 this.adjustPageSize();
 this.finishResize(a)
-},finishResize:function(b){if(this.pageSize>b&&this.buffer.totalRows>0){this.isPartialBlank=true;
+},finishResize:function(b){Rico.log("finishResize "+this.tableId);
+if(this.pageSize>b&&this.buffer.totalRows>0){this.isPartialBlank=true;
 var a=this.adjustRow(this.lastRowPos);
 this.buffer.fetch(a)
 }else{if(this.pageSize<b){if(this.options.onRefreshComplete){this.options.onRefreshComplete(this.contentStartPos,this.contentStartPos+this.pageSize-1)
 }}}this.resizeState="finish";
 Rico.runLater(20,this,"finishResize2");
 Rico.log("Resize "+this.tableId+" complete. old size="+b+" new size="+this.pageSize)
 var a=this.adjustRow(this.lastRowPos);
 this.buffer.fetch(a)
 }else{if(this.pageSize<b){if(this.options.onRefreshComplete){this.options.onRefreshComplete(this.contentStartPos,this.contentStartPos+this.pageSize-1)
 }}}this.resizeState="finish";
 Rico.runLater(20,this,"finishResize2");
 Rico.log("Resize "+this.tableId+" complete. old size="+b+" new size="+this.pageSize)
-},finishResize2:function(){this.sizeDivs();
+},finishResize2:function(){Rico.log("finishResize2 "+this.tableId+": resizeState="+this.resizeState);
+this.sizeDivs();
 this.updateHeightDiv();
 if(this.resizeState=="resize"){this.resizeWindow()
 }else{this.resizeState=""
 this.updateHeightDiv();
 if(this.resizeState=="resize"){this.resizeWindow()
 }else{this.resizeState=""
@@ -3857,6 +3886,8 @@ b++){var a=this.filterValues[b];
 c.push(a==""?Rico.getPhraseById("filterBlank"):a)
 }switch(this.filterOp){case"EQ":return"= "+c.join(", ");
 case"NE":return Rico.getPhraseById("filterNot",c.join(", "));
 c.push(a==""?Rico.getPhraseById("filterBlank"):a)
 }switch(this.filterOp){case"EQ":return"= "+c.join(", ");
 case"NE":return Rico.getPhraseById("filterNot",c.join(", "));
+case"LT":return"< "+c[0];
+case"GT":return"> "+c[0];
 case"LE":return"<= "+c[0];
 case"GE":return">= "+c[0];
 case"LIKE":return Rico.getPhraseById("filterLike",c[0]);
 case"LE":return"<= "+c[0];
 case"GE":return">= "+c[0];
 case"LIKE":return Rico.getPhraseById("filterLike",c[0]);
@@ -3896,6 +3927,12 @@ if(this.options.filterHandler){this.options.filterHandler()
 if(b.value==this.liveGrid.options.FilterAllToken){this.setUnfiltered()
 }else{this.setFilter("EQ",b.value,Rico.ColumnConst.USERFILTER,function(){b.selectedIndex=0
 })
 if(b.value==this.liveGrid.options.FilterAllToken){this.setUnfiltered()
 }else{this.setFilter("EQ",b.value,Rico.ColumnConst.USERFILTER,function(){b.selectedIndex=0
 })
+}},nFilterChange:function(b){var d=Rico.eventElement(b);
+if(d.value==this.liveGrid.options.FilterAllToken){this.setUnfiltered()
+}else{var c=d.value.substr(0,2);
+var a=d.value.substr(2);
+this.setFilter(c,a,Rico.ColumnConst.USERFILTER,function(){d.selectedIndex=0
+})
 }},filterClear:function(a){this.filterField.value="";
 this.setUnfiltered()
 },filterKeypress:function(c){var a=Rico.eventElement(c);
 }},filterClear:function(a){this.filterField.value="";
 this.setUnfiltered()
 },filterKeypress:function(c){var a=Rico.eventElement(c);
@@ -4009,7 +4046,7 @@ this._showKey=a
 this._spans[b]=Rico.createFormField(a,"span",null,this.liveGrid.tableId+"_desc_"+this.index+"_"+b);
 this._clear(a,b);
 Rico.eventBind(this._checkboxes[b],"click",Rico.eventHandle(this,"_onclick"))
 this._spans[b]=Rico.createFormField(a,"span",null,this.liveGrid.tableId+"_desc_"+this.index+"_"+b);
 this._clear(a,b);
 Rico.eventBind(this._checkboxes[b],"click",Rico.eventHandle(this,"_onclick"))
-},_onclick:function(c){var b=Event.element(c);
+},_onclick:function(c){var b=Rico.eventElement(c);
 var d=parseInt(b.id.substr((b.id.lastIndexOf("_",b.id.length)+1)));
 var a=this.getValue(d);
 if(b.checked){this._addChecked(a)
 var d=parseInt(b.id.substr((b.id.lastIndexOf("_",b.id.length)+1)));
 var a=this.getValue(d);
 if(b.checked){this._addChecked(a)
@@ -4037,7 +4074,7 @@ this._checkboxes=[]
 this._clear(a,b);
 if(this._readOnly){this._checkboxes[b].disabled=true
 }else{Rico.eventBind(this._checkboxes[b],"click",Rico.eventHandle(this,"_onclick"))
 this._clear(a,b);
 if(this._readOnly){this._checkboxes[b].disabled=true
 }else{Rico.eventBind(this._checkboxes[b],"click",Rico.eventHandle(this,"_onclick"))
-}},_onclick:function(c){var a=Event.element(c);
+}},_onclick:function(c){var a=Rico.eventElement(c);
 var d=parseInt(a.id.substr((a.id.lastIndexOf("_",a.id.length)+1)));
 var b=a.checked?this._checkedValue:this._uncheckedValue;
 this.setValue(d,b)
 var d=parseInt(a.id.substr((a.id.lastIndexOf("_",a.id.length)+1)));
 var b=a.checked?this._checkedValue:this._uncheckedValue;
 this.setValue(d,b)
@@ -4302,7 +4339,8 @@ this.processingRequest=false;
 if(c.status!=200){Rico.log("ajaxUpdate: received http error="+c.status);
 this.liveGrid.showMsg(Rico.getPhraseById("httpError",c.status));
 return
 if(c.status!=200){Rico.log("ajaxUpdate: received http error="+c.status);
 this.liveGrid.showMsg(Rico.getPhraseById("httpError",c.status));
 return
-}this._responseHandler=this["processResponse"+this.options.fmt.toUpperCase()];
+}Rico.log("ajaxUpdate: startPos="+a);
+this._responseHandler=this["processResponse"+this.options.fmt.toUpperCase()];
 if(!this._responseHandler(a,c)){return
 }if(this.options.onAjaxUpdate){this.options.onAjaxUpdate()
 }this.updateGrid(a);
 if(!this._responseHandler(a,c)){return
 }if(this.options.onAjaxUpdate){this.options.onAjaxUpdate()
 }this.updateGrid(a);
@@ -4353,20 +4391,19 @@ var e=(this.options.acceptStyle)?this.dom2jstableStyle(j):false;
 this.rcvdRows=h.length;
 this.updateBuffer(k,h,e);
 return true
 this.rcvdRows=h.length;
 this.updateBuffer(k,h,e);
 return true
-},dom2jstableStyle:function(e,b){var a=this.options.acceptStyle;
-Rico.log("dom2jstableStyle start");
-var f=[];
-var g=e.getElementsByTagName("tr");
-for(var d=b||0;
-d<g.length;
-d++){var k=[];
-var h=g[d].getElementsByTagName("td");
-for(var c=0;
-c<h.length;
-c++){k[c]=h[c].getAttribute("style")||""
-}f.push(k)
+},dom2jstableStyle:function(f,h){Rico.log("dom2jstableStyle start");
+var e=[];
+var a=f.getElementsByTagName("tr");
+for(var d=h||0;
+d<a.length;
+d++){var g=[];
+var c=a[d].getElementsByTagName("td");
+for(var b=0;
+b<c.length;
+b++){g[b]=c[b].getAttribute("style")||""
+}e.push(g)
 }Rico.log("dom2jstableStyle end");
 }Rico.log("dom2jstableStyle end");
-return f
+return e
 },processResponseJSON:function(a,d){var c=Rico.getJSON(d);
 if(!c||c==null){alert("Data provider returned an invalid JSON response");
 Rico.log("Data provider returned an invalid JSON response");
 },processResponseJSON:function(a,d){var c=Rico.getJSON(d);
 if(!c||c==null){alert("Data provider returned an invalid JSON response");
 Rico.log("Data provider returned an invalid JSON response");
@@ -4400,8 +4437,7 @@ var b=this.totalRows;
 if(!isNaN(d)&&d!=b){this.setTotalRows(d);
 e=Math.min(this.liveGrid.topOfLastPage(),f);
 Rico.log("updateGrid: new rowcnt="+d+" newpos="+e);
 if(!isNaN(d)&&d!=b){this.setTotalRows(d);
 e=Math.min(this.liveGrid.topOfLastPage(),f);
 Rico.log("updateGrid: new rowcnt="+d+" newpos="+e);
-if(b==0&&this.liveGrid.sizeTo=="data"){Rico.runLater(100,this.liveGrid,"adjustPageSize")
-}this.liveGrid.scrollToRow(e);
+this.liveGrid.scrollToRow(e);
 if(this.isInRange(e)){this.liveGrid.refreshContents(e)
 }else{this.fetch(e)
 }return
 if(this.isInRange(e)){this.liveGrid.refreshContents(e)
 }else{this.fetch(e)
 }return
@@ -4523,7 +4559,7 @@ this.startPos=d
 this.attr=b;
 this.startPos=d
 }else{this.rows=this.rows.concat(a.slice(0,a.length));
 this.attr=b;
 this.startPos=d
 }else{this.rows=this.rows.concat(a.slice(0,a.length));
-if(this.attr){this.attr=this.attr.concat(b.slice(0,b.length))
+if(this.attr&&b){this.attr=this.attr.concat(b.slice(0,b.length))
 }if(this.rows.length>this.maxBufferSize){var c=this.rows.length;
 this.rows=this.rows.slice(this.rows.length-this.maxBufferSize,this.rows.length);
 if(this.attr){this.attr=this.attr.slice(this.attr.length-this.maxBufferSize,this.attr.length)
 }if(this.rows.length>this.maxBufferSize){var c=this.rows.length;
 this.rows=this.rows.slice(this.rows.length-this.maxBufferSize,this.rows.length);
 if(this.attr){this.attr=this.attr.slice(this.attr.length-this.maxBufferSize,this.attr.length)