function	get_http_object ()
{
	if (window.XMLHttpRequest) {
		return new window.XMLHttpRequest;
	}
	else {
		try {
			return new ActiveXObject("MSXML2.XMLHTTP.3.0");
		}
		catch (ex) {
			return null;
		}
	}
}


function	load_tweets ()
{
	var	http = get_http_object();

	if (!http)
		return;

	http.open("GET", "/tweets.cgi", false);
	if (typeof(http.setRequestHeader) == "function")
		http.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 00:00:00 GMT");
	http.send(null);

	var	response = http.responseXML.documentElement;

	if (!response)
		return;

	var	status_elements = response.getElementsByTagName("status");

	if (status_elements.length == 0)
		return;

	var	tweets_element = document.getElementById("tweets");

	if (!tweets_element)
		return;

	for (var i = 0; i < status_elements.length; ++i) {
		var	tweet_headline = new String();
		var	tweet_text = new String();
		var	tweet_urls = new Array();
		var	tweet_urls_idx = 0;

		var	status_child = status_elements[i].firstChild;
		while (status_child != null) {
			if (status_child.nodeName == "created_at") {
				tweet_headline = status_child.firstChild.nodeValue;
			}
			else if (status_child.nodeName == "text") {
				tweet_text = status_child.firstChild.nodeValue;
				tweet_text = tweet_text.replace("&gt;", ">");
				tweet_text = tweet_text.replace("&lt;", "<");
				tweet_text = tweet_text.replace("&amp;", "&");
			}
			else if (status_child.nodeName == "entities") {
				var	entities_child = status_child.firstChild;
				while (entities_child != null) {
					if (entities_child.nodeName == "urls") {
						var	urls_child = entities_child.firstChild;
						while (urls_child != null) {
							if (urls_child.nodeName == "url") {
								var	url_start = urls_child.getAttribute("start");
								var	url_end = urls_child.getAttribute("end");
								var	url_text = new String();
								var	url_child = urls_child.firstChild;
								while (url_child != null) {
									if (url_child.nodeName == "expanded_url") {
										url_text = url_child.firstChild.nodeValue;
									}
									url_child = url_child.nextSibling;
								}
								tweet_urls[tweet_urls_idx++] = {
									start: url_start,
									end: url_end,
									text: url_text
								};
							}
							urls_child = urls_child.nextSibling;
						}
					}
					entities_child = entities_child.nextSibling;
				}
			}
			status_child = status_child.nextSibling;
		}

		var	item_div = document.createElement("div");
		item_div.className = "item";
		var	item_headline = document.createElement("div");
		item_headline.className = "headline";
		item_headline.appendChild(document.createTextNode(tweet_headline));
		item_div.appendChild(item_headline);
		var	item_paragraph = document.createElement("p");

		if (tweet_urls.length == 0) {
			item_paragraph.appendChild(document.createTextNode(tweet_text));
		}
		else {
			var		prev = 0;
			for (var ii = 0; ii < tweet_urls.length; ++ii) {
				item_paragraph.appendChild(document.createTextNode(tweet_text.substring(prev, tweet_urls[ii].start)));
				var	a = document.createElement("a");
				a.href = tweet_urls[ii].text;
				a.appendChild(document.createTextNode(tweet_urls[ii].text));
				item_paragraph.appendChild(a);
				prev = tweet_urls[ii].end + 1;
			}
			item_paragraph.appendChild(document.createTextNode(tweet_text.substring(prev)));
		}

		item_div.appendChild(item_paragraph);
		tweets_element.appendChild(item_div);
	}
}

