You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/06/10 16:27:54 UTC

svn commit: r413306 [17/17] - in /tapestry/tapestry4/trunk: examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/ framework/src/java/org/apache/tapestry/ framework/src/java/org/apache/tapestry/dojo/form/ framework/src/java/org/apache/tape...

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/outdent.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/paste.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/paste.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/paste.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/redo.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/redo.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/redo.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/removeformat.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/removeformat.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/removeformat.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/save.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/save.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/save.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/subscript.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/subscript.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/subscript.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/superscript.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/superscript.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/superscript.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/underline.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/underline.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/underline.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/undo.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/undo.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/buttons/undo.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/check_off.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/check_off.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/check_off.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/decrementMonth.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/decrementMonth.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/decrementMonth.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/decrementWeek.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/decrementWeek.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/decrementWeek.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/blank.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/blank.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/blank.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/document.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/document.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/document.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/minus.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/minus.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/minus.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/plus.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/plus.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/plus.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/transparent.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/transparent.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/transparent.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_blank.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_blank.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_blank.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_expand_plus.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_expand_plus.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_expand_plus.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_c.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_c.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_c.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_t.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_t.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_t.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_y.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_y.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_grid_y.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_loading.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_loading.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_loading.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_loading.jpg
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_loading.jpg?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/Tree/treenode_loading.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/bdYearBg.1.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/bdYearBg.1.gif?rev=413306&view=auto
==============================================================================
    (empty)

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/bdYearBg.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/bdYearBg.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/bdYearBg.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dateIcon.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dateIcon.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dateIcon.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/decrementMonth.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/decrementMonth.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/decrementMonth.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpBg.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpBg.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpBg.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpCurveTL.png
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpCurveTL.png?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpCurveTL.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpHorizLine.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpHorizLine.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpHorizLine.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpHorizLineFoot.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpHorizLineFoot.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpHorizLineFoot.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpMonthBg.png
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpMonthBg.png?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpMonthBg.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpYearBg.png
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpYearBg.png?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/dpYearBg.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/floatingPaneRestore.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/floatingPaneRestore.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/floatingPaneRestore.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/hue.png
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/hue.png?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/hue.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/incrementMonth.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/incrementMonth.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/incrementMonth.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/no.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/no.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/no.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/scBackground.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/scBackground.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/scBackground.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button-horz.png
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button-horz.png?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button-horz.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button-vert.png
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button-vert.png?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button-vert.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button.png
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button.png?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/slider-button.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaActive-l.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaActive-l.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaActive-l.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaButton-c.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaButton-c.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaButton-c.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaButton-r.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaButton-r.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaButton-r.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaPressed-c.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaPressed-c.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaPressed-c.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaPressed-r.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaPressed-r.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/soriaPressed-r.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/spinnerIncrement.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/spinnerIncrement.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/spinnerIncrement.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/submenu_off.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/submenu_off.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/submenu_off.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_bot_left.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_bot_left.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_bot_left.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_close_h.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_close_h.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_close_h.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_right.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_right.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_right.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_right_r.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_right_r.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_right_r.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_top_left.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_top_left.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_top_left.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_top_right.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_top_right.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/tab_top_right.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_blank.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_blank.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_blank.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_c.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_c.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_c.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_l.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_l.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_l.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_p.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_p.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/treenode_grid_p.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/whiteDownArrow.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/whiteDownArrow.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/images/whiteDownArrow.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/incrementMonth.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/incrementMonth.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/incrementMonth.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/incrementWeek.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/incrementWeek.gif?rev=413306&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/incrementWeek.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/richtextframe.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/richtextframe.html?rev=413306&view=auto
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/richtextframe.html (added)
+++ tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/richtextframe.html Sat Jun 10 07:27:44 2006
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
+<html>
+  <head>
+    <title></title>
+    <script type="text/javascript">
+    function init(){
+       document.designMode = 'On';
+       parentPageDomain = document.location.href.split('#')[1];
+       if (parentPageDomain) {
+          document.domain = parentPageDomain;
+       }
+    }
+    window.onload = init;
+    </script>
+  </head>
+  <body>
+  <br />
+  </body>
+</html>

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/templates/richtextframe.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/validate.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/validate.js?rev=413306&view=auto
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/validate.js (added)
+++ tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/validate.js Sat Jun 10 07:27:44 2006
@@ -0,0 +1,858 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.widget.validate");
+
+dojo.provide("dojo.widget.validate.Textbox");
+dojo.provide("dojo.widget.validate.ValidationTextbox");
+dojo.provide("dojo.widget.validate.IntegerTextbox");
+dojo.provide("dojo.widget.validate.RealNumberTextbox");
+dojo.provide("dojo.widget.validate.CurrencyTextbox");
+dojo.provide("dojo.widget.validate.IpAddressTextbox");
+dojo.provide("dojo.widget.validate.UrlTextbox");
+dojo.provide("dojo.widget.validate.EmailTextbox");
+dojo.provide("dojo.widget.validate.EmailListTextbox");
+dojo.provide("dojo.widget.validate.DateTextbox");
+dojo.provide("dojo.widget.validate.TimeTextbox");
+dojo.provide("dojo.widget.validate.UsStateTextbox");
+dojo.provide("dojo.widget.validate.UsZipTextbox");
+dojo.provide("dojo.widget.validate.UsPhoneNumberTextbox");
+
+dojo.require("dojo.widget.HtmlWidget");
+dojo.require("dojo.widget.Manager");
+dojo.require("dojo.widget.Parse");
+dojo.require("dojo.xml.Parse");
+dojo.require("dojo.lang");
+
+dojo.require("dojo.validate.common");
+dojo.require("dojo.validate.datetime");
+dojo.require("dojo.validate.check");
+dojo.require("dojo.validate.web");
+dojo.require("dojo.validate.us");
+
+dojo.widget.manager.registerWidgetPackage("dojo.widget.validate");
+
+
+/*
+  ****** Textbox ******
+
+  This widget is a generic textbox field.
+  Serves as a base class to derive more specialized functionality in subclasses.
+  Has the following properties that can be specified as attributes in the markup.
+
+  @attr id         The textbox id attribute.
+  @attr className  The textbox class attribute.
+  @attr name       The textbox name attribute.
+  @attr value      The textbox value attribute.
+  @attr trim       Removes leading and trailing whitespace if true.  Default is false.
+  @attr uppercase  Converts all characters to uppercase if true.  Default is false.
+  @attr lowercase  Converts all characters to lowercase if true.  Default is false.
+  @attr ucFirst    Converts the first character of each word to uppercase if true.
+  @attr lowercase  Removes all characters that are not digits if true.  Default is false.
+*/
+dojo.widget.validate.Textbox = function() {  }
+
+dojo.inherits(dojo.widget.validate.Textbox, dojo.widget.HtmlWidget);
+
+dojo.lang.extend(dojo.widget.validate.Textbox, {
+	// default values for new subclass properties
+	widgetId: "", 
+	widgetType: "Textbox", 
+	id: "",
+	className: "",
+	name: "",
+	value: "",
+	trim: false,
+	uppercase: false,
+	lowercase: false,
+	ucFirst: false,
+	digit: false,
+	htmlfloat: "none",
+	
+	templateString: "<span style='float:${this.htmlfloat};'><input dojoAttachPoint='textbox' dojoAttachEvent='onblur;onfocus'"
+					+ " id='${this.widgetId}' name='${this.name}' "
+					+ " value='${this.value}' class='${this.className}'></input></span>",
+
+	// our DOM nodes
+	textbox: null,
+
+	// Apply various filters to textbox value
+	filter: function() { 
+		if (this.trim) {
+			this.textbox.value = this.textbox.value.replace(/(^\s*|\s*$)/g, "");
+		} 
+		if (this.uppercase) {
+			this.textbox.value = this.textbox.value.toUpperCase();
+		} 
+		if (this.lowercase) {
+			this.textbox.value = this.textbox.value.toLowerCase();
+		} 
+		if (this.ucFirst) {
+			this.textbox.value = this.textbox.value.replace(/\b\w+\b/g, 
+				function(word) { return word.substring(0,1).toUpperCase() + word.substring(1).toLowerCase(); });
+		} 
+		if (this.digit) {
+			this.textbox.value = this.textbox.value.replace(/\D/g, "");
+		} 
+	},
+
+	// event handlers, you can over-ride these in your own subclasses
+	onfocus: function() {},
+	onblur: function() { this.filter(); },
+
+	// All functions below are called by create from dojo.widget.Widget
+	mixInProperties: function(localProperties, frag) {
+		dojo.widget.validate.Textbox.superclass.mixInProperties.apply(this, arguments);
+		if ( localProperties["class"] ) { 
+			this.className = localProperties["class"];
+		}
+	},
+
+	fillInTemplate: function() {
+		// apply any filters to initial value
+		this.filter();
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:Textbox");
+
+
+/*
+  ****** ValidationTextbox ******
+
+  A subclass of Textbox.
+  Over-ride isValid in subclasses to perform specific kinds of validation.
+  Has several new properties that can be specified as attributes in the markup.
+
+	@attr type          		Basic input tag type declaration.
+	@attr size          		Basic input tag size declaration.
+	@attr type          		Basic input tag maxlength declaration.	
+  @attr required          Can be true or false, default is false.
+  @attr validColor        The color textbox is highlighted for valid input. Default is #cfc.
+  @attr invalidColor      The color textbox is highlighted for invalid input. Default is #fcc.
+  @attr invalidClass			Class used to format displayed text in page if necessary to override default class
+  @attr invalidMessage    The message to display if value is invalid.
+  @attr missingMessage    The message to display if value is missing.
+  @attr missingClass		  Override default class used for missing input data
+  @attr listenOnKeyPress  Updates messages on each key press.  Default is true.
+  @attr promptMessage			Will not issue invalid message if field is populated with default user-prompt text
+*/
+dojo.widget.validate.ValidationTextbox = function() {}
+
+dojo.inherits(dojo.widget.validate.ValidationTextbox, dojo.widget.validate.Textbox);
+
+dojo.lang.extend(dojo.widget.validate.ValidationTextbox, {
+	// default values for new subclass properties
+	widgetType: "ValidationTextbox", 
+	type: "",
+	required: false,
+	validColor: "#cfc",
+	invalidColor: "#fcc",
+	rangeClass: "range",
+	invalidClass: "invalid",
+	missingClass: "missing",
+	size: "",
+	maxlength: "",
+	promptMessage: "",
+	invalidMessage: "* The value entered is not valid.",
+	missingMessage: "* This value is required.",
+	rangeMessage: "* This value out of range.",
+	listenOnKeyPress: true,
+	htmlfloat: "none",
+	lastCheckedValue: null,
+
+	templateString:   "<span style='float:${this.htmlfloat};'>"
+					+   "<input dojoAttachPoint='textbox' type='${this.type}' dojoAttachEvent='onblur;onfocus;onkeyup'"
+					+     " id='${this.widgetId}' name='${this.name}' size='${this.size}' maxlength='${this.maxlength}'"
+					+     " value='${this.value}' class='${this.className}' style=''></input>"
+					+   "<span dojoAttachPoint='invalidSpan' class='${this.invalidClass}'>${this.invalidMessage}</span>"
+					+   "<span dojoAttachPoint='missingSpan' class='${this.missingClass}'>${this.missingMessage}</span>"
+					+   "<span dojoAttachPoint='rangeSpan' class='${this.rangeClass}'>${this.rangeMessage}</span>"
+					+ "</span>",
+
+	// new DOM nodes
+	invalidSpan: null,
+	missingSpan: null,
+	rangeSpan: null,
+
+	getValue: function() {
+		return this.textbox.value;
+	},
+
+	setValue: function(value) {
+		this.textbox.value = value;
+		this.update();
+	},
+
+	// Need to over-ride with your own validation code in subclasses
+	isValid: function() { return true; },
+
+	// Need to over-ride with your own validation code in subclasses
+	isInRange: function() { return true; },
+
+	// Returns true if value is all whitespace
+	isEmpty: function() { 
+		return ( /^\s*$/.test(this.textbox.value) );
+	},
+
+	// Returns true if value is required and it is all whitespace.
+	isMissing: function() { 
+		return ( this.required && this.isEmpty() );
+	},
+
+	// Called oninit, onblur, and onkeypress.
+	// Show missing or invalid messages if appropriate, and highlight textbox field.
+	update: function() {
+		this.lastCheckedValue = this.textbox.value;
+		this.missingSpan.style.display = "none";
+		this.invalidSpan.style.display = "none";
+		this.rangeSpan.style.display = "none";
+
+		var empty = this.isEmpty();
+		var valid = true;
+		if(this.promptMessage != this.textbox.value){ 
+			valid = this.isValid(); 
+		}
+		var missing = this.isMissing();
+
+		// Display at most one error message
+		if(missing){
+			this.missingSpan.style.display = "";
+		}else if( !empty && !valid ){
+			this.invalidSpan.style.display = "";
+		}else if( !empty && !this.isInRange() ){
+			this.rangeSpan.style.display = "";
+		}
+		this.highlight();
+	},
+
+	// Called oninit, and onblur.
+	highlight: function() {
+		// highlight textbox background 
+		if ( this.isEmpty() ) {
+			this.textbox.style.backgroundColor = "";
+		}else if ( this.isValid() && this.isInRange() ){
+			this.textbox.style.backgroundColor = this.validColor;
+		}else if( this.textbox.value != this.promptMessage){ 
+			this.textbox.style.backgroundColor = this.invalidColor;
+		}
+	},
+
+	onfocus: function() {
+		if ( !this.listenOnKeyPress) {
+		    this.textbox.style.backgroundColor = "";
+		}
+	},
+
+	onblur: function() { 
+		this.filter();
+		this.update(); 
+	},
+
+	onkeyup: function(){ 
+		if(this.listenOnKeyPress){ 
+			//this.filter();  trim is problem if you have to type two words
+			this.update(); 
+		}else if (this.textbox.value != this.lastCheckedValue){
+		    this.textbox.style.backgroundColor = "";
+		}
+	},
+
+	// FIXME: why are there to fillInTemplate methods defined here?
+	fillInTemplate: function() {
+		// Attach isMissing and isValid methods to the textbox.
+		// We may use them later in connection with a submit button widget.
+		// TODO: this is unorthodox; it seems better to do it another way -- Bill
+		this.textbox.isValid = function() { this.isValid.call(this); };
+		this.textbox.isMissing = function() { this.isMissing.call(this); };
+		this.textbox.isInRange = function() { this.isInRange.call(this); };
+		this.filter();
+		this.update(); 
+	}
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:ValidationTextbox");
+
+
+/*
+  ****** IntegerTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid/isInRange to test for integer input.
+  Has 4 new properties that can be specified as attributes in the markup.
+
+  @attr signed     The leading plus-or-minus sign. Can be true or false, default is either.
+  @attr separator  The character used as the thousands separator.  Default is no separator.
+  @attr min  Minimum signed value.  Default is -Infinity
+  @attr max  Maximum signed value.  Default is +Infinity
+*/
+dojo.widget.validate.IntegerTextbox = function(node) {
+	// this property isn't a primitive and needs to be created on a per-item basis.
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.IntegerTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.IntegerTextbox, {
+	// new subclass properties
+	widgetType: "IntegerTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.IntegerTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if((localProperties.signed == "true")||
+			(localProperties.signed == "always")){
+			this.flags.signed = true;
+		}else if((localProperties.signed == "false")||
+				(localProperties.signed == "never")){
+			this.flags.signed = false;
+			this.flags.min = 0;
+		}else{
+			this.flags.signed = [ true, false ]; // optional
+		}
+		if(localProperties.separator){ 
+			this.flags.separator = localProperties.separator;
+		}
+		if(localProperties.min){ 
+			this.flags.min = parseInt(localProperties.min);
+		}
+		if(localProperties.max){ 
+			this.flags.max = parseInt(localProperties.max);
+		}
+	},
+
+	// Over-ride for integer validation
+	isValid: function() { 
+		return dojo.validate.isInteger(this.textbox.value, this.flags);
+	},
+	isInRange: function() { 
+		return dojo.validate.isInRange(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:IntegerTextbox");
+
+
+/*
+  ****** RealNumberTextbox ******
+
+  A subclass that extends IntegerTextbox.
+  Over-rides isValid/isInRange to test for real number input.
+  Has 5 new properties that can be specified as attributes in the markup.
+
+  @attr places    The exact number of decimal places.  If omitted, it's unlimited and optional.
+  @attr exponent  Can be true or false.  If omitted the exponential part is optional.
+  @attr eSigned   Is the exponent signed?  Can be true or false, if omitted the sign is optional.
+  @attr min  Minimum signed value.  Default is -Infinity
+  @attr max  Maximum signed value.  Default is +Infinity
+*/
+dojo.widget.validate.RealNumberTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.RealNumberTextbox, dojo.widget.validate.IntegerTextbox);
+
+dojo.lang.extend(dojo.widget.validate.RealNumberTextbox, {
+	// new subclass properties
+	widgetType: "RealNumberTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.RealNumberTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.places ) { 
+			this.flags.places = Number( localProperties.places );
+		}
+		if((localProperties.exponent == "true")||
+			(localProperties.exponent == "always")){
+			this.flags.exponent = true;
+		}else if((localProperties.exponent == "false")||(localProperties.exponent == "never")){
+			this.flags.exponent = false;
+		}else{
+			this.flags.exponent = [ true, false ]; // optional
+		}
+		if((localProperties.esigned == "true")||(localProperties.esigned == "always")){
+			this.flags.eSigned = true;
+		}else if((localProperties.esigned == "false")||(localProperties.esigned == "never")){
+			this.flags.eSigned = false;
+		}else{
+			this.flags.eSigned = [ true, false ]; // optional
+		}
+		if(localProperties.min){ 
+			this.flags.min = parseFloat(localProperties.min);
+		}
+		if(localProperties.max){ 
+			this.flags.max = parseFloat(localProperties.max);
+		}
+	},
+
+	// Over-ride for real number validation
+	isValid: function() { 
+		return dojo.validate.isRealNumber(this.textbox.value, this.flags);
+	},
+	isInRange: function() { 
+		return dojo.validate.isInRange(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:RealNumberTextbox");
+
+
+/*
+  ****** CurrencyTextbox ******
+
+  A subclass that extends IntegerTextbox.
+  Over-rides isValid/isInRange to test if input denotes a monetary value .
+  Has 5 new properties that can be specified as attributes in the markup.
+
+  @attr cents      The two decimal places for cents.  Can be true or false, optional if omitted.
+  @attr symbol     A currency symbol such as Yen "???", Pound "???", or the Euro "???". Default is "$".
+  @attr separator  Default is "," instead of no separator as in IntegerTextbox.
+  @attr min  Minimum signed value.  Default is -Infinity
+  @attr max  Maximum signed value.  Default is +Infinity
+*/
+dojo.widget.validate.CurrencyTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.CurrencyTextbox, dojo.widget.validate.IntegerTextbox);
+
+dojo.lang.extend(dojo.widget.validate.CurrencyTextbox, {
+	// new subclass properties
+	widgetType: "CurrencyTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.CurrencyTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.cents ) { 
+			this.flags.cents = ( localProperties.cents == "true" );
+		}
+		if ( localProperties.symbol ) { 
+			this.flags.symbol = localProperties.symbol;
+		}
+		if(localProperties.min){ 
+			this.flags.min = parseFloat(localProperties.min);
+		}
+		if(localProperties.max){ 
+			this.flags.max = parseFloat(localProperties.max);
+		}
+	},
+
+	// Over-ride for currency validation
+	isValid: function() { 
+		return dojo.validate.isCurrency(this.textbox.value, this.flags);
+	},
+	isInRange: function() { 
+		return dojo.validate.isInRange(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:CurrencyTextbox");
+
+
+/*
+  ****** IpAddressTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test for IP addresses.
+  Can specify formats for ipv4 or ipv6 as attributes in the markup.
+
+  @attr allowDottedDecimal  true or false, default is true.
+  @attr allowDottedHex      true or false, default is true.
+  @attr allowDottedOctal    true or false, default is true.
+  @attr allowDecimal        true or false, default is true.
+  @attr allowHex            true or false, default is true.
+  @attr allowIPv6           true or false, default is true.
+  @attr allowHybrid         true or false, default is true.
+*/
+dojo.widget.validate.IpAddressTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.IpAddressTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.IpAddressTextbox, {
+	// new subclass properties
+	widgetType: "IpAddressTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.IpAddressTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.allowdotteddecimal ) { 
+			this.flags.allowDottedDecimal = ( localProperties.allowdotteddecimal == "true" );
+		}
+		if ( localProperties.allowdottedhex ) { 
+			this.flags.allowDottedHex = ( localProperties.allowdottedhex == "true" );
+		}
+		if ( localProperties.allowdottedoctal ) { 
+			this.flags.allowDottedOctal = ( localProperties.allowdottedoctal == "true" );
+		}
+		if ( localProperties.allowdecimal ) { 
+			this.flags.allowDecimal = ( localProperties.allowdecimal == "true" );
+		}
+		if ( localProperties.allowhex ) { 
+			this.flags.allowHex = ( localProperties.allowhex == "true" );
+		}
+		if ( localProperties.allowipv6 ) { 
+			this.flags.allowIPv6 = ( localProperties.allowipv6 == "true" );
+		}
+		if ( localProperties.allowhybrid ) { 
+			this.flags.allowHybrid = ( localProperties.allowhybrid == "true" );
+		}
+	},
+
+	// Over-ride for IP address validation
+	isValid: function() { 
+		return dojo.validate.isIpAddress(this.textbox.value, this.flags);
+	}
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:IpAddressTextbox");
+
+
+/*
+  ****** UrlTextbox ******
+
+  A subclass of IpAddressTextbox.
+  Over-rides isValid to test for URL's.
+  Can specify 5 additional attributes in the markup.
+
+  @attr scheme        Can be true or false.  If omitted the scheme is optional.
+  @attr allowIP       Allow an IP address for hostname.  Default is true.
+  @attr allowLocal    Allow the host to be "localhost".  Default is false.
+  @attr allowCC       Allow 2 letter country code domains.  Default is true.
+  @attr allowGeneric  Allow generic domains.  Can be true or false, default is true.
+*/
+dojo.widget.validate.UrlTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.UrlTextbox, dojo.widget.validate.IpAddressTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UrlTextbox, {
+	// new subclass properties
+	widgetType: "UrlTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.UrlTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.scheme ) { 
+			this.flags.scheme = ( localProperties.scheme == "true" );
+		}
+		if ( localProperties.allowip ) { 
+			this.flags.allowIP = ( localProperties.allowip == "true" );
+		}
+		if ( localProperties.allowlocal ) { 
+			this.flags.allowLocal = ( localProperties.allowlocal == "true" );
+		}
+		if ( localProperties.allowcc ) { 
+			this.flags.allowCC = ( localProperties.allowcc == "true" );
+		}
+		if ( localProperties.allowgeneric ) { 
+			this.flags.allowGeneric = ( localProperties.allowgeneric == "true" );
+		}
+	},
+
+	// Over-ride for URL validation
+	isValid: function() { 
+		return dojo.validate.isUrl(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UrlTextbox");
+
+
+/*
+  ****** EmailTextbox ******
+
+  A subclass of UrlTextbox.
+  Over-rides isValid to test for email addresses.
+  Can use all markup attributes/properties of UrlTextbox except scheme.
+  One new attribute available in the markup.
+
+  @attr allowCruft  Allow address like <ma...@yahoo.com>.  Default is false.
+*/
+dojo.widget.validate.EmailTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.EmailTextbox, dojo.widget.validate.UrlTextbox);
+
+dojo.lang.extend(dojo.widget.validate.EmailTextbox, {
+	// new subclass properties
+	widgetType: "EmailTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.EmailTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.allowcruft ) { 
+			this.flags.allowCruft = ( localProperties.allowcruft == "true" );
+		}
+	},
+
+	// Over-ride for email address validation
+	isValid: function() { 
+		return dojo.validate.isEmailAddress(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:EmailTextbox");
+
+
+/*
+  ****** EmailListTextbox ******
+
+  A subclass of EmailTextbox.
+  Over-rides isValid to test for a list of email addresses.
+  Can use all markup attributes/properties of EmailTextbox and ...
+
+  @attr listSeparator  The character used to separate email addresses.  
+    Default is ";", ",", "\n" or " ".
+*/
+dojo.widget.validate.EmailListTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.EmailListTextbox, dojo.widget.validate.EmailTextbox);
+
+dojo.lang.extend(dojo.widget.validate.EmailListTextbox, {
+	// new subclass properties
+	widgetType: "EmailListTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.EmailListTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.listseparator ) { 
+			this.flags.listSeparator = localProperties.listseparator;
+		}
+	},
+
+	// Over-ride for email address list validation
+	isValid: function() { 
+		return dojo.validate.isEmailAddressList(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:EmailListTextbox");
+
+
+/*
+  ****** DateTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is in a valid date format.
+
+  @attr format  Described in dojo.validate.js.  Default is  "MM/DD/YYYY".
+*/
+dojo.widget.validate.DateTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.DateTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.DateTextbox, {
+	// new subclass properties
+	widgetType: "DateTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.DateTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.format ) { 
+			this.flags.format = localProperties.format;
+		}
+	},
+
+	// Over-ride for date validation
+	isValid: function() { 
+		return dojo.validate.isValidDate(this.textbox.value, this.flags.format);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:DateTextbox");
+
+
+/*
+  ****** TimeTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is in a valid time format.
+
+  @attr format    Described in dojo.validate.js.  Default is  "h:mm:ss t".
+  @attr amSymbol  The symbol used for AM.  Default is "AM" or "am".
+  @attr pmSymbol  The symbol used for PM.  Default is "PM" or "pm".
+*/
+dojo.widget.validate.TimeTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.TimeTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.TimeTextbox, {
+	// new subclass properties
+	widgetType: "TimeTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// First initialize properties in super-class.
+		dojo.widget.validate.TimeTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.format ) { 
+			this.flags.format = localProperties.format;
+		}
+		if ( localProperties.amsymbol ) { 
+			this.flags.amSymbol = localProperties.amsymbol;
+		}
+		if ( localProperties.pmsymbol ) { 
+			this.flags.pmSymbol = localProperties.pmsymbol;
+		}
+	},
+
+	// Over-ride for time validation
+	isValid: function() { 
+		return dojo.validate.isValidTime(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:TimeTextbox");
+
+
+/*
+  ****** UsStateTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is a US state abbr.
+
+  @attr allowTerritories  Allow Guam, Puerto Rico, etc.  Default is true.
+  @attr allowMilitary     Allow military 'states', e.g. Armed Forces Europe (AE). Default is true.
+*/
+dojo.widget.validate.UsStateTextbox = function(node) {
+	this.flags = {};
+}
+
+dojo.inherits(dojo.widget.validate.UsStateTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UsStateTextbox, {
+	// new subclass properties
+	widgetType: "UsStateTextbox", 
+
+	mixInProperties: function(localProperties, frag) {
+		// Initialize properties in super-class.
+		dojo.widget.validate.UsStateTextbox.superclass.mixInProperties.apply(this, arguments);
+
+		// Get properties from markup attibutes, and assign to flags object.
+		if ( localProperties.allowterritories ) { 
+			this.flags.allowTerritories = ( localProperties.allowterritories == "true" );
+		}
+		if ( localProperties.allowmilitary ) { 
+			this.flags.allowMilitary = ( localProperties.allowmilitary == "true" );
+		}
+	},
+
+	isValid: function() { 
+		return dojo.validate.us.isState(this.textbox.value, this.flags);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UsStateTextbox");
+
+
+/*
+  ****** UsZipTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is a US zip code.
+  Validates zip-5 and zip-5 plus 4.
+*/
+dojo.widget.validate.UsZipTextbox = function(node) {}
+
+dojo.inherits(dojo.widget.validate.UsZipTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UsZipTextbox, {
+	// new subclass properties
+	widgetType: "UsZipTextbox", 
+
+	isValid: function() { 
+		return dojo.validate.us.isZipCode(this.textbox.value);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UsZipTextbox");
+
+
+/*
+  ****** UsSocialSecurityNumberTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is a US Social Security Number.
+*/
+dojo.widget.validate.UsSocialSecurityNumberTextbox = function(node) {}
+
+dojo.inherits(dojo.widget.validate.UsSocialSecurityNumberTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UsSocialSecurityNumberTextbox, {
+	// new subclass properties
+	widgetType: "UsSocialSecurityNumberTextbox", 
+
+	isValid: function() { 
+		return dojo.validate.us.isSocialSecurityNumber(this.textbox.value);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UsSocialSecurityNumberTextbox");
+
+
+/*
+  ****** UsPhoneNumberTextbox ******
+
+  A subclass of ValidationTextbox.
+  Over-rides isValid to test if input is a 10-digit US phone number, an extension is optional.
+*/
+dojo.widget.validate.UsPhoneNumberTextbox = function(node) {}
+
+dojo.inherits(dojo.widget.validate.UsPhoneNumberTextbox, dojo.widget.validate.ValidationTextbox);
+
+dojo.lang.extend(dojo.widget.validate.UsPhoneNumberTextbox, {
+	// new subclass properties
+	widgetType: "UsPhoneNumberTextbox", 
+
+	isValid: function() { 
+		return dojo.validate.us.isPhoneNumber(this.textbox.value);
+	}
+
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:UsPhoneNumberTextbox");

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/validate.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/vml/Chart.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/vml/Chart.js?rev=413306&view=auto
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/vml/Chart.js (added)
+++ tapestry/tapestry4/trunk/framework/src/js/dojo/src/widget/vml/Chart.js Sat Jun 10 07:27:44 2006
@@ -0,0 +1,426 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.widget.vml.Chart");
+
+dojo.require("dojo.widget.HtmlWidget");
+dojo.require("dojo.widget.Chart");
+dojo.require("dojo.math");
+dojo.require("dojo.html");
+//dojo.require("dojo.vml");
+dojo.require("dojo.graphics.color");
+
+dojo.widget.vml.Chart=function(){
+	dojo.widget.Chart.call(this);
+	dojo.widget.HtmlWidget.call(this);
+};
+dojo.inherits(dojo.widget.vml.Chart, dojo.widget.HtmlWidget);
+dojo.lang.extend(dojo.widget.vml.Chart, {
+	//	widget props
+	templatePath:null,
+	templateCssPath:null,
+
+	//	state
+	_isInitialized:false,
+	hasData:false,
+
+	//	chart props
+	vectorNode:null,
+	plotArea:null,
+	dataGroup:null,
+	axisGroup:null,
+
+	properties:{
+		height:400,	//	defaults, will resize to the domNode.
+		width:600,
+		plotType:null,
+		padding:{
+			top:10,
+			bottom:2,
+			left:60,
+			right:30
+		},
+		axes:{
+			x:{
+				plotAt:0,
+				label:"",
+				unitLabel:"",
+				unitType:Number,
+				nUnitsToShow:10,
+				range:{
+					min:0,
+					max:200
+				}
+			},
+			y:{
+				plotAt:0,
+				label:"",
+				unitLabel:"",
+				unitType:Number,
+				nUnitsToShow:10,
+				range:{
+					min:0,
+					max:200
+				}
+			}
+		}
+	},
+	
+	fillInTemplate:function(args,frag){
+		this.initialize();
+		this.render();
+	},
+	parseData:function(){
+	},
+	initialize:function(){
+		//	parse the data first.
+		this.parseData();
+	
+		// render the body of the chart, not the chart data.
+		if(this.vectorNode){ this.destroy(); }
+		this.vectorNode=document.createElement("div");
+		this.vectorNode.style.width=this.properties.width+"px";
+		this.vectorNode.style.height=this.properties.height+"px";
+		this.vectorNode.style.position="relative";
+		this.domNode.appendChild(this.vectorNode);
+
+		var plotWidth=this.properties.width-this.properties.padding.left-this.properties.padding.right;
+		var plotHeight=this.properties.height-this.properties.padding.top-this.properties.padding.bottom;
+
+		this.plotArea=document.createElement("div");
+		this.plotArea.style.position="absolute";
+		this.plotArea.style.backgroundColor="#fff";
+		this.plotArea.style.top=(this.properties.padding.top)-2+"px";
+		this.plotArea.style.left=(this.properties.padding.left-1)+"px";
+		this.plotArea.style.width=plotWidth+"px";
+		this.plotArea.style.height=plotHeight+"px";
+		this.vectorNode.appendChild(this.plotArea);
+		
+		this.dataGroup=document.createElement("div");
+		this.dataGroup.style.position="relative";
+		this.plotArea.appendChild(this.dataGroup);
+
+		//	clipping rects, what a fucking pain.
+		var bg=this.domNode.style.backgroundColor;
+		var r=document.createElement("v:rect");
+		r.setAttribute("fillcolor", bg);
+		r.setAttribute("stroked", "false");
+		r.style.position="absolute";
+		r.style.top=(-1*this.properties.padding.top)-1+"px";
+		r.style.left=(-1*this.properties.padding.left)+"px";
+		r.style.width=(this.properties.width-3)+"px";
+		r.style.height=(this.properties.padding.top)-2+"px";
+		this.vectorNode.appendChild(r);
+
+		r=document.createElement("v:rect");
+		r.setAttribute("fillcolor", bg);
+		r.setAttribute("stroked", "false");
+		r.style.position="absolute";
+		r.style.top=plotHeight-2+"px";
+		r.style.left=(-1*this.properties.padding.left)+"px";
+		r.style.width=(this.properties.width-3)+"px";
+		r.style.height=(this.properties.padding.bottom)-2+"px"; // fixme: check this.
+		this.vectorNode.appendChild(r);
+
+		r=document.createElement("v:rect");
+		r.setAttribute("fillcolor", bg);
+		r.setAttribute("stroked", "false");
+		r.style.position="absolute";
+		r.style.top="-2px";
+		r.style.left=(-1*this.properties.padding.left)+"px";
+		r.style.width=(this.properties.padding.left-1)+"px";
+		r.style.height=plotHeight+"px";
+		this.vectorNode.appendChild(r);
+		
+		r=document.createElement("v:rect");
+		r.setAttribute("fillcolor", bg);
+		r.setAttribute("stroked", "false");
+		r.style.position="absolute";
+		r.style.top="-2px";
+		r.style.right=(-1*this.properties.padding.right)+1+"px";
+		r.style.width=(this.properties.padding.right-1)+"px";
+		r.style.height=plotHeight+"px";
+		this.vectorNode.appendChild(r);
+		//	end clipping rects.  god that sucks, i wish VML had clipping outside of that crap vmlframe...
+
+		this.axisGroup=document.createElement("div");
+		this.axisGroup.style.position="relative";
+		this.plotArea.appendChild(this.axisGroup);
+
+		var stroke=1;
+
+		//	x axis
+		var line=document.createElement("v:line");
+		var y=dojo.widget.vml.Chart.Plotter.getY(this.properties.axes.x.plotAt, this);
+		line.setAttribute("from", this.properties.padding.left-stroke + "," + y);
+		line.setAttribute("to", plotWidth + "," + y);
+		line.style.position="absolute";
+		line.style.antialias="false";
+		line.setAttribute("strokecolor", "#666");
+		line.setAttribute("strokeweight", stroke*2+"px");
+		this.axisGroup.appendChild(line);
+
+		//	y axis
+		var line=document.createElement("v:line");
+		var y=dojo.widget.vml.Chart.Plotter.getX(this.properties.axes.y.plotAt, this);
+		line.setAttribute("from", y+","+this.properties.padding.top);
+		line.setAttribute("to", y+","+this.properties.height-this.properties.padding.bottom);
+		line.style.position="absolute";
+		line.style.antialias="false";
+		line.setAttribute("strokecolor", "#666");
+		line.setAttribute("strokeweight", stroke*2+"px");
+		this.axisGroup.appendChild(line);
+		
+		//	labels
+		var size=10;
+
+		//	x axis labels.
+		var t=document.createElement("div");
+		t.style.position="absolute";
+		t.style.top=(this.properties.height-this.properties.padding.bottom+size+2)+"px";
+		t.style.left=this.properties.padding.left+"px";
+		t.style.fontFamily="sans-serif";
+		t.style.fontSize=size+"px";
+		t.innerHTML=dojo.math.round(parseFloat(this.properties.axes.x.range.min),2);
+		this.axisGroup.appendChild(t);
+
+		t=document.createElement("div");
+		t.style.position="absolute";
+		t.style.top=(this.properties.height-this.properties.padding.bottom+size+2)+"px";
+		t.style.left=(this.properties.width-this.properties.padding.right-(size/2))+"px";
+		t.style.fontFamily="sans-serif";
+		t.style.fontSize=size+"px";
+		t.innerHTML=dojo.math.round(parseFloat(this.properties.axes.x.range.max),2);
+		this.axisGroup.appendChild(t);
+
+		//	y axis labels.
+		t=document.createElement("div");
+		t.style.position="absolute";
+		t.style.top=-1*(size/2)+"px";
+		t.style.right=(plotWidth+4)+"px";
+		t.style.fontFamily="sans-serif";
+		t.style.fontSize=size+"px";
+		t.innerHTML=dojo.math.round(parseFloat(this.properties.axes.y.range.max),2);
+		this.axisGroup.appendChild(t);
+		
+		t=document.createElement("div");
+		t.style.position="absolute";
+		t.style.top=(this.properties.height-this.properties.padding.bottom)+"px";
+		t.style.right=(plotWidth+4)+"px";
+		t.style.fontFamily="sans-serif";
+		t.style.fontSize=size+"px";
+		t.innerHTML=dojo.math.round(parseFloat(this.properties.axes.y.range.min),2);
+		this.axisGroup.appendChild(t);
+		
+		//	this is last.
+		this.assignColors();
+		this._isInitialized=true;
+	},
+	destroy:function(){
+		while(this.domNode.childNodes.length>0){
+			this.domNode.removeChild(this.domNode.childNodes[0]);
+		}
+		this.vectorNode=this.plotArea=this.dataGroup=this.axisGroup=null;
+	},
+	render:function(){
+		if (this.dataGroup){
+			while(this.dataGroup.childNodes.length>0){
+				this.dataGroup.removeChild(this.dataGroup.childNodes[0]);
+			}
+		} else {
+			this.initialize();
+		}
+		for(var i=0; i<this.series.length; i++){
+			dojo.widget.vml.Chart.Plotter.plot(this.series[i], this);
+		}
+	}
+});
+
+dojo.widget.vml.Chart.Plotter=new function(){
+	var _this=this;
+	var plotters = {};
+	var types=dojo.widget.Chart.PlotTypes;
+	
+	this.getX=function(value, chart){
+		var v=parseFloat(value);
+		var min=chart.properties.axes.x.range.min;
+		var max=chart.properties.axes.x.range.max;
+		var ofst=0-min;
+		min+=ofst; max+=ofst; v+=ofst;
+
+		var xmin=chart.properties.padding.left;
+		var xmax=chart.properties.width-chart.properties.padding.right;
+		var x=(v*((xmax-xmin)/max))+xmin;
+		return x;
+	};
+	this.getY=function(value, chart){
+		var v=parseFloat(value);
+		var max=chart.properties.axes.y.range.max;
+		var min=chart.properties.axes.y.range.min;
+		var ofst=0;
+		if(min<0)ofst+=Math.abs(min);
+		min+=ofst; max+=ofst; v+=ofst;
+		
+		var ymin=chart.properties.height-chart.properties.padding.bottom;
+		var ymax=chart.properties.padding.top;
+		var y=(((ymin-ymax)/(max-min))*(max-v))+ymax;
+		return y;
+	};
+
+	this.addPlotter=function(name, func){
+		plotters[name]=func;
+	};
+	this.plot=function(series, chart){
+		if (series.values.length==0) return;
+		if (series.plotType && plotters[series.plotType]){
+			return plotters[series.plotType](series, chart);
+		}
+		else if (chart.plotType && plotters[chart.plotType]){
+			return plotters[chart.plotType](series, chart);
+		}
+	};
+
+	//	plotting
+	plotters[types.Bar]=function(series, chart){
+		var space=1;
+		var lastW = 0;
+		for (var i=0; i<series.values.length; i++){
+			var x=_this.getX(series.values[i].x, chart);
+			var w;
+			if (i==series.values.length-1){
+				w=lastW;
+			} else{
+				w=_this.getX(series.values[i+1].x, chart)-x-space;
+				lastW=w;
+			}
+			x-=(w/2);
+
+			var yA=_this.getY(chart.properties.axes.x.plotAt, chart);
+			var y=_this.getY(series.values[i].value, chart);
+			var h=Math.abs(yA-y);
+			if (parseFloat(series.values[i].value)<chart.properties.axes.x.plotAt){
+				var oy=yA;
+				yA=y;
+				y=oy;
+			}
+
+			var bar=document.createElement("v:rect");
+			bar.style.position="absolute";
+			bar.style.top=x+"px";
+			bar.style.left=y+"px";
+			bar.style.width=w+"px";
+			bar.style.height=h+"px";
+			bar.setAttribute("fillColor", series.color);
+			bar.setAttribute("title", series.label + ": " + series.values[i].value);
+			bar.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height);
+			var fill=document.createElement("v:fill");
+			fill.setAttribute("opacity", "0.9");
+			bar.appendChild(fill);
+			chart.dataGroup.appendChild(bar);
+		}
+	};	
+	plotters[types.Line]=function(series, chart){
+		var tension=3;
+
+		var line=document.createElement("v:shape");
+		line.setAttribute("strokeweight", "2px");
+		line.setAttribute("strokecolor", series.color);
+		line.setAttribute("fillcolor", "none");
+		line.setAttribute("filled", "false");
+		line.setAttribute("title", series.label);
+		line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height);
+		line.style.position="absolute";
+		line.style.top="0px";
+		line.style.left="0px";
+		line.style.width= chart.properties.width+"px";
+		line.style.height=chart.properties.height+"px";
+		var stroke=document.createElement("v:stroke");
+		stroke.setAttribute("opacity", "0.85");
+		line.appendChild(stroke);
+
+		var path = [];
+		for (var i=0; i<series.values.length; i++){
+			var x = _this.getX(series.values[i].x, chart)
+			var y = _this.getY(series.values[i].value, chart);
+
+			if (i==0){
+				path.push("m");
+				path.push(x+","+y);
+			}else{
+				var lastx=_this.getX(series.values[i-1].x, chart);
+				var lasty=_this.getY(series.values[i-1].value, chart);
+				var dx=x-lastx;
+				
+				path.push("v");
+				var cx=x-(tension-1)*(dx/tension);
+				path.push(cx+",0");
+				cx=x-(dx/tension);
+				path.push(cx+","+y-lasty);
+				path.push(dx, y-lasty);
+			}
+		}
+		line.setAttribute("path", path.join(" ")+" e");
+		chart.dataGroup.appendChild(line);
+	};
+	plotters[types.Scatter]=function(series, chart){
+		var r=8;
+		for (var i=0; i<series.values.length; i++){
+			var x=_this.getX(series.values[i].x, chart);
+			var y=_this.getY(series.values[i].value, chart);
+			var mod=r/2;
+
+			var point=document.createElement("v:rect");
+			point.setAttribute("fillcolor", series.color);
+			point.setAttribute("strokecolor", series.color);
+			point.setAttribute("title", series.label + ": " + series.values[i].value);
+			point.style.position="absolute";
+			point.style.rotation="45";
+			point.style.top=(y-mod)+"px";
+			point.style.left=(x-mod)+"px";
+			point.style.width=r+"px";
+			point.style.height=r+"px";
+			var fill=document.createElement("v:fill");
+			fill.setAttribute("opacity", "0.5");
+			point.appendChild(fill);
+			chart.dataGroup.appendChild(point);
+		}
+	};	
+	plotters[types.Bubble]=function(series, chart){
+		//	added param for series[n].value: size
+		var minR=1;
+		
+		//	do this off the x axis?
+		var min=chart.properties.axes.x.range.min;
+		var max=chart.properties.axes.x.range.max;
+		var ofst=0-min;
+
+		min+=ofst; max+=ofst;
+		var xmin=chart.properties.padding.left;
+		var xmax=chart.properties.width-chart.properties.padding.right;
+		var factor=(max-min)/(xmax-xmin)*25;
+		
+		for (var i=0; i<series.values.length; i++){
+			var size = series.values[i].size;
+			if (isNaN(parseFloat(size))) size=minR;
+			var mod=(parseFloat(size)*factor)/2;
+
+			var point=document.createElement("v:oval");
+			point.setAttribute("strokecolor", series.color);
+			point.setAttribute("fillcolor", series.color);
+			point.setAttribute("title", series.label + ": " + series.values[i].value + " (" + size + ")");
+			point.style.position="absolute";
+			point.style.top=(_this.getY(series.values[i].value, chart)-mod) + "px";
+			point.style.left=(_this.getX(series.values[i].x, chart)-mod) + "px";
+			point.style.width=mod+"px";
+			point.style.height=mod+"px";
+			chart.dataGroup.appendChild(point);
+		}
+	};
+}();

Added: tapestry/tapestry4/trunk/framework/src/js/dojo/src/xml/Parse.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/dojo/src/xml/Parse.js?rev=413306&view=auto
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/js/dojo/src/xml/Parse.js (added)
+++ tapestry/tapestry4/trunk/framework/src/js/dojo/src/xml/Parse.js Sat Jun 10 07:27:44 2006
@@ -0,0 +1,188 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.xml.Parse");
+
+dojo.require("dojo.dom");
+
+//TODO: determine dependencies
+// currently has dependency on dojo.xml.DomUtil nodeTypes constants...
+
+/* generic method for taking a node and parsing it into an object
+
+TODO: WARNING: This comment is wrong!
+
+For example, the following xml fragment
+
+<foo bar="bar">
+	<baz xyzzy="xyzzy"/>
+</foo>
+
+can be described as:
+
+dojo.???.foo = {}
+dojo.???.foo.bar = {}
+dojo.???.foo.bar.value = "bar";
+dojo.???.foo.baz = {}
+dojo.???.foo.baz.xyzzy = {}
+dojo.???.foo.baz.xyzzy.value = "xyzzy"
+
+*/
+// using documentFragment nomenclature to generalize in case we don't want to require passing a collection of nodes with a single parent
+dojo.xml.Parse = function(){
+
+	function getDojoTagName (node) {
+		var tagName = node.tagName;
+		if (tagName.substr(0,5).toLowerCase() != "dojo:") {
+			
+			if (tagName.substr(0,4).toLowerCase() == "dojo") {
+				// FIXME: this assuumes tag names are always lower case
+				return "dojo:" + tagName.substring(4).toLowerCase();
+			}
+		
+			// allow lower-casing
+			var djt = node.getAttribute("dojoType") || node.getAttribute("dojotype");
+			if (djt) { return "dojo:" + djt.toLowerCase(); }
+			
+			if (node.getAttributeNS && node.getAttributeNS(dojo.dom.dojoml,"type")) {
+				return "dojo:" + node.getAttributeNS(dojo.dom.dojoml,"type").toLowerCase();
+			}
+			try {
+				// FIXME: IE really really doesn't like this, so we squelch
+				// errors for it
+				djt = node.getAttribute("dojo:type");
+			} catch (e) { /* FIXME: log? */ }
+
+			if (djt) { return "dojo:"+djt.toLowerCase(); }
+		
+			if (!dj_global["djConfig"] || !djConfig["ignoreClassNames"]) {
+				// FIXME: should we make this optionally enabled via djConfig?
+				var classes = node.className||node.getAttribute("class");
+				// FIXME: following line, without check for existence of classes.indexOf
+				// breaks firefox 1.5's svg widgets
+				if (classes && classes.indexOf && classes.indexOf("dojo-") != -1) {
+					var aclasses = classes.split(" ");
+					for(var x=0; x<aclasses.length; x++){
+						if (aclasses[x].length > 5 && aclasses[x].indexOf("dojo-") >= 0) {
+							return "dojo:"+aclasses[x].substr(5).toLowerCase();
+						}
+					}
+				}
+			}
+		
+		}
+		return tagName.toLowerCase();
+	}
+
+	this.parseElement = function(node, hasParentNodeSet, optimizeForDojoML, thisIdx){
+
+        // if parseWidgets="false" don't search inside this node for widgets
+        if (node.getAttribute("parseWidgets") == "false") {
+            return {};
+        }
+
+		// TODO: make this namespace aware
+		var parsedNodeSet = {};
+
+		var tagName = getDojoTagName(node);
+		parsedNodeSet[tagName] = [];
+		if((!optimizeForDojoML)||(tagName.substr(0,4).toLowerCase()=="dojo")){
+			var attributeSet = parseAttributes(node);
+			for(var attr in attributeSet){
+				if((!parsedNodeSet[tagName][attr])||(typeof parsedNodeSet[tagName][attr] != "array")){
+					parsedNodeSet[tagName][attr] = [];
+				}
+				parsedNodeSet[tagName][attr].push(attributeSet[attr]);
+			}
+	
+			// FIXME: we might want to make this optional or provide cloning instead of
+			// referencing, but for now, we include a node reference to allow
+			// instantiated components to figure out their "roots"
+			parsedNodeSet[tagName].nodeRef = node;
+			parsedNodeSet.tagName = tagName;
+			parsedNodeSet.index = thisIdx||0;
+		}
+	
+		var count = 0;
+		var tcn, i = 0, nodes = node.childNodes;
+		while(tcn = nodes[i++]){
+			switch(tcn.nodeType){
+				case  dojo.dom.ELEMENT_NODE: // element nodes, call this function recursively
+					count++;
+					var ctn = getDojoTagName(tcn);
+					if(!parsedNodeSet[ctn]){
+						parsedNodeSet[ctn] = [];
+					}
+					parsedNodeSet[ctn].push(this.parseElement(tcn, true, optimizeForDojoML, count));
+					if(	(tcn.childNodes.length == 1)&&
+						(tcn.childNodes.item(0).nodeType == dojo.dom.TEXT_NODE)){
+						parsedNodeSet[ctn][parsedNodeSet[ctn].length-1].value = tcn.childNodes.item(0).nodeValue;
+					}
+					break;
+				case  dojo.dom.TEXT_NODE: // if a single text node is the child, treat it as an attribute
+					if(node.childNodes.length == 1) {
+						parsedNodeSet[tagName].push({ value: node.childNodes.item(0).nodeValue });
+					}
+					break;
+				default: break;
+				/*
+				case  dojo.dom.ATTRIBUTE_NODE: // attribute node... not meaningful here
+					break;
+				case  dojo.dom.CDATA_SECTION_NODE: // cdata section... not sure if this would ever be meaningful... might be...
+					break;
+				case  dojo.dom.ENTITY_REFERENCE_NODE: // entity reference node... not meaningful here
+					break;
+				case  dojo.dom.ENTITY_NODE: // entity node... not sure if this would ever be meaningful
+					break;
+				case  dojo.dom.PROCESSING_INSTRUCTION_NODE: // processing instruction node... not meaningful here
+					break;
+				case  dojo.dom.COMMENT_NODE: // comment node... not not sure if this would ever be meaningful 
+					break;
+				case  dojo.dom.DOCUMENT_NODE: // document node... not sure if this would ever be meaningful
+					break;
+				case  dojo.dom.DOCUMENT_TYPE_NODE: // document type node... not meaningful here
+					break;
+				case  dojo.dom.DOCUMENT_FRAGMENT_NODE: // document fragment node... not meaningful here
+					break;
+				case  dojo.dom.NOTATION_NODE:// notation node... not meaningful here
+					break;
+				*/
+			}
+		}
+		//return (hasParentNodeSet) ? parsedNodeSet[node.tagName] : parsedNodeSet;
+		return parsedNodeSet;
+	}
+
+	/* parses a set of attributes on a node into an object tree */
+	function parseAttributes(node) {
+		// TODO: make this namespace aware
+		var parsedAttributeSet = {};
+		var atts = node.attributes;
+		// TODO: should we allow for duplicate attributes at this point...
+		// would any of the relevant dom implementations even allow this?
+		var attnode, i=0;
+		while(attnode=atts[i++]) {
+			if((dojo.render.html.capable)&&(dojo.render.html.ie)){
+				if(!attnode){ continue; }
+				if(	(typeof attnode == "object")&&
+					(typeof attnode.nodeValue == 'undefined')||
+					(attnode.nodeValue == null)||
+					(attnode.nodeValue == '')){ 
+					continue; 
+				}
+			}
+			var nn = (attnode.nodeName.indexOf("dojo:") == -1) ? attnode.nodeName : attnode.nodeName.split("dojo:")[1];
+			parsedAttributeSet[nn] = { 
+				value: attnode.nodeValue 
+			};
+		}
+		return parsedAttributeSet;
+	}
+}

Propchange: tapestry/tapestry4/trunk/framework/src/js/dojo/src/xml/Parse.js
------------------------------------------------------------------------------
    svn:eol-style = native