(function(a){AT.Model=function(){var b=function(){};return b.prototype={get:function(a){var b=a.split("."),c=b.shift();if(this.data.hasOwnProperty(c)){var d=this.data[c];while(b.length>0)d=d[b.shift()];return d}if(this[c]!==undefined)return _(this[c]).isFunction()?this[c]():this[c];throw new Error("Unknown property: "+a)},set:function(a,b){return this.data[a]=b,this},updateData:function(a){this.errors=[];if(a.errors){var b=_(function(a,b){var c;b==="base"?c=a:(b==="body"&&(b="comment"),b=b.replace("_"," "),c=b.substr(0,1).toUpperCase()+b.substr(1),c+=" "+a),this.errors.push(c)}).bind(this);_(a.errors).each(b)}else this.data=this.config.json_root?a[this.config.json_root]:a,_(this.config.date_attrs).each(_(function(a){this.data[a]&&this.set(a,Date.parse(this.get(a)))}).bind(this)),this.config.contains_models&&_(this.config.contains_models).each(_(function(a,b){var c=this.get(b),d;a instanceof Array?d=_(c).map(function(b){return new a[0](b)}):d=new a(c),this.set(b,d)}).bind(this))},ajaxSuccessCallback:function(a){return _(function(b){this.waitingForServer&&(this.waitingForServer=!1),this.updateData(b),a.success(this)}).bind(this)},ajaxErrorCallback:function(b){return _(function(c){this.waitingForServer&&(this.waitingForServer=!1);var d;try{d=a.parseJSON(c.responseText)}catch(e){return{errors:{base:"An unknown error occurred"}}}return this.updateData(d),b.error(this)}).bind(this)}},{create:function(a){a=a||{};var c=a.init;return c||(c=function(a){a=a||{},this.data=a}),c.prototype=new b,a.instance&&_(c.prototype).extend(a.instance),a.klass&&_(c).extend(a.klass),c.prototype.config={date_attrs:["created_at","updated_at"]},_(c.prototype.config).extend(a.config||{}),c}}}()})(jQuery)
