var TWEET_ARRAY = new Array();

var initializeTweets = function(tweetcount) {
	var maxTweets = 4;
	if (tweetcount == undefined){
		var tweetcount = 5;
	}
	//var request = 'pages/twitter?count=' + tweetcount;
	var request = '/javascripts/data/twitter.json';
	
	var displayTweets = function() {
		//alert("Tweet")
		var tweet;
		var tweetString;
		for (var i=0; i < TWEET_ARRAY.length; i++) {
			tweetString = '';
			tweet = TWEET_ARRAY[i];
			tweetString += '<li class="tweet">';
			tweetString += '<span class="username">' + tweet.getUsername() + '</span> ';
			tweetString += '<span class="text">' + tweet.getText() + '</span>';
			tweetString += '<br /><span class="details">' + tweet.getApproximateTime() + '</span>';
			tweetString += '</li>';
			
			$("#tweets").append(tweetString);
		}
	}
	
	var makeTweets = function(rawData) {
		var data = eval("(" + rawData +")");
		var tweetDate;
		//$("#js_objects").append(CO2HTML(data));
		
		for (var i=0; i < data.length && i < maxTweets; i++) {
			sdate = data[i].created_at;
			// detect IE and reformat the date to something IE can parse but unfortunately Firefox can't
			if ($.browser.msie) {
				var sdate = sdate.split(' ');
				sdate.splice(3,0,sdate.pop());
			}
			tweetDate = new Date(sdate);
			TWEET_ARRAY[i] = new Tweet(data[i].id, data[i].user.screen_name, tweetDate, data[i].text, data[i].source);
		}
		
		displayTweets();
	}
	
	var ibrokedmytwit = function() {
		$("#tweets").append('<li class="tweet">twitter feed is unavailable</li>')
	}
	
	var loadData = function () {
			$.ajax({
					type: "POST",
					url: request,
					data: '',
					datatype: "json",
					async: false,
					success: makeTweets,
					error: ibrokedmytwit
				 })
	}
	
	var Tweet = function(id,username,date,text,source) {
		var id = id;
		var username = username;
		var dateObj = date;
		var text = text;
		var source = source;
		
		this.getID = function() {
			return id;
		}
		
		this.getUsername = function() {
			return username;
		}
		
		this.getDateObj = function() {
			return dateObj;
		}
		
		this.getText = function() {
			return text;
		}
		
		this.getSource = function() {
			return source;
		}
		
		this.getApproximateTime = function() {
			var response;
			var now = new Date();
			var now = new Date(now.toUTCString());
			var exactMinutes = (now.getTime()/1000/60) - (dateObj.getTime()/1000/60);
			var approxMinutes = Math.round(exactMinutes);
			var hours = Math.round(exactMinutes/60);
			var days = Math.round(hours/24);
			
			if ( exactMinutes < 1) {
				response = 'less than a minute ago';
			} else if (approxMinutes < 30) {
				response = approxMinutes + ' minutes ago';
			} else if (approxMinutes < 60) {
				response = 'less than an hour ago';
			} else if (hours == 1) {
				response = 'about an hour ago';
			} else if (hours < 23) {
				response = 'about ' + hours + ' hours ago';
			} else if (days == 1) {
				response = 'a day ago';
			} else {
				response = days + ' days ago';
			}
			
			response += ' from ' + source;
			return response;
		}
	}
	
	loadData();
	
}