/* /mi/assets/js/Mi.API.js */
var Mi=Mi||{};Mi.API=new Class({Implements:[Events,Options],options:{username:'',url:'',data:{},o:'',fn:function(){},into:null,now:new Date(),onComplete:function(res,req,into){},onFormat:function(out,into){if(into)$(into).innerHTML+=out;}},response:{data:{},formatted:''},initialize:function(options){this.setOptions(options);},send:function(o){o=this.extend(this.options,o);o.url=this.replace(o.url,{method:o.data.method,username:o.username});new Request.JSONP({url:o.url,data:Object.merge(o.data,{format:'json'}),link:'chain',onSuccess:function(res,req){this.response.data=res;this.fireEvent('complete',[res,req,o.into]);this.response.formatted=this.format(eval('res'+o.o),o.fn);this.fireEvent('format',[this.response.formatted,o.into]);}.bind(this),}).send();return this;},format:function(obj,fn){if(typeof(fn)!='function')return'ERROR: formatting function is not a valid function.';var s='';Array.from(obj).each(function(o){s+=fn(o);});return s;},extend:function(orig){var copy=orig;if(typeof(orig)=='object'&&orig!=null){copy=Object.clone(orig);for(var i=1,l=arguments.length;i<l;i++){var ext=arguments[i]||{};for(var k in ext)copy[k]=this.extend(copy[k],ext[k]);}}else{for(var i=1,l=arguments.length;i<l;i++){var ext=arguments[i];if(!(typeof(ext)=='function'&&ext==function(){}))copy=ext;}}
return copy;},replace:function(s,r){s=s.toString();Object.each(r,function(v,k){s=s.replace('{'+k+'}',v);});return s;}});

/* /mi/assets/js/Mi.API.Tumblr.js */
if(Mi.API){Mi.API.Tumblr=new Class({Extends:Mi.API,options:{username:'blog.mismith.info',url:'http://{username}/api/{method}/json',data:{method:'read'}},js:{script:null,loaded:false},initialize:function(options){if(options.username&&!options.username.contains('.'))options.username+='.tumblr.com';this.setOptions(options);return this;},getPosts:function(o){Object.merge(o,{o:'.posts',fn:function(obj){var d=Date.parse(obj.date),b='',t='';switch(obj.type){default:case'regular':b='\n\
       <div class="title">'+obj['regular-title']+'</div>\n\
       <div class="body">'+obj['regular-body']+'</div>';break;case'photo':var imgs='';Array.each((obj.photos.length?obj.photos:[obj]),function(photo){var img='<img src="'+photo['photo-url-500']+'" class="photo" />'
if(photo['photo-link-url'])img='<a href="'+photo['photo-link-url']+'" class="url">'+img+'</a>';imgs+=img+'\n';});b='\n\
       <div class="photos center">'+imgs+'</div>\n\
       <div class="caption">'+obj['photo-caption']+'</div>';break;case'quote':b='\n\
       <div class="text">'+obj['quote-text']+'</div>\n\
       <div class="source">'+obj['quote-source']+'</div>';break;case'link':b='\n\
       <a href="'+obj['link-url']+'" class="url">'+obj['link-text']+'</a>\n\
       <div class="description">'+obj['link-description']+'</div>';break;case'conversation':Array.each(obj['conversation'],function(c){b+='<div class="speaker"><div class="name">'+c['label']+'</div><div class="text">'+c['phrase']+'</div></div>';});b='\n\
       <div class="conversation">'+b+'</div>';break;case'audio':b='\n\
       <div class="player">'+obj['audio-player']+'</div>\n\
       <div class="caption">'+obj['audio-caption']+'</div>';break;case'video':b='\n\
       <div class="player center">'+obj['video-player']+'</div>\n\
       <div class="caption">'+obj['video-caption']+'</div>';var player=Elements.from(b,false)[0];var loadVideo=function(){player.get('html').stripScripts(true);}
if(!this.js.script){this.js.script=new Asset.javascript('http://assets.tumblr.com/javascript/tumblelog.js',{onLoad:function(){loadVideo();this.js.loaded=true;}.bind(this)});}else if(!this.js.loaded){this.js.script.addEvent('load',function(){loadVideo();});}else loadVideo();break;}
Array.each(obj.tags,function(tag){t+='<a href="http://'+this.options.username+'/tagged/'+tag+'" class="tag tag-'+tag.replace(/[^\w_]/ig,'_')+'">'+tag+'</a> ';},this);var s='\n\
     <li class="post">\n\
      <div class="body '+obj.type+'">\n\
       '+b+'\n\
      </div>\n\
      <div class="footer">\n\
       <div class="tags">\n\
        '+t+'\n\
       </div>\n\
       <div class="details">\n\
        <span class="timestamp">'+(d.diff(this.options.now)?d.format('%Y-%m-%d %H:%M'):d.timeDiffInWords())+'</span> &nbsp;\
        <a href="'+obj['url-with-slug']+'" class="read-more">View post</a>\n\
       </div>\n\
      </div>\n\
     </li>';return s;}.bind(this)});return this.send(o);}});}

