function init() {
  VideoToolbox.init();
  addHandlersToExternalLinks();
}

function addHandlersToExternalLinks() {
  var anchors = document.getElementsByTagName("a");
  for (var i = anchors.length; i-- > 0; ) {
    var a = anchors[i];
    if (a.hasAttribute("rel") && /\bexternal\b/.test(a.getAttribute("rel"))) {
      a.className += " external";
      a.onclick = openExternal;
    }
  }
}

function openExternal(aEvent) {
  var win = window.open(this.getAttribute("href"), "_blank");
  return !win;
}

var VideoToolbox = {

  init: function() {
    var objects = document.getElementsByTagName("object");
    for (var i = objects.length; i-- > 0; ) {
      var object = objects[i];
      if (object.data.substr(0, 34) != "http://flvs.daum.net/flvPlayer.swf")
        continue;

      var toolbox = document.createElement("ul");
      toolbox.className = "toolbox";
      var li = document.createElement("li");
      li.className = "openPopup";
      STD.addEventListener(li);
      li.addEventListener("click", this.openPopup, false);
      toolbox.appendChild(li);
      object.parentNode.insertBefore(toolbox, object.nextSibling);
    }
  },

  openPopup: function(aEvent) {
    window.open(aEvent.target.parentNode.previousSibling.data.replace("flvPlayer", "sflvPlayer_full"), "popupMovie",
      "width=649,height=509,resizable=no,scrollbars=no,status=no,toolbar=no").focus();
  }

}

var SHLoader = {

  init: function(aPath) {
    var codes = document.getElementsByName("code");
    if (codes.length == 0)
      return;

    this.loadStylesheet(aPath + "sh.css");
    this.loadScript(aPath + "shCore.js");

    var brushes = { css: "shBrushCss", js: "shBrushJScript", php: "shBrushPhp", xml: "shBrushXml" };
    var loaded = {};
    for (var i = codes.length; i-- > 0; ) {
      if (/\b(css|js|php|xml)\b/.test(codes[i].className) && !loaded[RegExp.$1]) {
        this.loadScript(aPath + brushes[RegExp.$1] + ".js");
        loaded[RegExp.$1] = true;
      }
    }

    window.addEventListener("load", function() {
      dp.SyntaxHighlighter.HighlightAll("code");
    }, false);
  },

  loadScript: function(aUrl) {
    document.write("<script type='text/javascript' src='", aUrl, "'><\/script>");
  },

  // 참조: http://cse-mjmcl.cse.bris.ac.uk/blog/2005/08/18/1124396539593.html
  loadStylesheet: function(aUrl) {
    if (document.createStyleSheet) {
      document.createStyleSheet(aUrl); // IE
    } else {
      var link = document.createElement("link");
      link.rel = "stylesheet";
      link.href = aUrl; //"data:text/css," + escape("@import url('" + aUrl + "');");
      document.getElementsByTagName("head")[0].appendChild(link);
    }
  }

}
