// Compressed 2010-04-01
Element.implement({overwrite:function(a){this.empty().set("html",a);return this}});Hash.implement({getElements:function(a){this.each(function(c,b){this.set(b,a.getElement(c))},this);return this.getClean()}});var Statistics=new Class({Implements:[Options,Events],options:{refresh:45},initialize:function(a){this.setOptions(a);this.remote=new Request.JSON({url:"ajax.php",onComplete:this.fetched.bind(this)});this.remote.post({module:"stats"});this.refresh=(function(){this.fetch();this.remote.post({module:"stats"})}).periodical(1000*this.options.refresh,this)},fetched:function(a){this.fireEvent("fetched",a)},fetch:function(){this.fireEvent("fetch")}});Statistics.Default={stats:function(d){if(!$defined(d)){return false}var c=d.total_clicks,e=d.total_clicks_today;var g=["#total_clicks","#total_money","#total_clicks_today","#total_money_today","#total_fluffbooks","#total_deleted","#total_queued","#crawled_today","#last_start","#total_clicks"];var a=[c+" clicks total","$"+(c*5)+" total",e+" clicks today","$"+(e*5)+" today",d.total_fluffbooks+" (fluff)Books",d.total_deleted+" (fluff)Books deleted",d.total_queued+" queued",d.crawled_today+" (fluff)Books crawled today","The day started at "+d.last_start];var b=50;$$(g).each(function(j,h){b+=200;(function(){j.overwrite(a[h]).highlight()}).delay(b)})}};var Crawler=new Class({Implements:[Events,Options],options:{refresh:30},initialize:function(a){this.setOptions(a);this.remote=new Request.JSON({url:"search.php",onComplete:this.fetched.bind(this)});this.remote.post({module:"crawler"});this.refresh=(function(){this.fetch();this.remote.post({module:"crawler"})}).periodical(1000*this.options.refresh,this)},fetched:function(a){this.fireEvent("fetched",a)},fetch:function(){this.fireEvent("fetch")},failed:function(a){if(a.success==0||a.success==null||a.total_left<5||a.branch=="unknown"){return true}return false}});Crawler.Default={browse:function(b){if(!$defined(b)){return false}var a=$(document.body),d=a.getElement("div.crawler-results span.processed"),c=a.getElement("div.crawler-results span.added");if(d==null){$clear(this.refresh);return false}if(this.failed(b)){d.getParent().overwrite("Thanks for helping out! There are no more (fluff)Books to process at this time.");$clear(this.refresh);return false}d.overwrite(d.get("text").toInt()+1).highlight();c.overwrite(c.get("text").toInt()+b.added).highlight()}};var Feedback=new Class({Implements:[Events,Options],options:{classes:{text:".feedback-text",email:".user-email",answer:".bt-answer",hash:".bt-hash",send:".send-feedback"}},initialize:function(c,b){this.setOptions(b);this.element=$(c);this.input=new Hash(this.options.classes).getElements(this.element);this.remote=new Request.JSON({url:"ajax.php",onComplete:this.sent.bind(this)});var a=this.input;a.text.addEvent("click",function(d){this.select()});a.send.addEvent("click",(function(d){this.remote.post({module:"feedback",bt_a:a.answer.get("value"),bt_h:a.hash.get("value"),text:a.text.get("value"),email:a.email.get("value")})}).bind(this))},sent:function(a){this.fireEvent("sent",a)}});Feedback.Default={browse:function(a){if(!$defined(a)){return false}if(a.success){this.element.overwrite("<p>Thanks for the feedback!</p>")}else{this.element.overwrite('<p>Sorry, but the feedback system is not working right now but you can try the <a href="http://ryan.ifupdown.com/contact/">blog</a> instead.</p>')}}};var PettingList=new Class({Implements:[Events,Options],options:{max:10,delay:7,classes:{list:".links",loading:".loading"}},initialize:function(b,a){this.setOptions(a);this.element=$(b);this.index=0;this.elements=new Hash(this.options.classes).getElements(this.element);this.remote=new Request.JSON({autoCancel:true,url:"ajax.php",onComplete:this.fetched.bind(this)});this.remote.post({module:"flufflist-json",size:this.options.max,type:"initial"})},fetched:function(a){if(!$defined(a)){this.element.overwrite("The Fluff Grabber is not working right now. Please refresh in a few minutes.");return false}var b=this.elements.list.getElement(this.options.classes.loading);if(b){b.dispose()}$A(a).each(function(c,d){this.inject(c)},this)},inject:function(d){if(!$defined(d)){return false}this.index++;var b=new Element("li"),c=new Element("a",{href:"redirect.php?id="+d.fbid,target:"_blank"});if(d.active){b.addClass("active")}c.set("html",d.fbid);c.addEvent("click",this.click.bind(this));b.grab(c);b.inject(this.elements.list);b.highlight()},click:function(a){$clear(this.refresh);this.refresh=this.request.delay(this.options.delay*1000,this);if(a.event){a.target.getParent().empty().dispose()}else{a.getParent().empty().dispose()}},request:function(){var a=this.elements.list.getElements("li a").length;if(a>this.options.max){return false}var b=this.options.max-a;if(b<=0){return false}this.remote.post({size:b,type:"single",index:this.index,module:"flufflist-json"})}});var QuickOpeners=new Class({Implements:[Events,Options],options:{},initialize:function(a,c){this.container=$(a);this.list=$(c);var b=this.container.getElements("a");b.each(function(e,d){e.addEvent("click",(function(g){this.open(g.target.rel.toInt());g.stop()}).bind(this))},this)},open:function(a){var e=this.list.getElements("li a");if(e.length<a){return false}for(var b=0;b<a;b++){var c=e[b],d=window.open(c.href,"_blank");c.fireEvent("click",$(c))}}});var Fluff={validate:function(b){var c=b.toLowerCase();var a=c.indexOf("facebook.com/fluff/fluffbook.php?id=");if(a==-1){return false}var e=c.split(".php?id=");if(e.length<2){return false}var d=e[1];if(d.indexOf("&")!=-1||d.indexOf("#")!=-1||isNaN(d)){return false}return d}};var AddRemove=new Class({Implements:[Events,Options],options:{adder:{send:"div.adder .send",input:"div.adder .input",display:"div.adder .display"},remover:{send:"div.remover .send",input:"div.remover .input",display:"div.remover .display"}},initialize:function(a,b){this.container=$(a);this.setOptions(b);this.adder=new Hash(this.options.adder).getElements(this.container);this.remover=new Hash(this.options.remover).getElements(this.container);this.remote=new Request.JSON({url:"ajax.php",onComplete:this.delegate.bind(this)});this.adder.send.addEvent("click",(function(c){var d=0;if(d=Fluff.validate(this.adder.input.get("value"))){this.remote.post({module:"adder",fb_id:d})}else{this.adder.display.overwrite("Sorry, that's an invalid (fluff)Book URL.")}}).bind(this));this.remover.send.addEvent("click",(function(c){var d=0;if(d=Fluff.validate(this.remover.input.get("value"))){this.remote.post({module:"deleter",fb_id:d})}else{this.remover.display.overwrite("Sorry, that's an invalid (fluff)Book URL.")}}).bind(this))},delegate:function(a){if(!$defined(a)){return false}if(a.type=="adder"){this.added(a)}if(a.type=="remover"){this.removed(a)}},added:function(a){this.fireEvent("added",a)},removed:function(a){this.fireEvent("removed",a)}});AddRemove.Default={removed:function(a){if(!$defined(a)){return false}var b=this.remover.display;if(a.success){b.overwrite("Thanks, that (fluff)Book will be queued for removal.")}else{b.overwrite("Thanks for helping out. For some reason however, that (fluff)Book can not be removed right now.")}},added:function(a){if(!$defined(a)){return false}var b=this.adder.display,c=a.success;if(c=="added"){b.overwrite("The (fluff)Book was added successfully. Thank you.")}else{if(c=="already"){b.overwrite("The (fluff)Book appears to already be in the list, but thanks anyway!")}else{b.overwrite("Thanks for helping out. For some reason however, that (fluff)Book can be added right now.")}}}};window.addEvent("domready",function(){var b=$(document.body),j=b.get("id");if(j=="index"){var h=new Accordion("#content div.faq h3","#content div.faq p")}else{if(j=="browse"){var g=new PettingList("fluff-book-links"),d=new QuickOpeners(b.getElement("ul.quick-openers"),b.getElement("#fluff-book-links")),a=new Crawler({onFetched:Crawler.Default.browse});f=new Feedback($(document.body).getElement(".feedback"),{onSent:Feedback.Default.browse}),ar=new AddRemove($("tools"),{onRemoved:AddRemove.Default.removed,onAdded:AddRemove.Default.added});browseAccordion=new Accordion("#content #tools h3","#content #tools div")}else{if(j=="complete"){var i=new Crawler()}else{if(j=="stats"){var e=new Statistics({onFetched:Statistics.Default.stats});cs=new Crawler()}}}}});

