/*
 * 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)
		{
			//if(M.k == 'd')
			E.css({ left: Math.min(Math.max(M.X + v.pageX - M.pX, 0), M.DW - M.MMW), top: Math.min(Math.max(M.Y + v.pageY - M.pY, 52), M.DH - 50) });
			//else 
			//	E.css({width:Math.max(v.pageX-M.pX+M.W,0),height:Math.max(v.pageY-M.pY+M.H,0)});
			return false;
		},
		stop: function()
		{
			/*E.css('opacity',M.o);*/
			$().unbind('mousemove', J.drag).unbind('mouseup', J.stop).unbind('mouseup', $.jqDnR.dragging);
		},
		dragging: function(v)
		{
		    var d = v.data, p = {}; E = d.e;
			if (BSC.M.GetActiveId()) BSC.M.HideActiveSubmenu();
			E.css("z-index", BSC.UI.Ws.GetNextZIndex());
			
			// attempt utilization of dimensions plugin to fix IE issues
			if (E.css('position') != 'relative')
			{
				try { E.position(p); } catch (e) { }
			}
			M = { DW: $(document).width(), DH: $(window).height(), MMW: parseInt(E.css("width")), 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, k: d.k, o: E.css('opacity') };
			$().mousemove($.jqDnR.drag).mouseup($.jqDnR.stop);
			return false;
		}
	};
	var J = $.jqDnR,
	M = J.dnr,
	E = J.e,
	i = function(e, h, k)
	{
		return e.each(
			function()
			{
				h = (h) ? $(h, e) : e;
				h.bind('mousedown', { e: e, k: k }, $.jqDnR.dragging);
			});
	},
	f = function(k) { return parseInt(E.css(k)) || false; };
})(jQuery);
