//////////////////////////////////////////////////////////////////////
//
// Twitter Javascript API
// version:	beta 1
// release:	September 30, 2007
// license: This api is free to use and distribute as long as
//			this copyright notice remains attached
//
// (c) 2007 Justin Bezanson <justinbezanson@gmail.com>
//
//////////////////////////////////////////////////////////////////////

/**
 * Features for next version(s)
 * -------------------------
 * 1) FriendTimeline
 *		a) add since parameter
 *		b) add paging
 * 2) UserTimeline
 *		a) add since parameter
 *		b) add paging
 * 3) Replies
 *		a) Replies
 *		b) add paging
 * 4) Authenticate
 *		a) update
 *		b) destroy (delete)
 * 5) User Methods
 *		a) friends
 *		b) followers
 *		c) featured
 *		d) show - user profile for authenticated user with more detail
 * 6) Favorites
 *		a) create
 *		b) destroy
 *
 */
 
/**
 * Known bugs to be fixed
 * ----------------------
 *
 */ 

//Twitter namespace
var Twitter = {};

//location of ajax processing page
Twitter.AjaxPage = "twitter.php";

//ajax loading image
Twitter.AjaxLoadImage = "images/loading1.gif";

//user profile
Twitter.UserProfile = {};

/**
 * this function gets the user's profile and sets Twitter.UserProfile with the results
 * @params : 
 * 		- user : the user screen name to get
 *		- onload : 	this parameter is optional and accepts a function that will be executed 
 *					when the api is finished retreiving the user's profile.
 */
Twitter.GetUserProfile = function(params) {
	var user = params.user;
	var fn = params.onload;
	var url = Twitter.AjaxPage + "?user_timeline=" + user + "&count=1";
	var parameters = {
		onComplete:function(response) {
			var json = eval(response.text);
			var profile = {};
			profile.ImageUrl = json[0].user.profile_image_url;
			profile.Url = json[0].user.url;
			profile.Name = json[0].user.name;
			profile.Description = json[0].user.description;
			profile.Location = json[0].user.location;
			profile.ScreenName = json[0].user.screen_name;
			profile.ID = json[0].user.id;
			profile.Protected = (json[0].user.protected == "true") ? true : false;
			Twitter.UserProfile = profile;
			if(fn){fn();}
		}
	};
	new Twitter.Ajax(url,parameters).request();
};

/**
 * updates the specified element with the latest statuses
 * @params : 
 *		- user : accepts twitter username or id
 * 		- update : string of the element to update
 *		- count : optional, number of statuses to return, default is 20 which is also the maximum
 *		- limit : true || false, false by default, if true leaves out the user image and screen name links
 */
