You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2007/05/09 04:56:45 UTC

svn commit: r536397 [8/36] - in /tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo: ./ nls/ src/ src/animation/ src/cal/ src/charting/ src/charting/svg/ src/charting/vml/ src/collections/ src/crypto/ src/data/ src/data/core/ src/data/old/ src/dat...

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/svg/Plotters.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/svg/Plotters.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/svg/Plotters.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/svg/Plotters.js Tue May  8 19:56:15 2007
@@ -0,0 +1,68 @@
+
+dojo.provide("dojo.charting.svg.Plotters");dojo.require("dojo.lang.common");if (dojo.render.svg.capable) {dojo.require("dojo.svg");dojo.mixin(dojo.charting.Plotters, {Bar:function (plotarea, plot, kwArgs, applyTo) {var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = plot.series.length;var data = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);data.push(tmp);}
+var space = 8;var nPoints = data[0].length;if (nPoints == 0) {return group;}
+var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints;var barWidth = width / n;var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);for (var i = 0; i < nPoints; i++) {var xStart = area.left + (width * i) + (space * i);for (var j = 0; j < n; j++) {var value = data[j][i].y;var yA = yOrigin;var x = xStart + (barWidth * j);var y = plot.axisY.getCoord(value, plotarea, plot);var h = Math.abs(yA - y);if (value < plot.axisX.origin) {yA = y;y = yOrigin;}
+var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");bar.setAttribute("fill", data[j][i].series.color);bar.setAttribute("stroke-width", "0");bar.setAttribute("x", x);bar.setAttribute("y", y);bar.setAttribute("width", barWidth);bar.setAttribute("height", h);bar.setAttribute("fill-opacity", "0.6");if (applyTo) {applyTo(bar, data[j][i].src);}
+group.appendChild(bar);}}
+return group;}, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) {var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = plot.series.length;var data = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);data.push(tmp);}
+var space = 6;var nPoints = data[0].length;if (nPoints == 0) {return group;}
+var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;var barH = h / n;var xOrigin = plot.axisX.getCoord(0, plotarea, plot);for (var i = 0; i < nPoints; i++) {var yStart = area.top + (h * i) + (space * i);for (var j = 0; j < n; j++) {var value = data[j][i].y;var y = yStart + (barH * j);var xA = xOrigin;var x = plot.axisX.getCoord(value, plotarea, plot);var w = Math.abs(x - xA);if (value > 0) {x = xOrigin;}
+var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");bar.setAttribute("fill", data[j][i].series.color);bar.setAttribute("stroke-width", "0");bar.setAttribute("x", xA);bar.setAttribute("y", y);bar.setAttribute("width", w);bar.setAttribute("height", barH);bar.setAttribute("fill-opacity", "0.6");if (applyTo) {applyTo(bar, data[j][i].src);}
+group.appendChild(bar);}}
+return group;}, Gantt:function (plotarea, plot, kwArgs, applyTo) {var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = plot.series.length;var data = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);data.push(tmp);}
+var space = 2;var nPoints = data[0].length;if (nPoints == 0) {return group;}
+var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;var barH = h / n;for (var i = 0; i < nPoints; i++) {var yStart = area.top + (h * i) + (space * i);for (var j = 0; j < n; j++) {var high = data[j][i].high;var low = data[j][i].low;if (low > high) {var t = high;high = low;low = t;}
+var x = plot.axisX.getCoord(low, plotarea, plot);var w = plot.axisX.getCoord(high, plotarea, plot) - x;var y = yStart + (barH * j);var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");bar.setAttribute("fill", data[j][i].series.color);bar.setAttribute("stroke-width", "0");bar.setAttribute("x", x);bar.setAttribute("y", y);bar.setAttribute("width", w);bar.setAttribute("height", barH);bar.setAttribute("fill-opacity", "0.6");if (applyTo) {applyTo(bar, data[j][i].src);}
+group.appendChild(bar);}}
+return group;}, StackedArea:function (plotarea, plot, kwArgs, applyTo) {var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = plot.series.length;var data = [];var totals = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);for (var j = 0; j < tmp.length; j++) {if (i == 0) {totals.push(tmp[j].y);} else {totals[j] += tmp[j].y;}
+tmp[j].y = totals[j];}
+data.push(tmp);}
+for (var i = n - 1; i >= 0; i--) {var path = document.createElementNS(dojo.svg.xmlns.svg, "path");path.setAttribute("fill", data[i][0].series.color);path.setAttribute("fill-opacity", "0.4");path.setAttribute("stroke", data[i][0].series.color);path.setAttribute("stroke-width", "1");path.setAttribute("stroke-opacity", "0.85");var cmd = [];var r = 3;for (var j = 0; j < data[i].length; j++) {var values = data[i];var x = plot.axisX.getCoord(values[j].x, plotarea, plot);var y = plot.axisY.getCoord(values[j].y, plotarea, plot);if (j == 0) {cmd.push("M");} else {cmd.push("L");}
+cmd.push(x + "," + y);var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");c.setAttribute("cx", x);c.setAttribute("cy", y);c.setAttribute("r", "3");c.setAttribute("fill", values[j].series.color);c.setAttribute("fill-opacity", "0.6");c.setAttribute("stroke-width", "1");c.setAttribute("stroke-opacity", "0.85");group.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+if (i == 0) {cmd.push("L");cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));cmd.push("L");cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));cmd.push("Z");} else {var values = data[i - 1];cmd.push("L");cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));for (var j = values.length - 2; j >= 0; j--) {var x = plot.axisX.getCoord(values[j].x, plotarea, plot);var y = plot.axisY.getCoord(values[j].y, plotarea, plot);cmd.push("L");cmd.push(x + "," + y);}}
+path.setAttribute("d", cmd.join(" ") + " Z");group.appendChild(path);}
+return group;}, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) {var tension = 3;var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = plot.series.length;var data = [];var totals = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);for (var j = 0; j < tmp.length; j++) {if (i == 0) {totals.push(tmp[j].y);} else {totals[j] += tmp[j].y;}
+tmp[j].y = totals[j];}
+data.push(tmp);}
+for (var i = n - 1; i >= 0; i--) {var path = document.createElementNS(dojo.svg.xmlns.svg, "path");path.setAttribute("fill", data[i][0].series.color);path.setAttribute("fill-opacity", "0.4");path.setAttribute("stroke", data[i][0].series.color);path.setAttribute("stroke-width", "1");path.setAttribute("stroke-opacity", "0.85");var cmd = [];var r = 3;for (var j = 0; j < data[i].length; j++) {var values = data[i];var x = plot.axisX.getCoord(values[j].x, plotarea, plot);var y = plot.axisY.getCoord(values[j].y, plotarea, plot);var dx = area.left + 1;var dy = area.bottom;if (j > 0) {dx = x - plot.axisX.getCoord(values[j - 1].x, plotarea, plot);dy = plot.axisY.getCoord(values[j - 1].y, plotarea, plot);}
+if (j == 0) {cmd.push("M");} else {cmd.push("C");var cx = x - (tension - 1) * (dx / tension);cmd.push(cx + "," + dy);cx = x - (dx / tension);cmd.push(cx + "," + y);}
+cmd.push(x + "," + y);var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");c.setAttribute("cx", x);c.setAttribute("cy", y);c.setAttribute("r", "3");c.setAttribute("fill", values[j].series.color);c.setAttribute("fill-opacity", "0.6");c.setAttribute("stroke-width", "1");c.setAttribute("stroke-opacity", "0.85");group.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+if (i == 0) {cmd.push("L");cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));cmd.push("L");cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));cmd.push("Z");} else {var values = data[i - 1];cmd.push("L");cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));for (var j = values.length - 2; j >= 0; j--) {var x = plot.axisX.getCoord(values[j].x, plotarea, plot);var y = plot.axisY.getCoord(values[j].y, plotarea, plot);var dx = x - plot.axisX.getCoord(values[j + 1].x, plotarea, plot);var dy = plot.axisY.getCoord(values[j + 1].y, plotarea, plot);cmd.push("C");var cx = x - (tension - 1) * (dx / tension);cmd.push(cx + "," + dy);cx = x - (dx / tension);cmd.push(cx + "," + y);cmd.push(x + "," + y);}}
+path.setAttribute("d", cmd.join(" ") + " Z");group.appendChild(path);}
+return group;}, DataBar:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = data.length;var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower);var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);for (var i = 0; i < n; i++) {var value = data[i].y;var yA = yOrigin;var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);var y = plot.axisY.getCoord(value, plotarea, plot);var h = Math.abs(yA - y);if (value < plot.axisX.origin) {yA = y;y = yOrigin;}
+var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");bar.setAttribute("fill", data[i].series.color);bar.setAttribute("stroke-width", "0");bar.setAttribute("x", x);bar.setAttribute("y", y);bar.setAttribute("width", w);bar.setAttribute("height", h);bar.setAttribute("fill-opacity", "0.6");if (applyTo) {applyTo(bar, data[i].src);}
+group.appendChild(bar);}
+return group;}, Line:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var line = document.createElementNS(dojo.svg.xmlns.svg, "g");if (data.length == 0) {return line;}
+var path = document.createElementNS(dojo.svg.xmlns.svg, "path");line.appendChild(path);path.setAttribute("fill", "none");path.setAttribute("stroke", data[0].series.color);path.setAttribute("stroke-width", "2");path.setAttribute("stroke-opacity", "0.85");if (data[0].series.label != null) {path.setAttribute("title", data[0].series.label);}
+var cmd = [];for (var i = 0; i < data.length; i++) {var x = plot.axisX.getCoord(data[i].x, plotarea, plot);var y = plot.axisY.getCoord(data[i].y, plotarea, plot);if (i == 0) {cmd.push("M");} else {cmd.push("L");}
+cmd.push(x + "," + y);var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");c.setAttribute("cx", x);c.setAttribute("cy", y);c.setAttribute("r", "3");c.setAttribute("fill", data[i].series.color);c.setAttribute("fill-opacity", "0.6");c.setAttribute("stroke-width", "1");c.setAttribute("stroke-opacity", "0.85");line.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+path.setAttribute("d", cmd.join(" "));return line;}, CurvedLine:function (data, plotarea, plot, applyTo) {var tension = 3;var area = plotarea.getArea();var line = document.createElementNS(dojo.svg.xmlns.svg, "g");if (data.length == 0) {return line;}
+var path = document.createElementNS(dojo.svg.xmlns.svg, "path");line.appendChild(path);path.setAttribute("fill", "none");path.setAttribute("stroke", data[0].series.color);path.setAttribute("stroke-width", "2");path.setAttribute("stroke-opacity", "0.85");if (data[0].series.label != null) {path.setAttribute("title", data[0].series.label);}
+var cmd = [];for (var i = 0; i < data.length; i++) {var x = plot.axisX.getCoord(data[i].x, plotarea, plot);var y = plot.axisY.getCoord(data[i].y, plotarea, plot);var dx = area.left + 1;var dy = area.bottom;if (i > 0) {dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot);dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot);}
+if (i == 0) {cmd.push("M");} else {cmd.push("C");var cx = x - (tension - 1) * (dx / tension);cmd.push(cx + "," + dy);cx = x - (dx / tension);cmd.push(cx + "," + y);}
+cmd.push(x + "," + y);var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");c.setAttribute("cx", x);c.setAttribute("cy", y);c.setAttribute("r", "3");c.setAttribute("fill", data[i].series.color);c.setAttribute("fill-opacity", "0.6");c.setAttribute("stroke-width", "1");c.setAttribute("stroke-opacity", "0.85");line.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+path.setAttribute("d", cmd.join(" "));return line;}, Area:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var line = document.createElementNS(dojo.svg.xmlns.svg, "g");if (data.length == 0) {return line;}
+var path = document.createElementNS(dojo.svg.xmlns.svg, "path");line.appendChild(path);path.setAttribute("fill", data[0].series.color);path.setAttribute("fill-opacity", "0.4");path.setAttribute("stroke", data[0].series.color);path.setAttribute("stroke-width", "1");path.setAttribute("stroke-opacity", "0.85");if (data[0].series.label != null) {path.setAttribute("title", data[0].series.label);}
+var cmd = [];for (var i = 0; i < data.length; i++) {var x = plot.axisX.getCoord(data[i].x, plotarea, plot);var y = plot.axisY.getCoord(data[i].y, plotarea, plot);if (i == 0) {cmd.push("M");} else {cmd.push("L");}
+cmd.push(x + "," + y);var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");c.setAttribute("cx", x);c.setAttribute("cy", y);c.setAttribute("r", "3");c.setAttribute("fill", data[i].series.color);c.setAttribute("fill-opacity", "0.6");c.setAttribute("stroke-width", "1");c.setAttribute("stroke-opacity", "0.85");line.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+cmd.push("L");cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));cmd.push("L");cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));cmd.push("Z");path.setAttribute("d", cmd.join(" "));return line;}, CurvedArea:function (data, plotarea, plot, applyTo) {var tension = 3;var area = plotarea.getArea();var line = document.createElementNS(dojo.svg.xmlns.svg, "g");if (data.length == 0) {return line;}
+var path = document.createElementNS(dojo.svg.xmlns.svg, "path");line.appendChild(path);path.setAttribute("fill", data[0].series.color);path.setAttribute("fill-opacity", "0.4");path.setAttribute("stroke", data[0].series.color);path.setAttribute("stroke-width", "1");path.setAttribute("stroke-opacity", "0.85");if (data[0].series.label != null) {path.setAttribute("title", data[0].series.label);}
+var cmd = [];for (var i = 0; i < data.length; i++) {var x = plot.axisX.getCoord(data[i].x, plotarea, plot);var y = plot.axisY.getCoord(data[i].y, plotarea, plot);var dx = area.left + 1;var dy = area.bottom;if (i > 0) {dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot);dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot);}
+if (i == 0) {cmd.push("M");} else {cmd.push("C");var cx = x - (tension - 1) * (dx / tension);cmd.push(cx + "," + dy);cx = x - (dx / tension);cmd.push(cx + "," + y);}
+cmd.push(x + "," + y);var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");c.setAttribute("cx", x);c.setAttribute("cy", y);c.setAttribute("r", "3");c.setAttribute("fill", data[i].series.color);c.setAttribute("fill-opacity", "0.6");c.setAttribute("stroke-width", "1");c.setAttribute("stroke-opacity", "0.85");line.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+cmd.push("L");cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));cmd.push("L");cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));cmd.push("Z");path.setAttribute("d", cmd.join(" "));return line;}, HighLow:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = data.length;var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;var w = part * 2;for (var i = 0; i < n; i++) {var high = data[i].high;var low = data[i].low;if (low > high) {var t = low;low = high;high = t;}
+var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);var y = plot.axisY.getCoord(high, plotarea, plot);var h = plot.axisY.getCoord(low, plotarea, plot) - y;var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");bar.setAttribute("fill", data[i].series.color);bar.setAttribute("stroke-width", "0");bar.setAttribute("x", x);bar.setAttribute("y", y);bar.setAttribute("width", w);bar.setAttribute("height", h);bar.setAttribute("fill-opacity", "0.6");if (applyTo) {applyTo(bar, data[i].src);}
+group.appendChild(bar);}
+return group;}, HighLowClose:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = data.length;var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;var w = part * 2;for (var i = 0; i < n; i++) {var high = data[i].high;var low = data[i].low;if (low > high) {var t = low;low = high;high = t;}
+var c = data[i].close;var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);var y = plot.axisY.getCoord(high, plotarea, plot);var h = plot.axisY.getCoord(low, plotarea, plot) - y;var close = plot.axisY.getCoord(c, plotarea, plot);var g = document.createElementNS(dojo.svg.xmlns.svg, "g");var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");bar.setAttribute("fill", data[i].series.color);bar.setAttribute("stroke-width", "0");bar.setAttribute("x", x);bar.setAttribute("y", y);bar.setAttribute("width", w);bar.setAttribute("height", h);bar.setAttribute("fill-opacity", "0.6");g.appendChild(bar);var line = document.createElementNS(dojo.svg.xmlns.svg, "line");line.setAttribute("x1", x);line.setAttribute("x2", x + w + (part * 2));line.setAttribute("y1", close);line.setAttribute("y2", close);line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");g.appendChild(line);if (applyTo) {applyTo(g, data[i].src);}
+group.appendChild(g);}
+return group;}, HighLowOpenClose:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var n = data.length;var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;var w = part * 2;for (var i = 0; i < n; i++) {var high = data[i].high;var low = data[i].low;if (low > high) {var t = low;low = high;high = t;}
+var o = data[i].open;var c = data[i].close;var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);var y = plot.axisY.getCoord(high, plotarea, plot);var h = plot.axisY.getCoord(low, plotarea, plot) - y;var open = plot.axisY.getCoord(o, plotarea, plot);var close = plot.axisY.getCoord(c, plotarea, plot);var g = document.createElementNS(dojo.svg.xmlns.svg, "g");var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");bar.setAttribute("fill", data[i].series.color);bar.setAttribute("stroke-width", "0");bar.setAttribute("x", x);bar.setAttribute("y", y);bar.setAttribute("width", w);bar.setAttribute("height", h);bar.setAttribute("fill-opacity", "0.6");g.appendChild(bar);var line = document.createElementNS(dojo.svg.xmlns.svg, "line");line.setAttribute("x1", x - (part * 2));line.setAttribute("x2", x + w);line.setAttribute("y1", open);line.setAttribute("y2", open);line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");g.app
 endChild(line);var line = document.createElementNS(dojo.svg.xmlns.svg, "line");line.setAttribute("x1", x);line.setAttribute("x2", x + w + (part * 2));line.setAttribute("y1", close);line.setAttribute("y2", close);line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");g.appendChild(line);if (applyTo) {applyTo(g, data[i].src);}
