rgraph-rails 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +0 -1
  3. data/README.md +3 -3
  4. data/lib/rgraph-rails/version.rb +1 -1
  5. data/vendor/assets/javascripts/RGraph.bar.js +239 -3764
  6. data/vendor/assets/javascripts/RGraph.bipolar.js +115 -1986
  7. data/vendor/assets/javascripts/RGraph.common.annotate.js +35 -399
  8. data/vendor/assets/javascripts/RGraph.common.context.js +30 -600
  9. data/vendor/assets/javascripts/RGraph.common.core.js +403 -5187
  10. data/vendor/assets/javascripts/RGraph.common.csv.js +19 -275
  11. data/vendor/assets/javascripts/RGraph.common.deprecated.js +35 -454
  12. data/vendor/assets/javascripts/RGraph.common.dynamic.js +84 -1189
  13. data/vendor/assets/javascripts/RGraph.common.effects.js +90 -1548
  14. data/vendor/assets/javascripts/RGraph.common.key.js +54 -755
  15. data/vendor/assets/javascripts/RGraph.common.resizing.js +37 -567
  16. data/vendor/assets/javascripts/RGraph.common.sheets.js +29 -356
  17. data/vendor/assets/javascripts/RGraph.common.tooltips.js +32 -614
  18. data/vendor/assets/javascripts/RGraph.common.zoom.js +14 -223
  19. data/vendor/assets/javascripts/RGraph.cornergauge.js +71 -0
  20. data/vendor/assets/javascripts/RGraph.drawing.background.js +35 -620
  21. data/vendor/assets/javascripts/RGraph.drawing.circle.js +35 -576
  22. data/vendor/assets/javascripts/RGraph.drawing.image.js +52 -807
  23. data/vendor/assets/javascripts/RGraph.drawing.marker1.js +41 -717
  24. data/vendor/assets/javascripts/RGraph.drawing.marker2.js +37 -668
  25. data/vendor/assets/javascripts/RGraph.drawing.marker3.js +36 -563
  26. data/vendor/assets/javascripts/RGraph.drawing.poly.js +40 -608
  27. data/vendor/assets/javascripts/RGraph.drawing.rect.js +35 -597
  28. data/vendor/assets/javascripts/RGraph.drawing.text.js +34 -642
  29. data/vendor/assets/javascripts/RGraph.drawing.xaxis.js +50 -809
  30. data/vendor/assets/javascripts/RGraph.drawing.yaxis.js +51 -856
  31. data/vendor/assets/javascripts/RGraph.fuel.js +58 -964
  32. data/vendor/assets/javascripts/RGraph.funnel.js +55 -984
  33. data/vendor/assets/javascripts/RGraph.gantt.js +75 -1241
  34. data/vendor/assets/javascripts/RGraph.gauge.js +87 -1397
  35. data/vendor/assets/javascripts/RGraph.hbar.js +143 -2376
  36. data/vendor/assets/javascripts/RGraph.hprogress.js +80 -1397
  37. data/vendor/assets/javascripts/RGraph.line.js +241 -4162
  38. data/vendor/assets/javascripts/RGraph.meter.js +74 -1278
  39. metadata +3 -30
  40. data/vendor/assets/images/bg.png +0 -0
  41. data/vendor/assets/images/bullet.png +0 -0
  42. data/vendor/assets/images/facebook-large.png +0 -0
  43. data/vendor/assets/images/google-plus-large.png +0 -0
  44. data/vendor/assets/images/logo.png +0 -0
  45. data/vendor/assets/images/meter-image-sd-needle.png +0 -0
  46. data/vendor/assets/images/meter-image-sd.png +0 -0
  47. data/vendor/assets/images/meter-sketch-needle.png +0 -0
  48. data/vendor/assets/images/meter-sketch.png +0 -0
  49. data/vendor/assets/images/odometer-background.png +0 -0
  50. data/vendor/assets/images/rgraph.jpg +0 -0
  51. data/vendor/assets/images/title.png +0 -0
  52. data/vendor/assets/images/twitter-large.png +0 -0
  53. data/vendor/assets/javascripts/RGraph.modaldialog.js +0 -301
  54. data/vendor/assets/javascripts/RGraph.odo.js +0 -1265
  55. data/vendor/assets/javascripts/RGraph.pie.js +0 -2272
  56. data/vendor/assets/javascripts/RGraph.radar.js +0 -1847
  57. data/vendor/assets/javascripts/RGraph.rose.js +0 -1877
  58. data/vendor/assets/javascripts/RGraph.rscatter.js +0 -1425
  59. data/vendor/assets/javascripts/RGraph.scatter.js +0 -2970
  60. data/vendor/assets/javascripts/RGraph.semicircularprogress.js +0 -1015
  61. data/vendor/assets/javascripts/RGraph.thermometer.js +0 -1129
  62. data/vendor/assets/javascripts/RGraph.vprogress.js +0 -1452
  63. data/vendor/assets/javascripts/RGraph.waterfall.js +0 -1252
  64. data/vendor/assets/javascripts/financial-data.js +0 -1067
  65. data/vendor/assets/stylesheets/ModalDialog.css +0 -90
  66. data/vendor/assets/stylesheets/animations.css +0 -3347
  67. data/vendor/assets/stylesheets/website.css +0 -446
@@ -1,1549 +1,91 @@
1
- // version: 2016-06-04
2
- /**
3
- * o--------------------------------------------------------------------------------o
4
- * | This file is part of the RGraph package - you can learn more at: |
5
- * | |
6
- * | http://www.rgraph.net |
7
- * | |
8
- * | RGraph is dual licensed under the Open Source GPL (General Public License) |
9
- * | v2.0 license and a commercial license which means that you're not bound by |
10
- * | the terms of the GPL. The commercial license starts at just 99 GBP and |
11
- * | you can read about it here: |
12
- * | |
13
- * | http://www.rgraph.net/license |
14
- * o--------------------------------------------------------------------------------o
15
- */
16
1
 
