Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1318 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.charting.vml.Plotters");
13
dojo.provide("dojo.charting.vml.Plotters");
12
dojo.require("dojo.lang.common");
14
dojo.require("dojo.lang.common");
13
if (dojo.render.vml.capable) {
15
if (dojo.render.vml.capable) {
14
	dojo.mixin(dojo.charting.Plotters, {_group:function (plotarea) {
16
	dojo.mixin(dojo.charting.Plotters, {_group:function (plotarea) {
15
		var group = document.createElement("div");
17
		var group = document.createElement("div");
16
		group.style.position = "absolute";
18
		group.style.position = "absolute";
17
		group.style.top = "0px";
19
		group.style.top = "0px";
18
		group.style.left = "0px";
20
		group.style.left = "0px";
19
		group.style.width = plotarea.size.width + "px";
21
		group.style.width = plotarea.size.width + "px";
20
		group.style.height = plotarea.size.height + "px";
22
		group.style.height = plotarea.size.height + "px";
21
		return group;
23
		return group;
22
	}, Bar:function (plotarea, plot, kwArgs, applyTo) {
24
	}, Bar:function (plotarea, plot, kwArgs, applyTo) {
23
		var area = plotarea.getArea();
25
		var area = plotarea.getArea();
24
		var group = dojo.charting.Plotters._group(plotarea);
26
		var group = dojo.charting.Plotters._group(plotarea);
25
		var n = plot.series.length;
27
		var n = plot.series.length;
26
		var data = [];
28
		var data = [];
27
		for (var i = 0; i < n; i++) {
29
		for (var i = 0; i < n; i++) {
28
			var tmp = plot.series[i].data.evaluate(kwArgs);
30
			var tmp = plot.series[i].data.evaluate(kwArgs);
29
			data.push(tmp);
31
			data.push(tmp);
30
		}
32
		}
31
		var space = 8;
33
		var space = 8;
32
		var nPoints = data[0].length;
34
		var nPoints = data[0].length;
33
		if (nPoints == 0) {
35
		if (nPoints == 0) {
34
			return group;
36
			return group;
35
		}
37
		}
36
		var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints;
38
		var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints;
37
		var barWidth = Math.round(width / n);
39
		var barWidth = Math.round(width / n);
38
		var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
40
		var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
39
		for (var i = 0; i < nPoints; i++) {
41
		for (var i = 0; i < nPoints; i++) {
40
			var xStart = area.left + (width * i) + (space * i);
42
			var xStart = area.left + (width * i) + (space * i);
41
			for (var j = 0; j < n; j++) {
43
			for (var j = 0; j < n; j++) {
42
				var value = data[j][i].y;
44
				var value = data[j][i].y;
43
				var yA = yOrigin;
45
				var yA = yOrigin;
44
				var x = xStart + (barWidth * j);
46
				var x = xStart + (barWidth * j);
45
				var y = plot.axisY.getCoord(value, plotarea, plot);
47
				var y = plot.axisY.getCoord(value, plotarea, plot);
46
				var h = Math.abs(yA - y);
48
				var h = Math.abs(yA - y);
47
				if (value < plot.axisX.origin) {
49
				if (value < plot.axisX.origin) {
48
					yA = y;
50
					yA = y;
49
					y = yOrigin;
51
					y = yOrigin;
50
				}
52
				}
51
				var bar = document.createElement("v:rect");
53
				var bar = document.createElement("v:rect");
52
				bar.style.position = "absolute";
54
				bar.style.position = "absolute";
53
				bar.style.top = y + 1 + "px";
55
				bar.style.top = y + 1 + "px";
54
				bar.style.left = x + "px";
56
				bar.style.left = x + "px";
55
				bar.style.width = barWidth + "px";
57
				bar.style.width = barWidth + "px";
56
				bar.style.height = h + "px";
58
				bar.style.height = h + "px";
57
				bar.setAttribute("fillColor", data[j][i].series.color);
59
				bar.setAttribute("fillColor", data[j][i].series.color);
58
				bar.setAttribute("stroked", "false");
60
				bar.setAttribute("stroked", "false");
59
				bar.style.antialias = "false";
61
				bar.style.antialias = "false";
60
				var fill = document.createElement("v:fill");
62
				var fill = document.createElement("v:fill");
61
				fill.setAttribute("opacity", "0.6");
63
				fill.setAttribute("opacity", "0.6");
62
				bar.appendChild(fill);
64
				bar.appendChild(fill);
63
				if (applyTo) {
65
				if (applyTo) {
64
					applyTo(bar, data[j][i].src);
66
					applyTo(bar, data[j][i].src);
65
				}
67
				}
66
				group.appendChild(bar);
68
				group.appendChild(bar);
67
			}
69
			}
68
		}
70
		}
69
		return group;
71
		return group;
70
	}, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) {
72
	}, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) {
71
		var area = plotarea.getArea();
73
		var area = plotarea.getArea();
72
		var group = dojo.charting.Plotters._group(plotarea);
74
		var group = dojo.charting.Plotters._group(plotarea);
73
		var n = plot.series.length;
75
		var n = plot.series.length;
74
		var data = [];
76
		var data = [];
75
		for (var i = 0; i < n; i++) {
77
		for (var i = 0; i < n; i++) {
76
			var tmp = plot.series[i].data.evaluate(kwArgs);
78
			var tmp = plot.series[i].data.evaluate(kwArgs);
77
			data.push(tmp);
79
			data.push(tmp);
78
		}
80
		}
79
		var space = 6;
81
		var space = 6;
80
		var nPoints = data[0].length;
82
		var nPoints = data[0].length;
81
		if (nPoints == 0) {
83
		if (nPoints == 0) {
82
			return group;
84
			return group;
83
		}
85
		}
84
		var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
86
		var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
85
		var barH = h / n;
87
		var barH = h / n;
86
		var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
88
		var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
87
		for (var i = 0; i < nPoints; i++) {
89
		for (var i = 0; i < nPoints; i++) {
88
			var yStart = area.top + (h * i) + (space * i);
90
			var yStart = area.top + (h * i) + (space * i);
89
			for (var j = 0; j < n; j++) {
91
			for (var j = 0; j < n; j++) {
90
				var value = data[j][i].y;
92
				var value = data[j][i].y;
91
				var y = yStart + (barH * j);
93
				var y = yStart + (barH * j);
92
				var xA = xOrigin;
94
				var xA = xOrigin;
93
				var x = plot.axisX.getCoord(value, plotarea, plot);
95
				var x = plot.axisX.getCoord(value, plotarea, plot);
94
				var w = Math.abs(x - xA);
96
				var w = Math.abs(x - xA);
95
				if (value > 0) {
97
				if (value > 0) {
96
					x = xOrigin;
98
					x = xOrigin;
97
				}
99
				}
98
				var bar = document.createElement("v:rect");
100
				var bar = document.createElement("v:rect");
99
				bar.style.position = "absolute";
101
				bar.style.position = "absolute";
100
				bar.style.top = y + 1 + "px";
102
				bar.style.top = y + 1 + "px";
101
				bar.style.left = xA + "px";
103
				bar.style.left = xA + "px";
102
				bar.style.width = w + "px";
104
				bar.style.width = w + "px";
103
				bar.style.height = barH + "px";
105
				bar.style.height = barH + "px";
104
				bar.setAttribute("fillColor", data[j][i].series.color);
106
				bar.setAttribute("fillColor", data[j][i].series.color);
105
				bar.setAttribute("stroked", "false");
107
				bar.setAttribute("stroked", "false");
106
				bar.style.antialias = "false";
108
				bar.style.antialias = "false";
107
				var fill = document.createElement("v:fill");
109
				var fill = document.createElement("v:fill");
108
				fill.setAttribute("opacity", "0.6");
110
				fill.setAttribute("opacity", "0.6");
109
				bar.appendChild(fill);
111
				bar.appendChild(fill);
110
				if (applyTo) {
112
				if (applyTo) {
111
					applyTo(bar, data[j][i].src);
113
					applyTo(bar, data[j][i].src);
112
				}
114
				}
113
				group.appendChild(bar);
115
				group.appendChild(bar);
114
			}
116
			}
115
		}
117
		}
116
		var space = 4;
118
		var space = 4;
117
		var n = plot.series.length;
119
		var n = plot.series.length;
118
		var h = ((area.bottom - area.top) - (space * (n - 1))) / n;
120
		var h = ((area.bottom - area.top) - (space * (n - 1))) / n;
119
		var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
121
		var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
120
		for (var i = 0; i < n; i++) {
122
		for (var i = 0; i < n; i++) {
121
			var series = plot.series[i];
123
			var series = plot.series[i];
122
			var data = series.data.evaluate(kwArgs);
124
			var data = series.data.evaluate(kwArgs);
123
			var y = area.top + (h * i) + (space * i);
125
			var y = area.top + (h * i) + (space * i);
124
			var value = data[data.length - 1].y;
126
			var value = data[data.length - 1].y;
125
			var xA = xOrigin;
127
			var xA = xOrigin;
126
			var x = plot.axisX.getCoord(value, plotarea, plot);
128
			var x = plot.axisX.getCoord(value, plotarea, plot);
127
			var w = Math.abs(xA - x);
129
			var w = Math.abs(xA - x);
128
			if (value > 0) {
130
			if (value > 0) {
129
				xA = x;
131
				xA = x;
130
				x = xOrigin;
132
				x = xOrigin;
131
			}
133
			}
132
		}
134
		}
133
		return group;
135
		return group;
134
	}, Gantt:function (plotarea, plot, kwArgs, applyTo) {
136
	}, Gantt:function (plotarea, plot, kwArgs, applyTo) {
135
		var area = plotarea.getArea();
137
		var area = plotarea.getArea();
136
		var group = dojo.charting.Plotters._group(plotarea);
138
		var group = dojo.charting.Plotters._group(plotarea);
137
		var n = plot.series.length;
139
		var n = plot.series.length;
138
		var data = [];
140
		var data = [];
139
		for (var i = 0; i < n; i++) {
141
		for (var i = 0; i < n; i++) {
140
			var tmp = plot.series[i].data.evaluate(kwArgs);
142
			var tmp = plot.series[i].data.evaluate(kwArgs);
141
			data.push(tmp);
143
			data.push(tmp);
142
		}
144
		}
143
		var space = 2;
145
		var space = 2;
144
		var nPoints = data[0].length;
146
		var nPoints = data[0].length;
145
		if (nPoints == 0) {
147
		if (nPoints == 0) {
146
			return group;
148
			return group;
147
		}
149
		}
148
		var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
150
		var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
149
		var barH = h / n;
151
		var barH = h / n;
150
		for (var i = 0; i < nPoints; i++) {
152
		for (var i = 0; i < nPoints; i++) {
151
			var yStart = area.top + (h * i) + (space * i);
153
			var yStart = area.top + (h * i) + (space * i);
152
			for (var j = 0; j < n; j++) {
154
			for (var j = 0; j < n; j++) {
153
				var high = data[j][i].high;
155
				var high = data[j][i].high;
154
				var low = data[j][i].low;
156
				var low = data[j][i].low;
155
				if (low > high) {
157
				if (low > high) {
156
					var t = high;
158
					var t = high;
157
					high = low;
159
					high = low;
158
					low = t;
160
					low = t;
159
				}
161
				}
160
				var x = plot.axisX.getCoord(low, plotarea, plot);
162
				var x = plot.axisX.getCoord(low, plotarea, plot);
161
				var w = plot.axisX.getCoord(high, plotarea, plot) - x;
163
				var w = plot.axisX.getCoord(high, plotarea, plot) - x;
162
				var y = yStart + (barH * j);
164
				var y = yStart + (barH * j);
163
				var bar = document.createElement("v:rect");
165
				var bar = document.createElement("v:rect");
164
				bar.style.position = "absolute";
166
				bar.style.position = "absolute";
165
				bar.style.top = y + 1 + "px";
167
				bar.style.top = y + 1 + "px";
166
				bar.style.left = x + "px";
168
				bar.style.left = x + "px";
167
				bar.style.width = w + "px";
169
				bar.style.width = w + "px";
168
				bar.style.height = barH + "px";
170
				bar.style.height = barH + "px";
169
				bar.setAttribute("fillColor", data[j][i].series.color);
171
				bar.setAttribute("fillColor", data[j][i].series.color);
170
				bar.setAttribute("stroked", "false");
172
				bar.setAttribute("stroked", "false");
171
				bar.style.antialias = "false";
173
				bar.style.antialias = "false";
172
				var fill = document.createElement("v:fill");
174
				var fill = document.createElement("v:fill");
173
				fill.setAttribute("opacity", "0.6");
175
				fill.setAttribute("opacity", "0.6");
174
				bar.appendChild(fill);
176
				bar.appendChild(fill);
175
				if (applyTo) {
177
				if (applyTo) {
176
					applyTo(bar, data[j][i].src);
178
					applyTo(bar, data[j][i].src);
177
				}
179
				}
178
				group.appendChild(bar);
180
				group.appendChild(bar);
179
			}
181
			}
180
		}
182
		}
181
		return group;
183
		return group;
182
	}, StackedArea:function (plotarea, plot, kwArgs, applyTo) {
184
	}, StackedArea:function (plotarea, plot, kwArgs, applyTo) {
183
		var area = plotarea.getArea();
185
		var area = plotarea.getArea();
184
		var group = dojo.charting.Plotters._group(plotarea);
186
		var group = dojo.charting.Plotters._group(plotarea);
185
		var n = plot.series.length;
187
		var n = plot.series.length;
186
		var data = [];
188
		var data = [];
187
		var totals = [];
189
		var totals = [];
188
		for (var i = 0; i < n; i++) {
190
		for (var i = 0; i < n; i++) {
189
			var tmp = plot.series[i].data.evaluate(kwArgs);
191
			var tmp = plot.series[i].data.evaluate(kwArgs);
190
			for (var j = 0; j < tmp.length; j++) {
192
			for (var j = 0; j < tmp.length; j++) {
191
				if (i == 0) {
193
				if (i == 0) {
192
					totals.push(tmp[j].y);
194
					totals.push(tmp[j].y);
193
				} else {
195
				} else {
194
					totals[j] += tmp[j].y;
196
					totals[j] += tmp[j].y;
195
				}
197
				}
196
				tmp[j].y = totals[j];
198
				tmp[j].y = totals[j];
197
			}
199
			}
198
			data.push(tmp);
200
			data.push(tmp);
199
		}
201
		}
200
		for (var i = n - 1; i >= 0; i--) {
202
		for (var i = n - 1; i >= 0; i--) {
201
			var path = document.createElement("v:shape");
203
			var path = document.createElement("v:shape");
202
			path.setAttribute("strokeweight", "1px");
204
			path.setAttribute("strokeweight", "1px");
203
			path.setAttribute("strokecolor", data[i][0].series.color);
205
			path.setAttribute("strokecolor", data[i][0].series.color);
204
			path.setAttribute("fillcolor", data[i][0].series.color);
206
			path.setAttribute("fillcolor", data[i][0].series.color);
205
			path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
207
			path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
206
			path.style.position = "absolute";
208
			path.style.position = "absolute";
207
			path.style.top = "0px";
209
			path.style.top = "0px";
208
			path.style.left = "0px";
210
			path.style.left = "0px";
209
			path.style.width = area.right - area.left + "px";
211
			path.style.width = area.right - area.left + "px";
210
			path.style.height = area.bottom - area.top + "px";
212
			path.style.height = area.bottom - area.top + "px";
211
			var stroke = document.createElement("v:stroke");
213
			var stroke = document.createElement("v:stroke");
212
			stroke.setAttribute("opacity", "0.8");
214
			stroke.setAttribute("opacity", "0.8");
213
			path.appendChild(stroke);
215
			path.appendChild(stroke);
214
			var fill = document.createElement("v:fill");
216
			var fill = document.createElement("v:fill");
215
			fill.setAttribute("opacity", "0.4");
217
			fill.setAttribute("opacity", "0.4");
216
			path.appendChild(fill);
218
			path.appendChild(fill);
217
			var cmd = [];
219
			var cmd = [];
218
			var r = 3;
220
			var r = 3;
219
			for (var j = 0; j < data[i].length; j++) {
221
			for (var j = 0; j < data[i].length; j++) {
220
				var values = data[i];
222
				var values = data[i];
221
				var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
223
				var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
222
				var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
224
				var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
223
				if (j == 0) {
225
				if (j == 0) {
224
					cmd.push("m");
226
					cmd.push("m");
225
					cmd.push(x + "," + y);
227
					cmd.push(x + "," + y);
226
				} else {
228
				} else {
227
					cmd.push("l");
229
					cmd.push("l");
228
					cmd.push(x + "," + y);
230
					cmd.push(x + "," + y);
229
				}
231
				}
230
				var c = document.createElement("v:oval");
232
				var c = document.createElement("v:oval");
231
				c.setAttribute("strokeweight", "1px");
233
				c.setAttribute("strokeweight", "1px");
232
				c.setAttribute("strokecolor", values[j].series.color);
234
				c.setAttribute("strokecolor", values[j].series.color);
233
				c.setAttribute("fillcolor", values[j].series.color);
235
				c.setAttribute("fillcolor", values[j].series.color);
234
				var str = document.createElement("v:stroke");
236
				var str = document.createElement("v:stroke");
235
				str.setAttribute("opacity", "0.8");
237
				str.setAttribute("opacity", "0.8");
236
				c.appendChild(str);
238
				c.appendChild(str);
237
				str = document.createElement("v:fill");
239
				str = document.createElement("v:fill");
238
				str.setAttribute("opacity", "0.6");
240
				str.setAttribute("opacity", "0.6");
239
				c.appendChild(str);
241
				c.appendChild(str);
240
				var s = c.style;
242
				var s = c.style;
241
				s.position = "absolute";
243
				s.position = "absolute";
242
				s.top = (y - r) + "px";
244
				s.top = (y - r) + "px";
243
				s.left = (x - r) + "px";
245
				s.left = (x - r) + "px";
244
				s.width = (r * 2) + "px";
246
				s.width = (r * 2) + "px";
245
				s.height = (r * 2) + "px";
247
				s.height = (r * 2) + "px";
246
				group.appendChild(c);
248
				group.appendChild(c);
247
				if (applyTo) {
249
				if (applyTo) {
248
					applyTo(c, data[j].src);
250
					applyTo(c, data[j].src);
249
				}
251
				}
250
			}
252
			}
251
			if (i == 0) {
253
			if (i == 0) {
252
				cmd.push("l");
254
				cmd.push("l");
253
				cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
255
				cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
254
				cmd.push("l");
256
				cmd.push("l");
255
				cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
257
				cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
256
			} else {
258
			} else {
257
				var values = data[i - 1];
259
				var values = data[i - 1];
258
				cmd.push("l");
260
				cmd.push("l");
259
				cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
261
				cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
260
				for (var j = values.length - 2; j >= 0; j--) {
262
				for (var j = values.length - 2; j >= 0; j--) {
261
					var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
263
					var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
262
					var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
264
					var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
263
					cmd.push("l");
265
					cmd.push("l");
264
					cmd.push(x + "," + y);
266
					cmd.push(x + "," + y);
265
				}
267
				}
266
			}
268
			}
267
			path.setAttribute("path", cmd.join(" ") + " x e");
269
			path.setAttribute("path", cmd.join(" ") + " x e");
268
			group.appendChild(path);
270
			group.appendChild(path);
269
		}
271
		}
270
		return group;
272
		return group;
271
	}, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) {
273
	}, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) {
272
		var tension = 3;
274
		var tension = 3;
273
		var area = plotarea.getArea();
275
		var area = plotarea.getArea();
274
		var group = dojo.charting.Plotters._group(plotarea);
276
		var group = dojo.charting.Plotters._group(plotarea);
275
		var n = plot.series.length;
277
		var n = plot.series.length;
276
		var data = [];
278
		var data = [];
277
		var totals = [];
279
		var totals = [];
278
		for (var i = 0; i < n; i++) {
280
		for (var i = 0; i < n; i++) {
279
			var tmp = plot.series[i].data.evaluate(kwArgs);
281
			var tmp = plot.series[i].data.evaluate(kwArgs);
280
			for (var j = 0; j < tmp.length; j++) {
282
			for (var j = 0; j < tmp.length; j++) {
281
				if (i == 0) {
283
				if (i == 0) {
282
					totals.push(tmp[j].y);
284
					totals.push(tmp[j].y);
283
				} else {
285
				} else {
284
					totals[j] += tmp[j].y;
286
					totals[j] += tmp[j].y;
285
				}
287
				}
286
				tmp[j].y = totals[j];
288
				tmp[j].y = totals[j];
287
			}
289
			}
288
			data.push(tmp);
290
			data.push(tmp);
289
		}
291
		}
290
		for (var i = n - 1; i >= 0; i--) {
292
		for (var i = n - 1; i >= 0; i--) {
291
			var path = document.createElement("v:shape");
293
			var path = document.createElement("v:shape");
292
			path.setAttribute("strokeweight", "1px");
294
			path.setAttribute("strokeweight", "1px");
293
			path.setAttribute("strokecolor", data[i][0].series.color);
295
			path.setAttribute("strokecolor", data[i][0].series.color);
294
			path.setAttribute("fillcolor", data[i][0].series.color);
296
			path.setAttribute("fillcolor", data[i][0].series.color);
295
			path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
297
			path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
296
			path.style.position = "absolute";
298
			path.style.position = "absolute";
297
			path.style.top = "0px";
299
			path.style.top = "0px";
298
			path.style.left = "0px";
300
			path.style.left = "0px";
299
			path.style.width = area.right - area.left + "px";
301
			path.style.width = area.right - area.left + "px";
300
			path.style.height = area.bottom - area.top + "px";
302
			path.style.height = area.bottom - area.top + "px";
301
			var stroke = document.createElement("v:stroke");
303
			var stroke = document.createElement("v:stroke");
302
			stroke.setAttribute("opacity", "0.8");
304
			stroke.setAttribute("opacity", "0.8");
303
			path.appendChild(stroke);
305
			path.appendChild(stroke);
304
			var fill = document.createElement("v:fill");
306
			var fill = document.createElement("v:fill");
305
			fill.setAttribute("opacity", "0.4");
307
			fill.setAttribute("opacity", "0.4");
306
			path.appendChild(fill);
308
			path.appendChild(fill);
307
			var cmd = [];
309
			var cmd = [];
308
			var r = 3;
310
			var r = 3;
309
			for (var j = 0; j < data[i].length; j++) {
311
			for (var j = 0; j < data[i].length; j++) {
310
				var values = data[i];
312
				var values = data[i];
311
				var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
313
				var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
312
				var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
314
				var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
313
				if (j == 0) {
315
				if (j == 0) {
314
					cmd.push("m");
316
					cmd.push("m");
315
					cmd.push(x + "," + y);
317
					cmd.push(x + "," + y);
316
				} else {
318
				} else {
317
					var lastx = Math.round(plot.axisX.getCoord(values[j - 1].x, plotarea, plot));
319
					var lastx = Math.round(plot.axisX.getCoord(values[j - 1].x, plotarea, plot));
318
					var lasty = Math.round(plot.axisY.getCoord(values[j - 1].y, plotarea, plot));
320
					var lasty = Math.round(plot.axisY.getCoord(values[j - 1].y, plotarea, plot));
319
					var dx = x - lastx;
321
					var dx = x - lastx;
320
					var dy = y - lasty;
322
					var dy = y - lasty;
321
					cmd.push("c");
323
					cmd.push("c");
322
					var cx = Math.round((x - (tension - 1) * (dx / tension)));
324
					var cx = Math.round((x - (tension - 1) * (dx / tension)));
323
					cmd.push(cx + "," + lasty);
325
					cmd.push(cx + "," + lasty);
324
					cx = Math.round((x - (dx / tension)));
326
					cx = Math.round((x - (dx / tension)));
325
					cmd.push(cx + "," + y);
327
					cmd.push(cx + "," + y);
326
					cmd.push(x + "," + y);
328
					cmd.push(x + "," + y);
327
				}
329
				}
328
				var c = document.createElement("v:oval");
330
				var c = document.createElement("v:oval");
329
				c.setAttribute("strokeweight", "1px");
331
				c.setAttribute("strokeweight", "1px");
330
				c.setAttribute("strokecolor", values[j].series.color);
332
				c.setAttribute("strokecolor", values[j].series.color);
331
				c.setAttribute("fillcolor", values[j].series.color);
333
				c.setAttribute("fillcolor", values[j].series.color);
332
				var str = document.createElement("v:stroke");
334
				var str = document.createElement("v:stroke");
333
				str.setAttribute("opacity", "0.8");
335
				str.setAttribute("opacity", "0.8");
334
				c.appendChild(str);
336
				c.appendChild(str);
335
				str = document.createElement("v:fill");
337
				str = document.createElement("v:fill");
336
				str.setAttribute("opacity", "0.6");
338
				str.setAttribute("opacity", "0.6");
337
				c.appendChild(str);
339
				c.appendChild(str);
338
				var s = c.style;
340
				var s = c.style;
339
				s.position = "absolute";
341
				s.position = "absolute";
340
				s.top = (y - r) + "px";
342
				s.top = (y - r) + "px";
341
				s.left = (x - r) + "px";
343
				s.left = (x - r) + "px";
342
				s.width = (r * 2) + "px";
344
				s.width = (r * 2) + "px";
343
				s.height = (r * 2) + "px";
345
				s.height = (r * 2) + "px";
344
				group.appendChild(c);
346
				group.appendChild(c);
345
				if (applyTo) {
347
				if (applyTo) {
346
					applyTo(c, data[j].src);
348
					applyTo(c, data[j].src);
347
				}
349
				}
348
			}
350
			}
349
			if (i == 0) {
351
			if (i == 0) {
350
				cmd.push("l");
352
				cmd.push("l");
351
				cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
353
				cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
352
				cmd.push("l");
354
				cmd.push("l");
353
				cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
355
				cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
354
			} else {
356
			} else {
355
				var values = data[i - 1];
357
				var values = data[i - 1];
356
				cmd.push("l");
358
				cmd.push("l");
357
				cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
359
				cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
358
				for (var j = values.length - 2; j >= 0; j--) {
360
				for (var j = values.length - 2; j >= 0; j--) {
359
					var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
361
					var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
360
					var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
362
					var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
361
					var lastx = Math.round(plot.axisX.getCoord(values[j + 1].x, plotarea, plot));
363
					var lastx = Math.round(plot.axisX.getCoord(values[j + 1].x, plotarea, plot));
362
					var lasty = Math.round(plot.axisY.getCoord(values[j + 1].y, plotarea, plot));
364
					var lasty = Math.round(plot.axisY.getCoord(values[j + 1].y, plotarea, plot));
363
					var dx = x - lastx;
365
					var dx = x - lastx;
364
					var dy = y - lasty;
366
					var dy = y - lasty;
365
					cmd.push("c");
367
					cmd.push("c");
366
					var cx = Math.round((x - (tension - 1) * (dx / tension)));
368
					var cx = Math.round((x - (tension - 1) * (dx / tension)));
367
					cmd.push(cx + "," + lasty);
369
					cmd.push(cx + "," + lasty);
368
					cx = Math.round((x - (dx / tension)));
370
					cx = Math.round((x - (dx / tension)));
369
					cmd.push(cx + "," + y);
371
					cmd.push(cx + "," + y);
370
					cmd.push(x + "," + y);
372
					cmd.push(x + "," + y);
371
				}
373
				}
372
			}
374
			}
373
			path.setAttribute("path", cmd.join(" ") + " x e");
375
			path.setAttribute("path", cmd.join(" ") + " x e");
374
			group.appendChild(path);
376
			group.appendChild(path);
375
		}
377
		}
376
		return group;
378
		return group;
377
	}, DataBar:function (data, plotarea, plot, applyTo) {
379
	}, DataBar:function (data, plotarea, plot, applyTo) {
378
		var area = plotarea.getArea();
380
		var area = plotarea.getArea();
379
		var group = dojo.charting.Plotters._group(plotarea);
381
		var group = dojo.charting.Plotters._group(plotarea);
380
		var n = data.length;
382
		var n = data.length;
381
		var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower);
383
		var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower);
382
		var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
384
		var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
383
		for (var i = 0; i < n; i++) {
385
		for (var i = 0; i < n; i++) {
384
			var value = data[i].y;
386
			var value = data[i].y;
385
			var yA = yOrigin;
387
			var yA = yOrigin;
386
			var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2) + 1;
388
			var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2) + 1;
387
			var y = plot.axisY.getCoord(value, plotarea, plot);
389
			var y = plot.axisY.getCoord(value, plotarea, plot);
388
			var h = Math.abs(yA - y);
390
			var h = Math.abs(yA - y);
389
			if (value < plot.axisX.origin) {
391
			if (value < plot.axisX.origin) {
390
				yA = y;
392
				yA = y;
391
				y = yOrigin;
393
				y = yOrigin;
392
			}
394
			}
393
			var bar = document.createElement("v:rect");
395
			var bar = document.createElement("v:rect");
394
			bar.style.position = "absolute";
396
			bar.style.position = "absolute";
395
			bar.style.top = y + 1 + "px";
397
			bar.style.top = y + 1 + "px";
396
			bar.style.left = x + "px";
398
			bar.style.left = x + "px";
397
			bar.style.width = w + "px";
399
			bar.style.width = w + "px";
398
			bar.style.height = h + "px";
400
			bar.style.height = h + "px";
399
			bar.setAttribute("fillColor", data[i].series.color);
401
			bar.setAttribute("fillColor", data[i].series.color);
400
			bar.setAttribute("stroked", "false");
402
			bar.setAttribute("stroked", "false");
401
			bar.style.antialias = "false";
403
			bar.style.antialias = "false";
402
			var fill = document.createElement("v:fill");
404
			var fill = document.createElement("v:fill");
403
			fill.setAttribute("opacity", "0.6");
405
			fill.setAttribute("opacity", "0.6");
404
			bar.appendChild(fill);
406
			bar.appendChild(fill);
405
			if (applyTo) {
407
			if (applyTo) {
406
				applyTo(bar, data[i].src);
408
				applyTo(bar, data[i].src);
407
			}
409
			}
408
			group.appendChild(bar);
410
			group.appendChild(bar);
409
		}
411
		}
