window.addEventListener("load", function()
{
if (navigator.appName != "Microsoft Internet Explorer") // Older IE gets Microsoft Internet Explorer, so works with newer that get Netscape
{
var pre = document.getElementsByTagName('pre'), pl = pre.length;
for (var i = 0; i < pl; i++)
{
var num = pre[i].innerText.replace(/\s+$/g, "").split(/\n/).length;
pre[i].innerHTML = '' + pre[i].innerHTML + '';;
for (var j = 0; j < num; j++)
{
var line_num = pre[i].getElementsByTagName('span')[0];
line_num.innerHTML += '' + (j + 1) + '';
}
}
}
})
window.addEventListener("click", function(e)
{
function selectCode(e)
{
var sel = window.getSelection();
if (sel)
{
sel.removeAllRanges();
var range = document.createRange();
try
{
var span = e.firstChild, s = span;
if (span)
if (span.tagName == "SPAN")
if (span.className == "line-number")
s = span.nextSibling;
range.setStartBefore(s);
range.setEndAfter(e.lastChild);
}
catch (er)
{
var span = e.firstChild;
if (span)
if (span.tagName == "SPAN")
if (span.className == "line-number")
span.style.display = "none";
range.selectNodeContents(e);
};
sel.addRange(range);
}
}
function copyToClipboard(e)
{
var sel = window.getSelection();
if (sel)
{
selectCode(e);
document.execCommand('copy');
sel.removeAllRanges();
}
}
var tag = e.target.tagName;
if (tag)
{
if (e.offsetY < 8)
{
if (tag == "PRE") // select code
selectCode(e.target);
}
else
if (tag == "PRE")
if (e.offsetY > e.target.clientHeight - 8) // copy
copyToClipboard(e.target);
}
})