// Initializer
  function init() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;
    iTextarea.init();
  }
  if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, false);
  }
  if (/WebKit/i.test(navigator.userAgent)) { // sniff
    var _timer = setInterval(function() {
        if (/loaded|complete/.test(document.readyState)) {
          clearInterval(_timer);
          init();
        }
    }, 10);
  }
  /*@cc_on @*/
  /*@if (@_win32)
  document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
  var script = document.getElementById("__ie_onload");
  script.onreadystatechange = function() {
    if (this.readyState == "complete") {
      init(); // call the onload handler
    }
  };
  /*@end @*/
  window.onload = init;

// Textarea Manipulations
  var iTextarea = function() {
    var fields = new Array();
    var fieldLengths = new Array();
    var timer;
    return {
      init: function() {
        fields = document.getElementsByTagName("textarea");
        for (var i=0; i<fields.length; i++) {
          try {
            fields[i].addEventListener('keypress', iTextarea.resize, false);
          } catch(e) {}
          try {
            fields[i].attachEvent('onkeypress', iTextarea.resize);
          } catch(e) {}
          fields[i].style.overflow = 'hidden';
        }
        iTextarea.resize();
      },
      resize: function() {
        for (var i=0; i<fields.length; i++) {
          if (fieldLengths[i]!=fields[i].value.length) {
            var element = fields[i];
            element.style.paddingBottom = element.style.height;
            element.style.height = '16px';
            var height = element.scrollHeight;
            var extra = 16;
            if (element.scrollWidth>element.offsetWidth) extra+= 16;
            element.style.height = (height+extra)+"px";
            element.style.paddingBottom = "0px";
            fieldLengths[i] = fields[i].value.length;
          }
        }
        clearTimeout(timer);
        timer = setTimeout("iTextarea.resize()", 500);
      }
    }
  }();
