diff options
Diffstat (limited to 'rel/overlay/share/www/script/jquery.resizer.js')
-rw-r--r-- | rel/overlay/share/www/script/jquery.resizer.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/rel/overlay/share/www/script/jquery.resizer.js b/rel/overlay/share/www/script/jquery.resizer.js new file mode 100644 index 00000000..42f0cc77 --- /dev/null +++ b/rel/overlay/share/www/script/jquery.resizer.js @@ -0,0 +1,84 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy of +// the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. + +(function($) { + + $.fn.makeResizable = function(options) { + options = options || {}; + options.always = options.always || false; + options.grippie = options.grippie || null; + options.horizontal = options.horizontal || false; + options.minWidth = options.minWidth || 100; + options.maxWidth = options.maxWidth || null; + options.vertical = options.vertical || false; + options.minHeight = options.minHeight || 32; + options.maxHeight = options.maxHeight || null; + + return this.each(function() { + if ($(this).is("textarea") && !options.always && + $.browser.safari && parseInt($.browser.version) >= 522) + return this; // safari3 and later provides textarea resizing natively + + var grippie = options.grippie; + if (!grippie) grippie = $("<div></div>").appendTo(this.parentNode); + grippie.addClass("grippie"); + if (options.horizontal && options.vertical) { + grippie.css("cursor", "nwse-resize"); + } else if (options.horizontal) { + grippie.css("cursor", "col-resize"); + } else if (options.vertical) { + grippie.css("cursor", "row-resize"); + } + + var elem = $(this); + grippie.mousedown(function(e) { + var pos = {x: e.screenX, y: e.screenY}; + var dimensions = {width: elem.width(), height: elem.height()}; + $(document) + .mousemove(function(e) { + if (options.horizontal) { + var offset = e.screenX - pos.x; + if (offset) { + var newWidth = dimensions.width + offset; + if (newWidth >= options.minWidth && + (!options.maxWidth || newWidth <= options.maxWidth)) { + elem.width(newWidth); + dimensions.width = newWidth; + } + pos.x = e.screenX; + } + } + if (options.vertical) { + var offset = e.screenY - pos.y; + if (offset) { + var newHeight = dimensions.height + offset; + if (newHeight >= options.minHeight && + (!options.maxHeight || newHeight <= options.maxHeight)) { + elem.height(newHeight); + dimensions.height = newHeight; + } + pos.y = e.screenY; + } + } + document.onselectstart = function() { return false }; // for IE + return false; + }) + .one("mouseup", function() { + $(document).unbind("mousemove"); + document.onselectstart = null; // for IE + }); + return true; + }); + }); + } + +})(jQuery); |