function getMarkierterText() {
  var formularfeld=document.getElementById('textarea');
  var browser = (formularfeld.textLength>=0)?1:(((parseInt(navigator.appVersion)>=4) && (((navigator.userAgent.toLowerCase().indexOf("msie")!=-1)&&(navigator.userAgent.toLowerCase().indexOf("opera")==-1))))?2:0);
  var selected = '';

  switch (browser) {
    case 1:
      selected=formularfeld.value.substring(formularfeld.selectionStart,formularfeld.selectionEnd);
      break;
    case 2:
      if(formularfeld.isTextEdit){
        formularfeld.focus();
        var sel = document.selection;
        var rng = sel.createRange();
        rng.colapse;
        if((sel.type == "Text" || sel.type == "None") && rng != null){
          if(rng.text.length > 0) selected = rng.text;
        }
      }
      break;
  }
  return selected;
}

function hinzufuegen(zeichenkette) {
  var formularfeld=document.getElementById('textarea');
  var browser = (formularfeld.textLength>=0)?1:(((parseInt(navigator.appVersion)>=4) && (((navigator.userAgent.toLowerCase().indexOf("msie")!=-1)&&(navigator.userAgent.toLowerCase().indexOf("opera")==-1))))?2:0);
  formularfeld.focus();

  switch(browser) {
    case 1: // mozilla, firebird, netscape
      endtext=formularfeld.value.substring(formularfeld.selectionEnd,formularfeld.value.length);
      starttext=formularfeld.value.substring(0,formularfeld.selectionStart);
      formularfeld.value=starttext+zeichenkette+endtext;
      formularfeld.selectionEnd=formularfeld.selectionStart=starttext.length+zeichenkette.length;
      break;
    case 2: // msie
      var sel = document.selection;
      var rng = sel.createRange();
      rng.colapse;
      if((sel.type == "Text" || sel.type == "None") && rng != null) {
        rng.text = zeichenkette;
      } else {
        formularfeld.value+=zeichenkette;
      }
      break;
    default:
      formularfeld.value+=zeichenkette;
  }
}
function codeHinzufuegen() {
  var text = getMarkierterText();
  if (text == '') {
    text = prompt('Wie lautet der präformatierte Text?','');
    if (text) {
      hinzufuegen('[CODE]'+text+'[/CODE]');
    }
  } else {
    hinzufuegen('[CODE]'+text+'[/CODE]');
  }
}
function listeHinzufuegen() {
  var listentyp = prompt("Welchen Typ soll die Liste haben? '1' für nummerierte Liste, 'A' für eine mit Buchstaben nummerierte Liste. Für eine unnummerierte Liste einfach das Eingabefeld leer lassen.",'');
  var eingabe;
  var hinzuText;
  if(!listentyp && listentyp != '')
    return;
  if (listentyp != '')
    hinzuText = '[LIST='+listentyp+']';
  else
    hinzuText = '[LIST]';
  var i=0;
  while (1) {
    i++;
    eingabe = prompt('Wie lautet der '+i+'. Listeneintrag? (Eingabefeld leer lassen um die Liste abzuschließen)','');
    if (eingabe && (eingabe != '')) {
      hinzuText = hinzuText + "\n[*]"+eingabe;
    } else {
      break;
    }
  }
  hinzuText = hinzuText + "\n[/LIST]";
  hinzufuegen(hinzuText);
}
function linkHinzufuegen() {
  var adresse = prompt('Ziel-URL','http://');
  if (adresse && (adresse!='')) {
    var beschriftung = prompt('Link-Name (optional)',getMarkierterText());
    if (beschriftung && (beschriftung!='')) {
      hinzufuegen('[URL='+adresse+']'+beschriftung+'[/URL]');
    } else {
      hinzufuegen('[URL]'+adresse+'[/URL]');
    }
  }
}
function mailHinzufuegen() {
  var adresse = prompt('E-Mail-Adresse','');
  if (adresse && (adresse!='')) {
    var beschriftung = prompt('Link-Name (optional)',getMarkierterText());
    if (beschriftung && (beschriftung!='')) {
      hinzufuegen('[EMAIL='+adresse+']'+beschriftung+'[/EMAIL]');
    } else {
      hinzufuegen('[EMAIL]'+adresse+'[/EMAIL]');
    }
  }
}
function tagHinzufuegen(tag, frageText, defaultText) {
  var text = prompt(frageText,defaultText);
  if (text && (text!='')) {
    hinzufuegen('['+tag+']'+text+'[/'+tag+']');
  }
}