+group.appendChild(g);}
+return group;}, Scatter:function (data, plotarea, plot, applyTo) {var r = 7;var group = document.createElementNS(dojo.svg.xmlns.svg, "g");for (var i = 0; i < data.length; i++) {var x = plot.axisX.getCoord(data[i].x, plotarea, plot);var y = plot.axisY.getCoord(data[i].y, plotarea, plot);var point = document.createElementNS(dojo.svg.xmlns.svg, "path");point.setAttribute("fill", data[i].series.color);point.setAttribute("stroke-width", "0");point.setAttribute("d", "M " + x + "," + (y - r) + " " + "Q " + x + "," + y + " " + (x + r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y + r) + " " + "Q " + x + "," + y + " " + (x - r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y - r) + " " + "Z");if (applyTo) {applyTo(point, data[i].src);}
+group.appendChild(point);}
+return group;}, Bubble:function (data, plotarea, plot, applyTo) {var group = document.createElementNS(dojo.svg.xmlns.svg, "g");var sizeFactor = 1;for (var i = 0; i < data.length; i++) {var x = plot.axisX.getCoord(data[i].x, plotarea, plot);var y = plot.axisY.getCoord(data[i].y, plotarea, plot);if (i == 0) {var raw = data[i].size;var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y;sizeFactor = dy / raw;}
+if (sizeFactor < 1) {sizeFactor = 1;}
+var point = document.createElementNS(dojo.svg.xmlns.svg, "circle");point.setAttribute("fill", data[i].series.color);point.setAttribute("fill-opacity", "0.8");point.setAttribute("stroke", data[i].series.color);point.setAttribute("stroke-width", "1");point.setAttribute("cx", x);point.setAttribute("cy", y);point.setAttribute("r", (data[i].size / 2) * sizeFactor);if (applyTo) {applyTo(point, data[i].src);}
+group.appendChild(point);}
+return group;}});dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;}

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/svg/Plotters.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/svg/Plotters.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Axis.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Axis.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Axis.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Axis.js Tue May  8 19:56:15 2007
@@ -0,0 +1,27 @@
+
+dojo.provide("dojo.charting.vml.Axis");dojo.require("dojo.lang.common");if (dojo.render.vml.capable) {dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) {if (this.nodes.lines) {while (this.nodes.lines.childNodes.length > 0) {this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]);}
+if (this.nodes.lines.parentNode) {this.nodes.lines.parentNode.removeChild(this.nodes.lines);this.nodes.lines = null;}}
+var area = plotArea.getArea();var g = this.nodes.lines = document.createElement("div");g.setAttribute("id", this.getId() + "-lines");for (var i = 0; i < this._labels.length; i++) {if (this._labels[i].value == this.origin) {continue;}
+var v = this.getCoord(this._labels[i].value, plotArea, plot);var l = document.createElement("v:line");var str = document.createElement("v:stroke");str.dashstyle = "dot";l.appendChild(str);l.setAttribute("strokecolor", "#666");l.setAttribute("strokeweight", "1px");var s = l.style;s.position = "absolute";s.top = "0px";s.left = "0px";s.antialias = "false";if (plane == "x") {l.setAttribute("from", v + "px," + area.top + "px");l.setAttribute("to", v + "px," + area.bottom + "px");} else {if (plane == "y") {l.setAttribute("from", area.left + "px," + v + "px");l.setAttribute("to", area.right + "px," + v + "px");}}
+g.appendChild(l);}
+return g;}, renderTicks:function (plotArea, plot, plane, coord) {if (this.nodes.ticks) {while (this.nodes.ticks.childNodes.length > 0) {this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]);}
+if (this.nodes.ticks.parentNode) {this.nodes.ticks.parentNode.removeChild(this.nodes.ticks);this.nodes.ticks = null;}}
+var g = this.nodes.ticks = document.createElement("div");g.setAttribute("id", this.getId() + "-ticks");for (var i = 0; i < this._labels.length; i++) {var v = this.getCoord(this._labels[i].value, plotArea, plot);var l = document.createElement("v:line");l.setAttribute("strokecolor", "#000");l.setAttribute("strokeweight", "1px");var s = l.style;s.position = "absolute";s.top = "0px";s.left = "0px";s.antialias = "false";if (plane == "x") {l.setAttribute("from", v + "px," + coord + "px");l.setAttribute("to", v + "px," + (coord + 3) + "px");} else {if (plane == "y") {l.setAttribute("from", (coord - 2) + "px," + v + "px");l.setAttribute("to", (coord + 2) + "px," + v + "px");}}
+g.appendChild(l);}
+return g;}, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) {function createLabel(label, x, y, textSize, anchor) {var text = document.createElement("div");var s = text.style;text.innerHTML = label;s.fontSize = textSize + "px";s.fontFamily = "sans-serif";s.position = "absolute";s.top = y + "px";if (anchor == "center") {s.left = x + "px";s.textAlign = "center";} else {if (anchor == "left") {s.left = x + "px";s.textAlign = "left";} else {if (anchor == "right") {s.right = x + "px";s.textAlign = "right";}}
+}
+return text;}
+if (this.nodes.labels) {while (this.nodes.labels.childNodes.length > 0) {this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]);}
+if (this.nodes.labels.parentNode) {this.nodes.labels.parentNode.removeChild(this.nodes.labels);this.nodes.labels = null;}}
+var g = this.nodes.labels = document.createElement("div");g.setAttribute("id", this.getId() + "-labels");for (var i = 0; i < this._labels.length; i++) {var v = this.getCoord(this._labels[i].value, plotArea, plot);if (plane == "x") {var node = createLabel(this._labels[i].label, v, coord, textSize, anchor);document.body.appendChild(node);node.style.left = v - (node.offsetWidth / 2) + "px";g.appendChild(node);} else {if (plane == "y") {var node = createLabel(this._labels[i].label, coord, v, textSize, anchor);document.body.appendChild(node);node.style.top = v - (node.offsetHeight / 2) + "px";g.appendChild(node);}}
+}
+return g;}, render:function (plotArea, plot, drawAgainst, plane) {if (!this._rerender && this.nodes.main) {return this.nodes.main;}
+this._rerender = false;var area = plotArea.getArea();var stroke = 1;var style = "stroke:#000;stroke-width:" + stroke + "px;";var textSize = 10;var coord = drawAgainst.getCoord(this.origin, plotArea, plot);var g = this.nodes.main = document.createElement("div");g.setAttribute("id", this.getId());var line = this.nodes.axis = document.createElement("v:line");line.setAttribute("strokecolor", "#000");line.setAttribute("strokeweight", stroke + "px");var s = line.style;s.position = "absolute";s.top = "0px";s.left = "0px";s.antialias = "false";if (plane == "x") {line.setAttribute("from", area.left + "px," + coord + "px");line.setAttribute("to", area.right + "px," + coord + "px");var y = coord + Math.floor(textSize / 2);if (this.showLines) {g.appendChild(this.renderLines(plotArea, plot, plane, y));}
+if (this.showTicks) {g.appendChild(this.renderTicks(plotArea, plot, plane, coord));}
+if (this.showLabels) {g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "center"));}
+if (this.showLabel && this.label) {var x = plotArea.size.width / 2;var y = coord + Math.round(textSize * 1.5);var text = document.createElement("div");var s = text.style;text.innerHTML = this.label;s.fontSize = (textSize + 2) + "px";s.fontFamily = "sans-serif";s.fontWeight = "bold";s.position = "absolute";s.top = y + "px";s.left = x + "px";s.textAlign = "center";document.body.appendChild(text);text.style.left = x - (text.offsetWidth / 2) + "px";g.appendChild(text);}} else {line.setAttribute("from", coord + "px," + area.top + "px");line.setAttribute("to", coord + "px," + area.bottom + "px");var isMax = this.origin == drawAgainst.range.upper;var x = coord + 4;var anchor = "left";if (!isMax) {x = area.right - coord + textSize + 4;anchor = "right";if (coord == area.left) {x += (textSize * 2) - (textSize / 2);}}
+if (this.showLines) {g.appendChild(this.renderLines(plotArea, plot, plane, x));}
+if (this.showTicks) {g.appendChild(this.renderTicks(plotArea, plot, plane, coord));}
+if (this.showLabels) {g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor));}
+if (this.showLabel && this.label) {x += (textSize * 2) - 2;var y = plotArea.size.height / 2;var text = document.createElement("div");var s = text.style;text.innerHTML = this.label;s.fontSize = (textSize + 2) + "px";s.fontFamily = "sans-serif";s.fontWeight = "bold";s.position = "absolute";s.height = plotArea.size.height + "px";s.writingMode = "tb-rl";s.textAlign = "center";s[anchor] = x + "px";document.body.appendChild(text);s.top = y - (text.offsetHeight / 2) + "px";g.appendChild(text);}}
+g.appendChild(line);return g;}});}

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Axis.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Axis.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/PlotArea.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/PlotArea.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/PlotArea.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/PlotArea.js Tue May  8 19:56:15 2007
@@ -0,0 +1,4 @@
+
+dojo.provide("dojo.charting.vml.PlotArea");dojo.require("dojo.lang.common");if (dojo.render.vml.capable) {dojo.extend(dojo.charting.PlotArea, {resize:function () {var a = this.getArea();this.nodes.area.style.width = this.size.width + "px";this.nodes.area.style.height = this.size.height + "px";this.nodes.background.style.width = this.size.width + "px";this.nodes.background.style.height = this.size.height + "px";this.nodes.plots.width = this.size.width + "px";this.nodes.plots.height = this.size.height + "px";this.nodes.plots.style.clip = "rect(" + a.top + " " + a.right + " " + a.bottom + " " + a.left + ")";if (this.nodes.axes) {this.nodes.area.removeChild(this.nodes.axes);}
+var axes = this.nodes.axes = document.createElement("div");axes.id = this.getId() + "-axes";this.nodes.area.appendChild(axes);var ax = this.getAxes();for (var p in ax) {var obj = ax[p];axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane));}}, initializePlot:function (plot) {plot.destroy();plot.dataNode = document.createElement("div");plot.dataNode.id = plot.getId();return plot.dataNode;}, initialize:function () {this.destroy();var main = this.nodes.main = document.createElement("div");var area = this.nodes.area = document.createElement("div");area.id = this.getId();area.style.position = "absolute";main.appendChild(area);var bg = this.nodes.background = document.createElement("div");bg.id = this.getId() + "-background";bg.style.position = "absolute";bg.style.top = "0px";bg.style.left = "0px";bg.style.backgroundColor = "#fff";area.appendChild(bg);var a = this.getArea();var plots = this.nodes.plots = document.createElement("div");plots.id = this.getI
 d() + "-plots";plots.style.position = "absolute";plots.style.top = "0px";plots.style.left = "0px";area.appendChild(plots);for (var i = 0; i < this.plots.length; i++) {plots.appendChild(this.initializePlot(this.plots[i]));}
+this.resize();return main;}});}

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/PlotArea.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/PlotArea.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Plotters.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Plotters.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Plotters.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Plotters.js Tue May  8 19:56:15 2007
@@ -0,0 +1,60 @@
+
+dojo.provide("dojo.charting.vml.Plotters");dojo.require("dojo.lang.common");if (dojo.render.vml.capable) {dojo.mixin(dojo.charting.Plotters, {_group:function (plotarea) {var group = document.createElement("div");group.style.position = "absolute";group.style.top = "0px";group.style.left = "0px";group.style.width = plotarea.size.width + "px";group.style.height = plotarea.size.height + "px";return group;}, Bar:function (plotarea, plot, kwArgs, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = plot.series.length;var data = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);data.push(tmp);}
+var space = 8;var nPoints = data[0].length;if (nPoints == 0) {return group;}
+var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints;var barWidth = Math.round(width / n);var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);for (var i = 0; i < nPoints; i++) {var xStart = area.left + (width * i) + (space * i);for (var j = 0; j < n; j++) {var value = data[j][i].y;var yA = yOrigin;var x = xStart + (barWidth * j);var y = plot.axisY.getCoord(value, plotarea, plot);var h = Math.abs(yA - y);if (value < plot.axisX.origin) {yA = y;y = yOrigin;}
+var bar = document.createElement("v:rect");bar.style.position = "absolute";bar.style.top = y + 1 + "px";bar.style.left = x + "px";bar.style.width = barWidth + "px";bar.style.height = h + "px";bar.setAttribute("fillColor", data[j][i].series.color);bar.setAttribute("stroked", "false");bar.style.antialias = "false";var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");bar.appendChild(fill);if (applyTo) {applyTo(bar, data[j][i].src);}
+group.appendChild(bar);}}
+return group;}, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = plot.series.length;var data = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);data.push(tmp);}
+var space = 6;var nPoints = data[0].length;if (nPoints == 0) {return group;}
+var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;var barH = h / n;var xOrigin = plot.axisX.getCoord(0, plotarea, plot);for (var i = 0; i < nPoints; i++) {var yStart = area.top + (h * i) + (space * i);for (var j = 0; j < n; j++) {var value = data[j][i].y;var y = yStart + (barH * j);var xA = xOrigin;var x = plot.axisX.getCoord(value, plotarea, plot);var w = Math.abs(x - xA);if (value > 0) {x = xOrigin;}
+var bar = document.createElement("v:rect");bar.style.position = "absolute";bar.style.top = y + 1 + "px";bar.style.left = xA + "px";bar.style.width = w + "px";bar.style.height = barH + "px";bar.setAttribute("fillColor", data[j][i].series.color);bar.setAttribute("stroked", "false");bar.style.antialias = "false";var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");bar.appendChild(fill);if (applyTo) {applyTo(bar, data[j][i].src);}
+group.appendChild(bar);}}
+var space = 4;var n = plot.series.length;var h = ((area.bottom - area.top) - (space * (n - 1))) / n;var xOrigin = plot.axisX.getCoord(0, plotarea, plot);for (var i = 0; i < n; i++) {var series = plot.series[i];var data = series.data.evaluate(kwArgs);var y = area.top + (h * i) + (space * i);var value = data[data.length - 1].y;var xA = xOrigin;var x = plot.axisX.getCoord(value, plotarea, plot);var w = Math.abs(xA - x);if (value > 0) {xA = x;x = xOrigin;}}
+return group;}, Gantt:function (plotarea, plot, kwArgs, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = plot.series.length;var data = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);data.push(tmp);}
+var space = 2;var nPoints = data[0].length;if (nPoints == 0) {return group;}
+var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;var barH = h / n;for (var i = 0; i < nPoints; i++) {var yStart = area.top + (h * i) + (space * i);for (var j = 0; j < n; j++) {var high = data[j][i].high;var low = data[j][i].low;if (low > high) {var t = high;high = low;low = t;}
+var x = plot.axisX.getCoord(low, plotarea, plot);var w = plot.axisX.getCoord(high, plotarea, plot) - x;var y = yStart + (barH * j);var bar = document.createElement("v:rect");bar.style.position = "absolute";bar.style.top = y + 1 + "px";bar.style.left = x + "px";bar.style.width = w + "px";bar.style.height = barH + "px";bar.setAttribute("fillColor", data[j][i].series.color);bar.setAttribute("stroked", "false");bar.style.antialias = "false";var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");bar.appendChild(fill);if (applyTo) {applyTo(bar, data[j][i].src);}
+group.appendChild(bar);}}
+return group;}, StackedArea:function (plotarea, plot, kwArgs, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = plot.series.length;var data = [];var totals = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);for (var j = 0; j < tmp.length; j++) {if (i == 0) {totals.push(tmp[j].y);} else {totals[j] += tmp[j].y;}
+tmp[j].y = totals[j];}
+data.push(tmp);}
+for (var i = n - 1; i >= 0; i--) {var path = document.createElement("v:shape");path.setAttribute("strokeweight", "1px");path.setAttribute("strokecolor", data[i][0].series.color);path.setAttribute("fillcolor", data[i][0].series.color);path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));path.style.position = "absolute";path.style.top = "0px";path.style.left = "0px";path.style.width = area.right - area.left + "px";path.style.height = area.bottom - area.top + "px";var stroke = document.createElement("v:stroke");stroke.setAttribute("opacity", "0.8");path.appendChild(stroke);var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.4");path.appendChild(fill);var cmd = [];var r = 3;for (var j = 0; j < data[i].length; j++) {var values = data[i];var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));if (j == 0) {cmd.push("m");cmd.push(x + "," + y)
 ;} else {cmd.push("l");cmd.push(x + "," + y);}
