summaryrefslogtreecommitdiff
path: root/misc/textarea.js
blob: 5938b9e4db69d4765ecc83c5c0b4d4eacac96f5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// $Id$
(function ($) {

Drupal.behaviors.textarea = {
  attach: function (context, settings) {
    $('textarea.resizable', context).once('textarea', function () {
      // When wrapping the text area, work around an IE margin bug. See:
      // http://jaspan.com/ie-inherited-margin-bug-form-elements-and-haslayout
      var staticOffset = null;
      var textarea = $(this).wrap('<div class="resizable-textarea"><span></span></div>');
      var grippie = $('<div class="grippie"></div>').mousedown(startDrag);

      grippie
        .insertAfter(textarea)
        .css('margin-right', grippie.width() - textarea.width());

      function startDrag(e) {
        staticOffset = textarea.height() - e.pageY;
        textarea.css('opacity', 0.25);
        $(document).mousemove(performDrag).mouseup(endDrag);
        return false;
      }

      function performDrag(e) {
        textarea.height(Math.max(32, staticOffset + e.pageY) + 'px');
        return false;
      }

      function endDrag(e) {
        $(document).unbind('mousemove', performDrag).unbind('mouseup', endDrag);
        textarea.css('opacity', 1);
      }
    });
  }
};

})(jQuery);