/*
 * tweetable 1.2 - jQuery twitter feed generator plugin
 *
 * Copyright (c) 2009 Philip Beel (http://www.theodin.co.uk/)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Revision: $Id: jquery.tweetable.js 2009-08-20 $ 
 *
 * Modifications:
 * Link to tweet / autolink hash tags by BJ Neilsen (http://rand9.com/javascripts/jquery.tweetable.js)
 * Pretty dates by Doug Neiner (http://gist.github.com/172279)
 * Some specific modifications for phdesign.com.au by Paul Heasley (www.phdesign.com.au)
 *
 */

(function(jQuery){jQuery.fn.tweetable=function(options){var defaults={limit:5,username:'localshred',time:false,link_to_tweet:false};var dateHelper={date_parse_from_twitter:function(str){parts=str.match(/^([a-z]{3}) ([a-z]{3}) (\d{2}) (\d{2}):(\d{2}):(\d{2}) \+(\d{4}) (\d{4})$/i);if(!parts)return false;var date_str=parts[1]+", "+parts[3]+" "+parts[2]+" "+parts[8]+" "+parts[4]+":"+parts[5]+":"+parts[6]+" GMT";var date=new Date(date_str);return date;},time_ago_in_words_with_parsing:function(from){var date=this.date_parse_from_twitter(from);if(!date)return"";return this.time_ago_in_words(date);},time_ago_in_words:function(from){return this.distance_of_time_in_words(new Date,from);},distance_of_time_in_words:function(to,from){var distance_in_seconds=((to-from)/1000);var distance_in_minutes=Math.floor(distance_in_seconds/60.0);if(distance_in_minutes==0){return'less than a minute ago';};if(distance_in_minutes==1){return'a minute ago';};if(distance_in_minutes<45){return distance_in_minutes+' minutes ago';};if(distance_in_minutes<90){return'about 1 hour ago';};if(distance_in_minutes<1440){return'about '+Math.floor(distance_in_minutes/60)+' hours ago';};if(distance_in_minutes<2880){return'1 day ago';};if(distance_in_minutes<43200){return Math.floor(distance_in_minutes/1440)+' days ago';};if(distance_in_minutes<86400){return'about 1 month ago';};if(distance_in_minutes<525960){return Math.floor(distance_in_minutes/43200)+' months ago';};if(distance_in_minutes<1051199){return'about 1 year ago';};return'over '+Math.floor(distance_in_minutes/525960)+' years ago';}};var options=jQuery.extend(defaults,options);return this.each(function(options){var act=jQuery(this);var api="http://twitter.com/statuses/user_timeline/";var count="?count=";jQuery.getJSON(api+defaults.username+".json"+count+defaults.limit+"&callback=?",act,function(data){jQuery.each(data,function(i,item){act.append(item.text.replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,'<a href="$&" target="_blank">$&</a> ').replace(/#([a-z0-9_]*?)([^a-z0-9_]|$)/g,'<a href="http://search.twitter.com/search?q=%23$1" title="Search topic #$1 on twitter" target="_blank" class="hash">#$1</a> ').replace(/\@([a-z0-9_]+?)([^a-z0-9_]|$)/ig,'<a href="http://twitter.com/$1" target="_blank">@$1</a> $2'));if(defaults.time==true)
act.append(' <span class="twitter-timestamp">'+dateHelper.time_ago_in_words_with_parsing(item.created_at)+'</span>');if(defaults.link_to_tweet==true)
act.append(' <a href="http://www.twitter.com/'+defaults.username+'/status/'+item.id+'" title="Go to tweet" target="_blank">&raquo;</a>');});})});};})(jQuery);