$(document).ready(function(){var calls_made=0
function pollUpdates(method,wait){method=method||'POST'
if(method=='POST'){wait=wait||70}
wait=wait||10
var next=(method=='POST'?'GET':'POST')
function _do(){calls_made+=1
var xhr=$.ajax({'url':url_with_timestamp('poll',calls_made>=3)+window.location.search,'type':method,'success':function(response,status){if(response.match(/[\S]/)){processResponse(response,xhr.getResponseHeader('X-FeedMagnet-DisplayMethod'))}
pollUpdates(next)}})}
window.setTimeout(_do,wait*1000)}
function more(){$.ajax({'url':url_with_timestamp('more'),'method':'GET','dataType':'html','success':function(response,status){if(!response.match(/[\S]/)){return}
processResponse(response)}})}
function url(){var base_url=window.location.pathname
if(base_url.charAt(base_url.length-1)!='/'){base_url+='/'}
return base_url}
function url_with_timestamp(action,newest){newest=newest||false
var selector=newest?'.timestamp:first .unix':'.timestamp:last .unix'
var timestamp=$(selector).text()
var answer=url()+action+'/'
if(timestamp){answer+=timestamp+'/'}
return answer}
function processResponse(response,display){display=display||'show'
response=$(response).filter('div')
for(var i=0;i<response.length;i+=1){var update=response.eq(i)
var id=update.attr('id')
if($('#social-content #'+id).length){continue}
update.css('display','none')
var my_timestamp=parseInt(update.find('.timestamp .unix').text())
var updates=$('#social-content .item')
var before=null
var after=null
for(var j=0;j<updates.length;j+=1){var its_timestamp=parseInt(updates.eq(j).find('.timestamp .unix').text())
if(its_timestamp<my_timestamp){after=updates.eq(j)
before=(i>0)?updates.eq(j-1):null
break}}
var my_date=update.find('.info .date').text()
if(after){var its_date=after.find('.info .date').text()
if(before){var before_date=before.find('.info .date').text()}
if(my_date==its_date){update.insertBefore(after)}
else if(before&&my_date==before_date){update.insertAfter(before)}
else{var date_enclosure=$('<div class="discrete-date" />').insertBefore(after.parent('.discrete-date'))
update.appendTo(date_enclosure)}}
else{before=updates.eq(updates.length-1)
var its_date=before.find('.info .date').text()
if(my_date==its_date){update.insertAfter(before)}
else{var date_enclosure=$('<div class="discrete-date" />').insertAfter(before.parent('.discrete-date'))
update.appendTo(date_enclosure)}}
if(display!=='hide'&&display!=='gradual'){update.slideDown()}}
if(display==='hide'){var new_updates=$('.item:hidden')
if(new_updates.length>0){$('#new-posts .magnet em').text(new_updates.length.toString())
$('#new-posts').slideDown()}}
else if(display=='gradual'){gradualDisplay()}}
var _fm_graudal_display_running=false
function gradualDisplay(ignore_concurrency_check){ignore_concurrency_check=ignore_concurrency_check||false
if(_fm_graudal_display_running===true&&ignore_concurrency_check!==true){return null}
_fm_gradual_display_running=true
if($('.item:hidden').length>15){$('.item:hidden').slice(5).remove()}
if($('.item:visible').length>100){$('.item:visible').slice(75).remove()}
var item=$('.item:visible').eq(0).prevAll('.item:hidden').eq(0)
if(item.length===1){item.slideDown()
window.setTimeout(_stGradualDisplay,3000)}
else{_fm_gradual_display_running=false}}
function _stGradualDisplay(){return gradualDisplay(true)}
pollUpdates('GET')
$('#new-posts').click(function(){$('.item:hidden').slideDown()
$(this).slideUp()})
$('#load-more').click(function(){more()})
$('.reprocess').live('click',function(){var item=$(this).parents('.item')
var updating=$('<div />').addClass('loading').css('display','none').insertBefore(item)
item.slideUp('normal',function(){$(this).remove()})
updating.slideDown('normal')
$.ajax({'url':url()+item.attr('id')+'/','type':'POST','dataType':'html','success':function(response){response=$(response).css('display','none').insertBefore(updating)
updating.slideUp('normal',function(){$(this).remove()})
response.slideDown('normal')}})})
$('.item').live('mouseout',function(){$(this).find('.moderation-controls').hide()})
$('.item').live('mouseover',function(){$(this).find('.moderation-controls').show()})
function moderate(el,method){var item=el.parents('.item')
$.ajax({'url':'/moderate/'+item.attr('id')+'/','type':method,'dataType':'json','success':function(){item.slideUp('normal',function(){$(this).remove()})}})}
$('.accept').live('click',function(){moderate($(this),'PUT')})
$('.reject').live('click',function(){moderate($(this),'DELETE')})
$('.blacklist').live('click',function(){var author=$(this).parents('.item').find('.credits.author .ident').text()
var site=$(this).parents('.item').find('.credits.site .ident').text()
if(!window.confirm('Are you sure you want to blacklist '+author+' on '+site+'? This will prevent any updates from this author from appearing in your feed.')){return false}
$.ajax({'url':'/blacklisting/author/','type':'POST','dataType':'json','data':{'author':author,'site':site},'success':function(){$('.item').each(function(){if(author==$(this).find('.credits .author').text()&&site==$(this).find('.credits .site').text()){$(this).slideUp('normal',function(){$(this).remove()})}})}})})
$('.modcp .enclosure.off').hide()
$('.modcp .pulldown').click(function(){$('.modcp .enclosure').slideToggle('normal',function(){$(this).toggleClass('on').toggleClass('off')
var state=$(this).hasClass('on')?'on':'off'
$.ajax({'url':'/moderate/cp/','type':'POST','data':{'state':state}})})})})