// John Przyborski (4-13-2009)

var address = "scripts/proxy.php?adrs="+encodeURIComponent("http://search.twitter.com/search.atom?q=%23cmubrag");

var entries = new Array();
var request = getHttpRequestObj();

function getXMLData() {
	
	
	
	request.open("GET", address);
	
	request.onreadystatechange = function() {
		
									if (request.readyState == 4) {
										
										if (request.status == 200) {
											
											try {
											
												var xmlEntries = request.responseXML.getElementsByTagName("entry");
												var newEntries = new Array();
												
												for (var i = 0; i < xmlEntries.length; i++) {
													
													if (!document.getElementById(xmlEntries[i].getElementsByTagName("id")[0].firstChild.data)) {
														
														if (entries.length > 0) {
															
															
															if (getTweetDateObj(xmlEntries[i].getElementsByTagName("published")[0].firstChild.data).getTime() > entries[0].published.getTime()) {
																newEntries.push(xmlEntries[i]);
															}
														} else {
															
																newEntries.push(xmlEntries[i]);
														}
													}
												}
												
												
												for (var i = newEntries.length - 1; i >= 0; i--) {
													
													var id = newEntries[i].getElementsByTagName("id")[0].firstChild.data;
													var date = getTweetDateObj(newEntries[i].getElementsByTagName("published")[0].firstChild.data);
													var title = newEntries[i].getElementsByTagName("title")[0].firstChild.data;
													var content = newEntries[i].getElementsByTagName("content")[0].firstChild.data;
													var author = newEntries[i].getElementsByTagName("author")[0].getElementsByTagName("name")[0].firstChild.data;
													
													for (var j = 0; j < author.length; j++) {
														
														if (author.charAt(j) == " ") {
															author = author.substring(0,j);
															break;
														}
													}
													
													var authUri = newEntries[i].getElementsByTagName("author")[0].getElementsByTagName("uri")[0].firstChild.data;
													
													var tLink;
													var image;
													
													var links = newEntries[i].getElementsByTagName("link");
													
													for (var j = 0; j < links.length; j++) {
														
														if (links[j].attributes.getNamedItem("rel").value == "alternate") {
															
															tLink = links[j].attributes.getNamedItem("href").value;
															
														} else if (links[j].attributes.getNamedItem("rel").value == "image") {
															
															image = links[j].attributes.getNamedItem("href").value;
														}
													}
													
													//entries added old to new
													entries.push(new Entry(id, date, tLink, title, content, image, author, authUri));
												}
												
												updateHTML(newEntries.length);
												
												setTimeout("getXMLData()", 15000);
											}
											catch(e) {
												
												setTimeout("getXMLData()", 15000);
											}
										}
									}
								 }
	request.send(null);
}


function updateHTML(numberOfNewEntries) {

	var twitterFeed = document.getElementById("twitterfeed");
	
	updateTwitterTimes();
	
	
	for (var i = 0; i < numberOfNewEntries; i++) {
		
		var entry = entries[entries.length - numberOfNewEntries + i];
	
		var div = document.createElement("div");
		div.id = entry.id;
	
		var imageATag = document.createElement("a");
		imageATag.href = entry.authorUri;
		imageATag.target = "_blank";
	
		var image = document.createElement("img");
		image.src = entry.image;
		image.height = 48;
		image.width = 48;
		imageATag.appendChild(image);
		
		div.appendChild(imageATag);
		
		var p = document.createElement("p");
		
		var author = document.createElement("a");
		author.href = entry.authorUri;
		author.target = "_blank";
		author.appendChild(document.createTextNode(entry.author));
		p.appendChild(author);
		
		p.innerHTML = p.innerHTML + ": " + entry.content;
		
		div.appendChild(p);
		
		var p2 = document.createElement("p");
		p2.className = "entry-links";
		
		var timeSpan = document.createElement("span");
		timeSpan.innerHTML = getTimeText(entry.published) + " ";
		//p2.appendChild(document.createTextNode(getTimeText(entry.published) + " "));
		p2.appendChild(timeSpan);
		
		var tLink = document.createElement("a");
		tLink.href = entry.tLink;
		tLink.target = "_blank";
		tLink.appendChild(document.createTextNode("View Tweet"));
		p2.appendChild(tLink);
		
		p2.appendChild(document.createTextNode(" "));
		
		var reply = document.createElement("a");
		reply.href = "http://twitter.com/home?status=@" + entry.author + "%20&in_reply_to_status_id=" + entry.id.substring(28, entry.id.length) + "&in_reply_to=" + entry.author;
		reply.target = "_blank";
		reply.appendChild(document.createTextNode("Reply"));
		p2.appendChild(reply);
		
		//p2.appendChild(document.createTextNode(" " + entry.id));
		
		div.appendChild(p2);
		
		//first entry is appended, subsequent entries are inserted
		var tween = new OpacityTween(div, Tween.strongEaseOut, 0, 90, 2);
		document.getElementById("twitterfeed").style.backgroundImage = "none";
		tween.start();
		
		if (twitterFeed.innerHTML == "") {
			twitterFeed.appendChild(div);
		} else {
			twitterFeed.insertBefore(div, twitterFeed.firstChild);
		}
	}
}

