Chris@16: var Subform = Class.create({ Chris@16: lineIndex: 1, Chris@16: parentElement: "", Chris@16: initialize: function(rawHTML, lineIndex, parentElement) { Chris@16: this.rawHTML = rawHTML; Chris@16: this.lineIndex = lineIndex; Chris@16: this.parentElement = parentElement; Chris@16: }, Chris@16: Chris@16: parsedHTML: function() { Chris@16: return this.rawHTML.replace(/--INDEX--/g, this.lineIndex++); Chris@16: }, Chris@16: Chris@16: add: function() { Chris@16: var e = $(this.parentElement); Chris@16: Element.insert(e, { bottom: this.parsedHTML()}); Chris@16: Effect.toggle(e.childElements().last(), 'slide', {duration:0.2}); Chris@16: recalculate_even_odd(e); Chris@16: }, Chris@16: Chris@16: add_after: function(e) { Chris@16: Element.insert(e, { after: this.parsedHTML()}); Chris@16: Effect.toggle(e.next(), 'slide', {duration:0.2}); Chris@16: recalculate_even_odd($(this.parentElement)); Chris@16: }, Chris@16: Chris@16: add_on_top: function() { Chris@16: var e = $(this.parentElement); Chris@16: Element.insert(e, { top: this.parsedHTML()}); Chris@16: Effect.toggle(e.childElements().first(), 'slide', {duration:0.2}); Chris@16: recalculate_even_odd(e); Chris@16: } Chris@16: }); Chris@16: Chris@16: function recalculate_even_odd(element) { Chris@16: $A(element.childElements()).inject( Chris@16: 0, Chris@16: function(acc, e) Chris@16: { Chris@16: e.removeClassName("even"); Chris@16: e.removeClassName("odd"); Chris@16: e.addClassName( (acc%2==0) ? "odd" : "even"); return ++acc; Chris@16: } Chris@16: ) Chris@16: }