+var c = document.createElement("v:oval");c.setAttribute("strokeweight", "1px");c.setAttribute("strokecolor", values[j].series.color);c.setAttribute("fillcolor", values[j].series.color);var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.8");c.appendChild(str);str = document.createElement("v:fill");str.setAttribute("opacity", "0.6");c.appendChild(str);var s = c.style;s.position = "absolute";s.top = (y - r) + "px";s.left = (x - r) + "px";s.width = (r * 2) + "px";s.height = (r * 2) + "px";group.appendChild(c);if (applyTo) {applyTo(c, data[j].src);}}
+if (i == 0) {cmd.push("l");cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));cmd.push("l");cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));} else {var values = data[i - 1];cmd.push("l");cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));for (var j = values.length - 2; j >= 0; j--) {var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));cmd.push("l");cmd.push(x + "," + y);}}
+path.setAttribute("path", cmd.join(" ") + " x e");group.appendChild(path);}
+return group;}, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) {var tension = 3;var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = plot.series.length;var data = [];var totals = [];for (var i = 0; i < n; i++) {var tmp = plot.series[i].data.evaluate(kwArgs);for (var j = 0; j < tmp.length; j++) {if (i == 0) {totals.push(tmp[j].y);} else {totals[j] += tmp[j].y;}
+tmp[j].y = totals[j];}
+data.push(tmp);}
+for (var i = n - 1; i >= 0; i--) {var path = document.createElement("v:shape");path.setAttribute("strokeweight", "1px");path.setAttribute("strokecolor", data[i][0].series.color);path.setAttribute("fillcolor", data[i][0].series.color);path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));path.style.position = "absolute";path.style.top = "0px";path.style.left = "0px";path.style.width = area.right - area.left + "px";path.style.height = area.bottom - area.top + "px";var stroke = document.createElement("v:stroke");stroke.setAttribute("opacity", "0.8");path.appendChild(stroke);var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.4");path.appendChild(fill);var cmd = [];var r = 3;for (var j = 0; j < data[i].length; j++) {var values = data[i];var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));if (j == 0) {cmd.push("m");cmd.push(x + "," + y)
 ;} else {var lastx = Math.round(plot.axisX.getCoord(values[j - 1].x, plotarea, plot));var lasty = Math.round(plot.axisY.getCoord(values[j - 1].y, plotarea, plot));var dx = x - lastx;var dy = y - lasty;cmd.push("c");var cx = Math.round((x - (tension - 1) * (dx / tension)));cmd.push(cx + "," + lasty);cx = Math.round((x - (dx / tension)));cmd.push(cx + "," + y);cmd.push(x + "," + y);}