17
- /**
18
- * This is a library of a few functions that make it easier to do
19
- * effects like fade-ins or eaxpansion.
20
- */
21
-
22
- /**
23
- * Initialise the various objects
24
- */
25
- RGraph = window.RGraph || {isRGraph: true};
26
- RGraph.Effects = RGraph.Effects || {};
27
- RGraph.Effects.Common = {};
28
-
29
- // Module pattern
30
- (function (win, doc, undefined)
31
- {
32
- var RG = RGraph,
33
- ua = navigator.userAgent,
34
- ma = Math;
35
-
36
-
37
-
38
-
39
- /**
40
- * This functions adds the generic effects to thechart object
41
- *
42
- * @param object obj The chart object
43
- */
44
- RG.Effects.decorate = function (obj)
45
- {
46
- for (i in RG.Effects.Common) {
47
- if (typeof RG.Effects.Common[i] === 'function') {
48
-
49
- obj[i] = RG.Effects.Common[i];
50
- }
51
- }
52
- };
53
-
54
-
55
-
56
-
57
-
58
- /**
59
- * A function used to replace the canvas with a DIV, which in turn holds the canvas. This way the page
60
- * layout doesn't shift in the canvas is resized.
61
- *
62
- * @param object canvas The canvas to replace.
63
- */
64
- RG.Effects.replaceCanvasWithDIV =
65
- RG.Effects.ReplaceCanvasWithDIV =
66
- RG.Effects.wrap = function (canvas)
67
- {
68
- if (!canvas.rgraph_wrapper) {
69
- // Create the place holder DIV
70
- var div = $('<div></div>')
71
- .css({
72
- width: canvas.width + 'px',
73
- height: canvas.height + 'px',
74
- cssFloat: canvas.style.cssFloat,
75
- left: canvas.style.left,
76
- top: canvas.style.top,
77
- display: 'inline-block'
78
- })
79
- .get(0);
80
-
81
- // Add the new DIV to the DOM
82
- canvas.parentNode.insertBefore(div, canvas);
83
-
84
- // Remove the canvas from the document
85
- canvas.parentNode.removeChild(canvas);
86
-
87
- // Add it back in as a child of the place holder
88
- div.appendChild(canvas);
89
-
90
- // Reset the positioning information on the canvas
91
- canvas.style.position = 'relative';
92
- canvas.style.left = (div.offsetWidth / 2) + 'px';
93
- canvas.style.top = (div.offsetHeight / 2) + 'px';
94
- canvas.style.cssFloat = '';
95
-
96
- // Add a reference to the canvas to the DIV so that repeated plays of the anumation
97
- // don't keep replacing the canvas with a new DIV
98
- canvas.rgraph_wrapper = div;
99
- }
100
-
101
- var div = canvas.rgraph_wrapper;
102
-
103
- return div;
104
- };
105
-
106
-
107
-
108
-
109
-
110
- /**
111
- * fadeIn
112
- *
113
- * This function simply uses the CSS opacity property - initially set to zero and
114
- * increasing to 1 over the period of 0.5 second
115
- */
116
- RG.Effects.Common.fadeIn = function ()
117
- {
118
- // This function gets added to the chart object - so the this
119
- // variable is the chart object
120
- var obj = this;
121
- var opt = arguments[0] || {};
122
- var frames = opt.frames || 30;
123
- var duration = (frames / 60) * 1000;
124
- var frame = 0;
125
- var callback = arguments[1] || function () {};
126
-
127
-
128
- // Initially the opacity should be zero
129
- obj.canvas.style.opacity = 0;
130
-
131
- // Draw the chart
132
- RG.redrawCanvas(obj.canvas);
133
-
134
- // Now fade the chart in
135
- for (var i=1; i<=frames; ++i) {
136
- (function (index)
137
- {
138
- setTimeout(function ()
139
- {
140
- obj.canvas.style.opacity = (index / frames);
141
- }, (index / frames) * duration);
142
- })(i)
143
- }
144
-
145
- setTimeout(function () {callback(obj);}, duration);
146
-
147
-
148
- return obj;
149
- };
150
-
151
-
152
-
153
-
154
- /**
155
- * fadeOut
156
- *
157
- * This function is a reversal of the above function - fading out instead of in
158
- */
159
- RG.Effects.Common.fadeOut = function ()
160
- {
161
- // This function gets added to the chart object - so the this
162
- // variable is the chart object
163
- var obj = this;
164
- var opt = arguments[0] || {};
165
- var frames = opt.frames || 30;
166
- var duration = (frames / 60) * 1000;
167
- var frame = 0;
168
- var callback = arguments[1] || function () {};
169
-
170
-
171
- // Now fade the chart in
172
- for (var i=1; i<=frames; ++i) {
173
- (function (index)
174
- {
175
- setTimeout(function ()
176
- {
177
- obj.canvas.style.opacity = 1 - (index / frames);
178
- }, (index / frames) * duration);
179
- })(i)
180
- }
181
-
182
- setTimeout(function () {callback(obj);}, duration);
183
-
184
- return this;
185
-
186
- /**
187
- * Callback
188
- */
189
- callback(obj);
190
- };
191
-
192
-
193
-
194
-
195
- /**
196
- * fadeSlideIn
197
- *
198
- * This function fades the canvas in in a sliding motion
199
- */
200
- RG.Effects.Common.fadeSlideIn = function ()
201
- {
202
- // This function gets added to the chart object - so the this
203
- // variable is the chart object
204
- var obj = this,
205
- opt = arguments[0] || {},
206
- frames = opt.frames || 30,
207
- frame = 0,
208
- pc = -20,
209
- step = (120 - pc) / frames,
210
- canvasXY = RG.getCanvasXY(obj.canvas),
211
- color = opt.color || 'white',
212
- callback = arguments[1] || function () {};
213
-
214
-
215
- // Draw the chart
216
- RG.redrawCanvas(obj.canvas);
217
-
218
-
219
- // Create the cover
220
- $('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
221
- background: 'linear-gradient(135deg, rgba(255,255,255,0) ' + pc + '%, ' + color + ' ' + (pc + 20) + '%)',
222
- width:obj.canvas.width + 'px',
223
- height: obj.canvas.height + 'px',
224
- top: canvasXY[1] + 'px',
225
- left: canvasXY[0] + 'px',
226
- position: 'absolute'
227
- }).appendTo($(obj.canvas.parentNode));
228
-
229
- function iterator ()
230
- {
231
- if (pc < 120) {
232
- $('div#rgraph_fadeslide_cover_' + obj.id).css({
233
- background: 'linear-gradient(135deg, rgba(255,255,255,0) ' + pc + '%, ' + color + ' ' + (pc + 20) + '%)'
234
- });
235
- pc += step;
236
- RG.Effects.updateCanvas(iterator);
237
-
238
- } else {
239
-
240
- $('div#rgraph_fadeslide_cover_' + obj.id).remove();
241
-
242
- callback(obj);
243
- }
244
- }
245
-
246
- iterator();
247
- };
248
-
249
-
250
-
251
-
252
- /**
253
- * fadeSlideOut
254
- *
255
- Fades the canvas out in a sliding motion
256
- */
257
- RG.Effects.Common.fadeSlideOut = function ()
258
- {
259
- // This function gets added to the chart object - so the this
260
- // variable is the chart object
261
- var obj = this;
262
- var opt = arguments[0] || {};
263
- var frames = opt.frames || 30;
264
- var frame = 0;
265
- var pc = -20;
266
- var step = (120 - pc) / frames;
267
- var canvasXY = RG.getCanvasXY(obj.canvas);
268
- var color = opt.color || 'white';
269
- var callback = arguments[1] || function () {};
270
-
271
-
272
- // Draw the chart
273
- RG.redrawCanvas(obj.canvas);
274
-
275
- // Create the cover
276
- $('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
277
- background: 'linear-gradient(135deg, ' + color + ' ' + pc + '%, rgba(255,255,255,0) ' + (pc + 20) + '%)',
278
- width:obj.canvas.width + 'px',
279
- height: obj.canvas.height + 'px',
280
- top: canvasXY[1] + 'px',
281
- left: canvasXY[0] + 'px',
282
- position: 'absolute'
283
- }).appendTo($(obj.canvas.parentNode));
284
-
285
- function iterator ()
286
- {
287
- if (pc < 120) {
288
- $('div#rgraph_fadeslide_cover_' + obj.id).css({
289
- background: 'linear-gradient(135deg, ' + color + ' ' + pc + '%, rgba(255,255,255,0) ' + (pc + 20) + '%)'
290
- });
291
- pc += step;
292
- RG.Effects.updateCanvas(iterator);
293
-
294
- } else {
295
-
296
- RG.clear(obj.canvas, obj.get('clearto'))
297
-
298
- $('div#rgraph_fadeslide_cover_' + obj.id).remove();
299
-
300
- callback(obj);
301
- }
302
- }
303
-
304
- iterator();
305
- };
306
-
307
-
308
-
309
-
310
-
311
- /**
312
- * fadeCircularIn
313
- *
314
- * This function uses radial CSS gradients to cover the canvas with a radial fade in effect
315
- * (from the center outwards)
316
- */
317
- RG.Effects.Common.fadeCircularInOutwards = function ()
318
- {
319
- // This function gets added to the chart object - so the this
320
- // variable is the chart object
321
- var obj = this;
322
- var opt = arguments[0] || {};
323
- var frames = opt.frames || 120;
324
- var frame = 0;
325
- var radius = 0;
326
- var canvasXY = RG.getCanvasXY(obj.canvas);
327
- var color = opt.color || 'white';
328
- var callback = arguments[1] || function () {};
329
-
330
-
331
- // Draw the chart
332
- RG.redrawCanvas(obj.canvas);
333
-
334
-
335
-
336
- // Create the cover
337
- $('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
338
- background: 'radial-gradient(rgba(255,255,255,0) 0%, white ' + radius + '%)',
339
- width:obj.canvas.width + 'px',
340
- height: obj.canvas.height + 'px',
341
- top: canvasXY[1],
342
- left: canvasXY[0],
343
- position: 'absolute'
344
- }).appendTo($(obj.canvas.parentNode));
345
-
346
- function iterator ()
347
- {
348
- if (frame < frames) {
349
-
350
- $('div#rgraph_fadeslide_cover_' + obj.id).css({
351
- background: 'radial-gradient(rgba(255,255,255,0) ' + ((frame++ / frames) * 100) + '%, ' + color + ' ' + ((frame++ / frames) * 150) + '%)'
352
- });
353
-
354
- RG.Effects.updateCanvas(iterator);
355
-
356
- } else {
357
-
358
- $('div#rgraph_fadeslide_cover_' + obj.id).remove();
359
-
360
- callback(obj);
361
- }
362
- }
363
-
364
- iterator();
365
- };
366
-
367
-
368
-
369
-
370
- /**
371
- * fadeCircularOut
372
- *
373
- * This function uses radial CSS gradients to cover the canvas with a radial fade out effect
374
- * (from the center outwards)
375
- */
376
- RG.Effects.Common.fadeCircularOutOutwards = function ()
377
- {
378
- // This function gets added to the chart object - so the this
379
- // variable is the chart object
380
- var obj = this;
381
- var opt = arguments[0] || {};
382
- var frames = opt.frames || 120;
383
- var frame = 0;
384
- var canvasXY = RG.getCanvasXY(obj.canvas);
385
- var color = opt.color || 'white';
386
- var callback = arguments[1] || function () {};
387
-
388
-
389
- // Draw the chart
390
- RG.redrawCanvas(obj.canvas);
391
-
392
-
393
-
394
- // Create the cover
395
- $('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
396
- background: 'radial-gradient(rgba(255,255,255,0) 0%, white 0%)',
397
- width:obj.canvas.width + 'px',
398
- height: obj.canvas.height + 'px',
399
- top: canvasXY[1],
400
- left: canvasXY[0],
401
- position: 'absolute'
402
- }).appendTo($(obj.canvas.parentNode));
403
-
404
- function iterator ()
405
- {
406
- if (frame < frames) {
407
-
408
- $('div#rgraph_fadeslide_cover_' + obj.id).css({
409
- background: 'radial-gradient(' + color + ' ' + ((frame++ / frames) * 100) + '%, rgba(255,255,255,0) ' + ((frame++ / frames) * 150) + '%)'
410
- });
411
- RG.Effects.updateCanvas(iterator);
412
-
413
- } else {
414
-
415
- RG.clear(obj.canvas, color);
416
-
417
- $('div#rgraph_fadeslide_cover_' + obj.id).remove();
418
-
419
- callback(obj);
420
- }
421
- }
422
-
423
- iterator();
424
- };
425
-
426
-
427
-
428
-
429
- /**
430
- * fadeCircularInInwards
431
- */
432
- RG.Effects.Common.fadeCircularInInwards = function ()
433
- {
434
- // This function gets added to the chart object - so the this
435
- // variable is the chart object
436
- var obj = this;
437
- var opt = arguments[0] || {};
438
- var frames = opt.frames || 120;
439
- var frame = 0;
440
- var radius = ma.max(obj.canvas.width, obj.canvas.height);
441
- var canvasXY = RG.getCanvasXY(obj.canvas);
442
- var color = opt.color || 'white';
443
- var callback = arguments[1] || function () {};
444
-
445
-
446
- // Draw the chart
447
- RG.redrawCanvas(obj.canvas);
448
-
449
-
450
-
451
- // Create the cover
452
- $('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
453
- background: 'radial-gradient(rgba(255,255,255,0) 100%, rgba(255,255,255,0) 0%)',
454
- width:obj.canvas.width + 'px',
455
- height: obj.canvas.height + 'px',
456
- top: canvasXY[1] + 'px',
457
- left: canvasXY[0] + 'px',
458
- position: 'absolute'
459
- }).appendTo($(obj.canvas.parentNode));
460
-
461
- function iterator ()
462
- {
463
- if (frame < frames) {
464
-
465
- $('div#rgraph_fadeslide_cover_' + obj.id).css({
466
- background: 'radial-gradient(' + color + ' ' + (( (frames - frame++) / frames) * 100) + '%, rgba(255,255,255,0) ' + (( (frames - frame++) / frames) * 120) + '%)'
467
- });
468
- RG.Effects.updateCanvas(iterator);
469
-
470
- } else {
471
-
472
- $('div#rgraph_fadeslide_cover_' + obj.id).remove();
473
-
474
- callback(obj);
475
- }
476
- }
477
-
478
- iterator();
479
- };
480
-
481
-
482
-
483
-
484
- /**
485
- * fadeCircularOutReverse
486
- */
487
- RG.Effects.Common.fadeCircularOutInwards = function ()
488
- {
489
- // This function gets added to the chart object - so the this
490
- // variable is the chart object
491
- var obj = this;
492
- var opt = arguments[0] || {};
493
- var frames = opt.frames || 120;
494
- var frame = 0;
495
- var radius = ma.max(obj.canvas.width, obj.canvas.height);
496
- var canvasXY = RG.getCanvasXY(obj.canvas);
497
- var color = opt.color || 'white';
498
- var callback = arguments[1] || function () {};
499
-
500
-
501
- // Draw the chart
502
- RG.redrawCanvas(obj.canvas);
503
-
504
-
505
-
506
- // Create the cover
507
- $('<div id="rgraph_fadeslide_cover_' + obj.id + '"></div>').css({
508
- background: 'radial-gradient(rgba(255,255,255,0) 0%, rgba(255,255,255,0) 0%)',
509
- width:obj.canvas.width + 'px',
510
- height: obj.canvas.height + 'px',
511
- top: canvasXY[1],
512
- left: canvasXY[0],
513
- position: 'absolute'
514
- }).appendTo($(obj.canvas.parentNode));
515
-
516
- function iterator ()
517
- {
518
- if (frame < frames) {
519
-
520
- $('div#rgraph_fadeslide_cover_' + obj.id).css({
521
- background: 'radial-gradient(rgba(255,255,255,0) ' + (( (frames - frame++) / frames) * 100) + '%, ' + color + ' ' + (( (frames - frame++) / frames) * 120) + '%)'
522
- });
523
- RG.Effects.updateCanvas(iterator);
524
-
525
- } else {
526
-
527
- RG.clear(obj.canvas);
528
-
529
- $('div#rgraph_fadeslide_cover_' + obj.id).remove();
530
-
531
- callback(obj);
532
- }
533
- }
534
-
535
- iterator();
536
- };
537
-
538
-
539
-
540
-
541
- /**
542
- * Expand
543
- *
544
- * This effect is like the tooltip effect of the same name. I starts in the middle
545
- * and expands out to full size.
546
- *
547
- * @param object obj The graph object
548
- */
549
- RG.Effects.Common.expand = function ()
550
- {
551
- // This function gets added to the chart object - so the this
552
- // variable is the chart object
553
- var obj = this;
554
- var opt = arguments[0] || {};
555
- var bounce = typeof opt.bounce === 'boolean' ? opt.bounce : true;
556
- var frames = opt.frames || 60;
557
- var duration = (frames / 60) * 1000;
558
- var callback = arguments[1] || function () {};
559
-
560
- if (!this.canvas.rgraph_wrapper) {
561
- var div = RG.Effects.wrap(this.canvas);
562
- this.canvas.rgraph_wrapper = div;
563
- } else {
564
- div = this.canvas.rgraph_wrapper;
565
- }
566
-
567
- div.style.position = 'relative';
568
- //this.canvas.style.position = 'relative'; // absolute should work here too - but doesn't in Chrome
569
- this.canvas.style.top = (this.canvas.height / 2) + 'px';
570
- this.canvas.style.left = (this.canvas.width / 2) + 'px';
571
-
572
- this.canvas.style.width = 0;
573
- this.canvas.style.height = 0;
574
-
575
- this.canvas.style.opacity = 0;
576
-
577
-
578
- RG.clear(this.canvas);
579
- RG.redrawCanvas(this.canvas);
580
-
581
- if (bounce) {
582
-
583
- jQuery('#' + obj.id).animate({opacity: 1, width: (obj.canvas.width * 1.2) + 'px', height: (obj.canvas.height * 1.2) + 'px', left: (obj.canvas.width * -0.1) + 'px', top: (obj.canvas.height * -0.1) + 'px'}, duration * 0.5, function ()
584
- {
585
- jQuery('#' + obj.id).animate({width: (obj.canvas.width * 0.9) + 'px', height: (obj.canvas.height * 0.9) + 'px', top: (obj.canvas.height * 0.05) + 'px', left: (obj.canvas.width * 0.05) + 'px'}, duration * 0.25, function ()
586
- {
587
- jQuery('#' + obj.id).animate({width: obj.canvas.width + 'px', height: obj.canvas.height + 'px', top: 0, left: 0}, duration * 0.25, function () {callback(obj);});
588
- });
589
- });
590
-
591
- } else {
592
-
593
- jQuery(obj.canvas).animate({
594
- opacity: 1,
595
- width: obj.canvas.width + 'px',
596
- height: obj.canvas.height + 'px',
597
- left: 0,
598
- top: 0
599
- }, duration, function () {callback(obj);})
600
- }
601
-
602
-
603
-
604
- return this;
605
- };
606
-
607
-
608
-
609
-
610
- /**
611
- * Contract
612
- *
613
- * This effect is a good one to use with the Expand effect to make a transition
614
- *
615
- * @param object You can specify frames here: {frames: 120}
616
- * @param function Optional callback to run when the effect is done.
617
- */
618
- RG.Effects.Common.contract = function ()
619
- {
620
- // This function gets added to the chart object - so the this
621
- // variable is the chart object
622
- var obj = this;
623
- var opt = arguments[0] || {};
624
- var frames = opt.frames || 60;
625
- var duration = (frames / 60) * 1000;
626
- var callback = arguments[1] || function () {};
627
-
628
- if (!obj.canvas.rgraph_wrapper) {
629
- var div = RG.Effects.wrap(obj.canvas);
630
- obj.canvas.rgraph_wrapper = div;
631
- } else {
632
- div = obj.canvas.rgraph_wrapper;
633
- }
634
-
635
-
636
- div.style.position = 'relative';
637
- //canvas.style.position = 'absolute'; // Chrome bug...?
638
- obj.canvas.style.top = 0;
639
- obj.canvas.style.left = 0;
640
-
641
- if (opt.bounce !== false) {
642
- jQuery('#' + obj.id).animate({
643
- width: (obj.canvas.width * 1.2) + 'px',
644
- height: (obj.canvas.height * 1.2) + 'px',
645
- left: (obj.canvas.width * -0.1) + 'px',
646
- top: (obj.canvas.height * -0.1) + 'px'
647
- }, duration * 0.25, function ()
648
- {
649
- jQuery('#' + obj.id).animate({
650
- opacity: 0,
651
- width: 0,
652
- height: 0,
653
- left: (obj.canvas.width * 0.5) + 'px',
654
- top: (obj.canvas.height * 0.5) + 'px'
655
- }, duration * 0.75, function () {callback(obj);});
656
- });
657
- } else {
658
- jQuery('#' + obj.id).animate({
659
- opacity: 0,
660
- width: 0,
661
- height: 0,
662
- left: (obj.canvas.width * 0.5) + 'px',
663
- top: (obj.canvas.height * 0.5) + 'px'
664
- }, duration * 0.75, function () {callback(obj);});
665
- }
666
-
667
-
668
- return this;
669
- };
670
-
671
-
672
-
673
-
674
- /**
675
- * Reveal
676
- *
677
- * This effect issmilar to the Expand effect - the canvas is slowly revealed from
678
- * the centre outwards
679
- *
680
- * @param object Options for the effect. You can give frames here
681
- * @param function An optional callback function
682
- */
683
- RG.Effects.Common.reveal = function ()
684
- {
685
- // This function gets added to the chart object - so the this
686
- // variable is the chart object
687
- var obj = this;
688
- var opt = arguments[0] || {};
689
- var frames = opt.frames || 60;
690
- var duration = (frames / 60) * 1000;
691
- var callback = arguments[1] || function () {};
692
- var xy = RG.getCanvasXY(obj.canvas);
693
-
694
-
695
-
696
-
697
- var divs = [
698
- ['rgraph_reveal_left_' + obj.id, xy[0], xy[1], obj.canvas.width / 2, obj.canvas.height],
699
- ['rgraph_reveal_right_' + obj.id,(xy[0] + (obj.canvas.width / 2)),xy[1],(obj.canvas.width / 2),obj.canvas.height],
700
- ['rgraph_reveal_top_' + obj.id,xy[0],xy[1],obj.canvas.width,(obj.canvas.height / 2)],
701
- ['rgraph_reveal_bottom_' + obj.id,xy[0],(xy[1] + (obj.canvas.height / 2)),obj.canvas.width,(obj.canvas.height / 2)]
702
- ];
703
-
704
- for (var i=0,len=divs.length; i<len; ++i) {
705
- var div = document.createElement('DIV');
706
- div.id = divs[i][0];
707
- div.style.width = divs[i][3]+ 'px';
708
- div.style.height = divs[i][4] + 'px';
709
- div.style.left = divs[i][1] + 'px';
710
- div.style.top = divs[i][2] + 'px';
711
- div.style.position = 'absolute';
712
- div.style.backgroundColor = opt && typeof opt.color === 'string' ? opt.color : 'white';
713
- document.body.appendChild(div);
714
- }
715
-
716
-
717
- // Clear the canvas and redraw it
718
- RG.clear(obj.canvas);
719
- RG.redrawCanvas(obj.canvas);
720
-
721
-
722
- // Animate the shrinking of the DIVs
723
- jQuery('#rgraph_reveal_left_' + obj.id).animate({width: 0}, duration);
724
- jQuery('#rgraph_reveal_right_' + obj.id).animate({left: '+=' + (obj.canvas.width / 2),width: 0}, duration);
725
- jQuery('#rgraph_reveal_top_' + obj.id).animate({height: 0}, duration);
726
- jQuery('#rgraph_reveal_bottom_' + obj.id).animate({top: '+=' + (obj.canvas.height / 2),height: 0}, duration);
727
-
728
- // Remove the DIVs from the DOM 100ms after the animation ends
729
- setTimeout(function ()
730
- {
731
- doc.body.removeChild(doc.getElementById("rgraph_reveal_top_" + obj.id));
732
- doc.body.removeChild(doc.getElementById("rgraph_reveal_bottom_" + obj.id));
733
- doc.body.removeChild(doc.getElementById("rgraph_reveal_left_" + obj.id));
734
- doc.body.removeChild(doc.getElementById("rgraph_reveal_right_" + obj.id));
735
-
736
- callback(obj);
737
- }, duration);
738
-
739
-
740
- return this;
741
- };
742
-
743
-
744
-
745
-
746
- /**
747
- * RevealCircular
748
- *
749
- * This effect is smilar to the Reveal effect - the canvas is slowly revealed from
750
- * the centre outwards using a circular shape
751
- *
752
- * @param object An object of options - eg {frames: 30}
753
- * @param function An optional callback function that runs when the effect is finished
754
- */
755
- RG.Effects.Common.revealCircular =
756
- RG.Effects.Common.revealcircular = function ()
757
- {
758
- // This function gets added to the chart object - so the this
759
- // variable is the chart object
760
- var obj = this;
761
- var opt = arguments[0] || {};
762
- var frames = opt.frames || 30;
763
- var frame = 0;
764
- var callback = arguments[1] || function () {};
765
- var currentRadius = 0
766
- var centerx = obj.canvas.width / 2;
767
- var centery = obj.canvas.height / 2;
768
- var targetRadius = ma.max(obj.canvas.height, obj.canvas.width);
769
- var step = targetRadius / frames;
770
- var color = opt.background || opt.color || opt.backgroundColor || 'transparent';
771
-
772
-
773
-
774
-
775
- /**
776
- * This is the iterator function which gradually increases the radius of the clip circle
777
- */
778
- function iterator ()
779
- {
780
- // Begin by clearing the canvas
781
- RG.clear(obj.canvas, color);
782
-
783
- obj.context.save();
784
- // First draw the circle and clip to it
785
- obj.context.beginPath();
786
- obj.context.arc(centerx, centery, currentRadius, 0, RG.TWOPI, false);
787
- obj.context.clip();
788
-
789
- // Clear the canvas to a white color
790
- if (opt.background) {
791
- RG.clear(obj.canvas, opt.background);
792
- }
793
-
794
- // Now draw the chart
795
- obj.draw();
796
- obj.context.restore();
797
-
798
-
799
- // Increment the radius
800
- if (currentRadius < targetRadius) {
801
- currentRadius += step;
802
- RG.Effects.updateCanvas(iterator);
803
-
804
- } else {
805
- callback(obj);
806
- }
807
- }
808
-
809
- iterator();
810
-
811
- return this;
812
- };
813
-
814
-
815
-
816
-
817
- /**
818
- * Conceal
819
- *
820
- * This effect is the reverse of the Reveal effect - instead of revealing the canvas it
821
- * conceals it. Combined with the reveal effect would make for a nice wipe effect.
822
- *
823
- * @param object obj The chart object
824
- */
825
- RG.Effects.Common.conceal = function ()
826
- {
827
- // This function gets added to the chart object - so the this
828
- // variable is the chart object
829
- var obj = this;
830
- var opt = arguments[0] || {};
831
- var frames = opt.frames || 60;
832
- var duration = (frames / 60) * 1000;
833
- var frame = 0;
834
- var callback = arguments[1] || function () {};
835
- var xy = RG.getCanvasXY(obj.canvas);
836
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
837
-
838
-
839
-
840
- var divs = [
841
- ['rgraph_conceal_left_' + obj.id, xy[0], xy[1], 0, obj.canvas.height],
842
- ['rgraph_conceal_right_' + obj.id,(xy[0] + obj.canvas.width),xy[1],0,obj.canvas.height],
843
- ['rgraph_conceal_top_' + obj.id,xy[0],xy[1],obj.canvas.width,0],
844
- ['rgraph_conceal_bottom_' + obj.id,xy[0],(xy[1] + obj.canvas.height),obj.canvas.width,0]
845
- ];
846
-
847
-
848
-
849
-
850
- for (var i=0,len=divs.length; i<len; ++i) {
851
- var div = doc.createElement('DIV');
852
- div.id = divs[i][0];
853
- div.style.width = divs[i][3]+ 'px';
854
- div.style.height = divs[i][4] + 'px';
855
- div.style.left = divs[i][1] + 'px';
856
- div.style.top = divs[i][2] + 'px';
857
- div.style.position = 'absolute';
858
- div.style.backgroundColor = color;
859
- doc.body.appendChild(div);
860
- }
861
-
862
-
863
- jQuery('#rgraph_conceal_left_' + obj.id).animate({width: '+=' + (obj.canvas.width / 2)}, duration);
864
- jQuery('#rgraph_conceal_right_' + obj.id).animate({left: '-=' + (obj.canvas.width / 2),width: (obj.canvas.width / 2)}, duration);
865
- jQuery('#rgraph_conceal_top_' + obj.id).animate({height: '+=' + (obj.canvas.height / 2)}, duration);
866
- jQuery('#rgraph_conceal_bottom_' + obj.id).animate({top: '-=' + (obj.canvas.height / 2),height: (obj.canvas.height / 2)}, duration);
867
-
868
- // Remove the DIVs from the DOM 100ms after the animation ends
869
- setTimeout(
870
- function ()
871
- {
872
- doc.body.removeChild(doc.getElementById("rgraph_conceal_top_" + obj.id));
873
- doc.body.removeChild(doc.getElementById("rgraph_conceal_bottom_" + obj.id));
874
- doc.body.removeChild(doc.getElementById("rgraph_conceal_left_" + obj.id));
875
- doc.body.removeChild(doc.getElementById("rgraph_conceal_right_" + obj.id));
876
-
877
- RG.clear(obj.canvas);
878
-
879
- callback(obj);
880
-
881
- }, duration);
882
-
883
- return this;
884
- };
885
-
886
-
887
-
888
-
889
- /**
890
- * Horizontal Blinds (open)
891
- *
892
- * @params object obj The graph object
893
- */
894
- RG.Effects.Common.hBlindsOpen =
895
- RG.Effects.Common.hblindsOpen = function ()
896
- {
897
- // This function gets added to the chart object - so the this
898
- // variable is the chart object
899
- var obj = this;
900
- var opt = arguments[0] || {};
901
- var frames = opt.frames || 60;
902
- var duration = (frames / 60) * 1000;
903
- var frame = 0;
904
- var callback = arguments[1] || function () {};
905
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
906
- var xy = RG.getCanvasXY(this.canvas);
907
- var height = this.canvas.height / 5;
908
-
909
- /**
910
- * First draw the chart
911
- */
912
- RG.clear(this.canvas);
913
- RG.redrawCanvas(this.canvas);
914
-
915
- for (var i=0; i<5; ++i) {
916
- var div = doc.createElement('DIV');
917
- div.id = 'rgraph_hblinds_' + i + '_' + obj.id;
918
- div.style.width = this.canvas.width + 'px';
919
- div.style.height = height + 'px';
920
- div.style.left = xy[0] + 'px';
921
- div.style.top = (xy[1] + (this.canvas.height * (i / 5))) + 'px';
922
- div.style.position = 'absolute';
923
- div.style.backgroundColor = color;
924
- document.body.appendChild(div);
925
-
926
- jQuery('#rgraph_hblinds_' + i + '_' + obj.id).animate({height: 0}, duration);
927
- }
928
-
929
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_0_' + obj.id));}, duration);
930
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_1_' + obj.id));}, duration);
931
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_2_' + obj.id));}, duration);
932
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_3_' + obj.id));}, duration);
933
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_4_' + obj.id));}, duration);
934
- setTimeout(function () {callback(obj);}, duration);
935
-
936
- return this;
937
- };
938
-
939
-
940
-
941
-
942
- /**
943
- * Horizontal Blinds (close)
944
- *
945
- * @params object obj The graph object
946
- */
947
- RG.Effects.Common.hBlindsClose =
948
- RG.Effects.Common.hblindsclose = function ()
949
- {
950
- // This function gets added to the chart object - so the this
951
- // variable is the chart object
952
- var obj = this;
953
- var opt = arguments[0] || {};
954
- var frames = opt.frames || 60;
955
- var duration = (frames / 60) * 1000;
956
- var frame = 0;
957
- var callback = arguments[1] || function () {};
958
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
959
- var xy = RG.getCanvasXY(this.canvas);
960
- var height = this.canvas.height / 5;
961
-
962
-
963
-
964
- for (var i=0; i<5; ++i) {
965
- var div = doc.createElement('DIV');
966
- div.id = 'rgraph_hblinds_' + i + '_' + obj.id;
967
- div.style.width = this.canvas.width + 'px';
968
- div.style.height = 0;
969
- div.style.left = xy[0] + 'px';
970
- div.style.top = (xy[1] + (this.canvas.height * (i / 5))) + 'px';
971
- div.style.position = 'absolute';
972
- div.style.backgroundColor = color;
973
- doc.body.appendChild(div);
974
-
975
- jQuery('#rgraph_hblinds_' + i + '_' + obj.id).animate({height: height + 'px'}, duration);
976
- }
977
-
978
-
979
-
980
- setTimeout(function () {RG.clear(obj.canvas);}, duration + 100);
981
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_0_' + obj.id));}, duration + 100);
982
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_1_' + obj.id));}, duration + 100);
983
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_2_' + obj.id));}, duration + 100);
984
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_3_' + obj.id));}, duration + 100);
985
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_hblinds_4_' + obj.id));}, duration + 100);
986
- setTimeout(function () {callback(obj);}, duration + 100);
987
- };
988
-
989
-
990
-
991
-
992
- /**
993
- * Vertical Blinds (open)
994
- *
995
- * @params object obj The graph object
996
- */
997
- RG.Effects.Common.vBlindsOpen =
998
- RG.Effects.Common.vblindsopen = function ()
999
- {
1000
- // This function gets added to the chart object - so the this
1001
- // variable is the chart object
1002
- var obj = this;
1003
- var opt = arguments[0] || {};
1004
- var frames = opt.frames || 60;
1005
- var duration = (frames / 60) * 1000;
1006
- var frame = 0;
1007
- var callback = arguments[1] || function () {};
1008
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
1009
- var xy = RG.getCanvasXY(this.canvas);
1010
- var width = this.canvas.width / 10;
1011
-
1012
- /**
1013
- * First draw the chart
1014
- */
1015
- //RG.clear(obj.canvas);
1016
- RG.redrawCanvas(obj.canvas);
1017
-
1018
- for (var i=0; i<10; ++i) {
1019
- var div = doc.createElement('DIV');
1020
- div.id = 'rgraph_vblinds_' + i + '_' + obj.id;
1021
- div.style.width = width + 'px';
1022
- div.style.height = this.canvas.height + 'px';
1023
- div.style.left = (xy[0] + (this.canvas.width * (i / 10))) + 'px';
1024
- div.style.top = (xy[1]) + 'px';
1025
- div.style.position = 'absolute';
1026
- div.style.backgroundColor = color;
1027
- doc.body.appendChild(div);
1028
-
1029
- jQuery('#rgraph_vblinds_' + i + '_' + obj.id).animate({width: 0}, duration);
1030
- }
1031
-
1032
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_0_' + obj.id));}, duration + 100);
1033
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_1_' + obj.id));}, duration + 100);
1034
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_2_' + obj.id));}, duration + 100);
1035
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_3_' + obj.id));}, duration + 100);
1036
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_4_' + obj.id));}, duration + 100);
1037
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_5_' + obj.id));}, duration + 100);
1038
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_6_' + obj.id));}, duration + 100);
1039
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_7_' + obj.id));}, duration + 100);
1040
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_8_' + obj.id));}, duration + 100);
1041
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_9_' + obj.id));}, duration + 100);
1042
-
1043
- setTimeout(function () {callback(obj);}, duration + 100);
1044
-
1045
- return this;
1046
- };
1047
-
1048
-
1049
-
1050
-
1051
- /**
1052
- * Vertical Blinds (close)
1053
- *
1054
- * @params object obj The graph object
1055
- */
1056
- RG.Effects.Common.vblindsclose =
1057
- RG.Effects.Common.vBlindsClose = function ()
1058
- {
1059
- // This function gets added to the chart object - so the this
1060
- // variable is the chart object
1061
- var obj = this;
1062
- var opt = arguments[0] || {};
1063
- var frames = opt.frames || 60;
1064
- var duration = (frames / 60) * 1000;
1065
- var frame = 0;
1066
- var callback = arguments[1] || function () {};
1067
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
1068
- var xy = RG.getCanvasXY(this.canvas);
1069
- var width = this.canvas.width / 10;
1070
-
1071
- // Don't draw the chart
1072
-
1073
- // Create the blinds
1074
- for (var i=0; i<10; ++i) {
1075
- var div = doc.createElement('DIV');
1076
- div.id = 'rgraph_vblinds_' + i + '_' + obj.id;
1077
- div.style.width = 0;
1078
- div.style.height = this.canvas.height + 'px';
1079
- div.style.left = (xy[0] + (this.canvas.width * (i / 10))) + 'px';
1080
- div.style.top = (xy[1]) + 'px';
1081
- div.style.position = 'absolute';
1082
- div.style.backgroundColor = color;
1083
- doc.body.appendChild(div);
1084
-
1085
- jQuery('#rgraph_vblinds_' + i + '_' + obj.id).animate({width: width}, duration);
1086
- }
1087
-
1088
- setTimeout(function () {RG.clear(obj.canvas);}, duration + 100);
1089
-
1090
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_0_' + obj.id));}, duration + 100);
1091
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_1_' + obj.id));}, duration + 100);
1092
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_2_' + obj.id));}, duration + 100);
1093
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_3_' + obj.id));}, duration + 100);
1094
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_4_' + obj.id));}, duration + 100);
1095
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_5_' + obj.id));}, duration + 100);
1096
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_6_' + obj.id));}, duration + 100);
1097
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_7_' + obj.id));}, duration + 100);
1098
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_8_' + obj.id));}, duration + 100);
1099
- setTimeout(function () {doc.body.removeChild(doc.getElementById('rgraph_vblinds_9_' + obj.id));}, duration + 100);
1100
-
1101
- setTimeout(function () {callback(obj);}, duration + 100);
1102
-
1103
- return this;
1104
- };
1105
-
1106
-
1107
-
1108
-
1109
- /**
1110
- * Slide in
1111
- *
1112
- * This function is a wipe that can be used when switching the canvas to a new graph
1113
- *
1114
- * @param object obj The graph object
1115
- */
1116
- RG.Effects.Common.slideIn = function ()
1117
- {
1118
- // This function gets added to the chart object - so the this
1119
- // variable is the chart object
1120
- var obj = this;
1121
- var opt = arguments[0] || {};
1122
- var frames = opt.frames || 60;
1123
- var duration = (frames / 60) * 1000;
1124
- var frame = 0;
1125
- var callback = arguments[1] || function () {};
1126
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
1127
- var xy = RG.getCanvasXY(this.canvas);
1128
- var width = this.canvas.width / 10;
1129
- var div = RG.Effects.wrap(obj.canvas);
1130
- var from = opt.from || 'left';
1131
-
1132
- div.style.overflow = 'hidden';
1133
-
1134
- RG.clear(obj.canvas);
1135
- RG.redrawCanvas(obj.canvas);
1136
-
1137
-
1138
- canvas.style.position = 'relative';
1139
-
1140
- if (from == 'left') {
1141
- obj.canvas.style.left = (0 - div.offsetWidth) + 'px';
1142
- obj.canvas.style.top = 0;
1143
- } else if (from == 'top') {
1144
- obj.canvas.style.left = 0;
1145
- obj.canvas.style.top = (0 - div.offsetHeight) + 'px';
1146
- } else if (from == 'bottom') {
1147
- obj.canvas.style.left = 0;
1148
- obj.canvas.style.top = div.offsetHeight + 'px';
1149
- } else {
1150
- obj.canvas.style.left = div.offsetWidth + 'px';
1151
- obj.canvas.style.top = 0;
1152
- }
1153
-
1154
- jQuery('#' + obj.id).animate({left:0,top:0}, duration, function ()
1155
- {
1156
- callback(obj);
1157
- });
1158
-
1159
- return this;
1160
- };
1161
-
1162
-
1163
-
1164
-
1165
- /**
1166
- * Slide out
1167
- *
1168
- * This function is a wipe that can be used when switching the canvas to a new graph
1169
- *
1170
- * @param object Optional object containing configuration.
1171
- * @param function Optional callback function
1172
- */
1173
- RG.Effects.Common.slideOut = function ()
1174
- {
1175
- // This function gets added to the chart object - so the this
1176
- // variable is the chart object
1177
- var obj = this;
1178
- var opt = arguments[0] || {};
1179
- var frames = opt.frames || 60;
1180
- var duration = (frames / 60) * 1000;
1181
- var frame = 0;
1182
- var callback = arguments[1] || function () {};
1183
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
1184
- var xy = RG.getCanvasXY(this.canvas);
1185
- var width = this.canvas.width / 10;
1186
- var div = RG.Effects.wrap(obj.canvas);
1187
- var to = opt.to || 'left';
1188
-
1189
- div.style.overflow= 'hidden';
1190
-
1191
- obj.canvas.style.position = 'relative';
1192
- obj.canvas.style.left = 0;
1193
- obj.canvas.style.top = 0;
1194
-
1195
- if (to == 'left') {
1196
- jQuery('#' + obj.id).animate({left: (0 - obj.canvas.width) + 'px'}, duration, function () {callback(obj);});
1197
- } else if (to == 'top') {
1198
- jQuery('#' + obj.id).animate({left: 0, top: (0 - div.offsetHeight) + 'px'}, duration, function () {callback(obj);});
1199
- } else if (to == 'bottom') {
1200
- jQuery('#' + obj.id).animate({top: (0 + div.offsetHeight) + 'px'}, duration, function () {callback(obj);});
1201
- } else {
1202
- jQuery('#' + obj.id).animate({left: (0 + obj.canvas.width) + 'px'}, duration, function () {callback(obj);});
1203
- }
1204
-
1205
- return this;
1206
- };
1207
-
1208
-
1209
-
1210
-
1211
- /**
1212
- * Horizontal Scissors (open)
1213
- *
1214
- * @param @object Optional array of options
1215
- * @param function Optional callback function
1216
- *
1217
- */
1218
- RG.Effects.Common.hscissorsopen =
1219
- RG.Effects.Common.hScissorsOpen = function ()
1220
- {
1221
- // This function gets added to the chart object - so the this
1222
- // variable is the chart object
1223
- var obj = this;
1224
- var opt = arguments[0] || {};
1225
- var frames = opt.frames || 60;
1226
- var duration = (frames / 60) * 1000;
1227
- var frame = 0;
1228
- var callback = arguments[1] || function () {};
1229
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
1230
- var xy = RG.getCanvasXY(this.canvas);
1231
- var width = this.canvas.width / 10;
1232
- var to = opt.to || 'left';
1233
- var height = obj.canvas.height / 5;
1234
-
1235
- /**
1236
- * First draw the chart
1237
- */
1238
- RG.clear(obj.canvas);
1239
- RG.redrawCanvas(obj.canvas);
1240
-
1241
- for (var i=0; i<5; ++i) {
1242
- var div = doc.getElementById("rgraph_hscissors_" + i + '_' + obj.id)
1243
- if (!div) {
1244
- var div = doc.createElement('DIV');
1245
- div.id = 'rgraph_hscissors_' + i + '_' + obj.id;
1246
- div.style.width = obj.canvas.width + 'px';
1247
- div.style.height = height + 'px';
1248
- div.style.left = xy[0] + 'px';
1249
- div.style.top = (xy[1] + (obj.canvas.height * (i / 5))) + 'px';
1250
- div.style.position = 'absolute';
1251
- div.style.backgroundColor = color;
1252
- doc.body.appendChild(div);
1253
- }
1254
-
1255
- if (i % 2 == 0) {
1256
- jQuery('#' + 'rgraph_hscissors_' + i + '_' + obj.id).animate({left: xy[0] + obj.canvas.width + 'px', width: 0}, duration);
1257
- } else {
1258
- jQuery('#' + 'rgraph_hscissors_' + i + '_' + obj.id).animate({width: 0}, duration);
1259
- }
1260
- }
1261
-
1262
- setTimeout(function ()
1263
- {
1264
- doc.body.removeChild(doc.getElementById('rgraph_hscissors_0_' + obj.id));
1265
- doc.body.removeChild(doc.getElementById('rgraph_hscissors_1_' + obj.id));
1266
- doc.body.removeChild(doc.getElementById('rgraph_hscissors_2_' + obj.id));
1267
- doc.body.removeChild(doc.getElementById('rgraph_hscissors_3_' + obj.id));
1268
- doc.body.removeChild(doc.getElementById('rgraph_hscissors_4_' + obj.id));
1269
-
1270
- callback(obj);
1271
- }, duration);
1272
-
1273
-
1274
- return this;
1275
- };
1276
-
1277
-
1278
-
1279
-
1280
- /**
1281
- * Horizontal Scissors (Close)
1282
- *
1283
- * @param @object Optional object of options
1284
- * @param function Optional callback function
1285
- *
1286
- */
1287
- RG.Effects.Common.hScissorsClose =
1288
- RG.Effects.Common.hscissorsclose = function ()
1289
- {
1290
- // This function gets added to the chart object - so the this
1291
- // variable is the chart object
1292
- var obj = this;
1293
- var opt = arguments[0] || {};
1294
- var frames = opt.frames || 60;
1295
- var duration = (frames / 60) * 1000;
1296
- var frame = 0;
1297
- var callback = arguments[1] || function () {};
1298
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
1299
- var xy = RG.getCanvasXY(this.canvas);
1300
- var height = obj.canvas.height / 5;
1301
-
1302
-
1303
-
1304
- /**
1305
- * First draw the chart
1306
- */
1307
- //RG.clear(obj.canvas);
1308
- RG.redrawCanvas(obj.canvas);
1309
-
1310
- for (var i=0; i<5; ++i) {
1311
- var div = doc.createElement('DIV');
1312
- div.id = 'rgraph_hscissors_' + i + '_' + obj.id;
1313
- div.style.width = 0;
1314
- div.style.height = height + 'px';
1315
- div.style.left = (i % 2 == 0 ? xy[0] + obj.canvas.width : xy[0]) + 'px';
1316
- div.style.top = (xy[1] + (obj.canvas.height * (i / 5))) + 'px';
1317
- div.style.position = 'absolute';
1318
- div.style.backgroundColor = color;
1319
- doc.body.appendChild(div);
1320
-
1321
- if (i % 2 == 0) {
1322
- jQuery('#' + 'rgraph_hscissors_' + i + '_' + obj.id).animate({left: xy[0] + 'px', width: obj.canvas.width + 'px'}, duration);
1323
- } else {
1324
- jQuery('#' + 'rgraph_hscissors_' + i + '_' + obj.id).animate({width: obj.canvas.width + 'px'}, duration);
1325
- }
1326
- }
1327
-
1328
- setTimeout(function ()
1329
- {
1330
- RGraph.clear(obj.canvas);
1331
- jQuery('#' + 'rgraph_hscissors_' + 0 + '_' + obj.id).remove();
1332
- jQuery('#' + 'rgraph_hscissors_' + 1 + '_' + obj.id).remove();
1333
- jQuery('#' + 'rgraph_hscissors_' + 2 + '_' + obj.id).remove();
1334
- jQuery('#' + 'rgraph_hscissors_' + 3 + '_' + obj.id).remove();
1335
- jQuery('#' + 'rgraph_hscissors_' + 4 + '_' + obj.id).remove();
1336
- callback(obj);
1337
- }, duration);
1338
-
1339
- return this;
1340
- };
1341
-
1342
-
1343
-
1344
-
1345
- /**
1346
- * Vertical Scissors (open)
1347
- *
1348
- * @param @object Optional object of options
1349
- * @param function Optional callback function
1350
- *
1351
- */
1352
- RG.Effects.Common.vScissorsOpen =
1353
- RG.Effects.Common.vscissorsopen = function ()
1354
- {
1355
- // This function gets added to the chart object - so the this
1356
- // variable is the chart object
1357
- var obj = this;
1358
- var opt = arguments[0] || {};
1359
- var frames = opt.frames || 60;
1360
- var duration = (frames / 60) * 1000;
1361
- var frame = 0;
1362
- var callback = arguments[1] || function () {};
1363
- var xy = RG.getCanvasXY(obj.canvas);
1364
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
1365
- var xy = RG.getCanvasXY(this.canvas);
1366
- var width = this.canvas.width / 10;
1367
-
1368
- /**
1369
- * First draw the chart
1370
- */
1371
- //RG.clear(obj.canvas);
1372
- RG.redrawCanvas(obj.canvas);
1373
-
1374
- for (var i=0; i<10; ++i) {
1375
- var div = doc.getElementById("rgraph_vscissors_" + i + '_' + obj.id);
1376
-
1377
- if (!div) {
1378
- var div = doc.createElement('DIV');
1379
- div.id = 'rgraph_vscissors_' + i + '_' + obj.id;
1380
- div.style.width = width + 'px';
1381
- div.style.height = obj.canvas.height + 'px';
1382
- div.style.left = xy[0] + (obj.canvas.width * (i / 10)) + 'px';
1383
- div.style.top = xy[1] + 'px';
1384
- div.style.position = 'absolute';
1385
- div.style.backgroundColor = color;
1386
- doc.body.appendChild(div);
1387
- }
1388
-
1389
- if (i % 2 == 0) {
1390
- jQuery('#' + 'rgraph_vscissors_' + i + '_' + obj.id).animate({top: xy[1] + obj.canvas.height + 'px', height: 0}, duration);
1391
- } else {
1392
- jQuery('#' + 'rgraph_vscissors_' + i + '_' + obj.id).animate({height: 0}, duration);
1393
- }
1394
- }
1395
-
1396
- setTimeout(function ()
1397
- {
1398
- doc.body.removeChild(doc.getElementById('rgraph_vscissors_0' + '_' + obj.id));
1399
- doc.body.removeChild(doc.getElementById('rgraph_vscissors_1' + '_' + obj.id));
1400
- doc.body.removeChild(doc.getElementById('rgraph_vscissors_2' + '_' + obj.id));
1401
- doc.body.removeChild(doc.getElementById('rgraph_vscissors_3' + '_' + obj.id));
1402
- doc.body.removeChild(doc.getElementById('rgraph_vscissors_4' + '_' + obj.id));
1403
-
1404
- callback(obj);
1405
-
1406
- }, duration);
1407
-
1408
- return this;
1409
- };
1410
-
1411
-
1412
-
1413
-
1414
- /**
1415
- * Vertical Scissors (close)
1416
- *
1417
- * @param object obj The graph object
1418
- * @param @object An array of options
1419
- * @param function Optional callback function
1420
- *
1421
- */
1422
- RG.Effects.Common.vscissorsclose =
1423
- RG.Effects.Common.vScissorsClose = function ()
1424
- {
1425
- // This function gets added to the chart object - so the this
1426
- // variable is the chart object
1427
- var obj = this;
1428
- var opt = arguments[0] || {};
1429
- var frames = opt.frames || 60;
1430
- var duration = (frames / 60) * 1000;
1431
- var frame = 0;
1432
- var callback = arguments[1] || function () {};
1433
- var xy = RG.getCanvasXY(obj.canvas);
1434
- var color = opt.background || opt.color || opt.backgroundColor || 'white';
1435
- var xy = RG.getCanvasXY(this.canvas);
1436
- var width = this.canvas.width / 10;
1437
-
1438
- /**
1439
- * First draw the chart
1440
- */
1441
- //RG.clear(obj.canvas);
1442
- RG.redrawCanvas(obj.canvas);
1443
-
1444
- for (var i=0; i<10; ++i) {
1445
- var div = doc.getElementById("rgraph_vscissors_" + i + '_' + obj.id)
1446
- if (!div) {
1447
- var div = doc.createElement('DIV');
1448
- div.id = 'rgraph_vscissors_' + i + '_' + obj.id;
1449
- div.style.width = width + 'px';
1450
- div.style.height = 0;
1451
- div.style.left = xy[0] + (width * i) + 'px';
1452
- div.style.top = (i % 2 == 0 ? xy[1] + obj.canvas.height : xy[1]) + 'px';
1453
- div.style.position = 'absolute';
1454
- div.style.backgroundColor = color;
1455
- doc.body.appendChild(div);
1456
- }
1457
-
1458
- if (i % 2 == 0) {
1459
- jQuery('#' + 'rgraph_vscissors_' + i + '_' + obj.id).animate({top: xy[1] + 'px', height: obj.canvas.height + 'px'}, duration);
1460
- } else {
1461
- jQuery('#' + 'rgraph_vscissors_' + i + '_' + obj.id).animate({height: obj.canvas.height + 'px'}, duration);
1462
- }
1463
- }
1464
-
1465
- setTimeout(function ()
1466
- {
1467
- RG.clear(obj.canvas);
1468
- for (var i=0; i<10; i++) {
1469
- jQuery('#rgraph_vscissors_' + i + '_' + obj.id).remove();
1470
- }
1471
- callback(obj);
1472
- }, duration);
1473
-
1474
- return this;
1475
- };
1476
-
1477
-
1478
-
1479
-
1480
- /**
1481
- * The Animate function. Similar to the jQuery Animate() function - simply pass it a
1482
- * map of the properties and their target values, and this function will animate
1483
- * them to get to those values.
1484
- *
1485
- * @param object map A map (an associative array) of the properties and their target values.
1486
- * @param An optional function which will be called when the animation is complete
1487
- */
1488
- RG.Effects.Common.animate = function (map)
1489
- {
1490
- var obj = this;
1491
- obj.draw();
1492
-
1493
- var totalFrames = (map && map['frames']) ? map['frames'] : 30;
1494
- var currentFrame = new Array();
1495
- var originalValues = new Array();
1496
- var diffs = new Array();
1497
- var steps = new Array();
1498
- var callback = arguments[1]
1499
-
1500
- function iterator ()
1501
- {
1502
- var id = [obj.id + '_' + obj.type];
1503
-
1504
- // Initialise the arrays
1505
- if (!currentFrame[id]) {
1506
- currentFrame[id] = totalFrames;
1507
- originalValues[id] = {};
1508
- diffs[id] = {};
1509
- steps[id] = {};
1510
- }
1511
-
1512
- for (var i in map) {
1513
- if (typeof map[i] === 'string' || typeof map[i] === 'number') {
1514
-
1515
- // If this the first frame, record the proginal value
1516
- if (currentFrame[id] == totalFrames) {
1517
- originalValues[id][i] = obj.get(i);
1518
- diffs[id][i] = map[i] - originalValues[id][i];
1519
- steps[id][i] = diffs[id][i] / totalFrames;
1520
- }
1521
-
1522
- obj.set(i, obj.get(i) + steps[id][i]);
1523
-
1524
- RG.clear(obj.canvas);
1525
- obj.draw();
1526
- }
1527
- }
1528
-
1529
- // If the current frame number is above zero, run the animation iterator again
1530
- if (--currentFrame[id] > 0) {
1531
- RG.Effects.updateCanvas(iterator);
1532
-
1533
- // Optional callback
1534
- } else {
1535
-
1536
- if (typeof callback === 'function') {
1537
- callback(obj);
1538
- }
1539
- }
1540
- }
1541
-
1542
- iterator();
1543
- }
1544
-
1545
-
1546
-
1547
-
1548
- // End Module pattern
1549
- })(window, document);
2
+ RGraph=window.RGraph||{isRGraph:true};RGraph.Effects=RGraph.Effects||{};RGraph.Effects.Common={};(function(win,doc,undefined)
3
+ {var RG=RGraph,ua=navigator.userAgent,ma=Math;RG.Effects.decorate=function(obj)
4
+ {for(i in RG.Effects.Common){if(typeof RG.Effects.Common[i]==='function'){obj[i]=RG.Effects.Common[i];}}};RG.Effects.replaceCanvasWithDIV=RG.Effects.ReplaceCanvasWithDIV=RG.Effects.wrap=function(canvas)
5
+ {if(!canvas.rgraph_wrapper){var div=$('<div></div>').css({width:canvas.width+'px',height:canvas.height+'px',cssFloat:canvas.style.cssFloat,left:canvas.style.left,top:canvas.style.top,display:'inline-block'}).get(0);canvas.parentNode.insertBefore(div,canvas);canvas.parentNode.removeChild(canvas);div.appendChild(canvas);canvas.style.position='relative';canvas.style.left=(div.offsetWidth/2)+'px';canvas.style.top=(div.offsetHeight/2)+'px';canvas.style.cssFloat='';canvas.rgraph_wrapper=div;}
6
+ var div=canvas.rgraph_wrapper;return div;};RG.Effects.Common.fadeIn=function()
7
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||30;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};obj.canvas.style.opacity=0;RG.redrawCanvas(obj.canvas);for(var i=1;i<=frames;++i){(function(index)
8
+ {setTimeout(function()
9
+ {obj.canvas.style.opacity=(index/frames);if(index>=frames){callback(obj);}},(index/frames)*duration);})(i)}
10
+ return obj;};RG.Effects.Common.fadeOut=function()
11
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||30;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};for(var i=1;i<=frames;++i){(function(index)
12
+ {setTimeout(function()
13
+ {obj.canvas.style.opacity=1-(index/frames);if(index>=frames){callback(obj);}},(index/frames)*duration);})(i)}
14
+ return this;};RG.Effects.Common.fadeSlideIn=function()
15
+ {var obj=this,opt=arguments[0]||{},frames=opt.frames||30,frame=0,pc=-20,step=(120-pc)/frames,canvasXY=RG.getCanvasXY(obj.canvas),color=opt.color||'white',callback=arguments[1]||function(){};RG.redrawCanvas(obj.canvas);$('<div id="rgraph_fadeslide_cover_'+obj.id+'"></div>').css({background:'linear-gradient(135deg, rgba(255,255,255,0) '+pc+'%, '+color+' '+(pc+20)+'%)',width:obj.canvas.width+'px',height:obj.canvas.height+'px',top:canvasXY[1]+'px',left:canvasXY[0]+'px',position:'absolute'}).appendTo($(obj.canvas.parentNode));function iterator()
16
+ {if(pc<120){$('div#rgraph_fadeslide_cover_'+obj.id).css({background:'linear-gradient(135deg, rgba(255,255,255,0) '+pc+'%, '+color+' '+(pc+20)+'%)'});pc+=step;RG.Effects.updateCanvas(iterator);}else{$('div#rgraph_fadeslide_cover_'+obj.id).remove();callback(obj);}}
17
+ iterator();};RG.Effects.Common.fadeSlideOut=function()
18
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||30;var frame=0;var pc=-20;var step=(120-pc)/frames;var canvasXY=RG.getCanvasXY(obj.canvas);var color=opt.color||'white';var callback=arguments[1]||function(){};RG.redrawCanvas(obj.canvas);$('<div id="rgraph_fadeslide_cover_'+obj.id+'"></div>').css({background:'linear-gradient(135deg, '+color+' '+pc+'%, rgba(255,255,255,0) '+(pc+20)+'%)',width:obj.canvas.width+'px',height:obj.canvas.height+'px',top:canvasXY[1]+'px',left:canvasXY[0]+'px',position:'absolute'}).appendTo($(obj.canvas.parentNode));function iterator()
19
+ {if(pc<120){$('div#rgraph_fadeslide_cover_'+obj.id).css({background:'linear-gradient(135deg, '+color+' '+pc+'%, rgba(255,255,255,0) '+(pc+20)+'%)'});pc+=step;RG.Effects.updateCanvas(iterator);}else{RG.clear(obj.canvas,obj.get('clearto'))
20
+ $('div#rgraph_fadeslide_cover_'+obj.id).remove();callback(obj);}}
21
+ iterator();};RG.Effects.Common.fadeCircularInOutwards=function()
22
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||120;var frame=0;var radius=0;var canvasXY=RG.getCanvasXY(obj.canvas);var color=opt.color||'white';var callback=arguments[1]||function(){};RG.redrawCanvas(obj.canvas);$('<div id="rgraph_fadeslide_cover_'+obj.id+'"></div>').css({background:'radial-gradient(rgba(255,255,255,0) 0%, white '+radius+'%)',width:obj.canvas.width+'px',height:obj.canvas.height+'px',top:canvasXY[1],left:canvasXY[0],position:'absolute'}).appendTo($(obj.canvas.parentNode));function iterator()
23
+ {if(frame<frames){$('div#rgraph_fadeslide_cover_'+obj.id).css({background:'radial-gradient(rgba(255,255,255,0) '+((frame++/ frames) * 100) + '%, ' + color + ' ' + ((frame++ /frames)*150)+'%)'});RG.Effects.updateCanvas(iterator);}else{$('div#rgraph_fadeslide_cover_'+obj.id).remove();callback(obj);}}
24
+ iterator();};RG.Effects.Common.fadeCircularOutOutwards=function()
25
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||120;var frame=0;var canvasXY=RG.getCanvasXY(obj.canvas);var color=opt.color||'white';var callback=arguments[1]||function(){};RG.redrawCanvas(obj.canvas);$('<div id="rgraph_fadeslide_cover_'+obj.id+'"></div>').css({background:'radial-gradient(rgba(255,255,255,0) 0%, white 0%)',width:obj.canvas.width+'px',height:obj.canvas.height+'px',top:canvasXY[1],left:canvasXY[0],position:'absolute'}).appendTo($(obj.canvas.parentNode));function iterator()
26
+ {if(frame<frames){$('div#rgraph_fadeslide_cover_'+obj.id).css({background:'radial-gradient('+color+' '+((frame++/ frames) * 100) + '%, rgba(255,255,255,0) ' + ((frame++ /frames)*150)+'%)'});RG.Effects.updateCanvas(iterator);}else{RG.clear(obj.canvas,color);$('div#rgraph_fadeslide_cover_'+obj.id).remove();callback(obj);}}
27
+ iterator();};RG.Effects.Common.fadeCircularInInwards=function()
28
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||120;var frame=0;var radius=ma.max(obj.canvas.width,obj.canvas.height);var canvasXY=RG.getCanvasXY(obj.canvas);var color=opt.color||'white';var callback=arguments[1]||function(){};RG.redrawCanvas(obj.canvas);$('<div id="rgraph_fadeslide_cover_'+obj.id+'"></div>').css({background:'radial-gradient(rgba(255,255,255,0) 100%, rgba(255,255,255,0) 0%)',width:obj.canvas.width+'px',height:obj.canvas.height+'px',top:canvasXY[1]+'px',left:canvasXY[0]+'px',position:'absolute'}).appendTo($(obj.canvas.parentNode));function iterator()
29
+ {if(frame<frames){$('div#rgraph_fadeslide_cover_'+obj.id).css({background:'radial-gradient('+color+' '+(((frames-frame++)/frames)*100)+'%, rgba(255,255,255,0) '+(((frames-frame++)/frames)*120)+'%)'});RG.Effects.updateCanvas(iterator);}else{$('div#rgraph_fadeslide_cover_'+obj.id).remove();callback(obj);}}
30
+ iterator();};RG.Effects.Common.fadeCircularOutInwards=function()
31
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||120;var frame=0;var radius=ma.max(obj.canvas.width,obj.canvas.height);var canvasXY=RG.getCanvasXY(obj.canvas);var color=opt.color||'white';var callback=arguments[1]||function(){};RG.redrawCanvas(obj.canvas);$('<div id="rgraph_fadeslide_cover_'+obj.id+'"></div>').css({background:'radial-gradient(rgba(255,255,255,0) 0%, rgba(255,255,255,0) 0%)',width:obj.canvas.width+'px',height:obj.canvas.height+'px',top:canvasXY[1],left:canvasXY[0],position:'absolute'}).appendTo($(obj.canvas.parentNode));function iterator()
32
+ {if(frame<frames){$('div#rgraph_fadeslide_cover_'+obj.id).css({background:'radial-gradient(rgba(255,255,255,0) '+(((frames-frame++)/frames)*100)+'%, '+color+' '+(((frames-frame++)/frames)*120)+'%)'});RG.Effects.updateCanvas(iterator);}else{RG.clear(obj.canvas);$('div#rgraph_fadeslide_cover_'+obj.id).remove();callback(obj);}}
33
+ iterator();};RG.Effects.Common.expand=function()
34
+ {var obj=this;var opt=arguments[0]||{};var bounce=typeof opt.bounce==='boolean'?opt.bounce:true;var frames=opt.frames||60;var duration=(frames/60)*1000;var callback=arguments[1]||function(){};if(!this.canvas.rgraph_wrapper){var div=RG.Effects.wrap(this.canvas);this.canvas.rgraph_wrapper=div;}else{div=this.canvas.rgraph_wrapper;}
35
+ div.style.position='relative';this.canvas.style.top=(this.canvas.height/2)+'px';this.canvas.style.left=(this.canvas.width/2)+'px';this.canvas.style.width=0;this.canvas.style.height=0;this.canvas.style.opacity=0;RG.clear(this.canvas);RG.redrawCanvas(this.canvas);if(bounce){jQuery('#'+obj.id).animate({opacity:1,width:(obj.canvas.width*1.2)+'px',height:(obj.canvas.height*1.2)+'px',left:(obj.canvas.width* -0.1)+'px',top:(obj.canvas.height* -0.1)+'px'},duration*0.5,function()
36
+ {jQuery('#'+obj.id).animate({width:(obj.canvas.width*0.9)+'px',height:(obj.canvas.height*0.9)+'px',top:(obj.canvas.height*0.05)+'px',left:(obj.canvas.width*0.05)+'px'},duration*0.25,function()
37
+ {jQuery('#'+obj.id).animate({width:obj.canvas.width+'px',height:obj.canvas.height+'px',top:0,left:0},duration*0.25,function(){callback(obj);});});});}else{jQuery(obj.canvas).animate({opacity:1,width:obj.canvas.width+'px',height:obj.canvas.height+'px',left:0,top:0},duration,function(){callback(obj);})}
38
+ return this;};RG.Effects.Common.contract=function()
39
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var callback=arguments[1]||function(){};if(!obj.canvas.rgraph_wrapper){var div=RG.Effects.wrap(obj.canvas);obj.canvas.rgraph_wrapper=div;}else{div=obj.canvas.rgraph_wrapper;}
40
+ div.style.position='relative';obj.canvas.style.top=0;obj.canvas.style.left=0;if(opt.bounce!==false){jQuery('#'+obj.id).animate({width:(obj.canvas.width*1.2)+'px',height:(obj.canvas.height*1.2)+'px',left:(obj.canvas.width* -0.1)+'px',top:(obj.canvas.height* -0.1)+'px'},duration*0.25,function()
41
+ {jQuery('#'+obj.id).animate({opacity:0,width:0,height:0,left:(obj.canvas.width*0.5)+'px',top:(obj.canvas.height*0.5)+'px'},duration*0.75,function(){callback(obj);});});}else{jQuery('#'+obj.id).animate({opacity:0,width:0,height:0,left:(obj.canvas.width*0.5)+'px',top:(obj.canvas.height*0.5)+'px'},duration*0.75,function(){callback(obj);});}
42
+ return this;};RG.Effects.Common.reveal=function()
43
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var callback=arguments[1]||function(){};var xy=RG.getCanvasXY(obj.canvas);var divs=[['rgraph_reveal_left_'+obj.id,xy[0],xy[1],obj.canvas.width/2,obj.canvas.height],['rgraph_reveal_right_'+obj.id,(xy[0]+(obj.canvas.width/2)),xy[1],(obj.canvas.width/2),obj.canvas.height],['rgraph_reveal_top_'+obj.id,xy[0],xy[1],obj.canvas.width,(obj.canvas.height/2)],['rgraph_reveal_bottom_'+obj.id,xy[0],(xy[1]+(obj.canvas.height/2)),obj.canvas.width,(obj.canvas.height/2)]];for(var i=0,len=divs.length;i<len;++i){var div=document.createElement('DIV');div.id=divs[i][0];div.style.width=divs[i][3]+'px';div.style.height=divs[i][4]+'px';div.style.left=divs[i][1]+'px';div.style.top=divs[i][2]+'px';div.style.position='absolute';div.style.backgroundColor=opt&&typeof opt.color==='string'?opt.color:'white';document.body.appendChild(div);}
44
+ RG.clear(obj.canvas);RG.redrawCanvas(obj.canvas);jQuery('#rgraph_reveal_left_'+obj.id).animate({width:0},duration);jQuery('#rgraph_reveal_right_'+obj.id).animate({left:'+='+(obj.canvas.width/2),width:0},duration);jQuery('#rgraph_reveal_top_'+obj.id).animate({height:0},duration);jQuery('#rgraph_reveal_bottom_'+obj.id).animate({top:'+='+(obj.canvas.height/2),height:0},duration);setTimeout(function()
45
+ {doc.body.removeChild(doc.getElementById("rgraph_reveal_top_"+obj.id));doc.body.removeChild(doc.getElementById("rgraph_reveal_bottom_"+obj.id));doc.body.removeChild(doc.getElementById("rgraph_reveal_left_"+obj.id));doc.body.removeChild(doc.getElementById("rgraph_reveal_right_"+obj.id));callback(obj);},duration);return this;};RG.Effects.Common.revealCircular=RG.Effects.Common.revealcircular=function()
46
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||30;var frame=0;var callback=arguments[1]||function(){};var currentRadius=0
47
+ var centerx=obj.canvas.width/2;var centery=obj.canvas.height/2;var targetRadius=ma.max(obj.canvas.height,obj.canvas.width);var step=targetRadius/frames;var color=opt.background||opt.color||opt.backgroundColor||'transparent';function iterator()
48
+ {RG.clear(obj.canvas,color);obj.context.save();obj.context.beginPath();obj.context.arc(centerx,centery,currentRadius,0,RG.TWOPI,false);obj.context.clip();if(opt.background){RG.clear(obj.canvas,opt.background);}
49
+ obj.draw();obj.context.restore();if(currentRadius<targetRadius){currentRadius+=step;RG.Effects.updateCanvas(iterator);}else{callback(obj);}}
50
+ iterator();return this;};RG.Effects.Common.conceal=function()
51
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var xy=RG.getCanvasXY(obj.canvas);var color=opt.background||opt.color||opt.backgroundColor||'white';var divs=[['rgraph_conceal_left_'+obj.id,xy[0],xy[1],0,obj.canvas.height],['rgraph_conceal_right_'+obj.id,(xy[0]+obj.canvas.width),xy[1],0,obj.canvas.height],['rgraph_conceal_top_'+obj.id,xy[0],xy[1],obj.canvas.width,0],['rgraph_conceal_bottom_'+obj.id,xy[0],(xy[1]+obj.canvas.height),obj.canvas.width,0]];for(var i=0,len=divs.length;i<len;++i){var div=doc.createElement('DIV');div.id=divs[i][0];div.style.width=divs[i][3]+'px';div.style.height=divs[i][4]+'px';div.style.left=divs[i][1]+'px';div.style.top=divs[i][2]+'px';div.style.position='absolute';div.style.backgroundColor=color;doc.body.appendChild(div);}
52
+ jQuery('#rgraph_conceal_left_'+obj.id).animate({width:'+='+(obj.canvas.width/2)},duration);jQuery('#rgraph_conceal_right_'+obj.id).animate({left:'-='+(obj.canvas.width/2),width:(obj.canvas.width/2)},duration);jQuery('#rgraph_conceal_top_'+obj.id).animate({height:'+='+(obj.canvas.height/2)},duration);jQuery('#rgraph_conceal_bottom_'+obj.id).animate({top:'-='+(obj.canvas.height/2),height:(obj.canvas.height/2)},duration);setTimeout(function()
53
+ {doc.body.removeChild(doc.getElementById("rgraph_conceal_top_"+obj.id));doc.body.removeChild(doc.getElementById("rgraph_conceal_bottom_"+obj.id));doc.body.removeChild(doc.getElementById("rgraph_conceal_left_"+obj.id));doc.body.removeChild(doc.getElementById("rgraph_conceal_right_"+obj.id));RG.clear(obj.canvas);callback(obj);},duration);return this;};RG.Effects.Common.hBlindsOpen=RG.Effects.Common.hblindsOpen=function()
54
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var height=this.canvas.height/5;RG.clear(this.canvas);RG.redrawCanvas(this.canvas);for(var i=0;i<5;++i){var div=doc.createElement('DIV');div.id='rgraph_hblinds_'+i+'_'+obj.id;div.style.width=this.canvas.width+'px';div.style.height=height+'px';div.style.left=xy[0]+'px';div.style.top=(xy[1]+(this.canvas.height*(i/5)))+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);jQuery('#rgraph_hblinds_'+i+'_'+obj.id).animate({height:0},duration);}
55
+ setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_0_'+obj.id));},duration);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_1_'+obj.id));},duration);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_2_'+obj.id));},duration);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_3_'+obj.id));},duration);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_4_'+obj.id));},duration);setTimeout(function(){callback(obj);},duration);return this;};RG.Effects.Common.hBlindsClose=RG.Effects.Common.hblindsclose=function()
56
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var height=this.canvas.height/5;for(var i=0;i<5;++i){var div=doc.createElement('DIV');div.id='rgraph_hblinds_'+i+'_'+obj.id;div.style.width=this.canvas.width+'px';div.style.height=0;div.style.left=xy[0]+'px';div.style.top=(xy[1]+(this.canvas.height*(i/5)))+'px';div.style.position='absolute';div.style.backgroundColor=color;doc.body.appendChild(div);jQuery('#rgraph_hblinds_'+i+'_'+obj.id).animate({height:height+'px'},duration);}
57
+ setTimeout(function(){RG.clear(obj.canvas);},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_0_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_1_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_2_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_3_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_hblinds_4_'+obj.id));},duration+100);setTimeout(function(){callback(obj);},duration+100);};RG.Effects.Common.vBlindsOpen=RG.Effects.Common.vblindsopen=function()
58
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var width=this.canvas.width/10;RG.redrawCanvas(obj.canvas);for(var i=0;i<10;++i){var div=doc.createElement('DIV');div.id='rgraph_vblinds_'+i+'_'+obj.id;div.style.width=width+'px';div.style.height=this.canvas.height+'px';div.style.left=(xy[0]+(this.canvas.width*(i/10)))+'px';div.style.top=(xy[1])+'px';div.style.position='absolute';div.style.backgroundColor=color;doc.body.appendChild(div);jQuery('#rgraph_vblinds_'+i+'_'+obj.id).animate({width:0},duration);}
59
+ setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_0_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_1_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_2_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_3_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_4_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_5_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_6_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_7_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_8_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_9_'+obj.id));},duration+100);setTimeout(function(){callback(obj);},duration+100);return this;};RG.Effects.Common.vblindsclose=RG.Effects.Common.vBlindsClose=function()
60
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var width=this.canvas.width/10;for(var i=0;i<10;++i){var div=doc.createElement('DIV');div.id='rgraph_vblinds_'+i+'_'+obj.id;div.style.width=0;div.style.height=this.canvas.height+'px';div.style.left=(xy[0]+(this.canvas.width*(i/10)))+'px';div.style.top=(xy[1])+'px';div.style.position='absolute';div.style.backgroundColor=color;doc.body.appendChild(div);jQuery('#rgraph_vblinds_'+i+'_'+obj.id).animate({width:width},duration);}
61
+ setTimeout(function(){RG.clear(obj.canvas);},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_0_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_1_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_2_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_3_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_4_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_5_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_6_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_7_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_8_'+obj.id));},duration+100);setTimeout(function(){doc.body.removeChild(doc.getElementById('rgraph_vblinds_9_'+obj.id));},duration+100);setTimeout(function(){callback(obj);},duration+100);return this;};RG.Effects.Common.slideIn=function()
62
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var width=this.canvas.width/10;var div=RG.Effects.wrap(obj.canvas);var from=opt.from||'left';div.style.overflow='hidden';RG.clear(obj.canvas);RG.redrawCanvas(obj.canvas);canvas.style.position='relative';if(from=='left'){obj.canvas.style.left=(0-div.offsetWidth)+'px';obj.canvas.style.top=0;}else if(from=='top'){obj.canvas.style.left=0;obj.canvas.style.top=(0-div.offsetHeight)+'px';}else if(from=='bottom'){obj.canvas.style.left=0;obj.canvas.style.top=div.offsetHeight+'px';}else{obj.canvas.style.left=div.offsetWidth+'px';obj.canvas.style.top=0;}
63
+ jQuery('#'+obj.id).animate({left:0,top:0},duration,function()
64
+ {callback(obj);});return this;};RG.Effects.Common.slideOut=function()
65
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var width=this.canvas.width/10;var div=RG.Effects.wrap(obj.canvas);var to=opt.to||'left';div.style.overflow='hidden';obj.canvas.style.position='relative';obj.canvas.style.left=0;obj.canvas.style.top=0;if(to=='left'){jQuery('#'+obj.id).animate({left:(0-obj.canvas.width)+'px'},duration,function(){callback(obj);});}else if(to=='top'){jQuery('#'+obj.id).animate({left:0,top:(0-div.offsetHeight)+'px'},duration,function(){callback(obj);});}else if(to=='bottom'){jQuery('#'+obj.id).animate({top:(0+div.offsetHeight)+'px'},duration,function(){callback(obj);});}else{jQuery('#'+obj.id).animate({left:(0+obj.canvas.width)+'px'},duration,function(){callback(obj);});}
66
+ return this;};RG.Effects.Common.hscissorsopen=RG.Effects.Common.hScissorsOpen=function()
67
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var width=this.canvas.width/10;var to=opt.to||'left';var height=obj.canvas.height/5;RG.clear(obj.canvas);RG.redrawCanvas(obj.canvas);for(var i=0;i<5;++i){var div=doc.getElementById("rgraph_hscissors_"+i+'_'+obj.id)
68
+ if(!div){var div=doc.createElement('DIV');div.id='rgraph_hscissors_'+i+'_'+obj.id;div.style.width=obj.canvas.width+'px';div.style.height=height+'px';div.style.left=xy[0]+'px';div.style.top=(xy[1]+(obj.canvas.height*(i/5)))+'px';div.style.position='absolute';div.style.backgroundColor=color;doc.body.appendChild(div);}
69
+ if(i%2==0){jQuery('#'+'rgraph_hscissors_'+i+'_'+obj.id).animate({left:xy[0]+obj.canvas.width+'px',width:0},duration);}else{jQuery('#'+'rgraph_hscissors_'+i+'_'+obj.id).animate({width:0},duration);}}
70
+ setTimeout(function()
71
+ {doc.body.removeChild(doc.getElementById('rgraph_hscissors_0_'+obj.id));doc.body.removeChild(doc.getElementById('rgraph_hscissors_1_'+obj.id));doc.body.removeChild(doc.getElementById('rgraph_hscissors_2_'+obj.id));doc.body.removeChild(doc.getElementById('rgraph_hscissors_3_'+obj.id));doc.body.removeChild(doc.getElementById('rgraph_hscissors_4_'+obj.id));callback(obj);},duration);return this;};RG.Effects.Common.hScissorsClose=RG.Effects.Common.hscissorsclose=function()
72
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var height=obj.canvas.height/5;RG.redrawCanvas(obj.canvas);for(var i=0;i<5;++i){var div=doc.createElement('DIV');div.id='rgraph_hscissors_'+i+'_'+obj.id;div.style.width=0;div.style.height=height+'px';div.style.left=(i%2==0?xy[0]+obj.canvas.width:xy[0])+'px';div.style.top=(xy[1]+(obj.canvas.height*(i/5)))+'px';div.style.position='absolute';div.style.backgroundColor=color;doc.body.appendChild(div);if(i%2==0){jQuery('#'+'rgraph_hscissors_'+i+'_'+obj.id).animate({left:xy[0]+'px',width:obj.canvas.width+'px'},duration);}else{jQuery('#'+'rgraph_hscissors_'+i+'_'+obj.id).animate({width:obj.canvas.width+'px'},duration);}}
73
+ setTimeout(function()
74
+ {RGraph.clear(obj.canvas);jQuery('#'+'rgraph_hscissors_'+0+'_'+obj.id).remove();jQuery('#'+'rgraph_hscissors_'+1+'_'+obj.id).remove();jQuery('#'+'rgraph_hscissors_'+2+'_'+obj.id).remove();jQuery('#'+'rgraph_hscissors_'+3+'_'+obj.id).remove();jQuery('#'+'rgraph_hscissors_'+4+'_'+obj.id).remove();callback(obj);},duration);return this;};RG.Effects.Common.vScissorsOpen=RG.Effects.Common.vscissorsopen=function()
75
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var xy=RG.getCanvasXY(obj.canvas);var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var width=this.canvas.width/10;RG.redrawCanvas(obj.canvas);for(var i=0;i<10;++i){var div=doc.getElementById("rgraph_vscissors_"+i+'_'+obj.id);if(!div){var div=doc.createElement('DIV');div.id='rgraph_vscissors_'+i+'_'+obj.id;div.style.width=width+'px';div.style.height=obj.canvas.height+'px';div.style.left=xy[0]+(obj.canvas.width*(i/10))+'px';div.style.top=xy[1]+'px';div.style.position='absolute';div.style.backgroundColor=color;doc.body.appendChild(div);}
76
+ if(i%2==0){jQuery('#'+'rgraph_vscissors_'+i+'_'+obj.id).animate({top:xy[1]+obj.canvas.height+'px',height:0},duration);}else{jQuery('#'+'rgraph_vscissors_'+i+'_'+obj.id).animate({height:0},duration);}}
77
+ setTimeout(function()
78
+ {doc.body.removeChild(doc.getElementById('rgraph_vscissors_0'+'_'+obj.id));doc.body.removeChild(doc.getElementById('rgraph_vscissors_1'+'_'+obj.id));doc.body.removeChild(doc.getElementById('rgraph_vscissors_2'+'_'+obj.id));doc.body.removeChild(doc.getElementById('rgraph_vscissors_3'+'_'+obj.id));doc.body.removeChild(doc.getElementById('rgraph_vscissors_4'+'_'+obj.id));callback(obj);},duration);return this;};RG.Effects.Common.vscissorsclose=RG.Effects.Common.vScissorsClose=function()
79
+ {var obj=this;var opt=arguments[0]||{};var frames=opt.frames||60;var duration=(frames/60)*1000;var frame=0;var callback=arguments[1]||function(){};var xy=RG.getCanvasXY(obj.canvas);var color=opt.background||opt.color||opt.backgroundColor||'white';var xy=RG.getCanvasXY(this.canvas);var width=this.canvas.width/10;RG.redrawCanvas(obj.canvas);for(var i=0;i<10;++i){var div=doc.getElementById("rgraph_vscissors_"+i+'_'+obj.id)
80
+ if(!div){var div=doc.createElement('DIV');div.id='rgraph_vscissors_'+i+'_'+obj.id;div.style.width=width+'px';div.style.height=0;div.style.left=xy[0]+(width*i)+'px';div.style.top=(i%2==0?xy[1]+obj.canvas.height:xy[1])+'px';div.style.position='absolute';div.style.backgroundColor=color;doc.body.appendChild(div);}
81
+ if(i%2==0){jQuery('#'+'rgraph_vscissors_'+i+'_'+obj.id).animate({top:xy[1]+'px',height:obj.canvas.height+'px'},duration);}else{jQuery('#'+'rgraph_vscissors_'+i+'_'+obj.id).animate({height:obj.canvas.height+'px'},duration);}}
82
+ setTimeout(function()
83
+ {RG.clear(obj.canvas);for(var i=0;i<10;i++){jQuery('#rgraph_vscissors_'+i+'_'+obj.id).remove();}
84
+ callback(obj);},duration);return this;};RG.Effects.Common.animate=function(map)
85
+ {var obj=this;obj.draw();var totalFrames=(map&&map['frames'])?map['frames']:30;var currentFrame=new Array();var originalValues=new Array();var diffs=new Array();var steps=new Array();var callback=arguments[1]
86
+ function iterator()
87
+ {var id=[obj.id+'_'+obj.type];if(!currentFrame[id]){currentFrame[id]=totalFrames;originalValues[id]={};diffs[id]={};steps[id]={};}
88
+ for(var i in map){if(typeof map[i]==='string'||typeof map[i]==='number'){if(currentFrame[id]==totalFrames){originalValues[id][i]=obj.get(i);diffs[id][i]=map[i]-originalValues[id][i];steps[id][i]=diffs[id][i]/totalFrames;}
89
+ obj.set(i,obj.get(i)+steps[id][i]);RG.clear(obj.canvas);obj.draw();}}
90
+ if(--currentFrame[id]>0){RG.Effects.updateCanvas(iterator);}else{if(typeof callback==='function'){callback(obj);}}}
91
+ iterator();}})(window,document);