Twitter.UserTimeline = function(params) {
	if(typeof params.update == "string") {
		params.update = document.getElementById(params.update);		
	}
	var user = params.user;
	var update = params.update;
	var currentContents = update.innerHTML;
	update.innerHTML = '<div style="width:100%"><img src="' + Twitter.AjaxLoadImage + '" alt=""/></div>';
	var url = Twitter.AjaxPage + "?user_timeline=" + user;
	if(params.count){url += "&count=" + params.count;}else{url += "&count=120";}
	var parameters = {
		onComplete:function(response) {
			update.innerHTML = currentContents;
			var json = eval(response.text);
			var html = '<table width="754" border="0" cellpadding="0" cellspacing="0">';
				html += '<tr><td valign="top">';
				html += '<table border="0" cellpadding="0" cellspacing="0">';
				html += '<tr><td width="360" valign="top" class="outerFrame" bgcolor="#132436">';
				html += '<table width="360" border="0" cellpadding="0" cellspacing="0" class="innerFrame" id="list">';
				html += '<tr><td class="listBlueTitle" style="background-image:url(images/box-bg.jpg); background-repeat:repeat-x">2012</td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div5\');changeimage(\'toggleimg5\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg5" width="11" height="9" border="0" id="toggleimg5"/>&nbsp;&nbsp;January</a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div5" style="display:none">';
				var jan2012=new RegExp("Jan 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(jan2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div6\');changeimage(\'toggleimg6\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg6" width="11" height="9" border="0" id="toggleimg6"/>&nbsp;&nbsp;<span style="color:#666666">February</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div6" style="display:none">';
				var feb2012=new RegExp("Feb 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(feb2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div7\');changeimage(\'toggleimg7\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg7" width="11" height="9" border="0" id="toggleimg7"/>&nbsp;&nbsp;<span style="color:#666666">March</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div7" style="display:none">';
				var mar2012=new RegExp("Mar 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(mar2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div8\');changeimage(\'toggleimg8\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg8" width="11" height="9" border="0" id="toggleimg8"/>&nbsp;&nbsp;<span style="color:#666666">April</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div8" style="display:none">';
				var apr2012=new RegExp("Apr 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(apr2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div9\');changeimage(\'toggleimg9\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg9" width="11" height="9" border="0" id="toggleimg9"/>&nbsp;&nbsp;<span style="color:#666666">May</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div9" style="display:none">';
				var may2012=new RegExp("May 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(may2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div10\');changeimage(\'toggleimg10\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg10" width="11" height="9" border="0" id="toggleimg10"/>&nbsp;&nbsp;<span style="color:#666666">June</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div10" style="display:none">';
				var jun2012=new RegExp("Jun 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(jun2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div11\');changeimage(\'toggleimg11\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg11" width="11" height="9" border="0" id="toggleimg11"/>&nbsp;&nbsp;<span style="color:#666666">July</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div11" style="display:none">';
				var jul2012=new RegExp("Jul 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(jul2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div12\');changeimage(\'toggleimg12\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg12" width="11" height="9" border="0" id="toggleimg12"/>&nbsp;&nbsp;<span style="color:#666666">August</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div12" style="display:none">';
				var aug2012=new RegExp("Aug 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(aug2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div13\');changeimage(\'toggleimg13\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg13" width="11" height="9" border="0" id="toggleimg13"/>&nbsp;&nbsp;<span style="color:#666666">September</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div13" style="display:none">';
				var sep2012=new RegExp("Sep 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(sep2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div14\');changeimage(\'toggleimg14\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg14" width="11" height="9" border="0" id="toggleimg14"/>&nbsp;&nbsp;<span style="color:#666666">October</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div14" style="display:none">';
				var oct2012=new RegExp("Oct 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(oct2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div15\');changeimage(\'toggleimg15\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg15" width="11" height="9" border="0" id="toggleimg15"/>&nbsp;&nbsp;<span style="color:#666666">November</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div15" style="display:none">';
				var nov2012=new RegExp("Nov 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(nov2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div16\');changeimage(\'toggleimg16\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg16" width="11" height="9" border="0" id="toggleimg16"/>&nbsp;&nbsp;<span style="color:#666666">December</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div16" style="display:none">';
				var dec2012=new RegExp("Dec 2012");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(dec2012.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
							strTitle = RegExp.$1;
							strContent = RegExp.$3;
							twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
							strLink = RegExp.$1+RegExp.$2;
							html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
							html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '</table></td></tr>';
				html += '</table></td>';
				html += '<td width="30"><img src="images/spacer.gif"></td>';
				html += '<td valign="top">';
				html += '<table border="0" cellpadding="0" cellspacing="0">';
				html += '<tr><td width="360" valign="top" class="outerFrame" bgcolor="#132436">';
				html += '<table width="360" border="0" cellpadding="0" cellspacing="0" class="innerFrame" id="list">';
				html += '<tr><td class="listBlueTitle" style="background-image:url(images/box-bg.jpg); background-repeat:repeat-x">2011</td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div17\');changeimage(\'toggleimg17\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg17" width="11" height="9" border="0" id="toggleimg17"/>&nbsp;&nbsp;<span style="color:#666666">January</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div17" style="display:none">';
				var jan2011=new RegExp("Jan 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(jan2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div18\');changeimage(\'toggleimg18\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg18" width="11" height="9" border="0" id="toggleimg18"/>&nbsp;&nbsp;<span style="color:#666666">February</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div18" style="display:none">';
				var feb2011=new RegExp("Feb 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(feb2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div19\');changeimage(\'toggleimg19\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg19" width="11" height="9" border="0" id="toggleimg19"/>&nbsp;&nbsp;<span style="color:#666666">March</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div19" style="display:none">';
				var mar2011=new RegExp("Mar 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(mar2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div20\');changeimage(\'toggleimg20\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg20" width="11" height="9" border="0" id="toggleimg20"/>&nbsp;&nbsp;<span style="color:#666666">April</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div20" style="display:none">';
				var apr2011=new RegExp("Apr 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(apr2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div21\');changeimage(\'toggleimg21\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg21" width="11" height="9" border="0" id="toggleimg21"/>&nbsp;&nbsp;<span style="color:#666666">May</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div21" style="display:none">';
				var may2011=new RegExp("May 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(may2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div22\');changeimage(\'toggleimg22\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg22" width="11" height="9" border="0" id="toggleimg22"/>&nbsp;&nbsp;<span style="color:#666666">June</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div22" style="display:none">';
				var jun2011=new RegExp("Jun 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(jun2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div23\');changeimage(\'toggleimg23\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg23" width="11" height="9" border="0" id="toggleimg23"/>&nbsp;&nbsp;<span style="color:#666666">July</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div23" style="display:none">';
				var jul2011=new RegExp("Jul 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(jul2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div24\');changeimage(\'toggleimg24\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg24" width="11" height="9" border="0" id="toggleimg24"/>&nbsp;&nbsp;<span style="color:#666666">August</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div24" style="display:none">';
				var aug2011=new RegExp("Aug 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(aug2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div25\');changeimage(\'toggleimg25\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg25" width="11" height="9" border="0" id="toggleimg25"/>&nbsp;&nbsp;<span style="color:#666666">September</span></a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div25" style="display:none">';
				var sep2011=new RegExp("Sep 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(sep2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div26\');changeimage(\'toggleimg26\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg26" width="11" height="9" border="0" id="toggleimg26"/>&nbsp;&nbsp;October</a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div26" style="display:none">';
				var oct2011=new RegExp("Oct 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(oct2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div27\');changeimage(\'toggleimg27\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg27" width="11" height="9" border="0" id="toggleimg27"/>&nbsp;&nbsp;November</a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div27" style="display:none">';
				var nov2011=new RegExp("Nov 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(nov2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '<tr><td class="listGrayText"><a style="cursor:pointer" class="effect5" onClick="javascript:toggle(\'div28\');changeimage(\'toggleimg28\', \'images/plus.gif\', \'images/minus.gif\');"><img src="images/plus.gif" name="toggleimg28" width="11" height="9" border="0" id="toggleimg28"/>&nbsp;&nbsp;December</a></td></tr>';
				html += '<tr><td style="padding-left:13px"><table width="330" border="0" cellpadding="2" cellspacing="0" id="div28" style="display:none">';
				var dec2011=new RegExp("Dec 2011");
				for(var i=0;i<json.length;i++) {
					var twitter = json[i];
					if(dec2011.test(twitter.text)==true) {
						var strTitle
						var strContent
						var strLink
						twitter.text.match(/(([^\s]*\s){5})(.*)(http:[\S]+[\s])(.*)/);
						strTitle = RegExp.$1;
						strContent = RegExp.$3;
						twitter.text.match(/(mc\/)([\S]+[^,.\s])/);
						strLink = RegExp.$1+RegExp.$2;
						html += '<tr><td><div><img src="images/ico_pdf.gif" width="16" height="12"> ';
						html += '<a href="'+strLink+'" target="_blank" class="effect8">'+strTitle+'</a>';			
						html += '</div></td></tr>';
						html += '<tr><td height="9" valign="middle" background="images/dot1.gif" style="background-repeat:repeat-x; background-position:center"></td></tr>';
					}
					
				}
				html += '</table></td></tr>';
				html += '</table></td></tr>';
				html += '</table></td></tr>';
				html += '</table>';
				update.innerHTML += html;

		}
	};
	new Twitter.Ajax(url,parameters).request();
};

/**
 * formats the twitter date into a js date object'
 * @createdOn: the date returned from twitter
 */
Twitter.CreatedOn = function(createdOn) {
	var parts = createdOn.split(" ");
	parts[4] = "UTC" + parts[4];
	return (new Date(parts.join(" "))).getTime();
};

/**
 *
 */
Twitter.TimePhrase = function(ms) {
	var seconds = ms/1000;
	//correct seconds if less than 1
	//for pc clocks slower than twitter server
	if(seconds < 1) {
		seconds = 1;
	}
	//less than 1 minute
	if(seconds < 60) {
		return "less than " + seconds + " seconds ago";
	}
	//less than 1 hour
	else if(seconds < 3600) {
		var minutes = Math.round(seconds/60);
		if(minutes == 1) {
			return minutes + " minute ago";
		}
		else {
			return minutes + " minutes ago";
		}
	}
	//less than 1 day ago
	else if(seconds < 86400) {
		var hours = Math.round(seconds/3600);
		if(hours == 1) {
			return "about " + hours + " hour ago";
		}
		else {
			return "about " + hours + " hours ago";
		}
	}
	//more than 1 day ago
	else {
		var days = Math.round(seconds/86400);
		if(days == 1) {
			return days + " day ago";
		}
		else {
			return days + " days ago";
		}
	}
};

/**
 *	Twitter ajax object
 *	@sender : either a url for get, form element for post, or javascript object {key:"value"} for post
 *	NOTE: 	if you set sender as a javascript object you must set the action key of parameters {action:"someurl.php"}
 *			also if you set the sender as a form element you must set the action of the form <form action="someurl.php">
 *	@parameters : all the settings for the request
 *		method - sets the method of the request either get or post {method:"get"}, set to get by default
 *		action - the url to send the request to if sender is a javascript object
 *		update - the id of the element to be updated with the response text {update:"elementToUpdate"}
 *		async - sets the request as asyncronous {async:true} or not {async:false}, set to true by default
 *		onComplete - 	accepts a function as an argument that will be executed when the request is completed 
 *						{onComplete:function(response){alert("done!");}}
 *			- the function returns an object (response) that has 1 property
 *				1.) text - holds the responseText.
 *		onFailure - function that will execute if the request fails {onFailure:function(response){alert("failed!");}}
 *			- the function returns an object (response) that has 2 properties
 *				1.) text - holds the responseText
 *				2.) status - holds the status number of the request
 */
Twitter.Ajax = function(sender,parameters) {
	this.request = function() {
		var http = null;
		var method = (parameters.method == null) ? "get" : parameters.method;
		var async = (parameters.async == null) ? true : parameters.async;
		//Firefox,Opera 8.0+,Safari
		try{http = new XMLHttpRequest();}
		catch(e) {
			//Internet Explorer
			try{http = new ActiveXObject("Msxml2.XMLHTTP");}
			catch(e) {
				try{http = new ActiveXObject("Microsoft.XMLHTTP");}
				catch(e) {
					alert("Your browser does not support Ajax!");
					return false;
				}
			}
		}
		http.onreadystatechange = function(){_OnComplete(parameters.onComplete,parameters.onFailure,parameters.update,http)};
		if(typeof sender == "string") {
			http.open(method,sender,async);
			http.send(null);
		}
		else {
			var action = (sender.action == null) ? parameters.action : sender.action;
			var args = this.toQueryString(sender);
			http.open(method,action,async);
			http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			http.setRequestHeader("Content-length",parameters.length);
			if(!document.all){http.setRequestHeader("Connection","close");}
			http.send(args);
		}
	}
	
	this.toQueryString = function(object) {
		var str = "";
		var count = 0;
		if(object.length) {
			for(var i=0;i<object.length;i++) {
				//filter out ASP.Net system elements
				var sysElem = (	object[i].name == null ||
								object[i].name == "__EVENTTARGET" ||
								object[i].name == "__EVENTARGUMENT" ||
								object[i].name == "__VIEWSTATE");
				if(!sysElem) {
					if(count == 0) {
						str += object[i].name + "=" + encodeURIComponent(object[i].value);
					}
					else {
						str += "&" + object[i].name + "=" + encodeURIComponent(object[i].value);
					}
					count++;
				}
			}
		}
		else {
			for(key in object) {
				if(count == 0) {
					str += key + "=" + encodeURIComponent(object[key]);
				}
				else {
					str += "&" + key + "=" + encodeURIComponent(object[key]);
				}
				count++;
			}
		}
		return str;
	}
}

function _OnComplete(fnComplete,fnFailure,update,http) {
	if(http.readyState == 4) {
		if(http.status == 200) {
			if(fnComplete){fnComplete({text:http.responseText});}
			if(update) {
				if(typeof update == "string")
					update = document.getElementById(update);
				update.innerHTML = http.responseText;
			}
		}
		else {
			if(fnFailure){fnFailure({text:http.responseText,status:http.status});}
		}
	}
}
