/* * (c) 2011 Chad Etzel - TweetGrid.com * This file may not be reproduced without the express written permission of the author. */ var glb_settings=[];function trim(stringToTrim){return stringToTrim.replace(/^\s+|\s+$/g,"");}function ltrim(stringToTrim){return stringToTrim.replace(/^\s+/,"");}function rtrim(stringToTrim){return stringToTrim.replace(/\s+$/,"");}function __d(msg){if(document.getElementById("jtw_debug")){document.getElementById("jtw_debug").innerHTML=document.getElementById("jtw_debug").innerHTML+"
"+msg;document.getElementById("jtw_debug").scrollTop=document.getElementById("jtw_debug").scrollHeight;}}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');str=str.replace(/\$/g,'%24');return str;}function glb_init(){for(var i=1;i<=10;i++){glb_settings[i]={};glb_settings[i].search="-";glb_settings[i].lastsearch="-";glb_settings[i].timer=0;glb_settings[i].timeout=9;glb_settings[i].timeout_min=9;glb_settings[i].timeout_max=30;glb_settings[i].rpp=50;glb_settings[i].lang='all';glb_settings[i].lastID=0;glb_settings[i].id=i;glb_settings[i].max_tweets=200;glb_settings[i].type='search';glb_settings[i].interarrays=new Array(10);glb_settings[i].intermailbox=0;glb_settings[i].intermailbox_expected=0;glb_settings[i].intermailbox_idx=0;}}function getTweets(i){if(get_("timer",i)==-1){return;}var rand=Math.floor(Math.random()*3000000);var url="http://search.twitter.com/search.json?q="+jtw_urlencode(glb_settings[i].search)+"&rpp="+glb_settings[i].rpp.toString()+"&since_id="+glb_settings[i].lastID+"&lang="+glb_settings[i].lang+"&rand="+rand+"&callback=?";$.getJSON(url,function(data){handleTweets(i,data);});}function handleTweets(i,arr){var newdiv;var gridbox=$('#jtw_grid_t'+i.toString());var newtweetdivs="";var numnew=arr.results.length;for(j=0;j0&&arr.results[0].id>get_("lastID",i)){glb_settings[i].lastID=arr.results[0].id;glb_settings[i].timeout=glb_settings[i].timeout_min;}else{glb_settings[i].timeout=Math.min(glb_settings[i].timeout_max,Math.floor(glb_settings[i].timeout*1.15+1));gridbox.find('.jtw_new_tweet').removeClass('jtw_new_tweet').addClass('jtw_old_tweet');cleanup(i);return;}handleTweets_bottom(i,numnew,newtweetdivs);}function handleTweets_bottom(i,numnew,newtweetdivs){var gridbox=$('#jtw_grid_t'+i.toString());newdiv='
'+newtweetdivs+"
";gridbox.find('.jtw_new_tweet').removeClass('jtw_new_tweet').addClass('jtw_old_tweet');gridbox.prepend(newdiv);if(numnew<30){gridbox.find('.newtweetblock:first').slideDown("slow",function(){removetweets(i);});}else{gridbox.find('.newtweetblock:first').show();removetweets(i);}cleanup(i);}function cleanup(i){set_("lastsearch",i,get_("search",i));restarttimer(i);}function restarttimer(i){clearTimeout(get_("timer",i));if(get_("timeout",i)>0){var newtimeout=Math.floor(get_("timeout",i)*1000+Math.floor(Math.random()*2000));set_("timer",i,setTimeout("getdemux("+i.toString()+");",newtimeout));}}function getdemux(i){var type=get_("type",i);if(get_("type",i)=="search"){getTweets(i);}else if(get_("type",i)=="group"){jtw_multisearch(i,get_("search",i));}else if(type=="friends"){getfriends(i);}else if(type=="dm"){getdms(i);}else if(type=="list"){getlistTweets(i);}else{}restarttimer(i);}function format_tweetdiv(res,i){var user=res.from_user;var tweet=res.text;var tstamp=new Date(res.created_at);tstamp=tstamp.format('D M d - g:i:s a');var img=res.profile_image_url;var tid=res.id_str;return format_tweet_bottom(i,user,tweet,tstamp,img,tid,"search");}function format_tweet_bottom(i,user,tweet,tstamp,img,tid,type){var ret="";var newclass="jtw_new_tweet";var otherclass="";if((get_("lastsearch",i)=='-'&&(get_("type",i)=="search"||get_("type",i)=="group"))||get_("lastID",i)==0){newclass="";}if(getiuser(i)!=''&&type!='search'){otherclass="jtw_"+type+"_class";if(type=="friends"&&tweet.indexOf(getiuser(i))>=0){otherclass=" jtw_mention_class";}}var re=new RegExp("(([a-zA-Z]+:\/\/)([a-zA-Z0-9][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");tweet=tweet.replace(re,'@$1');re=/\$([a-zA-Z]+)/g;tweet=tweet.replace(re,'$$$1');ret=ret+'
';ret=ret+'';ret=ret+''+user+': '+tweet+'
';if(!($.browser.msie)){ret=ret+'
'+tstamp+'
';}else{ret=ret+'
'+tstamp+'
';ret=ret+'
';}ret=ret+' Reply';if(type!="dm"){ret=ret+' Retweet';}if(type!="dm"){ret=ret+' Favorite';}ret=ret+' Email Tweet';if(type!="dm"){ret=ret+' View Original';}ret=ret+' Email Tweet';ret=ret+'
';re=new RegExp("(http://twitpic.com/)([0-9a-zA-Z]*)");var m=re.exec(tweet);if(!m||m.length==0||m[2]=="photos"||m[2]=="photo"||m[2]=="tag"){}else{ret=ret+'
';}re=new RegExp("(http://yfrog.com/)([0-9a-zA-Z]*)");var m=re.exec(tweet);if(!m||m.length==0){}else{ret=ret+'
';}re=/(tweetphoto.com\/)([0-9a-zA-Z]+)\b/;var m=re.exec(tweet);if(!m||m.length==0||m[2]=="apps"||m[2]=="widget"||m[2]=="index"){}else{ret=ret+'
';}re=new RegExp("(http://pic.gd/)([0-9a-zA-Z]*)");var m=re.exec(tweet);if(!m||m.length==0||m[2]=="photos"||m[2]=="photo"||m[2]=="tag"){}else{ret=ret+'
';}re=new RegExp("(http://flic.kr/p/)([0-9a-zA-Z]*)");var m=re.exec(tweet);if(!m||m.length==0||m[2]=="photos"||m[2]=="photo"||m[2]=="tag"){}else{ret=ret+'
';}re=new RegExp("(http://snaptweet.com/)([0-9a-zA-Z]*)");var m=re.exec(tweet);if(!m||m.length==0||m[2]=="photos"||m[2]=="photo"||m[2]=="tag"){}else{ret=ret+'
';}re=new RegExp("(http://jazzychad.com/p/)([0-9a-zA-Z]*)");var m=re.exec(tweet);if(!m||m.length==0||m[2]=="photos"||m[2]=="photo"||m[2]=="tag"){}else{ret=ret+'
';}re=new RegExp("(http://www.floodgap.com/iv/)([0-9a-zA-Z]*)");var m=re.exec(tweet);if(!m||m.length==0||m[2]=="photos"||m[2]=="photo"||m[2]=="tag"){}else{ret=ret+'
';}ret=ret+'
';return ret;}function removetweets(i){var objs=$('#jtw_grid'+i.toString()).find('.jtw_tweet_class:gt('+glb_settings[i].max_tweets.toString()+')');var flag=1;var safety=0;objs.unbind('mouseenter').unbind('mouseleave');objs.remove();while(flag){if($('#jtw_grid'+i.toString()+' .newtweetblock:last').children().length==0){$('#jtw_grid'+i.toString()+' .newtweetblock:last').remove();safety+=1;if(safety==10){break;}}else{flag=0;}}}function init_searches(){for(i=1;i<=num_boxes;i++){if($('#tbox'+i.toString()).val().toLowerCase().substring(0,5)=="list:"){var list=$('#tbox'+i.toString()).val().toLowerCase().substring(5);$('#tbox'+i.toString()).val("");$('#jtw_grid'+i.toString()).find('.listnametxt').val(list);$('#jtw_grid'+i.toString()).find('.listtxt').click();$('#jtw_grid'+i.toString()).find('.gobutton').click();$('#jtw_grid'+i.toString()).find('.boxctrloptions').slideUp('slow');}else if($('#tbox'+i.toString()).val()!=''){changesearch(i);}}}function set_(type,i,v){glb_settings[i][type]=v;}function get_(type,i){return glb_settings[i][type];}function incr_(type,i){glb_settings[i][type]+=1;}function decr_(type,i){glb_settings[i][type]-=1;}function gridready(){glb_init();boxctrlinit();setTimeout('wau();',15000);init_searches();$(window).blur(function(){clearTimeout(doadtimer);});$(window).focus(function(){doad();});setTimeout('doad();',3000);oauth_restore_users();session_keepalive();}function boxctrlinit(){for(var j=1;j<=num_boxes;j++){$('#jtw_grid'+j.toString()).prepend($('#boxctrltemplate').html());}for(var j=0;j'+titlestr+'').addClass('jtw_'+type+'_class').show();set_("lastID",i,0);if(type=="friends"||type=="dm"){var newtimeout=Math.max(Math.floor(getirefresh(i)),2);doad();}else{var newtimeout=Math.max(Math.floor(getilistrefresh(i)),2);}set_("timeout",i,newtimeout*60);set_("max_tweets",i,100);if(parseInt(newtimeout)==0){set_("timeout",i,1000000000000);clearTimeout(get_("timer",i));set_("timer",i,-1);return;}}else{$('#jtw_grid_h'+i.toString()).find('.tsearch').show();$('#jtw_grid_ht'+i.toString()).hide();newtimeout=getisearchrefresh(i);set_("max_tweets",i,200);set_("rpp",i,100);if(newtimeout<9){set_("timeout_min",i,9);set_("timeout_max",i,30);}else{set_("timeout_min",i,newtimeout);set_("timeout_max",i,Math.max(30,newtimeout*2));}if(get_("search",i)!='-'&&get_("search",i)!=''){set_("timeout",i,get_("timeout_min",i));}}if(type!=curtype){$('#jtw_grid_t'+i.toString()).empty();}getdemux(i);}function getiuser(i){return $('#jtw_grid'+i.toString()).find('.select_usernames').val();}function getilist(i){return $('#jtw_grid'+i.toString()).find('.listnametxt').val();}function getipass(i){return'oauth';}function getirefresh(i){return $('#jtw_grid'+i.toString()).find('.refresh').val();}function getilistrefresh(i){return $('#jtw_grid'+i.toString()).find('.listrefresh').val();}function getisearchrefresh(i){return $('#jtw_grid'+i.toString()).find('.searchrefresh').val();}var load_group_js=function(i,k,search,callback){var rand=Math.floor(Math.random()*3000000);var url="http://search.twitter.com/search.json?q="+jtw_urlencode(search)+"&rpp="+glb_settings[i].rpp.toString()+"&since_id="+glb_settings[i].lastID+"&rand="+rand+"&callback=?";$.getJSON(url,function(data){callback(i,k,data);});};function intercallback_gen(i,k,arr){__d("+idx is "+i+" - k is "+k);glb_settings[i].interarrays[k]=arr;incr_("intermailbox",i);}var jtw_sort_tstamp=function(arr1,arr2){__d("sorting by tstamp");var retarr=new Array(1);var _i=0;var _i1=0;var _i1max=arr1.results.length;__d("i1max "+_i1max);var _i2=0;var _i2max=arr2.results.length;__d("i2max "+_i2max);var broke=0;if(!_i1max&&_i2max){return arr2;}if(_i1max&&!_i2max){return arr1;}retarr.results=new Array(Math.min(100,_i1max+_i2max));if(!(_i1max||_i2max)){return retarr;}for(_i=0;_i<100;_i++){var d1_ms=Date.parse(arr1.results[_i1].created_at);var d2_ms=Date.parse(arr2.results[_i2].created_at);if(d1_ms>d2_ms){retarr.results[_i]=arr1.results[_i1];_i1++;if(_i1==_i1max){__d("1 broke. _i2 is "+_i2);_i++;broke=1;break;}}else{retarr.results[_i]=arr2.results[_i2];_i2++;if(_i2==_i2max){__d("2 broke. _i1 is"+_i1+" _i is "+_i);broke=2;_i++;break;}}}if(broke==1){for(_i2=_i2;_i2<_i2max;_i2++){if(_i==100){break;}retarr.results[_i]=arr2.results[_i2];_i++;}}if(broke==2){for(_i1=_i1;_i1<_i1max;_i1++){if(_i==100){break;}retarr.results[_i]=arr1.results[_i1];_i++;}}return retarr;};var jtw_multisearch=function(i,names){var _i;var _j;var _k;var retarr;if(names.toLowerCase().substring(0,6)=="group:"){names=names.substring(6);}var namesarr=names.split(',');if(namesarr.length>30){window.alert("You can only have up to 30 people per group. Please try again.");return;}var searcharr=new Array(10);_i=0;_j=-1;while(_i-1){searcharr[_j]="from:"+searcharr[_j];}_j++;searcharr[_j]=trim(namesarr[_i]);_i++;if(_i>=namesarr.length)break;}searcharr[_j]=searcharr[_j]+" OR from:"+trim(namesarr[_i]);_i++;}searcharr[_j]="from:"+searcharr[_j];for(_k=0;_k<=_j;_k++){__d("-idx is "+_k);__d("search is "+searcharr[_k]);load_group_js(i,_k,searcharr[_k],intercallback_gen);set_("intercallback_idx",i,_k);}set_("intermailbox_expected",i,_j+1);set_("intermailbox",i,0);multisearch_lower_half(i);};var multisearch_lower_half=function(i){if(get_("intermailbox",i)!=get_("intermailbox_expected",i)){__d("mailbox not full yet");setTimeout("multisearch_lower_half("+i.toString()+");",1000+Math.floor(Math.random()*1000));return false;}if(get_("intercallback_idx",i)==0){__d(i+"intercallback was 0");handleTweets(i,glb_settings[i].interarrays[0]);return;}retarr=jtw_sort_tstamp(glb_settings[i].interarrays[0],glb_settings[i].interarrays[1]);for(_i=2;_i<=glb_settings[i].intercallback_idx;_i++){retarr=jtw_sort_tstamp(retarr,glb_settings[i].interarrays[_i]);}handleTweets(i,retarr);};function getfriends(i){doproxy(getiuser(i),getipass(i),"friends","",get_("lastID",i),i,handle_ns_tweets,showerror);}function getdms(i){doproxy(getiuser(i),getipass(i),"dms","",get_("lastID",i),i,handle_ns_tweets,showerror);}function getlistTweets(i){var list=getilist(i);var rand=Math.floor(Math.random()*3000000);var parts=list.split("/");var username=parts[0];var listname=parts[1];var since;if(get_("lastID",i)==0){since="";}else{since="&since_id="+get_("lastID",i);}var url="http://api.twitter.com/1/"+username+"/lists/"+listname+"/statuses.json?count=100"+since+"&rand="+rand+"&callback=?";$.getJSON(url,function(data){handle_ns_tweets(i,data);});}function doproxy(user,pass,type,msg,lastid,i,callback,errcallback){var req_type;if(type=="tweet"||type=="dodm"||type=="follow"){req_type="POST";}else{req_type="GET";}$.ajax({type:"POST",url:"./multi_proxy_grid_oauth.php5",data:"&username="+user+"&pass="+pass+"&type="+type+"&lastid="+lastid+"&msg="+msg+"&reqtype="+req_type,success:function(data){var arr=eval(data);if(arr[0].error){errcallback(i,arr[0].error);}else{callback(i,arr[0]);}}});}function showerror(i,err){errmsg_show(i,err);if(i&&err.toLowerCase().indexOf("could not authenticate you")>=0){clearTimeout(get_("timer",i));set_("timeout",i,0);set_("timer",i,-1);}}function handle_ns_tweets(i,arr){var newdiv;var gridbox=$('#jtw_grid_t'+i.toString());var newtweetdivs="";var numnew=arr.length;var type=get_("type",i);for(var j=0;j0&&arr[0].id>get_("lastID",i)){set_("lastID",i,arr[0].id);}else{gridbox.find('.jtw_new_tweet').removeClass('jtw_new_tweet').addClass('jtw_old_tweet');cleanup(i);return;}handleTweets_bottom(i,numnew,newtweetdivs);}