jQuery.delegate=function(d,e){return function(a){var b=jQuery(a.target);for(var c in d)if(b.is(c))return d[c].apply(e||this,jQuery.makeArray(arguments))}};var Editable=function(k,h){if(!h)h={};var j=h.link||'.edit';var f=this;this.wrapper=jQuery(k);this.links=jQuery(j);this.link=this.wrapper.find(j)[0];this.view=this.wrapper.children(h.view||'.content');this.view.after('<div class="form" style="display:none;"></div>');this.form=this.view.next();function n(a){if(typeof a=='number')return(a/13).toString()+'em'};this.transition=function(a,b,c){var d=this.wrapper;var e=this;d.children().each(function(){jQuery(this).css({width:n(d.width())})});d.animate({opacity:0,height:n(a)},function(){b.call(c||null);d.animate({opacity:1})});return this};this.edit=function(){var b=this;jQuery.get(this.link.href,{},function(a){b.form.html(a);b.form.children('.book-form').prepend('<p class="cancel button">Cancel</p>');b.links.fadeOut();b.transition(b.form.height(),function(){this.view.hide();this.form.show()},b)});return false};this.list=function(a){if(a)this.view.html(a);this.transition(this.view.height(),function(){this.form.hide().html('');this.view.show();this.links.fadeIn()},this)};this.remove=function(){var a=this;this.wrapper.fadeOut(function(){a.wrapper.remove();a.links.fadeIn()});return false};this.post=function(a,b){var c=a.target;jQuery.post(c.action,jQuery(c).serialize(),b)};this.autofill=function(e,g){var l=this,m;jQuery.post('/books/autofill',{isbn:g},function(c,d){if(d==='success'){e=jQuery(e);m=jQuery.parseJSON(c);jQuery.each(c,function(a,b){e.find('#book_'+a).attr('value',b)})}})};this.cancel=function(){this.list();return false};this.save=function(c){var d,e,g;d=this;e=jQuery(c.target).serializeArray();g=jQuery.grep(e,function(a){return a.name.match(/book\[\w+\]/)&&a.value.length>0});if(g.length===1&&jQuery.grep(g,function(item){return item.name==='book[isbn]'})){d.autofill(c.target,g[0].value)}else{d.post(c,function(a,b){if('success'==b)d.list(a)})}return false};this.destroy=function(a){var b=this;var c=confirm("Are you sure?");if(c)this.post(a,function(response,status){if('success'==status)b.remove()});return false};jQuery(this.wrapper).click(jQuery.delegate({'.edit':this.edit,'.cancel':this.cancel},this)).submit(jQuery.delegate({'form.edit_form':this.save,'form.button-to':this.destroy},this))};AutoFill=function(h){this._0=jQuery(h);var j=this;this._0.submit(function(e){var g=j._0.serializeArray(),l=jQuery.grep(g,function(a){return a.name.match(/book\[\w+\]/)&&a.value.length>0}),m,k;if(l.length===1&&l[0].name==='book[isbn]'){k=l[0].value;jQuery.post('/books/autofill',{isbn:k},function(c,d){if(d==='success'){m=jQuery.parseJSON(c);jQuery.each(c,function(a,b){j._0.find('#book_'+a).attr('value',b)})}});return false}})};var compose=function(){var c=Array.prototype.slice.call(arguments),d=c.length-1;return function(){var a=c[d].apply(null,arguments),b=d;while(b--){a=c[b].call(null,a)}return a}};var getContents=function(a){return a.innerHTML};var maximum=function(c){return c.reduce(function(a,b){return Math.max(b,a)},0)};var HistogramFromTable=function(l){console.log(l);this.X=36;this.Y=20;this.GUTTER=2;this.TOP=27;this.BOTTOM=4;this.SIDE=12;this.table=jQuery(l).find('table').eq(0).hide();var m=this.table.find('tr');this.keys=jQuery.makeArray(m.eq(0).find('td.month')).map(getContents);this.values=jQuery.makeArray(m.eq(1).find('td.num_books')).map(compose(parseInt,getContents));var k=(this.X+this.GUTTER)*this.values.length-this.GUTTER+this.SIDE*2,h=maximum(this.values)*this.Y+this.TOP+this.BOTTOM;this.canvas=jQuery('<canvas width="'+k+'" height="'+h+'"></canvas>');this.context=this.canvas[0].getContext('2d');var j=new Image();j.src='/images/stripes.png';var f=this,n;this.table.after(this.canvas);this.insertBar=function(a,b){var c=b*(this.X+this.GUTTER)+this.SIDE,d=this.Y*a;var e=this.canvas.attr('height')-d-this.BOTTOM;this.context.fillStyle='#272c2e';this.context.fillRect(c,e,this.X,d);var g=jQuery('<span class="key">'+this.keys[b]+'</span>');g.css({width:this.X,top:this.canvas.attr('height')+8-this.BOTTOM,left:c});this.table.after(g);this.context.fillStyle='#212426';for(i=1;i<a;i++){this.context.fillRect(b*(this.X+this.GUTTER)+this.SIDE,e+i*this.Y-1,this.X,1)}};jQuery(j).load(function(){f.context.fillStyle=f.context.createPattern(j,'repeat');f.context.fillRect(0,0,k,h-f.BOTTOM);f.values.forEach(f.insertBar,f);f.context.fillStyle='#2b3033';f.context.fillRect(0,f.canvas.attr('height')+3-f.BOTTOM,f.canvas.attr('width'),1)})};jQuery(document).ready(function(){jQuery('.editable').each(function(){var a=new Editable(this)});jQuery('#new_book').each(function(){var a=new AutoFill(this)});jQuery('.histogram').each(function(){new HistogramFromTable(this)});setTimeout(function(){jQuery('.notice').each(function(){jQuery(this).animate({marginBottom:0,height:0,opacity:0},250,'linear',function(){jQuery(this).remove()})})},3*1000)});