Comment and Uncomment

by Shashi Kumar Nagulakonda

HTML

<script src="http://rangy.googlecode.com/svn/trunk/dev/rangy-core.js"></script>
<div id="panel_html">HyperText Markup Language</div>
<div id="panel_js" e="d">JavaScript</div>
<div id="panel_css">Cascade Style Sheets</div>

CSS

div {
  width: 200px;
  height: 100px;
  border: 5px solid grey;
  display: inline-block;
}

JavaScript

$(document).keydown(keyDownHandler);

function keyDownHandler(e) {

  if (e.ctrlKey && e.shiftKey && e.keyCode == 75) {
    Comment();
  } else if (e.ctrlKey && e.shiftKey && e.keyCode == 85) {
    Uncomment();
  }
}

function Comment() {
  debugger;

  rangy.init();
  var sel = rangy.getSelection();

  //For text nodes only
  if (sel && sel.anchorNode && sel.anchorNode.nodeType === 3) {
    var node = $(sel.anchorNode);
    var text = node.text();
    var openLen = Math.min(sel.focusOffset, sel.anchorOffset);
    var closeLen = Math.max(sel.focusOffset, sel.anchorOffset);

    var openComment = "";
    var closeComment = "";

    if (node.closest("#panel_html").length) {
      openComment = "<--";
      closeComment = "-->";
    } else if (node.closest("#panel_js").length) {
      openComment = "/*";
      closeComment = "*/";
    } else if (node.closest("#panel_css").length) {
      openComment = "/*";
      closeComment = "*/";
    }

    var openSel = text.substring(0, openLen);
    var selText = text.substring(openLen, closeLen);
    var closeSel = text.substring(closeLen);

    var newText = openSel + openComment +
      selText + closeComment + closeSel;

    node.replaceWith(newText);

  }
}

function Uncomment() {
  debugger;

  rangy.init();
  var sel = rangy.getSelection();

  //For text nodes only
  if (sel && sel.anchorNode && sel.anchorNode.nodeType === 3) {
    var node = $(sel.anchorNode);
    var text = node.text();
    var openLen = Math.min(sel.focusOffset, sel.anchorOffset);
    var closeLen = Math.max(sel.focusOffset, sel.anchorOffset);

    var openComment = "";
    var closeComment = "";

    if (node.closest("#panel_html").length) {
      openComment = "<--";
      closeComment = "-->";
    } else if (node.closest("#panel_js").length) {
      openComment = "/*";
      closeComment = "*/";
    } else if (node.closest("#panel_css").length) {
      openComment = "/*";
      closeComment = "*/";
    }

    var openSel = text.substring(0,...