410
		return group;
412
		return group;
411
	}, Line:function (data, plotarea, plot, applyTo) {
413
	}, Line:function (data, plotarea, plot, applyTo) {
412
		var area = plotarea.getArea();
414
		var area = plotarea.getArea();
413
		var group = dojo.charting.Plotters._group(plotarea);
415
		var group = dojo.charting.Plotters._group(plotarea);
414
		if (data.length == 0) {
416
		if (data.length == 0) {
415
			return group;
417
			return group;
416
		}
418
		}
417
		var path = document.createElement("v:shape");
419
		var path = document.createElement("v:shape");
418
		path.setAttribute("strokeweight", "2px");
420
		path.setAttribute("strokeweight", "2px");
419
		path.setAttribute("strokecolor", data[0].series.color);
421
		path.setAttribute("strokecolor", data[0].series.color);
420
		path.setAttribute("fillcolor", "none");
422
		path.setAttribute("fillcolor", "none");
421
		path.setAttribute("filled", "false");
423
		path.setAttribute("filled", "false");
422
		path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
424
		path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
423
		path.style.position = "absolute";
425
		path.style.position = "absolute";
424
		path.style.top = "0px";
426
		path.style.top = "0px";
425
		path.style.left = "0px";
427
		path.style.left = "0px";
426
		path.style.width = area.right - area.left + "px";
428
		path.style.width = area.right - area.left + "px";
427
		path.style.height = area.bottom - area.top + "px";
429
		path.style.height = area.bottom - area.top + "px";
428
		var stroke = document.createElement("v:stroke");
430
		var stroke = document.createElement("v:stroke");
429
		stroke.setAttribute("opacity", "0.8");
431
		stroke.setAttribute("opacity", "0.8");
430
		path.appendChild(stroke);
432
		path.appendChild(stroke);
431
		var cmd = [];
433
		var cmd = [];
432
		var r = 3;
434
		var r = 3;
433
		for (var i = 0; i < data.length; i++) {
435
		for (var i = 0; i < data.length; i++) {
434
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
436
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
435
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
437
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
436
			if (i == 0) {
438
			if (i == 0) {
437
				cmd.push("m");
439
				cmd.push("m");
438
				cmd.push(x + "," + y);
440
				cmd.push(x + "," + y);
439
			} else {
441
			} else {
440
				cmd.push("l");
442
				cmd.push("l");
441
				cmd.push(x + "," + y);
443
				cmd.push(x + "," + y);
442
			}
444
			}
443
			var c = document.createElement("v:oval");
445
			var c = document.createElement("v:oval");
444
			c.setAttribute("strokeweight", "1px");
446
			c.setAttribute("strokeweight", "1px");
445
			c.setAttribute("strokecolor", data[i].series.color);
447
			c.setAttribute("strokecolor", data[i].series.color);
446
			c.setAttribute("fillcolor", data[i].series.color);
448
			c.setAttribute("fillcolor", data[i].series.color);
447
			var str = document.createElement("v:stroke");
449
			var str = document.createElement("v:stroke");
448
			str.setAttribute("opacity", "0.8");
450
			str.setAttribute("opacity", "0.8");
449
			c.appendChild(str);
451
			c.appendChild(str);
450
			str = document.createElement("v:fill");
452
			str = document.createElement("v:fill");
451
			str.setAttribute("opacity", "0.6");
453
			str.setAttribute("opacity", "0.6");
452
			c.appendChild(str);
454
			c.appendChild(str);
453
			var s = c.style;
455
			var s = c.style;
454
			s.position = "absolute";
456
			s.position = "absolute";
455
			s.top = (y - r) + "px";
457
			s.top = (y - r) + "px";
456
			s.left = (x - r) + "px";
458
			s.left = (x - r) + "px";
457
			s.width = (r * 2) + "px";
459
			s.width = (r * 2) + "px";
458
			s.height = (r * 2) + "px";
460
			s.height = (r * 2) + "px";
459
			group.appendChild(c);
461
			group.appendChild(c);
460
			if (applyTo) {
462
			if (applyTo) {
461
				applyTo(c, data[i].src);
463
				applyTo(c, data[i].src);
462
			}
464
			}
463
		}
465
		}
464
		path.setAttribute("path", cmd.join(" ") + " e");
466
		path.setAttribute("path", cmd.join(" ") + " e");
465
		group.appendChild(path);
467
		group.appendChild(path);
466
		return group;
468
		return group;
467
	}, CurvedLine:function (data, plotarea, plot, applyTo) {
469
	}, CurvedLine:function (data, plotarea, plot, applyTo) {
468
		var tension = 3;
470
		var tension = 3;
469
		var area = plotarea.getArea();
471
		var area = plotarea.getArea();
470
		var group = dojo.charting.Plotters._group(plotarea);
472
		var group = dojo.charting.Plotters._group(plotarea);
471
		if (data.length == 0) {
473
		if (data.length == 0) {
472
			return group;
474
			return group;
473
		}
475
		}
474
		var path = document.createElement("v:shape");
476
		var path = document.createElement("v:shape");
475
		path.setAttribute("strokeweight", "2px");
477
		path.setAttribute("strokeweight", "2px");
476
		path.setAttribute("strokecolor", data[0].series.color);
478
		path.setAttribute("strokecolor", data[0].series.color);
477
		path.setAttribute("fillcolor", "none");
479
		path.setAttribute("fillcolor", "none");
478
		path.setAttribute("filled", "false");
480
		path.setAttribute("filled", "false");
479
		path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
481
		path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
480
		path.style.position = "absolute";
482
		path.style.position = "absolute";
481
		path.style.top = "0px";
483
		path.style.top = "0px";
482
		path.style.left = "0px";
484
		path.style.left = "0px";
483
		path.style.width = area.right - area.left + "px";
485
		path.style.width = area.right - area.left + "px";
484
		path.style.height = area.bottom - area.top + "px";
486
		path.style.height = area.bottom - area.top + "px";
485
		var stroke = document.createElement("v:stroke");
487
		var stroke = document.createElement("v:stroke");
486
		stroke.setAttribute("opacity", "0.8");
488
		stroke.setAttribute("opacity", "0.8");
487
		path.appendChild(stroke);
489
		path.appendChild(stroke);
488
		var cmd = [];
490
		var cmd = [];
489
		var r = 3;
491
		var r = 3;
490
		for (var i = 0; i < data.length; i++) {
492
		for (var i = 0; i < data.length; i++) {
491
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
493
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
492
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
494
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
493
			if (i == 0) {
495
			if (i == 0) {
494
				cmd.push("m");
496
				cmd.push("m");
495
				cmd.push(x + "," + y);
497
				cmd.push(x + "," + y);
496
			} else {
498
			} else {
497
				var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));
499
				var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));
498
				var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));
