/*
 * jqDnR - Minimalistic Drag'n'Resize for jQuery.
 *
 * Copyright (c) 2007 Brice Burgess <bhb@iceburg.net>, http://www.iceburg.net
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * $Version: 2007.08.19 +r2
 */

(function($){
$.fn.jqDrag=function(h){
	return i(this,h,'d');
};
$.fn.jqResize=function(h){
	return i(this,h,'r');
};
$.jqDnR={
	dnr:{},
	e:0,
	drag:function(v){
		var 
			left = M.X+v.pageX-M.pX,
			top = M.Y+v.pageY-M.pY;
		(M.W+left>=M.pW-150&&left<150) && (E.css({left:left}));
		(M.H+top<=M.pH+250&&top>-250) && (E.css({top:top}));
		return false;
	},
	stop:function(){
		E.css('opacity',M.o);
		$().unbind('mousemove',J.drag).unbind('mouseup',J.stop);
	}
};
var 
	J=$.jqDnR,M=J.dnr,E=J.e,
	i=function(e,h,k){
		return e.each(function(){
			_this = this;
			h=(h)?$(h,e):e;
			 h.bind('mousedown', {e:e,k:k},function(v){
				var d=v.data,p={};
				E=d.e;
				 // attempt utilization of dimensions plugin to fix IE issues
				if(E.css('position') != 'relative'){
					try{E.position(p);}
					catch(e){}
				}
				M={
					X:p.left||f('left')||0,
					Y:p.top||f('top')||0,
					W:f('width')||E[0].scrollWidth||0,
					H:f('height')||E[0].scrollHeight||0,
					pX:v.pageX,
					pY:v.pageY,
					pW:E.parent().width(),
					pH:E.parent().height(),
					k:d.k,o:E.css('opacity')
				};
				E.css({opacity:0.8});
				$().mousemove($.jqDnR.drag).mouseup($.jqDnR.stop);
				return false;
			 });
		});},
		f=function(k){
			return parseInt(E.css(k))||false;
		};
})(jQuery);
