/* bb-коды */
function bbCode(id,tag1,tag2,what,def)
{
  var elem = document.getElementById(id);
  elem.focus();
  var scrolled = elem.scrollTop;
  var param = what == undefined ? '' : prompt(what,def==undefined?'':def);

  if(what != undefined && param == null) return false;

  if(typeof(elem.selectionStart)=='number' && typeof(elem.selectionEnd)=='number')
  {
    var selected = elem.value.substr(elem.selectionStart,elem.selectionEnd-elem.selectionStart);
    var caret = elem.selectionEnd;
    var text = tag2 == '' || tag2 == undefined ? selected + (param == '' ? tag1 : tag1.substr(0,(tag1.length-1))+'='+param+tag1.substr(tag1.length-1)) : (param == '' ? tag1 : tag1.substr(0,(tag1.length-1))+'='+param+tag1.substr(tag1.length-1)) + selected + tag2;
    elem.value = elem.value.substr(0,elem.selectionStart) + text + elem.value.substr(elem.selectionEnd);
    elem.setSelectionRange(caret+text.length-selected.length-(tag2 == '' || tag2 == undefined || selected.length > 0 ? 0 : tag2.length),caret+text.length-selected.length-(tag2 == '' || tag2 == undefined || selected.length > 0 ? 0 : tag2.length));
  }
  else if(document.selection)
  {
    var sel1 = document.selection.createRange();
    var sel2 = sel1.duplicate();
    var sel3 = elem.createTextRange();
    var len = sel1.text.length;
    sel1.text = tag2 == '' || tag2 == undefined ? sel1.text + (param == '' ? tag1 : tag1.substr(0,(tag1.length-1))+'='+param+tag1.substr(tag1.length-1)) : (param == '' ? tag1 : tag1.substr(0,(tag1.length-1))+'='+param+tag1.substr(tag1.length-1)) + sel1.text + tag2;
    sel1.collapse(true);
    sel2.moveToElementText(elem);
    sel2.setEndPoint('EndToEnd',sel1);
    sel3.moveStart('character',sel2.text.length - (tag2 == '' || tag2 == undefined || len > 0 ? 0 : tag2.length));
    sel3.collapse(true);
    sel1.select();
    sel3.select();
  }
  else { alert('Sorry, no support for your browser.'); return false; }
  elem.scrollTop = scrolled;
  return false;
}
