  function replaceSelection(obj, transform) {
    if (typeof obj === 'string') obj = document.getElementById(obj);
    var scrollTop = obj.scrollTop;
    var start;
    var end;
    var sel;
    if (document.selection) {
      obj.focus();
      var rndstr = '~'+Math.random()+'~';
      var range = document.selection.createRange();
      sel = range.text;
      range.text = rndstr;
      start = obj.value.indexOf(rndstr);
      end = start+rndstr.length;
    } else {
      start = obj.selectionStart;
      end = obj.selectionEnd;
      sel = obj.value.substr(start, end - start);
    }
    var pre = obj.value.substring(0, start);
    var post = obj.value.substring(end);
    sel = transform(sel);
    obj.value = pre + sel + post;
    var curPos = start + sel.length;
    if (obj.createTextRange)
    {
      var range = obj.createTextRange();
      range.collapse(true);
      range.moveEnd('character', curPos);
      range.moveStart('character', curPos);
      range.select();
    } else {
      obj.focus();
      obj.selectionStart = obj.selectionEnd = curPos;
    }
    obj.scrollTop = scrollTop;
  }

  function URLProtocol(url) {
    var re = /^(\w+):\/\//;
    var m = re.exec(url);
    return m && m[0];
  }

  function doImage(obj) {
    replaceSelection(obj, function(txt) {
      var url = prompt('Wklej link do zdjęcia:','http://');
      if (!url || url =='' || url == 'http://') return txt;
      if (!URLProtocol(url)) url = 'http://' + url;
      return '<img src="' + url + '" class="pic_bb">';
     } );
  }

  function doURL(obj) {
    replaceSelection(obj, function(txt) {
      url = prompt('Wklej link:', txt ? txt : 'http://');
      if (!url || url =='' || url == 'http://') return txt;
      if (!URLProtocol(url)) url = 'http://' + url;
      if (txt == '') txt=url;
      return '<a href="' + url + '">' + txt + '</a>';
    } );
  }

  function doAddTags(obj,tag1,tag2) {
    replaceSelection(obj, function(txt) { return tag1 + txt + tag2 } );
  }

