class God
update: (el) => model = el.getAttribute(Ethereal.attributeName) if model? @create(el, model) else @destroy(el) create: (el) => model = el.getAttribute(Ethereal.attributeName) if @modelExists(model) el.instance = new Ethereal.Models.klass[model](el) el.instance.element = -> el el.instance.on = (event, target, callback) -> if callback? el.instance.on.events.push([event, target, callback]) else callback = target target = el target.addEventListener(event, callback) el.instance.on.events = [] if el.instance.loaded? el.instance.loaded() else throw "error: #{model} is not registered. Add your model with Ethereal.Models.add(#{model})" destroy: (el) => el.instance.on.events?.forEach (event) -> event[1].removeEventListener(event[0], event[2]) modelExists: (name) => Ethereal.Models.klass[name]?
Ethereal.God = new God