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 2007/01/21 19:26:26 UTC

svn commit: r498423 [16/30] - in /tapestry/tapestry4/trunk: .settings/ eclipse/ tapestry-examples/TimeTracker/src/context/WEB-INF/ tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/dao/ tapestry-examples/TimeTracker/src/java/org/ap...

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,22 @@
+
+dojo.provide("dojo.math");dojo.math.degToRad = function(x) {return (x*Math.PI) / 180;}
+dojo.math.radToDeg = function(x) {return (x*180) / Math.PI;}
+dojo.math.factorial = function(n){if(n<1){ return 0; }
+var retVal = 1;for(var i=1;i<=n;i++){ retVal *= i; }
+return retVal;}
+dojo.math.permutations = function(n, k) {if(n==0 || k==0) return 1;return (dojo.math.factorial(n) / dojo.math.factorial(n-k));}
+dojo.math.combinations = function (n, r) {if(n==0 || r==0) return 1;return (dojo.math.factorial(n) / (dojo.math.factorial(n-r) * dojo.math.factorial(r)));}
+dojo.math.bernstein = function(t, n, i) {return (dojo.math.combinations(n,i) * Math.pow(t,i) * Math.pow(1-t,n-i));}
+dojo.math.gaussianRandom = function(){var k = 2;do {var i = 2 * Math.random() - 1;var j = 2 * Math.random() - 1;k = i * i + j * j;} while (k >= 1);k = Math.sqrt((-2 * Math.log(k)) / k);return i * k;}
+dojo.math.mean = function() {var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;var mean = 0;for (var i = 0; i < array.length; i++) { mean += array[i]; }
+return mean / array.length;}
+dojo.math.round = function(number, places) {if (!places) { var shift = 1; }
+else { var shift = Math.pow(10, places); }
+return Math.round(number * shift) / shift;}
+dojo.math.sd = dojo.math.standardDeviation = function(){var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;return Math.sqrt(dojo.math.variance(array));}
+dojo.math.variance = function() {var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;var mean = 0, squares = 0;for (var i = 0; i < array.length; i++) {mean += array[i];squares += Math.pow(array[i], 2);}
+return (squares / array.length) - Math.pow(mean / array.length, 2);}
+dojo.math.range = function(a, b, step) {if(arguments.length < 2) {b = a;a = 0;}
+if(arguments.length < 3) {step = 1;}
+var range = [];if(step > 0) {for(var i = a; i < b; i += step) {range.push(i);}} else if(step < 0) {for(var i = a; i > b; i += step) {range.push(i);}} else {throw new Error("dojo.math.range: step must be non-zero");}
+return range;}

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/__package__.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/__package__.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/__package__.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/__package__.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,5 @@
+
+dojo.kwCompoundRequire({common: [
+["dojo.math", false, false],["dojo.math.curves", false, false],["dojo.math.points", false, false]
+]
+});dojo.provide("dojo.math.*");
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/curves.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/curves.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/curves.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/curves.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,26 @@
+
+dojo.provide("dojo.math.curves");dojo.require("dojo.math");dojo.math.curves = {Line: function(start, end) {this.start = start;this.end = end;this.dimensions = start.length;for(var i = 0; i < start.length; i++) {start[i] = Number(start[i]);}
+for(var i = 0; i < end.length; i++) {end[i] = Number(end[i]);}
+this.getValue = function(n){var retVal = new Array(this.dimensions);for(var i=0;i<this.dimensions;i++)
+retVal[i] = ((this.end[i] - this.start[i]) * n) + this.start[i];return retVal;}
+return this;},Bezier: function(pnts) {this.getValue = function(step) {if(step >= 1) return this.p[this.p.length-1];if(step <= 0) return this.p[0];var retVal = new Array(this.p[0].length);for(var k=0;j<this.p[0].length;k++) { retVal[k]=0; }
+for(var j=0;j<this.p[0].length;j++) {var C=0; var D=0;for(var i=0;i<this.p.length;i++) {C += this.p[i][j] * this.p[this.p.length-1][0]
+* dojo.math.bernstein(step,this.p.length,i);}
+for(var l=0;l<this.p.length;l++) {D += this.p[this.p.length-1][0] * dojo.math.bernstein(step,this.p.length,l);}
+retVal[j] = C/D;}
+return retVal;}
+this.p = pnts;return this;},CatmullRom : function(pnts, c) {this.getValue = function(step) {var percent = step * (this.p.length-1);var node = Math.floor(percent);var progress = percent - node;var i0 = node-1; if(i0 < 0) i0 = 0;var i = node;var i1 = node+1; if(i1 >= this.p.length) i1 = this.p.length-1;var i2 = node+2; if(i2 >= this.p.length) i2 = this.p.length-1;var u = progress;var u2 = progress*progress;var u3 = progress*progress*progress;var retVal = new Array(this.p[0].length);for(var k=0;k<this.p[0].length;k++) {var x1 = ( -this.c * this.p[i0][k] ) + ( (2 - this.c) * this.p[i][k] ) + ( (this.c-2) * this.p[i1][k] ) + ( this.c * this.p[i2][k] );var x2 = ( 2 * this.c * this.p[i0][k] ) + ( (this.c-3) * this.p[i][k] ) + ( (3 - 2 * this.c) * this.p[i1][k] ) + ( -this.c * this.p[i2][k] );var x3 = ( -this.c * this.p[i0][k] ) + ( this.c * this.p[i1][k] );var x4 = this.p[i][k];retVal[k] = x1*u3 + x2*u2 + x3*u + x4;}
+return retVal;}
+if(!c) this.c = 0.7;else this.c = c;this.p = pnts;return this;},Arc : function(start, end, ccw) {var center = dojo.math.points.midpoint(start, end);var sides = dojo.math.points.translate(dojo.math.points.invert(center), start);var rad = Math.sqrt(Math.pow(sides[0], 2) + Math.pow(sides[1], 2));var theta = dojo.math.radToDeg(Math.atan(sides[1]/sides[0]));if( sides[0] < 0 ) {theta -= 90;} else {theta += 90;}
+dojo.math.curves.CenteredArc.call(this, center, rad, theta, theta+(ccw?-180:180));},CenteredArc : function(center, radius, start, end) {this.center = center;this.radius = radius;this.start = start || 0;this.end = end;this.getValue = function(n) {var retVal = new Array(2);var theta = dojo.math.degToRad(this.start+((this.end-this.start)*n));retVal[0] = this.center[0] + this.radius*Math.sin(theta);retVal[1] = this.center[1] - this.radius*Math.cos(theta);return retVal;}
+return this;},Circle : function(center, radius) {dojo.math.curves.CenteredArc.call(this, center, radius, 0, 360);return this;},Path : function() {var curves = [];var weights = [];var ranges = [];var totalWeight = 0;this.add = function(curve, weight) {if( weight < 0 ) { dojo.raise("dojo.math.curves.Path.add: weight cannot be less than 0"); }
+curves.push(curve);weights.push(weight);totalWeight += weight;computeRanges();}
+this.remove = function(curve) {for(var i = 0; i < curves.length; i++) {if( curves[i] == curve ) {curves.splice(i, 1);totalWeight -= weights.splice(i, 1)[0];break;}}
+computeRanges();}
+this.removeAll = function() {curves = [];weights = [];totalWeight = 0;}
+this.getValue = function(n) {var found = false, value = 0;for(var i = 0; i < ranges.length; i++) {var r = ranges[i];if( n >= r[0] && n < r[1] ) {var subN = (n - r[0]) / r[2];value = curves[i].getValue(subN);found = true;break;}}
+if( !found ) {value = curves[curves.length-1].getValue(1);}
+for(var j = 0; j < i; j++) {value = dojo.math.points.translate(value, curves[j].getValue(1));}
+return value;}
+function computeRanges() {var start = 0;for(var i = 0; i < weights.length; i++) {var end = start + weights[i] / totalWeight;var len = end - start;ranges[i] = [start, end, len];start = end;}}
+return this;}};
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/matrix.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/matrix.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/matrix.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/matrix.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,62 @@
+
+dojo.provide("dojo.math.matrix");dojo.math.matrix.iDF = 0;dojo.math.matrix.ALMOST_ZERO = 1e-10;dojo.math.matrix.multiply = function(a, b){var ay = a.length;var ax = a[0].length;var by = b.length;var bx = b[0].length;if (ax != by){dojo.debug("Can't multiply matricies of sizes "+ax+','+ay+' and '+bx+','+by);return [[0]];}
+var c = [];for(var k=0; k<ay; k++){c[k] = [];for(var i=0; i<bx; i++){c[k][i] = 0;for(var m=0; m<ax; m++){c[k][i] += a[k][m]*b[m][i];}}
+}
+return c;}
+dojo.math.matrix.product = function() {if (arguments.length==0) {dojo.debug ("can't multiply 0 matrices!");return 1;}
+var result = arguments[0];for (var i=1; i<arguments.length; i++){result = dojo.math.matrix.multiply(result,arguments[i]);}
+return result;}
+dojo.math.matrix.sum = function() {if (arguments.length==0) {dojo.debug ("can't sum 0 matrices!");return 0;}
+var result = dojo.math.matrix.copy(arguments[0]);var rows = result.length;if (rows==0) {dojo.debug ("can't deal with matrices of 0 rows!");return 0;}
+var cols = result[0].length;if (cols==0) {dojo.debug ("can't deal with matrices of 0 cols!");return 0;}
+for (var i=1; i<arguments.length; ++i) {var arg = arguments[i];if (arg.length!=rows || arg[0].length!=cols) {dojo.debug ("can't add matrices of different dimensions: first dimensions were " + rows + "x" + cols + ", current dimensions are "+arg.length + "x" + arg[0].length);return 0;}
+for (var r=0; r<rows; r++){for (var c=0; c<cols; c++){result[r][c] += arg[r][c];}}
+}
+return result;}
+dojo.math.matrix.inverse = function(a){if (a.length==1 && a[0].length==1){return [[ 1 / a[0][0] ]];}
+var tms = a.length;var m = dojo.math.matrix.create(tms, tms);var mm = dojo.math.matrix.adjoint(a);var det = dojo.math.matrix.determinant(a);var dd = 0;if(det == 0){dojo.debug("Determinant Equals 0, Not Invertible.");return [[0]];}else{dd = 1 / det;}
+for (var i = 0; i < tms; i++){for (var j = 0; j < tms; j++) {m[i][j] = dd * mm[i][j];}}
+return m;}
+dojo.math.matrix.determinant = function(a){if (a.length != a[0].length){dojo.debug("Can't calculate the determiant of a non-squre matrix!");return 0;}
+var tms = a.length;var det = 1;var b = dojo.math.matrix.upperTriangle(a);for (var i=0; i < tms; i++){var bii = b[i][i];if (Math.abs(bii) < dojo.math.matrix.ALMOST_ZERO){return 0;}
+det *= bii;}
+det = det * dojo.math.matrix.iDF;return det;}
+dojo.math.matrix.upperTriangle = function(m){m = dojo.math.matrix.copy(m);var f1 = 0;var temp = 0;var tms = m.length;var v = 1;dojo.math.matrix.iDF = 1;for (var col = 0; col < tms - 1; col++) {if (typeof m[col][col] != 'number'){dojo.debug("non-numeric entry found in a numeric matrix: m["+col+"]["+col+"]="+m[col][col]);}
+v = 1;var stop_loop = 0;while ((m[col][col] == 0) && !stop_loop) {if (col + v >= tms){dojo.math.matrix.iDF = 0;stop_loop = 1;}else{for (var r = 0; r < tms; r++) {temp = m[col][r];m[col][r] = m[col + v][r];m[col + v][r] = temp;}
+v++;dojo.math.matrix.iDF *= -1;}}
+for (var row = col + 1; row < tms; row++) {if (typeof m[row][col] != 'number'){dojo.debug("non-numeric entry found in a numeric matrix: m["+row+"]["+col+"]="+m[row][col]);}
+if (typeof m[col][row] != 'number'){dojo.debug("non-numeric entry found in a numeric matrix: m["+col+"]["+row+"]="+m[col][row]);}
+if (m[col][col] != 0) {var f1 = (-1) * m[row][col] / m[col][col];for (var i = col; i < tms; i++) {m[row][i] = f1 * m[col][i] + m[row][i];}}
+}}
+return m;}
+dojo.math.matrix.create = function(a, b, value){if(!value){value = 0;}
+var m = [];for(var i=0; i<b; i++){m[i] = [];for(var j=0; j<a; j++){m[i][j] = value;}}
+return m;}
+dojo.math.matrix.ones = function(a,b) {return dojo.math.matrix.create(a,b,1);}
+dojo.math.matrix.zeros = function(a,b) {return dojo.math.matrix.create(a,b,0);}
+dojo.math.matrix.identity = function(size, scale){if (!scale){scale = 1;}
+var m = [];for(var i=0; i<size; i++){m[i] = [];for(var j=0; j<size; j++){m[i][j] = (i==j? scale: 0);}}
+return m;}
+dojo.math.matrix.adjoint = function(a){var tms = a.length;if (tms <= 1){dojo.debug("Can't find the adjoint of a matrix with a dimension less than 2");return [[0]];}
+if (a.length != a[0].length){dojo.debug("Can't find the adjoint of a non-square matrix");return [[0]];}
+var m = dojo.math.matrix.create(tms, tms);var ii = 0;var jj = 0;var ia = 0;var ja = 0;var det = 0;var ap = dojo.math.matrix.create(tms-1, tms-1);for (var i = 0; i < tms; i++){for (var j = 0; j < tms; j++){ia = 0;for (ii = 0; ii < tms; ii++) {if (ii==i){continue;}
+ja = 0;for (jj = 0; jj < tms; jj++) {if (jj==j){continue;}
+ap[ia][ja] = a[ii][jj];ja++;}
+ia++;}
+det = dojo.math.matrix.determinant(ap);m[i][j] = Math.pow(-1 , (i + j)) * det;}}
+m = dojo.math.matrix.transpose(m);return m;}
+dojo.math.matrix.transpose = function(a){var m = dojo.math.matrix.create(a.length, a[0].length);for (var i = 0; i < a.length; i++){for (var j = 0; j < a[i].length; j++){m[j][i] = a[i][j];}}
+return m;}
+dojo.math.matrix.format = function(a, decimal_points){if (arguments.length<=1){decimal_points = 5;}
+function format_int(x, dp){var fac = Math.pow(10 , dp);var a = Math.round(x*fac)/fac;var b = a.toString();if (b.charAt(0) != '-'){ b = ' ' + b;}
+var has_dp = 0;for(var i=1; i<b.length; i++){if (b.charAt(i) == '.'){ has_dp = 1; }}
+if (!has_dp){ b += '.'; }
+while(b.length < dp+3){ b += '0'; }
+return b;}
+var ya = a.length;var xa = ya>0? a[0].length: 0;var buffer = '';for (var y=0; y<ya; y++){buffer += '| ';for (var x=0; x<xa; x++){buffer += format_int(a[y][x], decimal_points) + ' ';}
+buffer += '|\n';}
+return buffer;}
+dojo.math.matrix.copy = function(a){var ya = a.length;var xa = a[0].length;var m = dojo.math.matrix.create(xa, ya);for (var y=0; y<ya; y++){for (var x=0; x<xa; x++){m[y][x] = a[y][x];}}
+return m;}
+dojo.math.matrix.scale = function(k, a){a = dojo.math.matrix.copy(a);var ya = a.length;var xa = a[0].length;for (var y=0; y<ya; y++){for (var x=0; x<xa; x++){a[y][x] *= k;}}
+return a;}

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/points.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/points.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/points.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/math/points.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,7 @@
+
+dojo.provide("dojo.math.points");dojo.require("dojo.math");dojo.math.points = {translate: function(a, b) {if( a.length != b.length ) {dojo.raise("dojo.math.translate: points not same size (a:[" + a + "], b:[" + b + "])");}
+var c = new Array(a.length);for(var i = 0; i < a.length; i++) {c[i] = a[i] + b[i];}
+return c;},midpoint: function(a, b) {if( a.length != b.length ) {dojo.raise("dojo.math.midpoint: points not same size (a:[" + a + "], b:[" + b + "])");}
+var c = new Array(a.length);for(var i = 0; i < a.length; i++) {c[i] = (a[i] + b[i]) / 2;}
+return c;},invert: function(a) {var b = new Array(a.length);for(var i = 0; i < a.length; i++) { b[i] = -a[i]; }
+return b;},distance: function(a, b) {return Math.sqrt(Math.pow(b[0]-a[0], 2) + Math.pow(b[1]-a[1], 2));}};
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/namespaces/dojo.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/namespaces/dojo.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/namespaces/dojo.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/namespaces/dojo.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,8 @@
+
+dojo.provide("dojo.namespaces.dojo");dojo.require("dojo.ns");(function(){var map = {html: {"accordioncontainer": "dojo.widget.AccordionContainer","animatedpng": "dojo.widget.AnimatedPng","button": "dojo.widget.Button","chart": "dojo.widget.Chart","checkbox": "dojo.widget.Checkbox","clock": "dojo.widget.Clock","colorpalette": "dojo.widget.ColorPalette","combobox": "dojo.widget.ComboBox","combobutton": "dojo.widget.Button","contentpane": "dojo.widget.ContentPane","currencytextbox": "dojo.widget.CurrencyTextbox","datepicker": "dojo.widget.DatePicker","datetextbox": "dojo.widget.DateTextbox","debugconsole": "dojo.widget.DebugConsole","dialog": "dojo.widget.Dialog","dropdownbutton": "dojo.widget.Button","dropdowndatepicker": "dojo.widget.DropdownDatePicker","dropdowntimepicker": "dojo.widget.DropdownTimePicker","emaillisttextbox": "dojo.widget.InternetTextbox","emailtextbox": "dojo.widget.InternetTextbox","editor": "dojo.widget.Editor","editor2": "dojo.widget.Editor2","filteringt
 able": "dojo.widget.FilteringTable","fisheyelist": "dojo.widget.FisheyeList","fisheyelistitem": "dojo.widget.FisheyeList","floatingpane": "dojo.widget.FloatingPane","modalfloatingpane": "dojo.widget.FloatingPane","form": "dojo.widget.Form","googlemap": "dojo.widget.GoogleMap","inlineeditbox": "dojo.widget.InlineEditBox","integerspinner": "dojo.widget.Spinner","integertextbox": "dojo.widget.IntegerTextbox","ipaddresstextbox": "dojo.widget.InternetTextbox","layoutcontainer": "dojo.widget.LayoutContainer","linkpane": "dojo.widget.LinkPane","popupmenu2": "dojo.widget.Menu2","menuitem2": "dojo.widget.Menu2","menuseparator2": "dojo.widget.Menu2","menubar2": "dojo.widget.Menu2","menubaritem2": "dojo.widget.Menu2","pagecontainer": "dojo.widget.PageContainer","pagecontroller": "dojo.widget.PageContainer","popupcontainer": "dojo.widget.PopupContainer","progressbar": "dojo.widget.ProgressBar","radiobutton": "dojo.widget.Checkbox","radiogroup": "dojo.widget.RadioGroup","realnumbertextbo
 x": "dojo.widget.RealNumberTextbox","regexptextbox": "dojo.widget.RegexpTextbox","repeater": "dojo.widget.Repeater","resizabletextarea": "dojo.widget.ResizableTextarea","richtext": "dojo.widget.RichText","select": "dojo.widget.Select","show": "dojo.widget.Show","showaction": "dojo.widget.Show","showslide": "dojo.widget.Show","slidervertical": "dojo.widget.Slider","sliderhorizontal": "dojo.widget.Slider","slider":"dojo.widget.Slider","slideshow": "dojo.widget.SlideShow","sortabletable": "dojo.widget.SortableTable","splitcontainer": "dojo.widget.SplitContainer","tabcontainer": "dojo.widget.TabContainer","tabcontroller": "dojo.widget.TabContainer","taskbar": "dojo.widget.TaskBar","textbox": "dojo.widget.Textbox","timepicker": "dojo.widget.TimePicker","timetextbox": "dojo.widget.DateTextbox","titlepane": "dojo.widget.TitlePane","toaster": "dojo.widget.Toaster","toggler": "dojo.widget.Toggler","toolbar": "dojo.widget.Toolbar","toolbarcontainer": "dojo.widget.Toolbar","toolbaritem
 ": "dojo.widget.Toolbar","toolbarbuttongroup": "dojo.widget.Toolbar","toolbarbutton": "dojo.widget.Toolbar","toolbardialog": "dojo.widget.Toolbar","toolbarmenu": "dojo.widget.Toolbar","toolbarseparator": "dojo.widget.Toolbar","toolbarspace": "dojo.widget.Toolbar","toolbarselect": "dojo.widget.Toolbar","toolbarcolordialog": "dojo.widget.Toolbar","tooltip": "dojo.widget.Tooltip","tree": "dojo.widget.Tree","treebasiccontroller": "dojo.widget.TreeBasicController","treecontextmenu": "dojo.widget.TreeContextMenu","treedisablewrapextension": "dojo.widget.TreeDisableWrapExtension","treedociconextension": "dojo.widget.TreeDocIconExtension","treeeditor": "dojo.widget.TreeEditor","treeemphasizeonselect": "dojo.widget.TreeEmphasizeOnSelect","treeexpandtonodeonselect": "dojo.widget.TreeExpandToNodeOnSelect","treelinkextension": "dojo.widget.TreeLinkExtension","treeloadingcontroller": "dojo.widget.TreeLoadingController","treemenuitem": "dojo.widget.TreeContextMenu","treenode": "dojo.widge
 t.TreeNode","treerpccontroller": "dojo.widget.TreeRPCController","treeselector": "dojo.widget.TreeSelector","treetoggleonselect": "dojo.widget.TreeToggleOnSelect","treev3": "dojo.widget.TreeV3","treebasiccontrollerv3": "dojo.widget.TreeBasicControllerV3","treecontextmenuv3": "dojo.widget.TreeContextMenuV3","treedndcontrollerv3": "dojo.widget.TreeDndControllerV3","treeloadingcontrollerv3": "dojo.widget.TreeLoadingControllerV3","treemenuitemv3": "dojo.widget.TreeContextMenuV3","treerpccontrollerv3": "dojo.widget.TreeRpcControllerV3","treeselectorv3": "dojo.widget.TreeSelectorV3","urltextbox": "dojo.widget.InternetTextbox","usphonenumbertextbox": "dojo.widget.UsTextbox","ussocialsecuritynumbertextbox": "dojo.widget.UsTextbox","usstatetextbox": "dojo.widget.UsTextbox","usziptextbox": "dojo.widget.UsTextbox","validationtextbox": "dojo.widget.ValidationTextbox","treeloadingcontroller": "dojo.widget.TreeLoadingController","wizardcontainer": "dojo.widget.Wizard","wizardpane": "dojo.
 widget.Wizard","yahoomap": "dojo.widget.YahooMap"
+},svg: {"chart": "dojo.widget.svg.Chart"
+},vml: {"chart": "dojo.widget.vml.Chart"
+}};dojo.addDojoNamespaceMapping = function(shortName, packageName){map[shortName]=packageName;};function dojoNamespaceResolver(name, domain){if(!domain){ domain="html"; }
+if(!map[domain]){ return null; }
+return map[domain][name];}
+dojo.registerNamespaceResolver("dojo", dojoNamespaceResolver);})();
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/ns.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/ns.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/ns.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/ns.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,20 @@
+
+dojo.provide("dojo.ns");dojo.ns = {namespaces: {},failed: {},loading: {},loaded: {},register: function(name, module, resolver, noOverride){if(!noOverride || !this.namespaces[name]){this.namespaces[name] = new dojo.ns.Ns(name, module, resolver);}},allow: function(name){if(this.failed[name]){return false;}
+if((djConfig.excludeNamespace)&&(dojo.lang.inArray(djConfig.excludeNamespace, name))){return false;}
+return((name==this.dojo)||(!djConfig.includeNamespace)||(dojo.lang.inArray(djConfig.includeNamespace, name)));},get: function(name){return this.namespaces[name];},require: function(name){var ns = this.namespaces[name];if((ns)&&(this.loaded[name])){return ns;}
+if(!this.allow(name)){return false;}
+if(this.loading[name]){dojo.debug('dojo.namespace.require: re-entrant request to load namespace "' + name + '" must fail.'); 
+return false;}
+var req = dojo.require;this.loading[name] = true;try {if(name=="dojo"){req("dojo.namespaces.dojo");}else{if(!dojo.hostenv.moduleHasPrefix(name)){dojo.registerModulePath(name, "../" + name);}
+req([name, 'manifest'].join('.'), false, true);}
+if(!this.namespaces[name]){this.failed[name] = true;}}finally{this.loading[name]=false;}
+return this.namespaces[name];}}
+dojo.ns.Ns = function(name, module, resolver){this.name = name;this.module = module;this.resolver = resolver;this._loaded = [ ];this._failed = [ ];}
+dojo.ns.Ns.prototype.resolve = function(name, domain, omitModuleCheck){if(!this.resolver || djConfig["skipAutoRequire"]){return false;}
+var fullName = this.resolver(name, domain);if((fullName)&&(!this._loaded[fullName])&&(!this._failed[fullName])){var req = dojo.require;req(fullName, false, true);if(dojo.hostenv.findModule(fullName, false)){this._loaded[fullName] = true;}else{if(!omitModuleCheck){dojo.raise("dojo.ns.Ns.resolve: module '" + fullName + "' not found after loading via namespace '" + this.name + "'");} 
+this._failed[fullName] = true;}}
+return Boolean(this._loaded[fullName]);}
+dojo.registerNamespace = function(name, module, resolver){dojo.ns.register.apply(dojo.ns, arguments);}
+dojo.registerNamespaceResolver = function(name, resolver){var n = dojo.ns.namespaces[name];if(n){n.resolver = resolver;}}
+dojo.registerNamespaceManifest = function(module, path, name, widgetModule, resolver){dojo.registerModulePath(name, path);dojo.registerNamespace(name, widgetModule, resolver);}
+dojo.registerNamespace("dojo", "dojo.widget");
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/number.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/number.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/number.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/number.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,20 @@
+
+dojo.provide("dojo.number");dojo.require("dojo.experimental");dojo.experimental("dojo.number");dojo.require("dojo.i18n.common");dojo.requireLocalization("dojo.i18n.cldr", "number", null, "en,en-in,fr,ROOT");dojo.require("dojo.string.common");dojo.require("dojo.string.extras");dojo.require("dojo.regexp");dojo.number.format = function(value, options){options = options || {};var locale = dojo.hostenv.normalizeLocale(options.locale);var bundle = dojo.i18n.getLocalization("dojo.i18n.cldr", "number", locale);var pattern = options.pattern || bundle[(options.type || "decimal") + "Format"];return dojo.number.applyPattern(value, pattern, {symbols: bundle, places: options.places, round: options.round});};dojo.number._numberPatternRE = /(?:[#0]*,?)*[#0]+(?:\.0*#*)?/;dojo.number.applyPattern = function(value, pattern, options){options = options || {};var group = options.symbols.group;var decimal = options.symbols.decimal;var patternList = pattern.split(';');var positivePattern = patternL
 ist[0];pattern = patternList[(value < 0) ? 1 : 0] || ("-" + positivePattern);if(pattern.indexOf('%') != -1){value *= 100;}else if(pattern.indexOf('\u2030') != -1){value *= 1000;}else if(pattern.indexOf('\u00a4') != -1){group = options.symbols.currencyGroup || group;decimal = options.symbols.currencyDecimal || decimal;pattern.replace('/\u00a4{1,3}/', function(match){switch(match.length){case 1:
+return options.symbols.symbol;case 2:
+return currencyISO;case 3:
+return "United States Dollars?";}});}else if(pattern.indexOf('E') != -1){dojo.unimplemented("exponential notation not supported");}
+var numberPatternRE = dojo.number._numberPatternRE;var numberPattern = positivePattern.match(numberPatternRE);if(!numberPattern){dojo.raise("unable to find a number expression in pattern: "+pattern);}
+var output = pattern.replace(numberPatternRE, dojo.number.formatAbsolute(value, numberPattern[0], {decimal: decimal, group: group, places: options.places}));return output;}
+dojo.number.formatAbsolute = function(value, pattern, options){options = options || {};value = Math.abs(value);var round = false;var valueParts = String(value).split(".");var patternParts = pattern.split(".");var fractional = valueParts[1] || "";if(options.places){valueParts[1] = dojo.string.pad(fractional.substr(0, options.places), options.places, '0', -1);}else if(patternParts[1] && options.places !== 0){var pad = patternParts[1].lastIndexOf("0") + 1;if(pad > fractional.length){valueParts[1] = dojo.string.pad(fractional, pad, '0', -1);}
+var places = patternParts[1].length;if(places < fractional.length){valueParts[1] = fractional.substr(0, places);}}else{if(valueParts[1]){ valueParts.pop(); }}
+var patternDigits = patternParts[0].replace(',', '');pad = patternDigits.indexOf("0");if(pad != -1){pad = patternDigits.length - pad;if(pad > valueParts[0].length){valueParts[0] = dojo.string.pad(valueParts[0], pad);}
+if(patternDigits.indexOf("#") == -1){valueParts[0] = valueParts[0].substr(valueParts[0].length - pad);}}
+var index = patternParts[0].lastIndexOf(',');var groupSize, groupSize2;if(index != -1){groupSize = patternParts[0].length - index - 1;var remainder = patternParts[0].substr(0, index);index = remainder.lastIndexOf(',');if(index != -1){groupSize2 = remainder.length - index - 1;}}
+var pieces = [];for(var whole = valueParts[0]; whole;){var off = whole.length - groupSize;pieces.push((off > 0) ? whole.substr(off) : whole);whole = (off > 0) ? whole.slice(0, off) : "";if(groupSize2){groupSize = groupSize2;delete groupSize2;}}
+valueParts[0] = pieces.reverse().join(options.group || ",");return valueParts.join(options.decimal || ".");};dojo.number.parse = function(expression, options){options = options || {};var locale = dojo.hostenv.normalizeLocale(options.locale);var bundle = dojo.i18n.getLocalization("dojo.i18n.cldr", "number", locale);var pattern = options.pattern || bundle[(options.type || "decimal") + "Format"];var group = bundle.group;var decimal = bundle.decimal;var patternList = pattern.split(';');if (patternList.length == 1){patternList.push("-" + patternList[0]);}
+if(options.strict && !dojo.number._buildNumberFormatRE(pattern, {}).test(expression)){return NaN;}
+var re = dojo.regexp.buildGroupRE(patternList, function(pattern){pattern = dojo.regexp.group(dojo.string.escape('regexp', pattern, '.'), true);return pattern.replace(dojo.number._numberPatternRE, "([\\d\\"+group+"]+(?:\\"+decimal+"\\d+)?)");}, true);var results = (new RegExp("^"+re+"$")).exec(expression);if(!results){return NaN;}
+var numberExpression = results[1];if(typeof numberExpression == 'undefined'){var negative = true;numberExpression = results[2];}
+numberExpression = numberExpression.replace(group, "", "g").replace(decimal, ".");value = Number(numberExpression);if(!isNaN(value)){if(negative){ value = -value; }}
+return value;};dojo.number._buildNumberFormatRE = function(pattern, options){dojo.unimplemented("dojo.number._buildNumberFormatRE");var numberPatternRE = dojo.number._numberPatternRE;var numberPattern = pattern.match(numberPatternRE);if(!numberPattern){dojo.raise("unable to find a number expression in pattern: "+pattern);}
+pattern = pattern.replace(numberPatternRE, "\\d...");return new RegExp("^" + pattern + "$");};
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/profile.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/profile.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/profile.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/profile.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,14 @@
+
+dojo.provide("dojo.profile");dojo.profile = {_profiles: {},_pns: [],start:function( name){if(!this._profiles[name]){this._profiles[name] = {iters: 0, total: 0};this._pns[this._pns.length] = name;}else{if(this._profiles[name]["start"]){this.end(name);}}
+this._profiles[name].end = null;this._profiles[name].start = new Date();},end:function( name){var ed = new Date();if((this._profiles[name])&&(this._profiles[name]["start"])){with(this._profiles[name]){end = ed;total += (end - start);start = null;iters++;}}else{return true;}},dump:function( appendToDoc){var tbl = document.createElement("table");with(tbl.style){border = "1px solid black";borderCollapse = "collapse";}
+var hdr = tbl.createTHead();var hdrtr = hdr.insertRow(0);var cols = ["Identifier","Calls","Total","Avg"];for(var x=0; x<cols.length; x++){var ntd = hdrtr.insertCell(x);with(ntd.style){backgroundColor = "#225d94";color = "white";borderBottom = "1px solid black";borderRight = "1px solid black";fontFamily = "tahoma";fontWeight = "bolder";paddingLeft = paddingRight = "5px";}
+ntd.appendChild(document.createTextNode(cols[x]));}
+for(var x=0; x < this._pns.length; x++){var prf = this._profiles[this._pns[x]];this.end(this._pns[x]);if(prf.iters>0){var bdytr = tbl.insertRow(true);var vals = [this._pns[x], prf.iters, prf.total, parseInt(prf.total/prf.iters)];for(var y=0; y<vals.length; y++){var cc = bdytr.insertCell(y);cc.appendChild(document.createTextNode(vals[y]));with(cc.style){borderBottom = "1px solid gray";paddingLeft = paddingRight = "5px";if(x%2){backgroundColor = "#e1f1ff";}
+if(y>0){textAlign = "right";borderRight = "1px solid gray";}else{borderRight = "1px solid black";}}
+}}
+}
+if(appendToDoc){var ne = document.createElement("div");ne.id = "profileOutputTable";with(ne.style){fontFamily = "Courier New, monospace";fontSize = "12px";lineHeight = "16px";borderTop = "1px solid black";padding = "10px";}
+if(document.getElementById("profileOutputTable")){dojo.body().replaceChild(ne, document.getElementById("profileOutputTable"));}else{dojo.body().appendChild(ne);}
+ne.appendChild(tbl);}
+return tbl;}}
+dojo.profile.stop = dojo.profile.end;
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/regexp.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/regexp.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/regexp.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/regexp.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,106 @@
+
+dojo.provide("dojo.regexp");dojo.getObject("dojo.regexp.us", true);dojo.require("dojo.string.extras");dojo.regexp.tld = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.allowCC != "boolean"){ flags.allowCC = true; }
+if(typeof flags.allowInfra != "boolean"){ flags.allowInfra = true; }
+if(typeof flags.allowGeneric != "boolean"){ flags.allowGeneric = true; }
+var infraRE = "arpa";var genericRE =
+"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|xxx|jobs|mobi|post";var ccRE =
+"ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|" +
+"bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|" +
+"ec|ee|eg|er|eu|es|et|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|"
++
+"gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|" +
+"la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|" +
+"my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|" +
+"re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sk|sl|sm|sn|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|" +
+"tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";var a = [];if(flags.allowInfra){ a.push(infraRE); }
+if(flags.allowGeneric){ a.push(genericRE); }
+if(flags.allowCC){ a.push(ccRE); }
+var tldRE = "";if (a.length > 0) {tldRE = "(" + a.join("|") + ")";}
+return tldRE;}
+dojo.regexp.ipAddress = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.allowDottedDecimal != "boolean"){ flags.allowDottedDecimal = true; }
+if(typeof flags.allowDottedHex != "boolean"){ flags.allowDottedHex = true; }
+if(typeof flags.allowDottedOctal != "boolean"){ flags.allowDottedOctal = true; }
+if(typeof flags.allowDecimal != "boolean"){ flags.allowDecimal = true; }
+if(typeof flags.allowHex != "boolean"){ flags.allowHex = true; }
+if(typeof flags.allowIPv6 != "boolean"){ flags.allowIPv6 = true; }
+if(typeof flags.allowHybrid != "boolean"){ flags.allowHybrid = true; }
+var dottedDecimalRE =
+"((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";var dottedHexRE = "(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]";var dottedOctalRE = "(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]";var decimalRE =  "(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|" +
+"4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])";var hexRE = "0[xX]0*[\\da-fA-F]{1,8}";var ipv6RE = "([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}";var hybridRE = "([\\da-fA-F]{1,4}\\:){6}" +
+"((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";var a = [];if(flags.allowDottedDecimal){ a.push(dottedDecimalRE); }
+if(flags.allowDottedHex){ a.push(dottedHexRE); }
+if(flags.allowDottedOctal){ a.push(dottedOctalRE); }
+if(flags.allowDecimal){ a.push(decimalRE); }
+if(flags.allowHex){ a.push(hexRE); }
+if(flags.allowIPv6){ a.push(ipv6RE); }
+if(flags.allowHybrid){ a.push(hybridRE); }
+var ipAddressRE = "";if(a.length > 0){ipAddressRE = "(" + a.join("|") + ")";}
+return ipAddressRE;}
+dojo.regexp.host = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.allowIP != "boolean"){ flags.allowIP = true; }
+if(typeof flags.allowLocal != "boolean"){ flags.allowLocal = false; }
+if(typeof flags.allowPort != "boolean"){ flags.allowPort = true; }
+var domainNameRE = "([0-9a-zA-Z]([-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?\\.)+" + dojo.regexp.tld(flags);var portRE = ( flags.allowPort ) ? "(\\:" + dojo.regexp.integer({signed: false}) + ")?" : "";var hostNameRE = domainNameRE;if(flags.allowIP){ hostNameRE += "|" +  dojo.regexp.ipAddress(flags); }
+if(flags.allowLocal){ hostNameRE += "|localhost"; }
+return "(" + hostNameRE + ")" + portRE;}
+dojo.regexp.url = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.scheme == "undefined"){ flags.scheme = [true, false]; }
+var protocolRE = dojo.regexp.buildGroupRE(flags.scheme,function(q){ if(q){ return "(https?|ftps?)\\://"; } return ""; }
+);var pathRE = "(/([^?#\\s/]+/)*)?([^?#\\s/]+(\\?[^?#\\s/]*)?(#[A-Za-z][\\w.:-]*)?)?";return protocolRE + dojo.regexp.host(flags) + pathRE;}
+dojo.regexp.emailAddress = function(flags){flags = (typeof flags == "object") ? flags : {};if (typeof flags.allowCruft != "boolean") { flags.allowCruft = false; }
+flags.allowPort = false;var usernameRE = "([\\da-z]+[-._+&'])*[\\da-z]+";var emailAddressRE = usernameRE + "@" + dojo.regexp.host(flags);if ( flags.allowCruft ) {emailAddressRE = "<?(mailto\\:)?" + emailAddressRE + ">?";}
+return emailAddressRE;}
+dojo.regexp.emailAddressList = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.listSeparator != "string"){ flags.listSeparator = "\\s;,"; }
+var emailAddressRE = dojo.regexp.emailAddress(flags);var emailAddressListRE = "(" + emailAddressRE + "\\s*[" + flags.listSeparator + "]\\s*)*" +
+emailAddressRE + "\\s*[" + flags.listSeparator + "]?\\s*";return emailAddressListRE;}
+dojo.regexp.integer = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.signed == "undefined"){ flags.signed = [true, false]; }
+if(typeof flags.separator == "undefined"){flags.separator = "";} else if(typeof flags.groupSize == "undefined"){flags.groupSize = 3;}
+var signRE = dojo.regexp.buildGroupRE(flags.signed,function(q) { return q ? "[-+]" : ""; }
+);var numberRE = dojo.regexp.buildGroupRE(flags.separator,function(sep){if(sep == ""){return "(0|[1-9]\\d*)";}
+var grp = flags.groupSize, grp2 = flags.groupSize2;if(typeof grp2 != "undefined"){var grp2RE = "(0|[1-9]\\d{0," + (grp2-1) + "}([" + sep + "]\\d{" + grp2 + "})*[" + sep + "]\\d{" + grp + "})";return ((grp-grp2) > 0) ? "(" + grp2RE + "|(0|[1-9]\\d{0," + (grp-1) + "}))" : grp2RE;}
+return  "(0|[1-9]\\d{0," + (grp-1) + "}([" + sep + "]\\d{" + grp + "})*)";}
+);return signRE + numberRE;}
+dojo.regexp.realNumber = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.places != "number"){ flags.places = Infinity; }
+if(typeof flags.decimal != "string"){ flags.decimal = "."; }
+if(typeof flags.fractional == "undefined"){ flags.fractional = [true, false]; }
+if(typeof flags.exponent == "undefined"){ flags.exponent = [true, false]; }
+if(typeof flags.eSigned == "undefined"){ flags.eSigned = [true, false]; }
+var integerRE = dojo.regexp.integer(flags);var decimalRE = dojo.regexp.buildGroupRE(flags.fractional,function(q){var re = "";if(q && (flags.places > 0)){re = "\\" + flags.decimal;if(flags.places == Infinity){re = "(" + re + "\\d+)?";}else{re = re + "\\d{" + flags.places + "}";}}
+return re;}
+);var exponentRE = dojo.regexp.buildGroupRE(flags.exponent,function(q){if(q){ return "([eE]" + dojo.regexp.integer({ signed: flags.eSigned}) + ")"; }
+return "";}
+);return integerRE + decimalRE + exponentRE;}
+dojo.regexp.currency = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.signed == "undefined"){ flags.signed = [true, false]; }
+if(typeof flags.symbol == "undefined"){ flags.symbol = "$"; }
+if(typeof flags.placement != "string"){ flags.placement = "before"; }
+if(typeof flags.signPlacement != "string"){ flags.signPlacement = "before"; }
+if(typeof flags.separator == "undefined"){ flags.separator = ","; }
+if(typeof flags.decimal != "string"){ flags.decimal = "."; }
+var signRE = dojo.regexp.buildGroupRE(flags.signed,function(q){ if (q){ return "[-+]"; } return ""; }
+);var symbolRE = dojo.regexp.buildGroupRE(flags.symbol,function(symbol){return "\\s?" + symbol.replace( /([.$?*!=:|\\\/^])/g, "\\$1") + "\\s?";}
+);switch (flags.signPlacement){case "before":
+symbolRE = signRE + symbolRE;break;case "after":
+symbolRE = symbolRE + signRE;break;}
+var flagsCopy = flags;flagsCopy.signed = false; flagsCopy.exponent = false;var numberRE = dojo.regexp.realNumber(flagsCopy);var currencyRE;switch (flags.placement){case "before":
+currencyRE = symbolRE + numberRE;break;case "after":
+currencyRE = numberRE + symbolRE;break;}
+switch (flags.signPlacement){case "around":
+currencyRE = "(" + currencyRE + "|" + "\\(" + currencyRE + "\\)" + ")";break;case "begin":
+currencyRE = signRE + currencyRE;break;case "end":
+currencyRE = currencyRE + signRE;break;}
+return currencyRE;}
+dojo.regexp.us.state = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.allowTerritories != "boolean"){ flags.allowTerritories = true; }
+if(typeof flags.allowMilitary != "boolean"){ flags.allowMilitary = true; }
+var statesRE =
+"AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|" +
+"NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY";var territoriesRE = "AS|FM|GU|MH|MP|PW|PR|VI";var militaryRE = "AA|AE|AP";if(flags.allowTerritories){ statesRE += "|" + territoriesRE; }
+if(flags.allowMilitary){ statesRE += "|" + militaryRE; }
+return "(" + statesRE + ")";}
+dojo.regexp.time = function(flags){dojo.deprecated("dojo.regexp.time", "Use dojo.date.parse instead", "0.5");flags = (typeof flags == "object") ? flags : {};if(typeof flags.format == "undefined"){ flags.format = "h:mm:ss t"; }
+if(typeof flags.amSymbol != "string"){ flags.amSymbol = "AM"; }
+if(typeof flags.pmSymbol != "string"){ flags.pmSymbol = "PM"; }
+var timeRE = function(format){format = format.replace( /([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");var amRE = flags.amSymbol.replace( /([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");var pmRE = flags.pmSymbol.replace( /([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");format = format.replace("hh", "(0[1-9]|1[0-2])");format = format.replace("h", "([1-9]|1[0-2])");format = format.replace("HH", "([01][0-9]|2[0-3])");format = format.replace("H", "([0-9]|1[0-9]|2[0-3])");format = format.replace("mm", "([0-5][0-9])");format = format.replace("m", "([1-5][0-9]|[0-9])");format = format.replace("ss", "([0-5][0-9])");format = format.replace("s", "([1-5][0-9]|[0-9])");format = format.replace("t", "\\s?(" + amRE + "|" + pmRE + ")\\s?" );return format;};return dojo.regexp.buildGroupRE(flags.format, timeRE);}
+dojo.regexp.numberFormat = function(flags){flags = (typeof flags == "object") ? flags : {};if(typeof flags.format == "undefined"){ flags.format = "###-###-####"; }
+var digitRE = function(format){format = dojo.string.escapeRegExp(format, "?");format = format.replace(/\?/g, "\\d?");format = format.replace(/#/g, "\\d");return format;};return dojo.regexp.buildGroupRE(flags.format, digitRE);}
+dojo.regexp.buildGroupRE = function(a, re,nonCapture){if(!(a instanceof Array)){return re(a);}
+var b = [];for (var i = 0; i < a.length; i++){b.push(re(a[i]));}
+return dojo.regexp.group(b.join("|"), nonCapture);}
+dojo.regexp.group = function(expression, nonCapture){return "(" + (nonCapture ? "?:":"") + expression + ")";}

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/Deferred.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/Deferred.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/Deferred.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/Deferred.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,2 @@
+
+dojo.provide("dojo.rpc.Deferred");dojo.require("dojo.Deferred");dojo.deprecated("dojo.rpc.Deferred", "replaced by dojo.Deferred", "0.6");dojo.rpc.Deferred = dojo.Deferred;dojo.rpc.Deferred.prototype = dojo.Deferred.prototype;
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/JotService.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/JotService.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/JotService.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/JotService.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,5 @@
+
+dojo.provide("dojo.rpc.JotService");dojo.require("dojo.rpc.RpcService"); dojo.require("dojo.rpc.JsonService"); dojo.require("dojo.json"); dojo.rpc.JotService = function(){this.serviceUrl = "/_/jsonrpc";}
+dojo.inherits(dojo.rpc.JotService, dojo.rpc.JsonService);dojo.lang.extend(dojo.rpc.JotService, {bind: function(method, parameters, deferredRequestHandler, url){dojo.io.bind({url: url||this.serviceUrl,content: {json: this.createRequest(method, parameters)
+},method: "POST",mimetype: "text/json",load: this.resultCallback(deferredRequestHandler),error: this.errorCallback(deferredRequestHandler),preventCache: true
+});},createRequest: function(method, params){var req = { "params": params, "method": method, "id": this.lastSubmissionId++ };return dojo.json.serialize(req);}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/JsonService.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/JsonService.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/JsonService.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/JsonService.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,11 @@
+
+dojo.provide("dojo.rpc.JsonService");dojo.require("dojo.rpc.RpcService");dojo.require("dojo.io.*");dojo.require("dojo.json");dojo.require("dojo.lang.common");dojo.rpc.JsonService = function(args){if(args){if(dojo.lang.isString(args)){this.connect(args);}else{if(args["smdUrl"]){this.connect(args.smdUrl);}
+if(args["smdStr"]){this.processSmd(dj_eval("("+args.smdStr+")"));}
+if(args["smdObj"]){this.processSmd(args.smdObj);}
+if(args["serviceUrl"]){this.serviceUrl = args.serviceUrl;}
+if(typeof args["strictArgChecks"] != "undefined"){this.strictArgChecks = args.strictArgChecks;}}
+}}
+dojo.inherits(dojo.rpc.JsonService, dojo.rpc.RpcService);dojo.extend(dojo.rpc.JsonService, {bustCache: false,contentType: "application/json-rpc",lastSubmissionId: 0,callRemote: function(method, params){var deferred = new dojo.Deferred();this.bind(method, params, deferred);return deferred;},bind: function(method, parameters, deferredRequestHandler, url){dojo.io.bind({url: url||this.serviceUrl,postContent: this.createRequest(method, parameters),method: "POST",contentType: this.contentType,mimetype: "text/json",load: this.resultCallback(deferredRequestHandler),error: this.errorCallback(deferredRequestHandler),preventCache:this.bustCache
+});},createRequest: function(method, params){var req = { "params": params, "method": method, "id": ++this.lastSubmissionId };var data = dojo.json.serialize(req);dojo.debug("JsonService: JSON-RPC Request: " + data);return data;},parseResults: function(obj){if(!obj){ return; }
+if (obj["Result"]!=null){return obj["Result"];}else if(obj["result"]!=null){return obj["result"];}else if(obj["ResultSet"]){return obj["ResultSet"];}else{return obj;}}
+});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/RpcService.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/RpcService.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/RpcService.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/RpcService.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,11 @@
+
+dojo.provide("dojo.rpc.RpcService");dojo.require("dojo.io.*");dojo.require("dojo.json");dojo.require("dojo.lang.func");dojo.require("dojo.Deferred");dojo.rpc.RpcService = function(url){if(url){this.connect(url);}}
+dojo.lang.extend(dojo.rpc.RpcService, {strictArgChecks: true,serviceUrl: "",parseResults: function(obj){return obj;},errorCallback: function( deferredRequestHandler){return function(type, e){deferredRequestHandler.errback(new Error(e.message));}},resultCallback: function( deferredRequestHandler){var tf = dojo.lang.hitch(this,function(type, obj, e){if (obj["error"]!=null) {var err = new Error(obj.error);err.id = obj.id;deferredRequestHandler.errback(err);} else {var results = this.parseResults(obj);deferredRequestHandler.callback(results);}}
+);return tf;},generateMethod: function( method,  parameters,  url){return dojo.lang.hitch(this, function(){var deferredRequestHandler = new dojo.Deferred();if( (this.strictArgChecks) &&
+(parameters != null) &&
+(arguments.length != parameters.length)
+){dojo.raise("Invalid number of parameters for remote method.");} else {this.bind(method, arguments, deferredRequestHandler, url);}
+return deferredRequestHandler;});},processSmd: function( object){dojo.debug("RpcService: Processing returned SMD.");if(object.methods){dojo.lang.forEach(object.methods, function(m){if(m && m["name"]){dojo.debug("RpcService: Creating Method: this.", m.name, "()");this[m.name] = this.generateMethod(m.name,m.parameters,m["url"]||m["serviceUrl"]||m["serviceURL"]);if(dojo.lang.isFunction(this[m.name])){dojo.debug("RpcService: Successfully created", m.name, "()");}else{dojo.debug("RpcService: Failed to create", m.name, "()");}}
+}, this);}
+this.serviceUrl = object.serviceUrl||object.serviceURL;dojo.debug("RpcService: Dojo RpcService is ready for use.");},connect: function( smdUrl){dojo.debug("RpcService: Attempting to load SMD document from:", smdUrl);dojo.io.bind({url: smdUrl,mimetype: "text/json",load: dojo.lang.hitch(this, function(type, object, e){ return this.processSmd(object); }),sync: true
+});}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/YahooService.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/YahooService.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/YahooService.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/YahooService.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,7 @@
+
+dojo.provide("dojo.rpc.YahooService");dojo.require("dojo.rpc.RpcService");dojo.require("dojo.rpc.JsonService");dojo.require("dojo.json");dojo.require("dojo.uri.*");dojo.require("dojo.io.ScriptSrcIO");dojo.rpc.YahooService = function(appId){this.appId = appId;if(!appId){this.appId = "dojotoolkit";dojo.debug("please initialize the YahooService class with your own","application ID. Using the default may cause problems during","deployment of your application");}
+this.connect(dojo.uri.moduleUri("dojo", "rpc/yahoo.smd"));this.strictArgChecks = false;}
+dojo.inherits(dojo.rpc.YahooService, dojo.rpc.JsonService);dojo.lang.extend(dojo.rpc.YahooService, {strictArgChecks: false,bind: function(method, parameters, deferredRequestHandler, url){var params = parameters;if((dojo.lang.isArrayLike(parameters))&&
+(parameters.length == 1)){params = parameters[0];}
+params.output = "json";params.appid= this.appId;dojo.io.bind({url: url||this.serviceUrl,transport: "ScriptSrcTransport",content: params,jsonParamName: "callback",mimetype: "text/json",load: this.resultCallback(deferredRequestHandler),error: this.errorCallback(deferredRequestHandler),preventCache: true
+});}});
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/__package__.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/__package__.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/__package__.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/__package__.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,3 @@
+
+dojo.kwCompoundRequire({common: [["dojo.rpc.JsonService", false, false]]
+});dojo.provide("dojo.rpc.*");
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/yahoo.smd
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/yahoo.smd?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/yahoo.smd (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/rpc/yahoo.smd Sun Jan 21 10:25:59 2007
@@ -0,0 +1,289 @@
+{
+	"SMDVersion":".1",
+	"objectName":"yahoo",
+	"serviceType":"JSON-P",
+	"methods":[
+		//
+		// MAPS 
+		//
+		{
+			// http://developer.yahoo.com/maps/rest/V1/mapImage.html
+			"name":"mapImage",
+			"serviceURL": "http://api.local.yahoo.com/MapsService/V1/mapImage",
+			"parameters":[
+				{ "name":"street", "type":"STRING" },
+				{ "name":"city", "type":"STRING" },
+				{ "name":"zip", "type":"INTEGER" },
+				{ "name":"location", "type":"STRING" },
+				{ "name":"longitude", "type":"FLOAT" },
+				{ "name":"latitude", "type":"FLOAT" },
+				{ "name":"image_type", "type":"STRING" },
+				{ "name":"image_width", "type":"INTEGER" },
+				{ "name":"image_height", "type":"INTEGER" },
+				{ "name":"zoom", "type":"INTEGER" },
+				{ "name":"radius", "type":"INTEGER" }
+			]
+		},
+		{
+			// http://developer.yahoo.com/traffic/rest/V1/index.html
+			"name":"trafficData",
+			"serviceURL": "http://api.local.yahoo.com/MapsService/V1/trafficData",
+			"parameters":[
+				{ "name":"street", "type":"STRING" },
+				{ "name":"city", "type":"STRING" },
+				{ "name":"zip", "type":"INTEGER" },
+				{ "name":"location", "type":"STRING" },
+				{ "name":"longitude", "type":"FLOAT" },
+				{ "name":"latitude", "type":"FLOAT" },
+				{ "name":"severity", "type":"INTEGER" },
+				{ "name":"include_map", "type":"INTEGER" },
+				{ "name":"image_type", "type":"STRING" },
+				{ "name":"image_width", "type":"INTEGER" },
+				{ "name":"image_height", "type":"INTEGER" },
+				{ "name":"zoom", "type":"INTEGER" },
+				{ "name":"radius", "type":"INTEGER" }
+			]
+		},
+		/*
+			// Yahoo's geocoding service is f'd for JSON and Y! advises that it
+			// may not be returning
+		{
+			// http://developer.yahoo.com/maps/rest/V1/geocode.html
+			"name":"geocode",
+			"serviceURL": "http://api.local.yahoo.com/MapsService/V1/geocode",
+			"parameters":[
+				{ "name":"street", "type":"STRING" },
+				{ "name":"city", "type":"STRING" },
+				{ "name":"zip", "type":"INTEGER" },
+				{ "name":"location", "type":"STRING" }
+			]
+		},
+		*/
+		//
+		// LOCAL SEARCH
+		//
+		{
+			// http://developer.yahoo.com/search/local/V3/localSearch.html
+			"name":"localSearch",
+			"serviceURL": "http://api.local.yahoo.com/LocalSearchService/V3/localSearch",
+			"parameters":[
+				{ "name":"street", "type":"STRING" },
+				{ "name":"city", "type":"STRING" },
+				{ "name":"zip", "type":"INTEGER" },
+				{ "name":"location", "type":"STRING" },
+				{ "name":"listing_id", "type":"STRING" },
+				{ "name":"sort", "type":"STRING" }, // "relevence", "title", "distance", or "rating"
+				{ "name":"start", "type":"INTEGER" },
+				{ "name":"radius", "type":"FLOAT" },
+				{ "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+				{ "name":"longitude", "type":"FLOAT" },
+				{ "name":"latitude", "type":"FLOAT" },
+				{ "name":"category", "type":"INTEGER" },
+				{ "name":"omit_category", "type":"INTEGER" },
+				{ "name":"minimum_rating", "type":"INTEGER" }
+			]
+		},
+		//
+		// WEB SEARCH
+		//
+		{
+			// http://developer.yahoo.com/search/web/V1/webSearch.html 
+			"name":"webSearch",
+			"serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/webSearch",
+			"parameters":[
+				{ "name":"query", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // defaults to "all"
+				{ "name":"region", "type":"STRING" }, // defaults to "us"
+				{ "name":"results", "type":"INTEGER" }, // defaults to 10
+				{ "name":"start", "type":"INTEGER" }, // defaults to 1
+				{ "name":"format", "type":"STRING" }, // defaults to "any", can be "html", "msword", "pdf", "ppt", "rst", "txt", or "xls"
+				{ "name":"adult_ok", "type":"INTEGER" }, // defaults to null
+				{ "name":"similar_ok", "type":"INTEGER" }, // defaults to null
+				{ "name":"language", "type":"STRING" }, // defaults to null
+				{ "name":"country", "type":"STRING" }, // defaults to null
+				{ "name":"site", "type":"STRING" }, // defaults to null
+				{ "name":"subscription", "type":"STRING" }, // defaults to null
+				{ "name":"license", "type":"STRING" } // defaults to "any"
+			]
+		},
+		{
+			// http://developer.yahoo.com/search/web/V1/spellingSuggestion.html
+			"name":"spellingSuggestion",
+			"serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/spellingSuggestion",
+			"parameters":[ { "name":"query", "type":"STRING" } ]
+		},
+		{
+			// http://developer.yahoo.com/search/web/V1/relatedSuggestion.html
+			"name":"spellingSuggestion",
+			"serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/relatedSuggestion",
+			"parameters":[
+				{ "name":"query", "type":"STRING" },
+				{ "name":"results", "type":"INTEGER" } // 1-50, defaults to 10
+			]
+		},
+		{
+			// http://developer.yahoo.com/search/content/V1/termExtraction.html
+			"name":"termExtraction",
+			"serviceURL": "http://search.yahooapis.com/ContentAnalysisService/V1/termExtraction",
+			"parameters":[
+				{ "name":"query", "type":"STRING" },
+				{ "name":"context", "type":"STRING" },
+				{ "name":"results", "type":"INTEGER" } // 1-50, defaults to 10
+			]
+		},
+		{
+			// http://developer.yahoo.com/search/web/V1/contextSearch.html
+			"name":"contextSearch",
+			"serviceURL": "http://search.yahooapis.com/WebSearchService/V1/contextSearch",
+			"parameters":[
+				{ "name":"query", "type":"STRING" },
+				{ "name":"context", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // defaults to "all"
+				{ "name":"results", "type":"INTEGER" }, // defaults to 10
+				{ "name":"start", "type":"INTEGER" }, // defaults to 1
+				{ "name":"format", "type":"STRING" }, // defaults to "any", can be "html", "msword", "pdf", "ppt", "rst", "txt", or "xls"
+				{ "name":"adult_ok", "type":"INTEGER" }, // defaults to null
+				{ "name":"similar_ok", "type":"INTEGER" }, // defaults to null
+				{ "name":"language", "type":"STRING" }, // defaults to null
+				{ "name":"country", "type":"STRING" }, // defaults to null
+				{ "name":"site", "type":"STRING" }, // defaults to null
+				{ "name":"license", "type":"STRING" } // defaults to "any", could be "cc_any", "cc_commercial", "cc_modifiable"
+			]
+		},
+		//
+		// IMAGE SEARCH
+		//
+		{
+			// http://developer.yahoo.com/search/image/V1/imageSearch.html
+			"name":"imageSearch",
+			"serviceURL": "http://api.search.yahoo.com/ImageSearchService/V1/imageSearch",
+			"parameters":[
+				{ "name":"query", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase"
+				{ "name":"results", "type":"INTEGER" }, // defaults to 10
+				{ "name":"start", "type":"INTEGER" }, // defaults to 1
+				{ "name":"format", "type":"STRING" }, // defaults to "any", can be "bmp", "gif", "jpeg", or "png"
+				{ "name":"adult_ok", "type":"INTEGER" }, // defaults to null
+				{ "name":"coloration", "type":"STRING" }, // "any", "color", or "bw"
+				{ "name":"site", "type":"STRING" } // defaults to null
+			]
+		},
+		//
+		// SITE EXPLORER
+		//
+		{
+			// http://developer.yahoo.com/search/siteexplorer/V1/inlinkData.html 
+			"name":"inlinkData",
+			"serviceURL": "http://api.search.yahoo.com/SiteExplorerService/V1/inlinkData",
+			"parameters":[
+				{ "name":"query", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase"
+				{ "name":"entire_site", "type":"INTEGER" }, // defaults to null
+				{ "name":"omit_inlinks", "type":"STRING" }, // "domain" or "subdomain", defaults to null
+				{ "name":"results", "type":"INTEGER" }, // defaults to 50
+				{ "name":"start", "type":"INTEGER" }, // defaults to 1
+				{ "name":"site", "type":"STRING" } // defaults to null
+			]
+		},
+		{
+			// http://developer.yahoo.com/search/siteexplorer/V1/pageData.html
+			"name":"pageData",
+			"serviceURL": "http://api.search.yahoo.com/SiteExplorerService/V1/pageData",
+			"parameters":[
+				{ "name":"query", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase"
+				{ "name":"domain_only", "type":"INTEGER" }, // defaults to null
+				{ "name":"results", "type":"INTEGER" }, // defaults to 50
+				{ "name":"start", "type":"INTEGER" }, // defaults to 1
+				{ "name":"site", "type":"STRING" } // defaults to null
+			]
+		},
+		//
+		// MUSIC SEARCH
+		//
+		{
+			// http://developer.yahoo.com/search/audio/V1/artistSearch.html
+			"name":"artistSearch",
+			"serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/artistSearch",
+			"parameters":[
+				{ "name":"artist", "type":"STRING" },
+				{ "name":"artistid", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // "all", "any", or "phrase"
+				{ "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+				{ "name":"start", "type":"INTEGER" } // defaults to 1
+			]
+		},
+		{
+			// http://developer.yahoo.com/search/audio/V1/albumSearch.html
+			"name":"albumSearch",
+			"serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/albumSearch",
+			"parameters":[
+				{ "name":"artist", "type":"STRING" },
+				{ "name":"artistid", "type":"STRING" },
+				{ "name":"album", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // "all", "any", or "phrase"
+				{ "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+				{ "name":"start", "type":"INTEGER" } // defaults to 1
+			]
+		},
+		{
+			// http://developer.yahoo.com/search/audio/V1/songSearch.html
+			"name":"songSearch",
+			"serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/songSearch",
+			"parameters":[
+				{ "name":"artist", "type":"STRING" },
+				{ "name":"artistid", "type":"STRING" },
+				{ "name":"album", "type":"STRING" },
+				{ "name":"albumid", "type":"STRING" },
+				{ "name":"song", "type":"STRING" },
+				{ "name":"songid", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // "all", "any", or "phrase"
+				{ "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+				{ "name":"start", "type":"INTEGER" } // defaults to 1
+			]
+		},
+		{
+			// http://developer.yahoo.com/search/audio/V1/songDownloadLocation.html
+			"name":"songDownloadLocation",
+			"serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/songDownloadLocation",
+			"parameters":[
+				{ "name":"songid", "type":"STRING" },
+				// "source" can contain:
+				//	audiolunchbox artistdirect buymusic dmusic
+				//	emusic epitonic garageband itunes yahoo
+				//	livedownloads mp34u msn musicmatch mapster passalong
+				//	rhapsody soundclick theweb
+				{ "name":"source", "type":"STRING" },
+				{ "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10
+				{ "name":"start", "type":"INTEGER" } // defaults to 1
+			]
+		},
+		//
+		// NEWS SEARCH
+		//
+		{
+			// http://developer.yahoo.com/search/news/V1/newsSearch.html
+			"name":"newsSearch",
+			"serviceURL": "http://api.search.yahoo.com/NewsSearchService/V1/newsSearch",
+			"parameters":[
+				{ "name":"query", "type":"STRING" },
+				{ "name":"type", "type":"STRING" }, // defaults to "all"
+				{ "name":"results", "type":"INTEGER" }, // defaults to 10
+				{ "name":"start", "type":"INTEGER" }, // defaults to 1
+				{ "name":"sort", "type":"STRING" }, // "rank" or "date"
+				{ "name":"language", "type":"STRING" }, // defaults to null
+				{ "name":"site", "type":"STRING" } // defaults to null
+			]
+		}
+		/*
+		{
+			// 
+			"name":"",
+			"serviceURL": "",
+			"parameters":[
+				{ "name":"street", "type":"STRING" },
+			]
+		}
+		*/
+	]
+}

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/selection/Selection.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/selection/Selection.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/selection/Selection.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/selection/Selection.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,44 @@
+
+dojo.provide("dojo.selection.Selection");dojo.require("dojo.lang.array");dojo.require("dojo.lang.func");dojo.require("dojo.lang.common");dojo.require("dojo.math");dojo.declare("dojo.selection.Selection", null,function(items, isCollection){this.items = [];this.selection = [];this._pivotItems = [];this.clearItems();if(items) {if(isCollection) {this.setItemsCollection(items);} else {this.setItems(items);}}
+},{items: null,selection: null,lastSelected: null,allowImplicit: true,length: 0,isGrowable: true,_pivotItems: null,_pivotItem: null,onSelect: function(item){},onDeselect: function(item){},onSelectChange: function(item, selected){},_find: function(item, inSelection) {if(inSelection) {return dojo.lang.find(this.selection, item);} else {return dojo.lang.find(this.items, item);}},isSelectable: function(item){return true;},setItems: function(){this.clearItems();this.addItems.call(this, arguments);},setItemsCollection: function(collection){this.items = collection;},addItems: function(){var args = dojo.lang.unnest(arguments);for(var i = 0; i < args.length; i++){this.items.push(args[i]);}},addItemsAt: function(item, before ){if(this.items.length == 0){return this.addItems(dojo.lang.toArray(arguments, 2));}
+if(!this.isItem(item)){item = this.items[item];}
+if(!item){ throw new Error("addItemsAt: item doesn't exist"); }
+var idx = this._find(item);if(idx > 0 && before){ idx--; }
+for(var i = 2; i < arguments.length; i++){if(!this.isItem(arguments[i])){this.items.splice(idx++, 0, arguments[i]);}}
+},removeItem: function(item){var idx = this._find(item);if(idx > -1) {this.items.splice(idx, 1);}
+idx = this._find(item, true);if(idx > -1) {this.selection.splice(idx, 1);}},clearItems: function(){this.items = [];this.deselectAll();},isItem: function(item){return this._find(item) > -1;},isSelected: function(item){return this._find(item, true) > -1;},selectFilter: function(item, selection, add, grow) {return true;},update: function(item, add, grow, noToggle) {if(!this.isItem(item)){ return false; }
+if(this.isGrowable && grow){if( (!this.isSelected(item)) &&
+this.selectFilter(item, this.selection, false, true) ){this.grow(item);this.lastSelected = item;}}else if(add){if(this.selectFilter(item, this.selection, true, false)){if(noToggle){if(this.select(item)){this.lastSelected = item;}}else if(this.toggleSelected(item)){this.lastSelected = item;}}
+}else{this.deselectAll();this.select(item);}
+this.length = this.selection.length;return true;},grow: function(toItem, fromItem){if(!this.isGrowable){ return; }
+if(arguments.length == 1){fromItem = this._pivotItem;if(!fromItem && this.allowImplicit){fromItem = this.items[0];}}
+if(!toItem || !fromItem){ return false; }
+var fromIdx = this._find(fromItem);var toDeselect = {};var lastIdx = -1;if(this.lastSelected){lastIdx = this._find(this.lastSelected);var step = fromIdx < lastIdx ? -1 : 1;var range = dojo.math.range(lastIdx, fromIdx, step);for(var i = 0; i < range.length; i++){toDeselect[range[i]] = true;}}
+var toIdx = this._find(toItem);var step = fromIdx < toIdx ? -1 : 1;var shrink = lastIdx >= 0 && step == 1 ? lastIdx < toIdx : lastIdx > toIdx;var range = dojo.math.range(toIdx, fromIdx, step);if(range.length){for(var i = range.length-1; i >= 0; i--){var item = this.items[range[i]];if(this.selectFilter(item, this.selection, false, true)){if(this.select(item, true) || shrink){this.lastSelected = item;}
+if(range[i] in toDeselect){delete toDeselect[range[i]];}}
+}}else{this.lastSelected = fromItem;}
+for(var i in toDeselect){if(this.items[i] == this.lastSelected){}
+this.deselect(this.items[i]);}
+this._updatePivot();},growUp: function(){if(!this.isGrowable){ return; }
+var idx = this._find(this.lastSelected) - 1;while(idx >= 0){if(this.selectFilter(this.items[idx], this.selection, false, true)){this.grow(this.items[idx]);break;}
+idx--;}},growDown: function(){if(!this.isGrowable){ return; }
+var idx = this._find(this.lastSelected);if(idx < 0 && this.allowImplicit){this.select(this.items[0]);idx = 0;}
+idx++;while(idx > 0 && idx < this.items.length){if(this.selectFilter(this.items[idx], this.selection, false, true)){this.grow(this.items[idx]);break;}
+idx++;}},toggleSelected: function(item, noPivot){if(this.isItem(item)){if(this.select(item, noPivot)){ return 1; }
+if(this.deselect(item)){ return -1; }}
+return 0;},select: function(item, noPivot){if(this.isItem(item) && !this.isSelected(item)
+&& this.isSelectable(item)){this.selection.push(item);this.lastSelected = item;this.onSelect(item);this.onSelectChange(item, true);if(!noPivot){this._addPivot(item);}
+this.length = this.selection.length;return true;}
+return false;},deselect: function(item){var idx = this._find(item, true);if(idx > -1){this.selection.splice(idx, 1);this.onDeselect(item);this.onSelectChange(item, false);if(item == this.lastSelected){this.lastSelected = null;}
+this._removePivot(item);this.length = this.selection.length;return true;}
+return false;},selectAll: function(){for(var i = 0; i < this.items.length; i++){this.select(this.items[i]);}},deselectAll: function(){while(this.selection && this.selection.length){this.deselect(this.selection[0]);}},selectNext: function(){var idx = this._find(this.lastSelected);while(idx > -1 && ++idx < this.items.length){if(this.isSelectable(this.items[idx])){this.deselectAll();this.select(this.items[idx]);return true;}}
+return false;},selectPrevious: function(){var idx = this._find(this.lastSelected);while(idx-- > 0){if(this.isSelectable(this.items[idx])){this.deselectAll();this.select(this.items[idx]);return true;}}
+return false;},selectFirst: function(){this.deselectAll();var idx = 0;while(this.items[idx] && !this.select(this.items[idx])){idx++;}
+return this.items[idx] ? true : false;},selectLast: function(){this.deselectAll();var idx = this.items.length-1;while(this.items[idx] && !this.select(this.items[idx])) {idx--;}
+return this.items[idx] ? true : false;},_addPivot: function(item, andClear){this._pivotItem = item;if(andClear){this._pivotItems = [item];}else{this._pivotItems.push(item);}},_removePivot: function(item){var i = dojo.lang.find(this._pivotItems, item);if(i > -1){this._pivotItems.splice(i, 1);this._pivotItem = this._pivotItems[this._pivotItems.length-1];}
+this._updatePivot();},_updatePivot: function(){if(this._pivotItems.length == 0){if(this.lastSelected){this._addPivot(this.lastSelected);}}
+},sorted: function(){return dojo.lang.toArray(this.selection).sort(
+dojo.lang.hitch(this, function(a, b){var A = this._find(a), B = this._find(b);if(A > B){return 1;}else if(A < B){return -1;}else{return 0;}})
+);},updateSelected: function(){for(var i = 0; i < this.selection.length; i++) {if(this._find(this.selection[i]) < 0) {var removed = this.selection.splice(i, 1);this._removePivot(removed[0]);}}
+this.length = this.selection.length;}}
+);
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,12 @@
+
+dojo.provide("dojo.storage");dojo.require("dojo.lang.*");dojo.require("dojo.event.*");dojo.storage = new function(){}
+dojo.declare("dojo.storage", null, {SUCCESS: "success",FAILED: "failed",PENDING: "pending",SIZE_NOT_AVAILABLE: "Size not available",SIZE_NO_LIMIT: "No size limit",namespace: "default",onHideSettingsUI: null,initialize: function(){dojo.unimplemented("dojo.storage.initialize");},isAvailable: function(){dojo.unimplemented("dojo.storage.isAvailable");},put: function( key,value,resultsHandler){dojo.unimplemented("dojo.storage.put");},get: function( key){dojo.unimplemented("dojo.storage.get");},hasKey: function( key){return (this.get(key) != null);},getKeys: function(){dojo.unimplemented("dojo.storage.getKeys");},clear: function(){dojo.unimplemented("dojo.storage.clear");},remove: function(key){dojo.unimplemented("dojo.storage.remove");},isPermanent: function(){dojo.unimplemented("dojo.storage.isPermanent");},getMaximumSize: function(){dojo.unimplemented("dojo.storage.getMaximumSize");},hasSettingsUI: function(){return false;},showSettingsUI: function(){dojo.unimplemented("dojo.st
 orage.showSettingsUI");},hideSettingsUI: function(){dojo.unimplemented("dojo.storage.hideSettingsUI");},getType: function(){dojo.unimplemented("dojo.storage.getType");},isValidKey: function( keyName){if((keyName == null)||(typeof keyName == "undefined")){return false;}
+return /^[0-9A-Za-z_]*$/.test(keyName);}});dojo.storage.manager = new function(){this.currentProvider = null;this.available = false;this._initialized = false;this._providers = [];this.namespace = "default";this.initialize = function(){this.autodetect();};this.register = function( name,  instance) {this._providers[this._providers.length] = instance;this._providers[name] = instance;};this.setProvider = function(storageClass){};this.autodetect = function(){if(this._initialized == true){return;}
+var providerToUse = null;for(var i = 0; i < this._providers.length; i++){providerToUse = this._providers[i];if(dojo.lang.isUndefined(djConfig["forceStorageProvider"]) == false
+&& providerToUse.getType() == djConfig["forceStorageProvider"]){providerToUse.isAvailable();break;}else if(dojo.lang.isUndefined(djConfig["forceStorageProvider"]) == true
+&& providerToUse.isAvailable()){break;}}
+if(providerToUse == null){this._initialized = true;this.available = false;this.currentProvider = null;dojo.raise("No storage provider found for this platform");}
+this.currentProvider = providerToUse;for(var i in providerToUse){dojo.storage[i] = providerToUse[i];}
+dojo.storage.manager = this;dojo.storage.initialize();this._initialized = true;this.available = true;};this.isAvailable = function(){return this.available;};this.isInitialized = function(){if(this.currentProvider.getType() == "dojo.storage.browser.FlashStorageProvider"
+&& dojo.flash.ready == false){return false;}else{return this._initialized;}};this.supportsProvider = function( storageClass){try{var provider = eval("new " + storageClass + "()");var results = provider.isAvailable();if(results == null || typeof results == "undefined")
+return false;return results;}catch (exception){return false;}};this.getProvider = function(){return this.currentProvider;};this.loaded = function(){};};
\ No newline at end of file

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

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage/Storage.as
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage/Storage.as?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage/Storage.as (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage/Storage.as Sun Jan 21 10:25:59 2007
@@ -0,0 +1,146 @@
+/*
+	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
+*/
+
+import DojoExternalInterface;
+
+class Storage {
+	public static var SUCCESS = "success";
+	public static var FAILED = "failed";
+	public static var PENDING = "pending";
+	
+	public var so;
+	
+	public function Storage(){
+		//getURL("javascript:dojo.debug('FLASH:Storage constructor')");
+		DojoExternalInterface.initialize();
+		DojoExternalInterface.addCallback("put", this, put);
+		DojoExternalInterface.addCallback("get", this, get);
+		DojoExternalInterface.addCallback("showSettings", this, showSettings);
+		DojoExternalInterface.addCallback("clear", this, clear);
+		DojoExternalInterface.addCallback("getKeys", this, getKeys);
+		DojoExternalInterface.addCallback("remove", this, remove);
+		DojoExternalInterface.loaded();
+		
+		// preload the System Settings finished button movie for offline
+		// access so it is in the cache
+		_root.createEmptyMovieClip("_settingsBackground", 1);
+		// getURL("javascript:alert('"+DojoExternalInterface.dojoPath+"');");
+		_root._settingsBackground.loadMovie(DojoExternalInterface.dojoPath + "storage_dialog.swf");
+	}
+
+	public function put(keyName, keyValue, namespace){
+		// Get the SharedObject for these values and save it
+		so = SharedObject.getLocal(namespace);
+		
+		// prepare a storage status handler
+		var self = this;
+		so.onStatus = function(infoObject:Object){
+			//getURL("javascript:dojo.debug('FLASH: onStatus, infoObject="+infoObject.code+"')");
+			
+			// delete the data value if the request was denied
+			if (infoObject.code == "SharedObject.Flush.Failed"){
+				delete self.so.data[keyName];
+			}
+			
+			var statusResults;
+			if(infoObject.code == "SharedObject.Flush.Failed"){
+				statusResults = Storage.FAILED;
+			}else if(infoObject.code == "SharedObject.Flush.Pending"){
+				statusResults = Storage.PENDING;
+			}else if(infoObject.code == "SharedObject.Flush.Success"){
+				statusResults = Storage.SUCCESS;
+			}
+			//getURL("javascript:dojo.debug('FLASH: onStatus, statusResults="+statusResults+"')");
+			
+			// give the status results to JavaScript
+			DojoExternalInterface.call("dojo.storage._onStatus", null, statusResults, 
+																 keyName);
+		}
+		
+		// save the key and value
+		so.data[keyName] = keyValue;
+		var flushResults = so.flush();
+		
+		// return results of this command to JavaScript
+		var statusResults;
+		if(flushResults == true){
+			statusResults = Storage.SUCCESS;
+		}else if(flushResults == "pending"){
+			statusResults = Storage.PENDING;
+		}else{
+			statusResults = Storage.FAILED;
+		}
+		
+		DojoExternalInterface.call("dojo.storage._onStatus", null, statusResults, 
+															 keyName);
+	}
+
+	public function get(keyName, namespace){
+		// Get the SharedObject for these values and save it
+		so = SharedObject.getLocal(namespace);
+		var results = so.data[keyName];
+		
+		return results;
+	}
+	
+	public function showSettings(){
+		// Show the configuration options for the Flash player, opened to the
+		// section for local storage controls (pane 1)
+		System.showSettings(1);
+		
+		// there is no way we can intercept when the Close button is pressed, allowing us
+		// to hide the Flash dialog. Instead, we need to load a movie in the
+		// background that we can show a close button on.
+		_root.createEmptyMovieClip("_settingsBackground", 1);
+		_root._settingsBackground.loadMovie(DojoExternalInterface.dojoPath + "storage_dialog.swf");
+	}
+	
+	public function clear(namespace){
+		so = SharedObject.getLocal(namespace);
+		so.clear();
+		so.flush();
+	}
+	
+	public function getKeys(namespace){
+		// Returns a list of the available keys in this namespace
+		
+		// get the storage object
+		so = SharedObject.getLocal(namespace);
+		
+		// get all of the keys
+		var results = new Array();
+		for(var i in so.data)
+			results.push(i);	
+		
+		// join the keys together in a comma seperated string
+		results = results.join(",");
+		
+		return results;
+	}
+	
+	public function remove(keyName, namespace){
+		// Removes a key
+
+		// get the storage object
+		so = SharedObject.getLocal(namespace);
+		
+		// delete this value
+		delete so.data[keyName];
+		
+		// save the changes
+		so.flush();
+	}
+
+	static function main(mc){
+		//getURL("javascript:dojo.debug('FLASH: storage loaded')");
+		_root.app = new Storage(); 
+	}
+}
+

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage/__package__.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage/__package__.js?view=auto&rev=498423
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage/__package__.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/storage/__package__.js Sun Jan 21 10:25:59 2007
@@ -0,0 +1,3 @@
+
+dojo.kwCompoundRequire({common: ["dojo.storage"],browser: ["dojo.storage.browser"]
+});dojo.provide("dojo.storage.*");
\ No newline at end of file

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