SVG.extend(SVG.Element, { // Remember arbitrary data remember: function(k, v) { // remember every item in an object individually if (typeof arguments[0] == 'object') for (var v in k) this.remember(v, k[v]) // retrieve memory else if (arguments.length == 1) return this.memory()[k] // store memory else this.memory()[k] = v return this } // Erase a given memory , forget: function() { if (arguments.length == 0) this._memory = {} else for (var i = arguments.length - 1; i >= 0; i--) delete this.memory()[arguments[i]] return this } // Initialize or return local memory object , memory: function() { return this._memory || (this._memory = {}) } })