var Tweeter = new Object();
Tweeter.account = 'werebeargames';
Tweeter.url = 'http://twitter.com/statuses/user_timeline/22535304.rss';
Tweeter.tweetCount = 5;
Tweeter.links = new Array();
Tweeter.titles = new Array();
Tweeter.descriptions = new Array();
Tweeter.dates = new Array();
Tweeter.containerId = 'tweets';

Tweeter.Request = function() {
	var gateway = 'gateway.php?feed='+escape(this.url);
	this.request = (window.XMLHttpRequest) ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
	this.request.onreadystatechange = function() { Tweeter.checkReadyState(); };
	this.request.open('GET', gateway, true);
	this.request.send(gateway);
}

Tweeter.onResponse = function(feed) {
	var items = feed.getElementsByTagName('item');
	for(var i = 0; i < items.length; i++) {
		this.links.push(items[i].getElementsByTagName('link')[0].firstChild.nodeValue);
		this.titles.push(items[i].getElementsByTagName('title')[0].firstChild.nodeValue);
		this.descriptions.push(items[i].getElementsByTagName('description')[0].firstChild.nodeValue);
		this.dates.push(items[i].getElementsByTagName('pubDate')[0].firstChild.nodeValue);
	}
	
	var ul = document.createElement('ul');
	for(var i = 0; i < this.tweetCount; i++) {
		var li = document.createElement('li');
		li.appendChild(document.createTextNode(this.formatDesc(this.descriptions[i])));
		var link = document.createElement('a');
		link.appendChild(document.createTextNode(this.relativeTime(this.dates[i])));
		link.setAttribute('href', this.links[i]);
		li.appendChild(link);
		ul.appendChild(li);
	}
	
	document.getElementById(this.containerId).appendChild(ul);
}
Tweeter.checkReadyState = function() {
	switch(this.request.readyState) {
		case 1: break;
		case 2: break;
		case 3: break;
		case 4: this.onResponse(this.request.responseXML.documentElement);
	}
}

Tweeter.formatDesc = function(desc) {
	return desc.substring(this.account.length+': '.length)+' ';
}

Tweeter.relativeTime = function(time_value) {
	var values = time_value.split(" ");
	time_value = values[2] + " " + values[1] + ", " + values[3] + " " + values[4]; //new format: Apr 03, 2010 10:20:48
	var parsed_date = Date.parse(time_value);
	var relative_to = new Date();
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	delta = delta + (relative_to.getTimezoneOffset() * 60);
	
	if (delta < 60) {
		return 'less than a minute ago';
	} else if(delta < 120) {
		return 'about a minute ago';
	} else if(delta < (60*60)) {
		return (parseInt(delta / 60)).toString() + ' minutes ago';
	} else if(delta < (120*60)) {
		return 'about an hour ago';
	} else if(delta < (24*60*60)) {
		return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
	} else if(delta < (48*60*60)) {
		return '1 day ago';
	} else {
		return (parseInt(delta / 86400)).toString() + ' days ago';
	}
}
