(function() {
  var bbb;
  var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
  bbb = window.bbb || (window.bbb = {});
  bbb.utils = {
    init: function() {
      _.bindAll(this, 'extendViews', 'extendView', 'underlineLinks');
      if ($.browser.webkit) {
        $('html').addClass('webkit');
      }
      if ($.browser.mozilla) {
        $('html').addClass('mozilla');
      }
      if ($.browser.msie) {
        $('html').addClass('msie');
      }
      if ($.browser.opera) {
        $('html').addClass('opera');
      }
    },
    extendViews: function(views, appModel) {
      this.views = views;
      this.appModel = appModel != null ? appModel : {};
      _.each($('.extend'), this.extendView);
    },
    extendView: function(node) {
      var $node, name, view;
      $node = $(node);
      name = $node.data('view');
      if (name === null || name === '') {
        return;
      }
      if (this.views[name] === void 0) {
        return;
      }
      view = new this.views[name]({
        el: $node,
        appModel: this.appModel
      });
      $node.removeClass('extend');
    },
    underlineLinks: function() {
      _.each($('.u-me'), __bind(function(me) {
        var $me, text;
        $me = $(me);
        text = $me.text();
        text = text.replace(/[gpqyj]/g, "</u>$&<u>");
        $me.html("<u>" + text + "</u>");
      }, this));
    },
    linkifyTweetText: function(text) {
      text = text.replace(/\b(https?:\/\/[^\s+\"\<\>]+)/igm, "<a href=\"$1\" target=\"_blank\">$1</a>");
      text = text.replace(/(^|\s)@(\w+)/g, "$1<a href=\"http://www.twitter.com/$2\" target=\"_blank\">@$2</a>");
      return text.replace(/(^|\s)#(\w+)/g, "$1<a href=\"http://search.twitter.com/search?q=%23$2\" target=\"_blank\">#$2</a>");
    }
  };
}).call(this);

