function cur_ins(field, startTag, endTag, offset) {
  field.focus();
  if (document.getSelection) { //FF, NS
    var scrollTop, scrollLeft;
    if (field.type == 'textarea' && typeof field.scrollTop != 'undefined') {
      scrollTop = field.scrollTop;
      scrollLeft = field.scrollLeft;
    }
  selStart = field.selectionStart;
  selEnd = field.selectionEnd;
  text = field.value.substring(selStart, selEnd);
  field.value = field.value.substring(0, selStart) + startTag + text + endTag + field.value.substring(selEnd);
  if (typeof scrollTop != 'undefined') {
    field.scrollTop = scrollTop;
    field.scrollLeft = scrollLeft;
  }
  if (text.length > 0) {
    if (offset != 0) {
      field.selectionEnd = selStart + startTag.length /* + text.length */ - offset;
    } else {
      field.selectionEnd = selStart + startTag.length + text.length + endTag.length;
    }
  } else {
     field.selectionEnd = selStart + startTag.length;
  }
  field.selectionStart = field.selectionEnd;
} else
if (document.selection) { //IE
    marker = document.selection.createRange();
    text = marker.text;
    marker.text = startTag+text+endTag;
    marker = document.selection.createRange();
    if (text.length > 0) {
      if (offset != 0) {
        marker.move('character', startTag.length /* + text.length */ - offset);
      } else {
        marker.move('character', startTag.length + text.length + endTag.length + offset);
      }
    } else {
      marker.move('character', -(endTag.length));
    }
    marker.select();
 }
}
