var Entries = Entries || function(head, body) { this.head_element = head; // DOM element for head this.element = body; // DOM element for row this.entries_head = document.createElement('div'); this.entries_head.className = 'row'; this.head_element.appendChild(this.entries_head); this.entries_row = document.createElement('div'); this.entries_row.className = 'row'; this.last = document.createElement('div'); this.last.className = 'cell'; this.last.id = 'last'; this.entries_row.appendChild(this.last); this.element.appendChild(this.entries_row); this.entries = [] this.entry_count = 0; }; Entries.prototype.clear = function() { for (var i = this.entries.length-1; i >= 0; i--) { this.entries[i].destroy(); } this.entries = []; }; Entries.prototype.addEntry = function(index) { index = this.entries.length; var entry = new EEntry(this, index); this.entries_row.insertBefore(entry.element, this.last); this.entries[index] = entry; }; Entries.prototype.removeEntry = function(index) { if (index <= 1 || index > this.entries.length) return; var entry = this.entries[index]; this.entries.splice(index, 1); for (var i = 0; i <= this.entries.lenth; i++) { this.entries[i].index = i; } entry.destroy(); }; var EEntry = EEntry || function(parent, index) { var self = this; this.parent = parent; this.index = index; this.element = document.createElement('div'); this.element.className = 'cell'; this.input = document.createElement('input'); if (this.index == 0) this.input.placeholder = '01-12'; this.input.addEventListener('input', function(e) { var event = document.createEvent('HTMLEvents'); event.initEvent('headinput', true, true); event.entry_index = self.index; event.entry = self; self.parent.element.dispatchEvent(event); }); this.element.appendChild(this.input); }; EEntry.prototype.destroy = function() { this.element.parentNode.removeChild(this.element); };