$(document).ready(function()
{
	$.getJSON("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=dsimd_tweet&count=1&callback=?",
	function(data)
	{
		$.each(data,
		function(i, item)
		{
			$("#jstwitter").append('<h2>' + relative_time(item.created_at) + '</h2><p>' + item.text.linkify().atify() + '</p>');
		});
	});
});


String.prototype.linkify = function()
{
	return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/,
	function(m)
	{
    	return m.link(m);
    });
};


String.prototype.atify = function()
{ 
	return this.replace(/@[\w]+/g, function(m)
	{
		return "<a href='http://www.twitter.com/"+m.replace('@','')+"'>"+m+"</a>";
	}); 
};


function relative_time(time_value)
{
	var values = time_value.split(" ");
	time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
	var parsed_date = Date.parse(time_value);
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	delta = delta + (relative_to.getTimezoneOffset() * 60);
	var r = '';
	
	if (delta < 60)
	{
		r = 'a minute ago';
	}
	else if(delta < 120)
	{
		r = 'couple of minutes ago';
	}
	else if(delta < (45*60))
	{
		r = (parseInt(delta / 60)).toString() + ' minutes ago';
	}
	else if(delta < (90*60))
	{
		r = 'an hour ago';
	}
	else if(delta < (24*60*60))
	{
		r = '' + (parseInt(delta / 3600)).toString() + ' hours ago';
	}
	else if(delta < (48*60*60))
	{
		r = '1 day ago';
	}
	else
	{
		r = (parseInt(delta / 86400)).toString() + ' days ago';
	}
	return r;
};


$(document).ready(function()
{
	$.getJSON("https://graph.facebook.com/134099596607742/feed?access_token=115002201921765|dxqcOD8_iUbxXTjV_IC72y5Ns5M&limit=1&callback=?",
	function(json)
	{
		$.each(json.data,
		function(i,item)
		{
			$("#jsfacebook").append('<h2></h2><p>' + truncate(item.message) + '</p>');
		});
	});
});


function truncate(message_value)
{
	if (message_value.length > 200)
	{
		return message_trim = message_value.substring(0, 200).split(' ').slice(0, -1).join(' ')+' ...';
	}
	else
	{
		return message_value
	}
};


$(document).ready(function()
{
	var today = new Date();
	var todayDate;
	
	today.setDate(today.getDate());
	todayDate = today.getFullYear() + '-' + ('0' + (today.getMonth()+1)).slice(-2) + '-' + ('0' + today.getDate()).slice(-2);

	$("#jscalendar").append('<h2>Today</h2>');

	$.getJSON("https://www.google.com/calendar/feeds/david%40dsimd.com/private-a7f21d141ebd77a8d7600bd4422a53a4/full?alt=jsonc&callback=?&orderby=starttime&singleevents=true&sortorder=ascending&futureevents=true",
	function(json)
	{
		$.each(json.data.items,
		function(i,item)		
		{
			if(item.when[0].start.substring(0,10) != todayDate)
			{
				return true;
			}
			$("#jscalendar").append('<p class="calendar">' + item.when[0].start.substring(11,16) + ' | ' + item.title + '</p>');	
		});
	});
});


$(document).ready(function()
{
	$.ajax(
	{
		type: "GET",
		url: "music-albums/albums.xml",
		dataType: "xml",
		success: parseXml
	});
});

function parseXml(xml) 
{
	$(xml).find("track")
	.each(function()
	{
		$("#jsalbums").append('<div class="music-album"><img src="music-albums/' + $(this).find("labelid").text() + '.jpg" alt="David Smith - ' + $(this).find("album").text() + '" /></div>');
	});
};
