// DATE CONVERSION
function rfc3339ToDate(val) {
    var pattern = /^(\d{4})(?:-(\d{2}))?(?:-(\d{2}))?(?:[Tt](\d{2}):(\d{2}):(\d{2})(?:\.(\d*))?)?([Zz])?(?:([+-])(\d{2}):(\d{2}))?$/;

    var m = pattern.exec(val);
    var year = new Number(m[1] ? m[1] : 0);
    var month = new Number(m[2] ? m[2] : 0);
    var day = new Number(m[3] ? m[3] : 0);
    var hour = new Number(m[4] ? m[4] : 0);
    var minute = new Number(m[5] ? m[5] : 0);
    var second = new Number(m[6] ? m[6] : 0);
    var millis = new Number(m[7] ? m[7] : 0);
    var gmt = m[8];
    var dir = m[9];
    var offhour = new Number(m[10] ? m[10] : 0);
    var offmin = new Number(m[11] ? m[11] : 0);

    if (dir && offhour && offmin) {
        var offset = ((offhour * 60) + offmin);
        if (dir == "+") {
            minute -= offset;
        } else if (dir == "-") {
            minute += offset;
        }
    }

    return new Date(Date.UTC(year, month, day, hour, minute, second, millis));
}

// format a date returned from friendfeed api for display
function formatFriendFeedDate(ffdate) {
    var m = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    var d = rfc3339ToDate(ffdate);
    return d.getDate() + ' ' + m[d.getMonth()] + ', ' + pad(d.getHours()) + ':' + pad(d.getMinutes());
}

// zeropad a number to two digits
function pad(v) {
    if (v < 10) {
        v = "0" + v;
    }
    return v;
}

// FEEDS BOX
function writeFeedBox(obj)
{
	var target = jQuery('#ff-target');
	
	jQuery.each(obj.entries, function(i, entry) {
	
		var contents = "";
		
		var link = entry.link;
		var service = entry.service.name;
		var title = entry.title;
		var when = entry.published;
		
		if(service != "disqus" && service != "delicious")
		{
			contents += "<li>";
			contents += "<a href='" + link + "' target='_blank'>";
			contents += title + "<br/>";
			contents += "<span class='service-name'>via <strong>" + service + "</strong> on " + formatFriendFeedDate(when) + "</span>";
			contents += "</a>";
			contents += "</li>";
		}
		
		target.append(contents);
		
	});
}

// LINKS BOX
function writeLinksBox(obj)
{
	var target = jQuery('#links-target');
	
	jQuery.each(obj, function(i, entry) {
	
		var contents = "";
		
		var link = entry.u;
		//var service = entry.service.name;
		//var serviceLink = entry.service.profileUrl;
		var title = entry.d;
		//var when = entry.published;
		
		contents += "<li>";
		contents += "<a href='" + link + "' target='_blank'>";
		contents += title;
		contents += "</li>";
		
		target.append(contents);
		
	});
}

// TUMBLR FEED
function writeTumblrHeadlines(obj)
{
	var target= jQuery('#tumblr-feed');
	
	jQuery.each(obj.entries, function(i, entry) {
	
		var contents = "";
		
		var link = entry.link;
		var title = entry.title;
		var when = entry.published;
		
		contents += "<a class='headline' href='" + link +"'>";
		contents += "<div class='title'>" + title + "</div>";
		contents += "<div class='post-date'>" + formatFriendFeedDate(when) + "</div>";
		contents += "</a>";
		
		target.append(contents);
	});
}
