var Elements = function(e, obj){ Object.defineProperty(this, 'reset', { enumerable: true, writable: false, value: reset }); Object.defineProperty(this, 'exit', { enumerable: true, writable: false, value: exit }); for(var k in obj){ Object.defineProperty(this, k, { enumerable: true, writable: true, value: getElement(obj[k]) }); } function getElement(t){ if(t.selector) return e.querySelector(t.selector); else if(t.target) return t.target; else return null; } function reset(){ var o = obj; for(var k in o){ if(o[k].ignoreReset != true) resetElement(this[k]); } } function exit(){ var o = obj; for(var k in o){ if(this[k] && this[k].exit) this[k].exit(); this[k] = null; o[k] = null; } } function resetCheck(t){ if(t) resetElement(t); } function resetElement(t){ if(isDefined(t)){ if(isInput(t.tagName)) t.value = ''; else if (t.reset) t.reset(); } } function isInput(n){ return isDefined(n) && (n == 'INPUT' || n == 'TEXTAREA'); } };