
module('McCray',function(ns){with(ns){var container=false;def('init',function(){container=$('#container');$.getScript('http://blog.zoodotcom.com/api/read/json?num=10&callback=McCray.ZdcCallback');$.getScript('http://darthapo.tumblr.com/api/read/json?num=10&callback=McCray.BlogCallback');$.getScript('http://www.zoodotcom.com/api/latest_strip?callback=McCray.ComicCallback');$.getScript('http://twitter.com/statuses/user_timeline/darthapo.json?count=10&callback=McCray.TwitterCallback');});function log(){if(window.console&&console.log){$.each(arguments,function(idx,msg){console.log(msg);});}};function appendContent(content){var elem=$('<div>'+content+"<div>");container.append(elem).masonry({columnWidth:295,itemSelector:'.badge',appendedContent:elem});};def('ZdcCallback',function(data){for(var i=0;i<data.posts.length;i++){var post=data.posts[i],elem;post.created_at=relative_time(Date.parse(post.date)),elem=Template.forPost(post);appendContent(elem);};});def('BlogCallback',function(data){for(var i=0;i<data.posts.length;i++){var post=data.posts[i],elem;post.created_at=relative_time(Date.parse(post.date)),elem=Template.forPost(post);appendContent(elem);};});def('ComicCallback',function(json){var strip=json.content[0];strip.type='comic';strip.created_at=relative_time(Date.parse(strip.publish_on));var elem=Template.forPost(strip);appendContent(elem);});def('TwitterCallback',function(tweets){$.each(tweets,function(idx,tweet){var username=tweet.user.screen_name;var status=tweet.text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g,function(url){return nano('<a class="link" target="_blank" href="{url}">{url}</a>',{url:url});}).replace(/\B@([_a-z0-9]+)/ig,function(reply){return nano('<a class="user" target="_blank" href="http://twitter.com/{user}"><span>@</span>{user}</a>',{user:reply.substring(1)});}).replace(/\B#([_a-z0-9]+)/ig,function(hashtag){return nano('<a class="hashtag" target="_blank" href="http://twitter.com/search?q=%23{hashtag}"><span>#</span>{hashtag}</a>',{hashtag:hashtag.substring(1)});});var post={type:'twitter',username:username,profile_image_url:tweet.user.profile_image_url,status:status,twitter_id:tweet.id,created_at:relative_time(tweet.created_at),tweet:tweet};var elem=Template.forPost(post);appendContent(elem);});});function nano(template,data){return template.replace(/\{([\w\.|\-]*)\}/g,function(str,key){var keys=key.split("."),value=data[keys.shift()];$.each(keys,function(){value=value[this];});return(value===null||value===undefined)?"":value;});};var Template={get:function(type){if(this[type]){return this[type];}else{var fromDom=$('#template_'+type).text();if(fromDom){this[type]=fromDom;log("Cached "+type+" template.");return this[type];}else{return this['unknown'];}};},forPost:function(post){var tmpl=this.get(post.type);return Mustache.to_html(tmpl,post);}};function relative_time(time_value){if(typeof time_value=='string'){var values=time_value.split(" ");time_value=values[1]+" "+values[2]+", "+values[5]+" "+values[3];var parsed_date=Date.parse(time_value);}else{var parsed_date=time_value;};var relative_to=(arguments.length>1)?arguments[1]:new Date();var delta=parseInt((relative_to.getTime()-parsed_date)/1000);delta=delta+(relative_to.getTimezoneOffset()*60);if(delta<60){return'less than a minute ago';}else if(delta<120){return'about a minute ago';}else if(delta<(60*60)){return(parseInt(delta/60)).toString()+' minutes ago';}else if(delta<(120*60)){return'about an hour ago';}else if(delta<(24*60*60)){return'about '+(parseInt(delta/3600)).toString()+' hours ago';}else if(delta<(48*60*60)){return'1 day ago';}else{return(parseInt(delta/86400)).toString()+' days ago';};};}});$(McCray.init);
