var selectedString="";
 
function getSelectedHTML() {
  selectedString="";
  var rng=undefined;
  if (window.getSelection) {
    selobj = window.getSelection();
    if (!selobj.isCollapsed) {
      if (selobj.getRangeAt) {
        rng=selobj.getRangeAt(0);
      }
      else {
        rng = document.createRange();
        rng.setStart(selobj.anchorNode,selobj.anchorOffset);
        rng.setEnd(selobj.focusNode,selobj.focusOffset);
      }
      if (rng) {
        DOM = rng.cloneContents();
        object = document.createElement('div');
        object.appendChild(DOM.cloneNode(true));
        selectedString=object.innerHTML;
      }
      else {
        selectedString=selobj;
      }
 }
  }
  else if (document.selection) {
    selobj = document.selection;
    rng = selobj.createRange();
    if (rng && rng.htmlText) {
      selectedString = rng.htmlText;
    }
    else if (rng && rng.text) {
      selectedString = rng.text;
    }
  }
  else if (document.getSelection) {
    selectedString=document.getSelection();
  }
  selectedString = cleanSelectedString(selectedString);
}
 
function copySelection() {
  setTimeout("getSelectedHTML()",50);
}
 
document.onmouseup=copySelection;
document.onkeyup=copySelection;
 
function cleanSelectedString(theString)
{
 var comments = theString.match(/<!--/gi);
 var temp = "";
 if(comments != undefined)
 {
  for(i=0;i<comments.length;i++)
  {
   var temp = theString.substring(theString.search(/<!--/gi),theString.search(/-->/gi)+3);
   theString = theString.replace(temp,"");
  }
 }
 var regexp = /(<\/?[A-Z]+[0-9]?)\s?[^>]*>/gi
 theString = theString.replace(regexp, "$1>");
 var regexp2 = /<\/?[A-Z]+[0-9]?\s?>/gi
 theString = theString.replace(regexp2, function(m) { return returnTags(m);});
 var regexp_spaces = /\s+?\s*/gi
 theString = theString.replace(regexp_spaces, " "); 
 var regexp_br = /(<br>)+?\s?(<br>\s*)*/gi
 theString = theString.replace(regexp_br, "<br>"); 
 return theString;
}
 
function returnTags(thematch)
{ 
 var regtag = /<\/?(h[1-6]|a|area|ul|ol|dl|dd|dt|li|table|td|tr|th|p|hr|br)>/i
 if(regtag.test(thematch))
 { 
  return thematch;
 } 
 else 
 {
  return "";
 }
}
