function RollingArchives(args){RA=this;RA.content=args.content;RA.posts=args.posts;RA.parent=args.parent;RA.offsetTop=args.offset||0;RA.cache=new Array();RA.cacheDepth=args.cachedepth||5;RA.pageText=args.pagetext||'of';var older=args.older||'Older';var newer=args.newer||'Newer';var loading=args.loading||'Loading';jQuery(RA.content).before('\
		<div id="rollingarchivesbg"></div>\
		<div id="rollingarchives">\
			<div id="rollnavigation">\
				<div id="pagetrackwrap"><div id="pagetrack"><div id="pagehandle"><div id="rollhover"><div id="rolldates"></div></div></div></div></div>\
				\
				<div id="rollpages"></div>\
				\
				<a id="rollprevious" title="'+older+'" href="#"><span>&laquo;</span> '+older+'</a>\
				<div id="rollload" title="'+loading+'"><span>'+loading+'</span></div>\
				<a id="rollnext" title="'+newer+'" href="#">'+newer+' <span>&raquo;</span></a>\
				\
				<div id="texttrimmer">\
					<div id="trimmertrim"><span>&raquo;&nbsp;&laquo;</span></div>\
					<div id="trimmeruntrim"><span>&laquo;&nbsp;&raquo;</span></div>\
				</div>\
			</div> <!-- #rollnavigation -->\
		</div> <!-- #rollingarchives -->\
	');RA.setState(args.pagenumber,args.pagecount,args.query,args.pagedates);RA.saveState();jQuery('#rollnext').click(function(){RA.pageSlider.setValueBy(1);return false;});jQuery('#rollprevious').click(function(){RA.pageSlider.setValueBy(-1);return false;});jQuery('#trimmertrim, #trimmeruntrim').click(function(){if(K2.Animations)
jQuery('.entry-content').slideToggle(250,'easeOutExpo')
jQuery('body').toggleClass('trim')})
jQuery('body').addClass('rollingarchives');RA.smartPosition(RA.parent);};RollingArchives.prototype.setState=function(pagenumber,pagecount,query,pagedates){RA.pageNumber=pagenumber;RA.pageCount=pagecount;RA.query=query;RA.pageDates=pagedates;if(RA.validatePage(RA.pageNumber)){jQuery('body').removeClass('hiderollingarchives').addClass('showrollingarchives')
jQuery('#rollingarchives').show();jQuery('#rollload, #rollhover').hide();RA.pageSlider=new K2Slider('#pagehandle','#pagetrackwrap',{minimum:1,maximum:RA.pageCount,value:RA.pageCount-RA.pageNumber+1,onSlide:function(value){jQuery('#rollhover').show();RA.updatePageText(RA.pageCount-value+1);},onChange:function(value){RA.updatePageText(RA.pageCount-value+1);RA.gotoPage(RA.pageCount-value+1);}})
RA.updatePageText(RA.pageNumber)}else{jQuery('body').removeClass('showrollingarchives').addClass('hiderollingarchives');}
RA.resetCache();};RollingArchives.prototype.saveState=function(){RA.prevPageNumber=RA.pageNumber;RA.prevPageCount=RA.pageCount;RA.prevQuery=RA.query;RA.prevPageDates=RA.pageDates;RA.prevContent=jQuery(RA.content).html();};RollingArchives.prototype.restoreState=function(){if(RA.prevContent!=''){jQuery('body').removeClass('livesearchactive').addClass('livesearchinactive');jQuery(RA.content).html(RA.prevContent)
jQuery.bbq.pushState('#page='+RA.prevPageNumber);RA.setState(RA.prevPageNumber,RA.prevPageCount,RA.prevQuery,RA.prevPageDates);}};RollingArchives.prototype.updatePageText=function(page){jQuery('#rollpages').html(page+' '+RA.pageText+' '+RA.pageCount)
jQuery('#rolldates').html(RA.pageDates[page-1])};RollingArchives.prototype.validatePage=function(newpage){var newpage=parseInt(newpage);if(!isNaN(newpage)&&RA.pageCount>1){if(newpage>=RA.pageCount){jQuery('body').removeClass('onepageonly firstpage nthpage').addClass('lastpage');return RA.pageCount;}else if(newpage<=1){jQuery('body').removeClass('onepageonly nthpage lastpage').addClass('firstpage');return 1;}else{jQuery('body').removeClass('onepageonly firstpage lastpage').addClass('nthpage');return newpage;}}
jQuery('body').removeClass('firstpage nthpage lastpage').addClass('onepageonly');return 0;};RollingArchives.prototype.loading=function(gostop){if(gostop=='start')
jQuery('body').addClass('rollload')
else
jQuery('body').removeClass('rollload')};RollingArchives.prototype.gotoPage=function(newpage){var page=RA.validatePage(newpage);if(page!=RA.pageNumber&&page!=0){RA.lastPage=RA.pageNumber;RA.pageNumber=page;jQuery.bbq.pushState('page='+page);RA.loading('start')
if(K2.Animations){RA.flashElement(page>RA.lastPage?'#rollprevious':'#rollnext')}
if(K2.Animations&&(RA.pageNumber!=1)&&jQuery('body').hasClass('smartposition'))
jQuery('html,body').animate({scrollTop:jQuery(RA.parent).offset().top},100)
jQuery.extend(RA.query,{paged:RA.pageNumber,k2dynamic:1})
if(RA.cache[RA.pageNumber]==undefined){K2.ajaxGet(RA.query,function(data){jQuery('#rollhover').fadeOut('slow')
RA.loading('stop')
jQuery(RA.content).html(data)})}else{jQuery('#rollhover').fadeOut('slow')
RA.loading('stop')
jQuery(RA.content).html(RA.cache[RA.pageNumber])}
RA.updateCache();}
if(page==1){jQuery('body').removeClass('trim')
var pos=jQuery(window).scrollTop();jQuery.bbq.removeState('page');jQuery(window).scrollTop(pos);}};RollingArchives.prototype.resetCache=function(){RA.cache=new Array();}
RollingArchives.prototype.updateCache=function(){var lowerLimit=RA.pageNumber-RA.cacheDepth;var upperLimit=RA.pageNumber+RA.cacheDepth;if(lowerLimit<1)lowerLimit=1;if(upperLimit>RA.pageCount)upperLimit=RA.pageCount;for(var i=lowerLimit;i<=upperLimit;i++){if(i==RA.pageNumber)continue;if(RA.cache[i]==undefined){jQuery.extend(RA.query,{paged:i,k2dynamic:1});(function(i){K2.ajaxGet(RA.query,function(request){RA.cache[i]=request});})(i);}}
if(RA.cache.length>0){for(var j=0;j<RA.cache.length;j++){if(j>=(lowerLimit-1)&&j<=(upperLimit+1))continue;delete RA.cache[j];}}}
RollingArchives.prototype.smartPosition=function(e,edge){RA.parentTop=jQuery(e).offset().top;RA.smartPosClass='smartposition'
if(jQuery.browser.msie&&parseInt(jQuery.browser.version,10)<7)return;if(edge!='bottom'){setTimeout(RA.checkTop,100);jQuery(window)
.scroll(RA.checkTop);}else{setTimeout(RA.checkTop,100);jQuery(window)
.scroll(RA.checkBottom)
.resize(RA.checkBottom)
.onload(RA.checkBottom)}};RollingArchives.prototype.checkBottom=function(){if((document.documentElement.scrollTop+document.documentElement.clientHeight||document.body.scrollTop+document.documentElement.clientHeight)>=RA.parentTop&&jQuery('body').hasClass('showrollingarchives'))
jQuery('body').addClass(RA.smartPosClass);else
jQuery('body').removeClass(RA.smartPosClass);}
RollingArchives.prototype.checkTop=function(){if(jQuery(document).scrollTop()>=RA.parentTop&&jQuery('body').hasClass('showrollingarchives'))
jQuery('body').addClass(RA.smartPosClass);else
jQuery('body').removeClass(RA.smartPosClass);};RollingArchives.prototype.scrollTo=function(elements,direction,next){jQuery(window).unbind('scroll.scrolldetector')
jQuery('html, body').stop()
RA.nextIndex=(next!=undefined?next:RA.nextIndex);if(RA.nextIndex==undefined){jQuery(elements).each(function(idx){if(jQuery(this).offset().top-RA.offsetTop>jQuery(window).scrollTop()){RA.nextIndex=(direction===1?idx-1:idx);console.log('Next index: '+RA.nextIndex);return false;}})}
if(direction===-1&&RA.pageNumber===1&&RA.nextIndex===0)return;RA.nextIndex=RA.nextIndex+direction;if((RA.nextIndex>jQuery(elements).length-1)||RA.nextIndex<0){RA.nextIndex=undefined;RA.pageSlider.setValueBy(-direction);RA.flashElement(direction===1?'#rollprevious':'#rollnext');}
RA.nextElement=jQuery(elements).eq(RA.nextIndex);var nextElementPos=RA.nextElement.offset().top-RA.offsetTop;var theBrowserWindow=(jQuery.browser.safari)?jQuery('body'):jQuery('html');theBrowserWindow.animate({scrollTop:nextElementPos},(K2.Animations?150:0),'easeOutExpo',function(){RA.nextElement.effect('highlight',{color:'#dddddd'},1500)});};RollingArchives.prototype.flashElement=function(el){if(jQuery(el+':animated').length>0||!K2.Animations)return;var origSize=parseInt(jQuery(el).css('font-size'));jQuery(el).animate({fontSize:origSize*2},0,'linear',function(){jQuery(el).animate({fontSize:origSize},150,'easeOutQuad')})}
RollingArchives.prototype.assignHotkeys=function(){jQuery(document).bind('keydown.hotkeys','J',function(){RA.scrollTo(RA.posts,1)});jQuery(document).bind('keydown.hotkeys','K',function(){RA.scrollTo(RA.posts,-1)});jQuery(document).bind('keydown.hotkeys','Return',function(){if(jQuery(RA.nextElement).length>0){jQuery(RA.nextElement).stop(true,true).effect("highlight",{color:'#eee'},150).children('.entry-title a').click()}});jQuery(document).bind('keydown.hotkeys','E',function(){if(jQuery('.selected').length>0){jQuery('.selected a.post-edit-link').click();RA.flashElement('.selected a.post-edit-link')}});jQuery(document).bind('keydown.hotkeys','Esc',function(){jQuery(window).unbind('scroll.scrolldetector');jQuery('*').removeClass('selected');RA.nextIndex=undefined});jQuery(document).bind('keydown.hotkeys','H',function(){RA.gotoPage(1)})
jQuery(document).bind('keydown.hotkeys','T',function(){jQuery('#texttrimmer div:visible').click()});jQuery(document).bind('keydown.hotkeys','Left',function(){RA.pageSlider.setValueBy(-1)});jQuery(document).bind('keydown.hotkeys','Right',function(){RA.pageSlider.setValueBy(1)});}
