/* JUITTER 1.0.0 - 22/07/2009 - http://juitter.com BY RODRIGO FANTE - http://rodrigofante.com ** jQuery 1.2.* or higher required Juitter is distributed under the MIT License Read more about the MIT License --> http://www.opensource.org/licenses/mit-license.php This script is just a beta test version, download and use it at your own risk. The Juitter developer shall have no responsability for data loss or damage of any kind by using this script. */ (function($) { var conf = {}, // JUITTER DEFAULT CONFIGURATION ======================== // YOU CAN CHANGE THE DYNAMIC VARS ON CALLING THE start method, see the system.js for more information about it. numMSG = 7; // set the number of messages to be show containerDiv="juitterContainer", // //Set a place holder DIV which will receive the list of tweets example
loadMSG="Loading messages...", // Loading message, if you want to show an image, fill it with "image/gif" and go to the next variable to set which image you want to use on imgName="loader.gif", // Loading image, to enable it, go to the loadMSG var above and change it to "image/gif" readMore="", // read more message to be show after the tweet content nameUser="image" // insert "image" to show avatar of "text" to show the name of the user that sent the tweet live:"live-20", //optional, disabled by default, the number after "live-" indicates the time in seconds to wait before request the Twitter API for updates, I do not recommend to use less than 60 seconds. // end of configuration // some global vars aURL="";msgNb=1; var mode,param,time,lang,contDiv,loadMSG,gifName,numMSG,readMore,fromID,ultID,filterWords; var running=false; // Twitter API Urls apifMultipleUSER = "http://search.twitter.com/search.json?from%3A"; apifUSER = "http://search.twitter.com/search.json?q=from%3A"; apitMultipleUSER = "http://search.twitter.com/search.json?to%3A"; apitUSER = "http://search.twitter.com/search.json?q=to%3A"; apiSEARCH = "http://search.twitter.com/search.json?q="; $.Juitter = { registerVar: function(opt){ mode=opt.searchType; param=opt.searchObject; timer=opt.live; lang=opt.lang?opt.lang:""; contDiv=opt.placeHolder?opt.placeHolder:containerDiv; loadMSG=opt.loadMSG?opt.loadMSG:loadMSG; gifName=opt.imgName?opt.imgName:imgName; numMSG=opt.total?opt.total:numMSG; readMore=opt.readMore?opt.readMore:readMore; fromID=opt.nameUser?opt.nameUser:nameUser; filterWords=opt.filter; openLink=opt.openExternalLinks?"target='_blank'":""; }, start: function(opt) { ultID=0; if($("#"+contDiv)){ this.registerVar(opt); // show the load message this.loading(); // create the URL to be request at the Twitter API aURL = this.createURL(); // query the twitter API and create the tweets list this.conectaTwitter(1); // if live mode is enabled, schedule the next twitter API query if(timer!=undefined&&!running) this.temporizador(); } }, update: function(){ this.conectaTwitter(2); if(timer!=undefined) this.temporizador(); }, loading: function(){ if(loadMSG=="image/gif"){ $("") .attr('src', gifName) .appendTo("#"+contDiv); } else $("#"+contDiv).html(loadMSG); }, createURL: function(){ var url = ""; jlg=lang.length>0?"&lang="+lang:jlg=""; var seachMult = param.search(/,/); if(seachMult>0) param = "&ors="+param.replace(/,/g,"+"); if(mode=="fromUser" && seachMult<=0) url=apifUSER+param; else if(mode=="fromUser" && seachMult>=0) url=apifMultipleUSER+param; else if(mode=="toUser" && seachMult<=0) url=apitUSER+param; else if(mode=="toUser" && seachMult>=0) url=apitMultipleUSER+param; else if(mode=="searchWord") url=apiSEARCH+param+jlg; url += "&rpp="+numMSG; return url; }, delRegister: function(){ // remove the oldest entry on the tweets list if(msgNb>=numMSG){ $(".twittLI").each( function(o,elemLI){ if(o>=numMSG) $(this).hide("slow"); } ); } }, conectaTwitter: function(e){ // query the twitter api and create the tweets list $.ajax({ url: aURL, type: 'GET', dataType: 'jsonp', timeout: 1000, error: function(){ $("#"+contDiv).html("fail#"); }, success: function(json){ if(e==1) $("#"+contDiv).html(""); $.each(json.results,function(i,item) { if(e==1 || (i