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/>');
    }
  };
}();

p = {
    renderLineNumbers: function (els) {
        els.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);
            }
                
        });
    }
};

$(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>');

            $("a.flickr").each(function () {
                var rot = "rotate("+ (Math.round(Math.random()*701-301)/100) +"deg)";
                var c = Math.floor(Math.random() * 3);
                $(this).css({
                  "border-color" : "#fafa" + (250-c).toString(16),
                  "-moz-transform" : rot,
                  "-webkit-transform" : rot
                });
            });
    }});
        
});


function initCodeBlocks() {
    if (document.createElement("canvas").getContext) {
        var sourceblocks = $(".post pre");
        if (sourceblocks.length) {
            p.renderLineNumbers(sourceblocks);
            $(document).keydown(function(e){
                var kc = e.keyCode;
                if (e.metaKey == true && (kc == 61 || kc == 48 || kc == 109 || kc == 189 || kc == 187)) {
                    setTimeout(p.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;
                    p.renderLineNumbers();
                }
            },1000);
        }
    }
}


$(document).ready(function(els) {
    initCodeBlocks();
});


