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/10/29 02:53:03 UTC

svn commit: r468816 [22/32] - in /tapestry/tapestry4/trunk/tapestry-framework: ./ src/java/org/apache/tapestry/dojo/form/ src/js/dojo/ src/js/dojo/nls/ src/js/dojo/src/ src/js/dojo/src/animation/ src/js/dojo/src/cal/ src/js/dojo/src/charting/ src/js/do...

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Editor2Toolbar.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Editor2Toolbar.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Editor2Toolbar.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Editor2Toolbar.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,75 @@
+
+dojo.provide("dojo.widget.Editor2Toolbar");dojo.require("dojo.lang.*");dojo.require("dojo.widget.*");dojo.require("dojo.event.*");dojo.require("dojo.html.layout");dojo.require("dojo.html.display");dojo.require("dojo.widget.RichText");dojo.require("dojo.widget.PopupContainer");dojo.require("dojo.widget.ColorPalette");dojo.widget.Editor2ToolbarItemManager = {_registeredItemHandlers: [],registerHandler: function(obj, func){if(arguments.length == 2){this._registeredItemHandlers.push(function(){return obj[func].apply(obj, arguments);});}else{this._registeredItemHandlers.push(obj);}},removeHandler: function(func){for(var i=0;i<this._registeredItemHandlers.length;i++){if(func === this._registeredItemHandlers[i]){delete this._registeredItemHandlers[i];return;}}
+dojo.debug("Editor2ToolbarItemManager handler "+func+" is not registered, can not remove.");},destroy: function(){for(var i=0;i<this._registeredItemHandlers.length;i++){delete this._registeredItemHandlers[i];}},getToolbarItem: function(name){var item;name = name.toLowerCase();for(var i=0;i<this._registeredItemHandlers.length;i++){item = this._registeredItemHandlers[i](name);if(item){break;}}
+if(!item){switch(name){case 'bold':
+case 'copy':
+case 'cut':
+case 'delete':
+case 'indent':
+case 'inserthorizontalrule':
+case 'insertorderedlist':
+case 'insertunorderedlist':
+case 'italic':
+case 'justifycenter':
+case 'justifyfull':
+case 'justifyleft':
+case 'justifyright':
+case 'outdent':
+case 'paste':
+case 'redo':
+case 'removeformat':
+case 'selectall':
+case 'strikethrough':
+case 'subscript':
+case 'superscript':
+case 'underline':
+case 'undo':
+case 'unlink':
+case 'createlink':
+case 'insertimage':
+case 'htmltoggle':
+item = new dojo.widget.Editor2ToolbarButton(name);break;case 'forecolor':
+case 'hilitecolor':
+item = new dojo.widget.Editor2ToolbarColorPaletteButton(name);break;case 'plainformatblock':
+item = new dojo.widget.Editor2ToolbarFormatBlockPlainSelect("formatblock");break;case 'formatblock':
+item = new dojo.widget.Editor2ToolbarFormatBlockSelect("formatblock");break;case 'fontsize':
+item = new dojo.widget.Editor2ToolbarFontSizeSelect("fontsize");break;case 'fontname':
+item = new dojo.widget.Editor2ToolbarFontNameSelect("fontname");break;case 'inserttable':
+case 'insertcell':
+case 'insertcol':
+case 'insertrow':
+case 'deletecells':
+case 'deletecols':
+case 'deleterows':
+case 'mergecells':
+case 'splitcell':
+dojo.debug(name + " is implemented in dojo.widget.Editor2Plugin.TableOperation, please require it first.");break;case 'inserthtml':
+case 'blockdirltr':
+case 'blockdirrtl':
+case 'dirltr':
+case 'dirrtl':
+case 'inlinedirltr':
+case 'inlinedirrtl':
+dojo.debug("Not yet implemented toolbar item: "+name);break;default:
+dojo.debug("dojo.widget.Editor2ToolbarItemManager.getToolbarItem: Unknown toolbar item: "+name);}}
+return item;}};dojo.addOnUnload(dojo.widget.Editor2ToolbarItemManager, "destroy");dojo.declare("dojo.widget.Editor2ToolbarButton", null,{initializer: function(name){this._name = name;this._command = dojo.widget.Editor2Manager.getCommand(name);},create: function(node, toolbar, nohover){this._domNode = node;this.disableSelection(this._domNode);this._parentToolbar = toolbar;dojo.event.connect(this._domNode, 'onclick', this, 'onClick');if(!nohover){dojo.event.connect(this._domNode, 'onmouseover', this, 'onMouseOver');dojo.event.connect(this._domNode, 'onmouseout', this, 'onMouseOut');}},disableSelection: function(rootnode){dojo.html.disableSelection(rootnode);var nodes = rootnode.all || rootnode.getElementsByTagName("*");for(var x=0; x<nodes.length; x++){dojo.html.disableSelection(nodes[x]);}},onMouseOver: function(){if(this._command.getState() != dojo.widget.Editor2Manager.commandState.Disabled){this.highlightToolbarItem();}},onMouseOut: function(){this.unhighlightToolbarItem()
 ;},destroy: function(){this._domNode = null;delete this._command;this._parentToolbar = null;},onClick: function(e){if(this._domNode && !this._domNode.disabled && this._command){e.preventDefault();e.stopPropagation();this._command.execute();}},refreshState: function(){if(this._domNode && this._command){var em = dojo.widget.Editor2Manager;var state = this._command.getState();if(state != this._lastState){switch(state){case em.commandState.Latched:
+this.latchToolbarItem();break;case em.commandState.Enabled:
+this.enableToolbarItem();break;case em.commandState.Disabled:
+default:
+this.disableToolbarItem();}
+this._lastState = state;}
+return state;}},latchToolbarItem: function(){this._domNode.disabled = false;this.removeToolbarItemStyle(this._domNode);dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarLatchedItemStyle);},enableToolbarItem: function(){this._domNode.disabled = false;this.removeToolbarItemStyle(this._domNode);dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarEnabledItemStyle);},disableToolbarItem: function(){this._domNode.disabled = true;this.removeToolbarItemStyle(this._domNode);dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarDisabledItemStyle);},highlightToolbarItem: function(){dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarHighlightedItemStyle);},unhighlightToolbarItem: function(){dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarHighlightedItemStyle);},removeToolbarItemStyle: function(){dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarEnabledItemStyle);dojo.html.removeClass(this._domNode, this._parentToolbar.Too
 lbarLatchedItemStyle);dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarDisabledItemStyle);this.unhighlightToolbarItem();}});dojo.declare("dojo.widget.Editor2ToolbarDropDownButton", dojo.widget.Editor2ToolbarButton,{onClick: function(){if(this._domNode){if(!this._dropdown){this._dropdown = dojo.widget.createWidget("PopupContainer", {});this._domNode.appendChild(this._dropdown.domNode);}
+if(this._dropdown.isShowingNow){this._dropdown.close();}else{this.onDropDownShown();this._dropdown.open(this._domNode, null, this._domNode);}}},destroy: function(){this.onDropDownDestroy();if(this._dropdown){this._dropdown.destroy();}
+dojo.widget.Editor2ToolbarDropDownButton.superclass.destroy.call(this);},onDropDownShown: function(){},onDropDownDestroy: function(){}});dojo.declare("dojo.widget.Editor2ToolbarColorPaletteButton", dojo.widget.Editor2ToolbarDropDownButton,{onDropDownShown: function(){if(!this._colorpalette){this._colorpalette = dojo.widget.createWidget("ColorPalette", {});this._dropdown.addChild(this._colorpalette);this.disableSelection(this._dropdown.domNode);this.disableSelection(this._colorpalette.domNode);dojo.event.connect(this._colorpalette, "onColorSelect", this, 'setColor');dojo.event.connect(this._dropdown, "open", this, 'latchToolbarItem');dojo.event.connect(this._dropdown, "close", this, 'enableToolbarItem');}},setColor: function(color){this._dropdown.close();this._command.execute(color);}});dojo.declare("dojo.widget.Editor2ToolbarFormatBlockPlainSelect", dojo.widget.Editor2ToolbarButton,{create: function(node, toolbar){this._domNode = node;this.disableSelection(this._domNode);thi
 s._parentToolbar = toolbar;dojo.event.connect(this._domNode, 'onchange', this, 'onChange');},destroy: function(){this._domNode = null;this._command = null;this._parentToolbar = null;},onChange: function(){if(this._domNode){var sv = this._domNode.value.toLowerCase();this._command.execute(sv);}},refreshState: function(){if(this._domNode && this._command){dojo.widget.Editor2ToolbarFormatBlockPlainSelect.superclass.refreshState.call(this);var format = this._command.getValue();if(!format){ format = ""; }
+dojo.lang.forEach(this._domNode.options, function(item){if(item.value.toLowerCase() == format.toLowerCase()){item.selected = true;}});}}});dojo.declare("dojo.widget.Editor2ToolbarComboItem", dojo.widget.Editor2ToolbarDropDownButton,{href: null,create: function(node, toolbar){dojo.widget.Editor2ToolbarComboItem.superclass.create.call(this, node, toolbar);if(!this._contentPane){dojo.require("dojo.widget.ContentPane");this._contentPane = dojo.widget.createWidget("ContentPane", {preload: 'true'});this._contentPane.addOnLoad(this, "setup");this._contentPane.setUrl(this.href);}},onMouseOver: function(e){dojo.html.addClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectStyle);},onMouseOut:function(e){dojo.html.removeClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectStyle);},onDropDownShown: function(){if(!this._dropdown.__addedContentPage){this._dropdown.addChild(this._contentPane);this._dropdown.__addedContentPage = true;}},setup: function(){},onChan
 ge: function(e){var name = e.currentTarget.getAttribute("dropDownItemName");this._command.execute(name);this._dropdown.close();},onMouseOverItem: function(e){dojo.html.addClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectItemStyle);},onMouseOutItem: function(e){dojo.html.removeClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectItemStyle);},refreshState: function(){}});dojo.declare("dojo.widget.Editor2ToolbarFormatBlockSelect", dojo.widget.Editor2ToolbarComboItem,{href: dojo.uri.dojoUri("src/widget/templates/Editor2/EditorToolbar_FormatBlock.html"),setup: function(){dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.setup.call(this);var nodes = this._contentPane.domNode.all || this._contentPane.domNode.getElementsByTagName("*");this._blockNames = {};this._blockDisplayNames = {};for(var x=0; x<nodes.length; x++){var node = nodes[x];dojo.html.disableSelection(node);var name=node.getAttribute("dropDownItemName")
+if(name){this._blockNames[name] = node;var childrennodes = node.getElementsByTagName(name);this._blockDisplayNames[name] = childrennodes[childrennodes.length-1].innerHTML;}}
+for(var name in this._blockNames){dojo.event.connect(this._blockNames[name], "onclick", this, "onChange");dojo.event.connect(this._blockNames[name], "onmouseover", this, "onMouseOverItem");dojo.event.connect(this._blockNames[name], "onmouseout", this, "onMouseOutItem");}},onDropDownDestroy: function(){if(this._blockNames){for(var name in this._blockNames){delete this._blockNames[name];delete this._blockDisplayNames[name];}}},refreshState: function(){if(this._command){var format = this._command.getValue();if(format == this._lastSelectedFormat && this._blockDisplayNames){return;}
+this._lastSelectedFormat = format;var label = this._domNode.getElementsByTagName("label")[0];var isSet = false;if(this._blockDisplayNames){for(var name in this._blockDisplayNames){if(name == format){label.innerHTML = 	this._blockDisplayNames[name];isSet = true;break;}}
+if(!isSet){label.innerHTML = "&nbsp;";}}}}});dojo.declare("dojo.widget.Editor2ToolbarFontSizeSelect", dojo.widget.Editor2ToolbarComboItem,{href: dojo.uri.dojoUri("src/widget/templates/Editor2/EditorToolbar_FontSize.html"),setup: function(){dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.setup.call(this);var nodes = this._contentPane.domNode.all || this._contentPane.domNode.getElementsByTagName("*");this._fontsizes = {};this._fontSizeDisplayNames = {};for(var x=0; x<nodes.length; x++){var node = nodes[x];dojo.html.disableSelection(node);var name=node.getAttribute("dropDownItemName")
+if(name){this._fontsizes[name] = node;this._fontSizeDisplayNames[name] = node.getElementsByTagName('font')[0].innerHTML;}}
+for(var name in this._fontsizes){dojo.event.connect(this._fontsizes[name], "onclick", this, "onChange");dojo.event.connect(this._fontsizes[name], "onmouseover", this, "onMouseOverItem");dojo.event.connect(this._fontsizes[name], "onmouseout", this, "onMouseOutItem");}},onDropDownDestroy: function(){if(this._fontsizes){for(var name in this._fontsizes){delete this._fontsizes[name];delete this._fontSizeDisplayNames[name];}}},refreshState: function(){if(this._command){var size = this._command.getValue();if(size == this._lastSelectedSize && this._fontSizeDisplayNames){return;}
+this._lastSelectedSize = size;var label = this._domNode.getElementsByTagName("label")[0];var isSet = false;if(this._fontSizeDisplayNames){for(var name in this._fontSizeDisplayNames){if(name == size){label.innerHTML = 	this._fontSizeDisplayNames[name];isSet = true;break;}}
+if(!isSet){label.innerHTML = "&nbsp;";}}}}});dojo.declare("dojo.widget.Editor2ToolbarFontNameSelect", dojo.widget.Editor2ToolbarFontSizeSelect,{href: dojo.uri.dojoUri("src/widget/templates/Editor2/EditorToolbar_FontName.html")});dojo.widget.defineWidget(
+"dojo.widget.Editor2Toolbar",dojo.widget.HtmlWidget,{templatePath: dojo.uri.dojoUri("src/widget/templates/EditorToolbar.html"),templateCssPath: dojo.uri.dojoUri("src/widget/templates/EditorToolbar.css"),ToolbarLatchedItemStyle: "ToolbarButtonLatched",ToolbarEnabledItemStyle: "ToolbarButtonEnabled",ToolbarDisabledItemStyle: "ToolbarButtonDisabled",ToolbarHighlightedItemStyle: "ToolbarButtonHighlighted",ToolbarHighlightedSelectStyle: "ToolbarSelectHighlighted",ToolbarHighlightedSelectItemStyle: "ToolbarSelectHighlightedItem",postCreate: function(){var nodes = dojo.html.getElementsByClass("dojoEditorToolbarItem", this.domNode);this.items = {};for(var x=0; x<nodes.length; x++){var node = nodes[x];var itemname = node.getAttribute("dojoETItemName");if(itemname){var item = dojo.widget.Editor2ToolbarItemManager.getToolbarItem(itemname);if(item){item.create(node, this);this.items[itemname.toLowerCase()] = item;}else{node.style.display = "none";}}}},update: function(){for(var cmd in t
 his.items){this.items[cmd].refreshState();}},destroy: function(){for(var it in this.items){this.items[it].destroy();delete this.items[it];}
+dojo.widget.Editor2Toolbar.superclass.destroy.call(this);}},"html",function(){dojo.event.connect(this, "fillInTemplate", dojo.lang.hitch(this, function(){if(dojo.render.html.ie){this.domNode.style.zoom = 1.0;}}));}
+);
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FilteringTable.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FilteringTable.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FilteringTable.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FilteringTable.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,81 @@
+
+dojo.provide("dojo.widget.FilteringTable");dojo.require("dojo.date.format");dojo.require("dojo.collections.Store");dojo.require("dojo.html.*");dojo.require("dojo.html.util");dojo.require("dojo.html.style");dojo.require("dojo.html.selection");dojo.require("dojo.event.*");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.widget.defineWidget(
+"dojo.widget.FilteringTable",dojo.widget.HtmlWidget,function(){this.store=new dojo.collections.Store();this.valueField="Id";this.multiple=false;this.maxSelect=0;this.maxSortable=1;this.minRows=0;this.defaultDateFormat = "%D";this.isInitialized=false;this.alternateRows=false;this.columns=[];this.sortInformation=[{index:0,direction:0}];this.headClass="";this.tbodyClass="";this.headerClass="";this.headerUpClass="selectedUp";this.headerDownClass="selectedDown";this.rowClass="";this.rowAlternateClass="alt";this.rowSelectedClass="selected";this.columnSelected="sorted-column";},{isContainer: false,templatePath: null,templateCssPath: null,getTypeFromString: function(s){var parts = s.split("."), i = 0, obj = dj_global;do{obj = obj[parts[i++]];} while (i < parts.length && obj);return (obj != dj_global) ? obj : null;},getByRow: function(row){return this.store.getByKey(dojo.html.getAttribute(row, "value"));},getDataByRow: function(row){return this.store.getDataByKey(dojo.html.getAttribu
 te(row, "value"));},getRow: function( obj){var rows = this.domNode.tBodies[0].rows;for(var i=0; i<rows.length; i++){if(this.store.getDataByKey(dojo.html.getAttribute(rows[i], "value")) == obj){return rows[i];}}
+return null;},getColumnIndex: function(fieldPath){for(var i=0; i<this.columns.length; i++){if(this.columns[i].getField() == fieldPath){return i;}}
+return -1;},getSelectedData: function(){var data=this.store.get();var a=[];for(var i=0; i<data.length; i++){if(data[i].isSelected){a.push(data[i].src);}}
+if(this.multiple){return a;} else {return a[0];}},isSelected: function(obj){var data = this.store.get();for(var i=0; i<data.length; i++){if(data[i].src == obj){return true;}}
+return false;},isValueSelected: function(val){var v = this.store.getByKey(val);if(v){return v.isSelected;}
+return false;},isIndexSelected: function(idx){var v = this.store.getByIndex(idx);if(v){return v.isSelected;}
+return false;},isRowSelected: function(row){var v = this.getByRow(row);if(v){return v.isSelected;}
+return false;},reset: function(){this.store.clearData();this.columns = [];this.sortInformation = [ {index:0, direction:0} ];this.resetSelections();this.isInitialized = false;this.onReset();},resetSelections: function(){this.store.forEach(function(element){element.isSelected = false;});},onReset:function(){},select: function( obj){var data = this.store.get();for(var i=0; i<data.length; i++){if(data[i].src == obj){data[i].isSelected = true;break;}}
+this.onDataSelect(obj);},selectByValue: function( val){this.select(this.store.getDataByKey(val));},selectByIndex: function( idx){this.select(this.store.getDataByIndex(idx));},selectByRow: function( row){this.select(this.getDataByRow(row));},selectAll: function(){this.store.forEach(function(element){element.isSelected = true;});},onDataSelect: function(obj){},toggleSelection: function(obj){var data = this.store.get();for(var i=0; i<data.length; i++){if(data[i].src == obj){data[i].isSelected = !data[i].isSelected;break;}}
+this.onDataToggle(obj);},toggleSelectionByValue: function(val){this.toggleSelection(this.store.getDataByKey(val));},toggleSelectionByIndex: function(idx){this.toggleSelection(this.store.getDataByIndex(idx));},toggleSelectionByRow: function(row){this.toggleSelection(this.getDataByRow(row));},toggleAll: function(){this.store.forEach(function(element){element.isSelected = !element.isSelected;});},onDataToggle: function(obj){},_meta:{field:null,format:null,filterer:null,noSort:false,sortType:"String",dataType:String,sortFunction:null,filterFunction:null,label:null,align:"left",valign:"middle",getField:function(){return this.field || this.label;},getType:function(){return this.dataType;}},createMetaData: function(obj){for(var p in this._meta){if(!obj[p]){obj[p] = this._meta[p];}}
+if(!obj.label){obj.label=obj.field;}
+if(!obj.filterFunction){obj.filterFunction=this._defaultFilter;}
+return obj;},parseMetadata: function(head){this.columns=[];this.sortInformation=[];var row = head.getElementsByTagName("tr")[0];var cells = row.getElementsByTagName("td");if (cells.length == 0){cells = row.getElementsByTagName("th");}
+for(var i=0; i<cells.length; i++){var o = this.createMetaData({ });if(dojo.html.hasAttribute(cells[i], "align")){o.align = dojo.html.getAttribute(cells[i],"align");}
+if(dojo.html.hasAttribute(cells[i], "valign")){o.valign = dojo.html.getAttribute(cells[i],"valign");}
+if(dojo.html.hasAttribute(cells[i], "nosort")){o.noSort = (dojo.html.getAttribute(cells[i],"nosort")=="true");}
+if(dojo.html.hasAttribute(cells[i], "sortusing")){var trans = dojo.html.getAttribute(cells[i],"sortusing");var f = this.getTypeFromString(trans);if (f != null && f != window && typeof(f)=="function"){o.sortFunction=f;}}
+o.label = dojo.html.renderedTextContent(cells[i]);if(dojo.html.hasAttribute(cells[i], "field")){o.field=dojo.html.getAttribute(cells[i],"field");} else if(o.label.length > 0){o.field=o.label;} else {o.field = "field" + i;}
+if(dojo.html.hasAttribute(cells[i], "format")){o.format=dojo.html.getAttribute(cells[i],"format");}
+if(dojo.html.hasAttribute(cells[i], "dataType")){var sortType = dojo.html.getAttribute(cells[i],"dataType");if(sortType.toLowerCase()=="html" || sortType.toLowerCase()=="markup"){o.sortType = "__markup__";}else{var type = this.getTypeFromString(sortType);if(type){o.sortType = sortType;o.dataType = type;}}}
+if(dojo.html.hasAttribute(cells[i], "filterusing")){var trans = dojo.html.getAttribute(cells[i],"filterusing");var f = this.getTypeFromString(trans);if (f != null && f != window && typeof(f)=="function"){o.filterFunction=f;}}
+this.columns.push(o);if(dojo.html.hasAttribute(cells[i], "sort")){var info = {index:i,direction:0};var dir = dojo.html.getAttribute(cells[i], "sort");if(!isNaN(parseInt(dir))){dir = parseInt(dir);info.direction = (dir != 0) ? 1 : 0;}else{info.direction = (dir.toLowerCase() == "desc") ? 1 : 0;}
+this.sortInformation.push(info);}}
+if(this.sortInformation.length == 0){this.sortInformation.push({index:0,direction:0});} else if (this.sortInformation.length > this.maxSortable){this.sortInformation.length = this.maxSortable;}},parseData: function(body){if(body.rows.length == 0 && this.columns.length == 0){return;}
+var self=this;this["__selected__"] = [];var arr = this.store.getFromHtml(this.columns, body, function(obj, row){obj[self.valueField] = dojo.html.getAttribute(row, "value");if(dojo.html.getAttribute(row, "selected")=="true"){self["__selected__"].push(obj);}});this.store.setData(arr);for(var i=0; i<this["__selected__"].length; i++){this.select(this["__selected__"][i]);}
+this.renderSelections();delete this["__selected__"];this.isInitialized=true;},onSelect: function(e){var row = dojo.html.getParentByType(e.target,"tr");if(dojo.html.hasAttribute(row,"emptyRow")){return;}
+var body = dojo.html.getParentByType(row,"tbody");if(this.multiple){if(e.shiftKey){var startRow;var rows=body.rows;for(var i=0;i<rows.length;i++){if(rows[i]==row){break;}
+if(this.isRowSelected(rows[i])){startRow=rows[i];}}
+if(!startRow){startRow = row;for(; i<rows.length; i++){if(this.isRowSelected(rows[i])){row = rows[i];break;}}}
+this.resetSelections();if(startRow == row){this.toggleSelectionByRow(row);} else {var doSelect = false;for(var i=0; i<rows.length; i++){if(rows[i] == startRow){doSelect=true;}
+if(doSelect){this.selectByRow(rows[i]);}
+if(rows[i] == row){doSelect = false;}}}} else {this.toggleSelectionByRow(row);}} else {this.resetSelections();this.toggleSelectionByRow(row);}
+this.renderSelections();},onSort: function(e){var oldIndex=this.sortIndex;var oldDirection=this.sortDirection;var source=e.target;var row=dojo.html.getParentByType(source,"tr");var cellTag="td";if(row.getElementsByTagName(cellTag).length==0){cellTag="th";}
+var headers=row.getElementsByTagName(cellTag);var header=dojo.html.getParentByType(source,cellTag);for(var i=0; i<headers.length; i++){dojo.html.setClass(headers[i], this.headerClass);if(headers[i]==header){if(this.sortInformation[0].index != i){this.sortInformation.unshift({index:i,direction:0});} else {this.sortInformation[0] = {index:i,direction:(~this.sortInformation[0].direction)&1};}}}
+this.sortInformation.length = Math.min(this.sortInformation.length, this.maxSortable);for(var i=0; i<this.sortInformation.length; i++){var idx=this.sortInformation[i].index;var dir=(~this.sortInformation[i].direction)&1;dojo.html.setClass(headers[idx], dir==0?this.headerDownClass:this.headerUpClass);}
+this.render();},onFilter: function(){},_defaultFilter: function(obj){return true;},setFilter: function(field, fn){for(var i=0; i<this.columns.length; i++){if(this.columns[i].getField() == field){this.columns[i].filterFunction=fn;break;}}
+this.applyFilters();},setFilterByIndex: function(idx, fn){this.columns[idx].filterFunction=fn;this.applyFilters();},clearFilter: function(field){for(var i=0; i<this.columns.length; i++){if(this.columns[i].getField() == field){this.columns[i].filterFunction=this._defaultFilter;break;}}
+this.applyFilters();},clearFilterByIndex: function(idx){this.columns[idx].filterFunction=this._defaultFilter;this.applyFilters();},clearFilters: function(){for(var i=0; i<this.columns.length; i++){this.columns[i].filterFunction=this._defaultFilter;}
+var rows=this.domNode.tBodies[0].rows;for(var i=0; i<rows.length; i++){rows[i].style.display="";if(this.alternateRows){dojo.html[((i % 2 == 1)?"addClass":"removeClass")](rows[i], this.rowAlternateClass);}}
+this.onFilter();},applyFilters: function(){var alt=0;var rows=this.domNode.tBodies[0].rows;for(var i=0; i<rows.length; i++){var b=true;var row=rows[i];for(var j=0; j<this.columns.length; j++){var value = this.store.getField(this.getDataByRow(row), this.columns[j].getField());if(this.columns[j].getType() == Date && value != null && !value.getYear){value = new Date(value);}
+if(!this.columns[j].filterFunction(value)){b=false;break;}}
+row.style.display=(b?"":"none");if(b && this.alternateRows){dojo.html[((alt++ % 2 == 1)?"addClass":"removeClass")](row, this.rowAlternateClass);}}
+this.onFilter();},createSorter: function(info){var self=this;var sortFunctions=[];function createSortFunction(fieldIndex, dir){var meta=self.columns[fieldIndex];var field=meta.getField();return function(rowA, rowB){if(dojo.html.hasAttribute(rowA,"emptyRow") || dojo.html.hasAttribute(rowB,"emptyRow")){return -1;}
+var a = self.store.getField(self.getDataByRow(rowA), field);var b = self.store.getField(self.getDataByRow(rowB), field);var ret = 0;if(a > b) ret = 1;if(a < b) ret = -1;return dir * ret;}}
+var current=0;var max = Math.min(info.length, this.maxSortable, this.columns.length);while(current < max){var direction = (info[current].direction == 0) ? 1 : -1;sortFunctions.push(
+createSortFunction(info[current].index, direction)
+);current++;}
+return function(rowA, rowB){var idx=0;while(idx < sortFunctions.length){var ret = sortFunctions[idx++](rowA, rowB);if(ret != 0) return ret;}
+return 0;};},createRow: function(obj){var row=document.createElement("tr");dojo.html.disableSelection(row);if(obj.key != null){row.setAttribute("value", obj.key);}
+for(var j=0; j<this.columns.length; j++){var cell=document.createElement("td");cell.setAttribute("align", this.columns[j].align);cell.setAttribute("valign", this.columns[j].valign);dojo.html.disableSelection(cell);var val = this.store.getField(obj.src, this.columns[j].getField());if(typeof(val)=="undefined"){val="";}
+this.fillCell(cell, this.columns[j], val);row.appendChild(cell);}
+return row;},fillCell: function(cell, meta, val){if(meta.sortType=="__markup__"){cell.innerHTML=val;} else {if(meta.getType()==Date) {val=new Date(val);if(!isNaN(val)){var format = this.defaultDateFormat;if(meta.format){format = meta.format;}
+cell.innerHTML = dojo.date.strftime(val, format);} else {cell.innerHTML = val;}} else if ("Number number int Integer float Float".indexOf(meta.getType())>-1){if(val.length == 0){val="0";}
+var n = parseFloat(val, 10) + "";if(n.indexOf(".")>-1){n = dojo.math.round(parseFloat(val,10),2);}
+cell.innerHTML = n;}else{cell.innerHTML = val;}}},prefill: function(){this.isInitialized = false;var body = this.domNode.tBodies[0];while (body.childNodes.length > 0){body.removeChild(body.childNodes[0]);}
+if(this.minRows>0){for(var i=0; i < this.minRows; i++){var row = document.createElement("tr");if(this.alternateRows){dojo.html[((i % 2 == 1)?"addClass":"removeClass")](row, this.rowAlternateClass);}
+row.setAttribute("emptyRow","true");for(var j=0; j<this.columns.length; j++){var cell = document.createElement("td");cell.innerHTML = "&nbsp;";row.appendChild(cell);}
+body.appendChild(row);}}},init: function(){this.isInitialized=false;var head=this.domNode.getElementsByTagName("thead")[0];if(head.getElementsByTagName("tr").length == 0){var row=document.createElement("tr");for(var i=0; i<this.columns.length; i++){var cell=document.createElement("td");cell.setAttribute("align", this.columns[i].align);cell.setAttribute("valign", this.columns[i].valign);dojo.html.disableSelection(cell);cell.innerHTML=this.columns[i].label;row.appendChild(cell);if(!this.columns[i].noSort){dojo.event.connect(cell, "onclick", this, "onSort");}}
+dojo.html.prependChild(row, head);}
+if(this.store.get().length == 0){return false;}
+var idx=this.domNode.tBodies[0].rows.length;if(!idx || idx==0 || this.domNode.tBodies[0].rows[0].getAttribute("emptyRow")=="true"){idx = 0;var body = this.domNode.tBodies[0];while(body.childNodes.length>0){body.removeChild(body.childNodes[0]);}
+var data = this.store.get();for(var i=0; i<data.length; i++){var row = this.createRow(data[i]);dojo.event.connect(row, "onclick", this, "onSelect");body.appendChild(row);idx++;}}
+if(this.minRows > 0 && idx < this.minRows){idx = this.minRows - idx;for(var i=0; i<idx; i++){row=document.createElement("tr");row.setAttribute("emptyRow","true");for(var j=0; j<this.columns.length; j++){cell=document.createElement("td");cell.innerHTML="&nbsp;";row.appendChild(cell);}
+body.appendChild(row);}}
+var row=this.domNode.getElementsByTagName("thead")[0].rows[0];var cellTag="td";if(row.getElementsByTagName(cellTag).length==0) cellTag="th";var headers=row.getElementsByTagName(cellTag);for(var i=0; i<headers.length; i++){dojo.html.setClass(headers[i], this.headerClass);}
+for(var i=0; i<this.sortInformation.length; i++){var idx=this.sortInformation[i].index;var dir=(~this.sortInformation[i].direction)&1;dojo.html.setClass(headers[idx], dir==0?this.headerDownClass:this.headerUpClass);}
+this.isInitialized=true;return this.isInitialized;},render: function(){if(!this.isInitialized){var b = this.init();if(!b){this.prefill();return;}}
+var rows=[];var body=this.domNode.tBodies[0];var emptyRowIdx=-1;for(var i=0; i<body.rows.length; i++){rows.push(body.rows[i]);}
+var sortFunction = this.createSorter(this.sortInformation);if(sortFunction){rows.sort(sortFunction);}
+for(var i=0; i<rows.length; i++){if(this.alternateRows){dojo.html[((i%2==1)?"addClass":"removeClass")](rows[i], this.rowAlternateClass);}
+dojo.html[(this.isRowSelected(body.rows[i])?"addClass":"removeClass")](body.rows[i], this.rowSelectedClass);body.appendChild(rows[i]);}},renderSelections: function(){var body=this.domNode.tBodies[0];for(var i=0; i<body.rows.length; i++){dojo.html[(this.isRowSelected(body.rows[i])?"addClass":"removeClass")](body.rows[i], this.rowSelectedClass);}},initialize: function(){var self=this;dojo.event.connect(this.store, "onSetData", function(){self.store.forEach(function(element){element.isSelected = false;});self.isInitialized=false;var body = self.domNode.tBodies[0];if(body){while(body.childNodes.length>0){body.removeChild(body.childNodes[0]);}}
+self.render();});dojo.event.connect(this.store, "onClearData", function(){self.render();});dojo.event.connect(this.store, "onAddData", function(addedObject){var row=self.createRow(addedObject);dojo.event.connect(row, "onclick", self, "onSelect");self.domNode.tBodies[0].appendChild(row);self.render();});dojo.event.connect(this.store, "onAddDataRange", function(arr){for(var i=0; i<arr.length; i++){arr[i].isSelected=false;var row=self.createRow(arr[i]);dojo.event.connect(row, "onclick", self, "onSelect");self.domNode.tBodies[0].appendChild(row);};self.render();});dojo.event.connect(this.store, "onRemoveData", function(removedObject){var rows = self.domNode.tBodies[0].rows;for(var i=0; i<rows.length; i++){if(self.getDataByRow(rows[i]) == removedObject.src){rows[i].parentNode.removeChild(rows[i]);break;}}
+self.render();});dojo.event.connect(this.store, "onUpdateField", function(obj, fieldPath, val){var row = self.getRow(obj);var idx = self.getColumnIndex(fieldPath);if(row && row.cells[idx] && self.columns[idx]){self.fillCell(row.cells[idx], self.columns[idx], val);}});},postCreate: function(){this.store.keyField = this.valueField;if(this.domNode){if(this.domNode.nodeName.toLowerCase() != "table"){}
+if(this.domNode.getElementsByTagName("thead")[0]){var head=this.domNode.getElementsByTagName("thead")[0];if(this.headClass.length > 0){head.className = this.headClass;}
+dojo.html.disableSelection(this.domNode);this.parseMetadata(head);var header="td";if(head.getElementsByTagName(header).length==0){header="th";}
+var headers = head.getElementsByTagName(header);for(var i=0; i<headers.length; i++){if(!this.columns[i].noSort){dojo.event.connect(headers[i], "onclick", this, "onSort");}}} else {this.domNode.appendChild(document.createElement("thead"));}
+if (this.domNode.tBodies.length < 1) {var body = document.createElement("tbody");this.domNode.appendChild(body);} else {var body = this.domNode.tBodies[0];}
+if (this.tbodyClass.length > 0){body.className = this.tbodyClass;}
+this.parseData(body);}}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FisheyeList.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FisheyeList.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FisheyeList.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FisheyeList.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,66 @@
+
+dojo.provide("dojo.widget.FisheyeList");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.html.style");dojo.require("dojo.html.selection");dojo.require("dojo.html.util");dojo.require("dojo.event.*");dojo.widget.defineWidget(
+"dojo.widget.FisheyeList",dojo.widget.HtmlWidget,function(){this.pos = {x: -1, y: -1};this.EDGE = {CENTER: 0,LEFT: 1,RIGHT: 2,TOP: 3,BOTTOM: 4};this.timerScale = 1.0;},{templateString: '<div class="dojoHtmlFisheyeListBar"></div>',templateCssPath: dojo.uri.dojoUri("src/widget/templates/FisheyeList.css"),isContainer: true,snarfChildDomOutput: true,itemWidth: 40,itemHeight: 40,itemMaxWidth: 150,itemMaxHeight: 150,orientation: 'horizontal',conservativeTrigger: false,effectUnits: 2,itemPadding: 10,attachEdge: 'center',labelEdge: 'bottom',enableCrappySvgSupport: false,fillInTemplate: function() {dojo.html.disableSelection(this.domNode);this.isHorizontal = (this.orientation == 'horizontal');this.selectedNode = -1;this.isOver = false;this.hitX1 = -1;this.hitY1 = -1;this.hitX2 = -1;this.hitY2 = -1;this.anchorEdge = this._toEdge(this.attachEdge, this.EDGE.CENTER);this.labelEdge  = this._toEdge(this.labelEdge,  this.EDGE.TOP);if ( this.isHorizontal && (this.anchorEdge == this.EDGE.LEFT
   )){ this.anchorEdge = this.EDGE.CENTER; }
+if ( this.isHorizontal && (this.anchorEdge == this.EDGE.RIGHT )){ this.anchorEdge = this.EDGE.CENTER; }
+if (!this.isHorizontal && (this.anchorEdge == this.EDGE.TOP   )){ this.anchorEdge = this.EDGE.CENTER; }
+if (!this.isHorizontal && (this.anchorEdge == this.EDGE.BOTTOM)){ this.anchorEdge = this.EDGE.CENTER; }
+if (this.labelEdge == this.EDGE.CENTER){ this.labelEdge = this.EDGE.TOP; }
+if ( this.isHorizontal && (this.labelEdge == this.EDGE.LEFT  )){ this.labelEdge = this.EDGE.TOP; }
+if ( this.isHorizontal && (this.labelEdge == this.EDGE.RIGHT )){ this.labelEdge = this.EDGE.TOP; }
+if (!this.isHorizontal && (this.labelEdge == this.EDGE.TOP   )){ this.labelEdge = this.EDGE.LEFT; }
+if (!this.isHorizontal && (this.labelEdge == this.EDGE.BOTTOM)){ this.labelEdge = this.EDGE.LEFT; }
+this.proximityLeft   = this.itemWidth  * (this.effectUnits - 0.5);this.proximityRight  = this.itemWidth  * (this.effectUnits - 0.5);this.proximityTop    = this.itemHeight * (this.effectUnits - 0.5);this.proximityBottom = this.itemHeight * (this.effectUnits - 0.5);if (this.anchorEdge == this.EDGE.LEFT){this.proximityLeft = 0;}
+if (this.anchorEdge == this.EDGE.RIGHT){this.proximityRight = 0;}
+if (this.anchorEdge == this.EDGE.TOP){this.proximityTop = 0;}
+if (this.anchorEdge == this.EDGE.BOTTOM){this.proximityBottom = 0;}
+if (this.anchorEdge == this.EDGE.CENTER){this.proximityLeft   /= 2;this.proximityRight  /= 2;this.proximityTop    /= 2;this.proximityBottom /= 2;}},postCreate: function() {this._initializePositioning();if( !this.conservativeTrigger ){dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");}
+dojo.event.connect(document.documentElement, "onmouseout", this, "_onBodyOut");dojo.event.connect(this, "addChild", this, "_initializePositioning");},_initializePositioning: function(){this.itemCount = this.children.length;this.barWidth  = (this.isHorizontal ? this.itemCount : 1) * this.itemWidth;this.barHeight = (this.isHorizontal ? 1 : this.itemCount) * this.itemHeight;this.totalWidth  = this.proximityLeft + this.proximityRight  + this.barWidth;this.totalHeight = this.proximityTop  + this.proximityBottom + this.barHeight;for (var i=0; i<this.children.length; i++){this.children[i].posX = this.itemWidth  * (this.isHorizontal ? i : 0);this.children[i].posY = this.itemHeight * (this.isHorizontal ? 0 : i);this.children[i].cenX = this.children[i].posX + (this.itemWidth  / 2);this.children[i].cenY = this.children[i].posY + (this.itemHeight / 2);var isz = this.isHorizontal ? this.itemWidth : this.itemHeight;var r = this.effectUnits * isz;var c = this.isHorizontal ? this.children[i
 ].cenX : this.children[i].cenY;var lhs = this.isHorizontal ? this.proximityLeft : this.proximityTop;var rhs = this.isHorizontal ? this.proximityRight : this.proximityBottom;var siz = this.isHorizontal ? this.barWidth : this.barHeight;var range_lhs = r;var range_rhs = r;if (range_lhs > c+lhs){ range_lhs = c+lhs; }
+if (range_rhs > (siz-c+rhs)){ range_rhs = siz-c+rhs; }
+this.children[i].effectRangeLeft = range_lhs / isz;this.children[i].effectRangeRght = range_rhs / isz;}
+this.domNode.style.width = this.barWidth + 'px';this.domNode.style.height = this.barHeight + 'px';for (var i=0; i<this.children.length; i++){var itm = this.children[i];var elm = itm.domNode;elm.style.left   = itm.posX + 'px';elm.style.top    = itm.posY + 'px';elm.style.width  = this.itemWidth + 'px';elm.style.height = this.itemHeight + 'px';if ( itm.svgNode ) {itm.svgNode.style.position = 'absolute';itm.svgNode.style.left = this.itemPadding+'%';itm.svgNode.style.top = this.itemPadding+'%';itm.svgNode.style.width = (100 - 2 * this.itemPadding) + '%';itm.svgNode.style.height = (100 - 2 * this.itemPadding) + '%';itm.svgNode.style.zIndex = 1;itm.svgNode.setSize(this.itemWidth, this.itemHeight);} else {itm.imgNode.style.left = this.itemPadding+'%';itm.imgNode.style.top = this.itemPadding+'%';itm.imgNode.style.width = (100 - 2 * this.itemPadding) + '%';itm.imgNode.style.height = (100 - 2 * this.itemPadding) + '%';}}
+this._calcHitGrid();},_onBodyOut: function( e){if( dojo.html.overElement(dojo.body(), e) ){return;}
+this._setDormant(e);},_setDormant: function( e){if( !this.isOver ){ return; }
+this.isOver = false;if ( this.conservativeTrigger ) {dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");}
+this._onGridMouseMove(-1, -1);},_setActive: function( e){if( this.isOver ){ return; }
+this.isOver = true;if ( this.conservativeTrigger ) {dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");this.timerScale=0.0;this._onMouseMove(e);this._expandSlowly();}},_onMouseMove: function( e) {if ((e.pageX >= this.hitX1) && (e.pageX <= this.hitX2) &&
+(e.pageY >= this.hitY1) && (e.pageY <= this.hitY2)){if( !this.isOver ){this._setActive(e);}
+this._onGridMouseMove(e.pageX-this.hitX1, e.pageY-this.hitY1);}else{if (this.isOver){this._setDormant(e);}}},onResized: function() {this._calcHitGrid();},_onGridMouseMove: function(x, y){this.pos = {x:x, y:y};this._paint();},_paint: function(){var x=this.pos.x;var y=this.pos.y;if( this.itemCount <= 0 ){ return; }
+var pos = this.isHorizontal ? x : y;var prx = this.isHorizontal ? this.proximityLeft : this.proximityTop;var siz = this.isHorizontal ? this.itemWidth : this.itemHeight;var sim = this.isHorizontal ?
+(1.0-this.timerScale)*this.itemWidth + this.timerScale*this.itemMaxWidth :
+(1.0-this.timerScale)*this.itemHeight + this.timerScale*this.itemMaxHeight ;var cen = ((pos - prx) / siz) - 0.5;var max_off_cen = (sim / siz) - 0.5;if (max_off_cen > this.effectUnits){ max_off_cen = this.effectUnits; }
+var off_weight = 0;if (this.anchorEdge == this.EDGE.BOTTOM){var cen2 = (y - this.proximityTop) / this.itemHeight;off_weight = (cen2 > 0.5) ? 1 : y / (this.proximityTop + (this.itemHeight / 2));}
+if (this.anchorEdge == this.EDGE.TOP){var cen2 = (y - this.proximityTop) / this.itemHeight;off_weight = (cen2 < 0.5) ? 1 : (this.totalHeight - y) / (this.proximityBottom + (this.itemHeight / 2));}
+if (this.anchorEdge == this.EDGE.RIGHT){var cen2 = (x - this.proximityLeft) / this.itemWidth;off_weight = (cen2 > 0.5) ? 1 : x / (this.proximityLeft + (this.itemWidth / 2));}
+if (this.anchorEdge == this.EDGE.LEFT){var cen2 = (x - this.proximityLeft) / this.itemWidth;off_weight = (cen2 < 0.5) ? 1 : (this.totalWidth - x) / (this.proximityRight + (this.itemWidth / 2));}
+if (this.anchorEdge == this.EDGE.CENTER){if (this.isHorizontal){off_weight = y / (this.totalHeight);}else{off_weight = x / (this.totalWidth);}
+if (off_weight > 0.5){off_weight = 1 - off_weight;}
+off_weight *= 2;}
+for(var i=0; i<this.itemCount; i++){var weight = this._weighAt(cen, i);if (weight < 0){weight = 0;}
+this._setItemSize(i, weight * off_weight);}
+var main_p = Math.round(cen);var offset = 0;if (cen < 0){main_p = 0;}else if (cen > this.itemCount - 1){main_p = this.itemCount -1;}else{offset = (cen - main_p) * ((this.isHorizontal ? this.itemWidth : this.itemHeight) - this.children[main_p].sizeMain);}
+this._positionElementsFrom(main_p, offset);},_weighAt: function( cen,  i){var dist = Math.abs(cen - i);var limit = ((cen - i) > 0) ? this.children[i].effectRangeRght : this.children[i].effectRangeLeft;return (dist > limit) ? 0 : (1 - dist / limit);},_setItemSize: function(p, scale){scale *= this.timerScale;var w = Math.round(this.itemWidth  + ((this.itemMaxWidth  - this.itemWidth ) * scale));var h = Math.round(this.itemHeight + ((this.itemMaxHeight - this.itemHeight) * scale));if (this.isHorizontal){this.children[p].sizeW = w;this.children[p].sizeH = h;this.children[p].sizeMain = w;this.children[p].sizeOff  = h;var y = 0;if (this.anchorEdge == this.EDGE.TOP){y = (this.children[p].cenY - (this.itemHeight / 2));}else if (this.anchorEdge == this.EDGE.BOTTOM){y = (this.children[p].cenY - (h - (this.itemHeight / 2)));}else{y = (this.children[p].cenY - (h / 2));}
+this.children[p].usualX = Math.round(this.children[p].cenX - (w / 2));this.children[p].domNode.style.top  = y + 'px';this.children[p].domNode.style.left  = this.children[p].usualX + 'px';}else{this.children[p].sizeW = w;this.children[p].sizeH = h;this.children[p].sizeOff  = w;this.children[p].sizeMain = h;var x = 0;if (this.anchorEdge == this.EDGE.LEFT){x = this.children[p].cenX - (this.itemWidth / 2);}else if (this.anchorEdge == this.EDGE.RIGHT){x = this.children[p].cenX - (w - (this.itemWidth / 2));}else{x = this.children[p].cenX - (w / 2);}
+this.children[p].domNode.style.left = x + 'px';this.children[p].usualY = Math.round(this.children[p].cenY - (h / 2));this.children[p].domNode.style.top  = this.children[p].usualY + 'px';}
+this.children[p].domNode.style.width  = w + 'px';this.children[p].domNode.style.height = h + 'px';if (this.children[p].svgNode){this.children[p].svgNode.setSize(w, h);}},_positionElementsFrom: function(p, offset){var pos = 0;if (this.isHorizontal){pos = Math.round(this.children[p].usualX + offset);this.children[p].domNode.style.left = pos + 'px';}else{pos = Math.round(this.children[p].usualY + offset);this.children[p].domNode.style.top = pos + 'px';}
+this._positionLabel(this.children[p]);var bpos = pos;for(var i=p-1; i>=0; i--){bpos -= this.children[i].sizeMain;if (this.isHorizontal){this.children[i].domNode.style.left = bpos + 'px';}else{this.children[i].domNode.style.top = bpos + 'px';}
+this._positionLabel(this.children[i]);}
+var apos = pos;for(var i=p+1; i<this.itemCount; i++){apos += this.children[i-1].sizeMain;if (this.isHorizontal){this.children[i].domNode.style.left = apos + 'px';}else{this.children[i].domNode.style.top = apos + 'px';}
+this._positionLabel(this.children[i]);}},_positionLabel: function(itm){var x = 0;var y = 0;var mb = dojo.html.getMarginBox(itm.lblNode);if (this.labelEdge == this.EDGE.TOP){x = Math.round((itm.sizeW / 2) - (mb.width / 2));y = -mb.height;}
+if (this.labelEdge == this.EDGE.BOTTOM){x = Math.round((itm.sizeW / 2) - (mb.width / 2));y = itm.sizeH;}
+if (this.labelEdge == this.EDGE.LEFT){x = -mb.width;y = Math.round((itm.sizeH / 2) - (mb.height / 2));}
+if (this.labelEdge == this.EDGE.RIGHT){x = itm.sizeW;y = Math.round((itm.sizeH / 2) - (mb.height / 2));}
+itm.lblNode.style.left = x + 'px';itm.lblNode.style.top  = y + 'px';},_calcHitGrid: function(){var pos = dojo.html.getAbsolutePosition(this.domNode, true);this.hitX1 = pos.x - this.proximityLeft;this.hitY1 = pos.y - this.proximityTop;this.hitX2 = this.hitX1 + this.totalWidth;this.hitY2 = this.hitY1 + this.totalHeight;},_toEdge: function(inp, def){return this.EDGE[inp.toUpperCase()] || def;},_expandSlowly: function(){if( !this.isOver ){ return; }
+this.timerScale += 0.2;this._paint();if ( this.timerScale<1.0 ) {dojo.lang.setTimeout(this, "_expandSlowly", 10);}},destroy: function(){dojo.event.disconnect(document.documentElement, "onmouseout", this, "_onBodyOut");dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");dojo.widget.FisheyeList.superclass.destroy.call(this);}});dojo.widget.defineWidget(
+"dojo.widget.FisheyeListItem",dojo.widget.HtmlWidget,{iconSrc: "",svgSrc: "",caption: "",id: "",_blankImgPath: dojo.uri.dojoUri("src/widget/templates/images/blank.gif"),templateString:
+'<div class="dojoHtmlFisheyeListItem">' +
+'  <img class="dojoHtmlFisheyeListItemImage" dojoAttachPoint="imgNode" dojoAttachEvent="onMouseOver;onMouseOut;onClick">' +
+'  <div class="dojoHtmlFisheyeListItemLabel" dojoAttachPoint="lblNode"></div>' +
+'</div>',fillInTemplate: function() {if (this.svgSrc != ""){this.svgNode = this._createSvgNode(this.svgSrc);this.domNode.appendChild(this.svgNode);this.imgNode.style.display = 'none';} else if((this.iconSrc.toLowerCase().substring(this.iconSrc.length-4)==".png")&&(dojo.render.html.ie)&&(!dojo.render.html.ie70)){if (dojo.dom.hasParent(this.imgNode) && this.id != ""){var parent = this.imgNode.parentNode;parent.setAttribute("id", this.id);}
+this.imgNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.iconSrc+"', sizingMethod='scale')";this.imgNode.src = this._blankImgPath.toString();} else {if (dojo.dom.hasParent(this.imgNode) && this.id != ""){var parent = this.imgNode.parentNode;parent.setAttribute("id", this.id);}
+this.imgNode.src = this.iconSrc;}
+if ( this.lblNode ) {this.lblNode.appendChild(document.createTextNode(this.caption));}
+dojo.html.disableSelection(this.domNode);},_createSvgNode: function(src){var elm = document.createElement('embed');elm.src = src;elm.type = 'image/svg+xml';elm.style.width = '1px';elm.style.height = '1px';elm.loaded = 0;elm.setSizeOnLoad = false;elm.onload = function(){this.svgRoot = this.getSVGDocument().rootElement;this.svgDoc = this.getSVGDocument().documentElement;this.zeroWidth = this.svgRoot.width.baseVal.value;this.zeroHeight = this.svgRoot.height.baseVal.value;this.loaded = true;if (this.setSizeOnLoad){this.setSize(this.setWidth, this.setHeight);}}
+elm.setSize = function(w, h){if (!this.loaded){this.setWidth = w;this.setHeight = h;this.setSizeOnLoad = true;return;}
+this.style.width = w+'px';this.style.height = h+'px';this.svgRoot.width.baseVal.value = w;this.svgRoot.height.baseVal.value = h;var scale_x = w / this.zeroWidth;var scale_y = h / this.zeroHeight;for(var i=0; i<this.svgDoc.childNodes.length; i++){if (this.svgDoc.childNodes[i].setAttribute){this.svgDoc.childNodes[i].setAttribute( "transform", "scale("+scale_x+","+scale_y+")" );}}}
+return elm;},onMouseOver: function( e) {if( !this.parent.isOver ){this.parent._setActive(e);}
+if ( this.caption != "" ) {dojo.html.addClass(this.lblNode, "selected");this.parent._positionLabel(this);}},onMouseOut: function( e) {dojo.html.removeClass(this.lblNode, "selected");},onClick: function( e) {}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FloatingPane.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FloatingPane.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FloatingPane.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/FloatingPane.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,36 @@
+
+dojo.provide("dojo.widget.FloatingPane");dojo.require("dojo.widget.*");dojo.require("dojo.widget.Manager");dojo.require("dojo.html.*");dojo.require("dojo.html.layout");dojo.require("dojo.html.iframe");dojo.require("dojo.html.selection");dojo.require("dojo.lfx.shadow");dojo.require("dojo.widget.html.layout");dojo.require("dojo.widget.ContentPane");dojo.require("dojo.dnd.HtmlDragMove");dojo.require("dojo.widget.Dialog");dojo.require("dojo.widget.ResizeHandle");dojo.declare(
+"dojo.widget.FloatingPaneBase",null,{title: '',iconSrc: '',hasShadow: false,constrainToContainer: false,taskBarId: "",resizable: true,titleBarDisplay: true,windowState: "normal",displayCloseAction: false,displayMinimizeAction: false,displayMaximizeAction: false,_max_taskBarConnectAttempts: 5,_taskBarConnectAttempts: 0,templatePath: dojo.uri.dojoUri("src/widget/templates/FloatingPane.html"),templateCssPath: dojo.uri.dojoUri("src/widget/templates/FloatingPane.css"),fillInFloatingPaneTemplate: function(args, frag){var source = this.getFragNodeRef(frag);dojo.html.copyStyle(this.domNode, source);dojo.body().appendChild(this.domNode);if(!this.isShowing()){this.windowState="minimized";}
+if(this.iconSrc==""){dojo.html.removeNode(this.titleBarIcon);}else{this.titleBarIcon.src = this.iconSrc.toString();}
+if(this.titleBarDisplay){this.titleBar.style.display="";dojo.html.disableSelection(this.titleBar);this.titleBarIcon.style.display = (this.iconSrc=="" ? "none" : "");this.minimizeAction.style.display = (this.displayMinimizeAction ? "" : "none");this.maximizeAction.style.display=
+(this.displayMaximizeAction && this.windowState!="maximized" ? "" : "none");this.restoreAction.style.display=
+(this.displayMaximizeAction && this.windowState=="maximized" ? "" : "none");this.closeAction.style.display= (this.displayCloseAction ? "" : "none");this.drag = new dojo.dnd.HtmlDragMoveSource(this.domNode);if (this.constrainToContainer) {this.drag.constrainTo();}
+this.drag.setDragHandle(this.titleBar);var self = this;dojo.event.topic.subscribe("dragMove",function (info){if (info.source.domNode == self.domNode){dojo.event.topic.publish('floatingPaneMove', { source: self } );}}
+);}
+if(this.resizable){this.resizeBar.style.display="";this.resizeHandle = dojo.widget.createWidget("ResizeHandle", {targetElmId: this.widgetId, id:this.widgetId+"_resize"});this.resizeBar.appendChild(this.resizeHandle.domNode);}
+if(this.hasShadow){this.shadow=new dojo.lfx.shadow(this.domNode);}
+this.bgIframe = new dojo.html.BackgroundIframe(this.domNode);if( this.taskBarId ){this._taskBarSetup();}
+dojo.body().removeChild(this.domNode);},postCreate: function(){if (dojo.hostenv.post_load_) {this._setInitialWindowState();} else {dojo.addOnLoad(this, "_setInitialWindowState");}},maximizeWindow: function( evt) {var mb = dojo.html.getMarginBox(this.domNode);this.previous={width: mb.width || this.width,height: mb.height || this.height,left: this.domNode.style.left,top: this.domNode.style.top,bottom: this.domNode.style.bottom,right: this.domNode.style.right};if(this.domNode.parentNode.style.overflow.toLowerCase() != 'hidden'){this.parentPrevious={overflow: this.domNode.parentNode.style.overflow};dojo.debug(this.domNode.parentNode.style.overflow);this.domNode.parentNode.style.overflow = 'hidden';}
+this.domNode.style.left =
+dojo.html.getPixelValue(this.domNode.parentNode, "padding-left", true) + "px";this.domNode.style.top =
+dojo.html.getPixelValue(this.domNode.parentNode, "padding-top", true) + "px";if ((this.domNode.parentNode.nodeName.toLowerCase() == 'body')) {var viewport = dojo.html.getViewport();var padding = dojo.html.getPadding(dojo.body());this.resizeTo(viewport.width-padding.width, viewport.height-padding.height);} else {var content = dojo.html.getContentBox(this.domNode.parentNode);this.resizeTo(content.width, content.height);}
+this.maximizeAction.style.display="none";this.restoreAction.style.display="";if(this.resizeHandle){this.resizeHandle.domNode.style.display="none";}
+this.drag.setDragHandle(null);this.windowState="maximized";},minimizeWindow: function( evt) {this.hide();for(var attr in this.parentPrevious){this.domNode.parentNode.style[attr] = this.parentPrevious[attr];}
+this.lastWindowState = this.windowState;this.windowState = "minimized";},restoreWindow: function( evt) {if (this.windowState=="minimized") {this.show();if(this.lastWindowState == "maximized"){this.domNode.parentNode.style.overflow = 'hidden';this.windowState="maximized";}else{this.windowState="normal";}} else if (this.windowState=="maximized"){for(var attr in this.previous){this.domNode.style[attr] = this.previous[attr];}
+for(var attr in this.parentPrevious){this.domNode.parentNode.style[attr] = this.parentPrevious[attr];}
+this.resizeTo(this.previous.width, this.previous.height);this.previous=null;this.parentPrevious=null;this.restoreAction.style.display="none";this.maximizeAction.style.display=this.displayMaximizeAction ? "" : "none";if(this.resizeHandle){this.resizeHandle.domNode.style.display="";}
+this.drag.setDragHandle(this.titleBar);this.windowState="normal";} else {}},toggleDisplay: function(){if(this.windowState=="minimized"){this.restoreWindow();}else{this.minimizeWindow();}},closeWindow: function( evt) {dojo.html.removeNode(this.domNode);this.destroy();},onMouseDown: function( evt) {this.bringToTop();},bringToTop: function() {var floatingPanes= dojo.widget.manager.getWidgetsByType(this.widgetType);var windows = [];for (var x=0; x<floatingPanes.length; x++) {if (this.widgetId != floatingPanes[x].widgetId) {windows.push(floatingPanes[x]);}}
+windows.sort(function(a,b) {return a.domNode.style.zIndex - b.domNode.style.zIndex;});windows.push(this);var floatingPaneStartingZ = 100;for (x=0; x<windows.length;x++) {windows[x].domNode.style.zIndex = floatingPaneStartingZ + x*2;}},_setInitialWindowState: function() {if(this.isShowing()){this.width=-1;var mb = dojo.html.getMarginBox(this.domNode);this.resizeTo(mb.width, mb.height);}
+if (this.windowState == "maximized") {this.maximizeWindow();this.show();return;}
+if (this.windowState=="normal") {this.show();return;}
+if (this.windowState=="minimized") {this.hide();return;}
+this.windowState="minimized";},_taskBarSetup: function() {var taskbar = dojo.widget.getWidgetById(this.taskBarId);if (!taskbar){if (this._taskBarConnectAttempts <  this._max_taskBarConnectAttempts) {dojo.lang.setTimeout(this, this._taskBarSetup, 50);this._taskBarConnectAttempts++;} else {dojo.debug("Unable to connect to the taskBar");}
+return;}
+taskbar.addChild(this);},showFloatingPane: function(){this.bringToTop();},onFloatingPaneShow: function(){var mb = dojo.html.getMarginBox(this.domNode);this.resizeTo(mb.width, mb.height);},resizeTo: function( width,  height){dojo.html.setMarginBox(this.domNode, { width: width, height: height });dojo.widget.html.layout(this.domNode,[
+{domNode: this.titleBar, layoutAlign: "top"},{domNode: this.resizeBar, layoutAlign: "bottom"},{domNode: this.containerNode, layoutAlign: "client"}
+] );dojo.widget.html.layout(this.containerNode, this.children, "top-bottom");this.bgIframe.onResized();if(this.shadow){ this.shadow.size(width, height); }
+this.onResized();},checkSize: function() {},destroyFloatingPane: function() {if(this.resizeHandle){this.resizeHandle.destroy();this.resizeHandle = null;}}}
+);dojo.widget.defineWidget(
+"dojo.widget.FloatingPane",[dojo.widget.ContentPane, dojo.widget.FloatingPaneBase],{fillInTemplate: function(args, frag){this.fillInFloatingPaneTemplate(args, frag);dojo.widget.FloatingPane.superclass.fillInTemplate.call(this, args, frag);},postCreate: function(){dojo.widget.FloatingPaneBase.prototype.postCreate.apply(this, arguments);dojo.widget.FloatingPane.superclass.postCreate.apply(this, arguments);},show: function(){dojo.widget.FloatingPane.superclass.show.apply(this, arguments);this.showFloatingPane();},onShow: function(){dojo.widget.FloatingPane.superclass.onShow.call(this);this.onFloatingPaneShow();},destroy: function(){this.destroyFloatingPane();dojo.widget.FloatingPane.superclass.destroy.apply(this, arguments);}});dojo.widget.defineWidget(
+"dojo.widget.ModalFloatingPane",[dojo.widget.FloatingPane, dojo.widget.ModalDialogBase],{windowState: "minimized",displayCloseAction: true,postCreate: function(){dojo.widget.ModalDialogBase.prototype.postCreate.call(this);dojo.widget.ModalFloatingPane.superclass.postCreate.call(this);},show: function(){dojo.widget.ModalFloatingPane.superclass.show.apply(this, arguments);this.showModalDialog();this.shared.bg.style.zIndex = this.domNode.style.zIndex-1;},hide: function(){this.hideModalDialog();dojo.widget.ModalFloatingPane.superclass.hide.apply(this, arguments);},closeWindow: function(){this.hide();dojo.widget.ModalFloatingPane.superclass.closeWindow.apply(this, arguments);}}
+);
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Form.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Form.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Form.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/Form.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,35 @@
+
+dojo.provide("dojo.widget.Form");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.widget.defineWidget("dojo.widget.Form", dojo.widget.HtmlWidget,{isContainer: true,templateString: "<form dojoAttachPoint='containerNode' dojoAttachEvent='onSubmit:onSubmit'></form>",formElements: [],postCreate: function(args,frag){for (var key in args) {if (key == "dojotype") continue;var attr= document.createAttribute(key);attr.nodeValue=args[key];this.containerNode.setAttributeNode(attr);}},_createFormElements: function() {if(dojo.render.html.safari) {var elems = ["INPUT", "SELECT", "TEXTAREA"];for (var k=0; k < elems.length; k++) {var list = this.containerNode.getElementsByTagName(elems[k]);for (var j=0,len2=list.length; j<len2; j++) {this.formElements.push(list[j]);}}} else {this.formElements=this.containerNode.elements;}},onSubmit: function(e) {e.preventDefault();},submit: function() {this.containerNode.submit();},_getFormElement: function(name) {for(var i=0, len=t
 his.formElements.length; i<len; i++) {var element = this.formElements[i];if (element.name == name) {return element;}}
+return null;},_getObject: function(obj, searchString) {var namePath = [];namePath=searchString.split(".");var myObj=obj;var name=namePath[namePath.length-1];for(var j=0, len=namePath.length;j<len;++j) {var p=namePath[j];if (typeof(myObj[p]) == "undefined") {myObj[p]={};}
+myObj=myObj[p];}
+return myObj;},_setToContainers: function (obj, widget) {for(var i=0, len=widget.children.length; i<len; ++i) {if (widget.children[i].widgetType == "Repeater") {var rIndex=widget.children[i].pattern;var rIndexPos=rIndex.indexOf("%{index}");rIndex=rIndex.substr(0,rIndexPos-1);var myObj = this._getObject(obj, rIndex);if (typeof(myObj) == "object" && typeof(myObj.length) == "undefined") {myObj=[];}
+var rowCount = widget.children[i].getRowCount();if (myObj.length > rowCount) {for (var j=rowCount, len2=myObj.length; j<len2; j++) {widget.children[i].addRow();}} else if (myObj.length < rowCount) {for (var j=rowCount, len2=myObj.length; j>len2; j--) {widget.children[i].deleteRow(0);}}
+for (var j=0, len2=myObj.length;j<len2; ++j) {for (var key in myObj[j]) {var prefix = dojo.string.substituteParams(widget.children[i].index, {"index": "" + j});this._getFormElement(prefix+"."+key).value=myObj[j][key];}}}
+if (widget.children[i].isContainer) {this._setToContainers (obj, widget.children[i]);continue;}
+switch(widget.children[i].widgetType) {case "Checkbox":
+continue;break;case "DropdownDatePicker":
+if(widget.children[i].valueNode.value == "") {widget.children[i].inputNode.value="";widget.children[i].datePicker.storedDate="";} else {widget.children[i].datePicker.setDate(widget.children[i].valueNode.value);widget.children[i].onSetDate();}
+break;case "Select":
+continue;break;case "ComboBox":
+continue;break;default:
+break;}}},setValues: function(obj) {this._createFormElements();for(var i=0, len=this.formElements.length; i<len; i++) {var element = this.formElements[i];if (element.name == '') {continue};var namePath = new Array();namePath=element.name.split(".");var myObj=obj;var name=namePath[namePath.length-1];for(var j=1,len2=namePath.length;j<len2;++j) {var p=namePath[j - 1];if(typeof(myObj[p]) == "undefined") {myObj=undefined;break;};myObj=myObj[p];}
+if (typeof(myObj) == "undefined") {continue;}
+var type=element.type;if (type == "hidden" || type == "text" || type == "textarea" || type == "password") {type = "text";}
+switch(type) {case "checkbox":
+this.formElements[i].checked=false;if (typeof(myObj[name]) == 'undefined') continue;for (var j=0,len2=myObj[name].length; j<len2; ++j) {if(element.value == myObj[name][j]) {element.checked=true;}}
+break;case "radio":
+this.formElements[i].checked=false;if (typeof(myObj[name]) == 'undefined') {continue};if (myObj[name] == this.formElements[i].value) {this.formElements[i].checked=true;}
+break;case "select-one":
+this.formElements[i].selectedIndex="0";for (var j=0,len2=element.options.length; j<len2; ++j) {if (element.options[j].value == myObj[name]) {element.options[j].selected=true;} else {}}
+break;case "text":
+var value="";if (typeof(myObj[name]) == 'string') {value = myObj[name];}
+this.formElements[i].value=value;break;default:
+break;}}
+this._setToContainers(obj,this);},getValues: function() {this._createFormElements();var obj = { };for(var i=0,len=this.formElements.length; i<len; i++) {var elm = this.formElements[i];var namePath = [];if (elm.name == '') { continue;}
+namePath=elm.name.split(".");var myObj=obj;var name=namePath[namePath.length-1];for(var j=1,len2=namePath.length;j<len2;++j) {var nameIndex = null;var p=namePath[j - 1];var nameA=p.split("[");if (nameA.length > 1) {if(typeof(myObj[nameA[0]]) == "undefined") {myObj[nameA[0]]=[ ];}
+nameIndex=parseInt(nameA[1]);if(typeof(myObj[nameA[0]][nameIndex]) == "undefined") {myObj[nameA[0]][nameIndex]={};}} else if(typeof(myObj[nameA[0]]) == "undefined") {myObj[nameA[0]]={}}
+if (nameA.length == 1) {myObj=myObj[nameA[0]];} else {myObj=myObj[nameA[0]][nameIndex];}}
+if ((elm.type != "checkbox" && elm.type != "radio") || (elm.type=="radio" && elm.checked)) {if(name == name.split("[")[0]) {myObj[name]=elm.value;} else {}} else if (elm.type == "checkbox" && elm.checked) {if(typeof(myObj[name]) == 'undefined') {myObj[name]=[ ];}
+myObj[name].push(elm.value);}
+name=undefined;}
+return obj;}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/GoogleMap.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/GoogleMap.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/GoogleMap.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/GoogleMap.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,23 @@
+
+dojo.provide("dojo.widget.GoogleMap");dojo.require("dojo.event.*");dojo.require("dojo.math");dojo.require("dojo.widget.*");dojo.require("dojo.uri.Uri");dojo.require("dojo.widget.HtmlWidget");(function(){var gkey = djConfig["gMapKey"]||djConfig["googleMapKey"];var uri=new dojo.uri.Uri(window.location.href);if(uri.host=="www.dojotoolkit.org"){gkey="ABQIAAAACUNdgv_7FGOmUslbm9l6_hRqjp7ri2mNiOEYqetD3xnFHpt5rBSjszDd1sdufPyQKUTyCf_YxoIxvw";}
+else if(uri.host=="blog.dojotoolkit.org"){gkey="ABQIAAAACUNdgv_7FGOmUslbm9l6_hSkep6Av1xaMhVn3yCLkorJeXeLARQ6fammI_P3qSGleTJhoI5_1JmP_Q";}
+else if(uri.host=="archive.dojotoolkit.org"){gkey="ABQIAAAACUNdgv_7FGOmUslbm9l6_hTaQpDt0dyGLIHbXMPTzg1kWeAfwRTwZNyrUfbfxYE9yIvRivEjcXoDTg";}
+else if(uri.host=="dojotoolkit.org"){gkey="ABQIAAAACUNdgv_7FGOmUslbm9l6_hSaOaO_TgJ5c3mtQFnk5JO2zD5dZBRZk-ieqVs7BORREYNzAERmcJoEjQ";}
+if(!dojo.hostenv.post_load_){if(!gkey || gkey==""){dojo.raise("dojo.widget.GoogleMap: The Google Map widget requires a proper API key in order to be used.");}
+var tag = "<scr"+"ipt src='http://maps.google.com/maps?file=api&amp;v=2&amp;key="+gkey+"'></scri"+"pt>";if(!dj_global["GMap2"]){document.write(tag);}}else{dojo.debug("Cannot initialize Google Map system after the page has been loaded! Please either manually include the script block provided by Google in your page or require() the GoogleMap widget before onload has fired.");}})();dojo.widget.defineWidget(
+"dojo.widget.GoogleMap",dojo.widget.HtmlWidget,function(){this.map=null;this.geocoder=null;this.data=[];this.datasrc="";this.controls=["largemap","scale","maptype"];},{templatePath:null,templateCssPath:null,isContainer: false,_defaultPoint:{lat:39.10662, lng: -94.578209},setControls:function(){var methodmap={largemap:GLargeMapControl,smallmap:GSmallMapControl,smallzoom:GSmallZoomControl,scale:GScaleControl,maptype:GMapTypeControl,overview:GOverviewMapControl};for(var i=0; i<this.controls.length; i++){this.map.addControl(new (methodmap[this.controls[i].toLowerCase()])());}},findCenter:function(bounds){if(this.data.length==1){return (new GLatLng(this.data[0].lat, this.data[0].lng));}
+var clat=(bounds.getNorthEast().lat()+bounds.getSouthWest().lat())/2;var clng=(bounds.getNorthEast().lng()+bounds.getSouthWest().lng())/2;return (new GLatLng(clat,clng));},createPinpoint:function(pt, overlay){var m=new GMarker(pt);if(overlay){GEvent.addListener(m,"click",function(){m.openInfoWindowHtml("<div>"+overlay+"</div>");});}
+return m;},plot:function(obj){var p=new GLatLng(obj.lat,obj.lng);var d=obj.description||null;var m=this.createPinpoint(p,d);this.map.addOverlay(m);},plotAddress:function(address){var self=this;this.geocoder.getLocations(address, function(response){if(!response || response.Status.code != 200){alert("The address \"" + address + "\" was not found.");return;}
+var obj={lat:response.Placemark[0].Point.coordinates[1],lng:response.Placemark[0].Point.coordinates[0],description:response.Placemark[0].address};self.data.push(obj);self.render();});},parse:function(table){this.data=[];var h=table.getElementsByTagName("thead")[0];if(!h){return;}
+var a=[];var cols=h.getElementsByTagName("td");if(cols.length==0){cols=h.getElementsByTagName("th");}
+for(var i=0; i<cols.length; i++){var c=cols[i].innerHTML.toLowerCase();if(c=="long") c="lng";a.push(c);}
+var b=table.getElementsByTagName("tbody")[0];if(!b){return;}
+for(var i=0; i<b.childNodes.length; i++){if(!(b.childNodes[i].nodeName&&b.childNodes[i].nodeName.toLowerCase()=="tr")){continue;}
+var cells=b.childNodes[i].getElementsByTagName("td");var o={};for(var j=0; j<a.length; j++){var col=a[j];if(col=="lat"||col=="lng"){o[col]=parseFloat(cells[j].innerHTML);}else{o[col]=cells[j].innerHTML;}}
+this.data.push(o);}},render:function(){if(this.data.length==0){this.map.setCenter(new GLatLng(this._defaultPoint.lat, this._defaultPoint.lng), 4);return;}
+this.map.clearOverlays();var bounds=new GLatLngBounds();var d=this.data;for(var i=0; i<d.length; i++){bounds.extend(new GLatLng(d[i].lat,d[i].lng));}
+var zoom=Math.min((this.map.getBoundsZoomLevel(bounds)-1),14);this.map.setCenter(this.findCenter(bounds), zoom);for(var i=0; i<this.data.length; i++){this.plot(this.data[i]);}},initialize:function(args, frag){if(this.datasrc){this.parse(dojo.byId(this.datasrc));}
+else if(this.domNode.getElementsByTagName("table")[0]){this.parse(this.domNode.getElementsByTagName("table")[0]);}},postCreate:function(){while(this.domNode.childNodes.length>0){this.domNode.removeChild(this.domNode.childNodes[0]);}
+if(this.domNode.style.position!="absolute"){this.domNode.style.position="relative";}
+this.map=new GMap2(this.domNode);try{this.geocoder=new GClientGeocoder();}catch(ex){}
+this.render();this.setControls();}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/HslColorPicker.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/HslColorPicker.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/HslColorPicker.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/HslColorPicker.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,7 @@
+
+dojo.provide("dojo.widget.svg.HslColorPicker");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.HslColorPicker");dojo.require("dojo.math");dojo.require("dojo.svg");dojo.require("dojo.gfx.color");dojo.require("dojo.gfx.color.hsl");dojo.require("dojo.experimental");dojo.experimental("dojo.widget.svg.HslColorPicker");dojo.widget.defineWidget(
+"dojo.widget.svg.HslColorPicker",dojo.widget.HtmlWidget,function(){dojo.debug("warning: the HslColorPicker is not a finished widget, and is not yet ready for general use");this.filterObject = {};},{hue: "0",saturation: "0",light: "0",storedColor: "#0054aa",templatePath: dojo.uri.dojoUri("src/widget/templates/HslColorPicker.svg"),fillInTemplate: function() {this.height = "131px";this.svgDoc = this.hueNode.ownerDocument;this.leftGradientColorNode = this.hueNode.ownerDocument.getElementById("leftGradientColor");this.rightGradientColorNode = this.hueNode.ownerDocument.getElementById("rightGradientColor");this.hueNode.setAttributeNS(dojo.dom.xmlns.xlink, "href", dojo.uri.dojoUri("src/widget/templates/images/hue.png"));var hsl = dojo.gfx.color.hex2hsl(this.storedColor);this.hue = hsl[0];this.saturation = hsl[1];this.light = hsl[2];this.setSaturationStopColors();},setSaturationStopColors: function() {this.leftGradientStopColor = dojo.gfx.color.rgb2hex(this.hsl2rgb(this.hue, 0, 50))
 ;this.rightGradientStopColor = dojo.gfx.color.rgb2hex(this.hsl2rgb(this.hue, 100, 50));this.leftGradientColorNode.setAttributeNS(null,'stop-color',this.leftGradientStopColor);this.rightGradientColorNode.setAttributeNS(null,'stop-color',this.rightGradientStopColor);},setHue: function(hue) {this.hue = hue;},setHueSlider: function() {this.hueSliderNode.setAttribute("y", parseInt((this.hue/360) * parseInt(this.height) - 2) + "px" );},setSaturationLight: function(saturation, light) {this.saturation = saturation;this.light = light;},setSaturationLightSlider: function() {},onHueClick: function(evt) {var yPosition = parseInt(evt.clientY) - parseInt(evt.target.getAttribute("y"));this.setHue( 360 - parseInt(yPosition*(360/parseInt(this.height))) );this.setSaturationStopColors();this.setStoredColor(dojo.gfx.color.hsl2hex(this.hue, this.saturation, this.light));},onHueDrag: function(evt) {},onSaturationLightClick: function(evt) {var xPosition = parseInt(evt.clientX) - parseInt(evt.targe
 t.getAttribute("y"));var yPosition = parseInt(evt.clientY) - parseInt(evt.target.getAttribute("y"));var saturation = parseInt(parseInt(xPosition)*(101/106));var light = parseInt(parseInt(yPosition)*(101/106));this.setSaturationLight(saturation, light);this.setStoredColor(dojo.gfx.color.hsl2hex(this.hue, this.saturation, this.light));},onSaturationLightDrag: function(evt) {},getStoredColor: function() {return this.storedColor;},setStoredColor: function(rgbHexColor) {this.storedColor = rgbHexColor;dojo.event.topic.publish("/" + this.widgetId + "/setStoredColor", this.filterObject);},hsl2rgb: function(hue, saturation, light)
+{function rgb(q1,q2,hue) {if (hue>360) hue=hue-360;if (hue<0) hue=hue+360;if (hue<60) return (q1+(q2-q1)*hue/60);else if (hue<180) return(q2);else if (hue<240) return(q1+(q2-q1)*(240-hue)/60);else return(q1);}
+this.rgb = rgb
+if (saturation==0) {return [Math.round(light*255/100), Math.round(light*255/100), Math.round(light*255/100)];} else {light = light/100;saturation = saturation/100;if ((light)<0.5) {var temp2 = (light)*(1.0+saturation)} else {var temp2 = (light+saturation-(light*saturation))}
+var temp1 = 2.0*light - temp2;var rgbcolor = [];rgbcolor[0] = Math.round(rgb(temp1,temp2,parseInt(hue)+120)*255);rgbcolor[1] = Math.round(rgb(temp1,temp2,hue)*255);rgbcolor[2] = Math.round(rgb(temp1,temp2,parseInt(hue)-120)*255);return rgbcolor;}}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/HtmlWidget.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/HtmlWidget.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/HtmlWidget.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/HtmlWidget.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,10 @@
+
+dojo.provide("dojo.widget.HtmlWidget");dojo.require("dojo.widget.DomWidget");dojo.require("dojo.html.util");dojo.require("dojo.html.display");dojo.require("dojo.html.layout");dojo.require("dojo.lang.extras");dojo.require("dojo.lang.func");dojo.require("dojo.lfx.toggle");dojo.declare("dojo.widget.HtmlWidget", dojo.widget.DomWidget, {templateCssPath: null,templatePath: null,lang: "",toggle: "plain",toggleDuration: 150,initialize: function(args, frag){},postMixInProperties: function(args, frag){if(this.lang === ""){this.lang = null;}
+this.toggleObj =
+dojo.lfx.toggle[this.toggle.toLowerCase()] || dojo.lfx.toggle.plain;},createNodesFromText: function(txt, wrap){return dojo.html.createNodesFromText(txt, wrap);},destroyRendering: function(finalize){try{if(!finalize && this.domNode){dojo.event.browser.clean(this.domNode);}
+this.domNode.parentNode.removeChild(this.domNode);delete this.domNode;}catch(e){  }},isShowing: function(){return dojo.html.isShowing(this.domNode);},toggleShowing: function(){if(this.isShowing()){this.hide();}else{this.show();}},show: function(){if(this.isShowing()){ return; }
+this.animationInProgress=true;this.toggleObj.show(this.domNode, this.toggleDuration, null,dojo.lang.hitch(this, this.onShow), this.explodeSrc);},onShow: function(){this.animationInProgress=false;this.checkSize();},hide: function(){if(!this.isShowing()){ return; }
+this.animationInProgress = true;this.toggleObj.hide(this.domNode, this.toggleDuration, null,dojo.lang.hitch(this, this.onHide), this.explodeSrc);},onHide: function(){this.animationInProgress=false;},_isResized: function(w, h){if(!this.isShowing()){ return false; }
+var wh = dojo.html.getMarginBox(this.domNode);var width=w||wh.width;var height=h||wh.height;if(this.width == width && this.height == height){ return false; }
+this.width=width;this.height=height;return true;},checkSize: function(){if(!this._isResized()){ return; }
+this.onResized();},resizeTo: function(w, h){dojo.html.setMarginBox(this.domNode, { width: w, height: h });if(this.isShowing()){this.onResized();}},resizeSoon: function(){if(this.isShowing()){dojo.lang.setTimeout(this, this.onResized, 0);}},onResized: function(){dojo.lang.forEach(this.children, function(child){ if(child.checkSize){child.checkSize();}});}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/InlineEditBox.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/InlineEditBox.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/InlineEditBox.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/InlineEditBox.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,15 @@
+
+dojo.provide("dojo.widget.InlineEditBox");dojo.require("dojo.widget.*");dojo.require("dojo.event.*");dojo.require("dojo.lfx.*");dojo.require("dojo.gfx.color");dojo.require("dojo.string");dojo.require("dojo.html.*");dojo.require("dojo.html.layout");dojo.widget.defineWidget(
+"dojo.widget.InlineEditBox",dojo.widget.HtmlWidget,function(){this.history = [];},{templatePath: dojo.uri.dojoUri("src/widget/templates/InlineEditBox.html"),templateCssPath: dojo.uri.dojoUri("src/widget/templates/InlineEditBox.css"),form: null,editBox: null,edit: null,text: null,textarea: null,submitButton: null,cancelButton: null,mode: "text",name: "",minWidth: 100,minHeight: 200,editing: false,textValue: "",defaultText: "",doFade: false,onSave: function(newValue, oldValue, name){},onUndo: function(value){},postCreate: function(args, frag){this.editable = this.getFragNodeRef(frag);dojo.html.insertAfter(this.editable, this.form);dojo.event.connect(this.editable, "onmouseover", this, "onMouseOver");dojo.event.connect(this.editable, "onmouseout", this, "onMouseOut");dojo.event.connect(this.editable, "onclick", this, "beginEdit");if(dojo.string.trim(this.textValue).length > 0){this.editable.innerHTML = this.textValue;return;}
+var text = dojo.string.trim(this.editable.innerHTML);if(text.length <= 0){this.textValue=this.defaultText;this.editable.innerHTML = this.textValue;} else {this.textValue = text;}},onMouseOver: function(){if(!this.editing){if (!this.isEnabled){dojo.html.addClass(this.editable, "editableRegionDisabled");} else {dojo.html.addClass(this.editable, "editableRegion");if(this.mode == "textarea"){dojo.html.addClass(this.editable, "editableTextareaRegion");}}}
+this.mouseover();},mouseover: function(e){},onMouseOut: function(){if(!this.editing){dojo.html.removeClass(this.editable, "editableRegion");dojo.html.removeClass(this.editable, "editableTextareaRegion");dojo.html.removeClass(this.editable, "editableRegionDisabled");}
+this.mouseout();},mouseout: function(e){},beginEdit: function(e){if(this.editing || !this.isEnabled){ return; }
+this.onMouseOut();this.editing = true;var ee = this[this.mode.toLowerCase()];ee.value = dojo.string.trim(this.textValue);ee.style.fontSize = dojo.html.getStyle(this.editable, "font-size");ee.style.fontWeight = dojo.html.getStyle(this.editable, "font-weight");ee.style.fontStyle = dojo.html.getStyle(this.editable, "font-style");var bb = dojo.html.getBorderBox(this.editable);ee.style.width = Math.max(bb.width, this.minWidth) + "px";if(this.mode.toLowerCase()=="textarea"){ee.style.display = "block";ee.style.height = Math.max(bb.height, this.minHeight) + "px";} else {ee.style.display = "";}
+this.form.style.display = "";this.editable.style.display = "none";ee.focus();ee.select();this.submitButton.disabled = true;},saveEdit: function(e){e.preventDefault();e.stopPropagation();var ee = this[this.mode.toLowerCase()];if((this.textValue != ee.value)&&
+(dojo.string.trim(ee.value) != "")){this.doFade = true;this.history.push(this.textValue);this.onSave(ee.value, this.textValue, this.name);this.textValue = ee.value;this.editable.innerHTML = "";var textNode = document.createTextNode( this.textValue );this.editable.appendChild( textNode );}else{this.doFade = false;}
+this.finishEdit(e);},cancelEdit: function(e){if(!this.editing){ return false; }
+this.editing = false;this.form.style.display="none";this.editable.style.display = "";return true;},finishEdit: function(e){if(!this.cancelEdit(e)){ return; }
+if(this.doFade) {dojo.lfx.highlight(this.editable, dojo.gfx.color.hex2rgb("#ffc"), 700).play(300);}
+this.doFade = false;},setText: function(txt){txt = "" + txt;var tt = dojo.string.trim(txt);this.textValue = tt
+this.editable.innerHTML = tt;},undo: function(){if(this.history.length > 0){var curValue = this.textValue;var value = this.history.pop();this.editable.innerHTML = value;this.textValue = value;this.onUndo(value);this.onSave(value, curValue, this.name);}},checkForValueChange: function(){var ee = this[this.mode.toLowerCase()];if((this.textValue != ee.value)&&
+(dojo.string.trim(ee.value) != "")){this.submitButton.disabled = false;}},disable: function(){this.submitButton.disabled = true;this.cancelButton.disabled = true;var ee = this[this.mode.toLowerCase()];ee.disabled = true;dojo.widget.Widget.prototype.disable.call(this);},enable: function(){this.checkForValueChange();this.cancelButton.disabled = false;var ee = this[this.mode.toLowerCase()];ee.disabled = false;dojo.widget.Widget.prototype.enable.call(this);}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/IntegerTextbox.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/IntegerTextbox.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/IntegerTextbox.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/IntegerTextbox.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,9 @@
+
+dojo.provide("dojo.widget.IntegerTextbox");dojo.require("dojo.widget.ValidationTextbox");dojo.require("dojo.validate.common");dojo.widget.defineWidget(
+"dojo.widget.IntegerTextbox",dojo.widget.ValidationTextbox,{mixInProperties: function(localProperties, frag){dojo.widget.IntegerTextbox.superclass.mixInProperties.apply(this, arguments);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 ];}
+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);}},isValid: function(){return dojo.validate.isInteger(this.textbox.value, this.flags);},isInRange: function(){return dojo.validate.isInRange(this.textbox.value, this.flags);}}
+);
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/InternetTextbox.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/InternetTextbox.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/InternetTextbox.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/InternetTextbox.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,20 @@
+
+dojo.provide("dojo.widget.InternetTextbox");dojo.require("dojo.widget.ValidationTextbox");dojo.require("dojo.validate.web");dojo.widget.defineWidget(
+"dojo.widget.IpAddressTextbox",dojo.widget.ValidationTextbox,{mixInProperties: function(localProperties){dojo.widget.IpAddressTextbox.superclass.mixInProperties.apply(this, arguments);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");}},isValid: function(){return dojo.validate.isIpAddress(this.textbox.value, this.flags);}}
+);dojo.widget.defineWidget(
+"dojo.widget.UrlTextbox",dojo.widget.IpAddressTextbox,{mixInProperties: function(localProperties){dojo.widget.UrlTextbox.superclass.mixInProperties.apply(this, arguments);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" );}},isValid: function(){return dojo.validate.isUrl(this.textbox.value, this.flags);}}
+);dojo.widget.defineWidget(
+"dojo.widget.EmailTextbox",dojo.widget.UrlTextbox,{mixInProperties: function(localProperties){dojo.widget.EmailTextbox.superclass.mixInProperties.apply(this, arguments);if(localProperties.allowcruft){this.flags.allowCruft = (localProperties.allowcruft == "true");}},isValid: function(){return dojo.validate.isEmailAddress(this.textbox.value, this.flags);}}
+);dojo.widget.defineWidget(
+"dojo.widget.EmailListTextbox",dojo.widget.EmailTextbox,{mixInProperties: function(localProperties){dojo.widget.EmailListTextbox.superclass.mixInProperties.apply(this, arguments);if(localProperties.listseparator){this.flags.listSeparator = localProperties.listseparator;}},isValid: function(){return dojo.validate.isEmailAddressList(this.textbox.value, this.flags);}}
+);
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/LayoutContainer.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/LayoutContainer.js?view=auto&rev=468816
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/LayoutContainer.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/widget/LayoutContainer.js Sat Oct 28 18:52:42 2006
@@ -0,0 +1,3 @@
+
+dojo.provide("dojo.widget.LayoutContainer");dojo.require("dojo.widget.*");dojo.require("dojo.widget.html.layout");dojo.widget.defineWidget(
+"dojo.widget.LayoutContainer",dojo.widget.HtmlWidget,{isContainer: true,layoutChildPriority: 'top-bottom',postCreate: function(){dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);},addChild: function(child, overrideContainerNode, pos, ref, insertIndex){dojo.widget.LayoutContainer.superclass.addChild.call(this, child, overrideContainerNode, pos, ref, insertIndex);dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);},removeChild: function(pane){dojo.widget.LayoutContainer.superclass.removeChild.call(this,pane);dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);},onResized: function(){dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);},show: function(){this.domNode.style.display="";this.checkSize();this.domNode.style.display="none";this.domNode.style.visibility="";dojo.widget.LayoutContainer.superclass.show.call(this);}});dojo.lang.extend(dojo.widget.Widget, {layoutA
 lign: 'none'});
\ No newline at end of file