function so_getText(obj) 
{
	if (obj.nodeType == 1) 
		return obj.nodeValue;
	var txt = new Array(), i = 0;
   	while(obj.childNodes[i]) {
		txt[txt.length] = so_getText(obj.childNodes[i]);
		i++;
	}
	return txt.join("");
}


var selectedString = '';

function getSelectedHTML() 
{
	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 = so_getText(object);	
			}
			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();
	}
}

function copySelection() 
{
	setTimeout("getSelectedHTML()",50);
}

document.onmouseup = copySelection;
document.onkeyup = copySelection;