500
				var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));
499
				var dx = x - lastx;
501
				var dx = x - lastx;
500
				var dy = y - lasty;
502
				var dy = y - lasty;
501
				cmd.push("c");
503
				cmd.push("c");
502
				var cx = Math.round((x - (tension - 1) * (dx / tension)));
504
				var cx = Math.round((x - (tension - 1) * (dx / tension)));
503
				cmd.push(cx + "," + lasty);
505
				cmd.push(cx + "," + lasty);
504
				cx = Math.round((x - (dx / tension)));
506
				cx = Math.round((x - (dx / tension)));
505
				cmd.push(cx + "," + y);
507
				cmd.push(cx + "," + y);
506
				cmd.push(x + "," + y);
508
				cmd.push(x + "," + y);
507
			}
509
			}
508
			var c = document.createElement("v:oval");
510
			var c = document.createElement("v:oval");
509
			c.setAttribute("strokeweight", "1px");
511
			c.setAttribute("strokeweight", "1px");
510
			c.setAttribute("strokecolor", data[i].series.color);
512
			c.setAttribute("strokecolor", data[i].series.color);
511
			c.setAttribute("fillcolor", data[i].series.color);
513
			c.setAttribute("fillcolor", data[i].series.color);
512
			var str = document.createElement("v:stroke");
