function htmlentities(str) {
    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
}
function formatdate(timestamp){
	var dateobject = new Date(timestamp*1000);
	var months = new Array();
	months[0] = 'January';
	months[1] = 'February';
	months[2] = 'March';
	months[3] = 'April';
	months[4] = 'May';
	months[5] = 'June';
	months[6] = 'July';
	months[7] = 'August';
	months[8] = 'September';
	months[9] = 'October';
	months[10] = 'November';
	months[11] = 'December';
	return dateobject.getDate() +' '+ months[dateobject.getMonth()] +', '+ dateobject.getHours() +':'+ dateobject.getMinutes();
	//5 June, 18:15
}

var feedlist = [];
jQuery(document).ready(function(){
	
	//add the feeds list
	jQuery("#about").addClass("column").after('<section id="feeds" class="column"><h1>Feeds</h1><ul></ul></section>');
	
	/* Create a LastFM object */
	var lastfm = new LastFM({
		apiKey    : '307f9e6a9d17d49ee9c10ce864ba3f77'
	});
	
	function addFeed(str, timestamp){
		//add to feedlist
		feedlist[feedlist.length] = {"time" : timestamp, "html" : str};
		//sort by timestamps
		feedlist.sort(function(a, b){
			return b.time-a.time; //descending order (newest first)
		});
	}
	function renderFeeds(){
		var renderoutput = '';
		for (i=0;i<feedlist.length && i < 5;i++){
			renderoutput = renderoutput + feedlist[i].html;
		}
		jQuery("#feeds ul").html(renderoutput);
	}
	function updateFeeds(){
		
		//Last.fm (Spotify)
		var nowdate = new Date();
		lastfm.user.getRecentTracks({user: 'Sleavely'}, {success: function(data) {
				var longstring = '';
				var timestamp = 0;
				for (i=0;i<data.recenttracks.track.length;i++){
					timestamp = (data.recenttracks.track[i].date ? data.recenttracks.track[i].date.uts : nowdate.getTime()/1000);
					longstring = '<li class="spotify">' +
									'<div class="sprite"></div>' +
									'<a href="http://open.spotify.com/search/'+ encodeURIComponent(data.recenttracks.track[i].artist["#text"]) +' '+ encodeURIComponent(data.recenttracks.track[i].name) +'" target="_blank">'+ htmlentities(data.recenttracks.track[i].artist["#text"]) +' - '+ htmlentities(data.recenttracks.track[i].name) +'</a>' +
									'<time datetime="'+ timestamp +'">'+ formatdate(timestamp) +'</time>' +
								'</li>';
					addFeed(longstring, timestamp);
				}
				renderFeeds();
			}}
		);
		
		//Twitter
		jQuery.getJSON(
			'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=sleavely&callback=?',
			function(data) {
				for (i=0;i<data.length;i++){
					var v= data[i].created_at.split(' '); //we need to split it because IE is retarded.
					var foo = new Date(Date.parse(v[1]+" "+v[2]+", "+v[5]+" "+v[3]+" UTC"));
					data[i].created_timestamp = (foo.getTime()/1000);
					var longstring = '<li class="twitter">' +
										'<div class="sprite"></div>' +
										'<a href="http://twitter.com/#!/sleavely/status/'+ data[i].id_str +'" target="_blank">'+ htmlentities(data[i].text) +'</a>' +
										'<time datetime="'+ data[i].created_timestamp +'">'+ formatdate(data[i].created_timestamp) +'</time>' +
									'</li>';
					addFeed(longstring, data[i].created_timestamp);
				}
				renderFeeds();
			}
		);
		
	}
	
	//do the feed magic
	updateFeeds();
	//update every five minutes
	setInterval(function(){
		feedlist = [];
		updateFeeds();
	}, (300*1000)); //milliseconds
	
});
