/********************************************************
* file:  textarea.js
* type:  javascript
* lib:   js
* autor: Henning Suedkamp
* date:  2011-04
*********************************************************/

function ResizeTextarea(id) {
  if(document.getElementById(id)) {   
    var t = document.getElementById(id);
    t.style.overflow = 'hidden';
    t.onkeyup = function() {
      var nls = this.value.split('\n');
      var count = nls.length;
      for(var i = 0; i < nls.length; i++) {
        if(nls[i].length > this.cols) {
          count += Math.floor(nls[i].length / this.cols) + 1;
        }
      }
      if(count > 6) {
        var tmp = count * 20;
        this.style.height = tmp + 'px';
      }
      else {
        this.style.height = '120px';
      }
    }
  }
}

function SetSmilie(id, emo) {
  Insert(id, ' ' + emo + ' ', '');
}

function SetBBCode(id, tag, end) {
  Insert(id, tag, end);
}

function Insert(id, aTag, eTag) {
  var textarea = document.getElementById(id);
  textarea.focus();
  
  if(typeof document.selection != 'undefined') { // ie
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    range = document.selection.createRange();
    if(insText.length == 0) {
      range.move('character', -eTag.length);
    }
    else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);
    }
    range.select();
  }
  else if(typeof textarea.selectionStart != 'undefined') { // firefox
    var start = textarea.selectionStart;
    var end = textarea.selectionEnd;
    var insText = textarea.value.substring(start, end);
    textarea.value = textarea.value.substr(0, start) + aTag + insText + eTag + textarea.value.substr(end);
    var pos;
    if(insText.length == 0) {
      pos = start + aTag.length;
    }
    else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    textarea.selectionEnd = pos;
    textarea.selectionStart = pos;
  }
  else {
    textarea.value += aTag + eTag;
    textarea.focus();
  }
}

