var ALLTOP = {};
ALLTOP = {
	active_clicks: [],
	active_votes: [],
	
	gfiClick: function(permalink) {
		setTimeout(function(){ALLTOP.active_clicks.remove(permalink);}, 2000);
		// window.open(permalink);
		// self.location.href=permalink;
	},

	gfiVote: function(id) {
		setTimeout(function(){ALLTOP.active_votes.remove(id);}, 2000);
	}
};

var acktext = ($('ack-box')) ? $('ack-box').getElements('li a')[0].innerHTML : '' ;
document.addEvent('click', function(e){
	if ($('ack-box')) {
		$('ack-box').getElements('li a')[0].innerHTML = acktext;
		$('ack-box').getElements('li')[0].setStyle('display', 'inline');
		$('ack-box').removeClass('show-urls');
	}
	if ($('cat-box')) $('cat-box').removeClass('show-urls');
});

function hookUp(uls, idx, len) {

	var myuls = uls.slice(idx, (idx+len));
	var links = [];
	myuls.each(function(el){
		if (el.id.match(/-box/)) return;
		var posts = el.getElements('li.hentry');
		var site_element = el.getElements('li a')[0];
		var site_name = (site_element.title) ? site_element.title : el.getElements('li a')[1].innerHTML;
		posts.each(function(post) {
			var link_element = {};
			if (post.hasClass('image-feed-entry')) {
				link_element = post.getElements('a')[0];
			}
			else {
				link_element = post.getElements('h3 a[rel=bookmark]')[0];
				var content_element = post.getElements('div.entry-content')[0];
				var thedate = post.getElements('div.published')[0].innerHTML;
				if (!thedate) thedate = '&nbsp;';
				link_element.setProperty('title', thedate+' :: '+content_element.innerHTML.replace(/::/, ':'));
			}

			link_element.addEvent('click', function(e){
				var permalink = link_element.href;

				// Check to see if this might be a multiple click
				if (ALLTOP.active_clicks.contains(permalink)) return true;

				new Ajax('/track/', {
					method: 'get',
					data: { url: permalink },
					onRequest: function(){
						ALLTOP.active_clicks.include(permalink);
					},
					onComplete: function(response){
						ALLTOP.gfiClick(permalink);
					},
					onFailure: function(){
						ALLTOP.gfiClick(permalink);
					}
				}).request();
			});

			links.push(link_element);
		});
	});
	addTips(links);
	if (uls.slice((idx+len), (idx+len+len)).length > 0)
		setTimeout(function(){ hookUp(uls, (idx+len), len); }, 10);
}

function addTips(links) {
	new Tips(links, {
		maxTitleChars: 250
	});
}

window.addEvent('domready', function(){

	hookUp($$('ul'), 0, 20);

	$$('ul#cat-box li.categories a').each(function(el){
		el.addEvent('click', function(e){
			new Event(e).stop();
			$('cat-box').toggleClass('show-urls');
		});
	});

	$$('ul#ack-box li.categories a').each(function(el){
		el.addEvent('click', function(e){
			new Event(e).stop();
			var acktxt = $('ack-box-intro').innerHTML;
			var acklink = $('ack-box').getElements('li a')[0];
			if (acktxt.match(/^\s*$/))
				acktxt = 'Thanks to the following people for suggesting links';
			acklink.innerHTML = acktxt;
			if (acktxt=='__HIDE__')
				$('ack-box').getElements('li')[0].setStyle('display', 'none');
			$('ack-box').toggleClass('show-urls');
		});
	});

	$$('a.vote').each(function(el){
		el.addEvent('click', function(e){
			new Event(e).preventDefault();
			var updown = 0;
			var feedid = el.rel;
			if ($(el).hasClass('vote-up')) updown = 1;
			else if ($(el).hasClass('vote-down')) updown = -1;
			new Ajax('/vote/', {
				method: 'get',
				data: {
					feedid: feedid,
					updown: updown
				},
				onRequest: function(){
					ALLTOP.active_votes.include(feedid);
				},
				onComplete: function(response){
					ALLTOP.gfiVote(feedid);
				},
				onFailure: function(){
					ALLTOP.gfiVote(feedid);
				}
			}).request();
		});
	});

});