/*
**  TextAreaResizer script by Jason Johnston (jj@lojjic.net)
**  Created August 2003.  Use freely, but give me credit.
**
**  This script adds a handle below textareas that the user
**  can drag with the mouse to resize the textarea.
*/

function TextAreaResizer(elt) {
    this.element = elt;
    this.create();
}
TextAreaResizer.prototype = {
    create : function() {
	var elt = this.element;
	var thisRef = this;

	var h = this.handle = document.createElement("span");
	h.className = "resizer";
	Element.observe(h, "mousedown", function(evt){thisRef.dragStart(evt);})
	elt.parentNode.insertBefore(h, elt.nextSibling);
    },

    dragStart : function(evt) {
	var thisRef = this;
	this.dragStartY = evt.clientY;
	var height;
	if (document.defaultView && document.defaultView.getComputedStyle) {
	    height = document.defaultView.getComputedStyle(this.element, null).getPropertyValue("height");
	} else {
	    height = this.element.clientHeight
	}

	this.dragStartH = parseFloat(height);
	Event.observe(document, "mousemove", this.dragMoveHdlr=function(evt){thisRef.dragMove(evt);});
	Event.observe(document, "mouseup", this.dragStopHdlr=function(evt){thisRef.dragStop(evt);});
    },
    
    dragMove : function(evt) {
	var newHeight = this.dragStartH + evt.clientY - this.dragStartY;
	if (newHeight > 100) {
	    this.element.style.height = newHeight + "px";
	}
    },
    
    dragStop : function(evt) {
	Element.stopObserving(document, "mousemove", this.dragMoveHdlr);
	Element.stopObserving(document, "mouseup", this.dragStopHdlr);
    },
    
    destroy : function() {
	var elt = this.element;
	elt.parentNode.removeChild(this.handle);
	elt.style.height = "";
    }
};