function getTweetDateObj(twitterTimeString) {
	
	var yy = twitterTimeString.substring(0,4);
	var mm = twitterTimeString.substring(5,7);
	var dd = twitterTimeString.substring(8,10);
	
	var hrs = twitterTimeString.substring(11,13);
	var mins = twitterTimeString.substring(14,16);
	var ss = twitterTimeString.substring(17,19);
	
	var date = new Date(yy, mm, dd, hrs, mins, ss);

	date.setMonth(date.getMonth() - 1);

	date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
	
	return date;
}

function updateTwitterTimes() {
	
	if (document.getElementById("twitterfeed").innerHTML != "") {
	
		var entry = document.getElementById("twitterfeed").firstChild;
	
		while (entry) {
			
			//alert(entry);
			
			for (var j = entries.length - 1; j >= 0; j--) {
				
				if (entry.id == entries[j].id) {
					
					var p = entry.getElementsByTagName("p")[0];
					
					while (p) {
						
						if (p.className == "entry-links") {
							
							p.getElementsByTagName("span")[0].innerHTML = getTimeText(entries[j].published) + " ";
						}
						p = p.nextSibling;
					}
				}
			}
			entry = entry.nextSibling;
		}
	}
}
	

function getTimeText(entryTime) {
	
	var timeText = parseInt((new Date().getTime() - entryTime.getTime()) / 1000);
		
	if (timeText < 60) {
		
		timeText = timeText + " seconds ago";
		
	} else if (timeText < 3600) {
		
		timeText = parseInt(timeText / 60);
		
		if (timeText > 1)
			timeText = timeText + " minutes ago";
		else
			timeText = timeText + " minute ago";
	
	} else if (timeText < 86400) {
		
		timeText = parseInt(timeText / 3600);
		
		if (timeText > 1)
			timeText = timeText + " hours ago";
		else
			timeText = timeText + " hour ago";
		
	} else {
		timeText = parseInt(timeText / 86400);
		
		if (timeText > 1)
			timeText = timeText + " days ago";
		else
			timeText = timeText + " day ago";
	}
	
	return timeText;
	
}


function getHttpRequestObj() {

	var request;
	
	if (window.XMLHttpRequest) {
		//alert("browser is not IE");
		request = new XMLHttpRequest();
		//request.overrideMimeType("text/xml");
	}
	else if (window.ActiveXObject) {
		//alert("browser appears to be Internet Explorer");
		request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else {
		alert("Unable to create XMLRequestObject");
	}
	
	return request;

}

function Entry(id, pub, tLink, title, content, img, authName, authUri) {
	
	this.id = id;
	this.published = pub;
	this.tLink = tLink;
	this.title = title;
	this.content = content;
	this.image = img;
	this.author = authName;
	this.authorUri = authUri;
	
}