+var c = document.createElement("v:oval");c.setAttribute("strokeweight", "1px");c.setAttribute("strokecolor", values[j].series.color);c.setAttribute("fillcolor", values[j].series.color);var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.8");c.appendChild(str);str = document.createElement("v:fill");str.setAttribute("opacity", "0.6");c.appendChild(str);var s = c.style;s.position = "absolute";s.top = (y - r) + "px";s.left = (x - r) + "px";s.width = (r * 2) + "px";s.height = (r * 2) + "px";group.appendChild(c);if (applyTo) {applyTo(c, data[j].src);}}
+if (i == 0) {cmd.push("l");cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));cmd.push("l");cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));} else {var values = data[i - 1];cmd.push("l");cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));for (var j = values.length - 2; j >= 0; j--) {var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));var lastx = Math.round(plot.axisX.getCoord(values[j + 1].x, plotarea, plot));var lasty = Math.round(plot.axisY.getCoord(values[j + 1].y, plotarea, plot));var dx = x - lastx;var dy = y - lasty;cmd.push("c");var cx = Math.round((x - (tension - 1) * (dx / tension)));cmd.push(cx + "," + lasty);cx = Math.round((x - (dx / tension)));cmd.push(cx + "," + y);cmd.push(x + "," + y);}}
+path.setAttribute("path", cmd.join(" ") + " x e");group.appendChild(path);}
+return group;}, DataBar:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = data.length;var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower);var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);for (var i = 0; i < n; i++) {var value = data[i].y;var yA = yOrigin;var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2) + 1;var y = plot.axisY.getCoord(value, plotarea, plot);var h = Math.abs(yA - y);if (value < plot.axisX.origin) {yA = y;y = yOrigin;}
+var bar = document.createElement("v:rect");bar.style.position = "absolute";bar.style.top = y + 1 + "px";bar.style.left = x + "px";bar.style.width = w + "px";bar.style.height = h + "px";bar.setAttribute("fillColor", data[i].series.color);bar.setAttribute("stroked", "false");bar.style.antialias = "false";var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");bar.appendChild(fill);if (applyTo) {applyTo(bar, data[i].src);}
+group.appendChild(bar);}
+return group;}, Line:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);if (data.length == 0) {return group;}
+var path = document.createElement("v:shape");path.setAttribute("strokeweight", "2px");path.setAttribute("strokecolor", data[0].series.color);path.setAttribute("fillcolor", "none");path.setAttribute("filled", "false");path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));path.style.position = "absolute";path.style.top = "0px";path.style.left = "0px";path.style.width = area.right - area.left + "px";path.style.height = area.bottom - area.top + "px";var stroke = document.createElement("v:stroke");stroke.setAttribute("opacity", "0.8");path.appendChild(stroke);var cmd = [];var r = 3;for (var i = 0; i < data.length; i++) {var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));if (i == 0) {cmd.push("m");cmd.push(x + "," + y);} else {cmd.push("l");cmd.push(x + "," + y);}
+var c = document.createElement("v:oval");c.setAttribute("strokeweight", "1px");c.setAttribute("strokecolor", data[i].series.color);c.setAttribute("fillcolor", data[i].series.color);var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.8");c.appendChild(str);str = document.createElement("v:fill");str.setAttribute("opacity", "0.6");c.appendChild(str);var s = c.style;s.position = "absolute";s.top = (y - r) + "px";s.left = (x - r) + "px";s.width = (r * 2) + "px";s.height = (r * 2) + "px";group.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+path.setAttribute("path", cmd.join(" ") + " e");group.appendChild(path);return group;}, CurvedLine:function (data, plotarea, plot, applyTo) {var tension = 3;var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);if (data.length == 0) {return group;}
+var path = document.createElement("v:shape");path.setAttribute("strokeweight", "2px");path.setAttribute("strokecolor", data[0].series.color);path.setAttribute("fillcolor", "none");path.setAttribute("filled", "false");path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));path.style.position = "absolute";path.style.top = "0px";path.style.left = "0px";path.style.width = area.right - area.left + "px";path.style.height = area.bottom - area.top + "px";var stroke = document.createElement("v:stroke");stroke.setAttribute("opacity", "0.8");path.appendChild(stroke);var cmd = [];var r = 3;for (var i = 0; i < data.length; i++) {var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));if (i == 0) {cmd.push("m");cmd.push(x + "," + y);} else {var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotar
 ea, plot));var dx = x - lastx;var dy = y - lasty;cmd.push("c");var cx = Math.round((x - (tension - 1) * (dx / tension)));cmd.push(cx + "," + lasty);cx = Math.round((x - (dx / tension)));cmd.push(cx + "," + y);cmd.push(x + "," + y);}
