function storeCursor(txtEl) {
    if (txtEl.createTextRange) {
        txtEl.cPos = document.selection.createRange().duplicate();
    }
}

function insertAtCursor(txtEl, txt) {
    if ((txtEl.selectionStart != undefined) && txtEl.setSelectionRange) {
        var oldString = txtEl.value;
        var cPos = txtEl.selectionStart + txt.length;
        var start = oldString.slice(0, txtEl.selectionStart);
        var end = oldString.slice(txtEl.selectionEnd);
        newString = start + txt + end;
        txtEl.value = newString;
        txtEl.setSelectionRange(cPos, cPos);
    }
    else {
        if (txtEl.cPos && txtEl.createTextRange) {
            txtEl.cPos.text = txt;
        }
        else {
            txtEl.value += txt;
        }
    }
    txtEl.focus();
}
