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 "";
	}
}

