// ==UserScript==
// @name           EZ resize
// @namespace      http://userscripts.org/users/25394
// @description    resize textareas with ease
// @include        *
// ==/UserScript==

//This script is from userscripts.org
//The original author is Jared F(http://userscripts.org/people/25394)


(function(){

function addEvent( obj, type, fn ) { 
	if ( obj.attachEvent ) { 
		obj["e"+type+fn] = fn; 
		obj[type+fn] = function() { 
			obj["e"+type+fn]( window.event ); 
		} 
		obj.attachEvent( "on"+type, obj[type+fn] ); 
	} else 
		obj.addEventListener( type, fn, false ); 
} 
function removeEvent( obj, type, fn ) { 
	if ( obj.detachEvent ) { 
		obj.detachEvent( "on"+type, obj[type+fn] ); 
		obj[type+fn] = null; 
	} else 
		obj.removeEventListener( type, fn, false ); 
}

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){
    e = e || window.event;
    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();
    }
}

addEvent(document, 'mouseup',function(){resizing=null;})
addEvent(document, 'mousemove', mainmove)



for (var i=0;i<txts.length;i++){
    var text=txts[i];


    addEvent(text, '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();
            }
        }
    });

    
    addEvent(text, '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";
        }
    });
}


var imps=document.getElementsByTagName('input');
for (var i=0;i<imps.length;i++){
    input=imps[i];
    if (input.type=="text" || !input.type){
        addEvent(input, 'mousedown',function(e){
            pos=findpos(this)
            mpos=mousepos(e)
            if (mpos[0]>pos[0]+this.offsetWidth-10){
                resizing=this;
                this.blur();
            }
        });

        addEvent(input, '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";
            }
        });
        


    
    }
}



})()

