//Last.fm Feed
(function($){$.fn.lastfm=function(username,display,apikey,options){var defaults={limit:2,header:false,title:'',imagesize:'extralarge',image:true,noimage:'',name:true,artist:true,playcount:true,showerror:true};var options=$.extend(defaults,options);return this.each(function(i,e){var $e=$(e);if(!$e.hasClass('lastFM'))$e.addClass('lastFM');if(display=='lovedtracks'){options.title='Loved Tracks';var method='user.getLovedTracks';}else if(display=='recenttracks'){options.title='Recent Tracks';var method='user.getRecentTracks';}else if(display=='topalbums'){options.title='Top Albums';var method='user.getTopAlbums';}else if(display=='topartists'){options.title='Top Artists';var method='user.getTopArtists';}else if(display=='toptracks'){options.title='Top Tracks';var method='user.getTopTracks';}else{if(options.showerror)$e.html('<p>LastFM feed invalid</p>');return false;}
var api='http://ws.audioscrobbler.com/2.0/?method='+method+'&user='+username+'&api_key='+apikey+'&limit='+options.limit+'&format=json&callback=?';$.ajax({type:'GET',url:api,dataType:'json',success:function(data){if(data){if(display=='lovedtracks'){_callback(e,display,data.lovedtracks.track,options);}else if(display=='recenttracks'){_callback(e,display,data.recenttracks.track,options);}else if(display=='topalbums'){_callback(e,display,data.topalbums.album,options);}else if(display=='topartists'){_callback(e,display,data.topartists.artist,options);}else if(display=='toptracks'){_callback(e,display,data.toptracks.track,options);}}else{if(options.showerror)$e.html('<p>LastFM information unavailable</p>');}},error:function(data){if(options.showerror)$e.html('<p>LastFM request failed</p>');}});});};var _callback=function(e,display,feeds,options){var $e=$(e);var row='odd';var html='';html+='';html+='<div class="lastFMBody '+display+'">';if(feeds){html+='<ul>';
var count=feeds.length;
if(count>options.limit)count=options.limit;
for(var i=0;i<count;i++){
    i = 1;
	var item=feeds[i];html+='<li class="itemRow '+row+'">';
	var name=item.name;
	var url=_getValidURL(item.url)
	var artist='';
	var imgurl='';
	var playcount=null;if(display=='lovedtracks'||display=='topalbums'||display=='toptracks'){artist='<a href="'+_getValidURL(item.artist.url)+'" title="More about '+item.artist.name+' on Last.FM">'+item.artist.name+'</a>';}else if(display=='recenttracks'){artist=item.artist['#text'];}
if(display=='topalbums'||display=='topartists'||display=='toptracks')playcount=item.playcount;if(options.image){if(item.image){if(options.imagesize=='small'){var imgindex=0;}else if(options.imagesize=='medium'){var imgindex=1;}else if(options.imagesize=='large'){var imgindex=2;}else if(options.imagesize=='extralarge'){var imgindex=3;}
imgurl=_getValidURL(item.image[imgindex]['#text']);}
if(imgurl=='')imgurl=options.noimage;if(imgurl!='')html+='<a href="'+url+'" title="Listen to '+item.name+' on Last.FM"><img src="'+imgurl+'" alt="'+item.name+'" /></a>'}
if(options.name)html+='<div class="itemName"><a href="'+url+'" title="Listen to '+item.name+' on Last.FM">'+item.name+'</a></div>'
if(options.artist)html+='<div class="itemArtist">'+artist+'</div>';if(options.playcount&&playcount!=null)html+='<div class="itemPlaycount">'+playcount+' plays</div>'
html+='</li>';if(row=='odd'){row='even';}else{row='odd';}}
html+='</ul>';}else{html+='<p>No items to display</p>';e};html+='</div>';$e.append(html);};var _getValidURL=function(u){var url=u;if(u!=''&&u.substr(0,7)!='http://')url='http://'+u;return url;};})(jQuery);

