Chris@16
|
1 var Subform = Class.create({
|
Chris@16
|
2 lineIndex: 1,
|
Chris@16
|
3 parentElement: "",
|
Chris@16
|
4 initialize: function(rawHTML, lineIndex, parentElement) {
|
Chris@16
|
5 this.rawHTML = rawHTML;
|
Chris@16
|
6 this.lineIndex = lineIndex;
|
Chris@16
|
7 this.parentElement = parentElement;
|
Chris@16
|
8 },
|
Chris@16
|
9
|
Chris@16
|
10 parsedHTML: function() {
|
Chris@16
|
11 return this.rawHTML.replace(/--INDEX--/g, this.lineIndex++);
|
Chris@16
|
12 },
|
Chris@16
|
13
|
Chris@16
|
14 add: function() {
|
Chris@16
|
15 var e = $(this.parentElement);
|
Chris@16
|
16 Element.insert(e, { bottom: this.parsedHTML()});
|
Chris@16
|
17 Effect.toggle(e.childElements().last(), 'slide', {duration:0.2});
|
Chris@16
|
18 recalculate_even_odd(e);
|
Chris@16
|
19 },
|
Chris@16
|
20
|
Chris@16
|
21 add_after: function(e) {
|
Chris@16
|
22 Element.insert(e, { after: this.parsedHTML()});
|
Chris@16
|
23 Effect.toggle(e.next(), 'slide', {duration:0.2});
|
Chris@16
|
24 recalculate_even_odd($(this.parentElement));
|
Chris@16
|
25 },
|
Chris@16
|
26
|
Chris@16
|
27 add_on_top: function() {
|
Chris@16
|
28 var e = $(this.parentElement);
|
Chris@16
|
29 Element.insert(e, { top: this.parsedHTML()});
|
Chris@16
|
30 Effect.toggle(e.childElements().first(), 'slide', {duration:0.2});
|
Chris@16
|
31 recalculate_even_odd(e);
|
Chris@16
|
32 }
|
Chris@16
|
33 });
|
Chris@16
|
34
|
Chris@16
|
35 function recalculate_even_odd(element) {
|
Chris@16
|
36 $A(element.childElements()).inject(
|
Chris@16
|
37 0,
|
Chris@16
|
38 function(acc, e)
|
Chris@16
|
39 {
|
Chris@16
|
40 e.removeClassName("even");
|
Chris@16
|
41 e.removeClassName("odd");
|
Chris@16
|
42 e.addClassName( (acc%2==0) ? "odd" : "even"); return ++acc;
|
Chris@16
|
43 }
|
Chris@16
|
44 )
|
Chris@16
|
45 }
|