+var c = document.createElement("v:oval");c.setAttribute("strokeweight", "1px");c.setAttribute("strokecolor", data[i].series.color);c.setAttribute("fillcolor", data[i].series.color);var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.8");c.appendChild(str);str = document.createElement("v:fill");str.setAttribute("opacity", "0.6");c.appendChild(str);var s = c.style;s.position = "absolute";s.top = (y - r) + "px";s.left = (x - r) + "px";s.width = (r * 2) + "px";s.height = (r * 2) + "px";group.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+path.setAttribute("path", cmd.join(" ") + " e");group.appendChild(path);return group;}, Area:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);if (data.length == 0) {return group;}
+var path = document.createElement("v:shape");path.setAttribute("strokeweight", "1px");path.setAttribute("strokecolor", data[0].series.color);path.setAttribute("fillcolor", data[0].series.color);path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));path.style.position = "absolute";path.style.top = "0px";path.style.left = "0px";path.style.width = area.right - area.left + "px";path.style.height = area.bottom - area.top + "px";var stroke = document.createElement("v:stroke");stroke.setAttribute("opacity", "0.8");path.appendChild(stroke);var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.4");path.appendChild(fill);var cmd = [];var r = 3;for (var i = 0; i < data.length; i++) {var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));if (i == 0) {cmd.push("m");cmd.push(x + "," + y);} else {cmd.push("l");cmd.push(x + "," + y);}
+var c = document.createElement("v:oval");c.setAttribute("strokeweight", "1px");c.setAttribute("strokecolor", data[i].series.color);c.setAttribute("fillcolor", data[i].series.color);var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.8");c.appendChild(str);str = document.createElement("v:fill");str.setAttribute("opacity", "0.6");c.appendChild(str);var s = c.style;s.position = "absolute";s.top = (y - r) + "px";s.left = (x - r) + "px";s.width = (r * 2) + "px";s.height = (r * 2) + "px";group.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+cmd.push("l");cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));cmd.push("l");cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));path.setAttribute("path", cmd.join(" ") + " x e");group.appendChild(path);return group;}, CurvedArea:function (data, plotarea, plot, applyTo) {var tension = 3;var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);if (data.length == 0) {return group;}
+var path = document.createElement("v:shape");path.setAttribute("strokeweight", "1px");path.setAttribute("strokecolor", data[0].series.color);path.setAttribute("fillcolor", data[0].series.color);path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));path.style.position = "absolute";path.style.top = "0px";path.style.left = "0px";path.style.width = area.right - area.left + "px";path.style.height = area.bottom - area.top + "px";var stroke = document.createElement("v:stroke");stroke.setAttribute("opacity", "0.8");path.appendChild(stroke);var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.4");path.appendChild(fill);var cmd = [];var r = 3;for (var i = 0; i < data.length; i++) {var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));if (i == 0) {cmd.push("m");cmd.push(x + "," + y);} else {var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, p
 lotarea, plot));var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));var dx = x - lastx;var dy = y - lasty;cmd.push("c");var cx = Math.round((x - (tension - 1) * (dx / tension)));cmd.push(cx + "," + lasty);cx = Math.round((x - (dx / tension)));cmd.push(cx + "," + y);cmd.push(x + "," + y);}