514
			var str = document.createElement("v:stroke");
513
			str.setAttribute("opacity", "0.8");
515
			str.setAttribute("opacity", "0.8");
514
			c.appendChild(str);
516
			c.appendChild(str);
515
			str = document.createElement("v:fill");
517
			str = document.createElement("v:fill");
516
			str.setAttribute("opacity", "0.6");
518
			str.setAttribute("opacity", "0.6");
517
			c.appendChild(str);
519
			c.appendChild(str);
518
			var s = c.style;
520
			var s = c.style;
519
			s.position = "absolute";
521
			s.position = "absolute";
520
			s.top = (y - r) + "px";
522
			s.top = (y - r) + "px";
521
			s.left = (x - r) + "px";
523
			s.left = (x - r) + "px";
522
			s.width = (r * 2) + "px";
524
			s.width = (r * 2) + "px";
523
			s.height = (r * 2) + "px";
525
			s.height = (r * 2) + "px";
524
			group.appendChild(c);
526
			group.appendChild(c);
525
			if (applyTo) {
527
			if (applyTo) {
526
				applyTo(c, data[i].src);
528
				applyTo(c, data[i].src);
527
			}
529
			}
528
		}
530
		}
529
		path.setAttribute("path", cmd.join(" ") + " e");
531
		path.setAttribute("path", cmd.join(" ") + " e");
