/* * (c) 2009 Chad Etzel - TweetGrid.com * This file may not be reproduced without the express written permission of the author. */ var tweetarr=[];var lastID=0;var revealtimer=-1;var searchtimer=-1;var resorttimer=-1;var displayed=0;var hovering=0;var glb_search;var max_tweets=1000;var colorarr=['#336600','#3300CC','#993300','#996600','#CC3300','#CC0099','#000000','#3366CC','#339999'];var colorptr=0;var glb_usercolors={};var tweets_to_display=1;var tweet_display_rate=1000;var tweet_display_rate_prev=1000;var tweet_display_effect=1;function _(val){return document.getElementById(val);}function jtw_urlencode(str){str=escape(str);str=str.replace(/\+/g,'%2B');str=str.replace(/%20/g,'+');str=str.replace(/\*/g,'%2A');str=str.replace(/\//g,'%2F');str=str.replace(/@/g,'%40');str=str.replace(/#/g,'%23');return str;}function formattweet(tweet){var m;var re=new RegExp("(([a-zA-Z]+:\/\/)([a-zA-Z][a-zA-Z0-9_\.-]*[a-zA-Z]{2,6})([a-zA-Z0-9~\#\/\._\?\&%-=]*[a-zA-Z0-9~\#\/_\?\&%-=]))","g");tweet=tweet.replace(re,'$1');re=new RegExp("@([a-zA-Z0-9_]+)","g");m=tweet.match(re);if(m){for(var i=0;i$1');re=new RegExp("(#[a-zA-Z0-9_]+)","g");tweet=tweet.replace(re,'$1');return tweet;}function getTweets(){var rand=Math.floor(Math.random()*3000000);var url="http://search.twitter.com/search.json?q="+jtw_urlencode(glb_search)+"&rpp="+glb_rpp.toString()+"&since_id="+lastID+"&rand="+rand+"&callback=?";if(glb_rpp<75){glb_rpp=75;}$.getJSON(url,handleTweets);}function handleTweets(arr){var re=new RegExp("(http://twitpic.com/)([0-9a-zA-Z]*)");var i;for(i=arr.results.length-1;i>=0;i--){if(arr.results[i].id<=lastID){continue;}var tweet=arr.results[i].text;var user=arr.results[i].from_user;var userimg=arr.results[i].profile_image_url;var tstamp=arr.results[i].created_at;var tid=arr.results[i].id;var dtstamp=new Date(tstamp);tstamp=dtstamp.format('g:i:s a');var infoobj={};infoobj.user=user;infoobj.tweet=tweet;infoobj.userimg=userimg;infoobj.tstamp=tstamp;infoobj.tid=tid;tweetarr.push(infoobj);}if(arr.results.length>0){lastID=arr.results[0].id;}}function revealtweet(){removetweets();if(tweetarr.length>0){var infoobj;var tweet;var user;var userimg;var tstamp;var tid;var doscroll;var hidestr;var re=new RegExp($('#tdiv_user').val(),"g");var color="#000";for(var idx=0;idxdocument.getElementById("room").scrollHeight-(25*tweets_to_display)-$('#room').height()){doscroll=1;}tweet=formattweet(tweet);updatemembercol2(user,'tweet');color=glb_usercolors[user];if(tweet_display_effect){hidestr='style="display:none;"';}$('#room').append('
'+tstamp+' '+user+': '+tweet+'
');var obj=$('.tweetwrap:last');if($('#tdiv_user').val()!=''){if(tweet.match(re)){obj.addClass('reply');}}displayed++;if(tweet_display_effect){obj.fadeIn('slow');}}if(doscroll)document.getElementById("room").scrollTop=document.getElementById("room").scrollHeight;$('#qlen').html(tweetarr.length);checkthrottle(tweetarr.length);}else{}}function checkthrottle(qlen){tweet_display_rate_prev=tweet_display_rate;if(qlen==0){tweet_display_effect=1;tweet_display_rate=1000;tweets_to_display=1;}else if(qlen>200){tweet_display_effect=0;tweet_display_rate=500;if(tweets_to_display<10){tweets_to_display=10;}}else if(qlen>150){tweet_display_effect=0;tweet_display_rate=500;if(tweets_to_display<7){tweets_to_display=7;}}else if(qlen>100){tweet_display_effect=0;tweet_display_rate=500;if(tweets_to_display<4){tweets_to_display=4;}}else if(qlen>60){tweet_display_effect=0;tweet_display_rate=500;if(tweets_to_display<2){tweets_to_display=2;}}else if(qlen>35){tweet_display_effect=0;tweet_display_rate=500;if(tweets_to_display<=1){tweets_to_display=1;}}changethrottle();}function changethrottle(){if(tweet_display_rate!=tweet_display_rate_prev){clearInterval(revealtimer);revealtimer=setInterval("revealtweet();",tweet_display_rate);}}function removetweets(){if(displayed>max_tweets){var diff=displayed-max_tweets;$('#room .tweetwrap:lt('+diff+')').remove();displayed=max_tweets;}}function updatemembercol(user,type){var obj=$('#membercol');if(obj.find('.'+user).length==0){obj.append('
'+user+' (0)
');}obj.find('.'+user+' .count').html((parseInt(obj.find('.'+user+' .count').html())+1).toString());return;}function updatemembercol2(user,type){var obj=$('#membertab');if(obj.find('.'+user).length==0){if(type=='reply'){return;}var color=colorarr[colorptr];glb_usercolors[user]=color;obj.find('tbody').append('00'+user+'');colorptr=(colorptr+1)%colorarr.length;}if(type=='tweet'){obj.find('.'+user+' .count').html((parseInt(obj.find('.'+user+' .count').html())+1).toString());}else if(type=='reply'){obj.find('.'+user+' .ats').html((parseInt(obj.find('.'+user+' .ats').html())+1).toString());}return;}function changesearch(){stoptimers();$('#room').empty();$('#membertab tr').not(':first').remove();glb_search=$('#searchbox').val();var re=new RegExp("#[a-zA-Z0-9_-]","g");if(glb_search.match(re)&&glb_search.indexOf(' ')==-1){$('#tdiv_hashtag').val(glb_search);}else{$('#tdiv_hashtag').val('#');}re=new RegExp("(.*)(near:([a-z0-9, ]*)[ ]*within:([0-9kmi]*))(.*)");var m=re.exec(glb_search.toLowerCase());if(m&&m[3]&&m[4]){var location=m[3];var radius=m[4];var url="http://pipes.yahoo.com/pipes/pipe.run?RadiusTxt="+radius+"&Zip="+jtw_urlencode(location)+"&_id=27c113188a1f89baab07f2d133bc3557&_render=json&_callback=?";$.getJSON(url,function(data){var newsearch=m[1]+m[5]+" "+data.value.items[0].geostring;glb_search=newsearch;if(glb_search==''){glb_rpp=20;}else{glb_rpp=25;}tweetarr=[];lastID=0;displayed=0;tweet_display_effect=1;tweet_display_rate=1000;tweets_to_display=1;starttimers();});}else{if(glb_search==''){glb_rpp=20;}else{glb_rpp=25;}tweetarr=[];lastID=0;displayed=0;tweet_display_effect=1;tweet_display_rate=1000;tweets_to_display=1;starttimers();}}function stoptimers(){clearInterval(revealtimer);clearInterval(searchtimer);clearInterval(resorttimer);revealtimer=-1;searchtimer=-1;resorttimer=-1;$('#apause').stop();$('#aresume').stop();$('#apause').fadeOut("slow",function(){$('#aresume').fadeIn("slow");});}function starttimers(){if(revealtimer==-1&&searchtimer==-1){getTweets();revealtweet();searchtimer=setInterval('getTweets();',10000);revealtimer=setInterval("revealtweet();",1000);resorttimer=setInterval("resortmembertab();",20000);$('#apause').stop();$('#aresume').stop();$('#aresume').fadeOut("slow",function(){$('#apause').fadeIn("slow");});}}function updatecharsnew(){value=$('#tdiv_tweet').val();if(_('tdiv_hashtag').value!=''&&_('tdiv_hashtag').value!='#'){document.getElementById("charcount").innerHTML=140-value.length-_('tdiv_hashtag').value.length-1;}else{document.getElementById("charcount").innerHTML=140-value.length;}}function jtw_tweetescape(str){str=str.replace(/&/,'%26');str=str.replace(/\+/g,'%2B');str=str.replace(/%20/g,'+');str=str.replace(/\*/g,'%2A');str=str.replace(/\//g,'%2F');str=str.replace(/@/g,'%40');str=str.replace(/#/g,'%23');return str;}function dotweetnew_post(){var tweet=_('tdiv_tweet').value;var tag=_('tdiv_hashtag').value;if(tag!=''&&tag!='#'){if(tweet.indexOf(tag)==-1){tweet=tweet+' '+tag;}}var user=_('tdiv_user').value;var pass=_('tdiv_pass').value;var tid=_('tdiv_tid').value;$.ajax({type:"POST",url:"./js/tweet_post.js",data:'tweet='+jtw_tweetescape(tweet)+'&user='+user+'&pass='+pass+'&tid='+tid+'&callback=tweeted',success:function(data){eval(data);}});pageTracker._trackPageview('/tweet');}function tweeted(val){if(val=="success"){_('tdiv_tweet').value='';_('tdiv_tid').value="0";_('charcount').innerHTML='140';}else if(val=="err:userpass"){window.alert("Wrong Username/Password");}else if(val=="err:generic"){window.alert("Oops! Try again!");}else{window.alert("Oops! Try again!");}}function doreply(name,tid){_('tdiv_tweet').value='@'+name+' ';_('tdiv_tid').value=tid.toString();_('tdiv_tweet').focus();pageTracker._trackPageview('/tweet_reply');}function resortmembertab(){var obj=$('#membertab');obj.trigger("update");obj.trigger("reSort");}function irc_ready(){$('#searchbox').focus();if(location.hash){glb_search=location.hash;$('#tdiv_hashtag').val(location.hash);}$("#membertab").tablesorter({sortList:[[2,0]]});if(glb_search){$('#searchbox').val(glb_search);var re=new RegExp("(#[a-zA-Z0-9_]+)","g");if(glb_search.match(re)){$('#tdiv_hashtag').val(glb_search);}changesearch();}}