    var text_input = new Array();
    var active_element = '';
    var new_text = '';
    var caret_pos = new Array();
    var dark = true;
    var blinking = false;
    var text_length = 0;
    var target = '';
    function set_focus(element, tar){
      document.getElementById('input_dummy').focus();
      if(caret_pos[active_element.id]==0){
        blinking = active_element.id + '_char_' + (caret_pos[active_element.id]);
      }
      else if(caret_pos[active_element.id]>0){
        blinking = active_element.id + '_char_' + (caret_pos[active_element.id]-1);
      }
      if(document.getElementById(blinking)){
        document.getElementById(blinking).style.borderColor = 'transparent';
      }
      if (active_element) active_element.style.border = '1px solid #AAAAAA';
      
      target = document.getElementById(tar);
      
      active_element = element;
      if (typeof text_input[active_element.id] == 'undefined'){
        text_input[active_element.id] = new Array()
      }
      if(typeof caret_pos[active_element.id] == 'undefined'){
        caret_pos[active_element.id] = 0;
      }
      if(blinking==false) start_blinking();
      write_text(active_element);
      active_element.style.border = '1px solid #000000';
    }
    
    function special_keys(e){
      if(e.keyCode == 8){
        if (caret_pos[active_element.id]>0) text_input[active_element.id].splice(caret_pos[active_element.id]-1, 1);
        if (caret_pos[active_element.id]>0) caret_pos[active_element.id]--;
      }
      if(e.keyCode == 46){
        text_input[active_element.id].splice(caret_pos[active_element.id], 1);
      }
      if(e.keyCode == 37){
        if(caret_pos[active_element.id]>0) caret_pos[active_element.id]--;
      }
      if(e.keyCode == 39){
        if(caret_pos[active_element.id]<text_input[active_element.id].length) caret_pos[active_element.id]++;
      }
      return write_text(active_element);
    }
    
    function add_char(e){
      var allowed_characters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890äöüÄÖÜ ";
      var allowed_characters=allowed_characters +"&?!\"*=+.,-é";
      
      text_length = 0;
      for (var i = 0; i<text_input[active_element.id].length;i++){
        if (text_input[active_element.id][i].search('<img src')== -1){
          text_length++;
        }
        else{
          text_length = text_length+2;
        }
      }
      if(text_length<30){
        if(!e.keyCode){
            if(e.which != 0){
              if(allowed_characters.search(String.fromCharCode(e.which)) != -1){
                text_input[active_element.id].splice(caret_pos[active_element.id], 0, String.fromCharCode(e.which));
                caret_pos[active_element.id]++;
                return write_text(active_element);
              }
            }
        }
        else if(typeof e.which == 'undefined'){
          if(allowed_characters.search(String.fromCharCode(e.keyCode)) != -1){
            text_input[active_element.id].splice(caret_pos[active_element.id], 0, String.fromCharCode(e.keyCode));
            caret_pos[active_element.id]++;
            return write_text(active_element);
          }
        }
      
        else if(e.keyCode == e.which && e.keyCode != 8){
          if(allowed_characters.search(String.fromCharCode(e.which)) != -1){
            text_input[active_element.id].splice(caret_pos[active_element.id], 0, String.fromCharCode(e.keyCode));
            caret_pos[active_element.id]++;
            return write_text(active_element);
          }
        }
      }
    }

    function add_pikto(img_src, element, tar){
      target = document.getElementById(tar);
      db_text = '';
      text_length = 0;
      set_focus(element, tar);
      for (var i = 0; i<text_input[element.id].length;i++){
        if (text_input[element.id][i].search('<img src')== -1){
          text_length++;
        }
        else{
          text_length = text_length+2;
        }
      }
      if(text_length<29){
        image = '<img src="' + img_src + '.gif">';
        text_input[element.id].splice(caret_pos[element.id], 0, image);
        caret_pos[element.id]++;
        return write_text(element);
      }
      document.getElementById('input_dummy').focus();
    }
    
    function write_text(element){
      db_text = '';
      new_text = '';
      text_length = 0;

      for (var i = 0; i<text_input[element.id].length;i++){
      float_string = 'float: left;';
      if (text_input[element.id][i].search('<img src')== -1){
        output_txt = text_input[element.id][i].replace(' ', '&nbsp');
        margin_text = ' margin-top: 5px; ';
        db_text = db_text + text_input[element.id][i];
      }
      else{
        output_txt = text_input[element.id][i];
        db_text = db_text + text_input[element.id][i].replace('<img src="rc/', '$~').replace('.gif">', '~$');
        
        margin_text = '';
      }
        if ((i+1)==caret_pos[element.id])
          new_text = new_text + '<div id="' + element.id + '_char_' + i + '" style="'+ float_string + margin_text + ' border-right: 1px solid; margin-right: -1px;" onclick="set_caret('+i+',\''+ element.id+'\')">' + output_txt + '</div>';
        else if(i == caret_pos[element.id] && caret_pos[element.id] == 0)
          new_text = new_text + '<div id="' + element.id + '_char_' + i + '" style="'+ float_string + margin_text + ' border-left: 1px solid; margin-left: -1px;" onclick="set_caret('+i+',\''+ element.id+'\')">' + output_txt + '</div>';
        else
          new_text = new_text + '<div id="' + element.id + '_char_' + i + '" style="'+ float_string + margin_text + '" onclick="set_caret('+i+',\''+ element.id+'\')">' + output_txt + '</div>';
      }
      if(text_input[element.id].length == 0){
        new_text = '<div id="' + element.id + '_char_0" style="float: left; margin-top: 5px; border-left: 1px solid; margin-left: -1px;" onclick="set_caret(\'0\', \'DivInputField1\')">&nbsp;</div>';
        element.innerHTML = new_text;
      }
      element.innerHTML = new_text;
      target.value = db_text;
      return db_text;
    }
    
    function set_caret(id, active_id){
      active_element = document.getElementById(active_id);
      caret_pos[active_element.id] = id+1;
      write_text(active_element);
      document.getElementById('input_dummy').focus();
    }
    
    function start_blinking(){
      blinking = true;
      if(caret_pos[active_element.id]==0){
        blinking = active_element.id + '_char_' + (caret_pos[active_element.id]);
      }
      else if(caret_pos[active_element.id]>0){
        blinking = active_element.id + '_char_' + (caret_pos[active_element.id]-1);
      }
      if(document.getElementById(blinking)){
      if (dark == true)
        document.getElementById(blinking).style.borderColor = 'transparent';
      else if (dark == false)
        document.getElementById(blinking).style.borderColor = '#000000';
      dark = !dark;
      }
      window.setTimeout('start_blinking()', 600);
    }
    
    function set_inactive(){
      if(typeof active_element != 'undefined' && active_element != '') active_element.style.borderColor = "#AAAAAA";
      if(caret_pos[active_element.id]==0){
        blinking = active_element.id + '_char_' + (caret_pos[active_element.id]);
      }
      else if(caret_pos[active_element.id]>0){
        blinking = active_element.id + '_char_' + (caret_pos[active_element.id]-1);
      }
      if(document.getElementById(blinking)){
        document.getElementById(blinking).style.borderColor = 'transparent';
      }
      active_element='';
    }
    
    function set_active(){
      if(typeof active_element != 'undefined' && active_element != '') active_element.style.borderColor = "#000000";
    }
    
    function reload_text(text, tar, form_target){
      if(text.length>0){
        txt_tar = document.getElementById(tar);
        if (typeof text_input[txt_tar.id] == 'undefined'){
          text_input[txt_tar.id] = new Array()
        }
        if(text.slice(0, 2) != '$~'){
          text_input[txt_tar.id].push(text.slice(0, 1));
          text = text.slice(1);
        }
        else{
          end_pos = text.search(/\~\$/) + 2;
          text_input[txt_tar.id].push( (text.slice(0, end_pos)).replace(/\$\~/, '<img src="rc/').replace(/\~\$/, '.gif">') );
          text = text.slice(end_pos);
        }
        if(text.length>0){
          reload_text(text, tar, form_target);
        }
        else{
          target = document.getElementById(form_target);
          write_text(document.getElementById(tar));
        }
        caret_pos[tar]=0;
      }
    }
