
// http://www.simonwhatley.co.uk/parsing-twitter-usernames-hashtags-and-urls-with-javascript
String.prototype.parseURL = function() {
	return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(url) {
		return url.link(url);
	});
};

String.prototype.parseUsername = function() {
	return this.replace(/[@]+[A-Za-z0-9-_]+/, function(u) {
		var username = u.replace("@","")
		return u.link("http://twitter.com/"+username);
	});
};

String.prototype.parseHashtag = function() {
	return this.replace(/[#]+[A-Za-z0-9-_]+/, function(t) {
		var tag = t.replace("#","%23")
		return t.link("http://search.twitter.com/search?q="+tag);
	});
};

function ajaxTwitter() {
   var xmlhttp = null;

   if (window.XMLHttpRequest) {
     // code for IE7+, Firefox, Chrome, Opera, Safari
     xmlhttp = new XMLHttpRequest();
   }
   else if (window.ActiveXObject) {
     // code for IE6, IE5
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   else {
     document.getElementById("tweets").innerHTML = "Your browser does not support XMLHTTP!";
   }

   if (xmlhttp != null) {
     xmlhttp.onreadystatechange = function() {
       if (xmlhttp.readyState == 4) {
         var xmlDoc = xmlhttp.responseXML.documentElement;
         var tweets = xmlDoc.getElementsByTagName("tweet")
         var dates = xmlDoc.getElementsByTagName("date")
         var html = '';
         var style = 'tweetfirst';
         var n = tweets.length;
         if (typeof(limit) != "undefined")
           n = Math.min(limit, n);
         for (var i = 0; i < n; i++) {
           html += '<p class="' + style + '">' + tweets[i].childNodes[0].nodeValue.parseURL().parseUsername().parseHashtag();
           html += '<span class="tweetdate"> ' + dates[i].childNodes[0].nodeValue; + '</span></p>';
           style = 'tweet';
         }
         document.getElementById("tweets").innerHTML = html;
       }
     }
     xmlhttp.open("GET", "twitter.php?username=" + username, true);
     xmlhttp.send(null);
   }
}
