/**
 * remy sharp / http://remysharp.com
 * Twitter / @rem
 * http://remysharp.com/2007/05/18/add-twitter-to-your-blog-step-by-step/
 *
 * @params
 *   cssIdOfContainer: e.g. twitters
 *   options: 
 *       {
 *           id: {String} username,
 *           count: {Int} 1-20, defaults to 1 - max limit 200
 *           prefix: {String} '%name% said', defaults to blank
 *           clearContents: {Boolean} true, removes contents of element specified in cssIdOfContainer, defaults to true
 *           ignoreReplies: {Boolean}, skips over tweets starting with '@', defaults to false
 *           template: {String} HTML template to use for LI element (see URL above for examples), defaults to predefined template
 *           bigTemplate: {Boolean} bigger default template - similar to twitter's rendered view
 *           enableLinks: {Boolean} linkifies text, defaults to true,
 *           newwindow {Boolean} opens links in new window, defaults to false
 *           timeout: {Int} How long before triggering onTimeout, defaults to 10 seconds if onTimeout is set
 *           onTimeoutCancel: {Boolean} Completely cancel twitter call if timedout, defaults to false
 *           onTimeout: {Function} Function to run when the timeout occurs. Function is bound to element specified with 
 *           cssIdOfContainer (i.e. 'this' keyword)
 *           includeRT: {Boolean} Whether to include retweets, defaults to false
 *           callback: {Function} Callback function once the render is complete, doesn't fire on timeout
 *
 *      CURRENTLY DISABLED DUE TO CHANGE IN TWITTER API:
 *           withFriends: {Boolean} includes friend's status
 *
 *       }
 *
 * @license MIT (MIT-LICENSE.txt)
 * @version 1.13.3 - ify now supports lists
 * @date $Date: 2011-07-04 15:40:40 +0100 (Mon, 04 Jul 2011) $
 *
 * Modified by Rick Falkvinge, modifications are public domain / CC0
 */if(typeof getTwitters!=='function')(function(){var twitterjs={},guid=0;!function(context,doc){var fns=[],ol,fn,f=false,testEl=doc.documentElement,hack=testEl.doScroll,domContentLoaded='DOMContentLoaded',addEventListener='addEventListener',onreadystatechange='onreadystatechange',loaded=/^loade|c/.test(doc.readyState);function flush(i){loaded=1;while(i=fns.shift()){i()}}
doc[addEventListener]&&doc[addEventListener](domContentLoaded,fn=function(){doc.removeEventListener(domContentLoaded,fn,f);flush();},f);hack&&doc.attachEvent(onreadystatechange,(ol=function(){if(/^c/.test(doc.readyState)){doc.detachEvent(onreadystatechange,ol);flush();}}));context['domReady']=hack?function(fn){self!=top?loaded?fn():fns.push(fn):function(){try{testEl.doScroll('left');}catch(e){return setTimeout(function(){domReady(fn)},50);}
fn();}()}:function(fn){loaded?fn():fns.push(fn);};}(twitterjs,document);window.getTwitters=function(target,id,count,options){guid++;if(typeof id=='object'){options=id;id=options.id;count=options.count;}
if(!count)count=1;if(options){options.count=count;}else{options={};}
if(!options.timeout&&typeof options.onTimeout=='function'){options.timeout=10;}
if(typeof options.clearContents=='undefined'){options.clearContents=true;}
options.twitterTarget=target;if(typeof options.enableLinks=='undefined')options.enableLinks=true;twitterjs.domReady((function(options,guid){return function(){function render(tweet){var text=options.enableLinks?twitterlib.ify.clean(twitterlib.expandLinks(tweet)):twitterlib.expandLinks(tweet);var html='<li>';var tweetText="(unreadable, feed malfunction)";var tweetLink="#";var indexOfLastSpace=tweet.text.lastIndexOf(' ');if(indexOfLastSpace!=-1)
{tweetText=tweet.text.substring(0,indexOfLastSpace);tweetLink=tweet.text.substring(indexOfLastSpace+ 1);var viaText='';var indexOfVia=tweetText.indexOf(' (via ');if(indexOfVia!=-1)
{viaText='via'+ tweetText.substring(indexOfVia+ 5);viaText=viaText.substring(0,viaText.length- 1);tweetText=tweetText.substring(0,indexOfVia);}
html+='<span class="spanTwitterNewsItem"><a target="_blank" href="'+ tweetLink+'">'+ tweetText+'</a></span>';html+='<span class="spanTwitterNewsTime">'+ viaText+'</span></li>';}
return html;}
function getTweets(){options.target=document.getElementById(options.twitterTarget);if(!options.target){return;}
var tlOptions={limit:count}
if(tlOptions.includeRT){tlOptions.include_rts=true;}
if(options.timeout){window['twitterTimeout'+ guid]=setTimeout(function(){twitterlib.cancel();options.onTimeout.call(options.target);},options.timeout*1000);}
var searchMethod='timeline';if(id.indexOf('#')===0)searchMethod='search';if(id.indexOf('/')!==-1)searchMethod='list';if(options.ignoreReplies){tlOptions.filter='-@';}
twitterlib.cache(true);twitterlib[searchMethod](id,tlOptions,function(tweets,tlOptions){var html=[],max=tweets.length>options.count?options.count:tweets.length;html=['<ul>'];for(var i=0;i<max;i++){tweets[i].time=twitterlib.time.relative(tweets[i].created_at);for(var key in tweets[i].user){tweets[i]['user_'+ key]=tweets[i].user[key];}
if(options.template){html.push('<li>'+ options.template.replace(/%([a-z_\-\.]*)%/ig,function(m,l){var r=tweets[i][l]+""||"";if(l=='text')r=twitterlib.expandLinks(tweets[i]);if(l=='text'&&options.enableLinks)r=twitterlib.ify.clean(r);return r;})+'</li>');}else if(options.bigTemplate){html.push(twitterlib.render(tweets[i]));}else{html.push(render(tweets[i]));}}
html.push('</ul>');if(options.clearContents){options.target.innerHTML=html.join('');}else{options.target.innerHTML+=html.join('');}
options.callback&&options.callback(tweets);});}
getTweets();};})(options,guid));};})();
