/*!
 * Infinite Ajax Scroll, a jQuery plugin 
 * Version v0.1.1
 * http://webcreate.nl/
 *
 * Copyright (c) 2011 Jeroen Fiege
 * Licensed under the MIT License: 
 * http://webcreate.nl/license
 */
(function(b){b.ias=function(t){var c=b.extend({},b.ias.defaults,t);var h=new b.ias.util();var d=new b.ias.paging();var n=new b.ias.history();s();function s(){d.onChangePage(function(w,u,v){n.setPage(w,v);c.onPageChange.call(this,w,v,u)});l();if(n.havePage()){r();pageNum=n.getPage();h.forceScrollTop(function(){if(pageNum>1){q(pageNum);curTreshold=g();b("html,body").scrollTop(curTreshold)}else{l()}})}}function l(){j();b(window).scroll(o)}function o(){scrTop=b(window).scrollTop();wndHeight=b(window).height();curScrOffset=scrTop+wndHeight;if(curScrOffset>=g()){m(curScrOffset)}}function r(){b(window).unbind("scroll",o)}function j(){b(c.pagination).hide()}function g(){el=b(c.container).find(c.item).last();if(el.size()==0){return 0}treshold=el.offset().top+el.height();return treshold}function m(v,u){urlNextPage=b(c.next).attr("href");if(!urlNextPage){return r()}d.pushPages(v,urlNextPage);r();p();f(urlNextPage,function(x,w){for(i=0;i<w.length;i++){item=w[i];item.hide();curLastItem=b(c.container).find(c.item).last();curLastItem.after(item);item.fadeIn()}b(c.pagination).replaceWith(b(c.pagination,x));e();l();if(u){u.call(this)}})}function f(v,w){var u=[];b.get(v,null,function(x){b(c.container,x).find(c.item).each(function(){u.push(b(this))});if(w){w.call(this,x,u)}},"html")}function q(u){curTreshold=g();if(curTreshold>0){m(curTreshold,function(){r();if((d.getCurPageNum(curTreshold)+1)<u){q(u);b("html,body").animate({scrollTop:curTreshold},400,"swing")}else{b("html,body").animate({scrollTop:curTreshold},1000,"swing");l()}})}}function k(){loader=b(".ias_loader");if(loader.size()==0){loader=b("<div class='ias_loader'><img src='"+c.loader+"'/></div>");loader.hide()}return loader}function p(u){loader=k();el=b(c.container).find(c.item).last();el.after(loader);loader.fadeIn()}function e(){loader=k();loader.remove()}};function a(c){if(window.console&&window.console.log){window.console.log(c)}}b.ias.defaults={container:"#container",item:".item",pagination:"#pagination",next:".next",onPageChange:function(){}};b.ias.util=function(){var d=false;var f=false;var c=this;e();function e(){b(window).load(function(){d=true})}this.forceScrollTop=function(g){b("html,body").scrollTop(0);if(!f){if(!d){setTimeout(function(){c.forceScrollTop(g)},1)}else{g.call();f=true}}}};b.ias.paging=function(){var e=[[0,document.location.toString()]];var h=function(){};var d=1;j();function j(){b(window).scroll(g)}function g(){scrTop=b(window).scrollTop();wndHeight=b(window).height();curScrOffset=scrTop+wndHeight;curPageNum=c(curScrOffset);curPagebreak=f(curScrOffset);if(d!=curPageNum){h.call(this,curPageNum,curPagebreak[0],curPagebreak[1])}d=curPageNum}function c(k){for(i=(e.length-1);i>0;i--){if(k>e[i][0]){return i+1}}return 1}this.getCurPageNum=function(k){return c(k)};function f(k){for(i=(e.length-1);i>=0;i--){if(k>e[i][0]){return e[i]}}return null}this.onChangePage=function(k){h=k};this.pushPages=function(k,l){e.push([k,l])}};b.ias.history=function(){var d=false;var c=false;e();function e(){c=!!(window.history&&history.pushState&&history.replaceState);c=false}this.setPage=function(g,f){this.updateState({page:g},"",f)};this.havePage=function(){return(this.getState()!=false)};this.getPage=function(){if(this.havePage()){stateObj=this.getState();return stateObj.page}return 1};this.getState=function(){if(c){stateObj=history.state;if(stateObj&&stateObj.ias){return stateObj.ias}}else{haveState=(window.location.hash.substring(0,7)=="#/page/");if(haveState){pageNum=parseInt(window.location.hash.replace("#/page/",""));return{page:pageNum}}}return false};this.updateState=function(g,h,f){if(d){this.replaceState(g,h,f)}else{this.pushState(g,h,f)}};this.pushState=function(g,h,f){if(c){hash=(g.page>0?"#/page/"+g.page:"");history.pushState({ias:g},h,hash)}else{hash=(g.page>0?"#/page/"+g.page:"");window.location.hash=hash}d=true};this.replaceState=function(g,h,f){if(c){hash=(g.page>0?"#/page/"+g.page:"");history.replaceState({ias:g},h,hash)}else{hash=(g.page>0?"#/page/"+g.page:"");window.location.hash=hash}}}})(jQuery);