//Twitter Feed
(function($){$.fn.twitterfeed=function(username,options){var defaults={limit:1,header:false,tweeticon:false,tweetname:false,tweettime:true,retweets:false,replies:false,ssl:false};var options=$.extend(defaults,options);return this.each(function(i,e){var $e=$(e);var s='';if(!$e.hasClass('twitterFeed'))$e.addClass('twitterFeed');if(username==null)return false;if(options.limit>200)options.limit=200;if(options.ssl)s='s';if(options.replies==true){options.replies=false;}else{options.replies=true;}
var url='http'+s+'://api.twitter.com/1/statuses/user_timeline.json?include_rts='+options.retweets+'&exclude_replies='+options.replies+'&screen_name='+username+'&count='+options.limit;var params={};params.count=options.limit;jQuery.ajax({url:url,data:params,dataType:'jsonp',success:function(o){_callback(e,o,options);}});});};var _callback=function(e,feeds,options){if(!feeds){return false;}
var html='';var row='odd';if(options.header){var name=feeds[0].user.name;var screenname=feeds[0].user.screen_name;var icon=feeds[0].user.profile_image_url;var link='<a href="http://twitter.com/'+screenname+'/" title="Visit '+name+' on Twitter">';html+='<div class="twitterHeader">'+
link+'<img src="'+icon+'" alt="'+name+'" /></a>'+'<span>'+link+name+'</a></span>'+'</div>';}
html+='<div class="twitterBody">'+'<ul>';for(var i=0;i<feeds.length;i++){if(feeds[i].retweeted_status){var tweet=feeds[i].retweeted_status;}else{var tweet=feeds[i];}
var link='<a href="http://twitter.com/'+tweet.user.screen_name+'/" title="Visit '+tweet.user.name+' on Twitter">';html+='<li class="twitterRow '+row+'">';if(options.tweeticon){var icon=tweet.user.profile_image_url;html+=link+'<img src="'+icon+'" alt="'+name+'" /></a>';}
if(options.tweetname){var name=tweet.user.name;html+='<div class="tweetName">'+link+name+'</a></div>'}
if(options.tweettime){var lapsedTime=getLapsedTime(tweet.created_at);html+='<div class="tweetTime">'+lapsedTime+'</div>'}
var text=tweet.text.replace(/(https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/,function(u){var shortUrl=(u.length>30)?u.substr(0,30)+'...':u;return'<a href="'+u+'" title="Click to view this link">'+shortUrl+'</a>';}).replace(/@([a-zA-Z0-9_]+)/g,'@<a href="http://twitter.com/$1" title="Click to view $1 on Twitter">$1</a>').replace(/(?:^|\s)#([^\s\.\+:!]+)/g,function(a,u){return' <a href="http://twitter.com/search?q='+encodeURIComponent(u)+'" title="Click to view this on Twitter">#'+u+'</a>';});html+='<p>'+text+'</p>'
html+='</li>';if(row=='odd'){row='even';}else{row='odd';}}
html+='</ul>'+'</div>'
$(e).html(html);};function getLapsedTime(strDate){strDate=Date.parse(strDate.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i,'$1,$2$4$3'));var todayDate=new Date();var tweetDate=new Date(strDate)
var lapsedTime=Math.round((todayDate.getTime()-tweetDate.getTime())/1000)
if(lapsedTime<60){return'less than a minute ago &mdash; ';}else if(lapsedTime<(60*60)){return(Math.round(lapsedTime/60)-1)+' minutes ago &mdash; ';}else if(lapsedTime<(24*60*60)){return(Math.round(lapsedTime/3600)-1)+' hours ago  &mdash; ';}else if(lapsedTime<(7*24*60*60)){return(Math.round(lapsedTime/86400)-1)+' days ago &mdash; ';}else{return(Math.round(lapsedTime/604800)-1)+' weeks ago &mdash; ';}};})(jQuery);

//Flickr Feed
(function($){$.fn.flickrfeed=function(userid,tags,options){var defaults={limit:1,header:false,imagesize:'medium',titletag:'h4',title:false,date:false};var options=$.extend(defaults,options);return this.each(function(i,e){var $e=$(e);if(!$e.hasClass('flickrFeed'))$e.addClass('flickrFeed');var api='http://api.flickr.com/services/feeds/photos_public.gne?lang=en-us&format=json&jsoncallback=?';if(userid!='')api+='&id='+userid;if(tags!='')api+='&tags='+tags;$.getJSON(api,function(data){_callback(e,data,options);});});};var _callback=function(e,data,options){if(!data){return false;}
var html='';var row='odd';if(options.header)
var desc=data.description;if(desc=='')desc=data.title;html+='';html+='<div class="flickrBody">'+'<ul>';var feeds=data.items;var count=feeds.length;if(count>options.limit)count=options.limit;for(var i=0;i<count;i++){var photo=feeds[i];var link='<a href="'+photo.link+'" title="'+photo.title+' (View on Flickr)">';html+='<li class="flickrRow '+row+'">';var src=photo.media.m;if(options.imagesize=='square')src=src.replace('_m','_s');if(options.imagesize=='thumbnail')src=src.replace('_m','_t');if(options.imagesize=='medium')src=src.replace('_m','');html+=link+'<img src="'+src+'" alt="'+photo.title+'" /></a>'
if(options.title)html+='<'+options.titletag+'>'+photo.title+'</'+options.titletag+'>';if(options.date){var photoDate=new Date(photo.date_taken);photoDate=photoDate.toLocaleDateString()+' '+photoDate.toLocaleTimeString();html+='<div>'+photoDate+'</div>';}
html+='</li>';if(row=='odd'){row='even';}else{row='odd';}}
html+='</ul>'+'</div>'
$(e).html(html);};})(jQuery);

//Dribbble Halfcourt
/**
* @name     Half Court Shot
* @author <codes>      mediaHACK - http://www.mediahack.com [codes at teh mediahack dotz com]
* @author <pretties>      KomodoMedia - http://www.komodomedia.com [rogie at teh komodomedia dotz com]
* @date         2010.07.28
* @version	1.101129
* 
* This has been a mediaHACK and KomodoMedia  collab. Our powers
* combined are Super-Sonic-Bionic. Trust pound#.
*
* @copyright   2010 - mH
* @licence  MIT Licensed. Nice if you give origination cred.
* 
**/
function HalfCourtShot(settings){this.settings=settings;this.play;this.goal=document.getElementsByTagName("body")[0];var allstarsIMO=["rogie","simplebits","shauninman","jsm","squaredeye"];var cointoss=Math.floor(Math.random()*5);this.player=allstarsIMO[cointoss];this.jersey=this.player;this.shots=0;this.page;this.per_page;this.following=false;this.className="hcs";this.apiUrl="http://api.dribbble.com/";this.playType="players";this.url="";HalfCourtShot.currentIndex=HalfCourtShot.currentIndex||0;this.index=HalfCourtShot.currentIndex++;this.debug=false;this.callThePlay=function(){var ball=this;if(ball.settings==null){return}for(var x in ball.settings){if(ball[x]!=undefined){ball[x]=ball.settings[x]}}};this.shootDaBall=function(){var ball=this;var sCallback="HalfCourtShot.callback"+ball.index;HalfCourtShot["callback"+ball.index]=function(data){ball.jumboTron(data)};ball.genUrl();var instId="halfCourtShot"+ball.currentIndex;HalfCourtShot[instId]=document.createElement("script");HalfCourtShot[instId].setAttribute("id",instId);HalfCourtShot[instId].setAttribute("type","text/javascript");HalfCourtShot[instId].setAttribute("src",ball.url);document.getElementsByTagName("body")[0].appendChild(HalfCourtShot[instId])};this.jumboTron=function(data){var ball=this;var bounds=document.createElement("div");bounds.setAttribute("class",ball.className);var imgList=document.createElement("ul");var thumbList=document.createElement("ul");var show=(ball.shots)?ball.shots:data.shots.length;if(show>data.shots.length){show=data.shots.length}var mainShot=show;if(ball.warmUp){show+=ball.numberOfLayups}if(data.shots){for(var x=0;x<show;x++){var li=ball.buildImageListItem(data.shots[x]);imgList.appendChild(li)}}else{if(data.image_url||data.avatar_url){var li=ball.buildImageListItem(data);imgList.appendChild(li)}}bounds.appendChild(imgList);if(ball.warmUp){bounds.appendChild(thumbList)}if(typeof ball.goal=="string"){ball.goal=document.getElementById(ball.goal)}ball.goal.appendChild(bounds);ball.goal.innerHTML=ball.goal.innerHTML;if(ball.onComplete){ball.onComplete()}};this.buildImageListItem=function(d){var image_url=(d.image_url)?d.image_url:d.avatar_url;var a=document.createElement("a");a.setAttribute("href",d.url);a.setAttribute("title",d.title);var img=document.createElement("img");img.setAttribute("src",image_url);var lay=document.createElement("span");lay.setAttribute("class","overlay");if(d.width){img.setAttribute("width",d.width)}if(d.height){img.setAttribute("height",d.height)}if(d.title){img.setAttribute("title",d.title)}else{if(d.name){img.setAttribute("title",d.name)}}if(d.title){img.setAttribute("alt",d.title)}else{if(d.name){img.setAttribute("alt",d.name)}}a.appendChild(img);a.appendChild(lay);var li=document.createElement("li");li.appendChild(a);return li};this.genUrl=function(){var randomNo=Math.floor(Math.random()*9999999);if(typeof this.jersey=="string"){if(this.page!=undefined){pageOpts="page="+this.page}if(this.per_page!=undefined){pageOpts=pageOpts+"&per_page="+this.per_page}}if(this.playType=="shots"){var pageOpts="";if(this.jersey=="debuts"||this.jersey=="everyone"||this.jersey=="popular"){this.url=this.apiUrl+this.playType+"/"+this.jersey+"/?"+pageOpts+"&r="+randomNo+"&callback=HalfCourtShot.callback"+this.index}else{this.url=this.apiUrl+this.playType+"/"+this.jersey+"/?r="+randomNo+"&callback=HalfCourtShot.callback"+this.index}if(this.debug){console.log(this.url)}}else{if(this.playType=="players"){var jerseyType=parseInt(this.jersey);if(parseInt(this.jersey)){this.url=this.apiUrl+this.playType+"/"+this.jersey+"/?r="+randomNo+"&callback=HalfCourtShot.callback"+this.index}else{var followingOpts=(eval(this.following))?"following/":"";this.url=this.apiUrl+this.playType+"/"+this.jersey+"/shots/"+followingOpts+"?r="+randomNo+"&callback=HalfCourtShot.callback"+this.index}}}};this.rideThePine=function(v){if(this.debug){console.log(this[v])}};this.hitTheFloor=function(){this.callThePlay();this.shootDaBall()};this.hitTheFloor()};
