
function  initMozTextOverflow(obj) {
  function re_render() {
    doMozTextOverflow(obj);
  }
  setTimeout(re_render,0);
}

function doMozTextOverflow(obj) {
  function _overflow(e) {
    var el = e.currentTarget;
    el.className = "_textOverflow";
  }

  function _underflow(e) {
    var el = e.currentTarget;
    el.className = "_textUnderflow";
  }

  obj.className = "_textUnderflow";
  obj.title = obj.innerHTML;
  obj.addEventListener("overflow", _overflow, false);
  obj.addEventListener("underflow", _underflow, false);
  obj.ins = document.createElement("ins");
  obj.ins.innerHTML="&hellip;";
  obj.appendChild(obj.ins);

  obj.onmousedown = function(e) {
    this.selectStartX = e.clientX - document.getBoxObjectFor(this).x;
  }

  obj.onmouseup = function(e) {
    this.selectStartX = null;
  }

  obj.onmousemove = function(e) {
    if(this.selectStartX!=null) {
      var mx =  e.clientX - this.selectStartX;
      var ex =   this.offsetWidth -  this.selectStartX;
    
      if( ( ex - mx) < (this.ins.offsetWidth+3) ) {
        if(this.className!="_textUnderflow") {
          this.className="_textUnderflow";
          this.scrollLeft=0;
          var box =  document.createElement("input");
          box.setAttribute("type","text");
          box.value=1111
          this.appendChild(box);
          box.select();        
          this.removeChild(box);
          this.focus();
        }
      } else {
        if(this.className!="_textOverflow")
          this.className="_textOverflow"
      }
      return false;
    }
  };
}