530
		group.appendChild(path);
532
		group.appendChild(path);
531
		return group;
533
		return group;
532
	}, Area:function (data, plotarea, plot, applyTo) {
534
	}, Area:function (data, plotarea, plot, applyTo) {
533
		var area = plotarea.getArea();
535
		var area = plotarea.getArea();
534
		var group = dojo.charting.Plotters._group(plotarea);
536
		var group = dojo.charting.Plotters._group(plotarea);
535
		if (data.length == 0) {
537
		if (data.length == 0) {
536
			return group;
538
			return group;
537
		}
539
		}
538
		var path = document.createElement("v:shape");
540
		var path = document.createElement("v:shape");
539
		path.setAttribute("strokeweight", "1px");
541
		path.setAttribute("strokeweight", "1px");
540
		path.setAttribute("strokecolor", data[0].series.color);
542
		path.setAttribute("strokecolor", data[0].series.color);
541
		path.setAttribute("fillcolor", data[0].series.color);
543
		path.setAttribute("fillcolor", data[0].series.color);
542
		path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
544
		path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
543
		path.style.position = "absolute";
545
		path.style.position = "absolute";
544
		path.style.top = "0px";
546
		path.style.top = "0px";
545
		path.style.left = "0px";
547
		path.style.left = "0px";
546
		path.style.width = area.right - area.left + "px";
548
		path.style.width = area.right - area.left + "px";
547
		path.style.height = area.bottom - area.top + "px";
549
		path.style.height = area.bottom - area.top + "px";
548
		var stroke = document.createElement("v:stroke");
550
		var stroke = document.createElement("v:stroke");
549
		stroke.setAttribute("opacity", "0.8");
551
		stroke.setAttribute("opacity", "0.8");
550
		path.appendChild(stroke);
552
		path.appendChild(stroke);
551
		var fill = document.createElement("v:fill");
553
		var fill = document.createElement("v:fill");
552
		fill.setAttribute("opacity", "0.4");
554
		fill.setAttribute("opacity", "0.4");
553
		path.appendChild(fill);
555
		path.appendChild(fill);
554
		var cmd = [];
556
		var cmd = [];
555
		var r = 3;
557
		var r = 3;
556
		for (var i = 0; i < data.length; i++) {
558
		for (var i = 0; i < data.length; i++) {
557
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
559
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
558
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
560
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
559
			if (i == 0) {
561
			if (i == 0) {
560
				cmd.push("m");
562
				cmd.push("m");
561
				cmd.push(x + "," + y);
563
				cmd.push(x + "," + y);
562
			} else {
564
			} else {
563
				cmd.push("l");
565
				cmd.push("l");
564
				cmd.push(x + "," + y);
566
				cmd.push(x + "," + y);
565
			}
567
			}
566
			var c = document.createElement("v:oval");
568
			var c = document.createElement("v:oval");
567
			c.setAttribute("strokeweight", "1px");
569
			c.setAttribute("strokeweight", "1px");
568
			c.setAttribute("strokecolor", data[i].series.color);
570
			c.setAttribute("strokecolor", data[i].series.color);
569
			c.setAttribute("fillcolor", data[i].series.color);
571
			c.setAttribute("fillcolor", data[i].series.color);
570
			var str = document.createElement("v:stroke");
572
			var str = document.createElement("v:stroke");
571
			str.setAttribute("opacity", "0.8");
573
			str.setAttribute("opacity", "0.8");
572
			c.appendChild(str);
574
			c.appendChild(str);
573
			str = document.createElement("v:fill");
575
			str = document.createElement("v:fill");
574
			str.setAttribute("opacity", "0.6");
576
			str.setAttribute("opacity", "0.6");
575
			c.appendChild(str);
577
			c.appendChild(str);
576
			var s = c.style;
578
			var s = c.style;
577
			s.position = "absolute";
579
			s.position = "absolute";
578
			s.top = (y - r) + "px";
580
			s.top = (y - r) + "px";
579
			s.left = (x - r) + "px";
581
			s.left = (x - r) + "px";
580
			s.width = (r * 2) + "px";
582
			s.width = (r * 2) + "px";
581
			s.height = (r * 2) + "px";
583
			s.height = (r * 2) + "px";
582
			group.appendChild(c);
584
			group.appendChild(c);
583
			if (applyTo) {
585
			if (applyTo) {
584
				applyTo(c, data[i].src);
586
				applyTo(c, data[i].src);
585
			}
587
			}
586
		}
588
		}
587
		cmd.push("l");
589
		cmd.push("l");
588
		cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
590
		cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
589
		cmd.push("l");
591
		cmd.push("l");
590
		cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
592
		cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
591
		path.setAttribute("path", cmd.join(" ") + " x e");
593
		path.setAttribute("path", cmd.join(" ") + " x e");
592
		group.appendChild(path);
594
		group.appendChild(path);
593
		return group;
595
		return group;
594
	}, CurvedArea:function (data, plotarea, plot, applyTo) {
596
	}, CurvedArea:function (data, plotarea, plot, applyTo) {
595
		var tension = 3;
597
		var tension = 3;
596
		var area = plotarea.getArea();
598
		var area = plotarea.getArea();
597
		var group = dojo.charting.Plotters._group(plotarea);
599
		var group = dojo.charting.Plotters._group(plotarea);
598
		if (data.length == 0) {
600
		if (data.length == 0) {
599
			return group;
601
			return group;
600
		}
602
		}
601
		var path = document.createElement("v:shape");
603
		var path = document.createElement("v:shape");
602
		path.setAttribute("strokeweight", "1px");
604
		path.setAttribute("strokeweight", "1px");
603
		path.setAttribute("strokecolor", data[0].series.color);
605
		path.setAttribute("strokecolor", data[0].series.color);
604
		path.setAttribute("fillcolor", data[0].series.color);
606
		path.setAttribute("fillcolor", data[0].series.color);
605
		path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
607
		path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
606
		path.style.position = "absolute";
608
		path.style.position = "absolute";
607
		path.style.top = "0px";
609
		path.style.top = "0px";
608
		path.style.left = "0px";
610
		path.style.left = "0px";
609
		path.style.width = area.right - area.left + "px";
611
		path.style.width = area.right - area.left + "px";
610
		path.style.height = area.bottom - area.top + "px";
612
		path.style.height = area.bottom - area.top + "px";
611
		var stroke = document.createElement("v:stroke");
613
		var stroke = document.createElement("v:stroke");
612
		stroke.setAttribute("opacity", "0.8");
614
		stroke.setAttribute("opacity", "0.8");
613
		path.appendChild(stroke);
615
		path.appendChild(stroke);
614
		var fill = document.createElement("v:fill");
616
		var fill = document.createElement("v:fill");
615
		fill.setAttribute("opacity", "0.4");
617
		fill.setAttribute("opacity", "0.4");
616
		path.appendChild(fill);
618
		path.appendChild(fill);
617
		var cmd = [];
619
		var cmd = [];
618
		var r = 3;
620
		var r = 3;
619
		for (var i = 0; i < data.length; i++) {
621
		for (var i = 0; i < data.length; i++) {
620
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
622
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
621
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
623
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
622
			if (i == 0) {
624
			if (i == 0) {
623
				cmd.push("m");
625
				cmd.push("m");
624
				cmd.push(x + "," + y);
626
				cmd.push(x + "," + y);
625
			} else {
627
			} else {
626
				var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));
628
				var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));
627
				var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));
