Loading rico1 and rico3 files
authorMatt Brown <dowdybrown@yahoo.com>
Wed, 31 Mar 2010 02:59:32 +0000 (02:59 +0000)
committerMatt Brown <dowdybrown@yahoo.com>
Wed, 31 Mar 2010 02:59:32 +0000 (02:59 +0000)
git-svn-id: svn://svn.code.sf.net/p/openrico/code/trunk/rico3@67 53df2df2-7ab5-4331-af62-ea79255fa4e2

329 files changed:
LICENSE [new file with mode: 0644]
asp_logo.jpg [new file with mode: 0644]
documentation.jpg [new file with mode: 0644]
documentation/GridStyles.html [new file with mode: 0644]
documentation/GridStyles_ja.html [new file with mode: 0644]
documentation/InstallNotes.html [new file with mode: 0644]
documentation/InstallNotes_ja.html [new file with mode: 0644]
documentation/LiveGrid.html [new file with mode: 0644]
documentation/LiveGridAjax.html [new file with mode: 0644]
documentation/LiveGridAjax_ja.html [new file with mode: 0644]
documentation/LiveGridForms.html [new file with mode: 0644]
documentation/LiveGridForms_ja.html [new file with mode: 0644]
documentation/LiveGrid_ja.html [new file with mode: 0644]
documentation/SimpleGrid.html [new file with mode: 0644]
documentation/SimpleGrid_ja.html [new file with mode: 0644]
documentation/browsers.html [new file with mode: 0644]
documentation/browsers_ja.html [new file with mode: 0644]
documentation/grids.html [new file with mode: 0644]
documentation/grids_ja.html [new file with mode: 0644]
documentation/images/asp-php-structure1.jpg [new file with mode: 0644]
documentation/images/asp-php-structure2.jpg [new file with mode: 0644]
documentation/images/checkmark.gif [new file with mode: 0644]
documentation/images/chinese.jpg [new file with mode: 0644]
documentation/images/japanese.gif [new file with mode: 0644]
documentation/images/ricologo.gif [new file with mode: 0644]
documentation/index.html [new file with mode: 0644]
documentation/menu.html [new file with mode: 0644]
documentation/ricoDocs.css [new file with mode: 0644]
documentation/ricologo.gif [new file with mode: 0644]
documentation/translations.html [new file with mode: 0644]
documentation/translations_ja.html [new file with mode: 0644]
documentation/welcome.html [new file with mode: 0644]
documentation/welcome_ja.html [new file with mode: 0644]
documentation/welcome_zh.html [new file with mode: 0644]
dotnet_logo.gif [new file with mode: 0644]
examples/ChangesSinceRico2.txt [new file with mode: 0644]
examples/asp/CustTree.asp [new file with mode: 0644]
examples/asp/LoadRicoClient.asp [new file with mode: 0644]
examples/asp/RicoDbViewer.asp [new file with mode: 0644]
examples/asp/RicoDbViewerDetail.asp [new file with mode: 0644]
examples/asp/ShipperEdit.asp [new file with mode: 0644]
examples/asp/dbConnect.asp [new file with mode: 0644]
examples/asp/ex1.asp [new file with mode: 0644]
examples/asp/ex2editfilter.asp [new file with mode: 0644]
examples/asp/ex2editfilterKW.asp [new file with mode: 0644]
examples/asp/ex2json.asp [new file with mode: 0644]
examples/asp/ex2nosession.asp [new file with mode: 0644]
examples/asp/ex2xml.asp [new file with mode: 0644]
examples/asp/index.html [new file with mode: 0644]
examples/asp/menu.html [new file with mode: 0644]
examples/asp/ricoQuery.asp [new file with mode: 0644]
examples/asp/simplegrid.asp [new file with mode: 0644]
examples/asp/tree1.asp [new file with mode: 0644]
examples/asp/widgets.asp [new file with mode: 0644]
examples/browserdetect.html [new file with mode: 0644]
examples/data/ORA-EXPDAT.DMP [new file with mode: 0644]
examples/data/Readme.txt [new file with mode: 0644]
examples/data/mysql-northwind-dblquote.sql [new file with mode: 0644]
examples/data/mysql-northwind.sql [new file with mode: 0644]
examples/data/northwind.mdb [new file with mode: 0644]
examples/demo.css [new file with mode: 0644]
examples/dotnet/CustTree.aspx [new file with mode: 0644]
examples/dotnet/LoadRicoClient.ascx [new file with mode: 0644]
examples/dotnet/RicoDbViewer.aspx [new file with mode: 0644]
examples/dotnet/RicoDbViewerDetail.aspx [new file with mode: 0644]
examples/dotnet/ShipperEdit.aspx [new file with mode: 0644]
examples/dotnet/dbConnect.ascx [new file with mode: 0644]
examples/dotnet/employees.aspx [new file with mode: 0644]
examples/dotnet/ex1.aspx [new file with mode: 0644]
examples/dotnet/ex2editfilter.aspx [new file with mode: 0644]
examples/dotnet/ex2json.aspx [new file with mode: 0644]
examples/dotnet/ex2nosession.aspx [new file with mode: 0644]
examples/dotnet/ex2xml.aspx [new file with mode: 0644]
examples/dotnet/flickrPhotos.ascx [new file with mode: 0644]
examples/dotnet/flickrPhotos.aspx [new file with mode: 0644]
examples/dotnet/index.html [new file with mode: 0644]
examples/dotnet/menu.html [new file with mode: 0644]
examples/dotnet/photos.aspx [new file with mode: 0644]
examples/dotnet/ricoQuery.aspx [new file with mode: 0644]
examples/dotnet/simplegrid.aspx [new file with mode: 0644]
examples/dotnet/tree1.aspx [new file with mode: 0644]
examples/dotnet/widgets.aspx [new file with mode: 0644]
examples/html/LoadRicoClient.js [new file with mode: 0644]
examples/html/accordion-grid.html [new file with mode: 0644]
examples/html/accordion0.html [new file with mode: 0644]
examples/html/accordion3.html [new file with mode: 0644]
examples/html/accordion4.html [new file with mode: 0644]
examples/html/animate-rico.html [new file with mode: 0644]
examples/html/animation-effects.html [new file with mode: 0644]
examples/html/classTest.html [new file with mode: 0644]
examples/html/controls.html [new file with mode: 0644]
examples/html/corners.html [new file with mode: 0644]
examples/html/corners2.html [new file with mode: 0644]
examples/html/cssSelect.html [new file with mode: 0644]
examples/html/down_arrow.png [new file with mode: 0644]
examples/html/drag-and-drop-dyn.html [new file with mode: 0644]
examples/html/drag-and-drop-grid.html [new file with mode: 0644]
examples/html/drag-and-drop-log.html [new file with mode: 0644]
examples/html/drag-and-drop-simple.html [new file with mode: 0644]
examples/html/drag-and-drop-zones.html [new file with mode: 0644]
examples/html/events.html [new file with mode: 0644]
examples/html/gradient.jpg [new file with mode: 0644]
examples/html/gridFromJSarray.html [new file with mode: 0644]
examples/html/gridFromTable.html [new file with mode: 0644]
examples/html/gridFromTableResize.html [new file with mode: 0644]
examples/html/gridJSbuffer.html [new file with mode: 0644]
examples/html/gridJSbuffer2.html [new file with mode: 0644]
examples/html/index.html [new file with mode: 0644]
examples/html/menu.html [new file with mode: 0644]
examples/html/panel1.html [new file with mode: 0644]
examples/html/panel2.html [new file with mode: 0644]
examples/html/popups.html [new file with mode: 0644]
examples/html/pull-down.html [new file with mode: 0644]
examples/html/shadow.html [new file with mode: 0644]
examples/images/themeroller/theme_30_black_matte.png [new file with mode: 0644]
examples/images/themeroller/theme_30_black_tie.png [new file with mode: 0644]
examples/images/themeroller/theme_30_blitzer.png [new file with mode: 0644]
examples/images/themeroller/theme_30_cupertino.png [new file with mode: 0644]
examples/images/themeroller/theme_30_dark_hive.png [new file with mode: 0644]
examples/images/themeroller/theme_30_dot_luv.png [new file with mode: 0644]
examples/images/themeroller/theme_30_eggplant.png [new file with mode: 0644]
examples/images/themeroller/theme_30_excite_bike.png [new file with mode: 0644]
examples/images/themeroller/theme_30_flick.png [new file with mode: 0644]
examples/images/themeroller/theme_30_hot_sneaks.png [new file with mode: 0644]
examples/images/themeroller/theme_30_humanity.png [new file with mode: 0644]
examples/images/themeroller/theme_30_le_frog.png [new file with mode: 0644]
examples/images/themeroller/theme_30_mint_choco.png [new file with mode: 0644]
examples/images/themeroller/theme_30_overcast.png [new file with mode: 0644]
examples/images/themeroller/theme_30_pepper_grinder.png [new file with mode: 0644]
examples/images/themeroller/theme_30_smoothness.png [new file with mode: 0644]
examples/images/themeroller/theme_30_south_street.png [new file with mode: 0644]
examples/images/themeroller/theme_30_start_menu.png [new file with mode: 0644]
examples/images/themeroller/theme_30_sunny.png [new file with mode: 0644]
examples/images/themeroller/theme_30_swanky_purse.png [new file with mode: 0644]
examples/images/themeroller/theme_30_trontastic.png [new file with mode: 0644]
examples/images/themeroller/theme_30_ui_dark.png [new file with mode: 0644]
examples/images/themeroller/theme_30_ui_light.png [new file with mode: 0644]
examples/images/themeroller/theme_30_windoze.png [new file with mode: 0644]
examples/menu.css [new file with mode: 0644]
examples/menu.js [new file with mode: 0644]
examples/php/CustTree.php [new file with mode: 0644]
examples/php/LoadRicoClient.php [new file with mode: 0644]
examples/php/RicoDbViewer.php [new file with mode: 0644]
examples/php/RicoDbViewerDetail.php [new file with mode: 0644]
examples/php/ShipperEdit.php [new file with mode: 0644]
examples/php/dbConnect.php [new file with mode: 0644]
examples/php/ex1.php [new file with mode: 0644]
examples/php/ex2editfilter.php [new file with mode: 0644]
examples/php/ex2json.php [new file with mode: 0644]
examples/php/ex2nosession.php [new file with mode: 0644]
examples/php/ex2xml.php [new file with mode: 0644]
examples/php/flickrPhotos.php [new file with mode: 0644]
examples/php/index.html [new file with mode: 0644]
examples/php/menu.html [new file with mode: 0644]
examples/php/photos.php [new file with mode: 0644]
examples/php/ricoQuery.php [new file with mode: 0644]
examples/php/simplegrid.php [new file with mode: 0644]
examples/php/tree1.php [new file with mode: 0644]
examples/php/widgets.php [new file with mode: 0644]
examples/ricologo.gif [new file with mode: 0644]
examples/welcome.html [new file with mode: 0644]
html_blk.gif [new file with mode: 0644]
index.html [new file with mode: 0644]
php_logo.jpg [new file with mode: 0644]
plugins/asp/SimpleGrid.vbs [new file with mode: 0644]
plugins/asp/dbClass3.vbs [new file with mode: 0644]
plugins/asp/excel.asp [new file with mode: 0644]
plugins/asp/ricoLiveGridForms.vbs [new file with mode: 0644]
plugins/asp/ricoResponse.vbs [new file with mode: 0644]
plugins/dotnet/AltTable.ascx [new file with mode: 0644]
plugins/dotnet/AltTable.ascx.vb [new file with mode: 0644]
plugins/dotnet/GridColumn.ascx [new file with mode: 0644]
plugins/dotnet/GridColumn.ascx.vb [new file with mode: 0644]
plugins/dotnet/GridPanel.ascx [new file with mode: 0644]
plugins/dotnet/GridPanel.ascx.vb [new file with mode: 0644]
plugins/dotnet/LiveGrid.ascx [new file with mode: 0644]
plugins/dotnet/LiveGrid.ascx.vb [new file with mode: 0644]
plugins/dotnet/SimpleGrid.ascx [new file with mode: 0644]
plugins/dotnet/SimpleGrid.ascx.vb [new file with mode: 0644]
plugins/dotnet/ricoResponse.ascx [new file with mode: 0644]
plugins/dotnet/sqlCompatibilty.ascx [new file with mode: 0644]
plugins/dotnet/sqlCompatibilty.ascx.vb [new file with mode: 0644]
plugins/dotnet/sqlParse.ascx [new file with mode: 0644]
plugins/dotnet/sqlParse.ascx.vb [new file with mode: 0644]
plugins/php/SimpleGrid.php [new file with mode: 0644]
plugins/php/class.xml.parser.php [new file with mode: 0644]
plugins/php/dbClass3.php [new file with mode: 0644]
plugins/php/excel.php [new file with mode: 0644]
plugins/php/ricoLiveGridForms.php [new file with mode: 0644]
plugins/php/ricoResponse.php [new file with mode: 0644]
readme.txt [new file with mode: 0644]
ricoClient/css/coffee-with-milk.css [new file with mode: 0644]
ricoClient/css/grayedout.css [new file with mode: 0644]
ricoClient/css/greenHdg.css [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-bg_flat_0_aaaaaa_40x100.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-bg_flat_75_ffffff_40x100.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-bg_glass_55_fbf9ee_1x400.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-bg_glass_65_ffffff_1x400.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-bg_glass_75_dadada_1x400.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-bg_glass_75_e6e6e6_1x400.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-bg_glass_95_fef1ec_1x400.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-bg_highlight-soft_75_cccccc_1x100.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-icons_222222_256x240.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-icons_2e83ff_256x240.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-icons_454545_256x240.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-icons_888888_256x240.png [new file with mode: 0644]
ricoClient/css/jquery-base/images/ui-icons_cd0a0a_256x240.png [new file with mode: 0644]
ricoClient/css/jquery-base/ui.accordion.css [new file with mode: 0644]
ricoClient/css/jquery-base/ui.base.css [new file with mode: 0644]
ricoClient/css/jquery-base/ui.core.css [new file with mode: 0644]
ricoClient/css/jquery-base/ui.datepicker.css [new file with mode: 0644]
ricoClient/css/jquery-base/ui.dialog.css [new file with mode: 0644]
ricoClient/css/jquery-base/ui.tabs.css [new file with mode: 0644]
ricoClient/css/rico.css [new file with mode: 0644]
ricoClient/css/seaglass.css [new file with mode: 0644]
ricoClient/css/striping/black-tie.css [new file with mode: 0644]
ricoClient/css/striping/blitzer.css [new file with mode: 0644]
ricoClient/css/striping/coffee-with-milk.css [new file with mode: 0644]
ricoClient/css/striping/cupertino.css [new file with mode: 0644]
ricoClient/css/striping/dark-hive.css [new file with mode: 0644]
ricoClient/css/striping/dot-luv.css [new file with mode: 0644]
ricoClient/css/striping/eggplant.css [new file with mode: 0644]
ricoClient/css/striping/excite-bike.css [new file with mode: 0644]
ricoClient/css/striping/flick.css [new file with mode: 0644]
ricoClient/css/striping/grayedout.css [new file with mode: 0644]
ricoClient/css/striping/greenHdg.css [new file with mode: 0644]
ricoClient/css/striping/hot-sneaks.css [new file with mode: 0644]
ricoClient/css/striping/humanity.css [new file with mode: 0644]
ricoClient/css/striping/le-frog.css [new file with mode: 0644]
ricoClient/css/striping/mint-choc.css [new file with mode: 0644]
ricoClient/css/striping/overcast.css [new file with mode: 0644]
ricoClient/css/striping/pepper-grinder.css [new file with mode: 0644]
ricoClient/css/striping/redmond.css [new file with mode: 0644]
ricoClient/css/striping/seaglass.css [new file with mode: 0644]
ricoClient/css/striping/smoothness.css [new file with mode: 0644]
ricoClient/css/striping/south-street.css [new file with mode: 0644]
ricoClient/css/striping/start.css [new file with mode: 0644]
ricoClient/css/striping/sunny.css [new file with mode: 0644]
ricoClient/css/striping/ui-darkness.css [new file with mode: 0644]
ricoClient/css/striping/ui-lightness.css [new file with mode: 0644]
ricoClient/css/striping/vader.css [new file with mode: 0644]
ricoClient/css/striping/warmfall.css [new file with mode: 0644]
ricoClient/css/warmfall.css [new file with mode: 0644]
ricoClient/images/aline.gif [new file with mode: 0644]
ricoClient/images/calarrow.png [new file with mode: 0644]
ricoClient/images/calendaricon.gif [new file with mode: 0644]
ricoClient/images/checkmark.gif [new file with mode: 0644]
ricoClient/images/close_b.gif [new file with mode: 0644]
ricoClient/images/close_w.gif [new file with mode: 0644]
ricoClient/images/delete.gif [new file with mode: 0644]
ricoClient/images/delete_w.gif [new file with mode: 0644]
ricoClient/images/divider.gif [new file with mode: 0644]
ricoClient/images/doc.gif [new file with mode: 0644]
ricoClient/images/dotbutton.gif [new file with mode: 0644]
ricoClient/images/drop.gif [new file with mode: 0644]
ricoClient/images/filtercol.gif [new file with mode: 0644]
ricoClient/images/folderclosed.gif [new file with mode: 0644]
ricoClient/images/folderopen.gif [new file with mode: 0644]
ricoClient/images/grayedout.gif [new file with mode: 0644]
ricoClient/images/info_icon.gif [new file with mode: 0644]
ricoClient/images/left_b.gif [new file with mode: 0644]
ricoClient/images/left_w.gif [new file with mode: 0644]
ricoClient/images/link.gif [new file with mode: 0644]
ricoClient/images/m.gif [new file with mode: 0644]
ricoClient/images/node.gif [new file with mode: 0644]
ricoClient/images/nodeblank.gif [new file with mode: 0644]
ricoClient/images/nodelast.gif [new file with mode: 0644]
ricoClient/images/nodeline.gif [new file with mode: 0644]
ricoClient/images/nodem.gif [new file with mode: 0644]
ricoClient/images/nodemlast.gif [new file with mode: 0644]
ricoClient/images/nodep.gif [new file with mode: 0644]
ricoClient/images/nodeplast.gif [new file with mode: 0644]
ricoClient/images/p.gif [new file with mode: 0644]
ricoClient/images/removeFilter.gif [new file with mode: 0644]
ricoClient/images/resize.gif [new file with mode: 0644]
ricoClient/images/right_b.gif [new file with mode: 0644]
ricoClient/images/right_w.gif [new file with mode: 0644]
ricoClient/images/shadow_l.png [new file with mode: 0644]
ricoClient/images/shadow_ll.png [new file with mode: 0644]
ricoClient/images/shadow_lr.png [new file with mode: 0644]
ricoClient/images/shadow_r.png [new file with mode: 0644]
ricoClient/images/sort_asc.gif [new file with mode: 0644]
ricoClient/images/sort_desc.gif [new file with mode: 0644]
ricoClient/images/tableFilterCollapse.gif [new file with mode: 0644]
ricoClient/images/tableFilterExpand.gif [new file with mode: 0644]
ricoClient/js/baselibs/dojo.debug.js [new file with mode: 0644]
ricoClient/js/baselibs/dojo.js [new file with mode: 0644]
ricoClient/js/baselibs/ext-core.js [new file with mode: 0644]
ricoClient/js/baselibs/glow.core.debug.js [new file with mode: 0644]
ricoClient/js/baselibs/glow.core.js [new file with mode: 0644]
ricoClient/js/baselibs/jquery-1.3.js [new file with mode: 0644]
ricoClient/js/baselibs/jquery-1.4.js [new file with mode: 0644]
ricoClient/js/baselibs/jquery.js [new file with mode: 0644]
ricoClient/js/baselibs/mootools.js [new file with mode: 0644]
ricoClient/js/baselibs/prototype.js [new file with mode: 0644]
ricoClient/js/export-owc.html [new file with mode: 0644]
ricoClient/js/export-plain.html [new file with mode: 0644]
ricoClient/js/rico.js [new file with mode: 0644]
ricoClient/js/rico2Dojo.js [new file with mode: 0644]
ricoClient/js/rico2Ext.js [new file with mode: 0644]
ricoClient/js/rico2Glow.js [new file with mode: 0644]
ricoClient/js/rico2Moo.js [new file with mode: 0644]
ricoClient/js/rico2Proto.js [new file with mode: 0644]
ricoClient/js/rico2jQuery.js [new file with mode: 0644]
ricoClient/js/ricoCalendar.js [new file with mode: 0644]
ricoClient/js/ricoColorPicker.js [new file with mode: 0644]
ricoClient/js/ricoDragDrop.js [new file with mode: 0644]
ricoClient/js/ricoGridCommon.js [new file with mode: 0644]
ricoClient/js/ricoLiveGrid.js [new file with mode: 0644]
ricoClient/js/ricoLiveGridAjax.js [new file with mode: 0644]
ricoClient/js/ricoLiveGridControls.js [new file with mode: 0644]
ricoClient/js/ricoLiveGridForms.js [new file with mode: 0644]
ricoClient/js/ricoLiveGridMenu.js [new file with mode: 0644]
ricoClient/js/ricoSearch.js [new file with mode: 0644]
ricoClient/js/ricoSimpleGrid.js [new file with mode: 0644]
ricoClient/js/ricoThemeroller.js [new file with mode: 0644]
ricoClient/js/ricoTree.js [new file with mode: 0644]
ricoClient/js/ricoUI.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_de.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_en.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_es.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_fr.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_it.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_ja.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_ko.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_pt.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_ru.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_uk.js [new file with mode: 0644]
ricoClient/js/translations/ricoLocale_zh.js [new file with mode: 0644]

diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/asp_logo.jpg b/asp_logo.jpg
new file mode 100644 (file)
index 0000000..f472359
Binary files /dev/null and b/asp_logo.jpg differ
diff --git a/documentation.jpg b/documentation.jpg
new file mode 100644 (file)
index 0000000..9cc54df
Binary files /dev/null and b/documentation.jpg differ
diff --git a/documentation/GridStyles.html b/documentation/GridStyles.html
new file mode 100644 (file)
index 0000000..1afb233
--- /dev/null
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<title>Rico Grid Styles</title>\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>\r
+\r
+<body>\r
+<h1>Grid Styles</h1>\r
+\r
+<p><a href='GridStyles_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>\r
+<a href='GridStyles_ja.html'>View this page in Japanese</a></p>\r
+\r
+<p>It is very easy to customize the style of Rico LiveGrids and SimpleGrids.\r
+In fact, LiveGrids and SimpleGrids share many of the same class names\r
+and DOM structures, so styles that apply to one can be applied to the other.\r
+\r
+<h2>Pre-configured Styles</h2>\r
+\r
+<p>Rico comes with a variety of stylesheets for LiveGrid.\r
+You can see how each of them looks by selecting the\r
+first LiveGrid example in the PHP, ASP, .net, or Perl section.\r
+At the top of the example page, try each of the "style" selections\r
+to find one you like. The actual stylesheets are located\r
+in the src/css directory.\r
+\r
+<p>Here are screen shots of each style, taken with "highlight" set to "Cursor Row".\r
+\r
+<p><strong>greenHdg.css</strong>\r
+<br><img src='images/gridsamples/greenHdg.png'>\r
+\r
+<p><strong>tanChisel.css</strong>\r
+<br><img src='images/gridsamples/tanChisel.png'>\r
+\r
+<p><strong>grayedout.css</strong>\r
+<br><img src='images/gridsamples/grayedout.png'>\r
+\r
+<p><strong>coffee-with-milk.css</strong>\r
+<br><img src='images/gridsamples/coffee-with-milk.png'>\r
+\r
+<p><strong>warmfall.css</strong>\r
+<br><img src='images/gridsamples/warmfall.png'>\r
+\r
+<p><strong>iegradient.css</strong> <em>(only works in Internet Explorer)</em>\r
+<br><img src='images/gridsamples/iegradient.png'>\r
+\r
+<p>Several of these styles are adapted from the\r
+<a href="http://icant.co.uk/csstablegallery/index.php">CSS Table Gallery</a>.\r
+The gallery can serve as an inspiration for styling LiveGrids, however,\r
+the CSS used in the gallery examples cannot be applied directly to a LiveGrid.\r
+\r
+<h2>Customizing a Style</h2>\r
+\r
+<p>Even with the variety of pre-configured styles available,\r
+inevitably some style declarations will need to be overridden\r
+to display your data the way you want it. What follows are some\r
+common situations that require a style to be overridden and \r
+the suggested CSS styling to solve the issue.\r
+\r
+<h3>Row height of column headings</h3>\r
+\r
+<p>When column headings get too long, you typically want to allow\r
+the words to wrap and to display the heading as 2 or 3 lines of text.\r
+\r
+<p>Shows headings with 2 lines of text:\r
+<pre>\r
+.ricoLG_top div.ricoLG_cell {\r
+  height:2.5em;\r
+}\r
+</pre>\r
+\r
+<p>Shows headings with 3 lines of text:\r
+<pre>\r
+.ricoLG_top div.ricoLG_cell {\r
+  height:3.5em;\r
+}\r
+</pre>\r
+\r
+<h3>Row height in grid body</h3>\r
+\r
+<p>Similarly you might need each row in the grid body\r
+to be taller in order to display long content.\r
+\r
+<p>Show body rows with 2 lines of text:\r
+<pre>\r
+.ricoLG_bottom div.ricoLG_cell {\r
+  height:2.5em;\r
+}\r
+</pre>\r
+\r
+<h3>Word Wrap</h3>\r
+\r
+<p>By default, word-wrapping is enabled in each grid cell.\r
+But sometimes it makes sense to turn word wrapping off.\r
+\r
+<p>Turn word-wrap off in headings and body:\r
+<pre>\r
+div.ricoLG_cell {\r
+  white-space:nowrap;\r
+}\r
+</pre>\r
+\r
+<p>Turn word-wrap off in body only:\r
+<pre>\r
+.ricoLG_bottom div.ricoLG_cell {\r
+  white-space:nowrap;\r
+}\r
+</pre>\r
+\r
+<h3>Referencing an entire grid</h3>\r
+\r
+<p>Sometimes you want to apply a style to an entire grid.\r
+Each grid is enclosed in a &lt;div&gt; with a class of\r
+"ricoLG_outerDiv" and an id equal to the id you passed\r
+to the LiveGrid constructor appended with "_outerDiv"\r
+(i.e. the id of the grid in the first example is "ex1_outerDiv").\r
+Thus, you can use ".ricoLG_outerDiv" as a selector when applying\r
+a style to all grids on a page, or "#ex1_outerDiv" when applying\r
+a style to only the ex1 grid.\r
+\r
+<p>Set the grid's background color:\r
+<pre>\r
+div.ricoLG_outerDiv {\r
+  background-color:aqua;\r
+}\r
+</pre>\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/GridStyles_ja.html b/documentation/GridStyles_ja.html
new file mode 100644 (file)
index 0000000..432f1f9
--- /dev/null
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>Rico Grid Styles</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>グリッドスタイル</h1>
+
+<p>Rico LiveGrid と SimpleGrid のスタイルをカスタマイズすることは、非常に簡単です。
+実際に、LiveGrid と SimpleGrid は同じクラス名と DOM 構造の多くを共有するので、
+一方にあてはまるスタイルは他方に適用されることが出来ます。
+
+<h2>あらかじめ構成されたスタイル</h2>
+
+<p>Rico には、LiveGrid のためのいろいろなスタイルシートが付属します。
+PHP、ASP、.net または Perl のセクションの、最初の LiveGrid の実例を選択する事によって、
+それらがどのように見えるのかを知る事が出来ます。
+実例のページのトップで、あなたの気に入るものを見つけるために、
+それぞれの "style" セレクションを試して下さい。
+実際のスタイルシートは src/css ディレクトリにあります。
+
+<p>ここに、"Cursor Row" が設定される "highlight" を持つ、それぞれのスタイルのスクリーンショットがあります。
+
+<p><strong>greenHdg.css</strong>
+<br><img src='images/gridsamples/greenHdg.png'>
+
+<p><strong>tanChisel.css</strong>
+<br><img src='images/gridsamples/tanChisel.png'>
+
+<p><strong>grayedout.css</strong>
+<br><img src='images/gridsamples/grayedout.png'>
+
+<p><strong>coffee-with-milk.css</strong>
+<br><img src='images/gridsamples/coffee-with-milk.png'>
+
+<p><strong>warmfall.css</strong>
+<br><img src='images/gridsamples/warmfall.png'>
+
+<p><strong>iegradient.css</strong> <em>(Internet Explorer のみで動作します)</em>
+<br><img src='images/gridsamples/iegradient.png'>
+
+<p>これらのスタイルのいくつかは、<a href="http://icant.co.uk/csstablegallery/index.php">CSS Table Gallery</a> 
+から変更して作成されました。
+そのギャラリーは LiveGrid のスタイルのためのインスピレーションとして用いる事が出来ますが、
+ギャラリーの CSS は直接 LiveGrid に適用する事は出来ません。
+
+<h2>スタイルのカスタマイズ</h2>
+
+<p>利用出来るあらかじめ構成されたスタイルの種類でさえ、
+望む方法でデータを表示するためには、
+必然的にいくつかのスタイル宣言がオーバーライドされる必要があります。
+以下は、スタイルがオーバーライドされる事を必要とするいくつかの一般的な状況と、
+その問題を解決するために提案される CSS スタイルです。
+
+<h3>列見出しの行の高さ</h3>
+
+<p>列見出しが長すぎる時、
+一般的に 2 または 3 行のテキストとして語句を送る事を認めたいです。
+
+<p>2 行のテキストによる見出しの表示。
+<pre>
+.ricoLG_top div.ricoLG_cell {
+  height:2.5em;
+}
+</pre>
+
+<p>3 行のテキストによる見出しの表示。
+<pre>
+.ricoLG_top div.ricoLG_cell {
+  height:3.5em;
+}
+</pre>
+
+<h3>グリッドボディの行の高さ</h3>
+
+<p>同様に、長い内容を表示するために、グリッドボディのそれぞれの行を、
+より高くする必要があるかも知れません。
+
+<p>2 行のテキストによるボディ行の表示。
+<pre>
+.ricoLG_bottom div.ricoLG_cell {
+  height:2.5em;
+}
+</pre>
+
+<h3>ワードラップ</h3>
+
+<p>デフォルトで、ワードラップはそれぞれのグリッドセルで利用可能にされます。
+しかし、時にはワードラップをオフにする事は意味をなします。
+
+<p>見出しとボディでワードラップをオフにする。
+<pre>
+div.ricoLG_cell {
+  white-space:nowrap;
+}
+</pre>
+
+<p>ボディのみでワードラップをオフにする。
+<pre>
+.ricoLG_bottom div.ricoLG_cell {
+  white-space:nowrap;
+}
+</pre>
+
+<h3>グリッド全体への参照</h3>
+
+<p>時々、あなたはスタイルをグリッド全体に適用したいかもしれません。
+それぞれのグリッドは "ricoLG_outerDiv" クラスと共に &lt;div&gt; で囲まれ、
+id は "_outerDiv" を追加された LiveGrid コンストラクタに渡した id と等しい id です。
+(すなわち、最初の実例のグリッド id は "ex1_outerDiv" です)。
+このように、ページ上ですべてのグリッドにスタイルを適用する時はセレクタとして ".ricoLG_outerDiv" を、
+ex1 グリッドにのみスタイルを適用する時は "#ex1_outerDiv" 利用する事が出来ます。
+
+<p>グリッドの背景色を設定する。
+<pre>
+div.ricoLG_outerDiv {
+  background-color:aqua;
+}
+</pre>
+
+</body>
+</html>
diff --git a/documentation/InstallNotes.html b/documentation/InstallNotes.html
new file mode 100644 (file)
index 0000000..f7475ea
--- /dev/null
@@ -0,0 +1,195 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Installing the Rico Examples</title>\r
+\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+<style type="text/css">\r
+tbody td {\r
+  font-size: 8pt;\r
+  vertical-align: top;\r
+}\r
+p.comment {\r
+  color: #888;\r
+}
+</style>\r
+</head>\r
+\r
+<body>\r
+<h1>Installing the Rico Examples</h1>\r
+\r
+<p><a href='InstallNotes_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>\r
+<a href='InstallNotes_ja.html'>View this page in Japanese</a></p>\r
+\r
+<p>Simply unzipping the Rico distribution file and copying the resulting\r
+directory structure into your web service's path should be sufficient to get\r
+most, if not all, of the examples running. If you have installed it into a\r
+directory called "rico" under the web service root, then you should be able\r
+to point your browser to the following address to access the examples:\r
+<blockquote><p>http://myserver.mydomain.com/rico/examples/</blockquote>\r
+<p>Or if you installed it on your personal computer, then access it as:\r
+<blockquote><p>http://localhost/rico/examples/</blockquote>\r
+\r
+<h2>File Locations</h2>\r
+\r
+<p>The Rico distribution is divided into 4 subdirectories:\r
+<ul>\r
+<li><strong>ricoClient</strong> - contains all client-side Rico files, including javascript, css, and image files.\r
+<li><strong>plugins</strong> - contains code that runs on the server to support LiveGrids and SimpleGrids.\r
+Plug-ins are currently provided for ASP, PHP, and .net. A Perl plug-in with limited functionality\r
+is also included.\r
+<li><strong>examples</strong> - contains sample code for ASP, PHP, .net, Perl, and HTML.\r
+The examples/data directory contains sample databases for the examples pertaining to LiveGrid.\r
+Databases are provided for MS Access, Oracle, and MySQL. Instructions for installing the data\r
+onto SQL Server are also included.\r
+<li><strong>documentation</strong> - documentation for using the Rico framework.\r
+</ul>\r
+</p>\r
+\r
+<h2>IIS Configuration</h2>\r
+\r
+<p>Rico can be served from any web server. This section describes some configuration issues specific to IIS on Windows.\r
+\r
+<p>On a server running IIS6 or higher, you will need to change the security settings for ASP\r
+in order to run the ASP examples. In particular, you will need to enable ASP files\r
+to reference include files in the parent directory. To do this, follow these steps:\r
+<ol>\r
+<li>Open ISS Manager\r
+<li>Right click on "Default Web Site" and select "Properties" from the context menu\r
+<li>Click on the "Home Directory" tab\r
+<li>Click the "Configuration" button\r
+<li>Click the "Options" tab of the new window\r
+<li>Check the box labelled "Enable parent paths"\r
+</ol>\r
+\r
+<p>In order for the sample scripts to read the Northwind Access database on a computer running IIS7 (e.g. Vista PCs), \r
+you will need to disable the loadUserProfile setting using this command:\r
+<pre>\r
+%windir%\system32\inetsrv\appcmd set config -section:applicationPools /[name='DefaultAppPool'].processModel.loadUserProfile:false\r
+</pre>\r
+The technique is described in \r
+<a href="http://blogs.iis.net/bills/archive/2006/10/18/loadUserProfile-and-IIS7-_2D00_-understanding-temporary-directory-failures.aspx">\r
+this article</a>. If you prefer not to change the loadUserProfile setting, the alternative is to load \r
+the Northwind database into SQL Server or MySQL and change connection settings in the relevant applib file as described below.\r
+\r
+<h2>LiveGrid Examples</h2>\r
+\r
+<p>Many of the LiveGrid examples fetch data from the Northwind sample database.\r
+In order to get these examples to work you will need to do 2 things:\r
+<ol>\r
+<li>Create the Northwind database\r
+<li>Modify the database connection settings which reside in the applib.* file\r
+</ol>\r
+\r
+<h2>Creating the Northwind database</h2>\r
+\r
+<p>The examples/data directory contains several different formats of the database needed \r
+to run most of the Rico LiveGrid ASP, .net, and PHP examples.\r
+\r
+<p>Data is provided in these formats:\r
+\r
+<ol>\r
+<li>northwind.mdb - this is the standard Northwind database provided by Microsoft, \r
+with the exception that the [Order Details] table has been renamed to Order_Details.\r
+If you will be accessing the ASP or .net examples, then no database configuration is\r
+necessary -- those examples will directly access this database using the Microsoft Jet driver.\r
+\r
+<li>mysql-northwind.sql - a backup file for MySQL (created using MySQL version 4.1)\r
+\r
+<li>mysql-northwind-dblquote.sql - same as above, except all instances of \' \r
+have been changed to '' (recommended for MySQL version 5 or above)\r
+\r
+<li>ORA-EXPDAT.DMP - an Oracle export file for the Northwind schema -- generated using the "exp" utility in \r
+<a href='http://www.oracle.com/technology/products/database/xe/index.html'>Oracle XE</a>. \r
+The password for this schema is "password".\r
+</ol>\r
+\r
+<p>A version for MS SQL Server 2000 &amp; 2005 is available as a free download from <a href='http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&amp;displaylang=en'>msdn.microsoft.com</a>. \r
+After downloading it, you should follow <a href='http://msdn2.microsoft.com/en-us/library/ms227484.aspx'>Microsoft's intructions to install it</a>.\r
+Finally, you will need to either rename the [Order Details] table  to Order_Details, \r
+or create a view named Order_Details using the following SQL statement:\r
+<pre>\r
+\r
+create view Order_Details as select * from [Order Details]\r
+\r
+</pre>\r
+\r
+\r
+<h2>Database connection settings</h2>\r
+\r
+<p>Specific instructions depend upon your environment:\r
+<table border='1' cellspacing='0' cellpadding='3'>\r
+<thead><tr>\r
+<th>Database</th>\r
+<th>PHP</th>\r
+<th>ASP</th>\r
+<th>.net</th>\r
+<th>Perl</th>\r
+</tr></thead>\r
+<tbody>\r
+<tr><td>Connection settings located in:</td>\r
+<td>examples/php/applib.php</td>\r
+<td>examples/asp/applib.asp</td>\r
+<td>examples/dotnet/applib.ascx</td>\r
+<td>examples/perl/ricoXMLquery.pl</td>\r
+\r
+<tr><th>MySQL</th>\r
+<td>return $GLOBALS['oDB']->MySqlLogon( "northwind", "userid", "password");</td>\r
+<td>oDB.Use_MySQL\r
+<p>oDB.SqlSvr="localhost"\r
+<p class='comment'>Set the user id, and password in the SqlLogon() statement.\r
+<p class='comment'>The Rico plug-in assumes that the MySQL 3.51 ODBC driver has been installed.\r
+If you are using a later ODBC driver, such as 5.1, then you will need to add this line:\r
+<p>oDB.OdbcDriver="{MySQL ODBC 5.1 Driver}"\r
+</td>\r
+<td>Public const dbDialect = "MySQL"\r
+<p class='comment'>Set the server name, user id, and password in OpenDB()\r
+<p class='comment'>The MySQL 3.51 ODBC driver must also be installed.\r
+</td>\r
+<td>$dbh = DBI->connect( "dbi:mysql:northwind", "userid", "password");</td>\r
+\r
+<tr><th>SQL Server</th>\r
+<td>\r
+$oDB->Dialect="TSQL";\r
+<p>return $GLOBALS['oDB']->MSSqlLogon( "ServerName\InstanceName", "Northwind", "userid", "password");\r
+<p class='comment'>Omit InstanceName when connecting to the default instance\r
+</td>\r
+<td>oDB.SqlSvr= "ServerName\InstanceName"\r
+<p class='comment'>Omit InstanceName when connecting to the default instance\r
+<p class='comment'>Set the user id, and password in the SqlLogon() statement.\r
+</td>\r
+<td>Public const dbDialect = "TSQL"\r
+<p class='comment'>Set the server name, user id, and password in OpenDB()</td>\r
+<td>&nbsp;</td>\r
+\r
+<tr><th>MS Access</th>\r
+<td>\r
+$oDB->Dialect="Access";\r
+<p>return $GLOBALS['oDB']->OdbcLogon( "northwindDSN", "Northwind", "Admin", "");</td>\r
+<td>oDB.Use_Access Server.Mappath( "../data/northwind.mdb")\r
+<p class='comment'>This is the default, so no changes should be required.</td>\r
+<td>Public const dbDialect = "Access"\r
+<p class='comment'>This is the default, so no changes should be required.</td>\r
+<td>&nbsp;</td>\r
+\r
+<tr><th>Oracle</th>\r
+<td>\r
+$oDB->Dialect="Oracle";\r
+<p>return $GLOBALS['oDB']->OracleLogon( "XE", "northwind", "password");</td>\r
+<td>oDB.Use_Oracle "XE"</td>\r
+<td>Public const dbDialect = "Oracle"\r
+<p class='comment'>Set the server name and password in OpenDB()\r
+<td>&nbsp;</td>\r
+\r
+<tr><th>DB2</th>\r
+<td><p class='comment'>not supported</td>\r
+<td>&nbsp;</td>\r
+<td>Public const dbDialect = "DB2"\r
+<p class='comment'>Set the server name, user id, and password in OpenDB()</td>\r
+<td>&nbsp;</td>\r
+</tbody>\r
+</table>\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/InstallNotes_ja.html b/documentation/InstallNotes_ja.html
new file mode 100644 (file)
index 0000000..f5deca1
--- /dev/null
@@ -0,0 +1,161 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<title>Installing the Rico Examples</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css" />
+<style type="text/css">
+tbody td {
+  font-size: 8pt;
+  vertical-align: top;
+}
+p.comment {
+  color: #888;
+}
+</style>
+</head>
+
+<body>
+<h1>Rico の実例のインストール</h1>
+
+<p>単にディストリビューションファイルを解凍し、
+その結果のディレクトリ構成をあなたのウェブサービスのパスへコピーすれば、
+すべてではありませんが実例を動作させる上でほとんど十分でしょう。
+あなたがウェブサービスのルートに "rico" と呼ばれているディレクトリをインストールしたならば、
+実例にアクセスするためにブラウザを以下のアドレスに向けることができるはずです。
+<blockquote>http://myserver.mydomain.com/rico/examples/</blockquote>
+<p>または、それをあなたのパソコン上にインストールしたならば、次のアドレスにアクセスして下さい。
+<blockquote>http://localhost/rico/examples/</blockquote>
+
+<p>IIS6 を実行しているサーバーでは、
+あなたは ASP の実例を走らせるためにセキュリティセッティングを変更する必要があります。
+特に、親ディレクトリでインクルードファイルを参照し、ASPファイルを利用可能にする必要があります。
+そうするために、以下のステップに従ってください。
+<ol>
+<li>ISS Manager を開いて下さい
+<li>"Default Web Site" で右クリックして、"Properties" をコンテキストメニューから選択して下さい。
+<li>"Home Directory" タブをクリックして下さい
+<li>"Configuration" ボタンをクリックしてください
+<li>新しいウィンドウの "Options" タブをクリックします。
+<li>"Enable parent paths" とラベルされたボックスをクリックして下さい
+</ol>
+
+<h2>LiveGrid の実例</h2>
+
+<p>LiveGrid の実例の多くが Northwind サンプルデータベースからのデータをフェッチします。
+これらの実例に動かすために、あなたは 2 つのことをする必要があります。
+<ol>
+<li>Northwindデータベースを作成してください
+<li>applib.* ファイルにあるデータベース接続設定を変更して下さい
+</ol>
+
+<h2>Northwindデータベースの作成</h2>
+
+<p>examples/data ディレクトリは、 Rico LiveGrid ASP、.net、および PHP の実例を実行するために必要な、
+いくつかの異なるフォーマットのデータベースを含みます。
+
+<p>データはこれらのフォーマットを提供します。
+
+<ol>
+<li>northwind.mdb - これはマイクロソフトによって提供された、標準の Northwind データベースで、
+例外として [Order Details] は Order_Details に改名されました。
+あなたが ASP または .net の実例にアクセスしているならば、データベース構成の変更は必要ではありません。
+ -- それらの実例は Microsoft Jet driver を利用して、このデータベースに直接アクセスするでしょう。
+
+<li>mysql-northwind.sql - MySQLのためのバックアップファイル( MySQL version 4.1 によって作られました)
+
+<li>mysql-northwind-dblquote.sql - すべての \' インスタンスが '' に替えられた事以外は
+上記と同じです(バージョン 5 以上の MySQL に推奨されます)
+
+<li>ORA-EXPDAT.DMP - Northwind スキーマのための Oracle エクスポートファイル
+ -- <a href='http://www.oracle.com/technology/products/database/xe/index.html'>Oracle XE</a> の "exp" ユーティリティによって生成されました。
+ このスキーマのパスワードは "password" です。
+
+</ol>
+
+<p>MS SQL Server 2000 と 2005 用のバージョンは <a href='http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en'>msdn.microsoft.com</a> から
+自由にダウンロード出来ます。
+ダウンロードしたら、<a href='http://msdn2.microsoft.com/en-us/library/ms227484.aspx'>それをインストールするためのマイクロソフトのインストラクション</a>に従うべきです。
+最後に、[Order Details] テーブルを Order_Details に改名するか、Order_Details と言う名前のビューを次の SQL 文を利用して生成するかのどちらかを行う必要があるでしょう。
+<pre>
+
+create view Order_Details as select * from [Order Details]
+
+</pre>
+
+<h2>データベース接続設定</h2>
+
+<p>特定の命令はあなたの環境に依存します。
+<table border='1' cellspacing='0' cellpadding='3'>
+<thead><tr>
+<th>Database</th>
+<th>PHP</th>
+<th>ASP</th>
+<th>.net</th>
+<th>Perl</th>
+</tr></thead>
+<tbody>
+<tr><td>接続の設定は次の場所です。</td>
+<td>examples/php/applib.php</td>
+<td>examples/asp/applib.asp</td>
+<td>examples/dotnet/applib.ascx</td>
+<td>examples/perl/ricoXMLquery.pl</td>
+
+<tr><th>MySQL</th>
+<td>return $GLOBALS['oDB']->MySqlLogon( "northwind", "userid", "password");</td>
+<td>
+<p>oDB.Use_MySQL
+<p>oDB.SqlSvr="localhost"
+<p class='comment'>SqlLogon() の記述の中に、ユーザIDとパスワードを設定して下さい。
+<p class='comment'>MySQL 3.51 ODBC ドライバもインストールされていなければなりません。
+</td>
+<td>Public const dbDialect = "MySQL"
+<p class='comment'>サーバ名、ユーザIDとパスワードを OpenDB() に設定して下さい。
+<p class='comment'>MySQL 3.51 ODBC ドライバもインストールされていなければなりません。
+</td>
+<td>$dbh = DBI->connect( "dbi:mysql:northwind", "userid", "password");</td>
+
+<tr><th>SQL Server</th>
+<td>
+$oDB->Dialect="TSQL";
+<p>return $GLOBALS['oDB']->MSSqlLogon( "ServerName\InstanceName", "Northwind", "userid", "password");
+<p class='comment'>デフォルトインスタンスに接続するとき、InstanceName を省略してください。
+</td>
+<td>oDB.SqlSvr= "ServerName\InstanceName"
+<p class='comment'>デフォルトインスタンスに接続するとき、InstanceName を省略してください。
+<p class='comment'>SqlLogon() の記述の中に、ユーザIDとパスワードを設定して下さい。
+</td>
+<td>Public const dbDialect = "TSQL"
+<p class='comment'>サーバ名、ユーザIDとパスワードを OpenDB() に設定して下さい。</td>
+<td></td>
+
+<tr><th>MS Access</th>
+<td>
+$oDB->Dialect="Access";
+<p>return $GLOBALS['oDB']->OdbcLogon( "northwindDSN", "Northwind", "Admin", "");</td>
+<td>oDB.Use_Access Server.Mappath( "../data/northwind.mdb")
+<p class='comment'>これはデフォルトですので、変更は必要ありません。</td>
+<td>Public const dbDialect = "Access"
+<p class='comment'>これはデフォルトですので、変更は必要ありません。</td>
+<td></td>
+
+<tr><th>Oracle</th>
+<td>
+$oDB->Dialect="Oracle";
+<p>return $GLOBALS['oDB']->OracleLogon( "XE", "northwind", "password");</td>
+<td>oDB.Use_Oracle "XE"</td>
+<td>Public const dbDialect = "Oracle"
+<p class='comment'>サーバ名とパスワードを OpenDB() に設定して下さい。
+<td></td>
+
+<tr><th>DB2</th>
+<td><p class='comment'>サポート外です。</td>
+<td></td>
+<td>Public const dbDialect = "DB2"
+<p class='comment'>サーバ名、ユーザIDとパスワードを OpenDB() に設定して下さい。</td>
+<td></td>
+</tbody>
+</table>
+
+</body>
+</html>
diff --git a/documentation/LiveGrid.html b/documentation/LiveGrid.html
new file mode 100644 (file)
index 0000000..b750abe
--- /dev/null
@@ -0,0 +1,1246 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Rico LiveGrid</title>\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>\r
+\r
+<body>\r
+<h1>Creating a Rico LiveGrid</h1>\r
+\r
+<p><a href='LiveGrid_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>\r
+<a href='LiveGrid_ja.html'>View this page in Japanese</a></p>\r
+\r
+<p>Rico LiveGrid displays data in a scrolling table, with the data buffered in a \r
+2-dimensional JavaScript array. As the user scrolls\r
+vertically through the grid, data is dynamically copied from the array onto the grid.\r
+The buffer can can be loaded from:\r
+<ol>\r
+<li><a href='#model1'>a javascript array</a>\r
+<li><a href='#model2'>an HTML table</a>\r
+<li><a href='#model3'>an XML file</a>\r
+<li><a href='#model4'>a SQL database query</a>\r
+<li><a href='#model5'>a custom javascript callback function</a>\r
+</ol>\r
+\r
+\r
+<h2><a name='model1'>Usage Model 1: Loading data from a javascript array</a></h2>\r
+\r
+<ul><li>Load the data to be displayed into a javascript array.\r
+<pre>\r
+  var myData = [\r
+    [1,'Cell 1:2','Cell 1:3','Cell 1:4','Cell 1:5'],\r
+    [2,'Cell 2:2','Cell 2:3','Cell 2:4','Cell 2:5'],\r
+    [3,'Cell 3:2','Cell 3:3','Cell 3:4','Cell 3:5'],\r
+    [4,'Cell 4:2','Cell 4:3','Cell 4:4','Cell 4:5']\r
+  ];\r
+</pre>\r
+\r
+<li>Load the Rico javascript and css files necessary to display the grid.\r
+<pre>\r
+Rico.loadModule('LiveGrid','LiveGridMenu','greenHdg.css');\r
+</pre>\r
+<dl>\r
+<dt>LiveGrid\r
+<dd>This loads the Rico javascript and css files necessary to display a LiveGrid \r
+with a static buffer (no AJAX).\r
+<dt>LiveGridMenu\r
+<dd>This loads the default grid menu. This menu provides access to all of the LiveGrid capabilities.\r
+It adjusts the selections presented to the user based on the column selected \r
+and the type of buffer used.\r
+You can also choose to use the grid with no menu at all, or to create your own menu\r
+customized to the needs of your application.\r
+<dt>greenHdg.css\r
+<dd>Rico comes with several sample grid styles: coffee-with-milk,\r
+grayedout, greenHdg, iegradient (Internet Explorer only), tanChisel, and warmfall. \r
+You may choose one of the included styles or create one of your own. \r
+</dl>\r
+\r
+<li>Load the array into a Rico Buffer object:\r
+<pre>\r
+  var buffer=new Rico.Buffer.Base();\r
+  buffer.loadRowsFromArray(myData);\r
+</pre>\r
+\r
+<li>Define the grid's options, including the grid headings:\r
+<pre>\r
+  var opts = {  \r
+    defaultWidth : 90,\r
+    visibleRows  : 'data',\r
+    frozenColumns: 1,\r
+    columnSpecs  : [{Hdg:'Column 1',type:'number', ClassName:'alignright'},\r
+                    {Hdg:'Column 2'},\r
+                    {Hdg:'Column 3'},\r
+                    {Hdg:'Column 4'},\r
+                    {Hdg:'Column 5'}]\r
+  };\r
+</pre>\r
+\r
+<li>Instantiate the LiveGrid, passing in the base id for the grid, \r
+the Rico.Buffer instance, and the grid options.\r
+<pre>\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, opts);\r
+</pre>\r
+\r
+<li>To enable the default pop-up menu for the grid, assign the grid's\r
+menu property to an instance of Rico.GridMenu.\r
+<pre>\r
+  ex1.menu=new Rico.GridMenu();\r
+</pre>\r
+\r
+<li>Rico.loadModule may finish <em>after</em> the window.onload event.\r
+So to ensure that the grid initialization runs after the Rico modules\r
+have loaded, you must pass the initialization function to the\r
+Rico.onLoad method. Putting all of the javascript together would look like this:\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('LiveGrid','LiveGridMenu','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var myData = [\r
+    [1,'Cell 1:2','Cell 1:3','Cell 1:4','Cell 1:5'],\r
+    [2,'Cell 2:2','Cell 2:3','Cell 2:4','Cell 2:5'],\r
+    [3,'Cell 3:2','Cell 3:3','Cell 3:4','Cell 3:5'],\r
+    [4,'Cell 4:2','Cell 4:3','Cell 4:4','Cell 4:5']\r
+  ];\r
+  var opts = {  \r
+    defaultWidth : 90,\r
+    visibleRows  : 'data',\r
+    frozenColumns: 1,\r
+    columnSpecs  : [{Hdg:'Column 1',type:'number', ClassName:'alignright'},\r
+                    {Hdg:'Column 2'},\r
+                    {Hdg:'Column 3'},\r
+                    {Hdg:'Column 4'},\r
+                    {Hdg:'Column 5'}]\r
+  };\r
+  var buffer=new Rico.Buffer.Base();\r
+  buffer.loadRowsFromArray(myData);\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, opts);\r
+  ex1.menu=new Rico.GridMenu();\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+\r
+<li>Finally, place a div element in your HTML markup at the position where the grid should go.\r
+Including the markup for the bookmark will cause the grid's scroll position to be displayed.\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="ex1_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+&lt;div id="ex1"&gt;&lt;/div&gt;\r
+</pre>\r
+\r
+\r
+\r
+</ul>\r
+\r
+\r
+<h2><a name='model2'>Usage Model 2: Loading data from an HTML table</a></h2>\r
+\r
+<ul><li>Define an HTML table with the headings in a <code>&lt;thead&gt;</code> section\r
+and the data in a <code>&lt;tbody&gt;</code> section.\r
+Including the markup for the bookmark will cause the grid's scroll position to be displayed.\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="data_grid_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+&lt;table id="data_grid"&gt;\r
+  &lt;thead&gt;\r
+\r
+  &lt;tr&gt;\r
+    &lt;th&gt;First column name&lt;/th&gt;\r
+    &lt;th&gt;Second column name&lt;/th&gt;\r
+    ...\r
+    &lt;th&gt;Last column name&lt;/th&gt;\r
+  &lt;/tr&gt;\r
+\r
+  &lt;/thead&gt;\r
+\r
+  &lt;tbody&gt;\r
+\r
+  &lt;tr&gt;\r
+    &lt;td&gt;Row 1, column 1 data&lt;/td&gt;\r
+    &lt;td&gt;Row 1, column 2 data&lt;/td&gt;\r
+    ...\r
+    &lt;td&gt;Row 1, last column data&lt;/td&gt;\r
+  &lt;/tr&gt;\r
+\r
+  &lt;tr&gt;\r
+    &lt;td&gt;Row 2, column 1 data&lt;/td&gt;\r
+    &lt;td&gt;Row 2, column 2 data&lt;/td&gt;\r
+    ...\r
+    &lt;td&gt;Row 2, last column data&lt;/td&gt;\r
+  &lt;/tr&gt;\r
+\r
+  ...\r
+\r
+  &lt;tr&gt;\r
+    &lt;td&gt;Row n, column 1 data&lt;/td&gt;\r
+    &lt;td&gt;Row n, column 2 data&lt;/td&gt;\r
+    ...\r
+    &lt;td&gt;Row n, last column data&lt;/td&gt;\r
+  &lt;/tr&gt;\r
+\r
+  &lt;/tbody&gt;\r
+&lt;/table&gt;\r
+</pre>\r
+\r
+<li>Load the Rico javascript and css files necessary to display the grid.\r
+<pre>\r
+Rico.loadModule('LiveGrid','LiveGridMenu','greenHdg.css');\r
+</pre>\r
+<dl>\r
+<dt>LiveGrid\r
+<dd>This loads the Rico javascript and css files necessary to display a LiveGrid \r
+with a static buffer (no AJAX).\r
+<dt>LiveGridMenu\r
+<dd>This loads the default grid menu. This menu provides access to all of the LiveGrid capabilities.\r
+It adjusts the selections presented to the user based on the column selected \r
+and the type of buffer used.\r
+You can also choose to use the grid with no menu at all, or to create your own menu\r
+customized to the needs of your application.\r
+<dt>greenHdg.css\r
+<dd>Rico comes with several sample grid styles: coffee-with-milk,\r
+grayedout, greenHdg, iegradient (Internet Explorer only), tanChisel, and warmfall. \r
+You may choose one of the included styles or create one of your own. \r
+</dl>\r
+\r
+<li>Load the table's data rows into a Rico Buffer object:\r
+<pre>\r
+var buffer = new Rico.Buffer.Base($('data_grid').tBodies[0]);\r
+</pre>\r
+\r
+<li>Finally, instantiate the LiveGrid, passing in the DOM id of the HTML table\r
+(this allows the LiveGrid to load the column headings from the table's thead section), \r
+the Rico.Buffer instance, and any options (in this case the first column gets\r
+a width of 50 pixels and the second column gets a width of 80 pixels).\r
+<pre>\r
+var grid_options = { columnSpecs: [ {width:50}, {width:80} ] };\r
+var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+</pre>\r
+\r
+<li>Rico.loadModule may finish <em>after</em> the window.onload event.\r
+So to ensure that the grid initialization runs after the Rico modules\r
+have loaded, you must pass the initialization function to the\r
+Rico.onLoad method. Putting all of the javascript together would look like this:\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('LiveGrid','LiveGridMenu','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var buffer = new Rico.Buffer.Base($('data_grid').tBodies[0]);\r
+  var grid_options = { columnSpecs: [width:50, width:80] };\r
+  var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+\r
+</ul>\r
+\r
+\r
+<h2><a name='model3'>Usage Model 3: Loading data from an XML file</a></h2>\r
+\r
+<ul><li>Define an HTML table, supplying the table header cells, but no table body cells.\r
+Including the markup for the bookmark will cause the grid's scroll position to be displayed.\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="data_grid_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+&lt;table id="data_grid"&gt;\r
+  &lt;tr&gt;\r
+\r
+    &lt;th&gt;First column name&lt;/th&gt;\r
+    &lt;th&gt;Second column name&lt;/th&gt;\r
+\r
+  &lt;/tr&gt;\r
+&lt;/table&gt;\r
+</pre>\r
+\r
+<li>Load the Rico javascript and css files necessary to display the grid.\r
+<pre>\r
+Rico.loadModule('LiveGridAjax','LiveGridMenu','greenHdg.css');\r
+</pre>\r
+<dl>\r
+<dt>LiveGridAjax\r
+<dd>This loads the Rico javascript and css files necessary to display a LiveGrid \r
+with an AJAX-enabled buffer.\r
+<dt>LiveGridMenu\r
+<dd>This loads the default grid menu. This menu provides access to all of the LiveGrid capabilities.\r
+It adjusts the selections presented to the user based on the column selected \r
+and the type of buffer used.\r
+You can also choose to use the grid with no menu at all, or to create your own menu\r
+customized to the needs of your application.\r
+<dt>greenHdg.css\r
+<dd>Rico comes with several sample grid styles: coffee-with-milk,\r
+grayedout, greenHdg, iegradient (Internet Explorer only), tanChisel, and warmfall. \r
+You may choose one of the included styles or create one of your own. \r
+</dl>\r
+\r
+<li>Create a Rico Buffer, which fetches data to populate the table.\r
+The AjaxXML buffer makes just one request for data to the supplied URL\r
+at grid startup.\r
+<pre>\r
+var buffer = new Rico.Buffer.AjaxXML('/controller/action?format=xml');\r
+</pre>\r
+\r
+The URL ("/controller/action?format=xml" in this example) must return data in the following format:\r
+<pre>\r
+&lt;ajax-response&gt;\r
+&lt;response type='object' id='data_grid_updater'&gt;\r
+&lt;rows update_ui='true' offset='0'&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 1, cell 1&lt;/td&gt;&lt;td&gt;Data for row 1, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 2, cell 1&lt;/td&gt;&lt;td&gt;Data for row 2, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;/rows&gt;\r
+&lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+\r
+<li>Finally, instantiate the LiveGrid, passing in the DOM id of the HTML table, \r
+the Rico.Buffer instance, and any options (columnSpecs is not required, \r
+but shown here as a placeholder for customization of the columns).\r
+<pre>\r
+var grid_options = { columnSpecs: [,] };\r
+var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+</pre>\r
+\r
+<li>Rico.loadModule may finish <em>after</em> the window.onload event.\r
+So to ensure that the grid initialization runs after the Rico modules\r
+have loaded, you must pass the initialization function to the\r
+Rico.onLoad method. Putting all of the javascript together would look like this:\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('LiveGridAjax','LiveGridMenu','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var buffer = new Rico.Buffer.AjaxXML('/controller/action?format=xml');\r
+  var grid_options = { columnSpecs: [,] };\r
+  var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+</ul>\r
+\r
+\r
+<h2><a name='model4'>Usage Model 4: Loading data from an SQL database query</a></h2>\r
+\r
+<p>The descriptions below apply directly to the ASP and PHP implementations of the Rico LiveGrid plug-ins.\r
+The concepts are the same in .net, but the implementation is quite different \r
+(examine ex2simple.aspx to see how this gets implemented in .net).\r
+\r
+<ul>\r
+<li>Define a session variable that contains the query to be run. The variable name must\r
+match the id of the table below. When requesting data, the grid will pass its id \r
+to ricoXMLquery, and ricoXMLquery will use it to get the query text from\r
+the session variable.\r
+<ul>\r
+<li>ASP:\r
+<pre>\r
+&lt;%\r
+session.contents("data_grid")="select ID,Name,City from customers"\r
+%&gt;\r
+</pre>\r
+\r
+<li>PHP:\r
+<pre>\r
+&lt;? \r
+$_SESSION['data_grid']="select ID,Name,City from customers";\r
+?&gt;\r
+</pre>\r
+\r
+<li>.net:\r
+<pre>\r
+Sub Page_Load(Sender As object, e As EventArgs)\r
+  data_grid.sqlQuery="select ID,Name,City from customers"\r
+  ' session variable is set by the control\r
+End Sub\r
+</pre>\r
+</ul>\r
+\r
+\r
+<li>Define an HTML table, supplying the table header cells, but no table body cells.\r
+Including the markup for the bookmark will cause the grid's scroll position to be displayed.\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="data_grid_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+&lt;table id="data_grid"&gt;\r
+  &lt;tr&gt;\r
+\r
+    &lt;th&gt;Customer #&lt;/th&gt;\r
+    &lt;th&gt;Customer Name&lt;/th&gt;\r
+    &lt;th&gt;City&lt;/th&gt;\r
+\r
+  &lt;/tr&gt;\r
+&lt;/table&gt;\r
+</pre>\r
+\r
+<li>Load the Rico javascript and css files necessary to display the grid.\r
+<pre>\r
+Rico.loadModule('LiveGridAjax','LiveGridMenu','greenHdg.css');\r
+</pre>\r
+<dl>\r
+<dt>LiveGridAjax\r
+<dd>This loads the Rico javascript and css files necessary to display a LiveGrid \r
+with an AJAX-enabled buffer.\r
+<dt>LiveGridMenu\r
+<dd>This loads the default grid menu. This menu provides access to all of the LiveGrid capabilities.\r
+It adjusts the selections presented to the user based on the column selected \r
+and the type of buffer used.\r
+You can also choose to use the grid with no menu at all, or to create your own menu\r
+customized to the needs of your application.\r
+<dt>greenHdg.css\r
+<dd>Rico comes with several sample grid styles: coffee-with-milk,\r
+grayedout, greenHdg, iegradient (Internet Explorer only), tanChisel, and warmfall. \r
+You may choose one of the included styles or create one of your own. \r
+</dl>\r
+\r
+<li>Create a Rico Buffer, which fetches data to populate the table.\r
+Unlike the AjaxXML buffer which fetches all grid data at once, the AjaxSQL\r
+buffer fetches data in chunks. This makes it possible for LiveGrid to\r
+efficiently display query results containing thousands, or even hundreds of thousands\r
+of rows.\r
+<pre>\r
+var buffer = new Rico.Buffer.AjaxSQL('ricoXMLquery.asp');\r
+</pre>\r
+\r
+The URL ("ricoXMLquery.asp" in this example) utilizes one of the included plug-ins to\r
+fetch data from the database and return it to the grid in this XML format:\r
+<pre>\r
+&lt;ajax-response&gt;\r
+&lt;response type='object' id='data_grid_updater'&gt;\r
+&lt;rows update_ui='true' offset='0'&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 1, cell 1&lt;/td&gt;&lt;td&gt;Data for row 1, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 2, cell 1&lt;/td&gt;&lt;td&gt;Data for row 2, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;/rows&gt;\r
+&lt;rowcount&gt;99&lt;/rowcount&gt;\r
+&lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+\r
+The &lt;rowcount&gt; tag is optional, but should be returned whenever the "get_total"\r
+querystring parameter is present in the request.\r
+\r
+<li>Finally, instantiate the LiveGrid, passing in the DOM id of the HTML table, \r
+the Rico.Buffer instance, and any options (columnSpecs is not required, \r
+but shown here as a placeholder for customization of the columns).\r
+<pre>\r
+var grid_options = { columnSpecs: [,,] };\r
+var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+</pre>\r
+\r
+<li>Rico.loadModule may finish <em>after</em> the window.onload event.\r
+So to ensure that the grid initialization runs after the Rico modules\r
+have loaded, you must pass the initialization function to the\r
+Rico.onLoad method. Putting all of the javascript together would look like this:\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('LiveGridAjax','LiveGridMenu','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var buffer = new Rico.Buffer.AjaxSQL('ricoXMLquery.asp');\r
+  var grid_options = { columnSpecs: [,,] };\r
+  var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+</ul>\r
+\r
+\r
+<h2><a name='model5'>Usage Model 5: Loading data using a custom callback function</a></h2>\r
+\r
+<p>This model works the same way as models 3 and 4 except that, rather than fetching\r
+data using an xmlHTTPrequest, the data is fetched using javascript callback functions.\r
+This allows you to do creative things in the callback function - like call Google Gears.\r
+Setting up the callback is very easy. Rather than passing a string containing the data provider's URL\r
+to the AjaxXML or AjaxSQL constructor, you just pass the callback function instead.\r
+\r
+<p>The code that follows is taken from \r
+<a href='client/gridJSbuffer.html'>examples/client/gridJSbuffer.html</a>, \r
+which uses the AjaxXML buffer. The "jsfetch" callback function\r
+returns a 2-dimensional array that is 100 rows long by 5 columns wide.\r
+Note that AjaxXML only loads its buffer once (at grid startup), so\r
+jsfetch will only be called once.\r
+The options hash is identical in structure to the options hash used\r
+by Prototype's <a href='http://prototypejs.org/api/ajax/options'>Ajax.Request</a> method.\r
+\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxXML(<strong>jsfetch</strong>);\r
+\r
+function <strong>jsfetch</strong>(options) {\r
+  Rico.writeDebugMsg("jsfetch");\r
+  var newRows=[], offset=options.parameters.offset;\r
+  for (var r=0; r<100; r++) {\r
+    var row=[];\r
+    row.push(offset.toString());\r
+    row.push(new Date().toString());\r
+    for (var c=2; c<5; c++) row.push('cell '+r+':'+c);\r
+    newRows.push(row);\r
+  }\r
+  options.onComplete(newRows);
+}\r
+</pre>\r
+\r
+<p>The code that follows is taken from \r
+<a href='client/gridJSbuffer2.html'>examples/client/gridJSbuffer2.html</a>, \r
+which uses the AjaxSQL buffer. The "jsfetch" callback function\r
+simulates a 2-dimensional array that is 500 rows long by 5 columns wide.\r
+However, only a section of that array is returned during any one callback --\r
+just the rows from <code>options.parameters.offset</code> to\r
+<code>options.parameters.offset + options.parameters.page_size</code>.\r
+\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxSQL(<strong>jsfetch</strong>);\r
+\r
+function <strong>jsfetch</strong>(options) {\r
+  var newRows=[], totrows=500;\r
+  var offset=options.parameters.offset;\r
+  var limit=Math.min(totrows-offset,options.parameters.page_size)\r
+  for (var r=0; r&lt;limit; r++) {\r
+    var row=[];\r
+    row.push(new Date().toString());\r
+    row.push(offset.toString());\r
+    for (var c=2; c&lt;5; c++) row.push('cell '+(r+offset)+':'+c);\r
+    newRows.push(row);\r
+  }\r
+  options.onComplete(newRows,false,totrows);
+}\r
+</pre>\r
+\r
+<p>options.onComplete takes the following parameters:\r
+<ul>\r
+<li>newRows - 2-dimensional array where each item is a string\r
+<li>newAttr - 2-dimensional array where each item is an object containing acceptAttr values for the cell,\r
+or false if acceptAttr is not being used\r
+<li>totalRows - an integer representing the total number of rows in the dataset\r
+<li>errMsg - if an error occurs, this is the message text to be displayed to the user\r
+</ul>\r
+\r
+\r
+<h2><a name='debug'></a>Debugging</h2>\r
+<p>Rico 2.0 includes the ability to route time-stamped debug messages to a message log.\r
+The log may be an html textarea or the browser's javascript console.\r
+<ul>\r
+<li>If a textarea exists with the id of the LiveGrid table plus '_debugmsgs', i.e.\r
+<pre style='margin:3px;'>&lt;textarea cols="100" rows="5" id="data_grid_debugmsgs" /&gt;</pre>\r
+then this textarea will be used for the message log.\r
+<li>Alternatively, the textarea may be designated by a call to Rico.setDebugArea()\r
+\r
+<pre>\r
+&lt;textarea id='debug' rows='5' cols='80'&gt;&lt;/textarea&gt;\r
+&lt;script type='text/javascript'&gt;\r
+Rico.setDebugArea('debug');\r
+&lt;/script&gt;\r
+</pre>\r
+\r
+<li>If no textarea is designated, Rico will attempt to use the browser's\r
+built-in javascript console. The following consoles are known to work:\r
+  <ul>\r
+  <li>The console in Firefox's <a href='http://www.getfirebug.com/'>Firebug</a> add-on\r
+  <li>The Opera javascript console\r
+  <li>The Safari javascript console\r
+  <li>The console in <a href='http://blogs.msdn.com/ie/archive/2008/09/03/developer-tools-in-internet-explorer-8-beta-2.aspx'>IE8's Developer Toolbar</a> (under the Script tab)\r
+  </ul>\r
+</ul>\r
+\r
+<p>LiveGrid is programmed to send a number of messages to the message log that may prove helpful in debugging.\r
+You can also send your own messages by using Rico.writeDebugMsg(). For example:\r
+<pre>\r
+Rico.writeDebugMsg('My debug message');\r
+</pre>\r
+\r
+<h2>Grid Menus</h2>\r
+\r
+<p>Rico LiveGrids come with a lot of functionality built in. To access that functionality,\r
+Rico includes a default set of menus -- defined in ricoLiveGridMenu.js.\r
+To use the default menu, simply load the 'LiveGridMenu' module and then\r
+assign the grid's menu property to an instance of the Rico.GridMenu class.\r
+<pre>\r
+  Rico.loadModule('LiveGridMenu');\r
+  ...\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, grid_options);\r
+  ex1.menu=new Rico.GridMenu();\r
+</pre>\r
+<p>By default, the menu will open when a user double-clicks on a grid cell.\r
+To change the event that opens the menu, assign a value to the grid's\r
+<a href='#menuEvent'>menuEvent</a> option. The following code will open the menu on a right-click:\r
+<pre>\r
+  Rico.loadModule('LiveGridMenu');\r
+  ...\r
+  var grid_options = {\r
+    menuEvent: 'contextmenu'\r
+  }\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, grid_options);\r
+  ex1.menu=new Rico.GridMenu();\r
+</pre>\r
+<p>Rico.GridMenu provides a callback (dataMenuHandler) so that additional menu items can be added.\r
+The grid menu is always built dynamically -- customized to the row and column the user\r
+has clicked on. So the callback function is called every time the menu is invoked and\r
+must add the desired menu items at each invocation.\r
+<pre>\r
+  Rico.loadModule('LiveGridMenu');\r
+  ...\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, grid_options);\r
+  ex1.menu=new Rico.GridMenu();\r
+  ex1.menu.options.dataMenuHandler=myCustomMenuItems;\r
+  ...\r
+function myCustomMenuItems(grid,r,c,onBlankRow) {\r
+  if (buffer.getWindowValue(r,c)=='Special Value')\r
+    grid.menu.addMenuItem("Special menu item", specialAction);
+}\r
+function specialAction() {\r
+  ...\r
+}
+</pre>\r
+\r
+<p>It is also possible to create completely custom menus. For an example,\r
+see ex5.php/asp/aspx.\r
+\r
+\r
+<h2>Notes</h2>\r
+\r
+<ul>\r
+<li>If you create an element with a DOM id matching the name of the LiveGrid table \r
+plus '_bookmark', it will be updated with text indicating \r
+the number of records displayed in the grid. The LiveGrid examples typically use\r
+this markup:\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="data_grid_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+</pre>\r
+<li>In order to display properly, a browser displaying a LiveGrid must be operating in \r
+<a href="http://www.quirksmode.org/css/quirksmode.html">strict (aka standards) mode</a>.\r
+Therefore, you must include a doctype declaration just before the \r
+<code> &lt;html&gt; </code> tag. For example:\r
+<pre>\r
+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" \r
+ "http://www.w3.org/TR/html4/strict.dtd"&gt;\r
+</pre>\r
+</ul>\r
+\r
+\r
+<h2>Reference</h2>\r
+\r
+<h3>Constructor</h3>\r
+<pre>\r
+\r
+  var grid = new Rico.LiveGrid (table_id, rico_buffer, grid_options);\r
+\r
+</pre>\r
+\r
+<ul>\r
+<li><strong>table_id</strong> is the DOM id of the table (or div) that will be replaced by a LiveGrid\r
+<li><strong>rico_buffer</strong> is a Rico Buffer object, e.g.\r
+  <ul>\r
+  <li>Rico.Buffer.Base (for non-AJAX tables)\r
+  <li>Rico.Buffer.AjaxXML\r
+  <li>Rico.Buffer.AjaxSQL\r
+  <li>Rico.Buffer.AjaxJSON\r
+  </ul>\r
+<li><strong>grid_options</strong> (see below)\r
+</ul>\r
+\r
+<h3><a name="options"></a>Options</h3>\r
+\r
+\r
+<h4>Grid Size</h4>\r
+<dl>\r
+<dt>visibleRows (rows in .net plug-in)\r
+<dd>How many rows of the grid are made visible?\r
+A positive integer specifies that the grid should always contain exactly that many rows.\r
+<p>Negative values have the following meanings:\r
+  <ul>\r
+  <li>-1: size grid to client window (default)\r
+  <li>-2: size grid to whichever is smaller: the client window or the data\r
+  <li>-3: size grid so that the page body does not have a scrollbar\r
+  <li>-4: size grid to the parent node in the DOM\r
+  </ul>\r
+<p>String values have the following meanings:\r
+  <ul>\r
+  <li>'window': size grid to client window (default)\r
+  <li>'data': size grid to whichever is smaller: the client window or the data\r
+  <li>'body': size grid so that the page body does not have a scrollbar\r
+  <li>'parent': size grid to the parent node in the DOM\r
+  <li>'XX%': size grid to XX percent of the total window height\r
+  <li>'XXpx': size grid to XX pixels\r
+  </ul>\r
+  \r
+<dt>minPageRows\r
+<dd>Minimum # of visible rows. Used only when visibleRows < 0. (default: 2 - after Rico 2b3, 1 - up to Rico 2b3)\r
+\r
+<dt>maxPageRows\r
+<dd>Maximum # of visible rows. Used only when visibleRows < 0. (default: 50)\r
+\r
+<dt><a name="defaultWidth"></a>defaultWidth\r
+<dd>An integer used in setting the initial width of columns. \r
+See the <a href='#width'>column width option</a> for an explanation.\r
+(default: -1 if initializing from an HTML table, 100 otherwise)\r
+\r
+<dt>scrollBarWidth\r
+<dd>For some calculations, LiveGrid needs to know the width of scrollbars on the page. (default: 19)\r
+\r
+<dt>minScrollWidth\r
+<dd>Minimum scroll area width in pixels when width of frozen columns exceeds window width. (default: 100)\r
+</dl>\r
+\r
+\r
+<h4>Grid Data</h4>\r
+<dl>\r
+<dt>offset<dd>First row of data to be displayed (default: 0)\r
+<dt>prefetchBuffer<dd>Load the buffer (and therefore the grid) on page load? (default: true)\r
+<dt>sortCol<dd>Name or index of column for initial sort\r
+<dt>sortDir<dd>Direction of initial sort\r
+  <br>possible values: 'ASC', 'DESC'\r
+<dt>getQueryParms<dd>If true, check the web page's query string for filter parameters and apply\r
+any filter that is found.  Filter parameters must be of the form "f[x]=" where x is the column index.\r
+(default: false)\r
+</dl>\r
+\r
+<h4>Header Configuration</h4>\r
+<dl>\r
+<dt>frozenColumns\r
+<dd>number of columns on the left side of the grid that should be\r
+    frozen (like Excel). \r
+\r
+<dt>headingSort\r
+<dd>A string that defines how headings are displayed to facilitate sorting.\r
+  <ul>\r
+  <li>'link' -- make headings a link that will sort columns (default)\r
+  <li>'hover' -- user can click in any part of the heading cell to sort. \r
+       Heading changes background color when cursor hovers over cell.\r
+  <li>'none' -- events on headings are disabled\r
+  </ul>\r
+\r
+<dt>hdrIconsFirst\r
+<dd>Put sort and filter icons before or after header text (default: true)\r
+\r
+<dt><a name='allowColResize'>allowColResize</a>\r
+<dd>Allow columns to be resized by the user? If true, then resizing for individual columns \r
+can be disabled using <a href='#noResize'>noResize</a> in columnSpecs[].\r
+\r
+<dt>panels\r
+<dd>An array of strings that can serve as secondary headings.\r
+In LiveGrid Forms, they also serve as the headings for the tabbed panels on the input form.\r
+\r
+<dt>PanelNamesOnTabHdr\r
+<dd>Set to 'true' for the strings in panels[] to be used as secondary headings.\r
+In LiveGrid Forms, it may be set to 'false' so that panels[] is only used on the input form.\r
+\r
+<dt><a name='FilterLocation'>FilterLocation</a>\r
+<dd>Specifies the heading row where filters should be placed.\r
+-1 causes a new row to be appended to the header and that new row used for filtering.\r
+See also the <a href='#filterUI'>filterUI</a> option.\r
+\r
+<dt>FilterAllToken\r
+<dd>Token in select filters used to indicate "show all values" (default: "___ALL___").\r
+</dl>\r
+\r
+<h4>Images</h4>\r
+<dl>\r
+<dt>resizeBackground\r
+<dd>Image to use for column resize handle. (default: 'resize.gif')\r
+\r
+<dt>sortAscendImg\r
+<dd>Image to use to indicate that the column is sorted in ascending order. (default: 'sort_asc.gif')\r
+\r
+<dt>sortDescendImg\r
+<dd>Image to use to indicate that the column is sorted in descending order. (default: 'sort_desc.gif')\r
+\r
+<dt>filterImg\r
+<dd>Image used to indicate an active filter on a column. (default: 'filtercol.gif')\r
+</dl>\r
+\r
+\r
+<h4>Cookie options</h4>\r
+<dl>\r
+\r
+<dt><a name='saveColumnInfo'>saveColumnInfo</a>\r
+<dd>Specifies which details to save in the grid's cookie. Only one cookie is used for each grid.\r
+Note that the width setting includes the hide/show status of the column. \r
+(default: {width:true, filter:false, sort:false})\r
+<br>In the .net plug-in, this option is represented by 3 separate properties:\r
+saveColumnWidth, saveColumnFilter, saveColumnSort\r
+\r
+<dt>cookiePrefix\r
+<dd>A string that is prepended to the cookie name. (default: 'RicoGrid.')\r
+\r
+<dt>cookieDays\r
+<dd>Number of days before the cookie expires. \r
+If you don't specify it, then the cookie is only maintained for the current session. (default: null)\r
+\r
+<dt>cookiePath\r
+<dd>Sets the top level directory from which the grid cookie can be read.\r
+If you don't specify it, it becomes the path of the page that sets the cookie. (default: null)\r
+\r
+<dt>cookieDomain\r
+<dd>Tells the browser to which domain the cookie should be sent. \r
+If you don't specify it, it becomes the domain of the page that sets the cookie. (default: null)\r
+\r
+</dl>\r
+\r
+<h4>Highlighting and selection</h4>\r
+<dl>\r
+\r
+<dt>highlightElem\r
+<dd>a string that specifies what gets highlighted/selected\r
+  <ul>\r
+  <li>'cursorRow' -- the grid row under the cursor\r
+  <li>'cursorCell' -- the grid cell under the cursor\r
+  <li>'menuRow' -- the grid row where the menu is displayed\r
+  <li>'menuCell' -- the grid cell where the menu is displayed\r
+  <li>'selection' -- allow the user to select cells\r
+  <li>'none' -- never highlight\r
+  </ul>\r
+\r
+<dt>highlightSection\r
+<dd>an integer that specifies which section of the table is highlighted\r
+  <ul>\r
+  <li>1 -- frozen\r
+  <li>2 -- scrolling\r
+  <li>3 -- all (default)\r
+  <li>0 -- none\r
+  </ul>\r
+\r
+<dt>highlightMethod\r
+<dd>Method used to highlight cells &amp; rows. Possible values:\r
+  <ul>\r
+  <li>'outline' -- least CPU-intensive on client-side\r
+  <li>'class' -- adds CSS class to highlighted cell/row (default)\r
+  <li>'both' -- highlight using both outline and class\r
+  </ul>\r
+\r
+<dt>highlightClass\r
+<dd>When highlighting by class, this is the class name used (default: 'ricoLG_selection')\r
+</dl>\r
+\r
+\r
+<h4>Export and print</h4>\r
+<dl>\r
+\r
+<dt>maxPrint\r
+<dd>The maximum number of rows that the user is allowed\r
+to Print/Export.  Set to 0 to disable print/export. (default: 1000)\r
+\r
+<dt>exportWindow\r
+<dd>Options string passed to <a href='http://www.w3schools.com/htmldom/met_win_open.asp'>window.open()</a>\r
+when the export window is created. (default: "height=400,width=500,scrollbars=1,menubar=1,resizable=1")\r
+\r
+<dt>exportStyleList\r
+<dd>An array of CSS attributes that will be extracted from the first visible row of the grid and used\r
+to format all rows of the exported table. \r
+(default: ['background-color', 'color', 'text-align', 'font-weight', 'font-size', 'font-family'])\r
+</dl>\r
+\r
+\r
+<h4>Behavior Defaults</h4>\r
+<dl>\r
+<dt><a name='canHideDefault'>canHideDefault</a>\r
+<dd>Controls whether columns can be hidden/shown (default: true). \r
+Hide/show can be disabled for individual columns using the <a href='#canHide'>canHide</a> property in columnSpecs.\r
+\r
+<dt><a name='canSortDefault'>canSortDefault</a>\r
+<dd>Controls whether columns can be sorted (default: true).\r
+Sorting can be disabled for individual columns using the <a href='#canSort'>canSort</a> property in columnSpecs.\r
+\r
+<dt><a name='canFilterDefault'>canFilterDefault</a>\r
+<dd>Controls whether columns can be filtered (default: true).\r
+Filtering can be disabled for individual columns using the <a href='#canFilter'>canFilter</a> property in columnSpecs.\r
+\r
+<dt><a name='dndMgrIdx'>dndMgrIdx</a>\r
+<dd>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
+\r
+</dl>\r
+\r
+\r
+<h4>Event control</h4>\r
+<dl>\r
+<dt><a name='menuEvent'>menuEvent</a>\r
+<dd>A string that specifies when the grid's menu should be invoked\r
+  <ul>\r
+  <li>'click' -- invoke menu on single-click\r
+  <li>'dblclick' -- invoke menu on double-click (default)\r
+  <li>'contextmenu' -- invoke menu on right-click\r
+  <li>'none' -- no pop-up menu\r
+  </ul>\r
+\r
+<dt>windowResize\r
+<dd>A boolean value specifying whether to resize the grid during a window.resize event.\r
+This should be set to false when the grid is embedded in an accordian. (default: true)\r
+</dl>\r
+\r
+\r
+<h4>Event handles</h4>\r
+<dl>\r
+<dt style='font-weight:normal;'>Event handlers cannot be passed in options to the constructor, but may be set after the LiveGrid has been constructed.\r
+<dt>sortHandler<dd> (default: Rico.LiveGridMethods.sortHandler -- bound)\r
+<dt>filterHandler<dd> (default: Rico.LiveGridMethods.filterHandler -- bound)\r
+<dt>onRefreshComplete<dd> (default: Rico.LiveGridMethods.bookmarkHandler -- bound)\r
+<dt>rowOverHandler<dd> (default: Rico.LiveGridMethods.rowMouseOver -- bound as event listener)\r
+<dt>mouseDownHandler<dd> (default: Rico.LiveGridMethods.selectMouseDown -- bound as event listener)\r
+<dt>mouseOverHandler<dd> (default: Rico.LiveGridMethods.selectMouseOver -- bound as event listener)\r
+<dt>mouseUpHandler<dd> (default: Rico.LiveGridMethods.selectMouseUp -- bound as event listener)\r
+<dt>onscroll<dd> called whenever the grid is scrolled vertically. (default: null)\r
+<dt>onscrollidle<dd> called 1.2 seconds after the grid is scrolled vertically. (default: null)\r
+<dt>click<dd> called when a grid cell is clicked. (default: null, unless menuEvent='click')\r
+<dt>dblclick<dd> called when a grid cell is double-clicked. (default: null, unless menuEvent='dblclick')\r
+<dt>contextmenu<dd> called when a grid cell is right-clicked. (default: null, unless menuEvent='contextmenu')\r
+</dl>\r
+\r
+<h4><a name="column"></a>Per-column configuration</h4>\r
+<dl>\r
+<dt style='font-weight:normal;'>Options for each individual column are contained in the columnSpecs option.\r
+columnSpecs is an array with an entry for each column. \r
+Each column entry can either be:\r
+<ul>\r
+\r
+<li>null (default) --  in which case the column is formatted according to the spec in Rico.TableColumn.DEFAULT.\r
+If most columns in your grid share common formatting, then it may make sense to override\r
+the default column spec for that grid:\r
+<pre>\r
+Rico.TableColumn.DEFAULT = {ClassName:'aligncenter', width:50};\r
+</pre>\r
+In this case, any column with no spec will have content aligned to the center and a width of 50 pixels.\r
+\r
+<li>a string -- provides a simple way to specify a column format.\r
+These values are built-in: DOLLAR, EURO, PERCENT, QTY, DEFAULT.\r
+It is also possible to define your own. This example, which defines a temperature format,\r
+is taken from weather.php:\r
+<pre>\r
+Rico.TableColumn.TEMP = {type:'number', decPlaces:0, \r
+  ClassName:'alignright', suffix:'&amp;deg;C', width:50};\r
+var opts = {  \r
+  frozenColumns : 1,
+  columnSpecs   : [{width:120},{width:70},{width:70},{width:100},\r
+                   'TEMP','TEMP','TEMP',\r
+                   {width:150},{width:200},{width:60}]\r
+};\r
+</pre>\r
+\r
+<li>an object -- containing entries for one or more of the properties listed below.\r
+Here is an example that contains specifications for columns 0, 1, and 3.\r
+Column 2 would get the default spec.\r
+<pre>\r
+columnSpecs : [{canSort:false, noResize:true, ClassName:'alignright'},\r
+               {ClassName:'aligncenter'},\r
+               ,\r
+               {visible:false}]\r
+</pre>\r
+</ul>\r
+\r
+<dt>Hdg\r
+<dd>An alternate way of specifying the heading text for a column.\r
+Only used by LiveGrid if the grid id refers to a &lt;div&gt; instead of an html table.\r
+\r
+<dt><a name='canSort'>canSort</a>\r
+<dd>Column can be sorted. (default: <a href='#canSortDefault'>grid.options.canSortDefault</a>)\r
+\r
+<dt><a name='canFilter'>canFilter</a>\r
+<dd>Column can be filtered. (default: <a href='#canFilterDefault'>grid.options.canFilterDefault</a>)\r
+\r
+<dt>canDrag\r
+<dd>Column cells can serve as the source for a drag-n-drop operation. The "DragAndDrop" module must be loaded. \r
+The temporary drag objects have a class of "LiveGridDraggable".\r
+For an example, see <a href='client/drag_and_drop_grid.html'>drag_and_drop_grid.html</a>. (default: false)\r
+\r
+<dt><a name='canHide'>canHide</a>\r
+<dd>Column can be hidden/unhidden. (default: <a href='#canHideDefault'>grid.options.canHideDefault</a>)\r
+\r
+<dt>visible\r
+<dd>Controls whether the column is visible at grid startup (default: true). \r
+If <a href='#saveColumnInfo'>grid.options.saveColumnInfo.width</a> is true\r
+and there is a value in the cookie for this column, the cookie value will take precedence.\r
+\r
+<dt><a name='width'>width</a>\r
+<dd>An integer specifying the initial width (in pixels) for the column. \r
+Here is the algorithm LiveGrid uses for setting the initial width of each column:\r
+<ol>\r
+<li>If <a href='#saveColumnInfo'>options.saveColumnInfo.width</a> is true and column information is present in the grid's cookie \r
+(due to the user previously performing a resize on that grid's column), \r
+then the width in the cookie is used. Otherwise...\r
+\r
+<li>If there is a width spec for the column in options.columnSpecs[], then the width in the spec is used. For an example, see ex3.php/asp/aspx. Otherwise...\r
+\r
+<li>If <a href='#defaultWidth'>options.defaultWidth</a> is true (default) and the grid header is initialized from an html table, then the column's width in the html table is used. \r
+You can usually control the column widths of the initial table by using col tags (e.g. &lt;col style='width:40px;' &gt;). \r
+If the total table width is less than the browser width then this works; however if it is greater, then the browser often ignores &lt;col width&gt; \r
+and tries to squeeze all of the columns into the available window width. Thus, using this method to set the column width is unreliable. Otherwise...\r
+\r
+<li>If <a href='#defaultWidth'>options.defaultWidth</a> is false, then the column's width is set to options.defaultWidth (which defaults to 100).\r
+</ol>\r
+Therefore, the most reliable way to set column widths in LiveGrid and SimpleGrid is to specify a width for every column in options.columnSpecs[]. \r
+If many columns share a common width, then you can shortcut this somewhat by setting options.defaultWidth=false, \r
+and setting options.defaultWidth to the common width.\r
+\r
+<dt><a name='noResize'>noResize</a>\r
+<dd>Allow column to be resized? (default <a href='#allowColResize'>grid.options.allowColResize</a> )\r
+\r
+<dt>ClassName\r
+<dd>By default, LiveGrid assigns a unique CSS class name to each\r
+column, which follows the naming convention: table_id + '_col' + column_index.\r
+For example, the fourth column in the grid 'mygrid' would have the class name\r
+'mygrid_col3'. The value of the ClassName option overrides this default name.\r
+The ClassName option is most commonly used to specify column alignment via the\r
+Rico-provided 'alignright' and 'aligncenter' classes. \r
+So, if you wanted the first 3 columns in your grid to be displayed with white\r
+text on a red background, you could do either of the following:\r
+\r
+<pre>\r
+In CSS:\r
+.mygrid_col0 div.ricoLG_cell, \r
+.mygrid_col1 div.ricoLG_cell, \r
+.mygrid_col2 div.ricoLG_cell {\r
+  color: white;\r
+  background-color: red;\r
+}\r
+</pre>\r
+\r
+OR\r
+\r
+<pre>\r
+In CSS:\r
+.WhiteOnRed div.ricoLG_cell {\r
+  color: white;\r
+  background-color: red;\r
+}\r
+\r
+In javascript:\r
+columnSpecs : [{ClassName:'WhiteOnRed'},\r
+               {ClassName:'WhiteOnRed'},\r
+               {ClassName:'WhiteOnRed'},\r
+               ...\r
+</pre>\r
+\r
+Finally, please note that this ClassName is not applied to the grid headings - \r
+use a align="right" on the &lt;th&gt; tag to accomplish the header alignment.\r
+\r
+<dt>type (DataType in .net plug-in)\r
+<dd>A string containing one of these values: \r
+<ul>\r
+<li>text - any tags in the column value are removed before being displayed to the user.\r
+<li>showTags - any tags in the column value are displayed to the user as text.\r
+<li>number - column value is treated as a number, \r
+and any <a href='#NumberFormatting'>number formatting options</a> \r
+supplied in the column specification are applied.\r
+<li>datetime - column value is treated as a date &amp; time, \r
+and any <a href='#DateFormatting'>date formatting options</a> \r
+supplied in the column specification are applied.\r
+<li>UTCasLocalTime - column/database value is treated as a GMT/UTC date &amp; time, and any <a href='#DateFormatting'>date formatting options</a> \r
+supplied in the column specification are applied. Before display, the value is converted to the user's local time zone.\r
+<li>date - column value is treated as a date, and any <a href='#DateFormatting'>date formatting options</a> \r
+supplied in the column specification are applied.\r
+<li>raw (default) - column values are displayed directly to the grid cell. \r
+Any HTML markup gets copied into the cell.\r
+</ul>\r
+</dd>\r
+\r
+<dt><a name='control'></a>control\r
+<dd>An object that can be used to provide special formatting for a column.\r
+Several column controls are provided with LiveGrid. The code for them\r
+resides in ricoLiveGridControls.js. Here is a brief description of the\r
+provided controls:\r
+\r
+<dl style='font-size:smaller;'>\r
+<dt>Rico.TableColumn.checkboxKey(showKey)\r
+<dd>Display unique key column as: &lt;checkbox&gt; &lt;key value&gt;
+and keep track of which keys the user selects.
+Key values should not contain &lt;, &gt;, or &amp;.
+\r
+<dt>Rico.TableColumn.checkbox(checkedValue, uncheckedValue, defaultValue, readOnly)\r
+<dd>Display column as checkboxes. Database column should contain only two-values  (e.g. yes/no).
+The following code is taken from ex7 (column values are 1 and 0):\r
+<pre>\r
+columnSpecs: [{canHide:false,\r
+               control:new Rico.TableColumn.checkbox('1','0'),\r
+               ClassName:'aligncenter'},\r
+              'specQty'],\r
+</pre>\r
+\r
+<dt>Rico.TableColumn.textbox(boxSize, boxMaxLen, readOnly)\r
+<dd>Display the column value in a text box.\r
+\r
+<dt>Rico.TableColumn.HighlightCell(chkcol,chkval,highlightColor,highlightBackground,chkop)\r
+<dd>Highlight a grid cell when a particular value is present in the specified column.\r
+chkop optionally specifies the comparison to be performed: ==, !=, &lt;, &lt;=, &gt;, &gt;=.\r
+If not specified, then == is used.\r
+The following code is taken from ex2highlight and highlights the entire row when column 1\r
+contains "HANAR":\r
+<pre>\r
+var CustId='HANAR';\r
+var CustIdCol=1;\r
+var highlight=Rico.TableColumn.HighlightCell;\r
+...\r
+columnSpecs: [\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ type:'date', control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ type:'date', control:new highlight(CustIdCol,CustId,'red','yellow') }]\r
+</pre>\r
+\r
+<dt>Rico.TableColumn.bgColor()\r
+<dd>Database value contains a css color name/value\r
+\r
+<dt>Rico.TableColumn.link(href,target)\r
+<dd>Database value contains a url to another page.\r
+The href parameter may contain references to grid values by including "{x}" in the string,\r
+where x is a column number. The following code is taken from ex6:\r
+<pre>\r
+columnSpecs: [,\r
+{control:new Rico.TableColumn.link('ex2.asp?id={0}','_blank'),\r
+ width:250},\r
+,'specQty']\r
+</pre>\r
+\r
+<dt>Rico.TableColumn.image()\r
+<dd>Database value contains a url to an image.\r
+The following code is taken from photos.php:\r
+<pre>\r
+imgctl=new Rico.TableColumn.image();\r
+...\r
+columnSpecs: [\r
+{control:imgctl,width:90},,,\r
+{type:'datetime'},{width:200}]\r
+</pre>\r
+\r
+<dt>Rico.TableColumn.lookup(map, defaultCode, defaultDesc)\r
+<dd>Map a database value to a display value\r
+\r
+<dt>Rico.TableColumn.MultiLine()\r
+<dd>Overcomes issues when displaying multi-line content (i.e. content with &lt;br&gt; tags) in IE6 and IE7\r
+\r
+</dl>\r
+\r
+<br>It is also possible to write your own column control, which\r
+implements logic specific to your application. Here is an example:\r
+<pre>\r
+// Display values white on black if\r
+//   first column contains the value "reverse"\r
+// Usage: { control:new MyCustomColumn() }
+MyCustomColumn = Class.create();
+
+MyCustomColumn.prototype = {
+  initialize: function() {},
+
+  _clear: function(gridCell,windowRow) {
+    gridCell.style.color='';
+    gridCell.style.backgroundColor='';
+    gridCell.innerHTML='&amp;nbsp;';
+  },
+
+  _display: function(v,gridCell,windowRow) {
+    var col0=this.liveGrid.buffer.getWindowValue(windowRow,0);\r
+    if (col0=="reverse") {\r
+      gridCell.style.color='white';
+      gridCell.style.backgroundColor='black';\r
+    } else {\r
+      gridCell.style.color='';
+      gridCell.style.backgroundColor='';
+    }
+    gridCell.innerHTML=this._format(v);
+  }
+}
+</pre>\r
+\r
+<dt><a name='filterUI'></a>filterUI\r
+<dd>If a <a href='#FilterLocation'>FilterLocation</a> option is specified for the grid, then filterUI will control\r
+how each column is filtered. If filterUI is:\r
+<ul>\r
+<li>null or omitted, then no filter is displayed for the column.\r
+<li>'t' - will generate a text box filter and the records being displayed\r
+are filtered as the user types. \r
+<br>May optionally be followed by a caret (^) to\r
+indicate that text box values should match the beginning of the column value.\r
+Otherwise, they can match anywhere in the column's value.\r
+<br>May also be followed by a number to indicate the size of the text box (default size is 10).\r
+<pre>\r
+filterUI:'t^20' \r
+// will create a text box that is 20 characters wide\r
+// text typed into the box will be compared to\r
+//    the beginning of each column value\r
+</pre>\r
+<li>'s' - will generate a select list filter with all possible column values contained in the list.\r
+Populated using a 'select distinct' query if the grid's source is a SQL query.\r
+</ul>\r
+\r
+<dt></a>filterCol\r
+<dd>Specifies that the filter should be applied to a different column. For example, ex3livegrid.asp/aspx/php\r
+uses this feature to filter the order and ship date columns by year. The full date is shown in the column\r
+in which the filter appears; however, there is another hidden, calculated column containing "year(orderdate)"\r
+to which the filter is applied.\r
+</dl>\r
+\r
+<dl>\r
+<dt style='color:navy;'><a name='NumberFormatting'></a><em>Number formatting:</em>\r
+\r
+<dt>multiplier\r
+<dd>The value is multiplied by this number before it is displayed. (default: 1)\r
+\r
+<dt>decPlaces\r
+<dd>Number of places to the right of the decimal point. (default: 0)\r
+\r
+<dt>decPoint\r
+<dd>Decimal point symbol. (default: '.' but overridden in the translation files)\r
+\r
+<dt>thouSep\r
+<dd>Symbol for thousands separator. (default: ',' but overridden in the translation files)\r
+\r
+<dt>negSign\r
+<dd>Specifies how negative numbers should be displayed. Possible values:\r
+<ul>\r
+<li>L=leading minus (default)\r
+<li>T=trailing minus\r
+<li>P=parentheses\r
+</ul>\r
+\r
+<dt>prefix\r
+<dd>A string added to the beginning of the number. Typically a currency symbol.\r
+\r
+<dt>suffix\r
+<dd>A string added to the end of a number. For example, a "%" symbol.</dd>\r
+</dl>\r
+\r
+<dl>\r
+<dt style='color:navy;'><a name='DateFormatting'></a><em>Date formatting:</em>\r
+\r
+<dt>dateFmt\r
+<dd>A string specifying how the date or datetime should be displayed. Default is "translateDate", which means\r
+that the dateFmt and timeFmt strings in the RicoTranslate object are used \r
+(this defaults to "mm/dd/yyyy" for dates and "mm/dd/yyyy hh:nn:ss a/pm" for datetimes, \r
+but is overridden by the various language translation files). \r
+If dateFmt="localeDate", then the value is formatted using javascript's built-in toLocaleDateString() function. \r
+If dateFmt="localeDateTime", then the value is formatted using javascript's built-in toLocaleString() function. \r
+The dateFmt string may contain the following special character sequences:\r
+\r
+<ul>\r
+<li>yyyy - 4 digit year
+<li>yy - 2 digit year
+<li>mmmm - month name
+<li>mmm - 3 character month name abbreviation. In Asian languages this often doesn't make sense - in these cases it returns the full month name (same as mmmm).
+<li>mm - 2 digit month number (zero padded)
+<li>m - 1 or 2 digit month number
+<li>dddd - day-of-the-week
+<li>ddd - 3 character day-of-the-week abbreviation
+<li>dd - 2 digit day number (zero padded)
+<li>d - 1 or 2 digit day number
+<li>hh - 2 digit hour, 12-hour clock (zero padded)
+<li>h - 1 or 2 digit hour, 12-hour clock
+<li>HH - 2 digit hour, 24-hour clock (zero padded)
+<li>H - 1 or 2 digit hour, 24-hour clock
+<li>nn - 2 digit minutes (zero padded)
+<li>ss - 2 digit seconds (zero padded)
+<li>a/p - a or p (for am or pm)
+</ul>\r
+\r
+<pre>\r
+// display first column as "month year"\r
+columnSpecs : [{type:date, dateFmt:'mmm yyyy'}]\r
+</pre>\r
+</dd>\r
+\r
+<dt>prefix\r
+<dd>A string added to the beginning of the date.\r
+\r
+<dt>suffix\r
+<dd>A string added to the end of a date. For example, you could use this to include a time zone:\r
+<pre>\r
+// indicate that times are GMT/UTC\r
+columnSpecs : [{type:datetime, suffix:' UTC'}]\r
+</pre>\r
+</dl>\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/LiveGridAjax.html b/documentation/LiveGridAjax.html
new file mode 100644 (file)
index 0000000..d677819
--- /dev/null
@@ -0,0 +1,447 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Rico LiveGrid AJAX</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+
+<style type="text/css">\r
+.request, .response {
+  border: 1px solid black;
+  background-color: #FFF8DC;
+  padding: 4px;
+}
+dt span {
+  font-weight:normal;
+  font-style:italic;
+}
+</style>
+</head>
+
+<body>
+<h1>Rico LiveGrid AJAX</h1>
+
+<p><a href='LiveGridAjax_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>\r
+<a href='LiveGridAjax_ja.html'>View this page in Japanese</a></p>\r
+\r
+<p>One of the key features of the Rico LiveGrid is its ability to load data dynamically
+via AJAX. This document focuses on the format of the LiveGrid AJAX requests and responses. 
+More specifically, it is the LiveGrid <strong>Buffer</strong> object that is
+generating requests and processing responses. So if you are in a situation where data
+is coming from a web service that is out of your control, you could create a custom
+LiveGrid buffer class that would serve as an interface between the web service
+and LiveGrid. However, in this document we will focus on the request and response
+formats of the buffer classes that come with the Rico distribution.
+
+<p>The Rico distribution includes 4 distinct buffer classes:
+<dl>
+<dt>Rico.Buffer.Base
+<dd>Used for static datasets, no AJAX (i.e. no calls to XMLHttpRequest).
+Data can be loaded from an HTML table or from a javascript array.
+Since this buffer does not use AJAX, it will not be discussed further in this document. 
+<dt><a href='#AjaxXML'>Rico.Buffer.AjaxXML</a>
+<dd>All LiveGrid data is loaded in a single AJAX call, data returned in XML format
+<dt><a href='#AjaxSQL'>Rico.Buffer.AjaxSQL</a>
+<dd>LiveGrid data is loaded in chunks as the user scrolls through the grid, data returned in XML format
+<dt><a href='#AjaxJSON'>Rico.Buffer.AjaxJSON</a>
+<dd>Same as AjaxSQL, except that responses are in JSON format
+</dl>
+
+<h2><a name='AjaxXML'>Rico.Buffer.AjaxXML</a></h2>
+
+<p>An AjaxXML buffer will only perform a single XMLHttpRequest 
+regardless of the amount of scrolling a user does in a LiveGrid.
+An AjaxXML buffer is created using the following javascript:
+
+<pre>
+buffer=new Rico.Buffer.AjaxXML(url,options,ajaxOptions)
+</pre>
+
+<dl>
+<dt>url
+<dd>A string containing the url to the data provider.
+<dt>options
+<dd>A Rico buffer options object, which may contain any of the following:
+
+<dl>
+<dt>bufferTimeout
+<dd>An integer that specifies the number of milliseconds a wait message should be presented to the
+user before indicating a timeout. Default is 20000 (20 seconds).
+
+<dt>requestParameters
+<dd>An array of strings of the form "parm=value" that get added to the
+search string of the XMLHttpRequest.
+
+<dt>isEncoded
+<dd>Specifies whether the response will be HTML encoded or not. Default is true.
+All plug-ins supplied with Rico encode the response.
+
+<dt>waitMsg
+<dd>The message that gets displayed to the user while waiting for and XMLHttpRequest response.
+Default is RicoTranslate.getPhraseById("waitForData").
+Note that this can be an image tag, for example: 
+<pre>
+buffer=new Rico.Buffer.AjaxXML(
+  url,
+  {waitMsg: "&lt;img src='MySpinner.gif'&gt;"},
+  ajaxOptions);
+</pre>
+
+<dt>canFilter
+<dd>A boolean value indicating whether the buffer supports filtering. Default is true.
+</dl>
+
+<dt>ajaxOptions
+<dd>An <a href='http://prototypejs.org/api/ajax/options'>Ajax options object</a>
+that is passed to Prototype's Ajax.Request method.
+The "parameters" and "onComplete" options are used by Rico
+and have no effect if specified. The "method" option
+defaults to "get", but can be overridden.
+</dl>
+
+Here is an example taken from ex3livegridxml.php:
+<pre>
+buffer=new Rico.Buffer.AjaxXML('ricoXMLquery.php');\r
+ex3=new Rico.LiveGrid ('ex3', buffer, grid_options);\r
+</pre>
+
+<h3>AjaxXML Request</h3>
+
+<p>Assuming grid_options.prefetchBuffer is true (which is the default),
+then a single XMLHttpRequest will be generated during grid initialization
+that will fetch data from ricoXMLquery.php. The URL will include the
+following querystring (search) parameters:
+
+<dl>
+<dt>id
+<dd>The id of the grid that was specified as the first parameter in the call to
+Rico.LiveGrid(), "ex3" in the previous example.
+<dt>offset
+<dd>The first record in the dataset that should be returned. Always "0" for AjaxXML.
+<dt>page_size
+<dd>The number of records that should be returned in the dataset. 
+Always "-1" for AjaxXML, meaning all records should be returned.
+</dl>
+
+<p>Plus, if any options.requestParameters were specified, they would be included also.
+So the complete URL that would be used to fetch data for ex3 would be:
+<pre class='request'>
+ricoXMLquery.php?id=ex3&amp;offset=0&amp;page_size=-1
+</pre>
+
+<h3><a name='AjaxXMLresponse'>AjaxXML Response</a></h3>
+
+<p>Here is a sample response that will populate our ex3 LiveGrid:
+
+<pre class='response'>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;ajax-response&gt;\r
+  &lt;response type='object' id='ex3_updater'&gt;\r
+    &lt;rows update_ui='true' offset='0'&gt;\r
+    &lt;tr&gt;&lt;td&gt;Data for row 1, cell 1&lt;/td&gt;&lt;td&gt;Data for row 1, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+    &lt;tr&gt;&lt;td&gt;Data for row 2, cell 1&lt;/td&gt;&lt;td&gt;Data for row 2, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+    &lt;/rows&gt;
+    &lt;rowcount&gt;2&lt;/rowcount&gt;\r
+    &lt;debug&gt;Generated by test server&lt;/debug&gt;\r
+  &lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+
+<p>When you are creating the response in your request handler you must set the\r
+content-type of the response header to text/xml. Also you will need to specify the\r
+xml version and <a href='http://www.opentag.com/xfaq_enc.htm'>character encoding</a>. 
+The encoding value is very important and depends on your specific environment.
+Two common values are "UTF-8" and "iso-8859-1".
+Here is how the first couple of lines would look in Java Server Pages\r
+(JSP):\r
+<pre>
+&lt;% response.setHeader(“Content-Type”, “text/xml”); %&gt;\r
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;\r
+</pre>
+
+And this is how they would look in PHP:\r
+<pre>
+header("Content-type: text/xml");\r
+echo "&lt;?xml version='1.0' encoding='UTF-8'?"."&gt;\n";\r
+</pre>
+
+<p>Notice several important items about the Ajax response.\r
+
+<p>First the response is wrapped in the tags &lt;ajax-response&gt;&lt;/ajax-response&gt;. 
+Every Rico Ajax response must have this element as the root of the XML returned.\r
+Second, notice the response contained within the ajax-response. 
+The response tags (&lt;response&gt;&lt;/response&gt;) wrap the response content.
+The type and id attributes of the &lt;response&gt; tag were required in Rico 1.1, 
+but are ignored by Rico 2.0.
+Finally, notice the &lt;rowcount&gt; element.
+This specifies the total number of rows in the dataset. In an AjaxXML response,
+this should match the number of &lt;tr&gt; elements.
+
+<p>The debug tag (&lt;debug&gt;&lt;/debug&gt;) is optional. The response
+may contain 0, 1, or more of them. The content of each debug tag is
+sent to Rico's <a href='LiveGrid.html#debug'>message logging facility</a>.
+The Rico plug-ins can return the actual SQL queries that get
+executed by setting ricoXmlResponse.sendDebugMsgs to true in
+ricoXMLquery.php/asp/aspx. This can be very useful during development
+but should be turned off in production, as it is a security risk (gives
+users visibility to actual table and column names).
+
+<p>If an error occurs on the server during the processing of the request,
+the server can return error information to the user by enclosing an
+error message in &lt;error&gt;&lt;/error&gt; tags. For example:
+
+<pre class='response'>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;ajax-response&gt;\r
+  &lt;response type='object' id='ex3_updater'&gt;\r
+    &lt;rows update_ui='true' offset='0'&gt;\r
+    &lt;/rows&gt;
+    &lt;rowcount&gt;0&lt;/rowcount&gt;\r
+    &lt;error&gt;Unable to retrieve the data&lt;/error&gt;\r
+  &lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+
+<p>The mere presence of the &lt;error&gt; tag will cause any row data and the rowcount to be ignored.
+Thus, &lt;rows&gt; and &lt;rowcount&gt; can be included or omitted when returning an error.
+The Rico plug-ins will send the database-generated error message when an error occurs.
+
+
+<h2><a name='AjaxSQL'>Rico.Buffer.AjaxSQL</a></h2>
+
+<p>The AjaxSQL buffer extends the capabilities provided by the AjaxXML buffer.
+Many of the concepts are the same, but the AjaxSQL buffer is more complex.
+Query results are returned to the buffer in chunks, rather than returning
+all rows in a single response. Also, an AjaxSQL buffer assumes filtering
+and sorting will occur on the server. So filtering and sorting parameters
+must be sent in each request and the server must process those parameters correctly.
+Fortunately, the Rico plug-ins take care of this complexity for you.
+
+<p>An AjaxSQL buffer is created using the following javascript:
+
+<pre>
+buffer=new Rico.Buffer.AjaxSQL(url,options,ajaxOptions)
+</pre>
+
+Here is an example taken from ex2simple.php:
+<pre>
+buffer=new Rico.Buffer.AjaxSQL(
+  'ricoXMLquery.php', 
+  {TimeOut:&lt;? print array_shift(session_get_cookie_params())/60 ?&gt;});\r
+orderGrid=new Rico.LiveGrid ('ex2', buffer, opts);\r
+</pre>
+
+<dl>
+<dt>url
+<dd>A string containing the url to the data provider.
+<dt><a name='AjaxSQLoptions'>options</a>
+<dd>A Rico buffer options object, which may contain any of the following:
+
+<dl>
+<dt>bufferTimeout
+<dd>An integer that specifies the number of milliseconds a wait message should be presented to the
+user before indicating a timeout. Default is 20000 (20 seconds).
+
+<dt>requestParameters
+<dd>An array of strings of the form "parm=value" that get added to the
+search string of the XMLHttpRequest.
+
+<dt>isEncoded
+<dd>Specifies whether the response will be HTML encoded or not. Default is true.
+All plug-ins supplied with Rico encode the response.
+
+<dt>waitMsg
+<dd>The message that gets displayed to the user while waiting for and XMLHttpRequest response.
+Default is RicoTranslate.getPhraseById("waitForData").
+Note that this can be an image tag, for example: 
+<pre>
+buffer=new Rico.Buffer.AjaxXML(
+  url,
+  {waitMsg: "&lt;img src='MySpinner.gif'&gt;"},
+  ajaxOptions);
+</pre>
+
+<dt>canFilter
+<dd>A boolean value indicating whether the buffer supports filtering. Default is true.
+
+<dt>largeBufferSize
+<dd>Used to set the size of the buffer. Default value is 7. The actual buffer size is set to: 
+(the number of visible grid rows) * largeBufferSize; but no less than 50.
+So a grid with 4 rows visible would get the minimum buffer size of 50, while a grid
+with 30 visible rows would have a buffer size of 210.
+
+<dt>nearLimitFactor
+<dd>Used to determine when the user has scrolled near the end of the buffer,
+triggering a new request for data. Default value is 1. The nearLimit value is set to: 
+(the number of visible grid rows) * nearLimitFactor.
+
+<dt>TimeOut
+<dd>The Rico plug-ins store the SQL query in a 
+<a href='http://www.talkphp.com/general/1077-understanding-life-session.html'>session variable</a>. 
+The server can respond to data requests for only as long as the session is valid. The TimeOut
+option is used to measure the time remaining in the session. If option.TimeOut has been
+specified and there is an html element in the document with an id of "MyGridId_timer", then
+the innerHTML of that element will be populated with the remaining time in the session.
+The TimeOut value is specified in minutes and has no default.
+
+<dt><a name='sortParmFmt'>sortParmFmt</a>
+<dd>If set, then sortParmFmt should be the name of an attribute in the Rico column object.
+Set to "displayName" in order generate requests in a format compatible with Rico 1.1:
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;...&amp;sort_col=Column0&amp;sort_dir=ASC
+</pre>
+Set to "index" in order generate requests in this format:
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;...&amp;sort_col=0&amp;sort_dir=ASC
+</pre>
+When unspecified (the default), then sort parameters are sent in this format 
+('s' followed by the column number). This is what the Rico plug-ins expect.
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;...&amp;s0=ASC
+</pre>
+</dl>
+
+<dt>ajaxOptions
+<dd>An <a href='http://prototypejs.org/api/ajax/options'>Ajax options object</a>
+that is passed to Prototype's Ajax.Request method.
+The "parameters" and "onComplete" options are used by Rico
+and have no effect if specified. The "method" option
+defaults to "get", but can be overridden.
+</dl>
+
+
+
+<h3><a name='AjaxSQLrequests'>AjaxSQL Request</a></h3>
+
+<p>An XMLHttpRequest will be generated every time the AjaxSQL buffer needs more data.
+Data is requested in chunks as specified by the offset and page_size parameters.
+This makes it possible for a LiveGrid to efficiently display hundreds of thousands of records;
+because only a small portion of those records would reside in the client-side buffer
+at any one time.
+The URL will include the following querystring (search) parameters:
+
+<dl>
+<dt>id
+<dd>The id of the grid that was specified as the first parameter in the call to
+Rico.LiveGrid(), "ex2" in the previous example.
+
+<dt>offset
+<dd>The first record in the dataset that should be returned. Always "0" for AjaxXML.
+
+<dt>page_size
+<dd>The number of records that should be returned in the dataset. 
+Always "-1" for AjaxXML, meaning all records should be returned.
+
+<dt>get_total
+<dd>If true, then the response should include a &lt;rowcount&gt; element
+that contains the total number of rows in the dataset (not just
+the chunk being requested), with the specified filters.
+"get_total=true" will be sent during the first request to populate
+a grid and any time the user has changed the filters.
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;...&amp;get_total=true
+</pre>
+
+<dt>sX <span>(where X is the column #)</span>
+<dd>Specifies that results should be sorted by column X.
+Parameter will be ASC or DESC. See also <a href='#sortParmFmt'>options.sortParmFmt</a>.
+Even though this parameter format theoretically allows for sorting on more than
+one column at a time, this is not possible with the current LiveGrid UI.
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;...&amp;s0=ASC
+</pre>
+
+<dt>f[X][op] <span>(where X is the column #)</span>
+<dd>Specifies the filter operator being applied to column X.
+Parameter will be one of the following: EQ (equal), NE (not equal),
+ GE (greater than or equal), LE (less than or equal), LIKE, NULL, NOTNULL
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;...&amp;f[0][op]=EQ
+</pre>
+
+<dt>f[X][len] <span>(where X is the column #)</span>
+<dd>Specifies the number of filter values being supplied.
+This will be 1 for EQ, GE, LE, and LIKE filter operators.
+It will be 0 for NULL and NOTNULL operators. It will be
+1 or more for NE.
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;...&amp;f[0][op]=EQ&amp;f[0][len]=1
+</pre>
+
+<dt>f[X][Y] <span>(where X is the column #)</span>
+<dd>Specifies the filter value(s) for EQ, NE, GE, LE, and LIKE filter operators.
+Y will range from 0 to f[X][len]-1.
+For the LIKE operator, '*' is treated as the wildcard character,
+which gets converted to '%' by the Rico plug-in for most databases.
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;...&amp;f[0][op]=EQ&amp;f[0][len]=1&amp;f[0][0]=Column0Value
+</pre>
+</dl>
+
+<p>Plus, if any options.requestParameters were specified, they would be included also.
+So the complete URL that would be used to fetch data for ex2 would be:
+<pre class='request'>
+ricoXMLquery.php?id=ex2&amp;offset=0&amp;page_size=28
+</pre>
+
+
+<h3>AjaxSQL Response</h3>
+
+<p>The format of the AjaxSQL response is exactly the same as the 
+<a href='#AjaxXMLresponse'>AjaxXML response</a>.
+
+
+<h2><a name='AjaxJSON'>Rico.Buffer.AjaxJSON</a></h2>
+
+<p>The AjaxJSON buffer was created by Jeremy Green and is an extension to the AjaxSQL buffer.
+An AjaxJSON buffer is created using the following javascript:
+
+<pre>
+buffer=new Rico.Buffer.AjaxJSON(jsonUrl,options)
+</pre>
+
+<dl>
+<dt>url
+<dd>A string containing the url to the JSON data provider.
+
+<dt>options
+<dd>A Rico buffer options object. The values available in AjaxJSON are same as those in 
+<a href='#AjaxSQLoptions'>AjaxSQL</a>.
+</dl>
+
+
+<h3>AjaxJSON Request</h3>
+
+<p>The format of AjaxJSON requests are exactly the same as 
+<a href='#AjaxSQLrequests'>AjaxSQL requests</a>.
+
+
+<h3>AjaxJSON Response</h3>
+
+<p>Here is an example of a LiveGrid response in JSON format.\r
+\r
+<pre class='response'>
+{
+"update_ui": true,
+"offset": 0,
+"rows": [
+["10248","VINET","Vins et alcools Chevalier","Reims","France","1996-07-04 00:00:00","1996-07-16 00:00:00"],
+["10249","TOMSP","Toms Spezialitäten","Münster","Germany","1996-07-05 00:00:00","1996-07-10 00:00:00"],
+["10250","HANAR","Hanari Carnes","Rio de Janeiro","Brazil","1996-07-08 00:00:00","1996-07-12 00:00:00"],
+["10251","VICTE","Victuailles en stock","Lyon","France","1996-07-08 00:00:00","1996-07-15 00:00:00"],
+["10252","SUPRD","Suprêmes délices","Charleroi","Belgium","1996-07-09 00:00:00","1996-07-11 00:00:00"],
+["10253","HANAR","Hanari Carnes","Rio de Janeiro","Brazil","1996-07-10 00:00:00","1996-07-16 00:00:00"],
+["10254","CHOPS","Chop-suey Chinese","Bern","Switzerland","1996-07-11 00:00:00","1996-07-23 00:00:00"]
+],
+"rowCount": 830
+}
+</pre>
+\r
+<p>The format closely follows the XML based data consumed by the Rico.Buffer.AjaxSQL buffer 
+and all values should be returned accordingly.\r
+The ‘rows’ value object of the data object is a normal JS Array with each element 
+being a JS hash that represents the row. For the hash the key/value combo should be colName/colValue.\r
+
+
+</body>
+</html>
diff --git a/documentation/LiveGridAjax_ja.html b/documentation/LiveGridAjax_ja.html
new file mode 100644 (file)
index 0000000..2ad1776
--- /dev/null
@@ -0,0 +1,424 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">\r
+<title>Rico LiveGrid AJAX</title>\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">\r
+\r
+<style type="text/css">\r
+.request, .response {\r
+  border: 1px solid black;\r
+  background-color: #FFF8DC;\r
+  padding: 4px;\r
+}\r
+dt span {\r
+  font-weight:normal;\r
+  font-style:italic;\r
+}\r
+</style>\r
+</head>\r
+\r
+<body>\r
+<h1>Rico LiveGrid AJAX</h1>\r
+\r
+<p>Rico LiveGrid の鍵となる特徴の一つは AJAX を通して動的にデータをロードするその能力です。\r
+このドキュメントは、LiveGrid AJAX のリクエストとレスポンスのフォーマットに焦点を合わせます。\r
+より明確には、LiveGrid <strong>バッファ</strong>オブジェクトがリクエストを生成し、レスポンスを処理します。\r
+それで、もし支配外のウェブサービスからデータが来る状況下にいるなら、ウェブサービスと LiveGrid \r
+の間のインタフェースとして用いられるカスタム LiveGrid バッファクラスを作成して下さい。\r
+しかし、このドキュメントでは Rico ディストリビューションに付属するバッファクラスのリクエストと\r
+レスポンスのフォーマットに焦点を合わせます。\r
+\r
+<p>Rico ディストリビューションは 4 つの異なるバッファクラスを含みます。\r
+<dl>\r
+<dt>Rico.Buffer.Base\r
+<dd>AJAX では無い(すなわち XMLHttpRequest の呼び出しの無い)静的なデータセットの利用。\r
+データは HTML テーブル又は javascript 配列からロードされる事が出来ます。\r
+このバッファは AJAX を利用しないので、このドキュメントでこれ以上議論されません。\r
+<dt><a href='#AjaxXML'>Rico.Buffer.AjaxXML</a>\r
+<dd>すべての LiveGrid データは一回の AJAX の呼び出しでロードされ、データは XML フォーマットで返されます\r
+<dt><a href='#AjaxSQL'>Rico.Buffer.AjaxSQL</a>\r
+<dd>LiveGrid のデータは、ユーザがグリッドを通してスクロールすることにより、塊でロードされます\r
+<dt><a href='#AjaxJSON'>Rico.Buffer.AjaxJSON</a>\r
+<dd>レスポンスが JSON フォーマットである事を除いては AjaxSQL と同じです\r
+</dl>\r
+\r
+<h2><a name='AjaxXML'>Rico.Buffer.AjaxXML</a></h2>\r
+\r
+<p>AjaxXML バッファは、LiveGrid でユーザが行うスクロールの量を考慮しないで、\r
+一回の XMLHttpRequest の実行だけを行います。\r
+AjaxXML バッファは以下の javascript を利用して生成されます。\r
+\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxXML(url,options,ajaxOptions)\r
+</pre>\r
+\r
+<dl>\r
+<dt>url\r
+<dd>データプロバイダへの url を含んでいる文字列。\r
+<dt>options\r
+<dd>以下のどれかを含む Rico バッファオプションオブジェクト。\r
+\r
+<dl>\r
+<dt>bufferTimeout\r
+<dd>タイムアウトを示す前に待ちメッセージをユーザに表示すべきミリ秒の数を指定する整数\r
+デフォルトは 20000 (20 秒)。\r
+\r
+<dt>requestParameters\r
+<dd>XMLHttpRequest の検索文字列に加えられる "parm=value" の形の文字列の配列。\r
+\r
+<dt>isEncoded\r
+<dd>レスポンスが HTML エンコードされるかどうかを指定します。デフォルトは true です。\r
+Rico と共に提供されるすべてのプラグインは、レスポンスをエンコードします。\r
+\r
+<dt>waitMsg\r
+<dd>XMLHttpRequest レスポンスを待つ間ユーザに表示されるメッセージ。\r
+デフォルトは RicoTranslate.getPhraseById("waitForData")。\r
+これがイメージタグである事が出来る点に注意して下さい、例えば。\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxXML(\r
+  url,\r
+  {waitMsg: "&lt;img src='MySpinner.gif'&gt;"},\r
+  ajaxOptions);\r
+</pre>\r
+\r
+<dt>canFilter\r
+<dd>バッファがフィルタリングをサポートするかどうかを示す真偽値。デフォルトは true です。\r
+</dl>\r
+\r
+<dt>ajaxOptions\r
+<dd>Prototype の Ajax.Request メソッドに渡す \r
+<a href='http://prototypejs.org/api/ajax/options'>Ajax オプションオブジェクト</a>。\r
+"parameters" と "onComplete" オプションが指定されるならば、Rico によって利用され、\r
+エフェクトを持ちません。\r
+"method" オプションはデフォルトで "get" ですが、オーバーライドされる事が出来ます。\r
+</dl>\r
+\r
+ここに ex3livegridxml.php から取った実例があります。\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxXML('ricoXMLquery.php');\r
+ex3=new Rico.LiveGrid ('ex3', buffer, grid_options);\r
+</pre>\r
+\r
+<h3>AjaxXML リクエスト</h3>\r
+\r
+<p>grid_options.prefetchBuffer が true (それはデフォルトです)なら、グリッドの初期化の間に、\r
+ricoXMLquery.php からデータをフェッチする、一つの XMLHttpRequest が生成されます。\r
+この URL は、以下のクエリーストリング(検索)パラメータを含みます。\r
+\r
+<dl>\r
+<dt>id\r
+<dd>以前の実例 "ex3" の Rico.LiveGrid() の呼び出しで、\r
+最初のパラメータとして指定されたグリッドの id。\r
+<dt>offset\r
+<dd>返さなければならないデータセットの最初のレコード。 AjaxXML では常に "0" です。\r
+<dt>page_size\r
+<dd>データセットで返されなければならないレコードの数。\r
+AjaxXML では常に "-1" で、すべてのレコードが返されなければならない事を意味します。\r
+</dl>\r
+\r
+<p>加えて、options.requestParameters が指定されるならば、それらもまた含まれる事になります。\r
+そして、ex3 のためのデータのフェッチに利用される完全な URL は、次の通りです。\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex3&amp;offset=0&amp;page_size=-1\r
+</pre>\r
+\r
+<h3><a name='AjaxXMLresponse'>AjaxXML レスポンス</a></h3>\r
+\r
+<p>ここに ex3 の LiveGrid を実装するサンプルのレスポンスがあります。\r
+\r
+<pre class='response'>\r
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;\r
+&lt;ajax-response&gt;\r
+  &lt;response type='object' id='ex3_updater'&gt;\r
+    &lt;rows update_ui='true' offset='0'&gt;\r
+    &lt;tr&gt;&lt;td&gt;Data for row 1, cell 1&lt;/td&gt;&lt;td&gt;Data for row 1, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+    &lt;tr&gt;&lt;td&gt;Data for row 2, cell 1&lt;/td&gt;&lt;td&gt;Data for row 2, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+    &lt;/rows&gt;\r
+    &lt;rowcount&gt;2&lt;/rowcount&gt;\r
+    &lt;debug&gt;Generated by test server&lt;/debug&gt;\r
+  &lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+\r
+<p>リクエストハンドラでレスポンスを作成する時に、レスポンスヘッダの content-type に \r
+text/xml を設定しなければなりません。\r
+xml バージョンと<a href='http://www.opentag.com/xfaq_enc.htm'>文字エンコーディング</a>も指定する必要があります。\r
+エンコーディングの値は非常に重要で、環境に依存します。\r
+二つの一般的な値は "UTF-8" と "iso-8859-1" です。\r
+Java Server Pages (JSP) で、最初の 2、3 行がどのように見えるかは、ここにあります。\r
+<pre>\r
+&lt;% response.setHeader(“Content-Type”, “text/xml”); %&gt;\r
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;\r
+</pre>\r
+\r
+そして、これは PHP ではそれらがどのように見えるかです。\r
+<pre>\r
+header("Content-type: text/xml");\r
+echo "&lt;?xml version='1.0' encoding='UTF-8'?"."&gt;\n";\r
+</pre>\r
+\r
+<p>Ajax レスポンスについての、いくつかの重要なアイテムに注意して下さい。\r
+\r
+<p>最初に、レスポンスは &lt;ajax-response&gt;&lt;/ajax-response&gt; タグで囲まれます。\r
+すべての Rico Ajax レスポンスは、返す XML の root に、この要素を持たなければなりません。\r
+第二に、レスポンスは ajax-response の範囲内に含まれる事に注意して下さい。\r
+レスポンスタグ(&lt;response&gt;&lt;/response&gt;)はレスポンスの内容を囲みます。\r
+&lt;response&gt; タグの type と id 属性は、Rico 1.1 では必要とされていましたが、Rico 2.0 では無視されます。\r
+最後に、&lt;rowcount&gt; 要素に注意して下さい。\r
+これはデータセットの総行数を指定します。\r
+AjaxXML レスポンスにおいて、これは &lt;tr&gt; 要素の数と一致するはずです。\r
+\r
+<p>デバッグタグ(&lt;debug&gt;&lt;/debug&gt;)は任意です。\r
+レスポンスはそれらを 0、1、またはそれ以上含むかもしれません。\r
+それぞれのデバッグタグの内容は、Rico の<a href='LiveGrid.html#debug'>メッセージログ機能</a>へ送られます。\r
+Rico プラグインは、ricoXMLquery.php/asp/aspx で ricoXmlResponse.sendDebugMsgs を true に設定することにより、\r
+実行された実際の SQL クエリを返す事が出来ます。\r
+これは、開発の間はとても役に立ちますが、セキュリティーリスク(ユーザに実際のテーブルと列の名前を見せる)\r
+となるので、製品においては削除しなければなりません。\r
+\r
+<p>リクエストの進行中にサーバでエラーが発生するなら、サーバはエラーメッセージを &lt;error&gt;&lt;/error&gt; \r
+タグで囲んでユーザにエラー情報を返す事が出来ます。\r
+例えば。\r
+\r
+<pre class='response'>\r
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;\r
+&lt;ajax-response&gt;\r
+  &lt;response type='object' id='ex3_updater'&gt;\r
+    &lt;rows update_ui='true' offset='0'&gt;\r
+    &lt;/rows&gt;\r
+    &lt;rowcount&gt;0&lt;/rowcount&gt;\r
+    &lt;error&gt;Unable to retrieve the data&lt;/error&gt;\r
+  &lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+\r
+<p>&lt;error&gt; タグが存在すると、いかなる行データや rowcount も無視されます。\r
+このように、エラーを返す時には &lt;rows&gt; と &lt;rowcount&gt; は含まれる事や省略される事が出来ます。\r
+エラーが発生する時、Rico プラグインはデータベース生成エラーを送ります。\r
+\r
+<h2><a name='AjaxSQL'>Rico.Buffer.AjaxSQL</a></h2>\r
+\r
+<p>AjaxSQL バッファは、AjaxXML バッファにより提供される能力を拡張します。\r
+コンセプトの多くは同じですが、AjaxSQL バッファはより複雑です。\r
+クエリ結果は、一回のレスポンスですべての行を返すのでは無く、塊でバッファに返されます。\r
+また、AjaxSQL バッファはサーバ上でフィルタとソートが発生すると考えられます。\r
+そして、フィルタとソートのパラメータはそれぞれのリクエストに送られなくてはならず、\r
+サーバはそれらのパラメータを正しく処理しなければなりません。\r
+幸いにも、Rico プラグインは、あなたのためにこの複雑さを解決します。\r
+\r
+<p>AjaxSQL バッファは以下の javascript を利用して作成されます。\r
+\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxSQL(url,options,ajaxOptions)\r
+</pre>\r
+\r
+ここに ex2simple.php から取った実例があります。\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxSQL(\r
+  'ricoXMLquery.php', \r
+  {TimeOut:&lt;? print array_shift(session_get_cookie_params())/60 ?&gt;});\r
+orderGrid=new Rico.LiveGrid ('ex2', buffer, opts);\r
+</pre>\r
+\r
+<dl>\r
+<dt>url\r
+<dd>データプロバイダへの url を含んでいる文字列。\r
+<dt><a name='AjaxSQLoptions'>options</a>\r
+<dd>以下のどれかを含む Rico バッファオプションオブジェクト。\r
+\r
+<dl>\r
+<dt>bufferTimeout\r
+<dd>タイムアウトを示す前に待ちメッセージをユーザに表示すべきミリ秒の数を指定する整数。\r
+デフォルトは 20000 (20 秒)。\r
+\r
+<dt>requestParameters\r
+<dd>XMLHttpRequest の検索文字列に加えられる "parm=value" の形の文字列の配列。\r
+\r
+<dt>isEncoded\r
+<dd>レスポンスが HTML エンコードされるかどうかを指定します。デフォルトは true です。\r
+Rico と共に提供されるすべてのプラグインは、レスポンスをエンコードします。\r
+\r
+<dt>waitMsg\r
+<dd>XMLHttpRequest レスポンスを待つ間ユーザに表示されるメッセージ。\r
+デフォルトは RicoTranslate.getPhraseById("waitForData")。\r
+これがイメージタグである事が出来る点に注意して下さい、例えば。\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxXML(\r
+  url,\r
+  {waitMsg: "&lt;img src='MySpinner.gif'&gt;"},\r
+  ajaxOptions);\r
+</pre>\r
+\r
+<dt>canFilter\r
+<dd>バッファがフィルタリングをサポートするかどうかを示す真偽値。デフォルトは true です。\r
+\r
+<dt>largeBufferSize\r
+<dd>バッファのサイズを設定するために利用されます。デフォルトは 7 です。\r
+実際のバッファサイズは「(グリッドの表示行数)* largeBufferSize」に設定されますが、少なくとも 50 です。\r
+そして、4 行を表示するグリッドは 50 のサイズの最小のバッファを手にいれますが、\r
+一方 30 行を表示するグリッドは 210 のサイズを持ちます。\r
+\r
+<dt>nearLimitFactor\r
+<dd>ユーザがバッファの最後付近にスクロールした時、データの新しいリクエストのトリガーを決定するのに利用されます。\r
+デフォルトは 1 です。\r
+nearLimit の値は「(グリッドの表示行数)* nearLimitFactor」に設定されます。\r
+\r
+<dt>TimeOut\r
+<dd>Rico プラグインは SQL クエリを\r
+<a href='http://www.talkphp.com/general/1077-understanding-life-session.html'>セッション変数</a>に保管します。\r
+サーバはセッションが有効な間だけはデータのリクエストに返答する事が出来ます。\r
+TimeOut オプションはセッションが存続する時間を測るために利用されます。\r
+option.TimeOut が指定され、document に id が "MyGridId_timer" の html 要素があるなら、\r
+その要素の innerHTML はセッションが存続する時間で実装されます。\r
+TimeOut の値は分で指定され、デフォルトを持ちません。\r
+\r
+<dt><a name='sortParmFmt'>sortParmFmt</a>\r
+<dd>セットされるならば、sortParmFmt は Rico 列オブジェクトの属性の名前でなければなりません。\r
+Rico 1.1 互換のフォーマットでリクエストを生成するために、"displayName" を設定して下さい。\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;...&amp;sort_col=Column0&amp;sort_dir=ASC\r
+</pre>\r
+リクエストをこのフォーマットで生成するために、"index" を設定して下さい。\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;...&amp;sort_col=0&amp;sort_dir=ASC\r
+</pre>\r
+指定しない(デフォルト)時、ソートパラメータは、このフォーマットで送信されます('s' に続く列番号)。\r
+これは、Rico プラグインが期待するものです。\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;...&amp;s0=ASC\r
+</pre>\r
+</dl>\r
+\r
+<dt>ajaxOptions\r
+<dd>Prototype の Ajax.Request メソッドへ渡される <a href='http://prototypejs.org/api/ajax/options'>Ajax オプションオブジェクト</a>。\r
+"parameters" と "onComplete" オプションは Rico によって利用され、指定されたとしても効果がありません。\r
+"method" オプションのデフォルトは "get" ですが、オーバーライドされる事が出来ます。\r
+</dl>\r
+\r
+\r
+\r
+<h3><a name='AjaxSQLrequests'>AjaxSQL リクエスト</a></h3>\r
+\r
+<p>AjaxSQL バッファがより多くのデータを必要とするたびに XMLHttpRequest は生成されます。\r
+offset と page_size パラメータによって指定されるように、データは塊でリクエストされます。\r
+これは、LiveGrid が効率的に何十万ものレコードを表示する事を可能にします。\r
+なぜなら、どんな時でもクライアントサイドバッファに、それらのレコードの小さな部分だけが記録されているからです。\r
+この URL は以下のクエリーストリング(検索)パラメータを含みます。\r
+\r
+<dl>\r
+<dt>id\r
+<dd>以前の実例 "ex2" の Rico.LiveGrid() の呼び出しで、最初のパラメータとして指定されたグリッドの id。\r
+\r
+<dt>offset\r
+<dd>返さなければならないデータセットの最初のレコード。 AjaxXML では常に "0" です。\r
+\r
+<dt>page_size\r
+<dd>データセットで返されなければならないレコードの数。\r
+AjaxXML では常に "-1" で、すべてのレコードが返されなければならない事を意味します。\r
+\r
+<dt>get_total\r
+<dd>true なら、そのレスポンスは、指定されたフィルタと共に(リクエストされた塊だけで無く)\r
+データセットの総行数を含む &lt;rowcount&gt; 要素を含むはずです。\r
+"get_total=true" は、どんな時にユーザがフィルタを変更しても、\r
+グリッドを実装するための最初のリクエストの間に送られます。\r
+\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;...&amp;get_total=true\r
+</pre>\r
+\r
+<dt>sX <span>( X は列の数です)</span>\r
+<dd>列 X によってソートされるべき結果を指定します。\r
+パラメータは ASC または DESC です。\r
+<a href='#sortParmFmt'>options.sortParmFmt</a> も見て下さい。\r
+たとえ、このパラメータのフォーマットが一度に複数列をソートする事を理論的に許すとしても、\r
+それは現在の LiveGrid UI では不可能です。\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;...&amp;s0=ASC\r
+</pre>\r
+\r
+<dt>f[X][op] <span>( X は列の数です)</span>\r
+<dd>列 X に適応されているフィルタオペレータを指定します。\r
+パラメータは以下の内の一つです。EQ(等しい)、NE(等しく無い)、GE(以上)、LE(以下)、LIKE、NULL、NOTNULL\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;...&amp;f[0][op]=EQ\r
+</pre>\r
+\r
+<dt>f[X][len] <span>( X は列の数です)</span>\r
+<dd>供給されているフィルタの値の数を指定します。\r
+これは EQ、GE、LE、そして LIKE フィルタオペレータでは 1 です。\r
+これは NULL そして NOTNULL オペレータでは 0 です。\r
+これは NE では 1 またはそれ以上です。\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;...&amp;f[0][op]=EQ&amp;f[0][len]=1\r
+</pre>\r
+\r
+<dt>f[X][Y] <span>( X は列の数です)</span>\r
+<dd>EQ、NE、GE、LE、そして LIKE フィルタオペレータのフィルタの(複数の)値を指定します。\r
+Y は 0 から f[X][len]-1 の範囲です。\r
+LIKE オペレータでの '*' は ワイルドカードとして扱われ、\r
+それは Rico プラグインによって多くのデータベースのために '%' に変換されます。\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;...&amp;f[0][op]=EQ&amp;f[0][len]=1&amp;f[0][0]=Column0Value\r
+</pre>\r
+</dl>\r
+\r
+<p>加えて、options.requestParameters が指定されるならば、それらもまた含まれる事になります。\r
+そして、ex2 のためのデータのフェッチに利用される完全な URL は、次の通りでしょう。\r
+<pre class='request'>\r
+ricoXMLquery.php?id=ex2&amp;offset=0&amp;page_size=28\r
+</pre>\r
+\r
+\r
+<h3>AjaxSQL レスポンス</h3>\r
+\r
+<p>AjaxSQL レスポンスのフォーマットは、<a href='#AjaxXMLresponse'>AjaxXML レスポンス</a>と全く同じです。\r
+\r
+<h2><a name='AjaxJSON'>Rico.Buffer.AjaxJSON</a></h2>\r
+\r
+<p>AjaxJSON バッファは Jeremy Green により作成された AjaxSQL バッファの拡張です。\r
+AjaxJSON バッファは、以下の javascript を利用して作成されます。\r
+\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxJSON(jsonUrl,options)\r
+</pre>\r
+\r
+<dl>\r
+<dt>url\r
+<dd>JSON データプロバイダへの url を含んでいる文字列。\r
+\r
+<dt>options\r
+<dd>Rico バッファオプションオブジェクト。\r
+AjaxJSON で利用出来る値は <a href='#AjaxSQLoptions'>AjaxSQL</a> のそれらと同じです。\r
+</dl>\r
+\r
+\r
+<h3>AjaxJSON リクエスト</h3>\r
+\r
+<p>AjaxJSON リクエストのフォーマットは、<a href='#AjaxSQLrequests'>AjaxSQL リクエスト</a>と全く同じです。\r
+\r
+\r
+<h3>AjaxJSON レスポンス</h3>\r
+\r
+<p>ここに JSON フォーマットによる LiveGrid レスポンスの実例があります。\r
+\r
+<pre class='response'>\r
+{\r
+  "update_ui":"true",\r
+  "offset":"0",\r
+  "rowCount":"20",\r
+  "rows":[\r
+            {"id":"1","name":"Bob"},\r
+            {"id":"2","name":"Bill"}\r
+         ]\r
+}\r
+</pre>\r
+\r
+<p>そのフォーマットは Rico.Buffer.AjaxSQL バッファによって消費される XML に基づくデータに密接に従い、\r
+そしてそれによってすべての値は返されるべきです。\r
+データオブジェクトの 'rows' の値オブジェクトは、行を表す JS ハッシュであるそれぞれの要素による通常の JS 配列です。\r
+ハッシュの key/value の組み合わせは colName/colValue であるべきです。\r
+\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/LiveGridForms.html b/documentation/LiveGridForms.html
new file mode 100644 (file)
index 0000000..f1f0762
--- /dev/null
@@ -0,0 +1,474 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Rico LiveGrid Forms</title>\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>\r
+\r
+<body>\r
+<h1>Using Rico LiveGrid Forms</h1>\r
+\r
+<p><a href='LiveGridForms_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>\r
+<a href='LiveGridForms_ja.html'>View this page in Japanese</a></p>\r
+\r
+<h2>OVERVIEW</h2>\r
+\r
+<p>While this document just refers to ASP, identical functionality is provided\r
+by the PHP and .net plugins.\r
+\r
+<ol>\r
+<li>create a new ASP file that includes ricoLiveGridForms.vbs\r
+\r
+<li>in the new ASP, define each of the fields in the table to be edited - usually 1-3 lines of code per field\r
+\r
+<li>the resulting ASP not only creates the appropriate grid, but also generates an input form in a hidden div\r
+\r
+<li>the ASP also adds "add/edit/delete record" entries to the popup menu\r
+\r
+<li>when add or edit is chosen, the form is unhidden (and filled in if edit was chosen)\r
+\r
+<li>when the user hits the save button, the form silently posts back to the original ASP\r
+\r
+<li>the ASP saves the data to the database and sends a response back to the client\r
+\r
+<li>the client displays a success or failure message in the bookmark area\r
+</ol>\r
+\r
+<p>The following two diagrams shows how requests and responses flow with LiveGrid Forms pages,\r
+and with LiveGrid pages without forms.\r
+While the two diagrams are labelled ASP/PHP, they also apply to .net (except that there is no dbClass2 in .net).\r
+<p><img src='images/asp-php-structure1.jpg'>\r
+<p><img src='images/asp-php-structure2.jpg'>\r
+\r
+\r
+<h2>USAGE</h2>\r
+\r
+<p>This class provides all of the functions necessary to view, insert, update, and delete\r
+records on a single table. An ASP script should follow these steps:\r
+\r
+<ol>\r
+<li>Create a single instance of the class\r
+<pre>set oForm=new TableEditClass</pre>\r
+\r
+<li>call the SetTableName method\r
+<pre>oForm.SetTableName "customer"</pre>\r
+\r
+<li>optionally set the CanAdd, CanEdit, CanDelete, ConfirmDelete, and/or RecordName properties if desired\r
+<pre>\r
+oForm.options("canAdd")=CanAdd\r
+oForm.options("canEdit")=CanModify\r
+oForm.options("canDelete")=CanDelete\r
+</pre>\r
+<li>if TableName is a view or has no primary key defined, editing will be disabled\r
+<li>call AddEntryField or AddCalculatedField for each field/column to be displayed\r
+      Fields appear in both the table and form views, with the following exceptions:\r
+<ul>\r
+<li>entry type is H never gets sent to the client. Writes to the database get the defined default value.\r
+<li>if FormView field property is set to "exclude", then the field appears in the table only.\r
+<li>if FormView field property is set to "hidden", then the data is put in a hidden form field.\r
+<li>Calculated fields appear in the table view only (same as FormView=exclude)\r
+</ul>\r
+\r
+<li>After each call to AddEntryField or AddCalculatedField, the other methods and properties\r
+      can be invoked to control how the field is presented to the user (e.g. SortAsc).\r
+      Calls to these properties/methods apply only to the field most recently added.\r
+<li>call DisplayPage - this displays the grid or executes the database update\r
+<pre>oForm.DisplayPage</pre>\r
+</ol>\r
+\r
+\r
+<h2>TABBED FORMS</h2>\r
+\r
+<p>Forms with multiple panels/tabs are fully supported using the Rico.TabbedPanel class.\r
+ Simply call AddPanel before calling AddEntryField to define the fields for that panel.\r
+ For example:\r
+<pre>\r
+' these fields appear on the first panel\r
+oForm.AddPanel "Panel #1"\r
+oForm.AddEntryField "field1", "Field #1", "T", ""\r
+oForm.AddEntryField "field2", "Field #2", "T", ""\r
+oForm.AddEntryField "field3", "Field #3", "T", ""\r
+\r
+' these fields appear on the second panel\r
+oForm.AddPanel "Panel #2"\r
+oForm.AddEntryField "field4", "Field #4", "T", ""\r
+oForm.AddEntryField "field5", "Field #5", "T", ""\r
+oForm.AddEntryField "field6", "Field #6", "T", ""\r
+</pre>\r
+\r
+<p>Alternatively, the panelIdx property can be set for each field as it is defined. In this\r
+case, AddPanel can be called at any time prior to DisplayPage.\r
+<pre>\r
+' these fields appear on the first panel\r
+oForm.AddEntryField "field1", "Field #1", "T", ""\r
+oForm.CurrentField("panelIdx")=0\r
+oForm.AddEntryField "field2", "Field #2", "T", ""\r
+oForm.CurrentField("panelIdx")=0\r
+oForm.AddEntryField "field3", "Field #3", "T", ""\r
+oForm.CurrentField("panelIdx")=0\r
+\r
+' these fields appear on the second panel\r
+oForm.AddEntryField "field4", "Field #4", "T", ""\r
+oForm.CurrentField("panelIdx")=1\r
+oForm.AddEntryField "field5", "Field #5", "T", ""\r
+oForm.CurrentField("panelIdx")=1\r
+oForm.AddEntryField "field6", "Field #6", "T", ""\r
+oForm.CurrentField("panelIdx")=1\r
+\r
+oForm.AddPanel "Panel #1"\r
+oForm.AddPanel "Panel #2"\r
+</pre>\r
+\r
+\r
+<h2>FORM METHODS</h2>\r
+<dl>\r
+  <dt>AddPanel "Panel Heading"\r
+  <dd>Defines the heading for a tabbed panel on the input form.\r
+\r
+  <dt>DisplayPage\r
+  <dd>Displays the grid or updates the database depending on the value of "action".\r
+\r
+  <dt><a name='DefineAltTable'></a>DefineAltTable (TableName, FieldList, FieldData, Delim)\r
+  <dd>Function that returns a TabId to be used in subsequent <a href='#AltTable'>AltTable</a> calls.\r
+  Defines a secondary table to store additional, related fields.\r
+  Key field(s) in main table must also exist in AltTable.\r
+  FieldList & FieldData are delimited strings that define\r
+  additional, constant values/functions to be stored in the secondary table.\r
+  Delim specifies the delimiter character used in FieldList & FieldData.\r
+  FieldList & FieldData must contain the same number of delimited entries.\r
+\r
+  <dt>genXHTML\r
+  <dd>Call to generate pure XHTML output.\r
+\r
+  <dt>SetDbConn (dbcls)\r
+  <dd>Specifies the instance of dbClass to be used.\r
+  If a global instance named oDB exists, then it will be used without this method having to be called.\r
+</dl>\r
+\r
+\r
+<h2>FORM PROPERTIES</h2>\r
+\r
+<p>All <a href="LiveGrid.html#options">LiveGrid</a> options are supported as properties, in addition to these which are specific to LiveGrid Forms.\r
+\r
+<dl>\r
+\r
+<dt>action (read only)\r
+<dd>specifies the current action being performed: table, ins, upd, del\r
+\r
+<dt>gridVar (read only)\r
+<dd>returns the name of the client-side LiveGrid object\r
+\r
+<dt>bufferVar (read only)\r
+<dd>returns the name of the client-side LiveGrid Buffer object\r
+\r
+<dt>AutoInit\r
+<dd>automatically initialize the grid (create the data rows)\r
+    default is true\r
+\r
+<dt>InitScript (read only)\r
+<dd>returns the javascript code (as a string) to initialize the grid (use when AutoInit is false)\r
+\r
+<dt>TableFilter\r
+<dd>specifies a where clause to be used in table view (optional)\r
+<pre>\r
+// only show records for the logged in user\r
+$oForm->TableFilter = "userid=$myuserid";\r
+</pre>\r
+\r
+<dt>canAdd\r
+<dd>allow user to add new records, defaults to true\r
+<dt>canEdit\r
+<dd>allow user to edit records, defaults to true\r
+<dt>canDelete\r
+<dd>allow user to delete records, defaults to true\r
+<dt>canClone\r
+<dd>allow user to clone records (edit existing record but save as new), defaults to false\r
+\r
+<dt>formView\r
+<dd>Extend the grid with LiveGrid Forms -- data entry form is created, add/edit/delete items are\r
+added to the grid menu, etc. Default is true in ASP and PHP, false in .net.\r
+\r
+<dt>updateURL\r
+<dd>post updates back to this location, defaults to the page that generated the grid\r
+\r
+<dt>ConfirmDelete\r
+<dd>flag specifying whether a confirmation popup should be displayed\r
+    after the user clicks the delete button, defaults to true\r
+    (see also <a href='#ConfirmDeleteCol'>ConfirmDeleteCol</a>)\r
+\r
+<dt>DebugFlag\r
+<dd>displaying debugging messages, defaults to false\r
+\r
+<dt>RecordName\r
+<dd>string to customize add, edit, and delete title tags,\r
+    defaults to "Record"\r
+\r
+<dt>maxDisplayLen\r
+<dd>Text box width. default is 20.\r
+\r
+<dt>TableName (write only)\r
+<dd>the table or view to be displayed/edited (required)\r
+\r
+<dt>TableSelectNew\r
+<dd>String used to identify when a user has selected to create a new value\r
+for an EntryType N field. Default is "___new___".\r
+\r
+<dt>showSaveMsg\r
+<dd>Disposition of database update responses:\r
+<ul>\r
+<li>full - show full response\r
+<li>errors - show full response for errors and short response otherwise (default)\r
+</ul>\r
+</dd>\r
+\r
+<dt style='color:navy;'><em>When using tabbed panels on the input form:</em>\r
+\r
+<dt>panelWidth\r
+<dd>Width of tabbed panels in pixels. Default is 500.\r
+\r
+<dt>panelHeight\r
+<dd>Height of tabbed panels in pixels. Default is 200.\r
+\r
+<dt>hoverClass\r
+<dd>CSS class when hovering over panel tab. Default is "tabHover".\r
+\r
+<dt>selectedClass\r
+<dd>CSS class when panel tab is selected. Default is "tabSelected".\r
+\r
+</dl>\r
+\r
+\r
+<h2>FORM EVENTS</h2>\r
+\r
+<p>It is possible to hook into several form events.\r
+\r
+<dl>\r
+<dt>formOpen\r
+<dd>Fires when the input form is displayed.\r
+<pre>\r
+oForm.options("formOpen")=\r
+  "alert('Questions? Please call the support desk.');"\r
+</pre>\r
+\r
+<dt>formClose\r
+<dd>Fires right after the input form is closed.\r
+\r
+<dt>onSubmitResponse\r
+<dd>Fires after a form has been sent to the server and a response has been received and processed.\r
+\r
+</dl>\r
+\r
+\r
+<h2>FIELD DEFINITION-METHODS</h2>\r
+<dl>\r
+<dt>AddEntryField (ColumnName, Heading, EntryTypeCode, DefaultValue)\r
+<dd>Adds a new column to the grid and a new entry field to the popup form in ASP and PHP.\r
+  <dl>\r
+\r
+  <dt>ColumnName\r
+  <dd>column name in the database table (does not support blanks or any name that would require square brackets in SQL, e.g.  [Apr 2005])\r
+\r
+  <dt>Heading\r
+  <dd>name that appears on the grid column's heading and also on the popup form\r
+\r
+  <dt>EntryTypeCode\r
+  <dd>string containing a code that controls how the column is displayed on the input form\r
+\r
+    <ul>\r
+    <li><strong>S</strong>:\r
+    Display this column as a drop-down select list during data entry.\r
+    Values may be specified using the "SelectValues" or "SelectSql" options.\r
+    If neither is specified, then the values for the column are obtained using \r
+    a "select distinct" query.\r
+    <li><strong>R</strong>: Same as "S", except the items are displayed using radio buttons.\r
+    <li><strong>SL,RL</strong>: \r
+    Same as S & R, except that a lookup value is displayed in table view \r
+    (uses query specified by SelectSql).\r
+    Typically used on columns that are foreign keys. SQL to get the display value \r
+    is specified using the "SelectSql" option.\r
+    <li><strong>CL</strong>:  Same as "SL", except that the value is selected \r
+    using a custom control (such as the Rico Tree control).\r
+    The SelectCtl option must be assigned the id of the custom control.\r
+    <li><strong>N</strong>:\r
+    Same as "S", but allows the user to create a new value.\r
+    Typically used <em>without</em> the "SelectValues" or "SelectSql" options.\r
+    <li><strong>H</strong>:   column is hidden from the user (DefaultValue will be stored in the table on adds and edits)\r
+    <li><strong>D</strong>:   this is a date field (blanks allowed if column allows nulls)\r
+    <li><strong>DT</strong>:  same as D, except that it also includes the time\r
+    <li><strong>I</strong>:   integer number (blanks allowed if column allows nulls and required is false)\r
+    <li><strong>F</strong>:   floating-point number (blanks allowed if column allows nulls and required is false)\r
+    <li><strong>B</strong>:   non-blank text field (user gets a popup message in form view when clicking save and the field is empty)\r
+    <li><strong>T</strong>:   standard text field (blanks allowed)\r
+    <li><strong>TA</strong>:  text area field\r
+    <li><strong>tinyMCE</strong>:  rich text edit field using the \r
+    <a href="http://tinymce.moxiecode.com/">tinyMCE</a> library.\r
+    </ul>\r
+\r
+  <dt>DefaultValue\r
+  <dd>column's default value in the form view\r
+  </dl>\r
+\r
+  <p>The equivalent to AddEntryField() in .net is to declare column fields as part of the markup.\r
+  The "ColData" attribute contains the default value.\r
+  Here is an example from ex2edit.aspx:\r
+<pre>\r
+&lt;Rico:Column runat='server' heading='Order#' width='60' \r
+             ColName='OrderID' EntryType='B' ColData='&lt;auto&gt;' /&gt;\r
+</pre>\r
+\r
+<dt>AddEntryFieldW (ColumnName, Heading, EntryTypeCode, DefaultValue, ColWidth)\r
+<dd>Same as AddEntryField except an extra parameter is added for column width (in pixels).\r
+\r
+<dt>AddCalculatedField (ColumnFormula, Heading)\r
+<dd>ColumnFormula is any valid SQL expression or subquery.\r
+    If the subquery needs to reference a column in the table being displayed,\r
+    then the column name should be prefaced with the alias "t."\r
+    Calculated fields will be displayed in table view, but not in form view.\r
+\r
+<dt>AddFilterField (ColumnName, FilterValue)\r
+<dd>Only display records where the contents of ColumnName=FilterValue.\r
+    This becomes a hidden field (entry type H).\r
+\r
+<dt><a name='ConfirmDeleteCol'></a>ConfirmDeleteCol  (ConfirmDeleteColumn in .net plug-in)\r
+<dd>The text content of the column will be included in delete confirmation messages\r
+\r
+<dt>SortAsc\r
+<dd>In table view, sort by this column in ascending order (applies to most recently added field)\r
+\r
+<dt>SortDesc\r
+<dd>In table view, sort by this column in descending order (applies to most recently added field)\r
+\r
+</dl>\r
+\r
+\r
+<h2>FIELD DEFINITION-PROPERTIES</h2>\r
+\r
+<p>All <a href="LiveGrid.html#column">LiveGrid</a> column properties are supported, in addition to these which are specific to LiveGrid Forms.\r
+\r
+<dl>\r
+\r
+<dt>AddQuotes\r
+<dd>When false, the column value will be left unquoted when inserting or updating \r
+    the database (default=true). This makes it possible to populate columns with \r
+    SQL function calls. For example:\r
+<pre>\r
+oForm.AddEntryField "LastEditUser","","H","suser_sname()"\r
+oForm.CurrentField("AddQuotes")=false\r
+oForm.AddEntryField "LastEditDate","","H","getdate()"\r
+oForm.CurrentField("AddQuotes")=false\r
+</pre>\r
+\r
+<dt>required\r
+<dd>Boolean value that specifies whether the input field may be left empty \r
+(default: false if column allows nulls and EntryType is not "B", true otherwise).\r
+  \r
+<dt>noFormBreak\r
+<dd>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 place on a separate row).\r
+  \r
+<dt><a name='AltTable'></a>AltTable (TabId)\r
+<dd>Specifies that the field should be stored in an alternate table\r
+    TabId should be the value returned by a previous call to <a href='#DefineAltTable'>DefineAltTable</a>\r
+\r
+<dt>TxtAreaRows\r
+<dd>For columns with entry type "TA", this is # of rows to display in the \r
+    textarea when in form view (default 4)\r
+\r
+<dt>TxtAreaCols\r
+<dd>For columns with entry type "TA", this is # of columns to display in the \r
+    textarea when in form view (default 80)\r
+\r
+<dt>FilterFlag\r
+<dd>If true, then the grid is filtered by the default value for this column (default=false)\r
+\r
+<dt>Help\r
+<dd>Creates a title tag containing the specified text (form view only). So if the user\r
+hovers over the field label, they will see this text as balloon help. For example:\r
+<pre>\r
+oForm.CurrentField("Help")="Date must be entered in mm/dd/yyyy format"\r
+</pre>\r
+\r
+<dt>pattern\r
+<dd>A string containing a regular expression. User entries will be checked to ensure\r
+they match the pattern specified. There are a few special values:\r
+<ul>\r
+<li>"email" - tests for a valid email address\r
+<li>"float-unsigned" - tests for a valid unsigned floating point (real) number\r
+<li>"float-signed" - tests for a valid signed floating point (real) number (this is the default when EntryType is "F")\r
+<li>"int-unsigned" - tests for a valid unsigned integer number\r
+<li>"int-signed" - tests for a valid signed integer number (this is the default when EntryType is "I")\r
+</ul>\r
+<br>It is recommended that a Help entry be included\r
+whenever a pattern is specified. If the field fails validation, the help text\r
+will be included in the error message presented to the user. For example:\r
+<pre>\r
+oForm.CurrentField("Help")="Enter date as mm/dd/yyyy"\r
+oForm.CurrentField("pattern")="^\\d{1,2}/\\d{1,2}/\\d{4}$"\r
+</pre>\r
+\r
+<dt>min/max\r
+<dd>Specifies the minimum/maximum allowable values for fields with EntryType "I", "F", and "D". \r
+For example:\r
+<pre>\r
+oForm.AddEntryField "field1", "Field #1", "I", "0"\r
+oForm.CurrentField("min")=1\r
+oForm.CurrentField("max")=10\r
+oForm.CurrentField("Help")="Enter a value between 1 and 10"\r
+\r
+oForm.AddEntryField "field2", "Field #2", "D", Date()\r
+oForm.CurrentField("min")="2000-01-01"\r
+oForm.CurrentField("max")="2099-12-31"\r
+oForm.CurrentField("Help")="Enter a value in the 21st century!"\r
+</pre>\r
+\r
+<dt>InsertOnly\r
+<dd>Only write this field to the database when peforming an insert (default=false).\r
+<pre>\r
+oForm.AddEntryField "CreateDate","","H","getdate()"\r
+oForm.CurrentField("AddQuotes")=false\r
+oForm.CurrentField("InsertOnly")=true\r
+</pre>\r
+\r
+<dt>UpdateOnly\r
+<dd>Only write this field to the database when peforming an update (default=false).\r
+<pre>\r
+oForm.CurrentField("UpdateOnly")=true\r
+</pre>\r
+\r
+<dt>ReadOnly\r
+<dd>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 objTE.CurrentField("FormView")="hidden" instead.\r
+\r
+<dt>SelectValues\r
+<dd>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. For example:\r
+<pre>\r
+oForm.CurrentField("SelectValues")="Y,N"\r
+</pre>\r
+\r
+<dt>SelectSql\r
+<dd>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 \r
+    and the second being the text value/description. For example:\r
+<pre>\r
+oForm.CurrentField("SelectSql")="select ID,Name from Customers"\r
+</pre>\r
+\r
+<dt>SelectFilter\r
+<dd>SelectSql serves 2 purposes. First, it is used to retrieve the appropriate\r
+    data to display in the grid. Second, it is used to populate the values in\r
+    the select box (SL) or radio buttons (RL) on the pop-up form. In some cases,\r
+    you may want these to be different. In the SelectSql example above, we\r
+    are retrieving customer name. But let's say that our Customers table has\r
+    a "CreditHold" field and we want to disable the selection of customers on\r
+    credit hold in the form view, but still display them in the grid.\r
+    This is where SelectFilter comes in:\r
+<pre>\r
+oForm.CurrentField("SelectFilter")="CreditHold='NO'"\r
+</pre>\r
+\r
+</dl>\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/LiveGridForms_ja.html b/documentation/LiveGridForms_ja.html
new file mode 100644 (file)
index 0000000..95801fc
--- /dev/null
@@ -0,0 +1,449 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">\r
+<title>Rico LiveGrid Forms</title>\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">\r
+</head>\r
+\r
+<body>\r
+<h1>Rico LiveGrid フォームの利用</h1>\r
+\r
+<h2>概要</h2>\r
+\r
+<p>このドキュメントがちょうど ASP に言及すると同時に、同一の機能が PHP と .net プラグインによって提供されます。\r
+\r
+<ol>\r
+<li>ricoLiveGridForms.vbs を含む、新しい ASP ファイルを作成して下さい。\r
+\r
+<li>新しい ASP で、編集されるテーブルのそれぞれのフィールドを定義して下さい - 通常はフィールドごとに 1-3 行。\r
+\r
+<li>結果として ASP は、適当なグリッドを作成するだけで無く、隠された div に入力フォームを生成します。\r
+\r
+<li>その ASP は "レコードの追加/編集/削除" のエントリもポップアップメニューに追加します。\r
+\r
+<li>追加または編集が選択された時、そのフォームは表示されます(編集が選択されれば、項目が満たされます)\r
+\r
+<li>ユーザが保存ボタンをクリックする時、そのフォームは元の ASP に黙ってポストバックします。\r
+\r
+<li>ASP はデータベースにデータを保存し、クライアントにレスポンスを送り返します。\r
+\r
+<li>クライアントは、成功または失敗のメッセージをブックマークエリアに表示します\r
+</ol>\r
+\r
+<p>以下の二つの図解は、LiveGrid フォームページで、そしてフォームの無い LiveGrid ページで、\r
+どのようにリクエストとレスポンスが流れるかについて表示します。\r
+その二つの図解は ASP/PHP とラベルされていますが、.net にも適用されます(.net には dbClass2 が無い事を除いて)。\r
+<p><img src='images/asp-php-structure1.jpg'>\r
+<p><img src='images/asp-php-structure2.jpg'>\r
+\r
+<h2>使い方</h2>\r
+\r
+<p>このクラスは、一つのテーブルのレコードの表示、挿入、更新そして削除をするのに、\r
+必要なすべての機能を提供します。ASP スクリプトは、次の手順に従わなければなりません。\r
+\r
+\r
+<ol>\r
+<li>クラスのインスタンスを一つ作成して下さい\r
+<pre>set oForm=new TableEditClass</pre>\r
+\r
+<li>SetTableName メソッドを呼んで下さい\r
+<pre>oForm.SetTableName "customer"</pre>\r
+\r
+<li>任意に CanAdd、CanEdit、CanDelete、ConfirmDelete および/または 必要に応じて RecordName プロパティを設定して下さい\r
+<pre>\r
+oForm.options("canAdd")=CanAdd\r
+oForm.options("canEdit")=CanModify\r
+oForm.options("canDelete")=CanDelete\r
+</pre>\r
+<li>TableName がビューであるか、またはプライマリーキーが定義されていない場合、編集は利用不能です\r
+<li>テーブルとフォームビューに見えるフィールドを、次の例外と共に、フィールドおよび列に表示するために、 \r
+      AddEntryField または AddCalculatedField を呼んで下さい。\r
+<ul>\r
+<li>エントリタイプ H は、決してクライアントへ送信されません。定義されたデフォルト値を取得してデータベースへ書き込みます。\r
+<li>FormView フィールドプロパティに "exclude" がセットされていれば、そのフィールドはテーブルだけに表示されます。\r
+<li>FormView フィールドプロパティに "hidden" がセットされていれば、そのデータは隠れたフォームフィールドに設定されます。\r
+<li>計算されたフィールドはテーブルビューにだけ表示されます(FormView=exclude と同じです)\r
+</ul>\r
+\r
+<li>AddEntryField または AddCalculatedField のそれぞれの呼び出しの後、他のメソッドとプロパティは、\r
+      どのようにしてユーザにフィールドを表示するかを、コントロールするために起動する事が出来ます(例えば SortAsc)\r
+      これらのプロパティおよびメソッドの呼び出しは、最も最近追加されたフィールドのみに適用されます。\r
+<li>DisplayPage を呼び出します - これはグリッドを表示するか、データベースの更新を実行します。\r
+<pre>oForm.DisplayPage</pre>\r
+</ol>\r
+\r
+\r
+<h2>タブフォーム</h2>\r
+\r
+<p>複数パネルや複数タブを持つフォームは Rico アコーディオンクラスを利用して、完全にサポートされます。\r
+ そのパネルのフィールドを定義するために、AddEntryField を呼ぶ前に、単に AddPanel を呼ぶだけです。\r
+ 例えば。\r
+<pre>\r
+' these fields appear on the first panel\r
+oForm.AddPanel "Panel #1"\r
+oForm.AddEntryField "field1", "Field #1", "T", ""\r
+oForm.AddEntryField "field2", "Field #2", "T", ""\r
+oForm.AddEntryField "field3", "Field #3", "T", ""\r
+\r
+' these fields appear on the second panel\r
+oForm.AddPanel "Panel #2"\r
+oForm.AddEntryField "field4", "Field #4", "T", ""\r
+oForm.AddEntryField "field5", "Field #5", "T", ""\r
+oForm.AddEntryField "field6", "Field #6", "T", ""\r
+</pre>\r
+\r
+<p>あるいは panelIdx プロパティは、それが定義されるように、それぞれのフィールドにセットされる事が出来ます。\r
+この場合、DisplayPage の前にいつでも AddPanel は呼ばれる事が出来ます。\r
+<pre>\r
+' these fields appear on the first panel\r
+oForm.AddEntryField "field1", "Field #1", "T", ""\r
+oForm.CurrentField("panelIdx")=0\r
+oForm.AddEntryField "field2", "Field #2", "T", ""\r
+oForm.CurrentField("panelIdx")=0\r
+oForm.AddEntryField "field3", "Field #3", "T", ""\r
+oForm.CurrentField("panelIdx")=0\r
+\r
+' these fields appear on the second panel\r
+oForm.AddEntryField "field4", "Field #4", "T", ""\r
+oForm.CurrentField("panelIdx")=1\r
+oForm.AddEntryField "field5", "Field #5", "T", ""\r
+oForm.CurrentField("panelIdx")=1\r
+oForm.AddEntryField "field6", "Field #6", "T", ""\r
+oForm.CurrentField("panelIdx")=1\r
+\r
+oForm.AddPanel "Panel #1"\r
+oForm.AddPanel "Panel #2"\r
+</pre>\r
+\r
+\r
+<h2>フォームメソッド</h2>\r
+<dl>\r
+  <dt>AddPanel "パネルの見出し"\r
+  <dd>入力フォーム上で、タブパネルのための見出しを定義します。\r
+\r
+  <dt>DisplayPage\r
+  <dd>グリッドを表示するか、"action" の値に応じてデータベースを更新します。\r
+\r
+  <dt><a name='DefineAltTable'></a>DefineAltTable (TableName, FieldList, FieldData, Delim)\r
+  <dd>次の <a href='#AltTable'>AltTable</a> の呼び出しで利用される TabId を返す関数。\r
+  関連のあるフィールドの追加を記録するために、二番目のテーブルを定義して下さい。\r
+  メインテーブルのキーフィールド(達)も、 AltTable に存在べきです。\r
+  FieldList と FieldData は、二番目のテーブルに記録される定数や固定された関数を、\r
+  追加で定義する区切られた文字列です。\r
+  Delim は、FieldList と FieldData で利用されるデリミタキャラクタを定義します。\r
+  FieldList と FieldData は、同じ数の区切られたエントリを含まなければなりません。\r
+\r
+  <dt>genXHTML\r
+  <dd>純粋な XHTML アウトプットを生成するために呼び出して下さい。\r
+\r
+  <dt>SetDbConn (dbcls)\r
+  <dd>dbClass を利用するためのインスタンスを定義します\r
+  oDB と言う名前のグローバルインスタンスが存在するのなら、このメソッドの呼び出しをしないでも利用する事が出来るでしょう。\r
+</dl>\r
+\r
+\r
+<h2>フォームプロパティ</h2>\r
+\r
+<p>これら LiveGrid フォーム特有のものに加えて、すべての <a href="LiveGrid.html#options">LiveGrid</a> のオプションはプロパティとしてサポートされています。\r
+\r
+<dl>\r
+\r
+<dt>action (read only)\r
+<dd>実行されているカレントアクションを指定します。table、ins、upd、del\r
+\r
+<dt>gridVar (read only)\r
+<dd>クライアントサイドの LiveGrid オブジェクトの名前を返します\r
+\r
+<dt>bufferVar (read only)\r
+<dd>クライアントサイドの LiveGrid バッファオブジェクトの名前を返します\r
+\r
+<dt>AutoInit\r
+<dd>自動的にグリッドを初期化します(データの行を作成)\r
+    デフォルトは true です\r
+\r
+<dt>InitScript (read only)\r
+<dd>グリッドを初期化するための javascript コードを(文字列として)返します(AutoInit が false の時に利用する)\r
+\r
+<dt>TableFilter\r
+<dd>テーブルビューで利用される節がどこかを指定します(オプションの)\r
+<pre>\r
+// only show records for the logged in user\r
+$oForm->TableFilter = "userid=$myuserid";\r
+</pre>\r
+\r
+<dt>canAdd\r
+<dd>ユーザが新しいレコードを追加する事を許可する、デフォルトは true\r
+<dt>canEdit\r
+<dd>ユーザがレコードを編集する事を許可する、デフォルトは true\r
+<dt>canDelete\r
+<dd>ユーザがレコードを削除する事を許可する、デフォルトは true\r
+<dt>canClone\r
+<dd>ユーザがレコードを複製する事を許可する(既存のレコードの編集するが、新規で保存する)デフォルトは false\r
+\r
+<dt>updateURL\r
+<dd>この位置へのポストアップデートを行います、デフォルトはグリッドを生成したページ\r
+\r
+<dt>ConfirmDelete\r
+<dd>ユーザが削除ボタンをクリックした後で、確認のポップアップを表示するかどうかを指定するフラグ、\r
+    デフォルトは true \r
+    (<a href='#ConfirmDeleteCol'>ConfirmDeleteCol</a> も見て下さい)\r
+\r
+<dt>DebugFlag\r
+<dd>デバッグメッセージを表示します、デフォルトは false\r
+\r
+<dt>RecordName\r
+<dd>追加、編集および削除タイトルタグのカスタマイズ用の文字列、\r
+    デフォルトは "Record"\r
+\r
+<dt>SelectMaxLen\r
+<dd>セレクトボックスの文字数の最大値、デフォルトは 50。\r
+\r
+<dt>TableName (write only)\r
+<dd>表示/編集されるテーブルまたはビュー(必須)\r
+\r
+<dt>TableSelectNew\r
+<dd>EntryType が N のフィールドの、新しい値を作成するためにユーザが選択した時に、\r
+識別するために用いる文字列。デフォルトは "___new___"。\r
+\r
+<dt>showSaveMsg\r
+<dd>データベースの更新レスポンスの処理。\r
+<ul>\r
+<li>full - すべてのレスポンスを表示する\r
+<li>errors - エラーに関するすべてのレスポンスか、そうで無い場合は短いレスポンスを表示する(デフォルト)\r
+</ul>\r
+</dd>\r
+\r
+<dt style='color:navy;'><em>入力フォームで、タブパネルを利用する時。</em>\r
+\r
+<dt>panelWidth\r
+<dd>タブパネルのピクセル単位の幅。デフォルトは 500。\r
+\r
+<dt>panelHeight\r
+<dd>タブパネルのピクセル単位の高さ。デフォルトは 200。\r
+\r
+<dt>hoverClass\r
+<dd>タブパネルの上をホバーする時の CSS クラス。デフォルトは "tabHover"。\r
+\r
+<dt>selectedClass\r
+<dd>タブパネルを選択する時の CSS クラス。デフォルトは "tabHover"。\r
+\r
+</dl>\r
+\r
+\r
+<h2>フォームイベント</h2>\r
+\r
+<p>いくつかのフォームイベントをフックする事が可能です。\r
+\r
+<dl>\r
+<dt>formOpen\r
+<dd>入力フォームが表示される時、始動します。\r
+<pre>\r
+oForm.options("formOpen")=\r
+  "alert('Questions? Please call the support desk.');"\r
+</pre>\r
+\r
+<dt>formClose\r
+<dd>入力フォームが閉じられてすぐに、始動します。\r
+\r
+<dt>onSubmitResponse\r
+<dd>フォームがサーバに送信され、レスポンスを受け取って処理された後で、起動されます。\r
+\r
+</dl>\r
+\r
+\r
+<h2>フィールド定義メソッド</h2>\r
+<dl>\r
+<dt>AddEntryField (ColumnName, Heading, EntryTypeCode, DefaultValue)\r
+<dd>グリッドへ新しい列と、ASP と PHP でのポップアップフォームにより新しいエントリフィールドを追加します。\r
+  <dl>\r
+\r
+  <dt>ColumnName\r
+  <dd>データベーステーブルの列名(空白や角括弧を含む SQL をサポートしません、例えば [Apr 2005] )\r
+\r
+  <dt>Heading\r
+  <dd>グリッドの列見出しやポップアップフォーム上に現れる名前\r
+\r
+  <dt>EntryTypeCode\r
+  <dd>どのように入力フォーム上に列が表示されるかについて、コントロールするコードを含む文字列\r
+\r
+    <ul>\r
+    <li><strong>S</strong>:\r
+    データエントリ中のドロップダウンセレクトリストとして、この列を表示します。\r
+    "SelectValues" または "SelectSql" オプションを利用して指定された値です。\r
+    どちらも指定されなければ、列の値は "select distinct" クエリを利用して得られます。\r
+    <li><strong>R</strong>: ラジオボタンを利用してアイテムが表示される以外は "S" と同じです。\r
+    <li><strong>SL,RL</strong>: \r
+    テーブルビューに検索された値を表示する以外は、S & R と同じです\r
+    (SelectSql により指定されたクエリを利用して)。\r
+    外部キーの列で典型的に利用されます。\r
+    表示する値を取得するための SQL は "SelectSql" オプションを利用して指定します。\r
+    <li><strong>CL</strong>: \r
+    カスタムコントロールを利用して値が選択される以外は "SL" と同じです\r
+    (Rico ツリーコントロールのような)。\r
+    SelectCtl オプションは、カスタムコントロールの id を割り当てられるべきです。\r
+    <li><strong>N</strong>:\r
+    "S" と同じですが、ユーザが新しい値を作成する事を許します。\r
+    典型的には "SelectValues" または "SelectSql" オプション <em>無し</em> で利用されます。\r
+    <li><strong>H</strong>:   列はユーザから隠されます(DefaultValue が、追加と編集でテーブルに保管されます)\r
+    <li><strong>D</strong>:   これはデータフィールドです(列が null を許していたら、空白が許されます)\r
+    <li><strong>DT</strong>:  時間も含む以外は D と同じです\r
+    <li><strong>I</strong>:   整数値(列が null を許していて、false が必要とされるなら、空白が許されます)\r
+    <li><strong>F</strong>:   浮動小数点数(列が null を許していて、false が必要とされるなら、空白が許されます)\r
+    <li><strong>B</strong>:   空白の無いテキストフィールド(フィールドが空で保存をクリックするとき、ユーザはフォームビューでのポップアップメッセージを取得します)\r
+    <li><strong>T</strong>:   標準テキストフィールド(空白が許されます)\r
+    <li><strong>TA</strong>:  テキストエリアフィールド\r
+    <li><strong>tinyMCE</strong>:  <a href="http://tinymce.moxiecode.com/">tinyMCE</a> \r
+    ライブラリを利用するリッチテキスト編集フィールド。\r
+    </ul>\r
+\r
+  <dt>DefaultValue\r
+  <dd>フォームビューでの列のデフォルト値\r
+  </dl>\r
+\r
+  <p>.net で AddEntryField() と同等なのは、マークアップの一部として列フィールドを宣言する事です。\r
+  "ColData" 属性はデフォルト値を含みます。\r
+  ex2edit.aspx からの例は、ここにあります。\r
+<pre>\r
+&lt;Rico:Column runat='server' heading='Order#' width='60' \r
+             ColName='OrderID' EntryType='B' ColData='&lt;auto&gt;' /&gt;\r
+</pre>\r
+\r
+<dt>AddEntryFieldW (ColumnName, Heading, EntryTypeCode, DefaultValue, ColWidth)\r
+<dd>列の(ピクセルでの)幅のためのエクストラパラメータが追加される以外は AddEntryField と同じです。\r
+\r
+<dt>AddCalculatedField (ColumnFormula, Heading)\r
+<dd>ColumnFormula は、どれも妥当な SQL 式またはサブクエリです。\r
+    サブクエリが表示されているテーブルの列への参照を必要としているなら、\r
+    列名はエイリアス "t." で始まらなくてはなりません\r
+    計算されたフィールドは、フォームビューでは無く、テーブルビューに表示されます。\r
+\r
+<dt>AddFilterField (ColumnName, FilterValue)\r
+<dd>ColumnName=FilterValue の内容のレコードを表示するだけです。\r
+    隠れたフィールドになります(エントリタイプ H)。\r
+\r
+<dt><a name='ConfirmDeleteCol'></a>ConfirmDeleteCol\r
+<dd>最も最近追加された列の内容は、削除確認メッセージに含まれます\r
+\r
+<dt>SortAsc\r
+<dd>テーブルビューにて昇順で列をソートします(最も最近追加されたフィールドに適応されます)\r
+\r
+<dt>SortDesc\r
+<dd>テーブルビューにて降順で列をソートします(最も最近追加されたフィールドに適応されます)\r
+\r
+</dl>\r
+\r
+\r
+<h2>フィールド定義プロパティ</h2>\r
+\r
+<p>これらの LiveGrid フォーム特有のものに加えて、すべての <a href="LiveGrid.html#column">LiveGrid</a> 列プロパティはサポートされます。\r
+\r
+<dl>\r
+\r
+<dt>AddQuotes\r
+<dd>false で、データベースに挿入するか更新する時は、列の値はバッククォートで囲まれません\r
+    (デフォルト=true)\r
+    これは SQL 関数呼び出しで、列を実装する事を可能にします。例えば。\r
+<pre>\r
+oForm.AddEntryField "LastEditUser","","H","suser_sname()"\r
+oForm.CurrentField("AddQuotes")=false\r
+oForm.AddEntryField "LastEditDate","","H","getdate()"\r
+oForm.CurrentField("AddQuotes")=false\r
+</pre>\r
+\r
+<dt>required\r
+<dd>入力フィールドが空のままにしてもよいかどうかを指定する真偽値です\r
+(デフォルトは、 列が null を許して EntryType が "B" で無ければ false 、そうで無い場合は true です)。\r
+  \r
+<dt><a name='AltTable'></a>AltTable (TabId)\r
+<dd>代わりのテーブルにフィールドは保存されるべきである事を指定し、\r
+    TabId は以前の <a href='#DefineAltTable'>DefineAltTable</a> の呼び出しによって返される値でなければなりません。\r
+\r
+<dt>TxtAreaRows\r
+<dd>エントリタイプが "TA" の列のための、フォームビューの時に\r
+    テキストエリアに表示する行数です(デフォルト 4)\r
+\r
+<dt>FilterFlag\r
+<dd>true なら、グリッドはその列のデフォルト値によってフィルタされます(デフォルト = false)\r
+\r
+<dt>TxtAreaCols\r
+<dd>エントリタイプが "TA" の列のための、フォームビューの時に\r
+    テキストエリアに表示する列数です(デフォルト 80)\r
+\r
+<dt>Help\r
+<dd>指定されたテキストを含んでいるタイトルタグを作成します(フォームビューのみ)。\r
+そして、ユーザがフィールドラベルの上をホバーするなら、バルーンヘルプとしてこのテキストを見るでしょう。例えば。\r
+<pre>\r
+oForm.CurrentField("Help")="Date must be entered in mm/dd/yyyy format"\r
+</pre>\r
+\r
+<dt>pattern\r
+<dd>正規表現を含んでいる文字列。\r
+ユーザエントリは、その指定されたパターンにマッチする事を確実にするためにチェックされます。\r
+少しの特別な値があります。\r
+<ul>\r
+<li>"email" - メールアドレスを検証するためのテスト\r
+<li>"float-unsigned" - 符号無し浮動小数点(実)数を検証するためのテスト\r
+<li>"float-signed" - 符号付き浮動小数点(実)数を検証するためのテスト(EntryType が "F" の時、これがデフォルトです)\r
+<li>"int-unsigned" - 符号無し整数を検証するためのテスト\r
+<li>"int-signed" - 符号付き整数を検証するためのテスト(EntryType が "I" の時、これがデフォルトです)\r
+</ul>\r
+<br>いつでも、パターンを指定するヘルプエントリが含まれる事が推薦されます。\r
+フィールドが検証に失敗したなら、そのヘルプテキストは、ユーザに表示されるエラーメッセージに含まれます。\r
+例えば。\r
+<pre>\r
+oForm.CurrentField("Help")="Enter date as mm/dd/yyyy"\r
+oForm.CurrentField("pattern")="^\\d{1,2}/\\d{1,2}/\\d{4}$"\r
+</pre>\r
+\r
+<dt>min/max\r
+<dd>EntryType が "I" 、"F" 、そして "D" のフィールドの、最大/最少の許される値を指定します。\r
+例えば。\r
+<pre>\r
+oForm.AddEntryField "field1", "Field #1", "I", "0"\r
+oForm.CurrentField("min")=1\r
+oForm.CurrentField("max")=10\r
+oForm.CurrentField("Help")="Enter a value between 1 and 10"\r
+\r
+oForm.AddEntryField "field2", "Field #2", "D", Date()\r
+oForm.CurrentField("min")="2000-01-01"\r
+oForm.CurrentField("max")="2099-12-31"\r
+oForm.CurrentField("Help")="Enter a value in the 21st century!"\r
+</pre>\r
+\r
+<dt>InsertOnly\r
+<dd>挿入を実行する時は、データベースに単にこのフィールドを書いて下さい(デフォルト=false)。\r
+<pre>\r
+oForm.AddEntryField "CreateDate","","H","getdate()"\r
+oForm.CurrentField("AddQuotes")=false\r
+oForm.CurrentField("InsertOnly")=true\r
+</pre>\r
+\r
+<dt>UpdateOnly\r
+<dd>更新を実行する時は、データベースに単にこのフィールドを書いて下さい(デフォルト=false)。\r
+<pre>\r
+oForm.CurrentField("UpdateOnly")=true\r
+</pre>\r
+\r
+<dt>ReadOnly\r
+<dd>true なら、データはエントリフォームで表示されますが、変更は出来ず、テキストは灰色です(デフォルト = false)。\r
+\r
+<dt>SelectValues\r
+<dd>N、S、そして R の EntryType  のために、ユーザをフォームビューに案内する選択を指定して下さい。\r
+    供給されるなら、カンマで区切られた値の文字列で無ければなりません。例えば。\r
+<pre>\r
+oForm.CurrentField("SelectValues")="Y,N"\r
+</pre>\r
+\r
+<dt>SelectSql\r
+<dd>SL 、CL 、そして RL の EntryType のために、SQL 検索ステートメントを指定します。\r
+    その検索ステートメントは 2 つの列を返さなければなりません。\r
+    一つ目はコードで、そして二つ目は値または説明のテキストです。例えば。\r
+<pre>\r
+oForm.CurrentField("SelectSql")="select ID,Name from Customers"\r
+</pre>\r
+\r
+</dl>\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/LiveGrid_ja.html b/documentation/LiveGrid_ja.html
new file mode 100644 (file)
index 0000000..2c8fba1
--- /dev/null
@@ -0,0 +1,1156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r
+<title>Rico LiveGrid</title>\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css" />\r
+</head>\r
+\r
+<body>\r
+<h1>Rico LiveGrid の作成</h1>\r
+\r
+<p>Rico LiveGrid は 2 次元の JavaScript 配列でデータをバッファリングして、スクロールするテーブルにデータを表示します。\r
+ユーザがグリッドを垂直にスクロールする事によって、データは配列からグリッド上へ動的にコピーされます。\r
+バッファは次の項目からロードされる事が出来ます。\r
+<ol>\r
+<li><a href='#model1'>javascript 配列</a>\r
+<li><a href='#model2'>HTML テーブル</a>\r
+<li><a href='#model3'>XML ファイル</a>\r
+<li><a href='#model4'>SQL データベースクエリ</a>\r
+<li><a href='#model5'>カスタム javascript コールバック関数</a>\r
+</ol>\r
+\r
+\r
+<h2><a name='model1'>利用モデル 1: javascript 配列からのデータのロード</a></h2>\r
+\r
+<ul><li>javascript 配列へ表示されるデータをロードして下さい。\r
+<pre>\r
+  var myData = [\r
+    [1,'Cell 1:2','Cell 1:3','Cell 1:4','Cell 1:5'],\r
+    [2,'Cell 2:2','Cell 2:3','Cell 2:4','Cell 2:5'],\r
+    [3,'Cell 3:2','Cell 3:3','Cell 3:4','Cell 3:5'],\r
+    [4,'Cell 4:2','Cell 4:3','Cell 4:4','Cell 4:5']\r
+  ];\r
+</pre>\r
+\r
+<li>グリッドを表示するのに必要な Rico javascript と css ファイルをロードして下さい。\r
+<pre>\r
+Rico.loadModule('LiveGrid','LiveGridMenu','greenHdg.css');\r
+</pre>\r
+<dl>\r
+<dt>LiveGrid\r
+<dd>これは、静的なバッファ( AJAX では無い)で LiveGrid を表示するのに必要な Rico javascript と css ファイルをロードします。\r
+<dt>LiveGridMenu\r
+<dd>これは、デフォルトのグリッドメニューをロードします。\r
+このメニューは、LiveGrid で出来る事の全てにアクセスする方法を提供します。\r
+それは選択された列と使用されるバッファのタイプに基づく、ユーザに提示された選択項目を調整します。\r
+メニュー無しでグリッドを使用するか、またはアプリケーションの必要性によりカスタマイズされた独自のメニューを作成するかを、選ぶことが出来ます。\r
+<dt>greenHdg.css\r
+<dd>Rico は、いくつかのサンプルグリッドスタイルを持っています。\r
+coffee-with-milk、grayedout、greenHdg、iegradient (Internet Explorer 専用)、tanChisel、そして warmfall。\r
+あなたは、含まれているスタイルの 1 つを選ぶか、独自の物を作成するかを選ぶでしょう。\r
+</dl>\r
+\r
+<li>テーブルのデータ列を Rico バッファオブジェクトにロードして下さい。\r
+<pre>\r
+  var buffer=new Rico.Buffer.Base();\r
+  buffer.loadRowsFromArray(myData);\r
+</pre>\r
+\r
+<li>グリッドの見出しを含む、グリッドのオプションを定義して下さい。\r
+<pre>\r
+  var opts = {  \r
+    useUnformattedColWidth: false,\r
+    defaultWidth : 90,\r
+    visibleRows  : 'data',\r
+    frozenColumns: 1,\r
+    columnSpecs  : [{Hdg:'Column 1',type:'number', ClassName:'alignright'},\r
+                    {Hdg:'Column 2'},\r
+                    {Hdg:'Column 3'},\r
+                    {Hdg:'Column 4'},\r
+                    {Hdg:'Column 5'}]\r
+  };\r
+</pre>\r
+\r
+<li>グリッド、Rico.Buffer インスタンス、およびグリッドオプションのためにベース id を渡して、LiveGrid をインスタンス化してください。\r
+\r
+<pre>\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, opts);\r
+</pre>\r
+\r
+<li>グリッドのためのデフォルトポップアップメニューを利用可能にするために、グリッドのメニューのプロパティを Rico.GridMenu のインスタンスに割り当てて下さい。\r
+\r
+<pre>\r
+  ex1.menu=new Rico.GridMenu();\r
+</pre>\r
+\r
+<li>Rico.loadModule は、window.onload イベントの終了<em>後</em>に実行されると思います。\r
+あなたは Rico.onLoad メソッドに初期化関数を渡さなければなりません、なぜなら、Rico モジュールがロードされた後で、グリッドの初期化が実行される事を確実なものにするためです。\r
+javascript のすべてをまとめると、このようになります。\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('LiveGrid','LiveGridMenu','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var myData = [\r
+    [1,'Cell 1:2','Cell 1:3','Cell 1:4','Cell 1:5'],\r
+    [2,'Cell 2:2','Cell 2:3','Cell 2:4','Cell 2:5'],\r
+    [3,'Cell 3:2','Cell 3:3','Cell 3:4','Cell 3:5'],\r
+    [4,'Cell 4:2','Cell 4:3','Cell 4:4','Cell 4:5']\r
+  ];\r
+  var opts = {  \r
+    useUnformattedColWidth: false,\r
+    defaultWidth : 90,\r
+    visibleRows  : 'data',\r
+    frozenColumns: 1,\r
+    columnSpecs  : [{Hdg:'Column 1',type:'number', ClassName:'alignright'},\r
+                    {Hdg:'Column 2'},\r
+                    {Hdg:'Column 3'},\r
+                    {Hdg:'Column 4'},\r
+                    {Hdg:'Column 5'}]\r
+  };\r
+  var buffer=new Rico.Buffer.Base();\r
+  buffer.loadRowsFromArray(myData);\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, opts);\r
+  ex1.menu=new Rico.GridMenu();\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+\r
+<li>最後に、グリッドを実行すべき位置に、HTML マークアップ に div 要素を配置して下さい。\r
+ブックマークのためのマークアップを含む事により、グリッドのスクロール位置が表示されます。\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="ex1_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+&lt;div id="ex1"&gt;&lt;/div&gt;\r
+</pre>\r
+\r
+\r
+\r
+</ul>\r
+\r
+\r
+<h2><a name='model2'>利用モデル 2: HTML テーブルからのデータのロード</a></h2>\r
+\r
+<ul><li>見出しは <code>&lt;thead&gt;</code> セクションにより、データは <code>&lt;tbody&gt;</code> セクションにより、HTML テーブルを定義して下さい。\r
+ブックマークのためのマークアップを含む事により、グリッドのスクロール位置が表示されます。\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="data_grid_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+&lt;table id="data_grid"&gt;\r
+  &lt;thead&gt;\r
+\r
+  &lt;tr&gt;\r
+    &lt;th&gt;First column name&lt;/th&gt;\r
+    &lt;th&gt;Second column name&lt;/th&gt;\r
+    ...\r
+    &lt;th&gt;Last column name&lt;/th&gt;\r
+  &lt;/tr&gt;\r
+\r
+  &lt;/thead&gt;\r
+\r
+  &lt;tbody&gt;\r
+\r
+  &lt;tr&gt;\r
+    &lt;td&gt;Row 1, column 1 data&lt;/td&gt;\r
+    &lt;td&gt;Row 1, column 2 data&lt;/td&gt;\r
+    ...\r
+    &lt;td&gt;Row 1, last column data&lt;/td&gt;\r
+  &lt;/tr&gt;\r
+\r
+  &lt;tr&gt;\r
+    &lt;td&gt;Row 2, column 1 data&lt;/td&gt;\r
+    &lt;td&gt;Row 2, column 2 data&lt;/td&gt;\r
+    ...\r
+    &lt;td&gt;Row 2, last column data&lt;/td&gt;\r
+  &lt;/tr&gt;\r
+\r
+  ...\r
+\r
+  &lt;tr&gt;\r
+    &lt;td&gt;Row n, column 1 data&lt;/td&gt;\r
+    &lt;td&gt;Row n, column 2 data&lt;/td&gt;\r
+    ...\r
+    &lt;td&gt;Row n, last column data&lt;/td&gt;\r
+  &lt;/tr&gt;\r
+\r
+  &lt;/tbody&gt;\r
+&lt;/table&gt;\r
+</pre>\r
+\r
+<li>グリッドを表示するために必要な Rico javascript と css ファイルをロードして下さい。\r
+<pre>\r
+Rico.loadModule('LiveGrid','LiveGridMenu','greenHdg.css');\r
+</pre>\r
+<dl>\r
+<dt>LiveGrid\r
+<dd>これは、静的なバッファ( AJAX では無い)で LiveGrid を表示するのに必要な Rico javascript と css ファイルをロードします。\r
+<dt>LiveGridMenu\r
+<dd>これは、デフォルトのグリッドメニューをロードします。\r
+このメニューは、LiveGrid で出来る事の全てにアクセスする方法を提供します。\r
+それは選択された列と使用されるバッファのタイプに基づく、ユーザに提示された選択項目を調整します。\r
+メニュー無しでグリッドを使用するか、またはアプリケーションの必要性によりカスタマイズされた独自のメニューを作成するかを、選ぶことが出来ます。\r
+<dt>greenHdg.css\r
+<dd>Rico は、いくつかのサンプルグリッドスタイルを持っています。\r
+coffee-with-milk、grayedout、greenHdg、iegradient (Internet Explorer 専用)、tanChisel、そして warmfall。\r
+あなたは、含まれているスタイルの 1 つを選ぶか、独自の物を作成するかを選ぶでしょう。\r
+</dl>\r
+\r
+<li>テーブルのデータ列を Rico バッファオブジェクトにロードして下さい。\r
+<pre>\r
+var buffer = new Rico.Buffer.Base($('data_grid').tBodies[0]);\r
+</pre>\r
+\r
+<li>最後に、HTML テーブルの DOM の id とオプションを Rico.Buffer インスタンス に渡して\r
+(これは、 LiveGrid がテーブルの thead セクションから列の見出しをロードするのを許可します)、\r
+LiveGrid を初期化します\r
+(この場合、最初の列の幅は 50 ピクセル、2 番目の列は 80 ピクセルの幅となります)。\r
+\r
+<pre>\r
+var grid_options = { columnSpecs: [ {width:50}, {width:80} ] };\r
+var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+</pre>\r
+\r
+<li>Rico.loadModule は、window.onload イベントの終了<em>後</em>に実行されると思います。\r
+あなたは Rico.onLoad メソッドに初期化関数を渡さなければなりません、\r
+なぜなら、Rico モジュールがロードされた後で、グリッドの初期化が実行される事を確実なものにするためです。\r
+javascript のすべてをまとめると、このようになります。\r
+\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('LiveGrid','LiveGridMenu','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var buffer = new Rico.Buffer.Base($('data_grid').tBodies[0]);\r
+  var grid_options = { columnSpecs: [width:50, width:80] };\r
+  var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+\r
+</ul>\r
+\r
+\r
+<h2><a name='model3'>利用モデル 3: XML ファイルからのデータのロード</a></h2>\r
+\r
+<ul><li>テーブルのヘッダセルを持ち、テーブルのボディセルは持たない、HTML テーブルを定義して下さい。\r
+ブックマークのためのマークアップを含む事により、グリッドのスクロール位置が表示されます。\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="data_grid_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+&lt;table id="data_grid"&gt;\r
+  &lt;tr&gt;\r
+\r
+    &lt;th&gt;First column name&lt;/th&gt;\r
+    &lt;th&gt;Second column name&lt;/th&gt;\r
+\r
+  &lt;/tr&gt;\r
+&lt;/table&gt;\r
+</pre>\r
+\r
+<li>グリッドを表示するために必要な Rico javascript と css ファイルをロードして下さい。\r
+<pre>\r
+Rico.loadModule('LiveGridAjax','LiveGridMenu','greenHdg.css');\r
+</pre>\r
+<dl>\r
+<dt>LiveGridAjax\r
+<dd>これは、AJAX 対応のバッファで LiveGrid を表示するのに必要な Rico javascript と css ファイルをロードします。\r
+<dt>LiveGridMenu\r
+<dd>これは、デフォルトのグリッドメニューをロードします。\r
+このメニューは、LiveGrid で出来る事の全てにアクセスする方法を提供します。\r
+それは選択された列と使用されるバッファのタイプに基づく、ユーザに提示された選択項目を調整します。\r
+メニュー無しでグリッドを使用するか、またはアプリケーションの必要性によりカスタマイズされた独自のメニューを作成するかを、選ぶことが出来ます。\r
+<dt>greenHdg.css\r
+<dd>Rico は、いくつかのサンプルグリッドスタイルを持っています。\r
+coffee-with-milk、grayedout、greenHdg、iegradient (Internet Explorer 専用)、tanChisel、そして warmfall。\r
+あなたは、含まれているスタイルの 1 つを選ぶか、独自の物を作成するかを選ぶでしょう。\r
+</dl>\r
+\r
+<li>データをフェッチしてテーブルを実装するために、Rico バッファを作成して下さい。\r
+AjaxXML バッファは、グリッドのスタートアップで提供された URL に、一つだけのデータのリクエストを行います。\r
+<pre>\r
+var buffer = new Rico.Buffer.AjaxXML('/controller/action?format=xml');\r
+</pre>\r
+\r
+この URL(実例の中にある "/controller/action?format=xml")は、次のフォーマットでデータを返さなければなりません。\r
+<pre>\r
+&lt;ajax-response&gt;\r
+&lt;response type='object' id='data_grid_updater'&gt;\r
+&lt;rows update_ui='true' offset='0'&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 1, cell 1&lt;/td&gt;&lt;td&gt;Data for row 1, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 2, cell 1&lt;/td&gt;&lt;td&gt;Data for row 2, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;/rows&gt;\r
+&lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+\r
+<li>最後に、HTML テーブルの DOM の ID とオプションを Rico.Buffer インスタンス に渡して、LiveGrid を初期化します\r
+(columnSpecs は必要ではありませんが、列のカスタム化のためのプレースホルダーとして、ここに表示されます)。\r
+<pre>\r
+var grid_options = { columnSpecs: [,] };\r
+var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+</pre>\r
+\r
+<li>Rico.loadModule は、window.onload イベントの終了<em>後</em>に実行されると思います。\r
+あなたは Rico.onLoad メソッドに初期化関数を渡さなければなりません、\r
+なぜなら、Rico モジュールがロードされた後で、グリッドの初期化が実行される事を確実なものにするためです。\r
+javascript のすべてをまとめると、このようになります。\r
+\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('LiveGridAjax','LiveGridMenu','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var buffer = new Rico.Buffer.AjaxXML('/controller/action?format=xml');\r
+  var grid_options = { columnSpecs: [,] };\r
+  var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+</ul>\r
+\r
+\r
+<h2><a name='model4'>利用モデル 4: SQL データベースクエリからデータをロードする</a></h2>\r
+\r
+<p>下記の説明は、Rico LiveGrid プラグインにおける ASP と PHP の実装に直接当てはまります。\r
+概念は .net の同じですが、実装方法は全く異なります\r
+(これがどのように .net で実装されるかについては、"ex2simple.aspx" を調べて下さい)。\r
+\r
+<ul>\r
+<li>実行するためにクエリを含むセッション変数を定義して下さい。\r
+変数名は、下の表の ID に適合しなければなりません。\r
+データを要求するとき、グリッドは ricoXMLquery にそのIDを渡します、そして、ricoXMLquery はセッションからクエリテキストを取得するためにそれを利用するでしょう。\r
+<ul>\r
+<li>ASP:\r
+<pre>\r
+&lt;%\r
+session.contents("data_grid")="select ID,Name,City from customers"\r
+%&gt;\r
+</pre>\r
+\r
+<li>PHP:\r
+<pre>\r
+&lt;? \r
+$_SESSION['data_grid']="select ID,Name,City from customers";\r
+?&gt;\r
+</pre>\r
+\r
+<li>.net:\r
+<pre>\r
+Sub Page_Load(Sender As object, e As EventArgs)\r
+  data_grid.sqlQuery="select ID,Name,City from customers"\r
+  ' session variable is set by the control\r
+End Sub\r
+</pre>\r
+</ul>\r
+\r
+\r
+<li>テーブルのボディセルでは無く、ヘッダセルを供給して、HTML テーブルを定義して下さい。\r
+ブックマークのためのマークアップを含む事により、グリッドのスクロール位置が表示されます。\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="data_grid_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+&lt;table id="data_grid"&gt;\r
+  &lt;tr&gt;\r
+\r
+    &lt;th&gt;Customer #&lt;/th&gt;\r
+    &lt;th&gt;Customer Name&lt;/th&gt;\r
+    &lt;th&gt;City&lt;/th&gt;\r
+\r
+  &lt;/tr&gt;\r
+&lt;/table&gt;\r
+</pre>\r
+\r
+<li>グリッドを表示するために必要な Rico javascript と css ファイルをロードして下さい。\r
+<pre>\r
+Rico.loadModule('LiveGridAjax','LiveGridMenu','greenHdg.css');\r
+</pre>\r
+<dl>\r
+<dt>LiveGridAjax\r
+<dd>これは、AJAX 対応バッファで LiveGrid を表示するのに必要な Rico javascript と css ファイルをロードします。\r
+<dt>LiveGridMenu\r
+<dd>これは、デフォルトのグリッドメニューをロードします。\r
+このメニューは、LiveGrid で出来る事の全てにアクセスする方法を提供します。\r
+それは選択された列と使用されるバッファのタイプに基づく、ユーザに提示された選択項目を調整します。\r
+メニュー無しでグリッドを使用するか、またはアプリケーションの必要性によりカスタマイズされた独自のメニューを作成するかを、選ぶことが出来ます。\r
+<dt>greenHdg.css\r
+<dd>Rico は、いくつかのサンプルグリッドスタイルを持っています。\r
+coffee-with-milk、grayedout、greenHdg、iegradient (Internet Explorer 専用)、tanChisel、そして warmfall。\r
+あなたは、含まれているスタイルの 1 つを選ぶか、独自の物を作成するかを選ぶでしょう。\r
+</dl>\r
+\r
+<li>データをフェッチしてテーブルを実装するために、Rico バッファを作成して下さい。\r
+一度にすべてのデータをグリッドにフェッチする AjaxXML バッファと異なり、 AjaxSQL バッファは、塊でデータをフェッチします。\r
+これは、LiveGrid が能率的に数千または何十万の列を含んでいるクエリ結果を表示する事を可能にします。\r
+\r
+<pre>\r
+var buffer = new Rico.Buffer.AjaxSQL('ricoXMLquery.asp');\r
+</pre>\r
+\r
+この URL ("ricoXMLquery.asp" の実例で)は、データベースからデータをフェッチして、\r
+この XML フォーマットでグリッドにそれを戻すために、含まれるプラグインの内の 1 つを利用します。\r
+\r
+<pre>\r
+&lt;ajax-response&gt;\r
+&lt;response type='object' id='data_grid_updater'&gt;\r
+&lt;rows update_ui='true' offset='0'&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 1, cell 1&lt;/td&gt;&lt;td&gt;Data for row 1, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 2, cell 1&lt;/td&gt;&lt;td&gt;Data for row 2, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;/rows&gt;\r
+&lt;rowcount&gt;99&lt;/rowcount&gt;\r
+&lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+\r
+&lt;rowcount&gt; タグはオプションですが、リクエストに "get_total" クエリーストリングパラメータが存在する場合は、\r
+いつでも返されなければなりません。\r
+\r
+<li>最後に、HTML テーブルの DOM の ID とオプションを Rico.Buffer インスタンス に渡して、LiveGrid を初期化します\r
+(columnSpecs は必要ではありませんが、列のカスタム化のためのプレースホルダーとして、ここに表示されます)。\r
+<pre>\r
+var grid_options = { columnSpecs: [,,] };\r
+var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+</pre>\r
+\r
+<li>Rico.loadModule は、window.onload イベントの終了<em>後</em>に実行されると思います。\r
+あなたは Rico.onLoad メソッドに初期化関数を渡さなければなりません、\r
+なぜなら、Rico モジュールがロードされた後で、グリッドの初期化が実行される事を確実なものにするためです。\r
+javascript のすべてをまとめると、このようになります。\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('LiveGridAjax','LiveGridMenu','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var buffer = new Rico.Buffer.AjaxSQL('ricoXMLquery.asp');\r
+  var grid_options = { columnSpecs: [,,] };\r
+  var grid = new Rico.LiveGrid('data_grid', buffer, grid_options);\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+</ul>\r
+\r
+\r
+<h2><a name='model5'>利用モデル 5: カスタムコールバック関数を利用してデータをロードする</a></h2>\r
+\r
+<p>このモデルは、 xmlHTTPrequest を利用してデータをフェッチするのでは無く、 javascript コールバック関数を\r
+利用してデータをフェッチする事以外はモデル 3 や 4 と同じ方法で動作します。\r
+これにより、コールバック関数で Google Gears を呼ぶような創造的な事をすることが出来ます。\r
+コールバックをセットアップする事は、非常に簡単です。\r
+データプロバイダの URL の文字列を含むデータを AjaxXML または AjaxSQL コンストラクタに渡すのでは無く、\r
+その代りにコールバック関数を渡すだけです。\r
+\r
+<p>以下の AjaxXML バッファを利用するコードは <a href='client/gridJSbuffer.html'>examples/client/gridJSbuffer.html</a> から取得出来ます。\r
+"jsfetch" コールバック関数は 100 行の長さで 5 列の幅の二次元配列を返します。\r
+AjaxXML は、そのバッファを(グリッドのスタートアップで)一度だけロードするので、 jsfetch は一度だけ呼ばれます。\r
+このオプションのハッシュは、Prototype の Ajax.Request メソッドで利用されるオプションのハッシュと構造が同じです。\r
+\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxXML(<strong>jsfetch</strong>);\r
+\r
+function <strong>jsfetch</strong>(options) {\r
+  Rico.writeDebugMsg("jsfetch");\r
+  var newRows=[], offset=options.parameters.offset;\r
+  for (var r=0; r<100; r++) {\r
+    var row=[];\r
+    row.push(offset.toString());\r
+    row.push(new Date().toString());\r
+    for (var c=2; c<5; c++) row.push('cell '+r+':'+c);\r
+    newRows.push(row);\r
+  }\r
+  options.onComplete(newRows);\r
+}\r
+</pre>\r
+\r
+<p>以下の AjaxSQL バッファを利用するコードは <a href='client/gridJSbuffer2.html'>examples/client/gridJSbuffer2.html</a> から取得出来ます。\r
+"jsfetch" コールバック関数は、500 行の長さで 5 列の幅の二次元配列をシミュレーションします。\r
+しかし、どんなコールバック中でも、その配列の <code>options.parameters.offset</code> 行から \r
+<code>options.parameters.offset + options.parameters.page_size</code> 行までのセクションが返されます。\r
+\r
+<pre>\r
+buffer=new Rico.Buffer.AjaxSQL(<strong>jsfetch</strong>);\r
+\r
+function <strong>jsfetch</strong>(options) {\r
+  var newRows=[], totrows=500;\r
+  var offset=options.parameters.offset;\r
+  var limit=Math.min(totrows-offset,options.parameters.page_size)\r
+  for (var r=0; r&lt;limit; r++) {\r
+    var row=[];\r
+    row.push(new Date().toString());\r
+    row.push(offset.toString());\r
+    for (var c=2; c&lt;5; c++) row.push('cell '+(r+offset)+':'+c);\r
+    newRows.push(row);\r
+  }\r
+  options.onComplete(newRows,false,totrows);\r
+}\r
+</pre>\r
+\r
+<p>options.onComplete は、次のパラメータをとります。\r
+<ul>\r
+<li>newRows - それぞれのアイテムが文字列の二次元配列\r
+<li>newAttr - それぞれのアイテムが、セルの acceptAttr の値、または acceptAttr が利用されていないなら false を含むオブジェクトの二次元配列\r
+<li>totalRows - データセット内の行の総数を表す整数\r
+<li>errMsg - エラーが起こったとき、ユーザに表示されるメッセージテキスト\r
+</ul>\r
+\r
+</ul>\r
+\r
+\r
+<h2><a name='debug'></a>デバッグ</h2>\r
+<p>Rico 2.0 はメッセージログにタイムスタンプデバッグメッセージを配達する能力を持っています。\r
+そのログは、HTML のテキストエリアか、ブラウザの javascript コンソールに表示されるでしょう。\r
+<ul>\r
+<li>もし、テキストエリアが '_debugmsgs' を加えたライブグリッドテーブルの ID と共に存在するならば、例えば\r
+<pre style='margin:3px;'>&lt;textarea cols="100" rows="5" id="data_grid_debugmsgs" /&gt;</pre>\r
+そして、このテキストエリアがメッセージログのために使われます。\r
+<li>あるいは、テキストエリアは Rico.setDebugArea() の呼び出しによって指定されるかもしれません。\r
+\r
+<pre>\r
+&lt;textarea id='debug' rows='5' cols='80'&gt;&lt;/textarea&gt;\r
+&lt;script type='text/javascript'&gt;\r
+Rico.setDebugArea('debug');\r
+&lt;/script&gt;\r
+</pre>\r
+\r
+<li>テキストエリアが指定されないならば、Rico はブラウザのビルトイン javascript コンソールを使おうとします。\r
+以下のコンソールで動作する事が知られています:\r
+  <ul>\r
+  <li>Firefox の <a href='http://www.getfirebug.com/' target='_blank'>Firebug</a> アドオンコンソール\r
+  <li>Opera javascript コンソール\r
+  <li>Safari javascript コンソール\r
+  </ul>\r
+</ul>\r
+\r
+<h2>グリッドメニュー</h2>\r
+\r
+<p>Rico LiveGrid は、多くの機能的なビルトインが付属します\r
+その機能にアクセスするために、Rico はメニューのデフォルトの設定を含みます -- \r
+ricoLiveGridMenu.js で定義されています。\r
+デフォルトメニューを使うために、単に 'LiveGridMenu' モジュールをロードして、\r
+そのグリッドメニュープロパティを Rico.GridMenu クラスのインスタンスに割り当てて下さい。\r
+<pre>\r
+  Rico.loadModule('LiveGridMenu');\r
+  ...\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, grid_options);\r
+  ex1.menu=new Rico.GridMenu();\r
+</pre>\r
+<p>デフォルトでは、ユーザがグリッドセルをダブルクリックする時メニューが開きます。\r
+メニューを開くイベントを変更するために、グリッドの <a href='#menuEvent'>menuEvent</a> \r
+オプションに値を割り当てて下さい。\r
+以下のコードは、右クリックでメニューを開きます。\r
+<pre>\r
+  Rico.loadModule('LiveGridMenu');\r
+  ...\r
+  var grid_options = {\r
+    menuEvent: 'contextmenu'\r
+  }\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, grid_options);\r
+  ex1.menu=new Rico.GridMenu();\r
+</pre>\r
+<p>Rico.GridMenu は、更なるメニューアイテムを追加するために、コールバック(dataMenuHandler)を提供します。\r
+グリッドメニューは常に動的に構築されます -- ユーザーがクリックした行と列のためにカスタマイズされます。\r
+コールバック関数が毎回呼ばれるように、メニューは起動されて、\r
+それぞれの起動で要求されるメニューアイテムを加えなければなりません。\r
+<pre>\r
+  Rico.loadModule('LiveGridMenu');\r
+  ...\r
+  var ex1=new Rico.LiveGrid ('ex1', buffer, grid_options);\r
+  ex1.menu=new Rico.GridMenu();\r
+  ex1.menu.options.dataMenuHandler=myCustomMenuItems;\r
+  ...\r
+function myCustomMenuItems(grid,r,c,onBlankRow) {\r
+  if (buffer.getWindowValue(r,c)=='Special Value')\r
+    grid.menu.addMenuItem("Special menu item", specialAction);\r
+}\r
+function specialAction() {\r
+  ...\r
+}\r
+</pre>\r
+\r
+<p>完全なカスタムメニューを作成する事も可能です。\r
+例えば、ex5.php/asp/aspx を見て下さい。\r
+\r
+\r
+<h2>注意</h2>\r
+<ul>\r
+<li>もし、ライブグリッドテーブル名に '_bookmark' が追加された名前に、DOM の ID が一致する要素を作成するなら、\r
+グリッドに表示されいるレコードの数を示しているテキストが更新されるでしょう。\r
+LiveGrid の実例は、一般的にこのマークアップを使います。\r
+<pre>\r
+&lt;p class="ricoBookmark"&gt;&lt;span id="data_grid_bookmark"&gt;&nbsp;&lt;/span&gt;&lt;/p&gt;\r
+</pre>\r
+<li>ライブグリッドを表示するブラウザは、<a href="http://www.quirksmode.org/css/quirksmode.html">strict (別名 "標準" )モード</a> で実行されていなければなりません。\r
+したがって、あなたは <code> &lt;html&gt; </code> タグの直前に doctype の宣言を含めなければなりません。例えば\r
+\r
+<pre>\r
+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" \r
+ "http://www.w3.org/TR/html4/strict.dtd"&gt;\r
+</pre>\r
+</ul>\r
+\r
+<h2>リファレンス</h2>\r
+<h3>コンストラクタ</h3>\r
+<pre>\r
+\r
+  var grid = new Rico.LiveGrid (table_id, rico_buffer, grid_options);\r
+\r
+</pre>\r
+\r
+<ul>\r
+<li><strong>table_id</strong> はライブグリッドによって実装される、テーブルの DOM id です\r
+<li><strong>rico_buffer</strong> は Rico のバッファです、例えば\r
+  <ul>\r
+  <li>Rico.Buffer.Base (AJAX 対応では無いテーブルのために)\r
+  <li>Rico.Buffer.AjaxXML\r
+  <li>Rico.Buffer.AjaxSQL\r
+  </ul>\r
+<li><strong>grid_options</strong> (下記参照)\r
+</ul>\r
+\r
+<h3><a name="options"></a>オプション</h3>\r
+\r
+<h4>グリッドサイズ</h4>\r
+<dl>\r
+<dt>visibleRows (.net の行)\r
+<dd>グリッドに何行表示しますか?\r
+正の整数は、グリッドが正確に多くの行を常に含まなければならないことを示しています。\r
+負の値は、以下の意味を持ちます。\r
+  <ul>\r
+  <li>-1: クライアントウィンドウに合わせたグリッドサイズ(デフォルト)\r
+  <li>-2: クライアントウィンドウとデータの小さい方のグリッドサイズ\r
+  <li>-3: ページのボディにスクロールバーを持たないためのグリッドサイズ\r
+  <li>-4: DOM の親ノードによるグリッドサイズ\r
+  </ul>\r
+  \r
+<dt>minPageRows\r
+<dd>表示される行数の最小値。visibleRows が 0 以下の時のみ利用される。(Rico 2b3 からはデフォルトが 2 で、Rico 2b3 までは 1)\r
+\r
+<dt>maxPageRows\r
+<dd>表示される行数の最大値。visibleRows が 0 以下の時のみ利用される。(デフォルトは 50)\r
+\r
+<dt>defaultWidth\r
+<dd>列の初期幅を設定する際に使われる整数。\r
+説明については <a href='#width'>列幅オプション</a> を見て下さい。\r
+(デフォルトは 100)\r
+\r
+<dt>useUnformattedColWidth\r
+<dd>列の初期幅を設定する際に使われる真偽値。\r
+説明については <a href='#width'>列幅オプション</a> を見て下さい。\r
+(デフォルトは true)\r
+\r
+<dt>scrollBarWidth\r
+<dd>いくらかの計算のために、LiveGrid はページ上のスクロールバーの幅を知っている必要があります。(デフォルトは 19)\r
+\r
+<dt>minScrollWidth\r
+<dd>固定された列の幅がウィンドウ幅を上回る時の、スクロールエリアのピクセル幅の最小値。(デフォルトは 100)\r
+</dl>\r
+\r
+\r
+<h4>グリッドデータ</h4>\r
+<dl>\r
+<dt>offset<dd>表示されるデータの最初の行(デフォルトは 0)\r
+<dt>prefetchBuffer<dd>ページのロード時にバッファの(そして、その結果グリッドの)ロードを行いますか?\r
+<dt>sortCol<dd>初期ソートのための、列の名前かインデックス\r
+<dt>sortDir<dd>初期ソートの方向\r
+  <br>取り得る値は 'ASC'、'DESC'\r
+<dt>getQueryParms<dd>もし true なら、フィルタパラメータのための、そのウェブページのクエリ文字列をチェックし、そして見つかるどんなフィルタでも適用します。\r
+フィルタパラメータは "f[x]=" の形でなければならず、"x" は列のインデックスです。(デフォルトは false )\r
+</dl>\r
+\r
+<h4>ヘッダ構成</h4>\r
+<dl>\r
+<dt>frozenColumns\r
+<dd>グリッドの左側の固定された列の数(Excel のように)\r
+\r
+<dt>headingSort\r
+<dd>ソートを容易にするために、どのように見出しが表示されるかを定義する文字列。\r
+  <ul>\r
+  <li>'link' -- 見出しに列をソートしてくれるリンクを作成します(デフォルト)\r
+  <li>'hover' -- ユーザは、ソートするために、見出しのセルのどんな部分でもクリックする事が出来ます。カーソルがセル上でホバーする時、見出しは背景色を変えます。\r
+  <li>'none' -- 見出し上のイベントは利用不能です。\r
+  </ul>\r
+\r
+<dt>hdrIconsFirst<dd>見出しの前後に、ソートとフィルタのアイコンを置きます(デフォルトは true)\r
+\r
+<dt><a name='allowColResize'>allowColResize</a><dd>ユーザによる列のリサイズを許しますか?\r
+true なら、個々の列のリサイズを利用不能にするために columnSpecs の <a href='#noResize'>noResize</a> を利用します。\r
+\r
+<dt>panels<dd>第二の見出しとして用いる事が出来る文字列の配列です。\r
+LiveGrid Forms で、入力フォーム上のタブを付けられたパネルのための見出しを提供します。\r
+\r
+<dt>PanelNamesOnTabHdr<dd>panels[] の文字列を第二の見出しとして利用するために 'true' を設定します。\r
+LiveGrid Forms では、 panels[] は入力フォームとしてのみ利用されるので、'false' が設定されるでしょう。\r
+\r
+<dt><a name='FilterLocation'></a>FilterLocation\r
+<dd>フィルタを設置する見出しの行を指定します。\r
+-1 は、新しい行をヘッダに追加し、新しい行がフィルタリングのために利用されるようにします。\r
+<a href='#filterUI'>filterUI</a> のオプションも見て下さい。\r
+\r
+<dt>FilterAllToken\r
+<dd>選択フィルタで "show all values" を示すトークン(デフォルトは "___ALL___")。\r
+</dl>\r
+\r
+<h4>画像</h4>\r
+<dl>\r
+<dt>resizeBackground\r
+<dd>列のリサイズハンドルに利用される画像(デフォルトは 'resize.gif')\r
+\r
+<dt>sortAscendImg\r
+<dd>列を昇順でソートする事を示すために使われる画像(デフォルトは 'sort_asc.gif')\r
+\r
+<dt>sortDescendImg\r
+<dd>列を降順でソートする事を示すために使われる画像(デフォルトは 'sort_desc.gif')\r
+\r
+<dt>filterImg\r
+<dd>列に対し現在利用中のフィルタを示すために使われる画像(デフォルトは 'filtercol.gif')\r
+</dl>\r
+\r
+\r
+<h4>クッキーオプション</h4>\r
+<dl>\r
+\r
+<dt>saveColumnInfo\r
+<dd>グリッドのクッキーに、どの詳細設定を保存するかを指定します。\r
+一つのクッキーだけが、それぞれのグリッドのために利用されます。\r
+幅の設定が、列の非表示/表示の状態を含む事に注意して下さい。\r
+(デフォルトは {width:true, filter:false, sort:false})\r
+<br>.netプラグインでは、このオプションは、3 つの別々のプロパティによって表現されます。\r
+saveColumnWidth、saveColumnFilter、saveColumnSort。\r
+\r
+<dt>cookiePrefix\r
+<dd>クッキー名の先頭に付け加えられる文字列(デフォルトは 'RicoGrid.')\r
+\r
+<dt>cookieDays\r
+<dd>数字の日数前のクッキーは期限切れになります。\r
+指定しなければ、クッキーは現在のセッションの間だけ維持されます。(デフォルトは null)\r
+\r
+<dt>cookiePath\r
+<dd>グリッドのクッキーを読む事が出来るトップレベルディレクトリを設定します。\r
+指定しなければ、それはクッキーを設定するページのパスになります。(デフォルトは null)\r
+\r
+<dt>cookieDomain\r
+<dd>クッキーがどのドメインに送られなければならないかについて、ブラウザに知らせます。\r
+指定しなければ、それはクッキーを設定するページのドメインになります。(デフォルトは null)\r
+\r
+</dl>\r
+\r
+<h4>ハイライティングとセレクション</h4>\r
+<dl>\r
+\r
+<dt>highlightElem\r
+<dd>何がハイライトまたは選択されるかについて指定する文字列。\r
+  <ul>\r
+  <li>'cursorRow' -- the grid row under the cursor\r
+  <li>'cursorCell' -- the grid cell under the cursor\r
+  <li>'menuRow' -- the grid row where the menu is displayed\r
+  <li>'menuCell' -- the grid cell where the menu is displayed\r
+  <li>'selection' -- allow the user to select cells\r
+  <li>'none' -- never highlight\r
+  </ul>\r
+\r
+<dt>highlightSection\r
+<dd>テーブルのどのセレクションがハイライトされるかについて指定する整数\r
+  <ul>\r
+  <li>1 -- 固定された部分\r
+  <li>2 -- スクロールする部分\r
+  <li>3 -- すべて(デフォルト)\r
+  <li>0 -- 無し\r
+  </ul>\r
+<dt>highlightMethod\r
+<dd>セルや行がハイライトされる方法。取り得る値は\r
+  <ul>\r
+  <li>'outline' -- クライアント側で、最も CPU 集約型では無い\r
+  <li>'class' -- ハイライトされた セル/行 のCSS クラスを追加(デフォルト)\r
+  <li>'both' -- アウトラインとクラスの両方を利用するハイライト\r
+  </ul>\r
+<dt>highlightClass\r
+<dd>クラスによってハイライトされる時、クラス名として利用されます(デフォルトは 'ricoLG_selection')\r
+</dl>\r
+\r
+<h4>エクスポートと印刷</h4>\r
+<dl>\r
+<dt>maxPrint\r
+<dd>ユーザに 印刷/エクスポート を許す最大行数。\r
+印刷/エクスポート を利用不能にするには 0 を設定します。(デフォルトは 1000)\r
+\r
+<dt>exportWindow\r
+<dd>エクスポートウィンドウが生成される時に、\r
+<a href='http://www.w3schools.com/htmldom/met_win_open.asp'>window.open()</a> に渡されるオプション文字列。\r
+(デフォルトは "height=400,width=500,scrollbars=1,menubar=1,resizable=1")\r
+</dl>\r
+\r
+<h4>イベントコントロール</h4>\r
+<dl>\r
+<dt><a name='menuEvent'></a>menuEvent\r
+<dd>グリッドメニューがいつ呼び出されるべきかを指定する文字列\r
+  <ul>\r
+  <li>'click' -- シングルクリックでメニューを呼び出す\r
+  <li>'dblclick' -- ダブルクリックでメニューを呼び出す(デフォルト)\r
+  <li>'contextmenu' -- 右クリックでメニューを呼び出す\r
+  <li>'none' -- メニューをポップアップしない\r
+  </ul>\r
+\r
+<dt>windowResize\r
+<dd>window.resize イベントの間にグリッドの大きさを変更するかどうかを指定する真偽値?\r
+グリッドがアコーディオンに組み込まれる時に、これに false が設定されなくてはなりません。(デフォルトは true)\r
+</dl>\r
+\r
+<h4>イベントハンドル</h4>\r
+<dl>\r
+<p>コンストラクタにオプションでイベントハンドラを渡す事は出来ませんが、LiveGrid が生成された後なら、設定されるかも知れません。</p>\r
+<dt>sortHandler<dd> (デフォルトは Rico.LiveGridMethods.sortHandler -- バインドされた)\r
+<dt>filterHandler<dd> (デフォルトは Rico.LiveGridMethods.filterHandler -- バインドされた)\r
+<dt>onRefreshComplete<dd> (デフォルトは Rico.LiveGridMethods.bookmarkHandler -- バインドされた)\r
+<dt>rowOverHandler<dd> (デフォルトは Rico.LiveGridMethods.rowMouseOver -- イベントリスナーとしてバインドされた)\r
+<dt>mouseDownHandler<dd> (デフォルトは Rico.LiveGridMethods.selectMouseDown -- イベントリスナーとしてバインドされた)\r
+<dt>mouseOverHandler<dd>(デフォルトは Rico.LiveGridMethods.selectMouseOver -- イベントリスナーとしてバインドされた)\r
+<dt>mouseUpHandler<dd> (デフォルトは Rico.LiveGridMethods.selectMouseUp -- イベントリスナーとしてバインドされた)\r
+<dt>onscroll<dd> グリッドが垂直にスクロールされる時は、いつでも呼ばれます。(デフォルトは null)\r
+<dt>onscrollidle<dd> グリッドが垂直にスクロールされた 1、2 秒後に呼ばれます。(デフォルトは null)\r
+<dt>click<dd> グリッドセルがクリックされた時に呼ばれます。(デフォルトは menuEvent='click' で無ければ null)\r
+<dt>dblclick<dd> グリッドセルがダブルクリックされた時に呼ばれます。(デフォルトは menuEvent='dblclick' で無ければ null)\r
+<dt>contextmenu<dd> グリッドセルが右クリックされた時に呼ばれます。(デフォルトは menuEvent='contextmenu' で無ければ null)\r
+</dl>\r
+\r
+<h4><a name="column"></a>列ごとの構成</h4>\r
+<dl>\r
+<p>各々の列のためのオプションは、columnSpecs オプションに含まれます。\r
+columnSpecs は、各々の列のためのエントリに関する配列です。\r
+各々の列のエントリは、以下のいずれかで行う事が出来ます。\r
+<ul>\r
+\r
+<li>null (デフォルト) -- その場合、Rico.TableColumn.DEFAULT. の仕様によって列はフォーマットされます。\r
+グリッドの多くの列が共通のフォーマットを共有するならば、グリッドのデフォルト列仕様をオーバーライドする事は意味があるかもしれません。\r
+<pre>\r
+Rico.TableColumn.DEFAULT = {ClassName:'aligncenter', width:50};\r
+</pre>\r
+この場合は、仕様の無いどんな列でも、整列は中央で幅は 50 ピクセルの内容を持ちます。\r
+\r
+<li>a string -- 列のフォーマットを指定する単純な方法を提供します。\r
+DOLLAR、EURO、PERCENT、QTY、DEFAULT の値がビルトインされています。\r
+独自のものを定めることも可能です。\r
+温度フォーマットを定義したこの例は、weather.php から取得されます\r
+\r
+<pre>\r
+Rico.TableColumn.TEMP = {type:'number', decPlaces:0, \r
+  ClassName:'alignright', suffix:'&amp;deg;C', width:50};\r
+var opts = {  \r
+  frozenColumns : 1,\r
+  columnSpecs   : [{width:120},{width:70},{width:70},{width:100},\r
+                   'TEMP','TEMP','TEMP',\r
+                   {width:150},{width:200},{width:60}]\r
+};\r
+</pre>\r
+\r
+<li>an object -- 下記の表にあるプロパティの一つ以上のエントリを含む。\r
+ここに、列 0、1 と 3 が仕様を含む例を挙げます。\r
+列 2 はデフォルトの仕様を取得します。\r
+<pre>\r
+columnSpecs : [{canSort:false, noResize:true, ClassName:'alignright'},\r
+               {ClassName:'aligncenter'},\r
+               ,\r
+               {visible:false}]\r
+</pre>\r
+</ul>\r
+\r
+<dt>Hdg\r
+<dd>列の見出しテキストを指定する代わりの方法。\r
+グリッド ID が、html テーブルの代わりに &lt;div&gt; を参照するなら、LiveGrid によってのみ利用されます。\r
+\r
+<dt>canSort\r
+<dd>列をソートする事が出来ます。(デフォルトは grid.options.canSortDefault)\r
+\r
+<dt>canFilter\r
+<dd>列をフィルタする事が出来ます。(デフォルトは grid.options.canFilterDefault)\r
+\r
+<dt>canDrag\r
+<dd>列のセルは、ドラッグアンドドロップオペレーションのソースとして用いられる事が出来ます。\r
+"DragAndDrop" モジュールはロードされなければなりません。\r
+一時的なドラッグオブジェクトは "LiveGridDraggable" クラスが持ちます。\r
+実例として、<a href='client/drag_and_drop_grid.html'>drag_and_drop_grid.html</a> を見て下さい。(デフォルトは false)\r
+\r
+<dt>canHide\r
+<dd>列を 表示/非表示 する事が出来ます。(デフォルトは grid.options.canHideDefault)\r
+\r
+<dt>visible\r
+<dd>列は、初めは隠されていません。\r
+grid.options.saveColumnInfo.width が true で、列のためのクッキーに値があるなら、クッキーの値が優先されます。\r
+(デフォルトは true)\r
+\r
+<dt><a name='width'></a>width\r
+<dd>列の初期幅(ピクセルで)を指定する整数。\r
+ここに、それぞれの列の初期幅を設定するために LiveGrid が利用するアルゴリズムがあります。\r
+<ol>\r
+<li>options.saveColumnInfo.width が true で、列情報がグリッドのクッキーに存在する場合は\r
+(以前にグリッドの列の上でリサイズを実行したユーザのために)\r
+クッキーのその幅が利用されます。\r
+そうでない場合は、、、\r
+\r
+<li>options.columnSpecs に列の幅仕様があれば、その幅仕様が利用されます。一例として、 ex3.php/asp/aspx を見て下さい。そうでない場合は、、、\r
+\r
+<li>options.useUnformattedColWidth が true で(デフォルト)、グリッドヘッダが html テーブルから初期化されるならば、htmlテーブルの列の幅が利用されます。\r
+通常 col タグを用いて初期テーブルの列幅をコントロールする事が出来ます。(例えば &lt;col style='width:40px;' &gt;)。\r
+\r
+テーブル幅全体がブラウザー幅より小さいならば、これは動作します。\r
+しかし、それがより大きいならば、ブラウザはしばしば "col width" を無視して、全ての列を利用できるウインドウ幅の中に押し込もうとします。\r
+このように、列幅を設定するためにこの方法を使用することは信頼出来ません。\r
+そうでない場合は、、、\r
+\r
+<li>options.useUnformattedColWidth が false ならば、列の幅は options.defaultWidth により設定されます。(デフォルトは 100)\r
+</ol>\r
+したがって、列幅を LiveGrid と SimpleGrid で設定する最も信頼できる方法は、options.columnSpecs[] ですべての列に幅を指定することになります。 \r
+多くの列が共通の幅を共有するならば、options.useUnformattedColWidth=false を設定して、options.defaultWidth を共通の幅に設定する事によって、\r
+いくらかの近道をする事が出来ます。\r
+\r
+<dt><a name='noResize'>noResize</a>\r
+<dd>列のリサイズを許しますか?(デフォルトは <a href='#allowColResize'>grid.options.allowColResize</a>)\r
+\r
+<dt>ClassName\r
+<dd>デフォルトでは、LiveGrid はユニークな CSS クラス名を、table_id + '_col' + column_index の命名規約に従い、それぞれの列に割り当てます。\r
+例えば、グリッド 'mygrid' の第 4 列は、クラス名 'mygrid_col3' を持ちます。\r
+ClassName オプションの値は、このデフォルト名をオーバーライドします。\r
+ClassName オプションは、Rico が提供する 'alignright' と 'aligncenter' クラスによって列の整列を指定するために、最も一般的に用いられます。\r
+なので、グリッドの最初の 3 つの列が赤い背景色に白いテキストで表示されることを望むならば、あなたは以下のどちらでもすることが出来ます。\r
+\r
+<pre>\r
+In CSS:\r
+.mygrid_col0 div.ricoLG_cell, \r
+.mygrid_col1 div.ricoLG_cell, \r
+.mygrid_col2 div.ricoLG_cell {\r
+  color: white;\r
+  background-color: red;\r
+}\r
+</pre>\r
+\r
+または\r
+\r
+<pre>\r
+In CSS:\r
+.WhiteOnRed div.ricoLG_cell {\r
+  color: white;\r
+  background-color: red;\r
+}\r
+\r
+In javascript:\r
+columnSpecs : [{ClassName:'WhiteOnRed'},\r
+               {ClassName:'WhiteOnRed'},\r
+               {ClassName:'WhiteOnRed'},\r
+               ...\r
+</pre>\r
+\r
+最後に、この ClassName がグリッドの見出しに適用されない点に注意してください - \r
+ヘッダの整列を達成するためには、&lt;th&gt; タグで align="right" を利用して下さい。\r
+\r
+<dt>type\r
+<dd>これらの値の内の一つを含む文字列。\r
+<ul>\r
+<li>text - 列の値のどんなタグでも、ユーザに表示される前に取り除かれます。\r
+<li>showTags - 列の値のどんなタグでも、ユーザにテキストとして表示されます。\r
+<li>number - 列の値は数として扱われ、列仕様で与えられるどんな <a href='#NumberFormatting'>number formatting options</a> でも適用されます。\r
+<li>datetime - 列の値は 日付 &amp; 時間 として扱われ、列仕様で与えられるどんな <a href='#DateFormatting'>date formatting options</a> でも適用されます。\r
+<li>UTCasLocalTime - 列やデータベースの値は GMT/UTC 日付 &amp; 時間 として扱われ、列仕様で与えられるどんな <a href='#DateFormatting'>date formatting options</a> でも適用されます。\r
+表示される前に、その値はユーザのローカルタイムゾーンに変換されます。\r
+<li>date - 列の値は日付として扱われ、列仕様で与えられるどんな <a href='#DateFormatting'>date formatting options</a> でも適用されます。\r
+<li>raw (default) - 列の値は、グリッドのセルに直接表示されます。どんなHTMLマークアップでもセルにコピーされます。\r
+</ul>\r
+</dd>\r
+\r
+<dt><a name='control'></a>コントロール\r
+<dd>特別なフォーマットを列に提供するのに用いられるオブジェクト。\r
+いくつかの列コントロールは LiveGrid により提供されます。\r
+それらのためのコードは、 ricoLiveGridControls.js にあります。\r
+ここに、提供されるコントロールの簡潔な記述があります。\r
+\r
+<dl style='font-size:smaller;'>\r
+<dt>Rico.TableColumn.checkboxKey(showKey)\r
+<dd> &lt;checkbox&gt; &lt;key value&gt; として列のユニークキーを表示し、どのキーがユーザによって選択されているかを見逃しません。\r
+キーの値は &lt;、 &gt;、 または &amp; を含むべきではありません。\r
+\r
+<dt>Rico.TableColumn.checkbox(checkedValue, uncheckedValue, defaultValue, readOnly)\r
+<dd>チェックボックスとして列を表示します。データベースの列は、二つの値のみを含まなければなりません(例えば yes/no)。\r
+以下のコードは、ex7 から取得されます(列の値は 1 と 0)。\r
+<pre>\r
+columnSpecs: [{canHide:false,\r
+               control:new Rico.TableColumn.checkbox('1','0'),\r
+               ClassName:'aligncenter'},\r
+              'specQty'],\r
+</pre>\r
+\r
+<dt>Rico.TableColumn.textbox(boxSize, boxMaxLen, readOnly)\r
+<dd>テキストボックス内に列の値を表示します。\r
+\r
+<dt>Rico.TableColumn.HighlightCell(chkcol,chkval,highlightColor,highlightBackground)\r
+<dd>特定の値が指定された列に存在する時、グリッドのセルをハイライトします。\r
+以下のコードは ex2highlight から取得され、列 1 が "HANAR" を含む時、行全体をハイライトします。\r
+<pre>\r
+var CustId='HANAR';\r
+var CustIdCol=1;\r
+var highlight=Rico.TableColumn.HighlightCell;\r
+...\r
+columnSpecs: [\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ type:'date', control:new highlight(CustIdCol,CustId,'red','yellow') },\r
+{ type:'date', control:new highlight(CustIdCol,CustId,'red','yellow') }]\r
+</pre>\r
+\r
+<dt>Rico.TableColumn.bgColor()\r
+<dd>データベースの値が css カラーの名前や値を含みます。\r
+\r
+<dt>Rico.TableColumn.link(href,target)\r
+<dd>データベースの値が、他のページへの URL を含みます。\r
+href パラメータは、文字列に "{x}" を含む事により、グリッドの値への参照を含むかもしれません。 x は列の番号です。\r
+以下のコードは ex6 から取得されます。\r
+<pre>\r
+columnSpecs: [,\r
+{control:new Rico.TableColumn.link('ex2.asp?id={0}','_blank'),\r
+ width:250},\r
+,'specQty']\r
+</pre>\r
+\r
+<dt>Rico.TableColumn.image()\r
+<dd>データベースの値が画像への url を含みます。\r
+以下のコードは photos.php から取得されます。\r
+<pre>\r
+imgctl=new Rico.TableColumn.image();\r
+...\r
+columnSpecs: [\r
+{control:imgctl,width:90},,,\r
+{type:'datetime'},{width:200}]\r
+</pre>\r
+\r
+<dt>Rico.TableColumn.lookup(map, defaultCode, defaultDesc)\r
+<dd>データベースの値を表示される値にマップします。\r
+</dl>\r
+\r
+<br>アプリケーション特有のロジックを実装する、独自の列コントロールを書く事も可能です。\r
+ここに例があります。\r
+<pre>\r
+// Display values white on black if\r
+//   first column contains the value "reverse"\r
+// Usage: { control:new MyCustomColumn() }\r
+MyCustomColumn = Class.create();\r
+\r
+MyCustomColumn.prototype = {\r
+  initialize: function() {},\r
+\r
+  _clear: function(gridCell,windowRow) {\r
+    gridCell.style.color='';\r
+    gridCell.style.backgroundColor='';\r
+    gridCell.innerHTML='&amp;nbsp;';\r
+  },\r
+\r
+  _display: function(v,gridCell,windowRow) {\r
+    var col0=this.liveGrid.buffer.getWindowValue(windowRow,0);\r
+    if (col0=="reverse") {\r
+      gridCell.style.color='white';\r
+      gridCell.style.backgroundColor='black';\r
+    } else {\r
+      gridCell.style.color='';\r
+      gridCell.style.backgroundColor='';\r
+    }\r
+    gridCell.innerHTML=this._format(v);\r
+  }\r
+}\r
+</pre>\r
+\r
+<dt><a name='filterUI'></a>filterUI\r
+<dd><a href='#FilterLocation'>FilterLocation</a> オプションがグリッドに指定されるならば、filterUI はそれぞれの列がどのようにフィルタされるかについてコントロールします。\r
+もし filterUI が、\r
+<ul>\r
+<li>null または省略されたら、列にはフィルタが表示されません。\r
+<li>'t' - テキストボックスフィルタを生成し、レコードはユーザのキーボードからの入力によってフィルタされて表示されます。\r
+<br>任意に後につくキャレット(^)は、テキストボックスの値が列の値の始めに一致すべき事を示します。\r
+そうでない場合は、列の値のどこにでも一致します。\r
+<br>任意に後につく数値はテキストボックスの数値を意味します(デフォルトのサイズは 10)\r
+<pre>\r
+filterUI:'t^20' \r
+// will create a text box that is 20 characters wide\r
+// text typed into the box will be compared to\r
+//    the beginning of each column value\r
+</pre>\r
+<li>'s' - リストに含む事の出来るすべての列の値と共にセレクトリストフィルタを生成します。\r
+グリッドのソースが SQL クエリなら、'select distinct' クエリを利用して実装されます。\r
+<ul>\r
+</dl>\r
+\r
+<dl>\r
+<a name='NumberFormatting'></a>\r
+<p><em>数値フォーマット:</em></p>\r
+\r
+<dt>multiplier\r
+<dd>表示される前に、その値はこの数値によって乗算されます。(デフォルトは 1)\r
+\r
+<dt>decPlaces\r
+<dd>小数点より右側の桁数(デフォルトは 0)\r
+\r
+<dt>decPoint\r
+<dd>小数点のシンボル(翻訳ファイルでオーバーライドされなければ、デフォルトは '.')\r
+\r
+<dt>thouSep\r
+<dd>千桁区切りのためのシンボル。(翻訳ファイルでオーバーライドされなければ、デフォルトは ',')\r
+\r
+<dt>negSign\r
+<dd>負数がどのように表示されるべきかを指定します。取り得る値は\r
+<ul>\r
+<li>L= 先頭にマイナスをつける(デフォルト)\r
+<li>T= 後ろにマイナスをつける\r
+<li>P= 括弧で囲む\r
+</ul>\r
+\r
+<dt>prefix\r
+<dd>数に始まりの文字列を付加します。一般的に通貨シンボルです。\r
+\r
+<dt>suffix\r
+<dd>数値の終わりに付加される文字列。例えば、 "%" シンボル。</dd>\r
+</dl>\r
+\r
+<dl>\r
+<a name='DateFormatting'></a>\r
+<p><em>日付フォーマット:</em></p>\r
+\r
+<dt>dateFmt\r
+<dd>date または datetime をどのように表示するのかを指定する文字列。\r
+デフォルトは "translateDate" であり、RicoTranslate オブジェクトで利用される dateFmt と timeFmt 文字列を意味します。\r
+(各種言語の翻訳ファイルでオーバーライドされなければ、、date のデフォルトは "mm/dd/yyyy" であり、datetime は "mm/dd/yyyy hh:mm:ss a/pm" です。)\r
+dateFmt="localeDate" ならば、その値は javascript のビルトイン関数である toLocaleDateString() を利用してフォーマットされる。\r
+dateFmt="localeDateTime" ならば、その値は javascript のビルトイン関数である toLocaleString() を利用してフォーマットされる。\r
+dateFmt 文字列は、以下の特殊文字シーケンスを含むでしょう。\r
+\r
+<ul>\r
+<li>yyyy - 4 桁の年\r
+<li>yy - 2 桁の年\r
+<li>mmmm - 月名\r
+<li>mmm - 3 文字の月名省略形。アジアの言語では、これはしばしば意味をなしません - これらの場合、それは完全な月の名前(mmmm と同じ)を返します。\r
+<li>mm - 2 桁の月数(ゼロで埋められた)\r
+<li>m - 1 または 2 桁の月数\r
+<li>dddd - 曜日\r
+<li>ddd - 3 文字の曜日省略形\r
+<li>dd - 2 桁の日数(ゼロで埋められた)\r
+<li>d - 1 または 2 桁の日数\r
+<li>hh - 2 桁の時、 12 時間時計(ゼロで埋められた)\r
+<li>h - 1 または 2 桁の時、 12 時間時計\r
+<li>HH - 2 桁の分、 24 時間時計(ゼロで埋められた)\r
+<li>H - 1 または 2 桁の時間、 24 時間時計\r
+<li>nn - 2 桁の分(ゼロで埋められた)\r
+<li>ss - 2 桁の秒(ゼロで埋められた)\r
+<li>a/p - a または p (am または pm のための)\r
+</ul>\r
+\r
+<pre>\r
+// display first column as "month year"\r
+columnSpecs : [{type:date, dateFmt:'mmm yyyy'}]\r
+</pre>\r
+</dd>\r
+\r
+<dt>prefix\r
+<dd>日付の先頭に付け加えられる文字列\r
+\r
+<dt>suffix\r
+<dd>日付の終わりに付加される文字列。例えば、タイムゾーンを含めるために利用出来ます。\r
+<pre>\r
+// indicate that times are GMT/UTC\r
+columnSpecs : [{type:datetime, suffix:' UTC'}]\r
+</pre>\r
+</dl>\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/SimpleGrid.html b/documentation/SimpleGrid.html
new file mode 100644 (file)
index 0000000..16ab95f
--- /dev/null
@@ -0,0 +1,455 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Rico SimpleGrid</title>\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>\r
+\r
+<body>\r
+<h1>Creating a Rico SimpleGrid</h1>\r
+\r
+<p><a href='SimpleGrid_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>\r
+<a href='SimpleGrid_ja.html'>View this page in Japanese</a></p>\r
+\r
+<p>SimpleGrid's are new to Rico 2.0 and share some of the same functionality as LiveGrids - \r
+resizable columns, frozen columns, and frozen headings. \r
+However, unlike a LiveGrid, the data is static and resides in the DOM -\r
+so no buffering, no AJAX refreshes, no sorting, no filtering.\r
+Why would you use a SimpleGrid? \r
+<ul>\r
+<li>Because it is more flexible in what each cell can contain - \r
+cells in a column do not all have to be of the same type.\r
+<li>In some circumstances, it can perform better on the client than LiveGrid; \r
+particularly on a slow client and there are many columns in the grid.\r
+<li>Finally, a SimpleGrid can contain input elements (checkboxes, select lists, etc). \r
+While a LiveGrid can also contain input elements, because the element values are stored in the\r
+LiveGrid buffer, submitting the values back to the server can be tricky.\r
+SimpleGrids do not suffer from this problem. You can simply surround the\r
+entire grid with standard <code>&lt;form&gt;...&lt;/form&gt;</code> tags and any\r
+input elements within the grid will be submitted back to the server.\r
+</ul>\r
+\r
+<p>SimpleGrids can be created either of two ways:\r
+<ol>\r
+<li>By using one of the SimpleGrid plug-ins. Plug-ins exist for PHP, ASP, and .net.\r
+<li>By using XSLT. Rico includes an XSL file that will convert a standard\r
+HTML table to a SimpleGrid.\r
+</ol>\r
+\r
+<h2>Usage Model 1: Using a SimpleGrid plug-in</h2>\r
+<p>This section describes the examples simplegrid.php/asp/aspx, \r
+which are included in the Rico distribution.\r
+<ul>\r
+<li>In PHP:\r
+<ul>\r
+<li>First, create a reference to the SimpleGrid plug-in:\r
+<pre>\r
+require "../../plugins/php/SimpleGrid.php";\r
+</pre>\r
+<li>Create an instance of the SimpleGrid plug-in class (server side):\r
+<pre>\r
+$grid=new SimpleGrid();\r
+</pre>\r
+\r
+<li>Create the grid's headings. Passing 'true' to AddHeadingRow indicates\r
+that this is the main heading row - the one that will get the resizers.\r
+The number of columns in the main heading row <em>must</em> be the same\r
+as the number of data columns. Other heading rows may include "colspan" tags\r
+to cover multiple columns. If you have multiple heading rows, one and only one\r
+row may be designated as the main row.\r
+<pre>\r
+$grid->AddHeadingRow(true);\r
+for ($c=1; $c<=$numcol; $c++) {\r
+  $grid->AddCell("Column $c");\r
+}\r
+</pre>\r
+\r
+<li>Populate the grid's data section. Call AddDataRow() everywhere you would normally\r
+place a <code>&lt;tr&gt;</code> tag in a standard html table. Call AddCell() everywhere you would\r
+place a <code>&lt;td&gt;</code> tag.\r
+<pre>\r
+for ($r=1; $r<=100; $r++) {\r
+  $grid->AddDataRow();\r
+  $grid->AddCell($r);\r
+  for ($c=2; $c<=$numcol; $c++) {\r
+    $grid->AddCell("Cell $r:$c");\r
+  }\r
+}\r
+</pre>\r
+\r
+<li>Render the table (generate the html output). The first parameter is the grid id, and the\r
+second parameter is the number of frozen columns.\r
+<pre>\r
+$grid->Render("ex1", 1);\r
+</pre>\r
+\r
+</ul>\r
+\r
+<li>In ASP:\r
+<ul>\r
+<li>First, create a reference to the SimpleGrid plug-in:\r
+<pre>\r
+&lt;!-- #INCLUDE FILE = "../../plugins/asp/SimpleGrid.vbs" --&gt;\r
+</pre>\r
+\r
+<li>Create an instance of the SimpleGrid plug-in class (server side):\r
+<pre>\r
+set grid=new SimpleGrid\r
+</pre>\r
+\r
+<li>Create the grid's headings. Passing 'true' to AddHeadingRow indicates\r
+that this is the main heading row - the one that will get the resizers.\r
+The number of columns in the main heading row <em>must</em> be the same\r
+as the number of data columns. Other heading rows may include "colspan" tags\r
+to cover multiple columns. If you have multiple heading rows, one and only one\r
+row may be designated as the main row.\r
+<pre>\r
+grid.AddHeadingRow true\r
+for c=1 to numcol\r
+  grid.AddCell "Column " & c\r
+next\r
+</pre>\r
+\r
+<li>Populate the grid's data section. Call AddDataRow() everywhere you would normally\r
+place a <code>&lt;tr&gt;</code> tag in a standard html table. Call AddCell() everywhere you would\r
+place a <code>&lt;td&gt;</code> tag.\r
+<pre>\r
+for r=1 to 100\r
+  grid.AddDataRow\r
+  grid.AddCell r\r
+  for c=2 to numcol\r
+    grid.AddCell "Cell " & r & ":" & c\r
+  next\r
+next\r
+</pre>\r
+\r
+<li>Render the table (generate the html output). The first parameter is the grid id, and the\r
+second parameter is the number of frozen columns.\r
+<pre>\r
+grid.Render "ex1", 1\r
+</pre>\r
+</ul>\r
+\r
+<li>In .net:\r
+<ul>\r
+<li>First, create a reference to the SimpleGrid plug-in:\r
+<pre>\r
+&lt;%@ Register TagPrefix="Rico" TagName="SimpleGrid" \r
+    Src="../../plugins/dotnet/SimpleGrid.ascx" %&gt;\r
+</pre>\r
+\r
+<li>Create an instance of the SimpleGrid plug-in class (server side):\r
+<pre>\r
+&lt;Rico:SimpleGrid runat='server' id='ex1' FrozenCols='1' /&gt;\r
+</pre>\r
+\r
+<li>Create the grid's headings - usually within the Page_Load event. \r
+Passing 'true' to AddHeadingRow indicates\r
+that this is the main heading row - the one that will get the resizers.\r
+The number of columns in the main heading row <em>must</em> be the same\r
+as the number of data columns. Other heading rows may include "colspan" tags\r
+to cover multiple columns. If you have multiple heading rows, one and only one\r
+row may be designated as the main row.\r
+<pre>\r
+  ex1.AddHeadingRow(true)\r
+  for c=1 to numcol\r
+    ex1.AddCell("Column " & c)\r
+  next\r
+</pre>\r
+\r
+<li>Populate the grid's data section. Call AddDataRow() everywhere you would normally\r
+place a <code>&lt;tr&gt;</code> tag in a standard html table. Call AddCell() everywhere you would\r
+place a <code>&lt;td&gt;</code> tag.\r
+<pre>\r
+  for r=1 to 100\r
+    ex1.AddDataRow()\r
+    ex1.AddCell(r)\r
+    for c=2 to numcol\r
+      ex1.AddCell("Cell " & r & ":" & c)\r
+    next\r
+  next\r
+</pre>\r
+\r
+<li>Unlike the other plug-ins, rendering happens automatically in the .net control.\r
+</ul>\r
+\r
+<li>Finally, regardless of the plug-in used, you need to \r
+initialize the javascript SimpleGrid object (client side):\r
+<pre>\r
+&lt;script type='text/javascript'&gt;\r
+Rico.loadModule('SimpleGrid','greenHdg.css');\r
+\r
+Rico.onLoad( function() {\r
+  var opts = {  \r
+    columnSpecs: ['specQty']  // display first column as a numeric quantity\r
+  };\r
+  var ex1=new Rico.SimpleGrid ('ex1', opts);\r
+});\r
+&lt;/script&gt;\r
+</pre>\r
+\r
+</ul>\r
+\r
+\r
+<h2>Usage Model 2: Using the XSLT transform</h2>\r
+\r
+<p>If your web page is XHTML compliant, then it is possible to turn a standard html table\r
+on that page into a SimpleGrid using the XSL stylesheet "ricoSimpleGrid.xsl". \r
+At one time, Rico supported doing this\r
+transformation on the client; however, due to changes in the Prototype library, this\r
+is no longer possible. Therefore, if you choose to use this approach, the XSLT transform\r
+<em>must</em> be performed on the server. Instructions for doing a server-side transform:\r
+<ul>\r
+<li><a href="http://www.php.net/manual/en/ref.xsl.php">using PHP5</a>\r
+<li><a href="http://www.topxml.com/dotnet/articles/xslt/default.asp">using .net</a>\r
+</ul>\r
+\r
+<p>The tranform will only convert tables with a class of "ricoSimpleGrid".\r
+<pre>\r
+&lt;table id='test1' class='ricoSimpleGrid'&gt;\r
+</pre>\r
+\r
+<p>Headings for frozen columns must have class="ricoFrozen"\r
+in the <code>&lt;th&gt;</code> tag. If there are multiple heading rows,\r
+then the main heading row should have an id ending in "_main" (this is the\r
+row that will display resizing handles). The transform\r
+will look for grid headings in the table's <code>&lt;thead&gt;</code> section.\r
+If no thead section exists, then the transform will assume the first row of the table\r
+is the heading row.\r
+<pre>\r
+&lt;table id="test1" class="ricoSimpleGrid"&gt;\r
+\r
+  &lt;thead&gt;\r
+     &lt;tr id="customer_livegrid_main"&gt;\r
+        &lt;th class="ricoFrozen"&gt;ID&lt;/th&gt;\r
+        &lt;th&gt;Customer&lt;/th&gt;\r
+        &lt;th&gt;Address&lt;/th&gt;\r
+        &lt;th&gt;City&lt;/th&gt;\r
+     &lt;/tr&gt;\r
+  &lt;/thead&gt;\r
+\r
+  &lt;tbody&gt;\r
+    &lt;!-- grid data --&gt;\r
+  &lt;/tbody&gt;\r
+&lt;/table&gt;\r
+</pre>\r
+\r
+<p>Finally, the SimpleGrid javascript object must be declared and initialized in a CDATA section.\r
+The call to ricoInit() is generated by the XSLT transform.\r
+<pre>\r
+&lt;script type="text/javascript"&gt;\r
+//&lt;![CDATA[\r
+\r
+function ricoInit() {\r
+  try {\r
+  Rico.loadModule('SimpleGrid');\r
+  Rico.onLoad(ricoInit2);\r
+  } catch(e) { alert(e.message); }\r
+}\r
+\r
+var grid1\r
+function ricoInit2() {\r
+  try {\r
+  grid1=new Rico.SimpleGrid ('test1',{maxHt:180});\r
+  } catch(e) { alert(e.message); }\r
+}\r
+//]]&gt;\r
+&lt;/script&gt;\r
+</pre>\r
+\r
+\r
+\r
+<h2>Reference</h2>\r
+\r
+<h3>Constructor</h3>\r
+<pre>\r
+\r
+  var grid = new Rico.SimpleGrid (table_id, grid_options);\r
+\r
+</pre>\r
+<ul><li><strong>table_id</strong> is the DOM id of the table to be populated by LiveGrid\r
+<li><strong>grid_options</strong> (see below)\r
+</ul>\r
+\r
+<h3>Options</h3>\r
+<h4>General options</h4>\r
+<dl>\r
+\r
+<dt>frozenColumns\r
+<dd>Number of frozen columns on the left side of the grid (default: 0)\r
+\r
+<dt>maxHt\r
+<dd>Maximum height of a SimpleGrid in pixels. (default: null)\r
+\r
+<dt>windowResize\r
+<dd>Resize grid on window.resize event?\r
+Set to false when embedded in an Accordian. (default: true)\r
+\r
+<dt>useUnformattedColWidth\r
+<dd>Use column widths in source html table when configuring the grid? (default: true)\r
+\r
+<dt>scrollBarWidth\r
+<dd>Used in positioning, does not actually change the width of the scrollbar. (default: 19)\r
+\r
+<dt>minScrollWidth\r
+<dd>When the width of the frozen columns exceeds the client window width, \r
+how wide should the total width of the scrolling columns be?\r
+\r
+<dt>highlightElem\r
+<dd>What gets highlighted in the grid. Possible values: \r
+<ul>\r
+<li>cursorRow - the grid row under the cursor\r
+<li>cursorCell - the grid cell under the cursor\r
+<li>menuRow - the relevant row when the user opens the grid's context menu\r
+<li>menuCell - the relevant cell when the user opens the grid's context menu\r
+<li>selection - the cells selected by the user\r
+<li>none - nothing is highlighted (default)\r
+</ul>\r
+\r
+<dt>exportWindow\r
+<dd>Option string that gets passed to window.open() when the user exports data from the grid.\r
+(default: "height=300,width=500,scrollbars=1,menubar=1,resizable=1")\r
+\r
+<dt>exportStyleList\r
+<dd>An array of CSS attributes that will be extracted from the each cell in the grid\r
+and used to format the exported table. \r
+(default: ['background-color', 'color', 'text-align', 'font-weight', 'font-size', 'font-family'])\r
+\r
+<dt>exportImgTags\r
+<dd>Boolean value that specifies whether img text should be included in the export. img text\r
+is the alt text if it exists, otherwise it is the title text, otherwise it is the src value. (default: true)\r
+\r
+<dt>exportFormFields\r
+<dd>Boolean value that specifies whether form fields should be included in the export. (default: true)\r
+</dl>\r
+\r
+\r
+<h4>Images</h4>\r
+<dl>\r
+<dt>resizeBackground\r
+<dd>Image to use for column resize handle. (default: 'resize.gif')\r
+\r
+<dt>sortAscendImg\r
+<dd>Image to use to indicate that the column is sorted in ascending order. (default: 'sort_asc.gif')\r
+\r
+<dt>sortDescendImg\r
+<dd>Image to use to indicate that the column is sorted in descending order. (default: 'sort_desc.gif')\r
+</dl>\r
+\r
+\r
+<h4>Menu and event-handling options</h4>\r
+<dl>\r
+\r
+<dt>contextmenu\r
+<dd>Action to take when the user right-clicks on a grid cell (default: null)\r
+\r
+<dt>menuEvent\r
+<dd>Event that triggers menus. Possible values: \r
+<ul>\r
+<li>click\r
+<li>dblclick (default)\r
+<li>contextmenu\r
+<li>none\r
+</ul>\r
+\r
+<dt>click\r
+<dd>Action to take when the user single-clicks on a grid cell (default: null)\r
+\r
+<dt>dblclick\r
+<dd>Action to take when the user double-clicks on a grid cell (default: null)\r
+\r
+</dl>\r
+\r
+<h4>Cookie options</h4>\r
+<dl>\r
+\r
+<dt>saveColumnInfo\r
+<dd>Specifies which details to save in the grid's cookie. Only one cookie is used for each grid.\r
+Note that the width setting includes the hide/show status of the column. \r
+(default: {width:true, filter:false, sort:false})\r
+\r
+<dt>cookiePrefix\r
+<dd>A string that is prepended to the cookie name. (default: 'RicoGrid.')\r
+\r
+<dt>cookieDays\r
+<dd>Number of days before the cookie expires. \r
+If you don't specify it, then the cookie is only maintained for the current session. (default: null)\r
+\r
+<dt>cookiePath\r
+<dd>Sets the top level directory from which the grid cookie can be read.\r
+If you don't specify it, it becomes the path of the page that sets the cookie. (default: null)\r
+\r
+<dt>cookieDomain\r
+<dd>Tells the browser to which domain the cookie should be sent. \r
+If you don't specify it, it becomes the domain of the page that sets the cookie. (default: null)\r
+\r
+</dl>\r
+\r
+<h4>Column defaults</h4>\r
+<dl>\r
+<dt style='font-weight:normal;'>Each of these items can be overridden \r
+on a per-column basis via the columnSpecs option.\r
+\r
+<dt>canSortDefault\r
+<dd>Are columns sortable by default? (LiveGrid default: true, SimpleGrid default: false)\r
+\r
+<dt>canFilterDefault\r
+<dd>Can the column be filtered? \r
+(LiveGrid default: RicoBuffer.options.canFilter, SimpleGrid default: false) \r
+\r
+<dt>canHideDefault\r
+<dd>Columns can be hidden/unhidden (default: true)\r
+\r
+<dt>allowColResize\r
+<dd>Allow user to resize columns (default: true)\r
+\r
+<dt>defaultWidth\r
+<dd>Default width of each column in pixels (default: 100)\r
+\r
+</dl>\r
+\r
+<h4>Per-column configuration</h4>\r
+<dl>\r
+<dt style='font-weight:normal;'>Options for each individual column are contained in the columnSpecs option.\r
+columnSpecs is an array with an entry for each column. \r
+Each column entry can either be:\r
+<ul>\r
+<li>null (default) --  in which case the column is formatted according to the spec in Rico.TableColumn.DEFAULT.\r
+<li>a string -- specifying one of the pre-defined formats: QTY, PERCENT, DOLLAR, or EURO\r
+<li>an object -- containing entries for one or more of the properties listed below.\r
+</ul>\r
+<p>Here is an example that contains specifications for columns 0, 1, and 3:\r
+<pre>\r
+columnSpecs : [{noResize:true, ClassName:'alignright'},\r
+               {ClassName:'aligncenter'},\r
+               ,\r
+               {visible:false}]\r
+</pre>\r
+\r
+<dt>canHide\r
+<dd>Column can be hidden/unhidden. (default: grid.options.canHideDefault)\r
+\r
+<dt>visible\r
+<dd>Column is initially unhidden. If grid.options.saveColumnInfo.width is true\r
+and there is a value in the cookie for this column, the cookie value will take precedence.\r
+(default: true)\r
+\r
+<dt>width\r
+<dd>Initial width for column. If grid.options.saveColumnInfo.width is true\r
+and there is a value in the cookie for this column, the cookie value will take precedence.\r
+(default: grid.options.defaultWidth)\r
+\r
+<dt>noResize\r
+<dd>Allow column to be resized? (default grid.options.allowColResize )\r
+\r
+<dt>ClassName\r
+<dd>Set this to 'alignright' or 'aligncenter' as needed - see example. \r
+Note that this does not align the header - \r
+use a align="right" on the &lt;th&gt; line to accomplish the header alignment.\r
+(default: table_id + '_col' + column_index)\r
+\r
+</dl>\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/SimpleGrid_ja.html b/documentation/SimpleGrid_ja.html
new file mode 100644 (file)
index 0000000..c69870f
--- /dev/null
@@ -0,0 +1,435 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Rico SimpleGrid</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>Rico SimpleGrid の作成</h1>
+
+<p>SimpleGrid は Rico 2.0 で追加され、LiveGrids と同じ機能のいくらかを共有します - 
+リサイズ可能な列、固定された列と固定された見出し。
+しかしながら、LiveGrid と異なり、データは静的であり DOM に存在します - 
+それゆえに、バッファリング、AJAX リフレッシュ、ソート、フィルタリングの機能がありません。
+なぜ、SimpleGrid を使うのでしょうか?
+<ul>
+<li>それぞれのセルが含むことが出来るものが、より柔軟であるので - 
+列内のセルがすべて同じタイプである必要はありません。
+<li>状況によって、それは LiveGrid よりクライアント上で、より良く実行することができます。
+特にグリッドに多くの列を表示している遅いクライアントで。
+<li>最後に、SimpleGrid は入力要素である(チェックボックス、セレクトリスト、その他)を含むことができます。 
+LiveGrid も入力要素を含むことができますが、要素の値が LiveGrid のバッファに保存されるので、
+サーバに値をサブミットするには扱いにくいです。
+SimpleGrids は、この問題で苦しみません。
+あなたが単に標準的な <code>&lt;form&gt;...&lt;/form&gt;</code> タグでグリッド全体を囲めば、
+グリッド中のどんな入力要素でもサーバーへサブミットされます。
+</ul>
+
+<p>SimpleGrids は、次の 2 つの方法で作成する事が出来ます。
+<ol>
+<li>SimpleGrid プラグインの中の 1 つを用いて。PHP、ASP と .net のためのプラグインが存在します。
+<li>XSLTを用いて。Rico は、標準的なHTMLテーブルを SimpleGrid に変換する XSL ファイルを持っています。
+</ol>
+
+<h2>利用モデル 1: SimpleGrid プラグインの利用</h2>
+<p>このセクションは、Rico ディストリビューションに含まれる 
+simplegrid.php/asp/aspx の実例について記述します
+<ul>
+<li>PHP では。
+<ul>
+<li>最初に、SimpleGrid プラグインへの参照を作成して下さい。
+<pre>
+require "../../plugins/php/SimpleGrid.php";
+</pre>
+<li>SimpleGrid プラグインクラスのインスタンスを作成して下さい(サーバサイド)。
+<pre>
+$grid=new SimpleGrid();
+</pre>
+
+<li>グリッドの見出しを作成して下さい。
+AddHeadingRow に 'true' を渡して、これがメインの見出し行である事を示します - 
+それはリサイザを得ます。
+メインの見出し行の列数は、データの列数と <em>必ず</em> 同じでなければなりません。
+他の見出し行は、複合列を扱うために "colspan" タグを含むかも知れません。
+複合見出し行を持つならば、唯一無二の一行だけが、メインの行として指定されるかもしれません。
+<pre>
+$grid->AddHeadingRow(true);
+for ($c=1; $c<=$numcol; $c++) {
+  $grid->AddCell("Column $c");
+}
+</pre>
+
+<li>グリッドデータセクションを実装して下さい。
+どこででも AddDataRow() を呼んで、通常は、標準的な html テーブルに <code>&lt;tr&gt;</code> タグを配置します。
+どこででも AddCell() を呼んで、 <code>&lt;td&gt;</code> タグを配置します。
+<pre>
+for ($r=1; $r<=100; $r++) {
+  $grid->AddDataRow();
+  $grid->AddCell($r);
+  for ($c=2; $c<=$numcol; $c++) {
+    $grid->AddCell("Cell $r:$c");
+  }
+}
+</pre>
+
+<li>テーブルをレンダリングして下さい(html 出力を生成します)。
+最初のパラメータはグリッド id で、第二のパラメータは、固定された列の数です。
+<pre>
+$grid->Render("ex1", 1);
+</pre>
+
+</ul>
+
+<li>ASP では。
+<ul>
+<li>最初に、SimpleGrid プラグインへの参照を作成して下さい。
+<pre>
+&lt;!-- #INCLUDE FILE = "../../plugins/asp/SimpleGrid.vbs" --&gt;
+</pre>
+
+<li>SimpleGrid プラグインクラスのインスタンスを作成して下さい(サーバサイド)。
+<pre>
+set grid=new SimpleGrid
+</pre>
+
+<li>グリッドの見出しを作成して下さい。
+AddHeadingRow に 'true' を渡して、これがメインの見出し行である事を示します - 
+それはリサイザを得ます。
+メインの見出し行の列数は、データの列数と <em>必ず</em> 同じでなければなりません。
+他の見出し行は、複合列を扱うために "colspan" タグを含むかも知れません。
+複合見出し行を持つならば、唯一無二の一行だけが、メインの行として指定されるかもしれません。
+<pre>
+grid.AddHeadingRow true
+for c=1 to numcol
+  grid.AddCell "Column " & c
+next
+</pre>
+
+<li>グリッドデータセクションを実装して下さい。
+どこででも AddDataRow() を呼んで、通常は、標準的な html テーブルに <code>&lt;tr&gt;</code> タグを配置します。
+どこででも AddCell() を呼んで、<code>&lt;td&gt;</code> タグを配置します。
+<pre>
+for r=1 to 100
+  grid.AddDataRow
+  grid.AddCell r
+  for c=2 to numcol
+    grid.AddCell "Cell " & r & ":" & c
+  next
+next
+</pre>
+
+<li>テーブルをレンダリングして下さい(html 出力を生成します)。
+最初のパラメータはグリッド id で、第二のパラメータは、固定された列の数です。
+<pre>
+grid.Render "ex1", 1
+</pre>
+</ul>
+
+<li>.net では。
+<ul>
+<li>最初に、SimpleGrid プラグインへの参照を作成して下さい。
+<pre>
+&lt;%@ Register TagPrefix="Rico" TagName="SimpleGrid" 
+    Src="../../plugins/dotnet/SimpleGrid.ascx" %&gt;
+</pre>
+
+<li>SimpleGrid プラグインクラスのインスタンスを作成して下さい(サーバサイド)。
+<pre>
+&lt;Rico:SimpleGrid runat='server' id='ex1' FrozenCols='1' /&gt;
+</pre>
+
+<li>グリッドの見出しを作成して下さい - 通常は Page_Load イベント内で。
+AddHeadingRow に 'true' を渡して、これがメインの見出し行である事を示します - 
+それはリサイザを得ます。
+メインの見出し行の列数は、データの列数と <em>必ず</em> 同じでなければなりません。
+他の見出し行は、複合列を扱うために "colspan" タグを含むかも知れません。
+複合見出し行を持つならば、唯一無二の一行だけが、メインの行として指定されるかもしれません。
+<pre>
+  ex1.AddHeadingRow(true)
+  for c=1 to numcol
+    ex1.AddCell("Column " & c)
+  next
+</pre>
+
+<li>グリッドデータセクションを実装して下さい。
+どこででも AddDataRow() を呼んで、通常は、標準的な html テーブルに <code>&lt;tr&gt;</code> タグを配置します。
+どこででも AddCell() を呼んで、<code>&lt;td&gt;</code> タグを配置します。
+<pre>
+  for r=1 to 100
+    ex1.AddDataRow()
+    ex1.AddCell(r)
+    for c=2 to numcol
+      ex1.AddCell("Cell " & r & ":" & c)
+    next
+  next
+</pre>
+
+<li>他のプラグインと違い、.net コントロールにより自動的にレンダリングされます。
+</ul>
+
+<li>最後に、利用されるプラグインに関係なく javascript SimpleGrid オブジェクトを
+初期化する必要があります(クライアントサイド):
+<pre>
+&lt;script type='text/javascript'&gt;
+Rico.loadModule('SimpleGrid','greenHdg.css');
+
+Rico.onLoad( function() {
+  var opts = {  
+    columnSpecs: ['specQty']  // display first column as a numeric quantity
+  };
+  var ex1=new Rico.SimpleGrid ('ex1', opts);
+});
+&lt;/script&gt;
+</pre>
+
+</ul>
+
+
+<h2>利用モデル 2: XSLT 変換の利用</h2>
+
+<p>ウェブページが XHTML 対応であるなら、ページ上の標準的な html テーブルを、
+"ricoSimpleGrid.xsl" XSL スタイルシートを利用した SimpleGrid にする事が可能です。
+一時、Rico はクライアントでこの変換をする事をサポートしていました。
+しかし、Prototype ライブラリの変化により、これは既に可能でありません。
+したがって、このアプローチを使う方を選ぶなら、XSLT 変換は <em>必ず</em> サーバで実行されなければなりません。
+サーバサイド変換を行うインストラクション。
+<ul>
+<li><a href="http://www.php.net/manual/en/ref.xsl.php">PHP5 を利用して</a>
+<li><a href="http://www.topxml.com/dotnet/articles/xslt/default.asp">.net を利用して</a>
+</ul>
+
+<p>この変換は "ricoSimpleGrid" クラスでテーブルをコンバートするだけです。
+<pre>
+&lt;table id='test1' class='ricoSimpleGrid'&gt;
+</pre>
+
+<p>固定された列の見出しは、 <code>&lt;th&gt;</code> タグに class="ricoFrozen" を持たなければなりません。
+複合見出し行があるならば、メインの見出し行は "_main" で終わる id を持たなければなりません
+(これは、リサイズハンドルを表示する行です)。
+その変換は、テーブルの <code>&lt;thead&gt;</code> セクションでグリッドの見出しを探します。
+thead セクションが存在しないなら、その変換はテーブルの最初の行が見出し列であると仮定します。
+<pre>
+&lt;table id="test1" class="ricoSimpleGrid"&gt;
+
+  &lt;thead&gt;
+     &lt;tr id="customer_livegrid_main"&gt;
+        &lt;th class="ricoFrozen"&gt;ID&lt;/th&gt;
+        &lt;th&gt;Customer&lt;/th&gt;
+        &lt;th&gt;Address&lt;/th&gt;
+        &lt;th&gt;City&lt;/th&gt;
+     &lt;/tr&gt;
+  &lt;/thead&gt;
+
+  &lt;tbody&gt;
+    &lt;!-- grid data --&gt;
+  &lt;/tbody&gt;
+&lt;/table&gt;
+</pre>
+
+<p>最後に、SimpleGrid javascript オブジェクトは、CDATA セクションで宣言と初期化が行われなければなりません。
+ricoInit() の呼び出しは、XSLT 変換によって生成されます。
+<pre>
+&lt;script type="text/javascript"&gt;
+//&lt;![CDATA[
+
+function ricoInit() {
+  try {
+  Rico.loadModule('SimpleGrid');
+  Rico.onLoad(ricoInit2);
+  } catch(e) { alert(e.message); }
+}
+
+var grid1
+function ricoInit2() {
+  try {
+  grid1=new Rico.SimpleGrid ('test1',{maxHt:180});
+  } catch(e) { alert(e.message); }
+}
+//]]&gt;
+&lt;/script&gt;
+</pre>
+
+
+
+<h2>リファレンス</h2>
+
+<h3>コンストラクタ</h3>
+<pre>
+
+  var grid = new Rico.SimpleGrid (table_id, grid_options);
+
+</pre>
+<ul><li><strong>table_id</strong> は、LiveGrid によって実装されるテーブルの DOM id です
+<li><strong>grid_options</strong>(下記参照)
+</ul>
+
+<h3>オプション</h3>
+<h4>一般的なオプション</h4>
+<dl>
+
+<dt>frozenColumns
+<dd>グリッドの左側の固定された列の数(デフォルトは 0)
+
+<dt>maxHt
+<dd>SimpleGrid の高さの最大ピクセル(デフォルトは null)
+
+<dt>windowResize
+<dd>window.resize イベントでグリッドをリサイズしますか?
+アコーディオンに埋め込まれる時は false を設定して下さい(デフォルトは true)
+
+<dt>useUnformattedColWidth
+<dd>グリッドの構成時に、html テーブルの列幅を利用しますか?(デフォルトは true)
+
+<dt>scrollBarWidth
+<dd>実際にはスクロールバーの幅を変えず、位置決めで使用されます。(デフォルトは 19)
+
+<dt>minScrollWidth
+<dd>固定された列の幅がクライアントウィンドウの幅を上回る時、
+スクロールしている列の幅の合計がどのくらい広がるべきですか?
+
+<dt>highlightElem
+<dd>グリッドで何がハイライトされますか。取り得る値は。
+<ul>
+<li>cursorRow - カーソルの下のグリッドの行
+<li>cursorCell - カーソルの下のグリッドのセル
+<li>menuRow - ユーザがグリッドのコンテキストメニューを開く時に関連のある行
+<li>menuCell - ユーザがグリッドのコンテキストメニューを開く時に関連のあるセル
+<li>selection - ユーザによって選択されるセル
+<li>none - 何もハイライトされない(デフォルト)
+</ul>
+
+<dt>exportWindow
+<dd>ユーザがグリッドからデータをエクスポートする時 window.open() に渡されるオプション文字列。
+(デフォルトは "height=300,width=500,scrollbars=1,menubar=1,resizable=1")
+</dl>
+
+
+<h4>画像</h4>
+<dl>
+<dt>resizeBackground
+<dd>列のリサイズハンドルに利用される画像(デフォルトは 'resize.gif')
+
+<dt>sortAscendImg
+<dd>列を昇順でソートする事を示すために使われる画像(デフォルトは 'sort_asc.gif')
+
+<dt>sortDescendImg
+<dd>列を降順でソートする事を示すために使われる画像(デフォルトは 'sort_desc.gif')
+</dl>
+
+
+<h4>メニューとイベントハンドリングオプション</h4>
+<dl>
+
+<dt>contextmenu
+<dd>ユーザがグリッドのセル上で右クリックした時に取る行動(デフォルトは null)
+
+<dt>menuEvent
+<dd>メニューのトリガーイベント。取り得る値は。
+<ul>
+<li>click
+<li>dblclick (デフォルト)
+<li>contextmenu
+<li>none
+</ul>
+
+<dt>click
+<dd>ユーザがグリッドのセル上でシングルクリックした時に取る行動(デフォルトは null)
+
+<dt>dblclick
+<dd>ユーザがグリッドのセル上でダブルクリックした時に取る行動(デフォルトは null)
+
+</dl>
+
+<h4>クッキーオプション</h4>
+<dl>
+
+<dt>saveColumnInfo
+<dd>グリッドのクッキーに、どの詳細設定を保存するかを指定します。
+一つのクッキーだけが、それぞれのグリッドのために利用されます。
+幅の設定が、列の非表示/表示の状態を含む事に注意して下さい。(デフォルトは {width:true, filter:false, sort:false}) 
+
+<dt>cookiePrefix
+<dd>クッキー名の先頭に付け加えられる文字列(デフォルトは 'RicoGrid.')
+
+<dt>cookieDays
+<dd>数字の日数前のクッキーは期限切れになります。
+指定しなければ、クッキーは現在のセッションの間だけ維持されます。(デフォルトは null)
+
+<dt>cookiePath
+<dd>グリッドのクッキーを読む事が出来るトップレベルディレクトリを設定します。
+指定しなければ、それはクッキーを設定するページのパスになります。(デフォルトは null)
+
+<dt>cookieDomain
+<dd>クッキーがどのドメインに送られなければならないかについて、ブラウザに知らせます。
+指定しなければ、それはクッキーを設定するページのドメインになります。(デフォルトは null)
+
+</dl>
+
+<h4>デフォルトの列</h4>
+<dl>
+<dt style='font-weight:normal;'>これらのアイテムはそれぞれ、
+columnSpecs  オプションによって、列ごとのベースにオーバーライドする事が出来ます。
+
+<dt>canSortDefault
+<dd>列はデフォルトでソート可能ですか?(LiveGrid のデフォルトは true、SimpleGrid のデフォルトは false)
+
+<dt>canFilterDefault
+<dd>列をフィルタする事が出来ますか?
+(LiveGrid のデフォルトは RicoBuffer.options.canFilter、SimpleGrid のデフォルトは false)
+
+<dt>canHideDefault
+<dd>列を 表示/非表示 する事が出来ますか?(デフォルトは true)
+
+<dt>allowColResize
+<dd>ユーザによる列のリサイズを許しますか? (デフォルトは true)
+
+<dt>defaultWidth
+<dd>それぞれの列のデフォルトのピクセル幅
+
+</dl>
+
+<h4>列ごとの構成</h4>
+<dl>
+<dt style='font-weight:normal;'>各々の列のためのオプションは、columnSpecs オプションに含まれます。
+columnSpecs は、各々の列のためのエントリに関する配列です。
+各々の列のエントリは、以下のいずれかで行う事が出来ます。
+<ul>
+<li>null (デフォルト) --  その場合、Rico.TableColumn.DEFAULT. の仕様によって列はフォーマットされます。
+<li>a string -- あらかじめ定義されたフォーマットの内の一つを定義します:QTY、PERCENT、DOLLAR、または EURO
+<li>an object -- 下記の表にあるプロパティの一つ以上のエントリを含みます。
+</ul>
+<p>ここに、列 0、1 と 3 が仕様を含む例を挙げます。
+<pre>
+columnSpecs : [{noResize:true, ClassName:'alignright'},
+               {ClassName:'aligncenter'},
+               ,
+               {visible:false}]
+</pre>
+
+<dt>canHide
+<dd>列を 表示/非表示 する事が出来ます。(デフォルトは grid.options.canHideDefault)
+
+<dt>visible
+<dd>列は、初めは隠されていません。
+grid.options.saveColumnInfo.width が true で、列のためのクッキーに値があるなら、クッキーの値が優先されます。
+(デフォルトは true)
+
+<dt>width
+<dd>列の初期幅。
+grid.options.saveColumnInfo.width が true で、列のためのクッキーに値があるなら、クッキーの値が優先されます。
+(デフォルトは grid.options.defaultWidth)
+
+<dt>noResize
+<dd>列のリサイズを許しますか?(デフォルトは grid.options.allowColResize)
+
+<dt>ClassName
+<dd>必要に応じて、これを 'alignright' または 'aligncenter' にセットして下さい - 例を見て下さい。
+これが見出しを整列しない事に注意して下さい - ヘッダの整列を達成するためには、&lt;th&gt; タグで align="right" を利用して下さい。
+(デフォルトは table_id + '_col' + column_index)
+
+</dl>
+
+</body>
+</html>
diff --git a/documentation/browsers.html b/documentation/browsers.html
new file mode 100644 (file)
index 0000000..fda2349
--- /dev/null
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Grid Browser Compatibility</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>Rico Grid Browser Compatibility</h1>
+
+<p><a href='browsers_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>
+<a href='browsers_ja.html'>View this page in Japanese</a></p>
+
+<p>Rico 2.x grid examples have been tested on the following browsers and operating systems.
+LiveGrid and SimpleGrid likely work in other environments 
+(e.g. Opera on the Mac, etc); this list
+just indicates where developer testing has been completed.
+Except where noted below, all aspects of the grid are fully functional.
+<p><table border="1" cellpadding='4' cellspacing='0' class="compat">
+       <thead><tr>
+         <th>&nbsp;</th>
+         <th colspan="3">Operating System</th>
+       </tr>
+       <tr>
+         <th>Browser</th>
+         <th>Windows XP/Vista</th>
+         <th>Macintosh 10.4</th>
+         <th>Linux (Knoppix 5)</th>
+       </tr></thead>
+       <tbody><tr>
+         <th>IE6</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>IE7</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>IE8</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>4</sup></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>FF 1.5/2.0</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>1</sup></td>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+       </tr>
+       <tr>
+         <th>FF 3.0</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>Opera 9.0 - 9.2</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>1,2,3</sup></td>
+         <td>&nbsp;</td>
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>1,2,3</sup></td>
+       </tr>
+       <tr>
+         <th>Opera 9.5 or later</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>2</sup></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>Safari 2.0</th>
+         <td>&nbsp;</td>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>Safari 3.x</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>Camino</th>
+         <td>&nbsp;</td>
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>1</sup></td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>Konqueror 3.5</th>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+       </tr>
+       <tr>
+         <th>Google Chrome (beta)</th>
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       </tbody>
+</table>
+<p>Notes:
+<ol>
+<li>In these configurations scrollbars are hidden when the menu is displayed
+(the scrollbars interfered with the menus).
+<li>In Opera, when using double-clicking to invoke menus, you should
+  turn off Opera's "Double click text to display context menu" setting by
+  going to Tools > Preferences > Advanced tab > Toolbars.
+<li>LiveGrid Forms is not recommended with Opera versions less than 9.5 due to a 
+<a href="http://dowdybrown.com/dbprod/testselect.htm">bug</a> 
+in the way it handles select boxes.
+<li>The production release of IE8 works correctly with Rico 2.1 in both standards and compatibility modes. 
+With Rico 2.0, the column resizer image is not displayed in grids, but everything else works. 
+Pre-release versions of IE8 only worked with Rico when IE8 was set to compatibility mode.
+</ol>
+
+<p>The <a href="http://laptop.org">OLPC</a> contains a custom browser based on 
+the Gecko layout engine. Rico runs without issue on this system.
+
+<p>Firefox versions 1.x and 2.x displayed minor artifacts when a popup menu
+overlayed a scrollbar. This is fixed in version 3.
+
+<p>In order to display properly, a browser displaying a LiveGrid must be operating in 
+<a href="http://www.quirksmode.org/css/quirksmode.html">strict (aka standards) mode</a>.
+
+
+</body>
+</html>
diff --git a/documentation/browsers_ja.html b/documentation/browsers_ja.html
new file mode 100644 (file)
index 0000000..1cc291b
--- /dev/null
@@ -0,0 +1,110 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<title>Grid Browser Compatibility</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>Rico Grid のブラウザ互換性</h1>
+
+<p>Rico 2.0 グリッドの実例は、以下のブラウザとオペレーティングシステム上でテストされました。
+LiveGrid と SimpleGrid は、他の環境でも、おそらく動きます。
+(例えば、MS Vista、Mac 上の Opera、その他)
+この表は、単に開発者のテストがどの環境で行われ、完了したかについて示します。
+下で注意される場合を除き、グリッドのすべての側面は完全に機能的です。
+<p><table border="1" cellpadding='4' cellspacing='0' class="compat">
+       <thead><tr>
+         <th>&nbsp;</th>
+         <th colspan="3">オペレーティングシステム</th>
+       </tr>
+       <tr>
+         <th>ブラウザ</th>
+         <th>Windows XP</th>
+         <th>Macintosh 10.4</th>
+         <th>Linux (Knoppix 5)</th>
+       </tr></thead>
+       <tbody><tr>
+         <th>IE6</th>
+         <td><img src='images/checkmark.gif'></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>IE7</th>
+         <td><img src='images/checkmark.gif'></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>FF 1.5/2.0</th>
+         <td><img src='images/checkmark.gif'></td>
+         <td><img src='images/checkmark.gif'><sup>1</sup></td>
+         <td><img src='images/checkmark.gif'></td>
+       </tr>
+       <tr>\r
+         <th>FF 3.0</th>\r
+         <td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+         <td>&nbsp;</td>\r
+         <td>&nbsp;</td>\r
+       </tr>\r
+       <tr>\r
+         <th>Opera 9.0 - 9.2</th>\r
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>1,2,3</sup></td>\r
+         <td>&nbsp;</td>\r
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>1,2,3</sup></td>\r
+       </tr>\r
+       <tr>\r
+         <th>Opera 9.5+</th>\r
+         <td><img src='images/checkmark.gif' alt='checkmark'><sup>2</sup></td>\r
+         <td>&nbsp;</td>\r
+         <td>&nbsp;</td>\r
+       </tr>\r
+       <tr>
+         <th>Safari 2.0</th>
+         <td>&nbsp;</td>
+         <td><img src='images/checkmark.gif'></td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>Safari 3.0 (beta)</th>
+         <td><img src='images/checkmark.gif'></td>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>Camino</th>
+         <td>&nbsp;</td>
+         <td><img src='images/checkmark.gif'><sup>1</sup></td>
+         <td>&nbsp;</td>
+       </tr>
+       <tr>
+         <th>Konqueror 3.5</th>
+         <td>&nbsp;</td>
+         <td>&nbsp;</td>
+         <td><img src='images/checkmark.gif'></td>
+       </tr></tbody>
+</table>
+<p>注意
+<ol>
+<li>1. これらの構成では、メニューが表示される時、スクロールバーは隠されます
+(スクロールバーはメニューに干渉しました)。
+<li>Operaでは、ダブルクリックを使用してメニューを呼び出す場合、
+"Tools -> Preferences -> Advanced tab -> Toolbars" へ行き、
+Opera の "Double click text to display context menu" をオフにするべきです。
+<li>LiveGridForms は、
+選んだボックスを扱う方法に関する <a href="http://dowdybrown.com/dbprod/testselect.htm">バグ</a> のため Opera で利用する事は
+推薦されません。<em>朗報です! このバグはバージョン9.5で直されるようです。</em>
+</ol>
+
+<p><a href="http://laptop.org">OLPC</a> は Gecko レイアウトエンジンに基づくカスタムブラウザを含んでいます。
+Rico は、このシステム上で問題無く実行出来ます。
+
+<p>Firefox のバージョンが 1.x と 2.x で、ポップアップメニューがスクロールバーの上に来た場合、
+minor artifacts を表示しました。これは、バージョン3で改善されるようです。
+
+<p>IE8 ベータ 1 は、IE7 互換モードで操作する時だけ動作します。
+
+</body>
+</html>
diff --git a/documentation/grids.html b/documentation/grids.html
new file mode 100644 (file)
index 0000000..9102090
--- /dev/null
@@ -0,0 +1,201 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Rico Grid Overview</title>\r
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>\r
+\r
+<body>\r
+<h1>Rico Grids</h1>\r
+\r
+<p><a href='grids_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>\r
+<a href='grids_ja.html'>View this page in Japanese</a></p>\r
+\r
+<p>The Rico library supports 2 different types of grids: \r
+<strong>LiveGrid</strong> and <strong>SimpleGrid</strong>. \r
+LiveGrid data is always buffered in a 2-dimensional JavaScript array. As the user scrolls\r
+vertically through the grid, data is dynamically copied from the array onto the grid.\r
+SimpleGrids on the other hand are unbuffered -- all data for the grid exists in the \r
+<a href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a>, not\r
+in a JavaScript data structure.\r
+\r
+<p>Both types of grids share some common features, including:\r
+<ul>\r
+<li>column headings that stay fixed and don't scroll off the top of the screen\r
+<li>frozen columns on the left side of the grid\r
+<li>resizable columns\r
+<li>common css styling - styles developed for LiveGrids also work for SimpleGrids and vice versa\r
+<li>compatibility with languages that read right-to-left (rtl) - \r
+<a href="asp/rtl/ex1.asp">ASP</a> &amp; <a href="php/rtl/ex1.php">PHP</a> examples are included\r
+<li>compatibility with Rico pop-up (context) menus\r
+</ul>\r
+\r
+<hr>\r
+<h2>LiveGrid</h2>\r
+<p>Rico provides lots of support for loading a LiveGrid buffer. The buffer can can be loaded from:\r
+<ul>\r
+<li>a SQL database query\r
+<li>an XML file\r
+<li>an HTML table\r
+<li>a javascript array\r
+</ul>\r
+\r
+<h3>Connecting LiveGrid to a database</h3>\r
+<p>To simplify the task of loading a LiveGrid with SQL query results, Rico comes with a set of "plug-ins" which\r
+connect your database to your LiveGrid. Rico plug-ins have been tested with the following\r
+databases:\r
+\r
+<p><table border='1' cellspacing='0' cellpadding='4' class='compat' style='margin-bottom:0px'>\r
+<thead>\r
+<tr>\r
+<th>&nbsp;</th>\r
+<th>MySQL</th>\r
+<th>Oracle</th>\r
+<th>DB2</th>\r
+<th>SQL Server</th>\r
+<th>MS Access</th>\r
+</tr>\r
+</thead>\r
+<tbody>\r
+<tr>\r
+<th>PHP</th>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td>&nbsp;</td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+</tr>\r
+<tr>\r
+<th>ASP</th>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+</tr>\r
+<tr>\r
+<th>.net</th>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+<td><img src='images/checkmark.gif' alt='checkmark'></td>\r
+</tr>\r
+</tbody>\r
+</table>\r
+<p style='font-size:8pt; margin:0px;'>Rico plug-in/database compatibility as of Nov 2007\r
+<br>\r
+<br>* The ASP plug-in uses ADO and the .net plug-in uses ADO.net,\r
+<br>and thus should be able to connect with any data source that is compatible with ADO</p>\r
+\r
+<p>LiveGrid uses <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">AJAX</a> \r
+technology so that only a portion of the SQL query result is\r
+sent to the client at a time. As the user scrolls the grid, the JavaScript code determines\r
+which portion of the query results are required and sends an AJAX request back to the plug-in.\r
+The plug-in retrieves those results from the database and returns them back to the client.\r
+So whether your query returns 10 rows or 100,000 rows, LiveGrid can display the results\r
+quickly and easily with an intuitive user interface.\r
+\r
+<p>Finally, if your users are allowed to make changes to the data, the Rico plug-ins \r
+make that easy too. Just define your grid using <strong>LiveGrid Forms</strong> -- \r
+Add, Edit, and Delete record\r
+selections will be added to the grid's context (popup) menu. \r
+\r
+<ul>\r
+<li>When Add or Edit is selected, a popup\r
+form will be presented to the user. \r
+<li>When the user "saves" the form, the data is posted back\r
+to the original script, which writes the results back to the database. \r
+</ul>\r
+\r
+<p>If it sounds complicated, don't worry! All of this work is handled by the plug-in. \r
+See the "ex2edit" example\r
+for a demonstration of how easy it is, both for the user and the programmer.\r
+"ex4edit" demonstrates how to make multiple grids on a page editable.\r
+\r
+<h3>Populating LiveGrid with XML</h3>\r
+\r
+<p>While plug-ins make it easy to load data into a LiveGrid, they are not required.\r
+A LiveGrid buffer can be loaded with XML data from any source, as long as the data follows this format:\r
+\r
+<pre>\r
+&lt;ajax-response&gt;\r
+&lt;response type='object' id='MyGridId_updater'&gt;\r
+&lt;rows update_ui='true' offset='0'&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 1, cell 1&lt;/td&gt;&lt;td&gt;Data for row 1, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;tr&gt;&lt;td&gt;Data for row 2, cell 1&lt;/td&gt;&lt;td&gt;Data for row 2, cell 2&lt;/td&gt;&lt;/tr&gt;\r
+&lt;/rows&gt;\r
+&lt;/response&gt;\r
+&lt;/ajax-response&gt;\r
+</pre>\r
+\r
+<p>See the weather and photo examples, which retrieve data from Yahoo Weather and Flickr respectively and reformat the data\r
+into the structure shown above. These examples are currently available in PHP and .net versions, but not ASP.\r
+\r
+<h3>Populating LiveGrid with data from an HTML table</h3>\r
+\r
+<p>A LiveGrid can also be easily created on a web page that contains a traditional HTML table.\r
+Just assign an id to the table and pass that id in during LiveGrid initialization. Headings\r
+will be taken from the table's thead section and data from the tbody. No AJAX is\r
+performed in this case, but the data is still buffered in a JavaScript array. Several\r
+examples are included in the Rico distribution, look for the ones marked "LiveGrid-Static Buffer"</p>\r
+\r
+<hr>\r
+<h2>SimpleGrid</h2>\r
+\r
+<p>SimpleGrid's are new to Rico 2.0 and share some of the same functionality as LiveGrids - \r
+resizable columns, frozen columns, and frozen headings. \r
+However, unlike a LiveGrid, the data is static and resides in the DOM -\r
+so no buffering, no AJAX refreshes, no sorting, no filtering.\r
+Why would you use a SimpleGrid? \r
+<ol>\r
+<li>Because it is more flexible in what each cell can contain - \r
+cells in a column do not all have to be of the same type.\r
+<li>In some circumstances, it can perform better on the client than LiveGrid; \r
+particularly on a slow client displaying a grid with many columns.\r
+<li>Finally, a SimpleGrid can contain input elements (checkboxes, select lists, etc). \r
+While a LiveGrid can also contain input elements, because the element values are stored in the\r
+LiveGrid buffer, submitting the values back to the server can be tricky.\r
+SimpleGrids do not suffer from this problem. You can simply surround the\r
+entire grid with standard &lt;form&gt;&lt;/form&gt; tags and any\r
+input elements within the grid will be submitted back to the server.\r
+</ol>\r
+\r
+<p>The most sophisticated example of a SimpleGrid is the spreadsheet\r
+included with this distribution. You can enter formulas and it will\r
+recalculate when you change the inputs - just like a commercial spreadsheet.\r
+A link to the spreadsheet example can be found under the "HTML Examples" section\r
+of the examples menu.\r
+When in the spreadsheet, click the <img alt="help" style="vertical-align:top;" src="images/sheet/help.gif"> button to see all it can do.\r
+\r
+<p>SimpleGrids can be created either of two ways:\r
+<ul>\r
+<li>By using one of the SimpleGrid plug-ins. Plug-ins exist for PHP, ASP, and .net.\r
+<li>By using XSLT. Rico includes an XSL file that will convert a standard\r
+HTML table to a SimpleGrid.\r
+</ul>\r
+\r
+<h3>Creating a SimpleGrid by using a plug-in</h3>\r
+\r
+<p>Each plug-in defines a SimpleGrid class. Within the class, there are methods\r
+to start header rows and data rows - just call one of these methods everywhere\r
+you would put a &lt;tr&gt; tag in an HTML table. There is also a method to\r
+create a cell - just call it everywhere\r
+you would put a &lt;th&gt; or &lt;td&gt; tag in an HTML table.\r
+When you are done defining the table content, just call the render method\r
+(except in the .net plugin where render is called automatically).\r
+It's that easy!\r
+\r
+<h3>Creating a SimpleGrid by using XSLT</h3>\r
+\r
+<p>If your web page is XHTML compliant, then there is another way to generate a SimpleGrid.\r
+Just use the XSL stylesheet "ricoSimpleGrid.xsl" to transform tables in your page\r
+to SimpleGrids. The stylesheet looks for tables with a class name of "ricoSimpleGrid" \r
+and then does the transformation for you. At one time, Rico supported doing this\r
+transformation on the client. However, due to changes in the Prototype library, this\r
+is no longer possible. Therefore, if you choose to use this approach, the XSLT transform\r
+must be performed on the server.\r
+\r
+</body>\r
+</html>\r
diff --git a/documentation/grids_ja.html b/documentation/grids_ja.html
new file mode 100644 (file)
index 0000000..5563947
--- /dev/null
@@ -0,0 +1,197 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<title>Rico Grid Overview</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>Rico のグリッド</h1>
+<p>Rico ライブラリは 2 つの異なったタイプのグリッドをサポートします。
+<strong>LiveGrid</strong> と <strong>SimpleGrid</strong>. 
+LiveGrid のデータは、2次元の JavaScript 配列で、常にバッファリングされます。
+ユーザがグリッドを通して垂直にスクロールするとき、データは配列からグリッドに動的にコピーされます。
+一方、SimpleGrids はバッファリングを行いません。
+-- グリッドのためのすべてのデータは JavaScript のデータ構造では無く、
+<a href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a> に存在しています。
+
+<p>どちらのタイプのグリッドも、次のようないくつかの共通点を持っています。
+<ul>
+<li>画面上部で切り離されてスクロールしない、固定された列見出し
+<li>グリッドの左端で固定された列
+<li>リサイズ可能な列
+<li>共通の css スタイリング - LiveGrids 用に開発されたスタイルは、SimpleGrids でも同様に機能します
+<li>右から左に読む言語(rtl)との互換性 - 
+<a href="asp/rtl/ex1.asp" target="_top">ASP</a> と <a href="php/rtl/ex1.php" target="_top">PHP</a> の実例に含まれます</a>
+<li>Rico のポップアップ(コンテキスト)メニューとの互換性
+</ul>
+
+<hr>
+<h2>LiveGrid</h2>
+<p>Rico は、LiveGrid バッファをロードするために多くのサポートを提供します。
+バッファは次の項目からロードする事が出来ます。
+<ul>
+<li>SQL データベースクエリ
+<li>XML ファイル
+<li>HTML テーブル
+<li>javascript 配列
+</ul>
+
+<h3>LiveGrid のデータベース接続</h3>
+<p>SQL クエリの実行結果を LiveGrid にロードするタスクを簡素化するために、
+Rico にはデータベースと LiveGrid を接続する "plug-ins" のセットが付属しています。
+Rico プラグインは次のデータベースでテストされました。
+
+<p><table border='1' cellspacing='0' cellpadding='4' class='compat' style='margin-bottom:0px'>
+<thead>
+<tr bgcolor='#DDD'>
+<th>&nbsp;</th>
+<th>MySQL</th>
+<th>Oracle</th>
+<th>DB2</th>
+<th>SQL Server</th>
+<th>MS Access</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<th>PHP</th>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+<td>&nbsp;</td>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+</tr>
+<tr>
+<th>ASP</th>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+</tr>
+<tr>
+<th>.net</th>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+<td><img src='images/checkmark.gif'></td>
+</tr>
+</tbody>
+</table>
+<p style='font-size:8pt; margin:0px;'>2007 年 11 月における Rico プラグイン/データベース の互換性
+<br>
+<br>* ASP プラグインは ADO を、.netプラグインは ADO.net を使用するので、
+<br>ADO と互換性があるどんなデータソースにも接続することができるはずです。</p>
+
+<p>LiveGrid は <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">AJAX</a> テクノロジーを使うので、
+一度にクライアントへ送る SQL クエリの実行結果は一部だけです。
+ユーザーが格子をスクロールすると、
+JavaScript コードはクエリの結果のどの部分が必要とされているかについて決定し、
+AJAX リクエストをプラグインに送り返します。
+プラグインはそれらの結果をデータベースから検索して、それらをクライアントに返します。
+なので、クエリが返す結果が 10 行か 100,000 行かに関係なく、
+LiveGrid はインタラクティブなユーザインタフェースで迅速かつ容易に結果を表示する事ができます。
+
+<p>最後に、もしユーザーがデータの変更を許されているならば、Rico プラグインは、それさえも簡単にします。
+単に <strong>LiveGrid Forms</strong> を使っているグリッドを定義して下さい 
+-- レコードセレクションの追加、編集、そして削除は、グリッドのコンテキスト(ポップアップ)メニューから追加されます。
+
+<ul>
+<li>追加や編集が選ばれるとき、ポップアップフォームはユーザに提示されます。
+<li>ユーザーがフォームを "保存する" とき、データはオリジナルスクリプトへポストバックされ、
+それはデータベースへ結果を書きます。
+</ul>
+
+それが複雑に聞こえるならば、心配しないでください!
+この仕事の全ては、プラグインによって取り扱われます。
+それがユーザーとプログラマーの両方にとって、
+どれくらい簡単かという実証については、 "ex2edit" の実例を見て下さい。
+"ex4edit" は、一つのページ内で複数のグリッドを編集可能にする方法を示します。
+
+<h3>LiveGrid の XML 実装</h3>
+
+<p>LiveGrid にデータをロードするのがプラグインで簡単になっている間は、それらは必要ではありません。
+データがこの形式に従う限り、どんなソースからも LiveGrid のバッファを XML データにロードする事が出来ます。
+
+<pre>
+&lt;ajax-response&gt;
+&lt;response type='object' id='MyGridId_updater'&gt;
+&lt;rows update_ui='true' offset='0'&gt;
+&lt;tr&gt;&lt;td&gt;Data for row 1, cell 1&lt;/td&gt;&lt;td&gt;Data for row 1, cell 2&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;Data for row 2, cell 1&lt;/td&gt;&lt;td&gt;Data for row 2, cell 2&lt;/td&gt;&lt;/tr&gt;
+&lt;/rows&gt;
+&lt;/response&gt;
+&lt;/ajax-response&gt;
+</pre>
+
+天気と写真の実例を見てください、それぞれ Yahoo 天気情報と Flickr からデータを検索して、上記のデータ構造に再フォーマットしています。
+これらの実例は、現在、、ASP では無く PHP と .net のバージョンで利用できます。
+
+<h3>HTML テーブルデータによる LiveGrid 実装</h3>
+
+<p>LiveGrid は伝統的な HTML テーブルを持つウェブページの上で簡単に作る事も出来ます。
+単に ID をテーブルに割り当てて、LiveGrid の初期化中に、そのIDを渡してください。
+テーブルの thead セレクションと tbody のデータから見出しは取得する事が出来ます。
+この場合 AJAX は実行されませんが、データは JavaScript 配列でまだバッファリングされます。
+いくつかの実例は Rico ディストリビューションに含まれますので、
+"LiveGrid-Static Buffer" と印されている物を探して下さい。
+</p>
+
+<hr>
+<h2>SimpleGrid</h2>
+
+<p>SimpleGrid は Rico 2.0 にとって新しく、LiveGrids と同じ機能のいくらかを共有します
+ - リサイズ可能な列、固定された列と固定された見出し。
+しかしながら、LiveGrid と異なり、データは静的であり DOM に存在します
+ - それゆえに、バッファリング、AJAX リフレッシュ、ソート、フィルタリングの機能がありません。
+なぜ、SimpleGrid を使うのでしょうか?
+<ol>
+<li>それぞれのセルが含むことが出来るものが、より柔軟であるので - 
+列内のセルがすべて同じタイプである必要はありません。
+<li>状況によって、それは LiveGrid よりクライアント上で、より良く実行することができます。
+特にグリッドに多くの列を表示している遅いクライアントで。
+<li>最後に、SimpleGrid は入力要素である(チェックボックス、セレクトリスト、その他)を含むことができます。
+LiveGrid も入力要素を含むことができますが、要素の値が LiveGrid のバッファに保存されるので、
+サーバに値をサブミットするには扱いにくいです。
+SimpleGrids は、この問題で苦しみません。
+あなたが単に標準的な &lt;form&gt;&lt;/form&gt; タグでグリッド全体を囲めば、
+グリッド中のどんな入力要素でもサーバーへサブミットされます。
+</ol>
+
+<p>SimpleGrid の最も洗練された例は、ディストリビューションに含まれているスプレッドシートです。
+式を入力する事ができ、入力値を変更すると、それは再計算されるでしょう - 
+まさしく商業スプレッドシートのように。
+実例のメニューの "HTML Examples" のセクションでスプレッドシートへのリンクを見つけることができます。
+スプレッドシートで、 <img alt="help" src="images/sheet/help.gif"> ボタンをクリックして、それができるすべてを見て下さい。
+
+<p>SimpleGrids は、次の 2 つの方法で作成する事が出来ます。
+<ul>
+<li>SimpleGrid プラグインの中の 1 つを用いて。PHP、ASP と .net のためのプラグインが存在します。
+<li>XSLTを用いて。Rico は、標準的なHTMLテーブルを SimpleGrid に変換する XSL ファイルを持っています。
+</ul>
+
+<h3>プラグインを利用しての SimpleGrid の作成</h3>
+
+<p>各プラグインは SimpleGrid のクラスを定義します。
+クラスの中に、ヘッダ行とデータ行を始めるメソッドがあります。 - 
+HTML テーブル内のどこかに &lt;tr&gt; タブを置いて、それらのメソッドの内の一つを呼ぶだけです。
+また、セルを作成するメソッドもあります。 - 
+HTML テーブル内のどこかに &lt;th&gt; タブか &lt;td&gt; タブを置いて、それを呼ぶだけです。
+テーブルの内容を定義し終わったら、描画メソッドを呼ぶだけです。
+(.net プラグイン以外では描画は自動的に行われます)
+それは、とても簡単です!
+
+<h3>XSLT を利用しての SimpleGrid の作成</h3>
+
+<p>ウェブページが XHTML 対応であるならば、SimpleGrid を生成するもう一つの方法があります。
+ページ上のテーブルを SimpleGrids に変換するために、XSL スタイルシートである "ricoSimpleGrid.xsl" を使うだけです。
+スタイルシートは "ricoSimpleGrid" のクラス名でテーブルを探して、それから変換を行います。
+一時は、Rico はクライアント上でこの変換をサポートしていました。
+しかしながら、Prototype ライブラリの変更のために、すでに出来なくなりました。
+したがって、このアプローチで行う方を選ぶならば、 XSLT 変換はサーバーで実行されなければなりません。
+
+</body>
+</html>
diff --git a/documentation/images/asp-php-structure1.jpg b/documentation/images/asp-php-structure1.jpg
new file mode 100644 (file)
index 0000000..a1a52ff
Binary files /dev/null and b/documentation/images/asp-php-structure1.jpg differ
diff --git a/documentation/images/asp-php-structure2.jpg b/documentation/images/asp-php-structure2.jpg
new file mode 100644 (file)
index 0000000..3825a4c
Binary files /dev/null and b/documentation/images/asp-php-structure2.jpg differ
diff --git a/documentation/images/checkmark.gif b/documentation/images/checkmark.gif
new file mode 100644 (file)
index 0000000..f8d01ed
Binary files /dev/null and b/documentation/images/checkmark.gif differ
diff --git a/documentation/images/chinese.jpg b/documentation/images/chinese.jpg
new file mode 100644 (file)
index 0000000..0596cb9
Binary files /dev/null and b/documentation/images/chinese.jpg differ
diff --git a/documentation/images/japanese.gif b/documentation/images/japanese.gif
new file mode 100644 (file)
index 0000000..3045a6f
Binary files /dev/null and b/documentation/images/japanese.gif differ
diff --git a/documentation/images/ricologo.gif b/documentation/images/ricologo.gif
new file mode 100644 (file)
index 0000000..9b14203
Binary files /dev/null and b/documentation/images/ricologo.gif differ
diff --git a/documentation/index.html b/documentation/index.html
new file mode 100644 (file)
index 0000000..4744cf4
--- /dev/null
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">\r
+<html>\r
+<HEAD>\r
+<title>Rico 3.0 Documentation</title>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+</HEAD>\r
+<frameset cols="300, *">\r
+  <frame name="menu" src="menu.html">\r
+  <frame name="content" src="welcome.html" scrolling="yes">\r
+</frameset>\r
+</html>\r
diff --git a/documentation/menu.html b/documentation/menu.html
new file mode 100644 (file)
index 0000000..238fec0
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
+<html>\r
+<head>\r
+<title>Rico 3.0</title>\r
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">\r
+<base target="content">\r
+\r
+<script src="../ricoClient/js/baselibs/prototype.js" type="text/javascript"></script>\r
+<script src="../ricoClient/js/rico.js" type="text/javascript"></script>\r
+<script src="../ricoClient/js/rico2Proto.js" type="text/javascript"></script>\r
+<script src="../ricoClient/js/ricoUI.js" type="text/javascript"></script>\r
+<link href="../ricoClient/css/rico.css" type="text/css" rel="stylesheet" />\r
+<script type='text/javascript'>\r
+\r
+var acc;\r
+Rico.onLoad( function() {\r
+  $('RicoVersion').innerHTML=Rico.Version;\r
+  Rico.Corner.round('menuheader');\r
+});\r
+</script>\r
+\r
+<link href="../examples/menu.css" type="text/css" rel="stylesheet">\r
+\r
+<!--[if lt IE 7]>\r
+  <style type="text/css">\r
+ul li {
+   height: 1%;\r
+}
+ </style>\r
+<![endif]-->\r
+</head>\r
+\r
+\r
+<body>\r
+\r
+<div id="menuheader">
+<p>Rico <span id='RicoVersion'></span>&nbsp;Documentation</p>\r
+</div>
+\r
+<div id="accordion1" style="margin-top:20px;">\r
+<ul>\r
+<li><a href="welcome.html">Welcome to Rico!</a>\r
+<li><a href="InstallNotes.html">Installing the examples</a>\r
+<li><a href="grids.html">Grid overview</a>\r
+<li><a href="browsers.html">LiveGrid browser compatibility</a>\r
+<li><a href="LiveGrid.html">Creating a LiveGrid</a>\r
+<li><a href="SimpleGrid.html">Creating a SimpleGrid</a>\r
+<li><a href="GridStyles.html">Grid Styles</a>\r
+<li><a href="LiveGridForms.html">Using LiveGrid Forms</a>\r
+<li><a href="LiveGridAjax.html">LiveGrid AJAX request &amp; response formats</a>\r
+<li><a href="translations.html">Multiple language support</a>\r
+</ul>\r
+</div>\r
+\r
+</body></html>\r
diff --git a/documentation/ricoDocs.css b/documentation/ricoDocs.css
new file mode 100644 (file)
index 0000000..ee8f9c5
--- /dev/null
@@ -0,0 +1,23 @@
+body {font-family: Arial, Tahoma, Verdana, sans-serif; padding: 8px;}
+li { margin-top: 0.25em; margin-bottom: 0.25em; }\r
+pre { background-color: #DDD; }\r
+img { border: 0px; }\r
+\r
+h1 { \r
+  font-family : Trebuchet MS, Arial, Tahoma, Verdana, Helvetica, sans-serif; \r
+  background-color:#EEE;\r
+  margin-top: 0px;\r
+  padding: 4px;\r
+  -moz-border-radius: 8px;\r
+  -webkit-border-radius: 8px;\r
+}\r
+h2 { margin-top: 2em; }\r
+h4 { text-decoration: underline; }\r
+\r
+dl { margin-left: 2em; }\r
+dt { font-weight: bold; margin-top: 0.7em; }\r
+\r
+thead tr { background-color:#DDD; }\r
+table.compat td { text-align:center; }\r
+table.compat tr { vertical-align:bottom; }\r
+tbody th {   text-align: left; }
diff --git a/documentation/ricologo.gif b/documentation/ricologo.gif
new file mode 100644 (file)
index 0000000..9b14203
Binary files /dev/null and b/documentation/ricologo.gif differ
diff --git a/documentation/translations.html b/documentation/translations.html
new file mode 100644 (file)
index 0000000..3198d99
--- /dev/null
@@ -0,0 +1,197 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Rico Translation</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>Rico Translation</h1>
+
+<p><a href='translations_ja.html'><img src='images/japanese.gif' alt='View this page in Japanese'></a>
+<a href='translations_ja.html'>View this page in Japanese</a></p>
+
+<p>The Rico library contains a translation object (RicoTranslate) so that
+applications can be written using Rico that support multiple languages.
+The translation object also stores the default date and number
+formats, so that different defaults can be specified for each language.
+The Rico distribution includes language files that load the translation object
+with the phrases necessary to display the default grid menus and the Rico calendar.
+
+<h2>Translation Status</h2>
+
+<p>Language files are stored in
+"src/translations/ricoLocale_xx.js" where xx is the 2-character language code. 
+Rico is currently distributed with the following translations:
+
+<p><table border='1' cellspacing='0' cellpadding='3'>
+<thead>
+<tr><th>Language</th><th>Code</th><th>Status</th></tr>
+</thead>
+<tbody>
+
+<tr>
+<td>English</td>
+<td>en</td>
+<td>Baseline</td>
+</tr>
+
+<tr>
+<td>French</td>
+<td>fr</td>
+<td>Complete and reviewed</td>
+</tr>
+
+<tr>
+<td>Spanish</td>
+<td>es</td>
+<td>Complete and reviewed</td>
+</tr>
+
+<tr>
+<td>Japanese</td>
+<td>ja</td>
+<td>Complete and reviewed</td>
+</tr>
+
+<tr>
+<td>Chinese (simplified)</td>
+<td>zh</td>
+<td>Complete and reviewed</td>
+</tr>
+
+<tr>
+<td>Korean</td>
+<td>ko</td>
+<td>Complete and reviewed</td>
+</tr>
+
+<tr>
+<td>German</td>
+<td>de</td>
+<td>Complete and reviewed</td>
+</tr>
+
+<tr>
+<td>Portugese</td>
+<td>pt</td>
+<td>Complete, needs review</td>
+</tr>
+
+<tr>
+<td>Italian</td>
+<td>it</td>
+<td>Complete, needs review</td>
+</tr>
+
+<tr>
+<td>Russian</td>
+<td>ru</td>
+<td>Complete and reviewed</td>
+</tr>
+
+<tr>
+<td>Ukranian</td>
+<td>ua</td>
+<td>Complete and reviewed</td>
+</tr>
+
+</tbody>
+</table>
+
+<h2>Supporting Multiple Languages</h2>
+
+<p>As Rico evolves, additional phrases are required in the translation files.
+English phrases are added first, then members of the Rico community
+add the new phrases to the other translation files.
+We try to keep all of the translations synchonized, 
+but this is not always possible.
+Therefore, when rico.js is loaded, it in turn loads the language file 
+for English first. 
+Then it looks for a Rico translation matching the user's OS or browser language.
+If one is found, it is loaded next.
+This ensures that, if a phrase is missing from a translation file or a translation
+for their language is not available, the user at least
+sees the phrase in English (instead of a blank message).
+
+<p>So with no additional coding, Rico should, in most cases, 
+present localized menus and calendars that are appropriate to the user.
+However, all modern browsers give the user a way to override the OS language.
+For example, in Firefox you go to Tools menu > Options > Advanced > General Tab > Languages button.
+In Internet Explorer you go to Tools menu > Internet Options > General Tab > Languages button.
+This setting is called the 
+<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4">accept language</a> 
+and is not directly accessible via javascript.
+However, Rico does provide a way to load a translation file based on the accept language.
+For users who have configured this setting, the language resolved using this approach
+may be closer to their true preference.
+The accept language is resolved in Rico by having the server-side script return the
+accept language header back to the javascript method "Rico.acceptLanguage()".
+This happens automatically when using the LiveGrid Forms plug-ins for ASP and PHP,
+and in the LiveGrid plug-in for .net.
+For other situations, server-side include files are provided in the Rico distribution.
+
+<p>In PHP:
+<pre>
+&lt;? 
+// Not required when using ricoLiveGridForms.php
+// Must be placed after the line to include rico.js
+
+require "chklang2.php";
+?&gt;
+</pre>
+
+<p>In ASP:
+<pre>
+' Not required when using ricoLiveGridForms.asp
+' Must be placed after the line to include rico.js
+
+&lt;!-- #INCLUDE FILE = "chklang2.vbs" --&gt;
+</pre>
+
+<p>In .net:
+<pre>
+' Not required when using ricoLiveGrid.ascx
+' Must be placed after the line to include rico.js
+
+&lt;%@ Register TagPrefix="Rico" TagName="ChkLang" Src="chklang.ascx" %&gt;
+&lt;Rico:ChkLang runat='server' id='translation' /&gt;
+</pre>
+
+<h2>RicoTranslate Object Reference</h2>
+
+<p>The RicoTranslate object contains the following properties and methods:
+<dl>
+<dt>monthNames[]
+<dd>A 12 item array containing the translated names of each month (January is item 0)
+<dt>dayNames[]
+<dd>A 7 item array containing the translated names of each day of the week (Sunday is item 0)
+<dt>monthAbbr()
+<dd>A function that takes a month number (0-11) and returns the abbreviated month name (defaults to the first 3 characters of monthNames[], but is overridden by some translations)
+<dt>dayAbbr()
+<dd>A function that takes a day of week number (0-6) and returns the abbreviated day name (defaults to the first 3 characters of dayNames[], but is overridden by some translations)
+<dt>langCode
+<dd>Contains the 2-character language code that is currently loaded (default is "en")
+<dt>thouSep
+<dd>Contains the character to use as the thousands separator when formatting numbers (default is ",")
+<dt>decPoint
+<dd>Contains the character to use as the decimal point when formatting numbers (default is ".")
+<dt>dateFmt
+<dd>Contains the default date format (default is "mm/dd/yyyy")
+<dt>timeFmt
+<dd>Contains the default time format (default is "hh:nn:ss a/pm")
+<dt>addPhraseId (phraseId, phrase)
+<dd>Adds the specified phrase and assigns it to phraseId. The phrase string may contain references to optional substitution parameters, which are specified using $1, $2, etc.
+<dt>getPhraseById (phraseId)
+<dd>Returns the phrase specified by phraseId. Optional substitution parameters may follow phraseId.
+</dl>
+
+<h2>Submitting Updates</h2>
+
+<p>Questions and corrections may be posted to the 
+<a href='http://sourceforge.net/forum/forum.php?forum_id=470997'>Open Discussion forum on SourceForge</a>.
+Alternatively, you can send them directly to: dowdybrown at yahoo dot com.
+
+</body>
+</html>
diff --git a/documentation/translations_ja.html b/documentation/translations_ja.html
new file mode 100644 (file)
index 0000000..2cf6ff4
--- /dev/null
@@ -0,0 +1,192 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+<title>Rico Translation</title>
+<link href="ricoDocs.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>Rico の翻訳</h1>
+
+<p>Rico ライブラリは翻訳オブジェクト(RicoTranslate)を含むので、
+複数の言語をサポートするアプリケーションを、 Rico を利用して書く事が出来ます。
+翻訳オブジェクトは、異なるデフォルト値を言語ごとに指定する事が出来、
+デフォルトの日付および数値フォーマットも保持しています。
+Rico ディストリビューションは、デフォルトグリッドメニューと Rico カレンダーを表示するために
+必要なフレーズと共に、翻訳オブジェクトをロードする言語ファイルを含みます。
+
+<h2>翻訳ステータス</h2>
+
+<p>言語ファイルは "src/translations/ricoLocale_xx.js" に保持されており、
+xx は 2 文字の言語コードです。
+現在、Rico は以下の翻訳と共に配布されています。
+
+<table border='1' cellspacing='0' cellpadding='3'>
+<thead>
+<tr><th>言語</th><th>コード</th><th>ステータス</th></tr>
+</thead>
+<tbody>
+
+<tr>
+<td>英語</td>
+<td>en</td>
+<td>ベースライン</td>
+</tr>
+
+<tr>
+<td>フランス語</td>
+<td>fr</td>
+<td>完了して検査された</td>
+</tr>
+
+<tr>
+<td>スペイン語</td>
+<td>es</td>
+<td>完了して検査された</td>
+</tr>
+
+<tr>
+<td>日本語</td>
+<td>ja</td>
+<td>完了して検査された</td>
+</tr>
+
+<tr>
+<td>中国語(単純化された)</td>
+<td>zh</td>
+<td>完了して検査された</td>
+</tr>
+
+<tr>
+<td>韓国語</td>
+<td>ko</td>
+<td>完了して検査された</td>
+</tr>
+
+<tr>
+<td>ドイツ語</td>
+<td>de</td>
+<td>完了して検査を必要としている</td>
+</tr>
+
+<tr>
+<td>ポルトガル語</td>
+<td>pt</td>
+<td>完了して検査を必要としている</td>
+</tr>
+
+<tr>
+<td>イタリア語</td>
+<td>it</td>
+<td>完了して検査を必要としている</td>
+</tr>
+
+<tr>
+<td>ロシア語</td>
+<td>ru</td>
+<td>新しい ricoLocale フォーマットへの更新を必要としている</td>
+</tr>
+
+<tr>
+<td>ウクライナ語</td>
+<td>ua</td>
+<td>新しい ricoLocale フォーマットへの更新を必要としている</td>
+</tr>
+
+</tbody>
+</table>
+
+<h2>複数言語のサポート</h2>
+
+<p>Rico が進化するにつれ、翻訳ファイルに追加のフレーズが必要とされます。
+英語のフレーズが最初に追加され、そして Rico コミュニティのメンバーが
+新しいフレーズを他の翻訳ファイルに加えます。
+私達は全ての翻訳を同期し続けようとしますが、
+これは必ずしも可能ではありません。
+そのため、rico.js がロードされる時、
+最初に英語の言語ファイルをロードします。
+それから、それはユーザの OS またはブラウザの言語に一致する Rico 翻訳を探します。
+見つかったなら、それは次にロードされます。
+これは、フレーズが翻訳ファイルやそれらの言語用の翻訳が利用出来ない場合に、
+(空白メッセージの代わりに)少なくとも英語でのフレーズを見る事を確実にします。
+
+<p>追加のコーディング無しで、Rico は多くの場合、
+ユーザにふさわしいローカライズされたメニューやカレンダーを表示するはずです。
+しかし、全ての最新のブラウザは、ユーザに OS の言語をオーバライドする方法を与えます。
+例えば、Firefox では ツールメニュー > オプション > 詳細 > 一般タブ > 言語設定ボタン へ進みます。
+Internet Explorer では ツールメニュー > インターネットオプション > 全般タブ > 言語ボタン へ進みます
+この設定は 
+<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4">accept language</a> 
+から呼ばれ、javascript を通して直接アクセスする事は出来ません。
+しかし、Rico は適切な言語に基づく翻訳ファイルをロードする方法を提供します。
+この設定を構成したユーザーにとって、このアプローチを利用して解析される言語は、
+彼らの本当の選択により近いかもしれません。
+その適切な言語は "Rico.acceptLanguage()" javascript メソッドに、
+適切な言語のヘッダを返すサーバサイドスクリプトを持つ事により Rico で解析されます。
+これは、ASP と PHP のための LiveGrid フォームプラグインと、
+.net のための LiveGrid プラグインを利用する時に、自動的に行われます。
+他の状況では、サーバサイドインクルードファイルは Rico ディストリビューションで提供されます。
+
+<p>PHP では。
+<pre>
+&lt;? 
+// ricoLiveGridForms.php を利用する時は必要ありません
+// rico.js をインクルードする行の後に置かれなければなりません
+
+require "chklang2.php";
+?&gt;
+</pre>
+
+<p>ASP では。
+<pre>
+' ricoLiveGridForms.asp を利用する時は必要ありません
+' rico.js をインクルードする行の後に置かれなければなりません
+
+&lt;!-- #INCLUDE FILE = "chklang2.vbs" --&gt;
+</pre>
+
+<p>.net では。
+<pre>
+' ricoLiveGridForms.ascx を利用する時は必要ありません
+' rico.js をインクルードする行の後に置かれなければなりません
+
+&lt;%@ Register TagPrefix="Rico" TagName="ChkLang" Src="chklang.ascx" %&gt;
+&lt;Rico:ChkLang runat='server' id='translation' /&gt;
+</pre>
+
+<h2>RicoTranslate オブジェクトリファレンス</h2>
+
+<p>RicoTranslate オブジェクトは以下のプロパティとメソッドを含みます。
+<dl>
+<dt>monthNames[]
+<dd>それぞれの月の翻訳された名前を含む 12 アイテムの配列(1 月はアイテム 0)
+<dt>dayNames[]
+<dd>それぞれの曜日の翻訳された名前を含む 7 アイテムの配列(日曜はアイテム 0)
+<dt>monthAbbr()
+<dd>月の数字(0-11)を受け取り、月の省略名を返す関数(デフォルトは monthNames[] の始めの 3 文字ですが、翻訳によってオーバーライドされます)
+<dt>dayAbbr()