Source for "EZ Resize"

By Jared F
Has 7 other scripts.


// ==UserScript==
// @name           EZ resize
// @namespace      http://userscripts.org/users/25394
// @description    resize textareas with ease
// @include        *
// ==/UserScript==

(function(){

var resizing=null;

var txts=document.getElementsByTagName('textarea')


function findpos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function mousepos(e){
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
        return [posx,posy];
}


function mainmove(e){
    if (resizing){
        mpos=mousepos(e)
        pos=findpos(resizing)
        resizing.style.width=(mpos[0]-pos[0])+'px';
        if (resizing.type=="textarea"){
            resizing.style.height=(mpos[1]-pos[1])+'px';
        }
        resizing.blur();
    }
}

document.addEventListener('mouseup',function(){resizing=null;},false)
document.addEventListener('mousemove', mainmove, false)



for (var i=0;i<txts.length;i++){
    var text=txts[i];


    text.addEventListener('mousedown',function(e){
        pos=findpos(this)
        mpos=mousepos(e)
        if (mpos[0]>pos[0]+this.offsetWidth-10){
            if (mpos[1]>pos[1]+this.offsetHeight-10){
                resizing=this;
                this.blur();
            }
        }
    },true);

    
    text.addEventListener('mousemove',function(e){
        pos=findpos(this)
        mpos=mousepos(e)
        if (mpos[0]>pos[0]+this.offsetWidth-10){
            if (mpos[1]>pos[1]+this.offsetHeight-10){
                this.blur();
                this.style.cursor="nw-resize";return
            }
        }
        if (!resizing){
            this.style.cursor="auto";
        }
    },true);
}


var imps=document.getElementsByTagName('input');
for (var i=0;i<imps.length;i++){
    input=imps[i];
    if (input.type=="text" || !input.type){
        input.addEventListener('mousedown',function(e){
            pos=findpos(this)
            mpos=mousepos(e)
            if (mpos[0]>pos[0]+this.offsetWidth-10){
                resizing=this;
                this.blur();
            }
        },true);

        input.addEventListener('mousemove',function(e){
            pos=findpos(this)
            mpos=mousepos(e)
            if (mpos[0]>pos[0]+this.offsetWidth-10){
                this.blur();
                this.style.cursor="w-resize";return
            }
            if (!resizing){
                this.style.cursor="auto";
            }
        },true);
        


    
    }
}



})()