var twitterContainers = new Array();

function OnWebservicesChange(obj)
{
  SetShowElement("formelement_values_webservices_keywords", obj.value == "twitsearch");
  SetShowElement("formelement_values_webservices_count", (obj.value == "twitsearch") || (obj.value == "twitlist") || (obj.value == "twituser"));
  SetShowElement("formelement_values_webservices_userid", (obj.value == "twitlist") || (obj.value == "twituser"));
  SetShowElement("formelement_values_webservices_listid", obj.value == "twitlist");
}


function OnTwitterKeyDown(textarea, event)
{

  if(window.event) // IE
    key = event.keyCode
  else if(event.which) // Netscape/Firefox/Opera
    key = event.which;

  return (textarea.value.length < 140) || (key == 8);
}

function OnTwitterChange(textarea, counterid)
{
  document.getElementById(counterid).innerHTML = (140 - textarea.value.length);
}

function TwitterSearchTweets(url, divid)
{
  scriptObj = document.createElement("script");
	scriptObj.setAttribute("type","text/javascript");
	scriptObj.setAttribute("src", url + "&callback=onTwitterLoaded");
  onTwitterLoaded = function(tweets)
  {
    TwitterProcessSearchResults(tweets, divid);
  };
	document.getElementsByTagName("head")[0].appendChild(scriptObj);
}

function TwitterProcessSearchResults(tweets, divid)
{
	result = "";
	for (i = 0; i < tweets.results.length; i++)
	{
		var tweet = tweets.results[i];
    var date = new Date(tweet.created_at);

		tweet.text = tweet.text.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g,
                                    function(url)
                                    {
                                      return url.link(url);
                                    }
                                   );

		tweet.text = tweet.text.replace(/[@]+[A-Za-z0-9-_]+/g,
                                    function(u)
                                    {
                                      var username = u.replace("@","");
                                      return u.link("http://twitter.com/"+username);
                                    }
                                   );

		tweet.text = tweet.text.replace(/[#]+[A-Za-z0-9-_]+/g,
                                    function(t)
                                    {
                                      var tag = t.replace("#","%23");
                                      return t.link("http://search.twitter.com/search?q="+tag);
                                    }
                                   );

		var userLinkAttr = "href='http://twitter.com/" + tweet.from_user + "' onclick='window.open(this.href); return false;'";

		result += "<div class='twitter' style='clear: both; padding-bottom: 5px;'>";
		result += "<div class='twitter_image' style='float: left; margin-right: 5px;'>";
		result += "<a " + userLinkAttr + "><img src='" + tweet.profile_image_url + "' alt='" + tweet.from_user + "' style='width: 32px; height: 32px; margin-top: 6px' /></a>";
    result += "</div>";
    result += "<div class='twitter_text'>"
		result += "<a " + userLinkAttr + ">" + tweet.from_user + "</a>: " + tweet.text;
    result += "</div>";
    result += "<a class='twitter_date' href='http://twitter.com/" + tweet.from_user + "/statuses/" + tweet.id + "' onclick='window.open(this.href); return false;'>";
		result += date.toISODateTimeString();
    result += "</a>";
    result += "</div>";

    result += "</div>";
	}
	document.getElementById(divid).innerHTML = result;
}


function TwitterListTweets(url)
{
  scriptObj = document.createElement("script");
	scriptObj.setAttribute("type","text/javascript");
	scriptObj.setAttribute("src", url + "&callback=TwitterProcessListedTweets");
	document.getElementsByTagName("head")[0].appendChild(scriptObj);
}


function TwitterProcessListedTweets(tweets)
{
	result = "";
	for (i = 0; i < tweets.length; i++)
	{
		var tweet = tweets[i];
    var date = new Date(tweet.created_at);

		tweet.text = tweet.text.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g,
                                    function(url)
                                    {
                                      return url.link(url);
                                    }
                                   );

		tweet.text = tweet.text.replace(/[@]+[A-Za-z0-9-_]+/g,
                                    function(u)
                                    {
                                      var username = u.replace("@","");
                                      return u.link("http://twitter.com/"+username);
                                    }
                                   );

		tweet.text = tweet.text.replace(/[#]+[A-Za-z0-9-_]+/g,
                                    function(t)
                                    {
                                      var tag = t.replace("#","%23");
                                      return t.link("http://search.twitter.com/search?q="+tag);
                                    }
                                   );

		var userLinkAttr = "href='http://twitter.com/" + tweet.user.screen_name + "' onclick='window.open(this.href); return false;'";

		result += "<div class='twitter' style='clear: both; padding-bottom: 5px;'>";
		result += "<div class='twitter_image' style='float: left; margin-right: 5px;'>";
		result += "<a " + userLinkAttr + "><img src='" + tweet.user.profile_image_url + "' alt='" + tweet.user.screen_name + "' style='width: 32px; height: 32px; margin-top: 6px' /></a>";
    result += "</div>";
    result += "<div class='twitter_text'>"
		result += "<a " + userLinkAttr + ">" + tweet.user.screen_name + "</a>: " + tweet.text;
    result += "</div>";
    result += "<a class='twitter_date' href='http://twitter.com/" + tweet.user.screen_name + "/statuses/" + tweet.id + "' onclick='window.open(this.href); return false;'>";
		result += date.toISODateTimeString();
    result += "</a>";
    result += "</div>";

    result += "</div>";
	}
	document.getElementById("twitter_update_list").innerHTML = result;

}