629
				var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));
628
				var dx = x - lastx;
630
				var dx = x - lastx;
629
				var dy = y - lasty;
631
				var dy = y - lasty;
630
				cmd.push("c");
632
				cmd.push("c");
631
				var cx = Math.round((x - (tension - 1) * (dx / tension)));
633
				var cx = Math.round((x - (tension - 1) * (dx / tension)));
632
				cmd.push(cx + "," + lasty);
634
				cmd.push(cx + "," + lasty);
633
				cx = Math.round((x - (dx / tension)));
635
				cx = Math.round((x - (dx / tension)));
634
				cmd.push(cx + "," + y);
636
				cmd.push(cx + "," + y);
635
				cmd.push(x + "," + y);
637
				cmd.push(x + "," + y);
636
			}
638
			}
637
			var c = document.createElement("v:oval");
639
			var c = document.createElement("v:oval");
638
			c.setAttribute("strokeweight", "1px");
640
			c.setAttribute("strokeweight", "1px");
639
			c.setAttribute("strokecolor", data[i].series.color);
641
			c.setAttribute("strokecolor", data[i].series.color);
640
			c.setAttribute("fillcolor", data[i].series.color);
642
			c.setAttribute("fillcolor", data[i].series.color);
641
			var str = document.createElement("v:stroke");
643
			var str = document.createElement("v:stroke");
642
			str.setAttribute("opacity", "0.8");
644
			str.setAttribute("opacity", "0.8");
643
			c.appendChild(str);
645
			c.appendChild(str);
644
			str = document.createElement("v:fill");
646
			str = document.createElement("v:fill");
645
			str.setAttribute("opacity", "0.6");
647
			str.setAttribute("opacity", "0.6");
646
			c.appendChild(str);
648
			c.appendChild(str);
647
			var s = c.style;
649
			var s = c.style;
648
			s.position = "absolute";
650
			s.position = "absolute";
649
			s.top = (y - r) + "px";
651
			s.top = (y - r) + "px";
650
			s.left = (x - r) + "px";
652
			s.left = (x - r) + "px";
651
			s.width = (r * 2) + "px";
653
			s.width = (r * 2) + "px";
652
			s.height = (r * 2) + "px";
654
			s.height = (r * 2) + "px";
653
			group.appendChild(c);
655
			group.appendChild(c);
654
			if (applyTo) {
656
			if (applyTo) {
655
				applyTo(c, data[i].src);
657
				applyTo(c, data[i].src);
656
			}
658
			}
657
		}
659
		}
658
		cmd.push("l");
660
		cmd.push("l");
659
		cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
661
		cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
660
		cmd.push("l");
662
		cmd.push("l");
661
		cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
663
		cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
662
		path.setAttribute("path", cmd.join(" ") + " x e");
664
		path.setAttribute("path", cmd.join(" ") + " x e");
663
		group.appendChild(path);
665
		group.appendChild(path);
664
		return group;
666
		return group;