+var c = document.createElement("v:oval");c.setAttribute("strokeweight", "1px");c.setAttribute("strokecolor", data[i].series.color);c.setAttribute("fillcolor", data[i].series.color);var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.8");c.appendChild(str);str = document.createElement("v:fill");str.setAttribute("opacity", "0.6");c.appendChild(str);var s = c.style;s.position = "absolute";s.top = (y - r) + "px";s.left = (x - r) + "px";s.width = (r * 2) + "px";s.height = (r * 2) + "px";group.appendChild(c);if (applyTo) {applyTo(c, data[i].src);}}
+cmd.push("l");cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));cmd.push("l");cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));path.setAttribute("path", cmd.join(" ") + " x e");group.appendChild(path);return group;}, HighLow:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = data.length;var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;var w = part * 2;for (var i = 0; i < n; i++) {var high = data[i].high;var low = data[i].low;if (low > high) {var t = low;low = high;high = t;}
+var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);var y = plot.axisY.getCoord(high, plotarea, plot);var h = plot.axisY.getCoord(low, plotarea, plot) - y;var bar = document.createElement("v:rect");bar.style.position = "absolute";bar.style.top = y + 1 + "px";bar.style.left = x + "px";bar.style.width = w + "px";bar.style.height = h + "px";bar.setAttribute("fillColor", data[i].series.color);bar.setAttribute("stroked", "false");bar.style.antialias = "false";var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");bar.appendChild(fill);if (applyTo) {applyTo(bar, data[i].src);}
+group.appendChild(bar);}
+return group;}, HighLowClose:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = data.length;var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;var w = part * 2;for (var i = 0; i < n; i++) {var high = data[i].high;var low = data[i].low;if (low > high) {var t = low;low = high;high = t;}
+var c = data[i].close;var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);var y = plot.axisY.getCoord(high, plotarea, plot);var h = plot.axisY.getCoord(low, plotarea, plot) - y;var close = plot.axisY.getCoord(c, plotarea, plot);var g = document.createElement("div");var bar = document.createElement("v:rect");bar.style.position = "absolute";bar.style.top = y + 1 + "px";bar.style.left = x + "px";bar.style.width = w + "px";bar.style.height = h + "px";bar.setAttribute("fillColor", data[i].series.color);bar.setAttribute("stroked", "false");bar.style.antialias = "false";var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");bar.appendChild(fill);g.appendChild(bar);var line = document.createElement("v:line");line.setAttribute("strokecolor", data[i].series.color);line.setAttribute("strokeweight", "1px");line.setAttribute("from", x + "px," + close + "px");line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");var s = line.style;s
 .position = "absolute";s.top = "0px";s.left = "0px";s.antialias = "false";var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.6");line.appendChild(str);g.appendChild(line);if (applyTo) {applyTo(g, data[i].src);}
+group.appendChild(g);}
+return group;}, HighLowOpenClose:function (data, plotarea, plot, applyTo) {var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);var n = data.length;var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;var w = part * 2;for (var i = 0; i < n; i++) {var high = data[i].high;var low = data[i].low;if (low > high) {var t = low;low = high;high = t;}
+var o = data[i].open;var c = data[i].close;var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);var y = plot.axisY.getCoord(high, plotarea, plot);var h = plot.axisY.getCoord(low, plotarea, plot) - y;var open = plot.axisY.getCoord(o, plotarea, plot);var close = plot.axisY.getCoord(c, plotarea, plot);var g = document.createElement("div");var bar = document.createElement("v:rect");bar.style.position = "absolute";bar.style.top = y + 1 + "px";bar.style.left = x + "px";bar.style.width = w + "px";bar.style.height = h + "px";bar.setAttribute("fillColor", data[i].series.color);bar.setAttribute("stroked", "false");bar.style.antialias = "false";var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");bar.appendChild(fill);g.appendChild(bar);var line = document.createElement("v:line");line.setAttribute("strokecolor", data[i].series.color);line.setAttribute("strokeweight", "1px");line.setAttribute("from", (x - (part * 2)) + "px," + open + "px");line.set
 Attribute("to", (x + w - 2) + "px," + open + "px");var s = line.style;s.position = "absolute";s.top = "0px";s.left = "0px";s.antialias = "false";var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.6");line.appendChild(str);g.appendChild(line);var line = document.createElement("v:line");line.setAttribute("strokecolor", data[i].series.color);line.setAttribute("strokeweight", "1px");line.setAttribute("from", x + "px," + close + "px");line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");var s = line.style;s.position = "absolute";s.top = "0px";s.left = "0px";s.antialias = "false";var str = document.createElement("v:stroke");str.setAttribute("opacity", "0.6");line.appendChild(str);g.appendChild(line);if (applyTo) {applyTo(g, data[i].src);}
