textareaでタブ入力

ここまで書いといてなんだが、textarea走査して頭にタブ入れてコピペで使い回せばいーじゃん、というのが後で浮かんだ。

var ta = document.getElementsByTagName( "textarea" );
for( var i in ta ) {
    ta[i].onselect = ta[i].onclick = ta[i].onkeyup = storeCaret;
    ta[i].onkeydown = keypress;
}
function storeCaret( ) {
    if( this.createTextRange )
        this.caretPos = document.selection.createRange( ).duplicate( );
    else if( this.selectionStart )
        this.caretPos = this.selectionStart;
    else
        this.caretPos = 0;
}
function keypress( e ) {
    e = ( window.event ) ? window.event : e;
    if( e.keyCode == 9 ) {
        insertAtCaret( this, "\t" );
        e.preventDefault( );
        this.focus( );
        return false;
    }
}
function insertAtCaret( tarea, text ) {
    if( tarea.createTextRange && tarea.caretPos ) {
        tarea.caretPos.text =
        ( tarea.caretPos.text.charAt( tarea.caretPos.text.length - 1) == ' ' )
            ? text + ' ' : text;
    }
    else if( tarea.selectionStart && tarea.caretPos ) {
        tarea.value = tarea.value.substr( 0, tarea.caretPos )
                    + text
                    + tarea.value.substr( tarea.caretPos );
    }
    else {
        tarea.value = text + tarea.value;
    }
}

どっか海外の掲示板からコード拝借したんだが場所忘れた。