<script type="text/javascript">
function editTab()
{
var code, sel, tmp, r;
var tabs="";
event.returnValue = false;
sel =event.srcElement.document.selection.createRange();
r = event.srcElement.createTextRange();
switch (event.keyCode)
{
case (8):
if (!(sel.getClientRects().length > 1))
{
event.returnValue = true;
return;
}
code = sel.text;
tmp = sel.duplicate();
tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top);
sel.setEndPoint("startToStart", tmp);
sel.text = sel.text.replace(/^\t/gm, "");
code = code.replace(/^\t/gm, "").replace(/\r\n/g, "\r");
r.findText(code);
r.select();
break;
case (9):
if (sel.getClientRects().length > 1)
{
code = sel.text;
tmp = sel.duplicate();
tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top);
sel.setEndPoint("startToStart", tmp);
sel.text = "\t"+sel.text.replace(/\r\n/g, "\r\t");
code = code.replace(/\r\n/g, "\r\t");
r.findText(code);
r.select();
}
else
{
sel.text = "\t";
sel.select();
}
break;
case (13):
tmp = sel.duplicate();
tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top);
tmp.setEndPoint("endToEnd", sel);
for (var i=0; tmp.text.match(/^[\t]+/g) && i<tmp.text.match(/^[\t]+/g)[0].length; i++)
tabs += "\t";
sel.text = "\r\n"+tabs;
sel.select();
break
default:
event.returnValue = true;
break;
}
}
</script>