var ify = function() {
  return {
    "link": function(t) {
      return t.replace(/(^|\s+)(https*\:\/\/\S+[^\.\s+])/g, function(m, m1, link) {
        return m1 + '<a href=' + link + '>' + ((link.length > 25) ? link.substr(0, 24) + '...' : link) + '</a>';
      });
    },
    "at": function(t) {
      return t.replace(/(^|\s+)\@([a-zA-Z0-9_]{1,15})/g, function(m, m1, m2) {
        return m1 + '@<a href="http://twitter.com/' + m2 + '">' + m2 + '</a>';
      });
    },
    "hash": function(t) {
      return t.replace(/(^|\s+)\#([a-zA-Z0-9_]+)/g, function(m, m1, m2) {
        return m1 + '#<a href="http://search.twitter.com/search?q=%23' + m2 + '">' + m2 + '</a>';
      });
    },
    "clean": function(tweet) {
      return this.hash(this.at(this.link(tweet))).replace(/\n/g, '<br/>');
    }
  };
}();

$(document).ready(function() {

    var twitEl = document.getElementById("twitter");
    var out = "";
    var goodcount = 0;
    for (var i=0; i<twitter_status.length && goodcount<7; i++) {
        if (!twitter_status[i].in_reply_to_user_id) {
            goodcount++;
            out += "<li>" + ify.clean(twitter_status[i].text) + "</li>";
    	}
    }
    twitEl.innerHTML = out;
    
    $.ajax({ url: "/scripts/flickr.html", context: document.body, success: function(data){
            $("#flickrphotos").html(data + '<div style="clear:both">&nbsp;</div>');
    }});
    
});

if (document.createElement("canvas").getContext) {

    $(document).ready(function() {
        var sourceblocks = $(".post pre");
        var el;
        var renderLineNumbers = function () {
            sourceblocks.each(function (i, e) {
                var newTime = false;
                if (!e.lineNumbers) {
                    e.lineNumbers = document.createElement("canvas");
                    newTime = true;
                }
                var c = e.lineNumbers;
                e = $(e);
                var ec = e.children("code");
                c.width = 32;
                c.height = ec.height();
                var ctx = c.getContext("2d");
                var nl = e.text().split("\n").length-1;
                var epos = e.offset();
                ctx.font = (parseInt(e.css("fontSize")) - 3) + "px Monaco, monospace";
                ctx.fillStyle = "#aaa";
                ctx.textBaseline = "bottom";
                for (var i=0; i<nl; i++) {
                    var ypos = ((i+1)/nl)*(c.height+6);
                    ctx.fillText(i+1, 10, ypos-7);
                }
                $(c).css({float:"left",position:"absolute",zIndex:100,top:ec.offset().top,backgroundColor:"rgba(60,57,50,.8)"});
                if (newTime && nl > 1) {
                    $(c).insertBefore(e);
                }
                    
            });
        };
        if (sourceblocks.length) {
            renderLineNumbers();
            $(document).keydown(function(e){
                var kc = e.keyCode;
                if (e.metaKey == true && (kc == 61 || kc == 48 || kc == 109 || kc == 189 || kc == 187)) {
                    setTimeout(renderLineNumbers,100);
                }
            });
            var sizer = document.createElement("span");
            sizer.innerHTML = "X";
            sizer = $(sizer);
            sizer.css({position:"absolute",left:"-9999px"});
            sizer.appendTo("body");
            var fs = window.getComputedStyle(sizer[0],null)["fontSize"];
            setInterval(function () {
                var s = window.getComputedStyle(sizer[0],null)["fontSize"];
                if (s != fs) {
                    fs = s;
                    renderLineNumbers();
                }
            },1000);
        }
    });

}
