function insertCopyToClipboardButton(wrapper_id) {
	if (!document.getElementById || !document.getElementById(wrapper_id)) {
		// Браузер не поддерживает необходимые нам функции return false;
	}
	else {
		wrapper = document.getElementById(wrapper_id);
	}

	if (wrapper && wrapper.parentNode.insertBefore) {
		button = document.createElement("a");
		button.setAttribute("href", "#");
		button.innerHTML = "[Скопировать в буфер]";
		button.onclick = function() {
			result = copyToClipboard(innerText(wrapper));
			if (result) {
			    alert('Ссылка скопирована в буфер обмена.');
			}
			else {
			    alert('К сожалению, Ваш браузер не позволяет работать с буфером обмена.');
			}

			return false;
		}

		// emulate insertAfter:
		wrapper.parentNode.insertBefore(button, wrapper.nextSibling);
	}
	else {
		return false
	}
}


function innerText(node) {
	// @author Dethe Elza
	// @article "XML Matters: Beyond the DOM. Tips and tricks for a friendlier DOM"
	// @url http://www-128.ibm.com/developerworks/xml/library/x-matters41.html
	if (node.nodeType == 3 || node.nodeType == 4) {
		return node.data;
	}

	var i;
	var returnValue = [];
	for (i = 0; i < node.childNodes.length; i++) {
		returnValue.push(innerText(node.childNodes[i]));
	}

	return returnValue.join('');
}


function copyToClipboard(content) {
	if (window.clipboardData && window.clipboardData.setData) {
		window.clipboardData.setData("Text", content);
		return true;
	}
	else {
		try {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		}
		catch (e) {
			return false;
		}

		var clipboard = Components.classes["@mozilla.org/widget/clipboard;1"].getService();
		if (clipboard) {
			clipboard = clipboard.QueryInterface(Components.interfaces.nsIClipboard);
		}

		var transferable = Components.classes["@mozilla.org/widget/transferable;1"].createInstance();
		if (transferable) {
			transferable = transferable.QueryInterface(Components.interfaces.nsITransferable);
		}

		if (clipboard && transferable) {
			// тип передаваемых данных transferable.addDataFlavor("text/unicode");
			var textObj = new Object();
			var textObj = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
			if (textObj) {
				textObj.data = content;
				// Упаковываем данные в контейнер
				transferable.setTransferData("text/unicode", textObj, content.length*2);
				var clipid=Components.interfaces.nsIClipboard;
				clipboard.setData(transferable,null,clipid.kGlobalClipboard);

				return true;
			}
		}

		return false;
	}
}