+group.appendChild(g);}
+return group;}, Scatter:function (data, plotarea, plot, applyTo) {var r = 6;var mod = r / 2;var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);for (var i = 0; i < data.length; i++) {var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));var point = document.createElement("v:rect");point.setAttribute("strokecolor", data[i].series.color);point.setAttribute("fillcolor", data[i].series.color);var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");point.appendChild(fill);var s = point.style;s.position = "absolute";s.rotation = "45";s.top = (y - mod) + "px";s.left = (x - mod) + "px";s.width = r + "px";s.height = r + "px";group.appendChild(point);if (applyTo) {applyTo(point, data[i].src);}}
+return group;}, Bubble:function (data, plotarea, plot, applyTo) {var sizeFactor = 1;var area = plotarea.getArea();var group = dojo.charting.Plotters._group(plotarea);for (var i = 0; i < data.length; i++) {var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));if (i == 0) {var raw = data[i].size;var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y;sizeFactor = dy / raw;}
+if (sizeFactor < 1) {sizeFactor = 1;}
+var r = (data[i].size / 2) * sizeFactor;var point = document.createElement("v:oval");point.setAttribute("strokecolor", data[i].series.color);point.setAttribute("fillcolor", data[i].series.color);var fill = document.createElement("v:fill");fill.setAttribute("opacity", "0.6");point.appendChild(fill);var s = point.style;s.position = "absolute";s.rotation = "45";s.top = (y - r) + "px";s.left = (x - r) + "px";s.width = (r * 2) + "px";s.height = (r * 2) + "px";group.appendChild(point);if (applyTo) {applyTo(point, data[i].src);}}
+return group;}});dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;}

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Plotters.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/charting/vml/Plotters.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/ArrayList.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/ArrayList.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/ArrayList.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/ArrayList.js Tue May  8 19:56:15 2007
@@ -0,0 +1,9 @@
+
+dojo.provide("dojo.collections.ArrayList");dojo.require("dojo.collections.Collections");dojo.collections.ArrayList = function (arr) {var items = [];if (arr) {items = items.concat(arr);}
+this.count = items.length;this.add = function (obj) {items.push(obj);this.count = items.length;};this.addRange = function (a) {if (a.getIterator) {var e = a.getIterator();while (!e.atEnd()) {this.add(e.get());}
+this.count = items.length;} else {for (var i = 0; i < a.length; i++) {items.push(a[i]);}
+this.count = items.length;}};this.clear = function () {items.splice(0, items.length);this.count = 0;};this.clone = function () {return new dojo.collections.ArrayList(items);};this.contains = function (obj) {for (var i = 0; i < items.length; i++) {if (items[i] == obj) {return true;}}
+return false;};this.forEach = function (fn, scope) {var s = scope || dj_global;if (Array.forEach) {Array.forEach(items, fn, s);} else {for (var i = 0; i < items.length; i++) {fn.call(s, items[i], i, items);}}
+};this.getIterator = function () {return new dojo.collections.Iterator(items);};this.indexOf = function (obj) {for (var i = 0; i < items.length; i++) {if (items[i] == obj) {return i;}}
+return -1;};this.insert = function (i, obj) {items.splice(i, 0, obj);this.count = items.length;};this.item = function (i) {return items[i];};this.remove = function (obj) {var i = this.indexOf(obj);if (i >= 0) {items.splice(i, 1);}
+this.count = items.length;};this.removeAt = function (i) {items.splice(i, 1);this.count = items.length;};this.reverse = function () {items.reverse();};this.sort = function (fn) {if (fn) {items.sort(fn);} else {items.sort();}};this.setByIndex = function (i, obj) {items[i] = obj;this.count = items.length;};this.toArray = function () {return [].concat(items);};this.toString = function (delim) {return items.join((delim || ","));};};
\ No newline at end of file

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/ArrayList.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/ArrayList.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/BinaryTree.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/BinaryTree.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/BinaryTree.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/BinaryTree.js Tue May  8 19:56:15 2007
@@ -0,0 +1,36 @@
+
+dojo.provide("dojo.collections.BinaryTree");dojo.require("dojo.collections.Collections");dojo.require("dojo.experimental");dojo.experimental("dojo.collections.BinaryTree");dojo.collections.BinaryTree = function (data) {function node(data, rnode, lnode) {this.value = data || null;this.right = rnode || null;this.left = lnode || null;this.clone = function () {var c = new node();if (this.value.value) {c.value = this.value.clone();} else {c.value = this.value;}
+if (this.left) {c.left = this.left.clone();}
+if (this.right) {c.right = this.right.clone();}};this.compare = function (n) {if (this.value > n.value) {return 1;}
+if (this.value < n.value) {return -1;}
+return 0;};this.compareData = function (d) {if (this.value > d) {return 1;}
+if (this.value < d) {return -1;}
+return 0;};}
+function inorderTraversalBuildup(current, a) {if (current) {inorderTraversalBuildup(current.left, a);a.add(current);inorderTraversalBuildup(current.right, a);}}
+function preorderTraversal(current, sep) {var s = "";if (current) {s = current.value.toString() + sep;s += preorderTraversal(current.left, sep);s += preorderTraversal(current.right, sep);}
+return s;}
+function inorderTraversal(current, sep) {var s = "";if (current) {s = inorderTraversal(current.left, sep);s += current.value.toString() + sep;s += inorderTraversal(current.right, sep);}
+return s;}
+function postorderTraversal(current, sep) {var s = "";if (current) {s = postorderTraversal(current.left, sep);s += postorderTraversal(current.right, sep);s += current.value.toString() + sep;}
+return s;}
+function searchHelper(current, data) {if (!current) {return null;}
+var i = current.compareData(data);if (i == 0) {return current;}
+if (i > 0) {return searchHelper(current.left, data);} else {return searchHelper(current.right, data);}}
+this.add = function (data) {var n = new node(data);var i;var current = root;var parent = null;while (current) {i = current.compare(n);if (i == 0) {return;}
+parent = current;if (i > 0) {current = current.left;} else {current = current.right;}}
+this.count++;if (!parent) {root = n;} else {i = parent.compare(n);if (i > 0) {parent.left = n;} else {parent.right = n;}}
+};this.clear = function () {root = null;this.count = 0;};this.clone = function () {var c = new dojo.collections.BinaryTree();c.root = root.clone();c.count = this.count;return c;};this.contains = function (data) {return this.search(data) != null;};this.deleteData = function (data) {var current = root;var parent = null;var i = current.compareData(data);while (i != 0 && current != null) {if (i > 0) {parent = current;current = current.left;} else {if (i < 0) {parent = current;current = current.right;}}
+i = current.compareData(data);}
+if (!current) {return;}
+this.count--;if (!current.right) {if (!parent) {root = current.left;} else {i = parent.compare(current);if (i > 0) {parent.left = current.left;} else {if (i < 0) {parent.right = current.left;}}
+}} else {if (!current.right.left) {if (!parent) {root = current.right;} else {i = parent.compare(current);if (i > 0) {parent.left = current.right;} else {if (i < 0) {parent.right = current.right;}}
+}} else {var leftmost = current.right.left;var lmParent = current.right;while (leftmost.left != null) {lmParent = leftmost;leftmost = leftmost.left;}
+lmParent.left = leftmost.right;leftmost.left = current.left;leftmost.right = current.right;if (!parent) {root = leftmost;} else {i = parent.compare(current);if (i > 0) {parent.left = leftmost;} else {if (i < 0) {parent.right = leftmost;}}
+}}
+}};this.getIterator = function () {var a = [];inorderTraversalBuildup(root, a);return new dojo.collections.Iterator(a);};this.search = function (data) {return searchHelper(root, data);};this.toString = function (order, sep) {if (!order) {var order = dojo.collections.BinaryTree.TraversalMethods.Inorder;}
+if (!sep) {var sep = " ";}
+var s = "";switch (order) {case dojo.collections.BinaryTree.TraversalMethods.Preorder:
+s = preorderTraversal(root, sep);break;case dojo.collections.BinaryTree.TraversalMethods.Inorder:
+s = inorderTraversal(root, sep);break;case dojo.collections.BinaryTree.TraversalMethods.Postorder:
+s = postorderTraversal(root, sep);break;}
+if (s.length == 0) {return "";} else {return s.substring(0, s.length - sep.length);}};this.count = 0;var root = this.root = null;if (data) {this.add(data);}};dojo.collections.BinaryTree.TraversalMethods = {Preorder:1, Inorder:2, Postorder:3};
\ No newline at end of file

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/BinaryTree.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/BinaryTree.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Collections.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Collections.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Collections.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Collections.js Tue May  8 19:56:15 2007
@@ -0,0 +1,7 @@
+
+dojo.provide("dojo.collections.Collections");dojo.collections.DictionaryEntry = function (k, v) {this.key = k;this.value = v;this.valueOf = function () {return this.value;};this.toString = function () {return String(this.value);};};dojo.collections.Iterator = function (arr) {var a = arr;var position = 0;this.element = a[position] || null;this.atEnd = function () {return (position >= a.length);};this.get = function () {if (this.atEnd()) {return null;}
+this.element = a[position++];return this.element;};this.map = function (fn, scope) {var s = scope || dj_global;if (Array.map) {return Array.map(a, fn, s);} else {var arr = [];for (var i = 0; i < a.length; i++) {arr.push(fn.call(s, a[i]));}
+return arr;}};this.reset = function () {position = 0;this.element = a[position];};};dojo.collections.DictionaryIterator = function (obj) {var a = [];var testObject = {};for (var p in obj) {if (!testObject[p]) {a.push(obj[p]);}}
+var position = 0;this.element = a[position] || null;this.atEnd = function () {return (position >= a.length);};this.get = function () {if (this.atEnd()) {return null;}
+this.element = a[position++];return this.element;};this.map = function (fn, scope) {var s = scope || dj_global;if (Array.map) {return Array.map(a, fn, s);} else {var arr = [];for (var i = 0; i < a.length; i++) {arr.push(fn.call(s, a[i]));}
+return arr;}};this.reset = function () {position = 0;this.element = a[position];};};
\ No newline at end of file

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Collections.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Collections.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Dictionary.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Dictionary.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Dictionary.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Dictionary.js Tue May  8 19:56:15 2007
@@ -0,0 +1,9 @@
+
+dojo.provide("dojo.collections.Dictionary");dojo.require("dojo.collections.Collections");dojo.collections.Dictionary = function (dictionary) {var items = {};this.count = 0;var testObject = {};this.add = function (k, v) {var b = (k in items);items[k] = new dojo.collections.DictionaryEntry(k, v);if (!b) {this.count++;}};this.clear = function () {items = {};this.count = 0;};this.clone = function () {return new dojo.collections.Dictionary(this);};this.contains = this.containsKey = function (k) {if (testObject[k]) {return false;}
+return (items[k] != null);};this.containsValue = function (v) {var e = this.getIterator();while (e.get()) {if (e.element.value == v) {return true;}}
+return false;};this.entry = function (k) {return items[k];};this.forEach = function (fn, scope) {var a = [];for (var p in items) {if (!testObject[p]) {a.push(items[p]);}}
+var s = scope || dj_global;if (Array.forEach) {Array.forEach(a, fn, s);} else {for (var i = 0; i < a.length; i++) {fn.call(s, a[i], i, a);}}
+};this.getKeyList = function () {return (this.getIterator()).map(function (entry) {return entry.key;});};this.getValueList = function () {return (this.getIterator()).map(function (entry) {return entry.value;});};this.item = function (k) {if (k in items) {return items[k].valueOf();}
+return undefined;};this.getIterator = function () {return new dojo.collections.DictionaryIterator(items);};this.remove = function (k) {if (k in items && !testObject[k]) {delete items[k];this.count--;return true;}
+return false;};if (dictionary) {var e = dictionary.getIterator();while (e.get()) {this.add(e.element.key, e.element.value);}}
+};
\ No newline at end of file

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Dictionary.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Dictionary.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Graph.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Graph.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Graph.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Graph.js Tue May  8 19:56:15 2007
@@ -0,0 +1,13 @@
+
+dojo.provide("dojo.collections.Graph");dojo.require("dojo.collections.Collections");dojo.experimental("dojo.collections.Graph");dojo.collections.Graph = function (nodes) {function node(key, data, neighbors) {this.key = key;this.data = data;this.neighbors = neighbors || new adjacencyList();this.addDirected = function () {if (arguments[0].constructor == edgeToNeighbor) {this.neighbors.add(arguments[0]);} else {var n = arguments[0];var cost = arguments[1] || 0;this.neighbors.add(new edgeToNeighbor(n, cost));}};}
+function nodeList() {var d = new dojo.collections.Dictionary();function nodelistiterator() {var o = [];var e = d.getIterator();while (e.get()) {o[o.length] = e.element;}
+var position = 0;this.element = o[position] || null;this.atEnd = function () {return (position >= o.length);};this.get = function () {if (this.atEnd()) {return null;}
+this.element = o[position++];return this.element;};this.map = function (fn, scope) {var s = scope || dj_global;if (Array.map) {return Array.map(o, fn, s);} else {var arr = [];for (var i = 0; i < o.length; i++) {arr.push(fn.call(s, o[i]));}
+return arr;}};this.reset = function () {position = 0;this.element = o[position];};}
+this.add = function (node) {d.add(node.key, node);};this.clear = function () {d.clear();};this.containsKey = function (key) {return d.containsKey(key);};this.getIterator = function () {return new nodelistiterator(this);};this.item = function (key) {return d.item(key);};this.remove = function (node) {d.remove(node.key);};}
+function edgeToNeighbor(node, cost) {this.neighbor = node;this.cost = cost;}
+function adjacencyList() {var d = [];this.add = function (o) {d.push(o);};this.item = function (i) {return d[i];};this.getIterator = function () {return new dojo.collections.Iterator([].concat(d));};}
+this.nodes = nodes || new nodeList();this.count = this.nodes.count;this.clear = function () {this.nodes.clear();this.count = 0;};this.addNode = function () {var n = arguments[0];if (arguments.length > 1) {n = new node(arguments[0], arguments[1]);}
+if (!this.nodes.containsKey(n.key)) {this.nodes.add(n);this.count++;}};this.addDirectedEdge = function (uKey, vKey, cost) {var uNode, vNode;if (uKey.constructor != node) {uNode = this.nodes.item(uKey);vNode = this.nodes.item(vKey);} else {uNode = uKey;vNode = vKey;}
+var c = cost || 0;uNode.addDirected(vNode, c);};this.addUndirectedEdge = function (uKey, vKey, cost) {var uNode, vNode;if (uKey.constructor != node) {uNode = this.nodes.item(uKey);vNode = this.nodes.item(vKey);} else {uNode = uKey;vNode = vKey;}
+var c = cost || 0;uNode.addDirected(vNode, c);vNode.addDirected(uNode, c);};this.contains = function (n) {return this.nodes.containsKey(n.key);};this.containsKey = function (k) {return this.nodes.containsKey(k);};};
\ No newline at end of file

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Graph.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Graph.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Queue.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Queue.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Queue.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Queue.js Tue May  8 19:56:15 2007
@@ -0,0 +1,5 @@
+
+dojo.provide("dojo.collections.Queue");dojo.require("dojo.collections.Collections");dojo.collections.Queue = function (arr) {var q = [];if (arr) {q = q.concat(arr);}
+this.count = q.length;this.clear = function () {q = [];this.count = q.length;};this.clone = function () {return new dojo.collections.Queue(q);};this.contains = function (o) {for (var i = 0; i < q.length; i++) {if (q[i] == o) {return true;}}
+return false;};this.copyTo = function (arr, i) {arr.splice(i, 0, q);};this.dequeue = function () {var r = q.shift();this.count = q.length;return r;};this.enqueue = function (o) {this.count = q.push(o);};this.forEach = function (fn, scope) {var s = scope || dj_global;if (Array.forEach) {Array.forEach(q, fn, s);} else {for (var i = 0; i < q.length; i++) {fn.call(s, q[i], i, q);}}
+};this.getIterator = function () {return new dojo.collections.Iterator(q);};this.peek = function () {return q[0];};this.toArray = function () {return [].concat(q);};};
\ No newline at end of file

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Queue.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Queue.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Set.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Set.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Set.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Set.js Tue May  8 19:56:15 2007
@@ -0,0 +1,22 @@
+
+dojo.provide("dojo.collections.Set");dojo.require("dojo.collections.Collections");dojo.require("dojo.collections.ArrayList");dojo.collections.Set = new function () {this.union = function (setA, setB) {if (setA.constructor == Array) {var setA = new dojo.collections.ArrayList(setA);}
+if (setB.constructor == Array) {var setB = new dojo.collections.ArrayList(setB);}
+if (!setA.toArray || !setB.toArray) {dojo.raise("Set operations can only be performed on array-based collections.");}
+var result = new dojo.collections.ArrayList(setA.toArray());var e = setB.getIterator();while (!e.atEnd()) {var item = e.get();if (!result.contains(item)) {result.add(item);}}
+return result;};this.intersection = function (setA, setB) {if (setA.constructor == Array) {var setA = new dojo.collections.ArrayList(setA);}
+if (setB.constructor == Array) {var setB = new dojo.collections.ArrayList(setB);}
+if (!setA.toArray || !setB.toArray) {dojo.raise("Set operations can only be performed on array-based collections.");}
+var result = new dojo.collections.ArrayList();var e = setB.getIterator();while (!e.atEnd()) {var item = e.get();if (setA.contains(item)) {result.add(item);}}
+return result;};this.difference = function (setA, setB) {if (setA.constructor == Array) {var setA = new dojo.collections.ArrayList(setA);}
+if (setB.constructor == Array) {var setB = new dojo.collections.ArrayList(setB);}
+if (!setA.toArray || !setB.toArray) {dojo.raise("Set operations can only be performed on array-based collections.");}
+var result = new dojo.collections.ArrayList();var e = setA.getIterator();while (!e.atEnd()) {var item = e.get();if (!setB.contains(item)) {result.add(item);}}
+return result;};this.isSubSet = function (setA, setB) {if (setA.constructor == Array) {var setA = new dojo.collections.ArrayList(setA);}
+if (setB.constructor == Array) {var setB = new dojo.collections.ArrayList(setB);}
+if (!setA.toArray || !setB.toArray) {dojo.raise("Set operations can only be performed on array-based collections.");}
+var e = setA.getIterator();while (!e.atEnd()) {if (!setB.contains(e.get())) {return false;}}
+return true;};this.isSuperSet = function (setA, setB) {if (setA.constructor == Array) {var setA = new dojo.collections.ArrayList(setA);}
+if (setB.constructor == Array) {var setB = new dojo.collections.ArrayList(setB);}
+if (!setA.toArray || !setB.toArray) {dojo.raise("Set operations can only be performed on array-based collections.");}
+var e = setB.getIterator();while (!e.atEnd()) {if (!setA.contains(e.get())) {return false;}}
+return true;};}();
\ No newline at end of file

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Set.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/Set.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/SkipList.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/SkipList.js?view=auto&rev=536397
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/SkipList.js (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/SkipList.js Tue May  8 19:56:15 2007
@@ -0,0 +1,24 @@
+
+dojo.provide("dojo.collections.SkipList");dojo.require("dojo.collections.Collections");dojo.require("dojo.experimental");dojo.experimental("dojo.collections.SkipList");dojo.collections.SkipList = function () {function node(height, val) {this.value = val;this.height = height;this.nodes = new nodeList(height);this.compare = function (val) {if (this.value > val) {return 1;}
+if (this.value < val) {return -1;}
+return 0;};this.incrementHeight = function () {this.nodes.incrementHeight();this.height++;};this.decrementHeight = function () {this.nodes.decrementHeight();this.height--;};}
+function nodeList(height) {var arr = [];this.height = height;for (var i = 0; i < height; i++) {arr[i] = null;}
+this.item = function (i) {return arr[i];};this.incrementHeight = function () {this.height++;arr[this.height] = null;};this.decrementHeight = function () {arr.splice(arr.length - 1, 1);this.height--;};}
+function iterator(list) {this.element = list.head;this.atEnd = function () {return (this.element == null);};this.get = function () {if (this.atEnd()) {return null;}
+this.element = this.element.nodes[0];return this.element;};this.reset = function () {this.element = list.head;};}
+function chooseRandomHeight(max) {var level = 1;while (Math.random() < PROB && level < max) {level++;}
+return level;}
+var PROB = 0.5;var comparisons = 0;this.head = new node(1);this.count = 0;this.add = function (val) {var updates = [];var current = this.head;for (var i = this.head.height; i >= 0; i--) {if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) {comparisons++;}
+while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) {current = current.nodes[i];comparisons++;}
+updates[i] = current;}
+if (current.nodes[0] != null && current.nodes[0].compare(val) == 0) {return;}
+var n = new node(val, chooseRandomHeight(this.head.height + 1));this.count++;if (n.height > this.head.height) {this.head.incrementHeight();this.head.nodes[this.head.height - 1] = n;}
+for (i = 0; i < n.height; i++) {if (i < updates.length) {n.nodes[i] = updates[i].nodes[i];updates[i].nodes[i] = n;}}
+};this.contains = function (val) {var current = this.head;var i;for (i = this.head.height - 1; i >= 0; i--) {while (current.item(i) != null) {comparisons++;var result = current.nodes[i].compare(val);if (result == 0) {return true;} else {if (result < 0) {current = current.nodes[i];} else {break;}}
+}}
+return false;};this.getIterator = function () {return new iterator(this);};this.remove = function (val) {var updates = [];var current = this.head;for (var i = this.head.height - 1; i >= 0; i--) {if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) {comparisons++;}
+while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) {current = current.nodes[i];comparisons++;}
+updates[i] = current;}
+current = current.nodes[0];if (current != null && current.compare(val) == 0) {this.count--;for (var i = 0; i < this.head.height; i++) {if (updates[i].nodes[i] != current) {break;} else {updates[i].nodes[i] = current.nodes[i];}}
+if (this.head.nodes[this.head.height - 1] == null) {this.head.decrementHeight();}}
+};this.resetComparisons = function () {comparisons = 0;};};
\ No newline at end of file

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

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/SkipList.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/collections/SkipList.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain