123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- (function($){
- var doc = $(document),
- win = $(window),
- mouseDown = 'mousedown.resize',
- mouseMove = 'mousemove.resize',
- mouseUp = 'mouseup.resize',
- clsName = 'CursorResize',
- resize = function (e) {
- var o = this,
- a = o.wrapper.width('auto'),
- b = o.target,
- c = 0,
- d = 0,
- f = b.offset();
- if (a)
- {
- c = a.width() - b.width();
- d = a.height() - b.height();
- f = a.offset();
- }
- var m = $.extend({
- width : win.width() - (f.left - doc.scrollLeft()) - c,
- height : win.height() - (f.top - doc.scrollTop()) - d
- }, o.max),
- w = Math.min(Math.max(e.pageX - o.x + o.w, o.min.width), m.width),
- h = Math.min(Math.max(e.pageY - o.y + o.h, o.min.height),m.height);
- b.css({ width : w, height : h });
- return false;
- },
- end = function () {
- doc.unbind(mouseMove + ' ' + mouseUp);
- },
- start = function (e) {
- var E = this,
- T = E.target;
- E.x = e.pageX;
- E.y = e.pageY;
- E.w = T.outerWidth() - T.getPadding().w;
- E.h = T.outerHeight() - T.getPadding().h;
- if (E.min.width === 0)
- {
- var MW = T.data('_mw');
- if (MW)
- {
- E.min.width = MW;
- }
- else
- {
- E.min.width = T.outerWidth() - T.getPadding().w;
- T.data('_mw', E.min.width);
- }
- }
- if (this.min.height === 0)
- {
- var MH = T.data('_mh');
- if (MH)
- {
- E.min.height = MH;
- }
- else
- {
- E.min.height = T.outerHeight() - T.getPadding().h;
- T.data('_mh', E.min.height);
- }
- }
- doc.bind(mouseMove, $.proxy(resize, E)).bind(mouseUp, end);
- return false;
- };
- $.fn.resize = function(o){
- o = $.extend({ min : { width : 0, height: 0 }}, o);
- /*
- options = {
- handler : null,
- wrapper : null,
- min : { width : 0, height: 0},
- max : { width : 0, height: 0}
- };
- */
- return this.each(function(){
- var e = $(this),
- x = function () {
- this.target = e;
- this.handler = o.handler ? (typeof o.handler === 'string' ? $(o.handler, e[0]) : o.handler) : e;
- this.wrapper = o.wrapper;
- e.data('_h', this.handler);
- this.min = o.min;
- this.max = o.max;
- if (o.min) $.extend(this.min, o.min);
- return this;
- },
- X = new x();
- X.handler.addClass(clsName).unbind(mouseDown).bind(mouseDown, $.proxy(start, X));
- });
- };
- $.fn.unResize = function () {
- return this.each(function(){
- ($(this).data('_h') || $()).removeClass(clsName).unbind(mouseDown);
- });
- };
- $.fn.getPadding = function () {
- var s = this[0].style,
- o =
- {
- w : parseInt(s.paddingLeft) + parseInt(s.paddingRight) || 0,
- h : parseInt(s.paddingTop) + parseInt(s.paddingBottom) || 0
- };
- return o;
- };
- })($);
|