/*
// Infinite Scroll jQuery plugin
// copyright Paul Irish, licensed GPL & MIT
// version 1.5.100504

// home and docs: http://www.infinite-scroll.com
*/
(function(a){a.fn.infinitescroll=function(r,o){function e(){if(b.debug){window.console&&console.log.call(console,arguments)}}function h(t){for(var s in t){if(s.indexOf&&s.indexOf("Selector")>-1&&a(t[s]).length===0){e("Your "+s+" found no elements.");return false}return true}}function n(s){s.match(c)?s.match(c)[2]:s;k.currPage=parseInt(s.match(/pa?ge?.(\d+)/).slice(1)[0])-1;s=s.match(/^(.*?pa?ge?.)\d+(.*?$)/).slice(1);return s}function l(){return b.localMode?(a(k.container)[0].scrollHeight&&a(k.container)[0].scrollHeight):a(document).height()}function f(){var s=0+l()-(b.localMode?a(k.container).scrollTop():(a(k.container).scrollTop()||a(k.container.ownerDocument.body).scrollTop()))-a(b.localMode?k.container:window).height();e("math:",s,k.pixelsFromNavToBottom);return(s-b.bufferPx<k.pixelsFromNavToBottom)}function m(){k.loadingMsg.find("img").hide().parent().find("div").html(b.donetext).animate({opacity:1},2000);b.errorCallback()}function d(){if(k.isDuringAjax||k.isInvalidPage||k.isDone){return}if(!f(b,k)){return}a(document).trigger("retrieve.infscr")}function g(){k.isDuringAjax=true;k.loadingMsg.appendTo(b.loadMsgSelector).show(b.loadingMsgRevealSpeed,function(){a(b.navSelector).hide();k.currPage++;e("heading into ajax",q);j=a(b.contentSelector).is("table")?a("<tbody/>"):a("<div/>");p=document.createDocumentFragment();j.load(q.join(k.currPage)+" "+b.itemSelector,null,i)})}function i(){if(k.isDone){m();return false}else{var t=j.children().get();if(t.length==0){return a.event.trigger("ajaxError",[{status:404}])}while(j[0].firstChild){p.appendChild(j[0].firstChild)}a(b.contentSelector)[0].appendChild(p);k.loadingMsg.fadeOut("normal");if(b.animate){var s=a(window).scrollTop()+a("#infscr-loading").height()+b.extraScrollPx+"px";a("html,body").animate({scrollTop:s},800,function(){k.isDuringAjax=false})}o.call(a(b.contentSelector)[0],t);if(!b.animate){k.isDuringAjax=false}}}a.browser.ie6=a.browser.msie&&a.browser.version<7;var b=a.extend({},a.infinitescroll.defaults,r),k=a.infinitescroll,j,p;o=o||function(){};if(!h(b)){return false}k.container=b.localMode?this:document.documentElement;b.contentSelector=b.contentSelector||this;b.loadMsgSelector=b.loadMsgSelector||b.contentSelector;var c=/(.*?\/\/).*?(\/.*)/,q=a(b.nextSelector).attr("href")?a(b.nextSelector).attr("href"):"/?pg=404";if(!q){a(b.navSelector).hide();k.isDone=true;i()}q=n(q);if(b.localMode){a(k.container)[0].scrollTop=0}k.pixelsFromNavToBottom=l()+(k.container==document.documentElement?0:a(k.container).offset().top)-a(b.navSelector).offset().top;k.loadingMsg=a('<div id="infscr-loading" style="text-align: center;"><div>'+b.loadingText+'</div><img alt="Loading..." src="'+b.loadingImg+'" /></div>');(new Image()).src=b.loadingImg;a(document).ajaxError(function(t,u,s){e("Page not found. Self-destructing...");if(u.status==404){m();k.isDone=true;a(b.localMode?this:window).unbind("scroll.infscr")}});a(b.localMode?this:window).bind("scroll.infscr",d).trigger("scroll.infscr");a(document).bind("retrieve.infscr",g);if(document.location.hash){a("#container").hide();setTimeout("$('#container').show();$(window).scrollTop($(window.location.hash).position().top-100);history.replaceState({}, '', window.location.href.split('#')[0])",100)}a(".post a").live("click",function(s){if(typeof window.history.replaceState=="function"&&a(this).closest(".post").attr("rel")){address=a(this).attr("href");post=a(this).closest(".post").attr("id");page=a(this).closest(".post").attr("rel");history.replaceState({},"",q.join(page)+"#"+post)}});return this};a.infinitescroll={defaults:{debug:false,preload:false,nextSelector:"div.navigation a:first",loadingImg:"http://www.infinite-scroll.com/loading.gif",loadingText:"<em>Loading the next set of posts...</em>",donetext:"<em>Congratulations, you've reached the end of the internet.</em>",navSelector:"div.navigation",contentSelector:null,loadMsgSelector:null,loadingMsgRevealSpeed:"fast",extraScrollPx:150,itemSelector:"div.post",animate:false,localMode:false,bufferPx:40,errorCallback:function(){}},loadingImg:undefined,loadingMsg:undefined,container:undefined,currPage:1,currDOMChunk:null,isDuringAjax:false,isInvalidPage:false,isDone:false}})(jQuery);