665
	}, HighLow:function (data, plotarea, plot, applyTo) {
667
	}, HighLow:function (data, plotarea, plot, applyTo) {
666
		var area = plotarea.getArea();
668
		var area = plotarea.getArea();
667
		var group = dojo.charting.Plotters._group(plotarea);
669
		var group = dojo.charting.Plotters._group(plotarea);
668
		var n = data.length;
670
		var n = data.length;
669
		var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
671
		var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
670
		var w = part * 2;
672
		var w = part * 2;
671
		for (var i = 0; i < n; i++) {
673
		for (var i = 0; i < n; i++) {
672
			var high = data[i].high;
674
			var high = data[i].high;
673
			var low = data[i].low;
675
			var low = data[i].low;
674
			if (low > high) {
676
			if (low > high) {
675
				var t = low;
677
				var t = low;
676
				low = high;
678
				low = high;
677
				high = t;
679
				high = t;
678
			}
680
			}
679
			var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
681
			var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
680
			var y = plot.axisY.getCoord(high, plotarea, plot);
682
			var y = plot.axisY.getCoord(high, plotarea, plot);
681
			var h = plot.axisY.getCoord(low, plotarea, plot) - y;
683
			var h = plot.axisY.getCoord(low, plotarea, plot) - y;
682
			var bar = document.createElement("v:rect");
684
			var bar = document.createElement("v:rect");
683
			bar.style.position = "absolute";
685
			bar.style.position = "absolute";
684
			bar.style.top = y + 1 + "px";
686
			bar.style.top = y + 1 + "px";
685
			bar.style.left = x + "px";
687
			bar.style.left = x + "px";
686
			bar.style.width = w + "px";
688
			bar.style.width = w + "px";
687
			bar.style.height = h + "px";
689
			bar.style.height = h + "px";
688
			bar.setAttribute("fillColor", data[i].series.color);
690
			bar.setAttribute("fillColor", data[i].series.color);
689
			bar.setAttribute("stroked", "false");
691
			bar.setAttribute("stroked", "false");
690
			bar.style.antialias = "false";
692
			bar.style.antialias = "false";
691
			var fill = document.createElement("v:fill");
693
			var fill = document.createElement("v:fill");
692
			fill.setAttribute("opacity", "0.6");
694
			fill.setAttribute("opacity", "0.6");
693
			bar.appendChild(fill);
695
			bar.appendChild(fill);
694
			if (applyTo) {
696
			if (applyTo) {
695
				applyTo(bar, data[i].src);
697
				applyTo(bar, data[i].src);
696
			}
698
			}
697
			group.appendChild(bar);
699
			group.appendChild(bar);
698
		}
700
		}
699
		return group;
701
		return group;
700
	}, HighLowClose:function (data, plotarea, plot, applyTo) {
702
	}, HighLowClose:function (data, plotarea, plot, applyTo) {
701
		var area = plotarea.getArea();
703
		var area = plotarea.getArea();
702
		var group = dojo.charting.Plotters._group(plotarea);
704
		var group = dojo.charting.Plotters._group(plotarea);
703
		var n = data.length;
705
		var n = data.length;
704
		var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
706
		var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
705
		var w = part * 2;
707
		var w = part * 2;
706
		for (var i = 0; i < n; i++) {
708
		for (var i = 0; i < n; i++) {
707
			var high = data[i].high;
709
			var high = data[i].high;
708
			var low = data[i].low;
710
			var low = data[i].low;
709
			if (low > high) {
711
			if (low > high) {
710
				var t = low;
712
				var t = low;
711
				low = high;
713
				low = high;
712
				high = t;
714
				high = t;
713
			}
715
			}
714
			var c = data[i].close;
716
			var c = data[i].close;
715
			var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
717
			var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
716
			var y = plot.axisY.getCoord(high, plotarea, plot);
718
			var y = plot.axisY.getCoord(high, plotarea, plot);
717
			var h = plot.axisY.getCoord(low, plotarea, plot) - y;
719
			var h = plot.axisY.getCoord(low, plotarea, plot) - y;
718
			var close = plot.axisY.getCoord(c, plotarea, plot);
720
			var close = plot.axisY.getCoord(c, plotarea, plot);
719
			var g = document.createElement("div");
721
			var g = document.createElement("div");
720
			var bar = document.createElement("v:rect");
722
			var bar = document.createElement("v:rect");
721
			bar.style.position = "absolute";
723
			bar.style.position = "absolute";
722
			bar.style.top = y + 1 + "px";
724
			bar.style.top = y + 1 + "px";
723
			bar.style.left = x + "px";
725
			bar.style.left = x + "px";
724
			bar.style.width = w + "px";
726
			bar.style.width = w + "px";
725
			bar.style.height = h + "px";
727
			bar.style.height = h + "px";
726
			bar.setAttribute("fillColor", data[i].series.color);
728
			bar.setAttribute("fillColor", data[i].series.color);
727
			bar.setAttribute("stroked", "false");
729
			bar.setAttribute("stroked", "false");
728
			bar.style.antialias = "false";
730
			bar.style.antialias = "false";
729
			var fill = document.createElement("v:fill");
731
			var fill = document.createElement("v:fill");
730
			fill.setAttribute("opacity", "0.6");
732
			fill.setAttribute("opacity", "0.6");
731
			bar.appendChild(fill);
733
			bar.appendChild(fill);
732
			g.appendChild(bar);
734
			g.appendChild(bar);
733
			var line = document.createElement("v:line");
735
			var line = document.createElement("v:line");
734
			line.setAttribute("strokecolor", data[i].series.color);
736
			line.setAttribute("strokecolor", data[i].series.color);
735
			line.setAttribute("strokeweight", "1px");
737
			line.setAttribute("strokeweight", "1px");
736
			line.setAttribute("from", x + "px," + close + "px");
738
			line.setAttribute("from", x + "px," + close + "px");
737
			line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");
739
			line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");
738
			var s = line.style;
740
			var s = line.style;
739
			s.position = "absolute";
741
			s.position = "absolute";
740
			s.top = "0px";
742
			s.top = "0px";
741
			s.left = "0px";
743
			s.left = "0px";
742
			s.antialias = "false";
744
			s.antialias = "false";
743
			var str = document.createElement("v:stroke");
745
			var str = document.createElement("v:stroke");
744
			str.setAttribute("opacity", "0.6");
746
			str.setAttribute("opacity", "0.6");
745
			line.appendChild(str);
747
			line.appendChild(str);
746
			g.appendChild(line);
748
			g.appendChild(line);
747
			if (applyTo) {
749
			if (applyTo) {
748
				applyTo(g, data[i].src);
750
				applyTo(g, data[i].src);
749
			}
751
			}
750
			group.appendChild(g);
752
			group.appendChild(g);
751
		}
753
		}
752
		return group;
754
		return group;
753
	}, HighLowOpenClose:function (data, plotarea, plot, applyTo) {
755
	}, HighLowOpenClose:function (data, plotarea, plot, applyTo) {
754
		var area = plotarea.getArea();
756
		var area = plotarea.getArea();
755
		var group = dojo.charting.Plotters._group(plotarea);
757
		var group = dojo.charting.Plotters._group(plotarea);
756
		var n = data.length;
758
		var n = data.length;
757
		var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
759
		var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
758
		var w = part * 2;
760
		var w = part * 2;
759
		for (var i = 0; i < n; i++) {
761
		for (var i = 0; i < n; i++) {
760
			var high = data[i].high;
762
			var high = data[i].high;
761
			var low = data[i].low;
763
			var low = data[i].low;
762
			if (low > high) {
764
			if (low > high) {
763
				var t = low;
765
				var t = low;
764
				low = high;
766
				low = high;
765
				high = t;
767
				high = t;
766
			}
768
			}
767
			var o = data[i].open;
769
			var o = data[i].open;
768
			var c = data[i].close;
770
			var c = data[i].close;
769
			var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
771
			var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
770
			var y = plot.axisY.getCoord(high, plotarea, plot);
772
			var y = plot.axisY.getCoord(high, plotarea, plot);
771
			var h = plot.axisY.getCoord(low, plotarea, plot) - y;
773
			var h = plot.axisY.getCoord(low, plotarea, plot) - y;
772
			var open = plot.axisY.getCoord(o, plotarea, plot);
774
			var open = plot.axisY.getCoord(o, plotarea, plot);
773
			var close = plot.axisY.getCoord(c, plotarea, plot);
775
			var close = plot.axisY.getCoord(c, plotarea, plot);
774
			var g = document.createElement("div");
776
			var g = document.createElement("div");
775
			var bar = document.createElement("v:rect");
777
			var bar = document.createElement("v:rect");
776
			bar.style.position = "absolute";
778
			bar.style.position = "absolute";
777
			bar.style.top = y + 1 + "px";
779
			bar.style.top = y + 1 + "px";
778
			bar.style.left = x + "px";
780
			bar.style.left = x + "px";
779
			bar.style.width = w + "px";
781
			bar.style.width = w + "px";
780
			bar.style.height = h + "px";
782
			bar.style.height = h + "px";
781
			bar.setAttribute("fillColor", data[i].series.color);
783
			bar.setAttribute("fillColor", data[i].series.color);
782
			bar.setAttribute("stroked", "false");
784
			bar.setAttribute("stroked", "false");
783
			bar.style.antialias = "false";
785
			bar.style.antialias = "false";
784
			var fill = document.createElement("v:fill");
786
			var fill = document.createElement("v:fill");
785
			fill.setAttribute("opacity", "0.6");
787
			fill.setAttribute("opacity", "0.6");
786
			bar.appendChild(fill);
788
			bar.appendChild(fill);
787
			g.appendChild(bar);
789
			g.appendChild(bar);
788
			var line = document.createElement("v:line");
790
			var line = document.createElement("v:line");
789
			line.setAttribute("strokecolor", data[i].series.color);
791
			line.setAttribute("strokecolor", data[i].series.color);
790
			line.setAttribute("strokeweight", "1px");
792
			line.setAttribute("strokeweight", "1px");
791
			line.setAttribute("from", (x - (part * 2)) + "px," + open + "px");
793
			line.setAttribute("from", (x - (part * 2)) + "px," + open + "px");
792
			line.setAttribute("to", (x + w - 2) + "px," + open + "px");
794
			line.setAttribute("to", (x + w - 2) + "px," + open + "px");
793
			var s = line.style;
795
			var s = line.style;
794
			s.position = "absolute";
796
			s.position = "absolute";
795
			s.top = "0px";
797
			s.top = "0px";
796
			s.left = "0px";
798
			s.left = "0px";
797
			s.antialias = "false";
799
			s.antialias = "false";
798
			var str = document.createElement("v:stroke");
800
			var str = document.createElement("v:stroke");
799
			str.setAttribute("opacity", "0.6");
801
			str.setAttribute("opacity", "0.6");
800
			line.appendChild(str);
802
			line.appendChild(str);
801
			g.appendChild(line);
803
			g.appendChild(line);
802
			var line = document.createElement("v:line");
804
			var line = document.createElement("v:line");
803
			line.setAttribute("strokecolor", data[i].series.color);
805
			line.setAttribute("strokecolor", data[i].series.color);
804
			line.setAttribute("strokeweight", "1px");
806
			line.setAttribute("strokeweight", "1px");
805
			line.setAttribute("from", x + "px," + close + "px");
807
			line.setAttribute("from", x + "px," + close + "px");
806
			line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");
808
			line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");
807
			var s = line.style;
809
			var s = line.style;
808
			s.position = "absolute";
810
			s.position = "absolute";
809
			s.top = "0px";
811
			s.top = "0px";
810
			s.left = "0px";
812
			s.left = "0px";
811
			s.antialias = "false";
813
			s.antialias = "false";
812
			var str = document.createElement("v:stroke");
814
			var str = document.createElement("v:stroke");
813
			str.setAttribute("opacity", "0.6");
815
			str.setAttribute("opacity", "0.6");
814
			line.appendChild(str);
816
			line.appendChild(str);
815
			g.appendChild(line);
817
			g.appendChild(line);
816
			if (applyTo) {
818
			if (applyTo) {
817
				applyTo(g, data[i].src);
819
				applyTo(g, data[i].src);
818
			}
820
			}
819
			group.appendChild(g);
821
			group.appendChild(g);
820
		}
822
		}
821
		return group;
823
		return group;
822
	}, Scatter:function (data, plotarea, plot, applyTo) {
824
	}, Scatter:function (data, plotarea, plot, applyTo) {
823
		var r = 6;
825
		var r = 6;
824
		var mod = r / 2;
826
		var mod = r / 2;
825
		var area = plotarea.getArea();
827
		var area = plotarea.getArea();
826
		var group = dojo.charting.Plotters._group(plotarea);
828
		var group = dojo.charting.Plotters._group(plotarea);
827
		for (var i = 0; i < data.length; i++) {
829
		for (var i = 0; i < data.length; i++) {
828
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
830
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
829
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
831
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
830
			var point = document.createElement("v:rect");
832
			var point = document.createElement("v:rect");
831
			point.setAttribute("strokecolor", data[i].series.color);
833
			point.setAttribute("strokecolor", data[i].series.color);
832
			point.setAttribute("fillcolor", data[i].series.color);
834
			point.setAttribute("fillcolor", data[i].series.color);
833
			var fill = document.createElement("v:fill");
835
			var fill = document.createElement("v:fill");
834
			fill.setAttribute("opacity", "0.6");
836
			fill.setAttribute("opacity", "0.6");
835
			point.appendChild(fill);
837
			point.appendChild(fill);
836
			var s = point.style;
838
			var s = point.style;
837
			s.position = "absolute";
839
			s.position = "absolute";
838
			s.rotation = "45";
840
			s.rotation = "45";
839
			s.top = (y - mod) + "px";
841
			s.top = (y - mod) + "px";
840
			s.left = (x - mod) + "px";
842
			s.left = (x - mod) + "px";
841
			s.width = r + "px";
843
			s.width = r + "px";
842
			s.height = r + "px";
844
			s.height = r + "px";
843
			group.appendChild(point);
845
			group.appendChild(point);
844
			if (applyTo) {
846
			if (applyTo) {
845
				applyTo(point, data[i].src);
847
				applyTo(point, data[i].src);
846
			}
848
			}
847
		}
849
		}
848
		return group;
850
		return group;
849
	}, Bubble:function (data, plotarea, plot, applyTo) {
851
	}, Bubble:function (data, plotarea, plot, applyTo) {
850
		var sizeFactor = 1;
852
		var sizeFactor = 1;
851
		var area = plotarea.getArea();
853
		var area = plotarea.getArea();
852
		var group = dojo.charting.Plotters._group(plotarea);
854
		var group = dojo.charting.Plotters._group(plotarea);
853
		for (var i = 0; i < data.length; i++) {
855
		for (var i = 0; i < data.length; i++) {
854
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
856
			var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
855
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
857
			var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
856
			if (i == 0) {
858
			if (i == 0) {
857
				var raw = data[i].size;
859
				var raw = data[i].size;
858
				var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y;
860
				var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y;
859
				sizeFactor = dy / raw;
861
				sizeFactor = dy / raw;
860
			}
862
			}
861
			if (sizeFactor < 1) {
863
			if (sizeFactor < 1) {
862
				sizeFactor = 1;
864
				sizeFactor = 1;
863
			}
865
			}
864
			var r = (data[i].size / 2) * sizeFactor;
866
			var r = (data[i].size / 2) * sizeFactor;
865
			var point = document.createElement("v:oval");
867
			var point = document.createElement("v:oval");
866
			point.setAttribute("strokecolor", data[i].series.color);
868
			point.setAttribute("strokecolor", data[i].series.color);
867
			point.setAttribute("fillcolor", data[i].series.color);
869
			point.setAttribute("fillcolor", data[i].series.color);
868
			var fill = document.createElement("v:fill");
870
			var fill = document.createElement("v:fill");
869
			fill.setAttribute("opacity", "0.6");
871
			fill.setAttribute("opacity", "0.6");
870
			point.appendChild(fill);
872
			point.appendChild(fill);
871
			var s = point.style;
873
			var s = point.style;
872
			s.position = "absolute";
874
			s.position = "absolute";
873
			s.rotation = "45";
875
			s.rotation = "45";
874
			s.top = (y - r) + "px";
876
			s.top = (y - r) + "px";
875
			s.left = (x - r) + "px";
877
			s.left = (x - r) + "px";
876
			s.width = (r * 2) + "px";
878
			s.width = (r * 2) + "px";
877
			s.height = (r * 2) + "px";
879
			s.height = (r * 2) + "px";
878
			group.appendChild(point);
880
			group.appendChild(point);
879
			if (applyTo) {
881
			if (applyTo) {
880
				applyTo(point, data[i].src);
882
				applyTo(point, data[i].src);
881
			}
883
			}
882
		}
884
		}
883
		return group;
885
		return group;
884
	}});
886
	}});
885
	dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;
887
	dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;
886
}
888
}
887
 
889