function get_selection(ta) {
  var bits = [ta.value,'','','']; 
  if (document.selection) {
    var vs = '#$%^%$#';
    var tr=document.selection.createRange()
    if (tr.parentElement()!=ta) {
      return null;
    }
    bits[2] = tr.text;
    tr.text = vs;
    fb = ta.value.split(vs);
    tr.moveStart('character',-vs.length);
    tr.text = bits[2];
    bits[1] = fb[0];
    bits[3] = fb[1];
  } else {
    if (ta.selectionStart == ta.selectionEnd) {
      return null;
    }
    bits=(new RegExp('([\x00-\xff]{'+ta.selectionStart+'})([\x00-\xff]{'+(ta.selectionEnd - ta.selectionStart)+'})([\x00-\xff]*)')).exec(ta.value);
  }
  return bits;
}
function add_tag(ta,tag,other) {
  bits = get_selection(ta);
  if (tag == 'DT') {
    tag_start = '' + datetime + '';
    tag_end = '';
  } else if (tag == 'USER') {
    tag_start = '' + username + '';
    tag_end = '';
  } else if (other == null) {
    tag_start = '[' + tag + ']';
    tag_end = '[/' + tag + ']';
  } else {
    tag_start = '[' + tag + '=' + other + ']';
    tag_end = '[/' + tag + ']';
  }
  if(bits) {
    ta.value = bits[1] + tag_start + bits[2] + tag_end + bits[3];
  } else {
    ta.value = ta.value + tag_start + tag_end;
  }
  previewIt();
}
