!function(n){"use strict";n.jscroll={defaults:{debug:!1,autoTrigger:!0,autoTriggerUntil:!1,loadingHtml:"Loading...",loadingFunction:!1,padding:0,nextSelector:"a:last",contentSelector:"",pagingSelector:"",callback:!1}};var t=function(t,e){var l,o=t.data("jscroll"),r="function"==typeof e?{callback:e}:e,i=n.extend({},n.jscroll.defaults,r,o||{}),c="visible"===t.css("overflow-y"),a=t.find(i.nextSelector).first(),s=n(window),d=n("body"),f=c?s:t,g=n.trim(a.prop("href")+" "+i.contentSelector),u=function(){t.find(".jscroll-inner").length||t.contents().wrapAll('
')},p=function(n){i.pagingSelector?n.closest(i.pagingSelector).hide():n.parent().not(".jscroll-inner,.jscroll-added").addClass("jscroll-next-parent").hide().length||n.wrap('').parent().hide()},j=function(){return f.unbind(".jscroll").removeData("jscroll").find(".jscroll-inner").children().unwrap().filter(".jscroll-added").children().unwrap()},h=function(){if(t.is(":visible")){u();var n=t.find("div.jscroll-inner").first(),e=t.data("jscroll"),l=parseInt(t.css("borderTopWidth"),10),o=isNaN(l)?0:l,r=parseInt(t.css("paddingTop"),10)+o,a=c?f.scrollTop():t.offset().top,s=n.length?n.offset().top:0,d=Math.ceil(a-s+f.height()+r);if(!e.waiting&&d+i.padding>=n.outerHeight())return m("info","jScroll:",n.outerHeight()-d,"from bottom. Loading next request..."),b()}},v=function(){var e=t.find(i.nextSelector).first();if(e.length)if(i.autoTrigger&&(!1===i.autoTriggerUntil||i.autoTriggerUntil>0)){p(e);var l=d.height()-t.offset().top;(t.height()0?s.height()-(t.offset().top-n(window).scrollTop()):s.height())&&h(),f.unbind(".jscroll").bind("scroll.jscroll",function(){return h()}),i.autoTriggerUntil>0&&i.autoTriggerUntil--}else f.unbind(".jscroll"),e.bind("click.jscroll",function(){return p(e),b(),!1})},b=function(){var e=t.find("div.jscroll-inner").first(),l=t.data("jscroll");return l.waiting=!0,e.append('').children(".jscroll-added").last().html(''+i.loadingHtml+"
").promise().done(function(){i.loadingFunction&&i.loadingFunction()}),t.animate({scrollTop:e.outerHeight()},0,function(){var o=l.nextHref;e.find("div.jscroll-added").last().load(o,function(e,r){if("error"===r)return j();var c=n(this).find(i.nextSelector).first();l.waiting=!1,l.nextHref=!!c.prop("href")&&n.trim(c.prop("href")+" "+i.contentSelector),n(".jscroll-next-parent",t).remove(),function(n){(n=n||t.data("jscroll"))&&n.nextHref?v():(m("warn","jScroll: nextSelector not found - destroying"),j())}(),i.callback&&i.callback.call(this,o),m("dir",l)})})},m=function(n){if(i.debug&&"object"==typeof console&&("object"==typeof n||"function"==typeof console[n]))if("object"==typeof n){var t=[];for(var e in n)"function"==typeof console[e]?(t=n[e].length?n[e]:[n[e]],console[e].apply(console,t)):console.log.apply(console,t)}else console[n].apply(console,Array.prototype.slice.call(arguments,1))};return t.data("jscroll",n.extend({},o,{initialized:!0,waiting:!1,nextHref:g})),u(),(l=n(i.loadingHtml).filter("img").attr("src"))&&((new Image).src=l),v(),n.extend(t.jscroll,{destroy:j}),t};n.fn.jscroll=function(e){return this.each(function(){var l=n(this),o=l.data("jscroll");o&&o.initialized||t(l,e)})}}(jQuery);