var service = {
	'twitter' : {
		'feed' : "https://twitter.com/statuses/user_timeline/gaowhen.rss",
		'function' : twitter,
		'num' : '7'
	},
	'blog' : {
		'feed' : 'http://gaowhen.com/feed',
		'function' : rss,
		'num' : '7'
	},
	'douban' : {
		'feed' : 'http://www.douban.com/feed/people/redscorpion/interests',
		'function' : douban,
		'num' : '7'
	},
	'music' : {
		'feed' : '',
		'function' : doubanfm
	}
};

function show_tab(key){
	var obj = service[key];
	var num = obj.num;
	if(!obj){return false};

	var $ul = $('<ul></ul>');
	var query = 'select * from feed where url="' + obj.feed + '" LIMIT ' + num;
    var url = "http://query.yahooapis.com/v1/public/yql?q="+encodeURIComponent(query)+"&format=json&callback=?";
	var $content = $('#content');
	var $section = $('#' + key);

	$section.empty().append($ul);
	$content.children(':visible').fadeOut(500, function(){/*$content.animate({'height':0}, 500);*/$section.fadeIn(500)});

	try {
		$.getJSON(url, function(data){
			$.each(data.query.results.item || data.query.results.entry, function(){
					$ul.append(obj['function'](this));
					$content.animate({'height':$section.height()}, 500);
			});
		});
	}
	catch(e){
		$ul.append($('<li class="description">Stay foolish, stay hungry.</li>'));
	}

	$section.ajaxStop(function(){
		$('.loading').hide();
	});
	$section.ajaxStart(function(){
		$('.loading').show();
	});
}

function twitter(item){
	/* Formats the tweets, by turning hashtags, mentions an URLS into proper hyperlinks: */
	return $('<li class="description">').html(
		formatString(item.description || item.title)+
		' <a href="'+(item.link || item.origLink)+'" target="_blank">[tweet]</a>'
	);
}

function rss(item){
	return $('<li class="description">').html(
		formatString(item.title.content || item.title) +
		//' <a href="'+(item.origLink || item.link[0].href || item.link)+'" target="_blank">[read]</a>'
		' <a href="'+(item.link)+'" target="_blank">[read]</a>'
	);
}

//function feed(item){
//	return $('<li>').html(
//		formatString(item.title.content || item.title) + item.description +
//		' <a href="'+(item.origLink || item.link[0].href || item.link)+'" target="_blank">[read]</a>'
//	);
//}

function formatString(str){
	/* This function was taken from our Twitter Ticker tutorial - http://tutorialzine.com/2009/10/jquery-twitter-ticker/ */
	str = str.replace(/<[^>]+>/ig,'');
	str = str.replace(/gaowhen:/, '');
	str = ' '+str;
	str = str.replace(/((ftp|https?):\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?)/gm,'<a href="$1" target="_blank">$1</a>');
	str = str.replace(/([^\w])\@([\w\-]+)/gm,'$1@<a href="http://twitter.com/$2" target="_blank">$2</a>');
	str = str.replace(/([^\w])\#([\w\-]+)/gm,'$1<a href="http://twitter.com/search?q=%23$2" target="_blank">#$2</a>');

	return str;
}

function doubanfm(item){}

function douban(item){
	return $('<li>').html('<a href="' + (item.link || item.origLink) + '" target="_blank"><img src="' + $(item.description).find('img').attr('src') + '" /><strong>' + formatString(item.title.content || item.title) + '</strong></a>');
}

// dom ready
$(document).ready(function() {

	$('nav a').bind('click', function(e){
		$('#content').stop(true).animate({'height':0}, 500);
		if(!($(e.target).hasClass('current'))){

			var key = $(e.target).attr('href').replace(/#/, '');
			var section = $($(e.target).attr('href'));
			var content = $('#content');
			var height = section.height();

			if(key != 'contact'){
				show_tab(key);
			}else{
				content.children(':visible').fadeOut(500, function() {
					section.fadeIn(500);
					content.animate({ 'height': height }, 500);
				});
			}

			$('nav a.current').removeClass('current');
			$(e.target).addClass('current');
		}

		return false;
	});

	show_tab('blog');
});