/* /mi/assets/js/Mi.API.Blippr.js */
if(Mi.API){Mi.API.Blippr=new Class({Extends:Mi.API,options:{username:'cinesmith',url:'http://api.blippr.com/v2/{method}.json',data:{apikey:'b441661631b24be8a78f69443d6ea7c666899'}},biases:{'2':['=D','I love it!'],'1':['=)','I like it'],'0':['=|','I dislike it'],'-1':['=(','I hate it']},initialize:function(options){this.setOptions(options);return this;},getBlips:function(o){Object.merge(o,{data:{method:'profiles/{username}/blips'},o:'.reviews.review',fn:function(obj){var d=Date.parse(obj.created_at);return'<li class="blip">\n\
      <div class="header">\n\
       <a href="'+obj.title.link+'" class="title">'+obj.title.name+'</a>\
       <a href="'+obj.url+'" class="bias b'+obj.bias.toString()+'" title="'+this.biases[obj.bias][1]+'">'+this.biases[obj.bias][0]+'</a>\n\
      </div>\n\
      <a href="'+obj.title.link+'"><img src="'+obj.title.images.small+'" class="poster" /></a>\n\
      <div class="body">\n\
       <div class="text">'+obj.reviewtext+'</div>\n\
      </div>\n\
      <div class="footer">\n\
       <span class="timestamp">'+(d.diff(this.options.now)?d.format('%Y-%m-%d %H:%M'):d.timeDiffInWords())+'</span>\n\
      </div>\n\
     </li>'}.bind(this)});return this.send(o);}});}

/* /mi/assets/js/Mi.API.Twitter.js */
if(Mi.API){Mi.API.Twitter=new Class({Extends:Mi.API,options:{username:'micinesmith',url:'http://twitter.com/statuses/user_timeline/{username}.json',data:{trim_user:true,count:20}},initialize:function(options){this.setOptions(options);return this;},linkify:function(text){return text.replace(/(https?:\/\/\S+)/gi,'<a href="$1">$1</a>').replace(/(^|\s)@(\w+)/g,'$1<a href="http://twitter.com/$2">@$2</a>').replace(/(^|\s)#(\w+)/g,'$1<a href="http://search.twitter.com/search?q=%23$2">#$2</a>');},getTweets:function(o){Object.merge(o,{fn:function(obj){var d=Date.parse(obj.created_at);return'\n\
     <li class="tweet">\n\
      <div class="text">'+this.linkify(obj.text)+'</div>\n\
      <div class="footer">\n\
       <span class="timestamp">'+(d.diff(this.options.now)?d.format('%Y-%m-%d %H:%M'):d.timeDiffInWords())+'</span>\n\
      </div>\n\
     </li>'}.bind(this)});return this.send(o);}});}


